V2EX Polish - 体验更现代化的 V2EX

一款专为 V2EX 用户设计的浏览器插件,提供了丰富的扩展功能,让原生页面焕然一新!

目前为 2023-04-30 提交的版本。查看 最新版本

// ==UserScript==
// @name         V2EX Polish - 体验更现代化的 V2EX
// @namespace    LeoKu(https://leoku.top)
// @version      1.3.3
// @description  一款专为 V2EX 用户设计的浏览器插件,提供了丰富的扩展功能,让原生页面焕然一新!
// @author       LeoKu
// @match        https://*.v2ex.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=v2ex.com
// @grant        none
// @run-at       document-start
// @license      MIT
// ==/UserScript==

"use strict";var w=(o,t)=>()=>(o&&(t=o(o=0)),t);var rt,it,Eo,at,an,Oo,lo,O=w(()=>{"use strict";rt="V2EX_Polish",it=[{title:"\u5C0F\u9EC4\u8138",list:["\u{1F600}","\u{1F601}","\u{1F602}","\u{1F923}","\u{1F605}","\u{1F60A}","\u{1F60B}","\u{1F618}","\u{1F970}","\u{1F617}","\u{1F929}","\u{1F914}","\u{1F928}","\u{1F610}","\u{1F611}","\u{1F644}","\u{1F60F}","\u{1F62A}","\u{1F62B}","\u{1F971}","\u{1F61C}","\u{1F612}","\u{1F614}","\u{1F628}","\u{1F630}","\u{1F631}","\u{1F975}","\u{1F621}","\u{1F973}","\u{1F97A}","\u{1F92D}","\u{1F9D0}","\u{1F60E}","\u{1F913}","\u{1F62D}","\u{1F911}","\u{1F92E}"]},{title:"\u624B\u52BF",list:["\u{1F64B}","\u{1F64E}","\u{1F645}","\u{1F647}","\u{1F937}","\u{1F90F}","\u{1F449}","\u270C\uFE0F","\u{1F918}","\u{1F919}","\u{1F44C}","\u{1F90C}","\u{1F44D}","\u{1F44E}","\u{1F44B}","\u{1F91D}","\u{1F64F}","\u{1F44F}"]},{title:"\u5E86\u795D",list:["\u2728","\u{1F389}","\u{1F38A}"]},{title:"\u5176\u4ED6",list:["\u{1F47B}","\u{1F921}","\u{1F414}","\u{1F440}","\u{1F4A9}","\u{1F434}","\u{1F984}","\u{1F427}","\u{1F436}","\u{1F412}","\u{1F648}","\u{1F649}","\u{1F64A}","\u{1F435}"]}],Eo=250,at=550,an=60*60*1e3,Oo=["3107b9ef8b316f3","442b04f26eefc8a","59cfebe717c09e4","60605aad4a62882","6c65ab1d3f5452a","83e123737849aa9","9311f6be1c10160","c4a4a563f698595","81be04b9e4a08ce"],lo={openInNewTab:!1,autoCheckIn:{enabled:!0},nestedReply:{display:"indent"}}});var ct,oo,lt,so,st,pt,dt,vt,ft,po,mt,ut,gt,bt,ht,xt,F=w(()=>{"use strict";ct=`<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" style="width:18px; height:18px;" ><path stroke-linecap="round" stroke-linejoin="round" d="M15.182 15.182a4.5 4.5 0 01-6.364 0M21 12a9 9 0 11-18 0 9 9 0 0118 0zM9.75 9.75c0 .414-.168.75-.375.75S9 10.164 9 9.75 9.168 9 9.375 9s.375.336.375.75zm-.375 0h.008v.015h-.008V9.75zm5.625 0c0 .414-.168.75-.375.75s-.375-.336-.375-.75.168-.75.375-.75.375.336.375.75zm-.375 0h.008v.015h-.008V9.75z" /></svg>`,oo=`<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" ><path stroke-linecap="round" stroke-linejoin="round" d="M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12z" /></svg>`,lt=`<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" ><path stroke-linecap="round" stroke-linejoin="round" d="M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88" /></svg>`,so=`<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" ><path stroke-linecap="round" stroke-linejoin="round" d="M7.5 8.25h9m-9 3H12m-9.75 1.51c0 1.6 1.123 2.994 2.707 3.227 1.129.166 2.27.293 3.423.379.35.026.67.21.865.501L12 21l2.755-4.133a1.14 1.14 0 01.865-.501 48.172 48.172 0 003.423-.379c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0012 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018z" /></svg>`,st=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" ><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" ></polygon></svg>`,pt=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" ><path d="M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z" ></path></svg>`,dt=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" ><circle cx="12" cy="12" r="10"></circle><path d="M8 15h8"></path><path d="M8 9h2"></path><path d="M14 9h2"></path></svg>`,vt=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" ><path d="M20.42 4.58a5.4 5.4 0 0 0-7.65 0l-.77.78-.77-.78a5.4 5.4 0 0 0-7.65 0C1.46 6.7 1.33 10.28 4 13l8 8 8-8c2.67-2.72 2.54-6.3.42-8.42z" ></path></svg>`,ft=`<svg version="1.1" id="L4" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="0 0 100 100" enable-background="new 0 0 0 0" xml:space="preserve"><circle fill="currentcolor" stroke="none" cx="6" cy="50" r="6"><animate attributeName="opacity" dur="1s" values="0;1;0" repeatCount="indefinite" begin="0.1"/></circle><circle fill="currentcolor" stroke="none" cx="26" cy="50" r="6"><animate attributeName="opacity" dur="1s" values="0;1;0" repeatCount="indefinite" begin="0.2"/></circle><circle fill="currentcolor" stroke="none" cx="46" cy="50" r="6"><animate attributeName="opacity" dur="1s" values="0;1;0" repeatCount="indefinite" begin="0.3"/></circle></svg>`,po=`<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 88 88"><g style="mix-blend-mode:passthrough"><path d="M87.92 86.098v-.052a.592.592 0 0 0 0-.07L44.978.72l-.059-.105c-.16-.3-.415-.511-.705-.586a.961.961 0 0 0-.841.19 1.315 1.315 0 0 0-.336.378l-.058.115a2571.004 2571.004 0 0 1-8.695 17.172c-.59 1.024-.59 2.382 0 3.406 3.856 7.57 7.7 15.142 11.532 22.718.641 1.108.641 2.58 0 3.688C39.5 60.23 32.826 73.406 26.45 85.993c-.291.661-.086 1.482.46 1.84.16.104.341.158.525.158h18.52c.415.003.797-.272.992-.713l.635-1.285 8.585-17.023c.142-.317.383-.552.67-.653a.949.949 0 0 1 .855.116c.156.1.289.245.386.423l8.506 16.723.787 1.558c.199.433.575.702.985.704h.518c.087.009.175.009.263 0h17.74c.617 0 1.119-.601 1.123-1.347a1.615 1.615 0 0 0-.08-.396Z" fill="currentColor" style="mix-blend-mode:passthrough"/><path d="m38.551 48.541.62-1.232a3.095 3.095 0 0 0 0-3.02l-3.807-7.446-4.377-8.511c-.155-.308-.406-.527-.697-.61a.957.957 0 0 0-.85.17 1.252 1.252 0 0 0-.4.502L.132 86.002c-.29.658-.085 1.477.46 1.83.161.113.345.17.532.168h16.981c.41 0 .788-.27.985-.705l.65-1.302c.029-.048.055-.098.08-.15l.729-1.408c6.047-12.103 11.839-23.66 17.9-35.7.038-.062.072-.127.102-.194Z" fill="currentColor" style="mix-blend-mode:passthrough"/></g></svg>`,mt=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 152.01 132"><defs><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="39.16" y1="775.015" x2="152.84" y2="775.015" gradientTransform="translate(0 -650)"><stop offset="0" style="stop-color:#d93025"/><stop offset="1" style="stop-color:#ea4335"/></linearGradient><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="-1169.827" y1="59.741" x2="-1056.123" y2="59.741" gradientTransform="rotate(-120 -489.637 -232.003)"><stop offset="0" style="stop-color:#1e8e3e"/><stop offset="1" style="stop-color:#34a853"/></linearGradient><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="56.707" y1="-664.775" x2="170.407" y2="-664.775" gradientTransform="rotate(120 -125.508 -249.005)"><stop offset="0" style="stop-color:#fbbc04"/><stop offset="1" style="stop-color:#fcc934"/></linearGradient><linearGradient xlink:href="#a" id="d" gradientUnits="userSpaceOnUse" gradientTransform="translate(-20 -678)" x1="39.16" y1="775.015" x2="152.84" y2="775.015"/><linearGradient xlink:href="#b" id="e" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-120 -507.72 -240.23)" x1="-1169.827" y1="59.741" x2="-1056.123" y2="59.741"/><linearGradient xlink:href="#c" id="f" gradientUnits="userSpaceOnUse" gradientTransform="rotate(120 -127.425 -268.779)" x1="56.707" y1="-664.775" x2="170.407" y2="-664.775"/></defs><path d="M0 0v121.63C0 127.35 4.64 132 10.37 132h131.27c5.72 0 10.37-4.64 10.37-10.37L152 0Zm58.73 14.52h34.54c3.82 0 6.91 3.09 6.91 6.91 0 3.81-3.09 6.91-6.91 6.91H58.73c-3.82 0-6.91-3.09-6.91-6.91 0-3.82 3.09-6.91 6.91-6.91z" fill="#f1f3f4"/><path d="M0 0v121.63C0 127.35 4.64 132 10.37 132h131.27c5.72 0 10.37-4.64 10.37-10.37L152 0Zm58.73 14.52h34.54c3.82 0 6.91 3.09 6.91 6.91 0 3.81-3.09 6.91-6.91 6.91H58.73c-3.82 0-6.91-3.09-6.91-6.91 0-3.82 3.09-6.91 6.91-6.91z" fill="#f1f3f4"/><path d="M0 0v66.35h152V0Zm58.73 14.52h34.54c3.82 0 6.91 3.09 6.91 6.91 0 3.81-3.09 6.91-6.91 6.91H58.73c-3.82 0-6.91-3.09-6.91-6.91 0-3.82 3.09-6.91 6.91-6.91z" fill="#e8eaed"/><path style="fill:url(#d)" d="M76 55.99c-24.29 0-45.49 13.19-56.84 32.81l9.05 27.61L42.18 132h8.894L76 88.81l56.84-.01C121.49 69.18 100.29 55.99 76 55.99Z"/><path style="fill:url(#e)" d="M19.16 88.8C11.694 101.767 8.8 117.054 11.186 132h32.908z"/><path style="fill:url(#f)" d="M76 88.81 100.934 132h39.88c2.387-14.943-.508-30.225-7.974-43.19z"/><path style="fill:#f1f3f4" d="M76 88.81c-18.12 0-32.81 14.695-32.81 32.82 0 3.626.598 7.11 1.683 10.37h62.254a32.771 32.771 0 0 0 1.684-10.37c0-18.125-14.69-32.82-32.811-32.82Z"/><path d="M76 94.96a26.66 26.67 0 0 0-26.66 26.67A26.66 26.67 0 0 0 51.486 132h49.028a26.66 26.67 0 0 0 2.146-10.37A26.66 26.67 0 0 0 76 94.96Z" fill="#1a73e8"/><path opacity=".1" fill="#bdc1c6" d="M0 66.35h152v.86H0zM0 65.48h152v.86H0z"/></svg>`,ut=`<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" clip-rule="evenodd" d="M12 2C6.477 2 2 6.463 2 11.97c0 4.404 2.865 8.14 6.839 9.458.5.092.682-.216.682-.48 0-.236-.008-.864-.013-1.695-2.782.602-3.369-1.337-3.369-1.337-.454-1.151-1.11-1.458-1.11-1.458-.908-.618.069-.606.069-.606 1.003.07 1.531 1.027 1.531 1.027.892 1.524 2.341 1.084 2.91.828.092-.643.35-1.083.636-1.332-2.22-.251-4.555-1.107-4.555-4.927 0-1.088.39-1.979 1.029-2.675-.103-.252-.446-1.266.098-2.638 0 0 .84-.268 2.75 1.022A9.607 9.607 0 0 1 12 6.82c.85.004 1.705.114 2.504.336 1.909-1.29 2.747-1.022 2.747-1.022.546 1.372.202 2.386.1 2.638.64.696 1.028 1.587 1.028 2.675 0 3.83-2.339 4.673-4.566 4.92.359.307.678.915.678 1.846 0 1.332-.012 2.407-.012 2.734 0 .267.18.577.688.48 3.97-1.32 6.833-5.054 6.833-9.458C22 6.463 17.522 2 12 2Z"></path></svg>`,gt=`<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l7.5-7.5 7.5 7.5m-15 6l7.5-7.5 7.5 7.5" /></svg>`,bt=`<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M13.5 16.875h3.375m0 0h3.375m-3.375 0V13.5m0 3.375v3.375M6 10.5h2.25a2.25 2.25 0 002.25-2.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v2.25A2.25 2.25 0 006 10.5zm0 9.75h2.25A2.25 2.25 0 0010.5 18v-2.25a2.25 2.25 0 00-2.25-2.25H6a2.25 2.25 0 00-2.25 2.25V18A2.25 2.25 0 006 20.25zm9.75-9.75H18a2.25 2.25 0 002.25-2.25V6A2.25 2.25 0 0018 3.75h-2.25A2.25 2.25 0 0013.5 6v2.25a2.25 2.25 0 002.25 2.25z" /></svg>`,ht=`<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v2.25m6.364.386l-1.591 1.591M21 12h-2.25m-.386 6.364l-1.591-1.591M12 18.75V21m-4.773-4.227l-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0z" /></svg>`,xt=`<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z" /></svg>`});var ye={};var yt=w(()=>{"use strict";O();F();$("#Top .site-nav .tools > .top").addClass("v2p-hover-btn");{let o=$("#Rightbar .light-toggle").addClass("v2p-color-mode-toggle"),t=o.find("> img");t.prop("alt")==="Light"&&(o.prop("title","\u4F7F\u7528\u6DF1\u8272\u4E3B\u9898"),t.replaceWith(xt)),t.prop("alt")==="Dark"&&(o.prop("title","\u4F7F\u7528\u6D45\u8272\u4E3B\u9898"),t.replaceWith(ht))}{let o=$(`<div class="v2p-footer"><div class="v2p-footer-text">\u6269\u5C55\u81EA V2EX Polish </div><div class="v2p-footer-links"><a class="v2p-footer-link v2p-hover-btn" href="${"https://v2p.app"}" target="_blank">\u63D2\u4EF6\u4E3B\u9875</a><a class="v2p-footer-link v2p-hover-btn" href="${"https://github.com/coolpace/V2EX_Polish/discussions/1"}" target="_blank">\u95EE\u9898\u53CD\u9988</a></div><div class="v2p-footer-brand"><span><a href="https://chrome.google.com/webstore/detail/v2ex-polish/onnepejgdiojhiflfoemillegpgpabdm" target="_blank" title="Chrome \u5E94\u7528\u5546\u5E97" >${mt}</a></span><span><a href="https://github.com/coolpace/V2EX_Polish" target="_blank" title="GitHub \u4ED3\u5E93" >${ut}</a></span></div></div>`);$(`<div class="v2p-footer-logo">${po}</div>`).prependTo(o),$("#Bottom .content").append(o)}});function wt(o){return typeof o=="object"&&o!==null}function Po(o,t){let n={};for(let e in o)wt(o[e])&&wt(t[e])?n[e]=Po(o[e],t[e]):Reflect.has(t,e)?n[e]=t[e]:n[e]=o[e];for(let e in t)Reflect.has(o,e)||(n[e]=t[e]);return n}var kt=w(()=>{"use strict"});function $t(){let o=window.navigator.userAgent.toLowerCase(),t=/(macintosh|macintel|macppc|mac68k|macos)/i,n=/(win32|win64|windows|wince)/i,e=/(iphone|ipad|ipod)/i,r=null;return t.test(o)?r="macos":e.test(o)?r="ios":n.test(o)?r="windows":o.includes("android")?r="android":o.includes("linux")&&(r="linux"),r}function fo(o,{format:t="YMD"}={}){let n=new Date(o.toString().length===10?o*1e3:o),e=n.getFullYear().toString(),r=(n.getMonth()+1).toString().padStart(2,"0"),i=n.getDate().toString().padStart(2,"0"),a=`${e}-${r}-${i}`;if(t==="YMDHMS"){let c=n.getHours().toString().padStart(2,"0"),l=n.getMinutes().toString().padStart(2,"0"),s=n.getSeconds().toString().padStart(2,"0");return`${a} ${c}:${l}:${s}`}return a}function to(){return typeof chrome<"u"&&typeof chrome.extension<"u"?"chrome":null}function V(o=!0){return new Promise((t,n)=>{if(o&&typeof window<"u"&&window.__V2P_StorageCache&&t(window.__V2P_StorageCache),to()!=="chrome")return t({["options"]:lo});chrome.storage.sync.get().then(r=>{let i,a=r["options"];a?i={...r,["options"]:Po(lo,a)}:i={...r,["options"]:lo},typeof window<"u"&&(window.__V2P_StorageCache=i),t(i)}).catch(r=>{n(r)})})}async function L(o=!0){return(await V(o))["options"]}async function Ct(o=!0){return(await V(o))["api"]?.pat}async function mo(o=!0){return(await V(o))["member-tag"]}function uo(o){return o.replace(/[<>&"'']/g,t=>{switch(t){case"<":return"&lt;";case">":return"&gt;";case"&":return"&amp;";case'"':return"&quot;";case"'":return"&#39;";default:return t}})}var A=w(()=>{"use strict";O();kt()});function _(o){let{children:t,className:n="",type:e="button",tag:r="button"}=o,i=$(`<${r} class="normal button ${n}">${t}</${r}>`);return r==="button"&&i.prop("type",e),i}var J=w(()=>{"use strict"});function go(o){let{root:t,title:n,onOpen:e,onClose:r,onMount:i}=o,a=$('<div class="v2p-model-mask">'),c=$('<div class="v2p-model-content">'),l=_({children:"\u5173\u95ED<kbd>Esc</kbd>",className:"v2p-model-close-btn"}),s=$(`<div class="v2p-model-title">${n??""}</div>`),p=$('<div class="v2p-model-actions">').append(l),d=$('<div class="v2p-model-header">').append(s,p),v=$('<div class="v2p-model-main">').append(d,c).on("click",y=>y.stopPropagation()),m=a.append(v).hide(),f={$mask:a,$main:v,$container:m,$title:s,$actions:p,$content:c},g=!1,h=()=>{u()},b=y=>{y.key==="Escape"&&u()},u=()=>{a.off("click",h),$(document).off("keydown",b),g=!1,m.fadeOut("fast"),document.body.classList.remove("v2p-modal-open"),r?.(f)},x=()=>{setTimeout(()=>{g||(a.on("click",h),$(document).on("keydown",b),g=!0)}),m.fadeIn("fast"),document.body.classList.add("v2p-modal-open"),e?.(f)};return l.on("click",u),i?.(f),t&&t.append(m),{...f,open:x,close:u}}var Lo=w(()=>{"use strict";J()});async function ke(o,t){return(await fetch(o,t)).json()}function _t(o,t){return ke(`${we}/members/show.json?username=${o}`,t)}async function At(o,t){let n=await Ct(),e=await fetch(o,{...t,headers:{Authorization:n?`Bearer ${n}`:"",...t?.headers}});{let i=e.headers.get("X-Rate-Limit-Limit"),a=e.headers.get("X-Rate-Limit-Reset"),c=e.headers.get("X-Rate-Limit-Remaining"),l={pat:n,limit:i?Number(i):void 0,reset:a?Number(a):void 0,remaining:c?Number(c):void 0};chrome.storage.sync.set({["api"]:l})}let r=await e.json();if(typeof r.success=="boolean"&&!r.success)throw new Error(r.message,{cause:r});return r}function Rt(o,t){return At(`${Mt}/topics/${o}`,{method:"GET",...t})}function zt(o,t){return At(`${Mt}/topics/${o}/replies`,{method:"GET",...t})}async function St(o){let t=new FormData;t.append("image",o);let n=Math.floor(Math.random()*Oo.length),e=Oo[n],r=await fetch("https://api.imgur.com/3/upload",{method:"POST",headers:{Authorization:`Client-ID ${e}`},body:t});if(r.ok){let i=await r.json();if(i.success)return i.data.link}throw new Error("\u4E0A\u4F20\u5931\u8D25")}var Tt,we,Mt,$n,bo=w(()=>{"use strict";O();A();Tt=window.location.origin.includes("v2ex.com")?window.location.origin:"https://www.v2ex.com",we=`${Tt}/api`,Mt=`${Tt}/api/v2`;$n=`${rt}_settings`});var Et,Ot,Pt,Do,W,R,eo,M,Bo,Tn,C,D,B=w(()=>{"use strict";Et=$('#Top .tools > a[href^="/member"]').text(),Ot=$('#Main > .box > .header > small > a[href^="/member"]').text(),Pt=$("#Main #Tabs ~ .cell.item, #Main #TopicsNode > .cell, #Main .cell.item:has(.item_title > .topic-link)"),Do=$("#Main .box:has(.topic_content)"),W=$('#Main .box:has(.cell[id^="r_"])'),R=W.find('.cell[id^="r_"]'),eo=R.find("> table > tbody > tr"),M=$("#reply-box"),Bo=M.find('form[action^="/t"]'),Tn=$("#Wrapper").hasClass("Night")?"dark":"light",C=document.querySelector("#reply_content"),D=eo.map((o,t)=>{let n=R[o].id,e=$(t),r=e.find("> td:nth-child(3)"),i=e.find("> td:last-of-type > .fr").find("> .thank_area").hasClass("thanked"),a=r.find("> strong > a"),c=a.text(),l=a.prop("href"),s=e.find(".avatar").prop("src"),p=r.find("> .reply_content").text(),d=Number(r.find("span.small").text()),v=r.find("span.no").text(),m=Array.from(p.matchAll(/@([a-zA-Z0-9]+)/g)),f=m.length>0?m.map(([,b])=>b):void 0,g=Array.from(p.matchAll(/#(\d+)/g)),h=g.length>0?g.map(([,b])=>b):void 0;return{id:n,memberName:c,memberLink:l,memberAvatar:s,content:p,likes:d,floor:v,index:o,refMemberNames:f,refFloors:h,thanked:i}}).get()});function Lt(o){if("cause"in o){let t=o.cause;if("success"in t&&"message"in t)return typeof t.success=="boolean"&&!t.success&&typeof t.message=="string"}return!1}function Y(){C instanceof HTMLTextAreaElement&&C.focus()}function ho(o){if(C instanceof HTMLTextAreaElement){let t=C.selectionStart,n=C.selectionEnd,e=C.value.substring(0,t),r=C.value.substring(n,C.value.length);C.value=`${e}${o}${r}`,Y(),C.selectionStart=C.selectionEnd=t+o.length}}async function Dt(o,t){if(to()!=="chrome")return;let e=await mo(!1);if(t&&t.length>0){let r={...e,[o]:{tags:t}};await chrome.storage.sync.set({["member-tag"]:r})}else e&&Reflect.has(e,o)&&(delete e[o],await chrome.storage.sync.set({["member-tag"]:e}))}var xo=w(()=>{"use strict";O();A();B()});async function Bt(){if(!to())return;let t=await V(),n=t["options"],e=t["api"]?.pat,r=null,i=_({children:"\u8FDB\u5165\u4E3B\u9898",className:"special",tag:"a"});n.openInNewTab&&i.prop("target","_blank");let a=go({root:$(document.body),onMount:({$actions:l})=>{l.prepend(i)},onClose:({$title:l,$content:s})=>{l.empty(),s.empty(),r?.abort()}}),c=new Map;Pt.each((l,s)=>{let p=$(s),d=p.find(".item_title");$('<button class="v2p-topic-preview-btn">\u9884\u89C8</button>').on("click",()=>{let v=p.find(".topic-link").attr("href"),f=v?.match(/\/(\d+)#/)?.at(1);if(f){a.open(),i.prop("href",v);let g=d.find(".topic-link").text(),h=$(`<a class="v2p-topic-preview-title-link" title="${g}">${g}</a>`);a.$title.empty().append(h),e?(async()=>{let b=c.get(f);if(!b||Date.now()-b.cacheTime>1e3*60*10)try{r=new AbortController,a.$content.empty().append(`<div class="v2p-model-loading"><div class="v2p-icon-loading">${ft}</div></div>`);let u=[Rt(f,{signal:r.signal}),zt(f)],[{result:x},{result:y}]=await Promise.all(u),k={topic:x,topicReplies:y,cacheTime:Date.now()};c.set(f,k),b=k}catch(u){if(Lt(u)){let x=u.cause.message;(x==="Token expired"||x==="Invalid token")&&a.$content.empty().append(`<div>${u.cause.message}</div>`)}}if(b){let{topic:u,topicReplies:x}=b,y=$('<div class="v2p-topic-preview">');h.prop("href",u.url),n.openInNewTab&&h.prop("target","_blank");let k=$(`<div class="v2p-tp-info"><a class="v2p-tp-member" href="${u.member.url}"><img class="v2p-tp-avatar" src="${u.member.avatar}"><span>${u.member.username}</span></a><span>${fo(u.created,{format:"YMDHMS"})}</span><span>${u.replies} \u6761\u56DE\u590D</span></div>`);if(y.append(k),u.content_rendered?y.append(`<div class="v2p-topic-preview-content">${u.content_rendered}</div>`):y.append(`<div class="v2p-empty-content"><div class="v2p-text-emoji">\xAF\\_(\u30C4)_/\xAF</div><p>\u8BE5\u4E3B\u9898\u6CA1\u6709\u6B63\u6587\u5185\u5BB9</p></div>`),x.length>0){let j=$("<div>"),P=u.member.username;x.forEach(E=>{j.append(`<div class="v2p-topic-reply"><div class="v2p-topic-reply-member"><a href="${E.member.url}"><img class="v2p-topic-reply-avatar" src="${E.member.avatar}"><span>${E.member.username}</span><span style=" display: ${P===E.member.username?"unset":"none"}; margin-left:${P===E.member.username?"3px":"0"}; "><span class="badge op mini">OP</span></span></a>\uFF1A </div><div class="v2p-topic-reply-content">${uo(E.content)}</div></div>`)}),$('<div class="v2p-topic-reply-box">').append(j.html()).append('<div class="v2p-more-reply-tip">\u5728\u4E3B\u9898\u5185\u67E5\u770B\u5B8C\u6574\u8BC4\u8BBA...</div>').appendTo(y)}a.$content.empty().append(y)}})():a.$content.empty().append(`<div class="v2p-no-pat"><div class="v2p-no-pat-title">\u60A8\u9700\u8981\u5148\u8BBE\u7F6E PAT \u624D\u80FD\u83B7\u53D6\u9884\u89C8\u5185\u5BB9\u3002</div><div class="v2p-no-pat-desc"> \u8BF7\u524D\u5F80<span class="v2p-no-pat-block"><span class="v2p-icon-logo">${po}</span><span style="margin: 0 5px;">></span> \u8BBE\u7F6E</span> \u8FDB\u884C\u8BBE\u7F6E\u3002 </div><div class="v2p-no-pat-steps"><div class="v2p-no-pat-step"><div style="font-weight:bold;margin-bottom:10px;font-size:15px;">1. \u5728\u6269\u5C55\u7A0B\u5E8F\u5217\u8868\u4E2D\u627E\u5230\u5E76\u70B9\u51FB\u300CV2EX Polish\u300D\u3002</div><img class="v2p-no-pat-img" src="https://i.imgur.com/UfNkuTF.png"></div><div class="v2p-no-pat-step"><div style="font-weight:bold;margin-bottom:10px;font-size:15px;">2. \u5728\u5F39\u51FA\u7684\u5C0F\u7A97\u53E3\u4E2D\u627E\u5230\u300C\u2699\uFE0F \u6309\u94AE\u300D\uFF0C\u8F93\u5165 PAT\u3002</div><img class="v2p-no-pat-img" src="https://i.imgur.com/O6hP86A.png"></div></div></div>`)}}).appendTo(d)})}var It=w(()=>{"use strict";J();Lo();O();F();bo();A();B();xo()});var $e={};var Nt=w(()=>{"use strict";A();It();(async()=>($("#Main .tab").addClass("v2p-hover-btn"),(await L()).openInNewTab&&$('#Main .topic-link, .item_hot_topic_title > a, .item_node, a[href="/write"]').prop("target","_blank"),await Bt()))()});function ko(o){return o.split("-")[1]}function Ft(o){return o==="y"?"height":"width"}function X(o){return o.split("-")[0]}function $o(o){return["top","bottom"].includes(X(o))?"x":"y"}function Ht(o,t,n){let{reference:e,floating:r}=o,i=e.x+e.width/2-r.width/2,a=e.y+e.height/2-r.height/2,c=$o(t),l=Ft(c),s=e[l]/2-r[l]/2,p=X(t),d=c==="x",v;switch(p){case"top":v={x:i,y:e.y-r.height};break;case"bottom":v={x:i,y:e.y+e.height};break;case"right":v={x:e.x+e.width,y:a};break;case"left":v={x:e.x-r.width,y:a};break;default:v={x:e.x,y:e.y}}switch(ko(t)){case"start":v[c]-=s*(n&&d?-1:1);break;case"end":v[c]+=s*(n&&d?-1:1);break}return v}function Ce(o){return{top:0,right:0,bottom:0,left:0,...o}}function Te(o){return typeof o!="number"?Ce(o):{top:o,right:o,bottom:o,left:o}}function yo(o){return{...o,top:o.y,left:o.x,right:o.x+o.width,bottom:o.y+o.height}}async function No(o,t){var n;t===void 0&&(t={});let{x:e,y:r,platform:i,rects:a,elements:c,strategy:l}=o,{boundary:s="clippingAncestors",rootBoundary:p="viewport",elementContext:d="floating",altBoundary:v=!1,padding:m=0}=t,f=Te(m),h=c[v?d==="floating"?"reference":"floating":d],b=yo(await i.getClippingRect({element:(n=await(i.isElement==null?void 0:i.isElement(h)))==null||n?h:h.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(c.floating)),boundary:s,rootBoundary:p,strategy:l})),u=d==="floating"?{...a.floating,x:e,y:r}:a.reference,x=await(i.getOffsetParent==null?void 0:i.getOffsetParent(c.floating)),y=await(i.isElement==null?void 0:i.isElement(x))?await(i.getScale==null?void 0:i.getScale(x))||{x:1,y:1}:{x:1,y:1},k=yo(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({rect:u,offsetParent:x,strategy:l}):u);return{top:(b.top-k.top+f.top)/y.y,bottom:(k.bottom-b.bottom+f.bottom)/y.y,left:(b.left-k.left+f.left)/y.x,right:(k.right-b.right+f.right)/y.x}}function jt(o,t,n){return _e(o,Me(t,n))}function wo(o){return o.replace(/left|right|bottom|top/g,t=>Ae[t])}function Re(o,t,n){n===void 0&&(n=!1);let e=ko(o),r=$o(o),i=Ft(r),a=r==="x"?e===(n?"end":"start")?"right":"left":e==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=wo(a)),{main:a,cross:wo(a)}}function Io(o){return o.replace(/start|end/g,t=>ze[t])}function Se(o){let t=wo(o);return[Io(o),t,Io(t)]}function Ee(o,t,n){let e=["left","right"],r=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(o){case"top":case"bottom":return n?t?r:e:t?e:r;case"left":case"right":return t?i:a;default:return[]}}function Oe(o,t,n,e){let r=ko(o),i=Ee(X(o),n==="start",e);return r&&(i=i.map(a=>a+"-"+r),t&&(i=i.concat(i.map(Io)))),i}async function Pe(o,t){let{placement:n,platform:e,elements:r}=o,i=await(e.isRTL==null?void 0:e.isRTL(r.floating)),a=X(n),c=ko(n),l=$o(n)==="x",s=["left","top"].includes(a)?-1:1,p=i&&l?-1:1,d=typeof t=="function"?t(o):t,{mainAxis:v,crossAxis:m,alignmentAxis:f}=typeof d=="number"?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return c&&typeof f=="number"&&(m=c==="end"?f*-1:f),l?{x:m*p,y:v*s}:{x:v*s,y:m*p}}function Le(o){return o==="x"?"y":"x"}var Vt,Me,_e,Ae,ze,Ho,jo,Fo,Vo=w(()=>{Vt=async(o,t,n)=>{let{placement:e="bottom",strategy:r="absolute",middleware:i=[],platform:a}=n,c=i.filter(Boolean),l=await(a.isRTL==null?void 0:a.isRTL(t)),s=await a.getElementRects({reference:o,floating:t,strategy:r}),{x:p,y:d}=Ht(s,e,l),v=e,m={},f=0;for(let g=0;g<c.length;g++){let{name:h,fn:b}=c[g],{x:u,y:x,data:y,reset:k}=await b({x:p,y:d,initialPlacement:e,placement:v,strategy:r,middlewareData:m,rects:s,platform:a,elements:{reference:o,floating:t}});if(p=u??p,d=x??d,m={...m,[h]:{...m[h],...y}},k&&f<=50){f++,typeof k=="object"&&(k.placement&&(v=k.placement),k.rects&&(s=k.rects===!0?await a.getElementRects({reference:o,floating:t,strategy:r}):k.rects),{x:p,y:d}=Ht(s,v,l)),g=-1;continue}}return{x:p,y:d,placement:v,strategy:r,middlewareData:m}};Me=Math.min,_e=Math.max;Ae={left:"right",right:"left",bottom:"top",top:"bottom"};ze={start:"end",end:"start"};Ho=function(o){return o===void 0&&(o={}),{name:"flip",options:o,async fn(t){var n;let{placement:e,middlewareData:r,rects:i,initialPlacement:a,platform:c,elements:l}=t,{mainAxis:s=!0,crossAxis:p=!0,fallbackPlacements:d,fallbackStrategy:v="bestFit",fallbackAxisSideDirection:m="none",flipAlignment:f=!0,...g}=o,h=X(e),b=X(a)===a,u=await(c.isRTL==null?void 0:c.isRTL(l.floating)),x=d||(b||!f?[wo(a)]:Se(a));!d&&m!=="none"&&x.push(...Oe(a,f,m,u));let y=[a,...x],k=await No(t,g),j=[],P=((n=r.flip)==null?void 0:n.overflows)||[];if(s&&j.push(k[h]),p){let{main:q,cross:co}=Re(e,i,u);j.push(k[q],k[co])}if(P=[...P,{placement:e,overflows:j}],!j.every(q=>q<=0)){var E,Ko;let q=(((E=r.flip)==null?void 0:E.index)||0)+1,co=y[q];if(co)return{data:{index:q,overflows:P},reset:{placement:co}};let Z=(Ko=P.filter(U=>U.overflows[0]<=0).sort((U,G)=>U.overflows[1]-G.overflows[1])[0])==null?void 0:Ko.placement;if(!Z)switch(v){case"bestFit":{var ot;let U=(ot=P.map(G=>[G.placement,G.overflows.filter(K=>K>0).reduce((K,ge)=>K+ge,0)]).sort((G,K)=>G[1]-K[1])[0])==null?void 0:ot[0];U&&(Z=U);break}case"initialPlacement":Z=a;break}if(e!==Z)return{reset:{placement:Z}}}return{}}}};jo=function(o){return o===void 0&&(o=0),{name:"offset",options:o,async fn(t){let{x:n,y:e}=t,r=await Pe(t,o);return{x:n+r.x,y:e+r.y,data:r}}}};Fo=function(o){return o===void 0&&(o={}),{name:"shift",options:o,async fn(t){let{x:n,y:e,placement:r}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:c={fn:h=>{let{x:b,y:u}=h;return{x:b,y:u}}},...l}=o,s={x:n,y:e},p=await No(t,l),d=$o(X(r)),v=Le(d),m=s[d],f=s[v];if(i){let h=d==="y"?"top":"left",b=d==="y"?"bottom":"right",u=m+p[h],x=m-p[b];m=jt(u,m,x)}if(a){let h=v==="y"?"top":"left",b=v==="y"?"bottom":"right",u=f+p[h],x=f-p[b];f=jt(u,f,x)}let g=c.fn({...t,[d]:m,[v]:f});return{...g,data:{x:g.x-n,y:g.y-e}}}}}});function T(o){var t;return((t=o.ownerDocument)==null?void 0:t.defaultView)||window}function z(o){return T(o).getComputedStyle(o)}function Jt(o){let t=z(o),n=parseFloat(t.width),e=parseFloat(t.height),r=o.offsetWidth,i=o.offsetHeight,a=To(n)!==r||To(e)!==i;return a&&(n=r,e=i),{width:n,height:e,fallback:a}}function I(o){return Qt(o)?(o.nodeName||"").toLowerCase():""}function Yt(){if(Co)return Co;let o=navigator.userAgentData;return o&&Array.isArray(o.brands)?(Co=o.brands.map(t=>t.brand+"/"+t.version).join(" "),Co):navigator.userAgent}function S(o){return o instanceof T(o).HTMLElement}function N(o){return o instanceof T(o).Element}function Qt(o){return o instanceof T(o).Node}function Xt(o){if(typeof ShadowRoot>"u")return!1;let t=T(o).ShadowRoot;return o instanceof t||o instanceof ShadowRoot}function Mo(o){let{overflow:t,overflowX:n,overflowY:e,display:r}=z(o);return/auto|scroll|overlay|hidden|clip/.test(t+e+n)&&!["inline","contents"].includes(r)}function De(o){return["table","td","th"].includes(I(o))}function Wo(o){let t=/firefox/i.test(Yt()),n=z(o),e=n.backdropFilter||n.WebkitBackdropFilter;return n.transform!=="none"||n.perspective!=="none"||(e?e!=="none":!1)||t&&n.willChange==="filter"||t&&(n.filter?n.filter!=="none":!1)||["transform","perspective"].some(r=>n.willChange.includes(r))||["paint","layout","strict","content"].some(r=>{let i=n.contain;return i!=null?i.includes(r):!1})}function Xo(){return/^((?!chrome|android).)*safari/i.test(Yt())}function qo(o){return["html","body","#document"].includes(I(o))}function Zt(o){return N(o)?o:o.contextElement}function Q(o){let t=Zt(o);if(!S(t))return Kt;let n=t.getBoundingClientRect(),{width:e,height:r,fallback:i}=Jt(t),a=(i?To(n.width):n.width)/e,c=(i?To(n.height):n.height)/r;return(!a||!Number.isFinite(a))&&(a=1),(!c||!Number.isFinite(c))&&(c=1),{x:a,y:c}}function ro(o,t,n,e){var r,i;t===void 0&&(t=!1),n===void 0&&(n=!1);let a=o.getBoundingClientRect(),c=Zt(o),l=Kt;t&&(e?N(e)&&(l=Q(e)):l=Q(o));let s=c?T(c):window,p=Xo()&&n,d=(a.left+(p&&((r=s.visualViewport)==null?void 0:r.offsetLeft)||0))/l.x,v=(a.top+(p&&((i=s.visualViewport)==null?void 0:i.offsetTop)||0))/l.y,m=a.width/l.x,f=a.height/l.y;if(c){let g=T(c),h=e&&N(e)?T(e):e,b=g.frameElement;for(;b&&e&&h!==g;){let u=Q(b),x=b.getBoundingClientRect(),y=getComputedStyle(b);x.x+=(b.clientLeft+parseFloat(y.paddingLeft))*u.x,x.y+=(b.clientTop+parseFloat(y.paddingTop))*u.y,d*=u.x,v*=u.y,m*=u.x,f*=u.y,d+=x.x,v+=x.y,b=T(b).frameElement}}return{width:m,height:f,top:v,right:d+m,bottom:v+f,left:d,x:d,y:v}}function H(o){return((Qt(o)?o.ownerDocument:o.document)||window.document).documentElement}function _o(o){return N(o)?{scrollLeft:o.scrollLeft,scrollTop:o.scrollTop}:{scrollLeft:o.pageXOffset,scrollTop:o.pageYOffset}}function Be(o){let{rect:t,offsetParent:n,strategy:e}=o,r=S(n),i=H(n);if(n===i)return t;let a={scrollLeft:0,scrollTop:0},c={x:1,y:1},l={x:0,y:0};if((r||!r&&e!=="fixed")&&((I(n)!=="body"||Mo(i))&&(a=_o(n)),S(n))){let s=ro(n);c=Q(n),l.x=s.x+n.clientLeft,l.y=s.y+n.clientTop}return{width:t.width*c.x,height:t.height*c.y,x:t.x*c.x-a.scrollLeft*c.x+l.x,y:t.y*c.y-a.scrollTop*c.y+l.y}}function oe(o){return ro(H(o)).left+_o(o).scrollLeft}function Ie(o){let t=H(o),n=_o(o),e=o.ownerDocument.body,r=no(t.scrollWidth,t.clientWidth,e.scrollWidth,e.clientWidth),i=no(t.scrollHeight,t.clientHeight,e.scrollHeight,e.clientHeight),a=-n.scrollLeft+oe(o),c=-n.scrollTop;return z(e).direction==="rtl"&&(a+=no(t.clientWidth,e.clientWidth)-r),{width:r,height:i,x:a,y:c}}function io(o){if(I(o)==="html")return o;let t=o.assignedSlot||o.parentNode||Xt(o)&&o.host||H(o);return Xt(t)?t.host:t}function te(o){let t=io(o);return qo(t)?t.ownerDocument.body:S(t)&&Mo(t)?t:te(t)}function ee(o,t){var n;t===void 0&&(t=[]);let e=te(o),r=e===((n=o.ownerDocument)==null?void 0:n.body),i=T(e);return r?t.concat(i,i.visualViewport||[],Mo(e)?e:[]):t.concat(e,ee(e))}function Ne(o,t){let n=T(o),e=H(o),r=n.visualViewport,i=e.clientWidth,a=e.clientHeight,c=0,l=0;if(r){i=r.width,a=r.height;let s=Xo();(!s||s&&t==="fixed")&&(c=r.offsetLeft,l=r.offsetTop)}return{width:i,height:a,x:c,y:l}}function He(o,t){let n=ro(o,!0,t==="fixed"),e=n.top+o.clientTop,r=n.left+o.clientLeft,i=S(o)?Q(o):{x:1,y:1},a=o.clientWidth*i.x,c=o.clientHeight*i.y,l=r*i.x,s=e*i.y;return{width:a,height:c,x:l,y:s}}function qt(o,t,n){let e;if(t==="viewport")e=Ne(o,n);else if(t==="document")e=Ie(H(o));else if(N(t))e=He(t,n);else{let a={...t};if(Xo()){var r,i;let c=T(o);a.x-=((r=c.visualViewport)==null?void 0:r.offsetLeft)||0,a.y-=((i=c.visualViewport)==null?void 0:i.offsetTop)||0}e=a}return yo(e)}function je(o,t){let n=t.get(o);if(n)return n;let e=ee(o).filter(c=>N(c)&&I(c)!=="body"),r=null,i=z(o).position==="fixed",a=i?io(o):o;for(;N(a)&&!qo(a);){let c=z(a),l=Wo(a);c.position==="fixed"?r=null:(i?!l&&!r:!l&&c.position==="static"&&!!r&&["absolute","fixed"].includes(r.position))?e=e.filter(d=>d!==a):r=c,a=io(a)}return t.set(o,e),e}function Fe(o){let{element:t,boundary:n,rootBoundary:e,strategy:r}=o,a=[...n==="clippingAncestors"?je(t,this._c):[].concat(n),e],c=a[0],l=a.reduce((s,p)=>{let d=qt(t,p,r);return s.top=no(d.top,s.top),s.right=Wt(d.right,s.right),s.bottom=Wt(d.bottom,s.bottom),s.left=no(d.left,s.left),s},qt(t,c,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function Ve(o){return S(o)?Jt(o):o.getBoundingClientRect()}function Ut(o,t){return!S(o)||z(o).position==="fixed"?null:t?t(o):o.offsetParent}function We(o){let t=io(o);for(;S(t)&&!qo(t);){if(Wo(t))return t;t=io(t)}return null}function Gt(o,t){let n=T(o),e=Ut(o,t);for(;e&&De(e)&&z(e).position==="static";)e=Ut(e,t);return e&&(I(e)==="html"||I(e)==="body"&&z(e).position==="static"&&!Wo(e))?n:e||We(o)||n}function Xe(o,t,n){let e=S(t),r=H(t),i=ro(o,!0,n==="fixed",t),a={scrollLeft:0,scrollTop:0},c={x:0,y:0};if(e||!e&&n!=="fixed")if((I(t)!=="body"||Mo(r))&&(a=_o(t)),S(t)){let l=ro(t,!0);c.x=l.x+t.clientLeft,c.y=l.y+t.clientTop}else r&&(c.x=oe(r));return{x:i.left+a.scrollLeft-c.x,y:i.top+a.scrollTop-c.y,width:i.width,height:i.height}}var Wt,no,To,Co,Kt,qe,ne,re=w(()=>{Vo();Vo();Wt=Math.min,no=Math.max,To=Math.round;Kt={x:1,y:1};qe={getClippingRect:Fe,convertOffsetParentRelativeRectToViewportRelativeRect:Be,isElement:N,getDimensions:Ve,getOffsetParent:Gt,getDocumentElement:H,getScale:Q,async getElementRects(o){let{reference:t,floating:n,strategy:e}=o,r=this.getOffsetParent||Gt,i=this.getDimensions;return{reference:Xe(t,await r(n),e),floating:{x:0,y:0,...await i(n)}}},getClientRects:o=>Array.from(o.getClientRects()),isRTL:o=>z(o).direction==="rtl"},ne=(o,t,n)=>{let e=new Map,r={platform:qe,...n},i={...r.platform,_c:e};return Vt(o,t,{...r,platform:i})}});function Ao(o){let{message:t,duration:n=3e3}=o;$(".v2p-toast").length>0&&$(".v2p-toast").remove();let e=$(`<div class="v2p-toast">${t}</div>`).hide();$(document.body).append(e),e.fadeIn("fast"),setTimeout(()=>{e.fadeOut("fast",()=>{e.remove()})},n)}var Uo=w(()=>{"use strict"});function ao(o){let{root:t,trigger:n,triggerType:e="click",content:r,options:i,onOpen:a,onClose:c,offsetOptions:l={mainAxis:5,crossAxis:5}}=o,s=$('<div class="v2p-popup-content">'),p=$('<div class="v2p-popup" tabindex="0">').css("visibility","hidden").append(s);t.append(p),r&&p.append(r);let d=p.get(0),v=h=>{$(h.target).closest(d).length===0&&m()},m=()=>{p.css("visibility","hidden"),$(document).off("click",v),c?.(),g.onClose?.()},f=h=>{if(!h)return;setTimeout(()=>{$(document).on("click",v)});let b=h.get(0);ne(b,d,{placement:"bottom-start",middleware:[jo(l),Ho(),Fo({padding:8})],...i}).then(({x:u,y:x})=>{Object.assign(d.style,{left:`${u}px`,top:`${x}px`}),p.css("visibility","visible")}).catch(()=>{m(),Ao({message:"Popup \u6E32\u67D3\u5931\u8D25"})}),a?.()},g={$content:s,isOver:!1,open:h=>{f(h)},close:m};return e==="hover"&&p.on("mouseover",()=>{g.isOver||(g.isOver=!0,p.off("mouseleave").on("mouseleave",()=>{g.isOver=!1,setTimeout(()=>{g.isOver||g.close()},Ro)}))}),n?.on("click",()=>{d.style.visibility!=="hidden"?m():f(n)}),g}var Ro,zo=w(()=>{"use strict";re();Uo();Ro=350});function ie(o){let{$cellDom:t,popupControl:n,commentData:e,onSetTagsClick:r}=o,i=null,a=t.find(".avatar"),c=()=>{n.close(),n.open(a);let l=$(`<div class="v2p-member-card"><div class="v2p-info"><div class="v2p-info-left"><div class="v2p-avatar-box"></div></div><div class="v2p-info-right"><div class="v2p-username v2p-loading"></div><div class="v2p-no v2p-loading"></div><div class="v2p-created-date v2p-loading"></div></div></div></div>`);n.$content.empty().append(l),(async()=>{let s=e.memberName;if(!Go.has(s)){i=new AbortController,n.onClose=()=>{i?.abort()};try{let d=await _t(s,{signal:i.signal});Go.set(s,d)}catch(d){return d&&typeof d=="object"&&"name"in d&&d.name!=="AbortError"&&l.html("<span>\u83B7\u53D6\u7528\u6237\u4FE1\u606F\u5931\u8D25</span>"),null}}let p=Go.get(s);if(p){let d=p.username;l.find(".v2p-avatar-box").removeClass("v2p-loading").append(`<img class="v2p-avatar" src="${p.avatar_large}">`);let v=await L(),m=$(`<a href="${p.url}">${d}</a>`);v.openInNewTab&&m.prop("target","_blank"),l.find(".v2p-username").removeClass("v2p-loading").append(m),l.find(".v2p-no").removeClass("v2p-loading").text(`V2EX \u7B2C ${p.id} \u53F7\u4F1A\u5458`),l.find(".v2p-created-date").removeClass("v2p-loading").text(`\u52A0\u5165\u4E8E ${fo(p.created)}`),p.bio&&p.bio.trim().length>0&&l.append(`<div class="v2p-bio">${p.bio}</div>`);let f=$('<div class="v2p-member-card-actions">');_({children:"\u6DFB\u52A0\u7528\u6237\u6807\u7B7E"}).on("click",()=>{n.close(),r?.()}).appendTo(f),l.append(f)}})()};a.on("mouseover",()=>{setTimeout(()=>{c()},Ro)}).on("mouseleave",()=>{setTimeout(()=>{n.isOver||n.close()},Ro)})}var Go,ae=w(()=>{"use strict";J();zo();bo();A();Go=new Map});async function ce(){(await L()).openInNewTab&&Do.find(".topic_content a[href]").prop("target","_blank").prop("rel","noopener noreferrer");{let o=Do.find(".subtle > .topic_content"),t=o.text().length;t>=200&&o.each((n,e)=>{t>=400&&(e.style.fontSize="14px"),e.style.fontSize="14.5px"})}{let o=$(".topic_buttons .tb").addClass("v2p-tb v2p-hover-btn");o.eq(0).append(`<span class="v2p-tb-icon">${st}</span>`),o.eq(1).append(`<span class="v2p-tb-icon">${pt}</span>`),o.eq(2).append(`<span class="v2p-tb-icon">${dt}</span>`),o.eq(3).append(`<span class="v2p-tb-icon">${vt}</span>`)}}function Jo(o){if(o.find(".v2p-reply-content").length>0)return;let t=o.find(".reply_content");if((t.height()??0)+Eo>=at){let r={maxHeight:`${Eo}px`,overflow:"hidden",paddingBottom:"0"},i=$('<div class="v2p-reply-content v2p-collapsed">').css(r),a=_({children:"\u5C55\u5F00\u56DE\u590D",className:"v2p-expand-btn"}),c=()=>{let l=i.hasClass("v2p-collapsed");i.toggleClass("v2p-collapsed").css(l?{maxHeight:"none",overflow:"auto",paddingBottom:"40px"}:r),a.html(l?"\u6536\u8D77\u56DE\u590D":"\u5C55\u5F00\u56DE\u590D")};a.on("click",()=>{c()}),i.append(t.clone()).replaceAll(t).append(a)}}function Yo(o,t){let n=$(`.v2p-tags-${o}`),e=t?.map(r=>r.name).join("\uFF0C");n.length>0?e?n.html(`<b>#</b>&nbsp;${e}`):n.remove():e&&$(`<div class="v2p-reply-tags v2p-tags-${o}"><b>#</b>&nbsp;${e}</div>`).on("click",()=>{Qo(o)}).insertBefore(R.filter(`:has(> table strong > a[href="/member/${o}"])`).find("> table .reply_content"))}function Qo(o){(async()=>{let t=await mo(!1),n=t&&Reflect.has(t,o)?t[o].tags?.map(r=>r.name).join("\uFF0C"):void 0,e=window.prompt(`\u26A0 \u7528\u6237\u6807\u7B7E\u662F\u5B9E\u9A8C\u6027\u7684\u529F\u80FD\uFF0C\u540E\u7EED\u7248\u672C\u53EF\u80FD\u4F1A\u8C03\u6574\uFF0C\u8BF7\u52FF\u8FC7\u4E8E\u4F9D\u8D56\u3002 \u8BBE\u7F6E\u7528\u6237\u6807\u7B7E\uFF0C\u591A\u4E2A\u6807\u7B7E\u4EE5\u9017\u53F7\uFF08\uFF0C\uFF09\u5206\u9694\u3002`,n);if(e!==null){let r=e.trim().length>0?e.split(/,|,/g).map(i=>({name:i})):void 0;await Dt(o,r),Yo(o,r)}})()}var Zo=w(()=>{"use strict";J();O();F();A();B();xo()});function Ue(){let o=D.filter(({likes:r})=>r>0).sort((r,i)=>i.likes-r.likes),t=o.length,n=$(`<span class="v2p-tool v2p-hover-btn"><span class="v2p-tool-icon">${oo}</span>\u70ED\u95E8\u56DE\u590D</span>`);if($(".v2p-tools").prepend(n),t<=0){n.addClass("v2p-hover-btn-disabled").contents().last().replaceWith("\u6682\u65E0\u70ED\u95E8");return}let e=go({root:W,title:`\u672C\u9875\u5171\u6709 ${o.length} \u6761\u70ED\u95E8\u56DE\u590D`,onMount:({$content:r})=>{let i=$("<div>");o.forEach(({index:a,refMemberNames:c})=>{let l=R.eq(a).clone();l.find(".v2p-controls > a:has(.v2p-control-reply)").remove(),l.find(".no").css("pointer-events","none");let s=c?.at(0);if(s){let p=D.findLast((d,v)=>v<a&&d.memberName===s);if(p){let d=$(`<div class="v2p-topic-reply-ref"><div class="v2p-topic-reply"><div class="v2p-topic-reply-member"><a href="${p.memberAvatar}"><img class="v2p-topic-reply-avatar" src="${p.memberAvatar}"><span>${p.memberName}</span></a>\uFF1A </div><div class="v2p-topic-reply-content">${uo(p.content)}</div></div></div>`);l.prepend(d)}}i.append(l)}),r.css({padding:"0 20px"}).append(i.html())},onOpen:({$container:r})=>{r.find('.cell[id^="r_"]').each((i,a)=>{Jo($(a))})}});{let r=W.find(".cell:first-of-type > span.gray"),i=r.text(),c=`<span class="count-text">${i.substring(0,i.indexOf("\u56DE\u590D")+2)}</span><span class="v2p-dot">\xB7</span>${t} \u6761\u70ED\u95E8\u56DE\u590D`;n.on("click",()=>{e.open()}),r.empty().append(c)}}function Ge(){eo.find("> td:last-of-type > .fr").each((t,n)=>{let e=$(n),r=$('<span class="v2p-controls">'),i=$(`<span class="v2p-control v2p-control-thank">${oo}</span>`),a=e.find("> .thank_area");if(a.hasClass("thanked"))i.addClass("v2p-thanked"),r.append($("<a>").append(i));else{let p=a.find("> .thank"),d=p.eq(0).removeClass("thank"),v=p.eq(1).removeClass("thank");d.html(`<span class="v2p-control v2p-hover-btn v2p-control-hide">${lt}</span>`),i.addClass("v2p-hover-btn"),v.empty().append(i),v.on("click",()=>{let m=e.closest('.cell[id^="r_"]'),f=m.find("> table .v2p-likes-box"),g=Number(f.text()),h=f.find(".v2p-icon-heart").clone();g>0?f.addClass("v2p-thanked").empty().append(h,` ${g+1}`):$(`<span class="small v2p-likes-box v2p-thanked" style="position:relative;top:-1px;"> &nbsp;&nbsp;<span class="v2p-icon-heart">${oo}</span>1 </span>`).insertAfter(m.find("> table .ago")),i.addClass("v2p-thanked"),d.hide(),v.off("click"),Ao({message:"\u2764\uFE0F \u5DF2\u611F\u8C22\u56DE\u590D"})}),r.append(d).append(v)}let l=e.find("a:last-of-type");l.find('> img[alt="Reply"]').replaceWith(`<span class="v2p-control v2p-hover-btn v2p-control-reply">${so}</span>`),r.append(l),a.remove();let s=e.find(".no").clone();e.empty().append(r,s)})}async function le(){let o=await V(),t=o["member-tag"],n=o["options"];{let e=ao({root:W,triggerType:"hover",offsetOptions:{mainAxis:10,crossAxis:-4}}),r=new Set;R.each((i,a)=>{let c=D.at(i);if(c?.id!==a.id)return;let l=$(a),{memberName:s,thanked:p}=c;ie({$cellDom:l,popupControl:e,commentData:c,onSetTagsClick:()=>{Qo(s)}}),s===Et&&l.find(".badges").append(`<div class="badge ${s===Ot?"mod":"you"}">YOU</div>`);let d=l.find(".small.fade").addClass("v2p-likes-box");d.find('img[alt="\u2764\uFE0F"]').replaceWith(`<span class="v2p-icon-heart">${oo}</span>`),p&&d.addClass("v2p-thanked"),t&&Reflect.has(t,s)&&!r.has(s)&&(Yo(s,t[s].tags),r.add(s))}),Ge(),Ue()}{let e=n.nestedReply.display;R.each((r,i)=>{let a=$(i),c=D.at(r);Jo(a);let l=c?.id===i.id?c:D.find(s=>s.id===i.id);if(l){let{refMemberNames:s,refFloors:p}=l;if(!s||s.length===0)return;for(let d of s)for(let v=r-1;v>=0;v--){let{memberName:m,floor:f}=D.at(v)||{};if(m===d){let g=p?.at(0);if(g&&g!==f){let h=D.slice(0,v).findIndex(b=>b.floor===g);if(h>=0){R.eq(h).append(i);return}}e==="indent"&&i.classList.add("v2p-indent"),R.eq(v).append(i);return}}}})}}var se=w(()=>{"use strict";Lo();zo();Uo();O();F();A();B();ae();Zo()});function pe(){let o=W.find('> .cell:not([id^="r_"])');if(o.length<=1)return;let n=o.slice(1).addClass("v2p-paging").find(".super.button");n.eq(0).addClass("v2p-prev-btn"),n.eq(1).addClass("v2p-next-btn")}var de=w(()=>{"use strict";B()});function Je(){let t=`\u56DE\u590D<kbd>${$t()==="macos"?"Cmd":"Ctrl"}+Enter</kbd>`,n=_({children:t,type:"submit"}).replaceAll(M.find('input[type="submit"]'));Bo.on("submit",()=>{n.text("\u63D0\u4EA4\u56DE\u590D\u4E2D...").prop("disabled",!0),setTimeout(()=>{n.text(t).prop("disabled",!1)},5e3)}),document.addEventListener("keydown",e=>{e.key==="Enter"&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),Bo.trigger("submit"))});{let e=$('<div class="v2p-emoji-group">'),r=$('<div class="v2p-emoji-list">'),i=$('<span class="v2p-emoji">'),a=it.map(v=>{let m=e.clone();m.append(`<div class="v2p-emoji-title">${v.title}</div>`);let f=r.clone().append(v.list.map(g=>i.clone().text(g).on("click",()=>{ho(g)})));return m.append(f),m}),c=$('<div class="v2p-emoticons-box">').append(a),l=_({children:ct}).insertAfter(n),s=$('<div class="v2p-emoji-container">').append(c).appendTo(M).on("click",()=>{Y()}),p=v=>{v.key==="Escape"&&(v.preventDefault(),d.close())};l.on("click",()=>{Y()});let d=ao({root:M,trigger:l,content:s,options:{placement:"right-end"},onOpen:()=>{$(document.body).on("keydown",p)},onClose:()=>{$(document.body).off("keydown",p)}})}M.find("#undock-button, #undock-button + a").addClass("v2p-hover-btn").css("padding","5px 4px")}function ve(){let o=$(`<div class="v2p-reply-tools-box v2p-hover-btn"><span class="v2p-reply-tools-icon">${bt}</span> \u5DE5\u5177\u7BB1 </div>`),t=$(`<div class="v2p-reply-tool-content"><div class="v2p-reply-tool v2p-reply-tool-encode">\u6587\u5B57\u8F6C Base64</div><div class="v2p-reply-tool v2p-reply-tool-img">\u4E0A\u4F20\u56FE\u7247</div></div>`),n=ao({root:M,trigger:o,content:t,offsetOptions:{mainAxis:5,crossAxis:-5}});t.find(".v2p-reply-tool-encode").on("click",()=>{Y(),n.close(),setTimeout(()=>{let c=window.prompt("\u8F93\u5165\u8981\u52A0\u5BC6\u7684\u5B57\u7B26\u4E32\uFF0C\u5B8C\u6210\u540E\u5C06\u586B\u5199\u5230\u56DE\u590D\u6846\u4E2D\uFF1A");if(c){let l=window.btoa(c);ho(l)}})});let e="\u9009\u62E9\u3001\u7C98\u8D34\u3001\u62D6\u653E\u4E0A\u4F20\u56FE\u7247\u3002",r=$(`<div class="v2p-reply-upload-bar">${e}</div>`),i=c=>{r.addClass("v2p-reply-upload-bar-disabled").text("\u6B63\u5728\u4E0A\u4F20\u56FE\u7247..."),St(c).then(l=>{ho(l)}).catch(()=>{window.alert("\u4E0A\u4F20\u56FE\u7247\u5931\u8D25")}).finally(()=>{r.removeClass("v2p-reply-upload-bar-disabled").text(e)})},a=()=>{Y(),n.close();let c=document.createElement("input");c.style.display="none",c.type="file",c.accept="image/*",c.addEventListener("change",()=>{let l=c.files?.[0];l&&i(l)}),c.click()};t.find(".v2p-reply-tool-img").on("click",()=>{a()}),M.find("> .flex-row-end").prepend(o),document.addEventListener("paste",c=>{if(!(c instanceof ClipboardEvent)||!C?.matches(":focus"))return;let l=c.clipboardData?.items;if(!l)return;let s=Array.from(l).find(p=>p.type.includes("image"));if(s){let p=s.getAsFile();p&&i(p)}}),C?.addEventListener("drop",c=>{if(c.preventDefault(),!(c instanceof DragEvent))return;let l=c.dataTransfer?.files[0];l&&i(l)}),$("#reply_content").wrap('<div class="v2p-reply-wrap">').attr("placeholder","\u7559\u4E0B\u5BF9\u4ED6\u4EBA\u6709\u5E2E\u52A9\u7684\u56DE\u590D"),$(".flex-one-row:last-of-type > .gray").text(""),r.on("click",()=>{r.hasClass("v2p-reply-upload-bar-disabled")||a()}),$(".v2p-reply-wrap").append(r),Je()}var fe=w(()=>{"use strict";J();zo();O();F();bo();A();B();xo()});var Ye={};var me=w(()=>{"use strict";F();A();B();se();Zo();de();fe();(async()=>{(await L()).openInNewTab&&eo.find("> td:nth-child(3) > strong > a").prop("target","_blank").prop("rel","noopener noreferrer");{let o=$(`<div class="cell v2p-tools"><span class="v2p-tool v2p-hover-btn v2p-tool-reply"><span class="v2p-tool-icon">${so}</span>\u56DE\u590D\u4E3B\u9898 </span><span class="v2p-tool v2p-hover-btn v2p-tool-scroll-top"><span class="v2p-tool-icon">${gt}</span>\u56DE\u5230\u9876\u90E8 </span></div>`);o.find(".v2p-tool-reply").on("click",()=>{M.find("#reply_content").trigger("focus")}),o.find(".v2p-tool-scroll-top").on("click",()=>{window.scrollTo({top:0,behavior:"smooth"})}),$('#Rightbar > .box:has("#member-activity")').addClass("v2p-tool-box").append(o)}if($(document).on("keydown",o=>{if(!o.isDefaultPrevented()&&o.key==="Escape"){let t=$("#reply_content");M.hasClass("reply-box-sticky")&&(M.removeClass("reply-box-sticky"),$("#undock-button").css("display","none")),t.trigger("blur")}}),await ce(),document.referrer!==""&&document.referrer.includes(document.location.pathname)){let t=new URL(document.location.href).searchParams.get("p");t&&t!=="1"&&document.querySelector(".topic_buttons")?.scrollIntoView({behavior:"smooth"})}await le(),pe(),ve()})()});var tt=/^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^file:\/\/\/.*$|^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/,et=typeof navigator=="object"&&navigator.userAgent.includes("Firefox/"),be=et?/^(https?|wss?):[/][/][^/]+([/].*)?$/:/^https?:[/][/][^/]+([/].*)?$/,he=/^(https?|file|ftp):[/]+/;function xe(o){if(!tt.test(o))throw new Error(o+" is an invalid pattern, it must match "+String(tt));let[,t,n,e]=o.split(/(^[^:]+:[/][/])([^/]+)?/);return t=t.replace("*",et?"(https?|wss?)":"https?").replace(/[/]/g,"[/]"),n=(n??"").replace(/^[*][.]/,"([^/]+.)*").replace(/^[*]$/,"[^/]+").replace(/[.]/g,"[.]").replace(/[*]$/g,"[^.]+"),e=e.replace(/[/]/g,"[/]").replace(/[.]/g,"[.]").replace(/[*]/g,".*"),"^"+t+n+"("+e+")?$"}function So(...o){return o.length===0?/$./:o.includes("<all_urls>")?he:o.includes("*://*/*")?be:new RegExp(o.map(t=>xe(t)).join("|"))}var nt=`:root{--zidx-serach: 100;--zidx-tabs: 10;--zidx-tools-card: 10;--zidx-reply-box: 99;--zidx-model-header: 50;--zidx-model-mask: 999;--zidx-toast: 999;--zidx-tip: 10;--zidx-popup: 99;--zidx-expand-mask: 10;--zidx-expand-btn: 20}:root body{--v2p-color-main-50: #f7f9fb;--v2p-color-main-100: #f1f5f9;--v2p-color-main-200: #e2e8f0;--v2p-color-main-300: #cbd5e1;--v2p-color-main-350: #94a3b8cc;--v2p-color-main-400: #94a3b8;--v2p-color-main-500: #64748b;--v2p-color-main-600: #475569;--v2p-color-main-700: #334155;--v2p-color-main-800: #1e293b;--v2p-color-accent-50: #ecfdf5;--v2p-color-accent-100: #d1fae5;--v2p-color-accent-200: #a7f3d0;--v2p-color-accent-300: #6ee7b7;--v2p-color-accent-400: #34d399;--v2p-color-accent-500: #10b981;--v2p-color-accent-600: #059669;--v2p-color-orange-50: #fff7ed;--v2p-color-orange-100: #ffedd5;--v2p-color-orange-400: #fb923c;--v2p-color-background: #f2f3f5;--v2p-color-foreground: var(--v2p-color-main-800);--v2p-color-font-secondary: var(--v2p-color-main-400);--v2p-color-bg-content: #fff;--v2p-color-bg-footer: var(--v2p-color-bg-content);--v2p-color-bg-hover-btn: var(--v2p-color-main-200);--v2p-color-bg-subtle: rgb(236 253 245 / 90%);--v2p-color-bg-input: var(--v2p-color-main-50);--v2p-color-bg-search: var(--v2p-color-main-100);--v2p-color-bg-search-active: var(--v2p-color-main-200);--v2p-color-bg-widget: rgb(255 255 255 / 70%);--v2p-color-bg-reply: var(--v2p-color-main-100);--v2p-color-heart: #ef4444;--v2p-color-heart-fill: #fee2e2;--v2p-color-mask: rgb(0 0 0 / 25%);--v2p-color-divider: var(--v2p-color-main-200);--v2p-color-border: var(--v2p-color-main-200);--v2p-color-border-reply: var(--v2p-color-main-300);--v2p-box-shadow: 0 3px 5px 0 rgb(0 0 0 / 4%);--v2p-widget-shadow: 0 9px 24px -3px rgb(0 0 0 / 6%), 0 4px 8px -1px rgb(0 0 0 /12%);--v2p-toast-shadow: 0 6px 16px 0 rgb(0 0 0 / 8%), 0 3px 6px -4px rgb(0 0 0 / 12%), 0 9px 28px 8px rgb(0 0 0 / 5%);--color-fade: var(--v2p-color-font-secondary);--color-gray: var(--v2p-color-font-secondary);--link-color: var(--v2p-color-foreground);--link-darker-color: var(--v2p-color-main-600);--link-hover-color: var(--v2p-color-foreground);--link-caution-color: var(--v2p-color-orange-400);--box-border-color: var(--v2p-color-border);--box-foreground-color: var(--v2p-color-foreground);--box-background-color: var(--v2p-color-bg-content);--box-background-alt-color: var(--v2p-color-main-100);--box-background-hover-color: var(--v2p-color-main-200);--button-background-color: var(--v2p-color-main-100);--button-background-hover-color: var(--v2p-color-main-200);--button-hover-color: var(--button-background-hover-color);--button-foreground-color: var(--v2p-color-main-500);--button-foreground-hover-color: var(--v2p-color-main-600);--button-border-color: var(--v2p-color-main-300);--button-border-hover-color: var(--v2p-color-main-400);color:var(--v2p-color-foreground);font-family:system-ui,sans-serif;background-color:var(--v2p-color-background)}:root body ::selection{color:var(--v2p-color-main-100);background-color:var(--v2p-color-main-700)}:root body img::selection{background-color:var(--v2p-color-main-500)}:root body:has(#Wrapper.Night){--v2p-color-main-100: #2d333b;--v2p-color-main-200: #374151;--v2p-color-main-300: #374151;--v2p-color-main-350: #6b7280cc;--v2p-color-main-400: #6b7280;--v2p-color-main-500: #9ca3af;--v2p-color-main-600: #9ca3af;--v2p-color-main-700: #d1d5db;--v2p-color-main-800: #e5e7eb;--v2p-color-main-900: #111827;--v2p-color-main-950: #030712;--v2p-color-accent-50: #064e3b;--v2p-color-accent-100: #065f46;--v2p-color-accent-200: #047857;--v2p-color-accent-300: #059669;--v2p-color-accent-400: #10b981;--v2p-color-accent-500: #34d399;--v2p-color-accent-600: #6ee7b7;--v2p-color-orange-50: #7c2d12;--v2p-color-orange-100: #9a3412;--v2p-color-orange-400: #fb923c;--v2p-color-background: #1c2128;--v2p-color-foreground: #adbac7;--v2p-color-font-secondary: var(--v2p-color-main-600);--v2p-color-bg-content: #22272e;--v2p-color-bg-subtle: rgb(6 78 59 / 30%);--v2p-color-bg-input: var(--v2p-color-background);--v2p-color-bg-search: var(--v2p-color-main-200);--v2p-color-bg-search-active: var(--v2p-color-main-200);--v2p-color-bg-widget: var(--v2p-color-bg-content);--v2p-color-bg-reply: var(--v2p-color-main-100);--v2p-color-heart: #ef4444;--v2p-color-heart-fill: #fca5a5;--v2p-color-mask: rgb(99 110 123 / 40%);--v2p-color-border: #444c56;--v2p-color-border-reply: #444c56;--v2p-box-shadow: 0 0 0 1px var(--v2p-color-border);--v2p-toast-shadow: none;--link-color: var(--v2p-color-foreground);--box-background-color: var(--v2p-color-bg-content);--box-background-alt-color: var(--v2p-color-main-100);--box-background-hover-color: var(--v2p-color-main-300);--button-background-color: #373e47;--button-background-hover-color: #444c56;--button-hover-color: var(--button-background-hover-color);--button-foreground-color: var(--v2p-color-foreground);--button-foreground-hover-color: var(--v2p-color-foreground);--button-border-color: var(--v2p-color-border);--button-border-hover-color: #768390}:root body:has(#Wrapper.Night) ::selection{color:var(--v2p-color-background);background-color:var(--v2p-color-foreground)}:root body:has(#Wrapper.Night) img::selection{background-color:var(--v2p-color-foreground)} :root{color-scheme:light}:root:has(#Wrapper.Night){color-scheme:dark}:root html,:root body{min-height:100vh}body{overflow:overlay;scrollbar-gutter:stable}body h1{font-weight:bold}body a{text-decoration:none;cursor:default}body a[href]{cursor:pointer}body a:hover{text-decoration:underline 1px;text-underline-offset:.5ex}body #Top{height:55px;background-color:var(--v2p-color-bg-content);border:none}body #Bottom{color:var(--v2p-color-font-secondary);background-color:var(--v2p-color-bg-footer);border:none}body #Wrapper{background-color:inherit;background-image:none}body #Wrapper.Night{background-color:inherit;background-image:none}body #Wrapper .content{display:flex;gap:25px}body #Leftbar{order:1;float:none}body #Main{flex:1;order:2;max-width:85vw;margin:0}body #Rightbar{order:3;float:none}body #search-container{height:30px;margin:0 30px;background-color:var(--v2p-color-bg-search);border:none;border-radius:6px}body #search-container::before{top:0;left:4px;background-size:14px 14px;opacity:.6;filter:none}body #search-container.active{background-color:var(--v2p-color-bg-search-active)}body #search-container #search-result{top:42px;z-index:var(--zidx-serach);box-shadow:0 0 15px 5px var(--box-background-hover-color)}body #search-container #search-result .search-item{color:var(--color-gray)}body .box{background-color:var(--v2p-color-bg-content);border:none;border-radius:10px;box-shadow:var(--v2p-box-shadow)}body .box .header>h1{font-weight:bold;font-size:22px}body .box .header .gray{color:var(--color-gray)}body .button{--button-hover-shadow: 0 1.8px 0 var(--button-border-color), 0 1.8px 0 var(--button-background-color)}body .button.normal,body .button.super{position:relative;display:inline-flex;gap:5px;align-items:center;height:28px;padding:0 12px;color:var(--button-foreground-color);font-weight:500;font-size:14px;font-family:inherit;line-height:28px;white-space:nowrap;text-shadow:none;background:var(--button-background-color);border:none;border-radius:6px;outline:none;box-shadow:0 1.8px 0 var(--box-background-hover-color),0 1.8px 0 var(--button-background-color);cursor:pointer;transition:color .25s,background-color .25s,box-shadow .25s;user-select:none}body .button.normal:is(:hover:enabled,:active:enabled),body .button.super:is(:hover:enabled,:active:enabled){color:var(--button-foreground-hover-color);font-weight:500;text-shadow:none;background:var(--button-hover-color);border:none;box-shadow:var(--button-hover-shadow)}body .button.normal:is(.hover_now,.disable_now),body .button.super:is(.hover_now,.disable_now){color:var(--button-foreground-color) !important;text-shadow:none !important;background:var(--button-background-color) !important;border:none !important;box-shadow:0 1.8px 0 var(--box-background-hover-color) !important,0 1.8px 0 var(--button-background-color) !important}body .button.normal:is(.disable_now,:disabled),body .button.super:is(.disable_now,:disabled){color:var(--button-foreground-color);font-weight:500;text-shadow:none;background:var(--button-background-color);box-shadow:0 1.8px 0 var(--box-background-hover-color),0 1.8px 0 var(--button-background-color);cursor:default;opacity:.8;pointer-events:none}body .button.normal kbd,body .button.super kbd{position:relative;right:-4px;padding:0 3px;font-size:90%;font-family:inherit;line-height:initial;border:1px solid var(--button-border-color);border-radius:4px}body .button.special{--button-hover-shadow: 0 1.8px 0 var(--v2p-color-accent-200), 0 1.8px 0 var(--v2p-color-accent-100);color:var(--v2p-color-accent-500);background:var(--v2p-color-accent-100);box-shadow:var(--button-hover-shadow)}body .button.special:hover,body .button.special:hover:enabled{color:var(--v2p-color-accent-600);background:var(--v2p-color-accent-100);border:none;box-shadow:var(--button-hover-shadow)}body .button a{color:inherit;text-decoration:none}body .badge{padding:2px 5px;font-weight:bold;border:1px solid var(--v2p-color-accent-400);user-select:none}body .badge:first-child{border:1px solid var(--v2p-color-accent-400);border-top-left-radius:4px;border-bottom-left-radius:4px}body .badge:last-child{border:1px solid var(--v2p-color-accent-400);border-top-right-radius:4px;border-bottom-right-radius:4px}body .badge.op{color:var(--v2p-color-accent-500);background-color:var(--v2p-color-accent-50)}body .badge.mod{color:var(--v2p-color-bg-content);background-color:var(--v2p-color-accent-400)}body .badge.you{color:var(--v2p-color-orange-400);background-color:var(--v2p-color-orange-50);border:1px solid var(--v2p-color-orange-400)}body .badge.mini{height:1.2em;padding:0 3px;font-weight:normal;font-size:12px;line-height:1}body a.node:is(:active,:link,:visited){padding:5px 6px;color:var(--v2p-color-font-secondary);font-size:13px;background-color:var(--v2p-color-main-100);border-radius:4px}body a.node:is(:active,:link,:visited):hover{color:var(--v2p-color-main-500);background-color:var(--v2p-color-main-200)}body .outdated{font-size:12px;border-color:var(--v2p-color-main-200);border-bottom:none}body .page_normal,body .page_current{user-select:none}body .page_normal:link,body .page_normal:visited,body .page_current:link,body .page_current:visited{padding:6px 9px;font-size:14px;border:none}body .page_normal:link,body .page_normal:visited{font-weight:500;background-color:var(--v2p-color-bg-content);box-shadow:0 2px 2px var(--box-background-hover-color);transition:transform .25s}body .page_normal:link:hover,body .page_normal:visited:hover{transform:scale(1.1) translateY(-2px)}body .page_current:link,body .page_current:visited{font-weight:bold;background-color:var(--box-background-hover-color);box-shadow:none}body .page_input{display:none}body .dock_area{background:var(--v2p-color-main-200)}body .member-activity-bar{background-color:var(--v2p-color-main-200)}body .member-activity-bar .member-activity-start{background-color:var(--v2p-color-accent-200)}body .member-activity-bar .member-activity-fourth{background-color:var(--v2p-color-accent-400)}body .member-activity-bar .member-activity-half{background-color:var(--v2p-color-accent-500)}body .member-activity-bar .member-activity-almost{background-color:var(--v2p-color-accent-600)}body .member-activity-bar .member-activity-done{background-color:var(--v2p-color-orange-400)}body .online{user-select:none}body #topic_supplement{height:unset;min-height:550px !important;max-height:800px !important;overflow:hidden;color:currentColor;font-size:15px;background-color:var(--v2p-color-bg-input);border:1px solid var(--button-border-color);border-radius:8px;transition:opacity .25s;resize:none;overflow-y:auto}body #topic_supplement::placeholder{color:var(--v2p-color-main-500);font-size:15px}body #topic_supplement:is(:focus,:focus-within){background-color:rgba(0,0,0,0);outline:none;box-shadow:0 0 0 1px var(--button-border-color)}body .item_hot_topic_title{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:1.4}body form textarea#topic_title{height:unset;min-height:75px !important;max-height:800px !important;overflow:hidden;color:currentColor;font-size:15px;background-color:var(--v2p-color-bg-input);border:1px solid var(--button-border-color);border-radius:8px;transition:opacity .25s;resize:none}body form textarea#topic_title::placeholder{color:var(--v2p-color-main-500);font-size:15px}body form textarea#topic_title:is(:focus,:focus-within){background-color:rgba(0,0,0,0);outline:none;box-shadow:0 0 0 1px var(--button-border-color)}body form #topic_title{height:unset;min-height:30px !important;max-height:800px !important;overflow:hidden;color:currentColor;font-size:15px;background-color:var(--v2p-color-bg-input);border:1px solid var(--button-border-color);border-radius:8px;transition:opacity .25s;resize:none}body form #topic_title::placeholder{color:var(--v2p-color-main-500);font-size:15px}body form #topic_title:is(:focus,:focus-within){background-color:rgba(0,0,0,0);outline:none;box-shadow:0 0 0 1px var(--button-border-color)}body form #topic_content{height:unset;min-height:120px !important;max-height:800px !important;overflow:hidden;color:currentColor;font-size:15px;background-color:var(--v2p-color-bg-input);border:1px solid var(--button-border-color);border-radius:8px;transition:opacity .25s;resize:none}body form #topic_content::placeholder{color:var(--v2p-color-main-500);font-size:15px}body form #topic_content:is(:focus,:focus-within){background-color:rgba(0,0,0,0);outline:none;box-shadow:0 0 0 1px var(--button-border-color)}body #syntax-selector .radio-group{padding:3px;background-color:var(--v2p-color-background)}body #syntax-selector .radio-group>input[type=radio]:checked+label{background-color:var(--v2p-color-accent-100)}body #syntax-selector .radio-group>input[type=radio]+label{font-size:13px;cursor:pointer}body #syntax-selector label{color:var(--v2p-color-foreground)}body .snow{color:var(--v2p-color-main-400)}body .orange-dot{background:var(--v2p-color-orange-400)}body form[action="/notes/new"] .inner.alt{background-color:var(--v2p-color-bg-input);border:1px solid var(--button-border-color)}body form[action="/notes/new"] .cell{background-color:rgba(0,0,0,0) !important}body a.btn_hero{border-color:var(--v2p-color-foreground)}body a.btn_hero:hover{background-color:var(--v2p-color-foreground)}body .cell_ops{background-color:rgba(0,0,0,0)}body :is(.topic_content,.reply_content,.v2p-topic-preview-content) a[href^=http]{text-decoration:underline 2px;text-underline-offset:.4ex;color:currentColor;background-color:var(--v2p-color-main-100)}body :is(.topic_content,.reply_content,.v2p-topic-preview-content) a[href^=http]:hover{background-color:var(--v2p-color-main-200)}body :is(.topic_content,.reply_content,.v2p-topic-preview-content) a[href*="v2ex.com/t"],body :is(.topic_content,.reply_content,.v2p-topic-preview-content) a[href^="/t"]{text-decoration:underline 2px;text-underline-offset:.4ex;color:var(--v2p-color-accent-500);background-color:var(--v2p-color-accent-50)}body :is(.topic_content,.reply_content,.v2p-topic-preview-content) a[href*="v2ex.com/t"]:hover,body :is(.topic_content,.reply_content,.v2p-topic-preview-content) a[href^="/t"]:hover{color:var(--v2p-color-accent-500);background-color:var(--v2p-color-accent-50)}body .select2-container--default .select2-selection--single{background-color:var(--v2p-color-background);border:1px solid var(--v2p-color-border)}body .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--v2p-color-foreground)}body .problem{color:currentColor;background-color:var(--v2p-color-orange-50);border-color:var(--v2p-color-orange-400);border-bottom:none}body .markdown_body table tr th{color:currentColor;border:1px solid var(--v2p-color-border)}body .social_label:is(:link,:visited,:active){background-color:var(--v2p-color-main-100);box-shadow:none}body .social_label:is(:link,:visited,:active):hover{background-color:var(--v2p-color-main-200)}.box .tag:link,.box .tag:visited{color:var(--v2p-color-font-secondary);font-size:12px;background-color:var(--v2p-color-main-100);border-radius:5px}.box .tag::before{color:var(--v2p-color-main-500)}.box .tag>li{opacity:.6}#Top .content{height:100%}#Top .site-nav{height:100%;padding:0}#Top .tools{display:flex;gap:8px 14px;align-items:center;justify-content:flex-end;font-weight:400;font-size:14px}#Top .tools .top{height:26px;margin-left:0;padding:0 6px;color:var(--v2p-color-main-500);line-height:26px;white-space:nowrap;border-radius:4px}#Top .tools .top:hover{color:var(--v2p-color-foreground)}#Top .tools .top:not(.v2p-hover-btn):hover{background-color:var(--v2p-color-main-100)}#Main>.box{padding:0 12px}#Main>.box .cell{padding:20px 10px;background-image:none !important}#Main .topic_buttons{display:flex;flex-wrap:wrap;align-items:center;padding:8px 0;column-gap:5px;background:none}#Main .topic_buttons .topic_stats{flex:1;order:99;float:none;margin-left:10px;padding:0 !important;font-size:12px;text-shadow:none}#Main .topic_buttons .topic_thanked{font-size:12px}#Main .topic_buttons a.tb:link{display:flex;flex-direction:row-reverse;align-items:center;padding:5px;white-space:nowrap;text-shadow:none;column-gap:5px;background:none;border-radius:4px}#Main .topic_buttons a.tb:link:not(.v2p-hover-btn){color:var(--v2p-color-font-secondary)}#Main .topic_buttons a.tb:link:hover:not(.v2p-hover-btn){color:currentcolor;background:var(--v2p-color-main-100)}#Main .subtle{background-color:var(--v2p-color-bg-subtle);border-left:3px solid var(--v2p-color-accent-200)}#Main .subtle .topic_content{font-size:15px}#Main .vote:link{color:var(--v2p-color-main-500);border-color:var(--v2p-color-main-300);border-radius:5px}#Main .vote:link:hover{box-shadow:0 2px 2px var(--v2p-color-main-200)}#Main .cell .topic-link{color:var(--v2p-color-foreground);text-decoration:none}#Main .cell .topic-link:visited{color:var(--v2p-color-font-secondary)}#Main .cell .topic_info{position:relative;display:flex;align-items:center;user-select:none;pointer-events:none}#Main .cell .topic_info::after{position:absolute;top:0;right:0;bottom:-6px;left:0;z-index:1;background-color:var(--v2p-color-bg-content);content:""}#Main .cell .topic_info .votes,#Main .cell .topic_info .node,#Main .cell .topic_info strong:first-of-type,#Main .cell .topic_info span:first-of-type{position:relative;z-index:2;pointer-events:auto}#Main .cell .topic_info a[href^="/member"]{color:var(--v2p-color-main-500);font-weight:500}#Main .cell .count_livid{display:inline-block;padding:5px 10px;font-weight:400;font-size:12px;white-space:nowrap;border-radius:5px;user-select:none;color:var(--v2p-color-main-500);background-color:var(--v2p-color-main-200)}#Main .cell .count_orange{display:inline-block;padding:5px 10px;font-weight:400;font-size:12px;white-space:nowrap;border-radius:5px;user-select:none;color:var(--v2p-color-main-100);font-weight:bold;background-color:var(--v2p-color-orange-400)}#Main .cell .item_title .topic-link{font-weight:bold}#Main .cell.item tr>td:nth-child(2){width:30px}#Main .box>.cell[id^=r]:not(:has(.cell[id^=r])) .reply_content{padding-bottom:0}#Main .cell[id^=r]{--bg-reply: var(--v2p-color-bg-content);background-color:var(--bg-reply)}#Main .cell[id^=r]:not(:has(+.cell[id^=r])){border-bottom:none}#Main .cell[id^=r]:hover>table td:last-of-type .fr a{opacity:1}#Main .cell[id^=r] .reply_content{padding-bottom:10px}#Main .cell[id^=r]>table:first-of-type td:first-of-type{width:40px}#Main .cell[id^=r]>table:first-of-type td:first-of-type .avatar{width:40px !important;height:40px !important;border-radius:5px;aspect-ratio:1}#Main .cell[id^=r]>table~.cell[id^=r]{--bg-reply: var(--v2p-color-bg-reply);position:relative;z-index:var(--zidx-expand-btn);padding:15px 0 0 15px;border:none;border-radius:0;box-shadow:-2.4px 0 var(--v2p-color-border-reply)}#Main .cell[id^=r]>table~.cell[id^=r] .cell[id^=r]{padding:0;box-shadow:none}#Main .cell[id^=r]>table~.cell[id^=r] .cell[id^=r].v2p-indent{padding-left:15px;border-left:1px solid var(--v2p-color-border-reply)}#Main .cell[id^=r]>table~.cell[id^=r] tr td:first-of-type{width:25px}#Main .cell[id^=r]>table~.cell[id^=r] tr td:first-of-type .avatar{width:25px !important;height:25px !important;border-radius:4px}#Main .cell[id^=r]>table~.cell[id^=r] tr td:nth-child(3) strong a{font-size:13px;opacity:.75}#Main .cell[id^=r]>table~.cell[id^=r] .reply_content{padding-right:5px;font-size:15px}#Main .cell[id^=r]>table td:nth-of-type(2){width:15px}#Main .cell[id^=r]>table td:last-of-type a.dark{color:var(--v2p-color-main-600);text-decoration:none}#Main .cell[id^=r]>table td:last-of-type a.dark:hover{text-decoration:none}#Main .cell[id^=r]>table td:last-of-type .fr{position:relative;top:-3px;user-select:none}#Main .cell[id^=r]>table td:last-of-type .fr a{opacity:0}#Main .cell[id^=r]>table td:last-of-type .fr+.sep3{height:0}#Main .cell[id^=r]:last-of-type{border:none}#Main .cell[id^=r] .no{position:relative;top:-4px;padding:5px 10px;color:var(--v2p-color-main-350);font-size:12px;background-color:rgba(0,0,0,0);border-radius:5px;user-select:none}#Main #Tabs{position:sticky;top:0;z-index:var(--zidx-tabs);display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;padding:10px;background-color:var(--v2p-color-bg-content);border-bottom:1px solid var(--box-border-color);user-select:none}#Main #Tabs .tab{margin:0}#Main #SecondaryTabs{padding:10px;background-color:var(--v2p-color-main-100);border-radius:5px}#Main .topic_content,#Main .reply_content{font-size:15.4px}#Main .topic_content a[href^="/member"],#Main .reply_content a[href^="/member"]{position:relative;bottom:1px;color:var(--v2p-color-main-500);font-size:13px;text-decoration:underline;text-underline-offset:.4ex}#Main .thank_area{font-size:12px}#Main .tab{background-color:rgba(0,0,0,0);user-select:none}#Main .tab:not(.v2p-hover-btn):hover{background-color:var(--v2p-color-main-100)}#Main .tab_current{color:var(--box-background-color);background-color:var(--box-foreground-color);user-select:none}#Main #reply-box.reply-box-sticky{bottom:20px;z-index:var(--zidx-reply-box);margin:0 -10px;padding:0 22px;overflow:visible;border:none;border-radius:10px;outline:2px solid var(--v2p-color-main-200)}#Main #reply-box .v2p-reply-wrap #reply_content{background-color:rgba(0,0,0,0);border:none}#Main #reply-box .v2p-reply-wrap #reply_content:focus{background-color:var(--v2p-color-bg-content);outline:none}#Main #reply-box .v2p-reply-wrap #reply_content::placeholder{color:var(--v2p-color-main-500);font-size:14px}#Main #reply-box .flex-one-row:last-of-type{flex-direction:row-reverse;gap:10px;justify-content:flex-start}#Main #reply-box .flex-one-row:last-of-type .gray{margin-right:auto}#Main #reply-box>.cell{font-size:12px}#Main #reply-box>.cell.flex-one-row{min-height:45px;padding:0 10px;border:none}#Main #reply-box>.cell.flex-row-end{padding:12px 10px;border:none}#Main #reply-box>.cell:has(form){padding-top:0}#Main #no-comments-yet{color:var(--color-gray);border-color:var(--color-gray)}#Main #notifications .cell[id^=n]:hover .node{opacity:1}#Main #notifications .cell[id^=n] .node{opacity:0}#Main #notifications .cell[id^=n] .payload{color:var(--v2p-color-foreground);background-color:var(--v2p-color-main-100)}#Main .cell_tabs .cell_tab_current{font-weight:bold;border-color:var(--v2p-color-foreground)}#Main .cell_tabs .cell_tab{color:var(--v2p-color-foreground)}#Main .cell_tabs .cell_tab:hover{border-color:var(--v2p-color-main-300)}#Rightbar #money a.balance_area:is(:link,:visited){display:flex;gap:3px;align-items:center;color:var(--v2p-color-foreground);font-weight:600;text-shadow:none;background:var(--v2p-color-main-100)}#Rightbar #money a.balance_area:is(:link,:visited):hover{background:var(--v2p-color-main-200)}#Rightbar .cell:has(.light-toggle){font-size:13px}#Rightbar a.dark:is(:link,:active,:visited,:hover){color:var(--v2p-color-main-500)}#Rightbar a.dark:is(:link,:active,:visited,:hover):hover{color:var(--v2p-color-main-600)}#Bottom{position:sticky;top:100%}#Bottom a.dark{font-weight:400;font-size:13px}#Bottom a.dark:is(:link,:active,:visited,:hover){color:var(--v2p-color-main-500)} \uFEFFbody{position:relative}body.v2p-modal-open{overflow:hidden}body .button.v2p-prev-btn,body .button.v2p-next-btn{padding:0 15px}.v2p-hover-btn{position:relative;z-index:1;margin:0;white-space:nowrap;text-decoration:none;background:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:color .2s;user-select:none}.v2p-hover-btn::before{position:absolute;top:0;right:-5px;bottom:0;left:-5px;z-index:-1;background-color:var(--v2p-color-bg-hover-btn);border-radius:5px;transform:scale(0.65);opacity:0;transition:background-color .2s,color .2s,transform .2s,opacity .2s;content:""}.v2p-hover-btn:hover{text-decoration:none}.v2p-hover-btn:hover::before{transform:scale(1);opacity:1}.v2p-hover-btn-disabled{opacity:.8;pointer-events:none}.v2p-icon-heart{display:inline-flex;width:16px;height:16px;color:var(--v2p-color-heart)}.v2p-icon-heart svg{fill:var(--v2p-color-heart-fill)}#Main .cell:hover .v2p-topic-preview-btn{visibility:visible}.v2p-tool-box{position:sticky;top:20px;z-index:var(--zidx-tools-card)}.v2p-tool-box .v2p-tools{display:grid;grid-auto-rows:auto;grid-template-columns:repeat(3, 1fr);gap:8px 15px;align-items:center;justify-content:center;color:var(--v2p-color-main-600);font-size:12px}.v2p-tool{display:inline-flex;gap:0 5px;align-items:center;padding:3px 0}.v2p-tool .v2p-tool-icon{width:16px;height:16px}.v2p-topic-preview-btn{position:relative;top:-1px;margin-left:10px;color:var(--button-foreground-color);font-size:14px;background-color:var(--button-hover-color);border:none;border-radius:3px;outline:none;visibility:hidden;cursor:pointer}.v2p-topic-preview{padding:25px;line-height:1.4}.v2p-tp-info{display:inline-flex;gap:20px;align-items:center;margin-bottom:10px;padding:5px 10px;overflow:hidden;font-size:13px;background-color:var(--v2p-color-main-200);border-radius:5px}.v2p-tp-member{display:inline-flex;gap:5px;align-items:center;font-weight:bold}.v2p-tp-avatar{width:20px;height:20px;border-radius:3px}a.v2p-topic-preview-title-link:hover{text-decoration:underline 2px;text-underline-offset:.4ex}.v2p-dot{margin:0 8px;font-weight:800;font-size:20px;font-size:15px}.v2p-paging{background:none !important}.v2p-paging.cell{border-bottom:none}.v2p-model-mask{position:fixed;z-index:var(--zidx-model-mask);padding:60px;overflow:hidden;overflow-y:auto;background-color:var(--v2p-color-mask);inset:0}.v2p-popup{position:absolute;top:0;left:0;z-index:var(--zidx-popup);color:var(--v2p-color-main-600);font-size:14px;background:var(--v2p-color-bg-widget);border:1px solid var(--box-border-color);border-radius:8px;box-shadow:var(--v2p-widget-shadow);backdrop-filter:blur(16px)}.v2p-popup-content{width:max-content;overflow-y:auto}.v2p-toast{position:fixed;top:50px;left:50%;z-index:var(--zidx-toast);padding:10px 15px;color:var(--v2p-color-foreground);font-size:14px;background:var(--v2p-color-bg-widget);border:3px solid var(--box-border-color);border-radius:8px;box-shadow:var(--v2p-toast-shadow);transform:translateX(-50%);backdrop-filter:blur(16px)}.v2p-model-main{position:relative;box-sizing:border-box;width:800px;height:100%;margin:0 auto;overflow-x:hidden;overflow-y:auto;background-color:var(--v2p-color-bg-content);border-radius:10px}.v2p-model-header{position:sticky;top:0;right:0;left:0;z-index:var(--zidx-model-header);display:flex;gap:0 20px;align-items:center;padding:15px 20px 20px;background-color:var(--v2p-color-bg-content);border-bottom:1px solid var(--box-border-color)}.v2p-model-title{padding:2px 0;overflow:hidden;font-weight:bold;font-size:16px;white-space:nowrap;text-overflow:ellipsis}.v2p-model-actions{display:flex;gap:0 10px;align-items:center;margin-left:auto}.v2p-model-loading{display:flex;align-items:center;justify-content:center;padding:50px 0;color:currentcolor}.v2p-model-loading .v2p-icon-loading{position:relative;right:-13px;width:50px}.v2p-no-pat{padding:30px 10px;font-size:15px;text-align:center}.v2p-no-pat .v2p-no-pat-title{font-weight:bold;font-size:16px}.v2p-no-pat .v2p-no-pat-desc{display:flex;align-items:center;justify-content:center;margin-top:15px}.v2p-no-pat .v2p-no-pat-block{display:inline-flex;align-items:center;margin:0 5px;padding:2px 10px;background-color:var(--v2p-color-main-100);border-radius:2px}.v2p-no-pat .v2p-no-pat-steps{display:flex;flex-wrap:wrap;gap:20px;max-width:800px;margin-top:20px;padding:20px;background-color:var(--v2p-color-main-100);border-radius:10px}.v2p-no-pat .v2p-no-pat-step{flex:1}.v2p-no-pat .v2p-no-pat-img{width:100%;border-radius:8px;box-shadow:var(--v2p-widget-shadow)}.v2p-no-pat .v2p-icon-logo{width:15px;height:15px}.v2p-likes-box{position:relative;top:3px;display:inline-flex;align-items:center;column-gap:5px;user-select:none}.v2p-likes-box.v2p-thanked{color:var(--v2p-color-heart);font-weight:bold;opacity:.8}.v2p-likes-box.v2p-thanked .v2p-icon-heart svg{fill:var(--v2p-color-heart)}@supports not selector(:has(*)){#Main .cell[id^=r]>table:hover .v2p-controls{opacity:1}}@supports selector(:has(*)){#Main .cell[id^=r]:not(:has(.cell:hover))>table:hover .v2p-controls{opacity:1}}.v2p-controls{display:inline-flex;align-items:center;margin-right:15px;font-size:12px;column-gap:15px;opacity:0}.v2p-controls>a{text-decoration:none}.v2p-control{position:relative;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:4px 0;color:var(--v2p-color-main-500)}.v2p-control:hover{color:var(--v2p-color-main-600)}.v2p-control.v2p-thanked{color:var(--v2p-color-heart);cursor:default}.v2p-control::after{z-index:var(--zidx-tip);width:max-content;min-width:30px;padding:2px 5px;overflow:hidden;color:var(--v2p-color-foreground);font-size:12px;white-space:nowrap;text-align:center;background-color:var(--v2p-color-bg-content);border-radius:4px;box-shadow:var(--v2p-widget-shadow);pointer-events:none;position:absolute;top:-8px;transform:translateY(-100%);opacity:0}.v2p-control:hover::after{opacity:1}.v2p-control.v2p-control-hide::after{content:"\u9690\u85CF\u56DE\u590D"}.v2p-control.v2p-control-thank::after{content:"\u611F\u8C22\u56DE\u590D"}.v2p-control.v2p-control-thank.v2p-thanked::after{content:"\u5DF2\u611F\u8C22"}.v2p-control.v2p-control-reply::after{content:"\u56DE\u590D"}.topic_buttons .v2p-tb.v2p-hover-btn{color:var(--v2p-color-main-400)}.topic_buttons .v2p-tb.v2p-hover-btn:hover{color:currentColor}.topic_buttons .v2p-tb.v2p-hover-btn::after{display:none}.v2p-tb-icon{width:15px;height:15px}.v2p-emoji-container{max-height:285px;padding:15px 18px;overflow-y:auto;color:var(--v2p-color-main-600)}.v2p-member-card{max-width:300px;max-height:285px;padding:12px;font-size:13px;text-align:left}.v2p-member-card .v2p-info{display:flex;gap:15px}.v2p-member-card .v2p-info-right{padding:2px 0}.v2p-member-card .v2p-avatar-box{width:73px;height:73px;overflow:hidden;background-color:var(--button-background-hover-color);border-radius:5px}.v2p-member-card .v2p-username{font-weight:bold;font-size:16px}.v2p-member-card .v2p-username.v2p-loading{width:65px;height:20px}.v2p-member-card .v2p-no{margin:5px 0}.v2p-member-card .v2p-no,.v2p-member-card .v2p-created-date{width:160px;height:16px}.v2p-member-card .v2p-loading{background-color:var(--button-background-hover-color);border-radius:6px}.v2p-member-card .v2p-bio{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-height:1.4;margin-top:10px}.v2p-member-card-actions{padding:10px 0 0}.v2p-reply-tags{display:inline-block;margin-bottom:2px;padding:0 3px;font-size:12px;background-color:var(--v2p-color-main-200);border-radius:3px;cursor:pointer}.v2p-emoticons-box{font-size:15px}.v2p-emoji-group~.v2p-emoji-group{margin-top:10px}.v2p-emoji-title{margin:0 0 10px;font-size:14px;text-align:left}.v2p-emoji-list{display:grid;grid-template-columns:repeat(8, 1fr);gap:6px;font-size:20px}.v2p-emoji{padding:2px;border-radius:4px;cursor:pointer}.v2p-emoji:hover{background-color:var(--box-background-hover-color)}.v2p-decode{position:relative;padding:2px 4px;color:var(--v2p-color-orange-400);font-size:13px;text-decoration:none;background-color:var(--v2p-color-orange-50);cursor:copy}.v2p-decode:hover{color:var(--v2p-color-orange-400);background-color:var(--v2p-color-orange-50)}.v2p-decode:hover::after{opacity:1}.v2p-decode::after{z-index:var(--zidx-tip);width:max-content;min-width:30px;padding:2px 5px;overflow:hidden;color:var(--v2p-color-foreground);font-size:12px;white-space:nowrap;text-align:center;background-color:var(--v2p-color-bg-content);border-radius:4px;box-shadow:var(--v2p-widget-shadow);pointer-events:none;position:absolute;top:-8px;left:50%;transform:translate(-50%, -100%);opacity:0;content:attr(data-title)}.v2p-reply-content{position:relative}.v2p-reply-content .v2p-expand-btn.normal.button{position:absolute;bottom:5px;left:50%;z-index:var(--zidx-expand-btn);font-weight:400;font-size:12px;transform:translateX(-50%)}.v2p-reply-content.v2p-collapsed::before{position:absolute;right:0;bottom:0;left:0;z-index:var(--zidx-expand-mask);height:130px;background:linear-gradient(to top, var(--bg-reply) 10px, transparent);content:"";pointer-events:none}.v2p-reply-content.v2p-collapsed .v2p-expand-btn.normal.button{bottom:10px;transform:translateX(-50%)}.cell[id^=r] .cell[id^=r] .v2p-reply-content .v2p-expand-btn.normal.button{color:var(--button-foreground-color);background:var(--button-hover-color);box-shadow:var(--button-hover-shadow)}.v2p-empty-content{display:flex;flex-direction:column;align-items:center;padding-top:20px;color:var(--v2p-color-font-secondary);font-size:14px}.v2p-empty-content .v2p-text-emoji{font-size:20px}.v2p-topic-reply-ref{margin:0 -10px 15px;padding:5px 10px;color:var(--v2p-color-main-500);font-size:13px;background-color:var(--v2p-color-main-100);border-radius:5px}.v2p-topic-reply-box{margin-top:50px;padding:30px 0;color:var(--v2p-color-main-500);font-size:14px;line-height:1.55;border-top:1px solid var(--v2p-color-divider)}.v2p-topic-reply~.v2p-topic-reply{margin-top:15px}.v2p-topic-reply-member{display:inline;color:var(--v2p-color-main-700);font-weight:bold}.v2p-topic-reply-avatar{position:relative;top:2px;width:15px;height:15px;margin-right:5px;object-fit:cover;overflow:hidden;background-color:var(--v2p-color-main-200);border-radius:2px}.v2p-topic-reply-content{display:inline}.v2p-more-reply-tip{margin-top:20px;color:var(--v2p-color-main-400);font-size:13px;text-align:center}.v2p-reply-wrap{height:unset;min-height:140px !important;max-height:800px !important;overflow:hidden;color:currentColor;font-size:15px;background-color:var(--v2p-color-bg-input);border:1px solid var(--button-border-color);border-radius:8px;transition:opacity .25s;resize:none}.v2p-reply-wrap::placeholder{color:var(--v2p-color-main-500);font-size:15px}.v2p-reply-wrap:is(:focus,:focus-within){background-color:rgba(0,0,0,0);outline:none;box-shadow:0 0 0 1px var(--button-border-color)}.v2p-reply-upload-bar{padding:6px 10px;color:var(--v2p-color-main-500);font-size:12px;background-color:var(--v2p-color-bg-input);border-top:1px dashed var(--v2p-color-main-300);cursor:pointer}.v2p-reply-upload-bar-disabled{pointer-events:none}.v2p-footer{position:relative;display:flex;align-items:center;justify-content:space-between;padding:35px 10px;color:var(--v2p-color-main-500);font-size:12px;border-top:1px solid var(--v2p-color-divider)}.v2p-footer a:hover{text-decoration:none}.v2p-footer-logo{--logo-size: 16px;position:absolute;top:calc(-1*(var(--logo-size) + 5px)/2);left:50%;display:inline-flex;box-sizing:border-box;padding:3px 25px;background-color:var(--v2p-color-bg-footer);transform:translateX(-50%)}.v2p-footer-logo svg{width:var(--logo-size)}.v2p-footer-text{display:inline-flex;align-items:center;justify-content:flex-start;width:240px;color:var(--v2p-color-font-secondary)}.v2p-footer-links{display:inline-flex;gap:0 8px;align-items:center}.v2p-footer-link{padding:4px 5px;color:currentColor}.v2p-footer-brand{display:inline-flex;gap:0 15px;align-items:center;justify-content:flex-end;width:240px}.v2p-footer-brand>span{width:20px}.v2p-color-mode-toggle{width:22px;height:22px;opacity:.8}.v2p-color-mode-toggle:hover{opacity:1}.v2p-reply-tools-box{position:relative;display:inline-flex;gap:0 5px;align-items:center;margin-right:auto;padding:2px 0;font-size:13px}.v2p-reply-tools-icon{display:inline-block;width:20px;height:20px}.v2p-reply-tool-content{padding:5px;border-radius:5px}.v2p-reply-tool{padding:5px 10px;white-space:nowrap;border-radius:4px;cursor:pointer}.v2p-reply-tool:hover{background-color:var(--v2p-color-main-200)} `;var Qe=So("https://v2ex.com/*","https://www.v2ex.com/*"),Ze=So("https://v2ex.com/t/*","https://www.v2ex.com/t/*"),ue=window.location.href;(async()=>(Qe.test(ue)&&($(`<style type='text/css'>${nt}</style>`).appendTo("head"),Promise.resolve().then(()=>yt()),Promise.resolve().then(()=>(Nt(),$e))),Ze.test(ue)&&await Promise.resolve().then(()=>(me(),Ye))))();