@tachybase/plugin-adapter-remix 1.6.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
1
  module.exports = {
2
- "@tachybase/client": "1.6.0",
3
- "@tego/server": "1.3.52"
2
+ "@tachybase/client": "1.6.1",
3
+ "@tego/server": "1.6.0-alpha.9"
4
4
  };
@@ -1,4 +1,4 @@
1
- (function(){var e={8947:function(e,t,r){"use strict";
1
+ (function(){var e={9440:function(e,t,r){"use strict";
2
2
  /**
3
3
  * @remix-run/express v2.16.8
4
4
  *
@@ -8,7 +8,7 @@
8
8
  * LICENSE.md file in the root directory of this source tree.
9
9
  *
10
10
  * @license MIT
11
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(7968);function createRequestHandler({build:e,getLoadContext:t,mode:r=process.env.NODE_ENV}){let A=n.createRequestHandler(e,r);return async(e,r,n)=>{try{let n=createRemixRequest(e,r);let o=await(t===null||t===void 0?void 0:t(e,r));let i=await A(n,o);await sendRemixResponse(r,i)}catch(e){n(e)}}}function createRemixHeaders(e){let t=new Headers;for(let[r,n]of Object.entries(e)){if(n){if(Array.isArray(n)){for(let e of n){t.append(r,e)}}else{t.set(r,n)}}}return t}function createRemixRequest(e,t){var r,A;let[,o]=((r=e.get("X-Forwarded-Host"))===null||r===void 0?void 0:r.split(":"))??[];let[,i]=((A=e.get("host"))===null||A===void 0?void 0:A.split(":"))??[];let s=Number.parseInt(o,10);let a=Number.parseInt(i,10);let l=Number.isSafeInteger(s)?s:Number.isSafeInteger(a)?a:"";let c=`${e.hostname}${l?`:${l}`:""}`;let u=new URL(`${e.protocol}://${c}${e.originalUrl}`);let d=new AbortController;let h={method:e.method,headers:createRemixHeaders(e.headers),signal:d.signal};if(e.method!=="GET"&&e.method!=="HEAD"){h.body=n.createReadableStreamFromReadable(e);h.duplex="half"}t.on("finish",(()=>d=null));t.on("close",(()=>{var e;return(e=d)===null||e===void 0?void 0:e.abort()}));return new Request(u.href,h)}async function sendRemixResponse(e,t){var r;e.statusMessage=t.statusText;e.status(t.status);for(let[r,n]of t.headers.entries()){e.append(r,n)}if((r=t.headers.get("Content-Type"))!==null&&r!==void 0&&r.match(/text\/event-stream/i)){e.flushHeaders()}if(t.body){await n.writeReadableStreamToWritable(t.body,e)}else{e.end()}}t.createRemixHeaders=createRemixHeaders;t.createRemixRequest=createRemixRequest;t.createRequestHandler=createRequestHandler;t.sendRemixResponse=sendRemixResponse},5807:function(e,t,r){"use strict";
11
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(1375);function createRequestHandler({build:e,getLoadContext:t,mode:r=process.env.NODE_ENV}){let A=n.createRequestHandler(e,r);return async(e,r,n)=>{try{let n=createRemixRequest(e,r);let o=await(t===null||t===void 0?void 0:t(e,r));let i=await A(n,o);await sendRemixResponse(r,i)}catch(e){n(e)}}}function createRemixHeaders(e){let t=new Headers;for(let[r,n]of Object.entries(e)){if(n){if(Array.isArray(n)){for(let e of n){t.append(r,e)}}else{t.set(r,n)}}}return t}function createRemixRequest(e,t){var r,A;let[,o]=((r=e.get("X-Forwarded-Host"))===null||r===void 0?void 0:r.split(":"))??[];let[,i]=((A=e.get("host"))===null||A===void 0?void 0:A.split(":"))??[];let s=Number.parseInt(o,10);let a=Number.parseInt(i,10);let l=Number.isSafeInteger(s)?s:Number.isSafeInteger(a)?a:"";let c=`${e.hostname}${l?`:${l}`:""}`;let u=new URL(`${e.protocol}://${c}${e.originalUrl}`);let d=new AbortController;let h={method:e.method,headers:createRemixHeaders(e.headers),signal:d.signal};if(e.method!=="GET"&&e.method!=="HEAD"){h.body=n.createReadableStreamFromReadable(e);h.duplex="half"}t.on("finish",(()=>d=null));t.on("close",(()=>{var e;return(e=d)===null||e===void 0?void 0:e.abort()}));return new Request(u.href,h)}async function sendRemixResponse(e,t){var r;e.statusMessage=t.statusText;e.status(t.status);for(let[r,n]of t.headers.entries()){e.append(r,n)}if((r=t.headers.get("Content-Type"))!==null&&r!==void 0&&r.match(/text\/event-stream/i)){e.flushHeaders()}if(t.body){await n.writeReadableStreamToWritable(t.body,e)}else{e.end()}}t.createRemixHeaders=createRemixHeaders;t.createRemixRequest=createRemixRequest;t.createRequestHandler=createRequestHandler;t.sendRemixResponse=sendRemixResponse},2150:function(e,t,r){"use strict";
12
12
  /**
13
13
  * @remix-run/node v2.16.8
14
14
  *
@@ -18,7 +18,7 @@
18
18
  * LICENSE.md file in the root directory of this source tree.
19
19
  *
20
20
  * @license MIT
21
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(8985);function _interopDefaultLegacy(e){return e&&typeof e==="object"&&"default"in e?e:{default:e}}var A=_interopDefaultLegacy(n);const sign=async(e,t)=>A["default"].sign(e,t);const unsign=async(e,t)=>A["default"].unsign(e,t);t.sign=sign;t.unsign=unsign},4748:function(e,t,r){"use strict";
21
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(8985);function _interopDefaultLegacy(e){return e&&typeof e==="object"&&"default"in e?e:{default:e}}var A=_interopDefaultLegacy(n);const sign=async(e,t)=>A["default"].sign(e,t);const unsign=async(e,t)=>A["default"].unsign(e,t);t.sign=sign;t.unsign=unsign},1231:function(e,t,r){"use strict";
22
22
  /**
23
23
  * @remix-run/node v2.16.8
24
24
  *
@@ -28,7 +28,7 @@
28
28
  * LICENSE.md file in the root directory of this source tree.
29
29
  *
30
30
  * @license MIT
31
- */Object.defineProperty(t,"__esModule",{value:true});function installGlobals({nativeFetch:e}={}){if(e){let{File:e,fetch:t,FormData:n,Headers:A,Request:o,Response:i}=r(1004);global.File=e;global.Headers=A;global.Request=o;global.Response=i;global.fetch=t;global.FormData=n}else{let{File:e,fetch:t,FormData:n,Headers:A,Request:o,Response:i}=r(409);global.File=e;global.Headers=A;global.Request=o;global.Response=i;global.fetch=t;global.FormData=n}}t.installGlobals=installGlobals},9451:function(e,t,r){"use strict";
31
+ */Object.defineProperty(t,"__esModule",{value:true});function installGlobals({nativeFetch:e}={}){if(e){let{File:e,fetch:t,FormData:n,Headers:A,Request:o,Response:i}=r(1004);global.File=e;global.Headers=A;global.Request=o;global.Response=i;global.fetch=t;global.FormData=n}else{let{File:e,fetch:t,FormData:n,Headers:A,Request:o,Response:i}=r(409);global.File=e;global.Headers=A;global.Request=o;global.Response=i;global.fetch=t;global.FormData=n}}t.installGlobals=installGlobals},7380:function(e,t,r){"use strict";
32
32
  /**
33
33
  * @remix-run/node v2.16.8
34
34
  *
@@ -38,7 +38,7 @@
38
38
  * LICENSE.md file in the root directory of this source tree.
39
39
  *
40
40
  * @license MIT
41
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(9384);var A=r(5807);const o=n.createCookieFactory({sign:A.sign,unsign:A.unsign});const i=n.createCookieSessionStorageFactory(o);const s=n.createSessionStorageFactory(o);const a=n.createMemorySessionStorageFactory(s);t.createCookie=o;t.createCookieSessionStorage=i;t.createMemorySessionStorage=a;t.createSessionStorage=s},7968:function(e,t,r){"use strict";
41
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(6215);var A=r(2150);const o=n.createCookieFactory({sign:A.sign,unsign:A.unsign});const i=n.createCookieSessionStorageFactory(o);const s=n.createSessionStorageFactory(o);const a=n.createMemorySessionStorageFactory(s);t.createCookie=o;t.createCookieSessionStorage=i;t.createMemorySessionStorage=a;t.createSessionStorage=s},1375:function(e,t,r){"use strict";
42
42
  /**
43
43
  * @remix-run/node v2.16.8
44
44
  *
@@ -48,7 +48,7 @@
48
48
  * LICENSE.md file in the root directory of this source tree.
49
49
  *
50
50
  * @license MIT
51
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(4748);var A=r(8515);var o=r(1949);var i=r(9451);var s=r(2702);var a=r(9384);t.installGlobals=n.installGlobals;t.createFileSessionStorage=A.createFileSessionStorage;t.NodeOnDiskFile=o.NodeOnDiskFile;t.unstable_createFileUploadHandler=o.createFileUploadHandler;t.createCookie=i.createCookie;t.createCookieSessionStorage=i.createCookieSessionStorage;t.createMemorySessionStorage=i.createMemorySessionStorage;t.createSessionStorage=i.createSessionStorage;t.createReadableStreamFromReadable=s.createReadableStreamFromReadable;t.readableStreamToString=s.readableStreamToString;t.writeAsyncIterableToWritable=s.writeAsyncIterableToWritable;t.writeReadableStreamToWritable=s.writeReadableStreamToWritable;Object.defineProperty(t,"MaxPartSizeExceededError",{enumerable:true,get:function(){return a.MaxPartSizeExceededError}});Object.defineProperty(t,"broadcastDevReady",{enumerable:true,get:function(){return a.broadcastDevReady}});Object.defineProperty(t,"createRequestHandler",{enumerable:true,get:function(){return a.createRequestHandler}});Object.defineProperty(t,"createSession",{enumerable:true,get:function(){return a.createSession}});Object.defineProperty(t,"data",{enumerable:true,get:function(){return a.data}});Object.defineProperty(t,"defer",{enumerable:true,get:function(){return a.defer}});Object.defineProperty(t,"isCookie",{enumerable:true,get:function(){return a.isCookie}});Object.defineProperty(t,"isSession",{enumerable:true,get:function(){return a.isSession}});Object.defineProperty(t,"json",{enumerable:true,get:function(){return a.json}});Object.defineProperty(t,"logDevReady",{enumerable:true,get:function(){return a.logDevReady}});Object.defineProperty(t,"redirect",{enumerable:true,get:function(){return a.redirect}});Object.defineProperty(t,"redirectDocument",{enumerable:true,get:function(){return a.redirectDocument}});Object.defineProperty(t,"replace",{enumerable:true,get:function(){return a.replace}});Object.defineProperty(t,"unstable_composeUploadHandlers",{enumerable:true,get:function(){return a.unstable_composeUploadHandlers}});Object.defineProperty(t,"unstable_createMemoryUploadHandler",{enumerable:true,get:function(){return a.unstable_createMemoryUploadHandler}});Object.defineProperty(t,"unstable_parseMultipartFormData",{enumerable:true,get:function(){return a.unstable_parseMultipartFormData}})},8515:function(e,t,r){"use strict";
51
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(1231);var A=r(1478);var o=r(76);var i=r(7380);var s=r(1915);var a=r(6215);t.installGlobals=n.installGlobals;t.createFileSessionStorage=A.createFileSessionStorage;t.NodeOnDiskFile=o.NodeOnDiskFile;t.unstable_createFileUploadHandler=o.createFileUploadHandler;t.createCookie=i.createCookie;t.createCookieSessionStorage=i.createCookieSessionStorage;t.createMemorySessionStorage=i.createMemorySessionStorage;t.createSessionStorage=i.createSessionStorage;t.createReadableStreamFromReadable=s.createReadableStreamFromReadable;t.readableStreamToString=s.readableStreamToString;t.writeAsyncIterableToWritable=s.writeAsyncIterableToWritable;t.writeReadableStreamToWritable=s.writeReadableStreamToWritable;Object.defineProperty(t,"MaxPartSizeExceededError",{enumerable:true,get:function(){return a.MaxPartSizeExceededError}});Object.defineProperty(t,"broadcastDevReady",{enumerable:true,get:function(){return a.broadcastDevReady}});Object.defineProperty(t,"createRequestHandler",{enumerable:true,get:function(){return a.createRequestHandler}});Object.defineProperty(t,"createSession",{enumerable:true,get:function(){return a.createSession}});Object.defineProperty(t,"data",{enumerable:true,get:function(){return a.data}});Object.defineProperty(t,"defer",{enumerable:true,get:function(){return a.defer}});Object.defineProperty(t,"isCookie",{enumerable:true,get:function(){return a.isCookie}});Object.defineProperty(t,"isSession",{enumerable:true,get:function(){return a.isSession}});Object.defineProperty(t,"json",{enumerable:true,get:function(){return a.json}});Object.defineProperty(t,"logDevReady",{enumerable:true,get:function(){return a.logDevReady}});Object.defineProperty(t,"redirect",{enumerable:true,get:function(){return a.redirect}});Object.defineProperty(t,"redirectDocument",{enumerable:true,get:function(){return a.redirectDocument}});Object.defineProperty(t,"replace",{enumerable:true,get:function(){return a.replace}});Object.defineProperty(t,"unstable_composeUploadHandlers",{enumerable:true,get:function(){return a.unstable_composeUploadHandlers}});Object.defineProperty(t,"unstable_createMemoryUploadHandler",{enumerable:true,get:function(){return a.unstable_createMemoryUploadHandler}});Object.defineProperty(t,"unstable_parseMultipartFormData",{enumerable:true,get:function(){return a.unstable_parseMultipartFormData}})},1478:function(e,t,r){"use strict";
52
52
  /**
53
53
  * @remix-run/node v2.16.8
54
54
  *
@@ -58,7 +58,7 @@
58
58
  * LICENSE.md file in the root directory of this source tree.
59
59
  *
60
60
  * @license MIT
61
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(7598);var A=r(3024);var o=r(6760);var i=r(9451);function _interopNamespace(e){if(e&&e.__esModule)return e;var t=Object.create(null);if(e){Object.keys(e).forEach((function(r){if(r!=="default"){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:true,get:function(){return e[r]}})}}))}t["default"]=e;return Object.freeze(t)}var s=_interopNamespace(n);var a=_interopNamespace(o);function createFileSessionStorage({cookie:e,dir:t}){return i.createSessionStorage({cookie:e,async createData(e,r){let n=JSON.stringify({data:e,expires:r});while(true){let e=s.webcrypto.getRandomValues(new Uint8Array(8));let r=Buffer.from(e).toString("hex");try{let e=getFile(t,r);await A.promises.mkdir(a.dirname(e),{recursive:true});await A.promises.writeFile(e,n,{encoding:"utf-8",flag:"wx"});return r}catch(e){if(e.code!=="EEXIST")throw e}}},async readData(e){try{let r=getFile(t,e);let n=JSON.parse(await A.promises.readFile(r,"utf-8"));let o=n.data;let i=typeof n.expires==="string"?new Date(n.expires):null;if(!i||i>new Date){return o}if(i)await A.promises.unlink(r);return null}catch(e){if(e.code!=="ENOENT")throw e;return null}},async updateData(e,r,n){let o=JSON.stringify({data:r,expires:n});let i=getFile(t,e);await A.promises.mkdir(a.dirname(i),{recursive:true});await A.promises.writeFile(i,o,"utf-8")},async deleteData(e){if(!e){return}try{await A.promises.unlink(getFile(t,e))}catch(e){if(e.code!=="ENOENT")throw e}}})}function getFile(e,t){return a.join(e,t.slice(0,4),t.slice(4))}t.createFileSessionStorage=createFileSessionStorage;t.getFile=getFile},2702:function(e,t,r){"use strict";
61
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(7598);var A=r(3024);var o=r(6760);var i=r(7380);function _interopNamespace(e){if(e&&e.__esModule)return e;var t=Object.create(null);if(e){Object.keys(e).forEach((function(r){if(r!=="default"){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:true,get:function(){return e[r]}})}}))}t["default"]=e;return Object.freeze(t)}var s=_interopNamespace(n);var a=_interopNamespace(o);function createFileSessionStorage({cookie:e,dir:t}){return i.createSessionStorage({cookie:e,async createData(e,r){let n=JSON.stringify({data:e,expires:r});while(true){let e=s.webcrypto.getRandomValues(new Uint8Array(8));let r=Buffer.from(e).toString("hex");try{let e=getFile(t,r);await A.promises.mkdir(a.dirname(e),{recursive:true});await A.promises.writeFile(e,n,{encoding:"utf-8",flag:"wx"});return r}catch(e){if(e.code!=="EEXIST")throw e}}},async readData(e){try{let r=getFile(t,e);let n=JSON.parse(await A.promises.readFile(r,"utf-8"));let o=n.data;let i=typeof n.expires==="string"?new Date(n.expires):null;if(!i||i>new Date){return o}if(i)await A.promises.unlink(r);return null}catch(e){if(e.code!=="ENOENT")throw e;return null}},async updateData(e,r,n){let o=JSON.stringify({data:r,expires:n});let i=getFile(t,e);await A.promises.mkdir(a.dirname(i),{recursive:true});await A.promises.writeFile(i,o,"utf-8")},async deleteData(e){if(!e){return}try{await A.promises.unlink(getFile(t,e))}catch(e){if(e.code!=="ENOENT")throw e}}})}function getFile(e,t){return a.join(e,t.slice(0,4),t.slice(4))}t.createFileSessionStorage=createFileSessionStorage;t.getFile=getFile},1915:function(e,t,r){"use strict";
62
62
  /**
63
63
  * @remix-run/node v2.16.8
64
64
  *
@@ -68,7 +68,7 @@
68
68
  * LICENSE.md file in the root directory of this source tree.
69
69
  *
70
70
  * @license MIT
71
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(7075);async function writeReadableStreamToWritable(e,t){let r=e.getReader();let n=t;try{while(true){let{done:e,value:A}=await r.read();if(e){t.end();break}t.write(A);if(typeof n.flush==="function"){n.flush()}}}catch(e){t.destroy(e);throw e}}async function writeAsyncIterableToWritable(e,t){try{for await(let r of e){t.write(r)}t.end()}catch(e){t.destroy(e);throw e}}async function readableStreamToString(e,t){let r=e.getReader();let n=[];while(true){let{done:e,value:t}=await r.read();if(e){break}if(t){n.push(t)}}return Buffer.concat(n).toString(t)}const createReadableStreamFromReadable=e=>{let t=new StreamPump(e);let r=new ReadableStream(t,t);return r};class StreamPump{constructor(e){this.highWaterMark=e.readableHighWaterMark||(new n.Stream.Readable).readableHighWaterMark;this.accumalatedSize=0;this.stream=e;this.enqueue=this.enqueue.bind(this);this.error=this.error.bind(this);this.close=this.close.bind(this)}size(e){return(e===null||e===void 0?void 0:e.byteLength)||0}start(e){this.controller=e;this.stream.on("data",this.enqueue);this.stream.once("error",this.error);this.stream.once("end",this.close);this.stream.once("close",this.close)}pull(){this.resume()}cancel(e){if(this.stream.destroy){this.stream.destroy(e)}this.stream.off("data",this.enqueue);this.stream.off("error",this.error);this.stream.off("end",this.close);this.stream.off("close",this.close)}enqueue(e){if(this.controller){try{let t=e instanceof Uint8Array?e:Buffer.from(e);let r=(this.controller.desiredSize||0)-t.byteLength;this.controller.enqueue(t);if(r<=0){this.pause()}}catch(e){this.controller.error(new Error("Could not create Buffer, chunk must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object"));this.cancel()}}}pause(){if(this.stream.pause){this.stream.pause()}}resume(){if(this.stream.readable&&this.stream.resume){this.stream.resume()}}close(){if(this.controller){this.controller.close();delete this.controller}}error(e){if(this.controller){this.controller.error(e);delete this.controller}}}t.createReadableStreamFromReadable=createReadableStreamFromReadable;t.readableStreamToString=readableStreamToString;t.writeAsyncIterableToWritable=writeAsyncIterableToWritable;t.writeReadableStreamToWritable=writeReadableStreamToWritable},1949:function(e,t,r){"use strict";
71
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(7075);async function writeReadableStreamToWritable(e,t){let r=e.getReader();let n=t;try{while(true){let{done:e,value:A}=await r.read();if(e){t.end();break}t.write(A);if(typeof n.flush==="function"){n.flush()}}}catch(e){t.destroy(e);throw e}}async function writeAsyncIterableToWritable(e,t){try{for await(let r of e){t.write(r)}t.end()}catch(e){t.destroy(e);throw e}}async function readableStreamToString(e,t){let r=e.getReader();let n=[];while(true){let{done:e,value:t}=await r.read();if(e){break}if(t){n.push(t)}}return Buffer.concat(n).toString(t)}const createReadableStreamFromReadable=e=>{let t=new StreamPump(e);let r=new ReadableStream(t,t);return r};class StreamPump{constructor(e){this.highWaterMark=e.readableHighWaterMark||(new n.Stream.Readable).readableHighWaterMark;this.accumalatedSize=0;this.stream=e;this.enqueue=this.enqueue.bind(this);this.error=this.error.bind(this);this.close=this.close.bind(this)}size(e){return(e===null||e===void 0?void 0:e.byteLength)||0}start(e){this.controller=e;this.stream.on("data",this.enqueue);this.stream.once("error",this.error);this.stream.once("end",this.close);this.stream.once("close",this.close)}pull(){this.resume()}cancel(e){if(this.stream.destroy){this.stream.destroy(e)}this.stream.off("data",this.enqueue);this.stream.off("error",this.error);this.stream.off("end",this.close);this.stream.off("close",this.close)}enqueue(e){if(this.controller){try{let t=e instanceof Uint8Array?e:Buffer.from(e);let r=(this.controller.desiredSize||0)-t.byteLength;this.controller.enqueue(t);if(r<=0){this.pause()}}catch(e){this.controller.error(new Error("Could not create Buffer, chunk must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object"));this.cancel()}}}pause(){if(this.stream.pause){this.stream.pause()}}resume(){if(this.stream.readable&&this.stream.resume){this.stream.resume()}}close(){if(this.controller){this.controller.close();delete this.controller}}error(e){if(this.controller){this.controller.error(e);delete this.controller}}}t.createReadableStreamFromReadable=createReadableStreamFromReadable;t.readableStreamToString=readableStreamToString;t.writeAsyncIterableToWritable=writeAsyncIterableToWritable;t.writeReadableStreamToWritable=writeReadableStreamToWritable},76:function(e,t,r){"use strict";
72
72
  /**
73
73
  * @remix-run/node v2.16.8
74
74
  *
@@ -78,7 +78,7 @@
78
78
  * LICENSE.md file in the root directory of this source tree.
79
79
  *
80
80
  * @license MIT
81
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(7598);var A=r(3024);var o=r(1455);var i=r(8161);var s=r(6760);var a=r(7075);var l=r(7975);var c=r(9384);var u=r(1623);var d=r(2702);function _interopNamespace(e){if(e&&e.__esModule)return e;var t=Object.create(null);if(e){Object.keys(e).forEach((function(r){if(r!=="default"){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:true,get:function(){return e[r]}})}}))}t["default"]=e;return Object.freeze(t)}var h=_interopNamespace(u);let defaultFilePathResolver=({filename:e})=>{let t=e?s.extname(e):"";return"upload_"+n.randomBytes(4).readUInt32LE(0)+t};async function uniqueFile(e){let t=s.extname(e);let r=e;for(let n=1;await o.stat(r).then((()=>true)).catch((()=>false));n++){r=(t?e.slice(0,-t.length):e)+`-${(new Date).getTime()}${t}`}return r}function createFileUploadHandler({directory:e=i.tmpdir(),avoidFileConflicts:t=true,file:r=defaultFilePathResolver,filter:n,maxPartSize:u=3e6}={}){return async({name:i,filename:d,contentType:h,data:g})=>{if(!d||n&&!await n({name:i,filename:d,contentType:h})){return undefined}let f=typeof e==="string"?e:e({name:i,filename:d,contentType:h});if(!f){return undefined}let E=s.resolve(f);let C=typeof r==="string"?r:r({name:i,filename:d,contentType:h});if(!C){return undefined}let Q=s.resolve(E,C);if(t){Q=await uniqueFile(Q)}await o.mkdir(s.dirname(Q),{recursive:true}).catch((()=>{}));let B=A.createWriteStream(Q);let I=0;let p=false;try{for await(let e of g){I+=e.byteLength;if(I>u){p=true;throw new c.MaxPartSizeExceededError(i,u)}B.write(e)}}finally{B.end();await l.promisify(a.finished)(B);if(p){await o.rm(Q).catch((()=>{}))}}return new NodeOnDiskFile(Q,h)}}class NodeOnDiskFile{lastModified=0;webkitRelativePath="";prototype=File.prototype;constructor(e,t,r){this.filepath=e;this.type=t;this.slicer=r;this.name=s.basename(e)}get size(){let e=A.statSync(this.filepath);if(this.slicer){let t=this.slicer.end-this.slicer.start;return t<0?0:t>e.size?e.size:t}return e.size}slice(e,t,r){var n;if(typeof e==="number"&&e<0)e=this.size+e;if(typeof t==="number"&&t<0)t=this.size+t;let A=((n=this.slicer)===null||n===void 0?void 0:n.start)||0;e=A+(e||0);t=A+(t||this.size);return new NodeOnDiskFile(this.filepath,typeof r==="string"?r:this.type,{start:e,end:t})}async arrayBuffer(){let e=A.createReadStream(this.filepath);if(this.slicer){e=e.pipe(h.slice(this.slicer.start,this.slicer.end))}return new Promise(((t,r)=>{let n=[];e.on("data",(e=>n.push(e)));e.on("end",(()=>t(Buffer.concat(n))));e.on("error",(e=>r(e)))}))}stream(){let e=A.createReadStream(this.filepath);if(this.slicer){e=e.pipe(h.slice(this.slicer.start,this.slicer.end))}return d.createReadableStreamFromReadable(e)}async text(){return d.readableStreamToString(this.stream())}get[Symbol.toStringTag](){return"File"}remove(){return o.unlink(this.filepath)}getFilePath(){return this.filepath}}t.NodeOnDiskFile=NodeOnDiskFile;t.createFileUploadHandler=createFileUploadHandler},1248:function(e,t){"use strict";
81
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(7598);var A=r(3024);var o=r(1455);var i=r(8161);var s=r(6760);var a=r(7075);var l=r(7975);var c=r(6215);var u=r(1623);var d=r(1915);function _interopNamespace(e){if(e&&e.__esModule)return e;var t=Object.create(null);if(e){Object.keys(e).forEach((function(r){if(r!=="default"){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:true,get:function(){return e[r]}})}}))}t["default"]=e;return Object.freeze(t)}var h=_interopNamespace(u);let defaultFilePathResolver=({filename:e})=>{let t=e?s.extname(e):"";return"upload_"+n.randomBytes(4).readUInt32LE(0)+t};async function uniqueFile(e){let t=s.extname(e);let r=e;for(let n=1;await o.stat(r).then((()=>true)).catch((()=>false));n++){r=(t?e.slice(0,-t.length):e)+`-${(new Date).getTime()}${t}`}return r}function createFileUploadHandler({directory:e=i.tmpdir(),avoidFileConflicts:t=true,file:r=defaultFilePathResolver,filter:n,maxPartSize:u=3e6}={}){return async({name:i,filename:d,contentType:h,data:g})=>{if(!d||n&&!await n({name:i,filename:d,contentType:h})){return undefined}let f=typeof e==="string"?e:e({name:i,filename:d,contentType:h});if(!f){return undefined}let E=s.resolve(f);let C=typeof r==="string"?r:r({name:i,filename:d,contentType:h});if(!C){return undefined}let Q=s.resolve(E,C);if(t){Q=await uniqueFile(Q)}await o.mkdir(s.dirname(Q),{recursive:true}).catch((()=>{}));let B=A.createWriteStream(Q);let I=0;let p=false;try{for await(let e of g){I+=e.byteLength;if(I>u){p=true;throw new c.MaxPartSizeExceededError(i,u)}B.write(e)}}finally{B.end();await l.promisify(a.finished)(B);if(p){await o.rm(Q).catch((()=>{}))}}return new NodeOnDiskFile(Q,h)}}class NodeOnDiskFile{lastModified=0;webkitRelativePath="";prototype=File.prototype;constructor(e,t,r){this.filepath=e;this.type=t;this.slicer=r;this.name=s.basename(e)}get size(){let e=A.statSync(this.filepath);if(this.slicer){let t=this.slicer.end-this.slicer.start;return t<0?0:t>e.size?e.size:t}return e.size}slice(e,t,r){var n;if(typeof e==="number"&&e<0)e=this.size+e;if(typeof t==="number"&&t<0)t=this.size+t;let A=((n=this.slicer)===null||n===void 0?void 0:n.start)||0;e=A+(e||0);t=A+(t||this.size);return new NodeOnDiskFile(this.filepath,typeof r==="string"?r:this.type,{start:e,end:t})}async arrayBuffer(){let e=A.createReadStream(this.filepath);if(this.slicer){e=e.pipe(h.slice(this.slicer.start,this.slicer.end))}return new Promise(((t,r)=>{let n=[];e.on("data",(e=>n.push(e)));e.on("end",(()=>t(Buffer.concat(n))));e.on("error",(e=>r(e)))}))}stream(){let e=A.createReadStream(this.filepath);if(this.slicer){e=e.pipe(h.slice(this.slicer.start,this.slicer.end))}return d.createReadableStreamFromReadable(e)}async text(){return d.readableStreamToString(this.stream())}get[Symbol.toStringTag](){return"File"}remove(){return o.unlink(this.filepath)}getFilePath(){return this.filepath}}t.NodeOnDiskFile=NodeOnDiskFile;t.createFileUploadHandler=createFileUploadHandler},1248:function(e,t){"use strict";
82
82
  /**
83
83
  * @remix-run/router v1.23.0
84
84
  *
@@ -88,7 +88,7 @@
88
88
  * LICENSE.md file in the root directory of this source tree.
89
89
  *
90
90
  * @license MIT
91
- */Object.defineProperty(t,"__esModule",{value:true});function _extends(){_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r){if(Object.prototype.hasOwnProperty.call(r,n)){e[n]=r[n]}}}return e};return _extends.apply(this,arguments)}let r=function(e){e["Pop"]="POP";e["Push"]="PUSH";e["Replace"]="REPLACE";return e}({});const n="popstate";function createMemoryHistory(e){if(e===void 0){e={}}let{initialEntries:t=["/"],initialIndex:n,v5Compat:A=false}=e;let o;o=t.map(((e,t)=>createMemoryLocation(e,typeof e==="string"?null:e.state,t===0?"default":undefined)));let i=clampIndex(n==null?o.length-1:n);let s=r.Pop;let a=null;function clampIndex(e){return Math.min(Math.max(e,0),o.length-1)}function getCurrentLocation(){return o[i]}function createMemoryLocation(e,t,r){if(t===void 0){t=null}let n=createLocation(o?getCurrentLocation().pathname:"/",e,t,r);warning(n.pathname.charAt(0)==="/","relative pathnames are not supported in memory history: "+JSON.stringify(e));return n}function createHref(e){return typeof e==="string"?e:createPath(e)}let l={get index(){return i},get action(){return s},get location(){return getCurrentLocation()},createHref:createHref,createURL(e){return new URL(createHref(e),"http://localhost")},encodeLocation(e){let t=typeof e==="string"?parsePath(e):e;return{pathname:t.pathname||"",search:t.search||"",hash:t.hash||""}},push(e,t){s=r.Push;let n=createMemoryLocation(e,t);i+=1;o.splice(i,o.length,n);if(A&&a){a({action:s,location:n,delta:1})}},replace(e,t){s=r.Replace;let n=createMemoryLocation(e,t);o[i]=n;if(A&&a){a({action:s,location:n,delta:0})}},go(e){s=r.Pop;let t=clampIndex(i+e);let n=o[t];i=t;if(a){a({action:s,location:n,delta:e})}},listen(e){a=e;return()=>{a=null}}};return l}function createBrowserHistory(e){if(e===void 0){e={}}function createBrowserLocation(e,t){let{pathname:r,search:n,hash:A}=e.location;return createLocation("",{pathname:r,search:n,hash:A},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}function createBrowserHref(e,t){return typeof t==="string"?t:createPath(t)}return getUrlBasedHistory(createBrowserLocation,createBrowserHref,null,e)}function createHashHistory(e){if(e===void 0){e={}}function createHashLocation(e,t){let{pathname:r="/",search:n="",hash:A=""}=parsePath(e.location.hash.substr(1));if(!r.startsWith("/")&&!r.startsWith(".")){r="/"+r}return createLocation("",{pathname:r,search:n,hash:A},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}function createHashHref(e,t){let r=e.document.querySelector("base");let n="";if(r&&r.getAttribute("href")){let t=e.location.href;let r=t.indexOf("#");n=r===-1?t:t.slice(0,r)}return n+"#"+(typeof t==="string"?t:createPath(t))}function validateHashLocation(e,t){warning(e.pathname.charAt(0)==="/","relative pathnames are not supported in hash history.push("+JSON.stringify(t)+")")}return getUrlBasedHistory(createHashLocation,createHashHref,validateHashLocation,e)}function invariant(e,t){if(e===false||e===null||typeof e==="undefined"){throw new Error(t)}}function warning(e,t){if(!e){if(typeof console!=="undefined")console.warn(t);try{throw new Error(t)}catch(e){}}}function createKey(){return Math.random().toString(36).substr(2,8)}function getHistoryState(e,t){return{usr:e.state,key:e.key,idx:t}}function createLocation(e,t,r,n){if(r===void 0){r=null}let A=_extends({pathname:typeof e==="string"?e:e.pathname,search:"",hash:""},typeof t==="string"?parsePath(t):t,{state:r,key:t&&t.key||n||createKey()});return A}function createPath(e){let{pathname:t="/",search:r="",hash:n=""}=e;if(r&&r!=="?")t+=r.charAt(0)==="?"?r:"?"+r;if(n&&n!=="#")t+=n.charAt(0)==="#"?n:"#"+n;return t}function parsePath(e){let t={};if(e){let r=e.indexOf("#");if(r>=0){t.hash=e.substr(r);e=e.substr(0,r)}let n=e.indexOf("?");if(n>=0){t.search=e.substr(n);e=e.substr(0,n)}if(e){t.pathname=e}}return t}function getUrlBasedHistory(e,t,A,o){if(o===void 0){o={}}let{window:i=document.defaultView,v5Compat:s=false}=o;let a=i.history;let l=r.Pop;let c=null;let u=getIndex();if(u==null){u=0;a.replaceState(_extends({},a.state,{idx:u}),"")}function getIndex(){let e=a.state||{idx:null};return e.idx}function handlePop(){l=r.Pop;let e=getIndex();let t=e==null?null:e-u;u=e;if(c){c({action:l,location:d.location,delta:t})}}function push(e,t){l=r.Push;let n=createLocation(d.location,e,t);if(A)A(n,e);u=getIndex()+1;let o=getHistoryState(n,u);let h=d.createHref(n);try{a.pushState(o,"",h)}catch(e){if(e instanceof DOMException&&e.name==="DataCloneError"){throw e}i.location.assign(h)}if(s&&c){c({action:l,location:d.location,delta:1})}}function replace(e,t){l=r.Replace;let n=createLocation(d.location,e,t);if(A)A(n,e);u=getIndex();let o=getHistoryState(n,u);let i=d.createHref(n);a.replaceState(o,"",i);if(s&&c){c({action:l,location:d.location,delta:0})}}function createURL(e){let t=i.location.origin!=="null"?i.location.origin:i.location.href;let r=typeof e==="string"?e:createPath(e);r=r.replace(/ $/,"%20");invariant(t,"No window.location.(origin|href) available to create URL for href: "+r);return new URL(r,t)}let d={get action(){return l},get location(){return e(i,a)},listen(e){if(c){throw new Error("A history only accepts one active listener")}i.addEventListener(n,handlePop);c=e;return()=>{i.removeEventListener(n,handlePop);c=null}},createHref(e){return t(i,e)},createURL:createURL,encodeLocation(e){let t=createURL(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:push,replace:replace,go(e){return a.go(e)}};return d}let A=function(e){e["data"]="data";e["deferred"]="deferred";e["redirect"]="redirect";e["error"]="error";return e}({});const o=new Set(["lazy","caseSensitive","path","id","index","children"]);function isIndexRoute(e){return e.index===true}function convertRoutesToDataRoutes(e,t,r,n){if(r===void 0){r=[]}if(n===void 0){n={}}return e.map(((e,A)=>{let o=[...r,String(A)];let i=typeof e.id==="string"?e.id:o.join("-");invariant(e.index!==true||!e.children,"Cannot specify children on an index route");invariant(!n[i],'Found a route id collision on id "'+i+'". Route '+"id's must be globally unique within Data Router usages");if(isIndexRoute(e)){let r=_extends({},e,t(e),{id:i});n[i]=r;return r}else{let r=_extends({},e,t(e),{id:i,children:undefined});n[i]=r;if(e.children){r.children=convertRoutesToDataRoutes(e.children,t,o,n)}return r}}))}function matchRoutes(e,t,r){if(r===void 0){r="/"}return matchRoutesImpl(e,t,r,false)}function matchRoutesImpl(e,t,r,n){let A=typeof t==="string"?parsePath(t):t;let o=stripBasename(A.pathname||"/",r);if(o==null){return null}let i=flattenRoutes(e);rankRouteBranches(i);let s=null;for(let e=0;s==null&&e<i.length;++e){let t=decodePath(o);s=matchRouteBranch(i[e],t,n)}return s}function convertRouteMatchToUiMatch(e,t){let{route:r,pathname:n,params:A}=e;return{id:r.id,pathname:n,params:A,data:t[r.id],handle:r.handle}}function flattenRoutes(e,t,r,n){if(t===void 0){t=[]}if(r===void 0){r=[]}if(n===void 0){n=""}let flattenRoute=(e,A,o)=>{let i={relativePath:o===undefined?e.path||"":o,caseSensitive:e.caseSensitive===true,childrenIndex:A,route:e};if(i.relativePath.startsWith("/")){invariant(i.relativePath.startsWith(n),'Absolute route path "'+i.relativePath+'" nested under path '+('"'+n+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes.");i.relativePath=i.relativePath.slice(n.length)}let s=joinPaths([n,i.relativePath]);let a=r.concat(i);if(e.children&&e.children.length>0){invariant(e.index!==true,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+s+'".'));flattenRoutes(e.children,t,a,s)}if(e.path==null&&!e.index){return}t.push({path:s,score:computeScore(s,e.index),routesMeta:a})};e.forEach(((e,t)=>{var r;if(e.path===""||!((r=e.path)!=null&&r.includes("?"))){flattenRoute(e,t)}else{for(let r of explodeOptionalSegments(e.path)){flattenRoute(e,t,r)}}}));return t}function explodeOptionalSegments(e){let t=e.split("/");if(t.length===0)return[];let[r,...n]=t;let A=r.endsWith("?");let o=r.replace(/\?$/,"");if(n.length===0){return A?[o,""]:[o]}let i=explodeOptionalSegments(n.join("/"));let s=[];s.push(...i.map((e=>e===""?o:[o,e].join("/"))));if(A){s.push(...i)}return s.map((t=>e.startsWith("/")&&t===""?"/":t))}function rankRouteBranches(e){e.sort(((e,t)=>e.score!==t.score?t.score-e.score:compareIndexes(e.routesMeta.map((e=>e.childrenIndex)),t.routesMeta.map((e=>e.childrenIndex)))))}const i=/^:[\w-]+$/;const s=3;const a=2;const l=1;const c=10;const u=-2;const isSplat=e=>e==="*";function computeScore(e,t){let r=e.split("/");let n=r.length;if(r.some(isSplat)){n+=u}if(t){n+=a}return r.filter((e=>!isSplat(e))).reduce(((e,t)=>e+(i.test(t)?s:t===""?l:c)),n)}function compareIndexes(e,t){let r=e.length===t.length&&e.slice(0,-1).every(((e,r)=>e===t[r]));return r?e[e.length-1]-t[t.length-1]:0}function matchRouteBranch(e,t,r){if(r===void 0){r=false}let{routesMeta:n}=e;let A={};let o="/";let i=[];for(let e=0;e<n.length;++e){let s=n[e];let a=e===n.length-1;let l=o==="/"?t:t.slice(o.length)||"/";let c=matchPath({path:s.relativePath,caseSensitive:s.caseSensitive,end:a},l);let u=s.route;if(!c&&a&&r&&!n[n.length-1].route.index){c=matchPath({path:s.relativePath,caseSensitive:s.caseSensitive,end:false},l)}if(!c){return null}Object.assign(A,c.params);i.push({params:A,pathname:joinPaths([o,c.pathname]),pathnameBase:normalizePathname(joinPaths([o,c.pathnameBase])),route:u});if(c.pathnameBase!=="/"){o=joinPaths([o,c.pathnameBase])}}return i}function generatePath(e,t){if(t===void 0){t={}}let r=e;if(r.endsWith("*")&&r!=="*"&&!r.endsWith("/*")){warning(false,'Route path "'+r+'" will be treated as if it were '+('"'+r.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+r.replace(/\*$/,"/*")+'".'));r=r.replace(/\*$/,"/*")}const n=r.startsWith("/")?"/":"";const stringify=e=>e==null?"":typeof e==="string"?e:String(e);const A=r.split(/\/+/).map(((e,r,n)=>{const A=r===n.length-1;if(A&&e==="*"){const e="*";return stringify(t[e])}const o=e.match(/^:([\w-]+)(\??)$/);if(o){const[,e,r]=o;let n=t[e];invariant(r==="?"||n!=null,'Missing ":'+e+'" param');return stringify(n)}return e.replace(/\?$/g,"")})).filter((e=>!!e));return n+A.join("/")}function matchPath(e,t){if(typeof e==="string"){e={path:e,caseSensitive:false,end:true}}let[r,n]=compilePath(e.path,e.caseSensitive,e.end);let A=t.match(r);if(!A)return null;let o=A[0];let i=o.replace(/(.)\/+$/,"$1");let s=A.slice(1);let a=n.reduce(((e,t,r)=>{let{paramName:n,isOptional:A}=t;if(n==="*"){let e=s[r]||"";i=o.slice(0,o.length-e.length).replace(/(.)\/+$/,"$1")}const a=s[r];if(A&&!a){e[n]=undefined}else{e[n]=(a||"").replace(/%2F/g,"/")}return e}),{});return{params:a,pathname:o,pathnameBase:i,pattern:e}}function compilePath(e,t,r){if(t===void 0){t=false}if(r===void 0){r=true}warning(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let n=[];let A="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,((e,t,r)=>{n.push({paramName:t,isOptional:r!=null});return r?"/?([^\\/]+)?":"/([^\\/]+)"}));if(e.endsWith("*")){n.push({paramName:"*"});A+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"}else if(r){A+="\\/*$"}else if(e!==""&&e!=="/"){A+="(?:(?=\\/|$))"}else;let o=new RegExp(A,t?undefined:"i");return[o,n]}function decodePath(e){try{return e.split("/").map((e=>decodeURIComponent(e).replace(/\//g,"%2F"))).join("/")}catch(t){warning(false,'The URL path "'+e+'" could not be decoded because it is is a '+"malformed URL segment. This is probably due to a bad percent "+("encoding ("+t+")."));return e}}function stripBasename(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase())){return null}let r=t.endsWith("/")?t.length-1:t.length;let n=e.charAt(r);if(n&&n!=="/"){return null}return e.slice(r)||"/"}function resolvePath(e,t){if(t===void 0){t="/"}let{pathname:r,search:n="",hash:A=""}=typeof e==="string"?parsePath(e):e;let o=r?r.startsWith("/")?r:resolvePathname(r,t):t;return{pathname:o,search:normalizeSearch(n),hash:normalizeHash(A)}}function resolvePathname(e,t){let r=t.replace(/\/+$/,"").split("/");let n=e.split("/");n.forEach((e=>{if(e===".."){if(r.length>1)r.pop()}else if(e!=="."){r.push(e)}}));return r.length>1?r.join("/"):"/"}function getInvalidPathError(e,t,r,n){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(n)+"]. Please separate it out to the ")+("`to."+r+"` field. Alternatively you may provide the full path as ")+'a string in <Link to="..."> and the router will parse it for you.'}function getPathContributingMatches(e){return e.filter(((e,t)=>t===0||e.route.path&&e.route.path.length>0))}function getResolveToMatches(e,t){let r=getPathContributingMatches(e);if(t){return r.map(((e,t)=>t===r.length-1?e.pathname:e.pathnameBase))}return r.map((e=>e.pathnameBase))}function resolveTo(e,t,r,n){if(n===void 0){n=false}let A;if(typeof e==="string"){A=parsePath(e)}else{A=_extends({},e);invariant(!A.pathname||!A.pathname.includes("?"),getInvalidPathError("?","pathname","search",A));invariant(!A.pathname||!A.pathname.includes("#"),getInvalidPathError("#","pathname","hash",A));invariant(!A.search||!A.search.includes("#"),getInvalidPathError("#","search","hash",A))}let o=e===""||A.pathname==="";let i=o?"/":A.pathname;let s;if(i==null){s=r}else{let e=t.length-1;if(!n&&i.startsWith("..")){let t=i.split("/");while(t[0]===".."){t.shift();e-=1}A.pathname=t.join("/")}s=e>=0?t[e]:"/"}let a=resolvePath(A,s);let l=i&&i!=="/"&&i.endsWith("/");let c=(o||i===".")&&r.endsWith("/");if(!a.pathname.endsWith("/")&&(l||c)){a.pathname+="/"}return a}function getToPathname(e){return e===""||e.pathname===""?"/":typeof e==="string"?parsePath(e).pathname:e.pathname}const joinPaths=e=>e.join("/").replace(/\/\/+/g,"/");const normalizePathname=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/");const normalizeSearch=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e;const normalizeHash=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;const d=function json(e,t){if(t===void 0){t={}}let r=typeof t==="number"?{status:t}:t;let n=new Headers(r.headers);if(!n.has("Content-Type")){n.set("Content-Type","application/json; charset=utf-8")}return new Response(JSON.stringify(e),_extends({},r,{headers:n}))};class DataWithResponseInit{constructor(e,t){this.type="DataWithResponseInit";this.data=e;this.init=t||null}}function data(e,t){return new DataWithResponseInit(e,typeof t==="number"?{status:t}:t)}class AbortedDeferredError extends Error{}class DeferredData{constructor(e,t){this.pendingKeysSet=new Set;this.subscribers=new Set;this.deferredKeys=[];invariant(e&&typeof e==="object"&&!Array.isArray(e),"defer() only accepts plain objects");let r;this.abortPromise=new Promise(((e,t)=>r=t));this.controller=new AbortController;let onAbort=()=>r(new AbortedDeferredError("Deferred data aborted"));this.unlistenAbortSignal=()=>this.controller.signal.removeEventListener("abort",onAbort);this.controller.signal.addEventListener("abort",onAbort);this.data=Object.entries(e).reduce(((e,t)=>{let[r,n]=t;return Object.assign(e,{[r]:this.trackPromise(r,n)})}),{});if(this.done){this.unlistenAbortSignal()}this.init=t}trackPromise(e,t){if(!(t instanceof Promise)){return t}this.deferredKeys.push(e);this.pendingKeysSet.add(e);let r=Promise.race([t,this.abortPromise]).then((t=>this.onSettle(r,e,undefined,t)),(t=>this.onSettle(r,e,t)));r.catch((()=>{}));Object.defineProperty(r,"_tracked",{get:()=>true});return r}onSettle(e,t,r,n){if(this.controller.signal.aborted&&r instanceof AbortedDeferredError){this.unlistenAbortSignal();Object.defineProperty(e,"_error",{get:()=>r});return Promise.reject(r)}this.pendingKeysSet.delete(t);if(this.done){this.unlistenAbortSignal()}if(r===undefined&&n===undefined){let r=new Error('Deferred data for key "'+t+'" resolved/rejected with `undefined`, '+"you must resolve/reject with a value or `null`.");Object.defineProperty(e,"_error",{get:()=>r});this.emit(false,t);return Promise.reject(r)}if(n===undefined){Object.defineProperty(e,"_error",{get:()=>r});this.emit(false,t);return Promise.reject(r)}Object.defineProperty(e,"_data",{get:()=>n});this.emit(false,t);return n}emit(e,t){this.subscribers.forEach((r=>r(e,t)))}subscribe(e){this.subscribers.add(e);return()=>this.subscribers.delete(e)}cancel(){this.controller.abort();this.pendingKeysSet.forEach(((e,t)=>this.pendingKeysSet.delete(t)));this.emit(true)}async resolveData(e){let t=false;if(!this.done){let onAbort=()=>this.cancel();e.addEventListener("abort",onAbort);t=await new Promise((t=>{this.subscribe((r=>{e.removeEventListener("abort",onAbort);if(r||this.done){t(r)}}))}))}return t}get done(){return this.pendingKeysSet.size===0}get unwrappedData(){invariant(this.data!==null&&this.done,"Can only unwrap data on initialized and settled deferreds");return Object.entries(this.data).reduce(((e,t)=>{let[r,n]=t;return Object.assign(e,{[r]:unwrapTrackedPromise(n)})}),{})}get pendingKeys(){return Array.from(this.pendingKeysSet)}}function isTrackedPromise(e){return e instanceof Promise&&e._tracked===true}function unwrapTrackedPromise(e){if(!isTrackedPromise(e)){return e}if(e._error){throw e._error}return e._data}const h=function defer(e,t){if(t===void 0){t={}}let r=typeof t==="number"?{status:t}:t;return new DeferredData(e,r)};const g=function redirect(e,t){if(t===void 0){t=302}let r=t;if(typeof r==="number"){r={status:r}}else if(typeof r.status==="undefined"){r.status=302}let n=new Headers(r.headers);n.set("Location",e);return new Response(null,_extends({},r,{headers:n}))};const redirectDocument=(e,t)=>{let r=g(e,t);r.headers.set("X-Remix-Reload-Document","true");return r};const replace=(e,t)=>{let r=g(e,t);r.headers.set("X-Remix-Replace","true");return r};class ErrorResponseImpl{constructor(e,t,r,n){if(n===void 0){n=false}this.status=e;this.statusText=t||"";this.internal=n;if(r instanceof Error){this.data=r.toString();this.error=r}else{this.data=r}}}function isRouteErrorResponse(e){return e!=null&&typeof e.status==="number"&&typeof e.statusText==="string"&&typeof e.internal==="boolean"&&"data"in e}const f=["post","put","patch","delete"];const E=new Set(f);const C=["get",...f];const Q=new Set(C);const B=new Set([301,302,303,307,308]);const I=new Set([307,308]);const p={state:"idle",location:undefined,formMethod:undefined,formAction:undefined,formEncType:undefined,formData:undefined,json:undefined,text:undefined};const m={state:"idle",data:undefined,formMethod:undefined,formAction:undefined,formEncType:undefined,formData:undefined,json:undefined,text:undefined};const y={state:"unblocked",proceed:undefined,reset:undefined,location:undefined};const b=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;const defaultMapRouteProperties=e=>({hasErrorBoundary:Boolean(e.hasErrorBoundary)});const w="remix-router-transitions";function createRouter(e){const t=e.window?e.window:typeof window!=="undefined"?window:undefined;const n=typeof t!=="undefined"&&typeof t.document!=="undefined"&&typeof t.document.createElement!=="undefined";const o=!n;invariant(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let i;if(e.mapRouteProperties){i=e.mapRouteProperties}else if(e.detectErrorBoundary){let t=e.detectErrorBoundary;i=e=>({hasErrorBoundary:t(e)})}else{i=defaultMapRouteProperties}let s={};let a=convertRoutesToDataRoutes(e.routes,i,undefined,s);let l;let c=e.basename||"/";let u=e.dataStrategy||defaultDataStrategy;let d=e.patchRoutesOnNavigation;let h=_extends({v7_fetcherPersist:false,v7_normalizeFormMethod:false,v7_partialHydration:false,v7_prependBasename:false,v7_relativeSplatPath:false,v7_skipActionErrorRevalidation:false},e.future);let g=null;let f=new Set;let E=null;let C=null;let Q=null;let B=e.hydrationData!=null;let w=matchRoutes(a,e.history.location,c);let R=false;let S=null;if(w==null&&!d){let t=getInternalRouterError(404,{pathname:e.history.location.pathname});let{matches:r,route:n}=getShortCircuitMatches(a);w=r;S={[n.id]:t}}if(w&&!e.hydrationData){let t=checkFogOfWar(w,a,e.history.location.pathname);if(t.active){w=null}}let D;if(!w){D=false;w=[];if(h.v7_partialHydration){let t=checkFogOfWar(null,a,e.history.location.pathname);if(t.active&&t.matches){R=true;w=t.matches}}}else if(w.some((e=>e.route.lazy))){D=false}else if(!w.some((e=>e.route.loader))){D=true}else if(h.v7_partialHydration){let t=e.hydrationData?e.hydrationData.loaderData:null;let r=e.hydrationData?e.hydrationData.errors:null;if(r){let e=w.findIndex((e=>r[e.route.id]!==undefined));D=w.slice(0,e+1).every((e=>!shouldLoadRouteOnHydration(e.route,t,r)))}else{D=w.every((e=>!shouldLoadRouteOnHydration(e.route,t,r)))}}else{D=e.hydrationData!=null}let k;let F={historyAction:e.history.action,location:e.history.location,matches:w,initialized:D,navigation:p,restoreScrollPosition:e.hydrationData!=null?false:null,preventScrollReset:false,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||S,fetchers:new Map,blockers:new Map};let v=r.Pop;let M=false;let N;let T=false;let U=new Map;let L=null;let x=false;let H=false;let Y=[];let P=new Set;let G=new Map;let W=0;let _=-1;let J=new Map;let O=new Set;let V=new Map;let q=new Map;let j=new Set;let z=new Map;let Z=new Map;let K=undefined;function initialize(){g=e.history.listen((t=>{let{action:r,location:n,delta:A}=t;if(K){K();K=undefined;return}warning(Z.size===0||A!=null,"You are trying to use a blocker on a POP navigation to a location "+"that was not created by @remix-run/router. This will fail silently in "+"production. This can happen if you are navigating outside the router "+"via `window.history.pushState`/`window.location.hash` instead of using "+"router navigation APIs. This can also happen if you are using "+"createHashRouter and the user manually changes the URL.");let o=shouldBlockNavigation({currentLocation:F.location,nextLocation:n,historyAction:r});if(o&&A!=null){let t=new Promise((e=>{K=e}));e.history.go(A*-1);updateBlocker(o,{state:"blocked",location:n,proceed(){updateBlocker(o,{state:"proceeding",proceed:undefined,reset:undefined,location:n});t.then((()=>e.history.go(A)))},reset(){let e=new Map(F.blockers);e.set(o,y);updateState({blockers:e})}});return}return startNavigation(r,n)}));if(n){restoreAppliedTransitions(t,U);let _saveAppliedTransitions=()=>persistAppliedTransitions(t,U);t.addEventListener("pagehide",_saveAppliedTransitions);L=()=>t.removeEventListener("pagehide",_saveAppliedTransitions)}if(!F.initialized){startNavigation(r.Pop,F.location,{initialHydration:true})}return k}function dispose(){if(g){g()}if(L){L()}f.clear();N&&N.abort();F.fetchers.forEach(((e,t)=>deleteFetcher(t)));F.blockers.forEach(((e,t)=>deleteBlocker(t)))}function subscribe(e){f.add(e);return()=>f.delete(e)}function updateState(e,t){if(t===void 0){t={}}F=_extends({},F,e);let r=[];let n=[];if(h.v7_fetcherPersist){F.fetchers.forEach(((e,t)=>{if(e.state==="idle"){if(j.has(t)){n.push(t)}else{r.push(t)}}}))}j.forEach((e=>{if(!F.fetchers.has(e)&&!G.has(e)){n.push(e)}}));[...f].forEach((e=>e(F,{deletedFetchers:n,viewTransitionOpts:t.viewTransitionOpts,flushSync:t.flushSync===true})));if(h.v7_fetcherPersist){r.forEach((e=>F.fetchers.delete(e)));n.forEach((e=>deleteFetcher(e)))}else{n.forEach((e=>j.delete(e)))}}function completeNavigation(t,n,A){var o,i;let{flushSync:s}=A===void 0?{}:A;let c=F.actionData!=null&&F.navigation.formMethod!=null&&isMutationMethod(F.navigation.formMethod)&&F.navigation.state==="loading"&&((o=t.state)==null?void 0:o._isRedirect)!==true;let u;if(n.actionData){if(Object.keys(n.actionData).length>0){u=n.actionData}else{u=null}}else if(c){u=F.actionData}else{u=null}let d=n.loaderData?mergeLoaderData(F.loaderData,n.loaderData,n.matches||[],n.errors):F.loaderData;let h=F.blockers;if(h.size>0){h=new Map(h);h.forEach(((e,t)=>h.set(t,y)))}let g=M===true||F.navigation.formMethod!=null&&isMutationMethod(F.navigation.formMethod)&&((i=t.state)==null?void 0:i._isRedirect)!==true;if(l){a=l;l=undefined}if(x);else if(v===r.Pop);else if(v===r.Push){e.history.push(t,t.state)}else if(v===r.Replace){e.history.replace(t,t.state)}let f;if(v===r.Pop){let e=U.get(F.location.pathname);if(e&&e.has(t.pathname)){f={currentLocation:F.location,nextLocation:t}}else if(U.has(t.pathname)){f={currentLocation:t,nextLocation:F.location}}}else if(T){let e=U.get(F.location.pathname);if(e){e.add(t.pathname)}else{e=new Set([t.pathname]);U.set(F.location.pathname,e)}f={currentLocation:F.location,nextLocation:t}}updateState(_extends({},n,{actionData:u,loaderData:d,historyAction:v,location:t,initialized:true,navigation:p,revalidation:"idle",restoreScrollPosition:getSavedScrollPosition(t,n.matches||F.matches),preventScrollReset:g,blockers:h}),{viewTransitionOpts:f,flushSync:s===true});v=r.Pop;M=false;T=false;x=false;H=false;Y=[]}async function navigate(t,n){if(typeof t==="number"){e.history.go(t);return}let A=normalizeTo(F.location,F.matches,c,h.v7_prependBasename,t,h.v7_relativeSplatPath,n==null?void 0:n.fromRouteId,n==null?void 0:n.relative);let{path:o,submission:i,error:s}=normalizeNavigateOptions(h.v7_normalizeFormMethod,false,A,n);let a=F.location;let l=createLocation(F.location,o,n&&n.state);l=_extends({},l,e.history.encodeLocation(l));let u=n&&n.replace!=null?n.replace:undefined;let d=r.Push;if(u===true){d=r.Replace}else if(u===false);else if(i!=null&&isMutationMethod(i.formMethod)&&i.formAction===F.location.pathname+F.location.search){d=r.Replace}let g=n&&"preventScrollReset"in n?n.preventScrollReset===true:undefined;let f=(n&&n.flushSync)===true;let E=shouldBlockNavigation({currentLocation:a,nextLocation:l,historyAction:d});if(E){updateBlocker(E,{state:"blocked",location:l,proceed(){updateBlocker(E,{state:"proceeding",proceed:undefined,reset:undefined,location:l});navigate(t,n)},reset(){let e=new Map(F.blockers);e.set(E,y);updateState({blockers:e})}});return}return await startNavigation(d,l,{submission:i,pendingError:s,preventScrollReset:g,replace:n&&n.replace,enableViewTransition:n&&n.viewTransition,flushSync:f})}function revalidate(){interruptActiveLoads();updateState({revalidation:"loading"});if(F.navigation.state==="submitting"){return}if(F.navigation.state==="idle"){startNavigation(F.historyAction,F.location,{startUninterruptedRevalidation:true});return}startNavigation(v||F.historyAction,F.navigation.location,{overrideNavigation:F.navigation,enableViewTransition:T===true})}async function startNavigation(t,r,n){N&&N.abort();N=null;v=t;x=(n&&n.startUninterruptedRevalidation)===true;saveScrollPosition(F.location,F.matches);M=(n&&n.preventScrollReset)===true;T=(n&&n.enableViewTransition)===true;let o=l||a;let i=n&&n.overrideNavigation;let s=n!=null&&n.initialHydration&&F.matches&&F.matches.length>0&&!R?F.matches:matchRoutes(o,r,c);let u=(n&&n.flushSync)===true;if(s&&F.initialized&&!H&&isHashChangeOnly(F.location,r)&&!(n&&n.submission&&isMutationMethod(n.submission.formMethod))){completeNavigation(r,{matches:s},{flushSync:u});return}let d=checkFogOfWar(s,o,r.pathname);if(d.active&&d.matches){s=d.matches}if(!s){let{error:e,notFoundMatches:t,route:n}=handleNavigational404(r.pathname);completeNavigation(r,{matches:t,loaderData:{},errors:{[n.id]:e}},{flushSync:u});return}N=new AbortController;let h=createClientSideRequest(e.history,r,N.signal,n&&n.submission);let g;if(n&&n.pendingError){g=[findNearestBoundary(s).route.id,{type:A.error,error:n.pendingError}]}else if(n&&n.submission&&isMutationMethod(n.submission.formMethod)){let t=await handleAction(h,r,n.submission,s,d.active,{replace:n.replace,flushSync:u});if(t.shortCircuited){return}if(t.pendingActionResult){let[e,n]=t.pendingActionResult;if(isErrorResult(n)&&isRouteErrorResponse(n.error)&&n.error.status===404){N=null;completeNavigation(r,{matches:t.matches,loaderData:{},errors:{[e]:n.error}});return}}s=t.matches||s;g=t.pendingActionResult;i=getLoadingNavigation(r,n.submission);u=false;d.active=false;h=createClientSideRequest(e.history,h.url,h.signal)}let{shortCircuited:f,matches:E,loaderData:C,errors:Q}=await handleLoaders(h,r,s,d.active,i,n&&n.submission,n&&n.fetcherSubmission,n&&n.replace,n&&n.initialHydration===true,u,g);if(f){return}N=null;completeNavigation(r,_extends({matches:E||s},getActionDataForCommit(g),{loaderData:C,errors:Q}))}async function handleAction(e,t,n,o,i,s){if(s===void 0){s={}}interruptActiveLoads();let a=getSubmittingNavigation(t,n);updateState({navigation:a},{flushSync:s.flushSync===true});if(i){let r=await discoverRoutes(o,t.pathname,e.signal);if(r.type==="aborted"){return{shortCircuited:true}}else if(r.type==="error"){let e=findNearestBoundary(r.partialMatches).route.id;return{matches:r.partialMatches,pendingActionResult:[e,{type:A.error,error:r.error}]}}else if(!r.matches){let{notFoundMatches:e,error:r,route:n}=handleNavigational404(t.pathname);return{matches:e,pendingActionResult:[n.id,{type:A.error,error:r}]}}else{o=r.matches}}let l;let u=getTargetMatch(o,t);if(!u.route.action&&!u.route.lazy){l={type:A.error,error:getInternalRouterError(405,{method:e.method,pathname:t.pathname,routeId:u.route.id})}}else{let t=await callDataStrategy("action",F,e,[u],o,null);l=t[u.route.id];if(e.signal.aborted){return{shortCircuited:true}}}if(isRedirectResult(l)){let t;if(s&&s.replace!=null){t=s.replace}else{let r=normalizeRedirectLocation(l.response.headers.get("Location"),new URL(e.url),c);t=r===F.location.pathname+F.location.search}await startRedirectNavigation(e,l,true,{submission:n,replace:t});return{shortCircuited:true}}if(isDeferredResult(l)){throw getInternalRouterError(400,{type:"defer-action"})}if(isErrorResult(l)){let e=findNearestBoundary(o,u.route.id);if((s&&s.replace)!==true){v=r.Push}return{matches:o,pendingActionResult:[e.route.id,l]}}return{matches:o,pendingActionResult:[u.route.id,l]}}async function handleLoaders(t,r,n,A,o,i,s,u,d,g,f){let E=o||getLoadingNavigation(r,i);let C=i||s||getSubmissionFromNavigation(E);let Q=!x&&(!h.v7_partialHydration||!d);if(A){if(Q){let e=getUpdatedActionData(f);updateState(_extends({navigation:E},e!==undefined?{actionData:e}:{}),{flushSync:g})}let e=await discoverRoutes(n,r.pathname,t.signal);if(e.type==="aborted"){return{shortCircuited:true}}else if(e.type==="error"){let t=findNearestBoundary(e.partialMatches).route.id;return{matches:e.partialMatches,loaderData:{},errors:{[t]:e.error}}}else if(!e.matches){let{error:e,notFoundMatches:t,route:n}=handleNavigational404(r.pathname);return{matches:t,loaderData:{},errors:{[n.id]:e}}}else{n=e.matches}}let B=l||a;let[I,p]=getMatchesToLoad(e.history,F,n,C,r,h.v7_partialHydration&&d===true,h.v7_skipActionErrorRevalidation,H,Y,P,j,V,O,B,c,f);cancelActiveDeferreds((e=>!(n&&n.some((t=>t.route.id===e)))||I&&I.some((t=>t.route.id===e))));_=++W;if(I.length===0&&p.length===0){let e=markFetchRedirectsDone();completeNavigation(r,_extends({matches:n,loaderData:{},errors:f&&isErrorResult(f[1])?{[f[0]]:f[1].error}:null},getActionDataForCommit(f),e?{fetchers:new Map(F.fetchers)}:{}),{flushSync:g});return{shortCircuited:true}}if(Q){let e={};if(!A){e.navigation=E;let t=getUpdatedActionData(f);if(t!==undefined){e.actionData=t}}if(p.length>0){e.fetchers=getUpdatedRevalidatingFetchers(p)}updateState(e,{flushSync:g})}p.forEach((e=>{abortFetcher(e.key);if(e.controller){G.set(e.key,e.controller)}}));let abortPendingFetchRevalidations=()=>p.forEach((e=>abortFetcher(e.key)));if(N){N.signal.addEventListener("abort",abortPendingFetchRevalidations)}let{loaderResults:m,fetcherResults:y}=await callLoadersAndMaybeResolveData(F,n,I,p,t);if(t.signal.aborted){return{shortCircuited:true}}if(N){N.signal.removeEventListener("abort",abortPendingFetchRevalidations)}p.forEach((e=>G.delete(e.key)));let b=findRedirect(m);if(b){await startRedirectNavigation(t,b.result,true,{replace:u});return{shortCircuited:true}}b=findRedirect(y);if(b){O.add(b.key);await startRedirectNavigation(t,b.result,true,{replace:u});return{shortCircuited:true}}let{loaderData:w,errors:R}=processLoaderData(F,n,m,f,p,y,z);z.forEach(((e,t)=>{e.subscribe((r=>{if(r||e.done){z.delete(t)}}))}));if(h.v7_partialHydration&&d&&F.errors){R=_extends({},F.errors,R)}let S=markFetchRedirectsDone();let D=abortStaleFetchLoads(_);let k=S||D||p.length>0;return _extends({matches:n,loaderData:w,errors:R},k?{fetchers:new Map(F.fetchers)}:{})}function getUpdatedActionData(e){if(e&&!isErrorResult(e[1])){return{[e[0]]:e[1].data}}else if(F.actionData){if(Object.keys(F.actionData).length===0){return null}else{return F.actionData}}}function getUpdatedRevalidatingFetchers(e){e.forEach((e=>{let t=F.fetchers.get(e.key);let r=getLoadingFetcher(undefined,t?t.data:undefined);F.fetchers.set(e.key,r)}));return new Map(F.fetchers)}function fetch(e,t,r,n){if(o){throw new Error("router.fetch() was called during the server render, but it shouldn't be. "+"You are likely calling a useFetcher() method in the body of your component. "+"Try moving it to a useEffect or a callback.")}abortFetcher(e);let A=(n&&n.flushSync)===true;let i=l||a;let s=normalizeTo(F.location,F.matches,c,h.v7_prependBasename,r,h.v7_relativeSplatPath,t,n==null?void 0:n.relative);let u=matchRoutes(i,s,c);let d=checkFogOfWar(u,i,s);if(d.active&&d.matches){u=d.matches}if(!u){setFetcherError(e,t,getInternalRouterError(404,{pathname:s}),{flushSync:A});return}let{path:g,submission:f,error:E}=normalizeNavigateOptions(h.v7_normalizeFormMethod,true,s,n);if(E){setFetcherError(e,t,E,{flushSync:A});return}let C=getTargetMatch(u,g);let Q=(n&&n.preventScrollReset)===true;if(f&&isMutationMethod(f.formMethod)){handleFetcherAction(e,t,g,C,u,d.active,A,Q,f);return}V.set(e,{routeId:t,path:g});handleFetcherLoader(e,t,g,C,u,d.active,A,Q,f)}async function handleFetcherAction(t,r,n,A,o,i,s,u,d){interruptActiveLoads();V.delete(t);function detectAndHandle405Error(e){if(!e.route.action&&!e.route.lazy){let e=getInternalRouterError(405,{method:d.formMethod,pathname:n,routeId:r});setFetcherError(t,r,e,{flushSync:s});return true}return false}if(!i&&detectAndHandle405Error(A)){return}let g=F.fetchers.get(t);updateFetcherState(t,getSubmittingFetcher(d,g),{flushSync:s});let f=new AbortController;let E=createClientSideRequest(e.history,n,f.signal,d);if(i){let e=await discoverRoutes(o,new URL(E.url).pathname,E.signal,t);if(e.type==="aborted"){return}else if(e.type==="error"){setFetcherError(t,r,e.error,{flushSync:s});return}else if(!e.matches){setFetcherError(t,r,getInternalRouterError(404,{pathname:n}),{flushSync:s});return}else{o=e.matches;A=getTargetMatch(o,n);if(detectAndHandle405Error(A)){return}}}G.set(t,f);let C=W;let Q=await callDataStrategy("action",F,E,[A],o,t);let B=Q[A.route.id];if(E.signal.aborted){if(G.get(t)===f){G.delete(t)}return}if(h.v7_fetcherPersist&&j.has(t)){if(isRedirectResult(B)||isErrorResult(B)){updateFetcherState(t,getDoneFetcher(undefined));return}}else{if(isRedirectResult(B)){G.delete(t);if(_>C){updateFetcherState(t,getDoneFetcher(undefined));return}else{O.add(t);updateFetcherState(t,getLoadingFetcher(d));return startRedirectNavigation(E,B,false,{fetcherSubmission:d,preventScrollReset:u})}}if(isErrorResult(B)){setFetcherError(t,r,B.error);return}}if(isDeferredResult(B)){throw getInternalRouterError(400,{type:"defer-action"})}let I=F.navigation.location||F.location;let p=createClientSideRequest(e.history,I,f.signal);let m=l||a;let y=F.navigation.state!=="idle"?matchRoutes(m,F.navigation.location,c):F.matches;invariant(y,"Didn't find any matches after fetcher action");let b=++W;J.set(t,b);let w=getLoadingFetcher(d,B.data);F.fetchers.set(t,w);let[R,S]=getMatchesToLoad(e.history,F,y,d,I,false,h.v7_skipActionErrorRevalidation,H,Y,P,j,V,O,m,c,[A.route.id,B]);S.filter((e=>e.key!==t)).forEach((e=>{let t=e.key;let r=F.fetchers.get(t);let n=getLoadingFetcher(undefined,r?r.data:undefined);F.fetchers.set(t,n);abortFetcher(t);if(e.controller){G.set(t,e.controller)}}));updateState({fetchers:new Map(F.fetchers)});let abortPendingFetchRevalidations=()=>S.forEach((e=>abortFetcher(e.key)));f.signal.addEventListener("abort",abortPendingFetchRevalidations);let{loaderResults:D,fetcherResults:k}=await callLoadersAndMaybeResolveData(F,y,R,S,p);if(f.signal.aborted){return}f.signal.removeEventListener("abort",abortPendingFetchRevalidations);J.delete(t);G.delete(t);S.forEach((e=>G.delete(e.key)));let M=findRedirect(D);if(M){return startRedirectNavigation(p,M.result,false,{preventScrollReset:u})}M=findRedirect(k);if(M){O.add(M.key);return startRedirectNavigation(p,M.result,false,{preventScrollReset:u})}let{loaderData:T,errors:U}=processLoaderData(F,y,D,undefined,S,k,z);if(F.fetchers.has(t)){let e=getDoneFetcher(B.data);F.fetchers.set(t,e)}abortStaleFetchLoads(b);if(F.navigation.state==="loading"&&b>_){invariant(v,"Expected pending action");N&&N.abort();completeNavigation(F.navigation.location,{matches:y,loaderData:T,errors:U,fetchers:new Map(F.fetchers)})}else{updateState({errors:U,loaderData:mergeLoaderData(F.loaderData,T,y,U),fetchers:new Map(F.fetchers)});H=false}}async function handleFetcherLoader(t,r,n,A,o,i,s,a,l){let c=F.fetchers.get(t);updateFetcherState(t,getLoadingFetcher(l,c?c.data:undefined),{flushSync:s});let u=new AbortController;let d=createClientSideRequest(e.history,n,u.signal);if(i){let e=await discoverRoutes(o,new URL(d.url).pathname,d.signal,t);if(e.type==="aborted"){return}else if(e.type==="error"){setFetcherError(t,r,e.error,{flushSync:s});return}else if(!e.matches){setFetcherError(t,r,getInternalRouterError(404,{pathname:n}),{flushSync:s});return}else{o=e.matches;A=getTargetMatch(o,n)}}G.set(t,u);let h=W;let g=await callDataStrategy("loader",F,d,[A],o,t);let f=g[A.route.id];if(isDeferredResult(f)){f=await resolveDeferredData(f,d.signal,true)||f}if(G.get(t)===u){G.delete(t)}if(d.signal.aborted){return}if(j.has(t)){updateFetcherState(t,getDoneFetcher(undefined));return}if(isRedirectResult(f)){if(_>h){updateFetcherState(t,getDoneFetcher(undefined));return}else{O.add(t);await startRedirectNavigation(d,f,false,{preventScrollReset:a});return}}if(isErrorResult(f)){setFetcherError(t,r,f.error);return}invariant(!isDeferredResult(f),"Unhandled fetcher deferred data");updateFetcherState(t,getDoneFetcher(f.data))}async function startRedirectNavigation(A,o,i,s){let{submission:a,fetcherSubmission:l,preventScrollReset:u,replace:d}=s===void 0?{}:s;if(o.response.headers.has("X-Remix-Revalidate")){H=true}let h=o.response.headers.get("Location");invariant(h,"Expected a Location header on the redirect Response");h=normalizeRedirectLocation(h,new URL(A.url),c);let g=createLocation(F.location,h,{_isRedirect:true});if(n){let r=false;if(o.response.headers.has("X-Remix-Reload-Document")){r=true}else if(b.test(h)){const n=e.history.createURL(h);r=n.origin!==t.location.origin||stripBasename(n.pathname,c)==null}if(r){if(d){t.location.replace(h)}else{t.location.assign(h)}return}}N=null;let f=d===true||o.response.headers.has("X-Remix-Replace")?r.Replace:r.Push;let{formMethod:E,formAction:C,formEncType:Q}=F.navigation;if(!a&&!l&&E&&C&&Q){a=getSubmissionFromNavigation(F.navigation)}let B=a||l;if(I.has(o.response.status)&&B&&isMutationMethod(B.formMethod)){await startNavigation(f,g,{submission:_extends({},B,{formAction:h}),preventScrollReset:u||M,enableViewTransition:i?T:undefined})}else{let e=getLoadingNavigation(g,a);await startNavigation(f,g,{overrideNavigation:e,fetcherSubmission:l,preventScrollReset:u||M,enableViewTransition:i?T:undefined})}}async function callDataStrategy(e,t,r,n,o,a){let l;let d={};try{l=await callDataStrategyImpl(u,e,t,r,n,o,a,s,i)}catch(e){n.forEach((t=>{d[t.route.id]={type:A.error,error:e}}));return d}for(let[e,t]of Object.entries(l)){if(isRedirectDataStrategyResultResult(t)){let n=t.result;d[e]={type:A.redirect,response:normalizeRelativeRoutingRedirectResponse(n,r,e,o,c,h.v7_relativeSplatPath)}}else{d[e]=await convertDataStrategyResultToDataResult(t)}}return d}async function callLoadersAndMaybeResolveData(t,r,n,o,i){let s=t.matches;let a=callDataStrategy("loader",t,i,n,r,null);let l=Promise.all(o.map((async r=>{if(r.matches&&r.match&&r.controller){let n=await callDataStrategy("loader",t,createClientSideRequest(e.history,r.path,r.controller.signal),[r.match],r.matches,r.key);let A=n[r.match.route.id];return{[r.key]:A}}else{return Promise.resolve({[r.key]:{type:A.error,error:getInternalRouterError(404,{pathname:r.path})}})}})));let c=await a;let u=(await l).reduce(((e,t)=>Object.assign(e,t)),{});await Promise.all([resolveNavigationDeferredResults(r,c,i.signal,s,t.loaderData),resolveFetcherDeferredResults(r,u,o)]);return{loaderResults:c,fetcherResults:u}}function interruptActiveLoads(){H=true;Y.push(...cancelActiveDeferreds());V.forEach(((e,t)=>{if(G.has(t)){P.add(t)}abortFetcher(t)}))}function updateFetcherState(e,t,r){if(r===void 0){r={}}F.fetchers.set(e,t);updateState({fetchers:new Map(F.fetchers)},{flushSync:(r&&r.flushSync)===true})}function setFetcherError(e,t,r,n){if(n===void 0){n={}}let A=findNearestBoundary(F.matches,t);deleteFetcher(e);updateState({errors:{[A.route.id]:r},fetchers:new Map(F.fetchers)},{flushSync:(n&&n.flushSync)===true})}function getFetcher(e){q.set(e,(q.get(e)||0)+1);if(j.has(e)){j.delete(e)}return F.fetchers.get(e)||m}function deleteFetcher(e){let t=F.fetchers.get(e);if(G.has(e)&&!(t&&t.state==="loading"&&J.has(e))){abortFetcher(e)}V.delete(e);J.delete(e);O.delete(e);if(h.v7_fetcherPersist){j.delete(e)}P.delete(e);F.fetchers.delete(e)}function deleteFetcherAndUpdateState(e){let t=(q.get(e)||0)-1;if(t<=0){q.delete(e);j.add(e);if(!h.v7_fetcherPersist){deleteFetcher(e)}}else{q.set(e,t)}updateState({fetchers:new Map(F.fetchers)})}function abortFetcher(e){let t=G.get(e);if(t){t.abort();G.delete(e)}}function markFetchersDone(e){for(let t of e){let e=getFetcher(t);let r=getDoneFetcher(e.data);F.fetchers.set(t,r)}}function markFetchRedirectsDone(){let e=[];let t=false;for(let r of O){let n=F.fetchers.get(r);invariant(n,"Expected fetcher: "+r);if(n.state==="loading"){O.delete(r);e.push(r);t=true}}markFetchersDone(e);return t}function abortStaleFetchLoads(e){let t=[];for(let[r,n]of J){if(n<e){let e=F.fetchers.get(r);invariant(e,"Expected fetcher: "+r);if(e.state==="loading"){abortFetcher(r);J.delete(r);t.push(r)}}}markFetchersDone(t);return t.length>0}function getBlocker(e,t){let r=F.blockers.get(e)||y;if(Z.get(e)!==t){Z.set(e,t)}return r}function deleteBlocker(e){F.blockers.delete(e);Z.delete(e)}function updateBlocker(e,t){let r=F.blockers.get(e)||y;invariant(r.state==="unblocked"&&t.state==="blocked"||r.state==="blocked"&&t.state==="blocked"||r.state==="blocked"&&t.state==="proceeding"||r.state==="blocked"&&t.state==="unblocked"||r.state==="proceeding"&&t.state==="unblocked","Invalid blocker state transition: "+r.state+" -> "+t.state);let n=new Map(F.blockers);n.set(e,t);updateState({blockers:n})}function shouldBlockNavigation(e){let{currentLocation:t,nextLocation:r,historyAction:n}=e;if(Z.size===0){return}if(Z.size>1){warning(false,"A router only supports one blocker at a time")}let A=Array.from(Z.entries());let[o,i]=A[A.length-1];let s=F.blockers.get(o);if(s&&s.state==="proceeding"){return}if(i({currentLocation:t,nextLocation:r,historyAction:n})){return o}}function handleNavigational404(e){let t=getInternalRouterError(404,{pathname:e});let r=l||a;let{matches:n,route:A}=getShortCircuitMatches(r);cancelActiveDeferreds();return{notFoundMatches:n,route:A,error:t}}function cancelActiveDeferreds(e){let t=[];z.forEach(((r,n)=>{if(!e||e(n)){r.cancel();t.push(n);z.delete(n)}}));return t}function enableScrollRestoration(e,t,r){E=e;Q=t;C=r||null;if(!B&&F.navigation===p){B=true;let e=getSavedScrollPosition(F.location,F.matches);if(e!=null){updateState({restoreScrollPosition:e})}}return()=>{E=null;Q=null;C=null}}function getScrollKey(e,t){if(C){let r=C(e,t.map((e=>convertRouteMatchToUiMatch(e,F.loaderData))));return r||e.key}return e.key}function saveScrollPosition(e,t){if(E&&Q){let r=getScrollKey(e,t);E[r]=Q()}}function getSavedScrollPosition(e,t){if(E){let r=getScrollKey(e,t);let n=E[r];if(typeof n==="number"){return n}}return null}function checkFogOfWar(e,t,r){if(d){if(!e){let e=matchRoutesImpl(t,r,c,true);return{active:true,matches:e||[]}}else{if(Object.keys(e[0].params).length>0){let e=matchRoutesImpl(t,r,c,true);return{active:true,matches:e}}}}return{active:false,matches:null}}async function discoverRoutes(e,t,r,n){if(!d){return{type:"success",matches:e}}let A=e;while(true){let e=l==null;let o=l||a;let u=s;try{await d({signal:r,path:t,matches:A,fetcherKey:n,patch:(e,t)=>{if(r.aborted)return;patchRoutesImpl(e,t,o,u,i)}})}catch(e){return{type:"error",error:e,partialMatches:A}}finally{if(e&&!r.aborted){a=[...a]}}if(r.aborted){return{type:"aborted"}}let h=matchRoutes(o,t,c);if(h){return{type:"success",matches:h}}let g=matchRoutesImpl(o,t,c,true);if(!g||A.length===g.length&&A.every(((e,t)=>e.route.id===g[t].route.id))){return{type:"success",matches:null}}A=g}}function _internalSetRoutes(e){s={};l=convertRoutesToDataRoutes(e,i,undefined,s)}function patchRoutes(e,t){let r=l==null;let n=l||a;patchRoutesImpl(e,t,n,s,i);if(r){a=[...a];updateState({})}}k={get basename(){return c},get future(){return h},get state(){return F},get routes(){return a},get window(){return t},initialize:initialize,subscribe:subscribe,enableScrollRestoration:enableScrollRestoration,navigate:navigate,fetch:fetch,revalidate:revalidate,createHref:t=>e.history.createHref(t),encodeLocation:t=>e.history.encodeLocation(t),getFetcher:getFetcher,deleteFetcher:deleteFetcherAndUpdateState,dispose:dispose,getBlocker:getBlocker,deleteBlocker:deleteBlocker,patchRoutes:patchRoutes,_internalFetchControllers:G,_internalActiveDeferreds:z,_internalSetRoutes:_internalSetRoutes};return k}const R=Symbol("deferred");function createStaticHandler(e,t){invariant(e.length>0,"You must provide a non-empty routes array to createStaticHandler");let r={};let n=(t?t.basename:null)||"/";let o;if(t!=null&&t.mapRouteProperties){o=t.mapRouteProperties}else if(t!=null&&t.detectErrorBoundary){let e=t.detectErrorBoundary;o=t=>({hasErrorBoundary:e(t)})}else{o=defaultMapRouteProperties}let i=_extends({v7_relativeSplatPath:false,v7_throwAbortReason:false},t?t.future:null);let s=convertRoutesToDataRoutes(e,o,undefined,r);async function query(e,t){let{requestContext:r,skipLoaderErrorBubbling:A,dataStrategy:o}=t===void 0?{}:t;let i=new URL(e.url);let a=e.method;let l=createLocation("",createPath(i),null,"default");let c=matchRoutes(s,l,n);if(!isValidMethod(a)&&a!=="HEAD"){let e=getInternalRouterError(405,{method:a});let{matches:t,route:r}=getShortCircuitMatches(s);return{basename:n,location:l,matches:t,loaderData:{},actionData:null,errors:{[r.id]:e},statusCode:e.status,loaderHeaders:{},actionHeaders:{},activeDeferreds:null}}else if(!c){let e=getInternalRouterError(404,{pathname:l.pathname});let{matches:t,route:r}=getShortCircuitMatches(s);return{basename:n,location:l,matches:t,loaderData:{},actionData:null,errors:{[r.id]:e},statusCode:e.status,loaderHeaders:{},actionHeaders:{},activeDeferreds:null}}let u=await queryImpl(e,l,c,r,o||null,A===true,null);if(isResponse(u)){return u}return _extends({location:l,basename:n},u)}async function queryRoute(e,t){let{routeId:r,requestContext:A,dataStrategy:o}=t===void 0?{}:t;let i=new URL(e.url);let a=e.method;let l=createLocation("",createPath(i),null,"default");let c=matchRoutes(s,l,n);if(!isValidMethod(a)&&a!=="HEAD"&&a!=="OPTIONS"){throw getInternalRouterError(405,{method:a})}else if(!c){throw getInternalRouterError(404,{pathname:l.pathname})}let u=r?c.find((e=>e.route.id===r)):getTargetMatch(c,l);if(r&&!u){throw getInternalRouterError(403,{pathname:l.pathname,routeId:r})}else if(!u){throw getInternalRouterError(404,{pathname:l.pathname})}let d=await queryImpl(e,l,c,A,o||null,false,u);if(isResponse(d)){return d}let h=d.errors?Object.values(d.errors)[0]:undefined;if(h!==undefined){throw h}if(d.actionData){return Object.values(d.actionData)[0]}if(d.loaderData){var g;let e=Object.values(d.loaderData)[0];if((g=d.activeDeferreds)!=null&&g[u.route.id]){e[R]=d.activeDeferreds[u.route.id]}return e}return undefined}async function queryImpl(e,t,r,n,o,i,s){invariant(e.signal,"query()/queryRoute() requests must contain an AbortController signal");try{if(isMutationMethod(e.method.toLowerCase())){let A=await submit(e,r,s||getTargetMatch(r,t),n,o,i,s!=null);return A}let A=await loadRouteData(e,r,n,o,i,s);return isResponse(A)?A:_extends({},A,{actionData:null,actionHeaders:{}})}catch(e){if(isDataStrategyResult(e)&&isResponse(e.result)){if(e.type===A.error){throw e.result}return e.result}if(isRedirectResponse(e)){return e}throw e}}async function submit(e,t,r,n,o,s,a){let l;if(!r.route.action&&!r.route.lazy){let t=getInternalRouterError(405,{method:e.method,pathname:new URL(e.url).pathname,routeId:r.route.id});if(a){throw t}l={type:A.error,error:t}}else{let A=await callDataStrategy("action",e,[r],t,a,n,o);l=A[r.route.id];if(e.signal.aborted){throwStaticHandlerAbortedError(e,a,i)}}if(isRedirectResult(l)){throw new Response(null,{status:l.response.status,headers:{Location:l.response.headers.get("Location")}})}if(isDeferredResult(l)){let e=getInternalRouterError(400,{type:"defer-action"});if(a){throw e}l={type:A.error,error:e}}if(a){if(isErrorResult(l)){throw l.error}return{matches:[r],loaderData:{},actionData:{[r.route.id]:l.data},errors:null,statusCode:200,loaderHeaders:{},actionHeaders:{},activeDeferreds:null}}let c=new Request(e.url,{headers:e.headers,redirect:e.redirect,signal:e.signal});if(isErrorResult(l)){let e=s?r:findNearestBoundary(t,r.route.id);let A=await loadRouteData(c,t,n,o,s,null,[e.route.id,l]);return _extends({},A,{statusCode:isRouteErrorResponse(l.error)?l.error.status:l.statusCode!=null?l.statusCode:500,actionData:null,actionHeaders:_extends({},l.headers?{[r.route.id]:l.headers}:{})})}let u=await loadRouteData(c,t,n,o,s,null);return _extends({},u,{actionData:{[r.route.id]:l.data}},l.statusCode?{statusCode:l.statusCode}:{},{actionHeaders:l.headers?{[r.route.id]:l.headers}:{}})}async function loadRouteData(e,t,r,n,A,o,s){let a=o!=null;if(a&&!(o!=null&&o.route.loader)&&!(o!=null&&o.route.lazy)){throw getInternalRouterError(400,{method:e.method,pathname:new URL(e.url).pathname,routeId:o==null?void 0:o.route.id})}let l=o?[o]:s&&isErrorResult(s[1])?getLoaderMatchesUntilBoundary(t,s[0]):t;let c=l.filter((e=>e.route.loader||e.route.lazy));if(c.length===0){return{matches:t,loaderData:t.reduce(((e,t)=>Object.assign(e,{[t.route.id]:null})),{}),errors:s&&isErrorResult(s[1])?{[s[0]]:s[1].error}:null,statusCode:200,loaderHeaders:{},activeDeferreds:null}}let u=await callDataStrategy("loader",e,c,t,a,r,n);if(e.signal.aborted){throwStaticHandlerAbortedError(e,a,i)}let d=new Map;let h=processRouteLoaderData(t,u,s,d,A);let g=new Set(c.map((e=>e.route.id)));t.forEach((e=>{if(!g.has(e.route.id)){h.loaderData[e.route.id]=null}}));return _extends({},h,{matches:t,activeDeferreds:d.size>0?Object.fromEntries(d.entries()):null})}async function callDataStrategy(e,t,A,s,a,l,c){let u=await callDataStrategyImpl(c||defaultDataStrategy,e,null,t,A,s,null,r,o,l);let d={};await Promise.all(s.map((async e=>{if(!(e.route.id in u)){return}let r=u[e.route.id];if(isRedirectDataStrategyResultResult(r)){let A=r.result;throw normalizeRelativeRoutingRedirectResponse(A,t,e.route.id,s,n,i.v7_relativeSplatPath)}if(isResponse(r.result)&&a){throw r}d[e.route.id]=await convertDataStrategyResultToDataResult(r)})));return d}return{dataRoutes:s,query:query,queryRoute:queryRoute}}function getStaticContextFromError(e,t,r){let n=_extends({},t,{statusCode:isRouteErrorResponse(r)?r.status:500,errors:{[t._deepestRenderedBoundaryId||e[0].id]:r}});return n}function throwStaticHandlerAbortedError(e,t,r){if(r.v7_throwAbortReason&&e.signal.reason!==undefined){throw e.signal.reason}let n=t?"queryRoute":"query";throw new Error(n+"() call aborted: "+e.method+" "+e.url)}function isSubmissionNavigation(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==undefined)}function normalizeTo(e,t,r,n,A,o,i,s){let a;let l;if(i){a=[];for(let e of t){a.push(e);if(e.route.id===i){l=e;break}}}else{a=t;l=t[t.length-1]}let c=resolveTo(A?A:".",getResolveToMatches(a,o),stripBasename(e.pathname,r)||e.pathname,s==="path");if(A==null){c.search=e.search;c.hash=e.hash}if((A==null||A===""||A===".")&&l){let e=hasNakedIndexQuery(c.search);if(l.route.index&&!e){c.search=c.search?c.search.replace(/^\?/,"?index&"):"?index"}else if(!l.route.index&&e){let e=new URLSearchParams(c.search);let t=e.getAll("index");e.delete("index");t.filter((e=>e)).forEach((t=>e.append("index",t)));let r=e.toString();c.search=r?"?"+r:""}}if(n&&r!=="/"){c.pathname=c.pathname==="/"?r:joinPaths([r,c.pathname])}return createPath(c)}function normalizeNavigateOptions(e,t,r,n){if(!n||!isSubmissionNavigation(n)){return{path:r}}if(n.formMethod&&!isValidMethod(n.formMethod)){return{path:r,error:getInternalRouterError(405,{method:n.formMethod})}}let getInvalidBodyError=()=>({path:r,error:getInternalRouterError(400,{type:"invalid-body"})});let A=n.formMethod||"get";let o=e?A.toUpperCase():A.toLowerCase();let i=stripHashFromPath(r);if(n.body!==undefined){if(n.formEncType==="text/plain"){if(!isMutationMethod(o)){return getInvalidBodyError()}let e=typeof n.body==="string"?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce(((e,t)=>{let[r,n]=t;return""+e+r+"="+n+"\n"}),""):String(n.body);return{path:r,submission:{formMethod:o,formAction:i,formEncType:n.formEncType,formData:undefined,json:undefined,text:e}}}else if(n.formEncType==="application/json"){if(!isMutationMethod(o)){return getInvalidBodyError()}try{let e=typeof n.body==="string"?JSON.parse(n.body):n.body;return{path:r,submission:{formMethod:o,formAction:i,formEncType:n.formEncType,formData:undefined,json:e,text:undefined}}}catch(e){return getInvalidBodyError()}}}invariant(typeof FormData==="function","FormData is not available in this environment");let s;let a;if(n.formData){s=convertFormDataToSearchParams(n.formData);a=n.formData}else if(n.body instanceof FormData){s=convertFormDataToSearchParams(n.body);a=n.body}else if(n.body instanceof URLSearchParams){s=n.body;a=convertSearchParamsToFormData(s)}else if(n.body==null){s=new URLSearchParams;a=new FormData}else{try{s=new URLSearchParams(n.body);a=convertSearchParamsToFormData(s)}catch(e){return getInvalidBodyError()}}let l={formMethod:o,formAction:i,formEncType:n&&n.formEncType||"application/x-www-form-urlencoded",formData:a,json:undefined,text:undefined};if(isMutationMethod(l.formMethod)){return{path:r,submission:l}}let c=parsePath(r);if(t&&c.search&&hasNakedIndexQuery(c.search)){s.append("index","")}c.search="?"+s;return{path:createPath(c),submission:l}}function getLoaderMatchesUntilBoundary(e,t,r){if(r===void 0){r=false}let n=e.findIndex((e=>e.route.id===t));if(n>=0){return e.slice(0,r?n+1:n)}return e}function getMatchesToLoad(e,t,r,n,A,o,i,s,a,l,c,u,d,h,g,f){let E=f?isErrorResult(f[1])?f[1].error:f[1].data:undefined;let C=e.createURL(t.location);let Q=e.createURL(A);let B=r;if(o&&t.errors){B=getLoaderMatchesUntilBoundary(r,Object.keys(t.errors)[0],true)}else if(f&&isErrorResult(f[1])){B=getLoaderMatchesUntilBoundary(r,f[0])}let I=f?f[1].statusCode:undefined;let p=i&&I&&I>=400;let m=B.filter(((e,r)=>{let{route:A}=e;if(A.lazy){return true}if(A.loader==null){return false}if(o){return shouldLoadRouteOnHydration(A,t.loaderData,t.errors)}if(isNewLoader(t.loaderData,t.matches[r],e)||a.some((t=>t===e.route.id))){return true}let i=t.matches[r];let l=e;return shouldRevalidateLoader(e,_extends({currentUrl:C,currentParams:i.params,nextUrl:Q,nextParams:l.params},n,{actionResult:E,actionStatus:I,defaultShouldRevalidate:p?false:s||C.pathname+C.search===Q.pathname+Q.search||C.search!==Q.search||isNewRouteInstance(i,l)}))}));let y=[];u.forEach(((e,A)=>{if(o||!r.some((t=>t.route.id===e.routeId))||c.has(A)){return}let i=matchRoutes(h,e.path,g);if(!i){y.push({key:A,routeId:e.routeId,path:e.path,matches:null,match:null,controller:null});return}let a=t.fetchers.get(A);let u=getTargetMatch(i,e.path);let f=false;if(d.has(A)){f=false}else if(l.has(A)){l.delete(A);f=true}else if(a&&a.state!=="idle"&&a.data===undefined){f=s}else{f=shouldRevalidateLoader(u,_extends({currentUrl:C,currentParams:t.matches[t.matches.length-1].params,nextUrl:Q,nextParams:r[r.length-1].params},n,{actionResult:E,actionStatus:I,defaultShouldRevalidate:p?false:s}))}if(f){y.push({key:A,routeId:e.routeId,path:e.path,matches:i,match:u,controller:new AbortController})}}));return[m,y]}function shouldLoadRouteOnHydration(e,t,r){if(e.lazy){return true}if(!e.loader){return false}let n=t!=null&&t[e.id]!==undefined;let A=r!=null&&r[e.id]!==undefined;if(!n&&A){return false}if(typeof e.loader==="function"&&e.loader.hydrate===true){return true}return!n&&!A}function isNewLoader(e,t,r){let n=!t||r.route.id!==t.route.id;let A=e[r.route.id]===undefined;return n||A}function isNewRouteInstance(e,t){let r=e.route.path;return e.pathname!==t.pathname||r!=null&&r.endsWith("*")&&e.params["*"]!==t.params["*"]}function shouldRevalidateLoader(e,t){if(e.route.shouldRevalidate){let r=e.route.shouldRevalidate(t);if(typeof r==="boolean"){return r}}return t.defaultShouldRevalidate}function patchRoutesImpl(e,t,r,n,A){var o;let i;if(e){let t=n[e];invariant(t,"No route found to patch children into: routeId = "+e);if(!t.children){t.children=[]}i=t.children}else{i=r}let s=t.filter((e=>!i.some((t=>isSameRoute(e,t)))));let a=convertRoutesToDataRoutes(s,A,[e||"_","patch",String(((o=i)==null?void 0:o.length)||"0")],n);i.push(...a)}function isSameRoute(e,t){if("id"in e&&"id"in t&&e.id===t.id){return true}if(!(e.index===t.index&&e.path===t.path&&e.caseSensitive===t.caseSensitive)){return false}if((!e.children||e.children.length===0)&&(!t.children||t.children.length===0)){return true}return e.children.every(((e,r)=>{var n;return(n=t.children)==null?void 0:n.some((t=>isSameRoute(e,t)))}))}async function loadLazyRouteModule(e,t,r){if(!e.lazy){return}let n=await e.lazy();if(!e.lazy){return}let A=r[e.id];invariant(A,"No route found in manifest");let i={};for(let e in n){let t=A[e];let r=t!==undefined&&e!=="hasErrorBoundary";warning(!r,'Route "'+A.id+'" has a static property "'+e+'" '+"defined but its lazy function is also returning a value for this property. "+('The lazy route property "'+e+'" will be ignored.'));if(!r&&!o.has(e)){i[e]=n[e]}}Object.assign(A,i);Object.assign(A,_extends({},t(A),{lazy:undefined}))}async function defaultDataStrategy(e){let{matches:t}=e;let r=t.filter((e=>e.shouldLoad));let n=await Promise.all(r.map((e=>e.resolve())));return n.reduce(((e,t,n)=>Object.assign(e,{[r[n].route.id]:t})),{})}async function callDataStrategyImpl(e,t,r,n,o,i,s,a,l,c){let u=i.map((e=>e.route.lazy?loadLazyRouteModule(e.route,l,a):undefined));let d=i.map(((e,r)=>{let i=u[r];let s=o.some((t=>t.route.id===e.route.id));let resolve=async r=>{if(r&&n.method==="GET"&&(e.route.lazy||e.route.loader)){s=true}return s?callLoaderOrAction(t,n,e,i,r,c):Promise.resolve({type:A.data,result:undefined})};return _extends({},e,{shouldLoad:s,resolve:resolve})}));let h=await e({matches:d,request:n,params:i[0].params,fetcherKey:s,context:c});try{await Promise.all(u)}catch(e){}return h}async function callLoaderOrAction(e,t,r,n,o,i){let s;let a;let runHandler=n=>{let A;let s=new Promise(((e,t)=>A=t));a=()=>A();t.signal.addEventListener("abort",a);let actualHandler=A=>{if(typeof n!=="function"){return Promise.reject(new Error("You cannot call the handler for a route which defines a boolean "+('"'+e+'" [routeId: '+r.route.id+"]")))}return n({request:t,params:r.params,context:i},...A!==undefined?[A]:[])};let l=(async()=>{try{let e=await(o?o((e=>actualHandler(e))):actualHandler());return{type:"data",result:e}}catch(e){return{type:"error",result:e}}})();return Promise.race([l,s])};try{let o=r.route[e];if(n){if(o){let e;let[t]=await Promise.all([runHandler(o).catch((t=>{e=t})),n]);if(e!==undefined){throw e}s=t}else{await n;o=r.route[e];if(o){s=await runHandler(o)}else if(e==="action"){let e=new URL(t.url);let n=e.pathname+e.search;throw getInternalRouterError(405,{method:t.method,pathname:n,routeId:r.route.id})}else{return{type:A.data,result:undefined}}}}else if(!o){let e=new URL(t.url);let r=e.pathname+e.search;throw getInternalRouterError(404,{pathname:r})}else{s=await runHandler(o)}invariant(s.result!==undefined,"You defined "+(e==="action"?"an action":"a loader")+" for route "+('"'+r.route.id+"\" but didn't return anything from your `"+e+"` ")+"function. Please return a value or `null`.")}catch(e){return{type:A.error,result:e}}finally{if(a){t.signal.removeEventListener("abort",a)}}return s}async function convertDataStrategyResultToDataResult(e){let{result:t,type:r}=e;if(isResponse(t)){let e;try{let r=t.headers.get("Content-Type");if(r&&/\bapplication\/json\b/.test(r)){if(t.body==null){e=null}else{e=await t.json()}}else{e=await t.text()}}catch(e){return{type:A.error,error:e}}if(r===A.error){return{type:A.error,error:new ErrorResponseImpl(t.status,t.statusText,e),statusCode:t.status,headers:t.headers}}return{type:A.data,data:e,statusCode:t.status,headers:t.headers}}if(r===A.error){if(isDataWithResponseInit(t)){var n,o;if(t.data instanceof Error){var i,s;return{type:A.error,error:t.data,statusCode:(i=t.init)==null?void 0:i.status,headers:(s=t.init)!=null&&s.headers?new Headers(t.init.headers):undefined}}return{type:A.error,error:new ErrorResponseImpl(((n=t.init)==null?void 0:n.status)||500,undefined,t.data),statusCode:isRouteErrorResponse(t)?t.status:undefined,headers:(o=t.init)!=null&&o.headers?new Headers(t.init.headers):undefined}}return{type:A.error,error:t,statusCode:isRouteErrorResponse(t)?t.status:undefined}}if(isDeferredData(t)){var a,l;return{type:A.deferred,deferredData:t,statusCode:(a=t.init)==null?void 0:a.status,headers:((l=t.init)==null?void 0:l.headers)&&new Headers(t.init.headers)}}if(isDataWithResponseInit(t)){var c,u;return{type:A.data,data:t.data,statusCode:(c=t.init)==null?void 0:c.status,headers:(u=t.init)!=null&&u.headers?new Headers(t.init.headers):undefined}}return{type:A.data,data:t}}function normalizeRelativeRoutingRedirectResponse(e,t,r,n,A,o){let i=e.headers.get("Location");invariant(i,"Redirects returned/thrown from loaders/actions must have a Location header");if(!b.test(i)){let s=n.slice(0,n.findIndex((e=>e.route.id===r))+1);i=normalizeTo(new URL(t.url),s,A,true,i,o);e.headers.set("Location",i)}return e}function normalizeRedirectLocation(e,t,r){if(b.test(e)){let n=e;let A=n.startsWith("//")?new URL(t.protocol+n):new URL(n);let o=stripBasename(A.pathname,r)!=null;if(A.origin===t.origin&&o){return A.pathname+A.search+A.hash}}return e}function createClientSideRequest(e,t,r,n){let A=e.createURL(stripHashFromPath(t)).toString();let o={signal:r};if(n&&isMutationMethod(n.formMethod)){let{formMethod:e,formEncType:t}=n;o.method=e.toUpperCase();if(t==="application/json"){o.headers=new Headers({"Content-Type":t});o.body=JSON.stringify(n.json)}else if(t==="text/plain"){o.body=n.text}else if(t==="application/x-www-form-urlencoded"&&n.formData){o.body=convertFormDataToSearchParams(n.formData)}else{o.body=n.formData}}return new Request(A,o)}function convertFormDataToSearchParams(e){let t=new URLSearchParams;for(let[r,n]of e.entries()){t.append(r,typeof n==="string"?n:n.name)}return t}function convertSearchParamsToFormData(e){let t=new FormData;for(let[r,n]of e.entries()){t.append(r,n)}return t}function processRouteLoaderData(e,t,r,n,A){let o={};let i=null;let s;let a=false;let l={};let c=r&&isErrorResult(r[1])?r[1].error:undefined;e.forEach((r=>{if(!(r.route.id in t)){return}let u=r.route.id;let d=t[u];invariant(!isRedirectResult(d),"Cannot handle redirect results in processLoaderData");if(isErrorResult(d)){let t=d.error;if(c!==undefined){t=c;c=undefined}i=i||{};if(A){i[u]=t}else{let r=findNearestBoundary(e,u);if(i[r.route.id]==null){i[r.route.id]=t}}o[u]=undefined;if(!a){a=true;s=isRouteErrorResponse(d.error)?d.error.status:500}if(d.headers){l[u]=d.headers}}else{if(isDeferredResult(d)){n.set(u,d.deferredData);o[u]=d.deferredData.data;if(d.statusCode!=null&&d.statusCode!==200&&!a){s=d.statusCode}if(d.headers){l[u]=d.headers}}else{o[u]=d.data;if(d.statusCode&&d.statusCode!==200&&!a){s=d.statusCode}if(d.headers){l[u]=d.headers}}}}));if(c!==undefined&&r){i={[r[0]]:c};o[r[0]]=undefined}return{loaderData:o,errors:i,statusCode:s||200,loaderHeaders:l}}function processLoaderData(e,t,r,n,A,o,i){let{loaderData:s,errors:a}=processRouteLoaderData(t,r,n,i,false);A.forEach((t=>{let{key:r,match:n,controller:A}=t;let i=o[r];invariant(i,"Did not find corresponding fetcher result");if(A&&A.signal.aborted){return}else if(isErrorResult(i)){let t=findNearestBoundary(e.matches,n==null?void 0:n.route.id);if(!(a&&a[t.route.id])){a=_extends({},a,{[t.route.id]:i.error})}e.fetchers.delete(r)}else if(isRedirectResult(i)){invariant(false,"Unhandled fetcher revalidation redirect")}else if(isDeferredResult(i)){invariant(false,"Unhandled fetcher deferred data")}else{let t=getDoneFetcher(i.data);e.fetchers.set(r,t)}}));return{loaderData:s,errors:a}}function mergeLoaderData(e,t,r,n){let A=_extends({},t);for(let o of r){let r=o.route.id;if(t.hasOwnProperty(r)){if(t[r]!==undefined){A[r]=t[r]}}else if(e[r]!==undefined&&o.route.loader){A[r]=e[r]}if(n&&n.hasOwnProperty(r)){break}}return A}function getActionDataForCommit(e){if(!e){return{}}return isErrorResult(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}}function findNearestBoundary(e,t){let r=t?e.slice(0,e.findIndex((e=>e.route.id===t))+1):[...e];return r.reverse().find((e=>e.route.hasErrorBoundary===true))||e[0]}function getShortCircuitMatches(e){let t=e.length===1?e[0]:e.find((e=>e.index||!e.path||e.path==="/"))||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function getInternalRouterError(e,t){let{pathname:r,routeId:n,method:A,type:o,message:i}=t===void 0?{}:t;let s="Unknown Server Error";let a="Unknown @remix-run/router error";if(e===400){s="Bad Request";if(A&&r&&n){a="You made a "+A+' request to "'+r+'" but '+('did not provide a `loader` for route "'+n+'", ')+"so there is no way to handle the request."}else if(o==="defer-action"){a="defer() is not supported in actions"}else if(o==="invalid-body"){a="Unable to encode submission body"}}else if(e===403){s="Forbidden";a='Route "'+n+'" does not match URL "'+r+'"'}else if(e===404){s="Not Found";a='No route matches URL "'+r+'"'}else if(e===405){s="Method Not Allowed";if(A&&r&&n){a="You made a "+A.toUpperCase()+' request to "'+r+'" but '+('did not provide an `action` for route "'+n+'", ')+"so there is no way to handle the request."}else if(A){a='Invalid request method "'+A.toUpperCase()+'"'}}return new ErrorResponseImpl(e||500,s,new Error(a),true)}function findRedirect(e){let t=Object.entries(e);for(let e=t.length-1;e>=0;e--){let[r,n]=t[e];if(isRedirectResult(n)){return{key:r,result:n}}}}function stripHashFromPath(e){let t=typeof e==="string"?parsePath(e):e;return createPath(_extends({},t,{hash:""}))}function isHashChangeOnly(e,t){if(e.pathname!==t.pathname||e.search!==t.search){return false}if(e.hash===""){return t.hash!==""}else if(e.hash===t.hash){return true}else if(t.hash!==""){return true}return false}function isDataStrategyResult(e){return e!=null&&typeof e==="object"&&"type"in e&&"result"in e&&(e.type===A.data||e.type===A.error)}function isRedirectDataStrategyResultResult(e){return isResponse(e.result)&&B.has(e.result.status)}function isDeferredResult(e){return e.type===A.deferred}function isErrorResult(e){return e.type===A.error}function isRedirectResult(e){return(e&&e.type)===A.redirect}function isDataWithResponseInit(e){return typeof e==="object"&&e!=null&&"type"in e&&"data"in e&&"init"in e&&e.type==="DataWithResponseInit"}function isDeferredData(e){let t=e;return t&&typeof t==="object"&&typeof t.data==="object"&&typeof t.subscribe==="function"&&typeof t.cancel==="function"&&typeof t.resolveData==="function"}function isResponse(e){return e!=null&&typeof e.status==="number"&&typeof e.statusText==="string"&&typeof e.headers==="object"&&typeof e.body!=="undefined"}function isRedirectResponse(e){if(!isResponse(e)){return false}let t=e.status;let r=e.headers.get("Location");return t>=300&&t<=399&&r!=null}function isValidMethod(e){return Q.has(e.toLowerCase())}function isMutationMethod(e){return E.has(e.toLowerCase())}async function resolveNavigationDeferredResults(e,t,r,n,A){let o=Object.entries(t);for(let i=0;i<o.length;i++){let[s,a]=o[i];let l=e.find((e=>(e==null?void 0:e.route.id)===s));if(!l){continue}let c=n.find((e=>e.route.id===l.route.id));let u=c!=null&&!isNewRouteInstance(c,l)&&(A&&A[l.route.id])!==undefined;if(isDeferredResult(a)&&u){await resolveDeferredData(a,r,false).then((e=>{if(e){t[s]=e}}))}}}async function resolveFetcherDeferredResults(e,t,r){for(let n=0;n<r.length;n++){let{key:A,routeId:o,controller:i}=r[n];let s=t[A];let a=e.find((e=>(e==null?void 0:e.route.id)===o));if(!a){continue}if(isDeferredResult(s)){invariant(i,"Expected an AbortController for revalidating fetcher deferred result");await resolveDeferredData(s,i.signal,true).then((e=>{if(e){t[A]=e}}))}}}async function resolveDeferredData(e,t,r){if(r===void 0){r=false}let n=await e.deferredData.resolveData(t);if(n){return}if(r){try{return{type:A.data,data:e.deferredData.unwrappedData}}catch(e){return{type:A.error,error:e}}}return{type:A.data,data:e.deferredData.data}}function hasNakedIndexQuery(e){return new URLSearchParams(e).getAll("index").some((e=>e===""))}function getTargetMatch(e,t){let r=typeof t==="string"?parsePath(t).search:t.search;if(e[e.length-1].route.index&&hasNakedIndexQuery(r||"")){return e[e.length-1]}let n=getPathContributingMatches(e);return n[n.length-1]}function getSubmissionFromNavigation(e){let{formMethod:t,formAction:r,formEncType:n,text:A,formData:o,json:i}=e;if(!t||!r||!n){return}if(A!=null){return{formMethod:t,formAction:r,formEncType:n,formData:undefined,json:undefined,text:A}}else if(o!=null){return{formMethod:t,formAction:r,formEncType:n,formData:o,json:undefined,text:undefined}}else if(i!==undefined){return{formMethod:t,formAction:r,formEncType:n,formData:undefined,json:i,text:undefined}}}function getLoadingNavigation(e,t){if(t){let r={state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text};return r}else{let t={state:"loading",location:e,formMethod:undefined,formAction:undefined,formEncType:undefined,formData:undefined,json:undefined,text:undefined};return t}}function getSubmittingNavigation(e,t){let r={state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text};return r}function getLoadingFetcher(e,t){if(e){let r={state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t};return r}else{let e={state:"loading",formMethod:undefined,formAction:undefined,formEncType:undefined,formData:undefined,json:undefined,text:undefined,data:t};return e}}function getSubmittingFetcher(e,t){let r={state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:undefined};return r}function getDoneFetcher(e){let t={state:"idle",formMethod:undefined,formAction:undefined,formEncType:undefined,formData:undefined,json:undefined,text:undefined,data:e};return t}function restoreAppliedTransitions(e,t){try{let r=e.sessionStorage.getItem(w);if(r){let e=JSON.parse(r);for(let[r,n]of Object.entries(e||{})){if(n&&Array.isArray(n)){t.set(r,new Set(n||[]))}}}}catch(e){}}function persistAppliedTransitions(e,t){if(t.size>0){let r={};for(let[e,n]of t){r[e]=[...n]}try{e.sessionStorage.setItem(w,JSON.stringify(r))}catch(e){warning(false,"Failed to save applied view transitions in sessionStorage ("+e+").")}}}t.AbortedDeferredError=AbortedDeferredError;t.Action=r;t.IDLE_BLOCKER=y;t.IDLE_FETCHER=m;t.IDLE_NAVIGATION=p;t.UNSAFE_DEFERRED_SYMBOL=R;t.UNSAFE_DeferredData=DeferredData;t.UNSAFE_ErrorResponseImpl=ErrorResponseImpl;t.UNSAFE_convertRouteMatchToUiMatch=convertRouteMatchToUiMatch;t.UNSAFE_convertRoutesToDataRoutes=convertRoutesToDataRoutes;t.UNSAFE_decodePath=decodePath;t.UNSAFE_getResolveToMatches=getResolveToMatches;t.UNSAFE_invariant=invariant;t.UNSAFE_warning=warning;t.createBrowserHistory=createBrowserHistory;t.createHashHistory=createHashHistory;t.createMemoryHistory=createMemoryHistory;t.createPath=createPath;t.createRouter=createRouter;t.createStaticHandler=createStaticHandler;t.data=data;t.defer=h;t.generatePath=generatePath;t.getStaticContextFromError=getStaticContextFromError;t.getToPathname=getToPathname;t.isDataWithResponseInit=isDataWithResponseInit;t.isDeferredData=isDeferredData;t.isRouteErrorResponse=isRouteErrorResponse;t.joinPaths=joinPaths;t.json=d;t.matchPath=matchPath;t.matchRoutes=matchRoutes;t.normalizePathname=normalizePathname;t.parsePath=parsePath;t.redirect=g;t.redirectDocument=redirectDocument;t.replace=replace;t.resolvePath=resolvePath;t.resolveTo=resolveTo;t.stripBasename=stripBasename},6563:function(e,t,r){"use strict";
91
+ */Object.defineProperty(t,"__esModule",{value:true});function _extends(){_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r){if(Object.prototype.hasOwnProperty.call(r,n)){e[n]=r[n]}}}return e};return _extends.apply(this,arguments)}let r=function(e){e["Pop"]="POP";e["Push"]="PUSH";e["Replace"]="REPLACE";return e}({});const n="popstate";function createMemoryHistory(e){if(e===void 0){e={}}let{initialEntries:t=["/"],initialIndex:n,v5Compat:A=false}=e;let o;o=t.map(((e,t)=>createMemoryLocation(e,typeof e==="string"?null:e.state,t===0?"default":undefined)));let i=clampIndex(n==null?o.length-1:n);let s=r.Pop;let a=null;function clampIndex(e){return Math.min(Math.max(e,0),o.length-1)}function getCurrentLocation(){return o[i]}function createMemoryLocation(e,t,r){if(t===void 0){t=null}let n=createLocation(o?getCurrentLocation().pathname:"/",e,t,r);warning(n.pathname.charAt(0)==="/","relative pathnames are not supported in memory history: "+JSON.stringify(e));return n}function createHref(e){return typeof e==="string"?e:createPath(e)}let l={get index(){return i},get action(){return s},get location(){return getCurrentLocation()},createHref:createHref,createURL(e){return new URL(createHref(e),"http://localhost")},encodeLocation(e){let t=typeof e==="string"?parsePath(e):e;return{pathname:t.pathname||"",search:t.search||"",hash:t.hash||""}},push(e,t){s=r.Push;let n=createMemoryLocation(e,t);i+=1;o.splice(i,o.length,n);if(A&&a){a({action:s,location:n,delta:1})}},replace(e,t){s=r.Replace;let n=createMemoryLocation(e,t);o[i]=n;if(A&&a){a({action:s,location:n,delta:0})}},go(e){s=r.Pop;let t=clampIndex(i+e);let n=o[t];i=t;if(a){a({action:s,location:n,delta:e})}},listen(e){a=e;return()=>{a=null}}};return l}function createBrowserHistory(e){if(e===void 0){e={}}function createBrowserLocation(e,t){let{pathname:r,search:n,hash:A}=e.location;return createLocation("",{pathname:r,search:n,hash:A},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}function createBrowserHref(e,t){return typeof t==="string"?t:createPath(t)}return getUrlBasedHistory(createBrowserLocation,createBrowserHref,null,e)}function createHashHistory(e){if(e===void 0){e={}}function createHashLocation(e,t){let{pathname:r="/",search:n="",hash:A=""}=parsePath(e.location.hash.substr(1));if(!r.startsWith("/")&&!r.startsWith(".")){r="/"+r}return createLocation("",{pathname:r,search:n,hash:A},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}function createHashHref(e,t){let r=e.document.querySelector("base");let n="";if(r&&r.getAttribute("href")){let t=e.location.href;let r=t.indexOf("#");n=r===-1?t:t.slice(0,r)}return n+"#"+(typeof t==="string"?t:createPath(t))}function validateHashLocation(e,t){warning(e.pathname.charAt(0)==="/","relative pathnames are not supported in hash history.push("+JSON.stringify(t)+")")}return getUrlBasedHistory(createHashLocation,createHashHref,validateHashLocation,e)}function invariant(e,t){if(e===false||e===null||typeof e==="undefined"){throw new Error(t)}}function warning(e,t){if(!e){if(typeof console!=="undefined")console.warn(t);try{throw new Error(t)}catch(e){}}}function createKey(){return Math.random().toString(36).substr(2,8)}function getHistoryState(e,t){return{usr:e.state,key:e.key,idx:t}}function createLocation(e,t,r,n){if(r===void 0){r=null}let A=_extends({pathname:typeof e==="string"?e:e.pathname,search:"",hash:""},typeof t==="string"?parsePath(t):t,{state:r,key:t&&t.key||n||createKey()});return A}function createPath(e){let{pathname:t="/",search:r="",hash:n=""}=e;if(r&&r!=="?")t+=r.charAt(0)==="?"?r:"?"+r;if(n&&n!=="#")t+=n.charAt(0)==="#"?n:"#"+n;return t}function parsePath(e){let t={};if(e){let r=e.indexOf("#");if(r>=0){t.hash=e.substr(r);e=e.substr(0,r)}let n=e.indexOf("?");if(n>=0){t.search=e.substr(n);e=e.substr(0,n)}if(e){t.pathname=e}}return t}function getUrlBasedHistory(e,t,A,o){if(o===void 0){o={}}let{window:i=document.defaultView,v5Compat:s=false}=o;let a=i.history;let l=r.Pop;let c=null;let u=getIndex();if(u==null){u=0;a.replaceState(_extends({},a.state,{idx:u}),"")}function getIndex(){let e=a.state||{idx:null};return e.idx}function handlePop(){l=r.Pop;let e=getIndex();let t=e==null?null:e-u;u=e;if(c){c({action:l,location:d.location,delta:t})}}function push(e,t){l=r.Push;let n=createLocation(d.location,e,t);if(A)A(n,e);u=getIndex()+1;let o=getHistoryState(n,u);let h=d.createHref(n);try{a.pushState(o,"",h)}catch(e){if(e instanceof DOMException&&e.name==="DataCloneError"){throw e}i.location.assign(h)}if(s&&c){c({action:l,location:d.location,delta:1})}}function replace(e,t){l=r.Replace;let n=createLocation(d.location,e,t);if(A)A(n,e);u=getIndex();let o=getHistoryState(n,u);let i=d.createHref(n);a.replaceState(o,"",i);if(s&&c){c({action:l,location:d.location,delta:0})}}function createURL(e){let t=i.location.origin!=="null"?i.location.origin:i.location.href;let r=typeof e==="string"?e:createPath(e);r=r.replace(/ $/,"%20");invariant(t,"No window.location.(origin|href) available to create URL for href: "+r);return new URL(r,t)}let d={get action(){return l},get location(){return e(i,a)},listen(e){if(c){throw new Error("A history only accepts one active listener")}i.addEventListener(n,handlePop);c=e;return()=>{i.removeEventListener(n,handlePop);c=null}},createHref(e){return t(i,e)},createURL:createURL,encodeLocation(e){let t=createURL(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:push,replace:replace,go(e){return a.go(e)}};return d}let A=function(e){e["data"]="data";e["deferred"]="deferred";e["redirect"]="redirect";e["error"]="error";return e}({});const o=new Set(["lazy","caseSensitive","path","id","index","children"]);function isIndexRoute(e){return e.index===true}function convertRoutesToDataRoutes(e,t,r,n){if(r===void 0){r=[]}if(n===void 0){n={}}return e.map(((e,A)=>{let o=[...r,String(A)];let i=typeof e.id==="string"?e.id:o.join("-");invariant(e.index!==true||!e.children,"Cannot specify children on an index route");invariant(!n[i],'Found a route id collision on id "'+i+'". Route '+"id's must be globally unique within Data Router usages");if(isIndexRoute(e)){let r=_extends({},e,t(e),{id:i});n[i]=r;return r}else{let r=_extends({},e,t(e),{id:i,children:undefined});n[i]=r;if(e.children){r.children=convertRoutesToDataRoutes(e.children,t,o,n)}return r}}))}function matchRoutes(e,t,r){if(r===void 0){r="/"}return matchRoutesImpl(e,t,r,false)}function matchRoutesImpl(e,t,r,n){let A=typeof t==="string"?parsePath(t):t;let o=stripBasename(A.pathname||"/",r);if(o==null){return null}let i=flattenRoutes(e);rankRouteBranches(i);let s=null;for(let e=0;s==null&&e<i.length;++e){let t=decodePath(o);s=matchRouteBranch(i[e],t,n)}return s}function convertRouteMatchToUiMatch(e,t){let{route:r,pathname:n,params:A}=e;return{id:r.id,pathname:n,params:A,data:t[r.id],handle:r.handle}}function flattenRoutes(e,t,r,n){if(t===void 0){t=[]}if(r===void 0){r=[]}if(n===void 0){n=""}let flattenRoute=(e,A,o)=>{let i={relativePath:o===undefined?e.path||"":o,caseSensitive:e.caseSensitive===true,childrenIndex:A,route:e};if(i.relativePath.startsWith("/")){invariant(i.relativePath.startsWith(n),'Absolute route path "'+i.relativePath+'" nested under path '+('"'+n+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes.");i.relativePath=i.relativePath.slice(n.length)}let s=joinPaths([n,i.relativePath]);let a=r.concat(i);if(e.children&&e.children.length>0){invariant(e.index!==true,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+s+'".'));flattenRoutes(e.children,t,a,s)}if(e.path==null&&!e.index){return}t.push({path:s,score:computeScore(s,e.index),routesMeta:a})};e.forEach(((e,t)=>{var r;if(e.path===""||!((r=e.path)!=null&&r.includes("?"))){flattenRoute(e,t)}else{for(let r of explodeOptionalSegments(e.path)){flattenRoute(e,t,r)}}}));return t}function explodeOptionalSegments(e){let t=e.split("/");if(t.length===0)return[];let[r,...n]=t;let A=r.endsWith("?");let o=r.replace(/\?$/,"");if(n.length===0){return A?[o,""]:[o]}let i=explodeOptionalSegments(n.join("/"));let s=[];s.push(...i.map((e=>e===""?o:[o,e].join("/"))));if(A){s.push(...i)}return s.map((t=>e.startsWith("/")&&t===""?"/":t))}function rankRouteBranches(e){e.sort(((e,t)=>e.score!==t.score?t.score-e.score:compareIndexes(e.routesMeta.map((e=>e.childrenIndex)),t.routesMeta.map((e=>e.childrenIndex)))))}const i=/^:[\w-]+$/;const s=3;const a=2;const l=1;const c=10;const u=-2;const isSplat=e=>e==="*";function computeScore(e,t){let r=e.split("/");let n=r.length;if(r.some(isSplat)){n+=u}if(t){n+=a}return r.filter((e=>!isSplat(e))).reduce(((e,t)=>e+(i.test(t)?s:t===""?l:c)),n)}function compareIndexes(e,t){let r=e.length===t.length&&e.slice(0,-1).every(((e,r)=>e===t[r]));return r?e[e.length-1]-t[t.length-1]:0}function matchRouteBranch(e,t,r){if(r===void 0){r=false}let{routesMeta:n}=e;let A={};let o="/";let i=[];for(let e=0;e<n.length;++e){let s=n[e];let a=e===n.length-1;let l=o==="/"?t:t.slice(o.length)||"/";let c=matchPath({path:s.relativePath,caseSensitive:s.caseSensitive,end:a},l);let u=s.route;if(!c&&a&&r&&!n[n.length-1].route.index){c=matchPath({path:s.relativePath,caseSensitive:s.caseSensitive,end:false},l)}if(!c){return null}Object.assign(A,c.params);i.push({params:A,pathname:joinPaths([o,c.pathname]),pathnameBase:normalizePathname(joinPaths([o,c.pathnameBase])),route:u});if(c.pathnameBase!=="/"){o=joinPaths([o,c.pathnameBase])}}return i}function generatePath(e,t){if(t===void 0){t={}}let r=e;if(r.endsWith("*")&&r!=="*"&&!r.endsWith("/*")){warning(false,'Route path "'+r+'" will be treated as if it were '+('"'+r.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+r.replace(/\*$/,"/*")+'".'));r=r.replace(/\*$/,"/*")}const n=r.startsWith("/")?"/":"";const stringify=e=>e==null?"":typeof e==="string"?e:String(e);const A=r.split(/\/+/).map(((e,r,n)=>{const A=r===n.length-1;if(A&&e==="*"){const e="*";return stringify(t[e])}const o=e.match(/^:([\w-]+)(\??)$/);if(o){const[,e,r]=o;let n=t[e];invariant(r==="?"||n!=null,'Missing ":'+e+'" param');return stringify(n)}return e.replace(/\?$/g,"")})).filter((e=>!!e));return n+A.join("/")}function matchPath(e,t){if(typeof e==="string"){e={path:e,caseSensitive:false,end:true}}let[r,n]=compilePath(e.path,e.caseSensitive,e.end);let A=t.match(r);if(!A)return null;let o=A[0];let i=o.replace(/(.)\/+$/,"$1");let s=A.slice(1);let a=n.reduce(((e,t,r)=>{let{paramName:n,isOptional:A}=t;if(n==="*"){let e=s[r]||"";i=o.slice(0,o.length-e.length).replace(/(.)\/+$/,"$1")}const a=s[r];if(A&&!a){e[n]=undefined}else{e[n]=(a||"").replace(/%2F/g,"/")}return e}),{});return{params:a,pathname:o,pathnameBase:i,pattern:e}}function compilePath(e,t,r){if(t===void 0){t=false}if(r===void 0){r=true}warning(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let n=[];let A="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,((e,t,r)=>{n.push({paramName:t,isOptional:r!=null});return r?"/?([^\\/]+)?":"/([^\\/]+)"}));if(e.endsWith("*")){n.push({paramName:"*"});A+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"}else if(r){A+="\\/*$"}else if(e!==""&&e!=="/"){A+="(?:(?=\\/|$))"}else;let o=new RegExp(A,t?undefined:"i");return[o,n]}function decodePath(e){try{return e.split("/").map((e=>decodeURIComponent(e).replace(/\//g,"%2F"))).join("/")}catch(t){warning(false,'The URL path "'+e+'" could not be decoded because it is is a '+"malformed URL segment. This is probably due to a bad percent "+("encoding ("+t+")."));return e}}function stripBasename(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase())){return null}let r=t.endsWith("/")?t.length-1:t.length;let n=e.charAt(r);if(n&&n!=="/"){return null}return e.slice(r)||"/"}function resolvePath(e,t){if(t===void 0){t="/"}let{pathname:r,search:n="",hash:A=""}=typeof e==="string"?parsePath(e):e;let o=r?r.startsWith("/")?r:resolvePathname(r,t):t;return{pathname:o,search:normalizeSearch(n),hash:normalizeHash(A)}}function resolvePathname(e,t){let r=t.replace(/\/+$/,"").split("/");let n=e.split("/");n.forEach((e=>{if(e===".."){if(r.length>1)r.pop()}else if(e!=="."){r.push(e)}}));return r.length>1?r.join("/"):"/"}function getInvalidPathError(e,t,r,n){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(n)+"]. Please separate it out to the ")+("`to."+r+"` field. Alternatively you may provide the full path as ")+'a string in <Link to="..."> and the router will parse it for you.'}function getPathContributingMatches(e){return e.filter(((e,t)=>t===0||e.route.path&&e.route.path.length>0))}function getResolveToMatches(e,t){let r=getPathContributingMatches(e);if(t){return r.map(((e,t)=>t===r.length-1?e.pathname:e.pathnameBase))}return r.map((e=>e.pathnameBase))}function resolveTo(e,t,r,n){if(n===void 0){n=false}let A;if(typeof e==="string"){A=parsePath(e)}else{A=_extends({},e);invariant(!A.pathname||!A.pathname.includes("?"),getInvalidPathError("?","pathname","search",A));invariant(!A.pathname||!A.pathname.includes("#"),getInvalidPathError("#","pathname","hash",A));invariant(!A.search||!A.search.includes("#"),getInvalidPathError("#","search","hash",A))}let o=e===""||A.pathname==="";let i=o?"/":A.pathname;let s;if(i==null){s=r}else{let e=t.length-1;if(!n&&i.startsWith("..")){let t=i.split("/");while(t[0]===".."){t.shift();e-=1}A.pathname=t.join("/")}s=e>=0?t[e]:"/"}let a=resolvePath(A,s);let l=i&&i!=="/"&&i.endsWith("/");let c=(o||i===".")&&r.endsWith("/");if(!a.pathname.endsWith("/")&&(l||c)){a.pathname+="/"}return a}function getToPathname(e){return e===""||e.pathname===""?"/":typeof e==="string"?parsePath(e).pathname:e.pathname}const joinPaths=e=>e.join("/").replace(/\/\/+/g,"/");const normalizePathname=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/");const normalizeSearch=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e;const normalizeHash=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;const d=function json(e,t){if(t===void 0){t={}}let r=typeof t==="number"?{status:t}:t;let n=new Headers(r.headers);if(!n.has("Content-Type")){n.set("Content-Type","application/json; charset=utf-8")}return new Response(JSON.stringify(e),_extends({},r,{headers:n}))};class DataWithResponseInit{constructor(e,t){this.type="DataWithResponseInit";this.data=e;this.init=t||null}}function data(e,t){return new DataWithResponseInit(e,typeof t==="number"?{status:t}:t)}class AbortedDeferredError extends Error{}class DeferredData{constructor(e,t){this.pendingKeysSet=new Set;this.subscribers=new Set;this.deferredKeys=[];invariant(e&&typeof e==="object"&&!Array.isArray(e),"defer() only accepts plain objects");let r;this.abortPromise=new Promise(((e,t)=>r=t));this.controller=new AbortController;let onAbort=()=>r(new AbortedDeferredError("Deferred data aborted"));this.unlistenAbortSignal=()=>this.controller.signal.removeEventListener("abort",onAbort);this.controller.signal.addEventListener("abort",onAbort);this.data=Object.entries(e).reduce(((e,t)=>{let[r,n]=t;return Object.assign(e,{[r]:this.trackPromise(r,n)})}),{});if(this.done){this.unlistenAbortSignal()}this.init=t}trackPromise(e,t){if(!(t instanceof Promise)){return t}this.deferredKeys.push(e);this.pendingKeysSet.add(e);let r=Promise.race([t,this.abortPromise]).then((t=>this.onSettle(r,e,undefined,t)),(t=>this.onSettle(r,e,t)));r.catch((()=>{}));Object.defineProperty(r,"_tracked",{get:()=>true});return r}onSettle(e,t,r,n){if(this.controller.signal.aborted&&r instanceof AbortedDeferredError){this.unlistenAbortSignal();Object.defineProperty(e,"_error",{get:()=>r});return Promise.reject(r)}this.pendingKeysSet.delete(t);if(this.done){this.unlistenAbortSignal()}if(r===undefined&&n===undefined){let r=new Error('Deferred data for key "'+t+'" resolved/rejected with `undefined`, '+"you must resolve/reject with a value or `null`.");Object.defineProperty(e,"_error",{get:()=>r});this.emit(false,t);return Promise.reject(r)}if(n===undefined){Object.defineProperty(e,"_error",{get:()=>r});this.emit(false,t);return Promise.reject(r)}Object.defineProperty(e,"_data",{get:()=>n});this.emit(false,t);return n}emit(e,t){this.subscribers.forEach((r=>r(e,t)))}subscribe(e){this.subscribers.add(e);return()=>this.subscribers.delete(e)}cancel(){this.controller.abort();this.pendingKeysSet.forEach(((e,t)=>this.pendingKeysSet.delete(t)));this.emit(true)}async resolveData(e){let t=false;if(!this.done){let onAbort=()=>this.cancel();e.addEventListener("abort",onAbort);t=await new Promise((t=>{this.subscribe((r=>{e.removeEventListener("abort",onAbort);if(r||this.done){t(r)}}))}))}return t}get done(){return this.pendingKeysSet.size===0}get unwrappedData(){invariant(this.data!==null&&this.done,"Can only unwrap data on initialized and settled deferreds");return Object.entries(this.data).reduce(((e,t)=>{let[r,n]=t;return Object.assign(e,{[r]:unwrapTrackedPromise(n)})}),{})}get pendingKeys(){return Array.from(this.pendingKeysSet)}}function isTrackedPromise(e){return e instanceof Promise&&e._tracked===true}function unwrapTrackedPromise(e){if(!isTrackedPromise(e)){return e}if(e._error){throw e._error}return e._data}const h=function defer(e,t){if(t===void 0){t={}}let r=typeof t==="number"?{status:t}:t;return new DeferredData(e,r)};const g=function redirect(e,t){if(t===void 0){t=302}let r=t;if(typeof r==="number"){r={status:r}}else if(typeof r.status==="undefined"){r.status=302}let n=new Headers(r.headers);n.set("Location",e);return new Response(null,_extends({},r,{headers:n}))};const redirectDocument=(e,t)=>{let r=g(e,t);r.headers.set("X-Remix-Reload-Document","true");return r};const replace=(e,t)=>{let r=g(e,t);r.headers.set("X-Remix-Replace","true");return r};class ErrorResponseImpl{constructor(e,t,r,n){if(n===void 0){n=false}this.status=e;this.statusText=t||"";this.internal=n;if(r instanceof Error){this.data=r.toString();this.error=r}else{this.data=r}}}function isRouteErrorResponse(e){return e!=null&&typeof e.status==="number"&&typeof e.statusText==="string"&&typeof e.internal==="boolean"&&"data"in e}const f=["post","put","patch","delete"];const E=new Set(f);const C=["get",...f];const Q=new Set(C);const B=new Set([301,302,303,307,308]);const I=new Set([307,308]);const p={state:"idle",location:undefined,formMethod:undefined,formAction:undefined,formEncType:undefined,formData:undefined,json:undefined,text:undefined};const m={state:"idle",data:undefined,formMethod:undefined,formAction:undefined,formEncType:undefined,formData:undefined,json:undefined,text:undefined};const y={state:"unblocked",proceed:undefined,reset:undefined,location:undefined};const b=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;const defaultMapRouteProperties=e=>({hasErrorBoundary:Boolean(e.hasErrorBoundary)});const w="remix-router-transitions";function createRouter(e){const t=e.window?e.window:typeof window!=="undefined"?window:undefined;const n=typeof t!=="undefined"&&typeof t.document!=="undefined"&&typeof t.document.createElement!=="undefined";const o=!n;invariant(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let i;if(e.mapRouteProperties){i=e.mapRouteProperties}else if(e.detectErrorBoundary){let t=e.detectErrorBoundary;i=e=>({hasErrorBoundary:t(e)})}else{i=defaultMapRouteProperties}let s={};let a=convertRoutesToDataRoutes(e.routes,i,undefined,s);let l;let c=e.basename||"/";let u=e.dataStrategy||defaultDataStrategy;let d=e.patchRoutesOnNavigation;let h=_extends({v7_fetcherPersist:false,v7_normalizeFormMethod:false,v7_partialHydration:false,v7_prependBasename:false,v7_relativeSplatPath:false,v7_skipActionErrorRevalidation:false},e.future);let g=null;let f=new Set;let E=null;let C=null;let Q=null;let B=e.hydrationData!=null;let w=matchRoutes(a,e.history.location,c);let R=false;let S=null;if(w==null&&!d){let t=getInternalRouterError(404,{pathname:e.history.location.pathname});let{matches:r,route:n}=getShortCircuitMatches(a);w=r;S={[n.id]:t}}if(w&&!e.hydrationData){let t=checkFogOfWar(w,a,e.history.location.pathname);if(t.active){w=null}}let D;if(!w){D=false;w=[];if(h.v7_partialHydration){let t=checkFogOfWar(null,a,e.history.location.pathname);if(t.active&&t.matches){R=true;w=t.matches}}}else if(w.some((e=>e.route.lazy))){D=false}else if(!w.some((e=>e.route.loader))){D=true}else if(h.v7_partialHydration){let t=e.hydrationData?e.hydrationData.loaderData:null;let r=e.hydrationData?e.hydrationData.errors:null;if(r){let e=w.findIndex((e=>r[e.route.id]!==undefined));D=w.slice(0,e+1).every((e=>!shouldLoadRouteOnHydration(e.route,t,r)))}else{D=w.every((e=>!shouldLoadRouteOnHydration(e.route,t,r)))}}else{D=e.hydrationData!=null}let k;let F={historyAction:e.history.action,location:e.history.location,matches:w,initialized:D,navigation:p,restoreScrollPosition:e.hydrationData!=null?false:null,preventScrollReset:false,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||S,fetchers:new Map,blockers:new Map};let v=r.Pop;let M=false;let N;let T=false;let U=new Map;let L=null;let x=false;let H=false;let Y=[];let P=new Set;let G=new Map;let W=0;let _=-1;let J=new Map;let O=new Set;let V=new Map;let q=new Map;let j=new Set;let z=new Map;let Z=new Map;let K=undefined;function initialize(){g=e.history.listen((t=>{let{action:r,location:n,delta:A}=t;if(K){K();K=undefined;return}warning(Z.size===0||A!=null,"You are trying to use a blocker on a POP navigation to a location "+"that was not created by @remix-run/router. This will fail silently in "+"production. This can happen if you are navigating outside the router "+"via `window.history.pushState`/`window.location.hash` instead of using "+"router navigation APIs. This can also happen if you are using "+"createHashRouter and the user manually changes the URL.");let o=shouldBlockNavigation({currentLocation:F.location,nextLocation:n,historyAction:r});if(o&&A!=null){let t=new Promise((e=>{K=e}));e.history.go(A*-1);updateBlocker(o,{state:"blocked",location:n,proceed(){updateBlocker(o,{state:"proceeding",proceed:undefined,reset:undefined,location:n});t.then((()=>e.history.go(A)))},reset(){let e=new Map(F.blockers);e.set(o,y);updateState({blockers:e})}});return}return startNavigation(r,n)}));if(n){restoreAppliedTransitions(t,U);let _saveAppliedTransitions=()=>persistAppliedTransitions(t,U);t.addEventListener("pagehide",_saveAppliedTransitions);L=()=>t.removeEventListener("pagehide",_saveAppliedTransitions)}if(!F.initialized){startNavigation(r.Pop,F.location,{initialHydration:true})}return k}function dispose(){if(g){g()}if(L){L()}f.clear();N&&N.abort();F.fetchers.forEach(((e,t)=>deleteFetcher(t)));F.blockers.forEach(((e,t)=>deleteBlocker(t)))}function subscribe(e){f.add(e);return()=>f.delete(e)}function updateState(e,t){if(t===void 0){t={}}F=_extends({},F,e);let r=[];let n=[];if(h.v7_fetcherPersist){F.fetchers.forEach(((e,t)=>{if(e.state==="idle"){if(j.has(t)){n.push(t)}else{r.push(t)}}}))}j.forEach((e=>{if(!F.fetchers.has(e)&&!G.has(e)){n.push(e)}}));[...f].forEach((e=>e(F,{deletedFetchers:n,viewTransitionOpts:t.viewTransitionOpts,flushSync:t.flushSync===true})));if(h.v7_fetcherPersist){r.forEach((e=>F.fetchers.delete(e)));n.forEach((e=>deleteFetcher(e)))}else{n.forEach((e=>j.delete(e)))}}function completeNavigation(t,n,A){var o,i;let{flushSync:s}=A===void 0?{}:A;let c=F.actionData!=null&&F.navigation.formMethod!=null&&isMutationMethod(F.navigation.formMethod)&&F.navigation.state==="loading"&&((o=t.state)==null?void 0:o._isRedirect)!==true;let u;if(n.actionData){if(Object.keys(n.actionData).length>0){u=n.actionData}else{u=null}}else if(c){u=F.actionData}else{u=null}let d=n.loaderData?mergeLoaderData(F.loaderData,n.loaderData,n.matches||[],n.errors):F.loaderData;let h=F.blockers;if(h.size>0){h=new Map(h);h.forEach(((e,t)=>h.set(t,y)))}let g=M===true||F.navigation.formMethod!=null&&isMutationMethod(F.navigation.formMethod)&&((i=t.state)==null?void 0:i._isRedirect)!==true;if(l){a=l;l=undefined}if(x);else if(v===r.Pop);else if(v===r.Push){e.history.push(t,t.state)}else if(v===r.Replace){e.history.replace(t,t.state)}let f;if(v===r.Pop){let e=U.get(F.location.pathname);if(e&&e.has(t.pathname)){f={currentLocation:F.location,nextLocation:t}}else if(U.has(t.pathname)){f={currentLocation:t,nextLocation:F.location}}}else if(T){let e=U.get(F.location.pathname);if(e){e.add(t.pathname)}else{e=new Set([t.pathname]);U.set(F.location.pathname,e)}f={currentLocation:F.location,nextLocation:t}}updateState(_extends({},n,{actionData:u,loaderData:d,historyAction:v,location:t,initialized:true,navigation:p,revalidation:"idle",restoreScrollPosition:getSavedScrollPosition(t,n.matches||F.matches),preventScrollReset:g,blockers:h}),{viewTransitionOpts:f,flushSync:s===true});v=r.Pop;M=false;T=false;x=false;H=false;Y=[]}async function navigate(t,n){if(typeof t==="number"){e.history.go(t);return}let A=normalizeTo(F.location,F.matches,c,h.v7_prependBasename,t,h.v7_relativeSplatPath,n==null?void 0:n.fromRouteId,n==null?void 0:n.relative);let{path:o,submission:i,error:s}=normalizeNavigateOptions(h.v7_normalizeFormMethod,false,A,n);let a=F.location;let l=createLocation(F.location,o,n&&n.state);l=_extends({},l,e.history.encodeLocation(l));let u=n&&n.replace!=null?n.replace:undefined;let d=r.Push;if(u===true){d=r.Replace}else if(u===false);else if(i!=null&&isMutationMethod(i.formMethod)&&i.formAction===F.location.pathname+F.location.search){d=r.Replace}let g=n&&"preventScrollReset"in n?n.preventScrollReset===true:undefined;let f=(n&&n.flushSync)===true;let E=shouldBlockNavigation({currentLocation:a,nextLocation:l,historyAction:d});if(E){updateBlocker(E,{state:"blocked",location:l,proceed(){updateBlocker(E,{state:"proceeding",proceed:undefined,reset:undefined,location:l});navigate(t,n)},reset(){let e=new Map(F.blockers);e.set(E,y);updateState({blockers:e})}});return}return await startNavigation(d,l,{submission:i,pendingError:s,preventScrollReset:g,replace:n&&n.replace,enableViewTransition:n&&n.viewTransition,flushSync:f})}function revalidate(){interruptActiveLoads();updateState({revalidation:"loading"});if(F.navigation.state==="submitting"){return}if(F.navigation.state==="idle"){startNavigation(F.historyAction,F.location,{startUninterruptedRevalidation:true});return}startNavigation(v||F.historyAction,F.navigation.location,{overrideNavigation:F.navigation,enableViewTransition:T===true})}async function startNavigation(t,r,n){N&&N.abort();N=null;v=t;x=(n&&n.startUninterruptedRevalidation)===true;saveScrollPosition(F.location,F.matches);M=(n&&n.preventScrollReset)===true;T=(n&&n.enableViewTransition)===true;let o=l||a;let i=n&&n.overrideNavigation;let s=n!=null&&n.initialHydration&&F.matches&&F.matches.length>0&&!R?F.matches:matchRoutes(o,r,c);let u=(n&&n.flushSync)===true;if(s&&F.initialized&&!H&&isHashChangeOnly(F.location,r)&&!(n&&n.submission&&isMutationMethod(n.submission.formMethod))){completeNavigation(r,{matches:s},{flushSync:u});return}let d=checkFogOfWar(s,o,r.pathname);if(d.active&&d.matches){s=d.matches}if(!s){let{error:e,notFoundMatches:t,route:n}=handleNavigational404(r.pathname);completeNavigation(r,{matches:t,loaderData:{},errors:{[n.id]:e}},{flushSync:u});return}N=new AbortController;let h=createClientSideRequest(e.history,r,N.signal,n&&n.submission);let g;if(n&&n.pendingError){g=[findNearestBoundary(s).route.id,{type:A.error,error:n.pendingError}]}else if(n&&n.submission&&isMutationMethod(n.submission.formMethod)){let t=await handleAction(h,r,n.submission,s,d.active,{replace:n.replace,flushSync:u});if(t.shortCircuited){return}if(t.pendingActionResult){let[e,n]=t.pendingActionResult;if(isErrorResult(n)&&isRouteErrorResponse(n.error)&&n.error.status===404){N=null;completeNavigation(r,{matches:t.matches,loaderData:{},errors:{[e]:n.error}});return}}s=t.matches||s;g=t.pendingActionResult;i=getLoadingNavigation(r,n.submission);u=false;d.active=false;h=createClientSideRequest(e.history,h.url,h.signal)}let{shortCircuited:f,matches:E,loaderData:C,errors:Q}=await handleLoaders(h,r,s,d.active,i,n&&n.submission,n&&n.fetcherSubmission,n&&n.replace,n&&n.initialHydration===true,u,g);if(f){return}N=null;completeNavigation(r,_extends({matches:E||s},getActionDataForCommit(g),{loaderData:C,errors:Q}))}async function handleAction(e,t,n,o,i,s){if(s===void 0){s={}}interruptActiveLoads();let a=getSubmittingNavigation(t,n);updateState({navigation:a},{flushSync:s.flushSync===true});if(i){let r=await discoverRoutes(o,t.pathname,e.signal);if(r.type==="aborted"){return{shortCircuited:true}}else if(r.type==="error"){let e=findNearestBoundary(r.partialMatches).route.id;return{matches:r.partialMatches,pendingActionResult:[e,{type:A.error,error:r.error}]}}else if(!r.matches){let{notFoundMatches:e,error:r,route:n}=handleNavigational404(t.pathname);return{matches:e,pendingActionResult:[n.id,{type:A.error,error:r}]}}else{o=r.matches}}let l;let u=getTargetMatch(o,t);if(!u.route.action&&!u.route.lazy){l={type:A.error,error:getInternalRouterError(405,{method:e.method,pathname:t.pathname,routeId:u.route.id})}}else{let t=await callDataStrategy("action",F,e,[u],o,null);l=t[u.route.id];if(e.signal.aborted){return{shortCircuited:true}}}if(isRedirectResult(l)){let t;if(s&&s.replace!=null){t=s.replace}else{let r=normalizeRedirectLocation(l.response.headers.get("Location"),new URL(e.url),c);t=r===F.location.pathname+F.location.search}await startRedirectNavigation(e,l,true,{submission:n,replace:t});return{shortCircuited:true}}if(isDeferredResult(l)){throw getInternalRouterError(400,{type:"defer-action"})}if(isErrorResult(l)){let e=findNearestBoundary(o,u.route.id);if((s&&s.replace)!==true){v=r.Push}return{matches:o,pendingActionResult:[e.route.id,l]}}return{matches:o,pendingActionResult:[u.route.id,l]}}async function handleLoaders(t,r,n,A,o,i,s,u,d,g,f){let E=o||getLoadingNavigation(r,i);let C=i||s||getSubmissionFromNavigation(E);let Q=!x&&(!h.v7_partialHydration||!d);if(A){if(Q){let e=getUpdatedActionData(f);updateState(_extends({navigation:E},e!==undefined?{actionData:e}:{}),{flushSync:g})}let e=await discoverRoutes(n,r.pathname,t.signal);if(e.type==="aborted"){return{shortCircuited:true}}else if(e.type==="error"){let t=findNearestBoundary(e.partialMatches).route.id;return{matches:e.partialMatches,loaderData:{},errors:{[t]:e.error}}}else if(!e.matches){let{error:e,notFoundMatches:t,route:n}=handleNavigational404(r.pathname);return{matches:t,loaderData:{},errors:{[n.id]:e}}}else{n=e.matches}}let B=l||a;let[I,p]=getMatchesToLoad(e.history,F,n,C,r,h.v7_partialHydration&&d===true,h.v7_skipActionErrorRevalidation,H,Y,P,j,V,O,B,c,f);cancelActiveDeferreds((e=>!(n&&n.some((t=>t.route.id===e)))||I&&I.some((t=>t.route.id===e))));_=++W;if(I.length===0&&p.length===0){let e=markFetchRedirectsDone();completeNavigation(r,_extends({matches:n,loaderData:{},errors:f&&isErrorResult(f[1])?{[f[0]]:f[1].error}:null},getActionDataForCommit(f),e?{fetchers:new Map(F.fetchers)}:{}),{flushSync:g});return{shortCircuited:true}}if(Q){let e={};if(!A){e.navigation=E;let t=getUpdatedActionData(f);if(t!==undefined){e.actionData=t}}if(p.length>0){e.fetchers=getUpdatedRevalidatingFetchers(p)}updateState(e,{flushSync:g})}p.forEach((e=>{abortFetcher(e.key);if(e.controller){G.set(e.key,e.controller)}}));let abortPendingFetchRevalidations=()=>p.forEach((e=>abortFetcher(e.key)));if(N){N.signal.addEventListener("abort",abortPendingFetchRevalidations)}let{loaderResults:m,fetcherResults:y}=await callLoadersAndMaybeResolveData(F,n,I,p,t);if(t.signal.aborted){return{shortCircuited:true}}if(N){N.signal.removeEventListener("abort",abortPendingFetchRevalidations)}p.forEach((e=>G.delete(e.key)));let b=findRedirect(m);if(b){await startRedirectNavigation(t,b.result,true,{replace:u});return{shortCircuited:true}}b=findRedirect(y);if(b){O.add(b.key);await startRedirectNavigation(t,b.result,true,{replace:u});return{shortCircuited:true}}let{loaderData:w,errors:R}=processLoaderData(F,n,m,f,p,y,z);z.forEach(((e,t)=>{e.subscribe((r=>{if(r||e.done){z.delete(t)}}))}));if(h.v7_partialHydration&&d&&F.errors){R=_extends({},F.errors,R)}let S=markFetchRedirectsDone();let D=abortStaleFetchLoads(_);let k=S||D||p.length>0;return _extends({matches:n,loaderData:w,errors:R},k?{fetchers:new Map(F.fetchers)}:{})}function getUpdatedActionData(e){if(e&&!isErrorResult(e[1])){return{[e[0]]:e[1].data}}else if(F.actionData){if(Object.keys(F.actionData).length===0){return null}else{return F.actionData}}}function getUpdatedRevalidatingFetchers(e){e.forEach((e=>{let t=F.fetchers.get(e.key);let r=getLoadingFetcher(undefined,t?t.data:undefined);F.fetchers.set(e.key,r)}));return new Map(F.fetchers)}function fetch(e,t,r,n){if(o){throw new Error("router.fetch() was called during the server render, but it shouldn't be. "+"You are likely calling a useFetcher() method in the body of your component. "+"Try moving it to a useEffect or a callback.")}abortFetcher(e);let A=(n&&n.flushSync)===true;let i=l||a;let s=normalizeTo(F.location,F.matches,c,h.v7_prependBasename,r,h.v7_relativeSplatPath,t,n==null?void 0:n.relative);let u=matchRoutes(i,s,c);let d=checkFogOfWar(u,i,s);if(d.active&&d.matches){u=d.matches}if(!u){setFetcherError(e,t,getInternalRouterError(404,{pathname:s}),{flushSync:A});return}let{path:g,submission:f,error:E}=normalizeNavigateOptions(h.v7_normalizeFormMethod,true,s,n);if(E){setFetcherError(e,t,E,{flushSync:A});return}let C=getTargetMatch(u,g);let Q=(n&&n.preventScrollReset)===true;if(f&&isMutationMethod(f.formMethod)){handleFetcherAction(e,t,g,C,u,d.active,A,Q,f);return}V.set(e,{routeId:t,path:g});handleFetcherLoader(e,t,g,C,u,d.active,A,Q,f)}async function handleFetcherAction(t,r,n,A,o,i,s,u,d){interruptActiveLoads();V.delete(t);function detectAndHandle405Error(e){if(!e.route.action&&!e.route.lazy){let e=getInternalRouterError(405,{method:d.formMethod,pathname:n,routeId:r});setFetcherError(t,r,e,{flushSync:s});return true}return false}if(!i&&detectAndHandle405Error(A)){return}let g=F.fetchers.get(t);updateFetcherState(t,getSubmittingFetcher(d,g),{flushSync:s});let f=new AbortController;let E=createClientSideRequest(e.history,n,f.signal,d);if(i){let e=await discoverRoutes(o,new URL(E.url).pathname,E.signal,t);if(e.type==="aborted"){return}else if(e.type==="error"){setFetcherError(t,r,e.error,{flushSync:s});return}else if(!e.matches){setFetcherError(t,r,getInternalRouterError(404,{pathname:n}),{flushSync:s});return}else{o=e.matches;A=getTargetMatch(o,n);if(detectAndHandle405Error(A)){return}}}G.set(t,f);let C=W;let Q=await callDataStrategy("action",F,E,[A],o,t);let B=Q[A.route.id];if(E.signal.aborted){if(G.get(t)===f){G.delete(t)}return}if(h.v7_fetcherPersist&&j.has(t)){if(isRedirectResult(B)||isErrorResult(B)){updateFetcherState(t,getDoneFetcher(undefined));return}}else{if(isRedirectResult(B)){G.delete(t);if(_>C){updateFetcherState(t,getDoneFetcher(undefined));return}else{O.add(t);updateFetcherState(t,getLoadingFetcher(d));return startRedirectNavigation(E,B,false,{fetcherSubmission:d,preventScrollReset:u})}}if(isErrorResult(B)){setFetcherError(t,r,B.error);return}}if(isDeferredResult(B)){throw getInternalRouterError(400,{type:"defer-action"})}let I=F.navigation.location||F.location;let p=createClientSideRequest(e.history,I,f.signal);let m=l||a;let y=F.navigation.state!=="idle"?matchRoutes(m,F.navigation.location,c):F.matches;invariant(y,"Didn't find any matches after fetcher action");let b=++W;J.set(t,b);let w=getLoadingFetcher(d,B.data);F.fetchers.set(t,w);let[R,S]=getMatchesToLoad(e.history,F,y,d,I,false,h.v7_skipActionErrorRevalidation,H,Y,P,j,V,O,m,c,[A.route.id,B]);S.filter((e=>e.key!==t)).forEach((e=>{let t=e.key;let r=F.fetchers.get(t);let n=getLoadingFetcher(undefined,r?r.data:undefined);F.fetchers.set(t,n);abortFetcher(t);if(e.controller){G.set(t,e.controller)}}));updateState({fetchers:new Map(F.fetchers)});let abortPendingFetchRevalidations=()=>S.forEach((e=>abortFetcher(e.key)));f.signal.addEventListener("abort",abortPendingFetchRevalidations);let{loaderResults:D,fetcherResults:k}=await callLoadersAndMaybeResolveData(F,y,R,S,p);if(f.signal.aborted){return}f.signal.removeEventListener("abort",abortPendingFetchRevalidations);J.delete(t);G.delete(t);S.forEach((e=>G.delete(e.key)));let M=findRedirect(D);if(M){return startRedirectNavigation(p,M.result,false,{preventScrollReset:u})}M=findRedirect(k);if(M){O.add(M.key);return startRedirectNavigation(p,M.result,false,{preventScrollReset:u})}let{loaderData:T,errors:U}=processLoaderData(F,y,D,undefined,S,k,z);if(F.fetchers.has(t)){let e=getDoneFetcher(B.data);F.fetchers.set(t,e)}abortStaleFetchLoads(b);if(F.navigation.state==="loading"&&b>_){invariant(v,"Expected pending action");N&&N.abort();completeNavigation(F.navigation.location,{matches:y,loaderData:T,errors:U,fetchers:new Map(F.fetchers)})}else{updateState({errors:U,loaderData:mergeLoaderData(F.loaderData,T,y,U),fetchers:new Map(F.fetchers)});H=false}}async function handleFetcherLoader(t,r,n,A,o,i,s,a,l){let c=F.fetchers.get(t);updateFetcherState(t,getLoadingFetcher(l,c?c.data:undefined),{flushSync:s});let u=new AbortController;let d=createClientSideRequest(e.history,n,u.signal);if(i){let e=await discoverRoutes(o,new URL(d.url).pathname,d.signal,t);if(e.type==="aborted"){return}else if(e.type==="error"){setFetcherError(t,r,e.error,{flushSync:s});return}else if(!e.matches){setFetcherError(t,r,getInternalRouterError(404,{pathname:n}),{flushSync:s});return}else{o=e.matches;A=getTargetMatch(o,n)}}G.set(t,u);let h=W;let g=await callDataStrategy("loader",F,d,[A],o,t);let f=g[A.route.id];if(isDeferredResult(f)){f=await resolveDeferredData(f,d.signal,true)||f}if(G.get(t)===u){G.delete(t)}if(d.signal.aborted){return}if(j.has(t)){updateFetcherState(t,getDoneFetcher(undefined));return}if(isRedirectResult(f)){if(_>h){updateFetcherState(t,getDoneFetcher(undefined));return}else{O.add(t);await startRedirectNavigation(d,f,false,{preventScrollReset:a});return}}if(isErrorResult(f)){setFetcherError(t,r,f.error);return}invariant(!isDeferredResult(f),"Unhandled fetcher deferred data");updateFetcherState(t,getDoneFetcher(f.data))}async function startRedirectNavigation(A,o,i,s){let{submission:a,fetcherSubmission:l,preventScrollReset:u,replace:d}=s===void 0?{}:s;if(o.response.headers.has("X-Remix-Revalidate")){H=true}let h=o.response.headers.get("Location");invariant(h,"Expected a Location header on the redirect Response");h=normalizeRedirectLocation(h,new URL(A.url),c);let g=createLocation(F.location,h,{_isRedirect:true});if(n){let r=false;if(o.response.headers.has("X-Remix-Reload-Document")){r=true}else if(b.test(h)){const n=e.history.createURL(h);r=n.origin!==t.location.origin||stripBasename(n.pathname,c)==null}if(r){if(d){t.location.replace(h)}else{t.location.assign(h)}return}}N=null;let f=d===true||o.response.headers.has("X-Remix-Replace")?r.Replace:r.Push;let{formMethod:E,formAction:C,formEncType:Q}=F.navigation;if(!a&&!l&&E&&C&&Q){a=getSubmissionFromNavigation(F.navigation)}let B=a||l;if(I.has(o.response.status)&&B&&isMutationMethod(B.formMethod)){await startNavigation(f,g,{submission:_extends({},B,{formAction:h}),preventScrollReset:u||M,enableViewTransition:i?T:undefined})}else{let e=getLoadingNavigation(g,a);await startNavigation(f,g,{overrideNavigation:e,fetcherSubmission:l,preventScrollReset:u||M,enableViewTransition:i?T:undefined})}}async function callDataStrategy(e,t,r,n,o,a){let l;let d={};try{l=await callDataStrategyImpl(u,e,t,r,n,o,a,s,i)}catch(e){n.forEach((t=>{d[t.route.id]={type:A.error,error:e}}));return d}for(let[e,t]of Object.entries(l)){if(isRedirectDataStrategyResultResult(t)){let n=t.result;d[e]={type:A.redirect,response:normalizeRelativeRoutingRedirectResponse(n,r,e,o,c,h.v7_relativeSplatPath)}}else{d[e]=await convertDataStrategyResultToDataResult(t)}}return d}async function callLoadersAndMaybeResolveData(t,r,n,o,i){let s=t.matches;let a=callDataStrategy("loader",t,i,n,r,null);let l=Promise.all(o.map((async r=>{if(r.matches&&r.match&&r.controller){let n=await callDataStrategy("loader",t,createClientSideRequest(e.history,r.path,r.controller.signal),[r.match],r.matches,r.key);let A=n[r.match.route.id];return{[r.key]:A}}else{return Promise.resolve({[r.key]:{type:A.error,error:getInternalRouterError(404,{pathname:r.path})}})}})));let c=await a;let u=(await l).reduce(((e,t)=>Object.assign(e,t)),{});await Promise.all([resolveNavigationDeferredResults(r,c,i.signal,s,t.loaderData),resolveFetcherDeferredResults(r,u,o)]);return{loaderResults:c,fetcherResults:u}}function interruptActiveLoads(){H=true;Y.push(...cancelActiveDeferreds());V.forEach(((e,t)=>{if(G.has(t)){P.add(t)}abortFetcher(t)}))}function updateFetcherState(e,t,r){if(r===void 0){r={}}F.fetchers.set(e,t);updateState({fetchers:new Map(F.fetchers)},{flushSync:(r&&r.flushSync)===true})}function setFetcherError(e,t,r,n){if(n===void 0){n={}}let A=findNearestBoundary(F.matches,t);deleteFetcher(e);updateState({errors:{[A.route.id]:r},fetchers:new Map(F.fetchers)},{flushSync:(n&&n.flushSync)===true})}function getFetcher(e){q.set(e,(q.get(e)||0)+1);if(j.has(e)){j.delete(e)}return F.fetchers.get(e)||m}function deleteFetcher(e){let t=F.fetchers.get(e);if(G.has(e)&&!(t&&t.state==="loading"&&J.has(e))){abortFetcher(e)}V.delete(e);J.delete(e);O.delete(e);if(h.v7_fetcherPersist){j.delete(e)}P.delete(e);F.fetchers.delete(e)}function deleteFetcherAndUpdateState(e){let t=(q.get(e)||0)-1;if(t<=0){q.delete(e);j.add(e);if(!h.v7_fetcherPersist){deleteFetcher(e)}}else{q.set(e,t)}updateState({fetchers:new Map(F.fetchers)})}function abortFetcher(e){let t=G.get(e);if(t){t.abort();G.delete(e)}}function markFetchersDone(e){for(let t of e){let e=getFetcher(t);let r=getDoneFetcher(e.data);F.fetchers.set(t,r)}}function markFetchRedirectsDone(){let e=[];let t=false;for(let r of O){let n=F.fetchers.get(r);invariant(n,"Expected fetcher: "+r);if(n.state==="loading"){O.delete(r);e.push(r);t=true}}markFetchersDone(e);return t}function abortStaleFetchLoads(e){let t=[];for(let[r,n]of J){if(n<e){let e=F.fetchers.get(r);invariant(e,"Expected fetcher: "+r);if(e.state==="loading"){abortFetcher(r);J.delete(r);t.push(r)}}}markFetchersDone(t);return t.length>0}function getBlocker(e,t){let r=F.blockers.get(e)||y;if(Z.get(e)!==t){Z.set(e,t)}return r}function deleteBlocker(e){F.blockers.delete(e);Z.delete(e)}function updateBlocker(e,t){let r=F.blockers.get(e)||y;invariant(r.state==="unblocked"&&t.state==="blocked"||r.state==="blocked"&&t.state==="blocked"||r.state==="blocked"&&t.state==="proceeding"||r.state==="blocked"&&t.state==="unblocked"||r.state==="proceeding"&&t.state==="unblocked","Invalid blocker state transition: "+r.state+" -> "+t.state);let n=new Map(F.blockers);n.set(e,t);updateState({blockers:n})}function shouldBlockNavigation(e){let{currentLocation:t,nextLocation:r,historyAction:n}=e;if(Z.size===0){return}if(Z.size>1){warning(false,"A router only supports one blocker at a time")}let A=Array.from(Z.entries());let[o,i]=A[A.length-1];let s=F.blockers.get(o);if(s&&s.state==="proceeding"){return}if(i({currentLocation:t,nextLocation:r,historyAction:n})){return o}}function handleNavigational404(e){let t=getInternalRouterError(404,{pathname:e});let r=l||a;let{matches:n,route:A}=getShortCircuitMatches(r);cancelActiveDeferreds();return{notFoundMatches:n,route:A,error:t}}function cancelActiveDeferreds(e){let t=[];z.forEach(((r,n)=>{if(!e||e(n)){r.cancel();t.push(n);z.delete(n)}}));return t}function enableScrollRestoration(e,t,r){E=e;Q=t;C=r||null;if(!B&&F.navigation===p){B=true;let e=getSavedScrollPosition(F.location,F.matches);if(e!=null){updateState({restoreScrollPosition:e})}}return()=>{E=null;Q=null;C=null}}function getScrollKey(e,t){if(C){let r=C(e,t.map((e=>convertRouteMatchToUiMatch(e,F.loaderData))));return r||e.key}return e.key}function saveScrollPosition(e,t){if(E&&Q){let r=getScrollKey(e,t);E[r]=Q()}}function getSavedScrollPosition(e,t){if(E){let r=getScrollKey(e,t);let n=E[r];if(typeof n==="number"){return n}}return null}function checkFogOfWar(e,t,r){if(d){if(!e){let e=matchRoutesImpl(t,r,c,true);return{active:true,matches:e||[]}}else{if(Object.keys(e[0].params).length>0){let e=matchRoutesImpl(t,r,c,true);return{active:true,matches:e}}}}return{active:false,matches:null}}async function discoverRoutes(e,t,r,n){if(!d){return{type:"success",matches:e}}let A=e;while(true){let e=l==null;let o=l||a;let u=s;try{await d({signal:r,path:t,matches:A,fetcherKey:n,patch:(e,t)=>{if(r.aborted)return;patchRoutesImpl(e,t,o,u,i)}})}catch(e){return{type:"error",error:e,partialMatches:A}}finally{if(e&&!r.aborted){a=[...a]}}if(r.aborted){return{type:"aborted"}}let h=matchRoutes(o,t,c);if(h){return{type:"success",matches:h}}let g=matchRoutesImpl(o,t,c,true);if(!g||A.length===g.length&&A.every(((e,t)=>e.route.id===g[t].route.id))){return{type:"success",matches:null}}A=g}}function _internalSetRoutes(e){s={};l=convertRoutesToDataRoutes(e,i,undefined,s)}function patchRoutes(e,t){let r=l==null;let n=l||a;patchRoutesImpl(e,t,n,s,i);if(r){a=[...a];updateState({})}}k={get basename(){return c},get future(){return h},get state(){return F},get routes(){return a},get window(){return t},initialize:initialize,subscribe:subscribe,enableScrollRestoration:enableScrollRestoration,navigate:navigate,fetch:fetch,revalidate:revalidate,createHref:t=>e.history.createHref(t),encodeLocation:t=>e.history.encodeLocation(t),getFetcher:getFetcher,deleteFetcher:deleteFetcherAndUpdateState,dispose:dispose,getBlocker:getBlocker,deleteBlocker:deleteBlocker,patchRoutes:patchRoutes,_internalFetchControllers:G,_internalActiveDeferreds:z,_internalSetRoutes:_internalSetRoutes};return k}const R=Symbol("deferred");function createStaticHandler(e,t){invariant(e.length>0,"You must provide a non-empty routes array to createStaticHandler");let r={};let n=(t?t.basename:null)||"/";let o;if(t!=null&&t.mapRouteProperties){o=t.mapRouteProperties}else if(t!=null&&t.detectErrorBoundary){let e=t.detectErrorBoundary;o=t=>({hasErrorBoundary:e(t)})}else{o=defaultMapRouteProperties}let i=_extends({v7_relativeSplatPath:false,v7_throwAbortReason:false},t?t.future:null);let s=convertRoutesToDataRoutes(e,o,undefined,r);async function query(e,t){let{requestContext:r,skipLoaderErrorBubbling:A,dataStrategy:o}=t===void 0?{}:t;let i=new URL(e.url);let a=e.method;let l=createLocation("",createPath(i),null,"default");let c=matchRoutes(s,l,n);if(!isValidMethod(a)&&a!=="HEAD"){let e=getInternalRouterError(405,{method:a});let{matches:t,route:r}=getShortCircuitMatches(s);return{basename:n,location:l,matches:t,loaderData:{},actionData:null,errors:{[r.id]:e},statusCode:e.status,loaderHeaders:{},actionHeaders:{},activeDeferreds:null}}else if(!c){let e=getInternalRouterError(404,{pathname:l.pathname});let{matches:t,route:r}=getShortCircuitMatches(s);return{basename:n,location:l,matches:t,loaderData:{},actionData:null,errors:{[r.id]:e},statusCode:e.status,loaderHeaders:{},actionHeaders:{},activeDeferreds:null}}let u=await queryImpl(e,l,c,r,o||null,A===true,null);if(isResponse(u)){return u}return _extends({location:l,basename:n},u)}async function queryRoute(e,t){let{routeId:r,requestContext:A,dataStrategy:o}=t===void 0?{}:t;let i=new URL(e.url);let a=e.method;let l=createLocation("",createPath(i),null,"default");let c=matchRoutes(s,l,n);if(!isValidMethod(a)&&a!=="HEAD"&&a!=="OPTIONS"){throw getInternalRouterError(405,{method:a})}else if(!c){throw getInternalRouterError(404,{pathname:l.pathname})}let u=r?c.find((e=>e.route.id===r)):getTargetMatch(c,l);if(r&&!u){throw getInternalRouterError(403,{pathname:l.pathname,routeId:r})}else if(!u){throw getInternalRouterError(404,{pathname:l.pathname})}let d=await queryImpl(e,l,c,A,o||null,false,u);if(isResponse(d)){return d}let h=d.errors?Object.values(d.errors)[0]:undefined;if(h!==undefined){throw h}if(d.actionData){return Object.values(d.actionData)[0]}if(d.loaderData){var g;let e=Object.values(d.loaderData)[0];if((g=d.activeDeferreds)!=null&&g[u.route.id]){e[R]=d.activeDeferreds[u.route.id]}return e}return undefined}async function queryImpl(e,t,r,n,o,i,s){invariant(e.signal,"query()/queryRoute() requests must contain an AbortController signal");try{if(isMutationMethod(e.method.toLowerCase())){let A=await submit(e,r,s||getTargetMatch(r,t),n,o,i,s!=null);return A}let A=await loadRouteData(e,r,n,o,i,s);return isResponse(A)?A:_extends({},A,{actionData:null,actionHeaders:{}})}catch(e){if(isDataStrategyResult(e)&&isResponse(e.result)){if(e.type===A.error){throw e.result}return e.result}if(isRedirectResponse(e)){return e}throw e}}async function submit(e,t,r,n,o,s,a){let l;if(!r.route.action&&!r.route.lazy){let t=getInternalRouterError(405,{method:e.method,pathname:new URL(e.url).pathname,routeId:r.route.id});if(a){throw t}l={type:A.error,error:t}}else{let A=await callDataStrategy("action",e,[r],t,a,n,o);l=A[r.route.id];if(e.signal.aborted){throwStaticHandlerAbortedError(e,a,i)}}if(isRedirectResult(l)){throw new Response(null,{status:l.response.status,headers:{Location:l.response.headers.get("Location")}})}if(isDeferredResult(l)){let e=getInternalRouterError(400,{type:"defer-action"});if(a){throw e}l={type:A.error,error:e}}if(a){if(isErrorResult(l)){throw l.error}return{matches:[r],loaderData:{},actionData:{[r.route.id]:l.data},errors:null,statusCode:200,loaderHeaders:{},actionHeaders:{},activeDeferreds:null}}let c=new Request(e.url,{headers:e.headers,redirect:e.redirect,signal:e.signal});if(isErrorResult(l)){let e=s?r:findNearestBoundary(t,r.route.id);let A=await loadRouteData(c,t,n,o,s,null,[e.route.id,l]);return _extends({},A,{statusCode:isRouteErrorResponse(l.error)?l.error.status:l.statusCode!=null?l.statusCode:500,actionData:null,actionHeaders:_extends({},l.headers?{[r.route.id]:l.headers}:{})})}let u=await loadRouteData(c,t,n,o,s,null);return _extends({},u,{actionData:{[r.route.id]:l.data}},l.statusCode?{statusCode:l.statusCode}:{},{actionHeaders:l.headers?{[r.route.id]:l.headers}:{}})}async function loadRouteData(e,t,r,n,A,o,s){let a=o!=null;if(a&&!(o!=null&&o.route.loader)&&!(o!=null&&o.route.lazy)){throw getInternalRouterError(400,{method:e.method,pathname:new URL(e.url).pathname,routeId:o==null?void 0:o.route.id})}let l=o?[o]:s&&isErrorResult(s[1])?getLoaderMatchesUntilBoundary(t,s[0]):t;let c=l.filter((e=>e.route.loader||e.route.lazy));if(c.length===0){return{matches:t,loaderData:t.reduce(((e,t)=>Object.assign(e,{[t.route.id]:null})),{}),errors:s&&isErrorResult(s[1])?{[s[0]]:s[1].error}:null,statusCode:200,loaderHeaders:{},activeDeferreds:null}}let u=await callDataStrategy("loader",e,c,t,a,r,n);if(e.signal.aborted){throwStaticHandlerAbortedError(e,a,i)}let d=new Map;let h=processRouteLoaderData(t,u,s,d,A);let g=new Set(c.map((e=>e.route.id)));t.forEach((e=>{if(!g.has(e.route.id)){h.loaderData[e.route.id]=null}}));return _extends({},h,{matches:t,activeDeferreds:d.size>0?Object.fromEntries(d.entries()):null})}async function callDataStrategy(e,t,A,s,a,l,c){let u=await callDataStrategyImpl(c||defaultDataStrategy,e,null,t,A,s,null,r,o,l);let d={};await Promise.all(s.map((async e=>{if(!(e.route.id in u)){return}let r=u[e.route.id];if(isRedirectDataStrategyResultResult(r)){let A=r.result;throw normalizeRelativeRoutingRedirectResponse(A,t,e.route.id,s,n,i.v7_relativeSplatPath)}if(isResponse(r.result)&&a){throw r}d[e.route.id]=await convertDataStrategyResultToDataResult(r)})));return d}return{dataRoutes:s,query:query,queryRoute:queryRoute}}function getStaticContextFromError(e,t,r){let n=_extends({},t,{statusCode:isRouteErrorResponse(r)?r.status:500,errors:{[t._deepestRenderedBoundaryId||e[0].id]:r}});return n}function throwStaticHandlerAbortedError(e,t,r){if(r.v7_throwAbortReason&&e.signal.reason!==undefined){throw e.signal.reason}let n=t?"queryRoute":"query";throw new Error(n+"() call aborted: "+e.method+" "+e.url)}function isSubmissionNavigation(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==undefined)}function normalizeTo(e,t,r,n,A,o,i,s){let a;let l;if(i){a=[];for(let e of t){a.push(e);if(e.route.id===i){l=e;break}}}else{a=t;l=t[t.length-1]}let c=resolveTo(A?A:".",getResolveToMatches(a,o),stripBasename(e.pathname,r)||e.pathname,s==="path");if(A==null){c.search=e.search;c.hash=e.hash}if((A==null||A===""||A===".")&&l){let e=hasNakedIndexQuery(c.search);if(l.route.index&&!e){c.search=c.search?c.search.replace(/^\?/,"?index&"):"?index"}else if(!l.route.index&&e){let e=new URLSearchParams(c.search);let t=e.getAll("index");e.delete("index");t.filter((e=>e)).forEach((t=>e.append("index",t)));let r=e.toString();c.search=r?"?"+r:""}}if(n&&r!=="/"){c.pathname=c.pathname==="/"?r:joinPaths([r,c.pathname])}return createPath(c)}function normalizeNavigateOptions(e,t,r,n){if(!n||!isSubmissionNavigation(n)){return{path:r}}if(n.formMethod&&!isValidMethod(n.formMethod)){return{path:r,error:getInternalRouterError(405,{method:n.formMethod})}}let getInvalidBodyError=()=>({path:r,error:getInternalRouterError(400,{type:"invalid-body"})});let A=n.formMethod||"get";let o=e?A.toUpperCase():A.toLowerCase();let i=stripHashFromPath(r);if(n.body!==undefined){if(n.formEncType==="text/plain"){if(!isMutationMethod(o)){return getInvalidBodyError()}let e=typeof n.body==="string"?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce(((e,t)=>{let[r,n]=t;return""+e+r+"="+n+"\n"}),""):String(n.body);return{path:r,submission:{formMethod:o,formAction:i,formEncType:n.formEncType,formData:undefined,json:undefined,text:e}}}else if(n.formEncType==="application/json"){if(!isMutationMethod(o)){return getInvalidBodyError()}try{let e=typeof n.body==="string"?JSON.parse(n.body):n.body;return{path:r,submission:{formMethod:o,formAction:i,formEncType:n.formEncType,formData:undefined,json:e,text:undefined}}}catch(e){return getInvalidBodyError()}}}invariant(typeof FormData==="function","FormData is not available in this environment");let s;let a;if(n.formData){s=convertFormDataToSearchParams(n.formData);a=n.formData}else if(n.body instanceof FormData){s=convertFormDataToSearchParams(n.body);a=n.body}else if(n.body instanceof URLSearchParams){s=n.body;a=convertSearchParamsToFormData(s)}else if(n.body==null){s=new URLSearchParams;a=new FormData}else{try{s=new URLSearchParams(n.body);a=convertSearchParamsToFormData(s)}catch(e){return getInvalidBodyError()}}let l={formMethod:o,formAction:i,formEncType:n&&n.formEncType||"application/x-www-form-urlencoded",formData:a,json:undefined,text:undefined};if(isMutationMethod(l.formMethod)){return{path:r,submission:l}}let c=parsePath(r);if(t&&c.search&&hasNakedIndexQuery(c.search)){s.append("index","")}c.search="?"+s;return{path:createPath(c),submission:l}}function getLoaderMatchesUntilBoundary(e,t,r){if(r===void 0){r=false}let n=e.findIndex((e=>e.route.id===t));if(n>=0){return e.slice(0,r?n+1:n)}return e}function getMatchesToLoad(e,t,r,n,A,o,i,s,a,l,c,u,d,h,g,f){let E=f?isErrorResult(f[1])?f[1].error:f[1].data:undefined;let C=e.createURL(t.location);let Q=e.createURL(A);let B=r;if(o&&t.errors){B=getLoaderMatchesUntilBoundary(r,Object.keys(t.errors)[0],true)}else if(f&&isErrorResult(f[1])){B=getLoaderMatchesUntilBoundary(r,f[0])}let I=f?f[1].statusCode:undefined;let p=i&&I&&I>=400;let m=B.filter(((e,r)=>{let{route:A}=e;if(A.lazy){return true}if(A.loader==null){return false}if(o){return shouldLoadRouteOnHydration(A,t.loaderData,t.errors)}if(isNewLoader(t.loaderData,t.matches[r],e)||a.some((t=>t===e.route.id))){return true}let i=t.matches[r];let l=e;return shouldRevalidateLoader(e,_extends({currentUrl:C,currentParams:i.params,nextUrl:Q,nextParams:l.params},n,{actionResult:E,actionStatus:I,defaultShouldRevalidate:p?false:s||C.pathname+C.search===Q.pathname+Q.search||C.search!==Q.search||isNewRouteInstance(i,l)}))}));let y=[];u.forEach(((e,A)=>{if(o||!r.some((t=>t.route.id===e.routeId))||c.has(A)){return}let i=matchRoutes(h,e.path,g);if(!i){y.push({key:A,routeId:e.routeId,path:e.path,matches:null,match:null,controller:null});return}let a=t.fetchers.get(A);let u=getTargetMatch(i,e.path);let f=false;if(d.has(A)){f=false}else if(l.has(A)){l.delete(A);f=true}else if(a&&a.state!=="idle"&&a.data===undefined){f=s}else{f=shouldRevalidateLoader(u,_extends({currentUrl:C,currentParams:t.matches[t.matches.length-1].params,nextUrl:Q,nextParams:r[r.length-1].params},n,{actionResult:E,actionStatus:I,defaultShouldRevalidate:p?false:s}))}if(f){y.push({key:A,routeId:e.routeId,path:e.path,matches:i,match:u,controller:new AbortController})}}));return[m,y]}function shouldLoadRouteOnHydration(e,t,r){if(e.lazy){return true}if(!e.loader){return false}let n=t!=null&&t[e.id]!==undefined;let A=r!=null&&r[e.id]!==undefined;if(!n&&A){return false}if(typeof e.loader==="function"&&e.loader.hydrate===true){return true}return!n&&!A}function isNewLoader(e,t,r){let n=!t||r.route.id!==t.route.id;let A=e[r.route.id]===undefined;return n||A}function isNewRouteInstance(e,t){let r=e.route.path;return e.pathname!==t.pathname||r!=null&&r.endsWith("*")&&e.params["*"]!==t.params["*"]}function shouldRevalidateLoader(e,t){if(e.route.shouldRevalidate){let r=e.route.shouldRevalidate(t);if(typeof r==="boolean"){return r}}return t.defaultShouldRevalidate}function patchRoutesImpl(e,t,r,n,A){var o;let i;if(e){let t=n[e];invariant(t,"No route found to patch children into: routeId = "+e);if(!t.children){t.children=[]}i=t.children}else{i=r}let s=t.filter((e=>!i.some((t=>isSameRoute(e,t)))));let a=convertRoutesToDataRoutes(s,A,[e||"_","patch",String(((o=i)==null?void 0:o.length)||"0")],n);i.push(...a)}function isSameRoute(e,t){if("id"in e&&"id"in t&&e.id===t.id){return true}if(!(e.index===t.index&&e.path===t.path&&e.caseSensitive===t.caseSensitive)){return false}if((!e.children||e.children.length===0)&&(!t.children||t.children.length===0)){return true}return e.children.every(((e,r)=>{var n;return(n=t.children)==null?void 0:n.some((t=>isSameRoute(e,t)))}))}async function loadLazyRouteModule(e,t,r){if(!e.lazy){return}let n=await e.lazy();if(!e.lazy){return}let A=r[e.id];invariant(A,"No route found in manifest");let i={};for(let e in n){let t=A[e];let r=t!==undefined&&e!=="hasErrorBoundary";warning(!r,'Route "'+A.id+'" has a static property "'+e+'" '+"defined but its lazy function is also returning a value for this property. "+('The lazy route property "'+e+'" will be ignored.'));if(!r&&!o.has(e)){i[e]=n[e]}}Object.assign(A,i);Object.assign(A,_extends({},t(A),{lazy:undefined}))}async function defaultDataStrategy(e){let{matches:t}=e;let r=t.filter((e=>e.shouldLoad));let n=await Promise.all(r.map((e=>e.resolve())));return n.reduce(((e,t,n)=>Object.assign(e,{[r[n].route.id]:t})),{})}async function callDataStrategyImpl(e,t,r,n,o,i,s,a,l,c){let u=i.map((e=>e.route.lazy?loadLazyRouteModule(e.route,l,a):undefined));let d=i.map(((e,r)=>{let i=u[r];let s=o.some((t=>t.route.id===e.route.id));let resolve=async r=>{if(r&&n.method==="GET"&&(e.route.lazy||e.route.loader)){s=true}return s?callLoaderOrAction(t,n,e,i,r,c):Promise.resolve({type:A.data,result:undefined})};return _extends({},e,{shouldLoad:s,resolve:resolve})}));let h=await e({matches:d,request:n,params:i[0].params,fetcherKey:s,context:c});try{await Promise.all(u)}catch(e){}return h}async function callLoaderOrAction(e,t,r,n,o,i){let s;let a;let runHandler=n=>{let A;let s=new Promise(((e,t)=>A=t));a=()=>A();t.signal.addEventListener("abort",a);let actualHandler=A=>{if(typeof n!=="function"){return Promise.reject(new Error("You cannot call the handler for a route which defines a boolean "+('"'+e+'" [routeId: '+r.route.id+"]")))}return n({request:t,params:r.params,context:i},...A!==undefined?[A]:[])};let l=(async()=>{try{let e=await(o?o((e=>actualHandler(e))):actualHandler());return{type:"data",result:e}}catch(e){return{type:"error",result:e}}})();return Promise.race([l,s])};try{let o=r.route[e];if(n){if(o){let e;let[t]=await Promise.all([runHandler(o).catch((t=>{e=t})),n]);if(e!==undefined){throw e}s=t}else{await n;o=r.route[e];if(o){s=await runHandler(o)}else if(e==="action"){let e=new URL(t.url);let n=e.pathname+e.search;throw getInternalRouterError(405,{method:t.method,pathname:n,routeId:r.route.id})}else{return{type:A.data,result:undefined}}}}else if(!o){let e=new URL(t.url);let r=e.pathname+e.search;throw getInternalRouterError(404,{pathname:r})}else{s=await runHandler(o)}invariant(s.result!==undefined,"You defined "+(e==="action"?"an action":"a loader")+" for route "+('"'+r.route.id+"\" but didn't return anything from your `"+e+"` ")+"function. Please return a value or `null`.")}catch(e){return{type:A.error,result:e}}finally{if(a){t.signal.removeEventListener("abort",a)}}return s}async function convertDataStrategyResultToDataResult(e){let{result:t,type:r}=e;if(isResponse(t)){let e;try{let r=t.headers.get("Content-Type");if(r&&/\bapplication\/json\b/.test(r)){if(t.body==null){e=null}else{e=await t.json()}}else{e=await t.text()}}catch(e){return{type:A.error,error:e}}if(r===A.error){return{type:A.error,error:new ErrorResponseImpl(t.status,t.statusText,e),statusCode:t.status,headers:t.headers}}return{type:A.data,data:e,statusCode:t.status,headers:t.headers}}if(r===A.error){if(isDataWithResponseInit(t)){var n,o;if(t.data instanceof Error){var i,s;return{type:A.error,error:t.data,statusCode:(i=t.init)==null?void 0:i.status,headers:(s=t.init)!=null&&s.headers?new Headers(t.init.headers):undefined}}return{type:A.error,error:new ErrorResponseImpl(((n=t.init)==null?void 0:n.status)||500,undefined,t.data),statusCode:isRouteErrorResponse(t)?t.status:undefined,headers:(o=t.init)!=null&&o.headers?new Headers(t.init.headers):undefined}}return{type:A.error,error:t,statusCode:isRouteErrorResponse(t)?t.status:undefined}}if(isDeferredData(t)){var a,l;return{type:A.deferred,deferredData:t,statusCode:(a=t.init)==null?void 0:a.status,headers:((l=t.init)==null?void 0:l.headers)&&new Headers(t.init.headers)}}if(isDataWithResponseInit(t)){var c,u;return{type:A.data,data:t.data,statusCode:(c=t.init)==null?void 0:c.status,headers:(u=t.init)!=null&&u.headers?new Headers(t.init.headers):undefined}}return{type:A.data,data:t}}function normalizeRelativeRoutingRedirectResponse(e,t,r,n,A,o){let i=e.headers.get("Location");invariant(i,"Redirects returned/thrown from loaders/actions must have a Location header");if(!b.test(i)){let s=n.slice(0,n.findIndex((e=>e.route.id===r))+1);i=normalizeTo(new URL(t.url),s,A,true,i,o);e.headers.set("Location",i)}return e}function normalizeRedirectLocation(e,t,r){if(b.test(e)){let n=e;let A=n.startsWith("//")?new URL(t.protocol+n):new URL(n);let o=stripBasename(A.pathname,r)!=null;if(A.origin===t.origin&&o){return A.pathname+A.search+A.hash}}return e}function createClientSideRequest(e,t,r,n){let A=e.createURL(stripHashFromPath(t)).toString();let o={signal:r};if(n&&isMutationMethod(n.formMethod)){let{formMethod:e,formEncType:t}=n;o.method=e.toUpperCase();if(t==="application/json"){o.headers=new Headers({"Content-Type":t});o.body=JSON.stringify(n.json)}else if(t==="text/plain"){o.body=n.text}else if(t==="application/x-www-form-urlencoded"&&n.formData){o.body=convertFormDataToSearchParams(n.formData)}else{o.body=n.formData}}return new Request(A,o)}function convertFormDataToSearchParams(e){let t=new URLSearchParams;for(let[r,n]of e.entries()){t.append(r,typeof n==="string"?n:n.name)}return t}function convertSearchParamsToFormData(e){let t=new FormData;for(let[r,n]of e.entries()){t.append(r,n)}return t}function processRouteLoaderData(e,t,r,n,A){let o={};let i=null;let s;let a=false;let l={};let c=r&&isErrorResult(r[1])?r[1].error:undefined;e.forEach((r=>{if(!(r.route.id in t)){return}let u=r.route.id;let d=t[u];invariant(!isRedirectResult(d),"Cannot handle redirect results in processLoaderData");if(isErrorResult(d)){let t=d.error;if(c!==undefined){t=c;c=undefined}i=i||{};if(A){i[u]=t}else{let r=findNearestBoundary(e,u);if(i[r.route.id]==null){i[r.route.id]=t}}o[u]=undefined;if(!a){a=true;s=isRouteErrorResponse(d.error)?d.error.status:500}if(d.headers){l[u]=d.headers}}else{if(isDeferredResult(d)){n.set(u,d.deferredData);o[u]=d.deferredData.data;if(d.statusCode!=null&&d.statusCode!==200&&!a){s=d.statusCode}if(d.headers){l[u]=d.headers}}else{o[u]=d.data;if(d.statusCode&&d.statusCode!==200&&!a){s=d.statusCode}if(d.headers){l[u]=d.headers}}}}));if(c!==undefined&&r){i={[r[0]]:c};o[r[0]]=undefined}return{loaderData:o,errors:i,statusCode:s||200,loaderHeaders:l}}function processLoaderData(e,t,r,n,A,o,i){let{loaderData:s,errors:a}=processRouteLoaderData(t,r,n,i,false);A.forEach((t=>{let{key:r,match:n,controller:A}=t;let i=o[r];invariant(i,"Did not find corresponding fetcher result");if(A&&A.signal.aborted){return}else if(isErrorResult(i)){let t=findNearestBoundary(e.matches,n==null?void 0:n.route.id);if(!(a&&a[t.route.id])){a=_extends({},a,{[t.route.id]:i.error})}e.fetchers.delete(r)}else if(isRedirectResult(i)){invariant(false,"Unhandled fetcher revalidation redirect")}else if(isDeferredResult(i)){invariant(false,"Unhandled fetcher deferred data")}else{let t=getDoneFetcher(i.data);e.fetchers.set(r,t)}}));return{loaderData:s,errors:a}}function mergeLoaderData(e,t,r,n){let A=_extends({},t);for(let o of r){let r=o.route.id;if(t.hasOwnProperty(r)){if(t[r]!==undefined){A[r]=t[r]}}else if(e[r]!==undefined&&o.route.loader){A[r]=e[r]}if(n&&n.hasOwnProperty(r)){break}}return A}function getActionDataForCommit(e){if(!e){return{}}return isErrorResult(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}}function findNearestBoundary(e,t){let r=t?e.slice(0,e.findIndex((e=>e.route.id===t))+1):[...e];return r.reverse().find((e=>e.route.hasErrorBoundary===true))||e[0]}function getShortCircuitMatches(e){let t=e.length===1?e[0]:e.find((e=>e.index||!e.path||e.path==="/"))||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function getInternalRouterError(e,t){let{pathname:r,routeId:n,method:A,type:o,message:i}=t===void 0?{}:t;let s="Unknown Server Error";let a="Unknown @remix-run/router error";if(e===400){s="Bad Request";if(A&&r&&n){a="You made a "+A+' request to "'+r+'" but '+('did not provide a `loader` for route "'+n+'", ')+"so there is no way to handle the request."}else if(o==="defer-action"){a="defer() is not supported in actions"}else if(o==="invalid-body"){a="Unable to encode submission body"}}else if(e===403){s="Forbidden";a='Route "'+n+'" does not match URL "'+r+'"'}else if(e===404){s="Not Found";a='No route matches URL "'+r+'"'}else if(e===405){s="Method Not Allowed";if(A&&r&&n){a="You made a "+A.toUpperCase()+' request to "'+r+'" but '+('did not provide an `action` for route "'+n+'", ')+"so there is no way to handle the request."}else if(A){a='Invalid request method "'+A.toUpperCase()+'"'}}return new ErrorResponseImpl(e||500,s,new Error(a),true)}function findRedirect(e){let t=Object.entries(e);for(let e=t.length-1;e>=0;e--){let[r,n]=t[e];if(isRedirectResult(n)){return{key:r,result:n}}}}function stripHashFromPath(e){let t=typeof e==="string"?parsePath(e):e;return createPath(_extends({},t,{hash:""}))}function isHashChangeOnly(e,t){if(e.pathname!==t.pathname||e.search!==t.search){return false}if(e.hash===""){return t.hash!==""}else if(e.hash===t.hash){return true}else if(t.hash!==""){return true}return false}function isDataStrategyResult(e){return e!=null&&typeof e==="object"&&"type"in e&&"result"in e&&(e.type===A.data||e.type===A.error)}function isRedirectDataStrategyResultResult(e){return isResponse(e.result)&&B.has(e.result.status)}function isDeferredResult(e){return e.type===A.deferred}function isErrorResult(e){return e.type===A.error}function isRedirectResult(e){return(e&&e.type)===A.redirect}function isDataWithResponseInit(e){return typeof e==="object"&&e!=null&&"type"in e&&"data"in e&&"init"in e&&e.type==="DataWithResponseInit"}function isDeferredData(e){let t=e;return t&&typeof t==="object"&&typeof t.data==="object"&&typeof t.subscribe==="function"&&typeof t.cancel==="function"&&typeof t.resolveData==="function"}function isResponse(e){return e!=null&&typeof e.status==="number"&&typeof e.statusText==="string"&&typeof e.headers==="object"&&typeof e.body!=="undefined"}function isRedirectResponse(e){if(!isResponse(e)){return false}let t=e.status;let r=e.headers.get("Location");return t>=300&&t<=399&&r!=null}function isValidMethod(e){return Q.has(e.toLowerCase())}function isMutationMethod(e){return E.has(e.toLowerCase())}async function resolveNavigationDeferredResults(e,t,r,n,A){let o=Object.entries(t);for(let i=0;i<o.length;i++){let[s,a]=o[i];let l=e.find((e=>(e==null?void 0:e.route.id)===s));if(!l){continue}let c=n.find((e=>e.route.id===l.route.id));let u=c!=null&&!isNewRouteInstance(c,l)&&(A&&A[l.route.id])!==undefined;if(isDeferredResult(a)&&u){await resolveDeferredData(a,r,false).then((e=>{if(e){t[s]=e}}))}}}async function resolveFetcherDeferredResults(e,t,r){for(let n=0;n<r.length;n++){let{key:A,routeId:o,controller:i}=r[n];let s=t[A];let a=e.find((e=>(e==null?void 0:e.route.id)===o));if(!a){continue}if(isDeferredResult(s)){invariant(i,"Expected an AbortController for revalidating fetcher deferred result");await resolveDeferredData(s,i.signal,true).then((e=>{if(e){t[A]=e}}))}}}async function resolveDeferredData(e,t,r){if(r===void 0){r=false}let n=await e.deferredData.resolveData(t);if(n){return}if(r){try{return{type:A.data,data:e.deferredData.unwrappedData}}catch(e){return{type:A.error,error:e}}}return{type:A.data,data:e.deferredData.data}}function hasNakedIndexQuery(e){return new URLSearchParams(e).getAll("index").some((e=>e===""))}function getTargetMatch(e,t){let r=typeof t==="string"?parsePath(t).search:t.search;if(e[e.length-1].route.index&&hasNakedIndexQuery(r||"")){return e[e.length-1]}let n=getPathContributingMatches(e);return n[n.length-1]}function getSubmissionFromNavigation(e){let{formMethod:t,formAction:r,formEncType:n,text:A,formData:o,json:i}=e;if(!t||!r||!n){return}if(A!=null){return{formMethod:t,formAction:r,formEncType:n,formData:undefined,json:undefined,text:A}}else if(o!=null){return{formMethod:t,formAction:r,formEncType:n,formData:o,json:undefined,text:undefined}}else if(i!==undefined){return{formMethod:t,formAction:r,formEncType:n,formData:undefined,json:i,text:undefined}}}function getLoadingNavigation(e,t){if(t){let r={state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text};return r}else{let t={state:"loading",location:e,formMethod:undefined,formAction:undefined,formEncType:undefined,formData:undefined,json:undefined,text:undefined};return t}}function getSubmittingNavigation(e,t){let r={state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text};return r}function getLoadingFetcher(e,t){if(e){let r={state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t};return r}else{let e={state:"loading",formMethod:undefined,formAction:undefined,formEncType:undefined,formData:undefined,json:undefined,text:undefined,data:t};return e}}function getSubmittingFetcher(e,t){let r={state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:undefined};return r}function getDoneFetcher(e){let t={state:"idle",formMethod:undefined,formAction:undefined,formEncType:undefined,formData:undefined,json:undefined,text:undefined,data:e};return t}function restoreAppliedTransitions(e,t){try{let r=e.sessionStorage.getItem(w);if(r){let e=JSON.parse(r);for(let[r,n]of Object.entries(e||{})){if(n&&Array.isArray(n)){t.set(r,new Set(n||[]))}}}}catch(e){}}function persistAppliedTransitions(e,t){if(t.size>0){let r={};for(let[e,n]of t){r[e]=[...n]}try{e.sessionStorage.setItem(w,JSON.stringify(r))}catch(e){warning(false,"Failed to save applied view transitions in sessionStorage ("+e+").")}}}t.AbortedDeferredError=AbortedDeferredError;t.Action=r;t.IDLE_BLOCKER=y;t.IDLE_FETCHER=m;t.IDLE_NAVIGATION=p;t.UNSAFE_DEFERRED_SYMBOL=R;t.UNSAFE_DeferredData=DeferredData;t.UNSAFE_ErrorResponseImpl=ErrorResponseImpl;t.UNSAFE_convertRouteMatchToUiMatch=convertRouteMatchToUiMatch;t.UNSAFE_convertRoutesToDataRoutes=convertRoutesToDataRoutes;t.UNSAFE_decodePath=decodePath;t.UNSAFE_getResolveToMatches=getResolveToMatches;t.UNSAFE_invariant=invariant;t.UNSAFE_warning=warning;t.createBrowserHistory=createBrowserHistory;t.createHashHistory=createHashHistory;t.createMemoryHistory=createMemoryHistory;t.createPath=createPath;t.createRouter=createRouter;t.createStaticHandler=createStaticHandler;t.data=data;t.defer=h;t.generatePath=generatePath;t.getStaticContextFromError=getStaticContextFromError;t.getToPathname=getToPathname;t.isDataWithResponseInit=isDataWithResponseInit;t.isDeferredData=isDeferredData;t.isRouteErrorResponse=isRouteErrorResponse;t.joinPaths=joinPaths;t.json=d;t.matchPath=matchPath;t.matchRoutes=matchRoutes;t.normalizePathname=normalizePathname;t.parsePath=parsePath;t.redirect=g;t.redirectDocument=redirectDocument;t.replace=replace;t.resolvePath=resolvePath;t.resolveTo=resolveTo;t.stripBasename=stripBasename},6576:function(e,t,r){"use strict";
92
92
  /**
93
93
  * @remix-run/server-runtime v2.16.8
94
94
  *
@@ -98,7 +98,7 @@
98
98
  * LICENSE.md file in the root directory of this source tree.
99
99
  *
100
100
  * @license MIT
101
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(405);var A=r(8147);const createCookieFactory=({sign:e,unsign:t})=>(r,A={})=>{let{secrets:o=[],...i}={path:"/",sameSite:"lax",...A};warnOnceAboutExpiresCookie(r,i.expires);return{get name(){return r},get isSigned(){return o.length>0},get expires(){return typeof i.maxAge!=="undefined"?new Date(Date.now()+i.maxAge*1e3):i.expires},async parse(e,A){if(!e)return null;let s=n.parse(e,{...i,...A});return r in s?s[r]===""?"":await decodeCookieValue(t,s[r],o):null},async serialize(t,A){return n.serialize(r,t===""?"":await encodeCookieValue(e,t,o),{...i,...A})}}};const isCookie=e=>e!=null&&typeof e.name==="string"&&typeof e.isSigned==="boolean"&&typeof e.parse==="function"&&typeof e.serialize==="function";async function encodeCookieValue(e,t,r){let n=encodeData(t);if(r.length>0){n=await e(n,r[0])}return n}async function decodeCookieValue(e,t,r){if(r.length>0){for(let n of r){let r=await e(t,n);if(r!==false){return decodeData(r)}}return null}return decodeData(t)}function encodeData(e){return btoa(myUnescape(encodeURIComponent(JSON.stringify(e))))}function decodeData(e){try{return JSON.parse(decodeURIComponent(myEscape(atob(e))))}catch(e){return{}}}function myEscape(e){let t=e.toString();let r="";let n=0;let A,o;while(n<t.length){A=t.charAt(n++);if(/[\w*+\-./@]/.exec(A)){r+=A}else{o=A.charCodeAt(0);if(o<256){r+="%"+hex(o,2)}else{r+="%u"+hex(o,4).toUpperCase()}}}return r}function hex(e,t){let r=e.toString(16);while(r.length<t)r="0"+r;return r}function myUnescape(e){let t=e.toString();let r="";let n=0;let A,o;while(n<t.length){A=t.charAt(n++);if(A==="%"){if(t.charAt(n)==="u"){o=t.slice(n+1,n+5);if(/^[\da-f]{4}$/i.exec(o)){r+=String.fromCharCode(parseInt(o,16));n+=5;continue}}else{o=t.slice(n,n+2);if(/^[\da-f]{2}$/i.exec(o)){r+=String.fromCharCode(parseInt(o,16));n+=2;continue}}}r+=A}return r}function warnOnceAboutExpiresCookie(e,t){A.warnOnce(!t,`The "${e}" cookie has an "expires" property set. `+`This will cause the expires value to not be updated when the session is committed. `+`Instead, you should set the expires value when serializing the cookie. `+`You can use \`commitSession(session, { expires })\` if using a session storage object, `+`or \`cookie.serialize("value", { expires })\` if you're using the cookie directly.`)}t.createCookieFactory=createCookieFactory;t.isCookie=isCookie},5326:function(e,t,r){"use strict";
101
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(405);var A=r(7026);const createCookieFactory=({sign:e,unsign:t})=>(r,A={})=>{let{secrets:o=[],...i}={path:"/",sameSite:"lax",...A};warnOnceAboutExpiresCookie(r,i.expires);return{get name(){return r},get isSigned(){return o.length>0},get expires(){return typeof i.maxAge!=="undefined"?new Date(Date.now()+i.maxAge*1e3):i.expires},async parse(e,A){if(!e)return null;let s=n.parse(e,{...i,...A});return r in s?s[r]===""?"":await decodeCookieValue(t,s[r],o):null},async serialize(t,A){return n.serialize(r,t===""?"":await encodeCookieValue(e,t,o),{...i,...A})}}};const isCookie=e=>e!=null&&typeof e.name==="string"&&typeof e.isSigned==="boolean"&&typeof e.parse==="function"&&typeof e.serialize==="function";async function encodeCookieValue(e,t,r){let n=encodeData(t);if(r.length>0){n=await e(n,r[0])}return n}async function decodeCookieValue(e,t,r){if(r.length>0){for(let n of r){let r=await e(t,n);if(r!==false){return decodeData(r)}}return null}return decodeData(t)}function encodeData(e){return btoa(myUnescape(encodeURIComponent(JSON.stringify(e))))}function decodeData(e){try{return JSON.parse(decodeURIComponent(myEscape(atob(e))))}catch(e){return{}}}function myEscape(e){let t=e.toString();let r="";let n=0;let A,o;while(n<t.length){A=t.charAt(n++);if(/[\w*+\-./@]/.exec(A)){r+=A}else{o=A.charCodeAt(0);if(o<256){r+="%"+hex(o,2)}else{r+="%u"+hex(o,4).toUpperCase()}}}return r}function hex(e,t){let r=e.toString(16);while(r.length<t)r="0"+r;return r}function myUnescape(e){let t=e.toString();let r="";let n=0;let A,o;while(n<t.length){A=t.charAt(n++);if(A==="%"){if(t.charAt(n)==="u"){o=t.slice(n+1,n+5);if(/^[\da-f]{4}$/i.exec(o)){r+=String.fromCharCode(parseInt(o,16));n+=5;continue}}else{o=t.slice(n,n+2);if(/^[\da-f]{2}$/i.exec(o)){r+=String.fromCharCode(parseInt(o,16));n+=2;continue}}}r+=A}return r}function warnOnceAboutExpiresCookie(e,t){A.warnOnce(!t,`The "${e}" cookie has an "expires" property set. `+`This will cause the expires value to not be updated when the session is committed. `+`Instead, you should set the expires value when serializing the cookie. `+`You can use \`commitSession(session, { expires })\` if using a session storage object, `+`or \`cookie.serialize("value", { expires })\` if you're using the cookie directly.`)}t.createCookieFactory=createCookieFactory;t.isCookie=isCookie},5451:function(e,t,r){"use strict";
102
102
  /**
103
103
  * @remix-run/server-runtime v2.16.8
104
104
  *
@@ -108,7 +108,7 @@
108
108
  * LICENSE.md file in the root directory of this source tree.
109
109
  *
110
110
  * @license MIT
111
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(644);async function callRouteAction({loadContext:e,action:t,params:r,request:A,routeId:o,singleFetch:i}){let s=await t({request:i?stripRoutesParam(stripIndexParam(A)):stripDataParam(stripIndexParam(A)),context:e,params:r});if(s===undefined){throw new Error(`You defined an action for route "${o}" but didn't return `+`anything from your \`action\` function. Please return a value or \`null\`.`)}if(i){return s}return n.isResponse(s)?s:n.json(s)}async function callRouteLoader({loadContext:e,loader:t,params:r,request:A,routeId:o,singleFetch:i}){let s=await t({request:i?stripRoutesParam(stripIndexParam(A)):stripDataParam(stripIndexParam(A)),context:e,params:r});if(s===undefined){throw new Error(`You defined a loader for route "${o}" but didn't return `+`anything from your \`loader\` function. Please return a value or \`null\`.`)}if(n.isDeferredData(s)){if(s.init&&n.isRedirectStatusCode(s.init.status||200)){return n.redirect(new Headers(s.init.headers).get("Location"),s.init)}return s}if(i){return s}return n.isResponse(s)?s:n.json(s)}function stripIndexParam(e){let t=new URL(e.url);let r=t.searchParams.getAll("index");t.searchParams.delete("index");let n=[];for(let e of r){if(e){n.push(e)}}for(let e of n){t.searchParams.append("index",e)}let A={method:e.method,body:e.body,headers:e.headers,signal:e.signal};if(A.body){A.duplex="half"}return new Request(t.href,A)}function stripDataParam(e){let t=new URL(e.url);t.searchParams.delete("_data");let r={method:e.method,body:e.body,headers:e.headers,signal:e.signal};if(r.body){r.duplex="half"}return new Request(t.href,r)}function stripRoutesParam(e){let t=new URL(e.url);t.searchParams.delete("_routes");let r={method:e.method,body:e.body,headers:e.headers,signal:e.signal};if(r.body){r.duplex="half"}return new Request(t.href,r)}t.callRouteAction=callRouteAction;t.callRouteLoader=callRouteLoader},1117:function(e,t){"use strict";
111
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(335);async function callRouteAction({loadContext:e,action:t,params:r,request:A,routeId:o,singleFetch:i}){let s=await t({request:i?stripRoutesParam(stripIndexParam(A)):stripDataParam(stripIndexParam(A)),context:e,params:r});if(s===undefined){throw new Error(`You defined an action for route "${o}" but didn't return `+`anything from your \`action\` function. Please return a value or \`null\`.`)}if(i){return s}return n.isResponse(s)?s:n.json(s)}async function callRouteLoader({loadContext:e,loader:t,params:r,request:A,routeId:o,singleFetch:i}){let s=await t({request:i?stripRoutesParam(stripIndexParam(A)):stripDataParam(stripIndexParam(A)),context:e,params:r});if(s===undefined){throw new Error(`You defined a loader for route "${o}" but didn't return `+`anything from your \`loader\` function. Please return a value or \`null\`.`)}if(n.isDeferredData(s)){if(s.init&&n.isRedirectStatusCode(s.init.status||200)){return n.redirect(new Headers(s.init.headers).get("Location"),s.init)}return s}if(i){return s}return n.isResponse(s)?s:n.json(s)}function stripIndexParam(e){let t=new URL(e.url);let r=t.searchParams.getAll("index");t.searchParams.delete("index");let n=[];for(let e of r){if(e){n.push(e)}}for(let e of n){t.searchParams.append("index",e)}let A={method:e.method,body:e.body,headers:e.headers,signal:e.signal};if(A.body){A.duplex="half"}return new Request(t.href,A)}function stripDataParam(e){let t=new URL(e.url);t.searchParams.delete("_data");let r={method:e.method,body:e.body,headers:e.headers,signal:e.signal};if(r.body){r.duplex="half"}return new Request(t.href,r)}function stripRoutesParam(e){let t=new URL(e.url);t.searchParams.delete("_routes");let r={method:e.method,body:e.body,headers:e.headers,signal:e.signal};if(r.body){r.duplex="half"}return new Request(t.href,r)}t.callRouteAction=callRouteAction;t.callRouteLoader=callRouteLoader},9624:function(e,t){"use strict";
112
112
  /**
113
113
  * @remix-run/server-runtime v2.16.8
114
114
  *
@@ -118,7 +118,7 @@
118
118
  * LICENSE.md file in the root directory of this source tree.
119
119
  *
120
120
  * @license MIT
121
- */Object.defineProperty(t,"__esModule",{value:true});function resourceRouteJsonWarning(e,t){return"⚠️ REMIX FUTURE CHANGE: Externally-accessed resource routes will no longer be "+"able to return raw JavaScript objects or `null` in React Router v7 when "+"Single Fetch becomes the default. You can prepare for this change at your "+`convenience by wrapping the data returned from your \`${e}\` function in `+`the \`${t}\` route with \`json()\`. For instructions on making this `+"change, see https://remix.run/docs/en/v2.13.1/guides/single-fetch#resource-routes"}t.resourceRouteJsonWarning=resourceRouteJsonWarning},1163:function(e,t){"use strict";
121
+ */Object.defineProperty(t,"__esModule",{value:true});function resourceRouteJsonWarning(e,t){return"⚠️ REMIX FUTURE CHANGE: Externally-accessed resource routes will no longer be "+"able to return raw JavaScript objects or `null` in React Router v7 when "+"Single Fetch becomes the default. You can prepare for this change at your "+`convenience by wrapping the data returned from your \`${e}\` function in `+`the \`${t}\` route with \`json()\`. For instructions on making this `+"change, see https://remix.run/docs/en/v2.13.1/guides/single-fetch#resource-routes"}t.resourceRouteJsonWarning=resourceRouteJsonWarning},3816:function(e,t){"use strict";
122
122
  /**
123
123
  * @remix-run/server-runtime v2.16.8
124
124
  *
@@ -128,7 +128,7 @@
128
128
  * LICENSE.md file in the root directory of this source tree.
129
129
  *
130
130
  * @license MIT
131
- */Object.defineProperty(t,"__esModule",{value:true});async function broadcastDevReady(e,t){t??=process.env.REMIX_DEV_ORIGIN;if(!t)throw Error("Dev server origin not set");let r=new URL(t);r.pathname="ping";let n=await fetch(r.href,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({buildHash:e.assets.version})}).catch((e=>{console.error(`Could not reach Remix dev server at ${r}`);throw e}));if(!n.ok){console.error(`Could not reach Remix dev server at ${r} (${n.status})`);throw Error(await n.text())}}function logDevReady(e){console.log(`[REMIX DEV] ${e.assets.version} ready`)}const r="__remix_devServerHooks";function setDevServerHooks(e){globalThis[r]=e}function getDevServerHooks(){return globalThis[r]}t.broadcastDevReady=broadcastDevReady;t.getDevServerHooks=getDevServerHooks;t.logDevReady=logDevReady;t.setDevServerHooks=setDevServerHooks},3488:function(e,t){"use strict";
131
+ */Object.defineProperty(t,"__esModule",{value:true});async function broadcastDevReady(e,t){t??=process.env.REMIX_DEV_ORIGIN;if(!t)throw Error("Dev server origin not set");let r=new URL(t);r.pathname="ping";let n=await fetch(r.href,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({buildHash:e.assets.version})}).catch((e=>{console.error(`Could not reach Remix dev server at ${r}`);throw e}));if(!n.ok){console.error(`Could not reach Remix dev server at ${r} (${n.status})`);throw Error(await n.text())}}function logDevReady(e){console.log(`[REMIX DEV] ${e.assets.version} ready`)}const r="__remix_devServerHooks";function setDevServerHooks(e){globalThis[r]=e}function getDevServerHooks(){return globalThis[r]}t.broadcastDevReady=broadcastDevReady;t.getDevServerHooks=getDevServerHooks;t.logDevReady=logDevReady;t.setDevServerHooks=setDevServerHooks},9311:function(e,t){"use strict";
132
132
  /**
133
133
  * @remix-run/server-runtime v2.16.8
134
134
  *
@@ -138,7 +138,7 @@
138
138
  * LICENSE.md file in the root directory of this source tree.
139
139
  *
140
140
  * @license MIT
141
- */Object.defineProperty(t,"__esModule",{value:true});function createEntryRouteModules(e){return Object.keys(e).reduce(((t,r)=>{t[r]=e[r].module;return t}),{})}t.createEntryRouteModules=createEntryRouteModules},7161:function(e,t,r){"use strict";
141
+ */Object.defineProperty(t,"__esModule",{value:true});function createEntryRouteModules(e){return Object.keys(e).reduce(((t,r)=>{t[r]=e[r].module;return t}),{})}t.createEntryRouteModules=createEntryRouteModules},8480:function(e,t,r){"use strict";
142
142
  /**
143
143
  * @remix-run/server-runtime v2.16.8
144
144
  *
@@ -148,7 +148,7 @@
148
148
  * LICENSE.md file in the root directory of this source tree.
149
149
  *
150
150
  * @license MIT
151
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(1248);var A=r(8445);function sanitizeError(e,t){if(e instanceof Error&&t!==A.ServerMode.Development){let e=new Error("Unexpected Server Error");e.stack=undefined;return e}return e}function sanitizeErrors(e,t){return Object.entries(e).reduce(((e,[r,n])=>Object.assign(e,{[r]:sanitizeError(n,t)})),{})}function serializeError(e,t){let r=sanitizeError(e,t);return{message:r.message,stack:r.stack}}function serializeErrors(e,t){if(!e)return null;let r=Object.entries(e);let A={};for(let[e,o]of r){if(n.isRouteErrorResponse(o)){A[e]={...o,__type:"RouteErrorResponse"}}else if(o instanceof Error){let r=sanitizeError(o,t);A[e]={message:r.message,stack:r.stack,__type:"Error",...r.name!=="Error"?{__subType:r.name}:{}}}else{A[e]=o}}return A}t.sanitizeError=sanitizeError;t.sanitizeErrors=sanitizeErrors;t.serializeError=serializeError;t.serializeErrors=serializeErrors},924:function(e,t,r){"use strict";
151
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(1248);var A=r(7932);function sanitizeError(e,t){if(e instanceof Error&&t!==A.ServerMode.Development){let e=new Error("Unexpected Server Error");e.stack=undefined;return e}return e}function sanitizeErrors(e,t){return Object.entries(e).reduce(((e,[r,n])=>Object.assign(e,{[r]:sanitizeError(n,t)})),{})}function serializeError(e,t){let r=sanitizeError(e,t);return{message:r.message,stack:r.stack}}function serializeErrors(e,t){if(!e)return null;let r=Object.entries(e);let A={};for(let[e,o]of r){if(n.isRouteErrorResponse(o)){A[e]={...o,__type:"RouteErrorResponse"}}else if(o instanceof Error){let r=sanitizeError(o,t);A[e]={message:r.message,stack:r.stack,__type:"Error",...r.name!=="Error"?{__subType:r.name}:{}}}else{A[e]=o}}return A}t.sanitizeError=sanitizeError;t.sanitizeErrors=sanitizeErrors;t.serializeError=serializeError;t.serializeErrors=serializeErrors},8885:function(e,t,r){"use strict";
152
152
  /**
153
153
  * @remix-run/server-runtime v2.16.8
154
154
  *
@@ -158,7 +158,7 @@
158
158
  * LICENSE.md file in the root directory of this source tree.
159
159
  *
160
160
  * @license MIT
161
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(573);function composeUploadHandlers(...e){return async t=>{for(let r of e){let e=await r(t);if(typeof e!=="undefined"&&e!==null){return e}}return undefined}}async function parseMultipartFormData(e,t){let r=e.headers.get("Content-Type")||"";let[A,o]=r.split(/\s*;\s*boundary=/);if(!e.body||!o||A!=="multipart/form-data"){throw new TypeError("Could not parse content as FormData.")}let i=new FormData;let s=n.streamMultipart(e.body,o);for await(let e of s){if(e.done)break;if(typeof e.filename==="string"){e.filename=e.filename.split(/[/\\]/).pop()}let r=await t(e);if(typeof r!=="undefined"&&r!==null){i.append(e.name,r)}}return i}t.composeUploadHandlers=composeUploadHandlers;t.parseMultipartFormData=parseMultipartFormData},6810:function(e,t,r){"use strict";
161
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(573);function composeUploadHandlers(...e){return async t=>{for(let r of e){let e=await r(t);if(typeof e!=="undefined"&&e!==null){return e}}return undefined}}async function parseMultipartFormData(e,t){let r=e.headers.get("Content-Type")||"";let[A,o]=r.split(/\s*;\s*boundary=/);if(!e.body||!o||A!=="multipart/form-data"){throw new TypeError("Could not parse content as FormData.")}let i=new FormData;let s=n.streamMultipart(e.body,o);for await(let e of s){if(e.done)break;if(typeof e.filename==="string"){e.filename=e.filename.split(/[/\\]/).pop()}let r=await t(e);if(typeof r!=="undefined"&&r!==null){i.append(e.name,r)}}return i}t.composeUploadHandlers=composeUploadHandlers;t.parseMultipartFormData=parseMultipartFormData},2729:function(e,t,r){"use strict";
162
162
  /**
163
163
  * @remix-run/server-runtime v2.16.8
164
164
  *
@@ -168,7 +168,7 @@
168
168
  * LICENSE.md file in the root directory of this source tree.
169
169
  *
170
170
  * @license MIT
171
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(2243);function getDocumentHeaders(e,t){let r=t.errors?t.matches.findIndex((e=>t.errors[e.route.id])):-1;let n=r>=0?t.matches.slice(0,r+1):t.matches;let A;if(r>=0){let{actionHeaders:e,actionData:n,loaderHeaders:o,loaderData:i}=t;t.matches.slice(r).some((t=>{let r=t.route.id;if(e[r]&&(!n||n[r]===undefined)){A=e[r]}else if(o[r]&&i[r]===undefined){A=o[r]}return A!=null}))}return n.reduce(((r,o,i)=>{let{id:s}=o.route;let a=e.routes[s].module;let l=t.loaderHeaders[s]||new Headers;let c=t.actionHeaders[s]||new Headers;let u=A!=undefined&&i===n.length-1;let d=u&&A!==l&&A!==c;if(a.headers==null){let e=new Headers(r);if(d){prependCookies(A,e)}prependCookies(c,e);prependCookies(l,e);return e}let h=new Headers(a.headers?typeof a.headers==="function"?a.headers({loaderHeaders:l,parentHeaders:r,actionHeaders:c,errorHeaders:u?A:undefined}):a.headers:undefined);if(d){prependCookies(A,h)}prependCookies(c,h);prependCookies(l,h);prependCookies(r,h);return h}),new Headers)}function prependCookies(e,t){let r=e.get("Set-Cookie");if(r){var A;let e=n.splitCookiesString(r);let o=new Set((A=t.getSetCookie)===null||A===void 0?void 0:A.call(t));e.forEach((e=>{if(!o.has(e)){t.append("Set-Cookie",e)}}))}}t.getDocumentHeaders=getDocumentHeaders},9384:function(e,t,r){"use strict";
171
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(2243);function getDocumentHeaders(e,t){let r=t.errors?t.matches.findIndex((e=>t.errors[e.route.id])):-1;let n=r>=0?t.matches.slice(0,r+1):t.matches;let A;if(r>=0){let{actionHeaders:e,actionData:n,loaderHeaders:o,loaderData:i}=t;t.matches.slice(r).some((t=>{let r=t.route.id;if(e[r]&&(!n||n[r]===undefined)){A=e[r]}else if(o[r]&&i[r]===undefined){A=o[r]}return A!=null}))}return n.reduce(((r,o,i)=>{let{id:s}=o.route;let a=e.routes[s].module;let l=t.loaderHeaders[s]||new Headers;let c=t.actionHeaders[s]||new Headers;let u=A!=undefined&&i===n.length-1;let d=u&&A!==l&&A!==c;if(a.headers==null){let e=new Headers(r);if(d){prependCookies(A,e)}prependCookies(c,e);prependCookies(l,e);return e}let h=new Headers(a.headers?typeof a.headers==="function"?a.headers({loaderHeaders:l,parentHeaders:r,actionHeaders:c,errorHeaders:u?A:undefined}):a.headers:undefined);if(d){prependCookies(A,h)}prependCookies(c,h);prependCookies(l,h);prependCookies(r,h);return h}),new Headers)}function prependCookies(e,t){let r=e.get("Set-Cookie");if(r){var A;let e=n.splitCookiesString(r);let o=new Set((A=t.getSetCookie)===null||A===void 0?void 0:A.call(t));e.forEach((e=>{if(!o.has(e)){t.append("Set-Cookie",e)}}))}}t.getDocumentHeaders=getDocumentHeaders},6215:function(e,t,r){"use strict";
172
172
  /**
173
173
  * @remix-run/server-runtime v2.16.8
174
174
  *
@@ -178,7 +178,7 @@
178
178
  * LICENSE.md file in the root directory of this source tree.
179
179
  *
180
180
  * @license MIT
181
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(6563);var A=r(924);var o=r(644);var i=r(819);var s=r(9829);var a=r(1971);var l=r(5687);var c=r(3932);var u=r(2282);var d=r(5141);var h=r(1163);t.createCookieFactory=n.createCookieFactory;t.isCookie=n.isCookie;t.unstable_composeUploadHandlers=A.composeUploadHandlers;t.unstable_parseMultipartFormData=A.parseMultipartFormData;t.defer=o.defer;t.json=o.json;t.redirect=o.redirect;t.redirectDocument=o.redirectDocument;t.replace=o.replace;t.UNSAFE_SingleFetchRedirectSymbol=i.SingleFetchRedirectSymbol;t.data=i.data;t.createRequestHandler=s.createRequestHandler;t.createSession=a.createSession;t.createSessionStorageFactory=a.createSessionStorageFactory;t.isSession=a.isSession;t.createCookieSessionStorageFactory=l.createCookieSessionStorageFactory;t.createMemorySessionStorageFactory=c.createMemorySessionStorageFactory;t.unstable_createMemoryUploadHandler=u.createMemoryUploadHandler;t.MaxPartSizeExceededError=d.MaxPartSizeExceededError;t.broadcastDevReady=h.broadcastDevReady;t.logDevReady=h.logDevReady;t.unstable_setDevServerHooks=h.setDevServerHooks},8876:function(e,t){"use strict";
181
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(6576);var A=r(8885);var o=r(335);var i=r(4162);var s=r(8532);var a=r(3874);var l=r(170);var c=r(8721);var u=r(9811);var d=r(8626);var h=r(3816);t.createCookieFactory=n.createCookieFactory;t.isCookie=n.isCookie;t.unstable_composeUploadHandlers=A.composeUploadHandlers;t.unstable_parseMultipartFormData=A.parseMultipartFormData;t.defer=o.defer;t.json=o.json;t.redirect=o.redirect;t.redirectDocument=o.redirectDocument;t.replace=o.replace;t.UNSAFE_SingleFetchRedirectSymbol=i.SingleFetchRedirectSymbol;t.data=i.data;t.createRequestHandler=s.createRequestHandler;t.createSession=a.createSession;t.createSessionStorageFactory=a.createSessionStorageFactory;t.isSession=a.isSession;t.createCookieSessionStorageFactory=l.createCookieSessionStorageFactory;t.createMemorySessionStorageFactory=c.createMemorySessionStorageFactory;t.unstable_createMemoryUploadHandler=u.createMemoryUploadHandler;t.MaxPartSizeExceededError=d.MaxPartSizeExceededError;t.broadcastDevReady=h.broadcastDevReady;t.logDevReady=h.logDevReady;t.unstable_setDevServerHooks=h.setDevServerHooks},2963:function(e,t){"use strict";
182
182
  /**
183
183
  * @remix-run/server-runtime v2.16.8
184
184
  *
@@ -188,7 +188,7 @@
188
188
  * LICENSE.md file in the root directory of this source tree.
189
189
  *
190
190
  * @license MIT
191
- */Object.defineProperty(t,"__esModule",{value:true});function invariant(e,t){if(e===false||e===null||typeof e==="undefined"){console.error("The following error is a bug in Remix; please open an issue! https://github.com/remix-run/remix/issues/new");throw new Error(t)}}t["default"]=invariant},8422:function(e,t){"use strict";
191
+ */Object.defineProperty(t,"__esModule",{value:true});function invariant(e,t){if(e===false||e===null||typeof e==="undefined"){console.error("The following error is a bug in Remix; please open an issue! https://github.com/remix-run/remix/issues/new");throw new Error(t)}}t["default"]=invariant},1343:function(e,t){"use strict";
192
192
  /**
193
193
  * @remix-run/server-runtime v2.16.8
194
194
  *
@@ -198,7 +198,7 @@
198
198
  * LICENSE.md file in the root directory of this source tree.
199
199
  *
200
200
  * @license MIT
201
- */Object.defineProperty(t,"__esModule",{value:true});const r={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"};const n=/[&><\u2028\u2029]/g;function escapeHtml(e){return e.replace(n,(e=>r[e]))}t.escapeHtml=escapeHtml},8445:function(e,t){"use strict";
201
+ */Object.defineProperty(t,"__esModule",{value:true});const r={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"};const n=/[&><\u2028\u2029]/g;function escapeHtml(e){return e.replace(n,(e=>r[e]))}t.escapeHtml=escapeHtml},7932:function(e,t){"use strict";
202
202
  /**
203
203
  * @remix-run/server-runtime v2.16.8
204
204
  *
@@ -208,7 +208,7 @@
208
208
  * LICENSE.md file in the root directory of this source tree.
209
209
  *
210
210
  * @license MIT
211
- */Object.defineProperty(t,"__esModule",{value:true});let r=function(e){e["Development"]="development";e["Production"]="production";e["Test"]="test";return e}({});function isServerMode(e){return e===r.Development||e===r.Production||e===r.Test}t.ServerMode=r;t.isServerMode=isServerMode},644:function(e,t,r){"use strict";
211
+ */Object.defineProperty(t,"__esModule",{value:true});let r=function(e){e["Development"]="development";e["Production"]="production";e["Test"]="test";return e}({});function isServerMode(e){return e===r.Development||e===r.Production||e===r.Test}t.ServerMode=r;t.isServerMode=isServerMode},335:function(e,t,r){"use strict";
212
212
  /**
213
213
  * @remix-run/server-runtime v2.16.8
214
214
  *
@@ -218,7 +218,7 @@
218
218
  * LICENSE.md file in the root directory of this source tree.
219
219
  *
220
220
  * @license MIT
221
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(1248);var A=r(7161);const json=(e,t={})=>n.json(e,t);const defer=(e,t={})=>n.defer(e,t);const redirect=(e,t=302)=>n.redirect(e,t);const replace=(e,t=302)=>n.replace(e,t);const redirectDocument=(e,t=302)=>n.redirectDocument(e,t);function isDeferredData(e){let t=e;return t&&typeof t==="object"&&typeof t.data==="object"&&typeof t.subscribe==="function"&&typeof t.cancel==="function"&&typeof t.resolveData==="function"}function isResponse(e){return e!=null&&typeof e.status==="number"&&typeof e.statusText==="string"&&typeof e.headers==="object"&&typeof e.body!=="undefined"}const o=new Set([301,302,303,307,308]);function isRedirectStatusCode(e){return o.has(e)}function isRedirectResponse(e){return isRedirectStatusCode(e.status)}function isTrackedPromise(e){return e!=null&&typeof e.then==="function"&&e._tracked===true}const i="__deferred_promise:";function createDeferredReadableStream(e,t,r){let n=new TextEncoder;let A=new ReadableStream({async start(A){let o={};let s=[];for(let[t,r]of Object.entries(e.data)){if(isTrackedPromise(r)){o[t]=`${i}${t}`;if(typeof r._data!=="undefined"||typeof r._error!=="undefined"){s.push(t)}}else{o[t]=r}}A.enqueue(n.encode(JSON.stringify(o)+"\n\n"));for(let t of s){enqueueTrackedPromise(A,n,t,e.data[t],r)}let a=e.subscribe(((t,o)=>{if(o){enqueueTrackedPromise(A,n,o,e.data[o],r)}}));await e.resolveData(t);a();A.close()}});return A}function enqueueTrackedPromise(e,t,r,n,o){if("_error"in n){e.enqueue(t.encode("error:"+JSON.stringify({[r]:n._error instanceof Error?A.serializeError(n._error,o):n._error})+"\n\n"))}else{e.enqueue(t.encode("data:"+JSON.stringify({[r]:n._data??null})+"\n\n"))}}t.createDeferredReadableStream=createDeferredReadableStream;t.defer=defer;t.isDeferredData=isDeferredData;t.isRedirectResponse=isRedirectResponse;t.isRedirectStatusCode=isRedirectStatusCode;t.isResponse=isResponse;t.json=json;t.redirect=redirect;t.redirectDocument=redirectDocument;t.replace=replace},4138:function(e,t,r){"use strict";
221
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(1248);var A=r(8480);const json=(e,t={})=>n.json(e,t);const defer=(e,t={})=>n.defer(e,t);const redirect=(e,t=302)=>n.redirect(e,t);const replace=(e,t=302)=>n.replace(e,t);const redirectDocument=(e,t=302)=>n.redirectDocument(e,t);function isDeferredData(e){let t=e;return t&&typeof t==="object"&&typeof t.data==="object"&&typeof t.subscribe==="function"&&typeof t.cancel==="function"&&typeof t.resolveData==="function"}function isResponse(e){return e!=null&&typeof e.status==="number"&&typeof e.statusText==="string"&&typeof e.headers==="object"&&typeof e.body!=="undefined"}const o=new Set([301,302,303,307,308]);function isRedirectStatusCode(e){return o.has(e)}function isRedirectResponse(e){return isRedirectStatusCode(e.status)}function isTrackedPromise(e){return e!=null&&typeof e.then==="function"&&e._tracked===true}const i="__deferred_promise:";function createDeferredReadableStream(e,t,r){let n=new TextEncoder;let A=new ReadableStream({async start(A){let o={};let s=[];for(let[t,r]of Object.entries(e.data)){if(isTrackedPromise(r)){o[t]=`${i}${t}`;if(typeof r._data!=="undefined"||typeof r._error!=="undefined"){s.push(t)}}else{o[t]=r}}A.enqueue(n.encode(JSON.stringify(o)+"\n\n"));for(let t of s){enqueueTrackedPromise(A,n,t,e.data[t],r)}let a=e.subscribe(((t,o)=>{if(o){enqueueTrackedPromise(A,n,o,e.data[o],r)}}));await e.resolveData(t);a();A.close()}});return A}function enqueueTrackedPromise(e,t,r,n,o){if("_error"in n){e.enqueue(t.encode("error:"+JSON.stringify({[r]:n._error instanceof Error?A.serializeError(n._error,o):n._error})+"\n\n"))}else{e.enqueue(t.encode("data:"+JSON.stringify({[r]:n._data??null})+"\n\n"))}}t.createDeferredReadableStream=createDeferredReadableStream;t.defer=defer;t.isDeferredData=isDeferredData;t.isRedirectResponse=isRedirectResponse;t.isRedirectStatusCode=isRedirectStatusCode;t.isResponse=isResponse;t.json=json;t.redirect=redirect;t.redirectDocument=redirectDocument;t.replace=replace},5577:function(e,t,r){"use strict";
222
222
  /**
223
223
  * @remix-run/server-runtime v2.16.8
224
224
  *
@@ -228,7 +228,7 @@
228
228
  * LICENSE.md file in the root directory of this source tree.
229
229
  *
230
230
  * @license MIT
231
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(1248);function matchServerRoutes(e,t,r){let A=n.matchRoutes(e,t,r);if(!A)return null;return A.map((e=>({params:e.params,pathname:e.pathname,route:e.route})))}t.matchServerRoutes=matchServerRoutes},860:function(e,t,r){"use strict";
231
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(1248);function matchServerRoutes(e,t,r){let A=n.matchRoutes(e,t,r);if(!A)return null;return A.map((e=>({params:e.params,pathname:e.pathname,route:e.route})))}t.matchServerRoutes=matchServerRoutes},2353:function(e,t,r){"use strict";
232
232
  /**
233
233
  * @remix-run/server-runtime v2.16.8
234
234
  *
@@ -238,7 +238,7 @@
238
238
  * LICENSE.md file in the root directory of this source tree.
239
239
  *
240
240
  * @license MIT
241
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(5326);function groupRoutesByParentId(e){let t={};Object.values(e).forEach((e=>{let r=e.parentId||"";if(!t[r]){t[r]=[]}t[r].push(e)}));return t}function createRoutes(e,t="",r=groupRoutesByParentId(e)){return(r[t]||[]).map((t=>({...t,children:createRoutes(e,t.id,r)})))}function createStaticHandlerDataRoutes(e,t,r="",A=groupRoutesByParentId(e)){return(A[r]||[]).map((r=>{let o={hasErrorBoundary:r.id==="root"||r.module.ErrorBoundary!=null,id:r.id,path:r.path,loader:r.module.loader?(e,A)=>n.callRouteLoader({request:e.request,params:e.params,loadContext:e.context,loader:r.module.loader,routeId:r.id,singleFetch:t.v3_singleFetch===true}):undefined,action:r.module.action?(e,A)=>n.callRouteAction({request:e.request,params:e.params,loadContext:e.context,action:r.module.action,routeId:r.id,singleFetch:t.v3_singleFetch===true}):undefined,handle:r.module.handle};return r.index?{index:true,...o}:{caseSensitive:r.caseSensitive,children:createStaticHandlerDataRoutes(e,t,r.id,A),...o}}))}t.createRoutes=createRoutes;t.createStaticHandlerDataRoutes=createStaticHandlerDataRoutes},9829:function(e,t,r){"use strict";
241
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(5451);function groupRoutesByParentId(e){let t={};Object.values(e).forEach((e=>{let r=e.parentId||"";if(!t[r]){t[r]=[]}t[r].push(e)}));return t}function createRoutes(e,t="",r=groupRoutesByParentId(e)){return(r[t]||[]).map((t=>({...t,children:createRoutes(e,t.id,r)})))}function createStaticHandlerDataRoutes(e,t,r="",A=groupRoutesByParentId(e)){return(A[r]||[]).map((r=>{let o={hasErrorBoundary:r.id==="root"||r.module.ErrorBoundary!=null,id:r.id,path:r.path,loader:r.module.loader?(e,A)=>n.callRouteLoader({request:e.request,params:e.params,loadContext:e.context,loader:r.module.loader,routeId:r.id,singleFetch:t.v3_singleFetch===true}):undefined,action:r.module.action?(e,A)=>n.callRouteAction({request:e.request,params:e.params,loadContext:e.context,action:r.module.action,routeId:r.id,singleFetch:t.v3_singleFetch===true}):undefined,handle:r.module.handle};return r.index?{index:true,...o}:{caseSensitive:r.caseSensitive,children:createStaticHandlerDataRoutes(e,t,r.id,A),...o}}))}t.createRoutes=createRoutes;t.createStaticHandlerDataRoutes=createStaticHandlerDataRoutes},8532:function(e,t,r){"use strict";
242
242
  /**
243
243
  * @remix-run/server-runtime v2.16.8
244
244
  *
@@ -248,7 +248,7 @@
248
248
  * LICENSE.md file in the root directory of this source tree.
249
249
  *
250
250
  * @license MIT
251
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(1248);var A=r(3488);var o=r(7161);var i=r(6810);var s=r(8876);var a=r(8445);var l=r(4138);var c=r(860);var u=r(644);var d=r(5467);var h=r(1163);var g=r(819);var f=r(1117);const E=new Set([100,101,204,205,304]);function derive(e,t){var r,A;let o=c.createRoutes(e.routes);let i=c.createStaticHandlerDataRoutes(e.routes,e.future);let s=a.isServerMode(t)?t:a.ServerMode.Production;let l=n.createStaticHandler(i,{basename:e.basename,future:{v7_relativeSplatPath:((r=e.future)===null||r===void 0?void 0:r.v3_relativeSplatPath)===true,v7_throwAbortReason:((A=e.future)===null||A===void 0?void 0:A.v3_throwAbortReason)===true}});let u=e.entry.module.handleError||((e,{request:t})=>{if(s!==a.ServerMode.Test&&!t.signal.aborted){console.error(n.isRouteErrorResponse(e)&&e.error?e.error:e)}});return{routes:o,dataRoutes:i,serverMode:s,staticHandler:l,errorHandler:u}}const createRequestHandler=(e,t)=>{let r;let n;let A;let o;let i;return async function requestHandler(s,c={}){r=typeof e==="function"?await e():e;t??=r.mode;if(typeof e==="function"){let e=derive(r,t);n=e.routes;A=e.serverMode;o=e.staticHandler;i=e.errorHandler}else if(!n||!A||!o||!i){let e=derive(r,t);n=e.routes;A=e.serverMode;o=e.staticHandler;i=e.errorHandler}let d=new URL(s.url);let f={};let handleError=e=>{if(t===a.ServerMode.Development){var r,n;(r=h.getDevServerHooks())===null||r===void 0?void 0:(n=r.processRequestError)===null||n===void 0?void 0:n.call(r,e)}i(e,{context:c,params:f,request:s})};let E=`${r.basename??"/"}/__manifest`.replace(/\/+/g,"/");if(d.pathname===E){try{let e=await handleManifestRequest(r,n,d);return e}catch(e){handleError(e);return new Response("Unknown Server Error",{status:500})}}let C=l.matchServerRoutes(n,d.pathname,r.basename);if(C&&C.length>0){Object.assign(f,C[0].params)}let Q;if(d.searchParams.has("_data")){if(r.future.v3_singleFetch){handleError(new Error("Warning: Single fetch-enabled apps should not be making ?_data requests, "+"this is likely to break in the future"))}let e=d.searchParams.get("_data");Q=await handleDataRequest(A,r,o,e,s,c,handleError);if(r.entry.module.handleDataRequest){Q=await r.entry.module.handleDataRequest(Q,{context:c,params:f,request:s});if(u.isRedirectResponse(Q)){Q=createRemixRedirectResponse(Q,r.basename)}}}else if(r.future.v3_singleFetch&&d.pathname.endsWith(".data")){let e=new URL(s.url);e.pathname=e.pathname.replace(/\.data$/,"").replace(/^\/_root$/,"/");let t=l.matchServerRoutes(n,e.pathname,r.basename);Q=await handleSingleFetchRequest(A,r,o,s,e,c,handleError);if(r.entry.module.handleDataRequest){Q=await r.entry.module.handleDataRequest(Q,{context:c,params:t?t[0].params:{},request:s});if(u.isRedirectResponse(Q)){let e=g.getSingleFetchRedirect(Q.status,Q.headers,r.basename);if(s.method==="GET"){e={[g.SingleFetchRedirectSymbol]:e}}let t=new Headers(Q.headers);t.set("Content-Type","text/x-script");return new Response(g.encodeViaTurboStream(e,s.signal,r.entry.module.streamTimeout,A),{status:g.SINGLE_FETCH_REDIRECT_STATUS,headers:t})}}}else if(C&&C[C.length-1].route.module.default==null&&C[C.length-1].route.module.ErrorBoundary==null){Q=await handleResourceRequest(A,r,o,C.slice(-1)[0].route.id,s,c,handleError)}else{var B,I;let e=t===a.ServerMode.Development?await((B=h.getDevServerHooks())===null||B===void 0?void 0:(I=B.getCriticalCss)===null||I===void 0?void 0:I.call(B,r,d.pathname)):undefined;Q=await handleDocumentRequest(A,r,o,s,c,handleError,e)}if(s.method==="HEAD"){return new Response(null,{headers:Q.headers,status:Q.status,statusText:Q.statusText})}return Q}};async function handleManifestRequest(e,t,r){if(e.assets.version!==r.searchParams.get("version")){return new Response(null,{status:204,headers:{"X-Remix-Reload-Document":"true"}})}let n={};if(r.searchParams.has("p")){let A=new Set;r.searchParams.getAll("p").forEach((e=>{if(!e.startsWith("/")){e=`/${e}`}let t=e.split("/").slice(1);t.forEach(((e,r)=>{let n=t.slice(0,r+1).join("/");A.add(`/${n}`)}))}));for(let r of A){let A=l.matchServerRoutes(t,r,e.basename);if(A){for(let t of A){let r=t.route.id;n[r]=e.assets.routes[r]}}}return u.json(n,{headers:{"Cache-Control":"public, max-age=31536000, immutable"}})}return new Response("Invalid Request",{status:400})}async function handleDataRequest(e,t,r,A,i,s,a){try{let o=await r.queryRoute(i,{routeId:A,requestContext:s});if(u.isRedirectResponse(o)){return createRemixRedirectResponse(o,t.basename)}if(n.UNSAFE_DEFERRED_SYMBOL in o){let t=o[n.UNSAFE_DEFERRED_SYMBOL];let r=u.createDeferredReadableStream(t,i.signal,e);let A=t.init||{};let s=new Headers(A.headers);s.set("Content-Type","text/remix-deferred");s.set("X-Remix-Response","yes");A.headers=s;return new Response(r,A)}o=safelySetHeader(o,"X-Remix-Response","yes");return o}catch(t){if(u.isResponse(t)){let e=safelySetHeader(t,"X-Remix-Catch","yes");return e}if(n.isRouteErrorResponse(t)){a(t);return errorResponseToJson(t,e)}let r=t instanceof Error||t instanceof DOMException?t:new Error("Unexpected Server Error");a(r);return n.json(o.serializeError(r,e),{status:500,headers:{"X-Remix-Error":"yes"}})}}async function handleSingleFetchRequest(e,t,r,n,A,o,i){let{result:s,headers:a,status:l}=n.method!=="GET"?await g.singleFetchAction(t,e,r,n,A,o,i):await g.singleFetchLoaders(t,e,r,n,A,o,i);let c=new Headers(a);c.set("X-Remix-Response","yes");if(E.has(l)){return new Response(null,{status:l,headers:c})}c.set("Content-Type","text/x-script");return new Response(g.encodeViaTurboStream(s,n.signal,t.entry.module.streamTimeout,e),{status:l||200,headers:c})}async function handleDocumentRequest(e,t,r,s,a,l,c){let h;try{h=await r.query(s,{requestContext:a})}catch(e){l(e);return new Response(null,{status:500})}if(u.isResponse(h)){return h}let f=i.getDocumentHeaders(t,h);if(E.has(h.statusCode)){return new Response(null,{status:h.statusCode,headers:f})}if(h.errors){Object.values(h.errors).forEach((e=>{if(!n.isRouteErrorResponse(e)||e.error){l(e)}}));h.errors=o.sanitizeErrors(h.errors,e)}let C={loaderData:h.loaderData,actionData:h.actionData,errors:o.serializeErrors(h.errors,e)};let Q={manifest:t.assets,routeModules:A.createEntryRouteModules(t.routes),staticHandlerContext:h,criticalCss:c,serverHandoffString:d.createServerHandoffString({basename:t.basename,criticalCss:c,future:t.future,isSpaMode:t.isSpaMode,...!t.future.v3_singleFetch?{state:C}:null}),...t.future.v3_singleFetch?{serverHandoffStream:g.encodeViaTurboStream(C,s.signal,t.entry.module.streamTimeout,e),renderMeta:{}}:null,future:t.future,isSpaMode:t.isSpaMode,serializeError:t=>o.serializeError(t,e)};let B=t.entry.module.default;try{return await B(s,h.statusCode,f,Q,a)}catch(A){l(A);let i=A;if(u.isResponse(A)){try{let e=await unwrapResponse(A);i=new n.UNSAFE_ErrorResponseImpl(A.status,A.statusText,e)}catch(e){}}h=n.getStaticContextFromError(r.dataRoutes,h,i);if(h.errors){h.errors=o.sanitizeErrors(h.errors,e)}let c={loaderData:h.loaderData,actionData:h.actionData,errors:o.serializeErrors(h.errors,e)};Q={...Q,staticHandlerContext:h,serverHandoffString:d.createServerHandoffString({basename:t.basename,future:t.future,isSpaMode:t.isSpaMode,...!t.future.v3_singleFetch?{state:c}:null}),...t.future.v3_singleFetch?{serverHandoffStream:g.encodeViaTurboStream(c,s.signal,t.entry.module.streamTimeout,e),renderMeta:{}}:null};try{return await B(s,h.statusCode,f,Q,a)}catch(t){l(t);return returnLastResortErrorResponse(t,e)}}}async function handleResourceRequest(e,t,r,A,o,i,a){try{let e=await r.queryRoute(o,{routeId:A,requestContext:i});if(typeof e==="object"&&e!==null){s["default"](!(n.UNSAFE_DEFERRED_SYMBOL in e),`You cannot return a \`defer()\` response from a Resource Route. Did you `+`forget to export a default UI component from the "${A}" route?`)}if(t.future.v3_singleFetch&&!u.isResponse(e)){console.warn(f.resourceRouteJsonWarning(o.method==="GET"?"loader":"action",A));e=u.json(e)}s["default"](u.isResponse(e),"Expected a Response to be returned from queryRoute");return e}catch(t){if(u.isResponse(t)){let e=safelySetHeader(t,"X-Remix-Catch","yes");return e}if(n.isRouteErrorResponse(t)){if(t){a(t)}return errorResponseToJson(t,e)}a(t);return returnLastResortErrorResponse(t,e)}}function errorResponseToJson(e,t){return n.json(o.serializeError(e.error||new Error("Unexpected Server Error"),t),{status:e.status,statusText:e.statusText,headers:{"X-Remix-Error":"yes"}})}function returnLastResortErrorResponse(e,t){let r="Unexpected Server Error";if(t!==a.ServerMode.Production){r+=`\n\n${String(e)}`}return new Response(r,{status:500,headers:{"Content-Type":"text/plain"}})}function unwrapResponse(e){let t=e.headers.get("Content-Type");return t&&/\bapplication\/json\b/.test(t)?e.body==null?null:e.json():e.text()}function createRemixRedirectResponse(e,t){let r=new Headers(e.headers);let A=r.get("Location");r.set("X-Remix-Redirect",t?n.stripBasename(A,t)||A:A);r.set("X-Remix-Status",String(e.status));r.delete("Location");if(e.headers.get("Set-Cookie")!==null){r.set("X-Remix-Revalidate","yes")}return new Response(null,{status:204,headers:r})}function safelySetHeader(e,t,r){let n=new Headers(e.headers);n.set(t,r);return new Response(e.body,{status:e.status,statusText:e.statusText,headers:n,duplex:e.body?"half":undefined})}t.createRequestHandler=createRequestHandler},5467:function(e,t,r){"use strict";
251
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(1248);var A=r(9311);var o=r(8480);var i=r(2729);var s=r(2963);var a=r(7932);var l=r(5577);var c=r(2353);var u=r(335);var d=r(9392);var h=r(3816);var g=r(4162);var f=r(9624);const E=new Set([100,101,204,205,304]);function derive(e,t){var r,A;let o=c.createRoutes(e.routes);let i=c.createStaticHandlerDataRoutes(e.routes,e.future);let s=a.isServerMode(t)?t:a.ServerMode.Production;let l=n.createStaticHandler(i,{basename:e.basename,future:{v7_relativeSplatPath:((r=e.future)===null||r===void 0?void 0:r.v3_relativeSplatPath)===true,v7_throwAbortReason:((A=e.future)===null||A===void 0?void 0:A.v3_throwAbortReason)===true}});let u=e.entry.module.handleError||((e,{request:t})=>{if(s!==a.ServerMode.Test&&!t.signal.aborted){console.error(n.isRouteErrorResponse(e)&&e.error?e.error:e)}});return{routes:o,dataRoutes:i,serverMode:s,staticHandler:l,errorHandler:u}}const createRequestHandler=(e,t)=>{let r;let n;let A;let o;let i;return async function requestHandler(s,c={}){r=typeof e==="function"?await e():e;t??=r.mode;if(typeof e==="function"){let e=derive(r,t);n=e.routes;A=e.serverMode;o=e.staticHandler;i=e.errorHandler}else if(!n||!A||!o||!i){let e=derive(r,t);n=e.routes;A=e.serverMode;o=e.staticHandler;i=e.errorHandler}let d=new URL(s.url);let f={};let handleError=e=>{if(t===a.ServerMode.Development){var r,n;(r=h.getDevServerHooks())===null||r===void 0?void 0:(n=r.processRequestError)===null||n===void 0?void 0:n.call(r,e)}i(e,{context:c,params:f,request:s})};let E=`${r.basename??"/"}/__manifest`.replace(/\/+/g,"/");if(d.pathname===E){try{let e=await handleManifestRequest(r,n,d);return e}catch(e){handleError(e);return new Response("Unknown Server Error",{status:500})}}let C=l.matchServerRoutes(n,d.pathname,r.basename);if(C&&C.length>0){Object.assign(f,C[0].params)}let Q;if(d.searchParams.has("_data")){if(r.future.v3_singleFetch){handleError(new Error("Warning: Single fetch-enabled apps should not be making ?_data requests, "+"this is likely to break in the future"))}let e=d.searchParams.get("_data");Q=await handleDataRequest(A,r,o,e,s,c,handleError);if(r.entry.module.handleDataRequest){Q=await r.entry.module.handleDataRequest(Q,{context:c,params:f,request:s});if(u.isRedirectResponse(Q)){Q=createRemixRedirectResponse(Q,r.basename)}}}else if(r.future.v3_singleFetch&&d.pathname.endsWith(".data")){let e=new URL(s.url);e.pathname=e.pathname.replace(/\.data$/,"").replace(/^\/_root$/,"/");let t=l.matchServerRoutes(n,e.pathname,r.basename);Q=await handleSingleFetchRequest(A,r,o,s,e,c,handleError);if(r.entry.module.handleDataRequest){Q=await r.entry.module.handleDataRequest(Q,{context:c,params:t?t[0].params:{},request:s});if(u.isRedirectResponse(Q)){let e=g.getSingleFetchRedirect(Q.status,Q.headers,r.basename);if(s.method==="GET"){e={[g.SingleFetchRedirectSymbol]:e}}let t=new Headers(Q.headers);t.set("Content-Type","text/x-script");return new Response(g.encodeViaTurboStream(e,s.signal,r.entry.module.streamTimeout,A),{status:g.SINGLE_FETCH_REDIRECT_STATUS,headers:t})}}}else if(C&&C[C.length-1].route.module.default==null&&C[C.length-1].route.module.ErrorBoundary==null){Q=await handleResourceRequest(A,r,o,C.slice(-1)[0].route.id,s,c,handleError)}else{var B,I;let e=t===a.ServerMode.Development?await((B=h.getDevServerHooks())===null||B===void 0?void 0:(I=B.getCriticalCss)===null||I===void 0?void 0:I.call(B,r,d.pathname)):undefined;Q=await handleDocumentRequest(A,r,o,s,c,handleError,e)}if(s.method==="HEAD"){return new Response(null,{headers:Q.headers,status:Q.status,statusText:Q.statusText})}return Q}};async function handleManifestRequest(e,t,r){if(e.assets.version!==r.searchParams.get("version")){return new Response(null,{status:204,headers:{"X-Remix-Reload-Document":"true"}})}let n={};if(r.searchParams.has("p")){let A=new Set;r.searchParams.getAll("p").forEach((e=>{if(!e.startsWith("/")){e=`/${e}`}let t=e.split("/").slice(1);t.forEach(((e,r)=>{let n=t.slice(0,r+1).join("/");A.add(`/${n}`)}))}));for(let r of A){let A=l.matchServerRoutes(t,r,e.basename);if(A){for(let t of A){let r=t.route.id;n[r]=e.assets.routes[r]}}}return u.json(n,{headers:{"Cache-Control":"public, max-age=31536000, immutable"}})}return new Response("Invalid Request",{status:400})}async function handleDataRequest(e,t,r,A,i,s,a){try{let o=await r.queryRoute(i,{routeId:A,requestContext:s});if(u.isRedirectResponse(o)){return createRemixRedirectResponse(o,t.basename)}if(n.UNSAFE_DEFERRED_SYMBOL in o){let t=o[n.UNSAFE_DEFERRED_SYMBOL];let r=u.createDeferredReadableStream(t,i.signal,e);let A=t.init||{};let s=new Headers(A.headers);s.set("Content-Type","text/remix-deferred");s.set("X-Remix-Response","yes");A.headers=s;return new Response(r,A)}o=safelySetHeader(o,"X-Remix-Response","yes");return o}catch(t){if(u.isResponse(t)){let e=safelySetHeader(t,"X-Remix-Catch","yes");return e}if(n.isRouteErrorResponse(t)){a(t);return errorResponseToJson(t,e)}let r=t instanceof Error||t instanceof DOMException?t:new Error("Unexpected Server Error");a(r);return n.json(o.serializeError(r,e),{status:500,headers:{"X-Remix-Error":"yes"}})}}async function handleSingleFetchRequest(e,t,r,n,A,o,i){let{result:s,headers:a,status:l}=n.method!=="GET"?await g.singleFetchAction(t,e,r,n,A,o,i):await g.singleFetchLoaders(t,e,r,n,A,o,i);let c=new Headers(a);c.set("X-Remix-Response","yes");if(E.has(l)){return new Response(null,{status:l,headers:c})}c.set("Content-Type","text/x-script");return new Response(g.encodeViaTurboStream(s,n.signal,t.entry.module.streamTimeout,e),{status:l||200,headers:c})}async function handleDocumentRequest(e,t,r,s,a,l,c){let h;try{h=await r.query(s,{requestContext:a})}catch(e){l(e);return new Response(null,{status:500})}if(u.isResponse(h)){return h}let f=i.getDocumentHeaders(t,h);if(E.has(h.statusCode)){return new Response(null,{status:h.statusCode,headers:f})}if(h.errors){Object.values(h.errors).forEach((e=>{if(!n.isRouteErrorResponse(e)||e.error){l(e)}}));h.errors=o.sanitizeErrors(h.errors,e)}let C={loaderData:h.loaderData,actionData:h.actionData,errors:o.serializeErrors(h.errors,e)};let Q={manifest:t.assets,routeModules:A.createEntryRouteModules(t.routes),staticHandlerContext:h,criticalCss:c,serverHandoffString:d.createServerHandoffString({basename:t.basename,criticalCss:c,future:t.future,isSpaMode:t.isSpaMode,...!t.future.v3_singleFetch?{state:C}:null}),...t.future.v3_singleFetch?{serverHandoffStream:g.encodeViaTurboStream(C,s.signal,t.entry.module.streamTimeout,e),renderMeta:{}}:null,future:t.future,isSpaMode:t.isSpaMode,serializeError:t=>o.serializeError(t,e)};let B=t.entry.module.default;try{return await B(s,h.statusCode,f,Q,a)}catch(A){l(A);let i=A;if(u.isResponse(A)){try{let e=await unwrapResponse(A);i=new n.UNSAFE_ErrorResponseImpl(A.status,A.statusText,e)}catch(e){}}h=n.getStaticContextFromError(r.dataRoutes,h,i);if(h.errors){h.errors=o.sanitizeErrors(h.errors,e)}let c={loaderData:h.loaderData,actionData:h.actionData,errors:o.serializeErrors(h.errors,e)};Q={...Q,staticHandlerContext:h,serverHandoffString:d.createServerHandoffString({basename:t.basename,future:t.future,isSpaMode:t.isSpaMode,...!t.future.v3_singleFetch?{state:c}:null}),...t.future.v3_singleFetch?{serverHandoffStream:g.encodeViaTurboStream(c,s.signal,t.entry.module.streamTimeout,e),renderMeta:{}}:null};try{return await B(s,h.statusCode,f,Q,a)}catch(t){l(t);return returnLastResortErrorResponse(t,e)}}}async function handleResourceRequest(e,t,r,A,o,i,a){try{let e=await r.queryRoute(o,{routeId:A,requestContext:i});if(typeof e==="object"&&e!==null){s["default"](!(n.UNSAFE_DEFERRED_SYMBOL in e),`You cannot return a \`defer()\` response from a Resource Route. Did you `+`forget to export a default UI component from the "${A}" route?`)}if(t.future.v3_singleFetch&&!u.isResponse(e)){console.warn(f.resourceRouteJsonWarning(o.method==="GET"?"loader":"action",A));e=u.json(e)}s["default"](u.isResponse(e),"Expected a Response to be returned from queryRoute");return e}catch(t){if(u.isResponse(t)){let e=safelySetHeader(t,"X-Remix-Catch","yes");return e}if(n.isRouteErrorResponse(t)){if(t){a(t)}return errorResponseToJson(t,e)}a(t);return returnLastResortErrorResponse(t,e)}}function errorResponseToJson(e,t){return n.json(o.serializeError(e.error||new Error("Unexpected Server Error"),t),{status:e.status,statusText:e.statusText,headers:{"X-Remix-Error":"yes"}})}function returnLastResortErrorResponse(e,t){let r="Unexpected Server Error";if(t!==a.ServerMode.Production){r+=`\n\n${String(e)}`}return new Response(r,{status:500,headers:{"Content-Type":"text/plain"}})}function unwrapResponse(e){let t=e.headers.get("Content-Type");return t&&/\bapplication\/json\b/.test(t)?e.body==null?null:e.json():e.text()}function createRemixRedirectResponse(e,t){let r=new Headers(e.headers);let A=r.get("Location");r.set("X-Remix-Redirect",t?n.stripBasename(A,t)||A:A);r.set("X-Remix-Status",String(e.status));r.delete("Location");if(e.headers.get("Set-Cookie")!==null){r.set("X-Remix-Revalidate","yes")}return new Response(null,{status:204,headers:r})}function safelySetHeader(e,t,r){let n=new Headers(e.headers);n.set(t,r);return new Response(e.body,{status:e.status,statusText:e.statusText,headers:n,duplex:e.body?"half":undefined})}t.createRequestHandler=createRequestHandler},9392:function(e,t,r){"use strict";
252
252
  /**
253
253
  * @remix-run/server-runtime v2.16.8
254
254
  *
@@ -258,7 +258,7 @@
258
258
  * LICENSE.md file in the root directory of this source tree.
259
259
  *
260
260
  * @license MIT
261
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(8422);function createServerHandoffString(e){return n.escapeHtml(JSON.stringify(e))}t.createServerHandoffString=createServerHandoffString},1971:function(e,t,r){"use strict";
261
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(1343);function createServerHandoffString(e){return n.escapeHtml(JSON.stringify(e))}t.createServerHandoffString=createServerHandoffString},3874:function(e,t,r){"use strict";
262
262
  /**
263
263
  * @remix-run/server-runtime v2.16.8
264
264
  *
@@ -268,7 +268,7 @@
268
268
  * LICENSE.md file in the root directory of this source tree.
269
269
  *
270
270
  * @license MIT
271
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(6563);var A=r(8147);function flash(e){return`__flash_${e}__`}const createSession=(e={},t="")=>{let r=new Map(Object.entries(e));return{get id(){return t},get data(){return Object.fromEntries(r)},has(e){return r.has(e)||r.has(flash(e))},get(e){if(r.has(e))return r.get(e);let t=flash(e);if(r.has(t)){let e=r.get(t);r.delete(t);return e}return undefined},set(e,t){r.set(e,t)},flash(e,t){r.set(flash(e),t)},unset(e){r.delete(e)}}};const isSession=e=>e!=null&&typeof e.id==="string"&&typeof e.data!=="undefined"&&typeof e.has==="function"&&typeof e.get==="function"&&typeof e.set==="function"&&typeof e.flash==="function"&&typeof e.unset==="function";const createSessionStorageFactory=e=>({cookie:t,createData:r,readData:A,updateData:o,deleteData:i})=>{let s=n.isCookie(t)?t:e((t===null||t===void 0?void 0:t.name)||"__session",t);warnOnceAboutSigningSessionCookie(s);return{async getSession(e,t){let r=e&&await s.parse(e,t);let n=r&&await A(r);return createSession(n||{},r||"")},async commitSession(e,t){let{id:n,data:A}=e;let i=(t===null||t===void 0?void 0:t.maxAge)!=null?new Date(Date.now()+t.maxAge*1e3):(t===null||t===void 0?void 0:t.expires)!=null?t.expires:s.expires;if(n){await o(n,A,i)}else{n=await r(A,i)}return s.serialize(n,t)},async destroySession(e,t){await i(e.id);return s.serialize("",{...t,maxAge:undefined,expires:new Date(0)})}}};function warnOnceAboutSigningSessionCookie(e){A.warnOnce(e.isSigned,`The "${e.name}" cookie is not signed, but session cookies should be `+`signed to prevent tampering on the client before they are sent back to the `+`server. See https://remix.run/utils/cookies#signing-cookies `+`for more information.`)}t.createSession=createSession;t.createSessionStorageFactory=createSessionStorageFactory;t.isSession=isSession;t.warnOnceAboutSigningSessionCookie=warnOnceAboutSigningSessionCookie},5687:function(e,t,r){"use strict";
271
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(6576);var A=r(7026);function flash(e){return`__flash_${e}__`}const createSession=(e={},t="")=>{let r=new Map(Object.entries(e));return{get id(){return t},get data(){return Object.fromEntries(r)},has(e){return r.has(e)||r.has(flash(e))},get(e){if(r.has(e))return r.get(e);let t=flash(e);if(r.has(t)){let e=r.get(t);r.delete(t);return e}return undefined},set(e,t){r.set(e,t)},flash(e,t){r.set(flash(e),t)},unset(e){r.delete(e)}}};const isSession=e=>e!=null&&typeof e.id==="string"&&typeof e.data!=="undefined"&&typeof e.has==="function"&&typeof e.get==="function"&&typeof e.set==="function"&&typeof e.flash==="function"&&typeof e.unset==="function";const createSessionStorageFactory=e=>({cookie:t,createData:r,readData:A,updateData:o,deleteData:i})=>{let s=n.isCookie(t)?t:e((t===null||t===void 0?void 0:t.name)||"__session",t);warnOnceAboutSigningSessionCookie(s);return{async getSession(e,t){let r=e&&await s.parse(e,t);let n=r&&await A(r);return createSession(n||{},r||"")},async commitSession(e,t){let{id:n,data:A}=e;let i=(t===null||t===void 0?void 0:t.maxAge)!=null?new Date(Date.now()+t.maxAge*1e3):(t===null||t===void 0?void 0:t.expires)!=null?t.expires:s.expires;if(n){await o(n,A,i)}else{n=await r(A,i)}return s.serialize(n,t)},async destroySession(e,t){await i(e.id);return s.serialize("",{...t,maxAge:undefined,expires:new Date(0)})}}};function warnOnceAboutSigningSessionCookie(e){A.warnOnce(e.isSigned,`The "${e.name}" cookie is not signed, but session cookies should be `+`signed to prevent tampering on the client before they are sent back to the `+`server. See https://remix.run/utils/cookies#signing-cookies `+`for more information.`)}t.createSession=createSession;t.createSessionStorageFactory=createSessionStorageFactory;t.isSession=isSession;t.warnOnceAboutSigningSessionCookie=warnOnceAboutSigningSessionCookie},170:function(e,t,r){"use strict";
272
272
  /**
273
273
  * @remix-run/server-runtime v2.16.8
274
274
  *
@@ -278,7 +278,7 @@
278
278
  * LICENSE.md file in the root directory of this source tree.
279
279
  *
280
280
  * @license MIT
281
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(6563);var A=r(1971);const createCookieSessionStorageFactory=e=>({cookie:t}={})=>{let r=n.isCookie(t)?t:e((t===null||t===void 0?void 0:t.name)||"__session",t);A.warnOnceAboutSigningSessionCookie(r);return{async getSession(e,t){return A.createSession(e&&await r.parse(e,t)||{})},async commitSession(e,t){let n=await r.serialize(e.data,t);if(n.length>4096){throw new Error("Cookie length will exceed browser maximum. Length: "+n.length)}return n},async destroySession(e,t){return r.serialize("",{...t,maxAge:undefined,expires:new Date(0)})}}};t.createCookieSessionStorageFactory=createCookieSessionStorageFactory},3932:function(e,t){"use strict";
281
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(6576);var A=r(3874);const createCookieSessionStorageFactory=e=>({cookie:t}={})=>{let r=n.isCookie(t)?t:e((t===null||t===void 0?void 0:t.name)||"__session",t);A.warnOnceAboutSigningSessionCookie(r);return{async getSession(e,t){return A.createSession(e&&await r.parse(e,t)||{})},async commitSession(e,t){let n=await r.serialize(e.data,t);if(n.length>4096){throw new Error("Cookie length will exceed browser maximum. Length: "+n.length)}return n},async destroySession(e,t){return r.serialize("",{...t,maxAge:undefined,expires:new Date(0)})}}};t.createCookieSessionStorageFactory=createCookieSessionStorageFactory},8721:function(e,t){"use strict";
282
282
  /**
283
283
  * @remix-run/server-runtime v2.16.8
284
284
  *
@@ -288,7 +288,7 @@
288
288
  * LICENSE.md file in the root directory of this source tree.
289
289
  *
290
290
  * @license MIT
291
- */Object.defineProperty(t,"__esModule",{value:true});const createMemorySessionStorageFactory=e=>({cookie:t}={})=>{let r=new Map;return e({cookie:t,async createData(e,t){let n=Math.random().toString(36).substring(2,10);r.set(n,{data:e,expires:t});return n},async readData(e){if(r.has(e)){let{data:t,expires:n}=r.get(e);if(!n||n>new Date){return t}if(n)r.delete(e)}return null},async updateData(e,t,n){r.set(e,{data:t,expires:n})},async deleteData(e){r.delete(e)}})};t.createMemorySessionStorageFactory=createMemorySessionStorageFactory},819:function(e,t,r){"use strict";
291
+ */Object.defineProperty(t,"__esModule",{value:true});const createMemorySessionStorageFactory=e=>({cookie:t}={})=>{let r=new Map;return e({cookie:t,async createData(e,t){let n=Math.random().toString(36).substring(2,10);r.set(n,{data:e,expires:t});return n},async readData(e){if(r.has(e)){let{data:t,expires:n}=r.get(e);if(!n||n>new Date){return t}if(n)r.delete(e)}return null},async updateData(e,t,n){r.set(e,{data:t,expires:n})},async deleteData(e){r.delete(e)}})};t.createMemorySessionStorageFactory=createMemorySessionStorageFactory},4162:function(e,t,r){"use strict";
292
292
  /**
293
293
  * @remix-run/server-runtime v2.16.8
294
294
  *
@@ -298,7 +298,7 @@
298
298
  * LICENSE.md file in the root directory of this source tree.
299
299
  *
300
300
  * @license MIT
301
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(1248);var A=r(2381);var o=r(7161);var i=r(6810);var s=r(8445);var a=r(644);const l=Symbol("SingleFetchRedirect");const c=202;function getSingleFetchDataStrategy({isActionDataRequest:e,loadRouteIds:t}={}){return async({request:r,matches:n})=>{if(e&&r.method==="GET"){return{}}let A=t?n.filter((e=>t.includes(e.route.id))):n;let o=await Promise.all(A.map((e=>e.resolve())));return o.reduce(((e,t,r)=>Object.assign(e,{[A[r].route.id]:t})),{})}}async function singleFetchAction(e,t,r,A,s,l,u){try{let d=new Request(s,{method:A.method,body:A.body,headers:A.headers,signal:A.signal,...A.body?{duplex:"half"}:undefined});let h=await r.query(d,{requestContext:l,skipLoaderErrorBubbling:true,dataStrategy:getSingleFetchDataStrategy({isActionDataRequest:true})});if(a.isResponse(h)){return{result:getSingleFetchRedirect(h.status,h.headers,e.basename),headers:h.headers,status:c}}let g=h;let f=i.getDocumentHeaders(e,g);if(a.isRedirectStatusCode(g.statusCode)&&f.has("Location")){return{result:getSingleFetchRedirect(g.statusCode,f,e.basename),headers:f,status:c}}if(g.errors){Object.values(g.errors).forEach((e=>{if(!n.isRouteErrorResponse(e)||e.error){u(e)}}));g.errors=o.sanitizeErrors(g.errors,t)}let E;if(g.errors){E={error:Object.values(g.errors)[0]}}else{E={data:Object.values(g.actionData||{})[0]}}return{result:E,headers:f,status:g.statusCode}}catch(e){u(e);return{result:{error:e},headers:new Headers,status:500}}}async function singleFetchLoaders(e,t,r,A,s,u,d){try{var h;let g=new Request(s,{headers:A.headers,signal:A.signal});let f=((h=new URL(A.url).searchParams.get("_routes"))===null||h===void 0?void 0:h.split(","))||undefined;let E=await r.query(g,{requestContext:u,skipLoaderErrorBubbling:true,dataStrategy:getSingleFetchDataStrategy({loadRouteIds:f})});if(a.isResponse(E)){return{result:{[l]:getSingleFetchRedirect(E.status,E.headers,e.basename)},headers:E.headers,status:c}}let C=E;let Q=i.getDocumentHeaders(e,C);if(a.isRedirectStatusCode(C.statusCode)&&Q.has("Location")){return{result:{[l]:getSingleFetchRedirect(C.statusCode,Q,e.basename)},headers:Q,status:c}}if(C.errors){Object.values(C.errors).forEach((e=>{if(!n.isRouteErrorResponse(e)||e.error){d(e)}}));C.errors=o.sanitizeErrors(C.errors,t)}let B={};let I=f?C.matches.filter((e=>e.route.loader&&f.includes(e.route.id))):C.matches;I.forEach((e=>{var t,r;let n=(t=C.loaderData)===null||t===void 0?void 0:t[e.route.id];let A=(r=C.errors)===null||r===void 0?void 0:r[e.route.id];if(A!==undefined){B[e.route.id]={error:A}}else if(n!==undefined){B[e.route.id]={data:n}}}));return{result:B,headers:Q,status:C.statusCode}}catch(e){d(e);return{result:{root:{error:e}},headers:new Headers,status:500}}}function getSingleFetchRedirect(e,t,r){let A=t.get("Location");if(r){A=n.stripBasename(A,r)||A}return{redirect:A,status:e,revalidate:t.has("X-Remix-Revalidate")||t.has("Set-Cookie"),reload:t.has("X-Remix-Reload-Document"),replace:t.has("X-Remix-Replace")}}function encodeViaTurboStream(e,t,r,i){let a=new AbortController;let c=setTimeout((()=>a.abort(new Error("Server Timeout"))),typeof r==="number"?r:4950);t.addEventListener("abort",(()=>clearTimeout(c)));return A.encode(e,{signal:a.signal,plugins:[e=>{if(e instanceof Error){let{name:t,message:r,stack:n}=i===s.ServerMode.Production?o.sanitizeError(e,i):e;return["SanitizedError",t,r,n]}if(e instanceof n.UNSAFE_ErrorResponseImpl){let{data:t,status:r,statusText:n}=e;return["ErrorResponse",t,r,n]}if(e&&typeof e==="object"&&l in e){return["SingleFetchRedirect",e[l]]}}],postPlugins:[e=>{if(!e)return;if(typeof e!=="object")return;return["SingleFetchClassInstance",Object.fromEntries(Object.entries(e))]},()=>["SingleFetchFallback"]]})}function data(e,t){return n.data(e,t)}t.SINGLE_FETCH_REDIRECT_STATUS=c;t.SingleFetchRedirectSymbol=l;t.data=data;t.encodeViaTurboStream=encodeViaTurboStream;t.getSingleFetchDataStrategy=getSingleFetchDataStrategy;t.getSingleFetchRedirect=getSingleFetchRedirect;t.singleFetchAction=singleFetchAction;t.singleFetchLoaders=singleFetchLoaders},5141:function(e,t){"use strict";
301
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(1248);var A=r(2381);var o=r(8480);var i=r(2729);var s=r(7932);var a=r(335);const l=Symbol("SingleFetchRedirect");const c=202;function getSingleFetchDataStrategy({isActionDataRequest:e,loadRouteIds:t}={}){return async({request:r,matches:n})=>{if(e&&r.method==="GET"){return{}}let A=t?n.filter((e=>t.includes(e.route.id))):n;let o=await Promise.all(A.map((e=>e.resolve())));return o.reduce(((e,t,r)=>Object.assign(e,{[A[r].route.id]:t})),{})}}async function singleFetchAction(e,t,r,A,s,l,u){try{let d=new Request(s,{method:A.method,body:A.body,headers:A.headers,signal:A.signal,...A.body?{duplex:"half"}:undefined});let h=await r.query(d,{requestContext:l,skipLoaderErrorBubbling:true,dataStrategy:getSingleFetchDataStrategy({isActionDataRequest:true})});if(a.isResponse(h)){return{result:getSingleFetchRedirect(h.status,h.headers,e.basename),headers:h.headers,status:c}}let g=h;let f=i.getDocumentHeaders(e,g);if(a.isRedirectStatusCode(g.statusCode)&&f.has("Location")){return{result:getSingleFetchRedirect(g.statusCode,f,e.basename),headers:f,status:c}}if(g.errors){Object.values(g.errors).forEach((e=>{if(!n.isRouteErrorResponse(e)||e.error){u(e)}}));g.errors=o.sanitizeErrors(g.errors,t)}let E;if(g.errors){E={error:Object.values(g.errors)[0]}}else{E={data:Object.values(g.actionData||{})[0]}}return{result:E,headers:f,status:g.statusCode}}catch(e){u(e);return{result:{error:e},headers:new Headers,status:500}}}async function singleFetchLoaders(e,t,r,A,s,u,d){try{var h;let g=new Request(s,{headers:A.headers,signal:A.signal});let f=((h=new URL(A.url).searchParams.get("_routes"))===null||h===void 0?void 0:h.split(","))||undefined;let E=await r.query(g,{requestContext:u,skipLoaderErrorBubbling:true,dataStrategy:getSingleFetchDataStrategy({loadRouteIds:f})});if(a.isResponse(E)){return{result:{[l]:getSingleFetchRedirect(E.status,E.headers,e.basename)},headers:E.headers,status:c}}let C=E;let Q=i.getDocumentHeaders(e,C);if(a.isRedirectStatusCode(C.statusCode)&&Q.has("Location")){return{result:{[l]:getSingleFetchRedirect(C.statusCode,Q,e.basename)},headers:Q,status:c}}if(C.errors){Object.values(C.errors).forEach((e=>{if(!n.isRouteErrorResponse(e)||e.error){d(e)}}));C.errors=o.sanitizeErrors(C.errors,t)}let B={};let I=f?C.matches.filter((e=>e.route.loader&&f.includes(e.route.id))):C.matches;I.forEach((e=>{var t,r;let n=(t=C.loaderData)===null||t===void 0?void 0:t[e.route.id];let A=(r=C.errors)===null||r===void 0?void 0:r[e.route.id];if(A!==undefined){B[e.route.id]={error:A}}else if(n!==undefined){B[e.route.id]={data:n}}}));return{result:B,headers:Q,status:C.statusCode}}catch(e){d(e);return{result:{root:{error:e}},headers:new Headers,status:500}}}function getSingleFetchRedirect(e,t,r){let A=t.get("Location");if(r){A=n.stripBasename(A,r)||A}return{redirect:A,status:e,revalidate:t.has("X-Remix-Revalidate")||t.has("Set-Cookie"),reload:t.has("X-Remix-Reload-Document"),replace:t.has("X-Remix-Replace")}}function encodeViaTurboStream(e,t,r,i){let a=new AbortController;let c=setTimeout((()=>a.abort(new Error("Server Timeout"))),typeof r==="number"?r:4950);t.addEventListener("abort",(()=>clearTimeout(c)));return A.encode(e,{signal:a.signal,plugins:[e=>{if(e instanceof Error){let{name:t,message:r,stack:n}=i===s.ServerMode.Production?o.sanitizeError(e,i):e;return["SanitizedError",t,r,n]}if(e instanceof n.UNSAFE_ErrorResponseImpl){let{data:t,status:r,statusText:n}=e;return["ErrorResponse",t,r,n]}if(e&&typeof e==="object"&&l in e){return["SingleFetchRedirect",e[l]]}}],postPlugins:[e=>{if(!e)return;if(typeof e!=="object")return;return["SingleFetchClassInstance",Object.fromEntries(Object.entries(e))]},()=>["SingleFetchFallback"]]})}function data(e,t){return n.data(e,t)}t.SINGLE_FETCH_REDIRECT_STATUS=c;t.SingleFetchRedirectSymbol=l;t.data=data;t.encodeViaTurboStream=encodeViaTurboStream;t.getSingleFetchDataStrategy=getSingleFetchDataStrategy;t.getSingleFetchRedirect=getSingleFetchRedirect;t.singleFetchAction=singleFetchAction;t.singleFetchLoaders=singleFetchLoaders},8626:function(e,t){"use strict";
302
302
  /**
303
303
  * @remix-run/server-runtime v2.16.8
304
304
  *
@@ -308,7 +308,7 @@
308
308
  * LICENSE.md file in the root directory of this source tree.
309
309
  *
310
310
  * @license MIT
311
- */Object.defineProperty(t,"__esModule",{value:true});class MaxPartSizeExceededError extends Error{constructor(e,t){super(`Field "${e}" exceeded upload size of ${t} bytes.`);this.field=e;this.maxBytes=t}}t.MaxPartSizeExceededError=MaxPartSizeExceededError},2282:function(e,t,r){"use strict";
311
+ */Object.defineProperty(t,"__esModule",{value:true});class MaxPartSizeExceededError extends Error{constructor(e,t){super(`Field "${e}" exceeded upload size of ${t} bytes.`);this.field=e;this.maxBytes=t}}t.MaxPartSizeExceededError=MaxPartSizeExceededError},9811:function(e,t,r){"use strict";
312
312
  /**
313
313
  * @remix-run/server-runtime v2.16.8
314
314
  *
@@ -318,7 +318,7 @@
318
318
  * LICENSE.md file in the root directory of this source tree.
319
319
  *
320
320
  * @license MIT
321
- */Object.defineProperty(t,"__esModule",{value:true});var n=r(5141);function createMemoryUploadHandler({filter:e,maxPartSize:t=3e6}={}){return async({filename:r,contentType:A,name:o,data:i})=>{if(e&&!await e({filename:r,contentType:A,name:o})){return undefined}let s=0;let a=[];for await(let e of i){s+=e.byteLength;if(s>t){throw new n.MaxPartSizeExceededError(o,t)}a.push(e)}if(typeof r==="string"){return new File(a,r,{type:A})}return await new Blob(a,{type:A}).text()}}t.createMemoryUploadHandler=createMemoryUploadHandler},8147:function(e,t){"use strict";
321
+ */Object.defineProperty(t,"__esModule",{value:true});var n=r(8626);function createMemoryUploadHandler({filter:e,maxPartSize:t=3e6}={}){return async({filename:r,contentType:A,name:o,data:i})=>{if(e&&!await e({filename:r,contentType:A,name:o})){return undefined}let s=0;let a=[];for await(let e of i){s+=e.byteLength;if(s>t){throw new n.MaxPartSizeExceededError(o,t)}a.push(e)}if(typeof r==="string"){return new File(a,r,{type:A})}return await new Blob(a,{type:A}).text()}}t.createMemoryUploadHandler=createMemoryUploadHandler},7026:function(e,t){"use strict";
322
322
  /**
323
323
  * @remix-run/server-runtime v2.16.8
324
324
  *
@@ -359,4 +359,4 @@
359
359
  * LICENSE.md file in the root directory of this source tree.
360
360
  *
361
361
  * @license MIT
362
- */Object.defineProperty(e,"__esModule",{value:true});var t=__nccwpck_require__(8947);e.createRequestHandler=t.createRequestHandler}();module.exports=r})();
362
+ */Object.defineProperty(e,"__esModule",{value:true});var t=__nccwpck_require__(9440);e.createRequestHandler=t.createRequestHandler}();module.exports=r})();
@@ -10,12 +10,12 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.8.3/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.8.3/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../../../../../../typescript@5.8.3/node_modules/typescript/bin/tsc" "$@"
18
+ exec "$basedir/node" "$basedir/../../../../../../typescript@5.9.3/node_modules/typescript/bin/tsc" "$@"
19
19
  else
20
- exec node "$basedir/../../../../../../typescript@5.8.3/node_modules/typescript/bin/tsc" "$@"
20
+ exec node "$basedir/../../../../../../typescript@5.9.3/node_modules/typescript/bin/tsc" "$@"
21
21
  fi
@@ -10,12 +10,12 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.8.3/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.8.3/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/typescript@5.9.3/node_modules:/home/runner/work/tego-standard/tego-standard/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../../../../../../typescript@5.8.3/node_modules/typescript/bin/tsserver" "$@"
18
+ exec "$basedir/node" "$basedir/../../../../../../typescript@5.9.3/node_modules/typescript/bin/tsserver" "$@"
19
19
  else
20
- exec node "$basedir/../../../../../../typescript@5.8.3/node_modules/typescript/bin/tsserver" "$@"
20
+ exec node "$basedir/../../../../../../typescript@5.9.3/node_modules/typescript/bin/tsserver" "$@"
21
21
  fi
@@ -1 +1 @@
1
- {"name":"@remix-run/express","version":"2.16.8","description":"Express server request handler for Remix","bugs":{"url":"https://github.com/remix-run/remix/issues"},"repository":{"type":"git","url":"https://github.com/remix-run/remix","directory":"packages/remix-express"},"license":"MIT","main":"dist/index.js","typings":"dist/index.d.ts","dependencies":{"@remix-run/node":"2.16.8"},"devDependencies":{"@types/express":"^4.17.9","@types/node":"^18.17.1","@types/supertest":"^2.0.10","express":"^4.20.0","node-mocks-http":"^1.10.1","supertest":"^6.3.3","typescript":"^5.1.6"},"peerDependencies":{"express":"^4.20.0","typescript":"^5.1.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"engines":{"node":">=18.0.0"},"files":["dist/","CHANGELOG.md","LICENSE.md","README.md"],"scripts":{"tsc":"tsc"},"_lastModified":"2025-11-20T08:11:34.196Z"}
1
+ {"name":"@remix-run/express","version":"2.16.8","description":"Express server request handler for Remix","bugs":{"url":"https://github.com/remix-run/remix/issues"},"repository":{"type":"git","url":"https://github.com/remix-run/remix","directory":"packages/remix-express"},"license":"MIT","main":"dist/index.js","typings":"dist/index.d.ts","dependencies":{"@remix-run/node":"2.16.8"},"devDependencies":{"@types/express":"^4.17.9","@types/node":"^18.17.1","@types/supertest":"^2.0.10","express":"^4.20.0","node-mocks-http":"^1.10.1","supertest":"^6.3.3","typescript":"^5.1.6"},"peerDependencies":{"express":"^4.20.0","typescript":"^5.1.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"engines":{"node":">=18.0.0"},"files":["dist/","CHANGELOG.md","LICENSE.md","README.md"],"scripts":{"tsc":"tsc"},"_lastModified":"2025-12-05T07:12:48.043Z"}
@@ -1 +1 @@
1
- {"name":"express","description":"Fast, unopinionated, minimalist web framework","version":"4.21.2","author":"TJ Holowaychuk <tj@vision-media.ca>","contributors":["Aaron Heckmann <aaron.heckmann+github@gmail.com>","Ciaran Jessup <ciaranj@gmail.com>","Douglas Christopher Wilson <doug@somethingdoug.com>","Guillermo Rauch <rauchg@gmail.com>","Jonathan Ong <me@jongleberry.com>","Roman Shtylman <shtylman+expressjs@gmail.com>","Young Jae Sim <hanul@hanul.me>"],"license":"MIT","repository":"expressjs/express","homepage":"http://expressjs.com/","funding":{"type":"opencollective","url":"https://opencollective.com/express"},"keywords":["express","framework","sinatra","web","http","rest","restful","router","app","api"],"dependencies":{"accepts":"~1.3.8","array-flatten":"1.1.1","body-parser":"1.20.3","content-disposition":"0.5.4","content-type":"~1.0.4","cookie":"0.7.1","cookie-signature":"1.0.6","debug":"2.6.9","depd":"2.0.0","encodeurl":"~2.0.0","escape-html":"~1.0.3","etag":"~1.8.1","finalhandler":"1.3.1","fresh":"0.5.2","http-errors":"2.0.0","merge-descriptors":"1.0.3","methods":"~1.1.2","on-finished":"2.4.1","parseurl":"~1.3.3","path-to-regexp":"0.1.12","proxy-addr":"~2.0.7","qs":"6.13.0","range-parser":"~1.2.1","safe-buffer":"5.2.1","send":"0.19.0","serve-static":"1.16.2","setprototypeof":"1.2.0","statuses":"2.0.1","type-is":"~1.6.18","utils-merge":"1.0.1","vary":"~1.1.2"},"devDependencies":{"after":"0.8.2","connect-redis":"3.4.2","cookie-parser":"1.4.6","cookie-session":"2.0.0","ejs":"3.1.9","eslint":"8.47.0","express-session":"1.17.2","hbs":"4.2.0","marked":"0.7.0","method-override":"3.0.0","mocha":"10.2.0","morgan":"1.10.0","nyc":"15.1.0","pbkdf2-password":"1.2.1","supertest":"6.3.0","vhost":"~3.0.2"},"engines":{"node":">= 0.10.0"},"files":["LICENSE","History.md","Readme.md","index.js","lib/"],"scripts":{"lint":"eslint .","test":"mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/","test-ci":"nyc --exclude examples --exclude test --exclude benchmarks --reporter=lcovonly --reporter=text npm test","test-cov":"nyc --exclude examples --exclude test --exclude benchmarks --reporter=html --reporter=text npm test","test-tap":"mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"},"_lastModified":"2025-11-20T08:11:35.036Z"}
1
+ {"name":"express","description":"Fast, unopinionated, minimalist web framework","version":"4.21.2","author":"TJ Holowaychuk <tj@vision-media.ca>","contributors":["Aaron Heckmann <aaron.heckmann+github@gmail.com>","Ciaran Jessup <ciaranj@gmail.com>","Douglas Christopher Wilson <doug@somethingdoug.com>","Guillermo Rauch <rauchg@gmail.com>","Jonathan Ong <me@jongleberry.com>","Roman Shtylman <shtylman+expressjs@gmail.com>","Young Jae Sim <hanul@hanul.me>"],"license":"MIT","repository":"expressjs/express","homepage":"http://expressjs.com/","funding":{"type":"opencollective","url":"https://opencollective.com/express"},"keywords":["express","framework","sinatra","web","http","rest","restful","router","app","api"],"dependencies":{"accepts":"~1.3.8","array-flatten":"1.1.1","body-parser":"1.20.3","content-disposition":"0.5.4","content-type":"~1.0.4","cookie":"0.7.1","cookie-signature":"1.0.6","debug":"2.6.9","depd":"2.0.0","encodeurl":"~2.0.0","escape-html":"~1.0.3","etag":"~1.8.1","finalhandler":"1.3.1","fresh":"0.5.2","http-errors":"2.0.0","merge-descriptors":"1.0.3","methods":"~1.1.2","on-finished":"2.4.1","parseurl":"~1.3.3","path-to-regexp":"0.1.12","proxy-addr":"~2.0.7","qs":"6.13.0","range-parser":"~1.2.1","safe-buffer":"5.2.1","send":"0.19.0","serve-static":"1.16.2","setprototypeof":"1.2.0","statuses":"2.0.1","type-is":"~1.6.18","utils-merge":"1.0.1","vary":"~1.1.2"},"devDependencies":{"after":"0.8.2","connect-redis":"3.4.2","cookie-parser":"1.4.6","cookie-session":"2.0.0","ejs":"3.1.9","eslint":"8.47.0","express-session":"1.17.2","hbs":"4.2.0","marked":"0.7.0","method-override":"3.0.0","mocha":"10.2.0","morgan":"1.10.0","nyc":"15.1.0","pbkdf2-password":"1.2.1","supertest":"6.3.0","vhost":"~3.0.2"},"engines":{"node":">= 0.10.0"},"files":["LICENSE","History.md","Readme.md","index.js","lib/"],"scripts":{"lint":"eslint .","test":"mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/","test-ci":"nyc --exclude examples --exclude test --exclude benchmarks --reporter=lcovonly --reporter=text npm test","test-cov":"nyc --exclude examples --exclude test --exclude benchmarks --reporter=html --reporter=text npm test","test-tap":"mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"},"_lastModified":"2025-12-05T07:12:48.804Z"}
File without changes
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tachybase/plugin-adapter-remix",
3
3
  "displayName": "Adapter remix",
4
- "version": "1.6.0",
4
+ "version": "1.6.1",
5
5
  "description": "integrate and manage remix server.",
6
6
  "keywords": [
7
7
  "System management"
@@ -11,9 +11,9 @@
11
11
  "devDependencies": {
12
12
  "@remix-run/express": "^2.16.8",
13
13
  "@remix-run/react": "^2.15.2",
14
- "@tachybase/test": "1.3.52",
15
- "@tego/client": "1.3.52",
16
- "@tego/server": "1.3.52",
14
+ "@tachybase/test": "1.6.0-alpha.9",
15
+ "@tego/client": "1.6.0-alpha.9",
16
+ "@tego/server": "1.6.0-alpha.9",
17
17
  "cross-env": "^7.0.3",
18
18
  "express": "4.21.2",
19
19
  "isbot": "^5.1.29",
@@ -21,7 +21,7 @@
21
21
  "react": "18.3.1",
22
22
  "sort-by": "^1.2.0",
23
23
  "tiny-invariant": "^1.3.3",
24
- "@tachybase/client": "1.6.0"
24
+ "@tachybase/client": "1.6.1"
25
25
  },
26
26
  "description.zh-CN": "集成和管理 Remix 服务器",
27
27
  "displayName.zh-CN": "Remix管理",