From 0f9a273ec0869d36690c24e9922314d1c7aff3f1 Mon Sep 17 00:00:00 2001 From: Xiang Silian Date: Fri, 28 Nov 2025 16:06:27 +0800 Subject: [PATCH] save code --- .gitignore | 2 +- dist/assets/index-CvuPXK3k.js | 144 ++++++++++++++++++++++++++++++++++ dist/index.html | 20 +++++ vite.config.ts | 1 + 4 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 dist/assets/index-CvuPXK3k.js create mode 100644 dist/index.html diff --git a/.gitignore b/.gitignore index a547bf3..da9d19b 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,7 @@ pnpm-debug.log* lerna-debug.log* node_modules -dist + dist-ssr *.local diff --git a/dist/assets/index-CvuPXK3k.js b/dist/assets/index-CvuPXK3k.js new file mode 100644 index 0000000..5571915 --- /dev/null +++ b/dist/assets/index-CvuPXK3k.js @@ -0,0 +1,144 @@ +(function(){const U=document.createElement("link").relList;if(U&&U.supports&&U.supports("modulepreload"))return;for(const Y of document.querySelectorAll('link[rel="modulepreload"]'))m(Y);new MutationObserver(Y=>{for(const q of Y)if(q.type==="childList")for(const ol of q.addedNodes)ol.tagName==="LINK"&&ol.rel==="modulepreload"&&m(ol)}).observe(document,{childList:!0,subtree:!0});function H(Y){const q={};return Y.integrity&&(q.integrity=Y.integrity),Y.referrerPolicy&&(q.referrerPolicy=Y.referrerPolicy),Y.crossOrigin==="use-credentials"?q.credentials="include":Y.crossOrigin==="anonymous"?q.credentials="omit":q.credentials="same-origin",q}function m(Y){if(Y.ep)return;Y.ep=!0;const q=H(Y);fetch(Y.href,q)}})();function Od(S){return S&&S.__esModule&&Object.prototype.hasOwnProperty.call(S,"default")?S.default:S}var nf={exports:{}},pu={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var gd;function t1(){if(gd)return pu;gd=1;var S=Symbol.for("react.transitional.element"),U=Symbol.for("react.fragment");function H(m,Y,q){var ol=null;if(q!==void 0&&(ol=""+q),Y.key!==void 0&&(ol=""+Y.key),"key"in Y){q={};for(var Sl in Y)Sl!=="key"&&(q[Sl]=Y[Sl])}else q=Y;return Y=q.ref,{$$typeof:S,type:m,key:ol,ref:Y!==void 0?Y:null,props:q}}return pu.Fragment=U,pu.jsx=H,pu.jsxs=H,pu}var bd;function e1(){return bd||(bd=1,nf.exports=t1()),nf.exports}var g=e1(),cf={exports:{}},G={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Sd;function a1(){if(Sd)return G;Sd=1;var S=Symbol.for("react.transitional.element"),U=Symbol.for("react.portal"),H=Symbol.for("react.fragment"),m=Symbol.for("react.strict_mode"),Y=Symbol.for("react.profiler"),q=Symbol.for("react.consumer"),ol=Symbol.for("react.context"),Sl=Symbol.for("react.forward_ref"),D=Symbol.for("react.suspense"),E=Symbol.for("react.memo"),$=Symbol.for("react.lazy"),R=Symbol.for("react.activity"),F=Symbol.iterator;function El(o){return o===null||typeof o!="object"?null:(o=F&&o[F]||o["@@iterator"],typeof o=="function"?o:null)}var Gl={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Rl=Object.assign,Ot={};function $l(o,T,_){this.props=o,this.context=T,this.refs=Ot,this.updater=_||Gl}$l.prototype.isReactComponent={},$l.prototype.setState=function(o,T){if(typeof o!="object"&&typeof o!="function"&&o!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,o,T,"setState")},$l.prototype.forceUpdate=function(o){this.updater.enqueueForceUpdate(this,o,"forceUpdate")};function kt(){}kt.prototype=$l.prototype;function Hl(o,T,_){this.props=o,this.context=T,this.refs=Ot,this.updater=_||Gl}var ct=Hl.prototype=new kt;ct.constructor=Hl,Rl(ct,$l.prototype),ct.isPureReactComponent=!0;var xt=Array.isArray;function Ql(){}var W={H:null,A:null,T:null,S:null},Xl=Object.prototype.hasOwnProperty;function Tt(o,T,_){var N=_.ref;return{$$typeof:S,type:o,key:T,ref:N!==void 0?N:null,props:_}}function Ze(o,T){return Tt(o.type,T,o.props)}function Et(o){return typeof o=="object"&&o!==null&&o.$$typeof===S}function Zl(o){var T={"=":"=0",":":"=2"};return"$"+o.replace(/[=:]/g,function(_){return T[_]})}var ze=/\/+/g;function Dt(o,T){return typeof o=="object"&&o!==null&&o.key!=null?Zl(""+o.key):T.toString(36)}function bt(o){switch(o.status){case"fulfilled":return o.value;case"rejected":throw o.reason;default:switch(typeof o.status=="string"?o.then(Ql,Ql):(o.status="pending",o.then(function(T){o.status==="pending"&&(o.status="fulfilled",o.value=T)},function(T){o.status==="pending"&&(o.status="rejected",o.reason=T)})),o.status){case"fulfilled":return o.value;case"rejected":throw o.reason}}throw o}function p(o,T,_,N,Q){var L=typeof o;(L==="undefined"||L==="boolean")&&(o=null);var tl=!1;if(o===null)tl=!0;else switch(L){case"bigint":case"string":case"number":tl=!0;break;case"object":switch(o.$$typeof){case S:case U:tl=!0;break;case $:return tl=o._init,p(tl(o._payload),T,_,N,Q)}}if(tl)return Q=Q(o),tl=N===""?"."+Dt(o,0):N,xt(Q)?(_="",tl!=null&&(_=tl.replace(ze,"$&/")+"/"),p(Q,T,_,"",function(Ma){return Ma})):Q!=null&&(Et(Q)&&(Q=Ze(Q,_+(Q.key==null||o&&o.key===Q.key?"":(""+Q.key).replace(ze,"$&/")+"/")+tl)),T.push(Q)),1;tl=0;var ql=N===""?".":N+":";if(xt(o))for(var vl=0;vl>>1,fl=p[ul];if(0>>1;ulY(_,B))NY(Q,_)?(p[ul]=Q,p[N]=B,ul=N):(p[ul]=_,p[T]=B,ul=T);else if(NY(Q,B))p[ul]=Q,p[N]=B,ul=N;else break l}}return A}function Y(p,A){var B=p.sortIndex-A.sortIndex;return B!==0?B:p.id-A.id}if(S.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var q=performance;S.unstable_now=function(){return q.now()}}else{var ol=Date,Sl=ol.now();S.unstable_now=function(){return ol.now()-Sl}}var D=[],E=[],$=1,R=null,F=3,El=!1,Gl=!1,Rl=!1,Ot=!1,$l=typeof setTimeout=="function"?setTimeout:null,kt=typeof clearTimeout=="function"?clearTimeout:null,Hl=typeof setImmediate<"u"?setImmediate:null;function ct(p){for(var A=H(E);A!==null;){if(A.callback===null)m(E);else if(A.startTime<=p)m(E),A.sortIndex=A.expirationTime,U(D,A);else break;A=H(E)}}function xt(p){if(Rl=!1,ct(p),!Gl)if(H(D)!==null)Gl=!0,Ql||(Ql=!0,Zl());else{var A=H(E);A!==null&&bt(xt,A.startTime-p)}}var Ql=!1,W=-1,Xl=5,Tt=-1;function Ze(){return Ot?!0:!(S.unstable_now()-Ttp&&Ze());){var ul=R.callback;if(typeof ul=="function"){R.callback=null,F=R.priorityLevel;var fl=ul(R.expirationTime<=p);if(p=S.unstable_now(),typeof fl=="function"){R.callback=fl,ct(p),A=!0;break t}R===H(D)&&m(D),ct(p)}else m(D);R=H(D)}if(R!==null)A=!0;else{var o=H(E);o!==null&&bt(xt,o.startTime-p),A=!1}}break l}finally{R=null,F=B,El=!1}A=void 0}}finally{A?Zl():Ql=!1}}}var Zl;if(typeof Hl=="function")Zl=function(){Hl(Et)};else if(typeof MessageChannel<"u"){var ze=new MessageChannel,Dt=ze.port2;ze.port1.onmessage=Et,Zl=function(){Dt.postMessage(null)}}else Zl=function(){$l(Et,0)};function bt(p,A){W=$l(function(){p(S.unstable_now())},A)}S.unstable_IdlePriority=5,S.unstable_ImmediatePriority=1,S.unstable_LowPriority=4,S.unstable_NormalPriority=3,S.unstable_Profiling=null,S.unstable_UserBlockingPriority=2,S.unstable_cancelCallback=function(p){p.callback=null},S.unstable_forceFrameRate=function(p){0>p||125ul?(p.sortIndex=B,U(E,p),H(D)===null&&p===H(E)&&(Rl?(kt(W),W=-1):Rl=!0,bt(xt,B-ul))):(p.sortIndex=fl,U(D,p),Gl||El||(Gl=!0,Ql||(Ql=!0,Zl()))),p},S.unstable_shouldYield=Ze,S.unstable_wrapCallback=function(p){var A=F;return function(){var B=F;F=A;try{return p.apply(this,arguments)}finally{F=B}}}})(of)),of}var xd;function i1(){return xd||(xd=1,sf.exports=n1()),sf.exports}var df={exports:{}},Cl={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Td;function c1(){if(Td)return Cl;Td=1;var S=rf();function U(D){var E="https://react.dev/errors/"+D;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(S)}catch(U){console.error(U)}}return S(),df.exports=c1(),df.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Ad;function s1(){if(Ad)return zu;Ad=1;var S=i1(),U=rf(),H=f1();function m(l){var t="https://react.dev/errors/"+l;if(1fl||(l.current=ul[fl],ul[fl]=null,fl--)}function _(l,t){fl++,ul[fl]=l.current,l.current=t}var N=o(null),Q=o(null),L=o(null),tl=o(null);function ql(l,t){switch(_(L,t),_(Q,l),_(N,null),t.nodeType){case 9:case 11:l=(l=t.documentElement)&&(l=l.namespaceURI)?Q0(l):0;break;default:if(l=t.tagName,t=t.namespaceURI)t=Q0(t),l=X0(t,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}T(N),_(N,l)}function vl(){T(N),T(Q),T(L)}function Ma(l){l.memoizedState!==null&&_(tl,l);var t=N.current,e=X0(t,l.type);t!==e&&(_(Q,l),_(N,e))}function xu(l){Q.current===l&&(T(N),T(Q)),tl.current===l&&(T(tl),vu._currentValue=B)}var Xn,yf;function xe(l){if(Xn===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Xn=t&&t[1]||"",yf=-1)":-1u||f[a]!==r[u]){var b=` +`+f[a].replace(" at new "," at ");return l.displayName&&b.includes("")&&(b=b.replace("",l.displayName)),b}while(1<=a&&0<=u);break}}}finally{Zn=!1,Error.prepareStackTrace=e}return(e=l?l.displayName||l.name:"")?xe(e):""}function jd(l,t){switch(l.tag){case 26:case 27:case 5:return xe(l.type);case 16:return xe("Lazy");case 13:return l.child!==t&&t!==null?xe("Suspense Fallback"):xe("Suspense");case 19:return xe("SuspenseList");case 0:case 15:return Ln(l.type,!1);case 11:return Ln(l.type.render,!1);case 1:return Ln(l.type,!0);case 31:return xe("Activity");default:return""}}function vf(l){try{var t="",e=null;do t+=jd(l,e),e=l,l=l.return;while(l);return t}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}var Vn=Object.prototype.hasOwnProperty,Kn=S.unstable_scheduleCallback,Jn=S.unstable_cancelCallback,Hd=S.unstable_shouldYield,Cd=S.unstable_requestPaint,Fl=S.unstable_now,Rd=S.unstable_getCurrentPriorityLevel,gf=S.unstable_ImmediatePriority,bf=S.unstable_UserBlockingPriority,Tu=S.unstable_NormalPriority,qd=S.unstable_LowPriority,Sf=S.unstable_IdlePriority,Bd=S.log,Yd=S.unstable_setDisableYieldValue,Na=null,Il=null;function $t(l){if(typeof Bd=="function"&&Yd(l),Il&&typeof Il.setStrictMode=="function")try{Il.setStrictMode(Na,l)}catch{}}var Pl=Math.clz32?Math.clz32:Xd,Gd=Math.log,Qd=Math.LN2;function Xd(l){return l>>>=0,l===0?32:31-(Gd(l)/Qd|0)|0}var Eu=256,Au=262144,_u=4194304;function Te(l){var t=l&42;if(t!==0)return t;switch(l&-l){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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return l&261888;case 262144:case 524288:case 1048576:case 2097152:return l&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function Mu(l,t,e){var a=l.pendingLanes;if(a===0)return 0;var u=0,n=l.suspendedLanes,i=l.pingedLanes;l=l.warmLanes;var c=a&134217727;return c!==0?(a=c&~n,a!==0?u=Te(a):(i&=c,i!==0?u=Te(i):e||(e=c&~l,e!==0&&(u=Te(e))))):(c=a&~n,c!==0?u=Te(c):i!==0?u=Te(i):e||(e=a&~l,e!==0&&(u=Te(e)))),u===0?0:t!==0&&t!==u&&(t&n)===0&&(n=u&-u,e=t&-t,n>=e||n===32&&(e&4194048)!==0)?t:u}function Oa(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function Zd(l,t){switch(l){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32: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:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function pf(){var l=_u;return _u<<=1,(_u&62914560)===0&&(_u=4194304),l}function wn(l){for(var t=[],e=0;31>e;e++)t.push(l);return t}function Da(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function Ld(l,t,e,a,u,n){var i=l.pendingLanes;l.pendingLanes=e,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=e,l.entangledLanes&=e,l.errorRecoveryDisabledLanes&=e,l.shellSuspendCounter=0;var c=l.entanglements,f=l.expirationTimes,r=l.hiddenUpdates;for(e=i&~e;0"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var kd=/[\n"\\]/g;function st(l){return l.replace(kd,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Pn(l,t,e,a,u,n,i,c){l.name="",i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?l.type=i:l.removeAttribute("type"),t!=null?i==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+ft(t)):l.value!==""+ft(t)&&(l.value=""+ft(t)):i!=="submit"&&i!=="reset"||l.removeAttribute("value"),t!=null?li(l,i,ft(t)):e!=null?li(l,i,ft(e)):a!=null&&l.removeAttribute("value"),u==null&&n!=null&&(l.defaultChecked=!!n),u!=null&&(l.checked=u&&typeof u!="function"&&typeof u!="symbol"),c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.name=""+ft(c):l.removeAttribute("name")}function Hf(l,t,e,a,u,n,i,c){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||e!=null){if(!(n!=="submit"&&n!=="reset"||t!=null)){In(l);return}e=e!=null?""+ft(e):"",t=t!=null?""+ft(t):e,c||t===l.value||(l.value=t),l.defaultValue=t}a=a??u,a=typeof a!="function"&&typeof a!="symbol"&&!!a,l.checked=c?l.checked:!!a,l.defaultChecked=!!a,i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(l.name=i),In(l)}function li(l,t,e){t==="number"&&Du(l.ownerDocument)===l||l.defaultValue===""+e||(l.defaultValue=""+e)}function We(l,t,e,a){if(l=l.options,t){t={};for(var u=0;u"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ni=!1;if(Ht)try{var Ca={};Object.defineProperty(Ca,"passive",{get:function(){ni=!0}}),window.addEventListener("test",Ca,Ca),window.removeEventListener("test",Ca,Ca)}catch{ni=!1}var It=null,ii=null,ju=null;function Qf(){if(ju)return ju;var l,t=ii,e=t.length,a,u="value"in It?It.value:It.textContent,n=u.length;for(l=0;l=Ba),Jf=" ",wf=!1;function Wf(l,t){switch(l){case"keyup":return Tm.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function kf(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var Ie=!1;function Am(l,t){switch(l){case"compositionend":return kf(t);case"keypress":return t.which!==32?null:(wf=!0,Jf);case"textInput":return l=t.data,l===Jf&&wf?null:l;default:return null}}function _m(l,t){if(Ie)return l==="compositionend"||!di&&Wf(l,t)?(l=Qf(),ju=ii=It=null,Ie=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:e,offset:t-l};l=a}l:{for(;e;){if(e.nextSibling){e=e.nextSibling;break l}e=e.parentNode}e=void 0}e=as(e)}}function ns(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?ns(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function is(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=Du(l.document);t instanceof l.HTMLIFrameElement;){try{var e=typeof t.contentWindow.location.href=="string"}catch{e=!1}if(e)l=t.contentWindow;else break;t=Du(l.document)}return t}function ri(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}var Cm=Ht&&"documentMode"in document&&11>=document.documentMode,Pe=null,yi=null,Xa=null,vi=!1;function cs(l,t,e){var a=e.window===e?e.document:e.nodeType===9?e:e.ownerDocument;vi||Pe==null||Pe!==Du(a)||(a=Pe,"selectionStart"in a&&ri(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Xa&&Qa(Xa,a)||(Xa=a,a=_n(yi,"onSelect"),0>=i,u-=i,At=1<<32-Pl(t)+u|e<Z?(w=O,O=null):w=O.sibling;var P=y(d,O,h[Z],z);if(P===null){O===null&&(O=w);break}l&&O&&P.alternate===null&&t(d,O),s=n(P,s,Z),I===null?j=P:I.sibling=P,I=P,O=w}if(Z===h.length)return e(d,O),k&&Rt(d,Z),j;if(O===null){for(;ZZ?(w=O,O=null):w=O.sibling;var pe=y(d,O,P.value,z);if(pe===null){O===null&&(O=w);break}l&&O&&pe.alternate===null&&t(d,O),s=n(pe,s,Z),I===null?j=pe:I.sibling=pe,I=pe,O=w}if(P.done)return e(d,O),k&&Rt(d,Z),j;if(O===null){for(;!P.done;Z++,P=h.next())P=x(d,P.value,z),P!==null&&(s=n(P,s,Z),I===null?j=P:I.sibling=P,I=P);return k&&Rt(d,Z),j}for(O=a(O);!P.done;Z++,P=h.next())P=v(O,d,Z,P.value,z),P!==null&&(l&&P.alternate!==null&&O.delete(P.key===null?Z:P.key),s=n(P,s,Z),I===null?j=P:I.sibling=P,I=P);return l&&O.forEach(function(l1){return t(d,l1)}),k&&Rt(d,Z),j}function cl(d,s,h,z){if(typeof h=="object"&&h!==null&&h.type===Rl&&h.key===null&&(h=h.props.children),typeof h=="object"&&h!==null){switch(h.$$typeof){case El:l:{for(var j=h.key;s!==null;){if(s.key===j){if(j=h.type,j===Rl){if(s.tag===7){e(d,s.sibling),z=u(s,h.props.children),z.return=d,d=z;break l}}else if(s.elementType===j||typeof j=="object"&&j!==null&&j.$$typeof===Xl&&Ce(j)===s.type){e(d,s.sibling),z=u(s,h.props),wa(z,h),z.return=d,d=z;break l}e(d,s);break}else t(d,s);s=s.sibling}h.type===Rl?(z=Oe(h.props.children,d.mode,z,h.key),z.return=d,d=z):(z=Zu(h.type,h.key,h.props,null,d.mode,z),wa(z,h),z.return=d,d=z)}return i(d);case Gl:l:{for(j=h.key;s!==null;){if(s.key===j)if(s.tag===4&&s.stateNode.containerInfo===h.containerInfo&&s.stateNode.implementation===h.implementation){e(d,s.sibling),z=u(s,h.children||[]),z.return=d,d=z;break l}else{e(d,s);break}else t(d,s);s=s.sibling}z=Ti(h,d.mode,z),z.return=d,d=z}return i(d);case Xl:return h=Ce(h),cl(d,s,h,z)}if(bt(h))return M(d,s,h,z);if(Zl(h)){if(j=Zl(h),typeof j!="function")throw Error(m(150));return h=j.call(h),C(d,s,h,z)}if(typeof h.then=="function")return cl(d,s,ku(h),z);if(h.$$typeof===Hl)return cl(d,s,Ku(d,h),z);$u(d,h)}return typeof h=="string"&&h!==""||typeof h=="number"||typeof h=="bigint"?(h=""+h,s!==null&&s.tag===6?(e(d,s.sibling),z=u(s,h),z.return=d,d=z):(e(d,s),z=xi(h,d.mode,z),z.return=d,d=z),i(d)):e(d,s)}return function(d,s,h,z){try{Ja=0;var j=cl(d,s,h,z);return oa=null,j}catch(O){if(O===sa||O===wu)throw O;var I=tt(29,O,null,d.mode);return I.lanes=z,I.return=d,I}finally{}}}var qe=Ds(!0),Us=Ds(!1),ae=!1;function Ri(l){l.updateQueue={baseState:l.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function qi(l,t){l=l.updateQueue,t.updateQueue===l&&(t.updateQueue={baseState:l.baseState,firstBaseUpdate:l.firstBaseUpdate,lastBaseUpdate:l.lastBaseUpdate,shared:l.shared,callbacks:null})}function ue(l){return{lane:l,tag:0,payload:null,callback:null,next:null}}function ne(l,t,e){var a=l.updateQueue;if(a===null)return null;if(a=a.shared,(ll&2)!==0){var u=a.pending;return u===null?t.next=t:(t.next=u.next,u.next=t),a.pending=t,t=Xu(l),rs(l,null,e),t}return Qu(l,a,t,e),Xu(l)}function Wa(l,t,e){if(t=t.updateQueue,t!==null&&(t=t.shared,(e&4194048)!==0)){var a=t.lanes;a&=l.pendingLanes,e|=a,t.lanes=e,xf(l,e)}}function Bi(l,t){var e=l.updateQueue,a=l.alternate;if(a!==null&&(a=a.updateQueue,e===a)){var u=null,n=null;if(e=e.firstBaseUpdate,e!==null){do{var i={lane:e.lane,tag:e.tag,payload:e.payload,callback:null,next:null};n===null?u=n=i:n=n.next=i,e=e.next}while(e!==null);n===null?u=n=t:n=n.next=t}else u=n=t;e={baseState:a.baseState,firstBaseUpdate:u,lastBaseUpdate:n,shared:a.shared,callbacks:a.callbacks},l.updateQueue=e;return}l=e.lastBaseUpdate,l===null?e.firstBaseUpdate=t:l.next=t,e.lastBaseUpdate=t}var Yi=!1;function ka(){if(Yi){var l=fa;if(l!==null)throw l}}function $a(l,t,e,a){Yi=!1;var u=l.updateQueue;ae=!1;var n=u.firstBaseUpdate,i=u.lastBaseUpdate,c=u.shared.pending;if(c!==null){u.shared.pending=null;var f=c,r=f.next;f.next=null,i===null?n=r:i.next=r,i=f;var b=l.alternate;b!==null&&(b=b.updateQueue,c=b.lastBaseUpdate,c!==i&&(c===null?b.firstBaseUpdate=r:c.next=r,b.lastBaseUpdate=f))}if(n!==null){var x=u.baseState;i=0,b=r=f=null,c=n;do{var y=c.lane&-536870913,v=y!==c.lane;if(v?(J&y)===y:(a&y)===y){y!==0&&y===ca&&(Yi=!0),b!==null&&(b=b.next={lane:0,tag:c.tag,payload:c.payload,callback:null,next:null});l:{var M=l,C=c;y=t;var cl=e;switch(C.tag){case 1:if(M=C.payload,typeof M=="function"){x=M.call(cl,x,y);break l}x=M;break l;case 3:M.flags=M.flags&-65537|128;case 0:if(M=C.payload,y=typeof M=="function"?M.call(cl,x,y):M,y==null)break l;x=R({},x,y);break l;case 2:ae=!0}}y=c.callback,y!==null&&(l.flags|=64,v&&(l.flags|=8192),v=u.callbacks,v===null?u.callbacks=[y]:v.push(y))}else v={lane:y,tag:c.tag,payload:c.payload,callback:c.callback,next:null},b===null?(r=b=v,f=x):b=b.next=v,i|=y;if(c=c.next,c===null){if(c=u.shared.pending,c===null)break;v=c,c=v.next,v.next=null,u.lastBaseUpdate=v,u.shared.pending=null}}while(!0);b===null&&(f=x),u.baseState=f,u.firstBaseUpdate=r,u.lastBaseUpdate=b,n===null&&(u.shared.lanes=0),oe|=i,l.lanes=i,l.memoizedState=x}}function js(l,t){if(typeof l!="function")throw Error(m(191,l));l.call(t)}function Hs(l,t){var e=l.callbacks;if(e!==null)for(l.callbacks=null,l=0;ln?n:8;var i=p.T,c={};p.T=c,ac(l,!1,t,e);try{var f=u(),r=p.S;if(r!==null&&r(c,f),f!==null&&typeof f=="object"&&typeof f.then=="function"){var b=Lm(f,a);Pa(l,t,b,it(l))}else Pa(l,t,a,it(l))}catch(x){Pa(l,t,{then:function(){},status:"rejected",reason:x},it())}finally{A.p=n,i!==null&&c.types!==null&&(i.types=c.types),p.T=i}}function km(){}function tc(l,t,e,a){if(l.tag!==5)throw Error(m(476));var u=mo(l).queue;oo(l,u,t,B,e===null?km:function(){return ho(l),e(a)})}function mo(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:B,baseState:B,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Gt,lastRenderedState:B},next:null};var e={};return t.next={memoizedState:e,baseState:e,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Gt,lastRenderedState:e},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function ho(l){var t=mo(l);t.next===null&&(t=l.alternate.memoizedState),Pa(l,t.next.queue,{},it())}function ec(){return Dl(vu)}function ro(){return bl().memoizedState}function yo(){return bl().memoizedState}function $m(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var e=it();l=ue(e);var a=ne(t,l,e);a!==null&&(kl(a,t,e),Wa(a,t,e)),t={cache:Ui()},l.payload=t;return}t=t.return}}function Fm(l,t,e){var a=it();e={lane:a,revertLane:0,gesture:null,action:e,hasEagerState:!1,eagerState:null,next:null},cn(l)?go(t,e):(e=pi(l,t,e,a),e!==null&&(kl(e,l,a),bo(e,t,a)))}function vo(l,t,e){var a=it();Pa(l,t,e,a)}function Pa(l,t,e,a){var u={lane:a,revertLane:0,gesture:null,action:e,hasEagerState:!1,eagerState:null,next:null};if(cn(l))go(t,u);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var i=t.lastRenderedState,c=n(i,e);if(u.hasEagerState=!0,u.eagerState=c,lt(c,i))return Qu(l,t,u,0),sl===null&&Gu(),!1}catch{}finally{}if(e=pi(l,t,u,a),e!==null)return kl(e,l,a),bo(e,t,a),!0}return!1}function ac(l,t,e,a){if(a={lane:2,revertLane:Rc(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},cn(l)){if(t)throw Error(m(479))}else t=pi(l,e,a,2),t!==null&&kl(t,l,2)}function cn(l){var t=l.alternate;return l===X||t!==null&&t===X}function go(l,t){ma=Pu=!0;var e=l.pending;e===null?t.next=t:(t.next=e.next,e.next=t),l.pending=t}function bo(l,t,e){if((e&4194048)!==0){var a=t.lanes;a&=l.pendingLanes,e|=a,t.lanes=e,xf(l,e)}}var lu={readContext:Dl,use:en,useCallback:rl,useContext:rl,useEffect:rl,useImperativeHandle:rl,useLayoutEffect:rl,useInsertionEffect:rl,useMemo:rl,useReducer:rl,useRef:rl,useState:rl,useDebugValue:rl,useDeferredValue:rl,useTransition:rl,useSyncExternalStore:rl,useId:rl,useHostTransitionStatus:rl,useFormState:rl,useActionState:rl,useOptimistic:rl,useMemoCache:rl,useCacheRefresh:rl};lu.useEffectEvent=rl;var So={readContext:Dl,use:en,useCallback:function(l,t){return Bl().memoizedState=[l,t===void 0?null:t],l},useContext:Dl,useEffect:to,useImperativeHandle:function(l,t,e){e=e!=null?e.concat([l]):null,un(4194308,4,no.bind(null,t,l),e)},useLayoutEffect:function(l,t){return un(4194308,4,l,t)},useInsertionEffect:function(l,t){un(4,2,l,t)},useMemo:function(l,t){var e=Bl();t=t===void 0?null:t;var a=l();if(Be){$t(!0);try{l()}finally{$t(!1)}}return e.memoizedState=[a,t],a},useReducer:function(l,t,e){var a=Bl();if(e!==void 0){var u=e(t);if(Be){$t(!0);try{e(t)}finally{$t(!1)}}}else u=t;return a.memoizedState=a.baseState=u,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:u},a.queue=l,l=l.dispatch=Fm.bind(null,X,l),[a.memoizedState,l]},useRef:function(l){var t=Bl();return l={current:l},t.memoizedState=l},useState:function(l){l=$i(l);var t=l.queue,e=vo.bind(null,X,t);return t.dispatch=e,[l.memoizedState,e]},useDebugValue:Pi,useDeferredValue:function(l,t){var e=Bl();return lc(e,l,t)},useTransition:function(){var l=$i(!1);return l=oo.bind(null,X,l.queue,!0,!1),Bl().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,e){var a=X,u=Bl();if(k){if(e===void 0)throw Error(m(407));e=e()}else{if(e=t(),sl===null)throw Error(m(349));(J&127)!==0||Gs(a,t,e)}u.memoizedState=e;var n={value:e,getSnapshot:t};return u.queue=n,to(Xs.bind(null,a,n,l),[l]),a.flags|=2048,ra(9,{destroy:void 0},Qs.bind(null,a,n,e,t),null),e},useId:function(){var l=Bl(),t=sl.identifierPrefix;if(k){var e=_t,a=At;e=(a&~(1<<32-Pl(a)-1)).toString(32)+e,t="_"+t+"R_"+e,e=ln++,0<\/script>",n=n.removeChild(n.firstChild);break;case"select":n=typeof a.is=="string"?i.createElement("select",{is:a.is}):i.createElement("select"),a.multiple?n.multiple=!0:a.size&&(n.size=a.size);break;default:n=typeof a.is=="string"?i.createElement(u,{is:a.is}):i.createElement(u)}}n[Nl]=t,n[Ll]=a;l:for(i=t.child;i!==null;){if(i.tag===5||i.tag===6)n.appendChild(i.stateNode);else if(i.tag!==4&&i.tag!==27&&i.child!==null){i.child.return=i,i=i.child;continue}if(i===t)break l;for(;i.sibling===null;){if(i.return===null||i.return===t)break l;i=i.return}i.sibling.return=i.return,i=i.sibling}t.stateNode=n;l:switch(jl(n,u,a),u){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break l;case"img":a=!0;break l;default:a=!1}a&&Xt(t)}}return ml(t),gc(t,t.type,l===null?null:l.memoizedProps,t.pendingProps,e),null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==a&&Xt(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(m(166));if(l=L.current,na(t)){if(l=t.stateNode,e=t.memoizedProps,a=null,u=Ol,u!==null)switch(u.tag){case 27:case 5:a=u.memoizedProps}l[Nl]=t,l=!!(l.nodeValue===e||a!==null&&a.suppressHydrationWarning===!0||Y0(l.nodeValue,e)),l||te(t,!0)}else l=Mn(l).createTextNode(a),l[Nl]=t,t.stateNode=l}return ml(t),null;case 31:if(e=t.memoizedState,l===null||l.memoizedState!==null){if(a=na(t),e!==null){if(l===null){if(!a)throw Error(m(318));if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(m(557));l[Nl]=t}else De(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ml(t),l=!1}else e=Mi(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=e),l=!0;if(!l)return t.flags&256?(at(t),t):(at(t),null);if((t.flags&128)!==0)throw Error(m(558))}return ml(t),null;case 13:if(a=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(u=na(t),a!==null&&a.dehydrated!==null){if(l===null){if(!u)throw Error(m(318));if(u=t.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(m(317));u[Nl]=t}else De(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ml(t),u=!1}else u=Mi(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=u),u=!0;if(!u)return t.flags&256?(at(t),t):(at(t),null)}return at(t),(t.flags&128)!==0?(t.lanes=e,t):(e=a!==null,l=l!==null&&l.memoizedState!==null,e&&(a=t.child,u=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(u=a.alternate.memoizedState.cachePool.pool),n=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(n=a.memoizedState.cachePool.pool),n!==u&&(a.flags|=2048)),e!==l&&e&&(t.child.flags|=8192),mn(t,t.updateQueue),ml(t),null);case 4:return vl(),l===null&&Gc(t.stateNode.containerInfo),ml(t),null;case 10:return Bt(t.type),ml(t),null;case 19:if(T(gl),a=t.memoizedState,a===null)return ml(t),null;if(u=(t.flags&128)!==0,n=a.rendering,n===null)if(u)eu(a,!1);else{if(yl!==0||l!==null&&(l.flags&128)!==0)for(l=t.child;l!==null;){if(n=Iu(l),n!==null){for(t.flags|=128,eu(a,!1),l=n.updateQueue,t.updateQueue=l,mn(t,l),t.subtreeFlags=0,l=e,e=t.child;e!==null;)ys(e,l),e=e.sibling;return _(gl,gl.current&1|2),k&&Rt(t,a.treeForkCount),t.child}l=l.sibling}a.tail!==null&&Fl()>gn&&(t.flags|=128,u=!0,eu(a,!1),t.lanes=4194304)}else{if(!u)if(l=Iu(n),l!==null){if(t.flags|=128,u=!0,l=l.updateQueue,t.updateQueue=l,mn(t,l),eu(a,!0),a.tail===null&&a.tailMode==="hidden"&&!n.alternate&&!k)return ml(t),null}else 2*Fl()-a.renderingStartTime>gn&&e!==536870912&&(t.flags|=128,u=!0,eu(a,!1),t.lanes=4194304);a.isBackwards?(n.sibling=t.child,t.child=n):(l=a.last,l!==null?l.sibling=n:t.child=n,a.last=n)}return a.tail!==null?(l=a.tail,a.rendering=l,a.tail=l.sibling,a.renderingStartTime=Fl(),l.sibling=null,e=gl.current,_(gl,u?e&1|2:e&1),k&&Rt(t,a.treeForkCount),l):(ml(t),null);case 22:case 23:return at(t),Qi(),a=t.memoizedState!==null,l!==null?l.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(e&536870912)!==0&&(t.flags&128)===0&&(ml(t),t.subtreeFlags&6&&(t.flags|=8192)):ml(t),e=t.updateQueue,e!==null&&mn(t,e.retryQueue),e=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(e=l.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==e&&(t.flags|=2048),l!==null&&T(He),null;case 24:return e=null,l!==null&&(e=l.memoizedState.cache),t.memoizedState.cache!==e&&(t.flags|=2048),Bt(pl),ml(t),null;case 25:return null;case 30:return null}throw Error(m(156,t.tag))}function eh(l,t){switch(Ai(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return Bt(pl),vl(),l=t.flags,(l&65536)!==0&&(l&128)===0?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return xu(t),null;case 31:if(t.memoizedState!==null){if(at(t),t.alternate===null)throw Error(m(340));De()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 13:if(at(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(m(340));De()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return T(gl),null;case 4:return vl(),null;case 10:return Bt(t.type),null;case 22:case 23:return at(t),Qi(),l!==null&&T(He),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return Bt(pl),null;case 25:return null;default:return null}}function Lo(l,t){switch(Ai(t),t.tag){case 3:Bt(pl),vl();break;case 26:case 27:case 5:xu(t);break;case 4:vl();break;case 31:t.memoizedState!==null&&at(t);break;case 13:at(t);break;case 19:T(gl);break;case 10:Bt(t.type);break;case 22:case 23:at(t),Qi(),l!==null&&T(He);break;case 24:Bt(pl)}}function au(l,t){try{var e=t.updateQueue,a=e!==null?e.lastEffect:null;if(a!==null){var u=a.next;e=u;do{if((e.tag&l)===l){a=void 0;var n=e.create,i=e.inst;a=n(),i.destroy=a}e=e.next}while(e!==u)}}catch(c){al(t,t.return,c)}}function fe(l,t,e){try{var a=t.updateQueue,u=a!==null?a.lastEffect:null;if(u!==null){var n=u.next;a=n;do{if((a.tag&l)===l){var i=a.inst,c=i.destroy;if(c!==void 0){i.destroy=void 0,u=t;var f=e,r=c;try{r()}catch(b){al(u,f,b)}}}a=a.next}while(a!==n)}}catch(b){al(t,t.return,b)}}function Vo(l){var t=l.updateQueue;if(t!==null){var e=l.stateNode;try{Hs(t,e)}catch(a){al(l,l.return,a)}}}function Ko(l,t,e){e.props=Ye(l.type,l.memoizedProps),e.state=l.memoizedState;try{e.componentWillUnmount()}catch(a){al(l,t,a)}}function uu(l,t){try{var e=l.ref;if(e!==null){switch(l.tag){case 26:case 27:case 5:var a=l.stateNode;break;case 30:a=l.stateNode;break;default:a=l.stateNode}typeof e=="function"?l.refCleanup=e(a):e.current=a}}catch(u){al(l,t,u)}}function Mt(l,t){var e=l.ref,a=l.refCleanup;if(e!==null)if(typeof a=="function")try{a()}catch(u){al(l,t,u)}finally{l.refCleanup=null,l=l.alternate,l!=null&&(l.refCleanup=null)}else if(typeof e=="function")try{e(null)}catch(u){al(l,t,u)}else e.current=null}function Jo(l){var t=l.type,e=l.memoizedProps,a=l.stateNode;try{l:switch(t){case"button":case"input":case"select":case"textarea":e.autoFocus&&a.focus();break l;case"img":e.src?a.src=e.src:e.srcSet&&(a.srcset=e.srcSet)}}catch(u){al(l,l.return,u)}}function bc(l,t,e){try{var a=l.stateNode;Eh(a,l.type,e,t),a[Ll]=t}catch(u){al(l,l.return,u)}}function wo(l){return l.tag===5||l.tag===3||l.tag===26||l.tag===27&&ye(l.type)||l.tag===4}function Sc(l){l:for(;;){for(;l.sibling===null;){if(l.return===null||wo(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==18;){if(l.tag===27&&ye(l.type)||l.flags&2||l.child===null||l.tag===4)continue l;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function pc(l,t,e){var a=l.tag;if(a===5||a===6)l=l.stateNode,t?(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e).insertBefore(l,t):(t=e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,t.appendChild(l),e=e._reactRootContainer,e!=null||t.onclick!==null||(t.onclick=jt));else if(a!==4&&(a===27&&ye(l.type)&&(e=l.stateNode,t=null),l=l.child,l!==null))for(pc(l,t,e),l=l.sibling;l!==null;)pc(l,t,e),l=l.sibling}function hn(l,t,e){var a=l.tag;if(a===5||a===6)l=l.stateNode,t?e.insertBefore(l,t):e.appendChild(l);else if(a!==4&&(a===27&&ye(l.type)&&(e=l.stateNode),l=l.child,l!==null))for(hn(l,t,e),l=l.sibling;l!==null;)hn(l,t,e),l=l.sibling}function Wo(l){var t=l.stateNode,e=l.memoizedProps;try{for(var a=l.type,u=t.attributes;u.length;)t.removeAttributeNode(u[0]);jl(t,a,e),t[Nl]=l,t[Ll]=e}catch(n){al(l,l.return,n)}}var Zt=!1,Tl=!1,zc=!1,ko=typeof WeakSet=="function"?WeakSet:Set,Ml=null;function ah(l,t){if(l=l.containerInfo,Zc=Cn,l=is(l),ri(l)){if("selectionStart"in l)var e={start:l.selectionStart,end:l.selectionEnd};else l:{e=(e=l.ownerDocument)&&e.defaultView||window;var a=e.getSelection&&e.getSelection();if(a&&a.rangeCount!==0){e=a.anchorNode;var u=a.anchorOffset,n=a.focusNode;a=a.focusOffset;try{e.nodeType,n.nodeType}catch{e=null;break l}var i=0,c=-1,f=-1,r=0,b=0,x=l,y=null;t:for(;;){for(var v;x!==e||u!==0&&x.nodeType!==3||(c=i+u),x!==n||a!==0&&x.nodeType!==3||(f=i+a),x.nodeType===3&&(i+=x.nodeValue.length),(v=x.firstChild)!==null;)y=x,x=v;for(;;){if(x===l)break t;if(y===e&&++r===u&&(c=i),y===n&&++b===a&&(f=i),(v=x.nextSibling)!==null)break;x=y,y=x.parentNode}x=v}e=c===-1||f===-1?null:{start:c,end:f}}else e=null}e=e||{start:0,end:0}}else e=null;for(Lc={focusedElem:l,selectionRange:e},Cn=!1,Ml=t;Ml!==null;)if(t=Ml,l=t.child,(t.subtreeFlags&1028)!==0&&l!==null)l.return=t,Ml=l;else for(;Ml!==null;){switch(t=Ml,n=t.alternate,l=t.flags,t.tag){case 0:if((l&4)!==0&&(l=t.updateQueue,l=l!==null?l.events:null,l!==null))for(e=0;e title"))),jl(n,a,e),n[Nl]=l,_l(n),a=n;break l;case"link":var i=td("link","href",u).get(a+(e.href||""));if(i){for(var c=0;ccl&&(i=cl,cl=C,C=i);var d=us(c,C),s=us(c,cl);if(d&&s&&(v.rangeCount!==1||v.anchorNode!==d.node||v.anchorOffset!==d.offset||v.focusNode!==s.node||v.focusOffset!==s.offset)){var h=x.createRange();h.setStart(d.node,d.offset),v.removeAllRanges(),C>cl?(v.addRange(h),v.extend(s.node,s.offset)):(h.setEnd(s.node,s.offset),v.addRange(h))}}}}for(x=[],v=c;v=v.parentNode;)v.nodeType===1&&x.push({element:v,left:v.scrollLeft,top:v.scrollTop});for(typeof c.focus=="function"&&c.focus(),c=0;ce?32:e,p.T=null,e=Nc,Nc=null;var n=me,i=wt;if(Al=0,Sa=me=null,wt=0,(ll&6)!==0)throw Error(m(331));var c=ll;if(ll|=4,i0(n.current),a0(n,n.current,i,e),ll=c,ou(0,!1),Il&&typeof Il.onPostCommitFiberRoot=="function")try{Il.onPostCommitFiberRoot(Na,n)}catch{}return!0}finally{A.p=u,p.T=a,E0(l,t)}}function _0(l,t,e){t=dt(e,t),t=cc(l.stateNode,t,2),l=ne(l,t,2),l!==null&&(Da(l,2),Nt(l))}function al(l,t,e){if(l.tag===3)_0(l,l,e);else for(;t!==null;){if(t.tag===3){_0(t,l,e);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(de===null||!de.has(a))){l=dt(e,l),e=Mo(2),a=ne(t,e,2),a!==null&&(No(e,a,t,l),Da(a,2),Nt(a));break}}t=t.return}}function jc(l,t,e){var a=l.pingCache;if(a===null){a=l.pingCache=new ih;var u=new Set;a.set(t,u)}else u=a.get(t),u===void 0&&(u=new Set,a.set(t,u));u.has(e)||(Ec=!0,u.add(e),l=dh.bind(null,l,t,e),t.then(l,l))}function dh(l,t,e){var a=l.pingCache;a!==null&&a.delete(t),l.pingedLanes|=l.suspendedLanes&e,l.warmLanes&=~e,sl===l&&(J&e)===e&&(yl===4||yl===3&&(J&62914560)===J&&300>Fl()-vn?(ll&2)===0&&pa(l,0):Ac|=e,ba===J&&(ba=0)),Nt(l)}function M0(l,t){t===0&&(t=pf()),l=Ne(l,t),l!==null&&(Da(l,t),Nt(l))}function mh(l){var t=l.memoizedState,e=0;t!==null&&(e=t.retryLane),M0(l,e)}function hh(l,t){var e=0;switch(l.tag){case 31:case 13:var a=l.stateNode,u=l.memoizedState;u!==null&&(e=u.retryLane);break;case 19:a=l.stateNode;break;case 22:a=l.stateNode._retryCache;break;default:throw Error(m(314))}a!==null&&a.delete(t),M0(l,e)}function rh(l,t){return Kn(l,t)}var Tn=null,xa=null,Hc=!1,En=!1,Cc=!1,re=0;function Nt(l){l!==xa&&l.next===null&&(xa===null?Tn=xa=l:xa=xa.next=l),En=!0,Hc||(Hc=!0,vh())}function ou(l,t){if(!Cc&&En){Cc=!0;do for(var e=!1,a=Tn;a!==null;){if(l!==0){var u=a.pendingLanes;if(u===0)var n=0;else{var i=a.suspendedLanes,c=a.pingedLanes;n=(1<<31-Pl(42|l)+1)-1,n&=u&~(i&~c),n=n&201326741?n&201326741|1:n?n|2:0}n!==0&&(e=!0,U0(a,n))}else n=J,n=Mu(a,a===sl?n:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(n&3)===0||Oa(a,n)||(e=!0,U0(a,n));a=a.next}while(e);Cc=!1}}function yh(){N0()}function N0(){En=Hc=!1;var l=0;re!==0&&_h()&&(l=re);for(var t=Fl(),e=null,a=Tn;a!==null;){var u=a.next,n=O0(a,t);n===0?(a.next=null,e===null?Tn=u:e.next=u,u===null&&(xa=e)):(e=a,(l!==0||(n&3)!==0)&&(En=!0)),a=u}Al!==0&&Al!==5||ou(l),re!==0&&(re=0)}function O0(l,t){for(var e=l.suspendedLanes,a=l.pingedLanes,u=l.expirationTimes,n=l.pendingLanes&-62914561;0c)break;var b=f.transferSize,x=f.initiatorType;b&&G0(x)&&(f=f.responseEnd,i+=b*(f"u"?null:document;function F0(l,t,e){var a=Ta;if(a&&typeof t=="string"&&t){var u=st(t);u='link[rel="'+l+'"][href="'+u+'"]',typeof e=="string"&&(u+='[crossorigin="'+e+'"]'),$0.has(u)||($0.add(u),l={rel:l,crossOrigin:e,href:t},a.querySelector(u)===null&&(t=a.createElement("link"),jl(t,"link",l),_l(t),a.head.appendChild(t)))}}function Rh(l){Wt.D(l),F0("dns-prefetch",l,null)}function qh(l,t){Wt.C(l,t),F0("preconnect",l,t)}function Bh(l,t,e){Wt.L(l,t,e);var a=Ta;if(a&&l&&t){var u='link[rel="preload"][as="'+st(t)+'"]';t==="image"&&e&&e.imageSrcSet?(u+='[imagesrcset="'+st(e.imageSrcSet)+'"]',typeof e.imageSizes=="string"&&(u+='[imagesizes="'+st(e.imageSizes)+'"]')):u+='[href="'+st(l)+'"]';var n=u;switch(t){case"style":n=Ea(l);break;case"script":n=Aa(l)}gt.has(n)||(l=R({rel:"preload",href:t==="image"&&e&&e.imageSrcSet?void 0:l,as:t},e),gt.set(n,l),a.querySelector(u)!==null||t==="style"&&a.querySelector(ru(n))||t==="script"&&a.querySelector(yu(n))||(t=a.createElement("link"),jl(t,"link",l),_l(t),a.head.appendChild(t)))}}function Yh(l,t){Wt.m(l,t);var e=Ta;if(e&&l){var a=t&&typeof t.as=="string"?t.as:"script",u='link[rel="modulepreload"][as="'+st(a)+'"][href="'+st(l)+'"]',n=u;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=Aa(l)}if(!gt.has(n)&&(l=R({rel:"modulepreload",href:l},t),gt.set(n,l),e.querySelector(u)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(e.querySelector(yu(n)))return}a=e.createElement("link"),jl(a,"link",l),_l(a),e.head.appendChild(a)}}}function Gh(l,t,e){Wt.S(l,t,e);var a=Ta;if(a&&l){var u=Je(a).hoistableStyles,n=Ea(l);t=t||"default";var i=u.get(n);if(!i){var c={loading:0,preload:null};if(i=a.querySelector(ru(n)))c.loading=5;else{l=R({rel:"stylesheet",href:l,"data-precedence":t},e),(e=gt.get(n))&&$c(l,e);var f=i=a.createElement("link");_l(f),jl(f,"link",l),f._p=new Promise(function(r,b){f.onload=r,f.onerror=b}),f.addEventListener("load",function(){c.loading|=1}),f.addEventListener("error",function(){c.loading|=2}),c.loading|=4,On(i,t,a)}i={type:"stylesheet",instance:i,count:1,state:c},u.set(n,i)}}}function Qh(l,t){Wt.X(l,t);var e=Ta;if(e&&l){var a=Je(e).hoistableScripts,u=Aa(l),n=a.get(u);n||(n=e.querySelector(yu(u)),n||(l=R({src:l,async:!0},t),(t=gt.get(u))&&Fc(l,t),n=e.createElement("script"),_l(n),jl(n,"link",l),e.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(u,n))}}function Xh(l,t){Wt.M(l,t);var e=Ta;if(e&&l){var a=Je(e).hoistableScripts,u=Aa(l),n=a.get(u);n||(n=e.querySelector(yu(u)),n||(l=R({src:l,async:!0,type:"module"},t),(t=gt.get(u))&&Fc(l,t),n=e.createElement("script"),_l(n),jl(n,"link",l),e.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(u,n))}}function I0(l,t,e,a){var u=(u=L.current)?Nn(u):null;if(!u)throw Error(m(446));switch(l){case"meta":case"title":return null;case"style":return typeof e.precedence=="string"&&typeof e.href=="string"?(t=Ea(e.href),e=Je(u).hoistableStyles,a=e.get(t),a||(a={type:"style",instance:null,count:0,state:null},e.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(e.rel==="stylesheet"&&typeof e.href=="string"&&typeof e.precedence=="string"){l=Ea(e.href);var n=Je(u).hoistableStyles,i=n.get(l);if(i||(u=u.ownerDocument||u,i={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(l,i),(n=u.querySelector(ru(l)))&&!n._p&&(i.instance=n,i.state.loading=5),gt.has(l)||(e={rel:"preload",as:"style",href:e.href,crossOrigin:e.crossOrigin,integrity:e.integrity,media:e.media,hrefLang:e.hrefLang,referrerPolicy:e.referrerPolicy},gt.set(l,e),n||Zh(u,l,e,i.state))),t&&a===null)throw Error(m(528,""));return i}if(t&&a!==null)throw Error(m(529,""));return null;case"script":return t=e.async,e=e.src,typeof e=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Aa(e),e=Je(u).hoistableScripts,a=e.get(t),a||(a={type:"script",instance:null,count:0,state:null},e.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(m(444,l))}}function Ea(l){return'href="'+st(l)+'"'}function ru(l){return'link[rel="stylesheet"]['+l+"]"}function P0(l){return R({},l,{"data-precedence":l.precedence,precedence:null})}function Zh(l,t,e,a){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=l.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),jl(t,"link",e),_l(t),l.head.appendChild(t))}function Aa(l){return'[src="'+st(l)+'"]'}function yu(l){return"script[async]"+l}function ld(l,t,e){if(t.count++,t.instance===null)switch(t.type){case"style":var a=l.querySelector('style[data-href~="'+st(e.href)+'"]');if(a)return t.instance=a,_l(a),a;var u=R({},e,{"data-href":e.href,"data-precedence":e.precedence,href:null,precedence:null});return a=(l.ownerDocument||l).createElement("style"),_l(a),jl(a,"style",u),On(a,e.precedence,l),t.instance=a;case"stylesheet":u=Ea(e.href);var n=l.querySelector(ru(u));if(n)return t.state.loading|=4,t.instance=n,_l(n),n;a=P0(e),(u=gt.get(u))&&$c(a,u),n=(l.ownerDocument||l).createElement("link"),_l(n);var i=n;return i._p=new Promise(function(c,f){i.onload=c,i.onerror=f}),jl(n,"link",a),t.state.loading|=4,On(n,e.precedence,l),t.instance=n;case"script":return n=Aa(e.src),(u=l.querySelector(yu(n)))?(t.instance=u,_l(u),u):(a=e,(u=gt.get(n))&&(a=R({},e),Fc(a,u)),l=l.ownerDocument||l,u=l.createElement("script"),_l(u),jl(u,"link",a),l.head.appendChild(u),t.instance=u);case"void":return null;default:throw Error(m(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,On(a,e.precedence,l));return t.instance}function On(l,t,e){for(var a=e.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),u=a.length?a[a.length-1]:null,n=u,i=0;i title"):null)}function Lh(l,t,e){if(e===1||t.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return l=t.disabled,typeof t.precedence=="string"&&l==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function ad(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}function Vh(l,t,e,a){if(e.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(e.state.loading&4)===0){if(e.instance===null){var u=Ea(a.href),n=t.querySelector(ru(u));if(n){t=n._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(l.count++,l=Un.bind(l),t.then(l,l)),e.state.loading|=4,e.instance=n,_l(n);return}n=t.ownerDocument||t,a=P0(a),(u=gt.get(u))&&$c(a,u),n=n.createElement("link"),_l(n);var i=n;i._p=new Promise(function(c,f){i.onload=c,i.onerror=f}),jl(n,"link",a),e.instance=n}l.stylesheets===null&&(l.stylesheets=new Map),l.stylesheets.set(e,t),(t=e.state.preload)&&(e.state.loading&3)===0&&(l.count++,e=Un.bind(l),t.addEventListener("load",e),t.addEventListener("error",e))}}var Ic=0;function Kh(l,t){return l.stylesheets&&l.count===0&&Hn(l,l.stylesheets),0Ic?50:800)+t);return l.unsuspend=e,function(){l.unsuspend=null,clearTimeout(a),clearTimeout(u)}}:null}function Un(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Hn(this,this.stylesheets);else if(this.unsuspend){var l=this.unsuspend;this.unsuspend=null,l()}}}var jn=null;function Hn(l,t){l.stylesheets=null,l.unsuspend!==null&&(l.count++,jn=new Map,t.forEach(Jh,l),jn=null,Un.call(l))}function Jh(l,t){if(!(t.state.loading&4)){var e=jn.get(l);if(e)var a=e.get(null);else{e=new Map,jn.set(l,e);for(var u=l.querySelectorAll("link[data-precedence],style[data-precedence]"),n=0;n"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(S)}catch(U){console.error(U)}}return S(),ff.exports=s1(),ff.exports}var d1=o1();const m1=Od(d1),h1={name:{en:"Xiang, Silian",zh:"项思炼"},title:{en:"Senior Developer / Simulation Expert",zh:"高级开发工程师 / 仿真专家"},summary:{en:"10+ years of experience. 4 years in autonomous driving simulation engine development and management. 6 years in mobile game development (Unity, Cocos2d, 3D graphics). 2 years in data visualization using React. Master of Engineering.",zh:"10年以上工作经验。4年自动驾驶HMI、仿真开发管理经验。6年Unity、Cocos2d游戏开发管理经验。3年Linux后端开发及大数据Docker部署经验。"},contact:{mobile:"13810215419",email:"youmiss@163.com",wechat:"13810215419"},skills:[{en:"Autonomous Driving Simulation (LGSVL, World Sim)",zh:"自动驾驶仿真 (LGSVL, World Sim)"},{en:"Unity 3D / Cocos2d Development",zh:"Unity 3D / Cocos2d 开发"},{en:"HMI Development (Android/PC)",zh:"HMI 开发 (Android/PC)"},{en:"Backend (C++, Java, Python, WebRTC)",zh:"后端 (C++, Java, Python, WebRTC)"},{en:"Graphics Programming (OpenGL, Shaders)",zh:"图形编程 (OpenGL, Shaders)"},{en:"Frontend (React, TypeScript)",zh:"前端 (React, TypeScript)"}],experience:[{company:{en:"Yi Hai Lan",zh:"亿海蓝"},role:{en:"Software Development Engineer",zh:"软件开发工程师"},period:"2024/05 - Present",description:[{en:"Ship Autonomous Driving HMI System: Frontend using Unity (PC/Android), Backend on Orin using C++.",zh:"轮船自动驾驶HMI系统开发:前端采用Unity(支持PC和Android),后端为Orin采用C++开发。"},{en:"Remote Driving System Development: WebRTC low-latency video, KCP protocol control integration, multi-platform server architecture.",zh:"远程驾驶系统开发:WebRTC低延时视频,KCP协议控制指令集成,多端服务器架构设计。"}]},{company:{en:"He Duo Technology (HoloMatic)",zh:"禾多科技"},role:{en:"Lead Developer of Simulation Engine",zh:"可视化、仿真开发负责人"},period:"2020/10 - 2024/04",description:[{en:"LGSVL Secondary Development: Built initial sim engine supporting ground truth perception testing and Python-based PNC scenarios.",zh:"基于LGSVL进行二次开发,完成仿真引擎初版。支持感知结果真值的自动驾驶仿真测试,通过Python搭建测试场景进行PNC测试。"},{en:"Sim Engine 2.0 Refactor: Implemented Unity real-time rendering for raw camera input simulation (closed-loop). Full data recording for replay. Decoupled logic from game engine (white-box testing). RL for NPC motion.",zh:"重构仿真引擎升级到2.0:Unity实时渲染仿真摄像头原始图像(闭环测试);全数据记录与重放;逻辑纯代码实现(白盒化);强化学习控制NPC运动。"},{en:"Developed in-house OpenScenario parsing engine.",zh:"自研OpenScenario解析引擎,支持标准化的仿真测试。"},{en:"Log Sim & World Sim: HIL bench testing, Perception CI/CD, Cloud Docker large-scale concurrency testing.",zh:"Log Sim回灌测试(Hil台架,感知CI/CD);World Sim仿真测试(云端Docker大规模并发测试)。"},{en:"HMI Rendering: Optimization for TDA4 platform, proprietary UI framework on 8155 chip.",zh:"HMI渲染开发:TDA4平台3D实时流畅渲染,自研交互框架在8155芯片实现高清渲染。"}]},{company:{en:"Independent Game",zh:"独立游戏开发"},role:{en:"Game Producer",zh:"独立游戏制作人"},period:"2019/11 - 2020/09",description:[{en:"Smart TV Game: 'Soldier vs. Monster' (Unity). Optimized for low-end hardware.",zh:"智能电视游戏:《士兵打怪兽》(体感游戏,山寨健身环大冒险),硬件软件全栈开发。"},{en:"Mobile Education: 'Solid Geometry' AR teaching software.",zh:"手机教育软件:《立体几何》AR增强现实教学软件。"}]},{company:{en:"HappyElement (Beijing)",zh:"乐元互动(北京)"},role:{en:"AI Engineer",zh:"AI工程师"},period:"2018/01 - 2019/04",description:[{en:"Full stack development, Big Data Analysis & Visualization using React and Druid.",zh:"全栈开发,大数据分析&可视化(React)。AI驱动游戏运营。"}]},{company:{en:"Beijing Youyi Mr. Technology",zh:"北京游艺先生科技"},role:{en:"Technical Manager / Partner",zh:"技术合伙人"},period:"2014/05 - 2017/12",description:[{en:"Built tech team from scratch. Developed 'Ice and Fire Fantasy' (Cocos2dx + Lua, Java/Redis/MySQL).",zh:"从零开始搭建技术团队。开发手机游戏《冰火幻想》(客户端Cocos2dx+Lua,服务器Java+Redis+MySQL)。"},{en:"Virtual Idol Development (UE4 + Motion Capture).",zh:"虚拟偶像开发(UE4 + 洛伊滕动捕),数值人直播。"}]},{company:{en:"HappyElement (Beijing)",zh:"乐元互动(北京)"},role:{en:"Technical Manager / Main Programmer",zh:"主程序"},period:"2011/03 - 2014/05",description:[{en:"Participated in 'Aquarium', 'Happy Fish'. Main programmer for 'Dragon Legend', 'Warrior World'.",zh:"参与《开心水族馆》《开心消消乐》开发。《巨龙传说》《指尖英雄》《战姬天下》前后端开发。"}]},{company:{en:"Tencent",zh:"腾讯"},role:{en:"Game Developer (C++)",zh:"C++ 程序"},period:"2010/03 - 2011/03",description:[{en:"Participated in 'Happy Landlord'. Main programmer for 'QQ Matching'.",zh:"参与《欢乐斗地主》开发,《QQ连连看》主程序。"}]},{company:{en:"Gameloft",zh:"Gameloft"},role:{en:"Lead Mobile Game Programmer",zh:"手机游戏主程序"},period:"2008/08 - 2010/03",description:[{en:"Programmed 'Real Football' and 'Chess' games (Java/Lua).",zh:"《脑白金》主机游戏Lua,《真实足球》Java,《棒球》C++。"}]}],education:[{school:{en:"Guizhou University",zh:"贵州大学 (211)"},degree:{en:"Master of Engineering",zh:"硕士"},major:{en:"Computer Application Technology",zh:"计算机应用技术"},period:"2005/09 - 2008/07"},{school:{en:"Guizhou University",zh:"贵州大学 (211)"},degree:{en:"Bachelor of Engineering",zh:"本科"},major:{en:"Automation",zh:"自动化"},period:"1999/09 - 2003/07"}],projects:[{title:{en:"U3D Software Rendering Engine",zh:"U3D 软渲染引擎"},description:{en:"Deep dive into Unity rendering pipeline. Implemented Simple_lit and Physically Based Rendering (PBR) shaders in pure C++.",zh:"深入理解Unity引擎渲染细节。复刻Unity URP Shader效果,实现simple_lit及物理渲染Lit shader。"},link:"https://zhuanlan.zhihu.com/p/688850501",linkText:{en:"View Article (Zhihu)",zh:"知乎专栏"},imageType:"code",imageUrl:"https://images.unsplash.com/photo-1618005182384-a83a8bd57fbe?q=80&w=2564&auto=format&fit=crop"},{title:{en:"Surround View Camera Simulation",zh:"环视摄像头仿真"},description:{en:"Solved 180+ degree FOV rendering issues using spherical projection instead of pinhole models, improving efficiency by 6x. High fidelity fisheye simulation.",zh:"环视全景相机实时渲染。弃用传统视锥体投影,采用球视体模型统一处理坐标变换和畸变,效率提升6倍。"},link:"https://www.bilibili.com/video/BV16z421f7xH",linkText:{en:"View Video (Bilibili)",zh:"B站视频"},imageType:"car",imageUrl:"https://images.unsplash.com/photo-1492144534655-ae79c964c9d7?q=80&w=2304&auto=format&fit=crop"},{title:{en:"LiDAR Point Cloud Visualization",zh:"激光雷达点云数据可视化"},description:{en:"Unity URP pipeline. Encoded point cloud data to GPU via texture. Used Compute Shaders for vertex transformation and coloring, supporting 10M+ points on integrated graphics.",zh:"采用Unity URP管线。编写Computer shader进行点云可视化,支持集成显卡上千万级点云实时渲染。"},imageType:"chart",imageUrl:"https://images.unsplash.com/photo-1558494949-ef526b0042a0?q=80&w=2600&auto=format&fit=crop"},{title:{en:"AR Solid Geometry",zh:"AR 立体几何"},description:{en:"Augmented Reality teaching software using physical object visual features (no markers required). Occlusion rendering for realistic 3D geometry.",zh:"不用特定特征图片,直接采用实物视觉效果。采用空间透明遮挡渲染模型来渲染立体几何效果。"},link:"http://www.bilibili.com/video/BV1jW421A7mM",linkText:{en:"View Video",zh:"B站视频"},imageType:"code",imageUrl:"https://images.unsplash.com/photo-1531297461136-82lwDe43q5DL?q=80&w=2600&auto=format&fit=crop"}]};/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const r1=S=>S.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),y1=S=>S.replace(/^([A-Z])|[\s-_]+(\w)/g,(U,H,m)=>m?m.toUpperCase():H.toLowerCase()),Md=S=>{const U=y1(S);return U.charAt(0).toUpperCase()+U.slice(1)},Dd=(...S)=>S.filter((U,H,m)=>!!U&&U.trim()!==""&&m.indexOf(U)===H).join(" ").trim(),v1=S=>{for(const U in S)if(U.startsWith("aria-")||U==="role"||U==="title")return!0};/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var g1={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const b1=Xe.forwardRef(({color:S="currentColor",size:U=24,strokeWidth:H=2,absoluteStrokeWidth:m,className:Y="",children:q,iconNode:ol,...Sl},D)=>Xe.createElement("svg",{ref:D,...g1,width:U,height:U,stroke:S,strokeWidth:m?Number(H)*24/Number(U):H,className:Dd("lucide",Y),...!q&&!v1(Sl)&&{"aria-hidden":"true"},...Sl},[...ol.map(([E,$])=>Xe.createElement(E,$)),...Array.isArray(q)?q:[q]]));/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Yl=(S,U)=>{const H=Xe.forwardRef(({className:m,...Y},q)=>Xe.createElement(b1,{ref:q,iconNode:U,className:Dd(`lucide-${r1(Md(S))}`,`lucide-${S}`,m),...Y}));return H.displayName=Md(S),H};/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S1=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],Nd=Yl("calendar",S1);/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const p1=[["path",{d:"M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2",key:"5owen"}],["circle",{cx:"7",cy:"17",r:"2",key:"u2ysq9"}],["path",{d:"M9 17h6",key:"r8uit2"}],["circle",{cx:"17",cy:"17",r:"2",key:"axvx0g"}]],z1=Yl("car",p1);/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const x1=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],T1=Yl("chart-column",x1);/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const E1=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],A1=Yl("chevron-down",E1);/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _1=[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]],M1=Yl("code",_1);/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const N1=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],O1=Yl("download",N1);/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const D1=[["path",{d:"M21.54 15H17a2 2 0 0 0-2 2v4.54",key:"1djwo0"}],["path",{d:"M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17",key:"1tzkfa"}],["path",{d:"M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05",key:"14pb5j"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],U1=Yl("earth",D1);/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const j1=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],H1=Yl("external-link",j1);/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const C1=[["line",{x1:"6",x2:"10",y1:"11",y2:"11",key:"1gktln"}],["line",{x1:"8",x2:"8",y1:"9",y2:"13",key:"qnk9ow"}],["line",{x1:"15",x2:"15.01",y1:"12",y2:"12",key:"krot7o"}],["line",{x1:"18",x2:"18.01",y1:"10",y2:"10",key:"1lcuu1"}],["path",{d:"M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z",key:"mfqc10"}]],R1=Yl("gamepad-2",C1);/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const q1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],B1=Yl("globe",q1);/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Y1=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],G1=Yl("graduation-cap",Y1);/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Q1=[["path",{d:"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z",key:"c2jq9f"}],["rect",{width:"4",height:"12",x:"2",y:"9",key:"mk3on5"}],["circle",{cx:"4",cy:"4",r:"2",key:"bt5ra8"}]],X1=Yl("linkedin",Q1);/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Z1=[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]],mf=Yl("mail",Z1);/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const L1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],V1=Yl("message-square",L1);/** + * @license lucide-react v0.555.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const K1=[["path",{d:"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384",key:"9njp5v"}]],J1=Yl("phone",K1),w1=({lang:S,setLang:U})=>g.jsxs("button",{onClick:()=>U(S==="en"?"zh":"en"),className:"flex items-center gap-2 px-4 py-2 rounded-full bg-slate-100 hover:bg-slate-200 transition-colors text-slate-700 font-medium","aria-label":"Toggle Language",children:[g.jsx(B1,{size:18}),g.jsx("span",{children:S==="en"?"中文":"English"})]}),hf=({title:S,children:U,className:H="",id:m})=>g.jsx("section",{id:m,className:`py-20 ${H}`,children:g.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6",children:[g.jsxs("div",{className:"flex flex-col items-center mb-16",children:[g.jsx("h2",{className:"text-3xl md:text-4xl font-extrabold text-slate-900 mb-4 tracking-tight",children:S}),g.jsx("div",{className:"h-1 w-20 bg-indigo-600 rounded-full"})]}),U]})}),W1=({experience:S,lang:U})=>g.jsxs("div",{className:"relative space-y-12",children:[g.jsx("div",{className:"absolute left-4 top-4 bottom-4 w-0.5 bg-slate-200 md:left-1/2 md:-ml-[1px]"}),S.map((H,m)=>g.jsxs("div",{className:`relative flex flex-col md:flex-row gap-8 ${m%2===0?"md:flex-row-reverse":""} group`,children:[g.jsx("div",{className:"absolute left-4 -translate-x-1/2 top-6 w-4 h-4 rounded-full border-4 border-white bg-indigo-500 shadow-md z-10 md:left-1/2 transition-transform group-hover:scale-125 group-hover:bg-indigo-600"}),g.jsx("div",{className:"hidden md:block w-1/2 pt-4 px-8 text-right group-hover:text-indigo-600 transition-colors",children:g.jsxs("div",{className:`flex items-center gap-2 text-sm font-bold tracking-wider text-slate-400 uppercase ${m%2===0?"justify-start":"justify-end"}`,children:[m%2!==0&&g.jsx("span",{children:H.period}),g.jsx(Nd,{size:14}),m%2===0&&g.jsx("span",{children:H.period})]})}),g.jsx("div",{className:"ml-12 md:ml-0 md:w-1/2 md:px-8",children:g.jsxs("div",{className:"bg-white p-6 rounded-2xl shadow-sm border border-slate-100 group-hover:shadow-lg group-hover:border-indigo-100 transition-all duration-300 relative",children:[g.jsxs("div",{className:"md:hidden text-xs font-bold text-indigo-500 mb-2 uppercase tracking-wide flex items-center gap-1",children:[g.jsx(Nd,{size:12}),H.period]}),g.jsx("h3",{className:"text-lg font-bold text-slate-900 group-hover:text-indigo-700 transition-colors",children:H.company[U]}),g.jsx("div",{className:"text-sm font-semibold text-slate-500 mb-4",children:H.role[U]}),g.jsx("ul",{className:"space-y-3",children:H.description.map((Y,q)=>g.jsxs("li",{className:"text-sm text-slate-600 leading-relaxed flex items-start gap-3",children:[g.jsx("span",{className:"mt-1.5 w-1.5 h-1.5 bg-indigo-400 rounded-full shrink-0"}),g.jsx("span",{children:Y[U]})]},q))})]})})]},m))]}),k1=({project:S,lang:U})=>{const H=()=>{switch(S.imageType){case"car":return g.jsx(z1,{size:32,className:"text-white opacity-80"});case"game":return g.jsx(R1,{size:32,className:"text-white opacity-80"});case"chart":return g.jsx(T1,{size:32,className:"text-white opacity-80"});default:return g.jsx(M1,{size:32,className:"text-white opacity-80"})}};return g.jsxs("div",{className:"group bg-white rounded-2xl overflow-hidden shadow-md hover:shadow-2xl transition-all duration-300 border border-slate-100 flex flex-col h-full transform hover:-translate-y-1",children:[g.jsxs("div",{className:"relative h-64 w-full overflow-hidden bg-slate-900",children:[S.imageUrl?g.jsx("img",{src:S.imageUrl,alt:S.title[U],className:"w-full h-full object-cover transform group-hover:scale-110 transition-transform duration-700 ease-out",loading:"lazy"}):g.jsx("div",{className:"w-full h-full flex items-center justify-center bg-gradient-to-br from-slate-800 to-indigo-900",children:H()}),g.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-slate-900/80 via-transparent to-transparent opacity-60"}),g.jsx("div",{className:"absolute top-4 right-4 bg-white/10 backdrop-blur-md px-3 py-1 rounded-full border border-white/20 shadow-sm",children:g.jsx("span",{className:"text-xs font-bold text-white tracking-wide uppercase",children:S.imageType||"Dev"})})]}),g.jsxs("div",{className:"p-6 md:p-8 flex-1 flex flex-col",children:[g.jsx("h3",{className:"text-xl md:text-2xl font-bold text-slate-800 mb-3 group-hover:text-indigo-600 transition-colors",children:S.title[U]}),g.jsx("p",{className:"text-base text-slate-600 leading-relaxed mb-6 flex-1",children:S.description[U]}),g.jsxs("div",{className:"mt-auto pt-6 border-t border-slate-100 flex items-center justify-between",children:[g.jsxs("div",{className:"flex gap-2",children:[g.jsx("div",{className:"h-2 w-2 rounded-full bg-indigo-500"}),g.jsx("div",{className:"h-2 w-2 rounded-full bg-blue-400"}),g.jsx("div",{className:"h-2 w-2 rounded-full bg-purple-400"})]}),S.link&&g.jsxs("a",{href:S.link,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 text-sm font-bold text-indigo-600 hover:text-indigo-800 transition-colors bg-indigo-50 px-4 py-2 rounded-lg hover:bg-indigo-100",children:[S.linkText?S.linkText[U]:U==="en"?"View details":"查看详情",g.jsx(H1,{size:16})]})]})]})]})},$1=()=>{const[S,U]=Xe.useState("zh"),{name:H,title:m,summary:Y,contact:q,skills:ol,experience:Sl,projects:D,education:E}=h1;return g.jsxs("div",{className:"min-h-screen flex flex-col font-sans bg-slate-50 text-slate-900 selection:bg-indigo-100 selection:text-indigo-900",children:[g.jsx("header",{className:"fixed top-0 w-full z-50 bg-white/80 backdrop-blur-md border-b border-white/20 shadow-sm transition-all supports-[backdrop-filter]:bg-white/60",children:g.jsxs("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 h-16 flex items-center justify-between",children:[g.jsxs("div",{className:"font-bold text-xl tracking-tight text-slate-900 flex items-center gap-2",children:[g.jsx("div",{className:"w-9 h-9 bg-gradient-to-br from-indigo-600 to-blue-500 rounded-lg flex items-center justify-center text-white font-bold text-sm shadow-lg shadow-indigo-200",children:H.en.split(" ")[0][0]}),g.jsx("span",{className:"hidden sm:block",children:S==="en"?"Resume":"个人简历"})]}),g.jsxs("div",{className:"flex items-center gap-3 sm:gap-6",children:[g.jsxs("nav",{className:"hidden md:flex gap-8 text-sm font-semibold text-slate-600",children:[g.jsx("a",{href:"#about",className:"hover:text-indigo-600 transition-colors",children:S==="en"?"About":"简介"}),g.jsx("a",{href:"#experience",className:"hover:text-indigo-600 transition-colors",children:S==="en"?"Experience":"经历"}),g.jsx("a",{href:"#projects",className:"hover:text-indigo-600 transition-colors",children:S==="en"?"Projects":"项目"})]}),g.jsx("div",{className:"h-5 w-px bg-slate-300 hidden md:block"}),g.jsxs("button",{className:"hidden sm:flex items-center gap-2 px-4 py-2 text-sm font-medium text-white bg-slate-900 rounded-full hover:bg-slate-800 transition-colors shadow-md",children:[g.jsx(O1,{size:14}),g.jsx("span",{children:S==="en"?"Download PDF":"下载简历"})]}),g.jsx(w1,{lang:S,setLang:U})]})]})}),g.jsxs("main",{className:"flex-grow pt-16",children:[g.jsxs("div",{id:"about",className:"relative h-[85vh] min-h-[600px] flex items-center justify-center overflow-hidden",children:[g.jsx("div",{className:"absolute inset-0 z-0 bg-cover bg-center bg-no-repeat bg-fixed",style:{backgroundImage:"url(https://images.unsplash.com/photo-1519389950473-47ba0277781c?q=80&w=2670&auto=format&fit=crop)"}}),g.jsx("div",{className:"absolute inset-0 z-10 bg-gradient-to-b from-white/95 via-white/80 to-slate-50/95"}),g.jsx("div",{className:"relative z-20 max-w-4xl mx-auto text-center px-4",children:g.jsxs("div",{className:"animate-fade-in-up",children:[g.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-white/50 backdrop-blur-md text-indigo-700 text-sm font-bold mb-8 border border-indigo-100 shadow-sm ring-1 ring-indigo-50",children:[g.jsxs("span",{className:"relative flex h-2 w-2",children:[g.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-indigo-400 opacity-75"}),g.jsx("span",{className:"relative inline-flex rounded-full h-2 w-2 bg-indigo-500"})]}),g.jsx("span",{children:S==="en"?"Available for new opportunities":"正在寻找新机会"})]}),g.jsx("h1",{className:"text-5xl md:text-7xl lg:text-8xl font-black text-slate-900 tracking-tight mb-6 leading-[1.1]",children:H[S]}),g.jsx("p",{className:"text-xl md:text-3xl text-transparent bg-clip-text bg-gradient-to-r from-indigo-600 to-blue-500 font-bold mb-8",children:m[S]}),g.jsx("p",{className:"text-lg md:text-xl text-slate-600 max-w-2xl mx-auto leading-relaxed mb-10 font-medium",children:Y[S]}),g.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[g.jsxs("a",{href:`tel:${q.mobile}`,className:"flex items-center gap-3 bg-slate-900 text-white px-8 py-4 rounded-full shadow-lg shadow-indigo-200 hover:shadow-xl hover:-translate-y-1 transition-all font-semibold",children:[g.jsx(J1,{size:18}),g.jsx("span",{children:q.mobile})]}),g.jsxs("a",{href:`mailto:${q.email}`,className:"flex items-center gap-3 bg-white text-slate-700 px-8 py-4 rounded-full shadow-md border border-slate-100 hover:border-indigo-200 hover:shadow-lg hover:-translate-y-1 transition-all font-semibold",children:[g.jsx(mf,{size:18}),g.jsx("span",{children:q.email})]})]})]})}),g.jsx("div",{className:"absolute bottom-10 left-1/2 -translate-x-1/2 animate-bounce text-slate-400 z-20",children:g.jsx(A1,{size:32})})]}),g.jsxs("div",{className:"bg-slate-900 text-white py-20 relative overflow-hidden",children:[g.jsx("div",{className:"absolute inset-0 opacity-10",style:{backgroundImage:"radial-gradient(#4f46e5 1px, transparent 1px)",backgroundSize:"32px 32px"}}),g.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10",children:[g.jsxs("div",{className:"text-center mb-12",children:[g.jsx("h3",{className:"text-indigo-400 font-bold uppercase tracking-widest text-sm mb-3",children:S==="en"?"Technical Expertise":"技能特长"}),g.jsx("h2",{className:"text-3xl md:text-4xl font-bold text-white",children:S==="en"?"Core Competencies":"核心技术栈"})]}),g.jsx("div",{className:"flex flex-wrap justify-center gap-3 md:gap-5",children:ol.map((F,El)=>g.jsxs("div",{className:"group px-6 py-3 bg-white/5 hover:bg-white/10 rounded-xl border border-white/10 hover:border-indigo-500/50 backdrop-blur-sm transition-all cursor-default flex items-center gap-3",children:[g.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-indigo-500 group-hover:bg-indigo-400 transition-colors"}),g.jsx("span",{className:"text-slate-200 font-medium text-base md:text-lg",children:F[S]})]},El))})]})]}),g.jsx(hf,{id:"experience",title:S==="en"?"Work Experience":"工作经历",className:"bg-slate-50",children:g.jsx(W1,{experience:Sl,lang:S})}),g.jsx(hf,{id:"projects",title:S==="en"?"Featured Projects":"个人作品",className:"bg-white",children:g.jsx("div",{className:"grid md:grid-cols-2 gap-8 lg:gap-12",children:D.map((F,El)=>g.jsx(k1,{project:F,lang:S},El))})}),g.jsx(hf,{id:"education",title:S==="en"?"Education":"教育经历",className:"bg-slate-50",children:g.jsx("div",{className:"grid md:grid-cols-2 gap-6",children:E.map((F,El)=>g.jsxs("div",{className:"bg-white p-8 rounded-2xl shadow-sm border border-slate-100 flex items-start gap-6 hover:shadow-md transition-all group",children:[g.jsx("div",{className:"w-14 h-14 bg-indigo-50 rounded-2xl flex items-center justify-center text-indigo-600 shrink-0 group-hover:scale-110 group-hover:bg-indigo-600 group-hover:text-white transition-all duration-300",children:g.jsx(G1,{size:32})}),g.jsxs("div",{children:[g.jsx("h3",{className:"font-bold text-xl text-slate-900",children:F.school[S]}),g.jsx("p",{className:"text-indigo-600 font-semibold mb-2 text-lg",children:F.major[S]}),g.jsxs("div",{className:"flex flex-wrap items-center gap-3 text-sm text-slate-500 font-medium",children:[g.jsx("span",{className:"bg-slate-100 px-3 py-1 rounded-full text-slate-600",children:F.degree[S]}),g.jsx("span",{className:"hidden sm:inline text-slate-300",children:"•"}),g.jsx("span",{children:F.period})]})]})]},El))})}),g.jsxs("div",{className:"relative py-24 flex items-center justify-center bg-slate-900 overflow-hidden",children:[g.jsx("div",{className:"absolute inset-0 z-0 bg-cover bg-center opacity-20",style:{backgroundImage:"url(https://images.unsplash.com/photo-1451187580459-43490279c0fa?q=80&w=2000&auto=format&fit=crop)"}}),g.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-slate-900 via-slate-900/80 to-transparent"}),g.jsxs("div",{className:"relative z-10 text-center px-4 max-w-3xl mx-auto",children:[g.jsx("h2",{className:"text-3xl md:text-5xl font-bold text-white mb-6",children:S==="en"?"Let's work together":"期待与您的合作"}),g.jsx("p",{className:"text-slate-300 text-lg mb-10 leading-relaxed",children:S==="en"?"I am currently open to new opportunities in autonomous driving, simulation, and game development.":"我目前正在寻找自动驾驶、仿真及游戏开发领域的新机会。"}),g.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-4",children:[g.jsxs("a",{href:`mailto:${q.email}`,className:"w-full sm:w-auto px-8 py-4 bg-indigo-600 hover:bg-indigo-500 text-white rounded-full font-bold text-lg transition-all shadow-lg shadow-indigo-900/50 flex items-center justify-center gap-2",children:[g.jsx(mf,{size:20}),S==="en"?"Email Me":"发送邮件"]}),g.jsxs("div",{className:"w-full sm:w-auto px-8 py-4 bg-white/10 hover:bg-white/20 backdrop-blur-md text-white rounded-full font-bold text-lg transition-all flex items-center justify-center gap-2 cursor-pointer",children:[g.jsx(V1,{size:20}),"WeChat: ",q.wechat]})]})]})]})]}),g.jsx("footer",{className:"bg-slate-950 border-t border-white/5 py-12",children:g.jsxs("div",{className:"max-w-6xl mx-auto px-4 flex flex-col md:flex-row items-center justify-between gap-6",children:[g.jsxs("div",{className:"flex flex-col items-center md:items-start",children:[g.jsx("h2",{className:"text-xl font-bold text-white mb-2",children:H[S]}),g.jsxs("p",{className:"text-slate-500 text-sm",children:["© ",new Date().getFullYear()," All rights reserved."]})]}),g.jsxs("div",{className:"flex gap-6",children:[g.jsx("a",{href:`mailto:${q.email}`,className:"text-slate-400 hover:text-white transition-colors p-2 bg-white/5 rounded-full hover:bg-indigo-600",children:g.jsx(mf,{size:20})}),g.jsx("a",{href:"#",className:"text-slate-400 hover:text-white transition-colors p-2 bg-white/5 rounded-full hover:bg-blue-600",children:g.jsx(X1,{size:20})}),g.jsx("a",{href:"#",className:"text-slate-400 hover:text-white transition-colors p-2 bg-white/5 rounded-full hover:bg-emerald-600",children:g.jsx(U1,{size:20})})]})]})})]})},Ud=document.getElementById("root");if(!Ud)throw new Error("Could not find root element to mount to");const F1=m1.createRoot(Ud);F1.render(g.jsx(u1.StrictMode,{children:g.jsx($1,{})})); diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..b61b2a4 --- /dev/null +++ b/dist/index.html @@ -0,0 +1,20 @@ + + + + + + Xiang Silian - Resume + + + + + + +
+ + \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index ee5fb8d..950e2e2 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -5,6 +5,7 @@ import react from '@vitejs/plugin-react'; export default defineConfig(({ mode }) => { const env = loadEnv(mode, '.', ''); return { + base: './', server: { port: 3000, host: '0.0.0.0',