PageSourceSearch

https://auberginewly.site/_next/static/chunks/3wm04rsc96tto.js

js auberginewly.site collected 2026-10-09 22:07:22 UTC 27,125 bytes, 1 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,28298,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useRouterBFCache",{enumerable:!0,get:function(){return o}});let n=e.r(71645);function o(e,t,r){let[o,a]=(0,n.useState)(()=>({tree:e,cacheNode:t,stateKey:r,next:null}));if(o.tree===e)return o;let l={tree:e,cacheNode:t,stateKey:r,next:null},u=1,i=o,s=l;for(;null!==i&&u<1;){if(i.stateKey===r){s.next=i.next;break}{u++;let e={tree:i.tree,cacheNode:i.cacheNode,stateKey:i.stateKey,next:null};s.next=e,s=e}i=i.next}return a(l),l}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},47257,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ClientPageRoot",{enumerable:!0,get:function(){return s}});let n=e.r(18050),o=e.r(8372),a=e.r(71645),l=e.r(33906),u=e.r(61994),i=e.r(15783);function s({Component:e,serverProvidedParams:t}){let r,c;if(null!==t)r=t.searchParams,c=t.params;else{let e=(0,a.use)(o.LayoutRouterContext);c=null!==e?e.parentParams:{},r=(0,l.urlSearchParamsToParsedUrlQuery)((0,a.use)(u.SearchParamsContext))}let d=(0,i.createClientSearchParams)(r),f=(0,i.createClientParams)(c);return(0,n.jsx)(e,{params:f,searchParams:d})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},92825,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ClientSegmentRoot",{enumerable:!0,get:function(){return u}});let n=e.r(18050),o=e.r(8372),a=e.r(71645),l=e.r(15783);function u({Component:e,slots:t,serverProvidedParams:r}){let i;if(null!==r)i=r.params;else{let e=(0,a.use)(o.LayoutRouterContext);i=null!==e?e.parentParams:{}}let s=(0,l.createClientParams)(i);return(0,n.jsx)(e,{...t,params:s})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},68017,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"HTTPAccessFallbackBoundary",{enumerable:!0,get:function(){return c}});let n=e.r(90809),o=e.r(18050),a=n._(e.r(71645)),l=e.r(90373),u=e.r(8461),i=e.r(8372);class s extends a.default.Component{constructor(e){super(e),this.state={triggeredStatus:void 0,previousPathname:e.pathname}}componentDidCatch(){}static getDerivedStateFromError(e){if((0,u.isHTTPAccessFallbackError)(e))return{triggeredStatus:(0,u.getAccessFallbackHTTPStatus)(e)};throw e}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.triggeredStatus?{triggeredStatus:void 0,previousPathname:e.pathname}:{triggeredStatus:t.triggeredStatus,previousPathname:e.pathname}}render(){let{notFound:e,forbidden:t,unauthorized:r,children:n}=this.props,{triggeredStatus:a}=this.state,l={[u.HTTPAccessErrorStatus.NOT_FOUND]:e,[u.HTTPAccessErrorStatus.FORBIDDEN]:t,[u.HTTPAccessErrorStatus.UNAUTHORIZED]:r};if(a){let i=a===u.HTTPAccessErrorStatus.NOT_FOUND&&e,s=a===u.HTTPAccessErrorStatus.FORBIDDEN&&t,c=a===u.HTTPAccessErrorStatus.UNAUTHORIZED&&r;return i||s||c?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("meta",{name:"robots",content:"noindex"}),!1,l[a]]}):n}return n}}function c({notFound:e,forbidden:t,unauthorized:r,children:n}){let u=(0,l.useUntrackedPathname)(),d=(0,a.useContext)(i.MissingSlotContext);return e||t||r?(0,o.jsx)(s,{pathname:u,notFound:e,forbidden:t,unauthorized:r,missingSlots:d,children:n}):(0,o.jsx)(o.Fragment,{children:n})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},22976,(e,t,r)=>{"use strict";
1Object.defineProperty(r,"__esModule",{value:!0});var n={InstantValidationBoundaryContext:function(){return a},PlaceValidationBoundaryBelowThisLevel:function(){return l},RenderValidationBoundaryAtThisLevel:function(){return u},SlotMarker:function(){return i}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let a=null,l=null,u=null,i=null;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},77694,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={InstantValidationBoundaryContext:function(){return a.InstantValidationBoundaryContext},PlaceValidationBoundaryBelowThisLevel:function(){return a.PlaceValidationBoundaryBelowThisLevel},RenderValidationBoundaryAtThisLevel:function(){return a.RenderValidationBoundaryAtThisLevel},SlotMarker:function(){return a.SlotMarker}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let a=e.r(22976);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},39756,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0});var n={LoadingBoundaryProvider:function(){return O},default:function(){return w}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let a=e.r(55682),l=e.r(90809),u=e.r(18050),i=l._(e.r(71645)),s=a._(e.r(74080)),c=e.r(8372),d=e.r(1244),f=e.r(72383),h=e.r(91915),p=e.r(58442),m=e.r(68017);e.r(77694);let g=e.r(70725),b=e.r(28298);e.r(74180);let v=e.r(61994),y=e.r(33906),x=e.r(95871);s.default.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function j(e,t,r){let n=e.getClientRects();if(0===n.length)return 0;let o=1/0;for(let e=0;e<n.length;e++){let t=n[e];t.top<o&&(o=t.top)}return o>=r()&&o<=t?1:2}i.default.Component;let P=function(e){let t=i.default.useRef(null);return(0,i.useLayoutEffect)(()=>{let{focusAndScrollRef:r,cacheNode:n}=e,o=r.forceScroll?r.scrollRef:n.scrollRef;if(null===o||!o.current)return;let a=null,l=r.hashFragment;if(l){var u;if(null===(a="top"===(u=l)?document.body:document.getElementById(u)??document.getElementsByName(u)[0]??null)){o.current=!1,r.onlyHashChange=!1,r.hashFragment=null;return}}else a=t.current;if(null===a)return;let i=!1;(0,h.disableSmoothScrollDuringRouteTransition)(()=>{let e=document.documentElement,t=null,r=null,n=null,u=()=>{var r,o;let a,l;return null===n&&(r=e,o=t,n=!Number.isFinite(l=Number.parseFloat(a=getComputedStyle(r).scrollPaddingTop))||l<0?0:a.endsWith("px")?l:a.endsWith("%")?l/100*o:0),n};(l||(t=e.clientHeight,0!==(r=j(a,t,u))))&&((i=!0,o.current=!1,l)?a.scrollIntoView():1!==r&&(e.scrollTop=0,2===j(a,t,u)&&a.scrollIntoView()))},{dontForceLayout:!0,onlyHashChange:r.onlyHashChange}),i&&(r.onlyHashChange=!1,r.hashFragment=null)},void 0),(0,u.jsx)(i.Fragment,{ref:t,children:e.children})};function _({children:e,cacheNode:t}){let r=(0,i.useContext)(c.GlobalLayoutRouterContext);if(!r)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});return(0,u.jsx)(P,{focusAndScrollRef:r.focusAndScrollRef,cacheNode:t,children:e})}function C({tree:e,segmentPath:t,debugNameContext:r,cacheNode:n,params:o,url:a,isActive:l}){let s,f=(0,i.useContext)(c.GlobalLayoutRouterContext);if((0,i.useContext)(v.NavigationPromisesContext),!f)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});let h=null!==n?n:(0,i.use)(d.unresolvedThenable),p=null!==h.prefetchRsc?h.prefetchRsc:h.rsc,m=(0,i.useDeferredValue)(h.rsc,p);if((0,x.isDeferredRsc)(m)){let e=(0,i.use)(m);null===e&&(0,i.use)(d.unresolvedThenable),s=e}else null===m&&(0,i.use)(d.unresolvedThenable),s=m;let g=s;return(0,u.jsx)(c.LayoutRouterContext.Provider,{value:{parentTree:e,parentCacheNode:h,parentSegmentPath:t,parentParam
1s:o,parentLoadingData:null,debugNameContext:r,url:a,isActive:l},children:g})}function O({loading:e,children:t}){let r=(0,i.use)(c.LayoutRouterContext);return null===r?t:(0,u.jsx)(c.LayoutRouterContext.Provider,{value:{parentTree:r.parentTree,parentCacheNode:r.parentCacheNode,parentSegmentPath:r.parentSegmentPath,parentParams:r.parentParams,parentLoadingData:e,debugNameContext:r.debugNameContext,url:r.url,isActive:r.isActive},children:t})}function S({name:e,loading:t,children:r}){if(null!==t){let n=t[0],o=t[1],a=t[2];return(0,u.jsx)(i.Suspense,{name:e,fallback:(0,u.jsxs)(u.Fragment,{children:[o,a,n]}),children:r})}return(0,u.jsx)(u.Fragment,{children:r})}function w({parallelRouterKey:e,error:t,errorStyles:r,errorScripts:n,templateStyles:o,templateScripts:a,template:l,notFound:s,forbidden:h,unauthorized:v,segmentViewBoundaries:x}){let j=(0,i.useContext)(c.LayoutRouterContext);if(!j)throw Object.defineProperty(Error("invariant expected layout router to be mounted"),"__NEXT_ERROR_CODE",{value:"E56",enumerable:!1,configurable:!0});let{parentTree:P,parentCacheNode:O,parentSegmentPath:k,parentParams:T,parentLoadingData:R,url:z,isActive:N,debugNameContext:M}=j,E=P[0],L=null===k?[e]:k.concat([E,e]),B=P[1][e],A=O.slots;(void 0===B||null===A)&&(0,i.use)(d.unresolvedThenable);let F=B[0],D=A[e]??null,I=(0,g.createRouterCacheKey)(F,!0),H=(0,b.useRouterBFCache)(B,D,I),V=[];do{let e=H.tree,i=H.cacheNode,d=H.stateKey,g=e[0],b=T;if(Array.isArray(g)){let e=g[0],t=g[1],r=g[2],n=(0,y.getParamValueFromCacheKey)(t,r);null!==n&&(b={...T,[e]:n})}let x=function(e){if("/"===e)return"/";if("string"==typeof e)if("(__SLOT__)"===e)return;else return e+"/";return e[1]+"/"}(g),j=x??M,P=void 0===x?void 0:M,O=(0,u.jsxs)(_,{cacheNode:i,children:[(0,u.jsx)(f.ErrorBoundary,{errorComponent:t,errorStyles:r,errorScripts:n,children:(0,u.jsx)(S,{name:P,loading:R,children:(0,u.jsx)(m.HTTPAccessFallbackBoundary,{notFound:s,forbidden:h,unauthorized:v,children:(0,u.jsxs)(p.RedirectBoundary,{children:[(0,u.jsx)(C,{url:z,tree:e,params:b,cacheNode:i,segmentPath:L,debugNameContext:j,isActive:N&&d===I}),null]})})})}),null]}),w=(0,u.jsxs)(c.TemplateContext.Provider,{value:O,children:[o,a,l]},d);V.push(w),H=H.next}while(null!==H)return V}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},37457,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return u}});let n=e.r(90809),o=e.r(18050),a=n._(e.r(71645)),l=e.r(8372);function u(){let e=(0,a.useContext)(l.TemplateContext);return(0,o.jsx)(o.Fragment,{children:e})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},6831,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderParamsFromClient",{enumerable:!0,get:function(){return o}});let n=new WeakMap;function o(e){let t=n.get(e);if(t)return t;let r=Promise.resolve(e);return n.set(e,r),r}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},97689,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderParamsFromClient",{enumerable:!0,get:function(){return n}});let n=e.r(6831).createRenderParamsFromClient;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},93504,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return o}});let n=new WeakMap;function o(e){let t=n.get(e);if(t)return t;let r=Promise.resolve(e);return n.set(e,r),r}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esMo
1dule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},66996,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return n}});let n=e.r(93504).createRenderSearchParamsFromClient;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},15783,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={createClientParams:function(){return a.createRenderParamsFromClient},createClientSearchParams:function(){return l.createRenderSearchParamsFromClient}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let a=e.r(97689),l=e.r(66996);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},27201,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"IconMark",{enumerable:!0,get:function(){return o}});let n=e.r(18050),o=()=>"u">typeof window?null:(0,n.jsx)("meta",{name:"«nxt-icon»"})},91915,(e,t,r)=>{"use strict";function n(e,t={}){if(t.onlyHashChange)return void e();let r=document.documentElement;if("smooth"!==r.dataset.scrollBehavior)return void e();let o=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=o}e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"disableSmoothScrollDuringRouteTransition",{enumerable:!0,get:function(){return n}})},48337,e=>{"use strict";let t={nav:{home:{zh:"首页",en:"Home"},blog:{zh:"博客",en:"Blog"},notes:{zh:"笔记",en:"Notes"},writing:{zh:"写作",en:"Writing"},search:{zh:"搜索",en:"Search"},resume:{zh:"简历",en:"CV"},experience:{zh:"经历",en:"Experience"},openSource:{zh:"开源",en:"Open Source"},internship:{zh:"实习",en:"Internship"},projects:{zh:"项目",en:"Projects"},about:{zh:"关于",en:"About"},project1:{zh:"项目一",en:"Project One"},project2:{zh:"项目二",en:"Project Two"},project3:{zh:"项目三",en:"Project Three"},comingSoon:{zh:"即将上线",en:"Coming soon"}},hero:{eyebrow:{zh:"前端 · 产品 · iOS",en:"Frontend · Product · iOS"},greeting:{zh:"你好,我是 auberginewly",en:"Hi, I'm auberginewly"},tagline:{zh:"一名网络安全专业的本科生,在做前端和全栈,也在学 Swift。喜欢把想法做成真实可用的东西,对细节有点执念。",en:"
1Cybersecurity undergrad building for the web and learning Swift. I like turning ideas into things people can actually use — with a soft spot for details."},ctaBlog:{zh:"读读博客",en:"Read the blog"},hint:{zh:"↖ 抓住茄子转一转,松手就停住",en:"↖ Grab and rotate the aubergine — release to stop"},toyLabel:{zh:"可旋转的毛绒茄子",en:"Rotatable plush aubergine"},toyInstructions:{zh:"按住茄子拖动可旋转,松手停在当前角度。左右方向键每次旋转 15 度,上下方向键每次倾斜 5 度;Home、Enter 或空格回到正面。",en:"Drag the aubergine to rotate; release to keep its angle. Left and right arrows turn 15 degrees; up and down arrows tilt 5 degrees. Home, Enter or Space resets to the front."}},about:{title:{zh:"关于我",en:"About"},body:{zh:"对独立创造和工具软件感兴趣,喜欢把想法做成真实的东西。相信好的产品来自对细节的执念和对用户的理解。目前在用 Swift 做一些小东西,同时也在想下一个值得做的事情是什么。",en:"Interested in indie making and tools that feel right. I believe good products come from obsessing over details and understanding people. Currently building small things in Swift, and thinking about what's worth making next."}},stack:{title:{zh:"技术栈",en:"Stack"},categories:[{name:{zh:"前端",en:"Frontend"},items:["React","Next.js","TypeScript","Tailwind CSS"]},{name:{zh:"iOS",en:"iOS"},items:["Swift"]},{name:{zh:"工具",en:"Tools"},items:["Figma","Git","VS Code","Xcode","Codex","Cursor","Claude Code","Zed",{zh:"飞书",en:"Lark"}]}]},interests:{title:{zh:"灵感",en:"Inspiration"},categories:[{name:{zh:"书籍",en:"Books"},items:["《此刻是春天》"]},{name:{zh:"音乐",en:"Music"}
1,items:[{name:"赛勒斯的爱 — 张敬轩",url:"https://163cn.tv/6kiLEcy"},{name:"晴 — 汪苏泷",url:"https://163cn.tv/6kiiB5l"},{name:"去北极忘记你 — Gareth.T",url:"https://163cn.tv/6kiJKZO"},{name:"Begging You — 2Lson / 孝彬",url:"https://163cn.tv/6ki8TRI"},{name:"10,000 Hours — Dan + Shay / Justin Bieber",url:"https://163cn.tv/6kjx72y"},{name:"Really Like You — Gyubin",url:"https://163cn.tv/6kjrQJA"},{name:"Blueming — IU",url:"https://163cn.tv/6kiN56w"},{name:"那时雨 — 徐良",url:"https://163cn.tv/6kiUtNc"}]},{name:{zh:"播客",en:"Podcasts"},items:["岩中花述"]},{name:{zh:"影视",en:"Shows"},items:["Campus Off"]},{name:{zh:"艺术与设计",en:"Art & Design"},items:[{name:"Pinterest",url:"https://www.pinterest.com/"},{name:"Mobbin",url:"https://mobbin.com/"},{name:"Dribbble",url:"https://dribbble.com/"}]},{name:{zh:"AI",en:"AI"},items:[{zh:"AI 不会取代创造者,但会重新定义创造的门槛",en:"AI won't replace creators — it will redefine the barrier to creation"},{zh:"待开发",en:"Coming soon"}]}]},writing:{title:{zh:"文章",en:"Writing"},all:{zh:"全部文章",en:"All posts"},empty:{zh:"还没有文章,快写了。",en:"Nothing here yet — soon."}},experienceSection:{title:{zh:"经历",en:"Experience"}},contact:{title:{zh:"联系我",en:"Contact"},body:{zh:"欢迎随时联系,聊聊想法或合作。",en:"Feel free to reach out — always happy to chat."}},resume:{title:{zh:"简历",en:"Resume"},body:{zh:"如果你对我的经历感兴趣,可以查看我的简历了解更多。",en:"If you're curious about my background, feel free to view my resume."},download:{zh:"查看简历",en:"View Resume"}}
1,experience:{background:{zh:"背景",en:"Background"},contributions:{zh:"贡献",en:"Contributions"},outputs:{zh:"产出",en:"Outputs"},back:{zh:"返回",en:"Back"}}};e.s(["i18n",0,t,"tr",0,function(e,t){return e[t]}])},34558,e=>{"use strict";var t=e.i(18050),r=e.i(71645),n=e.i(63178);let o=null,a=null;var l=e.i(58595);function u(){return(0,r.useEffect)(()=>((function(){try{return"on"===localStorage.getItem("sound")}catch{return!1}})()&&function(){if(a)return;let e=e=>{let t;e.target.closest('button, [role="button"], a[download], nav a')&&(o||((o=new Audio("/sounds/mouse-click.mp3")).volume=.4),(t=o).currentTime=0,t.play().catch(()=>{}))};document.addEventListener("click",e,{capture:!0}),a=()=>{document.removeEventListener("click",e,{capture:!0}),a=null}}(),()=>a?.()),[]),null}e.s(["Providers",0,function({initialLang:e,children:r}){return(0,t.jsx)(n.ThemeProvider,{attribute:"class",defaultTheme:"system",enableSystem:!0,children:(0,t.jsxs)(l.LanguageProvider,{initialLang:e,children:[(0,t.jsx)(u,{}),r]})})}],34558)},58595,e=>{"use strict";var t=e.i(18050),r=e.i(71645);let n=(0,r.createContext)(null);e.s(["LanguageProvider",0,function({initialLang:e,children:o}){let[a,l]=(0,r.useState)(e),u=(0,r.useCallback)(()=>{var e;let t="zh"===a?"en":"zh";
1document.cookie=(e="https:"===location.protocol,`lang=${t}; Path=/; Max-Age=31536000; SameSite=Lax${e?"; Secure":""}`);try{localStorage.setItem("lang",t)}catch{}document.documentElement.lang="zh"===t?"zh-CN":"en",l(t)},[a]),i=(0,r.useMemo)(()=>({lang:a,toggleLang:u}),[a,u]);return(0,t.jsx)(n.Provider,{value:i,children:o})},"useLanguage",0,function(){let e=(0,r.useContext)(n);if(!e)throw Error("useLanguage requires LanguageProvider");return e}],58595)},44830,e=>{"use strict";var t=e.i(18050),r=e.i(71645),n=e.i(57688),o=e.i(22016),a=e.i(18566),l=e.i(58595),u=e.i(36622),i=e.i(48337);let s=[{key:"openSource",href:"/experience/open-source"},{key:"internship",href:"/experience/internship"},{key:"resume",href:"/resume"}],c=[{key:"blog",href:"/blog",activePath:"/blog"},{key:"notes",href:"/notes/intro/overview",activePath:"/notes"}];e.s(["default",0,function(){let{lang:e,toggleLang:d}=(0,l.useLanguage)(),{dark:f,toggleDark:h}=(0,u.useSiteTheme)(),p=(0,a.usePathname)(),[m,g]=(0,r.useState)(!1),[b,v]=(0,r.useState)(!1),y=(0,r.useRef)(p),[x,j]=(0,r.useState)(null),P=(0,r.useRef)(null),_=(0,r.useRef)(null),C=(0,r.useRef)(null),O=(0,r.useRef)(null);(0,r.useEffect)(()=>{y.current!==p&&(P.current&&(P.current.open=!1),_.current&&(_.current.open=!1),y.current=p),g(P.current?.open??!1),v(_.current?.open??!1)},[p]),(0,r.useEffect)(()=>{let e=C.current;if(!e)return;let t=new ResizeObserver(()=>{let t=O.current;if(!t)return;let r=t.getBoundingClientRect(),n=e.getBoundingClientRect();j({left:r.left-n.left,width:r.width})});return t.observe(e),()=>t.disconnect()},[]),(0,r.useEffect)(()=>{let e=e=>{P.current&&!P.current.contains(e.target)&&(P.current.open=!1),_.current&&!_.current.contains(e.target)&&(_.current.open=!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let S=e=>{let t=C.current;if(!t)return;O.current=e.currentTarget;let r=e.currentTarget.getBoundingClientRect(),n=t.getBoundingClientRect();j({left:r.left-n.left,width:r.width})},w={onMouseEnter:S,onFocus:S},k=r=>(0,t.jsx)("span",{className:"inline-grid",children:["zh","en"].map(n=>(0,t.jsx)("span",{className:"[grid-area:1/1]","aria-hidden":n!==e,style:{visibility:n===e?"visible":"hidden"},children:(0,i.tr)(r,n)},n))}),T=e=>p===e||p.startsWith(e+"/"),R=T("/blog")||T("/notes"),z="relative z-10 px-2.5 sm:px-3 py-1.5 rounded-full text-sm whitespace-nowrap transition-colors",N=e=>({color:e?"var(--fg)":"var(--muted)"});return(0,t.jsx)("header",{className:`fixed top-3 left-0 right-0 z-50 flex justify-center px-3 pointer-events-none${R?" docs-navbar max-md:hidden":""}`,children:(0,t.jsxs)("nav",{ref:C,onMouseLeave:()=>{O.current=null,j(null)},className:"relative flex items-center gap-0.5 px-1.5 py-1.5 rounded-full border pointer-events-auto backdrop-blur-xl backdrop-saturate-150",style:{background:"var(--nav-bg)",borderColor:"var(--border)",boxShadow:"var(--shadow)"},children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"absolute top-1.5 bottom-1.5 rounded-full pointer-events-none",style:{left:x?.left??0,width:x?.width??0,opacity:+!!x,background:"var(--bg-card)",transition:"left 0.25s cubic-bezier(0.2,0.7,0.2,1), width 0.25s cubic-bezier(0.2,0.7,0.2,1), opacity 0.2s ease"}}),(0,t.jsxs)(o.default,{prefetch:!1,href:"/",...w,className:`${z} flex items-center gap-1.5 !px-2`,"aria-label":"auberginewly",children:[(0,t.jsx)(n.default,{src:"/aubergine.png",alt:"",width:22,height:22,priority:!0}),(0,t.jsx)("span",{className:"hidden sm:inline font-medium",style:{color:"var(--fg)"},children:"auberginewly"})]}),(0,t.jsxs)("details",{className:"relative site-nav-menu",name:"site-navigation",ref:_,onToggle:e=>v(e.currentTarget.open),onKeyDown:e=>{"Escape"===e.key&&(e.currentTarget.open=!1)},children:[(0,t.jsxs)("summary",{...w,"aria-controls":"writing-menu",className:`${z} flex items-center gap-1 cursor-pointer list-none`,style:N(c.some(e=>T(e.activePath))),children:[k(i.i18n.nav.writing),(0,t.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 12 12",fill:"none",className:"transition-transform duration-200",children:(0,t.jsx)("path",{d:"M2 4L6 8L10 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]}),(0,t.jsx)("div",{id:"writing-menu",className:"site-nav-menu-panel absolute top-full mt-3 left-1/2 w-40 rounded-2xl border p-1.5",style:{background:"var(--bg-elev)",borderColor:"var(--border)",boxShadow:"var(--shadow)"},children:c.map(({key:r,href:n,activePath:a})=>(0,t.jsx)(o.default,{prefetch:b,href:n,onClick:()=>{_.current&&(_.current.open=!1)},className:"block px-3 py-2 rounded-xl text-sm hover:bg-[var(--bg-card)] transition-colors",style:N(T(a)),children:(0,i.tr)(i.i18n.nav[r],e)},r))})]}),(0,t.jsxs)("details",{className:"relative site-nav-menu",name:"site-navigation",ref:P,onToggle:e=>g(e.currentTarget.open),onKeyDown:e=>{"Escape"===e.key&&(e.currentTarget.open=!1)},children:[(0,t.jsxs)("summary",{...w,"aria-controls":"experience-menu",className:`${z} flex items-center gap-1 cursor-pointer list-none`,style:N(s.some(e=>T(e.href))),children:[k(i.i18n.nav.experience),(0,t.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 12 12",fill:"none",className:"transition-transform duration-200",children:(0,t.jsx)("path",{d:"M2 4L6 8L10 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]}),(0,t.jsx)("div",{id:"experience-menu",className:"site-nav-menu-panel absolute top-full mt-3 left-1/2 w-40 rounded-2xl border p-1.5",style:{background:"var(--bg-elev)",borderColor:"var(--border)",boxShadow:"var(--shadow)"},children:s.map(({key:r,href:n})=>(0,t.jsx)(o.default,{prefetch:m,href:n,onClick:()=>{P.current&&(P.current.open=!1)},className:"block px-3 py-2 rounded-xl text-sm hover:bg-[var(--bg-card)] transition-colors",style:N(T(n)),children:(0,i.tr)(i.i18n.nav[r],e)},r))})]}),(0,t.jsx)("span",{className:"w-px h-4 mx-1",style:{background:"var(--border)"}}
1),(0,t.jsx)("button",{...w,onClick:d,className:`${z} font-mono text-xs font-medium`,style:{color:"var(--muted)"},"aria-label":"zh"===e?"切换到英文":"Switch to Chinese",children:(0,t.jsxs)("span",{className:"grid",children:[(0,t.jsx)("span",{className:"[grid-area:1/1]","aria-hidden":"zh"!==e,style:{visibility:"zh"===e?"visible":"hidden"},children:"EN"}),(0,t.jsx)("span",{className:"[grid-area:1/1]","aria-hidden":"en"!==e,style:{visibility:"en"===e?"visible":"hidden"},children:"中"})]})}),(0,t.jsx)("button",{...w,onClick:h,className:`${z} !px-2 flex items-center justify-center`,style:{color:"var(--muted)"},"aria-label":"Toggle theme",children:f?(0,t.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"5"}),(0,t.jsx)("path",{d:"M12 2v2M12 20v2M2 12h2M20 12h2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"})]}):(0,t.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"})})})]})})}],44830)}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.