@weppy/roblox-mcp 2.0.0 → 2.0.2
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.
- package/.claude-plugin/marketplace.json +3 -3
- package/CHANGELOG.md +19 -0
- package/COMMERCIAL-LICENSE.md +13 -0
- package/Dockerfile +13 -0
- package/LICENSE +648 -40
- package/README.md +31 -2
- package/TRADEMARKS.md +18 -0
- package/docs/assets/screenshots/license/license-dashboard.png +3 -0
- package/docs/assets/screenshots/license/license-plugin.png +3 -0
- package/docs/compatibility.md +1 -1
- package/docs/en/installation/README.md +25 -2
- package/docs/en/installation/ai-apps/cursor.md +77 -0
- package/docs/en/installation/roblox-explorer.md +5 -5
- package/docs/en/installation/roblox-plugin.md +1 -0
- package/docs/en/pro-upgrade.md +36 -12
- package/docs/es/README.md +29 -10
- package/docs/es/installation/README.md +25 -2
- package/docs/es/installation/ai-apps/cursor.md +77 -0
- package/docs/es/installation/roblox-plugin.md +1 -0
- package/docs/es/pro-upgrade.md +37 -13
- package/docs/id/README.md +29 -10
- package/docs/id/installation/README.md +25 -2
- package/docs/id/installation/ai-apps/cursor.md +77 -0
- package/docs/id/installation/roblox-plugin.md +1 -0
- package/docs/id/pro-upgrade.md +36 -12
- package/docs/ja/README.md +29 -10
- package/docs/ja/installation/README.md +25 -2
- package/docs/ja/installation/ai-apps/cursor.md +77 -0
- package/docs/ja/installation/roblox-plugin.md +1 -0
- package/docs/ja/pro-upgrade.md +35 -11
- package/docs/ko/README.md +28 -9
- package/docs/ko/installation/README.md +25 -2
- package/docs/ko/installation/ai-apps/cursor.md +77 -0
- package/docs/ko/installation/roblox-explorer.md +5 -5
- package/docs/ko/installation/roblox-plugin.md +1 -0
- package/docs/ko/pro-upgrade.md +35 -11
- package/docs/pt-br/README.md +29 -10
- package/docs/pt-br/installation/README.md +25 -2
- package/docs/pt-br/installation/ai-apps/cursor.md +77 -0
- package/docs/pt-br/installation/roblox-plugin.md +1 -0
- package/docs/pt-br/pro-upgrade.md +37 -13
- package/glama.json +7 -0
- package/install.ps1 +277 -0
- package/install.sh +307 -0
- package/llms-full.txt +92 -7
- package/llms.txt +13 -1
- package/package.json +14 -3
- package/plugins/weppy-roblox-mcp/.claude-plugin/plugin.json +2 -2
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{ChangelogDetailPage-BOp7G4Fi.js → ChangelogDetailPage-IgHLnaEX.js} +1 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ChangelogPage-Br-A5H5t.css +1 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ChangelogPage-Dao4jPQA.js +1 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ConfirmModal-CvXLNYq0.js +1 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ConfirmModal-tvPLhSO9.css +1 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ConnectionPage-Bl7tLgL2.js +1 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ConnectionPage-CN3LYLAT.css +1 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/InfoLabel-vz7vtbbV.js +1 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{OverviewPage-DS-g_EC0.js → OverviewPage-BDDctbAl.js} +1 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/PlaytestPage-C0iCoAQp.js +1 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/PlaytestPage-LnuHE5FL.css +1 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{PropertyDiff-qdFEmTM4.js → PropertyDiff-CbDafceC.js} +1 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/SettingsPage-CJs9ctOf.js +1 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/SettingsPage-DP9OFhNb.css +1 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{StatusBadge-CC_OzjmT.js → StatusBadge-BMTgkxDJ.js} +1 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/SyncPage-Bf1SdHGg.css +1 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/SyncPage-BfXIBNVS.js +4 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{TierPromoPanel-DzFynur7.js → TierPromoPanel-CUrTMsXB.js} +1 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/TierPromoProgress-DBA-FZGE.js +1 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ToolsPage-BZZZ3FXe.css +1 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ToolsPage-O4dXhEU-.js +1 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/index-CkXvRg-O.js +69 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{tier-promo-config-CckH43fU.js → tier-promo-config-B9lIKWCQ.js} +1 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{useLiveUptime-DZCw70vn.js → useLiveUptime-DXXyWm6j.js} +1 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/index.html +1 -1
- package/plugins/weppy-roblox-mcp/dist/index.js +58 -57
- package/plugins/weppy-roblox-mcp/roblox-plugin/WeppyRobloxMCP.rbxm +3 -0
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ChangelogPage-ByQDwNhh.css +0 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ChangelogPage-DGhZm1j7.js +0 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ConnectionPage-CkQVyTc5.css +0 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ConnectionPage-DXv_C7i6.js +0 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/InfoLabel-CszBT8rJ.js +0 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/PlaytestPage-C4X6-jp-.js +0 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/PlaytestPage-emQ5xjZz.css +0 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/SettingsPage-BtjNT-j0.js +0 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/SettingsPage-NF_CPSvZ.css +0 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/SyncPage-BNHvpQxD.css +0 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/SyncPage-BOYoftuM.js +0 -4
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/TierPromoProgress-DkpXj7Ui.js +0 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ToolsPage-CZsA-7CL.js +0 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ToolsPage-cVoMPYAn.css +0 -1
- package/plugins/weppy-roblox-mcp/dashboard/dist/assets/index-BYvG5KEz.js +0 -69
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/OverviewPage-DS-g_EC0.js","assets/InfoLabel-CszBT8rJ.js","assets/StatusBadge-CC_OzjmT.js","assets/StatusBadge-C2zYt5iE.css","assets/PropertyDiff-qdFEmTM4.js","assets/PropertyDiff-Cbx8P1zh.css","assets/tier-promo-config-CckH43fU.js","assets/tier-promo-config-CJ-J0n2q.css","assets/useLiveUptime-DZCw70vn.js","assets/TierPromoProgress-DkpXj7Ui.js","assets/OverviewPage-CS05LsEh.css","assets/ChangelogPage-DGhZm1j7.js","assets/ChangelogPage-ByQDwNhh.css","assets/ChangelogDetailPage-BOp7G4Fi.js","assets/ChangelogDetailPage-C2oKsYGC.css","assets/ConnectionPage-DXv_C7i6.js","assets/ConnectionPage-CkQVyTc5.css","assets/SyncPage-BOYoftuM.js","assets/TierPromoPanel-DzFynur7.js","assets/SyncPage-BNHvpQxD.css","assets/PlaytestPage-C4X6-jp-.js","assets/PlaytestPage-emQ5xjZz.css","assets/ToolsPage-CZsA-7CL.js","assets/ToolsPage-cVoMPYAn.css","assets/SettingsPage-BtjNT-j0.js","assets/SettingsPage-NF_CPSvZ.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
var Wf=Object.defineProperty;var qf=(i,s,l)=>s in i?Wf(i,s,{enumerable:!0,configurable:!0,writable:!0,value:l}):i[s]=l;var Xo=(i,s,l)=>qf(i,typeof s!="symbol"?s+"":s,l);function Dd(i,s){for(var l=0;l<s.length;l++){const u=s[l];if(typeof u!="string"&&!Array.isArray(u)){for(const d in u)if(d!=="default"&&!(d in i)){const p=Object.getOwnPropertyDescriptor(u,d);p&&Object.defineProperty(i,d,p.get?p:{enumerable:!0,get:()=>u[d]})}}}return Object.freeze(Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}))}(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))u(d);new MutationObserver(d=>{for(const p of d)if(p.type==="childList")for(const f of p.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&u(f)}).observe(document,{childList:!0,subtree:!0});function l(d){const p={};return d.integrity&&(p.integrity=d.integrity),d.referrerPolicy&&(p.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?p.credentials="include":d.crossOrigin==="anonymous"?p.credentials="omit":p.credentials="same-origin",p}function u(d){if(d.ep)return;d.ep=!0;const p=l(d);fetch(d.href,p)}})();function Od(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var ol={exports:{}},Wr={},rl={exports:{}},ve={};/**
|
|
3
|
-
* @license React
|
|
4
|
-
* react.production.min.js
|
|
5
|
-
*
|
|
6
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
7
|
-
*
|
|
8
|
-
* This source code is licensed under the MIT license found in the
|
|
9
|
-
* LICENSE file in the root directory of this source tree.
|
|
10
|
-
*/var Zu;function Kf(){if(Zu)return ve;Zu=1;var i=Symbol.for("react.element"),s=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),u=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),p=Symbol.for("react.provider"),f=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),P=Symbol.for("react.memo"),E=Symbol.for("react.lazy"),C=Symbol.iterator;function M(w){return w===null||typeof w!="object"?null:(w=C&&w[C]||w["@@iterator"],typeof w=="function"?w:null)}var D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},H=Object.assign,O={};function U(w,z,pe){this.props=w,this.context=z,this.refs=O,this.updater=pe||D}U.prototype.isReactComponent={},U.prototype.setState=function(w,z){if(typeof w!="object"&&typeof w!="function"&&w!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,w,z,"setState")},U.prototype.forceUpdate=function(w){this.updater.enqueueForceUpdate(this,w,"forceUpdate")};function me(){}me.prototype=U.prototype;function W(w,z,pe){this.props=w,this.context=z,this.refs=O,this.updater=pe||D}var de=W.prototype=new me;de.constructor=W,H(de,U.prototype),de.isPureReactComponent=!0;var ae=Array.isArray,ke=Object.prototype.hasOwnProperty,je={current:null},T={key:!0,ref:!0,__self:!0,__source:!0};function te(w,z,pe){var he,fe={},ye=null,Ce=null;if(z!=null)for(he in z.ref!==void 0&&(Ce=z.ref),z.key!==void 0&&(ye=""+z.key),z)ke.call(z,he)&&!T.hasOwnProperty(he)&&(fe[he]=z[he]);var be=arguments.length-2;if(be===1)fe.children=pe;else if(1<be){for(var Ue=Array(be),ht=0;ht<be;ht++)Ue[ht]=arguments[ht+2];fe.children=Ue}if(w&&w.defaultProps)for(he in be=w.defaultProps,be)fe[he]===void 0&&(fe[he]=be[he]);return{$$typeof:i,type:w,key:ye,ref:Ce,props:fe,_owner:je.current}}function Pe(w,z){return{$$typeof:i,type:w.type,key:z,ref:w.ref,props:w.props,_owner:w._owner}}function le(w){return typeof w=="object"&&w!==null&&w.$$typeof===i}function Be(w){var z={"=":"=0",":":"=2"};return"$"+w.replace(/[=:]/g,function(pe){return z[pe]})}var Me=/\/+/g;function Ne(w,z){return typeof w=="object"&&w!==null&&w.key!=null?Be(""+w.key):z.toString(36)}function Fe(w,z,pe,he,fe){var ye=typeof w;(ye==="undefined"||ye==="boolean")&&(w=null);var Ce=!1;if(w===null)Ce=!0;else switch(ye){case"string":case"number":Ce=!0;break;case"object":switch(w.$$typeof){case i:case s:Ce=!0}}if(Ce)return Ce=w,fe=fe(Ce),w=he===""?"."+Ne(Ce,0):he,ae(fe)?(pe="",w!=null&&(pe=w.replace(Me,"$&/")+"/"),Fe(fe,z,pe,"",function(ht){return ht})):fe!=null&&(le(fe)&&(fe=Pe(fe,pe+(!fe.key||Ce&&Ce.key===fe.key?"":(""+fe.key).replace(Me,"$&/")+"/")+w)),z.push(fe)),1;if(Ce=0,he=he===""?".":he+":",ae(w))for(var be=0;be<w.length;be++){ye=w[be];var Ue=he+Ne(ye,be);Ce+=Fe(ye,z,pe,Ue,fe)}else if(Ue=M(w),typeof Ue=="function")for(w=Ue.call(w),be=0;!(ye=w.next()).done;)ye=ye.value,Ue=he+Ne(ye,be++),Ce+=Fe(ye,z,pe,Ue,fe);else if(ye==="object")throw z=String(w),Error("Objects are not valid as a React child (found: "+(z==="[object Object]"?"object with keys {"+Object.keys(w).join(", ")+"}":z)+"). If you meant to render a collection of children, use an array instead.");return Ce}function Xe(w,z,pe){if(w==null)return w;var he=[],fe=0;return Fe(w,he,"","",function(ye){return z.call(pe,ye,fe++)}),he}function tt(w){if(w._status===-1){var z=w._result;z=z(),z.then(function(pe){(w._status===0||w._status===-1)&&(w._status=1,w._result=pe)},function(pe){(w._status===0||w._status===-1)&&(w._status=2,w._result=pe)}),w._status===-1&&(w._status=0,w._result=z)}if(w._status===1)return w._result.default;throw w._result}var De={current:null},B={transition:null},oe={ReactCurrentDispatcher:De,ReactCurrentBatchConfig:B,ReactCurrentOwner:je};function q(){throw Error("act(...) is not supported in production builds of React.")}return ve.Children={map:Xe,forEach:function(w,z,pe){Xe(w,function(){z.apply(this,arguments)},pe)},count:function(w){var z=0;return Xe(w,function(){z++}),z},toArray:function(w){return Xe(w,function(z){return z})||[]},only:function(w){if(!le(w))throw Error("React.Children.only expected to receive a single React element child.");return w}},ve.Component=U,ve.Fragment=l,ve.Profiler=d,ve.PureComponent=W,ve.StrictMode=u,ve.Suspense=m,ve.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=oe,ve.act=q,ve.cloneElement=function(w,z,pe){if(w==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+w+".");var he=H({},w.props),fe=w.key,ye=w.ref,Ce=w._owner;if(z!=null){if(z.ref!==void 0&&(ye=z.ref,Ce=je.current),z.key!==void 0&&(fe=""+z.key),w.type&&w.type.defaultProps)var be=w.type.defaultProps;for(Ue in z)ke.call(z,Ue)&&!T.hasOwnProperty(Ue)&&(he[Ue]=z[Ue]===void 0&&be!==void 0?be[Ue]:z[Ue])}var Ue=arguments.length-2;if(Ue===1)he.children=pe;else if(1<Ue){be=Array(Ue);for(var ht=0;ht<Ue;ht++)be[ht]=arguments[ht+2];he.children=be}return{$$typeof:i,type:w.type,key:fe,ref:ye,props:he,_owner:Ce}},ve.createContext=function(w){return w={$$typeof:f,_currentValue:w,_currentValue2:w,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},w.Provider={$$typeof:p,_context:w},w.Consumer=w},ve.createElement=te,ve.createFactory=function(w){var z=te.bind(null,w);return z.type=w,z},ve.createRef=function(){return{current:null}},ve.forwardRef=function(w){return{$$typeof:v,render:w}},ve.isValidElement=le,ve.lazy=function(w){return{$$typeof:E,_payload:{_status:-1,_result:w},_init:tt}},ve.memo=function(w,z){return{$$typeof:P,type:w,compare:z===void 0?null:z}},ve.startTransition=function(w){var z=B.transition;B.transition={};try{w()}finally{B.transition=z}},ve.unstable_act=q,ve.useCallback=function(w,z){return De.current.useCallback(w,z)},ve.useContext=function(w){return De.current.useContext(w)},ve.useDebugValue=function(){},ve.useDeferredValue=function(w){return De.current.useDeferredValue(w)},ve.useEffect=function(w,z){return De.current.useEffect(w,z)},ve.useId=function(){return De.current.useId()},ve.useImperativeHandle=function(w,z,pe){return De.current.useImperativeHandle(w,z,pe)},ve.useInsertionEffect=function(w,z){return De.current.useInsertionEffect(w,z)},ve.useLayoutEffect=function(w,z){return De.current.useLayoutEffect(w,z)},ve.useMemo=function(w,z){return De.current.useMemo(w,z)},ve.useReducer=function(w,z,pe){return De.current.useReducer(w,z,pe)},ve.useRef=function(w){return De.current.useRef(w)},ve.useState=function(w){return De.current.useState(w)},ve.useSyncExternalStore=function(w,z,pe){return De.current.useSyncExternalStore(w,z,pe)},ve.useTransition=function(){return De.current.useTransition()},ve.version="18.3.1",ve}var ed;function vl(){return ed||(ed=1,rl.exports=Kf()),rl.exports}/**
|
|
11
|
-
* @license React
|
|
12
|
-
* react-jsx-runtime.production.min.js
|
|
13
|
-
*
|
|
14
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
15
|
-
*
|
|
16
|
-
* This source code is licensed under the MIT license found in the
|
|
17
|
-
* LICENSE file in the root directory of this source tree.
|
|
18
|
-
*/var td;function $f(){if(td)return Wr;td=1;var i=vl(),s=Symbol.for("react.element"),l=Symbol.for("react.fragment"),u=Object.prototype.hasOwnProperty,d=i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};function f(v,m,P){var E,C={},M=null,D=null;P!==void 0&&(M=""+P),m.key!==void 0&&(M=""+m.key),m.ref!==void 0&&(D=m.ref);for(E in m)u.call(m,E)&&!p.hasOwnProperty(E)&&(C[E]=m[E]);if(v&&v.defaultProps)for(E in m=v.defaultProps,m)C[E]===void 0&&(C[E]=m[E]);return{$$typeof:s,type:v,key:M,ref:D,props:C,_owner:d.current}}return Wr.Fragment=l,Wr.jsx=f,Wr.jsxs=f,Wr}var nd;function Qf(){return nd||(nd=1,ol.exports=$f()),ol.exports}var ue=Qf(),ua={},il={exports:{}},Ct={},al={exports:{}},sl={};/**
|
|
19
|
-
* @license React
|
|
20
|
-
* scheduler.production.min.js
|
|
21
|
-
*
|
|
22
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
23
|
-
*
|
|
24
|
-
* This source code is licensed under the MIT license found in the
|
|
25
|
-
* LICENSE file in the root directory of this source tree.
|
|
26
|
-
*/var od;function Gf(){return od||(od=1,(function(i){function s(B,oe){var q=B.length;B.push(oe);e:for(;0<q;){var w=q-1>>>1,z=B[w];if(0<d(z,oe))B[w]=oe,B[q]=z,q=w;else break e}}function l(B){return B.length===0?null:B[0]}function u(B){if(B.length===0)return null;var oe=B[0],q=B.pop();if(q!==oe){B[0]=q;e:for(var w=0,z=B.length,pe=z>>>1;w<pe;){var he=2*(w+1)-1,fe=B[he],ye=he+1,Ce=B[ye];if(0>d(fe,q))ye<z&&0>d(Ce,fe)?(B[w]=Ce,B[ye]=q,w=ye):(B[w]=fe,B[he]=q,w=he);else if(ye<z&&0>d(Ce,q))B[w]=Ce,B[ye]=q,w=ye;else break e}}return oe}function d(B,oe){var q=B.sortIndex-oe.sortIndex;return q!==0?q:B.id-oe.id}if(typeof performance=="object"&&typeof performance.now=="function"){var p=performance;i.unstable_now=function(){return p.now()}}else{var f=Date,v=f.now();i.unstable_now=function(){return f.now()-v}}var m=[],P=[],E=1,C=null,M=3,D=!1,H=!1,O=!1,U=typeof setTimeout=="function"?setTimeout:null,me=typeof clearTimeout=="function"?clearTimeout:null,W=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function de(B){for(var oe=l(P);oe!==null;){if(oe.callback===null)u(P);else if(oe.startTime<=B)u(P),oe.sortIndex=oe.expirationTime,s(m,oe);else break;oe=l(P)}}function ae(B){if(O=!1,de(B),!H)if(l(m)!==null)H=!0,tt(ke);else{var oe=l(P);oe!==null&&De(ae,oe.startTime-B)}}function ke(B,oe){H=!1,O&&(O=!1,me(te),te=-1),D=!0;var q=M;try{for(de(oe),C=l(m);C!==null&&(!(C.expirationTime>oe)||B&&!Be());){var w=C.callback;if(typeof w=="function"){C.callback=null,M=C.priorityLevel;var z=w(C.expirationTime<=oe);oe=i.unstable_now(),typeof z=="function"?C.callback=z:C===l(m)&&u(m),de(oe)}else u(m);C=l(m)}if(C!==null)var pe=!0;else{var he=l(P);he!==null&&De(ae,he.startTime-oe),pe=!1}return pe}finally{C=null,M=q,D=!1}}var je=!1,T=null,te=-1,Pe=5,le=-1;function Be(){return!(i.unstable_now()-le<Pe)}function Me(){if(T!==null){var B=i.unstable_now();le=B;var oe=!0;try{oe=T(!0,B)}finally{oe?Ne():(je=!1,T=null)}}else je=!1}var Ne;if(typeof W=="function")Ne=function(){W(Me)};else if(typeof MessageChannel<"u"){var Fe=new MessageChannel,Xe=Fe.port2;Fe.port1.onmessage=Me,Ne=function(){Xe.postMessage(null)}}else Ne=function(){U(Me,0)};function tt(B){T=B,je||(je=!0,Ne())}function De(B,oe){te=U(function(){B(i.unstable_now())},oe)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(B){B.callback=null},i.unstable_continueExecution=function(){H||D||(H=!0,tt(ke))},i.unstable_forceFrameRate=function(B){0>B||125<B?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):Pe=0<B?Math.floor(1e3/B):5},i.unstable_getCurrentPriorityLevel=function(){return M},i.unstable_getFirstCallbackNode=function(){return l(m)},i.unstable_next=function(B){switch(M){case 1:case 2:case 3:var oe=3;break;default:oe=M}var q=M;M=oe;try{return B()}finally{M=q}},i.unstable_pauseExecution=function(){},i.unstable_requestPaint=function(){},i.unstable_runWithPriority=function(B,oe){switch(B){case 1:case 2:case 3:case 4:case 5:break;default:B=3}var q=M;M=B;try{return oe()}finally{M=q}},i.unstable_scheduleCallback=function(B,oe,q){var w=i.unstable_now();switch(typeof q=="object"&&q!==null?(q=q.delay,q=typeof q=="number"&&0<q?w+q:w):q=w,B){case 1:var z=-1;break;case 2:z=250;break;case 5:z=1073741823;break;case 4:z=1e4;break;default:z=5e3}return z=q+z,B={id:E++,callback:oe,priorityLevel:B,startTime:q,expirationTime:z,sortIndex:-1},q>w?(B.sortIndex=q,s(P,B),l(m)===null&&B===l(P)&&(O?(me(te),te=-1):O=!0,De(ae,q-w))):(B.sortIndex=z,s(m,B),H||D||(H=!0,tt(ke))),B},i.unstable_shouldYield=Be,i.unstable_wrapCallback=function(B){var oe=M;return function(){var q=M;M=oe;try{return B.apply(this,arguments)}finally{M=q}}}})(sl)),sl}var rd;function Yf(){return rd||(rd=1,al.exports=Gf()),al.exports}/**
|
|
27
|
-
* @license React
|
|
28
|
-
* react-dom.production.min.js
|
|
29
|
-
*
|
|
30
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
31
|
-
*
|
|
32
|
-
* This source code is licensed under the MIT license found in the
|
|
33
|
-
* LICENSE file in the root directory of this source tree.
|
|
34
|
-
*/var id;function Jf(){if(id)return Ct;id=1;var i=vl(),s=Yf();function l(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var u=new Set,d={};function p(e,t){f(e,t),f(e+"Capture",t)}function f(e,t){for(d[e]=t,e=0;e<t.length;e++)u.add(t[e])}var v=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),m=Object.prototype.hasOwnProperty,P=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,E={},C={};function M(e){return m.call(C,e)?!0:m.call(E,e)?!1:P.test(e)?C[e]=!0:(E[e]=!0,!1)}function D(e,t,n,o){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return o?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function H(e,t,n,o){if(t===null||typeof t>"u"||D(e,t,n,o))return!0;if(o)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function O(e,t,n,o,r,a,c){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=o,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=c}var U={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){U[e]=new O(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];U[t]=new O(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){U[e]=new O(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){U[e]=new O(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){U[e]=new O(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){U[e]=new O(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){U[e]=new O(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){U[e]=new O(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){U[e]=new O(e,5,!1,e.toLowerCase(),null,!1,!1)});var me=/[\-:]([a-z])/g;function W(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(me,W);U[t]=new O(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(me,W);U[t]=new O(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(me,W);U[t]=new O(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){U[e]=new O(e,1,!1,e.toLowerCase(),null,!1,!1)}),U.xlinkHref=new O("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){U[e]=new O(e,1,!1,e.toLowerCase(),null,!0,!0)});function de(e,t,n,o){var r=U.hasOwnProperty(t)?U[t]:null;(r!==null?r.type!==0:o||!(2<t.length)||t[0]!=="o"&&t[0]!=="O"||t[1]!=="n"&&t[1]!=="N")&&(H(t,n,r,o)&&(n=null),o||r===null?M(t)&&(n===null?e.removeAttribute(t):e.setAttribute(t,""+n)):r.mustUseProperty?e[r.propertyName]=n===null?r.type===3?!1:"":n:(t=r.attributeName,o=r.attributeNamespace,n===null?e.removeAttribute(t):(r=r.type,n=r===3||r===4&&n===!0?"":""+n,o?e.setAttributeNS(o,t,n):e.setAttribute(t,n))))}var ae=i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,ke=Symbol.for("react.element"),je=Symbol.for("react.portal"),T=Symbol.for("react.fragment"),te=Symbol.for("react.strict_mode"),Pe=Symbol.for("react.profiler"),le=Symbol.for("react.provider"),Be=Symbol.for("react.context"),Me=Symbol.for("react.forward_ref"),Ne=Symbol.for("react.suspense"),Fe=Symbol.for("react.suspense_list"),Xe=Symbol.for("react.memo"),tt=Symbol.for("react.lazy"),De=Symbol.for("react.offscreen"),B=Symbol.iterator;function oe(e){return e===null||typeof e!="object"?null:(e=B&&e[B]||e["@@iterator"],typeof e=="function"?e:null)}var q=Object.assign,w;function z(e){if(w===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);w=t&&t[1]||""}return`
|
|
35
|
-
`+w+e}var pe=!1;function he(e,t){if(!e||pe)return"";pe=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(t,[])}catch(_){var o=_}Reflect.construct(e,[],t)}else{try{t.call()}catch(_){o=_}e.call(t.prototype)}else{try{throw Error()}catch(_){o=_}e()}}catch(_){if(_&&o&&typeof _.stack=="string"){for(var r=_.stack.split(`
|
|
36
|
-
`),a=o.stack.split(`
|
|
37
|
-
`),c=r.length-1,g=a.length-1;1<=c&&0<=g&&r[c]!==a[g];)g--;for(;1<=c&&0<=g;c--,g--)if(r[c]!==a[g]){if(c!==1||g!==1)do if(c--,g--,0>g||r[c]!==a[g]){var y=`
|
|
38
|
-
`+r[c].replace(" at new "," at ");return e.displayName&&y.includes("<anonymous>")&&(y=y.replace("<anonymous>",e.displayName)),y}while(1<=c&&0<=g);break}}}finally{pe=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?z(e):""}function fe(e){switch(e.tag){case 5:return z(e.type);case 16:return z("Lazy");case 13:return z("Suspense");case 19:return z("SuspenseList");case 0:case 2:case 15:return e=he(e.type,!1),e;case 11:return e=he(e.type.render,!1),e;case 1:return e=he(e.type,!0),e;default:return""}}function ye(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case T:return"Fragment";case je:return"Portal";case Pe:return"Profiler";case te:return"StrictMode";case Ne:return"Suspense";case Fe:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Be:return(e.displayName||"Context")+".Consumer";case le:return(e._context.displayName||"Context")+".Provider";case Me:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Xe:return t=e.displayName||null,t!==null?t:ye(e.type)||"Memo";case tt:t=e._payload,e=e._init;try{return ye(e(t))}catch{}}return null}function Ce(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ye(t);case 8:return t===te?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function be(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Ue(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function ht(e){var t=Ue(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),o=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var r=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return r.call(this)},set:function(c){o=""+c,a.call(this,c)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return o},setValue:function(c){o=""+c},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function xo(e){e._valueTracker||(e._valueTracker=ht(e))}function it(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),o="";return e&&(o=Ue(e)?e.checked?"true":"false":e.value),e=o,e!==n?(t.setValue(e),!0):!1}function Bt(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Co(e,t){var n=t.checked;return q({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Zr(e,t){var n=t.defaultValue==null?"":t.defaultValue,o=t.checked!=null?t.checked:t.defaultChecked;n=be(t.value!=null?t.value:n),e._wrapperState={initialChecked:o,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Yt(e,t){t=t.checked,t!=null&&de(e,"checked",t,!1)}function or(e,t){Yt(e,t);var n=be(t.value),o=t.type;if(n!=null)o==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(o==="submit"||o==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?bo(e,t.type,n):t.hasOwnProperty("defaultValue")&&bo(e,t.type,be(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function ei(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var o=t.type;if(!(o!=="submit"&&o!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function bo(e,t,n){(t!=="number"||Bt(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Zn=Array.isArray;function xn(e,t,n,o){if(e=e.options,t){t={};for(var r=0;r<n.length;r++)t["$"+n[r]]=!0;for(n=0;n<e.length;n++)r=t.hasOwnProperty("$"+e[n].value),e[n].selected!==r&&(e[n].selected=r),r&&o&&(e[n].defaultSelected=!0)}else{for(n=""+be(n),t=null,r=0;r<e.length;r++){if(e[r].value===n){e[r].selected=!0,o&&(e[r].defaultSelected=!0);return}t!==null||e[r].disabled||(t=e[r])}t!==null&&(t.selected=!0)}}function rr(e,t){if(t.dangerouslySetInnerHTML!=null)throw Error(l(91));return q({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ti(e,t){var n=t.value;if(n==null){if(n=t.children,t=t.defaultValue,n!=null){if(t!=null)throw Error(l(92));if(Zn(n)){if(1<n.length)throw Error(l(93));n=n[0]}t=n}t==null&&(t=""),n=t}e._wrapperState={initialValue:be(n)}}function Jt(e,t){var n=be(t.value),o=be(t.defaultValue);n!=null&&(n=""+n,n!==e.value&&(e.value=n),t.defaultValue==null&&e.defaultValue!==n&&(e.defaultValue=n)),o!=null&&(e.defaultValue=""+o)}function Cn(e){var t=e.textContent;t===e._wrapperState.initialValue&&t!==""&&t!==null&&(e.value=t)}function ir(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function eo(e,t){return e==null||e==="http://www.w3.org/1999/xhtml"?ir(t):e==="http://www.w3.org/2000/svg"&&t==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var Et,zt=(function(e){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(t,n,o,r){MSApp.execUnsafeLocalFunction(function(){return e(t,n,o,r)})}:e})(function(e,t){if(e.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in e)e.innerHTML=t;else{for(Et=Et||document.createElement("div"),Et.innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=Et.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function bn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Xt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Pa=["Webkit","ms","Moz","O"];Object.keys(Xt).forEach(function(e){Pa.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Xt[t]=Xt[e]})});function Ft(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Xt.hasOwnProperty(e)&&Xt[e]?(""+t).trim():t+"px"}function ar(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var o=n.indexOf("--")===0,r=Ft(n,t[n],o);n==="float"&&(n="cssFloat"),o?e.setProperty(n,r):e[n]=r}}var ni=q({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Eo(e,t){if(t){if(ni[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(l(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(l(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(l(61))}if(t.style!=null&&typeof t.style!="object")throw Error(l(62))}}function sr(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var _o=null;function En(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Ro=null,Zt=null,en=null;function oi(e){if(e=Tr(e)){if(typeof Ro!="function")throw Error(l(280));var t=e.stateNode;t&&(t=bi(t),Ro(e.stateNode,e.type,t))}}function lr(e){Zt?en?en.push(e):en=[e]:Zt=e}function ri(){if(Zt){var e=Zt,t=en;if(en=Zt=null,oi(e),t)for(e=0;e<t.length;e++)oi(t[e])}}function cr(e,t){return e(t)}function to(){}var _n=!1;function ii(e,t,n){if(_n)return e(t,n);_n=!0;try{return cr(e,t,n)}finally{_n=!1,(Zt!==null||en!==null)&&(to(),ri())}}function no(e,t){var n=e.stateNode;if(n===null)return null;var o=bi(n);if(o===null)return null;n=o[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(o=!o.disabled)||(e=e.type,o=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!o;break e;default:e=!1}if(e)return null;if(n&&typeof n!="function")throw Error(l(231,t,typeof n));return n}var h=!1;if(v)try{var k={};Object.defineProperty(k,"passive",{get:function(){h=!0}}),window.addEventListener("test",k,k),window.removeEventListener("test",k,k)}catch{h=!1}function R(e,t,n,o,r,a,c,g,y){var _=Array.prototype.slice.call(arguments,3);try{t.apply(n,_)}catch(j){this.onError(j)}}var I=!1,V=null,ne=!1,se=null,Y={onError:function(e){I=!0,V=e}};function X(e,t,n,o,r,a,c,g,y){I=!1,V=null,R.apply(Y,arguments)}function $(e,t,n,o,r,a,c,g,y){if(X.apply(this,arguments),I){if(I){var _=V;I=!1,V=null}else throw Error(l(198));ne||(ne=!0,se=_)}}function G(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,(t.flags&4098)!==0&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function ge(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function we(e){if(G(e)!==e)throw Error(l(188))}function nt(e){var t=e.alternate;if(!t){if(t=G(e),t===null)throw Error(l(188));return t!==e?null:e}for(var n=e,o=t;;){var r=n.return;if(r===null)break;var a=r.alternate;if(a===null){if(o=r.return,o!==null){n=o;continue}break}if(r.child===a.child){for(a=r.child;a;){if(a===n)return we(r),e;if(a===o)return we(r),t;a=a.sibling}throw Error(l(188))}if(n.return!==o.return)n=r,o=a;else{for(var c=!1,g=r.child;g;){if(g===n){c=!0,n=r,o=a;break}if(g===o){c=!0,o=r,n=a;break}g=g.sibling}if(!c){for(g=a.child;g;){if(g===n){c=!0,n=a,o=r;break}if(g===o){c=!0,o=a,n=r;break}g=g.sibling}if(!c)throw Error(l(189))}}if(n.alternate!==o)throw Error(l(190))}if(n.tag!==3)throw Error(l(188));return n.stateNode.current===n?e:t}function ze(e){return e=nt(e),e!==null?Ee(e):null}function Ee(e){if(e.tag===5||e.tag===6)return e;for(e=e.child;e!==null;){var t=Ee(e);if(t!==null)return t;e=e.sibling}return null}var Ve=s.unstable_scheduleCallback,ln=s.unstable_cancelCallback,oo=s.unstable_shouldYield,Ut=s.unstable_requestPaint,Re=s.unstable_now,ur=s.unstable_getCurrentPriorityLevel,cn=s.unstable_ImmediatePriority,tn=s.unstable_UserBlockingPriority,un=s.unstable_NormalPriority,To=s.unstable_LowPriority,xe=s.unstable_IdlePriority,Oe=null,ct=null;function ro(e){if(ct&&typeof ct.onCommitFiberRoot=="function")try{ct.onCommitFiberRoot(Oe,e,void 0,(e.current.flags&128)===128)}catch{}}var Te=Math.clz32?Math.clz32:xa,Rn=Math.log,ai=Math.LN2;function xa(e){return e>>>=0,e===0?32:31-(Rn(e)/ai|0)|0}var si=64,li=4194304;function dr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ci(e,t){var n=e.pendingLanes;if(n===0)return 0;var o=0,r=e.suspendedLanes,a=e.pingedLanes,c=n&268435455;if(c!==0){var g=c&~r;g!==0?o=dr(g):(a&=c,a!==0&&(o=dr(a)))}else c=n&~r,c!==0?o=dr(c):a!==0&&(o=dr(a));if(o===0)return 0;if(t!==0&&t!==o&&(t&r)===0&&(r=o&-o,a=t&-t,r>=a||r===16&&(a&4194240)!==0))return t;if((o&4)!==0&&(o|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=o;0<t;)n=31-Te(t),r=1<<n,o|=e[n],t&=~r;return o}function lp(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function cp(e,t){for(var n=e.suspendedLanes,o=e.pingedLanes,r=e.expirationTimes,a=e.pendingLanes;0<a;){var c=31-Te(a),g=1<<c,y=r[c];y===-1?((g&n)===0||(g&o)!==0)&&(r[c]=lp(g,t)):y<=t&&(e.expiredLanes|=g),a&=~g}}function Ca(e){return e=e.pendingLanes&-1073741825,e!==0?e:e&1073741824?1073741824:0}function Ll(){var e=si;return si<<=1,(si&4194240)===0&&(si=64),e}function ba(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function pr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Te(t),e[t]=n}function up(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var o=e.eventTimes;for(e=e.expirationTimes;0<n;){var r=31-Te(n),a=1<<r;t[r]=0,o[r]=-1,e[r]=-1,n&=~a}}function Ea(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var o=31-Te(n),r=1<<o;r&t|e[o]&t&&(e[o]|=t),n&=~r}}var Ie=0;function Ml(e){return e&=-e,1<e?4<e?(e&268435455)!==0?16:536870912:4:1}var zl,_a,Il,Al,jl,Ra=!1,ui=[],Tn=null,Ln=null,Mn=null,fr=new Map,gr=new Map,zn=[],dp="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Nl(e,t){switch(e){case"focusin":case"focusout":Tn=null;break;case"dragenter":case"dragleave":Ln=null;break;case"mouseover":case"mouseout":Mn=null;break;case"pointerover":case"pointerout":fr.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":gr.delete(t.pointerId)}}function mr(e,t,n,o,r,a){return e===null||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:o,nativeEvent:a,targetContainers:[r]},t!==null&&(t=Tr(t),t!==null&&_a(t)),e):(e.eventSystemFlags|=o,t=e.targetContainers,r!==null&&t.indexOf(r)===-1&&t.push(r),e)}function pp(e,t,n,o,r){switch(t){case"focusin":return Tn=mr(Tn,e,t,n,o,r),!0;case"dragenter":return Ln=mr(Ln,e,t,n,o,r),!0;case"mouseover":return Mn=mr(Mn,e,t,n,o,r),!0;case"pointerover":var a=r.pointerId;return fr.set(a,mr(fr.get(a)||null,e,t,n,o,r)),!0;case"gotpointercapture":return a=r.pointerId,gr.set(a,mr(gr.get(a)||null,e,t,n,o,r)),!0}return!1}function Dl(e){var t=io(e.target);if(t!==null){var n=G(t);if(n!==null){if(t=n.tag,t===13){if(t=ge(n),t!==null){e.blockedOn=t,jl(e.priority,function(){Il(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function di(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=La(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(n===null){n=e.nativeEvent;var o=new n.constructor(n.type,n);_o=o,n.target.dispatchEvent(o),_o=null}else return t=Tr(n),t!==null&&_a(t),e.blockedOn=n,!1;t.shift()}return!0}function Ol(e,t,n){di(e)&&n.delete(t)}function fp(){Ra=!1,Tn!==null&&di(Tn)&&(Tn=null),Ln!==null&&di(Ln)&&(Ln=null),Mn!==null&&di(Mn)&&(Mn=null),fr.forEach(Ol),gr.forEach(Ol)}function hr(e,t){e.blockedOn===t&&(e.blockedOn=null,Ra||(Ra=!0,s.unstable_scheduleCallback(s.unstable_NormalPriority,fp)))}function yr(e){function t(r){return hr(r,e)}if(0<ui.length){hr(ui[0],e);for(var n=1;n<ui.length;n++){var o=ui[n];o.blockedOn===e&&(o.blockedOn=null)}}for(Tn!==null&&hr(Tn,e),Ln!==null&&hr(Ln,e),Mn!==null&&hr(Mn,e),fr.forEach(t),gr.forEach(t),n=0;n<zn.length;n++)o=zn[n],o.blockedOn===e&&(o.blockedOn=null);for(;0<zn.length&&(n=zn[0],n.blockedOn===null);)Dl(n),n.blockedOn===null&&zn.shift()}var Lo=ae.ReactCurrentBatchConfig,pi=!0;function gp(e,t,n,o){var r=Ie,a=Lo.transition;Lo.transition=null;try{Ie=1,Ta(e,t,n,o)}finally{Ie=r,Lo.transition=a}}function mp(e,t,n,o){var r=Ie,a=Lo.transition;Lo.transition=null;try{Ie=4,Ta(e,t,n,o)}finally{Ie=r,Lo.transition=a}}function Ta(e,t,n,o){if(pi){var r=La(e,t,n,o);if(r===null)$a(e,t,o,fi,n),Nl(e,o);else if(pp(r,e,t,n,o))o.stopPropagation();else if(Nl(e,o),t&4&&-1<dp.indexOf(e)){for(;r!==null;){var a=Tr(r);if(a!==null&&zl(a),a=La(e,t,n,o),a===null&&$a(e,t,o,fi,n),a===r)break;r=a}r!==null&&o.stopPropagation()}else $a(e,t,o,null,n)}}var fi=null;function La(e,t,n,o){if(fi=null,e=En(o),e=io(e),e!==null)if(t=G(e),t===null)e=null;else if(n=t.tag,n===13){if(e=ge(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return fi=e,null}function Bl(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(ur()){case cn:return 1;case tn:return 4;case un:case To:return 16;case xe:return 536870912;default:return 16}default:return 16}}var In=null,Ma=null,gi=null;function Fl(){if(gi)return gi;var e,t=Ma,n=t.length,o,r="value"in In?In.value:In.textContent,a=r.length;for(e=0;e<n&&t[e]===r[e];e++);var c=n-e;for(o=1;o<=c&&t[n-o]===r[a-o];o++);return gi=r.slice(e,1<o?1-o:void 0)}function mi(e){var t=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function hi(){return!0}function Ul(){return!1}function _t(e){function t(n,o,r,a,c){this._reactName=n,this._targetInst=r,this.type=o,this.nativeEvent=a,this.target=c,this.currentTarget=null;for(var g in e)e.hasOwnProperty(g)&&(n=e[g],this[g]=n?n(a):a[g]);return this.isDefaultPrevented=(a.defaultPrevented!=null?a.defaultPrevented:a.returnValue===!1)?hi:Ul,this.isPropagationStopped=Ul,this}return q(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var n=this.nativeEvent;n&&(n.preventDefault?n.preventDefault():typeof n.returnValue!="unknown"&&(n.returnValue=!1),this.isDefaultPrevented=hi)},stopPropagation:function(){var n=this.nativeEvent;n&&(n.stopPropagation?n.stopPropagation():typeof n.cancelBubble!="unknown"&&(n.cancelBubble=!0),this.isPropagationStopped=hi)},persist:function(){},isPersistent:hi}),t}var Mo={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},za=_t(Mo),vr=q({},Mo,{view:0,detail:0}),hp=_t(vr),Ia,Aa,Sr,yi=q({},vr,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Na,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==Sr&&(Sr&&e.type==="mousemove"?(Ia=e.screenX-Sr.screenX,Aa=e.screenY-Sr.screenY):Aa=Ia=0,Sr=e),Ia)},movementY:function(e){return"movementY"in e?e.movementY:Aa}}),Hl=_t(yi),yp=q({},yi,{dataTransfer:0}),vp=_t(yp),Sp=q({},vr,{relatedTarget:0}),ja=_t(Sp),wp=q({},Mo,{animationName:0,elapsedTime:0,pseudoElement:0}),kp=_t(wp),Pp=q({},Mo,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),xp=_t(Pp),Cp=q({},Mo,{data:0}),Vl=_t(Cp),bp={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Ep={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},_p={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Rp(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=_p[e])?!!t[e]:!1}function Na(){return Rp}var Tp=q({},vr,{key:function(e){if(e.key){var t=bp[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=mi(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?Ep[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Na,charCode:function(e){return e.type==="keypress"?mi(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?mi(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),Lp=_t(Tp),Mp=q({},yi,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Wl=_t(Mp),zp=q({},vr,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Na}),Ip=_t(zp),Ap=q({},Mo,{propertyName:0,elapsedTime:0,pseudoElement:0}),jp=_t(Ap),Np=q({},yi,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Dp=_t(Np),Op=[9,13,27,32],Da=v&&"CompositionEvent"in window,wr=null;v&&"documentMode"in document&&(wr=document.documentMode);var Bp=v&&"TextEvent"in window&&!wr,ql=v&&(!Da||wr&&8<wr&&11>=wr),Kl=" ",$l=!1;function Ql(e,t){switch(e){case"keyup":return Op.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Gl(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var zo=!1;function Fp(e,t){switch(e){case"compositionend":return Gl(t);case"keypress":return t.which!==32?null:($l=!0,Kl);case"textInput":return e=t.data,e===Kl&&$l?null:e;default:return null}}function Up(e,t){if(zo)return e==="compositionend"||!Da&&Ql(e,t)?(e=Fl(),gi=Ma=In=null,zo=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return ql&&t.locale!=="ko"?null:t.data;default:return null}}var Hp={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Yl(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!Hp[e.type]:t==="textarea"}function Jl(e,t,n,o){lr(o),t=Pi(t,"onChange"),0<t.length&&(n=new za("onChange","change",null,n,o),e.push({event:n,listeners:t}))}var kr=null,Pr=null;function Vp(e){mc(e,0)}function vi(e){var t=Do(e);if(it(t))return e}function Wp(e,t){if(e==="change")return t}var Xl=!1;if(v){var Oa;if(v){var Ba="oninput"in document;if(!Ba){var Zl=document.createElement("div");Zl.setAttribute("oninput","return;"),Ba=typeof Zl.oninput=="function"}Oa=Ba}else Oa=!1;Xl=Oa&&(!document.documentMode||9<document.documentMode)}function ec(){kr&&(kr.detachEvent("onpropertychange",tc),Pr=kr=null)}function tc(e){if(e.propertyName==="value"&&vi(Pr)){var t=[];Jl(t,Pr,e,En(e)),ii(Vp,t)}}function qp(e,t,n){e==="focusin"?(ec(),kr=t,Pr=n,kr.attachEvent("onpropertychange",tc)):e==="focusout"&&ec()}function Kp(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return vi(Pr)}function $p(e,t){if(e==="click")return vi(t)}function Qp(e,t){if(e==="input"||e==="change")return vi(t)}function Gp(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Ht=typeof Object.is=="function"?Object.is:Gp;function xr(e,t){if(Ht(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(o=0;o<n.length;o++){var r=n[o];if(!m.call(t,r)||!Ht(e[r],t[r]))return!1}return!0}function nc(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function oc(e,t){var n=nc(e);e=0;for(var o;n;){if(n.nodeType===3){if(o=e+n.textContent.length,e<=t&&o>=t)return{node:n,offset:t-e};e=o}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=nc(n)}}function rc(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?rc(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function ic(){for(var e=window,t=Bt();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Bt(e.document)}return t}function Fa(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Yp(e){var t=ic(),n=e.focusedElem,o=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&rc(n.ownerDocument.documentElement,n)){if(o!==null&&Fa(n)){if(t=o.start,e=o.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var r=n.textContent.length,a=Math.min(o.start,r);o=o.end===void 0?a:Math.min(o.end,r),!e.extend&&a>o&&(r=o,o=a,a=r),r=oc(n,a);var c=oc(n,o);r&&c&&(e.rangeCount!==1||e.anchorNode!==r.node||e.anchorOffset!==r.offset||e.focusNode!==c.node||e.focusOffset!==c.offset)&&(t=t.createRange(),t.setStart(r.node,r.offset),e.removeAllRanges(),a>o?(e.addRange(t),e.extend(c.node,c.offset)):(t.setEnd(c.node,c.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n<t.length;n++)e=t[n],e.element.scrollLeft=e.left,e.element.scrollTop=e.top}}var Jp=v&&"documentMode"in document&&11>=document.documentMode,Io=null,Ua=null,Cr=null,Ha=!1;function ac(e,t,n){var o=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Ha||Io==null||Io!==Bt(o)||(o=Io,"selectionStart"in o&&Fa(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),Cr&&xr(Cr,o)||(Cr=o,o=Pi(Ua,"onSelect"),0<o.length&&(t=new za("onSelect","select",null,t,n),e.push({event:t,listeners:o}),t.target=Io)))}function Si(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Ao={animationend:Si("Animation","AnimationEnd"),animationiteration:Si("Animation","AnimationIteration"),animationstart:Si("Animation","AnimationStart"),transitionend:Si("Transition","TransitionEnd")},Va={},sc={};v&&(sc=document.createElement("div").style,"AnimationEvent"in window||(delete Ao.animationend.animation,delete Ao.animationiteration.animation,delete Ao.animationstart.animation),"TransitionEvent"in window||delete Ao.transitionend.transition);function wi(e){if(Va[e])return Va[e];if(!Ao[e])return e;var t=Ao[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in sc)return Va[e]=t[n];return e}var lc=wi("animationend"),cc=wi("animationiteration"),uc=wi("animationstart"),dc=wi("transitionend"),pc=new Map,fc="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function An(e,t){pc.set(e,t),p(t,[e])}for(var Wa=0;Wa<fc.length;Wa++){var qa=fc[Wa],Xp=qa.toLowerCase(),Zp=qa[0].toUpperCase()+qa.slice(1);An(Xp,"on"+Zp)}An(lc,"onAnimationEnd"),An(cc,"onAnimationIteration"),An(uc,"onAnimationStart"),An("dblclick","onDoubleClick"),An("focusin","onFocus"),An("focusout","onBlur"),An(dc,"onTransitionEnd"),f("onMouseEnter",["mouseout","mouseover"]),f("onMouseLeave",["mouseout","mouseover"]),f("onPointerEnter",["pointerout","pointerover"]),f("onPointerLeave",["pointerout","pointerover"]),p("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),p("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),p("onBeforeInput",["compositionend","keypress","textInput","paste"]),p("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),p("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),p("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var br="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),ef=new Set("cancel close invalid load scroll toggle".split(" ").concat(br));function gc(e,t,n){var o=e.type||"unknown-event";e.currentTarget=n,$(o,t,void 0,e),e.currentTarget=null}function mc(e,t){t=(t&4)!==0;for(var n=0;n<e.length;n++){var o=e[n],r=o.event;o=o.listeners;e:{var a=void 0;if(t)for(var c=o.length-1;0<=c;c--){var g=o[c],y=g.instance,_=g.currentTarget;if(g=g.listener,y!==a&&r.isPropagationStopped())break e;gc(r,g,_),a=y}else for(c=0;c<o.length;c++){if(g=o[c],y=g.instance,_=g.currentTarget,g=g.listener,y!==a&&r.isPropagationStopped())break e;gc(r,g,_),a=y}}}if(ne)throw e=se,ne=!1,se=null,e}function We(e,t){var n=t[Za];n===void 0&&(n=t[Za]=new Set);var o=e+"__bubble";n.has(o)||(hc(t,e,2,!1),n.add(o))}function Ka(e,t,n){var o=0;t&&(o|=4),hc(n,e,o,t)}var ki="_reactListening"+Math.random().toString(36).slice(2);function Er(e){if(!e[ki]){e[ki]=!0,u.forEach(function(n){n!=="selectionchange"&&(ef.has(n)||Ka(n,!1,e),Ka(n,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[ki]||(t[ki]=!0,Ka("selectionchange",!1,t))}}function hc(e,t,n,o){switch(Bl(t)){case 1:var r=gp;break;case 4:r=mp;break;default:r=Ta}n=r.bind(null,t,n,e),r=void 0,!h||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(r=!0),o?r!==void 0?e.addEventListener(t,n,{capture:!0,passive:r}):e.addEventListener(t,n,!0):r!==void 0?e.addEventListener(t,n,{passive:r}):e.addEventListener(t,n,!1)}function $a(e,t,n,o,r){var a=o;if((t&1)===0&&(t&2)===0&&o!==null)e:for(;;){if(o===null)return;var c=o.tag;if(c===3||c===4){var g=o.stateNode.containerInfo;if(g===r||g.nodeType===8&&g.parentNode===r)break;if(c===4)for(c=o.return;c!==null;){var y=c.tag;if((y===3||y===4)&&(y=c.stateNode.containerInfo,y===r||y.nodeType===8&&y.parentNode===r))return;c=c.return}for(;g!==null;){if(c=io(g),c===null)return;if(y=c.tag,y===5||y===6){o=a=c;continue e}g=g.parentNode}}o=o.return}ii(function(){var _=a,j=En(n),N=[];e:{var A=pc.get(e);if(A!==void 0){var K=za,J=e;switch(e){case"keypress":if(mi(n)===0)break e;case"keydown":case"keyup":K=Lp;break;case"focusin":J="focus",K=ja;break;case"focusout":J="blur",K=ja;break;case"beforeblur":case"afterblur":K=ja;break;case"click":if(n.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":K=Hl;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":K=vp;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":K=Ip;break;case lc:case cc:case uc:K=kp;break;case dc:K=jp;break;case"scroll":K=hp;break;case"wheel":K=Dp;break;case"copy":case"cut":case"paste":K=xp;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":K=Wl}var Z=(t&4)!==0,Je=!Z&&e==="scroll",x=Z?A!==null?A+"Capture":null:A;Z=[];for(var S=_,b;S!==null;){b=S;var F=b.stateNode;if(b.tag===5&&F!==null&&(b=F,x!==null&&(F=no(S,x),F!=null&&Z.push(_r(S,F,b)))),Je)break;S=S.return}0<Z.length&&(A=new K(A,J,null,n,j),N.push({event:A,listeners:Z}))}}if((t&7)===0){e:{if(A=e==="mouseover"||e==="pointerover",K=e==="mouseout"||e==="pointerout",A&&n!==_o&&(J=n.relatedTarget||n.fromElement)&&(io(J)||J[dn]))break e;if((K||A)&&(A=j.window===j?j:(A=j.ownerDocument)?A.defaultView||A.parentWindow:window,K?(J=n.relatedTarget||n.toElement,K=_,J=J?io(J):null,J!==null&&(Je=G(J),J!==Je||J.tag!==5&&J.tag!==6)&&(J=null)):(K=null,J=_),K!==J)){if(Z=Hl,F="onMouseLeave",x="onMouseEnter",S="mouse",(e==="pointerout"||e==="pointerover")&&(Z=Wl,F="onPointerLeave",x="onPointerEnter",S="pointer"),Je=K==null?A:Do(K),b=J==null?A:Do(J),A=new Z(F,S+"leave",K,n,j),A.target=Je,A.relatedTarget=b,F=null,io(j)===_&&(Z=new Z(x,S+"enter",J,n,j),Z.target=b,Z.relatedTarget=Je,F=Z),Je=F,K&&J)t:{for(Z=K,x=J,S=0,b=Z;b;b=jo(b))S++;for(b=0,F=x;F;F=jo(F))b++;for(;0<S-b;)Z=jo(Z),S--;for(;0<b-S;)x=jo(x),b--;for(;S--;){if(Z===x||x!==null&&Z===x.alternate)break t;Z=jo(Z),x=jo(x)}Z=null}else Z=null;K!==null&&yc(N,A,K,Z,!1),J!==null&&Je!==null&&yc(N,Je,J,Z,!0)}}e:{if(A=_?Do(_):window,K=A.nodeName&&A.nodeName.toLowerCase(),K==="select"||K==="input"&&A.type==="file")var ee=Wp;else if(Yl(A))if(Xl)ee=Qp;else{ee=Kp;var re=qp}else(K=A.nodeName)&&K.toLowerCase()==="input"&&(A.type==="checkbox"||A.type==="radio")&&(ee=$p);if(ee&&(ee=ee(e,_))){Jl(N,ee,n,j);break e}re&&re(e,A,_),e==="focusout"&&(re=A._wrapperState)&&re.controlled&&A.type==="number"&&bo(A,"number",A.value)}switch(re=_?Do(_):window,e){case"focusin":(Yl(re)||re.contentEditable==="true")&&(Io=re,Ua=_,Cr=null);break;case"focusout":Cr=Ua=Io=null;break;case"mousedown":Ha=!0;break;case"contextmenu":case"mouseup":case"dragend":Ha=!1,ac(N,n,j);break;case"selectionchange":if(Jp)break;case"keydown":case"keyup":ac(N,n,j)}var ie;if(Da)e:{switch(e){case"compositionstart":var ce="onCompositionStart";break e;case"compositionend":ce="onCompositionEnd";break e;case"compositionupdate":ce="onCompositionUpdate";break e}ce=void 0}else zo?Ql(e,n)&&(ce="onCompositionEnd"):e==="keydown"&&n.keyCode===229&&(ce="onCompositionStart");ce&&(ql&&n.locale!=="ko"&&(zo||ce!=="onCompositionStart"?ce==="onCompositionEnd"&&zo&&(ie=Fl()):(In=j,Ma="value"in In?In.value:In.textContent,zo=!0)),re=Pi(_,ce),0<re.length&&(ce=new Vl(ce,e,null,n,j),N.push({event:ce,listeners:re}),ie?ce.data=ie:(ie=Gl(n),ie!==null&&(ce.data=ie)))),(ie=Bp?Fp(e,n):Up(e,n))&&(_=Pi(_,"onBeforeInput"),0<_.length&&(j=new Vl("onBeforeInput","beforeinput",null,n,j),N.push({event:j,listeners:_}),j.data=ie))}mc(N,t)})}function _r(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Pi(e,t){for(var n=t+"Capture",o=[];e!==null;){var r=e,a=r.stateNode;r.tag===5&&a!==null&&(r=a,a=no(e,n),a!=null&&o.unshift(_r(e,a,r)),a=no(e,t),a!=null&&o.push(_r(e,a,r))),e=e.return}return o}function jo(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5);return e||null}function yc(e,t,n,o,r){for(var a=t._reactName,c=[];n!==null&&n!==o;){var g=n,y=g.alternate,_=g.stateNode;if(y!==null&&y===o)break;g.tag===5&&_!==null&&(g=_,r?(y=no(n,a),y!=null&&c.unshift(_r(n,y,g))):r||(y=no(n,a),y!=null&&c.push(_r(n,y,g)))),n=n.return}c.length!==0&&e.push({event:t,listeners:c})}var tf=/\r\n?/g,nf=/\u0000|\uFFFD/g;function vc(e){return(typeof e=="string"?e:""+e).replace(tf,`
|
|
39
|
-
`).replace(nf,"")}function xi(e,t,n){if(t=vc(t),vc(e)!==t&&n)throw Error(l(425))}function Ci(){}var Qa=null,Ga=null;function Ya(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var Ja=typeof setTimeout=="function"?setTimeout:void 0,of=typeof clearTimeout=="function"?clearTimeout:void 0,Sc=typeof Promise=="function"?Promise:void 0,rf=typeof queueMicrotask=="function"?queueMicrotask:typeof Sc<"u"?function(e){return Sc.resolve(null).then(e).catch(af)}:Ja;function af(e){setTimeout(function(){throw e})}function Xa(e,t){var n=t,o=0;do{var r=n.nextSibling;if(e.removeChild(n),r&&r.nodeType===8)if(n=r.data,n==="/$"){if(o===0){e.removeChild(r),yr(t);return}o--}else n!=="$"&&n!=="$?"&&n!=="$!"||o++;n=r}while(n);yr(t)}function jn(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?")break;if(t==="/$")return null}}return e}function wc(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"){if(t===0)return e;t--}else n==="/$"&&t++}e=e.previousSibling}return null}var No=Math.random().toString(36).slice(2),nn="__reactFiber$"+No,Rr="__reactProps$"+No,dn="__reactContainer$"+No,Za="__reactEvents$"+No,sf="__reactListeners$"+No,lf="__reactHandles$"+No;function io(e){var t=e[nn];if(t)return t;for(var n=e.parentNode;n;){if(t=n[dn]||n[nn]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=wc(e);e!==null;){if(n=e[nn])return n;e=wc(e)}return t}e=n,n=e.parentNode}return null}function Tr(e){return e=e[nn]||e[dn],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function Do(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(l(33))}function bi(e){return e[Rr]||null}var es=[],Oo=-1;function Nn(e){return{current:e}}function qe(e){0>Oo||(e.current=es[Oo],es[Oo]=null,Oo--)}function He(e,t){Oo++,es[Oo]=e.current,e.current=t}var Dn={},pt=Nn(Dn),St=Nn(!1),ao=Dn;function Bo(e,t){var n=e.type.contextTypes;if(!n)return Dn;var o=e.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===t)return o.__reactInternalMemoizedMaskedChildContext;var r={},a;for(a in n)r[a]=t[a];return o&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=r),r}function wt(e){return e=e.childContextTypes,e!=null}function Ei(){qe(St),qe(pt)}function kc(e,t,n){if(pt.current!==Dn)throw Error(l(168));He(pt,t),He(St,n)}function Pc(e,t,n){var o=e.stateNode;if(t=t.childContextTypes,typeof o.getChildContext!="function")return n;o=o.getChildContext();for(var r in o)if(!(r in t))throw Error(l(108,Ce(e)||"Unknown",r));return q({},n,o)}function _i(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Dn,ao=pt.current,He(pt,e),He(St,St.current),!0}function xc(e,t,n){var o=e.stateNode;if(!o)throw Error(l(169));n?(e=Pc(e,t,ao),o.__reactInternalMemoizedMergedChildContext=e,qe(St),qe(pt),He(pt,e)):qe(St),He(St,n)}var pn=null,Ri=!1,ts=!1;function Cc(e){pn===null?pn=[e]:pn.push(e)}function cf(e){Ri=!0,Cc(e)}function On(){if(!ts&&pn!==null){ts=!0;var e=0,t=Ie;try{var n=pn;for(Ie=1;e<n.length;e++){var o=n[e];do o=o(!0);while(o!==null)}pn=null,Ri=!1}catch(r){throw pn!==null&&(pn=pn.slice(e+1)),Ve(cn,On),r}finally{Ie=t,ts=!1}}return null}var Fo=[],Uo=0,Ti=null,Li=0,It=[],At=0,so=null,fn=1,gn="";function lo(e,t){Fo[Uo++]=Li,Fo[Uo++]=Ti,Ti=e,Li=t}function bc(e,t,n){It[At++]=fn,It[At++]=gn,It[At++]=so,so=e;var o=fn;e=gn;var r=32-Te(o)-1;o&=~(1<<r),n+=1;var a=32-Te(t)+r;if(30<a){var c=r-r%5;a=(o&(1<<c)-1).toString(32),o>>=c,r-=c,fn=1<<32-Te(t)+r|n<<r|o,gn=a+e}else fn=1<<a|n<<r|o,gn=e}function ns(e){e.return!==null&&(lo(e,1),bc(e,1,0))}function os(e){for(;e===Ti;)Ti=Fo[--Uo],Fo[Uo]=null,Li=Fo[--Uo],Fo[Uo]=null;for(;e===so;)so=It[--At],It[At]=null,gn=It[--At],It[At]=null,fn=It[--At],It[At]=null}var Rt=null,Tt=null,Ke=!1,Vt=null;function Ec(e,t){var n=Ot(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,t=e.deletions,t===null?(e.deletions=[n],e.flags|=16):t.push(n)}function _c(e,t){switch(e.tag){case 5:var n=e.type;return t=t.nodeType!==1||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,Rt=e,Tt=jn(t.firstChild),!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,Rt=e,Tt=null,!0):!1;case 13:return t=t.nodeType!==8?null:t,t!==null?(n=so!==null?{id:fn,overflow:gn}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},n=Ot(18,null,null,0),n.stateNode=t,n.return=e,e.child=n,Rt=e,Tt=null,!0):!1;default:return!1}}function rs(e){return(e.mode&1)!==0&&(e.flags&128)===0}function is(e){if(Ke){var t=Tt;if(t){var n=t;if(!_c(e,t)){if(rs(e))throw Error(l(418));t=jn(n.nextSibling);var o=Rt;t&&_c(e,t)?Ec(o,n):(e.flags=e.flags&-4097|2,Ke=!1,Rt=e)}}else{if(rs(e))throw Error(l(418));e.flags=e.flags&-4097|2,Ke=!1,Rt=e}}}function Rc(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;Rt=e}function Mi(e){if(e!==Rt)return!1;if(!Ke)return Rc(e),Ke=!0,!1;var t;if((t=e.tag!==3)&&!(t=e.tag!==5)&&(t=e.type,t=t!=="head"&&t!=="body"&&!Ya(e.type,e.memoizedProps)),t&&(t=Tt)){if(rs(e))throw Tc(),Error(l(418));for(;t;)Ec(e,t),t=jn(t.nextSibling)}if(Rc(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(l(317));e:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="/$"){if(t===0){Tt=jn(e.nextSibling);break e}t--}else n!=="$"&&n!=="$!"&&n!=="$?"||t++}e=e.nextSibling}Tt=null}}else Tt=Rt?jn(e.stateNode.nextSibling):null;return!0}function Tc(){for(var e=Tt;e;)e=jn(e.nextSibling)}function Ho(){Tt=Rt=null,Ke=!1}function as(e){Vt===null?Vt=[e]:Vt.push(e)}var uf=ae.ReactCurrentBatchConfig;function Lr(e,t,n){if(e=n.ref,e!==null&&typeof e!="function"&&typeof e!="object"){if(n._owner){if(n=n._owner,n){if(n.tag!==1)throw Error(l(309));var o=n.stateNode}if(!o)throw Error(l(147,e));var r=o,a=""+e;return t!==null&&t.ref!==null&&typeof t.ref=="function"&&t.ref._stringRef===a?t.ref:(t=function(c){var g=r.refs;c===null?delete g[a]:g[a]=c},t._stringRef=a,t)}if(typeof e!="string")throw Error(l(284));if(!n._owner)throw Error(l(290,e))}return e}function zi(e,t){throw e=Object.prototype.toString.call(t),Error(l(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function Lc(e){var t=e._init;return t(e._payload)}function Mc(e){function t(x,S){if(e){var b=x.deletions;b===null?(x.deletions=[S],x.flags|=16):b.push(S)}}function n(x,S){if(!e)return null;for(;S!==null;)t(x,S),S=S.sibling;return null}function o(x,S){for(x=new Map;S!==null;)S.key!==null?x.set(S.key,S):x.set(S.index,S),S=S.sibling;return x}function r(x,S){return x=Kn(x,S),x.index=0,x.sibling=null,x}function a(x,S,b){return x.index=b,e?(b=x.alternate,b!==null?(b=b.index,b<S?(x.flags|=2,S):b):(x.flags|=2,S)):(x.flags|=1048576,S)}function c(x){return e&&x.alternate===null&&(x.flags|=2),x}function g(x,S,b,F){return S===null||S.tag!==6?(S=Js(b,x.mode,F),S.return=x,S):(S=r(S,b),S.return=x,S)}function y(x,S,b,F){var ee=b.type;return ee===T?j(x,S,b.props.children,F,b.key):S!==null&&(S.elementType===ee||typeof ee=="object"&&ee!==null&&ee.$$typeof===tt&&Lc(ee)===S.type)?(F=r(S,b.props),F.ref=Lr(x,S,b),F.return=x,F):(F=na(b.type,b.key,b.props,null,x.mode,F),F.ref=Lr(x,S,b),F.return=x,F)}function _(x,S,b,F){return S===null||S.tag!==4||S.stateNode.containerInfo!==b.containerInfo||S.stateNode.implementation!==b.implementation?(S=Xs(b,x.mode,F),S.return=x,S):(S=r(S,b.children||[]),S.return=x,S)}function j(x,S,b,F,ee){return S===null||S.tag!==7?(S=yo(b,x.mode,F,ee),S.return=x,S):(S=r(S,b),S.return=x,S)}function N(x,S,b){if(typeof S=="string"&&S!==""||typeof S=="number")return S=Js(""+S,x.mode,b),S.return=x,S;if(typeof S=="object"&&S!==null){switch(S.$$typeof){case ke:return b=na(S.type,S.key,S.props,null,x.mode,b),b.ref=Lr(x,null,S),b.return=x,b;case je:return S=Xs(S,x.mode,b),S.return=x,S;case tt:var F=S._init;return N(x,F(S._payload),b)}if(Zn(S)||oe(S))return S=yo(S,x.mode,b,null),S.return=x,S;zi(x,S)}return null}function A(x,S,b,F){var ee=S!==null?S.key:null;if(typeof b=="string"&&b!==""||typeof b=="number")return ee!==null?null:g(x,S,""+b,F);if(typeof b=="object"&&b!==null){switch(b.$$typeof){case ke:return b.key===ee?y(x,S,b,F):null;case je:return b.key===ee?_(x,S,b,F):null;case tt:return ee=b._init,A(x,S,ee(b._payload),F)}if(Zn(b)||oe(b))return ee!==null?null:j(x,S,b,F,null);zi(x,b)}return null}function K(x,S,b,F,ee){if(typeof F=="string"&&F!==""||typeof F=="number")return x=x.get(b)||null,g(S,x,""+F,ee);if(typeof F=="object"&&F!==null){switch(F.$$typeof){case ke:return x=x.get(F.key===null?b:F.key)||null,y(S,x,F,ee);case je:return x=x.get(F.key===null?b:F.key)||null,_(S,x,F,ee);case tt:var re=F._init;return K(x,S,b,re(F._payload),ee)}if(Zn(F)||oe(F))return x=x.get(b)||null,j(S,x,F,ee,null);zi(S,F)}return null}function J(x,S,b,F){for(var ee=null,re=null,ie=S,ce=S=0,lt=null;ie!==null&&ce<b.length;ce++){ie.index>ce?(lt=ie,ie=null):lt=ie.sibling;var Le=A(x,ie,b[ce],F);if(Le===null){ie===null&&(ie=lt);break}e&&ie&&Le.alternate===null&&t(x,ie),S=a(Le,S,ce),re===null?ee=Le:re.sibling=Le,re=Le,ie=lt}if(ce===b.length)return n(x,ie),Ke&&lo(x,ce),ee;if(ie===null){for(;ce<b.length;ce++)ie=N(x,b[ce],F),ie!==null&&(S=a(ie,S,ce),re===null?ee=ie:re.sibling=ie,re=ie);return Ke&&lo(x,ce),ee}for(ie=o(x,ie);ce<b.length;ce++)lt=K(ie,x,ce,b[ce],F),lt!==null&&(e&<.alternate!==null&&ie.delete(lt.key===null?ce:lt.key),S=a(lt,S,ce),re===null?ee=lt:re.sibling=lt,re=lt);return e&&ie.forEach(function($n){return t(x,$n)}),Ke&&lo(x,ce),ee}function Z(x,S,b,F){var ee=oe(b);if(typeof ee!="function")throw Error(l(150));if(b=ee.call(b),b==null)throw Error(l(151));for(var re=ee=null,ie=S,ce=S=0,lt=null,Le=b.next();ie!==null&&!Le.done;ce++,Le=b.next()){ie.index>ce?(lt=ie,ie=null):lt=ie.sibling;var $n=A(x,ie,Le.value,F);if($n===null){ie===null&&(ie=lt);break}e&&ie&&$n.alternate===null&&t(x,ie),S=a($n,S,ce),re===null?ee=$n:re.sibling=$n,re=$n,ie=lt}if(Le.done)return n(x,ie),Ke&&lo(x,ce),ee;if(ie===null){for(;!Le.done;ce++,Le=b.next())Le=N(x,Le.value,F),Le!==null&&(S=a(Le,S,ce),re===null?ee=Le:re.sibling=Le,re=Le);return Ke&&lo(x,ce),ee}for(ie=o(x,ie);!Le.done;ce++,Le=b.next())Le=K(ie,x,ce,Le.value,F),Le!==null&&(e&&Le.alternate!==null&&ie.delete(Le.key===null?ce:Le.key),S=a(Le,S,ce),re===null?ee=Le:re.sibling=Le,re=Le);return e&&ie.forEach(function(Vf){return t(x,Vf)}),Ke&&lo(x,ce),ee}function Je(x,S,b,F){if(typeof b=="object"&&b!==null&&b.type===T&&b.key===null&&(b=b.props.children),typeof b=="object"&&b!==null){switch(b.$$typeof){case ke:e:{for(var ee=b.key,re=S;re!==null;){if(re.key===ee){if(ee=b.type,ee===T){if(re.tag===7){n(x,re.sibling),S=r(re,b.props.children),S.return=x,x=S;break e}}else if(re.elementType===ee||typeof ee=="object"&&ee!==null&&ee.$$typeof===tt&&Lc(ee)===re.type){n(x,re.sibling),S=r(re,b.props),S.ref=Lr(x,re,b),S.return=x,x=S;break e}n(x,re);break}else t(x,re);re=re.sibling}b.type===T?(S=yo(b.props.children,x.mode,F,b.key),S.return=x,x=S):(F=na(b.type,b.key,b.props,null,x.mode,F),F.ref=Lr(x,S,b),F.return=x,x=F)}return c(x);case je:e:{for(re=b.key;S!==null;){if(S.key===re)if(S.tag===4&&S.stateNode.containerInfo===b.containerInfo&&S.stateNode.implementation===b.implementation){n(x,S.sibling),S=r(S,b.children||[]),S.return=x,x=S;break e}else{n(x,S);break}else t(x,S);S=S.sibling}S=Xs(b,x.mode,F),S.return=x,x=S}return c(x);case tt:return re=b._init,Je(x,S,re(b._payload),F)}if(Zn(b))return J(x,S,b,F);if(oe(b))return Z(x,S,b,F);zi(x,b)}return typeof b=="string"&&b!==""||typeof b=="number"?(b=""+b,S!==null&&S.tag===6?(n(x,S.sibling),S=r(S,b),S.return=x,x=S):(n(x,S),S=Js(b,x.mode,F),S.return=x,x=S),c(x)):n(x,S)}return Je}var Vo=Mc(!0),zc=Mc(!1),Ii=Nn(null),Ai=null,Wo=null,ss=null;function ls(){ss=Wo=Ai=null}function cs(e){var t=Ii.current;qe(Ii),e._currentValue=t}function us(e,t,n){for(;e!==null;){var o=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,o!==null&&(o.childLanes|=t)):o!==null&&(o.childLanes&t)!==t&&(o.childLanes|=t),e===n)break;e=e.return}}function qo(e,t){Ai=e,ss=Wo=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(kt=!0),e.firstContext=null)}function jt(e){var t=e._currentValue;if(ss!==e)if(e={context:e,memoizedValue:t,next:null},Wo===null){if(Ai===null)throw Error(l(308));Wo=e,Ai.dependencies={lanes:0,firstContext:e}}else Wo=Wo.next=e;return t}var co=null;function ds(e){co===null?co=[e]:co.push(e)}function Ic(e,t,n,o){var r=t.interleaved;return r===null?(n.next=n,ds(t)):(n.next=r.next,r.next=n),t.interleaved=n,mn(e,o)}function mn(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Bn=!1;function ps(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Ac(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function hn(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Fn(e,t,n){var o=e.updateQueue;if(o===null)return null;if(o=o.shared,(_e&2)!==0){var r=o.pending;return r===null?t.next=t:(t.next=r.next,r.next=t),o.pending=t,mn(e,n)}return r=o.interleaved,r===null?(t.next=t,ds(o)):(t.next=r.next,r.next=t),o.interleaved=t,mn(e,n)}function ji(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var o=t.lanes;o&=e.pendingLanes,n|=o,t.lanes=n,Ea(e,n)}}function jc(e,t){var n=e.updateQueue,o=e.alternate;if(o!==null&&(o=o.updateQueue,n===o)){var r=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var c={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};a===null?r=a=c:a=a.next=c,n=n.next}while(n!==null);a===null?r=a=t:a=a.next=t}else r=a=t;n={baseState:o.baseState,firstBaseUpdate:r,lastBaseUpdate:a,shared:o.shared,effects:o.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Ni(e,t,n,o){var r=e.updateQueue;Bn=!1;var a=r.firstBaseUpdate,c=r.lastBaseUpdate,g=r.shared.pending;if(g!==null){r.shared.pending=null;var y=g,_=y.next;y.next=null,c===null?a=_:c.next=_,c=y;var j=e.alternate;j!==null&&(j=j.updateQueue,g=j.lastBaseUpdate,g!==c&&(g===null?j.firstBaseUpdate=_:g.next=_,j.lastBaseUpdate=y))}if(a!==null){var N=r.baseState;c=0,j=_=y=null,g=a;do{var A=g.lane,K=g.eventTime;if((o&A)===A){j!==null&&(j=j.next={eventTime:K,lane:0,tag:g.tag,payload:g.payload,callback:g.callback,next:null});e:{var J=e,Z=g;switch(A=t,K=n,Z.tag){case 1:if(J=Z.payload,typeof J=="function"){N=J.call(K,N,A);break e}N=J;break e;case 3:J.flags=J.flags&-65537|128;case 0:if(J=Z.payload,A=typeof J=="function"?J.call(K,N,A):J,A==null)break e;N=q({},N,A);break e;case 2:Bn=!0}}g.callback!==null&&g.lane!==0&&(e.flags|=64,A=r.effects,A===null?r.effects=[g]:A.push(g))}else K={eventTime:K,lane:A,tag:g.tag,payload:g.payload,callback:g.callback,next:null},j===null?(_=j=K,y=N):j=j.next=K,c|=A;if(g=g.next,g===null){if(g=r.shared.pending,g===null)break;A=g,g=A.next,A.next=null,r.lastBaseUpdate=A,r.shared.pending=null}}while(!0);if(j===null&&(y=N),r.baseState=y,r.firstBaseUpdate=_,r.lastBaseUpdate=j,t=r.shared.interleaved,t!==null){r=t;do c|=r.lane,r=r.next;while(r!==t)}else a===null&&(r.shared.lanes=0);fo|=c,e.lanes=c,e.memoizedState=N}}function Nc(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;t<e.length;t++){var o=e[t],r=o.callback;if(r!==null){if(o.callback=null,o=n,typeof r!="function")throw Error(l(191,r));r.call(o)}}}var Mr={},on=Nn(Mr),zr=Nn(Mr),Ir=Nn(Mr);function uo(e){if(e===Mr)throw Error(l(174));return e}function fs(e,t){switch(He(Ir,t),He(zr,e),He(on,Mr),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:eo(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=eo(t,e)}qe(on),He(on,t)}function Ko(){qe(on),qe(zr),qe(Ir)}function Dc(e){uo(Ir.current);var t=uo(on.current),n=eo(t,e.type);t!==n&&(He(zr,e),He(on,n))}function gs(e){zr.current===e&&(qe(on),qe(zr))}var Qe=Nn(0);function Di(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ms=[];function hs(){for(var e=0;e<ms.length;e++)ms[e]._workInProgressVersionPrimary=null;ms.length=0}var Oi=ae.ReactCurrentDispatcher,ys=ae.ReactCurrentBatchConfig,po=0,Ge=null,ot=null,at=null,Bi=!1,Ar=!1,jr=0,df=0;function ft(){throw Error(l(321))}function vs(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Ht(e[n],t[n]))return!1;return!0}function Ss(e,t,n,o,r,a){if(po=a,Ge=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Oi.current=e===null||e.memoizedState===null?mf:hf,e=n(o,r),Ar){a=0;do{if(Ar=!1,jr=0,25<=a)throw Error(l(301));a+=1,at=ot=null,t.updateQueue=null,Oi.current=yf,e=n(o,r)}while(Ar)}if(Oi.current=Hi,t=ot!==null&&ot.next!==null,po=0,at=ot=Ge=null,Bi=!1,t)throw Error(l(300));return e}function ws(){var e=jr!==0;return jr=0,e}function rn(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return at===null?Ge.memoizedState=at=e:at=at.next=e,at}function Nt(){if(ot===null){var e=Ge.alternate;e=e!==null?e.memoizedState:null}else e=ot.next;var t=at===null?Ge.memoizedState:at.next;if(t!==null)at=t,ot=e;else{if(e===null)throw Error(l(310));ot=e,e={memoizedState:ot.memoizedState,baseState:ot.baseState,baseQueue:ot.baseQueue,queue:ot.queue,next:null},at===null?Ge.memoizedState=at=e:at=at.next=e}return at}function Nr(e,t){return typeof t=="function"?t(e):t}function ks(e){var t=Nt(),n=t.queue;if(n===null)throw Error(l(311));n.lastRenderedReducer=e;var o=ot,r=o.baseQueue,a=n.pending;if(a!==null){if(r!==null){var c=r.next;r.next=a.next,a.next=c}o.baseQueue=r=a,n.pending=null}if(r!==null){a=r.next,o=o.baseState;var g=c=null,y=null,_=a;do{var j=_.lane;if((po&j)===j)y!==null&&(y=y.next={lane:0,action:_.action,hasEagerState:_.hasEagerState,eagerState:_.eagerState,next:null}),o=_.hasEagerState?_.eagerState:e(o,_.action);else{var N={lane:j,action:_.action,hasEagerState:_.hasEagerState,eagerState:_.eagerState,next:null};y===null?(g=y=N,c=o):y=y.next=N,Ge.lanes|=j,fo|=j}_=_.next}while(_!==null&&_!==a);y===null?c=o:y.next=g,Ht(o,t.memoizedState)||(kt=!0),t.memoizedState=o,t.baseState=c,t.baseQueue=y,n.lastRenderedState=o}if(e=n.interleaved,e!==null){r=e;do a=r.lane,Ge.lanes|=a,fo|=a,r=r.next;while(r!==e)}else r===null&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function Ps(e){var t=Nt(),n=t.queue;if(n===null)throw Error(l(311));n.lastRenderedReducer=e;var o=n.dispatch,r=n.pending,a=t.memoizedState;if(r!==null){n.pending=null;var c=r=r.next;do a=e(a,c.action),c=c.next;while(c!==r);Ht(a,t.memoizedState)||(kt=!0),t.memoizedState=a,t.baseQueue===null&&(t.baseState=a),n.lastRenderedState=a}return[a,o]}function Oc(){}function Bc(e,t){var n=Ge,o=Nt(),r=t(),a=!Ht(o.memoizedState,r);if(a&&(o.memoizedState=r,kt=!0),o=o.queue,xs(Hc.bind(null,n,o,e),[e]),o.getSnapshot!==t||a||at!==null&&at.memoizedState.tag&1){if(n.flags|=2048,Dr(9,Uc.bind(null,n,o,r,t),void 0,null),st===null)throw Error(l(349));(po&30)!==0||Fc(n,t,r)}return r}function Fc(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=Ge.updateQueue,t===null?(t={lastEffect:null,stores:null},Ge.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function Uc(e,t,n,o){t.value=n,t.getSnapshot=o,Vc(t)&&Wc(e)}function Hc(e,t,n){return n(function(){Vc(t)&&Wc(e)})}function Vc(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Ht(e,n)}catch{return!0}}function Wc(e){var t=mn(e,1);t!==null&&$t(t,e,1,-1)}function qc(e){var t=rn();return typeof e=="function"&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Nr,lastRenderedState:e},t.queue=e,e=e.dispatch=gf.bind(null,Ge,e),[t.memoizedState,e]}function Dr(e,t,n,o){return e={tag:e,create:t,destroy:n,deps:o,next:null},t=Ge.updateQueue,t===null?(t={lastEffect:null,stores:null},Ge.updateQueue=t,t.lastEffect=e.next=e):(n=t.lastEffect,n===null?t.lastEffect=e.next=e:(o=n.next,n.next=e,e.next=o,t.lastEffect=e)),e}function Kc(){return Nt().memoizedState}function Fi(e,t,n,o){var r=rn();Ge.flags|=e,r.memoizedState=Dr(1|t,n,void 0,o===void 0?null:o)}function Ui(e,t,n,o){var r=Nt();o=o===void 0?null:o;var a=void 0;if(ot!==null){var c=ot.memoizedState;if(a=c.destroy,o!==null&&vs(o,c.deps)){r.memoizedState=Dr(t,n,a,o);return}}Ge.flags|=e,r.memoizedState=Dr(1|t,n,a,o)}function $c(e,t){return Fi(8390656,8,e,t)}function xs(e,t){return Ui(2048,8,e,t)}function Qc(e,t){return Ui(4,2,e,t)}function Gc(e,t){return Ui(4,4,e,t)}function Yc(e,t){if(typeof t=="function")return e=e(),t(e),function(){t(null)};if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function Jc(e,t,n){return n=n!=null?n.concat([e]):null,Ui(4,4,Yc.bind(null,t,e),n)}function Cs(){}function Xc(e,t){var n=Nt();t=t===void 0?null:t;var o=n.memoizedState;return o!==null&&t!==null&&vs(t,o[1])?o[0]:(n.memoizedState=[e,t],e)}function Zc(e,t){var n=Nt();t=t===void 0?null:t;var o=n.memoizedState;return o!==null&&t!==null&&vs(t,o[1])?o[0]:(e=e(),n.memoizedState=[e,t],e)}function eu(e,t,n){return(po&21)===0?(e.baseState&&(e.baseState=!1,kt=!0),e.memoizedState=n):(Ht(n,t)||(n=Ll(),Ge.lanes|=n,fo|=n,e.baseState=!0),t)}function pf(e,t){var n=Ie;Ie=n!==0&&4>n?n:4,e(!0);var o=ys.transition;ys.transition={};try{e(!1),t()}finally{Ie=n,ys.transition=o}}function tu(){return Nt().memoizedState}function ff(e,t,n){var o=Wn(e);if(n={lane:o,action:n,hasEagerState:!1,eagerState:null,next:null},nu(e))ou(t,n);else if(n=Ic(e,t,n,o),n!==null){var r=vt();$t(n,e,o,r),ru(n,t,o)}}function gf(e,t,n){var o=Wn(e),r={lane:o,action:n,hasEagerState:!1,eagerState:null,next:null};if(nu(e))ou(t,r);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var c=t.lastRenderedState,g=a(c,n);if(r.hasEagerState=!0,r.eagerState=g,Ht(g,c)){var y=t.interleaved;y===null?(r.next=r,ds(t)):(r.next=y.next,y.next=r),t.interleaved=r;return}}catch{}finally{}n=Ic(e,t,r,o),n!==null&&(r=vt(),$t(n,e,o,r),ru(n,t,o))}}function nu(e){var t=e.alternate;return e===Ge||t!==null&&t===Ge}function ou(e,t){Ar=Bi=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function ru(e,t,n){if((n&4194240)!==0){var o=t.lanes;o&=e.pendingLanes,n|=o,t.lanes=n,Ea(e,n)}}var Hi={readContext:jt,useCallback:ft,useContext:ft,useEffect:ft,useImperativeHandle:ft,useInsertionEffect:ft,useLayoutEffect:ft,useMemo:ft,useReducer:ft,useRef:ft,useState:ft,useDebugValue:ft,useDeferredValue:ft,useTransition:ft,useMutableSource:ft,useSyncExternalStore:ft,useId:ft,unstable_isNewReconciler:!1},mf={readContext:jt,useCallback:function(e,t){return rn().memoizedState=[e,t===void 0?null:t],e},useContext:jt,useEffect:$c,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Fi(4194308,4,Yc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Fi(4194308,4,e,t)},useInsertionEffect:function(e,t){return Fi(4,2,e,t)},useMemo:function(e,t){var n=rn();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var o=rn();return t=n!==void 0?n(t):t,o.memoizedState=o.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},o.queue=e,e=e.dispatch=ff.bind(null,Ge,e),[o.memoizedState,e]},useRef:function(e){var t=rn();return e={current:e},t.memoizedState=e},useState:qc,useDebugValue:Cs,useDeferredValue:function(e){return rn().memoizedState=e},useTransition:function(){var e=qc(!1),t=e[0];return e=pf.bind(null,e[1]),rn().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var o=Ge,r=rn();if(Ke){if(n===void 0)throw Error(l(407));n=n()}else{if(n=t(),st===null)throw Error(l(349));(po&30)!==0||Fc(o,t,n)}r.memoizedState=n;var a={value:n,getSnapshot:t};return r.queue=a,$c(Hc.bind(null,o,a,e),[e]),o.flags|=2048,Dr(9,Uc.bind(null,o,a,n,t),void 0,null),n},useId:function(){var e=rn(),t=st.identifierPrefix;if(Ke){var n=gn,o=fn;n=(o&~(1<<32-Te(o)-1)).toString(32)+n,t=":"+t+"R"+n,n=jr++,0<n&&(t+="H"+n.toString(32)),t+=":"}else n=df++,t=":"+t+"r"+n.toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},hf={readContext:jt,useCallback:Xc,useContext:jt,useEffect:xs,useImperativeHandle:Jc,useInsertionEffect:Qc,useLayoutEffect:Gc,useMemo:Zc,useReducer:ks,useRef:Kc,useState:function(){return ks(Nr)},useDebugValue:Cs,useDeferredValue:function(e){var t=Nt();return eu(t,ot.memoizedState,e)},useTransition:function(){var e=ks(Nr)[0],t=Nt().memoizedState;return[e,t]},useMutableSource:Oc,useSyncExternalStore:Bc,useId:tu,unstable_isNewReconciler:!1},yf={readContext:jt,useCallback:Xc,useContext:jt,useEffect:xs,useImperativeHandle:Jc,useInsertionEffect:Qc,useLayoutEffect:Gc,useMemo:Zc,useReducer:Ps,useRef:Kc,useState:function(){return Ps(Nr)},useDebugValue:Cs,useDeferredValue:function(e){var t=Nt();return ot===null?t.memoizedState=e:eu(t,ot.memoizedState,e)},useTransition:function(){var e=Ps(Nr)[0],t=Nt().memoizedState;return[e,t]},useMutableSource:Oc,useSyncExternalStore:Bc,useId:tu,unstable_isNewReconciler:!1};function Wt(e,t){if(e&&e.defaultProps){t=q({},t),e=e.defaultProps;for(var n in e)t[n]===void 0&&(t[n]=e[n]);return t}return t}function bs(e,t,n,o){t=e.memoizedState,n=n(o,t),n=n==null?t:q({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var Vi={isMounted:function(e){return(e=e._reactInternals)?G(e)===e:!1},enqueueSetState:function(e,t,n){e=e._reactInternals;var o=vt(),r=Wn(e),a=hn(o,r);a.payload=t,n!=null&&(a.callback=n),t=Fn(e,a,r),t!==null&&($t(t,e,r,o),ji(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var o=vt(),r=Wn(e),a=hn(o,r);a.tag=1,a.payload=t,n!=null&&(a.callback=n),t=Fn(e,a,r),t!==null&&($t(t,e,r,o),ji(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=vt(),o=Wn(e),r=hn(n,o);r.tag=2,t!=null&&(r.callback=t),t=Fn(e,r,o),t!==null&&($t(t,e,o,n),ji(t,e,o))}};function iu(e,t,n,o,r,a,c){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(o,a,c):t.prototype&&t.prototype.isPureReactComponent?!xr(n,o)||!xr(r,a):!0}function au(e,t,n){var o=!1,r=Dn,a=t.contextType;return typeof a=="object"&&a!==null?a=jt(a):(r=wt(t)?ao:pt.current,o=t.contextTypes,a=(o=o!=null)?Bo(e,r):Dn),t=new t(n,a),e.memoizedState=t.state!==null&&t.state!==void 0?t.state:null,t.updater=Vi,e.stateNode=t,t._reactInternals=e,o&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=r,e.__reactInternalMemoizedMaskedChildContext=a),t}function su(e,t,n,o){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(n,o),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(n,o),t.state!==e&&Vi.enqueueReplaceState(t,t.state,null)}function Es(e,t,n,o){var r=e.stateNode;r.props=n,r.state=e.memoizedState,r.refs={},ps(e);var a=t.contextType;typeof a=="object"&&a!==null?r.context=jt(a):(a=wt(t)?ao:pt.current,r.context=Bo(e,a)),r.state=e.memoizedState,a=t.getDerivedStateFromProps,typeof a=="function"&&(bs(e,t,a,n),r.state=e.memoizedState),typeof t.getDerivedStateFromProps=="function"||typeof r.getSnapshotBeforeUpdate=="function"||typeof r.UNSAFE_componentWillMount!="function"&&typeof r.componentWillMount!="function"||(t=r.state,typeof r.componentWillMount=="function"&&r.componentWillMount(),typeof r.UNSAFE_componentWillMount=="function"&&r.UNSAFE_componentWillMount(),t!==r.state&&Vi.enqueueReplaceState(r,r.state,null),Ni(e,n,r,o),r.state=e.memoizedState),typeof r.componentDidMount=="function"&&(e.flags|=4194308)}function $o(e,t){try{var n="",o=t;do n+=fe(o),o=o.return;while(o);var r=n}catch(a){r=`
|
|
40
|
-
Error generating stack: `+a.message+`
|
|
41
|
-
`+a.stack}return{value:e,source:t,stack:r,digest:null}}function _s(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function Rs(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var vf=typeof WeakMap=="function"?WeakMap:Map;function lu(e,t,n){n=hn(-1,n),n.tag=3,n.payload={element:null};var o=t.value;return n.callback=function(){Yi||(Yi=!0,Vs=o),Rs(e,t)},n}function cu(e,t,n){n=hn(-1,n),n.tag=3;var o=e.type.getDerivedStateFromError;if(typeof o=="function"){var r=t.value;n.payload=function(){return o(r)},n.callback=function(){Rs(e,t)}}var a=e.stateNode;return a!==null&&typeof a.componentDidCatch=="function"&&(n.callback=function(){Rs(e,t),typeof o!="function"&&(Hn===null?Hn=new Set([this]):Hn.add(this));var c=t.stack;this.componentDidCatch(t.value,{componentStack:c!==null?c:""})}),n}function uu(e,t,n){var o=e.pingCache;if(o===null){o=e.pingCache=new vf;var r=new Set;o.set(t,r)}else r=o.get(t),r===void 0&&(r=new Set,o.set(t,r));r.has(n)||(r.add(n),e=zf.bind(null,e,t,n),t.then(e,e))}function du(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function pu(e,t,n,o,r){return(e.mode&1)===0?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(t=hn(-1,1),t.tag=2,Fn(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=r,e)}var Sf=ae.ReactCurrentOwner,kt=!1;function yt(e,t,n,o){t.child=e===null?zc(t,null,n,o):Vo(t,e.child,n,o)}function fu(e,t,n,o,r){n=n.render;var a=t.ref;return qo(t,r),o=Ss(e,t,n,o,a,r),n=ws(),e!==null&&!kt?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~r,yn(e,t,r)):(Ke&&n&&ns(t),t.flags|=1,yt(e,t,o,r),t.child)}function gu(e,t,n,o,r){if(e===null){var a=n.type;return typeof a=="function"&&!Ys(a)&&a.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=a,mu(e,t,a,o,r)):(e=na(n.type,null,o,t,t.mode,r),e.ref=t.ref,e.return=t,t.child=e)}if(a=e.child,(e.lanes&r)===0){var c=a.memoizedProps;if(n=n.compare,n=n!==null?n:xr,n(c,o)&&e.ref===t.ref)return yn(e,t,r)}return t.flags|=1,e=Kn(a,o),e.ref=t.ref,e.return=t,t.child=e}function mu(e,t,n,o,r){if(e!==null){var a=e.memoizedProps;if(xr(a,o)&&e.ref===t.ref)if(kt=!1,t.pendingProps=o=a,(e.lanes&r)!==0)(e.flags&131072)!==0&&(kt=!0);else return t.lanes=e.lanes,yn(e,t,r)}return Ts(e,t,n,o,r)}function hu(e,t,n){var o=t.pendingProps,r=o.children,a=e!==null?e.memoizedState:null;if(o.mode==="hidden")if((t.mode&1)===0)t.memoizedState={baseLanes:0,cachePool:null,transitions:null},He(Go,Lt),Lt|=n;else{if((n&1073741824)===0)return e=a!==null?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,He(Go,Lt),Lt|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},o=a!==null?a.baseLanes:n,He(Go,Lt),Lt|=o}else a!==null?(o=a.baseLanes|n,t.memoizedState=null):o=n,He(Go,Lt),Lt|=o;return yt(e,t,r,n),t.child}function yu(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Ts(e,t,n,o,r){var a=wt(n)?ao:pt.current;return a=Bo(t,a),qo(t,r),n=Ss(e,t,n,o,a,r),o=ws(),e!==null&&!kt?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~r,yn(e,t,r)):(Ke&&o&&ns(t),t.flags|=1,yt(e,t,n,r),t.child)}function vu(e,t,n,o,r){if(wt(n)){var a=!0;_i(t)}else a=!1;if(qo(t,r),t.stateNode===null)qi(e,t),au(t,n,o),Es(t,n,o,r),o=!0;else if(e===null){var c=t.stateNode,g=t.memoizedProps;c.props=g;var y=c.context,_=n.contextType;typeof _=="object"&&_!==null?_=jt(_):(_=wt(n)?ao:pt.current,_=Bo(t,_));var j=n.getDerivedStateFromProps,N=typeof j=="function"||typeof c.getSnapshotBeforeUpdate=="function";N||typeof c.UNSAFE_componentWillReceiveProps!="function"&&typeof c.componentWillReceiveProps!="function"||(g!==o||y!==_)&&su(t,c,o,_),Bn=!1;var A=t.memoizedState;c.state=A,Ni(t,o,c,r),y=t.memoizedState,g!==o||A!==y||St.current||Bn?(typeof j=="function"&&(bs(t,n,j,o),y=t.memoizedState),(g=Bn||iu(t,n,g,o,A,y,_))?(N||typeof c.UNSAFE_componentWillMount!="function"&&typeof c.componentWillMount!="function"||(typeof c.componentWillMount=="function"&&c.componentWillMount(),typeof c.UNSAFE_componentWillMount=="function"&&c.UNSAFE_componentWillMount()),typeof c.componentDidMount=="function"&&(t.flags|=4194308)):(typeof c.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=o,t.memoizedState=y),c.props=o,c.state=y,c.context=_,o=g):(typeof c.componentDidMount=="function"&&(t.flags|=4194308),o=!1)}else{c=t.stateNode,Ac(e,t),g=t.memoizedProps,_=t.type===t.elementType?g:Wt(t.type,g),c.props=_,N=t.pendingProps,A=c.context,y=n.contextType,typeof y=="object"&&y!==null?y=jt(y):(y=wt(n)?ao:pt.current,y=Bo(t,y));var K=n.getDerivedStateFromProps;(j=typeof K=="function"||typeof c.getSnapshotBeforeUpdate=="function")||typeof c.UNSAFE_componentWillReceiveProps!="function"&&typeof c.componentWillReceiveProps!="function"||(g!==N||A!==y)&&su(t,c,o,y),Bn=!1,A=t.memoizedState,c.state=A,Ni(t,o,c,r);var J=t.memoizedState;g!==N||A!==J||St.current||Bn?(typeof K=="function"&&(bs(t,n,K,o),J=t.memoizedState),(_=Bn||iu(t,n,_,o,A,J,y)||!1)?(j||typeof c.UNSAFE_componentWillUpdate!="function"&&typeof c.componentWillUpdate!="function"||(typeof c.componentWillUpdate=="function"&&c.componentWillUpdate(o,J,y),typeof c.UNSAFE_componentWillUpdate=="function"&&c.UNSAFE_componentWillUpdate(o,J,y)),typeof c.componentDidUpdate=="function"&&(t.flags|=4),typeof c.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof c.componentDidUpdate!="function"||g===e.memoizedProps&&A===e.memoizedState||(t.flags|=4),typeof c.getSnapshotBeforeUpdate!="function"||g===e.memoizedProps&&A===e.memoizedState||(t.flags|=1024),t.memoizedProps=o,t.memoizedState=J),c.props=o,c.state=J,c.context=y,o=_):(typeof c.componentDidUpdate!="function"||g===e.memoizedProps&&A===e.memoizedState||(t.flags|=4),typeof c.getSnapshotBeforeUpdate!="function"||g===e.memoizedProps&&A===e.memoizedState||(t.flags|=1024),o=!1)}return Ls(e,t,n,o,a,r)}function Ls(e,t,n,o,r,a){yu(e,t);var c=(t.flags&128)!==0;if(!o&&!c)return r&&xc(t,n,!1),yn(e,t,a);o=t.stateNode,Sf.current=t;var g=c&&typeof n.getDerivedStateFromError!="function"?null:o.render();return t.flags|=1,e!==null&&c?(t.child=Vo(t,e.child,null,a),t.child=Vo(t,null,g,a)):yt(e,t,g,a),t.memoizedState=o.state,r&&xc(t,n,!0),t.child}function Su(e){var t=e.stateNode;t.pendingContext?kc(e,t.pendingContext,t.pendingContext!==t.context):t.context&&kc(e,t.context,!1),fs(e,t.containerInfo)}function wu(e,t,n,o,r){return Ho(),as(r),t.flags|=256,yt(e,t,n,o),t.child}var Ms={dehydrated:null,treeContext:null,retryLane:0};function zs(e){return{baseLanes:e,cachePool:null,transitions:null}}function ku(e,t,n){var o=t.pendingProps,r=Qe.current,a=!1,c=(t.flags&128)!==0,g;if((g=c)||(g=e!==null&&e.memoizedState===null?!1:(r&2)!==0),g?(a=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(r|=1),He(Qe,r&1),e===null)return is(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?((t.mode&1)===0?t.lanes=1:e.data==="$!"?t.lanes=8:t.lanes=1073741824,null):(c=o.children,e=o.fallback,a?(o=t.mode,a=t.child,c={mode:"hidden",children:c},(o&1)===0&&a!==null?(a.childLanes=0,a.pendingProps=c):a=oa(c,o,0,null),e=yo(e,o,n,null),a.return=t,e.return=t,a.sibling=e,t.child=a,t.child.memoizedState=zs(n),t.memoizedState=Ms,e):Is(t,c));if(r=e.memoizedState,r!==null&&(g=r.dehydrated,g!==null))return wf(e,t,c,o,g,r,n);if(a){a=o.fallback,c=t.mode,r=e.child,g=r.sibling;var y={mode:"hidden",children:o.children};return(c&1)===0&&t.child!==r?(o=t.child,o.childLanes=0,o.pendingProps=y,t.deletions=null):(o=Kn(r,y),o.subtreeFlags=r.subtreeFlags&14680064),g!==null?a=Kn(g,a):(a=yo(a,c,n,null),a.flags|=2),a.return=t,o.return=t,o.sibling=a,t.child=o,o=a,a=t.child,c=e.child.memoizedState,c=c===null?zs(n):{baseLanes:c.baseLanes|n,cachePool:null,transitions:c.transitions},a.memoizedState=c,a.childLanes=e.childLanes&~n,t.memoizedState=Ms,o}return a=e.child,e=a.sibling,o=Kn(a,{mode:"visible",children:o.children}),(t.mode&1)===0&&(o.lanes=n),o.return=t,o.sibling=null,e!==null&&(n=t.deletions,n===null?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=o,t.memoizedState=null,o}function Is(e,t){return t=oa({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function Wi(e,t,n,o){return o!==null&&as(o),Vo(t,e.child,null,n),e=Is(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function wf(e,t,n,o,r,a,c){if(n)return t.flags&256?(t.flags&=-257,o=_s(Error(l(422))),Wi(e,t,c,o)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(a=o.fallback,r=t.mode,o=oa({mode:"visible",children:o.children},r,0,null),a=yo(a,r,c,null),a.flags|=2,o.return=t,a.return=t,o.sibling=a,t.child=o,(t.mode&1)!==0&&Vo(t,e.child,null,c),t.child.memoizedState=zs(c),t.memoizedState=Ms,a);if((t.mode&1)===0)return Wi(e,t,c,null);if(r.data==="$!"){if(o=r.nextSibling&&r.nextSibling.dataset,o)var g=o.dgst;return o=g,a=Error(l(419)),o=_s(a,o,void 0),Wi(e,t,c,o)}if(g=(c&e.childLanes)!==0,kt||g){if(o=st,o!==null){switch(c&-c){case 4:r=2;break;case 16:r=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:r=32;break;case 536870912:r=268435456;break;default:r=0}r=(r&(o.suspendedLanes|c))!==0?0:r,r!==0&&r!==a.retryLane&&(a.retryLane=r,mn(e,r),$t(o,e,r,-1))}return Gs(),o=_s(Error(l(421))),Wi(e,t,c,o)}return r.data==="$?"?(t.flags|=128,t.child=e.child,t=If.bind(null,e),r._reactRetry=t,null):(e=a.treeContext,Tt=jn(r.nextSibling),Rt=t,Ke=!0,Vt=null,e!==null&&(It[At++]=fn,It[At++]=gn,It[At++]=so,fn=e.id,gn=e.overflow,so=t),t=Is(t,o.children),t.flags|=4096,t)}function Pu(e,t,n){e.lanes|=t;var o=e.alternate;o!==null&&(o.lanes|=t),us(e.return,t,n)}function As(e,t,n,o,r){var a=e.memoizedState;a===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:o,tail:n,tailMode:r}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=o,a.tail=n,a.tailMode=r)}function xu(e,t,n){var o=t.pendingProps,r=o.revealOrder,a=o.tail;if(yt(e,t,o.children,n),o=Qe.current,(o&2)!==0)o=o&1|2,t.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Pu(e,n,t);else if(e.tag===19)Pu(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}o&=1}if(He(Qe,o),(t.mode&1)===0)t.memoizedState=null;else switch(r){case"forwards":for(n=t.child,r=null;n!==null;)e=n.alternate,e!==null&&Di(e)===null&&(r=n),n=n.sibling;n=r,n===null?(r=t.child,t.child=null):(r=n.sibling,n.sibling=null),As(t,!1,r,n,a);break;case"backwards":for(n=null,r=t.child,t.child=null;r!==null;){if(e=r.alternate,e!==null&&Di(e)===null){t.child=r;break}e=r.sibling,r.sibling=n,n=r,r=e}As(t,!0,n,null,a);break;case"together":As(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function qi(e,t){(t.mode&1)===0&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function yn(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),fo|=t.lanes,(n&t.childLanes)===0)return null;if(e!==null&&t.child!==e.child)throw Error(l(153));if(t.child!==null){for(e=t.child,n=Kn(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Kn(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function kf(e,t,n){switch(t.tag){case 3:Su(t),Ho();break;case 5:Dc(t);break;case 1:wt(t.type)&&_i(t);break;case 4:fs(t,t.stateNode.containerInfo);break;case 10:var o=t.type._context,r=t.memoizedProps.value;He(Ii,o._currentValue),o._currentValue=r;break;case 13:if(o=t.memoizedState,o!==null)return o.dehydrated!==null?(He(Qe,Qe.current&1),t.flags|=128,null):(n&t.child.childLanes)!==0?ku(e,t,n):(He(Qe,Qe.current&1),e=yn(e,t,n),e!==null?e.sibling:null);He(Qe,Qe.current&1);break;case 19:if(o=(n&t.childLanes)!==0,(e.flags&128)!==0){if(o)return xu(e,t,n);t.flags|=128}if(r=t.memoizedState,r!==null&&(r.rendering=null,r.tail=null,r.lastEffect=null),He(Qe,Qe.current),o)break;return null;case 22:case 23:return t.lanes=0,hu(e,t,n)}return yn(e,t,n)}var Cu,js,bu,Eu;Cu=function(e,t){for(var n=t.child;n!==null;){if(n.tag===5||n.tag===6)e.appendChild(n.stateNode);else if(n.tag!==4&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},js=function(){},bu=function(e,t,n,o){var r=e.memoizedProps;if(r!==o){e=t.stateNode,uo(on.current);var a=null;switch(n){case"input":r=Co(e,r),o=Co(e,o),a=[];break;case"select":r=q({},r,{value:void 0}),o=q({},o,{value:void 0}),a=[];break;case"textarea":r=rr(e,r),o=rr(e,o),a=[];break;default:typeof r.onClick!="function"&&typeof o.onClick=="function"&&(e.onclick=Ci)}Eo(n,o);var c;n=null;for(_ in r)if(!o.hasOwnProperty(_)&&r.hasOwnProperty(_)&&r[_]!=null)if(_==="style"){var g=r[_];for(c in g)g.hasOwnProperty(c)&&(n||(n={}),n[c]="")}else _!=="dangerouslySetInnerHTML"&&_!=="children"&&_!=="suppressContentEditableWarning"&&_!=="suppressHydrationWarning"&&_!=="autoFocus"&&(d.hasOwnProperty(_)?a||(a=[]):(a=a||[]).push(_,null));for(_ in o){var y=o[_];if(g=r!=null?r[_]:void 0,o.hasOwnProperty(_)&&y!==g&&(y!=null||g!=null))if(_==="style")if(g){for(c in g)!g.hasOwnProperty(c)||y&&y.hasOwnProperty(c)||(n||(n={}),n[c]="");for(c in y)y.hasOwnProperty(c)&&g[c]!==y[c]&&(n||(n={}),n[c]=y[c])}else n||(a||(a=[]),a.push(_,n)),n=y;else _==="dangerouslySetInnerHTML"?(y=y?y.__html:void 0,g=g?g.__html:void 0,y!=null&&g!==y&&(a=a||[]).push(_,y)):_==="children"?typeof y!="string"&&typeof y!="number"||(a=a||[]).push(_,""+y):_!=="suppressContentEditableWarning"&&_!=="suppressHydrationWarning"&&(d.hasOwnProperty(_)?(y!=null&&_==="onScroll"&&We("scroll",e),a||g===y||(a=[])):(a=a||[]).push(_,y))}n&&(a=a||[]).push("style",n);var _=a;(t.updateQueue=_)&&(t.flags|=4)}},Eu=function(e,t,n,o){n!==o&&(t.flags|=4)};function Or(e,t){if(!Ke)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var o=null;n!==null;)n.alternate!==null&&(o=n),n=n.sibling;o===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:o.sibling=null}}function gt(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,o=0;if(t)for(var r=e.child;r!==null;)n|=r.lanes|r.childLanes,o|=r.subtreeFlags&14680064,o|=r.flags&14680064,r.return=e,r=r.sibling;else for(r=e.child;r!==null;)n|=r.lanes|r.childLanes,o|=r.subtreeFlags,o|=r.flags,r.return=e,r=r.sibling;return e.subtreeFlags|=o,e.childLanes=n,t}function Pf(e,t,n){var o=t.pendingProps;switch(os(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return gt(t),null;case 1:return wt(t.type)&&Ei(),gt(t),null;case 3:return o=t.stateNode,Ko(),qe(St),qe(pt),hs(),o.pendingContext&&(o.context=o.pendingContext,o.pendingContext=null),(e===null||e.child===null)&&(Mi(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,Vt!==null&&(Ks(Vt),Vt=null))),js(e,t),gt(t),null;case 5:gs(t);var r=uo(Ir.current);if(n=t.type,e!==null&&t.stateNode!=null)bu(e,t,n,o,r),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!o){if(t.stateNode===null)throw Error(l(166));return gt(t),null}if(e=uo(on.current),Mi(t)){o=t.stateNode,n=t.type;var a=t.memoizedProps;switch(o[nn]=t,o[Rr]=a,e=(t.mode&1)!==0,n){case"dialog":We("cancel",o),We("close",o);break;case"iframe":case"object":case"embed":We("load",o);break;case"video":case"audio":for(r=0;r<br.length;r++)We(br[r],o);break;case"source":We("error",o);break;case"img":case"image":case"link":We("error",o),We("load",o);break;case"details":We("toggle",o);break;case"input":Zr(o,a),We("invalid",o);break;case"select":o._wrapperState={wasMultiple:!!a.multiple},We("invalid",o);break;case"textarea":ti(o,a),We("invalid",o)}Eo(n,a),r=null;for(var c in a)if(a.hasOwnProperty(c)){var g=a[c];c==="children"?typeof g=="string"?o.textContent!==g&&(a.suppressHydrationWarning!==!0&&xi(o.textContent,g,e),r=["children",g]):typeof g=="number"&&o.textContent!==""+g&&(a.suppressHydrationWarning!==!0&&xi(o.textContent,g,e),r=["children",""+g]):d.hasOwnProperty(c)&&g!=null&&c==="onScroll"&&We("scroll",o)}switch(n){case"input":xo(o),ei(o,a,!0);break;case"textarea":xo(o),Cn(o);break;case"select":case"option":break;default:typeof a.onClick=="function"&&(o.onclick=Ci)}o=r,t.updateQueue=o,o!==null&&(t.flags|=4)}else{c=r.nodeType===9?r:r.ownerDocument,e==="http://www.w3.org/1999/xhtml"&&(e=ir(n)),e==="http://www.w3.org/1999/xhtml"?n==="script"?(e=c.createElement("div"),e.innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):typeof o.is=="string"?e=c.createElement(n,{is:o.is}):(e=c.createElement(n),n==="select"&&(c=e,o.multiple?c.multiple=!0:o.size&&(c.size=o.size))):e=c.createElementNS(e,n),e[nn]=t,e[Rr]=o,Cu(e,t,!1,!1),t.stateNode=e;e:{switch(c=sr(n,o),n){case"dialog":We("cancel",e),We("close",e),r=o;break;case"iframe":case"object":case"embed":We("load",e),r=o;break;case"video":case"audio":for(r=0;r<br.length;r++)We(br[r],e);r=o;break;case"source":We("error",e),r=o;break;case"img":case"image":case"link":We("error",e),We("load",e),r=o;break;case"details":We("toggle",e),r=o;break;case"input":Zr(e,o),r=Co(e,o),We("invalid",e);break;case"option":r=o;break;case"select":e._wrapperState={wasMultiple:!!o.multiple},r=q({},o,{value:void 0}),We("invalid",e);break;case"textarea":ti(e,o),r=rr(e,o),We("invalid",e);break;default:r=o}Eo(n,r),g=r;for(a in g)if(g.hasOwnProperty(a)){var y=g[a];a==="style"?ar(e,y):a==="dangerouslySetInnerHTML"?(y=y?y.__html:void 0,y!=null&&zt(e,y)):a==="children"?typeof y=="string"?(n!=="textarea"||y!=="")&&bn(e,y):typeof y=="number"&&bn(e,""+y):a!=="suppressContentEditableWarning"&&a!=="suppressHydrationWarning"&&a!=="autoFocus"&&(d.hasOwnProperty(a)?y!=null&&a==="onScroll"&&We("scroll",e):y!=null&&de(e,a,y,c))}switch(n){case"input":xo(e),ei(e,o,!1);break;case"textarea":xo(e),Cn(e);break;case"option":o.value!=null&&e.setAttribute("value",""+be(o.value));break;case"select":e.multiple=!!o.multiple,a=o.value,a!=null?xn(e,!!o.multiple,a,!1):o.defaultValue!=null&&xn(e,!!o.multiple,o.defaultValue,!0);break;default:typeof r.onClick=="function"&&(e.onclick=Ci)}switch(n){case"button":case"input":case"select":case"textarea":o=!!o.autoFocus;break e;case"img":o=!0;break e;default:o=!1}}o&&(t.flags|=4)}t.ref!==null&&(t.flags|=512,t.flags|=2097152)}return gt(t),null;case 6:if(e&&t.stateNode!=null)Eu(e,t,e.memoizedProps,o);else{if(typeof o!="string"&&t.stateNode===null)throw Error(l(166));if(n=uo(Ir.current),uo(on.current),Mi(t)){if(o=t.stateNode,n=t.memoizedProps,o[nn]=t,(a=o.nodeValue!==n)&&(e=Rt,e!==null))switch(e.tag){case 3:xi(o.nodeValue,n,(e.mode&1)!==0);break;case 5:e.memoizedProps.suppressHydrationWarning!==!0&&xi(o.nodeValue,n,(e.mode&1)!==0)}a&&(t.flags|=4)}else o=(n.nodeType===9?n:n.ownerDocument).createTextNode(o),o[nn]=t,t.stateNode=o}return gt(t),null;case 13:if(qe(Qe),o=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(Ke&&Tt!==null&&(t.mode&1)!==0&&(t.flags&128)===0)Tc(),Ho(),t.flags|=98560,a=!1;else if(a=Mi(t),o!==null&&o.dehydrated!==null){if(e===null){if(!a)throw Error(l(318));if(a=t.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(l(317));a[nn]=t}else Ho(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;gt(t),a=!1}else Vt!==null&&(Ks(Vt),Vt=null),a=!0;if(!a)return t.flags&65536?t:null}return(t.flags&128)!==0?(t.lanes=n,t):(o=o!==null,o!==(e!==null&&e.memoizedState!==null)&&o&&(t.child.flags|=8192,(t.mode&1)!==0&&(e===null||(Qe.current&1)!==0?rt===0&&(rt=3):Gs())),t.updateQueue!==null&&(t.flags|=4),gt(t),null);case 4:return Ko(),js(e,t),e===null&&Er(t.stateNode.containerInfo),gt(t),null;case 10:return cs(t.type._context),gt(t),null;case 17:return wt(t.type)&&Ei(),gt(t),null;case 19:if(qe(Qe),a=t.memoizedState,a===null)return gt(t),null;if(o=(t.flags&128)!==0,c=a.rendering,c===null)if(o)Or(a,!1);else{if(rt!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(c=Di(e),c!==null){for(t.flags|=128,Or(a,!1),o=c.updateQueue,o!==null&&(t.updateQueue=o,t.flags|=4),t.subtreeFlags=0,o=n,n=t.child;n!==null;)a=n,e=o,a.flags&=14680066,c=a.alternate,c===null?(a.childLanes=0,a.lanes=e,a.child=null,a.subtreeFlags=0,a.memoizedProps=null,a.memoizedState=null,a.updateQueue=null,a.dependencies=null,a.stateNode=null):(a.childLanes=c.childLanes,a.lanes=c.lanes,a.child=c.child,a.subtreeFlags=0,a.deletions=null,a.memoizedProps=c.memoizedProps,a.memoizedState=c.memoizedState,a.updateQueue=c.updateQueue,a.type=c.type,e=c.dependencies,a.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return He(Qe,Qe.current&1|2),t.child}e=e.sibling}a.tail!==null&&Re()>Yo&&(t.flags|=128,o=!0,Or(a,!1),t.lanes=4194304)}else{if(!o)if(e=Di(c),e!==null){if(t.flags|=128,o=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Or(a,!0),a.tail===null&&a.tailMode==="hidden"&&!c.alternate&&!Ke)return gt(t),null}else 2*Re()-a.renderingStartTime>Yo&&n!==1073741824&&(t.flags|=128,o=!0,Or(a,!1),t.lanes=4194304);a.isBackwards?(c.sibling=t.child,t.child=c):(n=a.last,n!==null?n.sibling=c:t.child=c,a.last=c)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=Re(),t.sibling=null,n=Qe.current,He(Qe,o?n&1|2:n&1),t):(gt(t),null);case 22:case 23:return Qs(),o=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==o&&(t.flags|=8192),o&&(t.mode&1)!==0?(Lt&1073741824)!==0&&(gt(t),t.subtreeFlags&6&&(t.flags|=8192)):gt(t),null;case 24:return null;case 25:return null}throw Error(l(156,t.tag))}function xf(e,t){switch(os(t),t.tag){case 1:return wt(t.type)&&Ei(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ko(),qe(St),qe(pt),hs(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return gs(t),null;case 13:if(qe(Qe),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(l(340));Ho()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return qe(Qe),null;case 4:return Ko(),null;case 10:return cs(t.type._context),null;case 22:case 23:return Qs(),null;case 24:return null;default:return null}}var Ki=!1,mt=!1,Cf=typeof WeakSet=="function"?WeakSet:Set,Q=null;function Qo(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(o){Ye(e,t,o)}else n.current=null}function Ns(e,t,n){try{n()}catch(o){Ye(e,t,o)}}var _u=!1;function bf(e,t){if(Qa=pi,e=ic(),Fa(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var o=n.getSelection&&n.getSelection();if(o&&o.rangeCount!==0){n=o.anchorNode;var r=o.anchorOffset,a=o.focusNode;o=o.focusOffset;try{n.nodeType,a.nodeType}catch{n=null;break e}var c=0,g=-1,y=-1,_=0,j=0,N=e,A=null;t:for(;;){for(var K;N!==n||r!==0&&N.nodeType!==3||(g=c+r),N!==a||o!==0&&N.nodeType!==3||(y=c+o),N.nodeType===3&&(c+=N.nodeValue.length),(K=N.firstChild)!==null;)A=N,N=K;for(;;){if(N===e)break t;if(A===n&&++_===r&&(g=c),A===a&&++j===o&&(y=c),(K=N.nextSibling)!==null)break;N=A,A=N.parentNode}N=K}n=g===-1||y===-1?null:{start:g,end:y}}else n=null}n=n||{start:0,end:0}}else n=null;for(Ga={focusedElem:e,selectionRange:n},pi=!1,Q=t;Q!==null;)if(t=Q,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Q=e;else for(;Q!==null;){t=Q;try{var J=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(J!==null){var Z=J.memoizedProps,Je=J.memoizedState,x=t.stateNode,S=x.getSnapshotBeforeUpdate(t.elementType===t.type?Z:Wt(t.type,Z),Je);x.__reactInternalSnapshotBeforeUpdate=S}break;case 3:var b=t.stateNode.containerInfo;b.nodeType===1?b.textContent="":b.nodeType===9&&b.documentElement&&b.removeChild(b.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(l(163))}}catch(F){Ye(t,t.return,F)}if(e=t.sibling,e!==null){e.return=t.return,Q=e;break}Q=t.return}return J=_u,_u=!1,J}function Br(e,t,n){var o=t.updateQueue;if(o=o!==null?o.lastEffect:null,o!==null){var r=o=o.next;do{if((r.tag&e)===e){var a=r.destroy;r.destroy=void 0,a!==void 0&&Ns(t,n,a)}r=r.next}while(r!==o)}}function $i(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var o=n.create;n.destroy=o()}n=n.next}while(n!==t)}}function Ds(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Ru(e){var t=e.alternate;t!==null&&(e.alternate=null,Ru(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[nn],delete t[Rr],delete t[Za],delete t[sf],delete t[lf])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Tu(e){return e.tag===5||e.tag===3||e.tag===4}function Lu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Tu(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Os(e,t,n){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Ci));else if(o!==4&&(e=e.child,e!==null))for(Os(e,t,n),e=e.sibling;e!==null;)Os(e,t,n),e=e.sibling}function Bs(e,t,n){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(o!==4&&(e=e.child,e!==null))for(Bs(e,t,n),e=e.sibling;e!==null;)Bs(e,t,n),e=e.sibling}var ut=null,qt=!1;function Un(e,t,n){for(n=n.child;n!==null;)Mu(e,t,n),n=n.sibling}function Mu(e,t,n){if(ct&&typeof ct.onCommitFiberUnmount=="function")try{ct.onCommitFiberUnmount(Oe,n)}catch{}switch(n.tag){case 5:mt||Qo(n,t);case 6:var o=ut,r=qt;ut=null,Un(e,t,n),ut=o,qt=r,ut!==null&&(qt?(e=ut,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):ut.removeChild(n.stateNode));break;case 18:ut!==null&&(qt?(e=ut,n=n.stateNode,e.nodeType===8?Xa(e.parentNode,n):e.nodeType===1&&Xa(e,n),yr(e)):Xa(ut,n.stateNode));break;case 4:o=ut,r=qt,ut=n.stateNode.containerInfo,qt=!0,Un(e,t,n),ut=o,qt=r;break;case 0:case 11:case 14:case 15:if(!mt&&(o=n.updateQueue,o!==null&&(o=o.lastEffect,o!==null))){r=o=o.next;do{var a=r,c=a.destroy;a=a.tag,c!==void 0&&((a&2)!==0||(a&4)!==0)&&Ns(n,t,c),r=r.next}while(r!==o)}Un(e,t,n);break;case 1:if(!mt&&(Qo(n,t),o=n.stateNode,typeof o.componentWillUnmount=="function"))try{o.props=n.memoizedProps,o.state=n.memoizedState,o.componentWillUnmount()}catch(g){Ye(n,t,g)}Un(e,t,n);break;case 21:Un(e,t,n);break;case 22:n.mode&1?(mt=(o=mt)||n.memoizedState!==null,Un(e,t,n),mt=o):Un(e,t,n);break;default:Un(e,t,n)}}function zu(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Cf),t.forEach(function(o){var r=Af.bind(null,e,o);n.has(o)||(n.add(o),o.then(r,r))})}}function Kt(e,t){var n=t.deletions;if(n!==null)for(var o=0;o<n.length;o++){var r=n[o];try{var a=e,c=t,g=c;e:for(;g!==null;){switch(g.tag){case 5:ut=g.stateNode,qt=!1;break e;case 3:ut=g.stateNode.containerInfo,qt=!0;break e;case 4:ut=g.stateNode.containerInfo,qt=!0;break e}g=g.return}if(ut===null)throw Error(l(160));Mu(a,c,r),ut=null,qt=!1;var y=r.alternate;y!==null&&(y.return=null),r.return=null}catch(_){Ye(r,t,_)}}if(t.subtreeFlags&12854)for(t=t.child;t!==null;)Iu(t,e),t=t.sibling}function Iu(e,t){var n=e.alternate,o=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(Kt(t,e),an(e),o&4){try{Br(3,e,e.return),$i(3,e)}catch(Z){Ye(e,e.return,Z)}try{Br(5,e,e.return)}catch(Z){Ye(e,e.return,Z)}}break;case 1:Kt(t,e),an(e),o&512&&n!==null&&Qo(n,n.return);break;case 5:if(Kt(t,e),an(e),o&512&&n!==null&&Qo(n,n.return),e.flags&32){var r=e.stateNode;try{bn(r,"")}catch(Z){Ye(e,e.return,Z)}}if(o&4&&(r=e.stateNode,r!=null)){var a=e.memoizedProps,c=n!==null?n.memoizedProps:a,g=e.type,y=e.updateQueue;if(e.updateQueue=null,y!==null)try{g==="input"&&a.type==="radio"&&a.name!=null&&Yt(r,a),sr(g,c);var _=sr(g,a);for(c=0;c<y.length;c+=2){var j=y[c],N=y[c+1];j==="style"?ar(r,N):j==="dangerouslySetInnerHTML"?zt(r,N):j==="children"?bn(r,N):de(r,j,N,_)}switch(g){case"input":or(r,a);break;case"textarea":Jt(r,a);break;case"select":var A=r._wrapperState.wasMultiple;r._wrapperState.wasMultiple=!!a.multiple;var K=a.value;K!=null?xn(r,!!a.multiple,K,!1):A!==!!a.multiple&&(a.defaultValue!=null?xn(r,!!a.multiple,a.defaultValue,!0):xn(r,!!a.multiple,a.multiple?[]:"",!1))}r[Rr]=a}catch(Z){Ye(e,e.return,Z)}}break;case 6:if(Kt(t,e),an(e),o&4){if(e.stateNode===null)throw Error(l(162));r=e.stateNode,a=e.memoizedProps;try{r.nodeValue=a}catch(Z){Ye(e,e.return,Z)}}break;case 3:if(Kt(t,e),an(e),o&4&&n!==null&&n.memoizedState.isDehydrated)try{yr(t.containerInfo)}catch(Z){Ye(e,e.return,Z)}break;case 4:Kt(t,e),an(e);break;case 13:Kt(t,e),an(e),r=e.child,r.flags&8192&&(a=r.memoizedState!==null,r.stateNode.isHidden=a,!a||r.alternate!==null&&r.alternate.memoizedState!==null||(Hs=Re())),o&4&&zu(e);break;case 22:if(j=n!==null&&n.memoizedState!==null,e.mode&1?(mt=(_=mt)||j,Kt(t,e),mt=_):Kt(t,e),an(e),o&8192){if(_=e.memoizedState!==null,(e.stateNode.isHidden=_)&&!j&&(e.mode&1)!==0)for(Q=e,j=e.child;j!==null;){for(N=Q=j;Q!==null;){switch(A=Q,K=A.child,A.tag){case 0:case 11:case 14:case 15:Br(4,A,A.return);break;case 1:Qo(A,A.return);var J=A.stateNode;if(typeof J.componentWillUnmount=="function"){o=A,n=A.return;try{t=o,J.props=t.memoizedProps,J.state=t.memoizedState,J.componentWillUnmount()}catch(Z){Ye(o,n,Z)}}break;case 5:Qo(A,A.return);break;case 22:if(A.memoizedState!==null){Nu(N);continue}}K!==null?(K.return=A,Q=K):Nu(N)}j=j.sibling}e:for(j=null,N=e;;){if(N.tag===5){if(j===null){j=N;try{r=N.stateNode,_?(a=r.style,typeof a.setProperty=="function"?a.setProperty("display","none","important"):a.display="none"):(g=N.stateNode,y=N.memoizedProps.style,c=y!=null&&y.hasOwnProperty("display")?y.display:null,g.style.display=Ft("display",c))}catch(Z){Ye(e,e.return,Z)}}}else if(N.tag===6){if(j===null)try{N.stateNode.nodeValue=_?"":N.memoizedProps}catch(Z){Ye(e,e.return,Z)}}else if((N.tag!==22&&N.tag!==23||N.memoizedState===null||N===e)&&N.child!==null){N.child.return=N,N=N.child;continue}if(N===e)break e;for(;N.sibling===null;){if(N.return===null||N.return===e)break e;j===N&&(j=null),N=N.return}j===N&&(j=null),N.sibling.return=N.return,N=N.sibling}}break;case 19:Kt(t,e),an(e),o&4&&zu(e);break;case 21:break;default:Kt(t,e),an(e)}}function an(e){var t=e.flags;if(t&2){try{e:{for(var n=e.return;n!==null;){if(Tu(n)){var o=n;break e}n=n.return}throw Error(l(160))}switch(o.tag){case 5:var r=o.stateNode;o.flags&32&&(bn(r,""),o.flags&=-33);var a=Lu(e);Bs(e,a,r);break;case 3:case 4:var c=o.stateNode.containerInfo,g=Lu(e);Os(e,g,c);break;default:throw Error(l(161))}}catch(y){Ye(e,e.return,y)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function Ef(e,t,n){Q=e,Au(e)}function Au(e,t,n){for(var o=(e.mode&1)!==0;Q!==null;){var r=Q,a=r.child;if(r.tag===22&&o){var c=r.memoizedState!==null||Ki;if(!c){var g=r.alternate,y=g!==null&&g.memoizedState!==null||mt;g=Ki;var _=mt;if(Ki=c,(mt=y)&&!_)for(Q=r;Q!==null;)c=Q,y=c.child,c.tag===22&&c.memoizedState!==null?Du(r):y!==null?(y.return=c,Q=y):Du(r);for(;a!==null;)Q=a,Au(a),a=a.sibling;Q=r,Ki=g,mt=_}ju(e)}else(r.subtreeFlags&8772)!==0&&a!==null?(a.return=r,Q=a):ju(e)}}function ju(e){for(;Q!==null;){var t=Q;if((t.flags&8772)!==0){var n=t.alternate;try{if((t.flags&8772)!==0)switch(t.tag){case 0:case 11:case 15:mt||$i(5,t);break;case 1:var o=t.stateNode;if(t.flags&4&&!mt)if(n===null)o.componentDidMount();else{var r=t.elementType===t.type?n.memoizedProps:Wt(t.type,n.memoizedProps);o.componentDidUpdate(r,n.memoizedState,o.__reactInternalSnapshotBeforeUpdate)}var a=t.updateQueue;a!==null&&Nc(t,a,o);break;case 3:var c=t.updateQueue;if(c!==null){if(n=null,t.child!==null)switch(t.child.tag){case 5:n=t.child.stateNode;break;case 1:n=t.child.stateNode}Nc(t,c,n)}break;case 5:var g=t.stateNode;if(n===null&&t.flags&4){n=g;var y=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":y.autoFocus&&n.focus();break;case"img":y.src&&(n.src=y.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(t.memoizedState===null){var _=t.alternate;if(_!==null){var j=_.memoizedState;if(j!==null){var N=j.dehydrated;N!==null&&yr(N)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(l(163))}mt||t.flags&512&&Ds(t)}catch(A){Ye(t,t.return,A)}}if(t===e){Q=null;break}if(n=t.sibling,n!==null){n.return=t.return,Q=n;break}Q=t.return}}function Nu(e){for(;Q!==null;){var t=Q;if(t===e){Q=null;break}var n=t.sibling;if(n!==null){n.return=t.return,Q=n;break}Q=t.return}}function Du(e){for(;Q!==null;){var t=Q;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{$i(4,t)}catch(y){Ye(t,n,y)}break;case 1:var o=t.stateNode;if(typeof o.componentDidMount=="function"){var r=t.return;try{o.componentDidMount()}catch(y){Ye(t,r,y)}}var a=t.return;try{Ds(t)}catch(y){Ye(t,a,y)}break;case 5:var c=t.return;try{Ds(t)}catch(y){Ye(t,c,y)}}}catch(y){Ye(t,t.return,y)}if(t===e){Q=null;break}var g=t.sibling;if(g!==null){g.return=t.return,Q=g;break}Q=t.return}}var _f=Math.ceil,Qi=ae.ReactCurrentDispatcher,Fs=ae.ReactCurrentOwner,Dt=ae.ReactCurrentBatchConfig,_e=0,st=null,Ze=null,dt=0,Lt=0,Go=Nn(0),rt=0,Fr=null,fo=0,Gi=0,Us=0,Ur=null,Pt=null,Hs=0,Yo=1/0,vn=null,Yi=!1,Vs=null,Hn=null,Ji=!1,Vn=null,Xi=0,Hr=0,Ws=null,Zi=-1,ea=0;function vt(){return(_e&6)!==0?Re():Zi!==-1?Zi:Zi=Re()}function Wn(e){return(e.mode&1)===0?1:(_e&2)!==0&&dt!==0?dt&-dt:uf.transition!==null?(ea===0&&(ea=Ll()),ea):(e=Ie,e!==0||(e=window.event,e=e===void 0?16:Bl(e.type)),e)}function $t(e,t,n,o){if(50<Hr)throw Hr=0,Ws=null,Error(l(185));pr(e,n,o),((_e&2)===0||e!==st)&&(e===st&&((_e&2)===0&&(Gi|=n),rt===4&&qn(e,dt)),xt(e,o),n===1&&_e===0&&(t.mode&1)===0&&(Yo=Re()+500,Ri&&On()))}function xt(e,t){var n=e.callbackNode;cp(e,t);var o=ci(e,e===st?dt:0);if(o===0)n!==null&&ln(n),e.callbackNode=null,e.callbackPriority=0;else if(t=o&-o,e.callbackPriority!==t){if(n!=null&&ln(n),t===1)e.tag===0?cf(Bu.bind(null,e)):Cc(Bu.bind(null,e)),rf(function(){(_e&6)===0&&On()}),n=null;else{switch(Ml(o)){case 1:n=cn;break;case 4:n=tn;break;case 16:n=un;break;case 536870912:n=xe;break;default:n=un}n=$u(n,Ou.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function Ou(e,t){if(Zi=-1,ea=0,(_e&6)!==0)throw Error(l(327));var n=e.callbackNode;if(Jo()&&e.callbackNode!==n)return null;var o=ci(e,e===st?dt:0);if(o===0)return null;if((o&30)!==0||(o&e.expiredLanes)!==0||t)t=ta(e,o);else{t=o;var r=_e;_e|=2;var a=Uu();(st!==e||dt!==t)&&(vn=null,Yo=Re()+500,mo(e,t));do try{Lf();break}catch(g){Fu(e,g)}while(!0);ls(),Qi.current=a,_e=r,Ze!==null?t=0:(st=null,dt=0,t=rt)}if(t!==0){if(t===2&&(r=Ca(e),r!==0&&(o=r,t=qs(e,r))),t===1)throw n=Fr,mo(e,0),qn(e,o),xt(e,Re()),n;if(t===6)qn(e,o);else{if(r=e.current.alternate,(o&30)===0&&!Rf(r)&&(t=ta(e,o),t===2&&(a=Ca(e),a!==0&&(o=a,t=qs(e,a))),t===1))throw n=Fr,mo(e,0),qn(e,o),xt(e,Re()),n;switch(e.finishedWork=r,e.finishedLanes=o,t){case 0:case 1:throw Error(l(345));case 2:ho(e,Pt,vn);break;case 3:if(qn(e,o),(o&130023424)===o&&(t=Hs+500-Re(),10<t)){if(ci(e,0)!==0)break;if(r=e.suspendedLanes,(r&o)!==o){vt(),e.pingedLanes|=e.suspendedLanes&r;break}e.timeoutHandle=Ja(ho.bind(null,e,Pt,vn),t);break}ho(e,Pt,vn);break;case 4:if(qn(e,o),(o&4194240)===o)break;for(t=e.eventTimes,r=-1;0<o;){var c=31-Te(o);a=1<<c,c=t[c],c>r&&(r=c),o&=~a}if(o=r,o=Re()-o,o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*_f(o/1960))-o,10<o){e.timeoutHandle=Ja(ho.bind(null,e,Pt,vn),o);break}ho(e,Pt,vn);break;case 5:ho(e,Pt,vn);break;default:throw Error(l(329))}}}return xt(e,Re()),e.callbackNode===n?Ou.bind(null,e):null}function qs(e,t){var n=Ur;return e.current.memoizedState.isDehydrated&&(mo(e,t).flags|=256),e=ta(e,t),e!==2&&(t=Pt,Pt=n,t!==null&&Ks(t)),e}function Ks(e){Pt===null?Pt=e:Pt.push.apply(Pt,e)}function Rf(e){for(var t=e;;){if(t.flags&16384){var n=t.updateQueue;if(n!==null&&(n=n.stores,n!==null))for(var o=0;o<n.length;o++){var r=n[o],a=r.getSnapshot;r=r.value;try{if(!Ht(a(),r))return!1}catch{return!1}}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function qn(e,t){for(t&=~Us,t&=~Gi,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-Te(t),o=1<<n;e[n]=-1,t&=~o}}function Bu(e){if((_e&6)!==0)throw Error(l(327));Jo();var t=ci(e,0);if((t&1)===0)return xt(e,Re()),null;var n=ta(e,t);if(e.tag!==0&&n===2){var o=Ca(e);o!==0&&(t=o,n=qs(e,o))}if(n===1)throw n=Fr,mo(e,0),qn(e,t),xt(e,Re()),n;if(n===6)throw Error(l(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,ho(e,Pt,vn),xt(e,Re()),null}function $s(e,t){var n=_e;_e|=1;try{return e(t)}finally{_e=n,_e===0&&(Yo=Re()+500,Ri&&On())}}function go(e){Vn!==null&&Vn.tag===0&&(_e&6)===0&&Jo();var t=_e;_e|=1;var n=Dt.transition,o=Ie;try{if(Dt.transition=null,Ie=1,e)return e()}finally{Ie=o,Dt.transition=n,_e=t,(_e&6)===0&&On()}}function Qs(){Lt=Go.current,qe(Go)}function mo(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(n!==-1&&(e.timeoutHandle=-1,of(n)),Ze!==null)for(n=Ze.return;n!==null;){var o=n;switch(os(o),o.tag){case 1:o=o.type.childContextTypes,o!=null&&Ei();break;case 3:Ko(),qe(St),qe(pt),hs();break;case 5:gs(o);break;case 4:Ko();break;case 13:qe(Qe);break;case 19:qe(Qe);break;case 10:cs(o.type._context);break;case 22:case 23:Qs()}n=n.return}if(st=e,Ze=e=Kn(e.current,null),dt=Lt=t,rt=0,Fr=null,Us=Gi=fo=0,Pt=Ur=null,co!==null){for(t=0;t<co.length;t++)if(n=co[t],o=n.interleaved,o!==null){n.interleaved=null;var r=o.next,a=n.pending;if(a!==null){var c=a.next;a.next=r,o.next=c}n.pending=o}co=null}return e}function Fu(e,t){do{var n=Ze;try{if(ls(),Oi.current=Hi,Bi){for(var o=Ge.memoizedState;o!==null;){var r=o.queue;r!==null&&(r.pending=null),o=o.next}Bi=!1}if(po=0,at=ot=Ge=null,Ar=!1,jr=0,Fs.current=null,n===null||n.return===null){rt=1,Fr=t,Ze=null;break}e:{var a=e,c=n.return,g=n,y=t;if(t=dt,g.flags|=32768,y!==null&&typeof y=="object"&&typeof y.then=="function"){var _=y,j=g,N=j.tag;if((j.mode&1)===0&&(N===0||N===11||N===15)){var A=j.alternate;A?(j.updateQueue=A.updateQueue,j.memoizedState=A.memoizedState,j.lanes=A.lanes):(j.updateQueue=null,j.memoizedState=null)}var K=du(c);if(K!==null){K.flags&=-257,pu(K,c,g,a,t),K.mode&1&&uu(a,_,t),t=K,y=_;var J=t.updateQueue;if(J===null){var Z=new Set;Z.add(y),t.updateQueue=Z}else J.add(y);break e}else{if((t&1)===0){uu(a,_,t),Gs();break e}y=Error(l(426))}}else if(Ke&&g.mode&1){var Je=du(c);if(Je!==null){(Je.flags&65536)===0&&(Je.flags|=256),pu(Je,c,g,a,t),as($o(y,g));break e}}a=y=$o(y,g),rt!==4&&(rt=2),Ur===null?Ur=[a]:Ur.push(a),a=c;do{switch(a.tag){case 3:a.flags|=65536,t&=-t,a.lanes|=t;var x=lu(a,y,t);jc(a,x);break e;case 1:g=y;var S=a.type,b=a.stateNode;if((a.flags&128)===0&&(typeof S.getDerivedStateFromError=="function"||b!==null&&typeof b.componentDidCatch=="function"&&(Hn===null||!Hn.has(b)))){a.flags|=65536,t&=-t,a.lanes|=t;var F=cu(a,g,t);jc(a,F);break e}}a=a.return}while(a!==null)}Vu(n)}catch(ee){t=ee,Ze===n&&n!==null&&(Ze=n=n.return);continue}break}while(!0)}function Uu(){var e=Qi.current;return Qi.current=Hi,e===null?Hi:e}function Gs(){(rt===0||rt===3||rt===2)&&(rt=4),st===null||(fo&268435455)===0&&(Gi&268435455)===0||qn(st,dt)}function ta(e,t){var n=_e;_e|=2;var o=Uu();(st!==e||dt!==t)&&(vn=null,mo(e,t));do try{Tf();break}catch(r){Fu(e,r)}while(!0);if(ls(),_e=n,Qi.current=o,Ze!==null)throw Error(l(261));return st=null,dt=0,rt}function Tf(){for(;Ze!==null;)Hu(Ze)}function Lf(){for(;Ze!==null&&!oo();)Hu(Ze)}function Hu(e){var t=Ku(e.alternate,e,Lt);e.memoizedProps=e.pendingProps,t===null?Vu(e):Ze=t,Fs.current=null}function Vu(e){var t=e;do{var n=t.alternate;if(e=t.return,(t.flags&32768)===0){if(n=Pf(n,t,Lt),n!==null){Ze=n;return}}else{if(n=xf(n,t),n!==null){n.flags&=32767,Ze=n;return}if(e!==null)e.flags|=32768,e.subtreeFlags=0,e.deletions=null;else{rt=6,Ze=null;return}}if(t=t.sibling,t!==null){Ze=t;return}Ze=t=e}while(t!==null);rt===0&&(rt=5)}function ho(e,t,n){var o=Ie,r=Dt.transition;try{Dt.transition=null,Ie=1,Mf(e,t,n,o)}finally{Dt.transition=r,Ie=o}return null}function Mf(e,t,n,o){do Jo();while(Vn!==null);if((_e&6)!==0)throw Error(l(327));n=e.finishedWork;var r=e.finishedLanes;if(n===null)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(l(177));e.callbackNode=null,e.callbackPriority=0;var a=n.lanes|n.childLanes;if(up(e,a),e===st&&(Ze=st=null,dt=0),(n.subtreeFlags&2064)===0&&(n.flags&2064)===0||Ji||(Ji=!0,$u(un,function(){return Jo(),null})),a=(n.flags&15990)!==0,(n.subtreeFlags&15990)!==0||a){a=Dt.transition,Dt.transition=null;var c=Ie;Ie=1;var g=_e;_e|=4,Fs.current=null,bf(e,n),Iu(n,e),Yp(Ga),pi=!!Qa,Ga=Qa=null,e.current=n,Ef(n),Ut(),_e=g,Ie=c,Dt.transition=a}else e.current=n;if(Ji&&(Ji=!1,Vn=e,Xi=r),a=e.pendingLanes,a===0&&(Hn=null),ro(n.stateNode),xt(e,Re()),t!==null)for(o=e.onRecoverableError,n=0;n<t.length;n++)r=t[n],o(r.value,{componentStack:r.stack,digest:r.digest});if(Yi)throw Yi=!1,e=Vs,Vs=null,e;return(Xi&1)!==0&&e.tag!==0&&Jo(),a=e.pendingLanes,(a&1)!==0?e===Ws?Hr++:(Hr=0,Ws=e):Hr=0,On(),null}function Jo(){if(Vn!==null){var e=Ml(Xi),t=Dt.transition,n=Ie;try{if(Dt.transition=null,Ie=16>e?16:e,Vn===null)var o=!1;else{if(e=Vn,Vn=null,Xi=0,(_e&6)!==0)throw Error(l(331));var r=_e;for(_e|=4,Q=e.current;Q!==null;){var a=Q,c=a.child;if((Q.flags&16)!==0){var g=a.deletions;if(g!==null){for(var y=0;y<g.length;y++){var _=g[y];for(Q=_;Q!==null;){var j=Q;switch(j.tag){case 0:case 11:case 15:Br(8,j,a)}var N=j.child;if(N!==null)N.return=j,Q=N;else for(;Q!==null;){j=Q;var A=j.sibling,K=j.return;if(Ru(j),j===_){Q=null;break}if(A!==null){A.return=K,Q=A;break}Q=K}}}var J=a.alternate;if(J!==null){var Z=J.child;if(Z!==null){J.child=null;do{var Je=Z.sibling;Z.sibling=null,Z=Je}while(Z!==null)}}Q=a}}if((a.subtreeFlags&2064)!==0&&c!==null)c.return=a,Q=c;else e:for(;Q!==null;){if(a=Q,(a.flags&2048)!==0)switch(a.tag){case 0:case 11:case 15:Br(9,a,a.return)}var x=a.sibling;if(x!==null){x.return=a.return,Q=x;break e}Q=a.return}}var S=e.current;for(Q=S;Q!==null;){c=Q;var b=c.child;if((c.subtreeFlags&2064)!==0&&b!==null)b.return=c,Q=b;else e:for(c=S;Q!==null;){if(g=Q,(g.flags&2048)!==0)try{switch(g.tag){case 0:case 11:case 15:$i(9,g)}}catch(ee){Ye(g,g.return,ee)}if(g===c){Q=null;break e}var F=g.sibling;if(F!==null){F.return=g.return,Q=F;break e}Q=g.return}}if(_e=r,On(),ct&&typeof ct.onPostCommitFiberRoot=="function")try{ct.onPostCommitFiberRoot(Oe,e)}catch{}o=!0}return o}finally{Ie=n,Dt.transition=t}}return!1}function Wu(e,t,n){t=$o(n,t),t=lu(e,t,1),e=Fn(e,t,1),t=vt(),e!==null&&(pr(e,1,t),xt(e,t))}function Ye(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}else if(t.tag===1){var o=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof o.componentDidCatch=="function"&&(Hn===null||!Hn.has(o))){e=$o(n,e),e=cu(t,e,1),t=Fn(t,e,1),e=vt(),t!==null&&(pr(t,1,e),xt(t,e));break}}t=t.return}}function zf(e,t,n){var o=e.pingCache;o!==null&&o.delete(t),t=vt(),e.pingedLanes|=e.suspendedLanes&n,st===e&&(dt&n)===n&&(rt===4||rt===3&&(dt&130023424)===dt&&500>Re()-Hs?mo(e,0):Us|=n),xt(e,t)}function qu(e,t){t===0&&((e.mode&1)===0?t=1:(t=li,li<<=1,(li&130023424)===0&&(li=4194304)));var n=vt();e=mn(e,t),e!==null&&(pr(e,t,n),xt(e,n))}function If(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Af(e,t){var n=0;switch(e.tag){case 13:var o=e.stateNode,r=e.memoizedState;r!==null&&(n=r.retryLane);break;case 19:o=e.stateNode;break;default:throw Error(l(314))}o!==null&&o.delete(t),qu(e,n)}var Ku;Ku=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||St.current)kt=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return kt=!1,kf(e,t,n);kt=(e.flags&131072)!==0}else kt=!1,Ke&&(t.flags&1048576)!==0&&bc(t,Li,t.index);switch(t.lanes=0,t.tag){case 2:var o=t.type;qi(e,t),e=t.pendingProps;var r=Bo(t,pt.current);qo(t,n),r=Ss(null,t,o,e,r,n);var a=ws();return t.flags|=1,typeof r=="object"&&r!==null&&typeof r.render=="function"&&r.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,wt(o)?(a=!0,_i(t)):a=!1,t.memoizedState=r.state!==null&&r.state!==void 0?r.state:null,ps(t),r.updater=Vi,t.stateNode=r,r._reactInternals=t,Es(t,o,e,n),t=Ls(null,t,o,!0,a,n)):(t.tag=0,Ke&&a&&ns(t),yt(null,t,r,n),t=t.child),t;case 16:o=t.elementType;e:{switch(qi(e,t),e=t.pendingProps,r=o._init,o=r(o._payload),t.type=o,r=t.tag=Nf(o),e=Wt(o,e),r){case 0:t=Ts(null,t,o,e,n);break e;case 1:t=vu(null,t,o,e,n);break e;case 11:t=fu(null,t,o,e,n);break e;case 14:t=gu(null,t,o,Wt(o.type,e),n);break e}throw Error(l(306,o,""))}return t;case 0:return o=t.type,r=t.pendingProps,r=t.elementType===o?r:Wt(o,r),Ts(e,t,o,r,n);case 1:return o=t.type,r=t.pendingProps,r=t.elementType===o?r:Wt(o,r),vu(e,t,o,r,n);case 3:e:{if(Su(t),e===null)throw Error(l(387));o=t.pendingProps,a=t.memoizedState,r=a.element,Ac(e,t),Ni(t,o,null,n);var c=t.memoizedState;if(o=c.element,a.isDehydrated)if(a={element:o,isDehydrated:!1,cache:c.cache,pendingSuspenseBoundaries:c.pendingSuspenseBoundaries,transitions:c.transitions},t.updateQueue.baseState=a,t.memoizedState=a,t.flags&256){r=$o(Error(l(423)),t),t=wu(e,t,o,n,r);break e}else if(o!==r){r=$o(Error(l(424)),t),t=wu(e,t,o,n,r);break e}else for(Tt=jn(t.stateNode.containerInfo.firstChild),Rt=t,Ke=!0,Vt=null,n=zc(t,null,o,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Ho(),o===r){t=yn(e,t,n);break e}yt(e,t,o,n)}t=t.child}return t;case 5:return Dc(t),e===null&&is(t),o=t.type,r=t.pendingProps,a=e!==null?e.memoizedProps:null,c=r.children,Ya(o,r)?c=null:a!==null&&Ya(o,a)&&(t.flags|=32),yu(e,t),yt(e,t,c,n),t.child;case 6:return e===null&&is(t),null;case 13:return ku(e,t,n);case 4:return fs(t,t.stateNode.containerInfo),o=t.pendingProps,e===null?t.child=Vo(t,null,o,n):yt(e,t,o,n),t.child;case 11:return o=t.type,r=t.pendingProps,r=t.elementType===o?r:Wt(o,r),fu(e,t,o,r,n);case 7:return yt(e,t,t.pendingProps,n),t.child;case 8:return yt(e,t,t.pendingProps.children,n),t.child;case 12:return yt(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(o=t.type._context,r=t.pendingProps,a=t.memoizedProps,c=r.value,He(Ii,o._currentValue),o._currentValue=c,a!==null)if(Ht(a.value,c)){if(a.children===r.children&&!St.current){t=yn(e,t,n);break e}}else for(a=t.child,a!==null&&(a.return=t);a!==null;){var g=a.dependencies;if(g!==null){c=a.child;for(var y=g.firstContext;y!==null;){if(y.context===o){if(a.tag===1){y=hn(-1,n&-n),y.tag=2;var _=a.updateQueue;if(_!==null){_=_.shared;var j=_.pending;j===null?y.next=y:(y.next=j.next,j.next=y),_.pending=y}}a.lanes|=n,y=a.alternate,y!==null&&(y.lanes|=n),us(a.return,n,t),g.lanes|=n;break}y=y.next}}else if(a.tag===10)c=a.type===t.type?null:a.child;else if(a.tag===18){if(c=a.return,c===null)throw Error(l(341));c.lanes|=n,g=c.alternate,g!==null&&(g.lanes|=n),us(c,n,t),c=a.sibling}else c=a.child;if(c!==null)c.return=a;else for(c=a;c!==null;){if(c===t){c=null;break}if(a=c.sibling,a!==null){a.return=c.return,c=a;break}c=c.return}a=c}yt(e,t,r.children,n),t=t.child}return t;case 9:return r=t.type,o=t.pendingProps.children,qo(t,n),r=jt(r),o=o(r),t.flags|=1,yt(e,t,o,n),t.child;case 14:return o=t.type,r=Wt(o,t.pendingProps),r=Wt(o.type,r),gu(e,t,o,r,n);case 15:return mu(e,t,t.type,t.pendingProps,n);case 17:return o=t.type,r=t.pendingProps,r=t.elementType===o?r:Wt(o,r),qi(e,t),t.tag=1,wt(o)?(e=!0,_i(t)):e=!1,qo(t,n),au(t,o,r),Es(t,o,r,n),Ls(null,t,o,!0,e,n);case 19:return xu(e,t,n);case 22:return hu(e,t,n)}throw Error(l(156,t.tag))};function $u(e,t){return Ve(e,t)}function jf(e,t,n,o){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=o,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ot(e,t,n,o){return new jf(e,t,n,o)}function Ys(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Nf(e){if(typeof e=="function")return Ys(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Me)return 11;if(e===Xe)return 14}return 2}function Kn(e,t){var n=e.alternate;return n===null?(n=Ot(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function na(e,t,n,o,r,a){var c=2;if(o=e,typeof e=="function")Ys(e)&&(c=1);else if(typeof e=="string")c=5;else e:switch(e){case T:return yo(n.children,r,a,t);case te:c=8,r|=8;break;case Pe:return e=Ot(12,n,t,r|2),e.elementType=Pe,e.lanes=a,e;case Ne:return e=Ot(13,n,t,r),e.elementType=Ne,e.lanes=a,e;case Fe:return e=Ot(19,n,t,r),e.elementType=Fe,e.lanes=a,e;case De:return oa(n,r,a,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case le:c=10;break e;case Be:c=9;break e;case Me:c=11;break e;case Xe:c=14;break e;case tt:c=16,o=null;break e}throw Error(l(130,e==null?e:typeof e,""))}return t=Ot(c,n,t,r),t.elementType=e,t.type=o,t.lanes=a,t}function yo(e,t,n,o){return e=Ot(7,e,o,t),e.lanes=n,e}function oa(e,t,n,o){return e=Ot(22,e,o,t),e.elementType=De,e.lanes=n,e.stateNode={isHidden:!1},e}function Js(e,t,n){return e=Ot(6,e,null,t),e.lanes=n,e}function Xs(e,t,n){return t=Ot(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Df(e,t,n,o,r){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ba(0),this.expirationTimes=ba(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ba(0),this.identifierPrefix=o,this.onRecoverableError=r,this.mutableSourceEagerHydrationData=null}function Zs(e,t,n,o,r,a,c,g,y){return e=new Df(e,t,n,g,y),t===1?(t=1,a===!0&&(t|=8)):t=0,a=Ot(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:o,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},ps(a),e}function Of(e,t,n){var o=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:je,key:o==null?null:""+o,children:e,containerInfo:t,implementation:n}}function Qu(e){if(!e)return Dn;e=e._reactInternals;e:{if(G(e)!==e||e.tag!==1)throw Error(l(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(wt(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(t!==null);throw Error(l(171))}if(e.tag===1){var n=e.type;if(wt(n))return Pc(e,n,t)}return t}function Gu(e,t,n,o,r,a,c,g,y){return e=Zs(n,o,!0,e,r,a,c,g,y),e.context=Qu(null),n=e.current,o=vt(),r=Wn(n),a=hn(o,r),a.callback=t??null,Fn(n,a,r),e.current.lanes=r,pr(e,r,o),xt(e,o),e}function ra(e,t,n,o){var r=t.current,a=vt(),c=Wn(r);return n=Qu(n),t.context===null?t.context=n:t.pendingContext=n,t=hn(a,c),t.payload={element:e},o=o===void 0?null:o,o!==null&&(t.callback=o),e=Fn(r,t,c),e!==null&&($t(e,r,c,a),ji(e,r,c)),c}function ia(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function Yu(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function el(e,t){Yu(e,t),(e=e.alternate)&&Yu(e,t)}function Bf(){return null}var Ju=typeof reportError=="function"?reportError:function(e){console.error(e)};function tl(e){this._internalRoot=e}aa.prototype.render=tl.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(l(409));ra(e,t,null,null)},aa.prototype.unmount=tl.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;go(function(){ra(null,e,null,null)}),t[dn]=null}};function aa(e){this._internalRoot=e}aa.prototype.unstable_scheduleHydration=function(e){if(e){var t=Al();e={blockedOn:null,target:e,priority:t};for(var n=0;n<zn.length&&t!==0&&t<zn[n].priority;n++);zn.splice(n,0,e),n===0&&Dl(e)}};function nl(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function sa(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11&&(e.nodeType!==8||e.nodeValue!==" react-mount-point-unstable "))}function Xu(){}function Ff(e,t,n,o,r){if(r){if(typeof o=="function"){var a=o;o=function(){var _=ia(c);a.call(_)}}var c=Gu(t,o,e,0,null,!1,!1,"",Xu);return e._reactRootContainer=c,e[dn]=c.current,Er(e.nodeType===8?e.parentNode:e),go(),c}for(;r=e.lastChild;)e.removeChild(r);if(typeof o=="function"){var g=o;o=function(){var _=ia(y);g.call(_)}}var y=Zs(e,0,!1,null,null,!1,!1,"",Xu);return e._reactRootContainer=y,e[dn]=y.current,Er(e.nodeType===8?e.parentNode:e),go(function(){ra(t,y,n,o)}),y}function la(e,t,n,o,r){var a=n._reactRootContainer;if(a){var c=a;if(typeof r=="function"){var g=r;r=function(){var y=ia(c);g.call(y)}}ra(t,c,e,r)}else c=Ff(n,t,e,r,o);return ia(c)}zl=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=dr(t.pendingLanes);n!==0&&(Ea(t,n|1),xt(t,Re()),(_e&6)===0&&(Yo=Re()+500,On()))}break;case 13:go(function(){var o=mn(e,1);if(o!==null){var r=vt();$t(o,e,1,r)}}),el(e,1)}},_a=function(e){if(e.tag===13){var t=mn(e,134217728);if(t!==null){var n=vt();$t(t,e,134217728,n)}el(e,134217728)}},Il=function(e){if(e.tag===13){var t=Wn(e),n=mn(e,t);if(n!==null){var o=vt();$t(n,e,t,o)}el(e,t)}},Al=function(){return Ie},jl=function(e,t){var n=Ie;try{return Ie=e,t()}finally{Ie=n}},Ro=function(e,t,n){switch(t){case"input":if(or(e,n),t=n.name,n.type==="radio"&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var o=n[t];if(o!==e&&o.form===e.form){var r=bi(o);if(!r)throw Error(l(90));it(o),or(o,r)}}}break;case"textarea":Jt(e,n);break;case"select":t=n.value,t!=null&&xn(e,!!n.multiple,t,!1)}},cr=$s,to=go;var Uf={usingClientEntryPoint:!1,Events:[Tr,Do,bi,lr,ri,$s]},Vr={findFiberByHostInstance:io,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},Hf={bundleType:Vr.bundleType,version:Vr.version,rendererPackageName:Vr.rendererPackageName,rendererConfig:Vr.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ae.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return e=ze(e),e===null?null:e.stateNode},findFiberByHostInstance:Vr.findFiberByHostInstance||Bf,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var ca=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!ca.isDisabled&&ca.supportsFiber)try{Oe=ca.inject(Hf),ct=ca}catch{}}return Ct.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Uf,Ct.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!nl(t))throw Error(l(200));return Of(e,t,null,n)},Ct.createRoot=function(e,t){if(!nl(e))throw Error(l(299));var n=!1,o="",r=Ju;return t!=null&&(t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(o=t.identifierPrefix),t.onRecoverableError!==void 0&&(r=t.onRecoverableError)),t=Zs(e,1,!1,null,null,n,!1,o,r),e[dn]=t.current,Er(e.nodeType===8?e.parentNode:e),new tl(t)},Ct.findDOMNode=function(e){if(e==null)return null;if(e.nodeType===1)return e;var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(l(188)):(e=Object.keys(e).join(","),Error(l(268,e)));return e=ze(t),e=e===null?null:e.stateNode,e},Ct.flushSync=function(e){return go(e)},Ct.hydrate=function(e,t,n){if(!sa(t))throw Error(l(200));return la(null,e,t,!0,n)},Ct.hydrateRoot=function(e,t,n){if(!nl(e))throw Error(l(405));var o=n!=null&&n.hydratedSources||null,r=!1,a="",c=Ju;if(n!=null&&(n.unstable_strictMode===!0&&(r=!0),n.identifierPrefix!==void 0&&(a=n.identifierPrefix),n.onRecoverableError!==void 0&&(c=n.onRecoverableError)),t=Gu(t,null,e,1,n??null,r,!1,a,c),e[dn]=t.current,Er(e),o)for(e=0;e<o.length;e++)n=o[e],r=n._getVersion,r=r(n._source),t.mutableSourceEagerHydrationData==null?t.mutableSourceEagerHydrationData=[n,r]:t.mutableSourceEagerHydrationData.push(n,r);return new aa(t)},Ct.render=function(e,t,n){if(!sa(t))throw Error(l(200));return la(null,e,t,!1,n)},Ct.unmountComponentAtNode=function(e){if(!sa(e))throw Error(l(40));return e._reactRootContainer?(go(function(){la(null,null,e,!1,function(){e._reactRootContainer=null,e[dn]=null})}),!0):!1},Ct.unstable_batchedUpdates=$s,Ct.unstable_renderSubtreeIntoContainer=function(e,t,n,o){if(!sa(n))throw Error(l(200));if(e==null||e._reactInternals===void 0)throw Error(l(38));return la(e,t,n,!1,o)},Ct.version="18.3.1-next-f1338f8080-20240426",Ct}var ad;function Bd(){if(ad)return il.exports;ad=1;function i(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(s){console.error(s)}}return i(),il.exports=Jf(),il.exports}var sd;function Xf(){if(sd)return ua;sd=1;var i=Bd();return ua.createRoot=i.createRoot,ua.hydrateRoot=i.hydrateRoot,ua}var Zf=Xf(),L=vl();const eg=Od(L),tg=Dd({__proto__:null,default:eg},[L]);var Fd=Bd();const ng=Od(Fd),og=Dd({__proto__:null,default:ng},[Fd]);/**
|
|
42
|
-
* @remix-run/router v1.23.2
|
|
43
|
-
*
|
|
44
|
-
* Copyright (c) Remix Software Inc.
|
|
45
|
-
*
|
|
46
|
-
* This source code is licensed under the MIT license found in the
|
|
47
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
48
|
-
*
|
|
49
|
-
* @license MIT
|
|
50
|
-
*/function $e(){return $e=Object.assign?Object.assign.bind():function(i){for(var s=1;s<arguments.length;s++){var l=arguments[s];for(var u in l)Object.prototype.hasOwnProperty.call(l,u)&&(i[u]=l[u])}return i},$e.apply(this,arguments)}var et;(function(i){i.Pop="POP",i.Push="PUSH",i.Replace="REPLACE"})(et||(et={}));const ld="popstate";function rg(i){i===void 0&&(i={});function s(d,p){let{pathname:f="/",search:v="",hash:m=""}=kn(d.location.hash.substr(1));return!f.startsWith("/")&&!f.startsWith(".")&&(f="/"+f),Gr("",{pathname:f,search:v,hash:m},p.state&&p.state.usr||null,p.state&&p.state.key||"default")}function l(d,p){let f=d.document.querySelector("base"),v="";if(f&&f.getAttribute("href")){let m=d.location.href,P=m.indexOf("#");v=P===-1?m:m.slice(0,P)}return v+"#"+(typeof p=="string"?p:Po(p))}function u(d,p){Jn(d.pathname.charAt(0)==="/","relative pathnames are not supported in hash history.push("+JSON.stringify(p)+")")}return ag(s,l,u,i)}function Se(i,s){if(i===!1||i===null||typeof i>"u")throw new Error(s)}function Jn(i,s){if(!i){typeof console<"u"&&console.warn(s);try{throw new Error(s)}catch{}}}function ig(){return Math.random().toString(36).substr(2,8)}function cd(i,s){return{usr:i.state,key:i.key,idx:s}}function Gr(i,s,l,u){return l===void 0&&(l=null),$e({pathname:typeof i=="string"?i:i.pathname,search:"",hash:""},typeof s=="string"?kn(s):s,{state:l,key:s&&s.key||u||ig()})}function Po(i){let{pathname:s="/",search:l="",hash:u=""}=i;return l&&l!=="?"&&(s+=l.charAt(0)==="?"?l:"?"+l),u&&u!=="#"&&(s+=u.charAt(0)==="#"?u:"#"+u),s}function kn(i){let s={};if(i){let l=i.indexOf("#");l>=0&&(s.hash=i.substr(l),i=i.substr(0,l));let u=i.indexOf("?");u>=0&&(s.search=i.substr(u),i=i.substr(0,u)),i&&(s.pathname=i)}return s}function ag(i,s,l,u){u===void 0&&(u={});let{window:d=document.defaultView,v5Compat:p=!1}=u,f=d.history,v=et.Pop,m=null,P=E();P==null&&(P=0,f.replaceState($e({},f.state,{idx:P}),""));function E(){return(f.state||{idx:null}).idx}function C(){v=et.Pop;let U=E(),me=U==null?null:U-P;P=U,m&&m({action:v,location:O.location,delta:me})}function M(U,me){v=et.Push;let W=Gr(O.location,U,me);l&&l(W,U),P=E()+1;let de=cd(W,P),ae=O.createHref(W);try{f.pushState(de,"",ae)}catch(ke){if(ke instanceof DOMException&&ke.name==="DataCloneError")throw ke;d.location.assign(ae)}p&&m&&m({action:v,location:O.location,delta:1})}function D(U,me){v=et.Replace;let W=Gr(O.location,U,me);l&&l(W,U),P=E();let de=cd(W,P),ae=O.createHref(W);f.replaceState(de,"",ae),p&&m&&m({action:v,location:O.location,delta:0})}function H(U){let me=d.location.origin!=="null"?d.location.origin:d.location.href,W=typeof U=="string"?U:Po(U);return W=W.replace(/ $/,"%20"),Se(me,"No window.location.(origin|href) available to create URL for href: "+W),new URL(W,me)}let O={get action(){return v},get location(){return i(d,f)},listen(U){if(m)throw new Error("A history only accepts one active listener");return d.addEventListener(ld,C),m=U,()=>{d.removeEventListener(ld,C),m=null}},createHref(U){return s(d,U)},createURL:H,encodeLocation(U){let me=H(U);return{pathname:me.pathname,search:me.search,hash:me.hash}},push:M,replace:D,go(U){return f.go(U)}};return O}var Ae;(function(i){i.data="data",i.deferred="deferred",i.redirect="redirect",i.error="error"})(Ae||(Ae={}));const sg=new Set(["lazy","caseSensitive","path","id","index","children"]);function lg(i){return i.index===!0}function ha(i,s,l,u){return l===void 0&&(l=[]),u===void 0&&(u={}),i.map((d,p)=>{let f=[...l,String(p)],v=typeof d.id=="string"?d.id:f.join("-");if(Se(d.index!==!0||!d.children,"Cannot specify children on an index route"),Se(!u[v],'Found a route id collision on id "'+v+`". Route id's must be globally unique within Data Router usages`),lg(d)){let m=$e({},d,s(d),{id:v});return u[v]=m,m}else{let m=$e({},d,s(d),{id:v,children:void 0});return u[v]=m,d.children&&(m.children=ha(d.children,s,f,u)),m}})}function vo(i,s,l){return l===void 0&&(l="/"),ga(i,s,l,!1)}function ga(i,s,l,u){let d=typeof s=="string"?kn(s):s,p=wn(d.pathname||"/",l);if(p==null)return null;let f=Ud(i);ug(f);let v=null;for(let m=0;v==null&&m<f.length;++m){let P=kg(p);v=Sg(f[m],P,u)}return v}function cg(i,s){let{route:l,pathname:u,params:d}=i;return{id:l.id,pathname:u,params:d,data:s[l.id],handle:l.handle}}function Ud(i,s,l,u){s===void 0&&(s=[]),l===void 0&&(l=[]),u===void 0&&(u="");let d=(p,f,v)=>{let m={relativePath:v===void 0?p.path||"":v,caseSensitive:p.caseSensitive===!0,childrenIndex:f,route:p};m.relativePath.startsWith("/")&&(Se(m.relativePath.startsWith(u),'Absolute route path "'+m.relativePath+'" nested under path '+('"'+u+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),m.relativePath=m.relativePath.slice(u.length));let P=Sn([u,m.relativePath]),E=l.concat(m);p.children&&p.children.length>0&&(Se(p.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+P+'".')),Ud(p.children,s,E,P)),!(p.path==null&&!p.index)&&s.push({path:P,score:yg(P,p.index),routesMeta:E})};return i.forEach((p,f)=>{var v;if(p.path===""||!((v=p.path)!=null&&v.includes("?")))d(p,f);else for(let m of Hd(p.path))d(p,f,m)}),s}function Hd(i){let s=i.split("/");if(s.length===0)return[];let[l,...u]=s,d=l.endsWith("?"),p=l.replace(/\?$/,"");if(u.length===0)return d?[p,""]:[p];let f=Hd(u.join("/")),v=[];return v.push(...f.map(m=>m===""?p:[p,m].join("/"))),d&&v.push(...f),v.map(m=>i.startsWith("/")&&m===""?"/":m)}function ug(i){i.sort((s,l)=>s.score!==l.score?l.score-s.score:vg(s.routesMeta.map(u=>u.childrenIndex),l.routesMeta.map(u=>u.childrenIndex)))}const dg=/^:[\w-]+$/,pg=3,fg=2,gg=1,mg=10,hg=-2,ud=i=>i==="*";function yg(i,s){let l=i.split("/"),u=l.length;return l.some(ud)&&(u+=hg),s&&(u+=fg),l.filter(d=>!ud(d)).reduce((d,p)=>d+(dg.test(p)?pg:p===""?gg:mg),u)}function vg(i,s){return i.length===s.length&&i.slice(0,-1).every((u,d)=>u===s[d])?i[i.length-1]-s[s.length-1]:0}function Sg(i,s,l){l===void 0&&(l=!1);let{routesMeta:u}=i,d={},p="/",f=[];for(let v=0;v<u.length;++v){let m=u[v],P=v===u.length-1,E=p==="/"?s:s.slice(p.length)||"/",C=ya({path:m.relativePath,caseSensitive:m.caseSensitive,end:P},E),M=m.route;if(!C&&P&&l&&!u[u.length-1].route.index&&(C=ya({path:m.relativePath,caseSensitive:m.caseSensitive,end:!1},E)),!C)return null;Object.assign(d,C.params),f.push({params:d,pathname:Sn([p,C.pathname]),pathnameBase:bg(Sn([p,C.pathnameBase])),route:M}),C.pathnameBase!=="/"&&(p=Sn([p,C.pathnameBase]))}return f}function ya(i,s){typeof i=="string"&&(i={path:i,caseSensitive:!1,end:!0});let[l,u]=wg(i.path,i.caseSensitive,i.end),d=s.match(l);if(!d)return null;let p=d[0],f=p.replace(/(.)\/+$/,"$1"),v=d.slice(1);return{params:u.reduce((P,E,C)=>{let{paramName:M,isOptional:D}=E;if(M==="*"){let O=v[C]||"";f=p.slice(0,p.length-O.length).replace(/(.)\/+$/,"$1")}const H=v[C];return D&&!H?P[M]=void 0:P[M]=(H||"").replace(/%2F/g,"/"),P},{}),pathname:p,pathnameBase:f,pattern:i}}function wg(i,s,l){s===void 0&&(s=!1),l===void 0&&(l=!0),Jn(i==="*"||!i.endsWith("*")||i.endsWith("/*"),'Route path "'+i+'" will be treated as if it were '+('"'+i.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+i.replace(/\*$/,"/*")+'".'));let u=[],d="^"+i.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(f,v,m)=>(u.push({paramName:v,isOptional:m!=null}),m?"/?([^\\/]+)?":"/([^\\/]+)"));return i.endsWith("*")?(u.push({paramName:"*"}),d+=i==="*"||i==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):l?d+="\\/*$":i!==""&&i!=="/"&&(d+="(?:(?=\\/|$))"),[new RegExp(d,s?void 0:"i"),u]}function kg(i){try{return i.split("/").map(s=>decodeURIComponent(s).replace(/\//g,"%2F")).join("/")}catch(s){return Jn(!1,'The URL path "'+i+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+s+").")),i}}function wn(i,s){if(s==="/")return i;if(!i.toLowerCase().startsWith(s.toLowerCase()))return null;let l=s.endsWith("/")?s.length-1:s.length,u=i.charAt(l);return u&&u!=="/"?null:i.slice(l)||"/"}const Pg=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,xg=i=>Pg.test(i);function Cg(i,s){s===void 0&&(s="/");let{pathname:l,search:u="",hash:d=""}=typeof i=="string"?kn(i):i,p;if(l)if(xg(l))p=l;else{if(l.includes("//")){let f=l;l=l.replace(/\/\/+/g,"/"),Jn(!1,"Pathnames cannot have embedded double slashes - normalizing "+(f+" -> "+l))}l.startsWith("/")?p=dd(l.substring(1),"/"):p=dd(l,s)}else p=s;return{pathname:p,search:Eg(u),hash:_g(d)}}function dd(i,s){let l=s.replace(/\/+$/,"").split("/");return i.split("/").forEach(d=>{d===".."?l.length>1&&l.pop():d!=="."&&l.push(d)}),l.length>1?l.join("/"):"/"}function ll(i,s,l,u){return"Cannot include a '"+i+"' character in a manually specified "+("`to."+s+"` field ["+JSON.stringify(u)+"]. Please separate it out to the ")+("`to."+l+"` field. Alternatively you may provide the full path as ")+'a string in <Link to="..."> and the router will parse it for you.'}function Vd(i){return i.filter((s,l)=>l===0||s.route.path&&s.route.path.length>0)}function Sl(i,s){let l=Vd(i);return s?l.map((u,d)=>d===l.length-1?u.pathname:u.pathnameBase):l.map(u=>u.pathnameBase)}function wl(i,s,l,u){u===void 0&&(u=!1);let d;typeof i=="string"?d=kn(i):(d=$e({},i),Se(!d.pathname||!d.pathname.includes("?"),ll("?","pathname","search",d)),Se(!d.pathname||!d.pathname.includes("#"),ll("#","pathname","hash",d)),Se(!d.search||!d.search.includes("#"),ll("#","search","hash",d)));let p=i===""||d.pathname==="",f=p?"/":d.pathname,v;if(f==null)v=l;else{let C=s.length-1;if(!u&&f.startsWith("..")){let M=f.split("/");for(;M[0]==="..";)M.shift(),C-=1;d.pathname=M.join("/")}v=C>=0?s[C]:"/"}let m=Cg(d,v),P=f&&f!=="/"&&f.endsWith("/"),E=(p||f===".")&&l.endsWith("/");return!m.pathname.endsWith("/")&&(P||E)&&(m.pathname+="/"),m}const Sn=i=>i.join("/").replace(/\/\/+/g,"/"),bg=i=>i.replace(/\/+$/,"").replace(/^\/*/,"/"),Eg=i=>!i||i==="?"?"":i.startsWith("?")?i:"?"+i,_g=i=>!i||i==="#"?"":i.startsWith("#")?i:"#"+i;class va{constructor(s,l,u,d){d===void 0&&(d=!1),this.status=s,this.statusText=l||"",this.internal=d,u instanceof Error?(this.data=u.toString(),this.error=u):this.data=u}}function Yr(i){return i!=null&&typeof i.status=="number"&&typeof i.statusText=="string"&&typeof i.internal=="boolean"&&"data"in i}const Wd=["post","put","patch","delete"],Rg=new Set(Wd),Tg=["get",...Wd],Lg=new Set(Tg),Mg=new Set([301,302,303,307,308]),zg=new Set([307,308]),cl={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Ig={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},qr={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},kl=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Ag=i=>({hasErrorBoundary:!!i.hasErrorBoundary}),qd="remix-router-transitions";function jg(i){const s=i.window?i.window:typeof window<"u"?window:void 0,l=typeof s<"u"&&typeof s.document<"u"&&typeof s.document.createElement<"u",u=!l;Se(i.routes.length>0,"You must provide a non-empty routes array to createRouter");let d;if(i.mapRouteProperties)d=i.mapRouteProperties;else if(i.detectErrorBoundary){let h=i.detectErrorBoundary;d=k=>({hasErrorBoundary:h(k)})}else d=Ag;let p={},f=ha(i.routes,d,void 0,p),v,m=i.basename||"/",P=i.dataStrategy||Bg,E=i.patchRoutesOnNavigation,C=$e({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1,v7_skipActionErrorRevalidation:!1},i.future),M=null,D=new Set,H=null,O=null,U=null,me=i.hydrationData!=null,W=vo(f,i.history.location,m),de=!1,ae=null;if(W==null&&!E){let h=bt(404,{pathname:i.history.location.pathname}),{matches:k,route:R}=Pd(f);W=k,ae={[R.id]:h}}W&&!i.hydrationData&&to(W,f,i.history.location.pathname).active&&(W=null);let ke;if(W)if(W.some(h=>h.route.lazy))ke=!1;else if(!W.some(h=>h.route.loader))ke=!0;else if(C.v7_partialHydration){let h=i.hydrationData?i.hydrationData.loaderData:null,k=i.hydrationData?i.hydrationData.errors:null;if(k){let R=W.findIndex(I=>k[I.route.id]!==void 0);ke=W.slice(0,R+1).every(I=>!gl(I.route,h,k))}else ke=W.every(R=>!gl(R.route,h,k))}else ke=i.hydrationData!=null;else if(ke=!1,W=[],C.v7_partialHydration){let h=to(null,f,i.history.location.pathname);h.active&&h.matches&&(de=!0,W=h.matches)}let je,T={historyAction:i.history.action,location:i.history.location,matches:W,initialized:ke,navigation:cl,restoreScrollPosition:i.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:i.hydrationData&&i.hydrationData.loaderData||{},actionData:i.hydrationData&&i.hydrationData.actionData||null,errors:i.hydrationData&&i.hydrationData.errors||ae,fetchers:new Map,blockers:new Map},te=et.Pop,Pe=!1,le,Be=!1,Me=new Map,Ne=null,Fe=!1,Xe=!1,tt=[],De=new Set,B=new Map,oe=0,q=-1,w=new Map,z=new Set,pe=new Map,he=new Map,fe=new Set,ye=new Map,Ce=new Map,be;function Ue(){if(M=i.history.listen(h=>{let{action:k,location:R,delta:I}=h;if(be){be(),be=void 0;return}Jn(Ce.size===0||I!=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 V=Ro({currentLocation:T.location,nextLocation:R,historyAction:k});if(V&&I!=null){let ne=new Promise(se=>{be=se});i.history.go(I*-1),En(V,{state:"blocked",location:R,proceed(){En(V,{state:"proceeding",proceed:void 0,reset:void 0,location:R}),ne.then(()=>i.history.go(I))},reset(){let se=new Map(T.blockers);se.set(V,qr),it({blockers:se})}});return}return Yt(k,R)}),l){Zg(s,Me);let h=()=>em(s,Me);s.addEventListener("pagehide",h),Ne=()=>s.removeEventListener("pagehide",h)}return T.initialized||Yt(et.Pop,T.location,{initialHydration:!0}),je}function ht(){M&&M(),Ne&&Ne(),D.clear(),le&&le.abort(),T.fetchers.forEach((h,k)=>Xt(k)),T.blockers.forEach((h,k)=>_o(k))}function xo(h){return D.add(h),()=>D.delete(h)}function it(h,k){k===void 0&&(k={}),T=$e({},T,h);let R=[],I=[];C.v7_fetcherPersist&&T.fetchers.forEach((V,ne)=>{V.state==="idle"&&(fe.has(ne)?I.push(ne):R.push(ne))}),fe.forEach(V=>{!T.fetchers.has(V)&&!B.has(V)&&I.push(V)}),[...D].forEach(V=>V(T,{deletedFetchers:I,viewTransitionOpts:k.viewTransitionOpts,flushSync:k.flushSync===!0})),C.v7_fetcherPersist?(R.forEach(V=>T.fetchers.delete(V)),I.forEach(V=>Xt(V))):I.forEach(V=>fe.delete(V))}function Bt(h,k,R){var I,V;let{flushSync:ne}=R===void 0?{}:R,se=T.actionData!=null&&T.navigation.formMethod!=null&&Qt(T.navigation.formMethod)&&T.navigation.state==="loading"&&((I=h.state)==null?void 0:I._isRedirect)!==!0,Y;k.actionData?Object.keys(k.actionData).length>0?Y=k.actionData:Y=null:se?Y=T.actionData:Y=null;let X=k.loaderData?wd(T.loaderData,k.loaderData,k.matches||[],k.errors):T.loaderData,$=T.blockers;$.size>0&&($=new Map($),$.forEach((we,nt)=>$.set(nt,qr)));let G=Pe===!0||T.navigation.formMethod!=null&&Qt(T.navigation.formMethod)&&((V=h.state)==null?void 0:V._isRedirect)!==!0;v&&(f=v,v=void 0),Fe||te===et.Pop||(te===et.Push?i.history.push(h,h.state):te===et.Replace&&i.history.replace(h,h.state));let ge;if(te===et.Pop){let we=Me.get(T.location.pathname);we&&we.has(h.pathname)?ge={currentLocation:T.location,nextLocation:h}:Me.has(h.pathname)&&(ge={currentLocation:h,nextLocation:T.location})}else if(Be){let we=Me.get(T.location.pathname);we?we.add(h.pathname):(we=new Set([h.pathname]),Me.set(T.location.pathname,we)),ge={currentLocation:T.location,nextLocation:h}}it($e({},k,{actionData:Y,loaderData:X,historyAction:te,location:h,initialized:!0,navigation:cl,revalidation:"idle",restoreScrollPosition:cr(h,k.matches||T.matches),preventScrollReset:G,blockers:$}),{viewTransitionOpts:ge,flushSync:ne===!0}),te=et.Pop,Pe=!1,Be=!1,Fe=!1,Xe=!1,tt=[]}async function Co(h,k){if(typeof h=="number"){i.history.go(h);return}let R=fl(T.location,T.matches,m,C.v7_prependBasename,h,C.v7_relativeSplatPath,k==null?void 0:k.fromRouteId,k==null?void 0:k.relative),{path:I,submission:V,error:ne}=pd(C.v7_normalizeFormMethod,!1,R,k),se=T.location,Y=Gr(T.location,I,k&&k.state);Y=$e({},Y,i.history.encodeLocation(Y));let X=k&&k.replace!=null?k.replace:void 0,$=et.Push;X===!0?$=et.Replace:X===!1||V!=null&&Qt(V.formMethod)&&V.formAction===T.location.pathname+T.location.search&&($=et.Replace);let G=k&&"preventScrollReset"in k?k.preventScrollReset===!0:void 0,ge=(k&&k.flushSync)===!0,we=Ro({currentLocation:se,nextLocation:Y,historyAction:$});if(we){En(we,{state:"blocked",location:Y,proceed(){En(we,{state:"proceeding",proceed:void 0,reset:void 0,location:Y}),Co(h,k)},reset(){let nt=new Map(T.blockers);nt.set(we,qr),it({blockers:nt})}});return}return await Yt($,Y,{submission:V,pendingError:ne,preventScrollReset:G,replace:k&&k.replace,enableViewTransition:k&&k.viewTransition,flushSync:ge})}function Zr(){if(eo(),it({revalidation:"loading"}),T.navigation.state!=="submitting"){if(T.navigation.state==="idle"){Yt(T.historyAction,T.location,{startUninterruptedRevalidation:!0});return}Yt(te||T.historyAction,T.navigation.location,{overrideNavigation:T.navigation,enableViewTransition:Be===!0})}}async function Yt(h,k,R){le&&le.abort(),le=null,te=h,Fe=(R&&R.startUninterruptedRevalidation)===!0,ri(T.location,T.matches),Pe=(R&&R.preventScrollReset)===!0,Be=(R&&R.enableViewTransition)===!0;let I=v||f,V=R&&R.overrideNavigation,ne=R!=null&&R.initialHydration&&T.matches&&T.matches.length>0&&!de?T.matches:vo(I,k,m),se=(R&&R.flushSync)===!0;if(ne&&T.initialized&&!Xe&&qg(T.location,k)&&!(R&&R.submission&&Qt(R.submission.formMethod))){Bt(k,{matches:ne},{flushSync:se});return}let Y=to(ne,I,k.pathname);if(Y.active&&Y.matches&&(ne=Y.matches),!ne){let{error:ze,notFoundMatches:Ee,route:Ve}=Zt(k.pathname);Bt(k,{matches:Ee,loaderData:{},errors:{[Ve.id]:ze}},{flushSync:se});return}le=new AbortController;let X=Zo(i.history,k,le.signal,R&&R.submission),$;if(R&&R.pendingError)$=[So(ne).route.id,{type:Ae.error,error:R.pendingError}];else if(R&&R.submission&&Qt(R.submission.formMethod)){let ze=await or(X,k,R.submission,ne,Y.active,{replace:R.replace,flushSync:se});if(ze.shortCircuited)return;if(ze.pendingActionResult){let[Ee,Ve]=ze.pendingActionResult;if(Mt(Ve)&&Yr(Ve.error)&&Ve.error.status===404){le=null,Bt(k,{matches:ze.matches,loaderData:{},errors:{[Ee]:Ve.error}});return}}ne=ze.matches||ne,$=ze.pendingActionResult,V=ul(k,R.submission),se=!1,Y.active=!1,X=Zo(i.history,X.url,X.signal)}let{shortCircuited:G,matches:ge,loaderData:we,errors:nt}=await ei(X,k,ne,Y.active,V,R&&R.submission,R&&R.fetcherSubmission,R&&R.replace,R&&R.initialHydration===!0,se,$);G||(le=null,Bt(k,$e({matches:ge||ne},kd($),{loaderData:we,errors:nt})))}async function or(h,k,R,I,V,ne){ne===void 0&&(ne={}),eo();let se=Jg(k,R);if(it({navigation:se},{flushSync:ne.flushSync===!0}),V){let $=await _n(I,k.pathname,h.signal);if($.type==="aborted")return{shortCircuited:!0};if($.type==="error"){let G=So($.partialMatches).route.id;return{matches:$.partialMatches,pendingActionResult:[G,{type:Ae.error,error:$.error}]}}else if($.matches)I=$.matches;else{let{notFoundMatches:G,error:ge,route:we}=Zt(k.pathname);return{matches:G,pendingActionResult:[we.id,{type:Ae.error,error:ge}]}}}let Y,X=Qr(I,k);if(!X.route.action&&!X.route.lazy)Y={type:Ae.error,error:bt(405,{method:h.method,pathname:k.pathname,routeId:X.route.id})};else if(Y=(await Cn("action",T,h,[X],I,null))[X.route.id],h.signal.aborted)return{shortCircuited:!0};if(wo(Y)){let $;return ne&&ne.replace!=null?$=ne.replace:$=yd(Y.response.headers.get("Location"),new URL(h.url),m,i.history)===T.location.pathname+T.location.search,await Jt(h,Y,!0,{submission:R,replace:$}),{shortCircuited:!0}}if(Yn(Y))throw bt(400,{type:"defer-action"});if(Mt(Y)){let $=So(I,X.route.id);return(ne&&ne.replace)!==!0&&(te=et.Push),{matches:I,pendingActionResult:[$.route.id,Y]}}return{matches:I,pendingActionResult:[X.route.id,Y]}}async function ei(h,k,R,I,V,ne,se,Y,X,$,G){let ge=V||ul(k,ne),we=ne||se||Cd(ge),nt=!Fe&&(!C.v7_partialHydration||!X);if(I){if(nt){let Oe=bo(G);it($e({navigation:ge},Oe!==void 0?{actionData:Oe}:{}),{flushSync:$})}let xe=await _n(R,k.pathname,h.signal);if(xe.type==="aborted")return{shortCircuited:!0};if(xe.type==="error"){let Oe=So(xe.partialMatches).route.id;return{matches:xe.partialMatches,loaderData:{},errors:{[Oe]:xe.error}}}else if(xe.matches)R=xe.matches;else{let{error:Oe,notFoundMatches:ct,route:ro}=Zt(k.pathname);return{matches:ct,loaderData:{},errors:{[ro.id]:Oe}}}}let ze=v||f,[Ee,Ve]=gd(i.history,T,R,we,k,C.v7_partialHydration&&X===!0,C.v7_skipActionErrorRevalidation,Xe,tt,De,fe,pe,z,ze,m,G);if(en(xe=>!(R&&R.some(Oe=>Oe.route.id===xe))||Ee&&Ee.some(Oe=>Oe.route.id===xe)),q=++oe,Ee.length===0&&Ve.length===0){let xe=ni();return Bt(k,$e({matches:R,loaderData:{},errors:G&&Mt(G[1])?{[G[0]]:G[1].error}:null},kd(G),xe?{fetchers:new Map(T.fetchers)}:{}),{flushSync:$}),{shortCircuited:!0}}if(nt){let xe={};if(!I){xe.navigation=ge;let Oe=bo(G);Oe!==void 0&&(xe.actionData=Oe)}Ve.length>0&&(xe.fetchers=Zn(Ve)),it(xe,{flushSync:$})}Ve.forEach(xe=>{Ft(xe.key),xe.controller&&B.set(xe.key,xe.controller)});let ln=()=>Ve.forEach(xe=>Ft(xe.key));le&&le.signal.addEventListener("abort",ln);let{loaderResults:oo,fetcherResults:Ut}=await ir(T,R,Ee,Ve,h);if(h.signal.aborted)return{shortCircuited:!0};le&&le.signal.removeEventListener("abort",ln),Ve.forEach(xe=>B.delete(xe.key));let Re=da(oo);if(Re)return await Jt(h,Re.result,!0,{replace:Y}),{shortCircuited:!0};if(Re=da(Ut),Re)return z.add(Re.key),await Jt(h,Re.result,!0,{replace:Y}),{shortCircuited:!0};let{loaderData:ur,errors:cn}=Sd(T,R,oo,G,Ve,Ut,ye);ye.forEach((xe,Oe)=>{xe.subscribe(ct=>{(ct||xe.done)&&ye.delete(Oe)})}),C.v7_partialHydration&&X&&T.errors&&(cn=$e({},T.errors,cn));let tn=ni(),un=Eo(q),To=tn||un||Ve.length>0;return $e({matches:R,loaderData:ur,errors:cn},To?{fetchers:new Map(T.fetchers)}:{})}function bo(h){if(h&&!Mt(h[1]))return{[h[0]]:h[1].data};if(T.actionData)return Object.keys(T.actionData).length===0?null:T.actionData}function Zn(h){return h.forEach(k=>{let R=T.fetchers.get(k.key),I=Kr(void 0,R?R.data:void 0);T.fetchers.set(k.key,I)}),new Map(T.fetchers)}function xn(h,k,R,I){if(u)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.");Ft(h);let V=(I&&I.flushSync)===!0,ne=v||f,se=fl(T.location,T.matches,m,C.v7_prependBasename,R,C.v7_relativeSplatPath,k,I==null?void 0:I.relative),Y=vo(ne,se,m),X=to(Y,ne,se);if(X.active&&X.matches&&(Y=X.matches),!Y){zt(h,k,bt(404,{pathname:se}),{flushSync:V});return}let{path:$,submission:G,error:ge}=pd(C.v7_normalizeFormMethod,!0,se,I);if(ge){zt(h,k,ge,{flushSync:V});return}let we=Qr(Y,$),nt=(I&&I.preventScrollReset)===!0;if(G&&Qt(G.formMethod)){rr(h,k,$,we,Y,X.active,V,nt,G);return}pe.set(h,{routeId:k,path:$}),ti(h,k,$,we,Y,X.active,V,nt,G)}async function rr(h,k,R,I,V,ne,se,Y,X){eo(),pe.delete(h);function $(Te){if(!Te.route.action&&!Te.route.lazy){let Rn=bt(405,{method:X.formMethod,pathname:R,routeId:k});return zt(h,k,Rn,{flushSync:se}),!0}return!1}if(!ne&&$(I))return;let G=T.fetchers.get(h);Et(h,Xg(X,G),{flushSync:se});let ge=new AbortController,we=Zo(i.history,R,ge.signal,X);if(ne){let Te=await _n(V,new URL(we.url).pathname,we.signal,h);if(Te.type==="aborted")return;if(Te.type==="error"){zt(h,k,Te.error,{flushSync:se});return}else if(Te.matches){if(V=Te.matches,I=Qr(V,R),$(I))return}else{zt(h,k,bt(404,{pathname:R}),{flushSync:se});return}}B.set(h,ge);let nt=oe,Ee=(await Cn("action",T,we,[I],V,h))[I.route.id];if(we.signal.aborted){B.get(h)===ge&&B.delete(h);return}if(C.v7_fetcherPersist&&fe.has(h)){if(wo(Ee)||Mt(Ee)){Et(h,Gn(void 0));return}}else{if(wo(Ee))if(B.delete(h),q>nt){Et(h,Gn(void 0));return}else return z.add(h),Et(h,Kr(X)),Jt(we,Ee,!1,{fetcherSubmission:X,preventScrollReset:Y});if(Mt(Ee)){zt(h,k,Ee.error);return}}if(Yn(Ee))throw bt(400,{type:"defer-action"});let Ve=T.navigation.location||T.location,ln=Zo(i.history,Ve,ge.signal),oo=v||f,Ut=T.navigation.state!=="idle"?vo(oo,T.navigation.location,m):T.matches;Se(Ut,"Didn't find any matches after fetcher action");let Re=++oe;w.set(h,Re);let ur=Kr(X,Ee.data);T.fetchers.set(h,ur);let[cn,tn]=gd(i.history,T,Ut,X,Ve,!1,C.v7_skipActionErrorRevalidation,Xe,tt,De,fe,pe,z,oo,m,[I.route.id,Ee]);tn.filter(Te=>Te.key!==h).forEach(Te=>{let Rn=Te.key,ai=T.fetchers.get(Rn),xa=Kr(void 0,ai?ai.data:void 0);T.fetchers.set(Rn,xa),Ft(Rn),Te.controller&&B.set(Rn,Te.controller)}),it({fetchers:new Map(T.fetchers)});let un=()=>tn.forEach(Te=>Ft(Te.key));ge.signal.addEventListener("abort",un);let{loaderResults:To,fetcherResults:xe}=await ir(T,Ut,cn,tn,ln);if(ge.signal.aborted)return;ge.signal.removeEventListener("abort",un),w.delete(h),B.delete(h),tn.forEach(Te=>B.delete(Te.key));let Oe=da(To);if(Oe)return Jt(ln,Oe.result,!1,{preventScrollReset:Y});if(Oe=da(xe),Oe)return z.add(Oe.key),Jt(ln,Oe.result,!1,{preventScrollReset:Y});let{loaderData:ct,errors:ro}=Sd(T,Ut,To,void 0,tn,xe,ye);if(T.fetchers.has(h)){let Te=Gn(Ee.data);T.fetchers.set(h,Te)}Eo(Re),T.navigation.state==="loading"&&Re>q?(Se(te,"Expected pending action"),le&&le.abort(),Bt(T.navigation.location,{matches:Ut,loaderData:ct,errors:ro,fetchers:new Map(T.fetchers)})):(it({errors:ro,loaderData:wd(T.loaderData,ct,Ut,ro),fetchers:new Map(T.fetchers)}),Xe=!1)}async function ti(h,k,R,I,V,ne,se,Y,X){let $=T.fetchers.get(h);Et(h,Kr(X,$?$.data:void 0),{flushSync:se});let G=new AbortController,ge=Zo(i.history,R,G.signal);if(ne){let Ee=await _n(V,new URL(ge.url).pathname,ge.signal,h);if(Ee.type==="aborted")return;if(Ee.type==="error"){zt(h,k,Ee.error,{flushSync:se});return}else if(Ee.matches)V=Ee.matches,I=Qr(V,R);else{zt(h,k,bt(404,{pathname:R}),{flushSync:se});return}}B.set(h,G);let we=oe,ze=(await Cn("loader",T,ge,[I],V,h))[I.route.id];if(Yn(ze)&&(ze=await Pl(ze,ge.signal,!0)||ze),B.get(h)===G&&B.delete(h),!ge.signal.aborted){if(fe.has(h)){Et(h,Gn(void 0));return}if(wo(ze))if(q>we){Et(h,Gn(void 0));return}else{z.add(h),await Jt(ge,ze,!1,{preventScrollReset:Y});return}if(Mt(ze)){zt(h,k,ze.error);return}Se(!Yn(ze),"Unhandled fetcher deferred data"),Et(h,Gn(ze.data))}}async function Jt(h,k,R,I){let{submission:V,fetcherSubmission:ne,preventScrollReset:se,replace:Y}=I===void 0?{}:I;k.response.headers.has("X-Remix-Revalidate")&&(Xe=!0);let X=k.response.headers.get("Location");Se(X,"Expected a Location header on the redirect Response"),X=yd(X,new URL(h.url),m,i.history);let $=Gr(T.location,X,{_isRedirect:!0});if(l){let Ee=!1;if(k.response.headers.has("X-Remix-Reload-Document"))Ee=!0;else if(kl.test(X)){const Ve=i.history.createURL(X);Ee=Ve.origin!==s.location.origin||wn(Ve.pathname,m)==null}if(Ee){Y?s.location.replace(X):s.location.assign(X);return}}le=null;let G=Y===!0||k.response.headers.has("X-Remix-Replace")?et.Replace:et.Push,{formMethod:ge,formAction:we,formEncType:nt}=T.navigation;!V&&!ne&&ge&&we&&nt&&(V=Cd(T.navigation));let ze=V||ne;if(zg.has(k.response.status)&&ze&&Qt(ze.formMethod))await Yt(G,$,{submission:$e({},ze,{formAction:X}),preventScrollReset:se||Pe,enableViewTransition:R?Be:void 0});else{let Ee=ul($,V);await Yt(G,$,{overrideNavigation:Ee,fetcherSubmission:ne,preventScrollReset:se||Pe,enableViewTransition:R?Be:void 0})}}async function Cn(h,k,R,I,V,ne){let se,Y={};try{se=await Fg(P,h,k,R,I,V,ne,p,d)}catch(X){return I.forEach($=>{Y[$.route.id]={type:Ae.error,error:X}}),Y}for(let[X,$]of Object.entries(se))if(Kg($)){let G=$.result;Y[X]={type:Ae.redirect,response:Vg(G,R,X,V,m,C.v7_relativeSplatPath)}}else Y[X]=await Hg($);return Y}async function ir(h,k,R,I,V){let ne=h.matches,se=Cn("loader",h,V,R,k,null),Y=Promise.all(I.map(async G=>{if(G.matches&&G.match&&G.controller){let we=(await Cn("loader",h,Zo(i.history,G.path,G.controller.signal),[G.match],G.matches,G.key))[G.match.route.id];return{[G.key]:we}}else return Promise.resolve({[G.key]:{type:Ae.error,error:bt(404,{pathname:G.path})}})})),X=await se,$=(await Y).reduce((G,ge)=>Object.assign(G,ge),{});return await Promise.all([Gg(k,X,V.signal,ne,h.loaderData),Yg(k,$,I)]),{loaderResults:X,fetcherResults:$}}function eo(){Xe=!0,tt.push(...en()),pe.forEach((h,k)=>{B.has(k)&&De.add(k),Ft(k)})}function Et(h,k,R){R===void 0&&(R={}),T.fetchers.set(h,k),it({fetchers:new Map(T.fetchers)},{flushSync:(R&&R.flushSync)===!0})}function zt(h,k,R,I){I===void 0&&(I={});let V=So(T.matches,k);Xt(h),it({errors:{[V.route.id]:R},fetchers:new Map(T.fetchers)},{flushSync:(I&&I.flushSync)===!0})}function bn(h){return he.set(h,(he.get(h)||0)+1),fe.has(h)&&fe.delete(h),T.fetchers.get(h)||Ig}function Xt(h){let k=T.fetchers.get(h);B.has(h)&&!(k&&k.state==="loading"&&w.has(h))&&Ft(h),pe.delete(h),w.delete(h),z.delete(h),C.v7_fetcherPersist&&fe.delete(h),De.delete(h),T.fetchers.delete(h)}function Pa(h){let k=(he.get(h)||0)-1;k<=0?(he.delete(h),fe.add(h),C.v7_fetcherPersist||Xt(h)):he.set(h,k),it({fetchers:new Map(T.fetchers)})}function Ft(h){let k=B.get(h);k&&(k.abort(),B.delete(h))}function ar(h){for(let k of h){let R=bn(k),I=Gn(R.data);T.fetchers.set(k,I)}}function ni(){let h=[],k=!1;for(let R of z){let I=T.fetchers.get(R);Se(I,"Expected fetcher: "+R),I.state==="loading"&&(z.delete(R),h.push(R),k=!0)}return ar(h),k}function Eo(h){let k=[];for(let[R,I]of w)if(I<h){let V=T.fetchers.get(R);Se(V,"Expected fetcher: "+R),V.state==="loading"&&(Ft(R),w.delete(R),k.push(R))}return ar(k),k.length>0}function sr(h,k){let R=T.blockers.get(h)||qr;return Ce.get(h)!==k&&Ce.set(h,k),R}function _o(h){T.blockers.delete(h),Ce.delete(h)}function En(h,k){let R=T.blockers.get(h)||qr;Se(R.state==="unblocked"&&k.state==="blocked"||R.state==="blocked"&&k.state==="blocked"||R.state==="blocked"&&k.state==="proceeding"||R.state==="blocked"&&k.state==="unblocked"||R.state==="proceeding"&&k.state==="unblocked","Invalid blocker state transition: "+R.state+" -> "+k.state);let I=new Map(T.blockers);I.set(h,k),it({blockers:I})}function Ro(h){let{currentLocation:k,nextLocation:R,historyAction:I}=h;if(Ce.size===0)return;Ce.size>1&&Jn(!1,"A router only supports one blocker at a time");let V=Array.from(Ce.entries()),[ne,se]=V[V.length-1],Y=T.blockers.get(ne);if(!(Y&&Y.state==="proceeding")&&se({currentLocation:k,nextLocation:R,historyAction:I}))return ne}function Zt(h){let k=bt(404,{pathname:h}),R=v||f,{matches:I,route:V}=Pd(R);return en(),{notFoundMatches:I,route:V,error:k}}function en(h){let k=[];return ye.forEach((R,I)=>{(!h||h(I))&&(R.cancel(),k.push(I),ye.delete(I))}),k}function oi(h,k,R){if(H=h,U=k,O=R||null,!me&&T.navigation===cl){me=!0;let I=cr(T.location,T.matches);I!=null&&it({restoreScrollPosition:I})}return()=>{H=null,U=null,O=null}}function lr(h,k){return O&&O(h,k.map(I=>cg(I,T.loaderData)))||h.key}function ri(h,k){if(H&&U){let R=lr(h,k);H[R]=U()}}function cr(h,k){if(H){let R=lr(h,k),I=H[R];if(typeof I=="number")return I}return null}function to(h,k,R){if(E)if(h){if(Object.keys(h[0].params).length>0)return{active:!0,matches:ga(k,R,m,!0)}}else return{active:!0,matches:ga(k,R,m,!0)||[]};return{active:!1,matches:null}}async function _n(h,k,R,I){if(!E)return{type:"success",matches:h};let V=h;for(;;){let ne=v==null,se=v||f,Y=p;try{await E({signal:R,path:k,matches:V,fetcherKey:I,patch:(G,ge)=>{R.aborted||hd(G,ge,se,Y,d)}})}catch(G){return{type:"error",error:G,partialMatches:V}}finally{ne&&!R.aborted&&(f=[...f])}if(R.aborted)return{type:"aborted"};let X=vo(se,k,m);if(X)return{type:"success",matches:X};let $=ga(se,k,m,!0);if(!$||V.length===$.length&&V.every((G,ge)=>G.route.id===$[ge].route.id))return{type:"success",matches:null};V=$}}function ii(h){p={},v=ha(h,d,void 0,p)}function no(h,k){let R=v==null;hd(h,k,v||f,p,d),R&&(f=[...f],it({}))}return je={get basename(){return m},get future(){return C},get state(){return T},get routes(){return f},get window(){return s},initialize:Ue,subscribe:xo,enableScrollRestoration:oi,navigate:Co,fetch:xn,revalidate:Zr,createHref:h=>i.history.createHref(h),encodeLocation:h=>i.history.encodeLocation(h),getFetcher:bn,deleteFetcher:Pa,dispose:ht,getBlocker:sr,deleteBlocker:_o,patchRoutes:no,_internalFetchControllers:B,_internalActiveDeferreds:ye,_internalSetRoutes:ii},je}function Ng(i){return i!=null&&("formData"in i&&i.formData!=null||"body"in i&&i.body!==void 0)}function fl(i,s,l,u,d,p,f,v){let m,P;if(f){m=[];for(let C of s)if(m.push(C),C.route.id===f){P=C;break}}else m=s,P=s[s.length-1];let E=wl(d||".",Sl(m,p),wn(i.pathname,l)||i.pathname,v==="path");if(d==null&&(E.search=i.search,E.hash=i.hash),(d==null||d===""||d===".")&&P){let C=xl(E.search);if(P.route.index&&!C)E.search=E.search?E.search.replace(/^\?/,"?index&"):"?index";else if(!P.route.index&&C){let M=new URLSearchParams(E.search),D=M.getAll("index");M.delete("index"),D.filter(O=>O).forEach(O=>M.append("index",O));let H=M.toString();E.search=H?"?"+H:""}}return u&&l!=="/"&&(E.pathname=E.pathname==="/"?l:Sn([l,E.pathname])),Po(E)}function pd(i,s,l,u){if(!u||!Ng(u))return{path:l};if(u.formMethod&&!Qg(u.formMethod))return{path:l,error:bt(405,{method:u.formMethod})};let d=()=>({path:l,error:bt(400,{type:"invalid-body"})}),p=u.formMethod||"get",f=i?p.toUpperCase():p.toLowerCase(),v=Qd(l);if(u.body!==void 0){if(u.formEncType==="text/plain"){if(!Qt(f))return d();let M=typeof u.body=="string"?u.body:u.body instanceof FormData||u.body instanceof URLSearchParams?Array.from(u.body.entries()).reduce((D,H)=>{let[O,U]=H;return""+D+O+"="+U+`
|
|
51
|
-
`},""):String(u.body);return{path:l,submission:{formMethod:f,formAction:v,formEncType:u.formEncType,formData:void 0,json:void 0,text:M}}}else if(u.formEncType==="application/json"){if(!Qt(f))return d();try{let M=typeof u.body=="string"?JSON.parse(u.body):u.body;return{path:l,submission:{formMethod:f,formAction:v,formEncType:u.formEncType,formData:void 0,json:M,text:void 0}}}catch{return d()}}}Se(typeof FormData=="function","FormData is not available in this environment");let m,P;if(u.formData)m=ml(u.formData),P=u.formData;else if(u.body instanceof FormData)m=ml(u.body),P=u.body;else if(u.body instanceof URLSearchParams)m=u.body,P=vd(m);else if(u.body==null)m=new URLSearchParams,P=new FormData;else try{m=new URLSearchParams(u.body),P=vd(m)}catch{return d()}let E={formMethod:f,formAction:v,formEncType:u&&u.formEncType||"application/x-www-form-urlencoded",formData:P,json:void 0,text:void 0};if(Qt(E.formMethod))return{path:l,submission:E};let C=kn(l);return s&&C.search&&xl(C.search)&&m.append("index",""),C.search="?"+m,{path:Po(C),submission:E}}function fd(i,s,l){l===void 0&&(l=!1);let u=i.findIndex(d=>d.route.id===s);return u>=0?i.slice(0,l?u+1:u):i}function gd(i,s,l,u,d,p,f,v,m,P,E,C,M,D,H,O){let U=O?Mt(O[1])?O[1].error:O[1].data:void 0,me=i.createURL(s.location),W=i.createURL(d),de=l;p&&s.errors?de=fd(l,Object.keys(s.errors)[0],!0):O&&Mt(O[1])&&(de=fd(l,O[0]));let ae=O?O[1].statusCode:void 0,ke=f&&ae&&ae>=400,je=de.filter((te,Pe)=>{let{route:le}=te;if(le.lazy)return!0;if(le.loader==null)return!1;if(p)return gl(le,s.loaderData,s.errors);if(Dg(s.loaderData,s.matches[Pe],te)||m.some(Ne=>Ne===te.route.id))return!0;let Be=s.matches[Pe],Me=te;return md(te,$e({currentUrl:me,currentParams:Be.params,nextUrl:W,nextParams:Me.params},u,{actionResult:U,actionStatus:ae,defaultShouldRevalidate:ke?!1:v||me.pathname+me.search===W.pathname+W.search||me.search!==W.search||Kd(Be,Me)}))}),T=[];return C.forEach((te,Pe)=>{if(p||!l.some(Fe=>Fe.route.id===te.routeId)||E.has(Pe))return;let le=vo(D,te.path,H);if(!le){T.push({key:Pe,routeId:te.routeId,path:te.path,matches:null,match:null,controller:null});return}let Be=s.fetchers.get(Pe),Me=Qr(le,te.path),Ne=!1;M.has(Pe)?Ne=!1:P.has(Pe)?(P.delete(Pe),Ne=!0):Be&&Be.state!=="idle"&&Be.data===void 0?Ne=v:Ne=md(Me,$e({currentUrl:me,currentParams:s.matches[s.matches.length-1].params,nextUrl:W,nextParams:l[l.length-1].params},u,{actionResult:U,actionStatus:ae,defaultShouldRevalidate:ke?!1:v})),Ne&&T.push({key:Pe,routeId:te.routeId,path:te.path,matches:le,match:Me,controller:new AbortController})}),[je,T]}function gl(i,s,l){if(i.lazy)return!0;if(!i.loader)return!1;let u=s!=null&&s[i.id]!==void 0,d=l!=null&&l[i.id]!==void 0;return!u&&d?!1:typeof i.loader=="function"&&i.loader.hydrate===!0?!0:!u&&!d}function Dg(i,s,l){let u=!s||l.route.id!==s.route.id,d=i[l.route.id]===void 0;return u||d}function Kd(i,s){let l=i.route.path;return i.pathname!==s.pathname||l!=null&&l.endsWith("*")&&i.params["*"]!==s.params["*"]}function md(i,s){if(i.route.shouldRevalidate){let l=i.route.shouldRevalidate(s);if(typeof l=="boolean")return l}return s.defaultShouldRevalidate}function hd(i,s,l,u,d){var p;let f;if(i){let P=u[i];Se(P,"No route found to patch children into: routeId = "+i),P.children||(P.children=[]),f=P.children}else f=l;let v=s.filter(P=>!f.some(E=>$d(P,E))),m=ha(v,d,[i||"_","patch",String(((p=f)==null?void 0:p.length)||"0")],u);f.push(...m)}function $d(i,s){return"id"in i&&"id"in s&&i.id===s.id?!0:i.index===s.index&&i.path===s.path&&i.caseSensitive===s.caseSensitive?(!i.children||i.children.length===0)&&(!s.children||s.children.length===0)?!0:i.children.every((l,u)=>{var d;return(d=s.children)==null?void 0:d.some(p=>$d(l,p))}):!1}async function Og(i,s,l){if(!i.lazy)return;let u=await i.lazy();if(!i.lazy)return;let d=l[i.id];Se(d,"No route found in manifest");let p={};for(let f in u){let m=d[f]!==void 0&&f!=="hasErrorBoundary";Jn(!m,'Route "'+d.id+'" has a static property "'+f+'" defined but its lazy function is also returning a value for this property. '+('The lazy route property "'+f+'" will be ignored.')),!m&&!sg.has(f)&&(p[f]=u[f])}Object.assign(d,p),Object.assign(d,$e({},s(d),{lazy:void 0}))}async function Bg(i){let{matches:s}=i,l=s.filter(d=>d.shouldLoad);return(await Promise.all(l.map(d=>d.resolve()))).reduce((d,p,f)=>Object.assign(d,{[l[f].route.id]:p}),{})}async function Fg(i,s,l,u,d,p,f,v,m,P){let E=p.map(D=>D.route.lazy?Og(D.route,m,v):void 0),C=p.map((D,H)=>{let O=E[H],U=d.some(W=>W.route.id===D.route.id);return $e({},D,{shouldLoad:U,resolve:async W=>(W&&u.method==="GET"&&(D.route.lazy||D.route.loader)&&(U=!0),U?Ug(s,u,D,O,W,P):Promise.resolve({type:Ae.data,result:void 0}))})}),M=await i({matches:C,request:u,params:p[0].params,fetcherKey:f,context:P});try{await Promise.all(E)}catch{}return M}async function Ug(i,s,l,u,d,p){let f,v,m=P=>{let E,C=new Promise((H,O)=>E=O);v=()=>E(),s.signal.addEventListener("abort",v);let M=H=>typeof P!="function"?Promise.reject(new Error("You cannot call the handler for a route which defines a boolean "+('"'+i+'" [routeId: '+l.route.id+"]"))):P({request:s,params:l.params,context:p},...H!==void 0?[H]:[]),D=(async()=>{try{return{type:"data",result:await(d?d(O=>M(O)):M())}}catch(H){return{type:"error",result:H}}})();return Promise.race([D,C])};try{let P=l.route[i];if(u)if(P){let E,[C]=await Promise.all([m(P).catch(M=>{E=M}),u]);if(E!==void 0)throw E;f=C}else if(await u,P=l.route[i],P)f=await m(P);else if(i==="action"){let E=new URL(s.url),C=E.pathname+E.search;throw bt(405,{method:s.method,pathname:C,routeId:l.route.id})}else return{type:Ae.data,result:void 0};else if(P)f=await m(P);else{let E=new URL(s.url),C=E.pathname+E.search;throw bt(404,{pathname:C})}Se(f.result!==void 0,"You defined "+(i==="action"?"an action":"a loader")+" for route "+('"'+l.route.id+"\" but didn't return anything from your `"+i+"` ")+"function. Please return a value or `null`.")}catch(P){return{type:Ae.error,result:P}}finally{v&&s.signal.removeEventListener("abort",v)}return f}async function Hg(i){let{result:s,type:l}=i;if(Gd(s)){let C;try{let M=s.headers.get("Content-Type");M&&/\bapplication\/json\b/.test(M)?s.body==null?C=null:C=await s.json():C=await s.text()}catch(M){return{type:Ae.error,error:M}}return l===Ae.error?{type:Ae.error,error:new va(s.status,s.statusText,C),statusCode:s.status,headers:s.headers}:{type:Ae.data,data:C,statusCode:s.status,headers:s.headers}}if(l===Ae.error){if(xd(s)){var u,d;if(s.data instanceof Error){var p,f;return{type:Ae.error,error:s.data,statusCode:(p=s.init)==null?void 0:p.status,headers:(f=s.init)!=null&&f.headers?new Headers(s.init.headers):void 0}}return{type:Ae.error,error:new va(((u=s.init)==null?void 0:u.status)||500,void 0,s.data),statusCode:Yr(s)?s.status:void 0,headers:(d=s.init)!=null&&d.headers?new Headers(s.init.headers):void 0}}return{type:Ae.error,error:s,statusCode:Yr(s)?s.status:void 0}}if($g(s)){var v,m;return{type:Ae.deferred,deferredData:s,statusCode:(v=s.init)==null?void 0:v.status,headers:((m=s.init)==null?void 0:m.headers)&&new Headers(s.init.headers)}}if(xd(s)){var P,E;return{type:Ae.data,data:s.data,statusCode:(P=s.init)==null?void 0:P.status,headers:(E=s.init)!=null&&E.headers?new Headers(s.init.headers):void 0}}return{type:Ae.data,data:s}}function Vg(i,s,l,u,d,p){let f=i.headers.get("Location");if(Se(f,"Redirects returned/thrown from loaders/actions must have a Location header"),!kl.test(f)){let v=u.slice(0,u.findIndex(m=>m.route.id===l)+1);f=fl(new URL(s.url),v,d,!0,f,p),i.headers.set("Location",f)}return i}function yd(i,s,l,u){let d=["about:","blob:","chrome:","chrome-untrusted:","content:","data:","devtools:","file:","filesystem:","javascript:"];if(kl.test(i)){let p=i,f=p.startsWith("//")?new URL(s.protocol+p):new URL(p);if(d.includes(f.protocol))throw new Error("Invalid redirect location");let v=wn(f.pathname,l)!=null;if(f.origin===s.origin&&v)return f.pathname+f.search+f.hash}try{let p=u.createURL(i);if(d.includes(p.protocol))throw new Error("Invalid redirect location")}catch{}return i}function Zo(i,s,l,u){let d=i.createURL(Qd(s)).toString(),p={signal:l};if(u&&Qt(u.formMethod)){let{formMethod:f,formEncType:v}=u;p.method=f.toUpperCase(),v==="application/json"?(p.headers=new Headers({"Content-Type":v}),p.body=JSON.stringify(u.json)):v==="text/plain"?p.body=u.text:v==="application/x-www-form-urlencoded"&&u.formData?p.body=ml(u.formData):p.body=u.formData}return new Request(d,p)}function ml(i){let s=new URLSearchParams;for(let[l,u]of i.entries())s.append(l,typeof u=="string"?u:u.name);return s}function vd(i){let s=new FormData;for(let[l,u]of i.entries())s.append(l,u);return s}function Wg(i,s,l,u,d){let p={},f=null,v,m=!1,P={},E=l&&Mt(l[1])?l[1].error:void 0;return i.forEach(C=>{if(!(C.route.id in s))return;let M=C.route.id,D=s[M];if(Se(!wo(D),"Cannot handle redirect results in processLoaderData"),Mt(D)){let H=D.error;E!==void 0&&(H=E,E=void 0),f=f||{};{let O=So(i,M);f[O.route.id]==null&&(f[O.route.id]=H)}p[M]=void 0,m||(m=!0,v=Yr(D.error)?D.error.status:500),D.headers&&(P[M]=D.headers)}else Yn(D)?(u.set(M,D.deferredData),p[M]=D.deferredData.data,D.statusCode!=null&&D.statusCode!==200&&!m&&(v=D.statusCode),D.headers&&(P[M]=D.headers)):(p[M]=D.data,D.statusCode&&D.statusCode!==200&&!m&&(v=D.statusCode),D.headers&&(P[M]=D.headers))}),E!==void 0&&l&&(f={[l[0]]:E},p[l[0]]=void 0),{loaderData:p,errors:f,statusCode:v||200,loaderHeaders:P}}function Sd(i,s,l,u,d,p,f){let{loaderData:v,errors:m}=Wg(s,l,u,f);return d.forEach(P=>{let{key:E,match:C,controller:M}=P,D=p[E];if(Se(D,"Did not find corresponding fetcher result"),!(M&&M.signal.aborted))if(Mt(D)){let H=So(i.matches,C==null?void 0:C.route.id);m&&m[H.route.id]||(m=$e({},m,{[H.route.id]:D.error})),i.fetchers.delete(E)}else if(wo(D))Se(!1,"Unhandled fetcher revalidation redirect");else if(Yn(D))Se(!1,"Unhandled fetcher deferred data");else{let H=Gn(D.data);i.fetchers.set(E,H)}}),{loaderData:v,errors:m}}function wd(i,s,l,u){let d=$e({},s);for(let p of l){let f=p.route.id;if(s.hasOwnProperty(f)?s[f]!==void 0&&(d[f]=s[f]):i[f]!==void 0&&p.route.loader&&(d[f]=i[f]),u&&u.hasOwnProperty(f))break}return d}function kd(i){return i?Mt(i[1])?{actionData:{}}:{actionData:{[i[0]]:i[1].data}}:{}}function So(i,s){return(s?i.slice(0,i.findIndex(u=>u.route.id===s)+1):[...i]).reverse().find(u=>u.route.hasErrorBoundary===!0)||i[0]}function Pd(i){let s=i.length===1?i[0]:i.find(l=>l.index||!l.path||l.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:s}],route:s}}function bt(i,s){let{pathname:l,routeId:u,method:d,type:p,message:f}=s===void 0?{}:s,v="Unknown Server Error",m="Unknown @remix-run/router error";return i===400?(v="Bad Request",d&&l&&u?m="You made a "+d+' request to "'+l+'" but '+('did not provide a `loader` for route "'+u+'", ')+"so there is no way to handle the request.":p==="defer-action"?m="defer() is not supported in actions":p==="invalid-body"&&(m="Unable to encode submission body")):i===403?(v="Forbidden",m='Route "'+u+'" does not match URL "'+l+'"'):i===404?(v="Not Found",m='No route matches URL "'+l+'"'):i===405&&(v="Method Not Allowed",d&&l&&u?m="You made a "+d.toUpperCase()+' request to "'+l+'" but '+('did not provide an `action` for route "'+u+'", ')+"so there is no way to handle the request.":d&&(m='Invalid request method "'+d.toUpperCase()+'"')),new va(i||500,v,new Error(m),!0)}function da(i){let s=Object.entries(i);for(let l=s.length-1;l>=0;l--){let[u,d]=s[l];if(wo(d))return{key:u,result:d}}}function Qd(i){let s=typeof i=="string"?kn(i):i;return Po($e({},s,{hash:""}))}function qg(i,s){return i.pathname!==s.pathname||i.search!==s.search?!1:i.hash===""?s.hash!=="":i.hash===s.hash?!0:s.hash!==""}function Kg(i){return Gd(i.result)&&Mg.has(i.result.status)}function Yn(i){return i.type===Ae.deferred}function Mt(i){return i.type===Ae.error}function wo(i){return(i&&i.type)===Ae.redirect}function xd(i){return typeof i=="object"&&i!=null&&"type"in i&&"data"in i&&"init"in i&&i.type==="DataWithResponseInit"}function $g(i){let s=i;return s&&typeof s=="object"&&typeof s.data=="object"&&typeof s.subscribe=="function"&&typeof s.cancel=="function"&&typeof s.resolveData=="function"}function Gd(i){return i!=null&&typeof i.status=="number"&&typeof i.statusText=="string"&&typeof i.headers=="object"&&typeof i.body<"u"}function Qg(i){return Lg.has(i.toLowerCase())}function Qt(i){return Rg.has(i.toLowerCase())}async function Gg(i,s,l,u,d){let p=Object.entries(s);for(let f=0;f<p.length;f++){let[v,m]=p[f],P=i.find(M=>(M==null?void 0:M.route.id)===v);if(!P)continue;let E=u.find(M=>M.route.id===P.route.id),C=E!=null&&!Kd(E,P)&&(d&&d[P.route.id])!==void 0;Yn(m)&&C&&await Pl(m,l,!1).then(M=>{M&&(s[v]=M)})}}async function Yg(i,s,l){for(let u=0;u<l.length;u++){let{key:d,routeId:p,controller:f}=l[u],v=s[d];i.find(P=>(P==null?void 0:P.route.id)===p)&&Yn(v)&&(Se(f,"Expected an AbortController for revalidating fetcher deferred result"),await Pl(v,f.signal,!0).then(P=>{P&&(s[d]=P)}))}}async function Pl(i,s,l){if(l===void 0&&(l=!1),!await i.deferredData.resolveData(s)){if(l)try{return{type:Ae.data,data:i.deferredData.unwrappedData}}catch(d){return{type:Ae.error,error:d}}return{type:Ae.data,data:i.deferredData.data}}}function xl(i){return new URLSearchParams(i).getAll("index").some(s=>s==="")}function Qr(i,s){let l=typeof s=="string"?kn(s).search:s.search;if(i[i.length-1].route.index&&xl(l||""))return i[i.length-1];let u=Vd(i);return u[u.length-1]}function Cd(i){let{formMethod:s,formAction:l,formEncType:u,text:d,formData:p,json:f}=i;if(!(!s||!l||!u)){if(d!=null)return{formMethod:s,formAction:l,formEncType:u,formData:void 0,json:void 0,text:d};if(p!=null)return{formMethod:s,formAction:l,formEncType:u,formData:p,json:void 0,text:void 0};if(f!==void 0)return{formMethod:s,formAction:l,formEncType:u,formData:void 0,json:f,text:void 0}}}function ul(i,s){return s?{state:"loading",location:i,formMethod:s.formMethod,formAction:s.formAction,formEncType:s.formEncType,formData:s.formData,json:s.json,text:s.text}:{state:"loading",location:i,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function Jg(i,s){return{state:"submitting",location:i,formMethod:s.formMethod,formAction:s.formAction,formEncType:s.formEncType,formData:s.formData,json:s.json,text:s.text}}function Kr(i,s){return i?{state:"loading",formMethod:i.formMethod,formAction:i.formAction,formEncType:i.formEncType,formData:i.formData,json:i.json,text:i.text,data:s}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:s}}function Xg(i,s){return{state:"submitting",formMethod:i.formMethod,formAction:i.formAction,formEncType:i.formEncType,formData:i.formData,json:i.json,text:i.text,data:s?s.data:void 0}}function Gn(i){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:i}}function Zg(i,s){try{let l=i.sessionStorage.getItem(qd);if(l){let u=JSON.parse(l);for(let[d,p]of Object.entries(u||{}))p&&Array.isArray(p)&&s.set(d,new Set(p||[]))}}catch{}}function em(i,s){if(s.size>0){let l={};for(let[u,d]of s)l[u]=[...d];try{i.sessionStorage.setItem(qd,JSON.stringify(l))}catch(u){Jn(!1,"Failed to save applied view transitions in sessionStorage ("+u+").")}}}/**
|
|
52
|
-
* React Router v6.30.3
|
|
53
|
-
*
|
|
54
|
-
* Copyright (c) Remix Software Inc.
|
|
55
|
-
*
|
|
56
|
-
* This source code is licensed under the MIT license found in the
|
|
57
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
58
|
-
*
|
|
59
|
-
* @license MIT
|
|
60
|
-
*/function Sa(){return Sa=Object.assign?Object.assign.bind():function(i){for(var s=1;s<arguments.length;s++){var l=arguments[s];for(var u in l)Object.prototype.hasOwnProperty.call(l,u)&&(i[u]=l[u])}return i},Sa.apply(this,arguments)}const Jr=L.createContext(null),Cl=L.createContext(null),Xn=L.createContext(null),bl=L.createContext(null),Pn=L.createContext({outlet:null,matches:[],isDataRoute:!1}),Yd=L.createContext(null);function tm(i,s){let{relative:l}=s===void 0?{}:s;Xr()||Se(!1);let{basename:u,navigator:d}=L.useContext(Xn),{hash:p,pathname:f,search:v}=wa(i,{relative:l}),m=f;return u!=="/"&&(m=f==="/"?u:Sn([u,f])),d.createHref({pathname:m,search:v,hash:p})}function Xr(){return L.useContext(bl)!=null}function nr(){return Xr()||Se(!1),L.useContext(bl).location}function Jd(i){L.useContext(Xn).static||L.useLayoutEffect(i)}function nm(){let{isDataRoute:i}=L.useContext(Pn);return i?hm():om()}function om(){Xr()||Se(!1);let i=L.useContext(Jr),{basename:s,future:l,navigator:u}=L.useContext(Xn),{matches:d}=L.useContext(Pn),{pathname:p}=nr(),f=JSON.stringify(Sl(d,l.v7_relativeSplatPath)),v=L.useRef(!1);return Jd(()=>{v.current=!0}),L.useCallback(function(P,E){if(E===void 0&&(E={}),!v.current)return;if(typeof P=="number"){u.go(P);return}let C=wl(P,JSON.parse(f),p,E.relative==="path");i==null&&s!=="/"&&(C.pathname=C.pathname==="/"?s:Sn([s,C.pathname])),(E.replace?u.replace:u.push)(C,E.state,E)},[s,u,f,p,i])}const rm=L.createContext(null);function im(i){let s=L.useContext(Pn).outlet;return s&&L.createElement(rm.Provider,{value:i},s)}function gy(){let{matches:i}=L.useContext(Pn),s=i[i.length-1];return s?s.params:{}}function wa(i,s){let{relative:l}=s===void 0?{}:s,{future:u}=L.useContext(Xn),{matches:d}=L.useContext(Pn),{pathname:p}=nr(),f=JSON.stringify(Sl(d,u.v7_relativeSplatPath));return L.useMemo(()=>wl(i,JSON.parse(f),p,l==="path"),[i,f,p,l])}function am(i,s,l,u){Xr()||Se(!1);let{navigator:d}=L.useContext(Xn),{matches:p}=L.useContext(Pn),f=p[p.length-1],v=f?f.params:{};f&&f.pathname;let m=f?f.pathnameBase:"/";f&&f.route;let P=nr(),E;E=P;let C=E.pathname||"/",M=C;if(m!=="/"){let O=m.replace(/^\//,"").split("/");M="/"+C.replace(/^\//,"").split("/").slice(O.length).join("/")}let D=vo(i,{pathname:M});return dm(D&&D.map(O=>Object.assign({},O,{params:Object.assign({},v,O.params),pathname:Sn([m,d.encodeLocation?d.encodeLocation(O.pathname).pathname:O.pathname]),pathnameBase:O.pathnameBase==="/"?m:Sn([m,d.encodeLocation?d.encodeLocation(O.pathnameBase).pathname:O.pathnameBase])})),p,l,u)}function sm(){let i=mm(),s=Yr(i)?i.status+" "+i.statusText:i instanceof Error?i.message:JSON.stringify(i),l=i instanceof Error?i.stack:null,d={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return L.createElement(L.Fragment,null,L.createElement("h2",null,"Unexpected Application Error!"),L.createElement("h3",{style:{fontStyle:"italic"}},s),l?L.createElement("pre",{style:d},l):null,null)}const lm=L.createElement(sm,null);class cm extends L.Component{constructor(s){super(s),this.state={location:s.location,revalidation:s.revalidation,error:s.error}}static getDerivedStateFromError(s){return{error:s}}static getDerivedStateFromProps(s,l){return l.location!==s.location||l.revalidation!=="idle"&&s.revalidation==="idle"?{error:s.error,location:s.location,revalidation:s.revalidation}:{error:s.error!==void 0?s.error:l.error,location:l.location,revalidation:s.revalidation||l.revalidation}}componentDidCatch(s,l){console.error("React Router caught the following error during render",s,l)}render(){return this.state.error!==void 0?L.createElement(Pn.Provider,{value:this.props.routeContext},L.createElement(Yd.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function um(i){let{routeContext:s,match:l,children:u}=i,d=L.useContext(Jr);return d&&d.static&&d.staticContext&&(l.route.errorElement||l.route.ErrorBoundary)&&(d.staticContext._deepestRenderedBoundaryId=l.route.id),L.createElement(Pn.Provider,{value:s},u)}function dm(i,s,l,u){var d;if(s===void 0&&(s=[]),l===void 0&&(l=null),u===void 0&&(u=null),i==null){var p;if(!l)return null;if(l.errors)i=l.matches;else if((p=u)!=null&&p.v7_partialHydration&&s.length===0&&!l.initialized&&l.matches.length>0)i=l.matches;else return null}let f=i,v=(d=l)==null?void 0:d.errors;if(v!=null){let E=f.findIndex(C=>C.route.id&&(v==null?void 0:v[C.route.id])!==void 0);E>=0||Se(!1),f=f.slice(0,Math.min(f.length,E+1))}let m=!1,P=-1;if(l&&u&&u.v7_partialHydration)for(let E=0;E<f.length;E++){let C=f[E];if((C.route.HydrateFallback||C.route.hydrateFallbackElement)&&(P=E),C.route.id){let{loaderData:M,errors:D}=l,H=C.route.loader&&M[C.route.id]===void 0&&(!D||D[C.route.id]===void 0);if(C.route.lazy||H){m=!0,P>=0?f=f.slice(0,P+1):f=[f[0]];break}}}return f.reduceRight((E,C,M)=>{let D,H=!1,O=null,U=null;l&&(D=v&&C.route.id?v[C.route.id]:void 0,O=C.route.errorElement||lm,m&&(P<0&&M===0?(ym("route-fallback"),H=!0,U=null):P===M&&(H=!0,U=C.route.hydrateFallbackElement||null)));let me=s.concat(f.slice(0,M+1)),W=()=>{let de;return D?de=O:H?de=U:C.route.Component?de=L.createElement(C.route.Component,null):C.route.element?de=C.route.element:de=E,L.createElement(um,{match:C,routeContext:{outlet:E,matches:me,isDataRoute:l!=null},children:de})};return l&&(C.route.ErrorBoundary||C.route.errorElement||M===0)?L.createElement(cm,{location:l.location,revalidation:l.revalidation,component:O,error:D,children:W(),routeContext:{outlet:null,matches:me,isDataRoute:!0}}):W()},null)}var Xd=(function(i){return i.UseBlocker="useBlocker",i.UseRevalidator="useRevalidator",i.UseNavigateStable="useNavigate",i})(Xd||{}),Zd=(function(i){return i.UseBlocker="useBlocker",i.UseLoaderData="useLoaderData",i.UseActionData="useActionData",i.UseRouteError="useRouteError",i.UseNavigation="useNavigation",i.UseRouteLoaderData="useRouteLoaderData",i.UseMatches="useMatches",i.UseRevalidator="useRevalidator",i.UseNavigateStable="useNavigate",i.UseRouteId="useRouteId",i})(Zd||{});function pm(i){let s=L.useContext(Jr);return s||Se(!1),s}function fm(i){let s=L.useContext(Cl);return s||Se(!1),s}function gm(i){let s=L.useContext(Pn);return s||Se(!1),s}function ep(i){let s=gm(),l=s.matches[s.matches.length-1];return l.route.id||Se(!1),l.route.id}function mm(){var i;let s=L.useContext(Yd),l=fm(Zd.UseRouteError),u=ep();return s!==void 0?s:(i=l.errors)==null?void 0:i[u]}function hm(){let{router:i}=pm(Xd.UseNavigateStable),s=ep(),l=L.useRef(!1);return Jd(()=>{l.current=!0}),L.useCallback(function(d,p){p===void 0&&(p={}),l.current&&(typeof d=="number"?i.navigate(d):i.navigate(d,Sa({fromRouteId:s},p)))},[i,s])}const bd={};function ym(i,s,l){bd[i]||(bd[i]=!0)}function vm(i,s){i==null||i.v7_startTransition,(i==null?void 0:i.v7_relativeSplatPath)===void 0&&(!s||s.v7_relativeSplatPath),s&&(s.v7_fetcherPersist,s.v7_normalizeFormMethod,s.v7_partialHydration,s.v7_skipActionErrorRevalidation)}function Sm(i){return im(i.context)}function wm(i){let{basename:s="/",children:l=null,location:u,navigationType:d=et.Pop,navigator:p,static:f=!1,future:v}=i;Xr()&&Se(!1);let m=s.replace(/^\/*/,"/"),P=L.useMemo(()=>({basename:m,navigator:p,static:f,future:Sa({v7_relativeSplatPath:!1},v)}),[m,v,p,f]);typeof u=="string"&&(u=kn(u));let{pathname:E="/",search:C="",hash:M="",state:D=null,key:H="default"}=u,O=L.useMemo(()=>{let U=wn(E,m);return U==null?null:{location:{pathname:U,search:C,hash:M,state:D,key:H},navigationType:d}},[m,E,C,M,D,H,d]);return O==null?null:L.createElement(Xn.Provider,{value:P},L.createElement(bl.Provider,{children:l,value:O}))}new Promise(()=>{});function km(i){let s={hasErrorBoundary:i.ErrorBoundary!=null||i.errorElement!=null};return i.Component&&Object.assign(s,{element:L.createElement(i.Component),Component:void 0}),i.HydrateFallback&&Object.assign(s,{hydrateFallbackElement:L.createElement(i.HydrateFallback),HydrateFallback:void 0}),i.ErrorBoundary&&Object.assign(s,{errorElement:L.createElement(i.ErrorBoundary),ErrorBoundary:void 0}),s}/**
|
|
61
|
-
* React Router DOM v6.30.3
|
|
62
|
-
*
|
|
63
|
-
* Copyright (c) Remix Software Inc.
|
|
64
|
-
*
|
|
65
|
-
* This source code is licensed under the MIT license found in the
|
|
66
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
67
|
-
*
|
|
68
|
-
* @license MIT
|
|
69
|
-
*/function er(){return er=Object.assign?Object.assign.bind():function(i){for(var s=1;s<arguments.length;s++){var l=arguments[s];for(var u in l)Object.prototype.hasOwnProperty.call(l,u)&&(i[u]=l[u])}return i},er.apply(this,arguments)}function tp(i,s){if(i==null)return{};var l={},u=Object.keys(i),d,p;for(p=0;p<u.length;p++)d=u[p],!(s.indexOf(d)>=0)&&(l[d]=i[d]);return l}function Pm(i){return!!(i.metaKey||i.altKey||i.ctrlKey||i.shiftKey)}function xm(i,s){return i.button===0&&(!s||s==="_self")&&!Pm(i)}const Cm=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],bm=["aria-current","caseSensitive","className","end","style","to","viewTransition","children"],Em="6";try{window.__reactRouterVersion=Em}catch{}function _m(i,s){return jg({basename:void 0,future:er({},void 0,{v7_prependBasename:!0}),history:rg({window:void 0}),hydrationData:Rm(),routes:i,mapRouteProperties:km,dataStrategy:void 0,patchRoutesOnNavigation:void 0,window:void 0}).initialize()}function Rm(){var i;let s=(i=window)==null?void 0:i.__staticRouterHydrationData;return s&&s.errors&&(s=er({},s,{errors:Tm(s.errors)})),s}function Tm(i){if(!i)return null;let s=Object.entries(i),l={};for(let[u,d]of s)if(d&&d.__type==="RouteErrorResponse")l[u]=new va(d.status,d.statusText,d.data,d.internal===!0);else if(d&&d.__type==="Error"){if(d.__subType){let p=window[d.__subType];if(typeof p=="function")try{let f=new p(d.message);f.stack="",l[u]=f}catch{}}if(l[u]==null){let p=new Error(d.message);p.stack="",l[u]=p}}else l[u]=d;return l}const np=L.createContext({isTransitioning:!1}),Lm=L.createContext(new Map),Mm="startTransition",Ed=tg[Mm],zm="flushSync",_d=og[zm];function Im(i){Ed?Ed(i):i()}function $r(i){_d?_d(i):i()}class Am{constructor(){this.status="pending",this.promise=new Promise((s,l)=>{this.resolve=u=>{this.status==="pending"&&(this.status="resolved",s(u))},this.reject=u=>{this.status==="pending"&&(this.status="rejected",l(u))}})}}function jm(i){let{fallbackElement:s,router:l,future:u}=i,[d,p]=L.useState(l.state),[f,v]=L.useState(),[m,P]=L.useState({isTransitioning:!1}),[E,C]=L.useState(),[M,D]=L.useState(),[H,O]=L.useState(),U=L.useRef(new Map),{v7_startTransition:me}=u||{},W=L.useCallback(te=>{me?Im(te):te()},[me]),de=L.useCallback((te,Pe)=>{let{deletedFetchers:le,flushSync:Be,viewTransitionOpts:Me}=Pe;te.fetchers.forEach((Fe,Xe)=>{Fe.data!==void 0&&U.current.set(Xe,Fe.data)}),le.forEach(Fe=>U.current.delete(Fe));let Ne=l.window==null||l.window.document==null||typeof l.window.document.startViewTransition!="function";if(!Me||Ne){Be?$r(()=>p(te)):W(()=>p(te));return}if(Be){$r(()=>{M&&(E&&E.resolve(),M.skipTransition()),P({isTransitioning:!0,flushSync:!0,currentLocation:Me.currentLocation,nextLocation:Me.nextLocation})});let Fe=l.window.document.startViewTransition(()=>{$r(()=>p(te))});Fe.finished.finally(()=>{$r(()=>{C(void 0),D(void 0),v(void 0),P({isTransitioning:!1})})}),$r(()=>D(Fe));return}M?(E&&E.resolve(),M.skipTransition(),O({state:te,currentLocation:Me.currentLocation,nextLocation:Me.nextLocation})):(v(te),P({isTransitioning:!0,flushSync:!1,currentLocation:Me.currentLocation,nextLocation:Me.nextLocation}))},[l.window,M,E,U,W]);L.useLayoutEffect(()=>l.subscribe(de),[l,de]),L.useEffect(()=>{m.isTransitioning&&!m.flushSync&&C(new Am)},[m]),L.useEffect(()=>{if(E&&f&&l.window){let te=f,Pe=E.promise,le=l.window.document.startViewTransition(async()=>{W(()=>p(te)),await Pe});le.finished.finally(()=>{C(void 0),D(void 0),v(void 0),P({isTransitioning:!1})}),D(le)}},[W,f,E,l.window]),L.useEffect(()=>{E&&f&&d.location.key===f.location.key&&E.resolve()},[E,M,d.location,f]),L.useEffect(()=>{!m.isTransitioning&&H&&(v(H.state),P({isTransitioning:!0,flushSync:!1,currentLocation:H.currentLocation,nextLocation:H.nextLocation}),O(void 0))},[m.isTransitioning,H]),L.useEffect(()=>{},[]);let ae=L.useMemo(()=>({createHref:l.createHref,encodeLocation:l.encodeLocation,go:te=>l.navigate(te),push:(te,Pe,le)=>l.navigate(te,{state:Pe,preventScrollReset:le==null?void 0:le.preventScrollReset}),replace:(te,Pe,le)=>l.navigate(te,{replace:!0,state:Pe,preventScrollReset:le==null?void 0:le.preventScrollReset})}),[l]),ke=l.basename||"/",je=L.useMemo(()=>({router:l,navigator:ae,static:!1,basename:ke}),[l,ae,ke]),T=L.useMemo(()=>({v7_relativeSplatPath:l.future.v7_relativeSplatPath}),[l.future.v7_relativeSplatPath]);return L.useEffect(()=>vm(u,l.future),[u,l.future]),L.createElement(L.Fragment,null,L.createElement(Jr.Provider,{value:je},L.createElement(Cl.Provider,{value:d},L.createElement(Lm.Provider,{value:U.current},L.createElement(np.Provider,{value:m},L.createElement(wm,{basename:ke,location:d.location,navigationType:d.historyAction,navigator:ae,future:T},d.initialized||l.future.v7_partialHydration?L.createElement(Nm,{routes:l.routes,future:l.future,state:d}):s))))),null)}const Nm=L.memo(Dm);function Dm(i){let{routes:s,future:l,state:u}=i;return am(s,void 0,u,l)}const Om=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Bm=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,op=L.forwardRef(function(s,l){let{onClick:u,relative:d,reloadDocument:p,replace:f,state:v,target:m,to:P,preventScrollReset:E,viewTransition:C}=s,M=tp(s,Cm),{basename:D}=L.useContext(Xn),H,O=!1;if(typeof P=="string"&&Bm.test(P)&&(H=P,Om))try{let de=new URL(window.location.href),ae=P.startsWith("//")?new URL(de.protocol+P):new URL(P),ke=wn(ae.pathname,D);ae.origin===de.origin&&ke!=null?P=ke+ae.search+ae.hash:O=!0}catch{}let U=tm(P,{relative:d}),me=Hm(P,{replace:f,state:v,target:m,preventScrollReset:E,relative:d,viewTransition:C});function W(de){u&&u(de),de.defaultPrevented||me(de)}return L.createElement("a",er({},M,{href:H||U,onClick:O||p?u:W,ref:l,target:m}))}),Fm=L.forwardRef(function(s,l){let{"aria-current":u="page",caseSensitive:d=!1,className:p="",end:f=!1,style:v,to:m,viewTransition:P,children:E}=s,C=tp(s,bm),M=wa(m,{relative:C.relative}),D=nr(),H=L.useContext(Cl),{navigator:O,basename:U}=L.useContext(Xn),me=H!=null&&Vm(M)&&P===!0,W=O.encodeLocation?O.encodeLocation(M).pathname:M.pathname,de=D.pathname,ae=H&&H.navigation&&H.navigation.location?H.navigation.location.pathname:null;d||(de=de.toLowerCase(),ae=ae?ae.toLowerCase():null,W=W.toLowerCase()),ae&&U&&(ae=wn(ae,U)||ae);const ke=W!=="/"&&W.endsWith("/")?W.length-1:W.length;let je=de===W||!f&&de.startsWith(W)&&de.charAt(ke)==="/",T=ae!=null&&(ae===W||!f&&ae.startsWith(W)&&ae.charAt(W.length)==="/"),te={isActive:je,isPending:T,isTransitioning:me},Pe=je?u:void 0,le;typeof p=="function"?le=p(te):le=[p,je?"active":null,T?"pending":null,me?"transitioning":null].filter(Boolean).join(" ");let Be=typeof v=="function"?v(te):v;return L.createElement(op,er({},C,{"aria-current":Pe,className:le,ref:l,style:Be,to:m,viewTransition:P}),typeof E=="function"?E(te):E)});var hl;(function(i){i.UseScrollRestoration="useScrollRestoration",i.UseSubmit="useSubmit",i.UseSubmitFetcher="useSubmitFetcher",i.UseFetcher="useFetcher",i.useViewTransitionState="useViewTransitionState"})(hl||(hl={}));var Rd;(function(i){i.UseFetcher="useFetcher",i.UseFetchers="useFetchers",i.UseScrollRestoration="useScrollRestoration"})(Rd||(Rd={}));function Um(i){let s=L.useContext(Jr);return s||Se(!1),s}function Hm(i,s){let{target:l,replace:u,state:d,preventScrollReset:p,relative:f,viewTransition:v}=s===void 0?{}:s,m=nm(),P=nr(),E=wa(i,{relative:f});return L.useCallback(C=>{if(xm(C,l)){C.preventDefault();let M=u!==void 0?u:Po(P)===Po(E);m(i,{replace:M,state:d,preventScrollReset:p,relative:f,viewTransition:v})}},[P,m,E,u,d,l,i,p,f,v])}function Vm(i,s){s===void 0&&(s={});let l=L.useContext(np);l==null&&Se(!1);let{basename:u}=Um(hl.useViewTransitionState),d=wa(i,{relative:s.relative});if(!l.isTransitioning)return!1;let p=wn(l.currentLocation.pathname,u)||l.currentLocation.pathname,f=wn(l.nextLocation.pathname,u)||l.nextLocation.pathname;return ya(d.pathname,f)!=null||ya(d.pathname,p)!=null}const Wm="modulepreload",qm=function(i){return"/dashboard/"+i},Td={},Qn=function(s,l,u){let d=Promise.resolve();if(l&&l.length>0){let f=function(P){return Promise.all(P.map(E=>Promise.resolve(E).then(C=>({status:"fulfilled",value:C}),C=>({status:"rejected",reason:C}))))};document.getElementsByTagName("link");const v=document.querySelector("meta[property=csp-nonce]"),m=(v==null?void 0:v.nonce)||(v==null?void 0:v.getAttribute("nonce"));d=f(l.map(P=>{if(P=qm(P),P in Td)return;Td[P]=!0;const E=P.endsWith(".css"),C=E?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${P}"]${C}`))return;const M=document.createElement("link");if(M.rel=E?"stylesheet":Wm,E||(M.as="script"),M.crossOrigin="",M.href=P,m&&M.setAttribute("nonce",m),document.head.appendChild(M),E)return new Promise((D,H)=>{M.addEventListener("load",D),M.addEventListener("error",()=>H(new Error(`Unable to preload CSS for ${P}`)))})}))}function p(f){const v=new Event("vite:preloadError",{cancelable:!0});if(v.payload=f,window.dispatchEvent(v),!v.defaultPrevented)throw f}return d.then(f=>{for(const v of f||[])v.status==="rejected"&&p(v.reason);return s().catch(p)})},ka=window.location.origin,Km=3e3,$m=5e3;class Qm{constructor(s){Xo(this,"base");this.base=s}async get(s,l){const u=new URL(s,this.base);l&&Object.entries(l).forEach(([p,f])=>u.searchParams.set(p,f));const d=await fetch(u.toString(),{method:"GET"});if(!d.ok)throw new Error(`API ${d.status}: ${d.statusText}`);return d.json()}async patch(s,l){const u=new URL(s,this.base),d=await fetch(u.toString(),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(l)});if(!d.ok)throw new Error(`API ${d.status}: ${d.statusText}`);return d.json()}async post(s,l){const u=new URL(s,this.base),d=await fetch(u.toString(),{method:"POST",headers:l?{"Content-Type":"application/json"}:{},body:l?JSON.stringify(l):void 0});if(!d.ok)throw new Error(`API ${d.status}: ${d.statusText}`);return d.json()}}const El=new Qm(ka);function Gm(i){return i.pluginClients&&i.pluginClients.length>0?"L2":(i.connectedClients===0||!i.pluginClients,"L1")}const rp=L.createContext(null);function Ym({children:i}){const[s,l]=L.useState("L0"),[u,d]=L.useState(null),[p,f]=L.useState(null),v=L.useRef(null);return L.useEffect(()=>{let m=!1;async function P(){try{const E=await El.get("/status");if(m)return;d(E),l(Gm(E)),f(null)}catch(E){if(m)return;l("L0"),f(E instanceof Error?E.message:String(E))}}return P(),v.current=setInterval(P,$m),()=>{m=!0,v.current&&clearInterval(v.current)}},[]),ue.jsx(rp.Provider,{value:{level:s,status:u,error:p},children:i})}function _l(){const i=L.useContext(rp);if(!i)throw new Error("useConnection must be used within a ConnectionProvider");return i}const Jm={"sidebar.overview":"Overview","sidebar.changelog":"Changelog","sidebar.connection":"Connection","sidebar.sync":"Sync","sidebar.playtest":"Playtest","sidebar.tools":"Tools","sidebar.settings":"Settings","sidebar.gate.l1":"MCP server connection required","sidebar.gate.l2":"Roblox Studio plugin connection required","header.currentProject":"Current Project","header.unknownProject":"Unknown project","header.placeNotConnected":"Place not connected","header.currentProject.tooltip":"Currently selected project folder","header.place.tooltip":"Connected Roblox place","header.placeNotConnected.tooltip":"Place not connected","status.online":"Online","status.offline":"Offline","status.idle":"Idle","status.syncing":"Syncing","status.error":"Error","status.initializing":"Initializing","level.l0.title":"MCP server disconnected","level.l0.message":"Dashboard opened but MCP server has stopped or is not responding.","level.l1.title":"Plugin not connected","level.l1.hint":"Check: Is Roblox Studio running? Is the plugin installed? Are HTTP Requests enabled?","level.l2.ok":"All connected","tier.basic":"Basic","tier.basic.tooltip":"Basic tier with the standard dashboard feature set.","tier.pro":"Pro","tier.pro.tooltip":"Pro tier with the full dashboard feature set.","tier.mixed":"Mixed","tier.upgrade":"Upgrade to Pro","tier.compare":"Basic vs Pro","tier.banner.save":"Save AI tokens with Pro!","tier.comparison.comingSoon":"Basic vs Pro comparison — coming soon","tier.comparison.close":"Close","tier.comparison.detailTitle":"Detailed Tool Catalog","tier.comparison.description":"Description","tier.comparison.basic.core":"Core MCP workflow","tier.comparison.basic.core.item1":"Script create/edit","tier.comparison.basic.core.item2":"Instance management","tier.comparison.basic.core.item3":"Property control","tier.comparison.basic.core.item4":"Selection and search","tier.comparison.basic.core.item5":"Tag management","tier.comparison.basic.core.item6":"Camera control","tier.comparison.basic.core.item7":"Log monitoring","tier.comparison.basic.sync":"Sync (Basic)","tier.comparison.basic.sync.item1":"Studio to Local one-way sync","tier.comparison.basic.sync.item2":"Manual apply as default","tier.comparison.basic.sync.item3":"Pro sync settings stay read-only","tier.comparison.pro.all":"Everything in Basic, plus","tier.comparison.pro.sync":"Advanced Sync workflow","tier.comparison.pro.sync.item1":"Per-type sync direction","tier.comparison.pro.sync.item2":"Per-type apply mode","tier.comparison.pro.sync.item3":"Bidirectional and reverse sync","tier.comparison.pro.sync.item4":"Full sync, resync, and push to Studio","tier.comparison.pro.sync.item5":"Multi-place sync","tier.comparison.pro.playtest":"Playtest control","tier.comparison.pro.playtest.item1":"Play, stop, pause, and resume","tier.comparison.pro.playtest.item2":"Playtest state inspection","tier.comparison.pro.playtest.item3":"Automated test execution","tier.comparison.pro.creation":"Advanced creation workflow","tier.comparison.pro.creation.item1":"Bulk operations","tier.comparison.pro.creation.item2":"Terrain generation","tier.comparison.pro.creation.item3":"Asset search and insert","tier.comparison.pro.creation.item4":"Raycast and spatial analysis","tier.comparison.pro.creation.item5":"Environment control","tier.tool.query_instances.desc":"Inspect instances, search children and descendants, and inspect class data. Pro adds file tree, project structure, and property or tag search.","tier.tool.mutate_instances.desc":"Create, delete, clone, and move instances. Pro adds tree creation and bulk create, delete, or clone operations.","tier.tool.manage_properties.desc":"Read and set properties, attributes, and tags. Pro adds calculated updates, relative changes, and bulk property operations.","tier.tool.manage_scripts.desc":"Read, write, create, delete, edit, and search script source. Pro adds bulk replacement across scripts.","tier.tool.manage_lighting.desc":"Pro only. Configure lighting, atmosphere, sky, terrain properties, and time-of-day settings.","tier.tool.manage_selection.desc":"Read, set, and clear the current Studio selection. Pro adds context, details, add or remove, and selection watch support.","tier.tool.manage_camera.desc":"Inspect camera state, focus by path or position, and request suggested views.","tier.tool.manage_tween.desc":"Pro only. Create, play, pause, and cancel tweens for smooth animation.","tier.tool.manage_audio.desc":"Pro only. Play, stop, pause, and resume sounds, and configure the audio listener.","tier.tool.manage_animation.desc":"Pro only. Load, play, and stop animations, and inspect active animation tracks.","tier.tool.manage_physics.desc":"Pro only. Register collision groups, configure group collisions, and inspect available groups.","tier.tool.manage_effects.desc":"Pro only. Emit particles, clear effects, and toggle effect state.","tier.tool.manage_terrain.desc":"Pro only. Fill terrain shapes, clear regions, replace materials, manage terrain colors, read or write voxels, generate terrain, and smooth terrain.","tier.tool.spatial_query.desc":"Pro only. Run raycasts, find ground, validate placement, scan areas, search for flat or spawn positions, analyze walkability, map space, and inspect collisions.","tier.tool.manage_assets.desc":"Pro only. Insert models, inspect asset info, search the creator store, insert free assets or packages, and export assets.","tier.tool.manage_sync.desc":"Pro only. Inspect sync status, configuration, history, directions, and read or write synced files.","tier.tool.workspace_state.desc":"Pro only. Run full sync, capture snapshots, inspect recent changes and viewport state, and manage related metadata.","tier.tool.manage_logs.desc":"Inspect output logs with filtering, incremental polling, buffer clearing, and recent error lookup.","tier.tool.system_info.desc":"Inspect connection status and current tier. Pro adds place info, services, Studio settings, playtest control, and automated tests.","tier.tool.batch_execute.desc":"Pro only. Run multiple commands in a batch, with sequential execution and optional continue-on-error behavior.","tier.tool.execute_luau.desc":"Pro only. Execute arbitrary Luau code inside the Roblox Studio sandbox.","connection.server.title":"Server Status","connection.server.version":"Version","connection.server.version.tooltip":"Installed MCP server version","connection.server.pid":"PID","connection.server.pid.tooltip":"Operating system process identifier","connection.server.uptime":"Uptime","connection.server.uptime.tooltip":"Time elapsed since the MCP server started","connection.server.session":"Session","connection.server.session.tooltip":"Current MCP session identifier","connection.server.exec":"Exec","connection.server.exec.tooltip":"Executable path used to launch the MCP server","connection.reconnect":"Reconnect","connection.checkSettings":"Check Settings","connection.agents.title":"AI Agents","connection.agents.name":"Agent","connection.agents.cwd":"Working Dir","connection.agents.cwd.tooltip":"Current working directory for the connected AI agent","connection.agents.connected":"Connected","connection.agents.unknown":"Unknown","connection.agents.none":"No agents connected","connection.plugins.title":"Plugins","connection.plugins.place":"Place","connection.plugins.clientId":"Client ID","connection.plugins.clientId.tooltip":"Unique plugin client identifier for this Studio connection","connection.plugins.lastSeen":"Last Seen","connection.plugins.lastSeen.tooltip":"Most recent heartbeat received from the plugin","connection.plugins.version":"Ver","connection.plugins.version.tooltip":"Installed plugin version reported by Studio","connection.plugins.none":"No plugins connected","connection.log.title":"Connection Log","connection.log.empty":"No events yet","connection.time.secondsAgo":"s ago","connection.time.minutesAgo":"m ago","connection.time.hoursAgo":"h ago","common.loading":"Loading...","common.retry":"Retry","common.reconnecting":"Reconnecting...","common.expand":"Expand","common.collapse":"Collapse","tools.tab.history":"History","tools.tab.statistics":"Statistics","tools.tab.failures":"Failures","tools.col.time":"Time","tools.col.time.tooltip":"When the tool run was recorded.","tools.col.toolAction":"Tool.Action","tools.col.toolAction.tooltip":"Tool name and action that were executed.","tools.col.duration":"Duration","tools.col.duration.tooltip":"How long the tool took to finish.","tools.col.status":"Status","tools.col.status.tooltip":"Outcome of the recorded tool run.","tools.col.tier":"Tier","tools.col.tier.tooltip":"License tier required for the tool or action.","tools.col.tierStats.tooltip":"Basic, Pro, or Mixed summary for the tool statistics row.","tools.col.tool":"Tool","tools.col.tool.tooltip":"Consolidated tool name in the statistics table.","tools.col.calls":"Calls","tools.col.calls.tooltip":"Total number of recorded calls for this tool.","tools.col.okRate":"OK%","tools.col.okRate.tooltip":"Percentage of calls that finished successfully.","tools.col.avgTime":"Avg Time","tools.col.avgTime.tooltip":"Average execution time across recorded calls.","tools.col.error":"Error","tools.filter.tool":"Tool","tools.filter.all":"All","tools.badge.pro":"PRO","tools.badge.pro.tooltip":"This entry used a Pro-only tool or action.","tools.status.ok":"OK","tools.status.ok.tooltip":"The tool run completed successfully.","tools.tier.mixed.tooltip":"This tool includes both Basic and Pro actions.","tools.detail.params":"Parameters","tools.detail.params.tooltip":"Input parameters passed to this tool run.","tools.detail.result":"Result","tools.detail.result.tooltip":"Returned result payload for this tool run.","tools.detail.error":"Error","tools.page.prev":"Prev","tools.page.prev.tooltip":"Go to the previous page of tool history results.","tools.page.next":"Next","tools.page.next.tooltip":"Go to the next page of tool history results.","tools.empty.history":"No history entries","tools.empty.stats":"No tool statistics","tools.empty.failures":"No failures","tools.summary.total":"Total","tools.summary.calls":"calls","tools.summary.sessions":"Sessions","settings.license.title":"License","settings.license.title.tooltip":"Current license status and subscription tier.","settings.license.status":"Status","settings.license.status.tooltip":"Current license activation state.","settings.license.tier":"Tier","settings.license.tier.tooltip":"Current subscription tier for available dashboard features.","settings.license.key":"Key","settings.license.key.tooltip":"Masked license key currently loaded by the server.","settings.license.keyValue.tooltip":"Masked license key currently loaded by the server.","settings.license.provider":"Provider","settings.license.provider.tooltip":"License provider used to validate this key.","settings.license.providerValue.tooltip":"License provider used to validate this key.","settings.license.active":"Active","settings.license.active.tooltip":"Current license activation state.","settings.license.inactive":"Inactive","settings.license.inactive.tooltip":"Current license activation state.","settings.license.expired":"Expired","settings.license.expired.tooltip":"Current license activation state.","settings.license.unavailable":"License info unavailable","settings.readOnly":"Read-only","settings.readOnly.tooltip":"This section shows values that cannot be edited from the dashboard.","settings.unavailable":"Settings unavailable","settings.general.title":"General Settings","settings.general.title.tooltip":"Hot settings that apply immediately when changed.","settings.general.liveApply":"Live Apply","settings.general.liveApply.tooltip":"Changes in this section are applied immediately without a separate save button.","settings.general.applied":"Applied","settings.general.logLevel":"Log Level","settings.general.logLevel.tooltip":"Sets how much detail the dashboard writes to its logs.","settings.general.localHistory":"Tool History Recording","settings.general.localHistory.tooltip":"Stores local tool execution history for the dashboard history views.","settings.general.localStatistics":"Tool Statistics Collection","settings.general.localStatistics.tooltip":"Aggregates local usage statistics for dashboard reporting.","settings.general.requestTimeout":"Request Timeout","settings.general.requestTimeout.tooltip":"Maximum time the dashboard waits for a request before it fails.","settings.general.requestTimeout.unit":"ms","settings.general.requestTimeout.unit.tooltip":"Request timeout is measured in milliseconds.","settings.cold.title":"Server Environment","settings.cold.title.tooltip":"Read-only server environment values loaded at startup.","settings.cold.httpPort.tooltip":"Port number used by the MCP dashboard HTTP server.","settings.cold.httpHost.tooltip":"Host interface that the MCP dashboard HTTP server binds to.","settings.cold.dashboardAutoOpen.tooltip":"Controls whether the dashboard opens automatically in the browser when the server starts.","settings.cold.dashboardAutoOpen.value.tooltip":"Current startup behavior for opening the dashboard in a browser.","settings.cold.hint":"Set via environment variables to change these values.","settings.sync.title":"Sync Settings","settings.sync.title.tooltip":"Saved sync limits for project file indexing and traversal.","settings.sync.maxDepth":"Max Depth","settings.sync.maxDepth.tooltip":"Maximum folder depth the sync scanner will traverse.","settings.sync.maxInstances":"Max Instances","settings.sync.maxInstances.tooltip":"Maximum number of Roblox instances to index during sync.","settings.sync.save":"Save","settings.language.title":"Language","settings.language.title.tooltip":"Choose how the dashboard interface text is localized.","settings.language.dashboard":"Dashboard Language","settings.language.dashboard.tooltip":"Overrides the dashboard language or follows the system language when set to Auto.","settings.language.auto":"Auto","overview.l0.title":"MCP Server Disconnected","overview.l0.message":"The MCP server is not responding. The dashboard will automatically attempt to reconnect.","overview.l0.step1":"Check that the MCP server process is running","overview.l0.step2":"Restart the MCP server command if needed","overview.l0.reconnecting":"Auto-reconnecting every 3s...","overview.l0.reconnectBtn":"Reconnect","overview.l0.settingsBtn":"Check Settings","overview.l1.pluginGuide":"Roblox Studio plugin is not connected","overview.l1.check1":"Is Roblox Studio running?","overview.l1.check2":"Is the Weppy MCP plugin installed?","overview.l1.check3":"Are HTTP Requests enabled in Studio settings?","overview.l1.feedHint":"Changes will appear here once the plugin connects","overview.metric.server":"Server","overview.metric.server.tooltip":"MCP server runtime and process status","overview.metric.plugin":"Plugin","overview.metric.plugin.tooltip":"Roblox Studio plugin connection and version status","overview.metric.agent":"Agent","overview.metric.agent.tooltip":"Connected AI coding agents and their runtime state","overview.metric.agent.instancesUnit":"instances","overview.metric.sync":"Sync","overview.metric.sync.tooltip":"Current Studio to local sync activity","overview.metric.noAgent":"No Agent","overview.meta.version":"Version","overview.meta.version.tooltip":"Installed MCP server version","overview.meta.session":"Session","overview.meta.session.tooltip":"Current MCP session identifier","overview.meta.pid":"PID","overview.meta.pid.tooltip":"Operating system process identifier","overview.meta.uptime":"Uptime","overview.meta.uptime.tooltip":"Time elapsed since the MCP server started","overview.feed.title":"Recent Game Changes","overview.feed.empty":"No recent changes","overview.changelog.title":"Session Change Summary","overview.changelog.entries":"Total","overview.changelog.scripts":"scripts","overview.changelog.instances":"instances","overview.changelog.properties":"properties","overview.changelog.assets":"assets","overview.tier.title":"Tier Usage","changelog.subtitle":"Game Change History","changelog.filter.all":"All","changelog.filter.active":"Active","changelog.filter.completed":"Completed","changelog.empty":"No changelog entries yet","changelog.card.active":"Active","changelog.card.active.tooltip":"This session is still receiving new game changes.","changelog.card.completed":"Completed","changelog.card.completed.tooltip":"This session has ended and no more changes are expected.","changelog.card.bootstrapStatus":"Bootstrap","changelog.card.bootstrapStatus.tooltip":"This session only contains the initial sync bootstrap snapshot.","changelog.card.inProgress":"in progress","changelog.card.noChanges":"No changes yet","changelog.card.noChanges.tooltip":"No game changes have been extracted for this session yet.","changelog.card.bootstrapSummary":"Initial sync snapshot","changelog.card.bootstrapSummary.tooltip":"Initial file sync writes are collapsed into a single bootstrap snapshot row.","changelog.card.scripts":"scripts","changelog.card.scripts.tooltip":"Script changes made in this session.","changelog.card.instances":"instances","changelog.card.instances.tooltip":"Instance create, delete, move, or clone changes in this session.","changelog.card.modified":"modified","changelog.card.created":"created","changelog.card.deleted":"deleted","changelog.card.moved":"moved","changelog.card.propertiesChanged":"properties changed","changelog.card.propertiesChanged.tooltip":"Property value changes recorded for this session.","changelog.card.lightingConfigured":"Lighting configured","changelog.card.lightingConfigured.tooltip":"Lighting or atmosphere settings changed in this session.","changelog.card.terrainConfigured":"Terrain configured","changelog.card.terrainConfigured.tooltip":"Terrain data or terrain settings changed in this session.","changelog.card.assetsInserted":"assets inserted","changelog.card.assetsInserted.tooltip":"Assets inserted into the place during this session.","changelog.category.script":"Scripts","changelog.category.instance":"Instances","changelog.category.property":"Properties","changelog.category.lighting":"Lighting","changelog.category.terrain":"Terrain","changelog.category.asset":"Assets","changelog.detail.changeSummary":"Change Summary","changelog.detail.changeSummary.tooltip":"Counts of extracted game changes grouped by category for this session.","changelog.detail.changeTimeline":"Change Timeline","changelog.detail.changeTimeline.tooltip":"Chronological list of extracted game changes for this session.","changelog.detail.beforeAfter":"Before & After","changelog.detail.filterCategory":"Category","changelog.detail.filterCategory.tooltip":"Filter the timeline to a single change category.","changelog.detail.confidence.exact":"Exact","changelog.detail.confidence.exact.tooltip":"Both the before and after state were confirmed for this change.","changelog.detail.confidence.partial":"Partial","changelog.detail.confidence.partial.tooltip":"Only part of the before and after state could be confirmed for this change.","changelog.detail.confidence.afterOnly":"After only","changelog.detail.confidence.afterOnly.tooltip":"Only the resulting state after the change could be confirmed.","changelog.detail.confidence.intentOnly":"Intent only","changelog.detail.confidence.intentOnly.tooltip":"Only the requested action was recorded, not the resulting state.","changelog.detail.confidence.unknown":"Unknown","changelog.detail.confidence.unknown.tooltip":"This change could not be confidently classified from the available data.","changelog.detail.noChanges":"No changes in this category","changelog.detail.backToList":"Back to list","changelog.diff.empty":"No diff available","changelog.diff.unified":"Unified","changelog.diff.sideBySide":"Side by Side","changelog.diff.before":"Before","changelog.diff.after":"After","sync.overlay.title":"Roblox Studio plugin required","sync.overlay.message":"Sync status will be available once the Roblox Studio plugin connects.","sync.overlay.check1":"Is Roblox Studio running?","sync.overlay.check2":"Is the Weppy MCP plugin installed?","sync.overlay.check3":"Are HTTP Requests enabled in Studio settings?","sync.status.title":"Sync Status","sync.status.title.tooltip":"Current Studio and local file sync status for this place.","sync.status.forwardOnly":"Forward Only","sync.status.forwardOnly.tooltip":"Basic tier allows Studio to local forward sync only.","sync.status.place":"Place","sync.status.place.tooltip":"Connected Roblox place name and place ID.","sync.status.path":"Path","sync.status.path.tooltip":"Local filesystem root currently used for sync output.","sync.status.instances":"Instances","sync.status.instances.tooltip":"Total synced Roblox instances tracked in the local mirror.","sync.status.scripts":"Scripts","sync.status.scripts.tooltip":"Total synced script files currently indexed for this place.","sync.status.state":"State","sync.status.state.tooltip":"Current runtime sync state reported by the server.","sync.directions.title":"Sync Directions","sync.directions.title.tooltip":"Per-category sync direction and apply behavior between Local and Studio.","sync.directions.type":"Type","sync.directions.type.tooltip":"Sync category affected by this rule.","sync.directions.direction":"Direction","sync.directions.direction.tooltip":"Whether each category syncs from Studio, to Studio, or both ways.","sync.directions.applyMode":"Apply Mode","sync.directions.applyMode.tooltip":"How incoming sync changes are applied for this category.","sync.directions.cat.scripts":"Scripts","sync.directions.cat.values":"Values","sync.directions.cat.containers":"Containers","sync.directions.cat.data":"Data","sync.directions.cat.services":"Services","sync.directions.endpoint.local":"Local","sync.directions.endpoint.local.tooltip":"Local files on disk are always shown on the left side of the direction rail.","sync.directions.endpoint.studio":"Studio","sync.directions.endpoint.studio.tooltip":"Roblox Studio is always shown on the right side of the direction rail.","sync.directions.mode.manual":"Manual","sync.directions.mode.manual.tooltip":"Applies sync changes only when you trigger them manually.","sync.directions.mode.auto":"Auto","sync.directions.mode.auto.tooltip":"Applies sync changes automatically when updates arrive.","sync.directions.tooltip.forward.body":"Studio changes sync to local files only","sync.directions.tooltip.bidirectional.body":"Two-way sync between Local and Studio","sync.directions.tooltip.reverse.body":"Push local file changes to Studio","sync.directions.tooltip.proRequired":"Pro required in Basic tier","sync.directions.dir.forward":"forward","sync.directions.dir.bidirectional":"bidirectional","sync.directions.dir.reverse":"reverse","sync.config.title":"Sync Config","sync.config.maxDepth":"Max Depth","sync.config.maxInstances":"Max Instances","sync.config.dirLimit":"Dir Limit","sync.log.title":"Sync Log","sync.log.empty":"No sync events yet","sync.log.type.write":"WRITE","sync.log.type.write.tooltip":"A new sync output was written to disk.","sync.log.type.update":"UPDATE","sync.log.type.update.tooltip":"An existing synced file or instance was updated.","sync.log.type.delete":"DELETE","sync.log.type.delete.tooltip":"A synced file or instance was removed.","sync.log.type.idle":"IDLE","sync.log.type.idle.tooltip":"A sync event was recorded without a file mutation.","sync.upgrade.title":"Unlock Full Sync with Pro","sync.upgrade.benefit1":"Bidirectional sync — edit files, auto-apply to Studio","sync.upgrade.benefit2":"Reverse sync — push file changes back to Studio","sync.upgrade.benefit3":"Full sync history and detailed change log","sync.upgrade.buy":"Upgrade to Pro","playtest.status.title":"Playtest Status","playtest.status.title.tooltip":"Current Roblox playtest session state reported by Studio.","playtest.status.mode":"Mode","playtest.status.mode.tooltip":"Studio playtest launch mode for the current session.","playtest.status.mode.value.tooltip":"Specific Roblox Studio playtest mode currently in use.","playtest.status.mode.play":"Play","playtest.status.mode.run":"Run","playtest.status.mode.server":"Server","playtest.status.mode.edit":"Edit","playtest.status.place.tooltip":"Roblox place currently associated with this playtest session.","playtest.status.state.running":"Running","playtest.status.state.running.tooltip":"A Roblox playtest session is currently running.","playtest.status.state.paused":"Paused","playtest.status.state.paused.tooltip":"The current Roblox playtest session is paused.","playtest.status.state.notRunning":"Not Running","playtest.status.state.notRunning.tooltip":"No Roblox playtest session is currently running.","playtest.control.play":"Play","playtest.control.pause":"Pause","playtest.control.resume":"Resume","playtest.control.stop":"Stop","playtest.history.title":"Test History","playtest.history.title.tooltip":"Recorded automated playtest runs for this project.","playtest.history.empty":"No test results yet","playtest.history.mode":"Mode","playtest.history.mode.tooltip":"Playtest mode used for this recorded test run.","playtest.history.status.passed":"Passed","playtest.history.status.failed":"Failed","playtest.history.status.running":"Running","playtest.history.status.unknown":"Unknown","playtest.history.status.tooltip":"Recorded result state for this automated playtest run.","playtest.empty.title":"No playtest results yet","playtest.empty.message":"Test results will appear here when the AI agent runs automated tests via system_info.run_test.","playtest.empty.message.before":"Test results will appear here when the AI agent runs automated tests via","playtest.empty.message.after":".","playtest.empty.runTest.tooltip":"Dashboard automation entry point that runs Roblox playtest checks through the system_info tool.","playtest.report.title":"Selected Report","playtest.report.title.tooltip":"Detailed output for the currently selected automated playtest run.","playtest.report.content":"Report","playtest.report.content.tooltip":"Markdown summary for the selected automated playtest run.","playtest.report.logs":"Logs","playtest.report.logs.tooltip":"Execution logs captured for the selected automated playtest run.","playtest.report.empty":"No report content available","playtest.basic.icon":"🎮","playtest.basic.title":"Playtest is a Pro-only feature","playtest.basic.desc":"Control playtesting from the dashboard, run automated tests, and view detailed test reports.","playtest.basic.benefit1":"One-click play/pause/stop controls","playtest.basic.benefit2":"Automated test execution via AI agent","playtest.basic.benefit3":"Test history with pass/fail tracking","playtest.basic.benefit4":"Detailed markdown test reports"},Xm={"sidebar.overview":"개요","sidebar.changelog":"변경 이력","sidebar.connection":"연결","sidebar.sync":"동기화","sidebar.playtest":"플레이테스트","sidebar.tools":"도구","sidebar.settings":"설정","sidebar.gate.l1":"MCP 서버를 연결해야 이 페이지를 사용할 수 있습니다.","sidebar.gate.l2":"Roblox Studio 플러그인을 연결해야 이 페이지를 사용할 수 있습니다.","header.currentProject":"현재 프로젝트","header.unknownProject":"알 수 없는 프로젝트","header.placeNotConnected":"플레이스 미연결","header.currentProject.tooltip":"현재 선택된 프로젝트 폴더입니다.","header.place.tooltip":"연결된 Roblox 플레이스입니다.","header.placeNotConnected.tooltip":"플레이스 미연결","status.online":"온라인","status.offline":"오프라인","status.idle":"대기","status.syncing":"동기화 중","status.error":"오류","status.initializing":"초기화 중","level.l0.title":"MCP 서버 연결 끊김","level.l0.message":"대시보드가 열린 뒤 서버가 종료되었거나 응답하지 않습니다.","level.l1.title":"플러그인 미연결","level.l1.hint":"확인: Studio 실행 중? 플러그인 설치? HTTP 요청 활성화?","level.l2.ok":"모두 연결됨","tier.basic":"Basic","tier.basic.tooltip":"기본 대시보드 기능을 제공하는 Basic 티어입니다.","tier.pro":"Pro","tier.pro.tooltip":"전체 대시보드 기능을 제공하는 Pro 티어입니다.","tier.mixed":"혼합","tier.upgrade":"Pro로 업그레이드","tier.compare":"Basic vs Pro 비교","tier.banner.save":"Pro로 AI 토큰 절약!","tier.comparison.comingSoon":"Basic vs Pro 비교 — 준비 중","tier.comparison.close":"닫기","tier.comparison.detailTitle":"상세 도구 카탈로그","tier.comparison.description":"설명","tier.comparison.basic.core":"핵심 MCP 워크플로우","tier.comparison.basic.core.item1":"스크립트 생성/편집","tier.comparison.basic.core.item2":"인스턴스 관리","tier.comparison.basic.core.item3":"속성 제어","tier.comparison.basic.core.item4":"선택 및 검색","tier.comparison.basic.core.item5":"태그 관리","tier.comparison.basic.core.item6":"카메라 제어","tier.comparison.basic.core.item7":"로그 모니터링","tier.comparison.basic.sync":"동기화 (Basic)","tier.comparison.basic.sync.item1":"Studio에서 로컬로 단방향 동기화","tier.comparison.basic.sync.item2":"수동 적용이 기본값","tier.comparison.basic.sync.item3":"Pro 동기화 설정은 읽기 전용","tier.comparison.pro.all":"Basic의 모든 기능 포함, 추가로","tier.comparison.pro.sync":"고급 동기화 워크플로우","tier.comparison.pro.sync.item1":"유형별 동기화 방향 설정","tier.comparison.pro.sync.item2":"유형별 적용 모드","tier.comparison.pro.sync.item3":"양방향 및 역방향 동기화","tier.comparison.pro.sync.item4":"전체 동기화, 재동기화, Studio로 푸시","tier.comparison.pro.sync.item5":"멀티 플레이스 동기화","tier.comparison.pro.playtest":"플레이테스트 제어","tier.comparison.pro.playtest.item1":"플레이, 정지, 일시정지, 재개","tier.comparison.pro.playtest.item2":"플레이테스트 상태 검사","tier.comparison.pro.playtest.item3":"자동 테스트 실행","tier.comparison.pro.creation":"고급 생성 워크플로우","tier.comparison.pro.creation.item1":"대량 작업","tier.comparison.pro.creation.item2":"터레인 생성","tier.comparison.pro.creation.item3":"에셋 검색 및 삽입","tier.comparison.pro.creation.item4":"레이캐스트 및 공간 분석","tier.comparison.pro.creation.item5":"환경 제어","tier.tool.query_instances.desc":"인스턴스 조회, 자식/자손 탐색, 클래스 정보, 이름·클래스 검색. Pro: 파일 트리, 프로젝트 구조, 속성·태그 검색.","tier.tool.mutate_instances.desc":"인스턴스 생성, 삭제, 복제, 이동, 이름변경, 피벗. Pro: 트리 생성, 대량 생성·삭제·복제.","tier.tool.manage_properties.desc":"속성, 어트리뷰트, 태그 조회 및 설정. Pro: 계산·상대값 설정, 대량 조회·설정, 자식 일괄 수정.","tier.tool.manage_scripts.desc":"스크립트 소스 코드 읽기, 쓰기, 생성, 삭제, 줄 편집, 검색. Pro: 스크립트 간 일괄 치환.","tier.tool.manage_lighting.desc":"Pro 전용. 조명, 대기, 하늘, 터레인 속성, 시간대 환경 설정.","tier.tool.manage_selection.desc":"선택 조회, 설정, 해제. Pro: 컨텍스트, 상세 정보, 항목 추가·제거, 변경 감시.","tier.tool.manage_camera.desc":"카메라 정보 조회, 경로 또는 좌표로 포커스, 추천 뷰 제안.","tier.tool.manage_tween.desc":"Pro 전용. 부드러운 애니메이션을 위한 트윈 생성, 재생, 일시정지, 취소.","tier.tool.manage_audio.desc":"Pro 전용. 사운드 재생, 정지, 일시정지, 재개. 오디오 리스너 설정.","tier.tool.manage_animation.desc":"Pro 전용. 애니메이션 로드, 재생, 정지. 휴머노이드·컨트롤러의 트랙 조회.","tier.tool.manage_physics.desc":"Pro 전용. 물리 충돌 그룹 등록, 그룹 간 충돌 설정, 목록 조회.","tier.tool.manage_effects.desc":"Pro 전용. 파티클 방출, 전체 삭제, 이펙트 활성화 토글.","tier.tool.manage_terrain.desc":"Pro 전용. 도형 채우기, 영역 삭제, 재질 치환, 색상 관리, 복셀 읽기·쓰기, 절차적 생성, 스무딩.","tier.tool.spatial_query.desc":"Pro 전용. 레이캐스트, 지면 찾기, 배치 확인, 영역 스캔, 평지·스폰 위치 탐색, 보행 분석, 공간 맵, 충돌 확인.","tier.tool.manage_assets.desc":"Pro 전용. 모델 삽입, 에셋 정보 조회, 크리에이터 스토어 검색, 무료 모델·패키지 삽입, 내보내기.","tier.tool.manage_sync.desc":"Pro 전용. 동기화 상태, 설정, 히스토리, 방향 설정, 동기화 파일 읽기·쓰기.","tier.tool.workspace_state.desc":"Pro 전용. 전체 동기화, 스냅샷, 최근 변경, 뷰포트 정보, 메타데이터, 캐시 관리.","tier.tool.manage_logs.desc":"출력 로그 필터링 조회, 증분 폴링, 버퍼 삭제, 최근 오류 조회.","tier.tool.system_info.desc":"연결 상태, 사용 티어 확인. Pro: 플레이스 정보, 서비스 목록, Studio 설정, 플레이테스트 제어, 자동 테스트.","tier.tool.batch_execute.desc":"Pro 전용. 여러 명령을 한 번에 일괄 실행. 순차 처리하며 오류 시 계속 진행 옵션.","tier.tool.execute_luau.desc":"Pro 전용. Roblox Studio 샌드박스에서 임의 Luau 코드 실행.","connection.server.title":"서버 상태","connection.server.version":"버전","connection.server.version.tooltip":"설치된 MCP 서버 버전입니다.","connection.server.pid":"PID","connection.server.pid.tooltip":"운영체제에서 사용하는 프로세스 식별자입니다.","connection.server.uptime":"가동 시간","connection.server.uptime.tooltip":"MCP 서버가 시작된 뒤 경과한 시간입니다.","connection.server.session":"세션","connection.server.session.tooltip":"현재 MCP 세션 식별자입니다.","connection.server.exec":"실행 파일","connection.server.exec.tooltip":"MCP 서버를 실행한 실행 파일 경로입니다.","connection.reconnect":"수동 재연결","connection.checkSettings":"설정 확인","connection.agents.title":"AI 에이전트","connection.agents.name":"에이전트","connection.agents.cwd":"작업 디렉토리","connection.agents.cwd.tooltip":"연결된 AI 에이전트의 현재 작업 디렉토리입니다.","connection.agents.connected":"연결 시각","connection.agents.unknown":"알 수 없음","connection.agents.none":"연결된 에이전트 없음","connection.plugins.title":"플러그인","connection.plugins.place":"플레이스","connection.plugins.clientId":"클라이언트 ID","connection.plugins.clientId.tooltip":"현재 Studio 연결을 식별하는 플러그인 클라이언트 ID입니다.","connection.plugins.lastSeen":"마지막 확인","connection.plugins.lastSeen.tooltip":"플러그인에서 가장 최근에 수신한 heartbeat 시각입니다.","connection.plugins.version":"버전","connection.plugins.version.tooltip":"Studio가 보고한 설치된 플러그인 버전입니다.","connection.plugins.none":"연결된 플러그인 없음","connection.log.title":"연결 로그","connection.log.empty":"이벤트 없음","connection.time.secondsAgo":"초 전","connection.time.minutesAgo":"분 전","connection.time.hoursAgo":"시간 전","common.loading":"로딩 중...","common.retry":"재시도","common.reconnecting":"재연결 중...","common.expand":"펼치기","common.collapse":"접기","tools.tab.history":"히스토리","tools.tab.statistics":"통계","tools.tab.failures":"실패","tools.col.time":"시간","tools.col.time.tooltip":"도구 실행이 기록된 시각입니다.","tools.col.toolAction":"도구.액션","tools.col.toolAction.tooltip":"실행된 도구 이름과 액션입니다.","tools.col.duration":"소요 시간","tools.col.duration.tooltip":"도구 실행이 완료될 때까지 걸린 시간입니다.","tools.col.status":"상태","tools.col.status.tooltip":"기록된 도구 실행의 결과 상태입니다.","tools.col.tier":"티어","tools.col.tier.tooltip":"도구 또는 액션에 필요한 라이센스 티어입니다.","tools.col.tierStats.tooltip":"도구 통계 행이 Basic, Pro, Mixed 중 어느 집계인지 설명합니다.","tools.col.tool":"도구","tools.col.tool.tooltip":"통계 테이블에 표시되는 통합 도구 이름입니다.","tools.col.calls":"호출 수","tools.col.calls.tooltip":"이 도구에 대해 기록된 총 호출 횟수입니다.","tools.col.okRate":"성공률","tools.col.okRate.tooltip":"성공적으로 끝난 호출 비율입니다.","tools.col.avgTime":"평균 시간","tools.col.avgTime.tooltip":"기록된 호출들의 평균 실행 시간입니다.","tools.col.error":"오류","tools.filter.tool":"도구","tools.filter.all":"전체","tools.badge.pro":"PRO","tools.badge.pro.tooltip":"이 항목은 Pro 전용 도구 또는 액션을 사용했습니다.","tools.status.ok":"OK","tools.status.ok.tooltip":"도구 실행이 성공적으로 완료되었습니다.","tools.tier.mixed.tooltip":"이 도구에는 Basic 액션과 Pro 액션이 함께 포함됩니다.","tools.detail.params":"파라미터","tools.detail.params.tooltip":"이 도구 실행에 전달된 입력 파라미터입니다.","tools.detail.result":"결과","tools.detail.result.tooltip":"이 도구 실행에서 반환된 결과 페이로드입니다.","tools.detail.error":"오류","tools.page.prev":"이전","tools.page.prev.tooltip":"도구 히스토리의 이전 페이지로 이동합니다.","tools.page.next":"다음","tools.page.next.tooltip":"도구 히스토리의 다음 페이지로 이동합니다.","tools.empty.history":"히스토리 없음","tools.empty.stats":"도구 통계 없음","tools.empty.failures":"실패 없음","tools.summary.total":"합계","tools.summary.calls":"호출","tools.summary.sessions":"세션","settings.license.title":"라이센스","settings.license.title.tooltip":"현재 라이센스 상태와 구독 티어입니다.","settings.license.status":"상태","settings.license.status.tooltip":"현재 라이센스 활성화 상태입니다.","settings.license.tier":"티어","settings.license.tier.tooltip":"대시보드 기능 범위를 결정하는 현재 구독 티어입니다.","settings.license.key":"키","settings.license.key.tooltip":"서버에 현재 로드된 마스킹된 라이센스 키입니다.","settings.license.keyValue.tooltip":"서버에 현재 로드된 마스킹된 라이센스 키입니다.","settings.license.provider":"제공자","settings.license.provider.tooltip":"이 키를 검증하는 라이센스 제공자입니다.","settings.license.providerValue.tooltip":"이 키를 검증하는 라이센스 제공자입니다.","settings.license.active":"활성","settings.license.active.tooltip":"현재 라이센스 활성화 상태입니다.","settings.license.inactive":"비활성","settings.license.inactive.tooltip":"현재 라이센스 활성화 상태입니다.","settings.license.expired":"만료","settings.license.expired.tooltip":"현재 라이센스 활성화 상태입니다.","settings.license.unavailable":"라이센스 정보를 불러올 수 없음","settings.readOnly":"읽기 전용","settings.readOnly.tooltip":"이 섹션의 값은 대시보드에서 수정할 수 없습니다.","settings.unavailable":"설정을 불러올 수 없음","settings.general.title":"일반 설정","settings.general.title.tooltip":"변경 즉시 적용되는 Hot 설정입니다.","settings.general.liveApply":"즉시 반영","settings.general.liveApply.tooltip":"이 섹션의 변경은 별도 저장 버튼 없이 바로 적용됩니다.","settings.general.applied":"적용됨","settings.general.logLevel":"로그 레벨","settings.general.logLevel.tooltip":"대시보드 로그에 남길 상세 수준을 설정합니다.","settings.general.localHistory":"도구 히스토리 기록","settings.general.localHistory.tooltip":"대시보드 히스토리 화면용 로컬 도구 실행 기록을 저장합니다.","settings.general.localStatistics":"도구 통계 집계","settings.general.localStatistics.tooltip":"대시보드 보고용 로컬 사용 통계를 집계합니다.","settings.general.requestTimeout":"요청 타임아웃","settings.general.requestTimeout.tooltip":"요청을 실패로 처리하기 전까지 대시보드가 기다리는 최대 시간입니다.","settings.general.requestTimeout.unit":"ms","settings.general.requestTimeout.unit.tooltip":"요청 타임아웃 단위는 밀리초입니다.","settings.cold.title":"서버 환경변수","settings.cold.title.tooltip":"서버 시작 시 로드되는 읽기 전용 환경변수 값입니다.","settings.cold.httpPort.tooltip":"MCP 대시보드 HTTP 서버가 사용하는 포트 번호입니다.","settings.cold.httpHost.tooltip":"MCP 대시보드 HTTP 서버가 바인딩하는 호스트 인터페이스입니다.","settings.cold.dashboardAutoOpen.tooltip":"서버 시작 시 브라우저에서 대시보드를 자동으로 열지 여부를 제어합니다.","settings.cold.dashboardAutoOpen.value.tooltip":"브라우저 자동 열기 현재 시작 동작입니다.","settings.cold.hint":"환경변수로 설정하세요.","settings.sync.title":"Sync 설정","settings.sync.title.tooltip":"프로젝트 파일 인덱싱과 탐색에 사용하는 Sync 제한값입니다.","settings.sync.maxDepth":"Max Depth","settings.sync.maxDepth.tooltip":"Sync 스캐너가 탐색할 최대 폴더 깊이입니다.","settings.sync.maxInstances":"Max Instances","settings.sync.maxInstances.tooltip":"Sync 중 인덱싱할 Roblox 인스턴스 최대 개수입니다.","settings.sync.save":"저장","settings.language.title":"언어","settings.language.title.tooltip":"대시보드 UI 텍스트에 사용할 언어를 선택합니다.","settings.language.dashboard":"대시보드 언어","settings.language.dashboard.tooltip":"Auto일 때는 시스템 언어를 따르고, 아니면 선택한 언어를 강제합니다.","settings.language.auto":"자동","overview.l0.title":"MCP 서버 연결 끊김","overview.l0.message":"MCP 서버가 응답하지 않습니다. 대시보드가 자동으로 재연결을 시도합니다.","overview.l0.step1":"MCP 서버 프로세스가 실행 중인지 확인하세요","overview.l0.step2":"필요 시 MCP 서버 명령을 다시 시작하세요","overview.l0.reconnecting":"3초마다 자동 재연결 중...","overview.l0.reconnectBtn":"수동 재연결","overview.l0.settingsBtn":"설정 확인","overview.l1.pluginGuide":"Roblox Studio 플러그인이 연결되지 않았습니다","overview.l1.check1":"Roblox Studio가 실행 중인가요?","overview.l1.check2":"Weppy MCP 플러그인이 설치되어 있나요?","overview.l1.check3":"Studio 설정에서 HTTP 요청이 활성화되어 있나요?","overview.l1.feedHint":"플러그인이 연결되면 변경사항이 표시됩니다","overview.metric.server":"서버","overview.metric.server.tooltip":"MCP 서버의 실행 상태와 프로세스 상태입니다.","overview.metric.plugin":"플러그인","overview.metric.plugin.tooltip":"Roblox Studio 플러그인의 연결 상태와 버전 정보입니다.","overview.metric.agent":"에이전트","overview.metric.agent.tooltip":"연결된 AI 코딩 에이전트와 현재 실행 상태입니다.","overview.metric.agent.instancesUnit":"인스턴스","overview.metric.sync":"동기화","overview.metric.sync.tooltip":"현재 Studio와 로컬 파일 간 동기화 상태입니다.","overview.metric.noAgent":"에이전트 없음","overview.meta.version":"버전","overview.meta.version.tooltip":"설치된 MCP 서버 버전입니다.","overview.meta.session":"세션","overview.meta.session.tooltip":"현재 MCP 세션 식별자입니다.","overview.meta.pid":"PID","overview.meta.pid.tooltip":"운영체제에서 사용하는 프로세스 식별자입니다.","overview.meta.uptime":"가동 시간","overview.meta.uptime.tooltip":"MCP 서버가 시작된 뒤 경과한 시간입니다.","overview.feed.title":"최근 게임 변경","overview.feed.empty":"최근 변경사항 없음","overview.changelog.title":"세션 변경 요약","overview.changelog.entries":"합계","overview.changelog.scripts":"스크립트","overview.changelog.instances":"인스턴스","overview.changelog.properties":"속성","overview.changelog.assets":"에셋","overview.tier.title":"티어 사용 현황","changelog.subtitle":"게임 변경 이력","changelog.filter.all":"전체","changelog.filter.active":"활성","changelog.filter.completed":"완료","changelog.empty":"변경 이력이 없습니다","changelog.card.active":"활성","changelog.card.active.tooltip":"이 세션은 아직 새 게임 변경을 계속 수집 중입니다.","changelog.card.completed":"완료","changelog.card.completed.tooltip":"이 세션은 종료되어 더 이상 새 변경이 추가되지 않습니다.","changelog.card.bootstrapStatus":"초기화","changelog.card.bootstrapStatus.tooltip":"이 세션에는 초기 동기화 부트스트랩 스냅샷만 포함됩니다.","changelog.card.inProgress":"진행 중","changelog.card.noChanges":"아직 변경사항 없음","changelog.card.noChanges.tooltip":"이 세션에서는 아직 추출된 게임 변경이 없습니다.","changelog.card.bootstrapSummary":"초기 동기화 스냅샷","changelog.card.bootstrapSummary.tooltip":"초기 파일 동기화 쓰기 작업은 하나의 부트스트랩 스냅샷 행으로 축약됩니다.","changelog.card.scripts":"스크립트","changelog.card.scripts.tooltip":"이 세션에서 발생한 스크립트 변경입니다.","changelog.card.instances":"인스턴스","changelog.card.instances.tooltip":"이 세션에서 발생한 인스턴스 생성, 삭제, 이동, 복제 변경입니다.","changelog.card.modified":"수정","changelog.card.created":"생성","changelog.card.deleted":"삭제","changelog.card.moved":"이동","changelog.card.propertiesChanged":"속성 변경","changelog.card.propertiesChanged.tooltip":"이 세션에서 기록된 속성 값 변경입니다.","changelog.card.lightingConfigured":"라이팅 설정됨","changelog.card.lightingConfigured.tooltip":"이 세션에서 라이팅 또는 대기 설정이 변경되었습니다.","changelog.card.terrainConfigured":"터레인 설정됨","changelog.card.terrainConfigured.tooltip":"이 세션에서 터레인 데이터 또는 터레인 설정이 변경되었습니다.","changelog.card.assetsInserted":"에셋 삽입","changelog.card.assetsInserted.tooltip":"이 세션 동안 플레이스에 삽입된 에셋입니다.","changelog.category.script":"스크립트","changelog.category.instance":"인스턴스","changelog.category.property":"속성","changelog.category.lighting":"라이팅","changelog.category.terrain":"터레인","changelog.category.asset":"에셋","changelog.detail.changeSummary":"변경 요약","changelog.detail.changeSummary.tooltip":"이 세션에서 추출된 게임 변경 수를 카테고리별로 묶어서 보여줍니다.","changelog.detail.changeTimeline":"변경 타임라인","changelog.detail.changeTimeline.tooltip":"이 세션에서 추출된 게임 변경을 시간순으로 보여줍니다.","changelog.detail.beforeAfter":"변경 전후 비교","changelog.detail.filterCategory":"카테고리","changelog.detail.filterCategory.tooltip":"타임라인을 하나의 변경 카테고리만 보이도록 필터링합니다.","changelog.detail.confidence.exact":"정확","changelog.detail.confidence.exact.tooltip":"이 변경은 변경 전과 변경 후 상태가 모두 확인되었습니다.","changelog.detail.confidence.partial":"부분 확인","changelog.detail.confidence.partial.tooltip":"이 변경은 변경 전후 상태 중 일부만 확인되었습니다.","changelog.detail.confidence.afterOnly":"결과만 확인","changelog.detail.confidence.afterOnly.tooltip":"이 변경은 적용 후 결과 상태만 확인되었습니다.","changelog.detail.confidence.intentOnly":"의도만 기록","changelog.detail.confidence.intentOnly.tooltip":"요청된 작업 의도만 기록되었고 결과 상태는 확인되지 않았습니다.","changelog.detail.confidence.unknown":"알 수 없음","changelog.detail.confidence.unknown.tooltip":"사용 가능한 데이터만으로는 이 변경을 신뢰도 있게 분류할 수 없습니다.","changelog.detail.noChanges":"이 카테고리에 변경사항 없음","changelog.detail.backToList":"목록으로 돌아가기","changelog.diff.empty":"비교할 내용 없음","changelog.diff.unified":"통합","changelog.diff.sideBySide":"나란히 비교","changelog.diff.before":"변경 전","changelog.diff.after":"변경 후","sync.overlay.title":"Roblox Studio 플러그인이 필요합니다","sync.overlay.message":"Roblox Studio 플러그인이 연결되면 동기화 상태를 확인할 수 있습니다.","sync.overlay.check1":"Roblox Studio가 실행 중인가요?","sync.overlay.check2":"Weppy MCP 플러그인이 설치되어 있나요?","sync.overlay.check3":"Studio 설정에서 HTTP 요청이 활성화되어 있나요?","sync.status.title":"동기화 상태","sync.status.title.tooltip":"이 플레이스의 Studio와 로컬 파일 동기화 상태입니다.","sync.status.forwardOnly":"단방향만","sync.status.forwardOnly.tooltip":"Basic 티어에서는 Studio에서 로컬로 가는 단방향 동기화만 사용할 수 있습니다.","sync.status.place":"플레이스","sync.status.place.tooltip":"연결된 Roblox 플레이스 이름과 플레이스 ID입니다.","sync.status.path":"경로","sync.status.path.tooltip":"현재 동기화 출력에 사용하는 로컬 파일 시스템 루트입니다.","sync.status.instances":"인스턴스","sync.status.instances.tooltip":"로컬 미러에 추적 중인 동기화된 Roblox 인스턴스 수입니다.","sync.status.scripts":"스크립트","sync.status.scripts.tooltip":"이 플레이스에 대해 현재 인덱싱된 동기화 스크립트 파일 수입니다.","sync.status.state":"상태","sync.status.state.tooltip":"서버가 보고한 현재 동기화 런타임 상태입니다.","sync.directions.title":"동기화 방향","sync.directions.title.tooltip":"Local과 Studio 사이의 카테고리별 동기화 방향과 적용 방식입니다.","sync.directions.type":"유형","sync.directions.type.tooltip":"이 규칙이 적용되는 동기화 카테고리입니다.","sync.directions.direction":"방향","sync.directions.direction.tooltip":"각 카테고리가 Studio에서만, Studio로만, 또는 양방향으로 동기화되는지 나타냅니다.","sync.directions.applyMode":"적용 모드","sync.directions.applyMode.tooltip":"이 카테고리에 들어오는 동기화 변경을 적용하는 방식입니다.","sync.directions.cat.scripts":"스크립트","sync.directions.cat.values":"값","sync.directions.cat.containers":"컨테이너","sync.directions.cat.data":"데이터","sync.directions.cat.services":"서비스","sync.directions.endpoint.local":"Local","sync.directions.endpoint.local.tooltip":"방향 레일의 왼쪽은 항상 디스크의 로컬 파일을 의미합니다.","sync.directions.endpoint.studio":"Studio","sync.directions.endpoint.studio.tooltip":"방향 레일의 오른쪽은 항상 Roblox Studio를 의미합니다.","sync.directions.mode.manual":"수동","sync.directions.mode.manual.tooltip":"직접 실행할 때만 동기화 변경을 적용합니다.","sync.directions.mode.auto":"자동","sync.directions.mode.auto.tooltip":"업데이트가 들어오면 동기화 변경을 자동으로 적용합니다.","sync.directions.tooltip.forward.body":"Studio 변경 사항을 로컬 파일로만 동기화합니다","sync.directions.tooltip.bidirectional.body":"Local과 Studio 사이에 양방향 동기화를 사용합니다","sync.directions.tooltip.reverse.body":"로컬 파일 변경 사항을 Studio로 푸시합니다","sync.directions.tooltip.proRequired":"Basic 티어에서는 Pro가 필요합니다","sync.directions.dir.forward":"순방향","sync.directions.dir.bidirectional":"양방향","sync.directions.dir.reverse":"역방향","sync.config.title":"동기화 설정","sync.config.maxDepth":"최대 깊이","sync.config.maxInstances":"최대 인스턴스","sync.config.dirLimit":"디렉토리 제한","sync.log.title":"동기화 로그","sync.log.empty":"동기화 이벤트 없음","sync.log.type.write":"쓰기","sync.log.type.write.tooltip":"새 동기화 출력이 디스크에 기록되었습니다.","sync.log.type.update":"업데이트","sync.log.type.update.tooltip":"기존 동기화 파일 또는 인스턴스가 갱신되었습니다.","sync.log.type.delete":"삭제","sync.log.type.delete.tooltip":"동기화된 파일 또는 인스턴스가 제거되었습니다.","sync.log.type.idle":"대기","sync.log.type.idle.tooltip":"파일 변경 없이 동기화 이벤트만 기록되었습니다.","sync.upgrade.title":"Pro로 완전한 동기화 기능 해제","sync.upgrade.benefit1":"양방향 동기화 — 파일 편집 시 Studio에 자동 반영","sync.upgrade.benefit2":"역방향 동기화 — 파일 변경을 Studio로 전송","sync.upgrade.benefit3":"전체 동기화 히스토리 및 상세 변경 로그","sync.upgrade.buy":"Pro로 업그레이드","playtest.status.title":"플레이테스트 상태","playtest.status.title.tooltip":"Studio가 보고한 현재 Roblox 플레이테스트 세션 상태입니다.","playtest.status.mode":"모드","playtest.status.mode.tooltip":"현재 세션에 사용 중인 Studio 플레이테스트 실행 모드입니다.","playtest.status.mode.value.tooltip":"현재 적용 중인 Roblox Studio 플레이테스트 모드의 구체적인 값입니다.","playtest.status.mode.play":"플레이","playtest.status.mode.run":"실행","playtest.status.mode.server":"서버","playtest.status.mode.edit":"편집","playtest.status.place.tooltip":"이 플레이테스트 세션과 연결된 Roblox 플레이스입니다.","playtest.status.state.running":"실행 중","playtest.status.state.running.tooltip":"현재 Roblox 플레이테스트 세션이 실행 중입니다.","playtest.status.state.paused":"일시정지","playtest.status.state.paused.tooltip":"현재 Roblox 플레이테스트 세션이 일시정지 상태입니다.","playtest.status.state.notRunning":"실행 안 함","playtest.status.state.notRunning.tooltip":"현재 실행 중인 Roblox 플레이테스트 세션이 없습니다.","playtest.control.play":"플레이","playtest.control.pause":"일시정지","playtest.control.resume":"재개","playtest.control.stop":"정지","playtest.history.title":"테스트 히스토리","playtest.history.title.tooltip":"이 프로젝트에서 기록된 자동 플레이테스트 실행 이력입니다.","playtest.history.empty":"테스트 결과 없음","playtest.history.mode":"모드","playtest.history.mode.tooltip":"이 기록된 테스트 실행에 사용된 플레이테스트 모드입니다.","playtest.history.status.passed":"성공","playtest.history.status.failed":"실패","playtest.history.status.running":"실행 중","playtest.history.status.unknown":"알 수 없음","playtest.history.status.tooltip":"이 자동 플레이테스트 실행의 기록된 결과 상태입니다.","playtest.empty.title":"아직 플레이테스트 결과가 없습니다","playtest.empty.message":"AI 에이전트가 system_info.run_test로 자동 테스트를 실행하면 결과가 표시됩니다.","playtest.empty.message.before":"AI 에이전트가 자동 테스트를","playtest.empty.message.after":"로 실행하면 결과가 여기에 표시됩니다.","playtest.empty.runTest.tooltip":"system_info 도구를 통해 Roblox 플레이테스트 검사를 실행하는 대시보드 자동화 진입점입니다.","playtest.report.title":"선택된 리포트","playtest.report.title.tooltip":"현재 선택된 자동 플레이테스트 실행의 상세 출력입니다.","playtest.report.content":"리포트","playtest.report.content.tooltip":"선택된 자동 플레이테스트 실행의 마크다운 요약입니다.","playtest.report.logs":"로그","playtest.report.logs.tooltip":"선택된 자동 플레이테스트 실행에서 수집된 실행 로그입니다.","playtest.report.empty":"리포트 내용 없음","playtest.basic.icon":"🎮","playtest.basic.title":"플레이테스트는 Pro 전용 기능입니다","playtest.basic.desc":"대시보드에서 플레이테스트를 제어하고, 자동 테스트를 실행하며, 상세한 테스트 리포트를 확인하세요.","playtest.basic.benefit1":"원클릭 플레이/일시정지/정지 제어","playtest.basic.benefit2":"AI 에이전트를 통한 자동 테스트 실행","playtest.basic.benefit3":"성공/실패 추적이 가능한 테스트 히스토리","playtest.basic.benefit4":"상세한 마크다운 테스트 리포트"},Zm={"sidebar.overview":"Resumen","sidebar.changelog":"Historial","sidebar.connection":"Conexión","sidebar.sync":"Sincronización","sidebar.playtest":"Prueba","sidebar.tools":"Herramientas","sidebar.settings":"Configuración","header.currentProject":"Proyecto actual","header.unknownProject":"Proyecto desconocido","header.placeNotConnected":"Place no conectado","header.currentProject.tooltip":"Carpeta de proyecto seleccionada actualmente.","header.place.tooltip":"Place de Roblox conectado.","header.placeNotConnected.tooltip":"Place no conectado","sidebar.gate.l1":"Se requiere conexión con el servidor MCP.","sidebar.gate.l2":"Se requiere conexión con el plugin de Roblox Studio.","status.online":"En línea","status.offline":"Desconectado","status.idle":"Inactivo","status.syncing":"Sincronizando","status.error":"Error","status.initializing":"Inicializando","level.l0.title":"Servidor MCP desconectado","level.l0.message":"El dashboard está abierto pero el servidor MCP se detuvo o no responde.","level.l1.title":"Plugin no conectado","level.l1.hint":"Verifica: ¿Roblox Studio está abierto? ¿El plugin está instalado? ¿Las solicitudes HTTP están habilitadas?","level.l2.ok":"Todo conectado","tier.basic":"Basic","tier.basic.tooltip":"Nivel Basic con el conjunto estándar de funciones del dashboard.","tier.pro":"Pro","tier.pro.tooltip":"Nivel Pro con el conjunto completo de funciones del dashboard.","tier.mixed":"Mixto","tier.upgrade":"Actualizar a Pro","tier.compare":"Basic vs Pro","tier.banner.save":"¡Ahorra tokens de IA con Pro!","tier.comparison.comingSoon":"Comparación Basic vs Pro — próximamente","tier.comparison.close":"Cerrar","tier.comparison.detailTitle":"Catálogo detallado de herramientas","tier.comparison.description":"Descripción","tier.comparison.basic.core":"Flujo MCP básico","tier.comparison.basic.core.item1":"Crear/editar scripts","tier.comparison.basic.core.item2":"Gestión de instancias","tier.comparison.basic.core.item3":"Control de propiedades","tier.comparison.basic.core.item4":"Selección y búsqueda","tier.comparison.basic.core.item5":"Gestión de etiquetas","tier.comparison.basic.core.item6":"Control de cámara","tier.comparison.basic.core.item7":"Monitoreo de registros","tier.comparison.basic.sync":"Sincronización (Basic)","tier.comparison.basic.sync.item1":"Sincronización unidireccional de Studio a local","tier.comparison.basic.sync.item2":"Aplicación manual por defecto","tier.comparison.basic.sync.item3":"Configuración de sincronización Pro en solo lectura","tier.comparison.pro.all":"Todo en Basic, además","tier.comparison.pro.sync":"Flujo de sincronización avanzado","tier.comparison.pro.sync.item1":"Dirección de sincronización por tipo","tier.comparison.pro.sync.item2":"Modo de aplicación por tipo","tier.comparison.pro.sync.item3":"Sincronización bidireccional e inversa","tier.comparison.pro.sync.item4":"Sincronización completa, resincronización y envío a Studio","tier.comparison.pro.sync.item5":"Sincronización multi-lugar","tier.comparison.pro.playtest":"Control de playtest","tier.comparison.pro.playtest.item1":"Reproducir, detener, pausar y reanudar","tier.comparison.pro.playtest.item2":"Inspección del estado de playtest","tier.comparison.pro.playtest.item3":"Ejecución de pruebas automatizadas","tier.comparison.pro.creation":"Flujo de creación avanzado","tier.comparison.pro.creation.item1":"Operaciones masivas","tier.comparison.pro.creation.item2":"Generación de terreno","tier.comparison.pro.creation.item3":"Búsqueda e inserción de assets","tier.comparison.pro.creation.item4":"Raycast y análisis espacial","tier.comparison.pro.creation.item5":"Control de entorno","tier.tool.query_instances.desc":"Consulta de instancias, exploración de hijos/descendientes, info de clase, búsqueda por nombre y clase. Pro: árbol de archivos, estructura del proyecto, búsqueda por propiedad y etiqueta.","tier.tool.mutate_instances.desc":"Crear, eliminar, clonar, mover, renombrar y pivotar instancias. Pro: creación de árboles, creación/eliminación/duplicación masiva.","tier.tool.manage_properties.desc":"Consultar y establecer propiedades, atributos y etiquetas. Pro: valores calculados y relativos, consulta/establecimiento masivo, modificación masiva de hijos.","tier.tool.manage_scripts.desc":"Leer, escribir, crear, eliminar, editar líneas y buscar en scripts. Pro: reemplazo masivo entre scripts.","tier.tool.manage_lighting.desc":"Solo Pro. Configuración de iluminación, atmósfera, cielo, propiedades del terreno y hora del día.","tier.tool.manage_selection.desc":"Consultar, establecer y borrar selección. Pro: contexto, detalles, agregar/quitar elementos, monitorear cambios.","tier.tool.manage_camera.desc":"Info de cámara, enfocar por ruta o coordenadas, vista sugerida.","tier.tool.manage_tween.desc":"Solo Pro. Crear, reproducir, pausar y cancelar tweens para animaciones suaves.","tier.tool.manage_audio.desc":"Solo Pro. Reproducir, detener, pausar y reanudar sonidos. Configurar listener de audio.","tier.tool.manage_animation.desc":"Solo Pro. Cargar, reproducir y detener animaciones. Consultar tracks de humanoide/controlador.","tier.tool.manage_physics.desc":"Solo Pro. Registrar grupos de colisión, configurar colisión entre grupos, listar grupos.","tier.tool.manage_effects.desc":"Solo Pro. Emitir partículas, borrar todas, alternar activación de efectos.","tier.tool.manage_terrain.desc":"Solo Pro. Rellenar formas, borrar regiones, reemplazar materiales, gestionar colores, leer/escribir voxels, generación procedural, suavizado.","tier.tool.spatial_query.desc":"Solo Pro. Raycast, buscar suelo, verificar colocación, escaneo de área, buscar zonas planas y puntos de aparición, análisis de caminabilidad, mapa espacial, detección de colisión.","tier.tool.manage_assets.desc":"Solo Pro. Insertar modelos, consultar info de assets, buscar en tienda de creadores, insertar modelos/paquetes gratuitos, exportar.","tier.tool.manage_sync.desc":"Solo Pro. Estado de sincronización, configuración, historial, dirección, lectura/escritura de archivos sincronizados.","tier.tool.workspace_state.desc":"Solo Pro. Sincronización completa, instantánea, cambios recientes, info de viewport, metadatos, gestión de caché.","tier.tool.manage_logs.desc":"Consulta filtrada de registros, sondeo incremental, borrar buffer, consulta de errores recientes.","tier.tool.system_info.desc":"Estado de conexión, verificación de tier. Pro: info de lugar, lista de servicios, configuración de Studio, control de playtest, pruebas automáticas.","tier.tool.batch_execute.desc":"Solo Pro. Ejecutar múltiples comandos en lote. Procesamiento secuencial con opción de continuar en caso de error.","tier.tool.execute_luau.desc":"Solo Pro. Ejecutar código Luau arbitrario en el sandbox de Roblox Studio.","connection.server.title":"Estado del servidor","connection.server.version":"Versión","connection.server.version.tooltip":"Versión instalada del servidor MCP.","connection.server.pid":"PID","connection.server.pid.tooltip":"Identificador de proceso del sistema operativo.","connection.server.uptime":"Tiempo activo","connection.server.uptime.tooltip":"Tiempo transcurrido desde que se inició el servidor MCP.","connection.server.session":"Sesión","connection.server.session.tooltip":"Identificador de la sesión MCP actual.","connection.server.exec":"Ejecutable","connection.server.exec.tooltip":"Ruta del ejecutable usado para iniciar el servidor MCP.","connection.reconnect":"Reconectar","connection.checkSettings":"Verificar configuración","connection.agents.title":"Agentes IA","connection.agents.name":"Agente","connection.agents.cwd":"Directorio","connection.agents.cwd.tooltip":"Directorio de trabajo actual del agente de IA conectado.","connection.agents.connected":"Conectado","connection.agents.unknown":"Desconocido","connection.agents.none":"Sin agentes conectados","connection.plugins.title":"Plugins","connection.plugins.place":"Place","connection.plugins.clientId":"ID de cliente","connection.plugins.clientId.tooltip":"Identificador único del cliente del plugin para esta conexión de Studio.","connection.plugins.lastSeen":"Última vez","connection.plugins.lastSeen.tooltip":"Heartbeat más reciente recibido desde el plugin.","connection.plugins.version":"Ver","connection.plugins.version.tooltip":"Versión instalada del plugin informada por Studio.","connection.plugins.none":"Sin plugins conectados","connection.log.title":"Registro de conexión","connection.log.empty":"Sin eventos","connection.time.secondsAgo":"s atrás","connection.time.minutesAgo":"min atrás","connection.time.hoursAgo":"h atrás","common.loading":"Cargando...","common.retry":"Reintentar","common.reconnecting":"Reconectando...","common.expand":"Expandir","common.collapse":"Contraer","tools.tab.history":"Historial","tools.tab.statistics":"Estadísticas","tools.tab.failures":"Fallos","tools.col.time":"Hora","tools.col.time.tooltip":"Momento en que se registró la ejecución de la herramienta.","tools.col.toolAction":"Herramienta.Acción","tools.col.toolAction.tooltip":"Nombre de la herramienta y acción que se ejecutó.","tools.col.duration":"Duración","tools.col.duration.tooltip":"Cuánto tardó la herramienta en finalizar.","tools.col.status":"Estado","tools.col.status.tooltip":"Resultado de la ejecución registrada.","tools.col.tier":"Nivel","tools.col.tier.tooltip":"Nivel de licencia requerido para la herramienta o acción.","tools.col.tierStats.tooltip":"Resumen Basic, Pro o Mixed para esta fila de estadísticas de herramientas.","tools.col.tool":"Herramienta","tools.col.tool.tooltip":"Nombre de la herramienta consolidada en la tabla de estadísticas.","tools.col.calls":"Llamadas","tools.col.calls.tooltip":"Número total de llamadas registradas para esta herramienta.","tools.col.okRate":"% Éxito","tools.col.okRate.tooltip":"Porcentaje de llamadas que terminaron correctamente.","tools.col.avgTime":"Tiempo promedio","tools.col.avgTime.tooltip":"Tiempo promedio de ejecución entre las llamadas registradas.","tools.col.error":"Error","tools.filter.tool":"Herramienta","tools.filter.all":"Todos","tools.badge.pro":"PRO","tools.badge.pro.tooltip":"Esta entrada usó una herramienta o acción exclusiva de Pro.","tools.status.ok":"OK","tools.status.ok.tooltip":"La ejecución de la herramienta finalizó correctamente.","tools.tier.mixed.tooltip":"Esta herramienta incluye acciones Basic y Pro.","tools.detail.params":"Parámetros","tools.detail.params.tooltip":"Parámetros de entrada enviados en esta ejecución.","tools.detail.result":"Resultado","tools.detail.result.tooltip":"Carga útil devuelta por esta ejecución.","tools.detail.error":"Error","tools.page.prev":"Anterior","tools.page.prev.tooltip":"Ir a la página anterior del historial de herramientas.","tools.page.next":"Siguiente","tools.page.next.tooltip":"Ir a la página siguiente del historial de herramientas.","tools.empty.history":"Sin entradas de historial","tools.empty.stats":"Sin estadísticas","tools.empty.failures":"Sin fallos","tools.summary.total":"Total","tools.summary.calls":"llamadas","tools.summary.sessions":"Sesiones","settings.license.title":"Licencia","settings.license.title.tooltip":"Estado actual de la licencia y nivel de suscripción.","settings.license.status":"Estado","settings.license.status.tooltip":"Estado actual de activación de la licencia.","settings.license.tier":"Nivel","settings.license.tier.tooltip":"Nivel de suscripción actual para las funciones disponibles del dashboard.","settings.license.key":"Clave","settings.license.key.tooltip":"Clave de licencia enmascarada cargada actualmente por el servidor.","settings.license.keyValue.tooltip":"Clave de licencia enmascarada cargada actualmente por el servidor.","settings.license.provider":"Proveedor","settings.license.provider.tooltip":"Proveedor de licencia usado para validar esta clave.","settings.license.providerValue.tooltip":"Proveedor de licencia usado para validar esta clave.","settings.license.active":"Activa","settings.license.active.tooltip":"Estado actual de activación de la licencia.","settings.license.inactive":"Inactiva","settings.license.inactive.tooltip":"Estado actual de activación de la licencia.","settings.license.expired":"Expirada","settings.license.expired.tooltip":"Estado actual de activación de la licencia.","settings.license.unavailable":"Información de licencia no disponible","settings.readOnly":"Solo lectura","settings.readOnly.tooltip":"Esta sección muestra valores que no se pueden editar desde el dashboard.","settings.unavailable":"Configuración no disponible","settings.general.title":"Configuración general","settings.general.title.tooltip":"Ajustes calientes que se aplican inmediatamente al cambiarse.","settings.general.liveApply":"Aplicar en vivo","settings.general.liveApply.tooltip":"Los cambios en esta sección se aplican al instante sin un botón de guardar aparte.","settings.general.applied":"Aplicado","settings.general.logLevel":"Nivel de log","settings.general.logLevel.tooltip":"Define cuánto detalle escribe el dashboard en sus registros.","settings.general.localHistory":"Registro de historial","settings.general.localHistory.tooltip":"Guarda el historial local de ejecución de herramientas para las vistas de historial del dashboard.","settings.general.localStatistics":"Recopilación de estadísticas","settings.general.localStatistics.tooltip":"Agrega estadísticas locales de uso para los informes del dashboard.","settings.general.requestTimeout":"Tiempo de espera","settings.general.requestTimeout.tooltip":"Tiempo máximo que el dashboard espera una solicitud antes de marcarla como fallida.","settings.general.requestTimeout.unit":"ms","settings.general.requestTimeout.unit.tooltip":"El tiempo de espera de la solicitud se mide en milisegundos.","settings.cold.title":"Entorno del servidor","settings.cold.title.tooltip":"Valores de entorno del servidor de solo lectura cargados al iniciar.","settings.cold.httpPort.tooltip":"Número de puerto usado por el servidor HTTP del dashboard MCP.","settings.cold.httpHost.tooltip":"Interfaz de host a la que se enlaza el servidor HTTP del dashboard MCP.","settings.cold.dashboardAutoOpen.tooltip":"Controla si el dashboard se abre automáticamente en el navegador al iniciar el servidor.","settings.cold.dashboardAutoOpen.value.tooltip":"Comportamiento actual de inicio para abrir el dashboard en un navegador.","settings.cold.hint":"Configure mediante variables de entorno.","settings.sync.title":"Configuración de sincronización","settings.sync.title.tooltip":"Límites de sincronización guardados para el indexado y recorrido de archivos del proyecto.","settings.sync.maxDepth":"Profundidad máxima","settings.sync.maxDepth.tooltip":"Profundidad máxima de carpetas que recorrerá el escáner de sincronización.","settings.sync.maxInstances":"Instancias máximas","settings.sync.maxInstances.tooltip":"Número máximo de instancias de Roblox que se indexarán durante la sincronización.","settings.sync.save":"Guardar","settings.language.title":"Idioma","settings.language.title.tooltip":"Elige cómo se localiza el texto de la interfaz del dashboard.","settings.language.dashboard":"Idioma del dashboard","settings.language.dashboard.tooltip":"Sobrescribe el idioma del dashboard o usa el idioma del sistema cuando está en Automático.","settings.language.auto":"Automático","overview.l0.title":"Servidor MCP desconectado","overview.l0.message":"El servidor MCP no responde. El dashboard intentará reconectarse automáticamente.","overview.l0.step1":"Verifique que el proceso del servidor MCP esté ejecutándose","overview.l0.step2":"Reinicie el comando del servidor MCP si es necesario","overview.l0.reconnecting":"Reconectando automáticamente cada 3s...","overview.l0.reconnectBtn":"Reconectar","overview.l0.settingsBtn":"Verificar configuración","overview.l1.pluginGuide":"El plugin de Roblox Studio no está conectado","overview.l1.check1":"¿Roblox Studio está abierto?","overview.l1.check2":"¿El plugin Weppy MCP está instalado?","overview.l1.check3":"¿Las solicitudes HTTP están habilitadas en la configuración de Studio?","overview.l1.feedHint":"Los cambios aparecerán aquí cuando el plugin se conecte","overview.metric.server":"Servidor","overview.metric.server.tooltip":"Estado de ejecución y proceso del servidor MCP.","overview.metric.plugin":"Plugin","overview.metric.plugin.tooltip":"Estado de conexión y versión del plugin de Roblox Studio.","overview.metric.agent":"Agente","overview.metric.agent.tooltip":"Agentes de IA conectados y su estado actual.","overview.metric.agent.instancesUnit":"instancias","overview.metric.sync":"Sincronización","overview.metric.sync.tooltip":"Actividad actual de sincronización entre Studio y archivos locales.","overview.metric.noAgent":"Sin agente","overview.meta.version":"Versión","overview.meta.version.tooltip":"Versión instalada del servidor MCP.","overview.meta.session":"Sesión","overview.meta.session.tooltip":"Identificador de la sesión MCP actual.","overview.meta.pid":"PID","overview.meta.pid.tooltip":"Identificador de proceso del sistema operativo.","overview.meta.uptime":"Tiempo activo","overview.meta.uptime.tooltip":"Tiempo transcurrido desde que se inició el servidor MCP.","overview.feed.title":"Cambios recientes del juego","overview.feed.empty":"Sin cambios recientes","overview.changelog.title":"Resumen de cambios de sesión","overview.changelog.entries":"Total","overview.changelog.scripts":"scripts","overview.changelog.instances":"instancias","overview.changelog.properties":"propiedades","overview.changelog.assets":"assets","overview.tier.title":"Uso por nivel","changelog.subtitle":"Historial de cambios del juego","changelog.filter.all":"Todos","changelog.filter.active":"Activo","changelog.filter.completed":"Completado","changelog.empty":"Sin entradas de historial","changelog.card.active":"Activo","changelog.card.active.tooltip":"Esta sesión todavía sigue recibiendo nuevos cambios del juego.","changelog.card.completed":"Completado","changelog.card.completed.tooltip":"Esta sesión terminó y ya no se esperan más cambios.","changelog.card.bootstrapStatus":"Inicializado","changelog.card.bootstrapStatus.tooltip":"Esta sesión solo contiene la instantánea inicial de bootstrap de sincronización.","changelog.card.inProgress":"en progreso","changelog.card.noChanges":"Sin cambios aún","changelog.card.noChanges.tooltip":"Todavía no se han extraído cambios del juego para esta sesión.","changelog.card.bootstrapSummary":"Instantánea de sincronización inicial","changelog.card.bootstrapSummary.tooltip":"Las escrituras de la sincronización inicial de archivos se agrupan en una sola fila de bootstrap.","changelog.card.scripts":"scripts","changelog.card.scripts.tooltip":"Cambios de scripts realizados en esta sesión.","changelog.card.instances":"instancias","changelog.card.instances.tooltip":"Cambios de creación, eliminación, movimiento o clonado de instancias en esta sesión.","changelog.card.modified":"modificado","changelog.card.created":"creado","changelog.card.deleted":"eliminado","changelog.card.moved":"movido","changelog.card.propertiesChanged":"propiedades cambiadas","changelog.card.propertiesChanged.tooltip":"Cambios de valores de propiedades registrados para esta sesión.","changelog.card.lightingConfigured":"Iluminación configurada","changelog.card.lightingConfigured.tooltip":"La iluminación o la atmósfera cambiaron en esta sesión.","changelog.card.terrainConfigured":"Terreno configurado","changelog.card.terrainConfigured.tooltip":"Los datos o la configuración del terreno cambiaron en esta sesión.","changelog.card.assetsInserted":"assets insertados","changelog.card.assetsInserted.tooltip":"Assets insertados en el place durante esta sesión.","changelog.category.script":"Scripts","changelog.category.instance":"Instancias","changelog.category.property":"Propiedades","changelog.category.lighting":"Iluminación","changelog.category.terrain":"Terreno","changelog.category.asset":"Assets","changelog.detail.changeSummary":"Resumen de cambios","changelog.detail.changeSummary.tooltip":"Cantidad de cambios del juego extraídos agrupados por categoría para esta sesión.","changelog.detail.changeTimeline":"Línea de tiempo","changelog.detail.changeTimeline.tooltip":"Lista cronológica de cambios del juego extraídos para esta sesión.","changelog.detail.beforeAfter":"Antes y después","changelog.detail.filterCategory":"Categoría","changelog.detail.filterCategory.tooltip":"Filtra la línea de tiempo a una sola categoría de cambio.","changelog.detail.confidence.exact":"Exacto","changelog.detail.confidence.exact.tooltip":"Se confirmaron tanto el estado anterior como el posterior para este cambio.","changelog.detail.confidence.partial":"Parcial","changelog.detail.confidence.partial.tooltip":"Solo se pudo confirmar parte del estado anterior y posterior para este cambio.","changelog.detail.confidence.afterOnly":"Solo después","changelog.detail.confidence.afterOnly.tooltip":"Solo se pudo confirmar el estado resultante después del cambio.","changelog.detail.confidence.intentOnly":"Solo intención","changelog.detail.confidence.intentOnly.tooltip":"Solo se registró la acción solicitada, no el estado resultante.","changelog.detail.confidence.unknown":"Desconocido","changelog.detail.confidence.unknown.tooltip":"No fue posible clasificar este cambio con confianza usando los datos disponibles.","changelog.detail.noChanges":"Sin cambios en esta categoría","changelog.detail.backToList":"Volver a la lista","changelog.diff.empty":"Sin diferencias disponibles","changelog.diff.unified":"Unificado","changelog.diff.sideBySide":"Lado a lado","changelog.diff.before":"Antes","changelog.diff.after":"Después","sync.overlay.title":"Se requiere el plugin de Roblox Studio","sync.overlay.message":"El estado de sincronización estará disponible cuando el plugin de Roblox Studio se conecte.","sync.overlay.check1":"¿Roblox Studio está abierto?","sync.overlay.check2":"¿El plugin Weppy MCP está instalado?","sync.overlay.check3":"¿Las solicitudes HTTP están habilitadas en la configuración de Studio?","sync.status.title":"Estado de sincronización","sync.status.title.tooltip":"Estado actual de sincronización entre Studio y archivos locales para este place.","sync.status.forwardOnly":"Solo avance","sync.status.forwardOnly.tooltip":"La suscripción Basic solo permite sincronización directa de Studio a local.","sync.status.place":"Place","sync.status.place.tooltip":"Nombre e ID del place de Roblox conectado.","sync.status.path":"Ruta","sync.status.path.tooltip":"Raíz del sistema de archivos local usada actualmente para la sincronización.","sync.status.instances":"Instancias","sync.status.instances.tooltip":"Cantidad total de instancias de Roblox sincronizadas en el espejo local.","sync.status.scripts":"Scripts","sync.status.scripts.tooltip":"Cantidad total de scripts sincronizados e indexados para este place.","sync.status.state":"Estado","sync.status.state.tooltip":"Estado de ejecución de sincronización reportado por el servidor.","sync.directions.title":"Direcciones de sincronización","sync.directions.title.tooltip":"Dirección y modo de aplicación por categoría entre Local y Studio.","sync.directions.type":"Tipo","sync.directions.type.tooltip":"Categoría de sincronización afectada por esta regla.","sync.directions.direction":"Dirección","sync.directions.direction.tooltip":"Indica si cada categoría sincroniza desde Studio, hacia Studio o en ambos sentidos.","sync.directions.applyMode":"Modo de aplicación","sync.directions.applyMode.tooltip":"Cómo se aplican los cambios de sincronización entrantes para esta categoría.","sync.directions.cat.scripts":"Scripts","sync.directions.cat.values":"Valores","sync.directions.cat.containers":"Contenedores","sync.directions.cat.data":"Datos","sync.directions.cat.services":"Servicios","sync.directions.endpoint.local":"Local","sync.directions.endpoint.local.tooltip":"Los archivos locales en disco siempre se muestran a la izquierda del riel de dirección.","sync.directions.endpoint.studio":"Studio","sync.directions.endpoint.studio.tooltip":"Roblox Studio siempre se muestra a la derecha del riel de dirección.","sync.directions.mode.manual":"Manual","sync.directions.mode.manual.tooltip":"Aplica los cambios de sincronización solo cuando los activas manualmente.","sync.directions.mode.auto":"Auto","sync.directions.mode.auto.tooltip":"Aplica los cambios de sincronización automáticamente cuando llegan actualizaciones.","sync.directions.tooltip.forward.body":"Los cambios de Studio se sincronizan solo a los archivos locales","sync.directions.tooltip.bidirectional.body":"Sincronización en ambos sentidos entre Local y Studio","sync.directions.tooltip.reverse.body":"Envía cambios de archivos locales a Studio","sync.directions.tooltip.proRequired":"Se requiere Pro en el plan Basic","sync.directions.dir.forward":"adelante","sync.directions.dir.bidirectional":"bidireccional","sync.directions.dir.reverse":"inverso","sync.config.title":"Configuración de sincronización","sync.config.maxDepth":"Profundidad máxima","sync.config.maxInstances":"Instancias máximas","sync.config.dirLimit":"Límite de directorios","sync.log.title":"Registro de sincronización","sync.log.empty":"Sin eventos de sincronización","sync.log.type.write":"ESCRIBIR","sync.log.type.write.tooltip":"Se escribió una nueva salida sincronizada en el disco.","sync.log.type.update":"ACTUALIZAR","sync.log.type.update.tooltip":"Se actualizó un archivo o una instancia ya sincronizada.","sync.log.type.delete":"ELIMINAR","sync.log.type.delete.tooltip":"Se eliminó un archivo o una instancia sincronizada.","sync.log.type.idle":"INACTIVO","sync.log.type.idle.tooltip":"Se registró un evento de sincronización sin modificar archivos.","sync.upgrade.title":"Desbloquea sincronización completa con Pro","sync.upgrade.benefit1":"Sincronización bidireccional — edita archivos, se aplica automáticamente a Studio","sync.upgrade.benefit2":"Sincronización inversa — envía cambios de archivos a Studio","sync.upgrade.benefit3":"Historial completo de sincronización y registro detallado de cambios","sync.upgrade.buy":"Actualizar a Pro","playtest.status.title":"Estado de prueba","playtest.status.title.tooltip":"Estado actual de la sesión de playtest de Roblox informado por Studio.","playtest.status.mode":"Modo","playtest.status.mode.tooltip":"Modo de inicio de playtest de Studio usado por la sesión actual.","playtest.status.mode.value.tooltip":"Modo específico de playtest de Roblox Studio que se está usando ahora.","playtest.status.mode.play":"Jugar","playtest.status.mode.run":"Ejecutar","playtest.status.mode.server":"Servidor","playtest.status.mode.edit":"Editar","playtest.status.place.tooltip":"Place de Roblox asociado actualmente con esta sesión de playtest.","playtest.status.state.running":"En ejecución","playtest.status.state.running.tooltip":"Actualmente hay una sesión de playtest de Roblox en ejecución.","playtest.status.state.paused":"Pausado","playtest.status.state.paused.tooltip":"La sesión actual de playtest de Roblox está en pausa.","playtest.status.state.notRunning":"Sin ejecutar","playtest.status.state.notRunning.tooltip":"Actualmente no hay ninguna sesión de playtest de Roblox en ejecución.","playtest.control.play":"Jugar","playtest.control.pause":"Pausar","playtest.control.resume":"Reanudar","playtest.control.stop":"Detener","playtest.history.title":"Historial de pruebas","playtest.history.title.tooltip":"Ejecuciones automatizadas de playtest registradas para este proyecto.","playtest.history.empty":"Sin resultados de prueba","playtest.history.mode":"Modo","playtest.history.mode.tooltip":"Modo de playtest usado en esta ejecución de prueba registrada.","playtest.history.status.passed":"Aprobado","playtest.history.status.failed":"Fallido","playtest.history.status.running":"En ejecución","playtest.history.status.unknown":"Desconocido","playtest.history.status.tooltip":"Estado de resultado registrado para esta ejecución automatizada de playtest.","playtest.empty.title":"Sin resultados de prueba aún","playtest.empty.message":"Los resultados aparecerán aquí cuando el agente IA ejecute pruebas automatizadas vía system_info.run_test.","playtest.empty.message.before":"Los resultados aparecerán aquí cuando el agente IA ejecute pruebas automatizadas mediante","playtest.empty.message.after":".","playtest.empty.runTest.tooltip":"Punto de automatización del dashboard que ejecuta verificaciones de playtest de Roblox a través de la herramienta system_info.","playtest.report.title":"Reporte seleccionado","playtest.report.title.tooltip":"Salida detallada de la ejecución automatizada de playtest seleccionada actualmente.","playtest.report.content":"Reporte","playtest.report.content.tooltip":"Resumen en Markdown de la ejecución automatizada de playtest seleccionada.","playtest.report.logs":"Registros","playtest.report.logs.tooltip":"Registros de ejecución capturados para la ejecución automatizada de playtest seleccionada.","playtest.report.empty":"Sin contenido de reporte","playtest.basic.icon":"🎮","playtest.basic.title":"Playtest es una función exclusiva de Pro","playtest.basic.desc":"Controla las pruebas desde el dashboard, ejecuta pruebas automatizadas y visualiza reportes detallados.","playtest.basic.benefit1":"Controles de jugar/pausar/detener con un clic","playtest.basic.benefit2":"Ejecución de pruebas automatizadas vía agente IA","playtest.basic.benefit3":"Historial de pruebas con seguimiento de éxito/fallo","playtest.basic.benefit4":"Reportes de prueba detallados en markdown"},eh={"sidebar.overview":"Visão Geral","sidebar.changelog":"Histórico","sidebar.connection":"Conexão","sidebar.sync":"Sincronização","sidebar.playtest":"Teste","sidebar.tools":"Ferramentas","sidebar.settings":"Configurações","header.currentProject":"Projeto atual","header.unknownProject":"Projeto desconhecido","header.placeNotConnected":"Place não conectado","header.currentProject.tooltip":"Pasta do projeto atualmente selecionada.","header.place.tooltip":"Place do Roblox conectado.","header.placeNotConnected.tooltip":"Place não conectado","sidebar.gate.l1":"É necessária conexão com o servidor MCP.","sidebar.gate.l2":"É necessária conexão com o plugin do Roblox Studio.","status.online":"Online","status.offline":"Offline","status.idle":"Ocioso","status.syncing":"Sincronizando","status.error":"Erro","status.initializing":"Inicializando","level.l0.title":"Servidor MCP desconectado","level.l0.message":"O dashboard está aberto mas o servidor MCP parou ou não está respondendo.","level.l1.title":"Plugin não conectado","level.l1.hint":"Verifique: O Roblox Studio está aberto? O plugin está instalado? As requisições HTTP estão habilitadas?","level.l2.ok":"Tudo conectado","tier.basic":"Basic","tier.basic.tooltip":"Tier Basic com o conjunto padrão de recursos do dashboard.","tier.pro":"Pro","tier.pro.tooltip":"Tier Pro com o conjunto completo de recursos do dashboard.","tier.mixed":"Misto","tier.upgrade":"Atualizar para Pro","tier.compare":"Basic vs Pro","tier.banner.save":"Economize tokens de IA com Pro!","tier.comparison.comingSoon":"Comparação Basic vs Pro — em breve","tier.comparison.close":"Fechar","tier.comparison.detailTitle":"Catálogo detalhado de ferramentas","tier.comparison.description":"Descrição","tier.comparison.basic.core":"Fluxo MCP básico","tier.comparison.basic.core.item1":"Criar/editar scripts","tier.comparison.basic.core.item2":"Gerenciamento de instâncias","tier.comparison.basic.core.item3":"Controle de propriedades","tier.comparison.basic.core.item4":"Seleção e busca","tier.comparison.basic.core.item5":"Gerenciamento de tags","tier.comparison.basic.core.item6":"Controle de câmera","tier.comparison.basic.core.item7":"Monitoramento de logs","tier.comparison.basic.sync":"Sincronização (Basic)","tier.comparison.basic.sync.item1":"Sincronização unidirecional do Studio para local","tier.comparison.basic.sync.item2":"Aplicação manual como padrão","tier.comparison.basic.sync.item3":"Configurações de sincronização Pro em somente leitura","tier.comparison.pro.all":"Tudo do Basic, mais","tier.comparison.pro.sync":"Fluxo de sincronização avançado","tier.comparison.pro.sync.item1":"Direção de sincronização por tipo","tier.comparison.pro.sync.item2":"Modo de aplicação por tipo","tier.comparison.pro.sync.item3":"Sincronização bidirecional e reversa","tier.comparison.pro.sync.item4":"Sincronização completa, ressincronização e envio ao Studio","tier.comparison.pro.sync.item5":"Sincronização multi-lugar","tier.comparison.pro.playtest":"Controle de playtest","tier.comparison.pro.playtest.item1":"Reproduzir, parar, pausar e retomar","tier.comparison.pro.playtest.item2":"Inspeção do estado de playtest","tier.comparison.pro.playtest.item3":"Execução de testes automatizados","tier.comparison.pro.creation":"Fluxo de criação avançado","tier.comparison.pro.creation.item1":"Operações em massa","tier.comparison.pro.creation.item2":"Geração de terreno","tier.comparison.pro.creation.item3":"Busca e inserção de assets","tier.comparison.pro.creation.item4":"Raycast e análise espacial","tier.comparison.pro.creation.item5":"Controle de ambiente","tier.tool.query_instances.desc":"Consulta de instâncias, exploração de filhos/descendentes, info de classe, busca por nome e classe. Pro: árvore de arquivos, estrutura do projeto, busca por propriedade e tag.","tier.tool.mutate_instances.desc":"Criar, excluir, clonar, mover, renomear e pivotar instâncias. Pro: criação de árvores, criação/exclusão/duplicação em massa.","tier.tool.manage_properties.desc":"Consultar e definir propriedades, atributos e tags. Pro: valores calculados e relativos, consulta/definição em massa, modificação em massa de filhos.","tier.tool.manage_scripts.desc":"Ler, escrever, criar, excluir, editar linhas e buscar em scripts. Pro: substituição em massa entre scripts.","tier.tool.manage_lighting.desc":"Somente Pro. Configuração de iluminação, atmosfera, céu, propriedades do terreno e hora do dia.","tier.tool.manage_selection.desc":"Consultar, definir e limpar seleção. Pro: contexto, detalhes, adicionar/remover itens, monitorar mudanças.","tier.tool.manage_camera.desc":"Info da câmera, focar por caminho ou coordenadas, visualização sugerida.","tier.tool.manage_tween.desc":"Somente Pro. Criar, reproduzir, pausar e cancelar tweens para animações suaves.","tier.tool.manage_audio.desc":"Somente Pro. Reproduzir, parar, pausar e retomar sons. Configurar listener de áudio.","tier.tool.manage_animation.desc":"Somente Pro. Carregar, reproduzir e parar animações. Consultar tracks de humanoide/controlador.","tier.tool.manage_physics.desc":"Somente Pro. Registrar grupos de colisão, configurar colisão entre grupos, listar grupos.","tier.tool.manage_effects.desc":"Somente Pro. Emitir partículas, limpar todas, alternar ativação de efeitos.","tier.tool.manage_terrain.desc":"Somente Pro. Preencher formas, limpar regiões, substituir materiais, gerenciar cores, ler/escrever voxels, geração procedural, suavização.","tier.tool.spatial_query.desc":"Somente Pro. Raycast, encontrar chão, verificar posicionamento, varredura de área, encontrar áreas planas e pontos de spawn, análise de caminhabilidade, mapa espacial, detecção de colisão.","tier.tool.manage_assets.desc":"Somente Pro. Inserir modelos, consultar info de assets, buscar na loja de criadores, inserir modelos/pacotes gratuitos, exportar.","tier.tool.manage_sync.desc":"Somente Pro. Estado de sincronização, configuração, histórico, direção, leitura/escrita de arquivos sincronizados.","tier.tool.workspace_state.desc":"Somente Pro. Sincronização completa, snapshot, mudanças recentes, info de viewport, metadados, gerenciamento de cache.","tier.tool.manage_logs.desc":"Consulta filtrada de logs, sondagem incremental, limpar buffer, consulta de erros recentes.","tier.tool.system_info.desc":"Estado de conexão, verificação de tier. Pro: info do lugar, lista de serviços, configurações do Studio, controle de playtest, testes automáticos.","tier.tool.batch_execute.desc":"Somente Pro. Executar múltiplos comandos em lote. Processamento sequencial com opção de continuar em caso de erro.","tier.tool.execute_luau.desc":"Somente Pro. Executar código Luau arbitrário no sandbox do Roblox Studio.","connection.server.title":"Status do servidor","connection.server.version":"Versão","connection.server.version.tooltip":"Versão instalada do servidor MCP.","connection.server.pid":"PID","connection.server.pid.tooltip":"Identificador de processo do sistema operacional.","connection.server.uptime":"Tempo ativo","connection.server.uptime.tooltip":"Tempo decorrido desde que o servidor MCP foi iniciado.","connection.server.session":"Sessão","connection.server.session.tooltip":"Identificador da sessão MCP atual.","connection.server.exec":"Executável","connection.server.exec.tooltip":"Caminho do executável usado para iniciar o servidor MCP.","connection.reconnect":"Reconectar","connection.checkSettings":"Verificar configurações","connection.agents.title":"Agentes IA","connection.agents.name":"Agente","connection.agents.cwd":"Diretório","connection.agents.cwd.tooltip":"Diretório de trabalho atual do agente de IA conectado.","connection.agents.connected":"Conectado","connection.agents.unknown":"Desconhecido","connection.agents.none":"Nenhum agente conectado","connection.plugins.title":"Plugins","connection.plugins.place":"Place","connection.plugins.clientId":"ID do cliente","connection.plugins.clientId.tooltip":"Identificador único do cliente do plugin para esta conexão do Studio.","connection.plugins.lastSeen":"Última vez","connection.plugins.lastSeen.tooltip":"Heartbeat mais recente recebido do plugin.","connection.plugins.version":"Ver","connection.plugins.version.tooltip":"Versão instalada do plugin reportada pelo Studio.","connection.plugins.none":"Nenhum plugin conectado","connection.log.title":"Log de conexão","connection.log.empty":"Nenhum evento","connection.time.secondsAgo":"s atrás","connection.time.minutesAgo":"min atrás","connection.time.hoursAgo":"h atrás","common.loading":"Carregando...","common.retry":"Tentar novamente","common.reconnecting":"Reconectando...","common.expand":"Expandir","common.collapse":"Recolher","tools.tab.history":"Histórico","tools.tab.statistics":"Estatísticas","tools.tab.failures":"Falhas","tools.col.time":"Hora","tools.col.time.tooltip":"Momento em que a execução da ferramenta foi registrada.","tools.col.toolAction":"Ferramenta.Ação","tools.col.toolAction.tooltip":"Nome da ferramenta e ação executada.","tools.col.duration":"Duração","tools.col.duration.tooltip":"Quanto tempo a ferramenta levou para terminar.","tools.col.status":"Status","tools.col.status.tooltip":"Resultado da execução registrada da ferramenta.","tools.col.tier":"Nível","tools.col.tier.tooltip":"Nível de licença exigido para a ferramenta ou ação.","tools.col.tierStats.tooltip":"Resumo Basic, Pro ou Mixed para esta linha de estatísticas da ferramenta.","tools.col.tool":"Ferramenta","tools.col.tool.tooltip":"Nome da ferramenta consolidada na tabela de estatísticas.","tools.col.calls":"Chamadas","tools.col.calls.tooltip":"Número total de chamadas registradas para esta ferramenta.","tools.col.okRate":"% Sucesso","tools.col.okRate.tooltip":"Percentual de chamadas que terminaram com sucesso.","tools.col.avgTime":"Tempo médio","tools.col.avgTime.tooltip":"Tempo médio de execução entre as chamadas registradas.","tools.col.error":"Erro","tools.filter.tool":"Ferramenta","tools.filter.all":"Todos","tools.badge.pro":"PRO","tools.badge.pro.tooltip":"Esta entrada usou uma ferramenta ou ação exclusiva do Pro.","tools.status.ok":"OK","tools.status.ok.tooltip":"A execução da ferramenta terminou com sucesso.","tools.tier.mixed.tooltip":"Esta ferramenta inclui ações Basic e Pro.","tools.detail.params":"Parâmetros","tools.detail.params.tooltip":"Parâmetros de entrada enviados nesta execução da ferramenta.","tools.detail.result":"Resultado","tools.detail.result.tooltip":"Payload de resultado retornado por esta execução da ferramenta.","tools.detail.error":"Erro","tools.page.prev":"Anterior","tools.page.prev.tooltip":"Ir para a página anterior do histórico de ferramentas.","tools.page.next":"Próximo","tools.page.next.tooltip":"Ir para a próxima página do histórico de ferramentas.","tools.empty.history":"Nenhuma entrada no histórico","tools.empty.stats":"Sem estatísticas","tools.empty.failures":"Sem falhas","tools.summary.total":"Total","tools.summary.calls":"chamadas","tools.summary.sessions":"Sessões","settings.license.title":"Licença","settings.license.title.tooltip":"Status atual da licença e nível de assinatura.","settings.license.status":"Status","settings.license.status.tooltip":"Estado atual de ativação da licença.","settings.license.tier":"Nível","settings.license.tier.tooltip":"Nível de assinatura atual para os recursos disponíveis do dashboard.","settings.license.key":"Chave","settings.license.key.tooltip":"Chave de licença mascarada atualmente carregada pelo servidor.","settings.license.keyValue.tooltip":"Chave de licença mascarada atualmente carregada pelo servidor.","settings.license.provider":"Provedor","settings.license.provider.tooltip":"Provedor de licença usado para validar esta chave.","settings.license.providerValue.tooltip":"Provedor de licença usado para validar esta chave.","settings.license.active":"Ativa","settings.license.active.tooltip":"Estado atual de ativação da licença.","settings.license.inactive":"Inativa","settings.license.inactive.tooltip":"Estado atual de ativação da licença.","settings.license.expired":"Expirada","settings.license.expired.tooltip":"Estado atual de ativação da licença.","settings.license.unavailable":"Informações de licença indisponíveis","settings.readOnly":"Somente leitura","settings.readOnly.tooltip":"Esta seção mostra valores que não podem ser editados pelo dashboard.","settings.unavailable":"Configurações indisponíveis","settings.general.title":"Configurações gerais","settings.general.title.tooltip":"Configurações quentes que são aplicadas imediatamente ao mudar.","settings.general.liveApply":"Aplicar ao vivo","settings.general.liveApply.tooltip":"As mudanças nesta seção são aplicadas imediatamente sem um botão separado de salvar.","settings.general.applied":"Aplicado","settings.general.logLevel":"Nível de log","settings.general.logLevel.tooltip":"Define quanto detalhe o dashboard escreve nos logs.","settings.general.localHistory":"Registro de histórico","settings.general.localHistory.tooltip":"Armazena o histórico local de execução de ferramentas para as telas de histórico do dashboard.","settings.general.localStatistics":"Coleta de estatísticas","settings.general.localStatistics.tooltip":"Agrega estatísticas locais de uso para os relatórios do dashboard.","settings.general.requestTimeout":"Tempo limite","settings.general.requestTimeout.tooltip":"Tempo máximo que o dashboard espera uma solicitação antes de falhar.","settings.general.requestTimeout.unit":"ms","settings.general.requestTimeout.unit.tooltip":"O tempo limite da solicitação é medido em milissegundos.","settings.cold.title":"Ambiente do servidor","settings.cold.title.tooltip":"Valores de ambiente do servidor somente leitura carregados na inicialização.","settings.cold.httpPort.tooltip":"Número da porta usada pelo servidor HTTP do dashboard MCP.","settings.cold.httpHost.tooltip":"Interface de host à qual o servidor HTTP do dashboard MCP se vincula.","settings.cold.dashboardAutoOpen.tooltip":"Controla se o dashboard abre automaticamente no navegador quando o servidor inicia.","settings.cold.dashboardAutoOpen.value.tooltip":"Comportamento atual de inicialização para abrir o dashboard no navegador.","settings.cold.hint":"Configure via variáveis de ambiente.","settings.sync.title":"Configurações de sincronização","settings.sync.title.tooltip":"Limites salvos de sincronização para indexação e varredura de arquivos do projeto.","settings.sync.maxDepth":"Profundidade máxima","settings.sync.maxDepth.tooltip":"Profundidade máxima de pastas que o scanner de sincronização irá percorrer.","settings.sync.maxInstances":"Instâncias máximas","settings.sync.maxInstances.tooltip":"Número máximo de instâncias do Roblox a indexar durante a sincronização.","settings.sync.save":"Salvar","settings.language.title":"Idioma","settings.language.title.tooltip":"Escolha como o texto da interface do dashboard é localizado.","settings.language.dashboard":"Idioma do dashboard","settings.language.dashboard.tooltip":"Substitui o idioma do dashboard ou segue o idioma do sistema quando definido como Automático.","settings.language.auto":"Automático","overview.l0.title":"Servidor MCP desconectado","overview.l0.message":"O servidor MCP não está respondendo. O dashboard tentará reconectar automaticamente.","overview.l0.step1":"Verifique se o processo do servidor MCP está em execução","overview.l0.step2":"Reinicie o comando do servidor MCP se necessário","overview.l0.reconnecting":"Reconectando automaticamente a cada 3s...","overview.l0.reconnectBtn":"Reconectar","overview.l0.settingsBtn":"Verificar configurações","overview.l1.pluginGuide":"O plugin do Roblox Studio não está conectado","overview.l1.check1":"O Roblox Studio está aberto?","overview.l1.check2":"O plugin Weppy MCP está instalado?","overview.l1.check3":"As requisições HTTP estão habilitadas nas configurações do Studio?","overview.l1.feedHint":"As alterações aparecerão aqui quando o plugin se conectar","overview.metric.server":"Servidor","overview.metric.server.tooltip":"Status de execução e processo do servidor MCP.","overview.metric.plugin":"Plugin","overview.metric.plugin.tooltip":"Status de conexão e versão do plugin do Roblox Studio.","overview.metric.agent":"Agente","overview.metric.agent.tooltip":"Agentes de IA conectados e seu estado atual.","overview.metric.agent.instancesUnit":"instâncias","overview.metric.sync":"Sincronização","overview.metric.sync.tooltip":"Atividade atual de sincronização entre Studio e arquivos locais.","overview.metric.noAgent":"Sem agente","overview.meta.version":"Versão","overview.meta.version.tooltip":"Versão instalada do servidor MCP.","overview.meta.session":"Sessão","overview.meta.session.tooltip":"Identificador da sessão MCP atual.","overview.meta.pid":"PID","overview.meta.pid.tooltip":"Identificador de processo do sistema operacional.","overview.meta.uptime":"Tempo ativo","overview.meta.uptime.tooltip":"Tempo decorrido desde que o servidor MCP foi iniciado.","overview.feed.title":"Alterações recentes do jogo","overview.feed.empty":"Sem alterações recentes","overview.changelog.title":"Resumo de alterações da sessão","overview.changelog.entries":"Total","overview.changelog.scripts":"scripts","overview.changelog.instances":"instâncias","overview.changelog.properties":"propriedades","overview.changelog.assets":"assets","overview.tier.title":"Uso por nível","changelog.subtitle":"Histórico de alterações do jogo","changelog.filter.all":"Todos","changelog.filter.active":"Ativo","changelog.filter.completed":"Concluído","changelog.empty":"Nenhuma entrada no histórico","changelog.card.active":"Ativo","changelog.card.active.tooltip":"Esta sessão ainda está recebendo novas alterações do jogo.","changelog.card.completed":"Concluído","changelog.card.completed.tooltip":"Esta sessão terminou e não deve receber mais alterações.","changelog.card.bootstrapStatus":"Inicialização","changelog.card.bootstrapStatus.tooltip":"Esta sessão contém apenas o snapshot inicial de bootstrap da sincronização.","changelog.card.inProgress":"em andamento","changelog.card.noChanges":"Sem alterações ainda","changelog.card.noChanges.tooltip":"Ainda não foram extraídas alterações do jogo para esta sessão.","changelog.card.bootstrapSummary":"Snapshot de sincronização inicial","changelog.card.bootstrapSummary.tooltip":"As gravações da sincronização inicial de arquivos são condensadas em uma única linha de snapshot bootstrap.","changelog.card.scripts":"scripts","changelog.card.scripts.tooltip":"Alterações de script feitas nesta sessão.","changelog.card.instances":"instâncias","changelog.card.instances.tooltip":"Alterações de criação, exclusão, movimentação ou clonagem de instâncias nesta sessão.","changelog.card.modified":"modificado","changelog.card.created":"criado","changelog.card.deleted":"excluído","changelog.card.moved":"movido","changelog.card.propertiesChanged":"propriedades alteradas","changelog.card.propertiesChanged.tooltip":"Alterações de valores de propriedades registradas para esta sessão.","changelog.card.lightingConfigured":"Iluminação configurada","changelog.card.lightingConfigured.tooltip":"A iluminação ou a atmosfera foram alteradas nesta sessão.","changelog.card.terrainConfigured":"Terreno configurado","changelog.card.terrainConfigured.tooltip":"Os dados ou as configurações de terreno foram alterados nesta sessão.","changelog.card.assetsInserted":"assets inseridos","changelog.card.assetsInserted.tooltip":"Assets inseridos no place durante esta sessão.","changelog.category.script":"Scripts","changelog.category.instance":"Instâncias","changelog.category.property":"Propriedades","changelog.category.lighting":"Iluminação","changelog.category.terrain":"Terreno","changelog.category.asset":"Assets","changelog.detail.changeSummary":"Resumo de alterações","changelog.detail.changeSummary.tooltip":"Contagem de alterações do jogo extraídas e agrupadas por categoria nesta sessão.","changelog.detail.changeTimeline":"Linha do tempo","changelog.detail.changeTimeline.tooltip":"Lista cronológica das alterações do jogo extraídas para esta sessão.","changelog.detail.beforeAfter":"Antes e depois","changelog.detail.filterCategory":"Categoria","changelog.detail.filterCategory.tooltip":"Filtra a linha do tempo para uma única categoria de alteração.","changelog.detail.confidence.exact":"Exato","changelog.detail.confidence.exact.tooltip":"Os estados antes e depois desta alteração foram confirmados.","changelog.detail.confidence.partial":"Parcial","changelog.detail.confidence.partial.tooltip":"Apenas parte dos estados antes e depois desta alteração pôde ser confirmada.","changelog.detail.confidence.afterOnly":"Somente depois","changelog.detail.confidence.afterOnly.tooltip":"Apenas o estado resultante após a alteração pôde ser confirmado.","changelog.detail.confidence.intentOnly":"Somente intenção","changelog.detail.confidence.intentOnly.tooltip":"Apenas a ação solicitada foi registrada, não o estado resultante.","changelog.detail.confidence.unknown":"Desconhecido","changelog.detail.confidence.unknown.tooltip":"Não foi possível classificar esta alteração com confiança a partir dos dados disponíveis.","changelog.detail.noChanges":"Sem alterações nesta categoria","changelog.detail.backToList":"Voltar à lista","changelog.diff.empty":"Sem diferenças disponíveis","changelog.diff.unified":"Unificado","changelog.diff.sideBySide":"Lado a lado","changelog.diff.before":"Antes","changelog.diff.after":"Depois","sync.overlay.title":"Plugin do Roblox Studio necessário","sync.overlay.message":"O status de sincronização estará disponível quando o plugin do Roblox Studio se conectar.","sync.overlay.check1":"O Roblox Studio está aberto?","sync.overlay.check2":"O plugin Weppy MCP está instalado?","sync.overlay.check3":"As requisições HTTP estão habilitadas nas configurações do Studio?","sync.status.title":"Status de sincronização","sync.status.title.tooltip":"Status atual de sincronização entre o Studio e os arquivos locais deste place.","sync.status.forwardOnly":"Somente avanço","sync.status.forwardOnly.tooltip":"O tier Basic permite apenas sincronização direta do Studio para o local.","sync.status.place":"Place","sync.status.place.tooltip":"Nome e ID do place do Roblox atualmente conectado.","sync.status.path":"Caminho","sync.status.path.tooltip":"Raiz do sistema de arquivos local usada atualmente para a saída de sincronização.","sync.status.instances":"Instâncias","sync.status.instances.tooltip":"Total de instâncias do Roblox sincronizadas no espelho local.","sync.status.scripts":"Scripts","sync.status.scripts.tooltip":"Total de arquivos de script atualmente indexados para este place.","sync.status.state":"Estado","sync.status.state.tooltip":"Estado atual de execução da sincronização informado pelo servidor.","sync.directions.title":"Direções de sincronização","sync.directions.title.tooltip":"Direção e modo de aplicação por categoria entre Local e Studio.","sync.directions.type":"Tipo","sync.directions.type.tooltip":"Categoria de sincronização afetada por esta regra.","sync.directions.direction":"Direção","sync.directions.direction.tooltip":"Indica se cada categoria sincroniza do Studio, para o Studio ou nos dois sentidos.","sync.directions.applyMode":"Modo de aplicação","sync.directions.applyMode.tooltip":"Como as mudanças de sincronização recebidas são aplicadas nesta categoria.","sync.directions.cat.scripts":"Scripts","sync.directions.cat.values":"Valores","sync.directions.cat.containers":"Contêineres","sync.directions.cat.data":"Dados","sync.directions.cat.services":"Serviços","sync.directions.endpoint.local":"Local","sync.directions.endpoint.local.tooltip":"Os arquivos locais em disco sempre aparecem no lado esquerdo da régua de direção.","sync.directions.endpoint.studio":"Studio","sync.directions.endpoint.studio.tooltip":"O Roblox Studio sempre aparece no lado direito da régua de direção.","sync.directions.mode.manual":"Manual","sync.directions.mode.manual.tooltip":"Aplica as mudanças de sincronização apenas quando você dispara manualmente.","sync.directions.mode.auto":"Auto","sync.directions.mode.auto.tooltip":"Aplica as mudanças de sincronização automaticamente quando chegam atualizações.","sync.directions.tooltip.forward.body":"As mudanças do Studio sincronizam apenas para os arquivos locais","sync.directions.tooltip.bidirectional.body":"Sincronização de mão dupla entre Local e Studio","sync.directions.tooltip.reverse.body":"Envia mudanças dos arquivos locais para o Studio","sync.directions.tooltip.proRequired":"Pro é necessário no tier Basic","sync.directions.dir.forward":"adiante","sync.directions.dir.bidirectional":"bidirecional","sync.directions.dir.reverse":"reverso","sync.config.title":"Configuração de sincronização","sync.config.maxDepth":"Profundidade máxima","sync.config.maxInstances":"Instâncias máximas","sync.config.dirLimit":"Limite de diretórios","sync.log.title":"Log de sincronização","sync.log.empty":"Sem eventos de sincronização","sync.log.type.write":"ESCREVER","sync.log.type.write.tooltip":"Uma nova saída de sincronização foi gravada no disco.","sync.log.type.update":"ATUALIZAR","sync.log.type.update.tooltip":"Um arquivo ou uma instância já sincronizada foi atualizada.","sync.log.type.delete":"EXCLUIR","sync.log.type.delete.tooltip":"Um arquivo ou uma instância sincronizada foi removida.","sync.log.type.idle":"OCIOSO","sync.log.type.idle.tooltip":"Um evento de sincronização foi registrado sem alterar arquivos.","sync.upgrade.title":"Desbloqueie sincronização completa com Pro","sync.upgrade.benefit1":"Sincronização bidirecional — edite arquivos, aplicação automática no Studio","sync.upgrade.benefit2":"Sincronização reversa — envie alterações de arquivos para o Studio","sync.upgrade.benefit3":"Histórico completo de sincronização e registro detalhado de alterações","sync.upgrade.buy":"Atualizar para Pro","playtest.status.title":"Status de teste","playtest.status.title.tooltip":"Estado atual da sessão de playtest do Roblox informado pelo Studio.","playtest.status.mode":"Modo","playtest.status.mode.tooltip":"Modo de inicialização do playtest do Studio para a sessão atual.","playtest.status.mode.value.tooltip":"Modo específico de playtest do Roblox Studio atualmente em uso.","playtest.status.mode.play":"Jogar","playtest.status.mode.run":"Executar","playtest.status.mode.server":"Servidor","playtest.status.mode.edit":"Editar","playtest.status.place.tooltip":"Place do Roblox atualmente associado a esta sessão de playtest.","playtest.status.state.running":"Executando","playtest.status.state.running.tooltip":"Uma sessão de playtest do Roblox está em execução no momento.","playtest.status.state.paused":"Pausado","playtest.status.state.paused.tooltip":"A sessão atual de playtest do Roblox está pausada.","playtest.status.state.notRunning":"Não está em execução","playtest.status.state.notRunning.tooltip":"Nenhuma sessão de playtest do Roblox está em execução no momento.","playtest.control.play":"Jogar","playtest.control.pause":"Pausar","playtest.control.resume":"Retomar","playtest.control.stop":"Parar","playtest.history.title":"Histórico de testes","playtest.history.title.tooltip":"Execuções automatizadas de playtest registradas para este projeto.","playtest.history.empty":"Sem resultados de teste","playtest.history.mode":"Modo","playtest.history.mode.tooltip":"Modo de playtest usado nesta execução de teste registrada.","playtest.history.status.passed":"Aprovado","playtest.history.status.failed":"Falhou","playtest.history.status.running":"Executando","playtest.history.status.unknown":"Desconhecido","playtest.history.status.tooltip":"Estado de resultado registrado para esta execução automatizada de playtest.","playtest.empty.title":"Sem resultados de teste ainda","playtest.empty.message":"Os resultados aparecerão aqui quando o agente IA executar testes automatizados via system_info.run_test.","playtest.empty.message.before":"Os resultados aparecerão aqui quando o agente IA executar testes automatizados por meio de","playtest.empty.message.after":".","playtest.empty.runTest.tooltip":"Ponto de automação do dashboard que executa verificações de playtest do Roblox por meio da ferramenta system_info.","playtest.report.title":"Relatório selecionado","playtest.report.title.tooltip":"Saída detalhada da execução automatizada de playtest atualmente selecionada.","playtest.report.content":"Relatório","playtest.report.content.tooltip":"Resumo em Markdown da execução automatizada de playtest selecionada.","playtest.report.logs":"Logs","playtest.report.logs.tooltip":"Logs de execução capturados para a execução automatizada de playtest selecionada.","playtest.report.empty":"Sem conteúdo de relatório","playtest.basic.icon":"🎮","playtest.basic.title":"Playtest é uma função exclusiva do Pro","playtest.basic.desc":"Controle os testes pelo dashboard, execute testes automatizados e visualize relatórios detalhados.","playtest.basic.benefit1":"Controles de jogar/pausar/parar com um clique","playtest.basic.benefit2":"Execução de testes automatizados via agente IA","playtest.basic.benefit3":"Histórico de testes com rastreamento de sucesso/falha","playtest.basic.benefit4":"Relatórios de teste detalhados em markdown"},th={"sidebar.overview":"概要","sidebar.changelog":"変更履歴","sidebar.connection":"接続","sidebar.sync":"同期","sidebar.playtest":"プレイテスト","sidebar.tools":"ツール","sidebar.settings":"設定","header.currentProject":"現在のプロジェクト","header.unknownProject":"不明なプロジェクト","header.placeNotConnected":"プレイス未接続","header.currentProject.tooltip":"現在選択されているプロジェクトフォルダです。","header.place.tooltip":"接続中の Roblox プレイスです。","header.placeNotConnected.tooltip":"プレイス未接続","sidebar.gate.l1":"MCP サーバーへの接続が必要です。","sidebar.gate.l2":"Roblox Studio プラグインへの接続が必要です。","status.online":"オンライン","status.offline":"オフライン","status.idle":"待機中","status.syncing":"同期中","status.error":"エラー","status.initializing":"初期化中","level.l0.title":"MCPサーバー切断","level.l0.message":"ダッシュボードは開いていますが、MCPサーバーが停止したか応答していません。","level.l1.title":"プラグイン未接続","level.l1.hint":"確認: Roblox Studioは実行中?プラグインはインストール済み?HTTPリクエストは有効?","level.l2.ok":"すべて接続済み","tier.basic":"Basic","tier.basic.tooltip":"標準のダッシュボード機能を提供するBasicティアです。","tier.pro":"Pro","tier.pro.tooltip":"すべてのダッシュボード機能を提供するProティアです。","tier.mixed":"混合","tier.upgrade":"Proにアップグレード","tier.compare":"Basic vs Pro","tier.banner.save":"ProでAIトークンを節約!","tier.comparison.comingSoon":"Basic vs Pro 比較 — 近日公開","tier.comparison.close":"閉じる","tier.comparison.detailTitle":"詳細ツールカタログ","tier.comparison.description":"説明","tier.comparison.basic.core":"基本MCPワークフロー","tier.comparison.basic.core.item1":"スクリプト作成・編集","tier.comparison.basic.core.item2":"インスタンス管理","tier.comparison.basic.core.item3":"プロパティ制御","tier.comparison.basic.core.item4":"選択と検索","tier.comparison.basic.core.item5":"タグ管理","tier.comparison.basic.core.item6":"カメラ制御","tier.comparison.basic.core.item7":"ログ監視","tier.comparison.basic.sync":"同期(Basic)","tier.comparison.basic.sync.item1":"Studioからローカルへの一方向同期","tier.comparison.basic.sync.item2":"手動適用がデフォルト","tier.comparison.basic.sync.item3":"Pro同期設定は読み取り専用","tier.comparison.pro.all":"Basicのすべてに加えて","tier.comparison.pro.sync":"高度な同期ワークフロー","tier.comparison.pro.sync.item1":"タイプ別同期方向","tier.comparison.pro.sync.item2":"タイプ別適用モード","tier.comparison.pro.sync.item3":"双方向・逆方向同期","tier.comparison.pro.sync.item4":"フル同期、再同期、Studioへプッシュ","tier.comparison.pro.sync.item5":"マルチプレイス同期","tier.comparison.pro.playtest":"プレイテスト制御","tier.comparison.pro.playtest.item1":"再生、停止、一時停止、再開","tier.comparison.pro.playtest.item2":"プレイテスト状態の検査","tier.comparison.pro.playtest.item3":"自動テスト実行","tier.comparison.pro.creation":"高度な作成ワークフロー","tier.comparison.pro.creation.item1":"一括操作","tier.comparison.pro.creation.item2":"テレイン生成","tier.comparison.pro.creation.item3":"アセット検索・挿入","tier.comparison.pro.creation.item4":"レイキャスト・空間分析","tier.comparison.pro.creation.item5":"環境制御","tier.tool.query_instances.desc":"インスタンス照会、子孫探索、クラス情報、名前・クラス検索。Pro: ファイルツリー、プロジェクト構造、プロパティ・タグ検索。","tier.tool.mutate_instances.desc":"インスタンスの作成、削除、複製、移動、名前変更、ピボット。Pro: ツリー作成、一括作成・削除・複製。","tier.tool.manage_properties.desc":"プロパティ、属性、タグの取得・設定。Pro: 計算・相対値設定、一括取得・設定、子の一括変更。","tier.tool.manage_scripts.desc":"スクリプトソースの読取・書込・作成・削除・行編集・検索。Pro: スクリプト間一括置換。","tier.tool.manage_lighting.desc":"Pro専用。照明、大気、空、テレイン属性、時間帯の環境設定。","tier.tool.manage_selection.desc":"選択の取得、設定、解除。Pro: コンテキスト、詳細、項目の追加・削除、変更監視。","tier.tool.manage_camera.desc":"カメラ情報取得、パスまたは座標でフォーカス、推奨ビュー提案。","tier.tool.manage_tween.desc":"Pro専用。滑らかなアニメーションのためのトゥイーン作成、再生、一時停止、キャンセル。","tier.tool.manage_audio.desc":"Pro専用。サウンドの再生、停止、一時停止、再開。オーディオリスナー設定。","tier.tool.manage_animation.desc":"Pro専用。アニメーションのロード、再生、停止。ヒューマノイド・コントローラーのトラック照会。","tier.tool.manage_physics.desc":"Pro専用。物理衝突グループの登録、グループ間衝突設定、一覧照会。","tier.tool.manage_effects.desc":"Pro専用。パーティクル放出、全消去、エフェクト有効化トグル。","tier.tool.manage_terrain.desc":"Pro専用。図形充填、領域消去、マテリアル置換、色管理、ボクセル読書、手続き生成、スムージング。","tier.tool.spatial_query.desc":"Pro専用。レイキャスト、地面検索、配置確認、領域スキャン、平地・スポーン位置探索、歩行分析、空間マップ、衝突確認。","tier.tool.manage_assets.desc":"Pro専用。モデル挿入、アセット情報照会、クリエイターストア検索、無料モデル・パッケージ挿入、エクスポート。","tier.tool.manage_sync.desc":"Pro専用。同期状態、設定、履歴、方向設定、同期ファイル読書。","tier.tool.workspace_state.desc":"Pro専用。フル同期、スナップショット、最近の変更、ビューポート情報、メタデータ、キャッシュ管理。","tier.tool.manage_logs.desc":"出力ログのフィルタリング照会、増分ポーリング、バッファ消去、最近のエラー照会。","tier.tool.system_info.desc":"接続状態、使用ティア確認。Pro: プレイス情報、サービス一覧、Studio設定、プレイテスト制御、自動テスト。","tier.tool.batch_execute.desc":"Pro専用。複数コマンドを一括実行。順次処理、エラー時続行オプション。","tier.tool.execute_luau.desc":"Pro専用。Roblox Studioサンドボックスで任意のLuauコードを実行。","connection.server.title":"サーバーステータス","connection.server.version":"バージョン","connection.server.version.tooltip":"インストールされているMCPサーバーのバージョンです。","connection.server.pid":"PID","connection.server.pid.tooltip":"OSが使用するプロセス識別子です。","connection.server.uptime":"稼働時間","connection.server.uptime.tooltip":"MCPサーバーの起動後に経過した時間です。","connection.server.session":"セッション","connection.server.session.tooltip":"現在のMCPセッション識別子です。","connection.server.exec":"実行ファイル","connection.server.exec.tooltip":"MCPサーバーを起動した実行ファイルのパスです。","connection.reconnect":"再接続","connection.checkSettings":"設定を確認","connection.agents.title":"AIエージェント","connection.agents.name":"エージェント","connection.agents.cwd":"作業ディレクトリ","connection.agents.cwd.tooltip":"接続中のAIエージェントの現在の作業ディレクトリです。","connection.agents.connected":"接続時刻","connection.agents.unknown":"不明","connection.agents.none":"接続中のエージェントなし","connection.plugins.title":"プラグイン","connection.plugins.place":"プレイス","connection.plugins.clientId":"クライアントID","connection.plugins.clientId.tooltip":"このStudio接続を識別するプラグインクライアントIDです。","connection.plugins.lastSeen":"最終確認","connection.plugins.lastSeen.tooltip":"プラグインから最後に受信したハートビート時刻です。","connection.plugins.version":"バージョン","connection.plugins.version.tooltip":"Studioが報告したインストール済みプラグインのバージョンです。","connection.plugins.none":"接続中のプラグインなし","connection.log.title":"接続ログ","connection.log.empty":"イベントなし","connection.time.secondsAgo":"秒前","connection.time.minutesAgo":"分前","connection.time.hoursAgo":"時間前","common.loading":"読み込み中...","common.retry":"再試行","common.reconnecting":"再接続中...","common.expand":"展開","common.collapse":"折りたたむ","tools.tab.history":"履歴","tools.tab.statistics":"統計","tools.tab.failures":"失敗","tools.col.time":"時刻","tools.col.time.tooltip":"ツール実行が記録された時刻です。","tools.col.toolAction":"ツール.アクション","tools.col.toolAction.tooltip":"実行されたツール名とアクションです。","tools.col.duration":"所要時間","tools.col.duration.tooltip":"ツール完了までにかかった時間です。","tools.col.status":"ステータス","tools.col.status.tooltip":"記録されたツール実行の結果です。","tools.col.tier":"ティア","tools.col.tier.tooltip":"そのツールまたはアクションに必要なライセンスティアです。","tools.col.tierStats.tooltip":"ツール統計行がBasic、Pro、Mixedのどれに当たるかを示します。","tools.col.tool":"ツール","tools.col.tool.tooltip":"統計テーブルに表示される統合ツール名です。","tools.col.calls":"呼び出し数","tools.col.calls.tooltip":"このツールで記録された総呼び出し回数です。","tools.col.okRate":"成功率","tools.col.okRate.tooltip":"正常に完了した呼び出しの割合です。","tools.col.avgTime":"平均時間","tools.col.avgTime.tooltip":"記録された呼び出し全体の平均実行時間です。","tools.col.error":"エラー","tools.filter.tool":"ツール","tools.filter.all":"すべて","tools.badge.pro":"PRO","tools.badge.pro.tooltip":"この項目はPro専用のツールまたはアクションを使用しました。","tools.status.ok":"OK","tools.status.ok.tooltip":"ツール実行が正常に完了しました。","tools.tier.mixed.tooltip":"このツールにはBasicとProのアクションが両方含まれます。","tools.detail.params":"パラメータ","tools.detail.params.tooltip":"このツール実行に渡された入力パラメータです。","tools.detail.result":"結果","tools.detail.result.tooltip":"このツール実行から返された結果ペイロードです。","tools.detail.error":"エラー","tools.page.prev":"前へ","tools.page.prev.tooltip":"ツール履歴の前のページへ移動します。","tools.page.next":"次へ","tools.page.next.tooltip":"ツール履歴の次のページへ移動します。","tools.empty.history":"履歴なし","tools.empty.stats":"ツール統計なし","tools.empty.failures":"失敗なし","tools.summary.total":"合計","tools.summary.calls":"呼び出し","tools.summary.sessions":"セッション","settings.license.title":"ライセンス","settings.license.title.tooltip":"現在のライセンス状態とサブスクリプションティアです。","settings.license.status":"ステータス","settings.license.status.tooltip":"現在のライセンス有効化状態です。","settings.license.tier":"ティア","settings.license.tier.tooltip":"利用できるダッシュボード機能を決める現在のサブスクリプションティアです。","settings.license.key":"キー","settings.license.key.tooltip":"現在サーバーに読み込まれているマスク済みライセンスキーです。","settings.license.keyValue.tooltip":"現在サーバーに読み込まれているマスク済みライセンスキーです。","settings.license.provider":"プロバイダー","settings.license.provider.tooltip":"このキーを検証するライセンスプロバイダーです。","settings.license.providerValue.tooltip":"このキーを検証するライセンスプロバイダーです。","settings.license.active":"有効","settings.license.active.tooltip":"現在のライセンス有効化状態です。","settings.license.inactive":"無効","settings.license.inactive.tooltip":"現在のライセンス有効化状態です。","settings.license.expired":"期限切れ","settings.license.expired.tooltip":"現在のライセンス有効化状態です。","settings.license.unavailable":"ライセンス情報を取得できません","settings.readOnly":"読み取り専用","settings.readOnly.tooltip":"このセクションの値はダッシュボードから編集できません。","settings.unavailable":"設定を取得できません","settings.general.title":"一般設定","settings.general.title.tooltip":"変更すると即時反映されるHot設定です。","settings.general.liveApply":"即時反映","settings.general.liveApply.tooltip":"このセクションの変更は別の保存ボタンなしですぐ適用されます。","settings.general.applied":"適用済み","settings.general.logLevel":"ログレベル","settings.general.logLevel.tooltip":"ダッシュボードログに出力する詳細度を設定します。","settings.general.localHistory":"ツール履歴記録","settings.general.localHistory.tooltip":"ダッシュボード履歴画面用にローカルのツール実行履歴を保存します。","settings.general.localStatistics":"ツール統計収集","settings.general.localStatistics.tooltip":"ダッシュボード表示用にローカル利用統計を集計します。","settings.general.requestTimeout":"リクエストタイムアウト","settings.general.requestTimeout.tooltip":"リクエストを失敗扱いにするまでダッシュボードが待機する最大時間です。","settings.general.requestTimeout.unit":"ms","settings.general.requestTimeout.unit.tooltip":"リクエストタイムアウトの単位はミリ秒です。","settings.cold.title":"サーバー環境変数","settings.cold.title.tooltip":"サーバー起動時に読み込まれる読み取り専用の環境変数です。","settings.cold.httpPort.tooltip":"MCPダッシュボードHTTPサーバーが使用するポート番号です。","settings.cold.httpHost.tooltip":"MCPダッシュボードHTTPサーバーがバインドするホストインターフェースです。","settings.cold.dashboardAutoOpen.tooltip":"サーバー起動時にブラウザーでダッシュボードを自動で開くかどうかを制御します。","settings.cold.dashboardAutoOpen.value.tooltip":"ブラウザー自動起動の現在の起動動作です。","settings.cold.hint":"環境変数で設定してください。","settings.sync.title":"同期設定","settings.sync.title.tooltip":"プロジェクトファイルのインデックス化と走査に使う同期制限値です。","settings.sync.maxDepth":"最大深度","settings.sync.maxDepth.tooltip":"同期スキャナーが走査する最大フォルダー深度です。","settings.sync.maxInstances":"最大インスタンス数","settings.sync.maxInstances.tooltip":"同期中にインデックス化するRobloxインスタンスの最大数です。","settings.sync.save":"保存","settings.language.title":"言語","settings.language.title.tooltip":"ダッシュボードUIテキストの表示言語を選択します。","settings.language.dashboard":"ダッシュボード言語","settings.language.dashboard.tooltip":"Autoではシステム言語を使い、それ以外では選択した言語を強制します。","settings.language.auto":"自動","overview.l0.title":"MCPサーバー切断","overview.l0.message":"MCPサーバーが応答していません。ダッシュボードが自動的に再接続を試みます。","overview.l0.step1":"MCPサーバープロセスが実行中か確認してください","overview.l0.step2":"必要に応じてMCPサーバーコマンドを再起動してください","overview.l0.reconnecting":"3秒ごとに自動再接続中...","overview.l0.reconnectBtn":"再接続","overview.l0.settingsBtn":"設定を確認","overview.l1.pluginGuide":"Roblox Studioプラグインが接続されていません","overview.l1.check1":"Roblox Studioは実行中ですか?","overview.l1.check2":"Weppy MCPプラグインはインストール済みですか?","overview.l1.check3":"Studio設定でHTTPリクエストは有効ですか?","overview.l1.feedHint":"プラグインが接続されると変更がここに表示されます","overview.metric.server":"サーバー","overview.metric.server.tooltip":"MCPサーバーの実行状態とプロセス状態です。","overview.metric.plugin":"プラグイン","overview.metric.plugin.tooltip":"Roblox Studioプラグインの接続状態とバージョン情報です。","overview.metric.agent":"エージェント","overview.metric.agent.tooltip":"接続中のAIコーディングエージェントと現在の実行状態です。","overview.metric.agent.instancesUnit":"インスタンス","overview.metric.sync":"同期","overview.metric.sync.tooltip":"現在のStudioとローカルファイル間の同期状態です。","overview.metric.noAgent":"エージェントなし","overview.meta.version":"バージョン","overview.meta.version.tooltip":"インストールされているMCPサーバーのバージョンです。","overview.meta.session":"セッション","overview.meta.session.tooltip":"現在のMCPセッション識別子です。","overview.meta.pid":"PID","overview.meta.pid.tooltip":"OSが使用するプロセス識別子です。","overview.meta.uptime":"稼働時間","overview.meta.uptime.tooltip":"MCPサーバーの起動後に経過した時間です。","overview.feed.title":"最近のゲーム変更","overview.feed.empty":"最近の変更なし","overview.changelog.title":"セッション変更サマリー","overview.changelog.entries":"合計","overview.changelog.scripts":"スクリプト","overview.changelog.instances":"インスタンス","overview.changelog.properties":"プロパティ","overview.changelog.assets":"アセット","overview.tier.title":"ティア使用状況","changelog.subtitle":"ゲーム変更履歴","changelog.filter.all":"すべて","changelog.filter.active":"アクティブ","changelog.filter.completed":"完了","changelog.empty":"変更履歴がありません","changelog.card.active":"アクティブ","changelog.card.active.tooltip":"このセッションはまだ新しいゲーム変更を受信しています。","changelog.card.completed":"完了","changelog.card.completed.tooltip":"このセッションは終了しており、これ以上変更は追加されません。","changelog.card.bootstrapStatus":"初期化","changelog.card.bootstrapStatus.tooltip":"このセッションには初期同期ブートストラップのスナップショットのみが含まれます。","changelog.card.inProgress":"進行中","changelog.card.noChanges":"変更なし","changelog.card.noChanges.tooltip":"このセッションではまだ抽出されたゲーム変更がありません。","changelog.card.bootstrapSummary":"初期同期スナップショット","changelog.card.bootstrapSummary.tooltip":"初期ファイル同期の書き込みは 1 件のブートストラップスナップショット行にまとめられます。","changelog.card.scripts":"スクリプト","changelog.card.scripts.tooltip":"このセッションで発生したスクリプト変更です。","changelog.card.instances":"インスタンス","changelog.card.instances.tooltip":"このセッションで発生したインスタンスの作成、削除、移動、複製です。","changelog.card.modified":"変更","changelog.card.created":"作成","changelog.card.deleted":"削除","changelog.card.moved":"移動","changelog.card.propertiesChanged":"プロパティ変更","changelog.card.propertiesChanged.tooltip":"このセッションで記録されたプロパティ値の変更です。","changelog.card.lightingConfigured":"ライティング設定済み","changelog.card.lightingConfigured.tooltip":"このセッションでライティングまたは大気設定が変更されました。","changelog.card.terrainConfigured":"テレイン設定済み","changelog.card.terrainConfigured.tooltip":"このセッションでテレインデータまたはテレイン設定が変更されました。","changelog.card.assetsInserted":"アセット挿入","changelog.card.assetsInserted.tooltip":"このセッション中にプレイスへ挿入されたアセットです。","changelog.category.script":"スクリプト","changelog.category.instance":"インスタンス","changelog.category.property":"プロパティ","changelog.category.lighting":"ライティング","changelog.category.terrain":"テレイン","changelog.category.asset":"アセット","changelog.detail.changeSummary":"変更サマリー","changelog.detail.changeSummary.tooltip":"このセッションで抽出されたゲーム変更数をカテゴリ別に表示します。","changelog.detail.changeTimeline":"変更タイムライン","changelog.detail.changeTimeline.tooltip":"このセッションで抽出されたゲーム変更を時系列で表示します。","changelog.detail.beforeAfter":"変更前後の比較","changelog.detail.filterCategory":"カテゴリ","changelog.detail.filterCategory.tooltip":"タイムラインを 1 つの変更カテゴリに絞り込みます。","changelog.detail.confidence.exact":"正確","changelog.detail.confidence.exact.tooltip":"この変更は変更前と変更後の状態が両方確認されています。","changelog.detail.confidence.partial":"部分確認","changelog.detail.confidence.partial.tooltip":"この変更は変更前後の状態の一部のみ確認されています。","changelog.detail.confidence.afterOnly":"結果のみ確認","changelog.detail.confidence.afterOnly.tooltip":"この変更は適用後の結果状態のみ確認されています。","changelog.detail.confidence.intentOnly":"意図のみ記録","changelog.detail.confidence.intentOnly.tooltip":"要求された操作意図のみが記録され、結果状態は確認されていません。","changelog.detail.confidence.unknown":"不明","changelog.detail.confidence.unknown.tooltip":"利用可能なデータだけではこの変更を確実に分類できませんでした。","changelog.detail.noChanges":"このカテゴリに変更なし","changelog.detail.backToList":"一覧に戻る","changelog.diff.empty":"差分なし","changelog.diff.unified":"統合","changelog.diff.sideBySide":"並列比較","changelog.diff.before":"変更前","changelog.diff.after":"変更後","sync.overlay.title":"Roblox Studioプラグインが必要です","sync.overlay.message":"Roblox Studioプラグインが接続されると同期状態を確認できます。","sync.overlay.check1":"Roblox Studioは実行中ですか?","sync.overlay.check2":"Weppy MCPプラグインはインストール済みですか?","sync.overlay.check3":"Studio設定でHTTPリクエストは有効ですか?","sync.status.title":"同期ステータス","sync.status.title.tooltip":"このプレイスのStudioとローカルファイルの同期状態です。","sync.status.forwardOnly":"順方向のみ","sync.status.forwardOnly.tooltip":"BasicティアではStudioからローカルへの順方向同期のみ利用できます。","sync.status.place":"プレイス","sync.status.place.tooltip":"接続中のRobloxプレイス名とプレイスIDです。","sync.status.path":"パス","sync.status.path.tooltip":"現在同期出力に使っているローカルファイルシステムのルートです。","sync.status.instances":"インスタンス","sync.status.instances.tooltip":"ローカルミラーで追跡中の同期済みRobloxインスタンス総数です。","sync.status.scripts":"スクリプト","sync.status.scripts.tooltip":"このプレイスで現在インデックスされている同期スクリプトファイル数です。","sync.status.state":"状態","sync.status.state.tooltip":"サーバーが報告した現在の同期ランタイム状態です。","sync.directions.title":"同期方向","sync.directions.title.tooltip":"LocalとStudioの間のカテゴリ別同期方向と適用方法です。","sync.directions.type":"タイプ","sync.directions.type.tooltip":"このルールが適用される同期カテゴリです。","sync.directions.direction":"方向","sync.directions.direction.tooltip":"各カテゴリがStudioから、Studioへ、または双方向で同期されるかを示します。","sync.directions.applyMode":"適用モード","sync.directions.applyMode.tooltip":"このカテゴリに届く同期変更の適用方法です。","sync.directions.cat.scripts":"スクリプト","sync.directions.cat.values":"値","sync.directions.cat.containers":"コンテナ","sync.directions.cat.data":"データ","sync.directions.cat.services":"サービス","sync.directions.endpoint.local":"Local","sync.directions.endpoint.local.tooltip":"方向レールの左側は常にディスク上のローカルファイルです。","sync.directions.endpoint.studio":"Studio","sync.directions.endpoint.studio.tooltip":"方向レールの右側は常にRoblox Studioです。","sync.directions.mode.manual":"手動","sync.directions.mode.manual.tooltip":"手動で実行したときだけ同期変更を適用します。","sync.directions.mode.auto":"自動","sync.directions.mode.auto.tooltip":"更新を受け取ると同期変更を自動で適用します。","sync.directions.tooltip.forward.body":"Studioの変更をローカルファイルのみに同期します","sync.directions.tooltip.bidirectional.body":"LocalとStudioの間で双方向同期を行います","sync.directions.tooltip.reverse.body":"ローカルファイルの変更をStudioへ反映します","sync.directions.tooltip.proRequired":"BasicティアではProが必要です","sync.directions.dir.forward":"順方向","sync.directions.dir.bidirectional":"双方向","sync.directions.dir.reverse":"逆方向","sync.config.title":"同期設定","sync.config.maxDepth":"最大深度","sync.config.maxInstances":"最大インスタンス数","sync.config.dirLimit":"ディレクトリ制限","sync.log.title":"同期ログ","sync.log.empty":"同期イベントなし","sync.log.type.write":"書き込み","sync.log.type.write.tooltip":"新しい同期出力がディスクに書き込まれました。","sync.log.type.update":"更新","sync.log.type.update.tooltip":"既存の同期ファイルまたはインスタンスが更新されました。","sync.log.type.delete":"削除","sync.log.type.delete.tooltip":"同期済みファイルまたはインスタンスが削除されました。","sync.log.type.idle":"待機","sync.log.type.idle.tooltip":"ファイル変更なしで同期イベントのみ記録されました。","sync.upgrade.title":"Proで完全な同期機能を解放","sync.upgrade.benefit1":"双方向同期 — ファイルを編集するとStudioに自動反映","sync.upgrade.benefit2":"逆方向同期 — ファイルの変更をStudioに送信","sync.upgrade.benefit3":"完全な同期履歴と詳細な変更ログ","sync.upgrade.buy":"Proにアップグレード","playtest.status.title":"プレイテストステータス","playtest.status.title.tooltip":"Studio が報告した現在の Roblox プレイテストセッション状態です。","playtest.status.mode":"モード","playtest.status.mode.tooltip":"現在のセッションで使われている Studio プレイテスト起動モードです。","playtest.status.mode.value.tooltip":"現在使用中の Roblox Studio プレイテストモードの具体的な値です。","playtest.status.mode.play":"プレイ","playtest.status.mode.run":"実行","playtest.status.mode.server":"サーバー","playtest.status.mode.edit":"編集","playtest.status.place.tooltip":"このプレイテストセッションに関連付けられた Roblox プレイスです。","playtest.status.state.running":"実行中","playtest.status.state.running.tooltip":"現在 Roblox プレイテストセッションが実行中です。","playtest.status.state.paused":"一時停止","playtest.status.state.paused.tooltip":"現在の Roblox プレイテストセッションは一時停止中です。","playtest.status.state.notRunning":"未実行","playtest.status.state.notRunning.tooltip":"現在実行中の Roblox プレイテストセッションはありません。","playtest.control.play":"プレイ","playtest.control.pause":"一時停止","playtest.control.resume":"再開","playtest.control.stop":"停止","playtest.history.title":"テスト履歴","playtest.history.title.tooltip":"このプロジェクトで記録された自動プレイテスト実行履歴です。","playtest.history.empty":"テスト結果なし","playtest.history.mode":"モード","playtest.history.mode.tooltip":"この記録済みテスト実行で使われたプレイテストモードです。","playtest.history.status.passed":"成功","playtest.history.status.failed":"失敗","playtest.history.status.running":"実行中","playtest.history.status.unknown":"不明","playtest.history.status.tooltip":"この自動プレイテスト実行で記録された結果状態です。","playtest.empty.title":"プレイテスト結果がありません","playtest.empty.message":"AIエージェントがsystem_info.run_testで自動テストを実行すると結果が表示されます。","playtest.empty.message.before":"AIエージェントが自動テストを","playtest.empty.message.after":"で実行すると結果がここに表示されます。","playtest.empty.runTest.tooltip":"system_info ツール経由で Roblox プレイテスト検証を実行するダッシュボードの自動化入口です。","playtest.report.title":"選択されたレポート","playtest.report.title.tooltip":"現在選択されている自動プレイテスト実行の詳細出力です。","playtest.report.content":"レポート","playtest.report.content.tooltip":"選択された自動プレイテスト実行の Markdown 要約です。","playtest.report.logs":"ログ","playtest.report.logs.tooltip":"選択された自動プレイテスト実行で収集された実行ログです。","playtest.report.empty":"レポート内容なし","playtest.basic.icon":"🎮","playtest.basic.title":"プレイテストはPro専用機能です","playtest.basic.desc":"ダッシュボードからプレイテストを制御し、自動テストを実行し、詳細なテストレポートを確認できます。","playtest.basic.benefit1":"ワンクリックのプレイ/一時停止/停止コントロール","playtest.basic.benefit2":"AIエージェントによる自動テスト実行","playtest.basic.benefit3":"成功/失敗追跡付きテスト履歴","playtest.basic.benefit4":"詳細なマークダウンテストレポート"},nh={"sidebar.overview":"Ringkasan","sidebar.changelog":"Riwayat","sidebar.connection":"Koneksi","sidebar.sync":"Sinkronisasi","sidebar.playtest":"Playtest","sidebar.tools":"Alat","sidebar.settings":"Pengaturan","header.currentProject":"Proyek saat ini","header.unknownProject":"Proyek tidak dikenal","header.placeNotConnected":"Place belum terhubung","header.currentProject.tooltip":"Folder proyek yang sedang dipilih.","header.place.tooltip":"Place Roblox yang terhubung.","header.placeNotConnected.tooltip":"Place belum terhubung","sidebar.gate.l1":"Koneksi server MCP diperlukan.","sidebar.gate.l2":"Koneksi plugin Roblox Studio diperlukan.","status.online":"Online","status.offline":"Offline","status.idle":"Menunggu","status.syncing":"Menyinkronkan","status.error":"Error","status.initializing":"Menginisialisasi","level.l0.title":"Server MCP terputus","level.l0.message":"Dashboard terbuka tapi server MCP telah berhenti atau tidak merespons.","level.l1.title":"Plugin tidak terhubung","level.l1.hint":"Periksa: Apakah Roblox Studio berjalan? Apakah plugin terinstal? Apakah HTTP Requests diaktifkan?","level.l2.ok":"Semua terhubung","tier.basic":"Basic","tier.basic.tooltip":"Tier Basic dengan kumpulan fitur dashboard standar.","tier.pro":"Pro","tier.pro.tooltip":"Tier Pro dengan kumpulan fitur dashboard lengkap.","tier.mixed":"Campuran","tier.upgrade":"Upgrade ke Pro","tier.compare":"Basic vs Pro","tier.banner.save":"Hemat token AI dengan Pro!","tier.comparison.comingSoon":"Perbandingan Basic vs Pro — segera hadir","tier.comparison.close":"Tutup","tier.comparison.detailTitle":"Katalog alat detail","tier.comparison.description":"Deskripsi","tier.comparison.basic.core":"Alur kerja MCP dasar","tier.comparison.basic.core.item1":"Buat/edit script","tier.comparison.basic.core.item2":"Manajemen instance","tier.comparison.basic.core.item3":"Kontrol properti","tier.comparison.basic.core.item4":"Seleksi dan pencarian","tier.comparison.basic.core.item5":"Manajemen tag","tier.comparison.basic.core.item6":"Kontrol kamera","tier.comparison.basic.core.item7":"Pemantauan log","tier.comparison.basic.sync":"Sinkronisasi (Basic)","tier.comparison.basic.sync.item1":"Sinkronisasi satu arah dari Studio ke lokal","tier.comparison.basic.sync.item2":"Penerapan manual sebagai default","tier.comparison.basic.sync.item3":"Pengaturan sinkronisasi Pro hanya baca","tier.comparison.pro.all":"Semua di Basic, ditambah","tier.comparison.pro.sync":"Alur sinkronisasi lanjutan","tier.comparison.pro.sync.item1":"Arah sinkronisasi per tipe","tier.comparison.pro.sync.item2":"Mode penerapan per tipe","tier.comparison.pro.sync.item3":"Sinkronisasi dua arah dan terbalik","tier.comparison.pro.sync.item4":"Sinkronisasi penuh, sinkronisasi ulang, dan kirim ke Studio","tier.comparison.pro.sync.item5":"Sinkronisasi multi-tempat","tier.comparison.pro.playtest":"Kontrol playtest","tier.comparison.pro.playtest.item1":"Putar, hentikan, jeda, dan lanjutkan","tier.comparison.pro.playtest.item2":"Inspeksi status playtest","tier.comparison.pro.playtest.item3":"Eksekusi pengujian otomatis","tier.comparison.pro.creation":"Alur pembuatan lanjutan","tier.comparison.pro.creation.item1":"Operasi massal","tier.comparison.pro.creation.item2":"Pembuatan terrain","tier.comparison.pro.creation.item3":"Pencarian dan penyisipan aset","tier.comparison.pro.creation.item4":"Raycast dan analisis spasial","tier.comparison.pro.creation.item5":"Kontrol lingkungan","tier.tool.query_instances.desc":"Kueri instance, jelajahi anak/keturunan, info kelas, cari berdasarkan nama dan kelas. Pro: pohon file, struktur proyek, pencarian berdasarkan properti dan tag.","tier.tool.mutate_instances.desc":"Buat, hapus, klon, pindah, ganti nama, dan pivot instance. Pro: pembuatan pohon, pembuatan/penghapusan/duplikasi massal.","tier.tool.manage_properties.desc":"Lihat dan atur properti, atribut, dan tag. Pro: nilai kalkulasi dan relatif, lihat/atur massal, modifikasi massal anak.","tier.tool.manage_scripts.desc":"Baca, tulis, buat, hapus, edit baris, dan cari di script. Pro: penggantian massal antar script.","tier.tool.manage_lighting.desc":"Khusus Pro. Pengaturan pencahayaan, atmosfer, langit, properti terrain, dan waktu.","tier.tool.manage_selection.desc":"Lihat, atur, dan hapus seleksi. Pro: konteks, detail, tambah/hapus item, pantau perubahan.","tier.tool.manage_camera.desc":"Info kamera, fokus berdasarkan jalur atau koordinat, saran tampilan.","tier.tool.manage_tween.desc":"Khusus Pro. Buat, putar, jeda, dan batalkan tween untuk animasi halus.","tier.tool.manage_audio.desc":"Khusus Pro. Putar, hentikan, jeda, dan lanjutkan suara. Atur listener audio.","tier.tool.manage_animation.desc":"Khusus Pro. Muat, putar, dan hentikan animasi. Lihat track humanoid/pengontrol.","tier.tool.manage_physics.desc":"Khusus Pro. Daftarkan grup tabrakan, atur tabrakan antar grup, daftar grup.","tier.tool.manage_effects.desc":"Khusus Pro. Pancarkan partikel, hapus semua, aktifkan/nonaktifkan efek.","tier.tool.manage_terrain.desc":"Khusus Pro. Isi bentuk, hapus wilayah, ganti material, kelola warna, baca/tulis voxel, pembuatan prosedural, pemulusan.","tier.tool.spatial_query.desc":"Khusus Pro. Raycast, cari tanah, periksa penempatan, pindai area, cari area datar dan titik spawn, analisis kemampuan jalan, peta spasial, deteksi tabrakan.","tier.tool.manage_assets.desc":"Khusus Pro. Sisipkan model, lihat info aset, cari di toko kreator, sisipkan model/paket gratis, ekspor.","tier.tool.manage_sync.desc":"Khusus Pro. Status sinkronisasi, konfigurasi, riwayat, arah, baca/tulis file tersinkronisasi.","tier.tool.workspace_state.desc":"Khusus Pro. Sinkronisasi penuh, snapshot, perubahan terbaru, info viewport, metadata, manajemen cache.","tier.tool.manage_logs.desc":"Kueri log terfilter, polling inkremental, hapus buffer, kueri error terbaru.","tier.tool.system_info.desc":"Status koneksi, verifikasi tier. Pro: info tempat, daftar layanan, pengaturan Studio, kontrol playtest, pengujian otomatis.","tier.tool.batch_execute.desc":"Khusus Pro. Eksekusi beberapa perintah sekaligus. Pemrosesan berurutan dengan opsi lanjut saat error.","tier.tool.execute_luau.desc":"Khusus Pro. Jalankan kode Luau di sandbox Roblox Studio.","connection.server.title":"Status Server","connection.server.version":"Versi","connection.server.version.tooltip":"Versi server MCP yang terpasang.","connection.server.pid":"PID","connection.server.pid.tooltip":"Pengenal proses dari sistem operasi.","connection.server.uptime":"Waktu aktif","connection.server.uptime.tooltip":"Waktu yang berlalu sejak server MCP dimulai.","connection.server.session":"Sesi","connection.server.session.tooltip":"Pengenal sesi MCP saat ini.","connection.server.exec":"Eksekutabel","connection.server.exec.tooltip":"Path eksekutabel yang digunakan untuk menjalankan server MCP.","connection.reconnect":"Hubungkan ulang","connection.checkSettings":"Periksa pengaturan","connection.agents.title":"Agen AI","connection.agents.name":"Agen","connection.agents.cwd":"Direktori kerja","connection.agents.cwd.tooltip":"Direktori kerja saat ini milik agen AI yang terhubung.","connection.agents.connected":"Terhubung","connection.agents.unknown":"Tidak diketahui","connection.agents.none":"Tidak ada agen terhubung","connection.plugins.title":"Plugin","connection.plugins.place":"Place","connection.plugins.clientId":"ID Klien","connection.plugins.clientId.tooltip":"Pengenal unik klien plugin untuk koneksi Studio ini.","connection.plugins.lastSeen":"Terakhir terlihat","connection.plugins.lastSeen.tooltip":"Heartbeat terbaru yang diterima dari plugin.","connection.plugins.version":"Versi","connection.plugins.version.tooltip":"Versi plugin terpasang yang dilaporkan oleh Studio.","connection.plugins.none":"Tidak ada plugin terhubung","connection.log.title":"Log Koneksi","connection.log.empty":"Belum ada event","connection.time.secondsAgo":"dtk lalu","connection.time.minutesAgo":"mnt lalu","connection.time.hoursAgo":"jam lalu","common.loading":"Memuat...","common.retry":"Coba lagi","common.reconnecting":"Menghubungkan ulang...","common.expand":"Perluas","common.collapse":"Ciutkan","tools.tab.history":"Riwayat","tools.tab.statistics":"Statistik","tools.tab.failures":"Kegagalan","tools.col.time":"Waktu","tools.col.time.tooltip":"Waktu ketika eksekusi alat dicatat.","tools.col.toolAction":"Alat.Aksi","tools.col.toolAction.tooltip":"Nama alat dan aksi yang dijalankan.","tools.col.duration":"Durasi","tools.col.duration.tooltip":"Berapa lama alat menyelesaikan eksekusi.","tools.col.status":"Status","tools.col.status.tooltip":"Hasil dari eksekusi alat yang tercatat.","tools.col.tier":"Tier","tools.col.tier.tooltip":"Tier lisensi yang dibutuhkan untuk alat atau aksi ini.","tools.col.tierStats.tooltip":"Ringkasan Basic, Pro, atau Mixed untuk baris statistik alat ini.","tools.col.tool":"Alat","tools.col.tool.tooltip":"Nama alat konsolidasi pada tabel statistik.","tools.col.calls":"Panggilan","tools.col.calls.tooltip":"Jumlah total panggilan yang tercatat untuk alat ini.","tools.col.okRate":"% Sukses","tools.col.okRate.tooltip":"Persentase panggilan yang selesai dengan sukses.","tools.col.avgTime":"Waktu rata-rata","tools.col.avgTime.tooltip":"Rata-rata waktu eksekusi dari panggilan yang tercatat.","tools.col.error":"Error","tools.filter.tool":"Alat","tools.filter.all":"Semua","tools.badge.pro":"PRO","tools.badge.pro.tooltip":"Entri ini menggunakan alat atau aksi khusus Pro.","tools.status.ok":"OK","tools.status.ok.tooltip":"Eksekusi alat selesai dengan sukses.","tools.tier.mixed.tooltip":"Alat ini memiliki campuran aksi Basic dan Pro.","tools.detail.params":"Parameter","tools.detail.params.tooltip":"Parameter input yang dikirim pada eksekusi alat ini.","tools.detail.result":"Hasil","tools.detail.result.tooltip":"Payload hasil yang dikembalikan dari eksekusi alat ini.","tools.detail.error":"Error","tools.page.prev":"Sebelumnya","tools.page.prev.tooltip":"Pindah ke halaman sebelumnya pada riwayat alat.","tools.page.next":"Selanjutnya","tools.page.next.tooltip":"Pindah ke halaman berikutnya pada riwayat alat.","tools.empty.history":"Tidak ada entri riwayat","tools.empty.stats":"Tidak ada statistik alat","tools.empty.failures":"Tidak ada kegagalan","tools.summary.total":"Total","tools.summary.calls":"panggilan","tools.summary.sessions":"Sesi","settings.license.title":"Lisensi","settings.license.title.tooltip":"Status lisensi dan tier langganan saat ini.","settings.license.status":"Status","settings.license.status.tooltip":"Status aktivasi lisensi saat ini.","settings.license.tier":"Tier","settings.license.tier.tooltip":"Tier langganan saat ini untuk fitur dashboard yang tersedia.","settings.license.key":"Kunci","settings.license.key.tooltip":"Kunci lisensi tersamarkan yang saat ini dimuat oleh server.","settings.license.keyValue.tooltip":"Kunci lisensi tersamarkan yang saat ini dimuat oleh server.","settings.license.provider":"Penyedia","settings.license.provider.tooltip":"Penyedia lisensi yang digunakan untuk memvalidasi kunci ini.","settings.license.providerValue.tooltip":"Penyedia lisensi yang digunakan untuk memvalidasi kunci ini.","settings.license.active":"Aktif","settings.license.active.tooltip":"Status aktivasi lisensi saat ini.","settings.license.inactive":"Tidak aktif","settings.license.inactive.tooltip":"Status aktivasi lisensi saat ini.","settings.license.expired":"Kedaluwarsa","settings.license.expired.tooltip":"Status aktivasi lisensi saat ini.","settings.license.unavailable":"Info lisensi tidak tersedia","settings.readOnly":"Hanya baca","settings.readOnly.tooltip":"Bagian ini menampilkan nilai yang tidak bisa diedit dari dashboard.","settings.unavailable":"Pengaturan tidak tersedia","settings.general.title":"Pengaturan umum","settings.general.title.tooltip":"Pengaturan panas yang langsung diterapkan saat diubah.","settings.general.liveApply":"Terapkan langsung","settings.general.liveApply.tooltip":"Perubahan di bagian ini langsung diterapkan tanpa tombol simpan terpisah.","settings.general.applied":"Diterapkan","settings.general.logLevel":"Level log","settings.general.logLevel.tooltip":"Menetapkan seberapa detail dashboard menulis lognya.","settings.general.localHistory":"Perekaman riwayat alat","settings.general.localHistory.tooltip":"Menyimpan riwayat eksekusi alat lokal untuk tampilan riwayat dashboard.","settings.general.localStatistics":"Pengumpulan statistik alat","settings.general.localStatistics.tooltip":"Mengumpulkan statistik penggunaan lokal untuk pelaporan dashboard.","settings.general.requestTimeout":"Batas waktu permintaan","settings.general.requestTimeout.tooltip":"Waktu maksimum dashboard menunggu permintaan sebelum dianggap gagal.","settings.general.requestTimeout.unit":"ms","settings.general.requestTimeout.unit.tooltip":"Batas waktu permintaan diukur dalam milidetik.","settings.cold.title":"Lingkungan server","settings.cold.title.tooltip":"Nilai lingkungan server hanya-baca yang dimuat saat startup.","settings.cold.httpPort.tooltip":"Nomor port yang digunakan oleh server HTTP dashboard MCP.","settings.cold.httpHost.tooltip":"Antarmuka host yang diikat oleh server HTTP dashboard MCP.","settings.cold.dashboardAutoOpen.tooltip":"Mengontrol apakah dashboard terbuka otomatis di browser saat server dimulai.","settings.cold.dashboardAutoOpen.value.tooltip":"Perilaku startup saat ini untuk membuka dashboard di browser.","settings.cold.hint":"Atur melalui variabel lingkungan.","settings.sync.title":"Pengaturan sinkronisasi","settings.sync.title.tooltip":"Batas sinkronisasi tersimpan untuk pengindeksan dan penelusuran file proyek.","settings.sync.maxDepth":"Kedalaman maks","settings.sync.maxDepth.tooltip":"Kedalaman folder maksimum yang akan ditelusuri pemindai sinkronisasi.","settings.sync.maxInstances":"Instansi maks","settings.sync.maxInstances.tooltip":"Jumlah maksimum instance Roblox yang diindeks selama sinkronisasi.","settings.sync.save":"Simpan","settings.language.title":"Bahasa","settings.language.title.tooltip":"Pilih cara teks antarmuka dashboard dilokalkan.","settings.language.dashboard":"Bahasa dashboard","settings.language.dashboard.tooltip":"Mengganti bahasa dashboard atau mengikuti bahasa sistem saat disetel ke Otomatis.","settings.language.auto":"Otomatis","overview.l0.title":"Server MCP terputus","overview.l0.message":"Server MCP tidak merespons. Dashboard akan mencoba menghubungkan ulang secara otomatis.","overview.l0.step1":"Periksa apakah proses server MCP sedang berjalan","overview.l0.step2":"Mulai ulang perintah server MCP jika diperlukan","overview.l0.reconnecting":"Menghubungkan ulang otomatis setiap 3 detik...","overview.l0.reconnectBtn":"Hubungkan ulang","overview.l0.settingsBtn":"Periksa pengaturan","overview.l1.pluginGuide":"Plugin Roblox Studio tidak terhubung","overview.l1.check1":"Apakah Roblox Studio sedang berjalan?","overview.l1.check2":"Apakah plugin Weppy MCP sudah terinstal?","overview.l1.check3":"Apakah HTTP Requests diaktifkan di pengaturan Studio?","overview.l1.feedHint":"Perubahan akan muncul di sini setelah plugin terhubung","overview.metric.server":"Server","overview.metric.server.tooltip":"Status runtime dan proses server MCP.","overview.metric.plugin":"Plugin","overview.metric.plugin.tooltip":"Status koneksi dan versi plugin Roblox Studio.","overview.metric.agent":"Agen","overview.metric.agent.tooltip":"Agen coding AI yang terhubung dan status runtime-nya.","overview.metric.agent.instancesUnit":"instansi","overview.metric.sync":"Sinkronisasi","overview.metric.sync.tooltip":"Aktivitas sinkronisasi saat ini antara Studio dan file lokal.","overview.metric.noAgent":"Tidak ada agen","overview.meta.version":"Versi","overview.meta.version.tooltip":"Versi server MCP yang terpasang.","overview.meta.session":"Sesi","overview.meta.session.tooltip":"Pengenal sesi MCP saat ini.","overview.meta.pid":"PID","overview.meta.pid.tooltip":"Pengenal proses dari sistem operasi.","overview.meta.uptime":"Waktu aktif","overview.meta.uptime.tooltip":"Waktu yang berlalu sejak server MCP dimulai.","overview.feed.title":"Perubahan game terbaru","overview.feed.empty":"Tidak ada perubahan terbaru","overview.changelog.title":"Ringkasan perubahan sesi","overview.changelog.entries":"Total","overview.changelog.scripts":"skrip","overview.changelog.instances":"instansi","overview.changelog.properties":"properti","overview.changelog.assets":"aset","overview.tier.title":"Penggunaan tier","changelog.subtitle":"Riwayat perubahan game","changelog.filter.all":"Semua","changelog.filter.active":"Aktif","changelog.filter.completed":"Selesai","changelog.empty":"Belum ada entri riwayat","changelog.card.active":"Aktif","changelog.card.active.tooltip":"Sesi ini masih menerima perubahan game baru.","changelog.card.completed":"Selesai","changelog.card.completed.tooltip":"Sesi ini sudah berakhir dan tidak ada perubahan baru yang diharapkan.","changelog.card.bootstrapStatus":"Inisialisasi","changelog.card.bootstrapStatus.tooltip":"Sesi ini hanya berisi snapshot bootstrap sinkronisasi awal.","changelog.card.inProgress":"sedang berlangsung","changelog.card.noChanges":"Belum ada perubahan","changelog.card.noChanges.tooltip":"Belum ada perubahan game yang diekstrak untuk sesi ini.","changelog.card.bootstrapSummary":"Snapshot sinkronisasi awal","changelog.card.bootstrapSummary.tooltip":"Penulisan sinkronisasi file awal diringkas menjadi satu baris snapshot bootstrap.","changelog.card.scripts":"skrip","changelog.card.scripts.tooltip":"Perubahan skrip yang terjadi di sesi ini.","changelog.card.instances":"instansi","changelog.card.instances.tooltip":"Perubahan pembuatan, penghapusan, pemindahan, atau kloning instansi di sesi ini.","changelog.card.modified":"diubah","changelog.card.created":"dibuat","changelog.card.deleted":"dihapus","changelog.card.moved":"dipindahkan","changelog.card.propertiesChanged":"properti diubah","changelog.card.propertiesChanged.tooltip":"Perubahan nilai properti yang tercatat untuk sesi ini.","changelog.card.lightingConfigured":"Pencahayaan dikonfigurasi","changelog.card.lightingConfigured.tooltip":"Pencahayaan atau pengaturan atmosfer berubah di sesi ini.","changelog.card.terrainConfigured":"Terrain dikonfigurasi","changelog.card.terrainConfigured.tooltip":"Data terrain atau pengaturan terrain berubah di sesi ini.","changelog.card.assetsInserted":"aset disisipkan","changelog.card.assetsInserted.tooltip":"Aset yang dimasukkan ke place selama sesi ini.","changelog.category.script":"Skrip","changelog.category.instance":"Instansi","changelog.category.property":"Properti","changelog.category.lighting":"Pencahayaan","changelog.category.terrain":"Terrain","changelog.category.asset":"Aset","changelog.detail.changeSummary":"Ringkasan perubahan","changelog.detail.changeSummary.tooltip":"Jumlah perubahan game yang diekstrak dan dikelompokkan per kategori untuk sesi ini.","changelog.detail.changeTimeline":"Timeline perubahan","changelog.detail.changeTimeline.tooltip":"Daftar kronologis perubahan game yang diekstrak untuk sesi ini.","changelog.detail.beforeAfter":"Sebelum & Sesudah","changelog.detail.filterCategory":"Kategori","changelog.detail.filterCategory.tooltip":"Filter timeline ke satu kategori perubahan.","changelog.detail.confidence.exact":"Tepat","changelog.detail.confidence.exact.tooltip":"Status sebelum dan sesudah perubahan ini sama-sama terkonfirmasi.","changelog.detail.confidence.partial":"Parsial","changelog.detail.confidence.partial.tooltip":"Hanya sebagian status sebelum dan sesudah perubahan ini yang bisa dikonfirmasi.","changelog.detail.confidence.afterOnly":"Hanya sesudah","changelog.detail.confidence.afterOnly.tooltip":"Hanya status hasil setelah perubahan yang bisa dikonfirmasi.","changelog.detail.confidence.intentOnly":"Hanya niat","changelog.detail.confidence.intentOnly.tooltip":"Hanya aksi yang diminta yang tercatat, bukan status hasilnya.","changelog.detail.confidence.unknown":"Tidak diketahui","changelog.detail.confidence.unknown.tooltip":"Perubahan ini tidak dapat diklasifikasikan dengan yakin dari data yang tersedia.","changelog.detail.noChanges":"Tidak ada perubahan di kategori ini","changelog.detail.backToList":"Kembali ke daftar","changelog.diff.empty":"Tidak ada perbedaan","changelog.diff.unified":"Terpadu","changelog.diff.sideBySide":"Berdampingan","changelog.diff.before":"Sebelum","changelog.diff.after":"Sesudah","sync.overlay.title":"Plugin Roblox Studio diperlukan","sync.overlay.message":"Status sinkronisasi akan tersedia setelah plugin Roblox Studio terhubung.","sync.overlay.check1":"Apakah Roblox Studio sedang berjalan?","sync.overlay.check2":"Apakah plugin Weppy MCP sudah terinstal?","sync.overlay.check3":"Apakah HTTP Requests diaktifkan di pengaturan Studio?","sync.status.title":"Status sinkronisasi","sync.status.title.tooltip":"Status sinkronisasi Studio dan file lokal untuk place ini.","sync.status.forwardOnly":"Hanya maju","sync.status.forwardOnly.tooltip":"Tier Basic hanya mengizinkan sinkronisasi maju dari Studio ke lokal.","sync.status.place":"Place","sync.status.place.tooltip":"Nama place Roblox yang terhubung beserta ID place-nya.","sync.status.path":"Path","sync.status.path.tooltip":"Root sistem file lokal yang saat ini dipakai untuk output sinkronisasi.","sync.status.instances":"Instansi","sync.status.instances.tooltip":"Jumlah total instance Roblox yang disinkronkan di mirror lokal.","sync.status.scripts":"Skrip","sync.status.scripts.tooltip":"Jumlah total file skrip yang saat ini diindeks untuk place ini.","sync.status.state":"Status","sync.status.state.tooltip":"Status runtime sinkronisasi saat ini yang dilaporkan server.","sync.directions.title":"Arah sinkronisasi","sync.directions.title.tooltip":"Arah sinkronisasi per kategori dan cara penerapannya antara Local dan Studio.","sync.directions.type":"Tipe","sync.directions.type.tooltip":"Kategori sinkronisasi yang dipengaruhi aturan ini.","sync.directions.direction":"Arah","sync.directions.direction.tooltip":"Menunjukkan apakah tiap kategori sinkron dari Studio, ke Studio, atau dua arah.","sync.directions.applyMode":"Mode penerapan","sync.directions.applyMode.tooltip":"Cara perubahan sinkronisasi masuk diterapkan untuk kategori ini.","sync.directions.cat.scripts":"Skrip","sync.directions.cat.values":"Nilai","sync.directions.cat.containers":"Kontainer","sync.directions.cat.data":"Data","sync.directions.cat.services":"Layanan","sync.directions.endpoint.local":"Local","sync.directions.endpoint.local.tooltip":"File lokal di disk selalu ditampilkan di sisi kiri rel arah.","sync.directions.endpoint.studio":"Studio","sync.directions.endpoint.studio.tooltip":"Roblox Studio selalu ditampilkan di sisi kanan rel arah.","sync.directions.mode.manual":"Manual","sync.directions.mode.manual.tooltip":"Menerapkan perubahan sinkronisasi hanya saat Anda memicunya secara manual.","sync.directions.mode.auto":"Otomatis","sync.directions.mode.auto.tooltip":"Menerapkan perubahan sinkronisasi otomatis saat pembaruan datang.","sync.directions.tooltip.forward.body":"Perubahan dari Studio hanya disinkronkan ke file lokal","sync.directions.tooltip.bidirectional.body":"Sinkronisasi dua arah antara Local dan Studio","sync.directions.tooltip.reverse.body":"Dorong perubahan file lokal ke Studio","sync.directions.tooltip.proRequired":"Pro diperlukan pada tier Basic","sync.directions.dir.forward":"maju","sync.directions.dir.bidirectional":"dua arah","sync.directions.dir.reverse":"mundur","sync.config.title":"Konfigurasi sinkronisasi","sync.config.maxDepth":"Kedalaman maks","sync.config.maxInstances":"Instansi maks","sync.config.dirLimit":"Batas direktori","sync.log.title":"Log sinkronisasi","sync.log.empty":"Tidak ada event sinkronisasi","sync.log.type.write":"TULIS","sync.log.type.write.tooltip":"Output sinkronisasi baru ditulis ke disk.","sync.log.type.update":"PERBARUI","sync.log.type.update.tooltip":"File atau instance yang sudah tersinkron diperbarui.","sync.log.type.delete":"HAPUS","sync.log.type.delete.tooltip":"File atau instance tersinkron telah dihapus.","sync.log.type.idle":"IDLE","sync.log.type.idle.tooltip":"Event sinkronisasi dicatat tanpa perubahan file.","sync.upgrade.title":"Buka fitur sinkronisasi penuh dengan Pro","sync.upgrade.benefit1":"Sinkronisasi dua arah — edit file, otomatis diterapkan ke Studio","sync.upgrade.benefit2":"Sinkronisasi mundur — kirim perubahan file ke Studio","sync.upgrade.benefit3":"Riwayat sinkronisasi lengkap dan log perubahan detail","sync.upgrade.buy":"Upgrade ke Pro","playtest.status.title":"Status playtest","playtest.status.title.tooltip":"Status sesi playtest Roblox saat ini yang dilaporkan oleh Studio.","playtest.status.mode":"Mode","playtest.status.mode.tooltip":"Mode peluncuran playtest Studio untuk sesi saat ini.","playtest.status.mode.value.tooltip":"Mode playtest Roblox Studio spesifik yang sedang dipakai saat ini.","playtest.status.mode.play":"Main","playtest.status.mode.run":"Jalankan","playtest.status.mode.server":"Server","playtest.status.mode.edit":"Edit","playtest.status.place.tooltip":"Place Roblox yang saat ini terkait dengan sesi playtest ini.","playtest.status.state.running":"Berjalan","playtest.status.state.running.tooltip":"Sesi playtest Roblox saat ini sedang berjalan.","playtest.status.state.paused":"Dijeda","playtest.status.state.paused.tooltip":"Sesi playtest Roblox saat ini sedang dijeda.","playtest.status.state.notRunning":"Tidak berjalan","playtest.status.state.notRunning.tooltip":"Saat ini tidak ada sesi playtest Roblox yang sedang berjalan.","playtest.control.play":"Main","playtest.control.pause":"Jeda","playtest.control.resume":"Lanjutkan","playtest.control.stop":"Berhenti","playtest.history.title":"Riwayat tes","playtest.history.title.tooltip":"Riwayat eksekusi playtest otomatis yang tercatat untuk proyek ini.","playtest.history.empty":"Belum ada hasil tes","playtest.history.mode":"Mode","playtest.history.mode.tooltip":"Mode playtest yang digunakan pada eksekusi tes yang tercatat ini.","playtest.history.status.passed":"Berhasil","playtest.history.status.failed":"Gagal","playtest.history.status.running":"Berjalan","playtest.history.status.unknown":"Tidak diketahui","playtest.history.status.tooltip":"Status hasil yang tercatat untuk eksekusi playtest otomatis ini.","playtest.empty.title":"Belum ada hasil playtest","playtest.empty.message":"Hasil akan muncul di sini saat agen AI menjalankan tes otomatis via system_info.run_test.","playtest.empty.message.before":"Hasil akan muncul di sini saat agen AI menjalankan tes otomatis melalui","playtest.empty.message.after":".","playtest.empty.runTest.tooltip":"Titik otomatisasi dashboard yang menjalankan pemeriksaan playtest Roblox melalui tool system_info.","playtest.report.title":"Laporan terpilih","playtest.report.title.tooltip":"Output detail untuk eksekusi playtest otomatis yang sedang dipilih.","playtest.report.content":"Laporan","playtest.report.content.tooltip":"Ringkasan Markdown untuk eksekusi playtest otomatis yang dipilih.","playtest.report.logs":"Log","playtest.report.logs.tooltip":"Log eksekusi yang ditangkap untuk eksekusi playtest otomatis yang dipilih.","playtest.report.empty":"Tidak ada konten laporan","playtest.basic.icon":"🎮","playtest.basic.title":"Playtest adalah fitur khusus Pro","playtest.basic.desc":"Kontrol playtest dari dashboard, jalankan tes otomatis, dan lihat laporan tes detail.","playtest.basic.benefit1":"Kontrol main/jeda/berhenti sekali klik","playtest.basic.benefit2":"Eksekusi tes otomatis via agen AI","playtest.basic.benefit3":"Riwayat tes dengan pelacakan berhasil/gagal","playtest.basic.benefit4":"Laporan tes detail dalam markdown"},oh=["en","ko","es","pt-br","ja","id"],ko="auto",dl={en:Jm,ko:Xm,es:Zm,"pt-br":eh,ja:th,id:nh},ma="dashboard-locale";function yl(i){return oh.includes(i)}function rh(){const s=((typeof navigator<"u"?navigator.language:"en")??"en").toLowerCase();return s==="ko"||s.startsWith("ko-")?"ko":s==="pt-br"?"pt-br":s==="ja"||s.startsWith("ja-")?"ja":s==="es"||s.startsWith("es-")?"es":s==="id"||s.startsWith("id-")?"id":"en"}function Ld(){if(typeof localStorage<"u"){const i=localStorage.getItem(ma);if(i===ko)return ko;if(i&&yl(i))return i}return ko}function Md(i){return i===ko?rh():i}const ip=L.createContext(null);function ih({children:i}){const[s,l]=L.useState(Ld),[u,d]=L.useState(()=>Md(Ld())),p=L.useCallback((v,m)=>{const P=dl[u]??dl.en??{};if(v in P)return P[v];const E=dl.en;return E&&v in E?E[v]:m!==void 0?m:v},[u]),f=L.useCallback(v=>{typeof localStorage<"u"&&(v===ko?localStorage.removeItem(ma):yl(v)?localStorage.setItem(ma,v):localStorage.setItem(ma,"en"));const m=v===ko?ko:yl(v)?v:"en";l(m),d(Md(m))},[]);return L.createElement(ip.Provider,{value:{locale:u,selectedLocale:s,t:p,setLocale:f}},i)}function Rl(){const i=L.useContext(ip);if(!i)throw new Error("useLocale must be used within a LocaleProvider");return i}const ah="_container_10isu_2",sh="_toast_10isu_14",lh="_slideIn_10isu_1",ch="_success_10isu_39",uh="_info_10isu_44",dh="_warning_10isu_49",ph="_error_10isu_54",pl={container:ah,toast:sh,slideIn:lh,success:ch,info:uh,warning:dh,error:ph},ap=L.createContext(null),fh=3e3;function gh({children:i}){const[s,l]=L.useState([]),u=L.useRef(0),d=L.useCallback((p,f="info")=>{const v=u.current++;l(m=>[...m,{id:v,message:p,type:f}]),setTimeout(()=>{l(m=>m.filter(P=>P.id!==v))},fh)},[]);return ue.jsxs(ap.Provider,{value:{show:d},children:[i,ue.jsx("div",{className:pl.container,children:s.map(p=>ue.jsx("div",{className:`${pl.toast} ${pl[p.type]}`,children:p.message},p.id))})]})}function mh(){const i=L.useContext(ap);if(!i)throw new Error("useToast must be used within a ToastProvider");return i}function hh(){const{level:i}=_l(),{show:s}=mh(),{t:l}=Rl(),u=L.useRef(null);return L.useEffect(()=>{const d=u.current;u.current=i,d!==null&&d!==i&&(d==="L0"&&i==="L1"?s(l("toast.serverConnected","MCP 서버 연결됨"),"success"):d==="L1"&&i==="L2"?s(l("toast.pluginConnected","플러그인 연결됨"),"success"):(d==="L1"||d==="L2")&&i==="L0"?s(l("toast.serverDisconnected","MCP 서버 연결 끊김"),"error"):d==="L2"&&i==="L1"&&s(l("toast.pluginDisconnected","플러그인 연결 끊김"),"warning"))},[i,s,l]),null}const yh="_wrapper_1uzud_2",vh="_tooltip_1uzud_8",Sh="_tooltipLeft_1uzud_30",wh="_tooltipRight_1uzud_35",pa={wrapper:yh,tooltip:vh,tooltipLeft:Sh,tooltipRight:wh};function Tl({text:i,children:s}){const l=L.useRef(null),[u,d]=L.useState("center"),p=i.trim();if(!p)return ue.jsx(ue.Fragment,{children:s});const f=L.useCallback(()=>{d("center"),window.requestAnimationFrame(()=>{const v=l.current;if(!v)return;const m=v.getBoundingClientRect(),P=8;if(m.left<P){d("left");return}m.right>window.innerWidth-P&&d("right")})},[]);return ue.jsxs("span",{className:pa.wrapper,title:p,onMouseEnter:f,children:[s,ue.jsx("span",{ref:l,className:[pa.tooltip,u==="left"?pa.tooltipLeft:"",u==="right"?pa.tooltipRight:""].filter(Boolean).join(" "),"data-placement":u,children:p})]})}function kh(i){return!!i&&typeof i=="object"&&(i.tier==="basic"||i.tier==="pro")&&typeof i.status=="string"}function Ph(i){return i.billingState==="expired"?"expired":i.status==="active"||i.status==="grace"?"active":"inactive"}function zd(i){if(!i||typeof i!="object")return null;if(kh(i))return i;const s=i;return typeof s.canUsePro!="boolean"||typeof s.status!="string"?null:{tier:s.canUsePro?"pro":"basic",status:Ph(s),maskedKey:typeof s.maskedKey=="string"?s.maskedKey:void 0,provider:typeof s.provider=="string"?s.provider:void 0}}async function xh(i="gumroad"){const s=await El.get("/license/status",{provider:i});return s&&typeof s=="object"&&"data"in s&&s.data&&typeof s.data=="object"?zd(s.data):zd(s)}class Ch{constructor(s){Xo(this,"source",null);Xo(this,"handlers",new Map);Xo(this,"reconnectTimer",null);Xo(this,"url");this.url=s??`${ka}/api/dashboard/events`}connect(){this.disconnect(),this.source=new EventSource(this.url),this.source.onopen=()=>{this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)},this.source.onerror=()=>{var l;(l=this.source)==null||l.close(),this.source=null,this.scheduleReconnect()};const s=["connection","sync","command","game_change","mcp_status","license"];for(const l of s)this.source.addEventListener(l,u=>{var p;const d=JSON.parse(u.data);(p=this.handlers.get(l))==null||p.forEach(f=>f(d))})}on(s,l){return this.handlers.has(s)||this.handlers.set(s,new Set),this.handlers.get(s).add(l),()=>{var u;return(u=this.handlers.get(s))==null?void 0:u.delete(l)}}disconnect(){var s;(s=this.source)==null||s.close(),this.source=null,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)}get connected(){var s;return((s=this.source)==null?void 0:s.readyState)===EventSource.OPEN}scheduleReconnect(){this.reconnectTimer||(this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},Km))}}const bh="_sidebar_1p82f_2",Eh="_brand_1p82f_17",_h="_brandIcon_1p82f_26",Rh="_brandText_1p82f_32",Th="_brandTextPro_1p82f_43",Lh="_nav_1p82f_49",Mh="_navLink_1p82f_57",zh="_active_1p82f_78",Ih="_disabled_1p82f_85",Ah="_icon_1p82f_96",jh="_label_1p82f_107",Gt={sidebar:bh,brand:Eh,brandIcon:_h,brandText:Rh,brandTextPro:Th,nav:Lh,navLink:Mh,active:zh,disabled:Ih,icon:Ah,label:jh},Nh=[{labelKey:"sidebar.overview",route:"/",icon:"📊",minLevel:"L0"},{labelKey:"sidebar.changelog",route:"/changelog",icon:"📋",minLevel:"L1"},{labelKey:"sidebar.connection",route:"/connection",icon:"🔗",minLevel:"L0"},{labelKey:"sidebar.sync",route:"/sync",icon:"🔄",minLevel:"L2"},{labelKey:"sidebar.playtest",route:"/playtest",icon:"🎮",minLevel:"L2"},{labelKey:"sidebar.tools",route:"/tools",icon:"🔧",minLevel:"L1"}],Id={L0:0,L1:1,L2:2};function Dh(i,s){return Id[i]>=Id[s]}function Oh(i,s){return i==="L1"?s("sidebar.gate.l1","MCP server connection required"):i==="L2"?s("sidebar.gate.l2","Roblox Studio plugin connection required"):""}function Bh({item:i}){const{level:s}=_l(),{t:l}=Rl(),u=Dh(s,i.minLevel),d=ue.jsxs(Fm,{to:i.route,end:i.route==="/",className:({isActive:p})=>[Gt.navLink,p?Gt.active:"",u?"":Gt.disabled].filter(Boolean).join(" "),onClick:p=>{u||p.preventDefault()},children:[ue.jsx("span",{className:Gt.icon,children:i.icon}),ue.jsx("span",{className:Gt.label,children:l(i.labelKey)})]});return u?d:ue.jsx(Tl,{text:Oh(i.minLevel,l),children:d})}function Fh(){const[i,s]=L.useState("basic");return L.useEffect(()=>{let l=!1;async function u(){try{const f=await xh("gumroad");!l&&(f!=null&&f.tier)&&s(f.tier)}catch{l||s("basic")}}u();const d=new Ch;d.connect();const p=d.on("license",()=>{u()});return()=>{l=!0,p(),d.disconnect()}},[]),ue.jsxs("aside",{className:Gt.sidebar,children:[ue.jsxs("div",{className:Gt.brand,children:[ue.jsx("span",{className:Gt.brandIcon,children:"◈"}),ue.jsx("span",{"data-testid":"sidebar-brand-text",className:[Gt.brandText,i==="pro"?Gt.brandTextPro:""].filter(Boolean).join(" "),children:"Weppy Roblox MCP"})]}),ue.jsx("nav",{className:Gt.nav,children:Nh.map(l=>ue.jsx(Bh,{item:l},l.route))})]})}function Ad({text:i,children:s}){return ue.jsx(Tl,{text:i,children:s})}const Uh="_header_12s5o_2",Hh="_projectBlock_12s5o_14",Vh="_label_12s5o_21",Wh="_projectName_12s5o_30",qh="_projectPath_12s5o_37",Kh="_placeBadge_12s5o_47",$h="_placeBadgeMuted_12s5o_62",Qh="_placeIcon_12s5o_66",Gh="_actions_12s5o_70",Yh="_iconButton_12s5o_76",sn={header:Uh,projectBlock:Hh,label:Vh,projectName:Wh,projectPath:qh,placeBadge:Kh,placeBadgeMuted:$h,placeIcon:Qh,actions:Gh,iconButton:Yh};function Jh(i){if(!i)return"";const s=i.split(/[\\/]/).filter(Boolean);return s[s.length-1]??""}function Xh(i){var l,u;const s=((l=i==null?void 0:i.mcpInstances)==null?void 0:l.find(d=>!d.isServer&&d.aiClientName))??((u=i==null?void 0:i.mcpInstances)==null?void 0:u.find(d=>!!d.aiClientName))??null;return(s==null?void 0:s.cwd)??null}function Zh(i,s,l){return i??s??l}function ey(){var E,C,M,D;const{level:i,status:s}=_l(),{t:l}=Rl(),[u,d]=L.useState(null),p=l("header.placeNotConnected","Place not connected");L.useEffect(()=>{let H=!1;async function O(){if(i==="L0"){d(null);return}try{const U=await El.get("/connection-info");H||d(U)}catch{H||d(null)}}return O(),()=>{H=!0}},[i,s==null?void 0:s.sessionId,s==null?void 0:s.connectedClients]);const f=Xh(u)??"",v=Jh(f)||l("header.unknownProject","Unknown project"),m=Zh((C=(E=s==null?void 0:s.pluginClients)==null?void 0:E[0])==null?void 0:C.placeName,(D=(M=s==null?void 0:s.pluginClients)==null?void 0:M[0])==null?void 0:D.projectName,p),P=m===p?l("header.placeNotConnected.tooltip","Place not connected"):l("header.place.tooltip","Connected Roblox place");return ue.jsxs("header",{className:sn.header,children:[ue.jsxs("div",{className:sn.projectBlock,children:[ue.jsx("span",{className:sn.label,children:l("header.currentProject","Current Project")}),ue.jsx("strong",{className:sn.projectName,children:ue.jsx(Ad,{text:l("header.currentProject.tooltip","Currently selected project folder"),children:v})}),f&&ue.jsx("span",{className:sn.projectPath,children:f}),ue.jsx(Ad,{text:P,children:ue.jsxs("span",{className:[sn.placeBadge,m===p?sn.placeBadgeMuted:""].filter(Boolean).join(" "),children:[ue.jsx("span",{className:sn.placeIcon,children:"🎮"}),ue.jsx("span",{children:m})]})})]}),ue.jsx("div",{className:sn.actions,children:ue.jsx(Tl,{text:l("sidebar.settings","Settings"),children:ue.jsx(op,{to:"/settings","aria-label":l("sidebar.settings","Settings"),className:sn.iconButton,children:"⚙️"})})})]})}const ty=5e3,ny=5;let tr=[],jd=null;function sp(){if(tr.length===0)return;const i=tr.splice(0),s=`${ka}/api/dashboard/analytics`,l=JSON.stringify({events:i});fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:l}).catch(()=>{})}function oy(){jd||(jd=setInterval(sp,ty))}function Nd(i){tr.push(i),oy(),tr.length>=ny&&sp()}typeof window<"u"&&window.addEventListener("beforeunload",()=>{if(tr.length===0)return;const i=`${ka}/api/dashboard/analytics`,s=JSON.stringify({events:tr.splice(0)});navigator.sendBeacon(i,new Blob([s],{type:"application/json"}))});function ry(){const i=L.useCallback((l,u)=>{Nd({name:l,params:u})},[]),s=L.useCallback(l=>{Nd({name:"dashboard_page_view",params:{page:l}})},[]);return{trackEvent:i,trackPageView:s}}const iy="_layout_ya8ln_2",ay="_mainShell_ya8ln_8",sy="_content_ya8ln_17",ly="_loading_ya8ln_25",fa={layout:iy,mainShell:ay,content:sy,loading:ly};function cy(i){return i.replace(/^\//,"").split("/")[0]||"overview"}function uy(){const{pathname:i}=nr(),{trackPageView:s}=ry();return L.useEffect(()=>{s(cy(i))},[i,s]),null}function dy(){return ue.jsx(ih,{children:ue.jsx(gh,{children:ue.jsxs(Ym,{children:[ue.jsx(hh,{}),ue.jsx(uy,{}),ue.jsxs("div",{className:fa.layout,children:[ue.jsx(Fh,{}),ue.jsxs("div",{className:fa.mainShell,children:[ue.jsx(ey,{}),ue.jsx("main",{className:fa.content,children:ue.jsx(L.Suspense,{fallback:ue.jsx("div",{className:fa.loading,children:"Loading..."}),children:ue.jsx(Sm,{})})})]})]})]})})})}const py=_m([{path:"/",element:ue.jsx(dy,{}),children:[{index:!0,lazy:()=>Qn(()=>import("./OverviewPage-DS-g_EC0.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]))},{path:"changelog",lazy:()=>Qn(()=>import("./ChangelogPage-DGhZm1j7.js"),__vite__mapDeps([11,12]))},{path:"changelog/:id",lazy:()=>Qn(()=>import("./ChangelogDetailPage-BOp7G4Fi.js"),__vite__mapDeps([13,1,4,5,14]))},{path:"connection",lazy:()=>Qn(()=>import("./ConnectionPage-DXv_C7i6.js"),__vite__mapDeps([15,1,2,3,8,16]))},{path:"sync",lazy:()=>Qn(()=>import("./SyncPage-BOYoftuM.js"),__vite__mapDeps([17,1,2,3,6,7,18,19]))},{path:"playtest",lazy:()=>Qn(()=>import("./PlaytestPage-C4X6-jp-.js"),__vite__mapDeps([20,6,7,18,1,21]))},{path:"tools",lazy:()=>Qn(()=>import("./ToolsPage-CZsA-7CL.js"),__vite__mapDeps([22,6,7,9,23]))},{path:"settings",lazy:()=>Qn(()=>import("./SettingsPage-BtjNT-j0.js"),__vite__mapDeps([24,1,25]))}]}]);Zf.createRoot(document.getElementById("root")).render(ue.jsx(jm,{router:py}));export{ko as A,Ch as D,oh as S,Ad as T,_l as a,El as b,nm as c,gy as d,Tl as e,ry as f,nr as g,xh as h,ue as j,L as r,Rl as u};
|