MWITools

Tools for MilkyWayIdle. Includes feedback, action projections, market insights, asset history, DPS/HPS statistics, inventory tools, tasks, and guild utilities.

נכון ליום 12-08-2026. ראה הגרסה האחרונה.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         MWITools
// @namespace    http://tampermonkey.net/
// @version      26.4
// @description  Tools for MilkyWayIdle. Includes feedback, action projections, market insights, asset history, DPS/HPS statistics, inventory tools, tasks, and guild utilities.
// @author       bot7420, shykai, Stella
// @license      CC-BY-NC-SA-4.0
// @match        https://www.milkywayidle.com/*
// @match        https://test.milkywayidle.com/*
// @match        https://www.milkywayidlecn.com/*
// @match        https://amvoidguy.github.io/MWICombatSimulatorTest/*
// @match        https://shykai.github.io/MWICombatSimulatorTest/dist/*
// @match        https://mooneycalc.netlify.app/*
// @match        https://mooneycalc.vercel.app/*
// @grant        GM_addStyle
// @grant        GM.xmlHttpRequest
// @grant        GM_xmlhttpRequest
// @grant        GM_notification
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_info
// @grant        unsafeWindow
// @connect      raw.githubusercontent.com
// @connect      feedback.43.167.210.211.sslip.io
// @connect      mwi-guild.43.167.210.211.sslip.io
// @require      https://milk.43.167.210.211.sslip.io/scripts/vendor/chart.js-4.4.3.umd.min.js#sha256-1G2Xof0CLF+yn6L0Xry8MiAtc67r8HbOX3JI9UmPx9c=
// @require      https://milk.43.167.210.211.sslip.io/scripts/vendor/hammerjs-2.0.8.min.js#sha256-eVNjHw5UeU0jUqPPpZHAkU1z4U+QFBBY488WvueTm88=
// @require      https://milk.43.167.210.211.sslip.io/scripts/vendor/chartjs-plugin-zoom-2.0.1.min.js#sha256-UDxwmAK+KFxnav4Dab9fcgZtCwwjkpGIwxWPNcAyepw=
// ==/UserScript==

// 特别感谢:ColaCola、Zhulimoon、400badrequest、Q7

/*
    【遇到MWITools插件有问题时的解决方法】

    请先务必排查以下问题:
    1. 你的MWITools插件已更新至最新版(greasyfork网站有可能被墙,请开梯子更新;或者到QQ群文件里下载后手动导入或复制粘贴代码);
    2. 你没有重复安装插件(有的人装了新版本插件,但还有个旧版本的没有删除,在同时运行;或者有的人在同一个浏览器里装了两个油猴类浏览器插件);
    3. 安装或更新完插件后,以及在游戏设置里切换过语言后,必须刷新游戏网页;
    4. 请在电脑上、使用最新版本Chrome浏览器、使用最新版本TamperMonkey(油猴)插件尝试(作者精力有限,做不到逐个适配各种环境、为每个人定位环境问题,
       遇到问题时请优先使用上述主流环境。如果你一定要使用旧版本或其它品牌的浏览器或油猴插件,遇到问题请优先自行摸索如何解决,作者很可能无法解决你的问题。
       手机使用问题很多,作者不定位手机上问题。问问群友用什么浏览器好使,多换几个浏览器试试。苹果手机建议尝试focus浏览器。)。

    如果仍有问题,请私聊作者具体问题是什么、复现问题的具体步骤、最好附带截图;
    报错日志是定位问题的快速甚至唯一方法,请打开浏览器开发者工具查看终端,刷新游戏网页,复现遇到的问题,截图发给作者。
*/
(()=>{var tg=Object.create;var Ds=Object.defineProperty;var ag=Object.getOwnPropertyDescriptor;var ng=Object.getOwnPropertyNames;var ig=Object.getPrototypeOf,rg=Object.prototype.hasOwnProperty;var s=(e,t)=>Ds(e,"name",{value:t,configurable:!0});var og=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(a){throw t=0,a}};var sg=(e,t,a,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ng(t))!rg.call(e,i)&&i!==a&&Ds(e,i,{get:()=>t[i],enumerable:!(n=ag(t,i))||n.enumerable});return e};var ug=(e,t,a)=>(a=e!=null?tg(ig(e)):{},sg(t||!e||!e.__esModule?Ds(a,"default",{value:e,enumerable:!0}):a,e));var dl=og((P7,uo)=>{var qs=(function(){var e=String.fromCharCode,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",n={};function i(r,c){if(!n[r]){n[r]={};for(var l=0;l<r.length;l++)n[r][r.charAt(l)]=l}return n[r][c]}s(i,"getBaseValue");var o={compressToBase64:s(function(r){if(r==null)return"";var c=o._compress(r,6,function(l){return t.charAt(l)});switch(c.length%4){default:case 0:return c;case 1:return c+"===";case 2:return c+"==";case 3:return c+"="}},"compressToBase64"),decompressFromBase64:s(function(r){return r==null?"":r==""?null:o._decompress(r.length,32,function(c){return i(t,r.charAt(c))})},"decompressFromBase64"),compressToUTF16:s(function(r){return r==null?"":o._compress(r,15,function(c){return e(c+32)})+" "},"compressToUTF16"),decompressFromUTF16:s(function(r){return r==null?"":r==""?null:o._decompress(r.length,16384,function(c){return r.charCodeAt(c)-32})},"decompressFromUTF16"),compressToUint8Array:s(function(r){for(var c=o.compress(r),l=new Uint8Array(c.length*2),d=0,m=c.length;d<m;d++){var p=c.charCodeAt(d);l[d*2]=p>>>8,l[d*2+1]=p%256}return l},"compressToUint8Array"),decompressFromUint8Array:s(function(r){if(r==null)return o.decompress(r);for(var c=new Array(r.length/2),l=0,d=c.length;l<d;l++)c[l]=r[l*2]*256+r[l*2+1];var m=[];return c.forEach(function(p){m.push(e(p))}),o.decompress(m.join(""))},"decompressFromUint8Array"),compressToEncodedURIComponent:s(function(r){return r==null?"":o._compress(r,6,function(c){return a.charAt(c)})},"compressToEncodedURIComponent"),decompressFromEncodedURIComponent:s(function(r){return r==null?"":r==""?null:(r=r.replace(/ /g,"+"),o._decompress(r.length,32,function(c){return i(a,r.charAt(c))}))},"decompressFromEncodedURIComponent"),compress:s(function(r){return o._compress(r,16,function(c){return e(c)})},"compress"),_compress:s(function(r,c,l){if(r==null)return"";var d,m,p={},b={},f="",g="",h="",_=2,y=3,w=2,k=[],C=0,x=0,T;for(T=0;T<r.length;T+=1)if(f=r.charAt(T),Object.prototype.hasOwnProperty.call(p,f)||(p[f]=y++,b[f]=!0),g=h+f,Object.prototype.hasOwnProperty.call(p,g))h=g;else{if(Object.prototype.hasOwnProperty.call(b,h)){if(h.charCodeAt(0)<256){for(d=0;d<w;d++)C=C<<1,x==c-1?(x=0,k.push(l(C)),C=0):x++;for(m=h.charCodeAt(0),d=0;d<8;d++)C=C<<1|m&1,x==c-1?(x=0,k.push(l(C)),C=0):x++,m=m>>1}else{for(m=1,d=0;d<w;d++)C=C<<1|m,x==c-1?(x=0,k.push(l(C)),C=0):x++,m=0;for(m=h.charCodeAt(0),d=0;d<16;d++)C=C<<1|m&1,x==c-1?(x=0,k.push(l(C)),C=0):x++,m=m>>1}_--,_==0&&(_=Math.pow(2,w),w++),delete b[h]}else for(m=p[h],d=0;d<w;d++)C=C<<1|m&1,x==c-1?(x=0,k.push(l(C)),C=0):x++,m=m>>1;_--,_==0&&(_=Math.pow(2,w),w++),p[g]=y++,h=String(f)}if(h!==""){if(Object.prototype.hasOwnProperty.call(b,h)){if(h.charCodeAt(0)<256){for(d=0;d<w;d++)C=C<<1,x==c-1?(x=0,k.push(l(C)),C=0):x++;for(m=h.charCodeAt(0),d=0;d<8;d++)C=C<<1|m&1,x==c-1?(x=0,k.push(l(C)),C=0):x++,m=m>>1}else{for(m=1,d=0;d<w;d++)C=C<<1|m,x==c-1?(x=0,k.push(l(C)),C=0):x++,m=0;for(m=h.charCodeAt(0),d=0;d<16;d++)C=C<<1|m&1,x==c-1?(x=0,k.push(l(C)),C=0):x++,m=m>>1}_--,_==0&&(_=Math.pow(2,w),w++),delete b[h]}else for(m=p[h],d=0;d<w;d++)C=C<<1|m&1,x==c-1?(x=0,k.push(l(C)),C=0):x++,m=m>>1;_--,_==0&&(_=Math.pow(2,w),w++)}for(m=2,d=0;d<w;d++)C=C<<1|m&1,x==c-1?(x=0,k.push(l(C)),C=0):x++,m=m>>1;for(;;)if(C=C<<1,x==c-1){k.push(l(C));break}else x++;return k.join("")},"_compress"),decompress:s(function(r){return r==null?"":r==""?null:o._decompress(r.length,32768,function(c){return r.charCodeAt(c)})},"decompress"),_decompress:s(function(r,c,l){var d=[],m,p=4,b=4,f=3,g="",h=[],_,y,w,k,C,x,T,A={val:l(0),position:c,index:1};for(_=0;_<3;_+=1)d[_]=_;for(w=0,C=Math.pow(2,2),x=1;x!=C;)k=A.val&A.position,A.position>>=1,A.position==0&&(A.position=c,A.val=l(A.index++)),w|=(k>0?1:0)*x,x<<=1;switch(m=w){case 0:for(w=0,C=Math.pow(2,8),x=1;x!=C;)k=A.val&A.position,A.position>>=1,A.position==0&&(A.position=c,A.val=l(A.index++)),w|=(k>0?1:0)*x,x<<=1;T=e(w);break;case 1:for(w=0,C=Math.pow(2,16),x=1;x!=C;)k=A.val&A.position,A.position>>=1,A.position==0&&(A.position=c,A.val=l(A.index++)),w|=(k>0?1:0)*x,x<<=1;T=e(w);break;case 2:return""}for(d[3]=T,y=T,h.push(T);;){if(A.index>r)return"";for(w=0,C=Math.pow(2,f),x=1;x!=C;)k=A.val&A.position,A.position>>=1,A.position==0&&(A.position=c,A.val=l(A.index++)),w|=(k>0?1:0)*x,x<<=1;switch(T=w){case 0:for(w=0,C=Math.pow(2,8),x=1;x!=C;)k=A.val&A.position,A.position>>=1,A.position==0&&(A.position=c,A.val=l(A.index++)),w|=(k>0?1:0)*x,x<<=1;d[b++]=e(w),T=b-1,p--;break;case 1:for(w=0,C=Math.pow(2,16),x=1;x!=C;)k=A.val&A.position,A.position>>=1,A.position==0&&(A.position=c,A.val=l(A.index++)),w|=(k>0?1:0)*x,x<<=1;d[b++]=e(w),T=b-1,p--;break;case 2:return h.join("")}if(p==0&&(p=Math.pow(2,f),f++),d[T])g=d[T];else if(T===b)g=y+y.charAt(0);else return null;h.push(g),d[b++]=y+g.charAt(0),p--,y=g,p==0&&(p=Math.pow(2,f),f++)}},"_decompress")};return o})();typeof define=="function"&&define.amd?define(function(){return qs}):typeof uo<"u"&&uo!=null?uo.exports=qs:typeof angular<"u"&&angular!=null&&angular.module("LZString",[]).factory("LZString",function(){return qs})});function cg(e){return String(e?.character?.id??e?.character?.characterID??e?.characterID??e?.characterSkills?.[0]?.characterID??"")}s(cg,"resolveCharacterId");function pc(){let e=new Set,t=!1,a=s(n=>(typeof n!="function"||(t?n():e.add(n)),n),"add");return{add:a,event(n,i,o,r){return n?.addEventListener?.(i,o,r),a(()=>n?.removeEventListener?.(i,o,r)),o},observer(n,i,o){return n.observe(i,o),a(()=>n.disconnect()),n},interval(n,i){let o=setInterval(n,i);return a(()=>clearInterval(o)),o},timeout(n,i){let o=setTimeout(()=>{e.delete(r),n()},i),r=s(()=>clearTimeout(o),"cancel");return a(r),o},cleanup(){if(!t){t=!0;for(let n of[...e].reverse())try{n()}catch(i){console.error(u.config.isZH?"[MWITools] 功能清理失败":"[MWITools] Feature cleanup failed",i)}e.clear()}}}}s(pc,"createCleanupScope");var Da=new Map,zt=new Map,Ps=new Set,gc=!1,kn="";function no(e){let t=u.features.getStatus(e);for(let a of Ps)try{a(e,t)}catch(n){console.error(u.config.isZH?"[MWITools] 功能状态监听器执行失败":"[MWITools] Feature status listener failed",n)}}s(no,"emitFeatureStatus");function io(e,t,a=null){let n=zt.get(e)??{};zt.set(e,{...n,status:t,error:a}),no(e)}s(io,"setFeatureStatus");function Ls(e){return e.setting?u.settings.get?.(e.setting)??e.defaultEnabled!==!1:e.defaultEnabled!==!1}s(Ls,"isFeatureEnabled");async function Sn(e){let t=Da.get(e);if(!t)return!1;let a=zt.get(e);if(a?.status==="active"||a?.status==="initializing")return!0;if(!Ls(t))return io(e,"disabled"),!1;if(t.scope==="character"&&!kn)return io(e,"waiting"),!1;for(let i of t.dependsOn??[])if(!await Sn(i))return io(e,"waiting"),!1;io(e,"initializing");let n=pc();zt.set(e,{...zt.get(e),status:"initializing",scope:n,instanceCleanup:null});try{let i=await t.initialize?.({runtime:u,scope:n,characterId:kn||null}),o=zt.get(e)??{};return zt.set(e,{...o,status:"active",error:null,scope:n,instanceCleanup:typeof i=="function"?i:null}),no(e),!0}catch(i){return n.cleanup(),zt.set(e,{status:"failed",error:i,scope:null,instanceCleanup:null}),console.error(u.config.isZH?`[MWITools] 功能 ${e} 启动失败`:`[MWITools] Failed to initialize feature ${e}`,i),no(e),!1}}s(Sn,"initializeFeature");async function Jn(e){for(let[n,i]of Da)i.dependsOn?.includes(e)&&await Jn(n);let t=Da.get(e),a=zt.get(e);if(a?.status==="active"||a?.status==="failed"){try{await a.instanceCleanup?.(),await t?.cleanup?.({runtime:u,characterId:kn})}catch(n){console.error(u.config.isZH?`[MWITools] 功能 ${e} 清理失败`:`[MWITools] Failed to clean up feature ${e}`,n)}a.scope?.cleanup()}return zt.set(e,{status:"disabled",error:null,scope:null,instanceCleanup:null}),no(e),!0}s(Jn,"disableFeature");var u={api:{},config:{},settings:{},data:{},state:{},starts:[],messageHandlers:new Map,createCleanupScope:pc,registerStart(e,t){this.starts.push({name:e,start:t})},start(){for(let e of this.starts)try{e.start()?.catch?.(a=>console.error(u.config.isZH?`[MWITools] 启动钩子执行失败:${e.name}`:`[MWITools] Startup hook failed: ${e.name}`,a))}catch(t){console.error(u.config.isZH?`[MWITools] 启动钩子执行失败:${e.name}`:`[MWITools] Startup hook failed: ${e.name}`,t)}return gc=!0,this.features.initializeAll()},onMessage(e,t){let a=this.messageHandlers.get(e)??[];return a.push(t),this.messageHandlers.set(e,a),()=>{let n=this.messageHandlers.get(e)??[];this.messageHandlers.set(e,n.filter(i=>i!==t))}},dispatchMessage(e,t){let a=[...this.messageHandlers.get(e.type)??[],...this.messageHandlers.get("*")??[]];for(let n of a)try{n(e,t)}catch(i){console.error(u.config.isZH?`[MWITools] 消息 ${e.type} 的处理器执行失败`:`[MWITools] Message handler failed for ${e.type}`,i)}},features:{register(e){if(!e?.id||typeof e.initialize!="function")throw new TypeError("Feature definitions need an id and initialize()");return Da.set(e.id,{scope:"global",defaultEnabled:!0,...e}),zt.has(e.id)||zt.set(e.id,{status:e.scope==="character"?"waiting":"disabled",error:null}),gc&&Sn(e.id),e.id},async initializeAll(e=null){for(let[t,a]of Da)e&&a.scope!==e||await Sn(t)},enable:Sn,disable:Jn,async restart(e){return await Jn(e),Sn(e)},async syncSetting(e){let t=[];for(let[a,n]of Da)n.setting===e&&(t.push(a),Ls(n)?await Sn(a):await Jn(a));for(let a of t)for(let[n,i]of Da)i.dependsOn?.includes(a)&&(Ls(i)?await Sn(n):await Jn(n))},async handleCharacterData(e){let t=cg(e);if(!t)return;if(kn&&kn!==t)for(let[n,i]of Da)i.scope==="character"&&await Jn(n);let a=kn!==t;kn=t,a&&await this.initializeAll("character")},getStatus(e){let t=zt.get(e)??{status:"unregistered",error:null};return{id:e,status:t.status,error:t.error?.message??null}},list(){return[...Da.keys()].map(e=>this.getStatus(e))},onStatusChange(e){return Ps.add(e),()=>Ps.delete(e)}}};var lg=new Intl.NumberFormat().format(1111).replaceAll("1","").at(0)||"",dg=new Intl.NumberFormat().format(1.1).replaceAll("1","").at(0);function hc(){let e=localStorage.getItem("i18nextLng")?.trim();return e||globalThis.document?.documentElement?.lang||globalThis.navigator?.language||"en-US"}s(hc,"getGameLanguage");function _c(){return hc().toLowerCase().startsWith("zh")}s(_c,"isGameLanguageZH");var _e=_c(),yc="green",wc="darkgreen",Yn={useOrangeAsMainColor:{id:"useOrangeAsMainColor",desc:_e?"使用橙色字体":"Use orange as the main color for the script.",isTrue:!0},displayCapMM:{id:"displayCapMM",desc:_e?"大数统一使用 M,不显示 B 或 T":"Keep large values in millions instead of using B or T.",isTrue:!1},totalActionTime:{id:"totalActionTime",desc:_e?"左上角显示:当前动作预计总耗时、预计何时完成":"Top left: Estimated total time of the current action, estimated complete time.",isTrue:!0},actionPanel_totalTime:{id:"actionPanel_totalTime",desc:_e?"动作面板显示:目标等级所需次数、预计耗时和每小时经验":"Action panel: Actions and time needed for a target level, plus XP/hour.",isTrue:!0},actionPanel_totalTime_quickInputs:{id:"actionPanel_totalTime_quickInputs",desc:_e?"动作面板显示:快速输入次数 [依赖上一项]":"Action panel: Quick input numbers. [Depends on the previous selection]",isTrue:!0},actionPanel_foragingTotal:{id:"actionPanel_foragingTotal",desc:_e?"动作面板显示:采摘综合图显示综合收益 [依赖上一项]":"Action panel: Overall profit of the foraging maps with multiple outcomes. [Depends on the previous selection]",isTrue:!0},assetHistory:{id:"assetHistory",desc:_e?"库存页签显示:每日资产盈亏、历史图表和数据管理":"Inventory tabs: Daily asset P/L, history charts, and data management.",isTrue:!0},feedback:{id:"feedback",desc:_e?"总等级下方显示意见反馈入口":"Show the feedback entry below total level.",isTrue:!0},invWorth:{id:"invWorth",desc:_e?"库存搜索栏下方显示:库存和着装评分总结":"Below inventory search bar: Inventory and gear score summary.",isTrue:!0},includeCowbellsInAssets:{id:"includeCowbellsInAssets",desc:_e?"总资产计入牛铃":"Include cowbells in total assets.",isTrue:!1},valueBackEquipmentWithProtectionMirror:{id:"valueBackEquipmentWithProtectionMirror",desc:_e?"普通未强化背部装备按保护之镜价值估值":"Value ordinary unenhanced back equipment using Mirrors of Protection.",isTrue:!1},invSort:{id:"invSort",desc:_e?"库存显示:库存物品排序":"Inventory: Sort inventory items.",isTrue:!0},guildCreditConversionsSort:{id:"guildCreditConversionsSort",desc:_e?"公会信用兑换:显示性价比推荐":"Guild Credit Exchange: Show value recommendations.",isTrue:!0},profileBuildScore:{id:"profileBuildScore",desc:_e?"人物面板显示:战斗和生活着装评分":"Profile panel: Combat and skilling gear scores.",isTrue:!0},itemTooltip_prices:{id:"itemTooltip_prices",desc:_e?"物品悬浮窗显示:市场价值和订单簿价格":"Item tooltip: Market value and order book prices.",isTrue:!0},itemTooltip_profit:{id:"itemTooltip_profit",desc:_e?"物品悬浮窗显示:生产成本和利润计算 [依赖上一项]":"Item tooltip: Production cost and profit. [Depends on the previous selection]",isTrue:!0},showConsumTips:{id:"showConsumTips",desc:_e?"物品悬浮窗显示:消耗品回血回魔速度、回复性价比、每天最多消耗数量":"Item tooltip: HP/MP consumables restore speed, cost performance, max cost per day.",isTrue:!0},lootChestEstimate:{id:"lootChestEstimate",desc:_e?"战利品宝箱悬浮窗显示开箱期望价值":"Show expected opening value for loot chests.",isTrue:!0},lootSellAtAsk:{id:"lootSellAtAsk",desc:_e?"宝箱产物按卖单挂单价格估值;关闭则按买单立即卖出":"Value chest drops at ask; off values immediate sales at bid.",isTrue:!1},lootBuyAtAsk:{id:"lootBuyAtAsk",desc:_e?"钥匙和碎片按卖单立即买入;关闭则按买单挂单买入":"Buy keys and fragments at ask; off values bid buy orders.",isTrue:!0},lootKeyFromFragments:{id:"lootKeyFromFragments",desc:_e?"钥匙按碎片自制成本计算;关闭则按成品钥匙买入价":"Use fragment crafting cost for keys; off buys finished keys.",isTrue:!1},expPercentage:{id:"expPercentage",desc:_e?"左侧栏显示:技能经验百分比":"Left sidebar: Percentages of exp of the skill levels.",isTrue:!0},battlePanel:{id:"battlePanel",desc:_e?"战斗总结面板(战斗时点击玩家头像)显示:平均每小时战斗次数、收入、经验":"Battle info panel(click on player avatar during combat): Encounters/hour, revenue, exp.",isTrue:!0},itemIconLevel:{id:"itemIconLevel",desc:_e?"装备图标右上角显示:装备等级":"Top right corner of equipment icons: Equipment level.",isTrue:!0},showsKeyInfoInIcon:{id:"showsKeyInfoInIcon",desc:_e?"钥匙和钥匙碎片图标右上角显示:对应的地图序号 [依赖上一项]":"Top right corner of key/fragment icons: Corresponding combat zone index number. [Depends on the previous selection]",isTrue:!0},marketFilter:{id:"marketFilter",desc:_e?"市场页面显示:装备按等级、职业、部位筛选":"Marketplace: Filter by equipment level, class, slot.",isTrue:!0},taskMapIndex:{id:"taskMapIndex",desc:_e?"任务页面显示:目标战斗地图序号":"Tasks page: Combat zone index number.",isTrue:!0},mapIndex:{id:"mapIndex",desc:_e?"战斗地图选择页面显示:地图序号":"Combat zones page: Combat zone index number.",isTrue:!0},skillbook:{id:"skillbook",desc:_e?"在物品词典显示实时技能书升级需求":"Show live ability-book requirements in the item dictionary.",isTrue:!0},ThirdPartyLinks:{id:"ThirdPartyLinks",desc:_e?"左侧菜单栏显示:第三方工具网站链接、脚本设置链接":"Left sidebar: Links to 3rd-party websites, script settings.",isTrue:!0},actionQueue:{id:"actionQueue",desc:_e?"上方动作队列菜单显示:队列中每个动作预计总时间、到何时完成":"Queued actions panel at the top: Estimated total time and complete time of each queued action.",isTrue:!0},enhanceSim:{id:"enhanceSim",desc:_e?"带强化等级的装备的悬浮菜单显示:强化模拟计算":"Tooltip of equipment with enhancement level: Enhancing simulator calculations.",isTrue:!0},checkEquipment:{id:"checkEquipment",desc:_e?"页面上方显示:战斗时穿了生产装备,或者生产时没有穿对应的生产装备而库存里有,红字警告":"Top: Alert when fighting with production equipment equipped, or producing while matching equipment is unequipped in inventory.",isTrue:!0},notifiEmptyAction:{id:"notifiEmptyAction",desc:_e?"弹窗通知:正在空闲(游戏网页打开时才有效)":"Browser notification: Action queue is empty. (Works only when the game page is open.)",isTrue:!1},fillMarketOrderPrice:{id:"fillMarketOrderPrice",desc:_e?"发布市场订单时自动填写为最小压价":"Automatically adjust to the smallest price increase or decrease when posting marketplace orders.",isTrue:!0},showDamage:{id:"showDamage",desc:_e?"启用新版 DPS、HPS、承伤、战斗片段与历史统计":"Enable DPS, HPS, damage-taken, segment, and combat history tracking.",isTrue:!0},battleBuffs:{id:"battleBuffs",desc:_e?"在战斗单位下方显示 Buff / Debuff 图标和倒计时":"Show buff and debuff icons with countdowns below combat units.",isTrue:!0},actionBarProfit:{id:"actionBarProfit",desc:_e?"动作栏显示净利润":"Show net profit in the action bar.",isTrue:!0},productionSummary:{id:"productionSummary",desc:_e?"生产面板显示产出、库存和最大可做次数":"Show output, inventory, and maximum craftable count.",isTrue:!0},productionProfit:{id:"productionProfit",desc:_e?"生产面板显示净利润":"Show net profit in production panels.",isTrue:!0},taskInsights:{id:"taskInsights",desc:_e?"任务显示利润和耗时":"Show task profit and duration.",isTrue:!0},semiAutoTrain:{id:"semiAutoTrain",desc:_e?"生产升级链显示半自动火车、逐站预填和本步加购":"Show semi-automatic train navigation, step prefilling, and step shopping.",isTrue:!0},taskTrainPlanner:{id:"taskTrainPlanner",desc:_e?"任务页按升级链合并任务并规划火车(依赖半自动火车)":"Plan task upgrade trains by chain (requires the semi-automatic train).",isTrue:!0},taskNewBadge:{id:"taskNewBadge",desc:_e?"新领取任务置顶并显示高亮和新角标":"Pin and highlight newly received tasks.",isTrue:!0},taskAutoReturn:{id:"taskAutoReturn",desc:_e?"从任务前往动作后自动返回原任务位置":"Return to the originating task after leaving its action.",isTrue:!0},inventoryMarketDoubleClick:{id:"inventoryMarketDoubleClick",desc:_e?"双击库存物品打开对应市场窗口(货币、战利品除外)":"Double-click inventory items to open the market (except currencies and loot).",isTrue:!0},taskMaterials:{id:"taskMaterials",desc:_e?"任务显示现有材料可完成数量":"Show how much of a task your materials can complete.",isTrue:!0},taskQueueProgress:{id:"taskQueueProgress",desc:_e?"任务显示队列进度":"Show queued task progress.",isTrue:!0},taskAutoSort:{id:"taskAutoSort",desc:_e?"自动整理任务顺序":"Automatically organize tasks.",isTrue:!0},taskIcons:{id:"taskIcons",desc:_e?"任务卡显示物品或怪物图标":"Show item or monster task art.",isTrue:!0},taskStatistics:{id:"taskStatistics",desc:_e?"任务页显示统计抽屉":"Show the task summary drawer.",isTrue:!0},taskClaimCollector:{id:"taskClaimCollector",desc:_e?"集中显示可领取奖励":"Collect claim buttons at the top.",isTrue:!0},taskMergeActions:{id:"taskMergeActions",desc:_e?"合并相同动作任务数量":"Merge matching task quantities.",isTrue:!0},guildXpTracking:{id:"guildXpTracking",desc:_e?"在本机记录公会经验":"Track guild XP locally.",isTrue:!0},guildOverview:{id:"guildOverview",desc:_e?"公会总览显示经验趋势":"Show guild XP trends.",isTrue:!0},guildMemberXp:{id:"guildMemberXp",desc:_e?"成员表显示每小时经验":"Show XP rates for guild members.",isTrue:!0},guildLeaderboardXp:{id:"guildLeaderboardXp",desc:_e?"公会榜显示每小时经验":"Show XP rates on the guild leaderboard.",isTrue:!0},guildIdleMembers:{id:"guildIdleMembers",desc:_e?"公会总览显示闲置成员":"Show idle guild members.",isTrue:!0},leaderboardOverlay:{id:"leaderboardOverlay",desc:_e?"角色名字旁显示排行榜名次徽章":"Show leaderboard rank badges beside character names.",isTrue:!0},leaderboardXpRate:{id:"leaderboardXpRate",desc:_e?"排行榜显示每小时经验速率":"Show XP rates on standard leaderboards.",isTrue:!0},forceMWIToolsDisplayZH:{id:"forceMWIToolsDisplayZH",desc:_e?"MWITools 强制显示中文":"Always display MWITools in Chinese",isTrue:!1}},mg={general:{title:{zh:"通用",en:"General"},summary:{zh:"控制 MWITools 的语言、外观、通知和常用入口。",en:"Control MWITools language, appearance, notifications, and shortcuts."}},actionBar:{title:{zh:"动作栏",en:"Action Bar"},summary:{zh:"在顶部查看当前动作还剩多少次、还需多久以及预计完成时间。",en:"See the current action's remaining count, time left, and estimated finish time."}},production:{title:{zh:"生产面板",en:"Production Panel"},summary:{zh:"输入次数后立即查看耗时、产出、库存上限和利润。",en:"Preview time, output, inventory limits, and profit as you enter a quantity."}},inventory:{title:{zh:"库存与资产",en:"Inventory & Assets"},summary:{zh:"整理库存,并按统一价格口径查看装备和总资产。",en:"Organize inventory and value gear and assets with consistent pricing."}},market:{title:{zh:"市场",en:"Marketplace"},summary:{zh:"显示市场价格、筛选装备,并减少重复下单操作。",en:"Show market prices, filter equipment, and streamline order entry."}},tasks:{title:{zh:"任务",en:"Tasks"},summary:{zh:"按专业整理任务;已完成任务置顶,战斗任务再按地图和地牢归类。",en:"Group tasks by profession, pin completed tasks, and organize combat by zone or dungeon."}},combat:{title:{zh:"战斗",en:"Combat"},summary:{zh:"查看战斗收益、实时伤害、地图编号和装备提醒。",en:"Review combat rewards, live damage, zone numbers, and equipment warnings."}},guild:{title:{zh:"公会",en:"Guild"},summary:{zh:"只在本机记录经验快照,展示公会进度和成员速率。",en:"Store XP snapshots locally to show guild progress and member rates."}},leaderboard:{title:{zh:"排行榜与排名",en:"Leaderboards & Rankings"},summary:{zh:"在角色名字旁展示技能排名,并增强排行榜数据。",en:"Show skill ranks beside character names and enhance leaderboard data."}},tools:{title:{zh:"外部工具",en:"External Tools"},summary:{zh:"连接战斗模拟器、计算器和第三方数据页面。",en:"Connect combat simulators, calculators, and third-party data tools."}}},fg=[["feedback","general","意见反馈","Feedback","在总等级下方提交意见、填写外部图片链接并查看处理状态。","Submit feedback with external image links below total level and follow its status."],["forceMWIToolsDisplayZH","general","强制使用中文","Always use Chinese","无论游戏语言如何,都用中文显示 MWITools。","Display MWITools in Chinese regardless of the game language."],["useOrangeAsMainColor","general","使用橙色强调色","Use orange accents","让辅助信息更贴近游戏的暖色主题。","Use a warm accent color for MWITools information."],["displayCapMM","general","大数只显示 M","Show large values in M","开启后,十亿和万亿数值继续换算为 M,例如 1.2B 显示为 1,200M;关闭时正常使用 K/M/B/T。","When enabled, billions and trillions stay in millions; for example, 1.2B is shown as 1,200M. When disabled, K/M/B/T are used normally."],["notifiEmptyAction","general","空闲提醒","Idle notification","动作队列清空时发送浏览器通知;游戏页面需要保持打开。","Send a browser notification when the action queue becomes empty while the game is open."],["expPercentage","general","技能经验百分比","Skill XP percentage","在左侧技能进度条上显示当前等级的经验百分比。","Show progress through the current level on skill bars."],["totalActionTime","actionBar","当前动作时间","Current action timing","在顶部显示剩余次数、剩余时间和预计完成时刻。","Show remaining count, time remaining, and estimated completion time."],["actionBarProfit","actionBar","当前动作利润","Current action profit","在顶部动作栏显示当前生产动作的市价净利润。","Show market-value net profit for the current production action in the action bar."],["actionQueue","actionBar","完整队列时间","Full queue timing","计算队列中每项动作的耗时、累计完成时刻和最终结束时间。","Calculate each queued action, cumulative completion times, and the final queue end time."],["actionPanel_totalTime","production","目标等级与经验","Target level & XP","输入目标等级,查看还需多少次、预计耗时和每小时经验。","Enter a target level to see required actions, estimated time, and XP/hour."],["actionPanel_totalTime_quickInputs","production","生产次数快捷输入","Production quick inputs","在生产次数输入框旁提供常用次数和时长快捷按钮;依赖目标等级与经验功能。","Add common count and duration shortcuts beside the production input; depends on Target level & XP."],["productionSummary","production","产出与库存摘要","Output & inventory summary","实时显示总产出、当前拥有数量和按直接材料计算的最大可做次数。","Show total output, owned quantity, and the maximum craftable count from direct materials."],["productionProfit","production","生产净利润","Production net profit","同时显示市价、效率(高买低卖)和贪心(低买高卖)三种税后收入、成本与净利润。","Show after-tax revenue, costs, and net profit for market, efficiency (buy high/sell low), and greedy (buy low/sell high) valuations."],["actionPanel_foragingTotal","production","多产物采集收益","Multi-output gathering value","把同一采集动作的多个可能产物合并成期望收益。","Combine multiple possible gathering outputs into an expected value."],["assetHistory","inventory","每日资产盈亏","Daily asset P/L","在配装右侧显示资产摘要、分项变化、历史图表和数据管理。","Show asset summary, component changes, history charts, and data management beside Loadouts."],["inventoryMarketDoubleClick","inventory","双击打开市场","Double-click to market","双击库存物品打开对应市场窗口;货币和战利品不响应。","Double-click an inventory item to open it in the marketplace; currencies and loot are excluded."],["invWorth","inventory","总资产与着装评分","Assets & gear scores","在库存上方显示战斗评分、生活评分以及流动和固定资产明细。","Show combat and skilling scores plus current and fixed asset details above inventory."],["includeCowbellsInAssets","inventory","牛铃计入总资产","Include cowbells in assets","开启后,牛铃按市场折算价值计入不可交易代币和总资产;默认关闭。","Include cowbells at their market-derived value under non-tradable tokens and total assets. Off by default."],["valueBackEquipmentWithProtectionMirror","inventory","普通背部装备按保护之镜估值","Value ordinary back equipment by protection mirrors","开启后,未强化、未精炼的普通背部装备(包括披风、箭袋等)按保护之镜的当前价值估值;默认关闭。所有强化背部装备(包括精炼后的背部装备)在计算强化成本时始终使用保护之镜,不受此开关影响。","When enabled, ordinary unenhanced and unrefined back-slot equipment, including capes and quivers, uses the current value of a Mirror of Protection. Off by default. All enhanced back equipment, including refined back equipment, always uses Mirrors of Protection for enhancement costs regardless of this option."],["invSort","inventory","按价值整理库存","Sort inventory by value","可按市场价值、出售价或收购价整理库存,并显示整堆价值。","Sort inventory by server value, ask, or bid and show each stack value."],["profileBuildScore","inventory","人物着装评分","Profile gear scores","查看自己或他人的战斗与生活着装评分。","Show combat and skilling gear scores on character profiles."],["itemIconLevel","inventory","装备等级角标","Equipment level badges","在装备图标角落显示物品等级。","Show item level on equipment icons."],["showsKeyInfoInIcon","inventory","钥匙地图编号","Key zone numbers","在钥匙和碎片图标上显示对应战斗地图编号。","Show the related combat zone number on keys and fragments."],["itemTooltip_prices","market","悬浮价格","Tooltip prices","在物品悬浮窗显示市场价值和当前出售价、收购价。","Show server value and current ask and bid prices in item tooltips."],["itemTooltip_profit","market","悬浮生产利润","Tooltip production profit","在可生产物品的悬浮窗显示材料成本和预计利润。","Show material cost and estimated profit for craftable items."],["showConsumTips","market","消耗品性价比","Consumable efficiency","显示回血回魔速度、单位回复成本和每天最多用量。","Show recovery rate, cost per recovery, and maximum daily use."],["lootChestEstimate","market","宝箱价值估算","Loot chest estimate","在战利品宝箱悬浮窗显示概率加权的开箱期望,并可固定面板调整估值方式。","Show probability-weighted opening value for loot chests and pin the panel to adjust valuation."],["lootSellAtAsk","market","宝箱产物挂单卖出","List chest drops at ask","开启:按卖单挂单价估值;关闭:按买单立即卖出价估值。","On: value drops at ask; off: value immediate sales at bid."],["lootBuyAtAsk","market","钥匙材料立即买入","Buy key materials immediately","开启:按卖单立即买入钥匙或碎片;关闭:按买单挂单买入。","On: buy keys or fragments at ask; off: place buy orders at bid."],["lootKeyFromFragments","market","钥匙碎片自制","Craft keys from fragments","开启:按实际配方和碎片成本自制钥匙;关闭:购买成品钥匙。","On: craft keys from their actual recipe; off: buy finished keys."],["marketFilter","market","装备筛选","Equipment filters","在市场按等级、战斗职业和装备部位筛选物品。","Filter marketplace equipment by level, combat class, and slot."],["fillMarketOrderPrice","market","自动填写订单价格","Auto-fill order prices","创建订单时按最小有效档位匹配或压过当前最优价格。","Fill the smallest valid price step that matches or improves the current best order."],["taskInsights","tasks","按专业分组任务","Group tasks by profession","按左侧专业顺序显示可折叠分组;已完成任务置顶,战斗任务按地图和地牢细分。","Show collapsible profession groups, pin completed tasks, and split combat by zone or dungeon."],["semiAutoTrain","tasks","半自动火车","Semi-automatic train","沿制造与升级链逐站跳转、预填次数;点击游戏原生加入队列后前往下一站,并可把本步净缺料加入购物车。","Navigate production and upgrade chains, prefill counts, advance after the native queue action, and add each stop's net shortages to the cart."],["taskTrainPlanner","tasks","任务火车规划","Task train planning","聚合同一升级链的未完成任务,在最高级任务卡生成火车计划;依赖半自动火车。","Combine unfinished tasks from the same upgrade chain and start the plan from its highest-level task; requires the semi-automatic train."],["taskNewBadge","tasks","新任务置顶与标记","New task group and badges","本次进入任务页期间,将新领取任务置于最顶部的新任务分类并显示黄色角标;再次进入任务页时恢复正常分类。","Place newly received tasks in a highlighted top group for the current task-page visit, then restore their normal groups on the next visit."],["taskAutoReturn","tasks","任务自动返回","Task auto-return","从任务卡前往动作后,在提交或关闭动作时返回原任务分类和位置。","Return to the originating task group and position after submitting or closing its action."],["taskMaterials","tasks","任务材料完成量","Task material capacity","根据库存中的直接材料显示每项任务当前可完成的数量。","Show how much of each task can be completed from current direct-material inventory."],["taskQueueProgress","tasks","任务队列进度","Task queue progress","在任务卡上显示已经进入动作队列的数量和进度。","Show the quantity and progress already placed in the action queue on task cards."],["taskAutoSort","tasks","自动整理任务","Automatically organize tasks","在每个专业分组内部按等级和生产链整理任务。","Sort tasks within each profession by level and production chain."],["taskIcons","tasks","任务背景图标","Task artwork","用低透明度原生图标标识任务物品、怪物和副本。","Use subtle native item, monster, and dungeon artwork on task cards."],["taskStatistics","tasks","任务统计抽屉","Task statistics drawer","在任务页汇总完成状态、奖励和任务类型统计。","Summarize completion state, rewards, and task-type statistics on the task page."],["taskClaimCollector","tasks","集中领取任务奖励","Collect task rewards","把当前可领取任务集中显示在任务页顶部,减少逐项查找。","Collect currently claimable tasks at the top of the task page for faster claiming."],["taskMergeActions","tasks","合并相同任务动作","Merge matching task actions","打开动作时自动把多个相同任务的剩余数量合并到输入框。","Pre-fill the combined remaining quantity for matching active tasks."],["taskMapIndex","tasks","战斗任务地图编号","Combat task zone number","在战斗任务标题旁显示目标怪物所在地图编号。","Show the target monster's zone number on combat tasks."],["battlePanel","combat","战斗总结","Combat summary","战斗结束后查看遭遇次数、收益和经验速率。","Review encounter, revenue, and XP rates after combat."],["showDamage","combat","DPS / HPS / 承伤统计","DPS / HPS / Damage Taken","记录实时伤害、治疗、承伤、战斗片段和历史;详细显示选项在 DPS 面板内设置。","Track damage, healing, damage taken, segments, and history; configure display details in the DPS panel."],["battleBuffs","combat","战斗 Buff 显示","Battle buff display","在每个战斗单位下方显示增益和减益图标,带剩余时间倒计时环。","Show buff and debuff icons with countdown rings below each combat unit."],["mapIndex","combat","战斗地图编号","Combat zone numbers","在战斗地图选择页显示连续编号。","Show sequential numbers in the combat zone selector."],["checkEquipment","combat","错装提醒","Equipment warning","战斗穿生产装或生产漏穿库存中的对应装备时发出提醒。","Warn about skilling gear in combat or useful unequipped gear while skilling."],["enhanceSim","combat","强化模拟","Enhancement simulator","在强化装备悬浮窗中估算成功次数、保护策略和总成本。","Estimate attempts, protection strategy, and total cost for enhanced equipment."],["guildXpTracking","guild","本地记录公会经验","Local guild XP tracking","被动保存服务器发来的经验快照;数据只留在本机,保留 30 天。","Passively store server XP snapshots on this device for 30 days."],["guildOverview","guild","公会经验总览","Guild XP overview","显示最近、1 小时和 24 小时速率、升级时间与 7 天趋势。","Show recent, hourly, and daily XP rates, time to level, and a seven-day trend."],["guildMemberXp","guild","成员经验速率","Member XP rates","在成员表增加最近和 24 小时 XP/h 两列。","Add recent and 24-hour XP/h columns to the member table."],["guildLeaderboardXp","guild","公会榜经验速率","Guild leaderboard XP rates","在全服公会榜显示本机采样得到的最近和 24 小时 XP/h。","Show locally sampled recent and 24-hour XP/h on the guild leaderboard."],["guildIdleMembers","guild","闲置成员","Idle members","在公会总览常显当前未进行动作的可见成员。","Always show visible guild members who are not currently performing an action."],["leaderboardOverlay","leaderboard","排行榜名次徽章","Leaderboard rank badges","在角色名字旁显示信息采集助手提供的技能与名望排行榜名次徽章。","Show skill and fame leaderboard rank badges supplied by the data collector beside character names."],["leaderboardXpRate","leaderboard","排行榜经验速率","Leaderboard XP rates","在全服技能排行榜增加可排序的经验/小时列;此开关不影响名次徽章。","Add a sortable XP/hour column to standard skill leaderboards without affecting rank badges."],["guildCreditConversionsSort","guild","公会信用兑换性价比推荐","Guild credit exchange recommendations","按市场出售价计算兑换相同信用点的真实材料成本,并比较当前方案与最优方案。","Compare the selected conversion with the cheapest way to obtain the same credits using market asks."],["ThirdPartyLinks","tools","第三方工具入口","External tool shortcuts","在左侧菜单提供模拟器、计算器和脚本设置入口。","Add sidebar shortcuts for simulators, calculators, and MWITools settings."],["skillbook","tools","技能书计算器","Ability book calculator","在物品词典实时计算技能书解锁、升级所需本数与参考购买成本。","Calculate live ability-book unlock, leveling, and reference purchase requirements in the item dictionary."]],$s=Object.fromEntries(fg.map(([e,t,a,n,i,o])=>[e,{id:e,group:t,title:{zh:a,en:n},summary:{zh:i,en:o},details:{zh:i,en:o}}])),bg={actionBarProfit:"totalActionTime",actionQueue:"totalActionTime",actionPanel_foragingTotal:"actionPanel_totalTime",productionSummary:"actionPanel_totalTime",productionProfit:"actionPanel_totalTime",showsKeyInfoInIcon:"itemIconLevel",itemTooltip_profit:"itemTooltip_prices",showConsumTips:"itemTooltip_prices",lootChestEstimate:"itemTooltip_prices",lootSellAtAsk:"lootChestEstimate",lootBuyAtAsk:"lootChestEstimate",lootKeyFromFragments:"lootChestEstimate",taskMaterials:"taskInsights",taskQueueProgress:"taskInsights",taskAutoSort:"taskInsights",taskIcons:"taskInsights",taskStatistics:"taskInsights",taskClaimCollector:"taskInsights",taskMergeActions:"taskInsights",taskNewBadge:"taskInsights",taskTrainPlanner:"semiAutoTrain",guildOverview:"guildXpTracking",guildMemberXp:"guildXpTracking",guildLeaderboardXp:"guildXpTracking",guildIdleMembers:"guildOverview"};for(let[e,t]of Object.entries(bg))$s[e]&&($s[e].parent=t);var Os=new Map;function pg(e){return Yn[e]?.isTrue}s(pg,"getSetting");async function gg(e,t,a={}){if(!Yn[e])return!1;let n=!!t,i=Yn[e].isTrue;if(Yn[e].isTrue=n,i===n&&!a.force)return!0;a.persist!==!1&&u.api.persistSettings?.();for(let o of Os.get(e)??[])try{o(n,i)}catch(r){console.error(_e?`[MWITools] 设置 ${e} 的监听器执行失败`:`[MWITools] Setting listener failed for ${e}`,r)}return await u.features.syncSetting(e),!0}s(gg,"setSetting");function hg(e,t){let a=Os.get(e)??new Set;return a.add(t),Os.set(e,a),()=>a.delete(t)}s(hg,"onSettingChange"),Object.defineProperties(u.config,{THOUSAND_SEPERATOR:{enumerable:!0,get(){return lg}},DECIMAL_SEPERATOR:{enumerable:!0,get(){return dg}},isZHInGameSetting:{enumerable:!0,get(){return _c()}},gameLanguage:{enumerable:!0,get(){return hc()}},isZH:{enumerable:!0,get(){return _e},set(e){_e=e}},SCRIPT_COLOR_MAIN:{enumerable:!0,get(){return yc},set(e){yc=e}},SCRIPT_COLOR_TOOLTIP:{enumerable:!0,get(){return wc},set(e){wc=e}},MARKET_API_URL:{enumerable:!0,get(){return u.api.getMarketApiUrl?.()??""}}}),Object.defineProperties(u.settings,{settingsMap:{enumerable:!0,get(){return Yn},set(e){Yn=e}},groups:{enumerable:!0,get(){return mg}},catalog:{enumerable:!0,get(){return $s}}}),Object.assign(u.settings,{get:pg,set:gg,onChange:hg}),u.registerStart("core/config.js",()=>{console.log(window.location.href)});var vc={"/items/coin":"金币","/items/task_token":"任务代币","/items/labyrinth_token":"迷宫代币","/items/chimerical_token":"奇幻代币","/items/sinister_token":"阴森代币","/items/enchanted_token":"秘法代币","/items/pirate_token":"海盗代币","/items/guild_token":"公会代币","/items/green_guild_credit":"绿色公会信用点","/items/brown_guild_credit":"棕色公会信用点","/items/white_guild_credit":"白色公会信用点","/items/blue_guild_credit":"蓝色公会信用点","/items/purple_guild_credit":"紫色公会信用点","/items/red_guild_credit":"红色公会信用点","/items/silver_guild_credit":"银色公会信用点","/items/gold_guild_credit":"金色公会信用点","/items/cowbell":"牛铃","/items/bag_of_10_cowbells":"牛铃袋 (10个)","/items/purples_gift":"小紫牛的礼物","/items/small_meteorite_cache":"小陨石舱","/items/medium_meteorite_cache":"中陨石舱","/items/large_meteorite_cache":"大陨石舱","/items/small_artisans_crate":"小工匠匣","/items/medium_artisans_crate":"中工匠匣","/items/large_artisans_crate":"大工匠匣","/items/small_treasure_chest":"小宝箱","/items/medium_treasure_chest":"中宝箱","/items/large_treasure_chest":"大宝箱","/items/chimerical_chest":"奇幻宝箱","/items/chimerical_refinement_chest":"奇幻精炼宝箱","/items/sinister_chest":"阴森宝箱","/items/sinister_refinement_chest":"阴森精炼宝箱","/items/enchanted_chest":"秘法宝箱","/items/enchanted_refinement_chest":"秘法精炼宝箱","/items/pirate_chest":"海盗宝箱","/items/pirate_refinement_chest":"海盗精炼宝箱","/items/purdoras_box_skilling":"紫多拉之盒(生活)","/items/purdoras_box_combat":"紫多拉之盒(战斗)","/items/labyrinth_refinement_chest":"迷宫精炼宝箱","/items/seal_of_gathering":"采集卷轴","/items/seal_of_gourmet":"美食卷轴","/items/seal_of_processing":"加工卷轴","/items/seal_of_efficiency":"效率卷轴","/items/seal_of_action_speed":"行动速度卷轴","/items/seal_of_combat_drop":"战斗掉落卷轴","/items/seal_of_attack_speed":"攻击速度卷轴","/items/seal_of_cast_speed":"施法速度卷轴","/items/seal_of_damage":"伤害卷轴","/items/seal_of_critical_rate":"暴击率卷轴","/items/seal_of_wisdom":"经验卷轴","/items/seal_of_rare_find":"稀有发现卷轴","/items/blue_key_fragment":"蓝色钥匙碎片","/items/green_key_fragment":"绿色钥匙碎片","/items/purple_key_fragment":"紫色钥匙碎片","/items/white_key_fragment":"白色钥匙碎片","/items/orange_key_fragment":"橙色钥匙碎片","/items/brown_key_fragment":"棕色钥匙碎片","/items/stone_key_fragment":"石头钥匙碎片","/items/dark_key_fragment":"黑暗钥匙碎片","/items/burning_key_fragment":"燃烧钥匙碎片","/items/chimerical_entry_key":"奇幻钥匙","/items/chimerical_chest_key":"奇幻宝箱钥匙","/items/sinister_entry_key":"阴森钥匙","/items/sinister_chest_key":"阴森宝箱钥匙","/items/enchanted_entry_key":"秘法钥匙","/items/enchanted_chest_key":"秘法宝箱钥匙","/items/pirate_entry_key":"海盗钥匙","/items/pirate_chest_key":"海盗宝箱钥匙","/items/donut":"甜甜圈","/items/blueberry_donut":"蓝莓甜甜圈","/items/blackberry_donut":"黑莓甜甜圈","/items/strawberry_donut":"草莓甜甜圈","/items/mooberry_donut":"哞莓甜甜圈","/items/marsberry_donut":"火星莓甜甜圈","/items/spaceberry_donut":"太空莓甜甜圈","/items/cupcake":"纸杯蛋糕","/items/blueberry_cake":"蓝莓蛋糕","/items/blackberry_cake":"黑莓蛋糕","/items/strawberry_cake":"草莓蛋糕","/items/mooberry_cake":"哞莓蛋糕","/items/marsberry_cake":"火星莓蛋糕","/items/spaceberry_cake":"太空莓蛋糕","/items/gummy":"软糖","/items/apple_gummy":"苹果软糖","/items/orange_gummy":"橙子软糖","/items/plum_gummy":"李子软糖","/items/peach_gummy":"桃子软糖","/items/dragon_fruit_gummy":"火龙果软糖","/items/star_fruit_gummy":"杨桃软糖","/items/yogurt":"酸奶","/items/apple_yogurt":"苹果酸奶","/items/orange_yogurt":"橙子酸奶","/items/plum_yogurt":"李子酸奶","/items/peach_yogurt":"桃子酸奶","/items/dragon_fruit_yogurt":"火龙果酸奶","/items/star_fruit_yogurt":"杨桃酸奶","/items/milking_tea":"挤奶茶","/items/foraging_tea":"采摘茶","/items/woodcutting_tea":"伐木茶","/items/cooking_tea":"烹饪茶","/items/brewing_tea":"冲泡茶","/items/alchemy_tea":"炼金茶","/items/enhancing_tea":"强化茶","/items/cheesesmithing_tea":"奶酪锻造茶","/items/crafting_tea":"制作茶","/items/tailoring_tea":"缝纫茶","/items/super_milking_tea":"超级挤奶茶","/items/super_foraging_tea":"超级采摘茶","/items/super_woodcutting_tea":"超级伐木茶","/items/super_cooking_tea":"超级烹饪茶","/items/super_brewing_tea":"超级冲泡茶","/items/super_alchemy_tea":"超级炼金茶","/items/super_enhancing_tea":"超级强化茶","/items/super_cheesesmithing_tea":"超级奶酪锻造茶","/items/super_crafting_tea":"超级制作茶","/items/super_tailoring_tea":"超级缝纫茶","/items/ultra_milking_tea":"究极挤奶茶","/items/ultra_foraging_tea":"究极采摘茶","/items/ultra_woodcutting_tea":"究极伐木茶","/items/ultra_cooking_tea":"究极烹饪茶","/items/ultra_brewing_tea":"究极冲泡茶","/items/ultra_alchemy_tea":"究极炼金茶","/items/ultra_enhancing_tea":"究极强化茶","/items/ultra_cheesesmithing_tea":"究极奶酪锻造茶","/items/ultra_crafting_tea":"究极制作茶","/items/ultra_tailoring_tea":"究极缝纫茶","/items/gathering_tea":"采集茶","/items/gourmet_tea":"美食茶","/items/wisdom_tea":"经验茶","/items/processing_tea":"加工茶","/items/efficiency_tea":"效率茶","/items/artisan_tea":"工匠茶","/items/catalytic_tea":"催化茶","/items/blessed_tea":"福气茶","/items/stamina_coffee":"耐力咖啡","/items/intelligence_coffee":"智力咖啡","/items/defense_coffee":"防御咖啡","/items/attack_coffee":"攻击咖啡","/items/melee_coffee":"近战咖啡","/items/ranged_coffee":"远程咖啡","/items/magic_coffee":"魔法咖啡","/items/super_stamina_coffee":"超级耐力咖啡","/items/super_intelligence_coffee":"超级智力咖啡","/items/super_defense_coffee":"超级防御咖啡","/items/super_attack_coffee":"超级攻击咖啡","/items/super_melee_coffee":"超级近战咖啡","/items/super_ranged_coffee":"超级远程咖啡","/items/super_magic_coffee":"超级魔法咖啡","/items/ultra_stamina_coffee":"究极耐力咖啡","/items/ultra_intelligence_coffee":"究极智力咖啡","/items/ultra_defense_coffee":"究极防御咖啡","/items/ultra_attack_coffee":"究极攻击咖啡","/items/ultra_melee_coffee":"究极近战咖啡","/items/ultra_ranged_coffee":"究极远程咖啡","/items/ultra_magic_coffee":"究极魔法咖啡","/items/wisdom_coffee":"经验咖啡","/items/lucky_coffee":"幸运咖啡","/items/swiftness_coffee":"迅捷咖啡","/items/channeling_coffee":"吟唱咖啡","/items/critical_coffee":"暴击咖啡","/items/poke":"破胆之刺","/items/impale":"透骨之刺","/items/puncture":"破甲之刺","/items/penetrating_strike":"贯心之刺","/items/scratch":"爪影斩","/items/cleave":"分裂斩","/items/maim":"血刃斩","/items/crippling_slash":"致残斩","/items/smack":"重碾","/items/sweep":"重扫","/items/stunning_blow":"重锤","/items/fracturing_impact":"碎裂冲击","/items/shield_bash":"盾击","/items/quick_shot":"快速射击","/items/aqua_arrow":"流水箭","/items/flame_arrow":"烈焰箭","/items/rain_of_arrows":"箭雨","/items/silencing_shot":"沉默之箭","/items/steady_shot":"稳定射击","/items/pestilent_shot":"疫病射击","/items/penetrating_shot":"贯穿射击","/items/water_strike":"流水冲击","/items/ice_spear":"冰枪术","/items/frost_surge":"冰霜爆裂","/items/mana_spring":"法力喷泉","/items/entangle":"缠绕","/items/toxic_pollen":"剧毒粉尘","/items/natures_veil":"自然菌幕","/items/life_drain":"生命吸取","/items/fireball":"火球","/items/flame_blast":"熔岩爆裂","/items/firestorm":"火焰风暴","/items/smoke_burst":"烟爆灭影","/items/minor_heal":"初级自愈术","/items/heal":"自愈术","/items/quick_aid":"快速治疗术","/items/rejuvenate":"群体治疗术","/items/taunt":"嘲讽","/items/provoke":"挑衅","/items/toughness":"坚韧","/items/elusiveness":"闪避","/items/precision":"精确","/items/berserk":"狂暴","/items/elemental_affinity":"元素增幅","/items/frenzy":"狂速","/items/spike_shell":"尖刺防护","/items/retribution":"惩戒","/items/vampirism":"吸血","/items/revive":"复活","/items/insanity":"疯狂","/items/invincible":"无敌","/items/speed_aura":"速度光环","/items/guardian_aura":"守护光环","/items/fierce_aura":"物理光环","/items/critical_aura":"暴击光环","/items/mystic_aura":"元素光环","/items/gobo_stabber":"哥布林长剑","/items/gobo_slasher":"哥布林关刀","/items/gobo_smasher":"哥布林狼牙棒","/items/spiked_bulwark":"尖刺重盾","/items/werewolf_slasher":"狼人关刀","/items/griffin_bulwark":"狮鹫重盾","/items/griffin_bulwark_refined":"狮鹫重盾 ★","/items/gobo_shooter":"哥布林弹弓","/items/vampiric_bow":"吸血弓","/items/cursed_bow":"咒怨之弓","/items/cursed_bow_refined":"咒怨之弓 ★","/items/gobo_boomstick":"哥布林火棍","/items/cheese_bulwark":"奶酪重盾","/items/verdant_bulwark":"翠绿重盾","/items/azure_bulwark":"蔚蓝重盾","/items/burble_bulwark":"深紫重盾","/items/crimson_bulwark":"绛红重盾","/items/rainbow_bulwark":"彩虹重盾","/items/holy_bulwark":"神圣重盾","/items/wooden_bow":"木弓","/items/birch_bow":"桦木弓","/items/cedar_bow":"雪松弓","/items/purpleheart_bow":"紫心弓","/items/ginkgo_bow":"银杏弓","/items/redwood_bow":"红杉弓","/items/arcane_bow":"神秘弓","/items/stalactite_spear":"石钟长枪","/items/granite_bludgeon":"花岗岩大棒","/items/furious_spear":"狂怒长枪","/items/furious_spear_refined":"狂怒长枪 ★","/items/regal_sword":"君王之剑","/items/regal_sword_refined":"君王之剑 ★","/items/chaotic_flail":"混沌连枷","/items/chaotic_flail_refined":"混沌连枷 ★","/items/soul_hunter_crossbow":"灵魂猎手弩","/items/sundering_crossbow":"裂空之弩","/items/sundering_crossbow_refined":"裂空之弩 ★","/items/frost_staff":"冰霜法杖","/items/infernal_battlestaff":"炼狱法杖","/items/jackalope_staff":"鹿角兔之杖","/items/rippling_trident":"涟漪三叉戟","/items/rippling_trident_refined":"涟漪三叉戟 ★","/items/blooming_trident":"绽放三叉戟","/items/blooming_trident_refined":"绽放三叉戟 ★","/items/blazing_trident":"炽焰三叉戟","/items/blazing_trident_refined":"炽焰三叉戟 ★","/items/cheese_sword":"奶酪剑","/items/verdant_sword":"翠绿剑","/items/azure_sword":"蔚蓝剑","/items/burble_sword":"深紫剑","/items/crimson_sword":"绛红剑","/items/rainbow_sword":"彩虹剑","/items/holy_sword":"神圣剑","/items/cheese_spear":"奶酪长枪","/items/verdant_spear":"翠绿长枪","/items/azure_spear":"蔚蓝长枪","/items/burble_spear":"深紫长枪","/items/crimson_spear":"绛红长枪","/items/rainbow_spear":"彩虹长枪","/items/holy_spear":"神圣长枪","/items/cheese_mace":"奶酪钉头锤","/items/verdant_mace":"翠绿钉头锤","/items/azure_mace":"蔚蓝钉头锤","/items/burble_mace":"深紫钉头锤","/items/crimson_mace":"绛红钉头锤","/items/rainbow_mace":"彩虹钉头锤","/items/holy_mace":"神圣钉头锤","/items/wooden_crossbow":"木弩","/items/birch_crossbow":"桦木弩","/items/cedar_crossbow":"雪松弩","/items/purpleheart_crossbow":"紫心弩","/items/ginkgo_crossbow":"银杏弩","/items/redwood_crossbow":"红杉弩","/items/arcane_crossbow":"神秘弩","/items/wooden_water_staff":"木制水法杖","/items/birch_water_staff":"桦木水法杖","/items/cedar_water_staff":"雪松水法杖","/items/purpleheart_water_staff":"紫心水法杖","/items/ginkgo_water_staff":"银杏水法杖","/items/redwood_water_staff":"红杉水法杖","/items/arcane_water_staff":"神秘水法杖","/items/wooden_nature_staff":"木制自然法杖","/items/birch_nature_staff":"桦木自然法杖","/items/cedar_nature_staff":"雪松自然法杖","/items/purpleheart_nature_staff":"紫心自然法杖","/items/ginkgo_nature_staff":"银杏自然法杖","/items/redwood_nature_staff":"红杉自然法杖","/items/arcane_nature_staff":"神秘自然法杖","/items/wooden_fire_staff":"木制火法杖","/items/birch_fire_staff":"桦木火法杖","/items/cedar_fire_staff":"雪松火法杖","/items/purpleheart_fire_staff":"紫心火法杖","/items/ginkgo_fire_staff":"银杏火法杖","/items/redwood_fire_staff":"红杉火法杖","/items/arcane_fire_staff":"神秘火法杖","/items/eye_watch":"掌上监工","/items/snake_fang_dirk":"蛇牙短剑","/items/vision_shield":"视觉盾","/items/gobo_defender":"哥布林防御者","/items/vampire_fang_dirk":"吸血鬼短剑","/items/knights_aegis":"骑士盾","/items/knights_aegis_refined":"骑士盾 ★","/items/treant_shield":"树人盾","/items/manticore_shield":"蝎狮盾","/items/tome_of_healing":"治疗之书","/items/tome_of_the_elements":"元素之书","/items/watchful_relic":"警戒遗物","/items/bishops_codex":"主教法典","/items/bishops_codex_refined":"主教法典 ★","/items/cheese_buckler":"奶酪圆盾","/items/verdant_buckler":"翠绿圆盾","/items/azure_buckler":"蔚蓝圆盾","/items/burble_buckler":"深紫圆盾","/items/crimson_buckler":"绛红圆盾","/items/rainbow_buckler":"彩虹圆盾","/items/holy_buckler":"神圣圆盾","/items/wooden_shield":"木盾","/items/birch_shield":"桦木盾","/items/cedar_shield":"雪松盾","/items/purpleheart_shield":"紫心盾","/items/ginkgo_shield":"银杏盾","/items/redwood_shield":"红杉盾","/items/arcane_shield":"神秘盾","/items/gatherer_cape":"采集者披风","/items/gatherer_cape_refined":"采集者披风 ★","/items/artificer_cape":"工匠披风","/items/artificer_cape_refined":"工匠披风 ★","/items/culinary_cape":"厨师披风","/items/culinary_cape_refined":"厨师披风 ★","/items/chance_cape":"机缘披风","/items/chance_cape_refined":"机缘披风 ★","/items/sinister_cape":"阴森披风","/items/sinister_cape_refined":"阴森披风 ★","/items/chimerical_quiver":"奇幻箭袋","/items/chimerical_quiver_refined":"奇幻箭袋 ★","/items/enchanted_cloak":"秘法披风","/items/enchanted_cloak_refined":"秘法披风 ★","/items/red_culinary_hat":"红色厨师帽","/items/snail_shell_helmet":"蜗牛壳头盔","/items/vision_helmet":"视觉头盔","/items/fluffy_red_hat":"蓬松红帽子","/items/corsair_helmet":"掠夺者头盔","/items/corsair_helmet_refined":"掠夺者头盔 ★","/items/acrobatic_hood":"杂技师兜帽","/items/acrobatic_hood_refined":"杂技师兜帽 ★","/items/magicians_hat":"魔术师帽","/items/magicians_hat_refined":"魔术师帽 ★","/items/cheese_helmet":"奶酪头盔","/items/verdant_helmet":"翠绿头盔","/items/azure_helmet":"蔚蓝头盔","/items/burble_helmet":"深紫头盔","/items/crimson_helmet":"绛红头盔","/items/rainbow_helmet":"彩虹头盔","/items/holy_helmet":"神圣头盔","/items/rough_hood":"粗糙兜帽","/items/reptile_hood":"爬行动物兜帽","/items/gobo_hood":"哥布林兜帽","/items/beast_hood":"野兽兜帽","/items/umbral_hood":"暗影兜帽","/items/cotton_hat":"棉帽","/items/linen_hat":"亚麻帽","/items/bamboo_hat":"竹帽","/items/silk_hat":"丝帽","/items/radiant_hat":"光辉帽","/items/dairyhands_top":"挤奶工上衣","/items/foragers_top":"采摘者上衣","/items/lumberjacks_top":"伐木工上衣","/items/cheesemakers_top":"奶酪师上衣","/items/crafters_top":"工匠上衣","/items/tailors_top":"裁缝上衣","/items/chefs_top":"厨师上衣","/items/brewers_top":"饮品师上衣","/items/alchemists_top":"炼金师上衣","/items/enhancers_top":"强化师上衣","/items/gator_vest":"鳄鱼马甲","/items/turtle_shell_body":"龟壳胸甲","/items/colossus_plate_body":"巨像胸甲","/items/demonic_plate_body":"恶魔胸甲","/items/anchorbound_plate_body":"锚定胸甲","/items/anchorbound_plate_body_refined":"锚定胸甲 ★","/items/maelstrom_plate_body":"怒涛胸甲","/items/maelstrom_plate_body_refined":"怒涛胸甲 ★","/items/marine_tunic":"海洋皮衣","/items/revenant_tunic":"亡灵皮衣","/items/griffin_tunic":"狮鹫皮衣","/items/kraken_tunic":"克拉肯皮衣","/items/kraken_tunic_refined":"克拉肯皮衣 ★","/items/icy_robe_top":"冰霜袍服","/items/flaming_robe_top":"烈焰袍服","/items/luna_robe_top":"月神袍服","/items/royal_water_robe_top":"皇家水系袍服","/items/royal_water_robe_top_refined":"皇家水系袍服 ★","/items/royal_nature_robe_top":"皇家自然系袍服","/items/royal_nature_robe_top_refined":"皇家自然系袍服 ★","/items/royal_fire_robe_top":"皇家火系袍服","/items/royal_fire_robe_top_refined":"皇家火系袍服 ★","/items/cheese_plate_body":"奶酪胸甲","/items/verdant_plate_body":"翠绿胸甲","/items/azure_plate_body":"蔚蓝胸甲","/items/burble_plate_body":"深紫胸甲","/items/crimson_plate_body":"绛红胸甲","/items/rainbow_plate_body":"彩虹胸甲","/items/holy_plate_body":"神圣胸甲","/items/rough_tunic":"粗糙皮衣","/items/reptile_tunic":"爬行动物皮衣","/items/gobo_tunic":"哥布林皮衣","/items/beast_tunic":"野兽皮衣","/items/umbral_tunic":"暗影皮衣","/items/cotton_robe_top":"棉袍服","/items/linen_robe_top":"亚麻袍服","/items/bamboo_robe_top":"竹袍服","/items/silk_robe_top":"丝绸袍服","/items/radiant_robe_top":"光辉袍服","/items/dairyhands_bottoms":"挤奶工下装","/items/foragers_bottoms":"采摘者下装","/items/lumberjacks_bottoms":"伐木工下装","/items/cheesemakers_bottoms":"奶酪师下装","/items/crafters_bottoms":"工匠下装","/items/tailors_bottoms":"裁缝下装","/items/chefs_bottoms":"厨师下装","/items/brewers_bottoms":"饮品师下装","/items/alchemists_bottoms":"炼金师下装","/items/enhancers_bottoms":"强化师下装","/items/turtle_shell_legs":"龟壳腿甲","/items/colossus_plate_legs":"巨像腿甲","/items/demonic_plate_legs":"恶魔腿甲","/items/anchorbound_plate_legs":"锚定腿甲","/items/anchorbound_plate_legs_refined":"锚定腿甲 ★","/items/maelstrom_plate_legs":"怒涛腿甲","/items/maelstrom_plate_legs_refined":"怒涛腿甲 ★","/items/marine_chaps":"航海皮裤","/items/revenant_chaps":"亡灵皮裤","/items/griffin_chaps":"狮鹫皮裤","/items/kraken_chaps":"克拉肯皮裤","/items/kraken_chaps_refined":"克拉肯皮裤 ★","/items/icy_robe_bottoms":"冰霜袍裙","/items/flaming_robe_bottoms":"烈焰袍裙","/items/luna_robe_bottoms":"月神袍裙","/items/royal_water_robe_bottoms":"皇家水系袍裙","/items/royal_water_robe_bottoms_refined":"皇家水系袍裙 ★","/items/royal_nature_robe_bottoms":"皇家自然系袍裙","/items/royal_nature_robe_bottoms_refined":"皇家自然系袍裙 ★","/items/royal_fire_robe_bottoms":"皇家火系袍裙","/items/royal_fire_robe_bottoms_refined":"皇家火系袍裙 ★","/items/cheese_plate_legs":"奶酪腿甲","/items/verdant_plate_legs":"翠绿腿甲","/items/azure_plate_legs":"蔚蓝腿甲","/items/burble_plate_legs":"深紫腿甲","/items/crimson_plate_legs":"绛红腿甲","/items/rainbow_plate_legs":"彩虹腿甲","/items/holy_plate_legs":"神圣腿甲","/items/rough_chaps":"粗糙皮裤","/items/reptile_chaps":"爬行动物皮裤","/items/gobo_chaps":"哥布林皮裤","/items/beast_chaps":"野兽皮裤","/items/umbral_chaps":"暗影皮裤","/items/cotton_robe_bottoms":"棉袍裙","/items/linen_robe_bottoms":"亚麻袍裙","/items/bamboo_robe_bottoms":"竹袍裙","/items/silk_robe_bottoms":"丝绸袍裙","/items/radiant_robe_bottoms":"光辉袍裙","/items/enchanted_gloves":"附魔手套","/items/pincer_gloves":"蟹钳手套","/items/panda_gloves":"熊猫手套","/items/magnetic_gloves":"磁力手套","/items/dodocamel_gauntlets":"渡渡驼护手","/items/dodocamel_gauntlets_refined":"渡渡驼护手 ★","/items/sighted_bracers":"瞄准护腕","/items/marksman_bracers":"神射护腕","/items/marksman_bracers_refined":"神射护腕 ★","/items/chrono_gloves":"时空手套","/items/cheese_gauntlets":"奶酪护手","/items/verdant_gauntlets":"翠绿护手","/items/azure_gauntlets":"蔚蓝护手","/items/burble_gauntlets":"深紫护手","/items/crimson_gauntlets":"绛红护手","/items/rainbow_gauntlets":"彩虹护手","/items/holy_gauntlets":"神圣护手","/items/rough_bracers":"粗糙护腕","/items/reptile_bracers":"爬行动物护腕","/items/gobo_bracers":"哥布林护腕","/items/beast_bracers":"野兽护腕","/items/umbral_bracers":"暗影护腕","/items/cotton_gloves":"棉手套","/items/linen_gloves":"亚麻手套","/items/bamboo_gloves":"竹手套","/items/silk_gloves":"丝手套","/items/radiant_gloves":"光辉手套","/items/collectors_boots":"收藏家靴","/items/shoebill_shoes":"鲸头鹳鞋","/items/black_bear_shoes":"黑熊鞋","/items/grizzly_bear_shoes":"棕熊鞋","/items/polar_bear_shoes":"北极熊鞋","/items/pathbreaker_boots":"开路者靴","/items/pathbreaker_boots_refined":"开路者靴 ★","/items/centaur_boots":"半人马靴","/items/pathfinder_boots":"探路者靴","/items/pathfinder_boots_refined":"探路者靴 ★","/items/sorcerer_boots":"巫师靴","/items/pathseeker_boots":"寻路者靴","/items/pathseeker_boots_refined":"寻路者靴 ★","/items/cheese_boots":"奶酪靴","/items/verdant_boots":"翠绿靴","/items/azure_boots":"蔚蓝靴","/items/burble_boots":"深紫靴","/items/crimson_boots":"绛红靴","/items/rainbow_boots":"彩虹靴","/items/holy_boots":"神圣靴","/items/rough_boots":"粗糙靴","/items/reptile_boots":"爬行动物靴","/items/gobo_boots":"哥布林靴","/items/beast_boots":"野兽靴","/items/umbral_boots":"暗影靴","/items/cotton_boots":"棉靴","/items/linen_boots":"亚麻靴","/items/bamboo_boots":"竹靴","/items/silk_boots":"丝靴","/items/radiant_boots":"光辉靴","/items/small_pouch":"小袋子","/items/medium_pouch":"中袋子","/items/large_pouch":"大袋子","/items/giant_pouch":"巨大袋子","/items/gluttonous_pouch":"贪食之袋","/items/guzzling_pouch":"暴饮之囊","/items/necklace_of_efficiency":"效率项链","/items/fighter_necklace":"战士项链","/items/ranger_necklace":"射手项链","/items/wizard_necklace":"巫师项链","/items/necklace_of_wisdom":"经验项链","/items/necklace_of_speed":"速度项链","/items/philosophers_necklace":"贤者项链","/items/earrings_of_gathering":"采集耳环","/items/earrings_of_essence_find":"精华发现耳环","/items/earrings_of_armor":"护甲耳环","/items/earrings_of_regeneration":"恢复耳环","/items/earrings_of_resistance":"抗性耳环","/items/earrings_of_rare_find":"稀有发现耳环","/items/earrings_of_critical_strike":"暴击耳环","/items/philosophers_earrings":"贤者耳环","/items/ring_of_gathering":"采集戒指","/items/ring_of_essence_find":"精华发现戒指","/items/ring_of_armor":"护甲戒指","/items/ring_of_regeneration":"恢复戒指","/items/ring_of_resistance":"抗性戒指","/items/ring_of_rare_find":"稀有发现戒指","/items/ring_of_critical_strike":"暴击戒指","/items/philosophers_ring":"贤者戒指","/items/trainee_milking_charm":"实习挤奶护符","/items/basic_milking_charm":"基础挤奶护符","/items/advanced_milking_charm":"高级挤奶护符","/items/expert_milking_charm":"专家挤奶护符","/items/master_milking_charm":"大师挤奶护符","/items/grandmaster_milking_charm":"宗师挤奶护符","/items/trainee_foraging_charm":"实习采摘护符","/items/basic_foraging_charm":"基础采摘护符","/items/advanced_foraging_charm":"高级采摘护符","/items/expert_foraging_charm":"专家采摘护符","/items/master_foraging_charm":"大师采摘护符","/items/grandmaster_foraging_charm":"宗师采摘护符","/items/trainee_woodcutting_charm":"实习伐木护符","/items/basic_woodcutting_charm":"基础伐木护符","/items/advanced_woodcutting_charm":"高级伐木护符","/items/expert_woodcutting_charm":"专家伐木护符","/items/master_woodcutting_charm":"大师伐木护符","/items/grandmaster_woodcutting_charm":"宗师伐木护符","/items/trainee_cheesesmithing_charm":"实习奶酪锻造护符","/items/basic_cheesesmithing_charm":"基础奶酪锻造护符","/items/advanced_cheesesmithing_charm":"高级奶酪锻造护符","/items/expert_cheesesmithing_charm":"专家奶酪锻造护符","/items/master_cheesesmithing_charm":"大师奶酪锻造护符","/items/grandmaster_cheesesmithing_charm":"宗师奶酪锻造护符","/items/trainee_crafting_charm":"实习制作护符","/items/basic_crafting_charm":"基础制作护符","/items/advanced_crafting_charm":"高级制作护符","/items/expert_crafting_charm":"专家制作护符","/items/master_crafting_charm":"大师制作护符","/items/grandmaster_crafting_charm":"宗师制作护符","/items/trainee_tailoring_charm":"实习缝纫护符","/items/basic_tailoring_charm":"基础缝纫护符","/items/advanced_tailoring_charm":"高级缝纫护符","/items/expert_tailoring_charm":"专家缝纫护符","/items/master_tailoring_charm":"大师缝纫护符","/items/grandmaster_tailoring_charm":"宗师缝纫护符","/items/trainee_cooking_charm":"实习烹饪护符","/items/basic_cooking_charm":"基础烹饪护符","/items/advanced_cooking_charm":"高级烹饪护符","/items/expert_cooking_charm":"专家烹饪护符","/items/master_cooking_charm":"大师烹饪护符","/items/grandmaster_cooking_charm":"宗师烹饪护符","/items/trainee_brewing_charm":"实习冲泡护符","/items/basic_brewing_charm":"基础冲泡护符","/items/advanced_brewing_charm":"高级冲泡护符","/items/expert_brewing_charm":"专家冲泡护符","/items/master_brewing_charm":"大师冲泡护符","/items/grandmaster_brewing_charm":"宗师冲泡护符","/items/trainee_alchemy_charm":"实习炼金护符","/items/basic_alchemy_charm":"基础炼金护符","/items/advanced_alchemy_charm":"高级炼金护符","/items/expert_alchemy_charm":"专家炼金护符","/items/master_alchemy_charm":"大师炼金护符","/items/grandmaster_alchemy_charm":"宗师炼金护符","/items/trainee_enhancing_charm":"实习强化护符","/items/basic_enhancing_charm":"基础强化护符","/items/advanced_enhancing_charm":"高级强化护符","/items/expert_enhancing_charm":"专家强化护符","/items/master_enhancing_charm":"大师强化护符","/items/grandmaster_enhancing_charm":"宗师强化护符","/items/trainee_stamina_charm":"实习耐力护符","/items/basic_stamina_charm":"基础耐力护符","/items/advanced_stamina_charm":"高级耐力护符","/items/expert_stamina_charm":"专家耐力护符","/items/master_stamina_charm":"大师耐力护符","/items/grandmaster_stamina_charm":"宗师耐力护符","/items/trainee_intelligence_charm":"实习智力护符","/items/basic_intelligence_charm":"基础智力护符","/items/advanced_intelligence_charm":"高级智力护符","/items/expert_intelligence_charm":"专家智力护符","/items/master_intelligence_charm":"大师智力护符","/items/grandmaster_intelligence_charm":"宗师智力护符","/items/trainee_attack_charm":"实习攻击护符","/items/basic_attack_charm":"基础攻击护符","/items/advanced_attack_charm":"高级攻击护符","/items/expert_attack_charm":"专家攻击护符","/items/master_attack_charm":"大师攻击护符","/items/grandmaster_attack_charm":"宗师攻击护符","/items/trainee_defense_charm":"实习防御护符","/items/basic_defense_charm":"基础防御护符","/items/advanced_defense_charm":"高级防御护符","/items/expert_defense_charm":"专家防御护符","/items/master_defense_charm":"大师防御护符","/items/grandmaster_defense_charm":"宗师防御护符","/items/trainee_melee_charm":"实习近战护符","/items/basic_melee_charm":"基础近战护符","/items/advanced_melee_charm":"高级近战护符","/items/expert_melee_charm":"专家近战护符","/items/master_melee_charm":"大师近战护符","/items/grandmaster_melee_charm":"宗师近战护符","/items/trainee_ranged_charm":"实习远程护符","/items/basic_ranged_charm":"基础远程护符","/items/advanced_ranged_charm":"高级远程护符","/items/expert_ranged_charm":"专家远程护符","/items/master_ranged_charm":"大师远程护符","/items/grandmaster_ranged_charm":"宗师远程护符","/items/trainee_magic_charm":"实习魔法护符","/items/basic_magic_charm":"基础魔法护符","/items/advanced_magic_charm":"高级魔法护符","/items/expert_magic_charm":"专家魔法护符","/items/master_magic_charm":"大师魔法护符","/items/grandmaster_magic_charm":"宗师魔法护符","/items/basic_task_badge":"基础任务徽章","/items/advanced_task_badge":"高级任务徽章","/items/expert_task_badge":"专家任务徽章","/items/celestial_brush":"星空刷子","/items/cheese_brush":"奶酪刷子","/items/verdant_brush":"翠绿刷子","/items/azure_brush":"蔚蓝刷子","/items/burble_brush":"深紫刷子","/items/crimson_brush":"绛红刷子","/items/rainbow_brush":"彩虹刷子","/items/holy_brush":"神圣刷子","/items/celestial_shears":"星空剪刀","/items/cheese_shears":"奶酪剪刀","/items/verdant_shears":"翠绿剪刀","/items/azure_shears":"蔚蓝剪刀","/items/burble_shears":"深紫剪刀","/items/crimson_shears":"绛红剪刀","/items/rainbow_shears":"彩虹剪刀","/items/holy_shears":"神圣剪刀","/items/celestial_hatchet":"星空斧头","/items/cheese_hatchet":"奶酪斧头","/items/verdant_hatchet":"翠绿斧头","/items/azure_hatchet":"蔚蓝斧头","/items/burble_hatchet":"深紫斧头","/items/crimson_hatchet":"绛红斧头","/items/rainbow_hatchet":"彩虹斧头","/items/holy_hatchet":"神圣斧头","/items/celestial_hammer":"星空锤子","/items/cheese_hammer":"奶酪锤子","/items/verdant_hammer":"翠绿锤子","/items/azure_hammer":"蔚蓝锤子","/items/burble_hammer":"深紫锤子","/items/crimson_hammer":"绛红锤子","/items/rainbow_hammer":"彩虹锤子","/items/holy_hammer":"神圣锤子","/items/celestial_chisel":"星空凿子","/items/cheese_chisel":"奶酪凿子","/items/verdant_chisel":"翠绿凿子","/items/azure_chisel":"蔚蓝凿子","/items/burble_chisel":"深紫凿子","/items/crimson_chisel":"绛红凿子","/items/rainbow_chisel":"彩虹凿子","/items/holy_chisel":"神圣凿子","/items/celestial_needle":"星空针","/items/cheese_needle":"奶酪针","/items/verdant_needle":"翠绿针","/items/azure_needle":"蔚蓝针","/items/burble_needle":"深紫针","/items/crimson_needle":"绛红针","/items/rainbow_needle":"彩虹针","/items/holy_needle":"神圣针","/items/celestial_spatula":"星空锅铲","/items/cheese_spatula":"奶酪锅铲","/items/verdant_spatula":"翠绿锅铲","/items/azure_spatula":"蔚蓝锅铲","/items/burble_spatula":"深紫锅铲","/items/crimson_spatula":"绛红锅铲","/items/rainbow_spatula":"彩虹锅铲","/items/holy_spatula":"神圣锅铲","/items/celestial_pot":"星空壶","/items/cheese_pot":"奶酪壶","/items/verdant_pot":"翠绿壶","/items/azure_pot":"蔚蓝壶","/items/burble_pot":"深紫壶","/items/crimson_pot":"绛红壶","/items/rainbow_pot":"彩虹壶","/items/holy_pot":"神圣壶","/items/celestial_alembic":"星空蒸馏器","/items/cheese_alembic":"奶酪蒸馏器","/items/verdant_alembic":"翠绿蒸馏器","/items/azure_alembic":"蔚蓝蒸馏器","/items/burble_alembic":"深紫蒸馏器","/items/crimson_alembic":"绛红蒸馏器","/items/rainbow_alembic":"彩虹蒸馏器","/items/holy_alembic":"神圣蒸馏器","/items/celestial_enhancer":"星空强化器","/items/cheese_enhancer":"奶酪强化器","/items/verdant_enhancer":"翠绿强化器","/items/azure_enhancer":"蔚蓝强化器","/items/burble_enhancer":"深紫强化器","/items/crimson_enhancer":"绛红强化器","/items/rainbow_enhancer":"彩虹强化器","/items/holy_enhancer":"神圣强化器","/items/milk":"牛奶","/items/verdant_milk":"翠绿牛奶","/items/azure_milk":"蔚蓝牛奶","/items/burble_milk":"深紫牛奶","/items/crimson_milk":"绛红牛奶","/items/rainbow_milk":"彩虹牛奶","/items/holy_milk":"神圣牛奶","/items/cheese":"奶酪","/items/verdant_cheese":"翠绿奶酪","/items/azure_cheese":"蔚蓝奶酪","/items/burble_cheese":"深紫奶酪","/items/crimson_cheese":"绛红奶酪","/items/rainbow_cheese":"彩虹奶酪","/items/holy_cheese":"神圣奶酪","/items/log":"原木","/items/birch_log":"白桦原木","/items/cedar_log":"雪松原木","/items/purpleheart_log":"紫心原木","/items/ginkgo_log":"银杏原木","/items/redwood_log":"红杉原木","/items/arcane_log":"神秘原木","/items/lumber":"木板","/items/birch_lumber":"白桦木板","/items/cedar_lumber":"雪松木板","/items/purpleheart_lumber":"紫心木板","/items/ginkgo_lumber":"银杏木板","/items/redwood_lumber":"红杉木板","/items/arcane_lumber":"神秘木板","/items/rough_hide":"粗糙兽皮","/items/reptile_hide":"爬行动物皮","/items/gobo_hide":"哥布林皮","/items/beast_hide":"野兽皮","/items/umbral_hide":"暗影皮","/items/rough_leather":"粗糙皮革","/items/reptile_leather":"爬行动物皮革","/items/gobo_leather":"哥布林皮革","/items/beast_leather":"野兽皮革","/items/umbral_leather":"暗影皮革","/items/cotton":"棉花","/items/flax":"亚麻","/items/bamboo_branch":"竹子","/items/cocoon":"蚕茧","/items/radiant_fiber":"光辉纤维","/items/cotton_fabric":"棉花布料","/items/linen_fabric":"亚麻布料","/items/bamboo_fabric":"竹子布料","/items/silk_fabric":"丝绸","/items/radiant_fabric":"光辉布料","/items/egg":"鸡蛋","/items/wheat":"小麦","/items/sugar":"糖","/items/blueberry":"蓝莓","/items/blackberry":"黑莓","/items/strawberry":"草莓","/items/mooberry":"哞莓","/items/marsberry":"火星莓","/items/spaceberry":"太空莓","/items/apple":"苹果","/items/orange":"橙子","/items/plum":"李子","/items/peach":"桃子","/items/dragon_fruit":"火龙果","/items/star_fruit":"杨桃","/items/arabica_coffee_bean":"低级咖啡豆","/items/robusta_coffee_bean":"中级咖啡豆","/items/liberica_coffee_bean":"高级咖啡豆","/items/excelsa_coffee_bean":"特级咖啡豆","/items/fieriosa_coffee_bean":"火山咖啡豆","/items/spacia_coffee_bean":"太空咖啡豆","/items/green_tea_leaf":"绿茶叶","/items/black_tea_leaf":"黑茶叶","/items/burble_tea_leaf":"紫茶叶","/items/moolong_tea_leaf":"哞龙茶叶","/items/red_tea_leaf":"红茶叶","/items/emp_tea_leaf":"虚空茶叶","/items/catalyst_of_coinification":"点金催化剂","/items/catalyst_of_decomposition":"分解催化剂","/items/catalyst_of_transmutation":"转化催化剂","/items/prime_catalyst":"至高催化剂","/items/snake_fang":"蛇牙","/items/shoebill_feather":"鲸头鹳羽毛","/items/snail_shell":"蜗牛壳","/items/crab_pincer":"蟹钳","/items/turtle_shell":"乌龟壳","/items/marine_scale":"海洋鳞片","/items/treant_bark":"树皮","/items/centaur_hoof":"半人马蹄","/items/luna_wing":"月神翼","/items/gobo_rag":"哥布林抹布","/items/goggles":"护目镜","/items/magnifying_glass":"放大镜","/items/eye_of_the_watcher":"观察者之眼","/items/icy_cloth":"冰霜织物","/items/flaming_cloth":"烈焰织物","/items/sorcerers_sole":"魔法师鞋底","/items/chrono_sphere":"时空球","/items/frost_sphere":"冰霜球","/items/panda_fluff":"熊猫绒","/items/black_bear_fluff":"黑熊绒","/items/grizzly_bear_fluff":"棕熊绒","/items/polar_bear_fluff":"北极熊绒","/items/red_panda_fluff":"小熊猫绒","/items/magnet":"磁铁","/items/stalactite_shard":"钟乳石碎片","/items/living_granite":"花岗岩","/items/colossus_core":"巨像核心","/items/vampire_fang":"吸血鬼之牙","/items/werewolf_claw":"狼人之爪","/items/revenant_anima":"亡者之魂","/items/soul_fragment":"灵魂碎片","/items/infernal_ember":"地狱余烬","/items/demonic_core":"恶魔核心","/items/griffin_leather":"狮鹫之皮","/items/manticore_sting":"蝎狮之刺","/items/jackalope_antler":"鹿角兔之角","/items/dodocamel_plume":"渡渡驼之翎","/items/griffin_talon":"狮鹫之爪","/items/chimerical_refinement_shard":"奇幻精炼碎片","/items/acrobats_ribbon":"杂技师彩带","/items/magicians_cloth":"魔术师织物","/items/chaotic_chain":"混沌锁链","/items/cursed_ball":"诅咒之球","/items/sinister_refinement_shard":"阴森精炼碎片","/items/royal_cloth":"皇家织物","/items/knights_ingot":"骑士之锭","/items/bishops_scroll":"主教卷轴","/items/regal_jewel":"君王宝石","/items/sundering_jewel":"裂空宝石","/items/enchanted_refinement_shard":"秘法精炼碎片","/items/marksman_brooch":"神射胸针","/items/corsair_crest":"掠夺者徽章","/items/damaged_anchor":"破损船锚","/items/maelstrom_plating":"怒涛甲片","/items/kraken_leather":"克拉肯皮革","/items/kraken_fang":"克拉肯之牙","/items/pirate_refinement_shard":"海盗精炼碎片","/items/pathbreaker_lodestone":"开路者磁石","/items/pathfinder_lodestone":"探路者磁石","/items/pathseeker_lodestone":"寻路者磁石","/items/labyrinth_refinement_shard":"迷宫精炼碎片","/items/butter_of_proficiency":"精通之油","/items/thread_of_expertise":"专精之线","/items/branch_of_insight":"洞察之枝","/items/gluttonous_energy":"贪食能量","/items/guzzling_energy":"暴饮能量","/items/milking_essence":"挤奶精华","/items/foraging_essence":"采摘精华","/items/woodcutting_essence":"伐木精华","/items/cheesesmithing_essence":"奶酪锻造精华","/items/crafting_essence":"制作精华","/items/tailoring_essence":"缝纫精华","/items/cooking_essence":"烹饪精华","/items/brewing_essence":"冲泡精华","/items/alchemy_essence":"炼金精华","/items/enhancing_essence":"强化精华","/items/swamp_essence":"沼泽精华","/items/aqua_essence":"海洋精华","/items/jungle_essence":"丛林精华","/items/gobo_essence":"哥布林精华","/items/eyessence":"眼精华","/items/sorcerer_essence":"法师精华","/items/bear_essence":"熊熊精华","/items/golem_essence":"魔像精华","/items/twilight_essence":"暮光精华","/items/abyssal_essence":"地狱精华","/items/chimerical_essence":"奇幻精华","/items/sinister_essence":"阴森精华","/items/enchanted_essence":"秘法精华","/items/pirate_essence":"海盗精华","/items/labyrinth_essence":"迷宫精华","/items/task_crystal":"任务水晶","/items/star_fragment":"星光碎片","/items/pearl":"珍珠","/items/amber":"琥珀","/items/garnet":"石榴石","/items/jade":"翡翠","/items/amethyst":"紫水晶","/items/moonstone":"月亮石","/items/sunstone":"太阳石","/items/philosophers_stone":"贤者之石","/items/crushed_pearl":"珍珠碎片","/items/crushed_amber":"琥珀碎片","/items/crushed_garnet":"石榴石碎片","/items/crushed_jade":"翡翠碎片","/items/crushed_amethyst":"紫水晶碎片","/items/crushed_moonstone":"月亮石碎片","/items/crushed_sunstone":"太阳石碎片","/items/crushed_philosophers_stone":"贤者之石碎片","/items/shard_of_protection":"保护碎片","/items/mirror_of_protection":"保护之镜","/items/philosophers_mirror":"贤者之镜","/items/basic_torch":"基础火把","/items/advanced_torch":"进阶火把","/items/expert_torch":"专家火把","/items/basic_shroud":"基础斗篷","/items/advanced_shroud":"进阶斗篷","/items/expert_shroud":"专家斗篷","/items/basic_beacon":"基础探照灯","/items/advanced_beacon":"进阶探照灯","/items/expert_beacon":"专家探照灯","/items/basic_food_crate":"基础食物箱","/items/advanced_food_crate":"进阶食物箱","/items/expert_food_crate":"专家食物箱","/items/basic_tea_crate":"基础茶叶箱","/items/advanced_tea_crate":"进阶茶叶箱","/items/expert_tea_crate":"专家茶叶箱","/items/basic_coffee_crate":"基础咖啡箱","/items/advanced_coffee_crate":"进阶咖啡箱","/items/expert_coffee_crate":"专家咖啡箱"},xc={"/actions/milking/cow":"奶牛","/actions/milking/verdant_cow":"翠绿奶牛","/actions/milking/azure_cow":"蔚蓝奶牛","/actions/milking/burble_cow":"深紫奶牛","/actions/milking/crimson_cow":"绛红奶牛","/actions/milking/unicow":"彩虹奶牛","/actions/milking/holy_cow":"神圣奶牛","/actions/foraging/egg":"鸡蛋","/actions/foraging/wheat":"小麦","/actions/foraging/sugar":"糖","/actions/foraging/cotton":"棉花","/actions/foraging/farmland":"翠野农场","/actions/foraging/blueberry":"蓝莓","/actions/foraging/apple":"苹果","/actions/foraging/arabica_coffee_bean":"低级咖啡豆","/actions/foraging/flax":"亚麻","/actions/foraging/shimmering_lake":"波光湖泊","/actions/foraging/blackberry":"黑莓","/actions/foraging/orange":"橙子","/actions/foraging/robusta_coffee_bean":"中级咖啡豆","/actions/foraging/misty_forest":"迷雾森林","/actions/foraging/strawberry":"草莓","/actions/foraging/plum":"李子","/actions/foraging/liberica_coffee_bean":"高级咖啡豆","/actions/foraging/bamboo_branch":"竹子","/actions/foraging/burble_beach":"深紫沙滩","/actions/foraging/mooberry":"哞莓","/actions/foraging/peach":"桃子","/actions/foraging/excelsa_coffee_bean":"特级咖啡豆","/actions/foraging/cocoon":"蚕茧","/actions/foraging/silly_cow_valley":"傻牛山谷","/actions/foraging/marsberry":"火星莓","/actions/foraging/dragon_fruit":"火龙果","/actions/foraging/fieriosa_coffee_bean":"火山咖啡豆","/actions/foraging/olympus_mons":"奥林匹斯山","/actions/foraging/spaceberry":"太空莓","/actions/foraging/star_fruit":"杨桃","/actions/foraging/spacia_coffee_bean":"太空咖啡豆","/actions/foraging/radiant_fiber":"光辉纤维","/actions/foraging/asteroid_belt":"小行星带","/actions/woodcutting/tree":"树","/actions/woodcutting/birch_tree":"桦树","/actions/woodcutting/cedar_tree":"雪松树","/actions/woodcutting/purpleheart_tree":"紫心树","/actions/woodcutting/ginkgo_tree":"银杏树","/actions/woodcutting/redwood_tree":"红杉树","/actions/woodcutting/arcane_tree":"奥秘树","/actions/cheesesmithing/cheese":"奶酪","/actions/cheesesmithing/cheese_boots":"奶酪靴","/actions/cheesesmithing/cheese_gauntlets":"奶酪护手","/actions/cheesesmithing/cheese_sword":"奶酪剑","/actions/cheesesmithing/cheese_brush":"奶酪刷子","/actions/cheesesmithing/cheese_shears":"奶酪剪刀","/actions/cheesesmithing/cheese_hatchet":"奶酪斧头","/actions/cheesesmithing/cheese_spear":"奶酪长枪","/actions/cheesesmithing/cheese_hammer":"奶酪锤子","/actions/cheesesmithing/cheese_chisel":"奶酪凿子","/actions/cheesesmithing/cheese_needle":"奶酪针","/actions/cheesesmithing/cheese_spatula":"奶酪锅铲","/actions/cheesesmithing/cheese_pot":"奶酪壶","/actions/cheesesmithing/cheese_mace":"奶酪钉头锤","/actions/cheesesmithing/cheese_alembic":"奶酪蒸馏器","/actions/cheesesmithing/cheese_enhancer":"奶酪强化器","/actions/cheesesmithing/cheese_helmet":"奶酪头盔","/actions/cheesesmithing/cheese_buckler":"奶酪圆盾","/actions/cheesesmithing/cheese_bulwark":"奶酪重盾","/actions/cheesesmithing/cheese_plate_legs":"奶酪腿甲","/actions/cheesesmithing/cheese_plate_body":"奶酪胸甲","/actions/cheesesmithing/verdant_cheese":"翠绿奶酪","/actions/cheesesmithing/verdant_boots":"翠绿靴","/actions/cheesesmithing/verdant_gauntlets":"翠绿护手","/actions/cheesesmithing/verdant_sword":"翠绿剑","/actions/cheesesmithing/verdant_brush":"翠绿刷子","/actions/cheesesmithing/verdant_shears":"翠绿剪刀","/actions/cheesesmithing/verdant_hatchet":"翠绿斧头","/actions/cheesesmithing/verdant_spear":"翠绿长枪","/actions/cheesesmithing/verdant_hammer":"翠绿锤子","/actions/cheesesmithing/verdant_chisel":"翠绿凿子","/actions/cheesesmithing/verdant_needle":"翠绿针","/actions/cheesesmithing/verdant_spatula":"翠绿锅铲","/actions/cheesesmithing/verdant_pot":"翠绿壶","/actions/cheesesmithing/verdant_mace":"翠绿钉头锤","/actions/cheesesmithing/snake_fang_dirk":"蛇牙短剑","/actions/cheesesmithing/verdant_alembic":"翠绿蒸馏器","/actions/cheesesmithing/verdant_enhancer":"翠绿强化器","/actions/cheesesmithing/verdant_helmet":"翠绿头盔","/actions/cheesesmithing/verdant_buckler":"翠绿圆盾","/actions/cheesesmithing/verdant_bulwark":"翠绿重盾","/actions/cheesesmithing/verdant_plate_legs":"翠绿腿甲","/actions/cheesesmithing/verdant_plate_body":"翠绿胸甲","/actions/cheesesmithing/azure_cheese":"蔚蓝奶酪","/actions/cheesesmithing/azure_boots":"蔚蓝靴","/actions/cheesesmithing/basic_beacon":"基础探照灯","/actions/cheesesmithing/azure_gauntlets":"蔚蓝护手","/actions/cheesesmithing/azure_sword":"蔚蓝剑","/actions/cheesesmithing/azure_brush":"蔚蓝刷子","/actions/cheesesmithing/azure_shears":"蔚蓝剪刀","/actions/cheesesmithing/azure_hatchet":"蔚蓝斧头","/actions/cheesesmithing/azure_spear":"蔚蓝长枪","/actions/cheesesmithing/azure_hammer":"蔚蓝锤子","/actions/cheesesmithing/azure_chisel":"蔚蓝凿子","/actions/cheesesmithing/azure_needle":"蔚蓝针","/actions/cheesesmithing/azure_spatula":"蔚蓝锅铲","/actions/cheesesmithing/azure_pot":"蔚蓝壶","/actions/cheesesmithing/azure_mace":"蔚蓝钉头锤","/actions/cheesesmithing/pincer_gloves":"蟹钳手套","/actions/cheesesmithing/azure_alembic":"蔚蓝蒸馏器","/actions/cheesesmithing/azure_enhancer":"蔚蓝强化器","/actions/cheesesmithing/azure_helmet":"蔚蓝头盔","/actions/cheesesmithing/azure_buckler":"蔚蓝圆盾","/actions/cheesesmithing/azure_bulwark":"蔚蓝重盾","/actions/cheesesmithing/azure_plate_legs":"蔚蓝腿甲","/actions/cheesesmithing/snail_shell_helmet":"蜗牛壳头盔","/actions/cheesesmithing/azure_plate_body":"蔚蓝胸甲","/actions/cheesesmithing/turtle_shell_legs":"龟壳腿甲","/actions/cheesesmithing/turtle_shell_body":"龟壳胸甲","/actions/cheesesmithing/burble_cheese":"深紫奶酪","/actions/cheesesmithing/burble_boots":"深紫靴","/actions/cheesesmithing/burble_gauntlets":"深紫护手","/actions/cheesesmithing/burble_sword":"深紫剑","/actions/cheesesmithing/burble_brush":"深紫刷子","/actions/cheesesmithing/burble_shears":"深紫剪刀","/actions/cheesesmithing/burble_hatchet":"深紫斧头","/actions/cheesesmithing/burble_spear":"深紫长枪","/actions/cheesesmithing/burble_hammer":"深紫锤子","/actions/cheesesmithing/burble_chisel":"深紫凿子","/actions/cheesesmithing/burble_needle":"深紫针","/actions/cheesesmithing/burble_spatula":"深紫锅铲","/actions/cheesesmithing/burble_pot":"深紫壶","/actions/cheesesmithing/burble_mace":"深紫钉头锤","/actions/cheesesmithing/burble_alembic":"深紫蒸馏器","/actions/cheesesmithing/burble_enhancer":"深紫强化器","/actions/cheesesmithing/burble_helmet":"深紫头盔","/actions/cheesesmithing/burble_buckler":"深紫圆盾","/actions/cheesesmithing/burble_bulwark":"深紫重盾","/actions/cheesesmithing/burble_plate_legs":"深紫腿甲","/actions/cheesesmithing/burble_plate_body":"深紫胸甲","/actions/cheesesmithing/crimson_cheese":"绛红奶酪","/actions/cheesesmithing/crimson_boots":"绛红靴","/actions/cheesesmithing/advanced_beacon":"进阶探照灯","/actions/cheesesmithing/crimson_gauntlets":"绛红护手","/actions/cheesesmithing/crimson_sword":"绛红剑","/actions/cheesesmithing/crimson_brush":"绛红刷子","/actions/cheesesmithing/crimson_shears":"绛红剪刀","/actions/cheesesmithing/crimson_hatchet":"绛红斧头","/actions/cheesesmithing/crimson_spear":"绛红长枪","/actions/cheesesmithing/crimson_hammer":"绛红锤子","/actions/cheesesmithing/crimson_chisel":"绛红凿子","/actions/cheesesmithing/crimson_needle":"绛红针","/actions/cheesesmithing/crimson_spatula":"绛红锅铲","/actions/cheesesmithing/crimson_pot":"绛红壶","/actions/cheesesmithing/crimson_mace":"绛红钉头锤","/actions/cheesesmithing/crimson_alembic":"绛红蒸馏器","/actions/cheesesmithing/crimson_enhancer":"绛红强化器","/actions/cheesesmithing/crimson_helmet":"绛红头盔","/actions/cheesesmithing/crimson_buckler":"绛红圆盾","/actions/cheesesmithing/crimson_bulwark":"绛红重盾","/actions/cheesesmithing/crimson_plate_legs":"绛红腿甲","/actions/cheesesmithing/vision_helmet":"视觉头盔","/actions/cheesesmithing/vision_shield":"视觉盾","/actions/cheesesmithing/crimson_plate_body":"绛红胸甲","/actions/cheesesmithing/rainbow_cheese":"彩虹奶酪","/actions/cheesesmithing/rainbow_boots":"彩虹靴","/actions/cheesesmithing/black_bear_shoes":"黑熊鞋","/actions/cheesesmithing/grizzly_bear_shoes":"棕熊鞋","/actions/cheesesmithing/polar_bear_shoes":"北极熊鞋","/actions/cheesesmithing/rainbow_gauntlets":"彩虹护手","/actions/cheesesmithing/rainbow_sword":"彩虹剑","/actions/cheesesmithing/panda_gloves":"熊猫手套","/actions/cheesesmithing/rainbow_brush":"彩虹刷子","/actions/cheesesmithing/rainbow_shears":"彩虹剪刀","/actions/cheesesmithing/rainbow_hatchet":"彩虹斧头","/actions/cheesesmithing/rainbow_spear":"彩虹长枪","/actions/cheesesmithing/rainbow_hammer":"彩虹锤子","/actions/cheesesmithing/rainbow_chisel":"彩虹凿子","/actions/cheesesmithing/rainbow_needle":"彩虹针","/actions/cheesesmithing/rainbow_spatula":"彩虹锅铲","/actions/cheesesmithing/rainbow_pot":"彩虹壶","/actions/cheesesmithing/rainbow_mace":"彩虹钉头锤","/actions/cheesesmithing/rainbow_alembic":"彩虹蒸馏器","/actions/cheesesmithing/rainbow_enhancer":"彩虹强化器","/actions/cheesesmithing/rainbow_helmet":"彩虹头盔","/actions/cheesesmithing/rainbow_buckler":"彩虹圆盾","/actions/cheesesmithing/rainbow_bulwark":"彩虹重盾","/actions/cheesesmithing/rainbow_plate_legs":"彩虹腿甲","/actions/cheesesmithing/rainbow_plate_body":"彩虹胸甲","/actions/cheesesmithing/holy_cheese":"神圣奶酪","/actions/cheesesmithing/holy_boots":"神圣靴","/actions/cheesesmithing/expert_beacon":"专家探照灯","/actions/cheesesmithing/holy_gauntlets":"神圣护手","/actions/cheesesmithing/holy_sword":"神圣剑","/actions/cheesesmithing/holy_brush":"神圣刷子","/actions/cheesesmithing/holy_shears":"神圣剪刀","/actions/cheesesmithing/holy_hatchet":"神圣斧头","/actions/cheesesmithing/holy_spear":"神圣长枪","/actions/cheesesmithing/holy_hammer":"神圣锤子","/actions/cheesesmithing/holy_chisel":"神圣凿子","/actions/cheesesmithing/holy_needle":"神圣针","/actions/cheesesmithing/holy_spatula":"神圣锅铲","/actions/cheesesmithing/holy_pot":"神圣壶","/actions/cheesesmithing/holy_mace":"神圣钉头锤","/actions/cheesesmithing/magnetic_gloves":"磁力手套","/actions/cheesesmithing/stalactite_spear":"石钟长枪","/actions/cheesesmithing/granite_bludgeon":"花岗岩大棒","/actions/cheesesmithing/vampire_fang_dirk":"吸血鬼短剑","/actions/cheesesmithing/werewolf_slasher":"狼人关刀","/actions/cheesesmithing/holy_alembic":"神圣蒸馏器","/actions/cheesesmithing/holy_enhancer":"神圣强化器","/actions/cheesesmithing/holy_helmet":"神圣头盔","/actions/cheesesmithing/holy_buckler":"神圣圆盾","/actions/cheesesmithing/holy_bulwark":"神圣重盾","/actions/cheesesmithing/holy_plate_legs":"神圣腿甲","/actions/cheesesmithing/holy_plate_body":"神圣胸甲","/actions/cheesesmithing/celestial_brush":"星空刷子","/actions/cheesesmithing/celestial_shears":"星空剪刀","/actions/cheesesmithing/celestial_hatchet":"星空斧头","/actions/cheesesmithing/celestial_hammer":"星空锤子","/actions/cheesesmithing/celestial_chisel":"星空凿子","/actions/cheesesmithing/celestial_needle":"星空针","/actions/cheesesmithing/celestial_spatula":"星空锅铲","/actions/cheesesmithing/celestial_pot":"星空壶","/actions/cheesesmithing/celestial_alembic":"星空蒸馏器","/actions/cheesesmithing/celestial_enhancer":"星空强化器","/actions/cheesesmithing/colossus_plate_body":"巨像胸甲","/actions/cheesesmithing/colossus_plate_legs":"巨像腿甲","/actions/cheesesmithing/demonic_plate_body":"恶魔胸甲","/actions/cheesesmithing/demonic_plate_legs":"恶魔腿甲","/actions/cheesesmithing/spiked_bulwark":"尖刺重盾","/actions/cheesesmithing/pathbreaker_boots":"开路者靴","/actions/cheesesmithing/dodocamel_gauntlets":"渡渡驼护手","/actions/cheesesmithing/corsair_helmet":"掠夺者头盔","/actions/cheesesmithing/knights_aegis":"骑士盾","/actions/cheesesmithing/anchorbound_plate_legs":"锚定腿甲","/actions/cheesesmithing/maelstrom_plate_legs":"怒涛腿甲","/actions/cheesesmithing/griffin_bulwark":"狮鹫重盾","/actions/cheesesmithing/furious_spear":"狂怒长枪","/actions/cheesesmithing/chaotic_flail":"混沌连枷","/actions/cheesesmithing/regal_sword":"君王之剑","/actions/cheesesmithing/anchorbound_plate_body":"锚定胸甲","/actions/cheesesmithing/maelstrom_plate_body":"怒涛胸甲","/actions/cheesesmithing/pathbreaker_boots_refined":"开路者靴 ★","/actions/cheesesmithing/dodocamel_gauntlets_refined":"渡渡驼护手 ★","/actions/cheesesmithing/corsair_helmet_refined":"掠夺者头盔 ★","/actions/cheesesmithing/knights_aegis_refined":"骑士盾 ★","/actions/cheesesmithing/anchorbound_plate_legs_refined":"锚定腿甲 ★","/actions/cheesesmithing/maelstrom_plate_legs_refined":"怒涛腿甲 ★","/actions/cheesesmithing/griffin_bulwark_refined":"狮鹫重盾 ★","/actions/cheesesmithing/furious_spear_refined":"狂怒长枪 ★","/actions/cheesesmithing/chaotic_flail_refined":"混沌连枷 ★","/actions/cheesesmithing/regal_sword_refined":"君王之剑 ★","/actions/cheesesmithing/anchorbound_plate_body_refined":"锚定胸甲 ★","/actions/cheesesmithing/maelstrom_plate_body_refined":"怒涛胸甲 ★","/actions/crafting/lumber":"木板","/actions/crafting/wooden_crossbow":"木弩","/actions/crafting/wooden_water_staff":"木制水法杖","/actions/crafting/basic_task_badge":"基础任务徽章","/actions/crafting/advanced_task_badge":"高级任务徽章","/actions/crafting/expert_task_badge":"专家任务徽章","/actions/crafting/wooden_shield":"木盾","/actions/crafting/wooden_nature_staff":"木制自然法杖","/actions/crafting/wooden_bow":"木弓","/actions/crafting/wooden_fire_staff":"木制火法杖","/actions/crafting/birch_lumber":"白桦木板","/actions/crafting/birch_crossbow":"桦木弩","/actions/crafting/birch_water_staff":"桦木水法杖","/actions/crafting/crushed_pearl":"珍珠碎片","/actions/crafting/birch_shield":"桦木盾","/actions/crafting/birch_nature_staff":"桦木自然法杖","/actions/crafting/birch_bow":"桦木弓","/actions/crafting/ring_of_gathering":"采集戒指","/actions/crafting/birch_fire_staff":"桦木火法杖","/actions/crafting/earrings_of_gathering":"采集耳环","/actions/crafting/cedar_lumber":"雪松木板","/actions/crafting/cedar_crossbow":"雪松弩","/actions/crafting/cedar_water_staff":"雪松水法杖","/actions/crafting/basic_milking_charm":"基础挤奶护符","/actions/crafting/basic_foraging_charm":"基础采摘护符","/actions/crafting/basic_woodcutting_charm":"基础伐木护符","/actions/crafting/basic_cheesesmithing_charm":"基础奶酪锻造护符","/actions/crafting/basic_crafting_charm":"基础制作护符","/actions/crafting/basic_tailoring_charm":"基础缝纫护符","/actions/crafting/basic_cooking_charm":"基础烹饪护符","/actions/crafting/basic_brewing_charm":"基础冲泡护符","/actions/crafting/basic_alchemy_charm":"基础炼金护符","/actions/crafting/basic_enhancing_charm":"基础强化护符","/actions/crafting/basic_torch":"基础火把","/actions/crafting/cedar_shield":"雪松盾","/actions/crafting/cedar_nature_staff":"雪松自然法杖","/actions/crafting/cedar_bow":"雪松弓","/actions/crafting/crushed_amber":"琥珀碎片","/actions/crafting/cedar_fire_staff":"雪松火法杖","/actions/crafting/ring_of_essence_find":"精华发现戒指","/actions/crafting/earrings_of_essence_find":"精华发现耳环","/actions/crafting/necklace_of_efficiency":"效率项链","/actions/crafting/purpleheart_lumber":"紫心木板","/actions/crafting/purpleheart_crossbow":"紫心弩","/actions/crafting/purpleheart_water_staff":"紫心水法杖","/actions/crafting/purpleheart_shield":"紫心盾","/actions/crafting/purpleheart_nature_staff":"紫心自然法杖","/actions/crafting/purpleheart_bow":"紫心弓","/actions/crafting/advanced_milking_charm":"高级挤奶护符","/actions/crafting/advanced_foraging_charm":"高级采摘护符","/actions/crafting/advanced_woodcutting_charm":"高级伐木护符","/actions/crafting/advanced_cheesesmithing_charm":"高级奶酪锻造护符","/actions/crafting/advanced_crafting_charm":"高级制作护符","/actions/crafting/advanced_tailoring_charm":"高级缝纫护符","/actions/crafting/advanced_cooking_charm":"高级烹饪护符","/actions/crafting/advanced_brewing_charm":"高级冲泡护符","/actions/crafting/advanced_alchemy_charm":"高级炼金护符","/actions/crafting/advanced_enhancing_charm":"高级强化护符","/actions/crafting/advanced_stamina_charm":"高级耐力护符","/actions/crafting/advanced_intelligence_charm":"高级智力护符","/actions/crafting/advanced_attack_charm":"高级攻击护符","/actions/crafting/advanced_defense_charm":"高级防御护符","/actions/crafting/advanced_melee_charm":"高级近战护符","/actions/crafting/advanced_ranged_charm":"高级远程护符","/actions/crafting/advanced_magic_charm":"高级魔法护符","/actions/crafting/crushed_garnet":"石榴石碎片","/actions/crafting/crushed_jade":"翡翠碎片","/actions/crafting/crushed_amethyst":"紫水晶碎片","/actions/crafting/catalyst_of_coinification":"点金催化剂","/actions/crafting/treant_shield":"树人盾","/actions/crafting/purpleheart_fire_staff":"紫心火法杖","/actions/crafting/ring_of_regeneration":"恢复戒指","/actions/crafting/earrings_of_regeneration":"恢复耳环","/actions/crafting/fighter_necklace":"战士项链","/actions/crafting/ginkgo_lumber":"银杏木板","/actions/crafting/ginkgo_crossbow":"银杏弩","/actions/crafting/ginkgo_water_staff":"银杏水法杖","/actions/crafting/ring_of_armor":"护甲戒指","/actions/crafting/catalyst_of_decomposition":"分解催化剂","/actions/crafting/advanced_torch":"进阶火把","/actions/crafting/ginkgo_shield":"银杏盾","/actions/crafting/earrings_of_armor":"护甲耳环","/actions/crafting/ginkgo_nature_staff":"银杏自然法杖","/actions/crafting/ranger_necklace":"射手项链","/actions/crafting/ginkgo_bow":"银杏弓","/actions/crafting/ring_of_resistance":"抗性戒指","/actions/crafting/crushed_moonstone":"月亮石碎片","/actions/crafting/ginkgo_fire_staff":"银杏火法杖","/actions/crafting/earrings_of_resistance":"抗性耳环","/actions/crafting/wizard_necklace":"巫师项链","/actions/crafting/ring_of_rare_find":"稀有发现戒指","/actions/crafting/expert_milking_charm":"专家挤奶护符","/actions/crafting/expert_foraging_charm":"专家采摘护符","/actions/crafting/expert_woodcutting_charm":"专家伐木护符","/actions/crafting/expert_cheesesmithing_charm":"专家奶酪锻造护符","/actions/crafting/expert_crafting_charm":"专家制作护符","/actions/crafting/expert_tailoring_charm":"专家缝纫护符","/actions/crafting/expert_cooking_charm":"专家烹饪护符","/actions/crafting/expert_brewing_charm":"专家冲泡护符","/actions/crafting/expert_alchemy_charm":"专家炼金护符","/actions/crafting/expert_enhancing_charm":"专家强化护符","/actions/crafting/expert_stamina_charm":"专家耐力护符","/actions/crafting/expert_intelligence_charm":"专家智力护符","/actions/crafting/expert_attack_charm":"专家攻击护符","/actions/crafting/expert_defense_charm":"专家防御护符","/actions/crafting/expert_melee_charm":"专家近战护符","/actions/crafting/expert_ranged_charm":"专家远程护符","/actions/crafting/expert_magic_charm":"专家魔法护符","/actions/crafting/catalyst_of_transmutation":"转化催化剂","/actions/crafting/earrings_of_rare_find":"稀有发现耳环","/actions/crafting/necklace_of_wisdom":"经验项链","/actions/crafting/redwood_lumber":"红杉木板","/actions/crafting/redwood_crossbow":"红杉弩","/actions/crafting/redwood_water_staff":"红杉水法杖","/actions/crafting/redwood_shield":"红杉盾","/actions/crafting/redwood_nature_staff":"红杉自然法杖","/actions/crafting/redwood_bow":"红杉弓","/actions/crafting/crushed_sunstone":"太阳石碎片","/actions/crafting/chimerical_entry_key":"奇幻钥匙","/actions/crafting/chimerical_chest_key":"奇幻宝箱钥匙","/actions/crafting/eye_watch":"掌上监工","/actions/crafting/watchful_relic":"警戒遗物","/actions/crafting/redwood_fire_staff":"红杉火法杖","/actions/crafting/ring_of_critical_strike":"暴击戒指","/actions/crafting/mirror_of_protection":"保护之镜","/actions/crafting/earrings_of_critical_strike":"暴击耳环","/actions/crafting/necklace_of_speed":"速度项链","/actions/crafting/arcane_lumber":"神秘木板","/actions/crafting/arcane_crossbow":"神秘弩","/actions/crafting/arcane_water_staff":"神秘水法杖","/actions/crafting/master_milking_charm":"大师挤奶护符","/actions/crafting/master_foraging_charm":"大师采摘护符","/actions/crafting/master_woodcutting_charm":"大师伐木护符","/actions/crafting/master_cheesesmithing_charm":"大师奶酪锻造护符","/actions/crafting/master_crafting_charm":"大师制作护符","/actions/crafting/master_tailoring_charm":"大师缝纫护符","/actions/crafting/master_cooking_charm":"大师烹饪护符","/actions/crafting/master_brewing_charm":"大师冲泡护符","/actions/crafting/master_alchemy_charm":"大师炼金护符","/actions/crafting/master_enhancing_charm":"大师强化护符","/actions/crafting/master_stamina_charm":"大师耐力护符","/actions/crafting/master_intelligence_charm":"大师智力护符","/actions/crafting/master_attack_charm":"大师攻击护符","/actions/crafting/master_defense_charm":"大师防御护符","/actions/crafting/master_melee_charm":"大师近战护符","/actions/crafting/master_ranged_charm":"大师远程护符","/actions/crafting/master_magic_charm":"大师魔法护符","/actions/crafting/sinister_entry_key":"阴森钥匙","/actions/crafting/sinister_chest_key":"阴森宝箱钥匙","/actions/crafting/expert_torch":"专家火把","/actions/crafting/arcane_shield":"神秘盾","/actions/crafting/arcane_nature_staff":"神秘自然法杖","/actions/crafting/manticore_shield":"蝎狮盾","/actions/crafting/arcane_bow":"神秘弓","/actions/crafting/enchanted_entry_key":"秘法钥匙","/actions/crafting/enchanted_chest_key":"秘法宝箱钥匙","/actions/crafting/pirate_entry_key":"海盗钥匙","/actions/crafting/pirate_chest_key":"海盗宝箱钥匙","/actions/crafting/arcane_fire_staff":"神秘火法杖","/actions/crafting/vampiric_bow":"吸血弓","/actions/crafting/soul_hunter_crossbow":"灵魂猎手弩","/actions/crafting/frost_staff":"冰霜法杖","/actions/crafting/infernal_battlestaff":"炼狱法杖","/actions/crafting/jackalope_staff":"鹿角兔之杖","/actions/crafting/philosophers_ring":"贤者戒指","/actions/crafting/crushed_philosophers_stone":"贤者之石碎片","/actions/crafting/philosophers_earrings":"贤者耳环","/actions/crafting/philosophers_necklace":"贤者项链","/actions/crafting/bishops_codex":"主教法典","/actions/crafting/cursed_bow":"咒怨之弓","/actions/crafting/sundering_crossbow":"裂空之弩","/actions/crafting/rippling_trident":"涟漪三叉戟","/actions/crafting/blooming_trident":"绽放三叉戟","/actions/crafting/blazing_trident":"炽焰三叉戟","/actions/crafting/grandmaster_milking_charm":"宗师挤奶护符","/actions/crafting/grandmaster_foraging_charm":"宗师采摘护符","/actions/crafting/grandmaster_woodcutting_charm":"宗师伐木护符","/actions/crafting/grandmaster_cheesesmithing_charm":"宗师奶酪锻造护符","/actions/crafting/grandmaster_crafting_charm":"宗师制作护符","/actions/crafting/grandmaster_tailoring_charm":"宗师缝纫护符","/actions/crafting/grandmaster_cooking_charm":"宗师烹饪护符","/actions/crafting/grandmaster_brewing_charm":"宗师冲泡护符","/actions/crafting/grandmaster_alchemy_charm":"宗师炼金护符","/actions/crafting/grandmaster_enhancing_charm":"宗师强化护符","/actions/crafting/grandmaster_stamina_charm":"宗师耐力护符","/actions/crafting/grandmaster_intelligence_charm":"宗师智力护符","/actions/crafting/grandmaster_attack_charm":"宗师攻击护符","/actions/crafting/grandmaster_defense_charm":"宗师防御护符","/actions/crafting/grandmaster_melee_charm":"宗师近战护符","/actions/crafting/grandmaster_ranged_charm":"宗师远程护符","/actions/crafting/grandmaster_magic_charm":"宗师魔法护符","/actions/crafting/philosophers_mirror":"贤者之镜","/actions/crafting/bishops_codex_refined":"主教法典 ★","/actions/crafting/cursed_bow_refined":"咒怨之弓 ★","/actions/crafting/sundering_crossbow_refined":"裂空之弩 ★","/actions/crafting/rippling_trident_refined":"涟漪三叉戟 ★","/actions/crafting/blooming_trident_refined":"绽放三叉戟 ★","/actions/crafting/blazing_trident_refined":"炽焰三叉戟 ★","/actions/tailoring/rough_leather":"粗糙皮革","/actions/tailoring/cotton_fabric":"棉花布料","/actions/tailoring/rough_boots":"粗糙靴","/actions/tailoring/cotton_boots":"棉靴","/actions/tailoring/rough_bracers":"粗糙护腕","/actions/tailoring/cotton_gloves":"棉手套","/actions/tailoring/small_pouch":"小袋子","/actions/tailoring/rough_hood":"粗糙兜帽","/actions/tailoring/cotton_hat":"棉帽","/actions/tailoring/rough_chaps":"粗糙皮裤","/actions/tailoring/cotton_robe_bottoms":"棉袍裙","/actions/tailoring/rough_tunic":"粗糙皮衣","/actions/tailoring/cotton_robe_top":"棉袍服","/actions/tailoring/reptile_leather":"爬行动物皮革","/actions/tailoring/linen_fabric":"亚麻布料","/actions/tailoring/reptile_boots":"爬行动物靴","/actions/tailoring/linen_boots":"亚麻靴","/actions/tailoring/reptile_bracers":"爬行动物护腕","/actions/tailoring/linen_gloves":"亚麻手套","/actions/tailoring/basic_shroud":"基础斗篷","/actions/tailoring/reptile_hood":"爬行动物兜帽","/actions/tailoring/linen_hat":"亚麻帽","/actions/tailoring/reptile_chaps":"爬行动物皮裤","/actions/tailoring/linen_robe_bottoms":"亚麻袍裙","/actions/tailoring/medium_pouch":"中袋子","/actions/tailoring/reptile_tunic":"爬行动物皮衣","/actions/tailoring/linen_robe_top":"亚麻袍服","/actions/tailoring/shoebill_shoes":"鲸头鹳鞋","/actions/tailoring/gobo_leather":"哥布林皮革","/actions/tailoring/bamboo_fabric":"竹子布料","/actions/tailoring/gobo_boots":"哥布林靴","/actions/tailoring/bamboo_boots":"竹靴","/actions/tailoring/gobo_bracers":"哥布林护腕","/actions/tailoring/bamboo_gloves":"竹手套","/actions/tailoring/gobo_hood":"哥布林兜帽","/actions/tailoring/bamboo_hat":"竹帽","/actions/tailoring/gobo_chaps":"哥布林皮裤","/actions/tailoring/bamboo_robe_bottoms":"竹袍裙","/actions/tailoring/large_pouch":"大袋子","/actions/tailoring/gobo_tunic":"哥布林皮衣","/actions/tailoring/bamboo_robe_top":"竹袍服","/actions/tailoring/marine_tunic":"海洋皮衣","/actions/tailoring/marine_chaps":"航海皮裤","/actions/tailoring/icy_robe_top":"冰霜袍服","/actions/tailoring/icy_robe_bottoms":"冰霜袍裙","/actions/tailoring/flaming_robe_top":"烈焰袍服","/actions/tailoring/flaming_robe_bottoms":"烈焰袍裙","/actions/tailoring/advanced_shroud":"进阶斗篷","/actions/tailoring/beast_leather":"野兽皮革","/actions/tailoring/silk_fabric":"丝绸","/actions/tailoring/beast_boots":"野兽靴","/actions/tailoring/silk_boots":"丝靴","/actions/tailoring/beast_bracers":"野兽护腕","/actions/tailoring/silk_gloves":"丝手套","/actions/tailoring/collectors_boots":"收藏家靴","/actions/tailoring/sighted_bracers":"瞄准护腕","/actions/tailoring/beast_hood":"野兽兜帽","/actions/tailoring/silk_hat":"丝帽","/actions/tailoring/beast_chaps":"野兽皮裤","/actions/tailoring/silk_robe_bottoms":"丝绸袍裙","/actions/tailoring/centaur_boots":"半人马靴","/actions/tailoring/sorcerer_boots":"巫师靴","/actions/tailoring/giant_pouch":"巨大袋子","/actions/tailoring/beast_tunic":"野兽皮衣","/actions/tailoring/silk_robe_top":"丝绸袍服","/actions/tailoring/red_culinary_hat":"红色厨师帽","/actions/tailoring/luna_robe_top":"月神袍服","/actions/tailoring/luna_robe_bottoms":"月神袍裙","/actions/tailoring/umbral_leather":"暗影皮革","/actions/tailoring/radiant_fabric":"光辉布料","/actions/tailoring/umbral_boots":"暗影靴","/actions/tailoring/radiant_boots":"光辉靴","/actions/tailoring/umbral_bracers":"暗影护腕","/actions/tailoring/radiant_gloves":"光辉手套","/actions/tailoring/enchanted_gloves":"附魔手套","/actions/tailoring/fluffy_red_hat":"蓬松红帽子","/actions/tailoring/chrono_gloves":"时空手套","/actions/tailoring/expert_shroud":"专家斗篷","/actions/tailoring/umbral_hood":"暗影兜帽","/actions/tailoring/radiant_hat":"光辉帽","/actions/tailoring/umbral_chaps":"暗影皮裤","/actions/tailoring/radiant_robe_bottoms":"光辉袍裙","/actions/tailoring/umbral_tunic":"暗影皮衣","/actions/tailoring/radiant_robe_top":"光辉袍服","/actions/tailoring/revenant_chaps":"亡灵皮裤","/actions/tailoring/griffin_chaps":"狮鹫皮裤","/actions/tailoring/dairyhands_top":"挤奶工上衣","/actions/tailoring/dairyhands_bottoms":"挤奶工下装","/actions/tailoring/foragers_top":"采摘者上衣","/actions/tailoring/foragers_bottoms":"采摘者下装","/actions/tailoring/lumberjacks_top":"伐木工上衣","/actions/tailoring/lumberjacks_bottoms":"伐木工下装","/actions/tailoring/cheesemakers_top":"奶酪师上衣","/actions/tailoring/cheesemakers_bottoms":"奶酪师下装","/actions/tailoring/crafters_top":"工匠上衣","/actions/tailoring/crafters_bottoms":"工匠下装","/actions/tailoring/tailors_top":"裁缝上衣","/actions/tailoring/tailors_bottoms":"裁缝下装","/actions/tailoring/chefs_top":"厨师上衣","/actions/tailoring/chefs_bottoms":"厨师下装","/actions/tailoring/brewers_top":"饮品师上衣","/actions/tailoring/brewers_bottoms":"饮品师下装","/actions/tailoring/alchemists_top":"炼金师上衣","/actions/tailoring/alchemists_bottoms":"炼金师下装","/actions/tailoring/enhancers_top":"强化师上衣","/actions/tailoring/enhancers_bottoms":"强化师下装","/actions/tailoring/revenant_tunic":"亡灵皮衣","/actions/tailoring/griffin_tunic":"狮鹫皮衣","/actions/tailoring/gluttonous_pouch":"贪食之袋","/actions/tailoring/guzzling_pouch":"暴饮之囊","/actions/tailoring/pathfinder_boots":"探路者靴","/actions/tailoring/pathseeker_boots":"寻路者靴","/actions/tailoring/marksman_bracers":"神射护腕","/actions/tailoring/acrobatic_hood":"杂技师兜帽","/actions/tailoring/magicians_hat":"魔术师帽","/actions/tailoring/kraken_chaps":"克拉肯皮裤","/actions/tailoring/royal_water_robe_bottoms":"皇家水系袍裙","/actions/tailoring/royal_nature_robe_bottoms":"皇家自然系袍裙","/actions/tailoring/royal_fire_robe_bottoms":"皇家火系袍裙","/actions/tailoring/kraken_tunic":"克拉肯皮衣","/actions/tailoring/royal_water_robe_top":"皇家水系袍服","/actions/tailoring/royal_nature_robe_top":"皇家自然系袍服","/actions/tailoring/royal_fire_robe_top":"皇家火系袍服","/actions/tailoring/gatherer_cape_refined":"采集者披风 ★","/actions/tailoring/artificer_cape_refined":"工匠披风 ★","/actions/tailoring/culinary_cape_refined":"厨师披风 ★","/actions/tailoring/chance_cape_refined":"机缘披风 ★","/actions/tailoring/chimerical_quiver_refined":"奇幻箭袋 ★","/actions/tailoring/sinister_cape_refined":"阴森披风 ★","/actions/tailoring/enchanted_cloak_refined":"秘法披风 ★","/actions/tailoring/pathfinder_boots_refined":"探路者靴 ★","/actions/tailoring/pathseeker_boots_refined":"寻路者靴 ★","/actions/tailoring/marksman_bracers_refined":"神射护腕 ★","/actions/tailoring/acrobatic_hood_refined":"杂技师兜帽 ★","/actions/tailoring/magicians_hat_refined":"魔术师帽 ★","/actions/tailoring/kraken_chaps_refined":"克拉肯皮裤 ★","/actions/tailoring/royal_water_robe_bottoms_refined":"皇家水系袍裙 ★","/actions/tailoring/royal_nature_robe_bottoms_refined":"皇家自然系袍裙 ★","/actions/tailoring/royal_fire_robe_bottoms_refined":"皇家火系袍裙 ★","/actions/tailoring/kraken_tunic_refined":"克拉肯皮衣 ★","/actions/tailoring/royal_water_robe_top_refined":"皇家水系袍服 ★","/actions/tailoring/royal_nature_robe_top_refined":"皇家自然系袍服 ★","/actions/tailoring/royal_fire_robe_top_refined":"皇家火系袍服 ★","/actions/cooking/donut":"甜甜圈","/actions/cooking/cupcake":"纸杯蛋糕","/actions/cooking/gummy":"软糖","/actions/cooking/yogurt":"酸奶","/actions/cooking/blueberry_donut":"蓝莓甜甜圈","/actions/cooking/blueberry_cake":"蓝莓蛋糕","/actions/cooking/apple_gummy":"苹果软糖","/actions/cooking/apple_yogurt":"苹果酸奶","/actions/cooking/blackberry_donut":"黑莓甜甜圈","/actions/cooking/blackberry_cake":"黑莓蛋糕","/actions/cooking/orange_gummy":"橙子软糖","/actions/cooking/orange_yogurt":"橙子酸奶","/actions/cooking/basic_food_crate":"基础食物箱","/actions/cooking/strawberry_donut":"草莓甜甜圈","/actions/cooking/strawberry_cake":"草莓蛋糕","/actions/cooking/plum_gummy":"李子软糖","/actions/cooking/plum_yogurt":"李子酸奶","/actions/cooking/mooberry_donut":"哞莓甜甜圈","/actions/cooking/mooberry_cake":"哞莓蛋糕","/actions/cooking/peach_gummy":"桃子软糖","/actions/cooking/peach_yogurt":"桃子酸奶","/actions/cooking/advanced_food_crate":"进阶食物箱","/actions/cooking/marsberry_donut":"火星莓甜甜圈","/actions/cooking/marsberry_cake":"火星莓蛋糕","/actions/cooking/dragon_fruit_gummy":"火龙果软糖","/actions/cooking/dragon_fruit_yogurt":"火龙果酸奶","/actions/cooking/spaceberry_donut":"太空莓甜甜圈","/actions/cooking/spaceberry_cake":"太空莓蛋糕","/actions/cooking/star_fruit_gummy":"杨桃软糖","/actions/cooking/star_fruit_yogurt":"杨桃酸奶","/actions/cooking/expert_food_crate":"专家食物箱","/actions/brewing/milking_tea":"挤奶茶","/actions/brewing/stamina_coffee":"耐力咖啡","/actions/brewing/foraging_tea":"采摘茶","/actions/brewing/intelligence_coffee":"智力咖啡","/actions/brewing/gathering_tea":"采集茶","/actions/brewing/woodcutting_tea":"伐木茶","/actions/brewing/cooking_tea":"烹饪茶","/actions/brewing/defense_coffee":"防御咖啡","/actions/brewing/brewing_tea":"冲泡茶","/actions/brewing/attack_coffee":"攻击咖啡","/actions/brewing/gourmet_tea":"美食茶","/actions/brewing/alchemy_tea":"炼金茶","/actions/brewing/enhancing_tea":"强化茶","/actions/brewing/cheesesmithing_tea":"奶酪锻造茶","/actions/brewing/melee_coffee":"近战咖啡","/actions/brewing/basic_tea_crate":"基础茶叶箱","/actions/brewing/basic_coffee_crate":"基础咖啡箱","/actions/brewing/crafting_tea":"制作茶","/actions/brewing/ranged_coffee":"远程咖啡","/actions/brewing/wisdom_tea":"经验茶","/actions/brewing/wisdom_coffee":"经验咖啡","/actions/brewing/tailoring_tea":"缝纫茶","/actions/brewing/magic_coffee":"魔法咖啡","/actions/brewing/super_milking_tea":"超级挤奶茶","/actions/brewing/super_stamina_coffee":"超级耐力咖啡","/actions/brewing/super_foraging_tea":"超级采摘茶","/actions/brewing/super_intelligence_coffee":"超级智力咖啡","/actions/brewing/processing_tea":"加工茶","/actions/brewing/lucky_coffee":"幸运咖啡","/actions/brewing/super_woodcutting_tea":"超级伐木茶","/actions/brewing/super_cooking_tea":"超级烹饪茶","/actions/brewing/super_defense_coffee":"超级防御咖啡","/actions/brewing/advanced_tea_crate":"进阶茶叶箱","/actions/brewing/advanced_coffee_crate":"进阶咖啡箱","/actions/brewing/super_brewing_tea":"超级冲泡茶","/actions/brewing/ultra_milking_tea":"究极挤奶茶","/actions/brewing/super_attack_coffee":"超级攻击咖啡","/actions/brewing/ultra_stamina_coffee":"究极耐力咖啡","/actions/brewing/efficiency_tea":"效率茶","/actions/brewing/swiftness_coffee":"迅捷咖啡","/actions/brewing/super_alchemy_tea":"超级炼金茶","/actions/brewing/super_enhancing_tea":"超级强化茶","/actions/brewing/ultra_foraging_tea":"究极采摘茶","/actions/brewing/ultra_intelligence_coffee":"究极智力咖啡","/actions/brewing/channeling_coffee":"吟唱咖啡","/actions/brewing/super_cheesesmithing_tea":"超级奶酪锻造茶","/actions/brewing/ultra_woodcutting_tea":"究极伐木茶","/actions/brewing/super_melee_coffee":"超级近战咖啡","/actions/brewing/artisan_tea":"工匠茶","/actions/brewing/super_crafting_tea":"超级制作茶","/actions/brewing/ultra_cooking_tea":"究极烹饪茶","/actions/brewing/super_ranged_coffee":"超级远程咖啡","/actions/brewing/ultra_defense_coffee":"究极防御咖啡","/actions/brewing/catalytic_tea":"催化茶","/actions/brewing/critical_coffee":"暴击咖啡","/actions/brewing/super_tailoring_tea":"超级缝纫茶","/actions/brewing/ultra_brewing_tea":"究极冲泡茶","/actions/brewing/super_magic_coffee":"超级魔法咖啡","/actions/brewing/ultra_attack_coffee":"究极攻击咖啡","/actions/brewing/blessed_tea":"福气茶","/actions/brewing/ultra_alchemy_tea":"究极炼金茶","/actions/brewing/ultra_enhancing_tea":"究极强化茶","/actions/brewing/expert_tea_crate":"专家茶叶箱","/actions/brewing/expert_coffee_crate":"专家咖啡箱","/actions/brewing/ultra_cheesesmithing_tea":"究极奶酪锻造茶","/actions/brewing/ultra_melee_coffee":"究极近战咖啡","/actions/brewing/ultra_crafting_tea":"究极制作茶","/actions/brewing/ultra_ranged_coffee":"究极远程咖啡","/actions/brewing/ultra_tailoring_tea":"究极缝纫茶","/actions/brewing/ultra_magic_coffee":"究极魔法咖啡","/actions/alchemy/coinify":"点金","/actions/alchemy/transmute":"转化","/actions/alchemy/decompose":"分解","/actions/alchemy/unrefine":"解精炼","/actions/enhancing/enhance":"强化","/actions/combat/fly":"苍蝇","/actions/combat/rat":"杰瑞","/actions/combat/skunk":"臭鼬","/actions/combat/porcupine":"豪猪","/actions/combat/slimy":"史莱姆","/actions/combat/smelly_planet":"臭臭星球","/actions/combat/frog":"青蛙","/actions/combat/snake":"蛇","/actions/combat/swampy":"沼泽虫","/actions/combat/alligator":"夏洛克","/actions/combat/swamp_planet":"沼泽星球","/actions/combat/sea_snail":"蜗牛","/actions/combat/crab":"螃蟹","/actions/combat/aquahorse":"水马","/actions/combat/nom_nom":"咬咬鱼","/actions/combat/turtle":"忍者龟","/actions/combat/aqua_planet":"海洋星球","/actions/combat/jungle_sprite":"丛林精灵","/actions/combat/myconid":"蘑菇人","/actions/combat/treant":"树人","/actions/combat/centaur_archer":"半人马弓箭手","/actions/combat/jungle_planet":"丛林星球","/actions/combat/gobo_stabby":"刺刺","/actions/combat/gobo_slashy":"砍砍","/actions/combat/gobo_smashy":"锤锤","/actions/combat/gobo_shooty":"咻咻","/actions/combat/gobo_boomy":"轰轰","/actions/combat/gobo_planet":"哥布林星球","/actions/combat/eye":"独眼","/actions/combat/eyes":"叠眼","/actions/combat/veyes":"复眼","/actions/combat/planet_of_the_eyes":"眼球星球","/actions/combat/novice_sorcerer":"新手巫师","/actions/combat/ice_sorcerer":"冰霜巫师","/actions/combat/flame_sorcerer":"火焰巫师","/actions/combat/elementalist":"元素法师","/actions/combat/sorcerers_tower":"巫师之塔","/actions/combat/gummy_bear":"软糖熊","/actions/combat/panda":"熊猫","/actions/combat/black_bear":"黑熊","/actions/combat/grizzly_bear":"棕熊","/actions/combat/polar_bear":"北极熊","/actions/combat/bear_with_it":"熊熊星球","/actions/combat/magnetic_golem":"磁力魔像","/actions/combat/stalactite_golem":"钟乳石魔像","/actions/combat/granite_golem":"花岗岩魔像","/actions/combat/golem_cave":"魔像洞穴","/actions/combat/zombie":"僵尸","/actions/combat/vampire":"吸血鬼","/actions/combat/werewolf":"狼人","/actions/combat/twilight_zone":"暮光之地","/actions/combat/abyssal_imp":"深渊小鬼","/actions/combat/soul_hunter":"灵魂猎手","/actions/combat/infernal_warlock":"地狱术士","/actions/combat/infernal_abyss":"地狱深渊","/actions/combat/chimerical_den":"奇幻洞穴","/actions/combat/sinister_circus":"阴森马戏团","/actions/combat/enchanted_fortress":"秘法要塞","/actions/combat/pirate_cove":"海盗基地","/actions/labyrinth/explore":"探索迷宫","/actions/special/party_ready":"队伍准备就绪"},kc={"/monsters/abyssal_imp":"深渊小鬼","/monsters/acrobat":"杂技师","/monsters/trial_hedgehog":"试炼刺猬","/monsters/anchor_shark":"持锚鲨","/monsters/aquahorse":"水马","/monsters/trial_jellyfish":"试炼水母","/monsters/black_bear":"黑熊","/monsters/gobo_boomy":"轰轰","/monsters/brine_marksman":"海盐射手","/monsters/butterjerry":"蝶鼠","/monsters/captain_fishhook":"鱼钩船长","/monsters/centaur_archer":"半人马弓箭手","/monsters/cyclops":"独眼巨人","/monsters/chronofrost_sorcerer":"霜时巫师","/monsters/dryad":"树精","/monsters/crystal_colossus":"水晶巨像","/monsters/frost_sniper":"霜冻狙击手","/monsters/demonic_overlord":"恶魔霸主","/monsters/deranged_jester":"小丑皇","/monsters/dodocamel":"渡渡驼","/monsters/dusk_revenant":"黄昏亡灵","/monsters/trial_chameleon":"试炼变色龙","/monsters/elementalist":"元素法师","/monsters/enchanted_bishop":"秘法主教","/monsters/enchanted_king":"秘法国王","/monsters/enchanted_knight":"秘法骑士","/monsters/enchanted_pawn":"秘法士兵","/monsters/enchanted_queen":"秘法王后","/monsters/enchanted_rook":"秘法堡垒","/monsters/eye":"独眼","/monsters/eyes":"叠眼","/monsters/flame_sorcerer":"火焰巫师","/monsters/fly":"苍蝇","/monsters/trial_beetle":"试炼甲虫","/monsters/trial_dragonfly":"试炼蜻蜓","/monsters/trial_wasp":"试炼黄蜂","/monsters/trial_firefly":"试炼萤火虫","/monsters/frog":"青蛙","/monsters/sea_snail":"蜗牛","/monsters/giant_shoebill":"鲸头鹳","/monsters/gobo_chieftain":"哥布林酋长","/monsters/granite_golem":"花岗魔像","/monsters/griffin":"狮鹫","/monsters/grizzly_bear":"棕熊","/monsters/gummy_bear":"软糖熊","/monsters/crab":"螃蟹","/monsters/ice_sorcerer":"冰霜巫师","/monsters/infernal_warlock":"地狱术士","/monsters/trial_badger":"试炼獾","/monsters/jackalope":"鹿角兔","/monsters/rat":"杰瑞","/monsters/juggler":"杂耍者","/monsters/jungle_sprite":"丛林精灵","/monsters/giant_mantis":"巨螳螂","/monsters/luna_empress":"月神之蝶","/monsters/magician":"魔术师","/monsters/magnetic_golem":"磁力魔像","/monsters/manticore":"狮蝎兽","/monsters/marine_huntress":"海洋猎手","/monsters/giant_scorpion":"巨蝎","/monsters/mimic":"宝箱怪","/monsters/myconid":"蘑菇人","/monsters/nom_nom":"咬咬鱼","/monsters/novice_sorcerer":"新手巫师","/monsters/panda":"熊猫","/monsters/polar_bear":"北极熊","/monsters/porcupine":"豪猪","/monsters/rabid_rabbit":"疯魔兔","/monsters/red_panda":"小熊猫","/monsters/alligator":"夏洛克","/monsters/gobo_shooty":"咻咻","/monsters/skunk":"臭鼬","/monsters/gobo_slashy":"砍砍","/monsters/slimy":"史莱姆","/monsters/gobo_smashy":"锤锤","/monsters/soul_hunter":"灵魂猎手","/monsters/squawker":"鹦鹉","/monsters/gobo_stabby":"刺刺","/monsters/stalactite_golem":"钟乳石魔像","/monsters/pyre_hunter":"火焰猎手","/monsters/swampy":"沼泽虫","/monsters/the_kraken":"克拉肯","/monsters/the_watcher":"观察者","/monsters/snake":"蛇","/monsters/tidal_conjuror":"潮汐召唤师","/monsters/salamander":"火蜥蜴","/monsters/shadow_archer":"暗影弓手","/monsters/treant":"树人","/monsters/turtle":"忍者龟","/monsters/vampire":"吸血鬼","/monsters/veyes":"复眼","/monsters/siren":"海妖","/monsters/werewolf":"狼人","/monsters/zombie":"僵尸","/monsters/zombie_bear":"僵尸熊","/abilities/poke":"破胆之刺","/abilities/impale":"透骨之刺","/abilities/puncture":"破甲之刺","/abilities/penetrating_strike":"贯心之刺","/abilities/scratch":"爪影斩","/abilities/cleave":"分裂斩","/abilities/maim":"血刃斩","/abilities/crippling_slash":"致残斩","/abilities/smack":"重碾","/abilities/sweep":"重扫","/abilities/stunning_blow":"重锤","/abilities/fracturing_impact":"碎裂冲击","/abilities/shield_bash":"盾击","/abilities/quick_shot":"快速射击","/abilities/aqua_arrow":"流水箭","/abilities/flame_arrow":"烈焰箭","/abilities/rain_of_arrows":"箭雨","/abilities/silencing_shot":"沉默之箭","/abilities/steady_shot":"稳定射击","/abilities/pestilent_shot":"疫病射击","/abilities/penetrating_shot":"贯穿射击","/abilities/water_strike":"流水冲击","/abilities/ice_spear":"冰枪术","/abilities/frost_surge":"冰霜爆裂","/abilities/mana_spring":"法力喷泉","/abilities/entangle":"缠绕","/abilities/toxic_pollen":"剧毒粉尘","/abilities/natures_veil":"自然菌幕","/abilities/life_drain":"生命吸取","/abilities/fireball":"火球","/abilities/flame_blast":"熔岩爆裂","/abilities/firestorm":"火焰风暴","/abilities/smoke_burst":"烟爆灭影","/abilities/minor_heal":"初级自愈术","/abilities/heal":"自愈术","/abilities/quick_aid":"快速治疗术","/abilities/rejuvenate":"群体治疗术","/abilities/taunt":"嘲讽","/abilities/provoke":"挑衅","/abilities/toughness":"坚韧","/abilities/elusiveness":"闪避","/abilities/precision":"精确","/abilities/berserk":"狂暴","/abilities/frenzy":"狂速","/abilities/elemental_affinity":"元素增幅","/abilities/spike_shell":"尖刺防护","/abilities/retribution":"惩戒","/abilities/vampirism":"吸血","/abilities/revive":"复活","/abilities/insanity":"疯狂","/abilities/invincible":"无敌","/abilities/speed_aura":"速度光环","/abilities/guardian_aura":"守护光环","/abilities/fierce_aura":"物理光环","/abilities/critical_aura":"暴击光环","/abilities/mystic_aura":"元素光环","/abilities/promote":"晋升"};function ro(e){let t={};for(let a in e)t[e[a]]=a;return t}s(ro,"inverseKV");var Sc=ro(vc),Cc=ro(xc),Ac=ro(kc);function _g(e){let t=Sc[e];if(!t)return console.log(u.config.isZH?`[MWITools] 找不到物品“${e}”对应的英文名称。`:`[MWITools] Cannot find the English item name for “${e}”.`),"";let a;try{a=u.state.initData_itemDetailMap?.[t]?.name}catch{return""}return a||(console.log(u.config.isZH?`[MWITools] 找不到物品 ${t} 的英文名称。`:`[MWITools] Cannot find the English item name for ${t}.`),"")}s(_g,"getItemEnNameFromZhName");function yg(e){let t=Cc[e];if(!t)return console.log(u.config.isZH?`[MWITools] 找不到行动“${e}”对应的英文名称。`:`[MWITools] Cannot find the English action name for “${e}”.`),"";let a;try{a=u.state.initData_actionDetailMap?.[t]?.name}catch{return""}return a||(console.log(u.config.isZH?`[MWITools] 找不到行动 ${t} 的英文名称。`:`[MWITools] Cannot find the English action name for ${t}.`),"")}s(yg,"getActionEnNameFromZhName");function wg(e){let t=Ac[e];return t||""}s(wg,"getOthersFromZhName");var vg={};Object.assign(u.api,{inverseKV:ro,getItemEnNameFromZhName:_g,getActionEnNameFromZhName:yg,getOthersFromZhName:wg}),Object.defineProperties(u.data,{ZHItemNames:{enumerable:!0,get(){return vc}},ZHActionNames:{enumerable:!0,get(){return xc}},ZHOthersDic:{enumerable:!0,get(){return kc}},ZHToItemHridMap:{enumerable:!0,get(){return Sc}},ZHToActionHridMap:{enumerable:!0,get(){return Cc}},ZHToOthersMap:{enumerable:!0,get(){return Ac}}}),Object.defineProperties(u.state,{itemEnNameToHridMap:{enumerable:!0,get(){return vg}}});var Mc={marketData:{"/items/abyssal_essence":{"0":{a:260,b:255}},"/items/acrobatic_hood":{"0":{a:7e7,b:68e6},"2":{a:-1,b:58e6},"3":{a:-1,b:58e6},"4":{a:-1,b:58e6},"5":{a:74e6,b:66e6},"6":{a:-1,b:56e6},"7":{a:9e7,b:84e6},"8":{a:145e6,b:11e7},"9":{a:-1,b:15e7},"10":{a:28e7,b:275e6},"11":{a:-1,b:34e7},"12":{a:-1,b:96e7}},"/items/acrobatic_hood_refined":{"5":{a:-1,b:36e5},"10":{a:58e7,b:54e7},"11":{a:-1,b:36e5}},"/items/acrobats_ribbon":{"0":{a:68e5,b:66e5}},"/items/advanced_alchemy_charm":{"0":{a:39e6,b:-1},"1":{a:48e6,b:-1},"2":{a:54e6,b:-1},"3":{a:52e6,b:31e6},"4":{a:74e6,b:-1},"5":{a:12e7,b:-1}},"/items/advanced_attack_charm":{"0":{a:74e5,b:64e5},"1":{a:11e6,b:7e6},"2":{a:16e6,b:98e5},"3":{a:195e5,b:18e6},"4":{a:39e6,b:-1},"5":{a:56e6,b:46e6}},"/items/advanced_brewing_charm":{"0":{a:16e6,b:14e6},"2":{a:255e5,b:-1},"3":{a:31e6,b:-1},"4":{a:66e6,b:38e6},"5":{a:105e6,b:-1}},"/items/advanced_cheesesmithing_charm":{"0":{a:235e5,b:125e5},"3":{a:42e6,b:-1},"4":{a:6e7,b:-1},"5":{a:8e7,b:52e6}},"/items/advanced_cooking_charm":{"0":{a:-1,b:205e5},"1":{a:3e7,b:-1},"2":{a:39e6,b:-1},"3":{a:38e6,b:-1},"5":{a:82e6,b:74e6}},"/items/advanced_crafting_charm":{"0":{a:275e5,b:24e6},"1":{a:295e5,b:-1},"2":{a:36e6,b:19e6},"3":{a:46e6,b:-1},"4":{a:88e6,b:-1}},"/items/advanced_defense_charm":{"0":{a:7e6,b:66e5},"1":{a:11e6,b:92e5},"2":{a:-1,b:82e5},"3":{a:195e5,b:185e5},"5":{a:82e6,b:68e6}},"/items/advanced_enhancing_charm":{"0":{a:58e6,b:32e6},"1":{a:74e6,b:-1},"3":{a:96e6,b:-1},"5":{a:15e7,b:1e8}},"/items/advanced_foraging_charm":{"0":{a:21e6,b:185e5},"1":{a:28e6,b:-1},"3":{a:38e6,b:-1},"4":{a:62e6,b:-1},"5":{a:115e6,b:8e7},"7":{a:-1,b:16e5}},"/items/advanced_intelligence_charm":{"0":{a:74e5,b:64e5},"1":{a:13e6,b:7e6},"3":{a:215e5,b:185e5},"4":{a:-1,b:37e6},"5":{a:78e6,b:62e6}},"/items/advanced_magic_charm":{"0":{a:115e5,b:1e7},"1":{a:15e6,b:115e5},"3":{a:22e6,b:19e6},"4":{a:42e6,b:35e6},"5":{a:-1,b:68e6}},"/items/advanced_melee_charm":{"0":{a:68e5,b:66e5},"1":{a:9e6,b:54e5},"2":{a:135e5,b:82e5},"3":{a:185e5,b:175e5},"4":{a:49e6,b:29e6},"5":{a:58e6,b:5e7}},"/items/advanced_milking_charm":{"0":{a:255e5,b:205e5},"1":{a:28e6,b:-1},"2":{a:28e6,b:-1},"3":{a:33e6,b:-1},"4":{a:66e6,b:5e7},"5":{a:98e6,b:-1}},"/items/advanced_ranged_charm":{"0":{a:68e5,b:64e5},"1":{a:1e7,b:-1},"2":{a:13e6,b:8e6},"3":{a:2e7,b:165e5},"4":{a:39e6,b:36e6},"5":{a:74e6,b:33e6}},"/items/advanced_stamina_charm":{"0":{a:145e5,b:14e6},"1":{a:-1,b:12e6},"2":{a:195e5,b:125e5},"3":{a:3e7,b:265e5},"4":{a:56e6,b:44e6},"5":{a:82e6,b:64e6}},"/items/advanced_tailoring_charm":{"0":{a:21e6,b:15e6},"1":{a:28e6,b:-1},"2":{a:38e6,b:-1},"3":{a:4e7,b:29e6},"4":{a:68e6,b:-1},"5":{a:96e6,b:64e6}},"/items/advanced_woodcutting_charm":{"0":{a:22e6,b:15e6},"1":{a:38e6,b:-1},"3":{a:4e7,b:-1}},"/items/alchemists_bottoms":{"0":{a:-1,b:15e7},"5":{a:255e6,b:225e6},"6":{a:5e8,b:-1},"7":{a:265e6,b:25e7},"8":{a:31e7,b:27e7},"10":{a:48e7,b:44e7}},"/items/alchemists_top":{"0":{a:-1,b:15e7},"1":{a:-1,b:38e5},"3":{a:-1,b:35e5},"5":{a:21e7,b:18e7},"6":{a:23e7,b:8e7},"7":{a:24e7,b:21e7},"8":{a:27e7,b:24e7},"10":{a:44e7,b:38e7}},"/items/alchemy_essence":{"0":{a:400,b:390}},"/items/alchemy_tea":{"0":{a:860,b:820}},"/items/amber":{"0":{a:21500,b:21e3}},"/items/amethyst":{"0":{a:34e3,b:33e3}},"/items/anchorbound_plate_body":{"0":{a:96e6,b:92e6},"1":{a:-1,b:84e6},"2":{a:-1,b:84e6},"3":{a:-1,b:84e6},"4":{a:-1,b:86e6},"5":{a:11e7,b:1e8},"6":{a:-1,b:9e7},"7":{a:125e6,b:12e7},"8":{a:17e7,b:145e6},"9":{a:-1,b:18e7},"10":{a:41e7,b:39e7},"12":{a:13e8,b:96e7}},"/items/anchorbound_plate_body_refined":{"10":{a:-1,b:45e5}},"/items/anchorbound_plate_legs":{"0":{a:76e6,b:72e6},"1":{a:-1,b:68e6},"2":{a:-1,b:7e7},"4":{a:-1,b:66e6},"5":{a:94e6,b:84e6},"6":{a:-1,b:72e6},"7":{a:105e6,b:98e6},"8":{a:15e7,b:12e7},"10":{a:37e7,b:-1}},"/items/anchorbound_plate_legs_refined":{},"/items/apple":{"0":{a:23,b:21}},"/items/apple_gummy":{"0":{a:19,b:17}},"/items/apple_yogurt":{"0":{a:500,b:440}},"/items/aqua_arrow":{"0":{a:33e3,b:32e3}},"/items/aqua_essence":{"0":{a:30,b:25}},"/items/arabica_coffee_bean":{"0":{a:320,b:310}},"/items/arcane_bow":{"0":{a:1e6,b:98e4},"1":{a:125e4,b:-1},"2":{a:14e5,b:-1},"3":{a:13e5,b:-1},"4":{a:155e4,b:-1},"5":{a:165e4,b:25e4},"6":{a:13e6,b:-1},"7":{a:15e6,b:-1}},"/items/arcane_crossbow":{"0":{a:76e4,b:74e4},"1":{a:8e5,b:-1},"2":{a:82e4,b:39e4},"3":{a:84e4,b:4e5},"4":{a:1e6,b:42e4},"5":{a:145e4,b:46e4},"6":{a:47e5,b:46e4},"7":{a:1e7,b:-1},"10":{a:72e6,b:-1}},"/items/arcane_fire_staff":{"0":{a:76e4,b:74e4},"1":{a:-1,b:36e4},"2":{a:12e5,b:-1},"3":{a:8e5,b:35e4},"4":{a:84e4,b:49e4},"5":{a:92e4,b:44e4}},"/items/arcane_log":{"0":{a:430,b:410}},"/items/arcane_lumber":{"0":{a:2200,b:2150}},"/items/arcane_nature_staff":{"0":{a:78e4,b:76e4},"1":{a:88e4,b:45e4},"2":{a:88e4,b:-1},"3":{a:88e4,b:-1},"4":{a:1e6,b:46e4},"5":{a:135e4,b:1e6},"7":{a:86e5,b:86e4},"9":{a:9e6,b:9e5}},"/items/arcane_shield":{"0":{a:52e4,b:49e4},"3":{a:1e6,b:-1},"4":{a:98e4,b:-1},"5":{a:285e4,b:82e4},"6":{a:-1,b:54e4}},"/items/arcane_water_staff":{"0":{a:78e4,b:76e4},"1":{a:82e4,b:-1},"2":{a:76e4,b:-1},"3":{a:88e4,b:-1},"5":{a:165e4,b:5e5}},"/items/artisan_tea":{"0":{a:1750,b:1700}},"/items/attack_coffee":{"0":{a:900,b:880}},"/items/azure_alembic":{"0":{a:54e3,b:44e3},"1":{a:115e6,b:-1},"3":{a:23e4,b:-1}},"/items/azure_boots":{"0":{a:28500,b:26e3},"1":{a:36e3,b:-1},"4":{a:195e3,b:-1}},"/items/azure_brush":{"0":{a:41e3,b:31e3},"1":{a:64e3,b:2250},"2":{a:8e4,b:2250},"3":{a:1e5,b:-1},"9":{a:72e4,b:-1}},"/items/azure_buckler":{"0":{a:39e3,b:32e3},"1":{a:7e4,b:-1},"2":{a:86e3,b:-1},"3":{a:11e4,b:-1},"5":{a:15e4,b:-1}},"/items/azure_bulwark":{"0":{a:5e4,b:45e3},"5":{a:5e5,b:-1}},"/items/azure_cheese":{"0":{a:940,b:920}},"/items/azure_chisel":{"0":{a:56e3,b:32e3},"1":{a:115e3,b:-1},"2":{a:12e4,b:-1},"3":{a:235e3,b:-1}},"/items/azure_enhancer":{"0":{a:68e3,b:39e3},"3":{a:9e4,b:-1},"4":{a:125e3,b:-1}},"/items/azure_gauntlets":{"0":{a:26500,b:23e3},"1":{a:47e3,b:-1},"2":{a:-1,b:2350},"3":{a:205e3,b:-1},"4":{a:25e4,b:-1}},"/items/azure_hammer":{"0":{a:54e3,b:37e3},"1":{a:25e4,b:2050},"2":{a:-1,b:2050},"3":{a:4e5,b:2050},"7":{a:5e5,b:-1}},"/items/azure_hatchet":{"0":{a:48e3,b:36e3},"3":{a:39e4,b:-1},"5":{a:38e4,b:-1}},"/items/azure_helmet":{"0":{a:35e3,b:32e3},"1":{a:45e3,b:-1},"2":{a:-1,b:2900}},"/items/azure_mace":{"0":{a:54e3,b:49e3},"1":{a:115e3,b:-1},"3":{a:12e4,b:-1}},"/items/azure_milk":{"0":{a:195,b:185}},"/items/azure_needle":{"0":{a:45e3,b:41e3},"1":{a:98e3,b:-1},"3":{a:235e3,b:-1},"5":{a:33e4,b:-1}},"/items/azure_plate_body":{"0":{a:54e3,b:47e3},"1":{a:54e3,b:-1},"2":{a:105e3,b:78e3},"4":{a:2e5,b:-1},"5":{a:275e3,b:-1}},"/items/azure_plate_legs":{"0":{a:46e3,b:44e3},"1":{a:2e5,b:-1},"4":{a:3e5,b:-1},"5":{a:43e4,b:-1}},"/items/azure_pot":{"0":{a:94e3,b:43e3},"1":{a:265e3,b:-1},"2":{a:175e3,b:-1},"3":{a:25e4,b:-1}},"/items/azure_shears":{"0":{a:46e3,b:42e3},"1":{a:32e6,b:-1},"2":{a:42e4,b:-1},"3":{a:78e3,b:-1}},"/items/azure_spatula":{"0":{a:54e3,b:45e3},"2":{a:15e4,b:-1},"3":{a:235e3,b:2050},"4":{a:-1,b:2050},"6":{a:-1,b:2050}},"/items/azure_spear":{"0":{a:52e3,b:5e4},"1":{a:1e7,b:-1},"2":{a:1e7,b:-1}},"/items/azure_sword":{"0":{a:56e3,b:52e3},"1":{a:17e6,b:-1},"2":{a:2e5,b:-1},"4":{a:3e5,b:-1},"5":{a:175e3,b:-1}},"/items/bag_of_10_cowbells":{"0":{a:54e4,b:5e5}},"/items/bamboo_boots":{"0":{a:25500,b:20500},"1":{a:46e3,b:-1},"2":{a:66e3,b:-1},"3":{a:16e4,b:-1},"4":{a:115e3,b:-1},"5":{a:92e3,b:-1},"6":{a:68e4,b:-1},"7":{a:7e5,b:-1},"8":{a:12e5,b:-1}},"/items/bamboo_branch":{"0":{a:25,b:24}},"/items/bamboo_fabric":{"0":{a:320,b:290}},"/items/bamboo_gloves":{"0":{a:24e3,b:18500},"1":{a:6e4,b:-1},"2":{a:86e3,b:-1},"3":{a:19e4,b:-1},"4":{a:12e4,b:-1},"5":{a:38e4,b:-1},"6":{a:64e4,b:-1}},"/items/bamboo_hat":{"0":{a:3e4,b:24500},"1":{a:1e5,b:-1},"2":{a:135e3,b:-1},"3":{a:31e4,b:-1}},"/items/bamboo_robe_bottoms":{"0":{a:37e3,b:34e3},"2":{a:16e4,b:-1},"3":{a:3e5,b:-1}},"/items/bamboo_robe_top":{"0":{a:44e3,b:42e3},"2":{a:16e4,b:-1},"3":{a:22e4,b:-1}},"/items/basic_alchemy_charm":{"0":{a:4e6,b:34e5},"1":{a:125e5,b:-1}},"/items/basic_attack_charm":{"0":{a:84e4,b:82e4},"1":{a:96e4,b:-1},"2":{a:49e5,b:-1},"3":{a:74e5,b:-1},"5":{a:285e5,b:-1}},"/items/basic_brewing_charm":{"0":{a:18e5,b:165e4},"2":{a:78e5,b:-1}},"/items/basic_cheesesmithing_charm":{"0":{a:285e4,b:265e4}},"/items/basic_cooking_charm":{"0":{a:3e6,b:26e5},"2":{a:15e6,b:-1}},"/items/basic_crafting_charm":{"0":{a:34e5,b:-1}},"/items/basic_defense_charm":{"0":{a:86e4,b:84e4},"1":{a:125e5,b:-1}},"/items/basic_enhancing_charm":{"0":{a:82e5,b:72e5},"1":{a:96e5,b:-1},"3":{a:23e6,b:-1}},"/items/basic_foraging_charm":{"0":{a:28e5,b:23e5}},"/items/basic_intelligence_charm":{"0":{a:84e4,b:82e4}},"/items/basic_magic_charm":{"0":{a:13e5,b:125e4},"2":{a:98e5,b:-1},"3":{a:94e5,b:-1}},"/items/basic_melee_charm":{"0":{a:84e4,b:82e4},"1":{a:155e4,b:-1},"3":{a:6e8,b:-1}},"/items/basic_milking_charm":{"0":{a:245e4,b:18e5},"1":{a:185e5,b:-1}},"/items/basic_ranged_charm":{"0":{a:84e4,b:82e4},"1":{a:38e5,b:-1},"2":{a:74e5,b:-1},"3":{a:7e6,b:-1}},"/items/basic_stamina_charm":{"0":{a:15e5,b:14e5},"2":{a:78e5,b:-1}},"/items/basic_tailoring_charm":{"0":{a:255e4,b:175e4},"1":{a:285e4,b:-1}},"/items/basic_woodcutting_charm":{"0":{a:25e5,b:175e4},"1":{a:32e5,b:-1}},"/items/bear_essence":{"0":{a:88,b:86}},"/items/beast_boots":{"0":{a:66e3,b:62e3},"3":{a:26e4,b:-1},"5":{a:28e4,b:-1},"7":{a:12e5,b:-1},"8":{a:195e4,b:-1}},"/items/beast_bracers":{"0":{a:96e3,b:92e3},"1":{a:24e4,b:-1},"2":{a:175e3,b:-1},"3":{a:22e4,b:-1},"4":{a:25e4,b:-1},"5":{a:47e4,b:1e5},"6":{a:8e5,b:-1},"7":{a:155e5,b:-1}},"/items/beast_chaps":{"0":{a:145e3,b:14e4},"1":{a:165e3,b:-1},"2":{a:165e3,b:-1},"3":{a:22e4,b:-1},"5":{a:42e4,b:1e5}},"/items/beast_hide":{"0":{a:22,b:20}},"/items/beast_hood":{"0":{a:72e3,b:68e3},"2":{a:78e3,b:-1},"3":{a:125e3,b:-1},"4":{a:29e4,b:-1},"5":{a:48e4,b:1e5}},"/items/beast_leather":{"0":{a:1150,b:1100}},"/items/beast_tunic":{"0":{a:18e4,b:175e3},"2":{a:3e5,b:-1},"3":{a:19e4,b:-1},"4":{a:31e4,b:-1},"5":{a:38e4,b:1e5},"10":{a:-1,b:3e6}},"/items/berserk":{"0":{a:195e3,b:19e4}},"/items/birch_bow":{"0":{a:23500,b:18e3},"2":{a:145e3,b:-1},"5":{a:4e5,b:-1},"6":{a:7e5,b:-1}},"/items/birch_crossbow":{"0":{a:34e3,b:13e3},"1":{a:56e5,b:-1},"3":{a:145e3,b:-1},"4":{a:2e5,b:-1},"6":{a:14e5,b:-1}},"/items/birch_fire_staff":{"0":{a:19e3,b:17500},"1":{a:49e3,b:-1},"2":{a:49e3,b:-1},"3":{a:145e3,b:-1},"5":{a:7e5,b:-1}},"/items/birch_log":{"0":{a:70,b:68}},"/items/birch_lumber":{"0":{a:560,b:540}},"/items/birch_nature_staff":{"0":{a:26e3,b:18500},"2":{a:56e3,b:-1},"8":{a:115e4,b:-1},"10":{a:22e6,b:-1}},"/items/birch_shield":{"0":{a:13e3,b:4100}},"/items/birch_water_staff":{"0":{a:21e3,b:17500},"1":{a:47e3,b:-1},"2":{a:28e4,b:-1},"3":{a:34e4,b:-1}},"/items/bishops_codex":{"0":{a:98e6,b:96e6},"1":{a:-1,b:8e7},"2":{a:-1,b:8e7},"3":{a:-1,b:8e7},"4":{a:-1,b:8e7},"5":{a:1e8,b:96e6},"6":{a:-1,b:9e7},"7":{a:125e6,b:115e6},"8":{a:16e7,b:14e7},"9":{a:-1,b:18e7},"10":{a:36e7,b:35e7},"11":{a:-1,b:44e7},"12":{a:12e8,b:105e7},"13":{a:2e9,b:19e8}},"/items/bishops_codex_refined":{"10":{a:7e8,b:68e7}},"/items/bishops_scroll":{"0":{a:8e6,b:78e5}},"/items/black_bear_fluff":{"0":{a:125e3,b:12e4}},"/items/black_bear_shoes":{"0":{a:72e4,b:7e5},"2":{a:74e4,b:-1},"3":{a:94e4,b:-1},"5":{a:12e5,b:-1},"6":{a:17e5,b:-1},"7":{a:32e5,b:-1},"8":{a:45e5,b:-1},"9":{a:9e6,b:-1},"10":{a:13e6,b:125e5},"11":{a:24e6,b:-1},"12":{a:47e6,b:43e6},"13":{a:9e7,b:-1},"14":{a:165e6,b:155e6},"15":{a:32e7,b:-1},"16":{a:62e7,b:-1}},"/items/black_tea_leaf":{"0":{a:17,b:16}},"/items/blackberry":{"0":{a:98,b:96}},"/items/blackberry_cake":{"0":{a:800,b:780}},"/items/blackberry_donut":{"0":{a:700,b:680}},"/items/blazing_trident":{"0":{a:25e7,b:24e7},"1":{a:-1,b:205e6},"2":{a:-1,b:205e6},"3":{a:-1,b:195e6},"4":{a:-1,b:21e7},"5":{a:25e7,b:21e7},"6":{a:-1,b:21e7},"7":{a:28e7,b:265e6},"8":{a:38e7,b:31e7},"9":{a:-1,b:36e7},"10":{a:62e7,b:6e8},"11":{a:115e7,b:86e7},"12":{a:175e7,b:155e7},"14":{a:-1,b:4e9}},"/items/blazing_trident_refined":{"0":{a:-1,b:5e6},"10":{a:17e8,b:16e8},"12":{a:-1,b:11e7},"14":{a:86e8,b:-1}},"/items/blessed_tea":{"0":{a:1750,b:1650}},"/items/blooming_trident":{"0":{a:27e7,b:265e6},"1":{a:-1,b:205e6},"2":{a:-1,b:205e6},"3":{a:-1,b:205e6},"4":{a:-1,b:21e7},"5":{a:-1,b:25e7},"6":{a:-1,b:255e6},"7":{a:295e6,b:285e6},"8":{a:-1,b:34e7},"9":{a:-1,b:35e7},"10":{a:66e7,b:62e7},"11":{a:-1,b:68e7},"12":{a:185e7,b:175e7},"13":{a:31e8,b:-1},"14":{a:64e8,b:-1}},"/items/blooming_trident_refined":{"10":{a:-1,b:105e7},"14":{a:72e8,b:-1}},"/items/blue_key_fragment":{"0":{a:74e4,b:72e4}},"/items/blueberry":{"0":{a:72,b:70}},"/items/blueberry_cake":{"0":{a:720,b:660}},"/items/blueberry_donut":{"0":{a:620,b:600}},"/items/branch_of_insight":{"0":{a:21e6,b:205e5}},"/items/brewers_bottoms":{"0":{a:-1,b:33e6},"5":{a:22e7,b:-1},"7":{a:24e7,b:22e7},"8":{a:275e6,b:25e7},"9":{a:-1,b:235e6},"10":{a:41e7,b:39e7},"12":{a:-1,b:6e8}},"/items/brewers_top":{"0":{a:28e7,b:-1},"5":{a:185e6,b:155e6},"6":{a:19e7,b:165e6},"7":{a:23e7,b:19e7},"8":{a:235e6,b:64e6},"9":{a:-1,b:235e6},"10":{a:38e7,b:37e7},"12":{a:115e7,b:-1}},"/items/brewing_essence":{"0":{a:200,b:195}},"/items/brewing_tea":{"0":{a:520,b:470}},"/items/brown_key_fragment":{"0":{a:96e4,b:94e4}},"/items/burble_alembic":{"0":{a:98e3,b:94e3},"3":{a:39e4,b:-1},"5":{a:-1,b:4e5}},"/items/burble_boots":{"0":{a:62e3,b:52e3},"1":{a:62e3,b:-1},"2":{a:28e4,b:-1},"3":{a:32e4,b:-1}},"/items/burble_brush":{"0":{a:98e3,b:9e4},"1":{a:145e3,b:-1},"2":{a:2e5,b:-1},"3":{a:35e4,b:-1},"5":{a:5e5,b:-1},"20":{a:-1,b:88e3}},"/items/burble_buckler":{"0":{a:76e3,b:6e4},"1":{a:14e4,b:-1},"7":{a:5e8,b:-1}},"/items/burble_bulwark":{"0":{a:125e3,b:11e4},"2":{a:44e5,b:-1},"5":{a:3e5,b:-1}},"/items/burble_cheese":{"0":{a:1250,b:1200}},"/items/burble_chisel":{"0":{a:96e3,b:8e4},"1":{a:185e3,b:5200},"2":{a:-1,b:5200},"3":{a:37e4,b:5200}},"/items/burble_enhancer":{"0":{a:98e3,b:86e3},"1":{a:11e4,b:-1},"2":{a:12e4,b:-1},"3":{a:145e3,b:-1},"4":{a:175e3,b:-1},"5":{a:16e4,b:-1},"6":{a:115e4,b:-1},"7":{a:62e5,b:-1}},"/items/burble_gauntlets":{"0":{a:62e3,b:58e3},"1":{a:9e4,b:2900},"2":{a:16e4,b:2900},"3":{a:3e5,b:2900},"4":{a:-1,b:2900},"5":{a:5e5,b:-1},"6":{a:7e5,b:2900}},"/items/burble_hammer":{"0":{a:11e4,b:92e3},"1":{a:125e3,b:-1},"2":{a:3e5,b:-1},"3":{a:39e4,b:-1}},"/items/burble_hatchet":{"0":{a:98e3,b:86e3},"1":{a:145e3,b:-1},"2":{a:17e4,b:-1},"3":{a:34e4,b:-1},"8":{a:25e5,b:-1},"20":{a:-1,b:34e4}},"/items/burble_helmet":{"0":{a:74e3,b:7e4},"1":{a:115e3,b:-1}},"/items/burble_mace":{"0":{a:12e4,b:11e4},"3":{a:34e4,b:-1},"5":{a:5e5,b:-1},"6":{a:72e4,b:-1}},"/items/burble_milk":{"0":{a:255,b:240}},"/items/burble_needle":{"0":{a:98e3,b:92e3},"2":{a:245e4,b:-1},"3":{a:39e4,b:-1}},"/items/burble_plate_body":{"0":{a:11e4,b:105e3},"1":{a:11e4,b:-1},"3":{a:3e5,b:-1},"5":{a:94e4,b:-1}},"/items/burble_plate_legs":{"0":{a:96e3,b:94e3},"1":{a:185e3,b:-1},"3":{a:32e4,b:-1},"5":{a:54e4,b:-1},"10":{a:76e5,b:-1}},"/items/burble_pot":{"0":{a:105e3,b:84e3},"1":{a:1e5,b:-1},"2":{a:24e4,b:-1},"3":{a:38e4,b:-1}},"/items/burble_shears":{"0":{a:96e3,b:9e4},"1":{a:33e4,b:-1},"2":{a:49e4,b:-1},"3":{a:38e4,b:-1},"4":{a:76e4,b:-1},"5":{a:-1,b:64e4}},"/items/burble_spatula":{"0":{a:12e4,b:98e3},"2":{a:23e4,b:-1},"3":{a:38e4,b:-1}},"/items/burble_spear":{"0":{a:115e3,b:11e4},"3":{a:2e5,b:-1},"5":{a:295e3,b:-1},"6":{a:56e4,b:-1}},"/items/burble_sword":{"0":{a:12e4,b:115e3},"1":{a:12e4,b:6600},"2":{a:12e4,b:6600},"3":{a:18e4,b:6600},"5":{a:4e5,b:-1},"6":{a:56e4,b:-1}},"/items/burble_tea_leaf":{"0":{a:26,b:24}},"/items/burning_key_fragment":{"0":{a:205e4,b:2e6}},"/items/butter_of_proficiency":{"0":{a:13e6,b:125e5}},"/items/catalyst_of_coinification":{"0":{a:4200,b:4100}},"/items/catalyst_of_decomposition":{"0":{a:4600,b:4500}},"/items/catalyst_of_transmutation":{"0":{a:8200,b:8e3}},"/items/catalytic_tea":{"0":{a:1650,b:1600}},"/items/cedar_bow":{"0":{a:66e3,b:52e3},"3":{a:5e5,b:-1},"5":{a:33e5,b:-1}},"/items/cedar_crossbow":{"0":{a:72e3,b:52e3},"2":{a:8e4,b:-1},"3":{a:98e3,b:-1},"5":{a:35e4,b:-1},"7":{a:46e5,b:-1}},"/items/cedar_fire_staff":{"0":{a:54e3,b:48e3},"1":{a:82e3,b:-1},"2":{a:13e4,b:-1},"4":{a:49e4,b:-1},"5":{a:3e5,b:-1}},"/items/cedar_log":{"0":{a:200,b:190}},"/items/cedar_lumber":{"0":{a:1050,b:1e3}},"/items/cedar_nature_staff":{"0":{a:58e3,b:56e3},"1":{a:98e3,b:-1},"2":{a:98e3,b:-1},"4":{a:49e4,b:-1},"7":{a:6e5,b:-1}},"/items/cedar_shield":{"0":{a:4e4,b:31e3},"1":{a:5e4,b:-1},"2":{a:145e3,b:-1},"3":{a:56e3,b:-1},"4":{a:52e4,b:-1}},"/items/cedar_water_staff":{"0":{a:58e3,b:5e4},"1":{a:14e4,b:-1},"2":{a:16e4,b:-1},"5":{a:35e4,b:-1},"7":{a:5e5,b:-1}},"/items/celestial_alembic":{"0":{a:-1,b:22e6},"6":{a:-1,b:76e5},"7":{a:44e7,b:41e7},"8":{a:52e7,b:47e7},"10":{a:82e7,b:8e8},"20":{a:-1,b:5e6}},"/items/celestial_brush":{"0":{a:35e7,b:23e7},"5":{a:-1,b:22e7},"6":{a:-1,b:225e6},"7":{a:41e7,b:38e7},"8":{a:47e7,b:42e7},"10":{a:74e7,b:7e8},"12":{a:-1,b:12e8},"14":{a:-1,b:25e8},"20":{a:-1,b:15e7}},"/items/celestial_chisel":{"0":{a:-1,b:115e6},"5":{a:-1,b:36e7},"7":{a:42e7,b:37e7},"8":{a:49e7,b:47e7},"10":{a:74e7,b:72e7}},"/items/celestial_enhancer":{"0":{a:45e7,b:4e8},"10":{a:1e9,b:9e8},"11":{a:15e8,b:-1},"12":{a:25e8,b:-1},"13":{a:47e8,b:-1},"14":{a:92e8,b:215e5},"15":{a:-1,b:5e9}},"/items/celestial_hammer":{"0":{a:-1,b:175e6},"1":{a:-1,b:255e5},"2":{a:-1,b:175e5},"5":{a:-1,b:24e7},"6":{a:-1,b:3e8},"7":{a:43e7,b:37e7},"8":{a:49e7,b:38e7},"10":{a:76e7,b:41e7}},"/items/celestial_hatchet":{"0":{a:-1,b:22e7},"5":{a:-1,b:255e6},"7":{a:4e8,b:39e7},"8":{a:-1,b:4e8},"9":{a:62e7,b:14e7},"10":{a:74e7,b:7e8}},"/items/celestial_needle":{"0":{a:41e7,b:7e7},"1":{a:-1,b:275e5},"5":{a:-1,b:2e8},"6":{a:-1,b:34e7},"7":{a:4e8,b:37e7},"8":{a:47e7,b:4e8},"10":{a:72e7,b:68e7},"20":{a:-1,b:52e5}},"/items/celestial_pot":{"0":{a:-1,b:58e5},"6":{a:36e7,b:3e8},"7":{a:4e8,b:35e7},"8":{a:46e7,b:43e7},"10":{a:72e7,b:66e7},"12":{a:-1,b:44e7}},"/items/celestial_shears":{"0":{a:-1,b:27e7},"1":{a:-1,b:15e6},"2":{a:-1,b:2e8},"3":{a:39e7,b:-1},"5":{a:-1,b:35e7},"7":{a:41e7,b:37e7},"8":{a:46e7,b:4e8},"10":{a:74e7,b:68e7},"11":{a:12e8,b:58e7},"12":{a:-1,b:13e8},"20":{a:-1,b:5e6}},"/items/celestial_spatula":{"0":{a:-1,b:14e7},"4":{a:-1,b:82e5},"5":{a:-1,b:34e7},"6":{a:4e8,b:36e7},"7":{a:42e7,b:38e7},"8":{a:48e7,b:4e8},"10":{a:74e7,b:72e7},"14":{a:-1,b:62e8}},"/items/centaur_boots":{"0":{a:9e5,b:86e4},"1":{a:-1,b:7e5},"2":{a:9e5,b:7e5},"5":{a:12e5,b:115e4},"6":{a:16e5,b:15e5},"7":{a:26e5,b:25e5},"8":{a:88e5,b:4e6},"9":{a:8e6,b:-1},"10":{a:135e5,b:13e6},"11":{a:24e6,b:14e6},"12":{a:45e6,b:42e6},"13":{a:88e6,b:8e7},"14":{a:18e7,b:17e7},"15":{a:34e7,b:-1},"16":{a:9e8,b:88e4}},"/items/centaur_hoof":{"0":{a:18e4,b:175e3}},"/items/channeling_coffee":{"0":{a:3100,b:3e3}},"/items/chaotic_chain":{"0":{a:98e5,b:96e5}},"/items/chaotic_flail":{"0":{a:23e7,b:22e7},"1":{a:-1,b:16e7},"2":{a:-1,b:165e6},"3":{a:-1,b:165e6},"4":{a:-1,b:16e7},"5":{a:255e6,b:225e6},"6":{a:-1,b:17e7},"7":{a:265e6,b:255e6},"8":{a:31e7,b:275e6},"9":{a:-1,b:3e8},"10":{a:58e7,b:54e7},"12":{a:165e7,b:155e7}},"/items/chaotic_flail_refined":{"0":{a:-1,b:54e5},"10":{a:-1,b:11e8},"12":{a:-1,b:7e8},"14":{a:-1,b:64e8}},"/items/cheese":{"0":{a:440,b:430}},"/items/cheese_alembic":{"0":{a:5e3,b:4300},"1":{a:9200,b:-1},"2":{a:9e7,b:-1},"3":{a:14e3,b:-1},"6":{a:42e4,b:-1},"8":{a:6e5,b:-1}},"/items/cheese_boots":{"0":{a:3700,b:3600},"1":{a:175e4,b:-1},"2":{a:15e5,b:-1},"4":{a:38e4,b:-1},"10":{a:4e6,b:-1},"12":{a:45e5,b:-1},"13":{a:1e7,b:-1}},"/items/cheese_brush":{"0":{a:4e3,b:3800},"1":{a:5800,b:-1},"2":{a:5e3,b:-1},"3":{a:6600,b:-1},"4":{a:8200,b:-1},"5":{a:8800,b:-1},"6":{a:13e4,b:-1},"10":{a:245e4,b:-1}},"/items/cheese_buckler":{"0":{a:4300,b:3800},"1":{a:46e3,b:-1},"2":{a:78e3,b:-1},"5":{a:1e6,b:-1},"7":{a:28e4,b:-1},"8":{a:25e5,b:-1},"9":{a:3e6,b:-1}},"/items/cheese_bulwark":{"0":{a:6400,b:4800},"1":{a:9e4,b:-1},"2":{a:35e3,b:-1},"4":{a:86e3,b:-1},"5":{a:88e3,b:-1},"12":{a:38e6,b:-1}},"/items/cheese_chisel":{"0":{a:5e3,b:4800},"5":{a:22e4,b:-1}},"/items/cheese_enhancer":{"0":{a:5200,b:4800},"1":{a:3e4,b:-1},"5":{a:6e4,b:-1},"7":{a:6e5,b:-1},"10":{a:15e5,b:-1}},"/items/cheese_gauntlets":{"0":{a:3700,b:3600},"1":{a:25e3,b:-1},"2":{a:49e3,b:-1},"4":{a:52e3,b:-1},"5":{a:64e3,b:-1},"6":{a:1e5,b:-1},"9":{a:16e6,b:-1},"12":{a:4e6,b:-1},"13":{a:82e5,b:48e5}},"/items/cheese_hammer":{"0":{a:5200,b:4600},"1":{a:5e3,b:-1},"2":{a:14e3,b:-1}},"/items/cheese_hatchet":{"0":{a:4600,b:4100},"1":{a:5e7,b:-1},"2":{a:7e3,b:-1},"10":{a:45e5,b:-1}},"/items/cheese_helmet":{"0":{a:4600,b:4300},"1":{a:1e5,b:-1},"3":{a:115e3,b:-1}},"/items/cheese_mace":{"0":{a:5e3,b:4200},"1":{a:48e5,b:-1},"2":{a:1e5,b:-1},"5":{a:1e5,b:-1}},"/items/cheese_needle":{"0":{a:5e3,b:4500},"1":{a:245e3,b:-1},"5":{a:7e5,b:-1}},"/items/cheese_plate_body":{"0":{a:6600,b:4800},"1":{a:11e3,b:-1},"5":{a:1e6,b:-1},"10":{a:6e6,b:-1}},"/items/cheese_plate_legs":{"0":{a:6e3,b:4900}},"/items/cheese_pot":{"0":{a:4800,b:4600},"1":{a:3e4,b:-1},"5":{a:11e4,b:-1}},"/items/cheese_shears":{"0":{a:4900,b:4100},"1":{a:5600,b:-1},"3":{a:12e3,b:-1},"5":{a:98e3,b:-1}},"/items/cheese_spatula":{"0":{a:7200,b:4500},"2":{a:5e4,b:-1}},"/items/cheese_spear":{"0":{a:5200,b:5e3},"1":{a:5e3,b:-1},"3":{a:2e5,b:-1}},"/items/cheese_sword":{"0":{a:5200,b:4800},"1":{a:5e3,b:-1},"3":{a:43e3,b:-1},"4":{a:9e4,b:-1},"5":{a:9e4,b:-1},"7":{a:1e6,b:-1},"8":{a:37e5,b:-1},"10":{a:35e6,b:-1},"12":{a:98e5,b:-1},"15":{a:45e6,b:-1}},"/items/cheesemakers_bottoms":{"0":{a:-1,b:145e6},"5":{a:23e7,b:-1},"7":{a:255e6,b:21e7},"8":{a:295e6,b:-1},"10":{a:47e7,b:4e8}},"/items/cheesemakers_top":{"0":{a:-1,b:8e7},"5":{a:2e8,b:105e6},"6":{a:21e7,b:13e7},"7":{a:21e7,b:-1},"8":{a:25e7,b:84e5},"10":{a:43e7,b:-1}},"/items/cheesesmithing_essence":{"0":{a:340,b:330}},"/items/cheesesmithing_tea":{"0":{a:740,b:640}},"/items/chefs_bottoms":{"0":{a:-1,b:14e7},"5":{a:24e7,b:19e7},"6":{a:-1,b:12e7},"7":{a:245e6,b:21e7},"8":{a:285e6,b:26e7},"10":{a:46e7,b:39e7}},"/items/chefs_top":{"0":{a:-1,b:3e7},"5":{a:195e6,b:-1},"6":{a:1e11,b:35e5},"7":{a:21e7,b:-1},"8":{a:25e7,b:205e6},"10":{a:42e7,b:39e7}},"/items/chimerical_chest_key":{"0":{a:28e5,b:275e4}},"/items/chimerical_entry_key":{"0":{a:38e4,b:36e4}},"/items/chimerical_essence":{"0":{a:840,b:820}},"/items/chimerical_refinement_shard":{"0":{a:2e6,b:185e4}},"/items/chrono_gloves":{"0":{a:68e5,b:64e5},"3":{a:-1,b:36e5},"4":{a:-1,b:37e5},"5":{a:88e5,b:76e5},"6":{a:98e5,b:94e5},"7":{a:15e6,b:12e6},"8":{a:205e5,b:2e7},"9":{a:-1,b:27e6},"10":{a:56e6,b:54e6},"11":{a:-1,b:105e6},"12":{a:21e7,b:205e6},"13":{a:44e7,b:-1},"14":{a:88e7,b:8e8},"15":{a:175e7,b:-1},"16":{a:34e8,b:-1}},"/items/chrono_sphere":{"0":{a:82e4,b:8e5}},"/items/cleave":{"0":{a:34e3,b:32e3}},"/items/cocoon":{"0":{a:320,b:300}},"/items/collectors_boots":{"0":{a:38e5,b:35e5},"2":{a:-1,b:295e4},"3":{a:44e5,b:34e5},"4":{a:-1,b:38e5},"5":{a:54e5,b:47e5},"6":{a:72e5,b:2e5},"7":{a:96e5,b:-1},"8":{a:16e6,b:9e6},"9":{a:28e6,b:-1},"10":{a:39e6,b:36e6},"12":{a:125e6,b:105e6},"13":{a:-1,b:205e6},"15":{a:-1,b:31e7},"20":{a:-1,b:44e7}},"/items/colossus_core":{"0":{a:92e4,b:9e5}},"/items/colossus_plate_body":{"0":{a:92e5,b:84e5},"1":{a:-1,b:8e6},"2":{a:9e6,b:8e6},"3":{a:-1,b:8e6},"5":{a:96e5,b:82e5},"6":{a:125e5,b:-1},"7":{a:195e5,b:175e5},"8":{a:295e5,b:-1},"9":{a:38e6,b:-1},"10":{a:6e7,b:41e6},"12":{a:31e7,b:1e7}},"/items/colossus_plate_legs":{"0":{a:74e5,b:64e5},"5":{a:76e5,b:6e6},"6":{a:12e6,b:-1},"7":{a:18e6,b:145e5},"8":{a:3e7,b:12e6},"10":{a:52e6,b:32e6},"12":{a:-1,b:1e7}},"/items/cooking_essence":{"0":{a:290,b:285}},"/items/cooking_tea":{"0":{a:740,b:620}},"/items/corsair_crest":{"0":{a:84e5,b:82e5}},"/items/corsair_helmet":{"0":{a:96e6,b:94e6},"3":{a:13e7,b:43e5},"5":{a:105e6,b:96e6},"6":{a:11e7,b:88e6},"7":{a:12e7,b:115e6},"8":{a:16e7,b:145e6},"9":{a:22e7,b:21e7},"10":{a:37e7,b:36e7},"11":{a:64e7,b:5e8},"12":{a:12e8,b:11e8}},"/items/corsair_helmet_refined":{"10":{a:72e7,b:68e7},"12":{a:-1,b:15e8},"14":{a:-1,b:35e5}},"/items/cotton":{"0":{a:70,b:64}},"/items/cotton_boots":{"0":{a:3600,b:3500},"1":{a:54e3,b:-1},"2":{a:3e5,b:-1},"10":{a:14e5,b:-1},"11":{a:41e5,b:-1},"12":{a:76e5,b:-1},"20":{a:-1,b:64}},"/items/cotton_fabric":{"0":{a:420,b:410}},"/items/cotton_gloves":{"0":{a:3900,b:2200},"12":{a:-1,b:27e5},"20":{a:-1,b:3800}},"/items/cotton_hat":{"0":{a:3800,b:3300},"3":{a:48e4,b:-1},"20":{a:-1,b:80}},"/items/cotton_robe_bottoms":{"0":{a:5e3,b:4700},"2":{a:82e3,b:-1},"3":{a:88e3,b:-1},"5":{a:58e4,b:-1},"20":{a:-1,b:115}},"/items/cotton_robe_top":{"0":{a:6200,b:5400},"5":{a:35e4,b:-1},"10":{a:1e7,b:-1},"20":{a:-1,b:130}},"/items/crab_pincer":{"0":{a:9200,b:8800}},"/items/crafters_bottoms":{"0":{a:35e7,b:265e5},"5":{a:24e7,b:205e6},"7":{a:255e6,b:235e6},"8":{a:3e8,b:265e6},"10":{a:46e7,b:41e7}},"/items/crafters_top":{"5":{a:195e6,b:17e7},"6":{a:245e6,b:84e5},"7":{a:215e6,b:2e8},"8":{a:255e6,b:2e8},"10":{a:42e7,b:36e7}},"/items/crafting_essence":{"0":{a:330,b:320}},"/items/crafting_tea":{"0":{a:780,b:640}},"/items/crimson_alembic":{"0":{a:18e4,b:17e4},"1":{a:285e3,b:-1},"2":{a:39e4,b:-1},"3":{a:32e4,b:-1},"5":{a:82e4,b:21e4}},"/items/crimson_boots":{"0":{a:115e3,b:98e3},"1":{a:14e4,b:-1},"2":{a:15e4,b:-1},"3":{a:17e4,b:-1},"5":{a:35e4,b:-1},"6":{a:62e4,b:-1},"8":{a:3e6,b:-1}},"/items/crimson_brush":{"0":{a:14e4,b:125e3},"2":{a:26e4,b:-1},"3":{a:45e4,b:-1},"4":{a:12e5,b:-1},"5":{a:165e4,b:7e5},"8":{a:56e5,b:-1}},"/items/crimson_buckler":{"0":{a:145e3,b:14e4},"1":{a:17e4,b:-1},"2":{a:17e4,b:-1},"3":{a:19e4,b:-1},"5":{a:155e4,b:-1}},"/items/crimson_bulwark":{"0":{a:195e3,b:17e4},"1":{a:22e4,b:-1},"3":{a:33e4,b:-1},"4":{a:7e5,b:-1}},"/items/crimson_cheese":{"0":{a:1250,b:1200}},"/items/crimson_chisel":{"0":{a:14e4,b:135e3},"2":{a:33e4,b:-1},"3":{a:43e4,b:-1},"4":{a:82e4,b:-1},"5":{a:19e5,b:27e4},"6":{a:-1,b:205e3}},"/items/crimson_enhancer":{"0":{a:175e3,b:16e4},"1":{a:18e4,b:-1},"2":{a:22e4,b:-1},"3":{a:275e3,b:-1},"4":{a:62e4,b:-1},"5":{a:88e4,b:295e3},"6":{a:28e5,b:68e4},"7":{a:58e5,b:-1},"10":{a:68e5,b:-1}},"/items/crimson_gauntlets":{"0":{a:1e5,b:96e3},"2":{a:33e4,b:-1},"3":{a:34e4,b:-1},"4":{a:5e5,b:-1},"5":{a:5e5,b:-1}},"/items/crimson_hammer":{"0":{a:21e4,b:145e3},"1":{a:3e5,b:-1},"2":{a:35e4,b:-1},"3":{a:43e4,b:-1},"4":{a:1e7,b:-1},"5":{a:155e4,b:3e5},"6":{a:-1,b:42e4}},"/items/crimson_hatchet":{"0":{a:16e4,b:135e3},"1":{a:185e3,b:-1},"3":{a:4e6,b:-1},"5":{a:9e6,b:7e5},"6":{a:11e6,b:-1},"10":{a:52e6,b:-1}},"/items/crimson_helmet":{"0":{a:13e4,b:12e4},"2":{a:185e3,b:-1},"3":{a:33e4,b:-1},"5":{a:19e5,b:-1},"8":{a:6e7,b:-1}},"/items/crimson_mace":{"0":{a:2e5,b:195e3},"3":{a:35e4,b:-1}},"/items/crimson_milk":{"0":{a:350,b:340}},"/items/crimson_needle":{"0":{a:175e3,b:14e4},"1":{a:27e4,b:-1},"2":{a:42e4,b:-1},"3":{a:6e5,b:-1},"4":{a:82e4,b:-1},"5":{a:105e4,b:-1},"10":{a:-1,b:13e5}},"/items/crimson_plate_body":{"0":{a:19e4,b:185e3},"1":{a:29e4,b:-1},"4":{a:35e4,b:-1},"5":{a:4e5,b:1e5}},"/items/crimson_plate_legs":{"0":{a:175e3,b:17e4}},"/items/crimson_pot":{"0":{a:15e4,b:145e3},"1":{a:18e4,b:-1},"2":{a:23e4,b:-1},"3":{a:42e4,b:-1},"5":{a:-1,b:26e4}},"/items/crimson_shears":{"0":{a:16e4,b:15e4},"1":{a:32e4,b:-1},"2":{a:-1,b:11e3},"3":{a:7e5,b:11e3},"5":{a:26e5,b:235e3},"6":{a:-1,b:54e4}},"/items/crimson_spatula":{"0":{a:17e4,b:135e3},"1":{a:45e5,b:-1},"5":{a:14e5,b:285e3}},"/items/crimson_spear":{"0":{a:2e5,b:195e3},"1":{a:245e3,b:-1},"2":{a:4e5,b:-1},"3":{a:88e4,b:76e4},"6":{a:1e6,b:-1}},"/items/crimson_sword":{"0":{a:215e3,b:2e5},"1":{a:22e4,b:-1},"2":{a:23e4,b:14e3},"3":{a:35e4,b:-1},"4":{a:86e4,b:-1},"5":{a:1e6,b:-1},"8":{a:66e5,b:-1}},"/items/crippling_slash":{"0":{a:48e3,b:47e3}},"/items/critical_aura":{"0":{a:2e6,b:195e4}},"/items/critical_coffee":{"0":{a:3700,b:3600}},"/items/crushed_amber":{"0":{a:1350,b:1300}},"/items/crushed_amethyst":{"0":{a:2150,b:2100}},"/items/crushed_garnet":{"0":{a:2150,b:2100}},"/items/crushed_jade":{"0":{a:2150,b:2100}},"/items/crushed_moonstone":{"0":{a:3100,b:3e3}},"/items/crushed_pearl":{"0":{a:860,b:840}},"/items/crushed_philosophers_stone":{"0":{a:21e5,b:205e4}},"/items/crushed_sunstone":{"0":{a:7600,b:7400}},"/items/cupcake":{"0":{a:200,b:155}},"/items/cursed_ball":{"0":{a:76e5,b:74e5}},"/items/cursed_bow":{"0":{a:185e6,b:175e6},"1":{a:-1,b:16e7},"2":{a:-1,b:165e6},"3":{a:-1,b:165e6},"4":{a:-1,b:16e7},"5":{a:-1,b:17e7},"6":{a:205e6,b:17e7},"7":{a:23e7,b:195e6},"8":{a:34e7,b:205e6},"9":{a:-1,b:255e6},"10":{a:54e7,b:42e7},"12":{a:155e7,b:11e8}},"/items/cursed_bow_refined":{"0":{a:-1,b:4e7},"10":{a:125e7,b:6e6}},"/items/dairyhands_bottoms":{"0":{a:-1,b:1e8},"1":{a:-1,b:6e7},"3":{a:-1,b:41e5},"5":{a:23e7,b:2e8},"7":{a:245e6,b:205e6},"8":{a:285e6,b:245e6},"10":{a:45e7,b:4e8},"12":{a:-1,b:7e8}},"/items/dairyhands_top":{"0":{a:-1,b:13e7},"5":{a:19e7,b:155e6},"6":{a:195e6,b:125e6},"7":{a:205e6,b:19e7},"8":{a:24e7,b:2e8},"10":{a:41e7,b:38e7}},"/items/damaged_anchor":{"0":{a:8e6,b:78e5}},"/items/dark_key_fragment":{"0":{a:175e4,b:17e5}},"/items/defense_coffee":{"0":{a:880,b:840}},"/items/demonic_core":{"0":{a:92e4,b:9e5}},"/items/demonic_plate_body":{"0":{a:88e5,b:78e5},"3":{a:96e5,b:4e6},"4":{a:-1,b:42e5},"5":{a:12e6,b:86e5},"6":{a:145e5,b:94e5},"7":{a:2e7,b:165e5},"8":{a:-1,b:2e7},"10":{a:-1,b:72e6}},"/items/demonic_plate_legs":{"0":{a:68e5,b:6e6},"4":{a:-1,b:4e6},"5":{a:58e5,b:49e5},"6":{a:1e7,b:52e5},"7":{a:16e6,b:14e6},"8":{a:255e5,b:155e5},"10":{a:8e7,b:64e6},"13":{a:25e7,b:-1}},"/items/dodocamel_gauntlets":{"0":{a:5e7,b:46e6},"4":{a:-1,b:82e5},"5":{a:52e6,b:48e6},"6":{a:6e7,b:-1},"7":{a:-1,b:6e7},"8":{a:9e7,b:84e6},"9":{a:-1,b:1e8},"10":{a:24e7,b:235e6},"12":{a:92e7,b:88e7}},"/items/dodocamel_gauntlets_refined":{"10":{a:43e7,b:41e7},"12":{a:115e7,b:11e8},"14":{a:-1,b:3e6}},"/items/dodocamel_plume":{"0":{a:7e6,b:68e5}},"/items/donut":{"0":{a:165,b:145}},"/items/dragon_fruit":{"0":{a:390,b:380}},"/items/dragon_fruit_gummy":{"0":{a:1050,b:1e3}},"/items/dragon_fruit_yogurt":{"0":{a:1400,b:1350}},"/items/earrings_of_armor":{"0":{a:66e5,b:64e5},"1":{a:9e6,b:-1},"2":{a:105e5,b:-1},"3":{a:11e6,b:-1},"4":{a:29e6,b:-1},"6":{a:12e7,b:-1}},"/items/earrings_of_critical_strike":{"0":{a:1e7,b:82e5},"1":{a:-1,b:78e5},"2":{a:-1,b:1e7},"3":{a:205e5,b:18e6},"4":{a:4e7,b:31e6},"5":{a:74e6,b:72e6},"6":{a:-1,b:76e6}},"/items/earrings_of_essence_find":{"0":{a:66e5,b:64e5},"7":{a:175e6,b:-1}},"/items/earrings_of_gathering":{"0":{a:7e6,b:66e5},"2":{a:145e5,b:-1},"3":{a:2e7,b:-1},"5":{a:-1,b:58e6},"10":{a:-1,b:4e8}},"/items/earrings_of_rare_find":{"0":{a:76e5,b:7e6},"1":{a:96e5,b:-1},"2":{a:-1,b:9e6},"3":{a:205e5,b:18e6},"4":{a:34e6,b:32e6},"5":{a:66e6,b:64e6},"6":{a:14e7,b:-1},"10":{a:-1,b:9e7}},"/items/earrings_of_regeneration":{"0":{a:66e5,b:6e6},"1":{a:72e5,b:6e6},"2":{a:1e7,b:76e5},"3":{a:16e6,b:14e6},"4":{a:3e7,b:265e5},"5":{a:6e7,b:54e6},"6":{a:11e7,b:7e7},"7":{a:175e6,b:165e6},"8":{a:39e7,b:-1}},"/items/earrings_of_resistance":{"0":{a:68e5,b:66e5},"2":{a:98e5,b:-1},"3":{a:98e5,b:-1},"4":{a:215e5,b:-1},"5":{a:47e6,b:-1}},"/items/efficiency_tea":{"0":{a:1500,b:1450}},"/items/egg":{"0":{a:58,b:56}},"/items/elemental_affinity":{"0":{a:18e4,b:175e3}},"/items/elusiveness":{"0":{a:68e3,b:66e3}},"/items/emp_tea_leaf":{"0":{a:105,b:100}},"/items/enchanted_chest_key":{"0":{a:52e5,b:5e6}},"/items/enchanted_entry_key":{"0":{a:64e4,b:62e4}},"/items/enchanted_essence":{"0":{a:1650,b:1600}},"/items/enchanted_gloves":{"0":{a:86e5,b:8e6},"2":{a:-1,b:36e5},"5":{a:98e5,b:84e5},"6":{a:125e5,b:8e6},"7":{a:185e5,b:12e6},"8":{a:27e6,b:195e5},"9":{a:-1,b:105e5},"10":{a:72e6,b:64e6},"12":{a:245e6,b:21e7}},"/items/enchanted_refinement_shard":{"0":{a:36e5,b:35e5}},"/items/enhancers_bottoms":{"0":{a:-1,b:25e6},"5":{a:35e7,b:25e6},"7":{a:34e7,b:265e6},"8":{a:4e8,b:28e7},"10":{a:58e7,b:56e7}},"/items/enhancers_top":{"5":{a:34e7,b:2e8},"6":{a:265e6,b:-1},"7":{a:295e6,b:205e6},"8":{a:33e7,b:25e7},"10":{a:52e7,b:5e8},"12":{a:-1,b:14e8}},"/items/enhancing_essence":{"0":{a:880,b:860}},"/items/enhancing_tea":{"0":{a:1150,b:1100}},"/items/entangle":{"0":{a:23500,b:23e3}},"/items/excelsa_coffee_bean":{"0":{a:820,b:800}},"/items/expert_alchemy_charm":{"3":{a:28e7,b:-1},"5":{a:34e7,b:25e7}},"/items/expert_attack_charm":{"0":{a:47e6,b:43e6},"2":{a:-1,b:4e7},"3":{a:8e7,b:72e6},"4":{a:135e6,b:-1},"5":{a:185e6,b:17e7},"6":{a:31e7,b:-1}},"/items/expert_brewing_charm":{"0":{a:105e6,b:-1},"4":{a:24e7,b:-1},"5":{a:24e7,b:19e7}},"/items/expert_cheesesmithing_charm":{"0":{a:245e6,b:3e6},"5":{a:295e6,b:-1}},"/items/expert_cooking_charm":{"3":{a:16e7,b:-1},"5":{a:285e6,b:-1}},"/items/expert_crafting_charm":{"0":{a:165e6,b:42e6},"1":{a:19e7,b:-1},"3":{a:24e7,b:-1},"5":{a:31e7,b:-1}},"/items/expert_defense_charm":{"0":{a:48e6,b:31e6},"1":{a:78e6,b:-1},"2":{a:-1,b:54e6},"3":{a:76e6,b:68e6},"4":{a:14e7,b:1e8},"5":{a:195e6,b:175e6}},"/items/expert_enhancing_charm":{"0":{a:39e7,b:-1},"5":{a:52e7,b:-1}},"/items/expert_foraging_charm":{"0":{a:165e6,b:33e5},"3":{a:22e7,b:-1},"5":{a:275e6,b:265e6},"7":{a:-1,b:56e5}},"/items/expert_intelligence_charm":{"0":{a:5e7,b:31e6},"2":{a:-1,b:44e6},"3":{a:-1,b:68e6},"4":{a:-1,b:1e8},"5":{a:-1,b:17e7}},"/items/expert_magic_charm":{"0":{a:76e6,b:6e7},"1":{a:84e6,b:-1},"2":{a:88e6,b:-1},"3":{a:98e6,b:94e6},"4":{a:-1,b:14e7},"5":{a:21e7,b:2e8},"6":{a:34e7,b:285e6}},"/items/expert_melee_charm":{"0":{a:48e6,b:43e6},"3":{a:78e6,b:7e7},"5":{a:185e6,b:17e7}},"/items/expert_milking_charm":{"0":{a:16e7,b:-1},"1":{a:16e7,b:-1},"3":{a:195e6,b:-1},"5":{a:275e6,b:-1},"10":{a:-1,b:82e7}},"/items/expert_ranged_charm":{"0":{a:46e6,b:4e7},"1":{a:66e6,b:-1},"3":{a:72e6,b:68e6},"4":{a:13e7,b:1e8},"5":{a:18e7,b:17e7},"7":{a:4e8,b:-1}},"/items/expert_stamina_charm":{"0":{a:-1,b:66e6},"1":{a:8e7,b:-1},"2":{a:96e6,b:74e6},"3":{a:12e7,b:-1},"5":{a:255e6,b:205e6}},"/items/expert_tailoring_charm":{"0":{a:-1,b:52e6},"5":{a:25e7,b:-1}},"/items/expert_woodcutting_charm":{"0":{a:125e6,b:-1},"3":{a:23e7,b:1e7},"5":{a:275e6,b:-1}},"/items/eye_of_the_watcher":{"0":{a:78e4,b:76e4}},"/items/eye_watch":{"0":{a:74e5,b:7e6},"1":{a:-1,b:31e5},"2":{a:96e5,b:31e5},"3":{a:9e6,b:6e6},"4":{a:92e5,b:58e5},"5":{a:96e5,b:88e5},"6":{a:125e5,b:6e6},"7":{a:16e6,b:125e5},"8":{a:27e6,b:2e7},"9":{a:46e6,b:36e6},"10":{a:7e7,b:68e6},"12":{a:-1,b:38e5},"13":{a:-1,b:1e8}},"/items/eyessence":{"0":{a:37,b:36}},"/items/fierce_aura":{"0":{a:22e5,b:215e4}},"/items/fieriosa_coffee_bean":{"0":{a:940,b:920}},"/items/fighter_necklace":{"0":{a:14e6,b:115e5},"1":{a:-1,b:8e6},"2":{a:-1,b:14e6},"3":{a:265e5,b:205e5},"5":{a:-1,b:26e6}},"/items/fireball":{"0":{a:6600,b:6400}},"/items/firestorm":{"0":{a:18e4,b:175e3}},"/items/flame_arrow":{"0":{a:33e3,b:32e3}},"/items/flame_blast":{"0":{a:33e3,b:32e3}},"/items/flaming_cloth":{"0":{a:62e3,b:58e3}},"/items/flaming_robe_bottoms":{"0":{a:21e4,b:2e5},"2":{a:26e4,b:-1},"3":{a:2e5,b:-1},"5":{a:27e4,b:-1},"6":{a:8e5,b:-1},"7":{a:105e4,b:52e4},"8":{a:19e5,b:-1},"9":{a:25e5,b:6e5},"10":{a:3e6,b:23e5},"12":{a:24e6,b:-1}},"/items/flaming_robe_top":{"0":{a:26e4,b:255e3},"1":{a:275e3,b:-1},"2":{a:3e5,b:21e4},"3":{a:275e3,b:-1},"4":{a:35e4,b:-1},"5":{a:42e4,b:24e4},"6":{a:7e5,b:-1},"7":{a:78e4,b:56e4},"8":{a:175e4,b:58e4},"9":{a:35e5,b:6e5},"10":{a:46e5,b:31e5}},"/items/flax":{"0":{a:84,b:78}},"/items/fluffy_red_hat":{"0":{a:54e5,b:52e5},"5":{a:56e5,b:52e5},"6":{a:66e5,b:66e4},"7":{a:1e7,b:84e5},"8":{a:155e5,b:11e6},"9":{a:28e6,b:155e5},"10":{a:42e6,b:4e7}},"/items/foragers_bottoms":{"0":{a:-1,b:2e8},"5":{a:23e7,b:21e7},"6":{a:235e6,b:-1},"7":{a:25e7,b:245e6},"8":{a:29e7,b:255e6},"10":{a:45e7,b:39e7},"11":{a:-1,b:26e7}},"/items/foragers_top":{"0":{a:185e6,b:1e8},"1":{a:-1,b:3e7},"5":{a:19e7,b:155e6},"6":{a:21e7,b:-1},"7":{a:21e7,b:19e7},"8":{a:245e6,b:22e7},"10":{a:41e7,b:38e7}},"/items/foraging_essence":{"0":{a:290,b:285}},"/items/foraging_tea":{"0":{a:640,b:620}},"/items/fracturing_impact":{"0":{a:54e3,b:52e3}},"/items/frenzy":{"0":{a:36e4,b:35e4}},"/items/frost_sphere":{"0":{a:56e4,b:54e4}},"/items/frost_staff":{"0":{a:11e6,b:105e5},"5":{a:11e6,b:105e5},"6":{a:14e6,b:-1},"7":{a:145e5,b:94e5},"8":{a:16e6,b:-1},"9":{a:235e5,b:14e6},"10":{a:44e6,b:3e7}},"/items/frost_surge":{"0":{a:32e4,b:31e4}},"/items/furious_spear":{"0":{a:235e6,b:23e7},"1":{a:-1,b:19e7},"2":{a:-1,b:185e6},"3":{a:-1,b:175e6},"4":{a:-1,b:18e7},"5":{a:255e6,b:225e6},"6":{a:-1,b:2e8},"7":{a:295e6,b:27e7},"8":{a:-1,b:31e7},"10":{a:62e7,b:58e7},"12":{a:-1,b:155e7},"14":{a:-1,b:66e5}},"/items/furious_spear_refined":{"10":{a:-1,b:56e5},"15":{a:-1,b:5e6}},"/items/garnet":{"0":{a:35e3,b:34e3}},"/items/gathering_tea":{"0":{a:680,b:600}},"/items/gator_vest":{"0":{a:18e3,b:17500},"1":{a:27500,b:16e3},"2":{a:26e3,b:16e3},"3":{a:32e3,b:16e3},"4":{a:47e3,b:16e3},"5":{a:34e3,b:32e3},"6":{a:76e3,b:56e3},"7":{a:135e3,b:105e3},"8":{a:31e4,b:25e4},"9":{a:9e5,b:5e5},"10":{a:1e6,b:98e4}},"/items/giant_pouch":{"0":{a:66e5,b:64e5},"1":{a:72e5,b:64e5},"2":{a:72e5,b:64e5},"3":{a:76e5,b:64e5},"4":{a:9e6,b:82e5},"5":{a:11e6,b:1e7},"6":{a:205e5,b:135e5},"7":{a:-1,b:145e5},"10":{a:-1,b:11e5}},"/items/ginkgo_bow":{"0":{a:31e4,b:3e5},"3":{a:56e4,b:-1},"5":{a:68e4,b:-1},"6":{a:155e4,b:-1}},"/items/ginkgo_crossbow":{"0":{a:22e4,b:195e3},"1":{a:39e4,b:-1},"5":{a:14e5,b:-1},"6":{a:43e7,b:-1}},"/items/ginkgo_fire_staff":{"0":{a:25e4,b:22e4},"2":{a:275e3,b:-1},"3":{a:31e4,b:-1},"5":{a:48e4,b:-1},"6":{a:88e4,b:-1},"7":{a:41e5,b:-1}},"/items/ginkgo_log":{"0":{a:230,b:210}},"/items/ginkgo_lumber":{"0":{a:1600,b:1550}},"/items/ginkgo_nature_staff":{"0":{a:3e5,b:225e3},"3":{a:44e4,b:-1}},"/items/ginkgo_shield":{"0":{a:14e4,b:135e3},"3":{a:11e4,b:-1},"4":{a:195e3,b:-1},"5":{a:35e4,b:-1},"6":{a:66e4,b:-1}},"/items/ginkgo_water_staff":{"0":{a:34e4,b:22e4},"4":{a:45e5,b:-1},"5":{a:5e6,b:-1}},"/items/gluttonous_energy":{"0":{a:165e5,b:145e5}},"/items/gluttonous_pouch":{"0":{a:215e6,b:205e5},"5":{a:265e6,b:245e6}},"/items/gobo_boomstick":{"0":{a:8e4,b:78e3},"1":{a:88e3,b:-1},"2":{a:98e3,b:-1},"5":{a:11e4,b:28e3},"6":{a:225e3,b:-1},"7":{a:52e4,b:-1},"8":{a:115e4,b:-1},"10":{a:45e5,b:-1}},"/items/gobo_boots":{"0":{a:38e3,b:24e3},"1":{a:295e3,b:-1},"5":{a:11e5,b:-1}},"/items/gobo_bracers":{"0":{a:43e3,b:37e3},"2":{a:46e4,b:-1},"3":{a:47e4,b:-1},"5":{a:33e4,b:-1}},"/items/gobo_chaps":{"0":{a:64e3,b:6e4},"1":{a:1e5,b:-1},"2":{a:11e4,b:-1},"3":{a:225e3,b:-1},"5":{a:1e6,b:-1},"6":{a:12e5,b:-1}},"/items/gobo_defender":{"0":{a:42e4,b:41e4},"1":{a:-1,b:33e4},"2":{a:43e4,b:32e4},"3":{a:43e4,b:31e4},"4":{a:-1,b:4e5},"5":{a:46e4,b:41e4},"6":{a:54e4,b:41e4},"7":{a:68e4,b:5e5},"8":{a:11e5,b:9e5},"10":{a:39e5,b:255e4},"13":{a:-1,b:66e5}},"/items/gobo_essence":{"0":{a:90,b:88}},"/items/gobo_hide":{"0":{a:19,b:17}},"/items/gobo_hood":{"0":{a:45e3,b:38e3},"1":{a:1e5,b:-1},"2":{a:29e4,b:-1},"3":{a:25e4,b:-1},"4":{a:3e5,b:-1}},"/items/gobo_leather":{"0":{a:840,b:800}},"/items/gobo_rag":{"0":{a:36e4,b:35e4}},"/items/gobo_shooter":{"0":{a:8e4,b:78e3},"1":{a:82e3,b:-1},"2":{a:96e3,b:-1},"3":{a:96e3,b:-1},"5":{a:92e3,b:28e3},"6":{a:145e3,b:-1},"7":{a:34e4,b:-1},"8":{a:66e4,b:-1},"10":{a:35e5,b:-1}},"/items/gobo_slasher":{"0":{a:8e4,b:78e3},"1":{a:8e4,b:-1},"2":{a:92e3,b:-1},"3":{a:94e3,b:-1},"4":{a:1e5,b:-1},"5":{a:12e4,b:1e5},"6":{a:4e5,b:2e5},"7":{a:62e4,b:-1},"8":{a:2e6,b:11e5},"10":{a:45e5,b:4e6},"11":{a:1e7,b:52e5}},"/items/gobo_smasher":{"0":{a:8e4,b:78e3},"1":{a:27e4,b:-1},"2":{a:41e5,b:-1},"3":{a:1e5,b:-1},"5":{a:125e3,b:28e3},"6":{a:9e5,b:-1},"7":{a:1e6,b:-1},"8":{a:66e5,b:-1},"10":{a:68e5,b:-1},"14":{a:16e7,b:-1}},"/items/gobo_stabber":{"0":{a:8e4,b:78e3},"1":{a:84e3,b:-1},"2":{a:1e5,b:-1},"3":{a:98e3,b:-1},"4":{a:49e4,b:-1},"5":{a:1e5,b:-1},"6":{a:22e4,b:-1},"7":{a:5e5,b:-1},"8":{a:195e4,b:-1},"10":{a:49e5,b:-1},"12":{a:2e7,b:-1}},"/items/gobo_tunic":{"0":{a:7e4,b:64e3},"1":{a:105e3,b:-1},"2":{a:62e4,b:-1},"3":{a:64e4,b:-1},"4":{a:125e4,b:-1},"5":{a:6e5,b:-1}},"/items/goggles":{"0":{a:52e4,b:5e5}},"/items/golem_essence":{"0":{a:260,b:255}},"/items/gourmet_tea":{"0":{a:720,b:680}},"/items/grandmaster_alchemy_charm":{},"/items/grandmaster_attack_charm":{"5":{a:-1,b:7e8},"8":{a:-1,b:25e8}},"/items/grandmaster_brewing_charm":{},"/items/grandmaster_cheesesmithing_charm":{},"/items/grandmaster_cooking_charm":{"0":{a:-1,b:62e6}},"/items/grandmaster_crafting_charm":{},"/items/grandmaster_defense_charm":{"5":{a:96e7,b:-1}},"/items/grandmaster_enhancing_charm":{},"/items/grandmaster_foraging_charm":{"0":{a:-1,b:145e5},"5":{a:-1,b:16e6},"7":{a:-1,b:1e7},"8":{a:-1,b:19e8},"10":{a:-1,b:3e9},"20":{a:-1,b:145e5}},"/items/grandmaster_intelligence_charm":{},"/items/grandmaster_magic_charm":{"0":{a:11e8,b:-1},"7":{a:24e8,b:-1},"10":{a:-1,b:6e9}},"/items/grandmaster_melee_charm":{"0":{a:-1,b:16e7},"5":{a:-1,b:1e9}},"/items/grandmaster_milking_charm":{},"/items/grandmaster_ranged_charm":{"0":{a:-1,b:24e7},"5":{a:-1,b:225e6},"20":{a:-1,b:4e7}},"/items/grandmaster_stamina_charm":{},"/items/grandmaster_tailoring_charm":{"0":{a:-1,b:11e6},"5":{a:-1,b:1e9}},"/items/grandmaster_woodcutting_charm":{"0":{a:-1,b:1e7},"5":{a:-1,b:1e8}},"/items/granite_bludgeon":{"0":{a:165e5,b:98e5},"5":{a:13e6,b:-1},"6":{a:15e6,b:-1},"7":{a:2e7,b:12e6},"8":{a:28e6,b:18e6},"10":{a:62e6,b:49e6},"12":{a:22e7,b:215e5},"14":{a:58e7,b:56e4}},"/items/green_key_fragment":{"0":{a:58e4,b:56e4}},"/items/green_tea_leaf":{"0":{a:14,b:13}},"/items/griffin_bulwark":{"0":{a:185e6,b:17e7},"5":{a:-1,b:18e7},"6":{a:-1,b:19e7},"7":{a:25e7,b:215e6},"8":{a:-1,b:245e6},"10":{a:48e7,b:47e7},"11":{a:82e7,b:68e5},"12":{a:13e8,b:-1},"14":{a:-1,b:5e9}},"/items/griffin_bulwark_refined":{"10":{a:-1,b:115e6},"12":{a:195e7,b:5e6}},"/items/griffin_chaps":{"0":{a:76e5,b:7e6},"5":{a:98e5,b:82e5},"6":{a:13e6,b:-1},"7":{a:135e5,b:-1},"8":{a:15e6,b:-1},"10":{a:38e6,b:2e7},"12":{a:12e7,b:-1}},"/items/griffin_leather":{"0":{a:11e5,b:105e4}},"/items/griffin_talon":{"0":{a:66e5,b:64e5}},"/items/griffin_tunic":{"0":{a:105e5,b:1e7},"1":{a:-1,b:84e5},"2":{a:-1,b:84e5},"3":{a:-1,b:84e5},"5":{a:12e6,b:82e5},"6":{a:14e6,b:-1},"7":{a:16e6,b:-1},"8":{a:245e5,b:-1},"10":{a:33e6,b:-1},"12":{a:12e7,b:-1}},"/items/grizzly_bear_fluff":{"0":{a:92e3,b:9e4}},"/items/grizzly_bear_shoes":{"0":{a:52e4,b:49e4},"1":{a:58e4,b:-1},"4":{a:8e5,b:-1},"5":{a:12e5,b:8e5},"6":{a:2e6,b:12e5},"7":{a:235e4,b:19e5},"8":{a:4e6,b:33e5},"10":{a:115e5,b:105e5},"11":{a:-1,b:12e6},"12":{a:44e6,b:35e6},"13":{a:78e6,b:-1},"14":{a:15e7,b:-1},"15":{a:29e7,b:27e7},"16":{a:6e8,b:-1}},"/items/guardian_aura":{"0":{a:11e5,b:105e4}},"/items/gummy":{"0":{a:130,b:115}},"/items/guzzling_energy":{"0":{a:215e5,b:21e6}},"/items/guzzling_pouch":{"0":{a:27e7,b:26e7},"1":{a:-1,b:16e6},"2":{a:-1,b:265e6},"3":{a:-1,b:265e6},"4":{a:-1,b:23e7},"5":{a:29e7,b:27e7},"6":{a:32e7,b:31e7},"7":{a:38e7,b:37e7},"8":{a:52e7,b:5e8},"9":{a:-1,b:66e7},"10":{a:105e7,b:1e9},"12":{a:3e9,b:265e5}},"/items/heal":{"0":{a:33e3,b:32e3}},"/items/holy_alembic":{"0":{a:52e4,b:5e5},"1":{a:54e4,b:21e4},"2":{a:76e4,b:22e4},"3":{a:8e5,b:265e3},"4":{a:15e5,b:52e4},"5":{a:2e6,b:19e5},"6":{a:48e5,b:-1},"7":{a:8e6,b:66e5},"8":{a:175e5,b:12e6},"10":{a:47e6,b:43e6},"12":{a:165e6,b:-1}},"/items/holy_boots":{"0":{a:24e4,b:225e3},"1":{a:255e3,b:-1},"2":{a:31e4,b:-1},"3":{a:37e4,b:-1},"4":{a:62e4,b:-1},"5":{a:92e4,b:25e4},"6":{a:48e5,b:48e4}},"/items/holy_brush":{"0":{a:52e4,b:5e5},"1":{a:52e4,b:1e5},"2":{a:7e5,b:1e5},"3":{a:105e4,b:-1},"4":{a:135e4,b:-1},"5":{a:2e6,b:195e4},"6":{a:43e5,b:3e6},"7":{a:78e5,b:66e5},"8":{a:15e6,b:13e6},"9":{a:27e6,b:-1},"10":{a:49e6,b:42e6},"12":{a:-1,b:48e6}},"/items/holy_buckler":{"0":{a:5e5,b:49e4},"1":{a:47e4,b:-1},"2":{a:56e4,b:-1},"3":{a:45e4,b:-1},"5":{a:11e5,b:2e5},"6":{a:39e5,b:-1}},"/items/holy_bulwark":{"0":{a:9e5,b:8e5},"1":{a:84e4,b:-1},"2":{a:1e6,b:-1},"3":{a:14e5,b:14e4},"4":{a:19e5,b:19e4},"5":{a:17e5,b:175e3},"6":{a:48e5,b:48e4}},"/items/holy_cheese":{"0":{a:2200,b:2150}},"/items/holy_chisel":{"0":{a:52e4,b:5e5},"1":{a:5e5,b:235e3},"2":{a:8e5,b:245e3},"3":{a:1e6,b:24e4},"4":{a:125e4,b:-1},"5":{a:23e5,b:18e5},"6":{a:42e5,b:29e5},"7":{a:82e5,b:6e6},"8":{a:145e5,b:13e6},"9":{a:27e6,b:-1},"10":{a:49e6,b:47e6}},"/items/holy_enhancer":{"0":{a:54e4,b:5e5},"1":{a:56e4,b:-1},"2":{a:7e5,b:-1},"3":{a:82e4,b:-1},"4":{a:12e5,b:-1},"5":{a:195e4,b:19e5},"6":{a:39e5,b:19e5},"7":{a:78e5,b:68e5},"8":{a:16e6,b:135e5},"9":{a:29e6,b:-1},"10":{a:47e6,b:45e6},"11":{a:84e6,b:43e6},"12":{a:185e6,b:165e6}},"/items/holy_gauntlets":{"0":{a:3e5,b:2e5},"1":{a:56e4,b:-1},"2":{a:56e4,b:-1},"3":{a:46e4,b:-1},"4":{a:88e4,b:-1},"5":{a:15e5,b:3e5},"6":{a:44e5,b:225e4},"10":{a:-1,b:1e6}},"/items/holy_hammer":{"0":{a:52e4,b:5e5},"1":{a:64e4,b:225e3},"2":{a:74e4,b:225e3},"3":{a:78e4,b:245e3},"4":{a:14e5,b:255e3},"5":{a:2e6,b:19e5},"6":{a:42e5,b:2e6},"7":{a:8e6,b:66e5},"8":{a:15e6,b:13e6},"9":{a:275e5,b:-1},"10":{a:49e6,b:46e6},"12":{a:1e8,b:-1}},"/items/holy_hatchet":{"0":{a:52e4,b:5e5},"1":{a:54e4,b:2e5},"2":{a:76e4,b:265e3},"3":{a:86e4,b:34e4},"5":{a:19e5,b:185e4},"6":{a:47e5,b:285e4},"7":{a:78e5,b:72e5},"8":{a:15e6,b:135e5},"9":{a:-1,b:2e7},"10":{a:48e6,b:47e6}},"/items/holy_helmet":{"0":{a:43e4,b:42e4},"2":{a:43e4,b:-1},"3":{a:47e4,b:-1},"4":{a:6e5,b:-1},"5":{a:54e4,b:-1},"6":{a:42e5,b:42e4}},"/items/holy_mace":{"0":{a:86e4,b:72e4},"1":{a:78e4,b:3e5},"2":{a:-1,b:23e4},"3":{a:68e4,b:-1},"4":{a:9e5,b:-1},"5":{a:125e4,b:-1},"6":{a:2e6,b:2e5}},"/items/holy_milk":{"0":{a:460,b:450}},"/items/holy_needle":{"0":{a:5e5,b:46e4},"1":{a:62e4,b:-1},"3":{a:105e4,b:72e4},"4":{a:125e4,b:-1},"5":{a:2e6,b:18e5},"6":{a:42e5,b:-1},"7":{a:76e5,b:6e6},"8":{a:145e5,b:-1},"9":{a:275e5,b:225e5},"10":{a:44e6,b:4e7},"12":{a:1e8,b:-1}},"/items/holy_plate_body":{"0":{a:66e4,b:64e4},"1":{a:84e4,b:-1},"2":{a:8e5,b:-1},"3":{a:82e4,b:32e4},"4":{a:86e4,b:-1},"5":{a:15e5,b:6e5},"6":{a:45e5,b:45e4}},"/items/holy_plate_legs":{"0":{a:58e4,b:56e4},"1":{a:44e4,b:-1},"2":{a:64e4,b:-1},"3":{a:52e4,b:295e3},"4":{a:1e6,b:18e4},"5":{a:155e4,b:35e4},"6":{a:47e5,b:47e4}},"/items/holy_pot":{"0":{a:52e4,b:49e4},"1":{a:58e4,b:-1},"3":{a:94e4,b:28e4},"4":{a:135e4,b:27e4},"5":{a:2e6,b:195e4},"6":{a:45e5,b:3e6},"7":{a:82e5,b:62e5},"8":{a:165e5,b:13e6},"9":{a:-1,b:2e7},"10":{a:48e6,b:46e6},"11":{a:96e6,b:31e6}},"/items/holy_shears":{"0":{a:54e4,b:52e4},"1":{a:56e4,b:23e4},"2":{a:88e4,b:23e4},"3":{a:125e4,b:25e4},"4":{a:145e4,b:-1},"5":{a:2e6,b:195e4},"6":{a:48e5,b:3e6},"7":{a:78e5,b:68e5},"8":{a:15e6,b:135e5},"9":{a:27e6,b:-1},"10":{a:52e6,b:48e6},"12":{a:-1,b:9e7}},"/items/holy_spatula":{"0":{a:54e4,b:52e4},"1":{a:56e4,b:155e3},"2":{a:68e4,b:275e3},"3":{a:84e4,b:215e3},"5":{a:2e6,b:19e5},"6":{a:44e5,b:3e6},"7":{a:84e5,b:72e5},"8":{a:15e6,b:13e6},"9":{a:38e6,b:62e3},"10":{a:47e6,b:43e6}},"/items/holy_spear":{"0":{a:72e4,b:7e5},"1":{a:7e5,b:-1},"2":{a:76e4,b:-1},"3":{a:74e4,b:33e4},"4":{a:11e5,b:-1},"5":{a:145e4,b:92e4},"6":{a:5e6,b:5e5},"10":{a:-1,b:2e7}},"/items/holy_sword":{"0":{a:54e4,b:46e4},"1":{a:56e4,b:-1},"2":{a:98e4,b:44e4},"3":{a:7e5,b:-1},"4":{a:165e4,b:41e4},"5":{a:145e4,b:56e4},"6":{a:42e5,b:56e4},"7":{a:-1,b:1e6},"10":{a:-1,b:7e5}},"/items/ice_spear":{"0":{a:33e3,b:32e3}},"/items/icy_cloth":{"0":{a:58e3,b:56e3}},"/items/icy_robe_bottoms":{"0":{a:21e4,b:19e4},"1":{a:2e5,b:11e4},"2":{a:-1,b:11e4},"4":{a:35e4,b:-1},"5":{a:46e4,b:-1},"6":{a:49e4,b:-1},"7":{a:92e4,b:1e5},"8":{a:14e5,b:-1},"10":{a:4e6,b:165e4}},"/items/icy_robe_top":{"0":{a:265e3,b:255e3},"1":{a:64e5,b:1e5},"3":{a:3e5,b:1e5},"4":{a:35e4,b:-1},"5":{a:38e4,b:295e3},"6":{a:74e4,b:33e4},"7":{a:115e4,b:37e4},"8":{a:19e5,b:-1},"10":{a:5e6,b:23e5}},"/items/impale":{"0":{a:33e3,b:32e3}},"/items/infernal_battlestaff":{"0":{a:11e6,b:105e5},"4":{a:115e5,b:-1},"5":{a:11e6,b:105e5},"6":{a:12e6,b:1e7},"7":{a:13e6,b:115e5},"8":{a:17e6,b:12e6},"10":{a:39e6,b:36e6},"12":{a:17e7,b:-1}},"/items/infernal_ember":{"0":{a:54e4,b:52e4}},"/items/insanity":{"0":{a:84e4,b:82e4}},"/items/intelligence_coffee":{"0":{a:740,b:700}},"/items/invincible":{"0":{a:82e4,b:8e5}},"/items/jackalope_antler":{"0":{a:21e5,b:205e4}},"/items/jackalope_staff":{"0":{a:4e7,b:34e6},"5":{a:4e7,b:34e6},"6":{a:42e6,b:35e6},"7":{a:52e6,b:44e6},"10":{a:12e7,b:88e6}},"/items/jade":{"0":{a:35e3,b:34e3}},"/items/jungle_essence":{"0":{a:27,b:26}},"/items/knights_aegis":{"0":{a:98e6,b:96e6},"1":{a:-1,b:8e7},"3":{a:-1,b:8e7},"5":{a:1e8,b:96e6},"6":{a:-1,b:9e7},"7":{a:125e6,b:12e7},"8":{a:155e6,b:135e6},"9":{a:-1,b:155e6},"10":{a:36e7,b:34e7},"11":{a:-1,b:4e8},"12":{a:125e7,b:1e7},"20":{a:-1,b:6e6}},"/items/knights_aegis_refined":{"10":{a:68e7,b:7e7},"14":{a:-1,b:4e6}},"/items/knights_ingot":{"0":{a:78e5,b:76e5}},"/items/kraken_chaps":{"0":{a:78e6,b:74e6},"1":{a:-1,b:68e6},"2":{a:14e7,b:7e7},"3":{a:-1,b:68e6},"4":{a:-1,b:66e6},"5":{a:82e6,b:68e6},"7":{a:11e7,b:1e8},"8":{a:15e7,b:125e6},"9":{a:-1,b:14e7},"10":{a:37e7,b:36e7},"11":{a:-1,b:42e7},"12":{a:-1,b:115e7}},"/items/kraken_chaps_refined":{"10":{a:-1,b:5e8},"12":{a:-1,b:16e8},"15":{a:-1,b:5e8}},"/items/kraken_fang":{"0":{a:11e6,b:105e5}},"/items/kraken_leather":{"0":{a:84e5,b:82e5}},"/items/kraken_tunic":{"0":{a:98e6,b:94e6},"1":{a:-1,b:76e6},"2":{a:165e6,b:84e6},"3":{a:-1,b:84e6},"4":{a:-1,b:84e6},"5":{a:98e6,b:88e6},"6":{a:11e7,b:92e6},"7":{a:125e6,b:115e6},"8":{a:17e7,b:15e7},"9":{a:3e8,b:175e6},"10":{a:4e8,b:39e7},"11":{a:68e7,b:56e7},"12":{a:135e7,b:13e8}},"/items/kraken_tunic_refined":{"10":{a:72e7,b:66e7},"12":{a:-1,b:45e5},"15":{a:-1,b:52e5}},"/items/large_pouch":{"0":{a:78e4,b:74e4},"1":{a:1e6,b:-1},"2":{a:13e5,b:54e4},"3":{a:14e5,b:-1},"4":{a:165e4,b:-1},"5":{a:275e4,b:145e4}},"/items/liberica_coffee_bean":{"0":{a:640,b:620}},"/items/life_drain":{"0":{a:52e3,b:49e3}},"/items/linen_boots":{"0":{a:16500,b:10500},"3":{a:88e3,b:-1}},"/items/linen_fabric":{"0":{a:640,b:620}},"/items/linen_gloves":{"0":{a:17500,b:13e3},"1":{a:94e3,b:-1},"2":{a:11e4,b:-1},"5":{a:44e4,b:-1}},"/items/linen_hat":{"0":{a:18500,b:16500},"1":{a:86e3,b:-1},"2":{a:16e5,b:-1},"5":{a:35e4,b:-1}},"/items/linen_robe_bottoms":{"0":{a:24e3,b:22e3},"6":{a:72e5,b:-1}},"/items/linen_robe_top":{"0":{a:28e3,b:23e3},"2":{a:115e3,b:-1},"3":{a:13e5,b:-1},"5":{a:7e5,b:-1},"10":{a:-1,b:1e6}},"/items/living_granite":{"0":{a:58e4,b:56e4}},"/items/log":{"0":{a:28,b:26}},"/items/lucky_coffee":{"0":{a:2500,b:2450}},"/items/lumber":{"0":{a:320,b:300}},"/items/lumberjacks_bottoms":{"0":{a:235e6,b:-1},"5":{a:23e7,b:19e7},"7":{a:24e7,b:2e8},"8":{a:27e7,b:24e7},"10":{a:45e7,b:4e8}},"/items/lumberjacks_top":{"5":{a:19e7,b:18e7},"6":{a:195e6,b:-1},"7":{a:2e8,b:175e6},"8":{a:24e7,b:-1},"10":{a:41e7,b:37e7}},"/items/luna_robe_bottoms":{"0":{a:22e5,b:19e5},"1":{a:215e4,b:-1},"2":{a:22e5,b:-1},"4":{a:31e5,b:-1},"5":{a:36e5,b:26e5},"6":{a:4e6,b:-1},"7":{a:62e5,b:5e6},"8":{a:105e5,b:8e6},"9":{a:195e5,b:115e5},"10":{a:27e6,b:26e6},"12":{a:98e6,b:-1}},"/items/luna_robe_top":{"0":{a:26e5,b:23e5},"2":{a:3e6,b:-1},"3":{a:295e4,b:-1},"4":{a:34e5,b:-1},"5":{a:49e5,b:34e5},"6":{a:54e5,b:-1},"7":{a:7e6,b:-1},"8":{a:11e6,b:78e5},"9":{a:18e6,b:52e4},"10":{a:29e6,b:285e5},"11":{a:-1,b:43e6},"12":{a:105e6,b:86e6}},"/items/luna_wing":{"0":{a:285e3,b:28e4}},"/items/maelstrom_plate_body":{"0":{a:105e6,b:98e6},"1":{a:-1,b:86e6},"2":{a:-1,b:86e6},"3":{a:-1,b:86e6},"4":{a:-1,b:88e6},"5":{a:125e6,b:1e8},"6":{a:-1,b:86e6},"7":{a:125e6,b:12e7},"8":{a:175e6,b:145e6},"9":{a:-1,b:18e7},"10":{a:42e7,b:4e8},"12":{a:135e7,b:12e8}},"/items/maelstrom_plate_body_refined":{"1":{a:-1,b:48e5},"10":{a:78e7,b:7e8},"12":{a:-1,b:125e7},"14":{a:-1,b:45e5}},"/items/maelstrom_plate_legs":{"0":{a:84e6,b:76e6},"1":{a:-1,b:72e6},"2":{a:-1,b:72e6},"3":{a:-1,b:72e6},"4":{a:-1,b:7e7},"5":{a:92e6,b:78e6},"6":{a:98e6,b:74e6},"7":{a:11e7,b:105e6},"8":{a:15e7,b:13e7},"9":{a:-1,b:17e7},"10":{a:38e7,b:37e7},"12":{a:12e8,b:11e8},"13":{a:24e8,b:-1}},"/items/maelstrom_plate_legs_refined":{"10":{a:76e7,b:7e8},"12":{a:-1,b:4e6},"14":{a:-1,b:4e6}},"/items/maelstrom_plating":{"0":{a:84e5,b:82e5}},"/items/magic_coffee":{"0":{a:1200,b:1150}},"/items/magicians_cloth":{"0":{a:68e5,b:66e5}},"/items/magicians_hat":{"0":{a:74e6,b:72e6},"1":{a:-1,b:58e6},"2":{a:-1,b:58e6},"3":{a:-1,b:56e6},"4":{a:-1,b:58e6},"5":{a:76e6,b:64e6},"6":{a:-1,b:68e6},"7":{a:9e7,b:86e6},"8":{a:12e7,b:1e8},"9":{a:19e7,b:17e7},"10":{a:3e8,b:295e6},"11":{a:-1,b:48e7},"12":{a:11e8,b:88e7},"14":{a:42e8,b:35e5}},"/items/magicians_hat_refined":{"10":{a:6e8,b:56e7},"12":{a:135e7,b:125e7}},"/items/magnet":{"0":{a:27e4,b:265e3}},"/items/magnetic_gloves":{"0":{a:26e5,b:22e5},"1":{a:29e5,b:-1},"3":{a:-1,b:105e4},"5":{a:31e5,b:28e5},"6":{a:45e5,b:-1},"7":{a:7e6,b:62e5},"8":{a:135e5,b:84e5},"9":{a:205e5,b:-1},"10":{a:32e6,b:275e5},"12":{a:115e6,b:-1}},"/items/magnifying_glass":{"0":{a:18e5,b:175e4}},"/items/maim":{"0":{a:96e3,b:94e3}},"/items/mana_spring":{"0":{a:74e3,b:72e3}},"/items/manticore_shield":{"0":{a:21e6,b:205e5},"2":{a:-1,b:11e6},"3":{a:-1,b:105e5},"5":{a:23e6,b:21e6},"6":{a:275e5,b:2e7},"7":{a:31e6,b:295e5},"8":{a:58e6,b:3e7},"9":{a:88e6,b:5e7},"10":{a:13e7,b:12e7},"12":{a:44e7,b:41e7}},"/items/manticore_sting":{"0":{a:23e5,b:225e4}},"/items/marine_chaps":{"0":{a:44e4,b:4e5},"2":{a:68e4,b:-1},"8":{a:2e6,b:2e5}},"/items/marine_scale":{"0":{a:64e3,b:62e3}},"/items/marine_tunic":{"0":{a:52e4,b:5e5},"3":{a:62e4,b:-1},"4":{a:76e4,b:-1}},"/items/marksman_bracers":{"0":{a:98e6,b:94e6},"5":{a:1e8,b:82e6},"6":{a:-1,b:94e6},"7":{a:115e6,b:11e7},"8":{a:15e7,b:13e7},"9":{a:-1,b:16e7},"10":{a:32e7,b:31e7},"12":{a:-1,b:1e9}},"/items/marksman_bracers_refined":{"10":{a:68e7,b:64e7},"11":{a:-1,b:31e5},"12":{a:-1,b:125e7},"15":{a:-1,b:52e5}},"/items/marksman_brooch":{"0":{a:84e5,b:82e5}},"/items/marsberry":{"0":{a:135,b:125}},"/items/marsberry_cake":{"0":{a:1350,b:1300}},"/items/marsberry_donut":{"0":{a:1e3,b:980}},"/items/master_alchemy_charm":{"5":{a:-1,b:1e9}},"/items/master_attack_charm":{"0":{a:255e6,b:165e6},"5":{a:45e7,b:42e7},"6":{a:-1,b:86e6}},"/items/master_brewing_charm":{},"/items/master_cheesesmithing_charm":{"0":{a:1e9,b:-1}},"/items/master_cooking_charm":{},"/items/master_crafting_charm":{"0":{a:-1,b:105e6}},"/items/master_defense_charm":{"5":{a:45e7,b:-1}},"/items/master_enhancing_charm":{"0":{a:17e8,b:-1}},"/items/master_foraging_charm":{"5":{a:-1,b:46e7},"6":{a:-1,b:52e7},"7":{a:-1,b:6e6}},"/items/master_intelligence_charm":{"5":{a:58e7,b:-1}},"/items/master_magic_charm":{"5":{a:58e7,b:39e7},"6":{a:74e7,b:56e7}},"/items/master_melee_charm":{"0":{a:-1,b:13e7},"5":{a:45e7,b:4e8}},"/items/master_milking_charm":{"0":{a:-1,b:155e6},"10":{a:-1,b:2e9}},"/items/master_ranged_charm":{"0":{a:29e7,b:165e6},"1":{a:32e7,b:-1},"5":{a:43e7,b:4e8}},"/items/master_stamina_charm":{"5":{a:6e8,b:4e8}},"/items/master_tailoring_charm":{"0":{a:-1,b:12e6}},"/items/master_woodcutting_charm":{"0":{a:-1,b:62e5},"1":{a:-1,b:1e7}},"/items/medium_pouch":{"0":{a:155e3,b:14e4},"2":{a:34e4,b:-1},"3":{a:58e4,b:-1}},"/items/melee_coffee":{"0":{a:1150,b:1100}},"/items/milk":{"0":{a:96,b:92}},"/items/milking_essence":{"0":{a:265,b:260}},"/items/milking_tea":{"0":{a:540,b:440}},"/items/minor_heal":{"0":{a:2900,b:2750}},"/items/mirror_of_protection":{"0":{a:11e6,b:105e5}},"/items/mooberry":{"0":{a:180,b:175}},"/items/mooberry_cake":{"0":{a:1350,b:1200}},"/items/mooberry_donut":{"0":{a:880,b:860}},"/items/moolong_tea_leaf":{"0":{a:34,b:32}},"/items/moonstone":{"0":{a:52e3,b:5e4}},"/items/mystic_aura":{"0":{a:9e5,b:88e4}},"/items/natures_veil":{"0":{a:54e4,b:52e4}},"/items/necklace_of_efficiency":{"0":{a:12e6,b:11e6},"1":{a:2e7,b:-1},"3":{a:-1,b:21e6},"6":{a:-1,b:1e8}},"/items/necklace_of_speed":{"0":{a:145e5,b:135e5},"1":{a:17e6,b:135e5},"2":{a:23e6,b:175e5},"3":{a:33e6,b:31e6},"4":{a:64e6,b:52e6},"5":{a:115e6,b:11e7},"6":{a:2e8,b:15e7},"7":{a:-1,b:175e6}},"/items/necklace_of_wisdom":{"0":{a:11e6,b:1e7},"1":{a:14e6,b:1e7},"2":{a:19e6,b:14e6},"3":{a:31e6,b:275e5},"4":{a:58e6,b:5e7},"5":{a:105e6,b:98e6},"6":{a:-1,b:92e6},"7":{a:-1,b:17e7},"9":{a:54e7,b:3e8},"10":{a:-1,b:34e7}},"/items/orange":{"0":{a:18,b:17}},"/items/orange_gummy":{"0":{a:86,b:82}},"/items/orange_key_fragment":{"0":{a:105e4,b:1e6}},"/items/orange_yogurt":{"0":{a:560,b:540}},"/items/panda_fluff":{"0":{a:62e3,b:6e4}},"/items/panda_gloves":{"0":{a:47e4,b:36e4},"2":{a:43e4,b:-1},"3":{a:45e4,b:-1},"4":{a:48e4,b:-1},"5":{a:58e4,b:4e5},"6":{a:12e5,b:15e4},"7":{a:165e4,b:115e4},"8":{a:4e6,b:45e4},"9":{a:-1,b:36e4},"10":{a:56e5,b:42e5},"11":{a:17e6,b:-1},"12":{a:35e6,b:-1}},"/items/peach":{"0":{a:195,b:190}},"/items/peach_gummy":{"0":{a:740,b:700}},"/items/peach_yogurt":{"0":{a:1050,b:1e3}},"/items/pearl":{"0":{a:14e3,b:13500}},"/items/penetrating_shot":{"0":{a:3e5,b:295e3}},"/items/penetrating_strike":{"0":{a:19e4,b:185e3}},"/items/pestilent_shot":{"0":{a:49e3,b:47e3}},"/items/philosophers_earrings":{"0":{a:66e7,b:6e8},"1":{a:-1,b:56e7},"2":{a:-1,b:6e8},"3":{a:76e7,b:72e7},"4":{a:-1,b:68e7},"5":{a:98e7,b:96e7},"6":{a:-1,b:11e8},"7":{a:16e8,b:155e7},"8":{a:215e7,b:16e8},"10":{a:-1,b:38e8}},"/items/philosophers_necklace":{"0":{a:68e7,b:64e7},"1":{a:-1,b:58e7},"2":{a:-1,b:62e7},"3":{a:82e7,b:78e7},"4":{a:-1,b:78e7},"5":{a:11e8,b:105e7},"6":{a:-1,b:115e7},"7":{a:185e7,b:18e8},"8":{a:-1,b:19e8},"10":{a:6e9,b:58e8},"20":{a:-1,b:12e6}},"/items/philosophers_ring":{"0":{a:66e7,b:6e8},"1":{a:-1,b:54e7},"2":{a:-1,b:58e7},"3":{a:76e7,b:72e7},"4":{a:-1,b:78e7},"5":{a:98e7,b:96e7},"6":{a:125e7,b:11e8},"7":{a:16e8,b:155e7},"8":{a:215e7,b:18e8},"10":{a:-1,b:38e8}},"/items/philosophers_stone":{"0":{a:6e8,b:58e7}},"/items/pincer_gloves":{"0":{a:27e3,b:24500},"1":{a:4e4,b:-1},"2":{a:44e3,b:-1},"3":{a:5e4,b:-1},"4":{a:86e3,b:-1},"5":{a:125e3,b:-1},"6":{a:34e4,b:-1},"8":{a:5e5,b:-1},"10":{a:37e5,b:13e5},"11":{a:58e5,b:-1},"12":{a:155e5,b:10500}},"/items/pirate_chest_key":{"0":{a:58e5,b:56e5}},"/items/pirate_entry_key":{"0":{a:64e4,b:62e4}},"/items/pirate_essence":{"0":{a:1950,b:1900}},"/items/pirate_refinement_shard":{"0":{a:36e5,b:35e5}},"/items/plum":{"0":{a:52,b:50}},"/items/plum_gummy":{"0":{a:390,b:370}},"/items/plum_yogurt":{"0":{a:740,b:700}},"/items/poke":{"0":{a:2950,b:2900}},"/items/polar_bear_fluff":{"0":{a:12e4,b:115e3}},"/items/polar_bear_shoes":{"0":{a:82e4,b:76e4},"1":{a:98e4,b:-1},"3":{a:125e4,b:-1},"5":{a:-1,b:12e5},"6":{a:-1,b:14e5},"7":{a:3e6,b:245e4},"8":{a:5e6,b:-1},"9":{a:88e5,b:76e5},"10":{a:135e5,b:13e6},"11":{a:295e5,b:-1},"12":{a:46e6,b:43e6},"13":{a:92e6,b:8e7},"14":{a:2e8,b:18e7},"15":{a:44e7,b:-1}},"/items/precision":{"0":{a:56e3,b:54e3}},"/items/prime_catalyst":{"0":{a:17e4,b:16e4}},"/items/processing_tea":{"0":{a:2450,b:2400}},"/items/provoke":{"0":{a:68e3,b:66e3}},"/items/puncture":{"0":{a:96e3,b:94e3}},"/items/purple_key_fragment":{"0":{a:74e4,b:72e4}},"/items/purpleheart_bow":{"0":{a:165e3,b:135e3},"5":{a:56e5,b:-1}},"/items/purpleheart_crossbow":{"0":{a:15e4,b:105e3},"1":{a:155e3,b:-1},"2":{a:145e3,b:-1},"3":{a:225e3,b:-1},"4":{a:14e6,b:-1},"5":{a:2e6,b:-1},"7":{a:86e5,b:-1}},"/items/purpleheart_fire_staff":{"0":{a:13e4,b:115e3},"2":{a:15e4,b:-1},"3":{a:2e5,b:-1},"5":{a:1e6,b:-1},"7":{a:12e5,b:-1}},"/items/purpleheart_log":{"0":{a:265,b:260}},"/items/purpleheart_lumber":{"0":{a:1350,b:1300}},"/items/purpleheart_nature_staff":{"0":{a:145e3,b:12e4},"1":{a:35e4,b:-1},"2":{a:26e4,b:-1},"5":{a:49e4,b:-1}},"/items/purpleheart_shield":{"0":{a:125e3,b:88e3},"1":{a:12e4,b:-1},"3":{a:19e4,b:-1},"4":{a:44e4,b:-1},"5":{a:39e4,b:-1},"6":{a:62e4,b:-1}},"/items/purpleheart_water_staff":{"0":{a:13e4,b:115e3},"1":{a:2e5,b:-1},"2":{a:8e6,b:-1},"4":{a:22e5,b:-1},"5":{a:49e5,b:-1},"8":{a:7e6,b:-1}},"/items/quick_aid":{"0":{a:12e4,b:115e3}},"/items/quick_shot":{"0":{a:2800,b:2750}},"/items/radiant_boots":{"0":{a:18e4,b:175e3},"2":{a:245e3,b:-1},"3":{a:25e4,b:-1},"4":{a:56e4,b:-1},"5":{a:135e4,b:7e5},"6":{a:28e5,b:28e4},"10":{a:-1,b:2e7}},"/items/radiant_fabric":{"0":{a:2750,b:2700}},"/items/radiant_fiber":{"0":{a:580,b:560}},"/items/radiant_gloves":{"0":{a:185e3,b:175e3},"1":{a:18e4,b:-1},"2":{a:2e5,b:-1},"3":{a:3e5,b:-1},"5":{a:92e4,b:56e4},"6":{a:295e4,b:295e3}},"/items/radiant_hat":{"0":{a:295e3,b:29e4},"1":{a:37e4,b:215e3},"3":{a:41e4,b:-1},"5":{a:62e4,b:5e5},"6":{a:28e5,b:1e6},"7":{a:-1,b:3e6},"10":{a:3e7,b:255e5}},"/items/radiant_robe_bottoms":{"0":{a:52e4,b:5e5},"1":{a:66e4,b:-1},"2":{a:62e4,b:-1},"3":{a:62e4,b:-1},"4":{a:98e4,b:-1},"5":{a:22e5,b:-1},"7":{a:88e5,b:-1}},"/items/radiant_robe_top":{"0":{a:58e4,b:56e4},"1":{a:62e4,b:-1},"2":{a:7e5,b:-1},"3":{a:78e4,b:-1},"4":{a:9e5,b:-1},"5":{a:11e5,b:82e4},"6":{a:43e5,b:43e4}},"/items/rain_of_arrows":{"0":{a:195e3,b:19e4}},"/items/rainbow_alembic":{"0":{a:3e5,b:26e4},"1":{a:52e4,b:-1},"2":{a:42e4,b:-1},"3":{a:7e5,b:1e5},"4":{a:86e4,b:-1},"5":{a:94e4,b:-1},"6":{a:-1,b:54e4}},"/items/rainbow_boots":{"0":{a:195e3,b:19e4},"1":{a:225e3,b:-1},"4":{a:39e4,b:-1},"5":{a:36e4,b:-1}},"/items/rainbow_brush":{"0":{a:25e4,b:21e4},"1":{a:45e4,b:-1},"2":{a:46e4,b:-1},"3":{a:6e5,b:1e5},"4":{a:92e4,b:-1},"5":{a:82e4,b:27e4},"6":{a:52e5,b:11e5},"7":{a:1e7,b:-1}},"/items/rainbow_buckler":{"0":{a:255e3,b:215e3},"1":{a:33e4,b:-1},"2":{a:29e4,b:-1},"4":{a:62e4,b:-1},"5":{a:94e4,b:-1},"6":{a:115e4,b:-1}},"/items/rainbow_bulwark":{"0":{a:35e4,b:34e4},"1":{a:31e4,b:-1},"2":{a:58e4,b:-1},"3":{a:54e4,b:-1},"4":{a:1e6,b:-1},"5":{a:14e5,b:-1}},"/items/rainbow_cheese":{"0":{a:1800,b:1700}},"/items/rainbow_chisel":{"0":{a:24e4,b:225e3},"1":{a:-1,b:13e4},"2":{a:255e3,b:135e3},"3":{a:-1,b:1e5},"4":{a:7e5,b:-1},"5":{a:115e4,b:-1},"6":{a:2e6,b:125e4}},"/items/rainbow_enhancer":{"0":{a:31e4,b:24e4},"1":{a:49e4,b:-1},"2":{a:52e4,b:-1},"3":{a:-1,b:1e5},"4":{a:84e4,b:-1},"5":{a:96e4,b:32e4},"6":{a:175e4,b:13e5},"7":{a:5e6,b:-1}},"/items/rainbow_gauntlets":{"0":{a:195e3,b:145e3},"1":{a:23e4,b:-1},"2":{a:2e5,b:-1},"3":{a:35e4,b:-1},"5":{a:92e4,b:-1},"6":{a:25e5,b:-1}},"/items/rainbow_hammer":{"0":{a:265e3,b:245e3},"1":{a:39e4,b:-1},"2":{a:35e4,b:-1},"3":{a:76e4,b:1e5},"5":{a:12e5,b:8e5},"6":{a:54e5,b:115e4},"7":{a:-1,b:13e5}},"/items/rainbow_hatchet":{"0":{a:295e3,b:26e4},"1":{a:32e4,b:-1},"2":{a:45e4,b:-1},"3":{a:68e4,b:1e5},"4":{a:1e6,b:-1},"5":{a:15e5,b:8e5},"6":{a:6e6,b:13e5},"7":{a:11e6,b:-1}},"/items/rainbow_helmet":{"0":{a:235e3,b:22e4},"1":{a:25e4,b:-1},"3":{a:37e4,b:-1},"4":{a:44e4,b:-1},"5":{a:7e5,b:-1}},"/items/rainbow_mace":{"0":{a:46e4,b:38e4},"1":{a:35e4,b:-1},"3":{a:47e4,b:-1},"4":{a:54e4,b:-1}},"/items/rainbow_milk":{"0":{a:370,b:360}},"/items/rainbow_needle":{"0":{a:25e4,b:24e4},"3":{a:-1,b:1e5},"4":{a:5e5,b:-1},"5":{a:115e4,b:-1},"6":{a:-1,b:14e5}},"/items/rainbow_plate_body":{"0":{a:34e4,b:33e4},"1":{a:39e4,b:-1},"2":{a:52e4,b:-1},"3":{a:6e5,b:-1},"4":{a:98e4,b:-1},"5":{a:175e4,b:29500}},"/items/rainbow_plate_legs":{"0":{a:295e3,b:17e4},"3":{a:56e4,b:-1},"4":{a:45e5,b:-1},"5":{a:45e5,b:-1},"6":{a:68e5,b:-1}},"/items/rainbow_pot":{"0":{a:285e3,b:27e4},"1":{a:32e4,b:-1},"2":{a:42e4,b:-1},"3":{a:6e5,b:35e4},"5":{a:14e5,b:78e4},"6":{a:54e5,b:13e5},"7":{a:5e6,b:-1},"8":{a:6e6,b:-1}},"/items/rainbow_shears":{"0":{a:3e5,b:29e4},"1":{a:4e5,b:-1},"2":{a:46e4,b:-1},"3":{a:9e5,b:1e5},"4":{a:135e4,b:-1},"5":{a:11e5,b:-1},"6":{a:52e5,b:145e4},"7":{a:175e5,b:125e4},"8":{a:13e6,b:-1}},"/items/rainbow_spatula":{"0":{a:43e4,b:28e4},"1":{a:38e4,b:-1},"2":{a:39e4,b:-1},"3":{a:56e4,b:1e5},"4":{a:86e4,b:-1},"5":{a:115e4,b:-1},"6":{a:48e5,b:64e4}},"/items/rainbow_spear":{"0":{a:39e4,b:38e4},"1":{a:7e5,b:-1},"2":{a:7e5,b:-1},"3":{a:105e4,b:-1},"5":{a:-1,b:74e4}},"/items/rainbow_sword":{"0":{a:42e4,b:39e4},"2":{a:38e4,b:-1},"3":{a:43e4,b:-1},"6":{a:64e4,b:-1},"7":{a:82e4,b:-1}},"/items/ranged_coffee":{"0":{a:1200,b:1100}},"/items/ranger_necklace":{"0":{a:12e6,b:115e5},"1":{a:15e6,b:8e6},"2":{a:17e6,b:1e7},"3":{a:245e5,b:16e6},"7":{a:-1,b:12e7}},"/items/red_culinary_hat":{"0":{a:54e5,b:52e5},"2":{a:82e5,b:86e4},"4":{a:-1,b:155e4},"5":{a:9e6,b:68e5},"6":{a:105e5,b:-1},"7":{a:13e6,b:88e5},"8":{a:2e7,b:18e6},"9":{a:-1,b:88e5},"10":{a:5e7,b:48e6},"12":{a:19e7,b:15e7},"15":{a:15e8,b:1e8}},"/items/red_panda_fluff":{"0":{a:54e4,b:52e4}},"/items/red_tea_leaf":{"0":{a:50,b:48}},"/items/redwood_bow":{"0":{a:56e4,b:54e4},"3":{a:12e5,b:-1},"5":{a:68e4,b:-1},"6":{a:27e5,b:-1}},"/items/redwood_crossbow":{"0":{a:46e4,b:41e4},"1":{a:4e5,b:-1},"2":{a:5e5,b:-1},"3":{a:56e4,b:-1},"5":{a:66e4,b:-1},"6":{a:25e5,b:-1},"7":{a:64e5,b:3e6},"8":{a:14e6,b:-1},"10":{a:205e5,b:-1}},"/items/redwood_fire_staff":{"0":{a:4e5,b:39e4},"2":{a:9e5,b:-1},"3":{a:9e5,b:-1},"4":{a:12e5,b:-1},"5":{a:14e5,b:-1},"8":{a:6e6,b:-1}},"/items/redwood_log":{"0":{a:380,b:370}},"/items/redwood_lumber":{"0":{a:1850,b:1800}},"/items/redwood_nature_staff":{"0":{a:44e4,b:4e5},"1":{a:52e4,b:-1},"2":{a:76e4,b:-1},"3":{a:8e5,b:-1},"5":{a:145e4,b:-1}},"/items/redwood_shield":{"0":{a:265e3,b:25e4},"1":{a:27e4,b:-1},"2":{a:27e4,b:-1},"3":{a:46e4,b:-1},"5":{a:8e5,b:-1},"6":{a:92e4,b:-1},"10":{a:21e6,b:-1}},"/items/redwood_water_staff":{"0":{a:54e4,b:39e4},"1":{a:54e4,b:-1},"2":{a:52e4,b:-1},"3":{a:86e4,b:-1},"4":{a:6e5,b:-1},"5":{a:11e5,b:-1},"7":{a:2e6,b:-1},"10":{a:1e7,b:-1}},"/items/regal_jewel":{"0":{a:105e5,b:1e7}},"/items/regal_sword":{"0":{a:22e7,b:18e7},"4":{a:22e7,b:-1},"5":{a:225e6,b:215e6},"7":{a:265e6,b:245e6},"8":{a:33e7,b:29e7},"9":{a:44e7,b:-1},"10":{a:6e8,b:56e7},"12":{a:175e7,b:-1}},"/items/regal_sword_refined":{"0":{a:-1,b:52e5},"1":{a:-1,b:56e5},"2":{a:-1,b:62e5},"3":{a:-1,b:62e5},"10":{a:165e7,b:56e5},"12":{a:275e7,b:58e5}},"/items/rejuvenate":{"0":{a:12e4,b:115e3}},"/items/reptile_boots":{"0":{a:18e3,b:11e3},"1":{a:29500,b:-1}},"/items/reptile_bracers":{"0":{a:14500,b:1e4},"1":{a:6e4,b:-1},"2":{a:86e3,b:-1},"3":{a:96e3,b:-1}},"/items/reptile_chaps":{"0":{a:23e3,b:21e3},"2":{a:25e4,b:-1}},"/items/reptile_hide":{"0":{a:24,b:23}},"/items/reptile_hood":{"0":{a:16e3,b:12e3}},"/items/reptile_leather":{"0":{a:580,b:560}},"/items/reptile_tunic":{"0":{a:25500,b:23e3},"1":{a:8e4,b:-1},"2":{a:17e4,b:-1}},"/items/retribution":{"0":{a:52e3,b:5e4}},"/items/revenant_anima":{"0":{a:92e4,b:9e5}},"/items/revenant_chaps":{"0":{a:72e5,b:66e5},"5":{a:72e5,b:66e5},"6":{a:1e7,b:-1},"7":{a:155e5,b:14e6},"8":{a:225e5,b:15e6},"9":{a:5e7,b:-1},"10":{a:7e7,b:43e6}},"/items/revenant_tunic":{"0":{a:86e5,b:82e5},"3":{a:-1,b:32e5},"5":{a:96e5,b:92e5},"6":{a:12e6,b:11e6},"7":{a:16e6,b:14e6},"8":{a:235e5,b:15e6},"9":{a:45e6,b:-1},"10":{a:66e6,b:37e6}},"/items/revive":{"0":{a:82e4,b:8e5}},"/items/ring_of_armor":{"0":{a:62e5,b:56e5},"1":{a:64e5,b:-1},"2":{a:98e5,b:-1},"3":{a:11e6,b:-1},"4":{a:3e7,b:-1}},"/items/ring_of_critical_strike":{"0":{a:96e5,b:82e5},"1":{a:-1,b:78e5},"2":{a:-1,b:1e7},"3":{a:205e5,b:18e6},"4":{a:4e7,b:32e6},"5":{a:74e6,b:7e7},"6":{a:11e7,b:74e6}},"/items/ring_of_essence_find":{"0":{a:74e5,b:64e5}},"/items/ring_of_gathering":{"0":{a:62e5,b:58e5},"1":{a:11e6,b:-1}},"/items/ring_of_rare_find":{"0":{a:74e5,b:7e6},"1":{a:9e6,b:7e6},"2":{a:-1,b:94e5},"3":{a:2e7,b:17e6},"4":{a:4e7,b:295e5},"5":{a:7e7,b:66e6},"6":{a:14e7,b:-1},"7":{a:-1,b:72e5}},"/items/ring_of_regeneration":{"0":{a:66e5,b:6e6},"1":{a:72e5,b:64e5},"2":{a:12e6,b:84e5},"3":{a:16e6,b:145e5},"4":{a:3e7,b:27e6},"5":{a:66e6,b:6e7},"6":{a:11e7,b:7e7},"7":{a:19e7,b:145e6},"10":{a:9e8,b:-1}},"/items/ring_of_resistance":{"0":{a:58e5,b:56e5},"1":{a:9e6,b:-1},"3":{a:13e6,b:-1},"5":{a:49e6,b:-1}},"/items/rippling_trident":{"0":{a:23e7,b:22e7},"1":{a:-1,b:2e8},"2":{a:-1,b:2e8},"3":{a:-1,b:205e6},"4":{a:-1,b:19e7},"5":{a:3e8,b:22e7},"6":{a:-1,b:22e7},"7":{a:26e7,b:245e6},"8":{a:33e7,b:285e6},"9":{a:-1,b:32e7},"10":{a:62e7,b:58e7},"12":{a:17e8,b:145e7},"14":{a:66e8,b:-1}},"/items/rippling_trident_refined":{"10":{a:17e8,b:125e7},"12":{a:285e7,b:-1},"14":{a:7e9,b:6e9}},"/items/robusta_coffee_bean":{"0":{a:440,b:420}},"/items/rough_boots":{"0":{a:2950,b:2150},"2":{a:16e3,b:-1}},"/items/rough_bracers":{"0":{a:3600,b:2700},"1":{a:14e3,b:-1},"2":{a:18e3,b:-1}},"/items/rough_chaps":{"0":{a:6e3,b:4900},"3":{a:28e3,b:-1}},"/items/rough_hide":{"0":{a:76,b:64}},"/items/rough_hood":{"0":{a:4900,b:3400},"2":{a:2e4,b:-1},"5":{a:-1,b:290},"10":{a:-1,b:290}},"/items/rough_leather":{"0":{a:450,b:440}},"/items/rough_tunic":{"0":{a:7e3,b:5400},"2":{a:38e3,b:-1},"3":{a:76e3,b:-1}},"/items/royal_cloth":{"0":{a:8e6,b:78e5}},"/items/royal_fire_robe_bottoms":{"0":{a:76e6,b:66e6},"5":{a:78e6,b:68e6},"7":{a:96e6,b:9e7},"8":{a:16e7,b:11e7},"9":{a:-1,b:175e6},"10":{a:37e7,b:35e7},"12":{a:125e7,b:115e7}},"/items/royal_fire_robe_bottoms_refined":{"10":{a:7e8,b:8e7}},"/items/royal_fire_robe_top":{"0":{a:88e6,b:82e6},"3":{a:-1,b:8e7},"5":{a:-1,b:84e6},"6":{a:105e6,b:9e7},"7":{a:115e6,b:11e7},"8":{a:165e6,b:14e7},"9":{a:-1,b:19e7},"10":{a:4e8,b:38e7},"12":{a:135e7,b:12e8}},"/items/royal_fire_robe_top_refined":{"10":{a:-1,b:72e7}},"/items/royal_nature_robe_bottoms":{"0":{a:78e6,b:68e6},"5":{a:78e6,b:7e7},"7":{a:96e6,b:92e6},"8":{a:145e6,b:115e6},"10":{a:37e7,b:36e7},"12":{a:-1,b:115e7}},"/items/royal_nature_robe_bottoms_refined":{"10":{a:7e8,b:66e7},"12":{a:-1,b:145e7}},"/items/royal_nature_robe_top":{"0":{a:9e7,b:88e6},"5":{a:94e6,b:88e6},"6":{a:1e8,b:86e6},"7":{a:115e6,b:11e7},"8":{a:16e7,b:135e6},"9":{a:255e6,b:2e8},"10":{a:41e7,b:39e7},"12":{a:13e8,b:11e8}},"/items/royal_nature_robe_top_refined":{"10":{a:76e7,b:68e7},"12":{a:-1,b:155e7}},"/items/royal_water_robe_bottoms":{"0":{a:76e6,b:68e6},"5":{a:7e7,b:64e6},"6":{a:105e6,b:64e6},"7":{a:94e6,b:92e6},"8":{a:14e7,b:11e7},"9":{a:-1,b:155e6},"10":{a:37e7,b:36e7}},"/items/royal_water_robe_bottoms_refined":{},"/items/royal_water_robe_top":{"0":{a:9e7,b:84e6},"5":{a:96e6,b:82e6},"6":{a:105e6,b:84e6},"7":{a:-1,b:11e7},"8":{a:16e7,b:14e7},"9":{a:-1,b:2e8},"10":{a:4e8,b:38e7},"12":{a:14e8,b:-1}},"/items/royal_water_robe_top_refined":{"10":{a:-1,b:7e8},"12":{a:-1,b:16e8}},"/items/scratch":{"0":{a:3300,b:3200}},"/items/shard_of_protection":{"0":{a:6e4,b:58e3}},"/items/shield_bash":{"0":{a:48e3,b:47e3}},"/items/shoebill_feather":{"0":{a:11e4,b:105e3}},"/items/shoebill_shoes":{"0":{a:92e4,b:9e5},"1":{a:11e5,b:11e4},"3":{a:98e4,b:105e3},"4":{a:165e4,b:17e4},"5":{a:135e4,b:12e5},"6":{a:-1,b:14e5},"7":{a:275e4,b:23e5},"8":{a:8e6,b:35e5},"9":{a:86e5,b:86e4},"10":{a:12e6,b:1e7},"11":{a:-1,b:15e6},"12":{a:39e6,b:31e6},"14":{a:15e7,b:13e7},"15":{a:-1,b:49e4}},"/items/sighted_bracers":{"0":{a:18e5,b:17e5},"1":{a:-1,b:105e3},"2":{a:18e5,b:105e3},"3":{a:-1,b:105e3},"4":{a:2e6,b:105e3},"5":{a:175e4,b:1e6},"6":{a:185e4,b:105e3},"7":{a:235e4,b:225e3},"8":{a:26e5,b:225e3},"9":{a:49e5,b:52e4},"10":{a:56e5,b:54e5},"11":{a:14e6,b:8e6},"12":{a:31e6,b:-1}},"/items/silencing_shot":{"0":{a:96e3,b:94e3}},"/items/silk_boots":{"0":{a:76e3,b:5e4},"1":{a:84e3,b:-1},"2":{a:125e3,b:-1},"5":{a:5e5,b:1e5},"6":{a:48e4,b:-1}},"/items/silk_fabric":{"0":{a:1800,b:1750}},"/items/silk_gloves":{"0":{a:68e3,b:66e3},"1":{a:96e3,b:-1},"2":{a:13e4,b:-1},"3":{a:22e4,b:-1},"5":{a:34e4,b:12e4},"6":{a:56e4,b:8e3},"7":{a:2e6,b:-1}},"/items/silk_hat":{"0":{a:1e5,b:8e4},"1":{a:12e4,b:-1},"2":{a:125e3,b:-1},"3":{a:135e3,b:-1},"4":{a:2e5,b:-1},"5":{a:35e4,b:1e5}},"/items/silk_robe_bottoms":{"0":{a:2e5,b:185e3},"3":{a:34e4,b:-1},"5":{a:5e5,b:17e4}},"/items/silk_robe_top":{"0":{a:21e4,b:2e5},"2":{a:26e4,b:-1},"3":{a:27e4,b:-1},"5":{a:5e5,b:23e4},"6":{a:265e4,b:-1},"7":{a:66e5,b:-1}},"/items/sinister_chest_key":{"0":{a:41e5,b:4e6}},"/items/sinister_entry_key":{"0":{a:5e5,b:49e4}},"/items/sinister_essence":{"0":{a:1200,b:1150}},"/items/sinister_refinement_shard":{"0":{a:285e4,b:28e5}},"/items/smack":{"0":{a:2800,b:2700}},"/items/small_pouch":{"0":{a:25e3,b:17500},"1":{a:33e3,b:-1}},"/items/smoke_burst":{"0":{a:76e3,b:74e3}},"/items/snail_shell":{"0":{a:9600,b:9200}},"/items/snail_shell_helmet":{"0":{a:32e3,b:29e3},"1":{a:62e3,b:-1},"2":{a:96e3,b:-1},"3":{a:145e3,b:-1},"4":{a:96e4,b:-1},"5":{a:135e4,b:-1},"6":{a:29e5,b:-1},"7":{a:2e6,b:-1}},"/items/snake_fang":{"0":{a:5600,b:5400}},"/items/snake_fang_dirk":{"0":{a:38e3,b:27e3},"1":{a:44e3,b:16500},"2":{a:38e3,b:6400},"3":{a:45e3,b:6600},"4":{a:74e3,b:26500},"5":{a:125e3,b:28e3},"6":{a:31e4,b:31e3},"7":{a:66e4,b:26500},"8":{a:115e4,b:68e3},"9":{a:14e5,b:125e3},"10":{a:14e5,b:2e5},"11":{a:7e6,b:1e6},"12":{a:135e5,b:12e5},"13":{a:215e5,b:-1},"14":{a:32e6,b:2e6},"15":{a:5e7,b:8e6}},"/items/sorcerer_boots":{"0":{a:8e5,b:78e4},"1":{a:-1,b:78e4},"2":{a:-1,b:78e4},"3":{a:-1,b:78e4},"4":{a:105e4,b:78e4},"5":{a:135e4,b:13e5},"6":{a:19e5,b:18e5},"7":{a:33e5,b:32e5},"8":{a:58e5,b:5e6},"9":{a:98e5,b:82e5},"10":{a:165e5,b:15e6},"11":{a:32e6,b:23e6},"12":{a:54e6,b:52e6},"13":{a:11e7,b:8e7},"14":{a:21e7,b:205e6},"15":{a:45e7,b:38e7},"16":{a:88e7,b:-1}},"/items/sorcerer_essence":{"0":{a:125,b:120}},"/items/sorcerers_sole":{"0":{a:17e4,b:165e3}},"/items/soul_fragment":{"0":{a:54e4,b:52e4}},"/items/soul_hunter_crossbow":{"0":{a:12e6,b:98e5},"3":{a:11e6,b:-1},"5":{a:12e6,b:1e7},"6":{a:135e5,b:-1},"7":{a:155e5,b:145e5},"8":{a:205e5,b:-1},"10":{a:43e6,b:4e7}},"/items/spaceberry":{"0":{a:240,b:235}},"/items/spaceberry_cake":{"0":{a:1800,b:1750}},"/items/spaceberry_donut":{"0":{a:1400,b:1350}},"/items/spacia_coffee_bean":{"0":{a:1100,b:1050}},"/items/speed_aura":{"0":{a:25e5,b:24e5}},"/items/spike_shell":{"0":{a:7e4,b:68e3}},"/items/spiked_bulwark":{"0":{a:115e5,b:98e5},"1":{a:-1,b:8e6},"2":{a:-1,b:8e6},"3":{a:-1,b:8e6},"5":{a:145e5,b:1e7},"6":{a:-1,b:84e5},"7":{a:25e6,b:195e5},"8":{a:245e5,b:21e6},"10":{a:-1,b:42e6}},"/items/stalactite_shard":{"0":{a:56e4,b:54e4}},"/items/stalactite_spear":{"0":{a:13e6,b:98e5},"1":{a:12e6,b:-1},"3":{a:15e6,b:-1},"5":{a:14e6,b:12e6},"6":{a:-1,b:13e6},"7":{a:195e5,b:18e6},"8":{a:28e6,b:18e6},"10":{a:74e6,b:6e7},"14":{a:-1,b:5e5}},"/items/stamina_coffee":{"0":{a:680,b:620}},"/items/star_fragment":{"0":{a:13e3,b:12500}},"/items/star_fruit":{"0":{a:540,b:520}},"/items/star_fruit_gummy":{"0":{a:1300,b:1250}},"/items/star_fruit_yogurt":{"0":{a:1750,b:1700}},"/items/steady_shot":{"0":{a:96e3,b:94e3}},"/items/stone_key_fragment":{"0":{a:16e5,b:155e4}},"/items/strawberry":{"0":{a:140,b:135}},"/items/strawberry_cake":{"0":{a:1100,b:1e3}},"/items/strawberry_donut":{"0":{a:740,b:720}},"/items/stunning_blow":{"0":{a:96e3,b:94e3}},"/items/sugar":{"0":{a:12,b:11}},"/items/sundering_crossbow":{"0":{a:24e7,b:225e6},"1":{a:-1,b:18e7},"2":{a:-1,b:185e6},"3":{a:-1,b:18e7},"4":{a:-1,b:18e7},"5":{a:255e6,b:235e6},"6":{a:-1,b:225e6},"7":{a:295e6,b:265e6},"8":{a:-1,b:3e8},"9":{a:-1,b:36e7},"10":{a:62e7,b:6e8},"11":{a:-1,b:76e7},"12":{a:18e8,b:13e8},"14":{a:-1,b:3e9},"15":{a:-1,b:5e6}},"/items/sundering_crossbow_refined":{"0":{a:-1,b:52e5},"8":{a:-1,b:5e7},"10":{a:-1,b:15e8},"12":{a:-1,b:115e7},"13":{a:-1,b:56e5},"14":{a:-1,b:6e6},"15":{a:-1,b:58e5},"16":{a:-1,b:56e5},"20":{a:-1,b:54e5}},"/items/sundering_jewel":{"0":{a:105e5,b:1e7}},"/items/sunstone":{"0":{a:52e4,b:5e5}},"/items/super_alchemy_tea":{"0":{a:4e3,b:3900}},"/items/super_attack_coffee":{"0":{a:3700,b:3600}},"/items/super_brewing_tea":{"0":{a:3300,b:3100}},"/items/super_cheesesmithing_tea":{"0":{a:4100,b:3900}},"/items/super_cooking_tea":{"0":{a:3200,b:2950}},"/items/super_crafting_tea":{"0":{a:4400,b:4e3}},"/items/super_defense_coffee":{"0":{a:3700,b:3600}},"/items/super_enhancing_tea":{"0":{a:4800,b:4700}},"/items/super_foraging_tea":{"0":{a:7600,b:2650}},"/items/super_intelligence_coffee":{"0":{a:2800,b:2750}},"/items/super_magic_coffee":{"0":{a:5e3,b:4900}},"/items/super_melee_coffee":{"0":{a:4900,b:4800}},"/items/super_milking_tea":{"0":{a:2250,b:1850}},"/items/super_ranged_coffee":{"0":{a:4900,b:4800}},"/items/super_stamina_coffee":{"0":{a:2750,b:2700}},"/items/super_tailoring_tea":{"0":{a:4400,b:4200}},"/items/super_woodcutting_tea":{"0":{a:2700,b:2500}},"/items/swamp_essence":{"0":{a:50,b:47}},"/items/sweep":{"0":{a:33e3,b:32e3}},"/items/swiftness_coffee":{"0":{a:3e3,b:2950}},"/items/tailoring_essence":{"0":{a:225,b:215}},"/items/tailoring_tea":{"0":{a:740,b:700}},"/items/tailors_bottoms":{"0":{a:2e8,b:25e6},"5":{a:235e6,b:16e7},"7":{a:24e7,b:17e7},"8":{a:275e6,b:24e7},"10":{a:42e7,b:36e7},"12":{a:-1,b:66e7}},"/items/tailors_top":{"0":{a:-1,b:35e5},"3":{a:175e6,b:-1},"5":{a:19e7,b:16e7},"7":{a:205e6,b:18e7},"8":{a:25e7,b:8e6},"10":{a:4e8,b:33e7}},"/items/taunt":{"0":{a:56e3,b:54e3}},"/items/thread_of_expertise":{"0":{a:105e5,b:1e7}},"/items/tome_of_healing":{"0":{a:38e3,b:37e3},"1":{a:39e3,b:24e3},"2":{a:4e4,b:24e3},"3":{a:41e3,b:25e3},"4":{a:43e3,b:29e3},"5":{a:56e3,b:48e3},"6":{a:84e3,b:68e3},"7":{a:17e4,b:15e4},"8":{a:38e4,b:33e4},"10":{a:14e5,b:-1},"11":{a:47e5,b:-1},"12":{a:8e6,b:-1},"15":{a:8e7,b:-1},"19":{a:2e9,b:-1}},"/items/tome_of_the_elements":{"0":{a:215e4,b:21e5},"1":{a:-1,b:145e4},"2":{a:22e5,b:185e4},"3":{a:25e5,b:18e5},"4":{a:-1,b:165e4},"5":{a:215e4,b:105e4},"6":{a:225e4,b:18e5},"7":{a:23e5,b:195e4},"8":{a:27e5,b:16e5},"9":{a:33e5,b:175e4},"10":{a:56e5,b:48e5},"11":{a:11e6,b:105e4},"12":{a:25e6,b:11e5},"15":{a:3e8,b:125e4}},"/items/toughness":{"0":{a:56e3,b:54e3}},"/items/toxic_pollen":{"0":{a:22e4,b:215e3}},"/items/treant_bark":{"0":{a:3e4,b:29500}},"/items/treant_shield":{"0":{a:14e4,b:135e3},"3":{a:21e4,b:-1},"4":{a:17e4,b:-1},"5":{a:19e4,b:16e4},"6":{a:-1,b:15e4},"7":{a:105e4,b:-1},"10":{a:74e5,b:-1}},"/items/turtle_shell":{"0":{a:21500,b:19e3}},"/items/turtle_shell_body":{"0":{a:8e4,b:78e3},"2":{a:1e5,b:-1},"3":{a:215e3,b:-1},"4":{a:22e4,b:-1},"5":{a:16e4,b:-1}},"/items/turtle_shell_legs":{"0":{a:62e3,b:5e4},"3":{a:49e4,b:-1},"5":{a:82e4,b:-1}},"/items/twilight_essence":{"0":{a:265,b:260}},"/items/ultra_alchemy_tea":{"0":{a:7400,b:7e3}},"/items/ultra_attack_coffee":{"0":{a:10500,b:1e4}},"/items/ultra_brewing_tea":{"0":{a:7e3,b:6800}},"/items/ultra_cheesesmithing_tea":{"0":{a:8400,b:8e3}},"/items/ultra_cooking_tea":{"0":{a:7600,b:7e3}},"/items/ultra_crafting_tea":{"0":{a:8400,b:8200}},"/items/ultra_defense_coffee":{"0":{a:10500,b:1e4}},"/items/ultra_enhancing_tea":{"0":{a:11e3,b:10500}},"/items/ultra_foraging_tea":{"0":{a:6600,b:6200}},"/items/ultra_intelligence_coffee":{"0":{a:9e3,b:7200}},"/items/ultra_magic_coffee":{"0":{a:12e3,b:11500}},"/items/ultra_melee_coffee":{"0":{a:12e3,b:11500}},"/items/ultra_milking_tea":{"0":{a:6200,b:6e3}},"/items/ultra_ranged_coffee":{"0":{a:12e3,b:11500}},"/items/ultra_stamina_coffee":{"0":{a:9400,b:9200}},"/items/ultra_tailoring_tea":{"0":{a:8200,b:8e3}},"/items/ultra_woodcutting_tea":{"0":{a:6200,b:5800}},"/items/umbral_boots":{"0":{a:145e3,b:13e4},"1":{a:135e3,b:-1},"2":{a:18e4,b:-1},"3":{a:21e4,b:-1},"5":{a:47e5,b:32e4},"7":{a:5e7,b:-1},"8":{a:68e6,b:-1}},"/items/umbral_bracers":{"0":{a:24e4,b:235e3},"1":{a:3e5,b:-1},"2":{a:3e5,b:-1},"3":{a:38e4,b:-1},"4":{a:105e4,b:-1},"5":{a:88e5,b:-1},"10":{a:25e6,b:15e6}},"/items/umbral_chaps":{"0":{a:4e5,b:38e4},"1":{a:7e5,b:-1},"2":{a:12e5,b:-1},"3":{a:195e4,b:-1},"4":{a:25e5,b:-1},"5":{a:38e5,b:-1},"6":{a:62e5,b:-1}},"/items/umbral_hide":{"0":{a:240,b:235}},"/items/umbral_hood":{"0":{a:18e4,b:175e3},"2":{a:29e4,b:-1},"3":{a:33e4,b:-1},"4":{a:6e5,b:-1},"5":{a:82e4,b:205e3},"6":{a:58e5,b:-1}},"/items/umbral_leather":{"0":{a:2050,b:2e3}},"/items/umbral_tunic":{"0":{a:46e4,b:45e4},"2":{a:9e4,b:-1},"3":{a:96e4,b:-1},"5":{a:4e6,b:7e5}},"/items/vampire_fang":{"0":{a:56e4,b:54e4}},"/items/vampire_fang_dirk":{"0":{a:12e6,b:98e5},"5":{a:125e5,b:105e5},"6":{a:16e6,b:-1},"7":{a:18e6,b:16e6},"8":{a:295e5,b:22e6},"9":{a:-1,b:2e7},"10":{a:58e6,b:48e6}},"/items/vampiric_bow":{"0":{a:13e6,b:1e7},"2":{a:165e5,b:-1},"3":{a:215e5,b:-1},"4":{a:205e5,b:-1},"5":{a:26e6,b:-1},"8":{a:24e6,b:-1},"10":{a:8e7,b:-1}},"/items/vampirism":{"0":{a:68e3,b:66e3}},"/items/verdant_alembic":{"0":{a:2e4,b:15500},"2":{a:38e3,b:-1}},"/items/verdant_boots":{"0":{a:12e3,b:11500},"1":{a:68e3,b:-1}},"/items/verdant_brush":{"0":{a:18500,b:9800},"1":{a:35e3,b:-1},"2":{a:66e3,b:-1},"3":{a:68e3,b:-1},"4":{a:74e3,b:-1}},"/items/verdant_buckler":{"0":{a:28e3,b:8600},"1":{a:22500,b:-1},"3":{a:1e5,b:-1},"4":{a:12e4,b:-1},"5":{a:39e4,b:-1},"6":{a:64e4,b:-1},"7":{a:78e4,b:-1}},"/items/verdant_bulwark":{"0":{a:23500,b:18500},"2":{a:2e4,b:-1},"3":{a:1e7,b:-1}},"/items/verdant_cheese":{"0":{a:660,b:640}},"/items/verdant_chisel":{"0":{a:18500,b:14500}},"/items/verdant_enhancer":{"0":{a:19e3,b:16e3},"2":{a:25500,b:-1},"4":{a:68e3,b:-1},"5":{a:135e3,b:-1}},"/items/verdant_gauntlets":{"0":{a:12e3,b:11500},"1":{a:98e3,b:-1},"2":{a:2e4,b:-1},"5":{a:8e4,b:-1}},"/items/verdant_hammer":{"0":{a:19500,b:15500}},"/items/verdant_hatchet":{"0":{a:17500,b:9800},"4":{a:7e4,b:-1}},"/items/verdant_helmet":{"0":{a:15500,b:14e3},"2":{a:1e5,b:-1}},"/items/verdant_mace":{"0":{a:20500,b:19500},"1":{a:-1,b:740},"4":{a:17e3,b:720},"5":{a:3e5,b:-1}},"/items/verdant_milk":{"0":{a:135,b:130}},"/items/verdant_needle":{"0":{a:18e3,b:16500}},"/items/verdant_plate_body":{"0":{a:23500,b:21500}},"/items/verdant_plate_legs":{"0":{a:19500,b:18500},"2":{a:25e6,b:-1},"5":{a:11e5,b:-1}},"/items/verdant_pot":{"0":{a:2e4,b:18e3},"1":{a:16e4,b:-1},"2":{a:3e5,b:-1}},"/items/verdant_shears":{"0":{a:20500,b:16500},"1":{a:58e3,b:-1}},"/items/verdant_spatula":{"0":{a:2e4,b:1e4},"3":{a:56e4,b:560}},"/items/verdant_spear":{"0":{a:20500,b:19500},"1":{a:5e4,b:-1},"2":{a:5e4,b:-1},"3":{a:17e4,b:-1},"5":{a:125e3,b:-1}},"/items/verdant_sword":{"0":{a:20500,b:19e3},"1":{a:56e5,b:-1},"2":{a:4e4,b:-1},"3":{a:3e5,b:-1},"4":{a:2e5,b:-1},"5":{a:1e5,b:-1}},"/items/vision_helmet":{"0":{a:52e4,b:5e5},"1":{a:6e5,b:-1},"3":{a:64e4,b:-1},"4":{a:105e4,b:105e3},"5":{a:125e4,b:16e4},"6":{a:15e5,b:3e5},"7":{a:3e6,b:42e4},"8":{a:7e6,b:155e4},"9":{a:-1,b:25e5}},"/items/vision_shield":{"0":{a:17e5,b:16e5},"2":{a:-1,b:16e5},"4":{a:-1,b:1e5},"5":{a:3e6,b:1e5},"6":{a:-1,b:1e5},"7":{a:-1,b:1e5},"8":{a:78e5,b:1e5}},"/items/watchful_relic":{"0":{a:76e5,b:72e5},"3":{a:-1,b:31e5},"5":{a:1e7,b:-1},"7":{a:12e6,b:1e6},"8":{a:16e6,b:12e6},"9":{a:-1,b:5e5},"10":{a:-1,b:1e6}},"/items/water_strike":{"0":{a:7600,b:7400}},"/items/werewolf_claw":{"0":{a:56e4,b:54e4}},"/items/werewolf_slasher":{"0":{a:155e5,b:1e7},"5":{a:135e5,b:11e6},"6":{a:2e7,b:11e6},"7":{a:22e6,b:16e6},"8":{a:3e7,b:25e6},"9":{a:-1,b:1e7},"10":{a:7e7,b:5e7},"15":{a:-1,b:64e7}},"/items/wheat":{"0":{a:62,b:60}},"/items/white_key_fragment":{"0":{a:98e4,b:96e4}},"/items/wisdom_coffee":{"0":{a:1800,b:1750}},"/items/wisdom_tea":{"0":{a:980,b:960}},"/items/wizard_necklace":{"0":{a:125e5,b:105e5},"1":{a:15e6,b:-1},"2":{a:215e5,b:15e6},"3":{a:26e6,b:235e5},"4":{a:54e6,b:47e6},"5":{a:105e6,b:92e6},"10":{a:-1,b:28e7}},"/items/woodcutting_essence":{"0":{a:260,b:255}},"/items/woodcutting_tea":{"0":{a:720,b:560}},"/items/wooden_bow":{"0":{a:5e3,b:4900},"1":{a:88e3,b:-1},"2":{a:15e4,b:-1},"3":{a:1e5,b:-1},"4":{a:68e3,b:-1},"5":{a:25e4,b:-1},"6":{a:5e8,b:-1},"20":{a:-1,b:5e3}},"/items/wooden_crossbow":{"0":{a:4900,b:4100},"1":{a:9200,b:5e3},"2":{a:2e4,b:9400},"4":{a:58e4,b:-1},"5":{a:16e4,b:-1}},"/items/wooden_fire_staff":{"0":{a:5200,b:4700},"2":{a:4e4,b:-1},"4":{a:145e5,b:-1}},"/items/wooden_nature_staff":{"0":{a:5200,b:4600},"1":{a:3e4,b:-1},"2":{a:84e3,b:-1},"3":{a:98e3,b:-1},"20":{a:-1,b:145}},"/items/wooden_shield":{"0":{a:3900,b:3400},"1":{a:105e5,b:-1},"2":{a:92e6,b:-1},"7":{a:88e4,b:-1},"10":{a:-1,b:3100}},"/items/wooden_water_staff":{"0":{a:6800,b:4700},"1":{a:215e3,b:-1},"4":{a:28e4,b:-1}},"/items/yogurt":{"0":{a:350,b:270}}},timestamp:1760432846};var kg=JSON.stringify(Mc),Tc=null,Ec=null,Ic=null,Nc=null,Hc=null,Dc=null,Pc=null,Lc=null,$c=null,Oc=null,qc=null,Rc=null,Bc=null,zc=null,Fc=null,jc=null,Wc=null,Vc=null,Gc=null,Zc=null,Uc=null,Kc=null,Xc=null,Jc={},Sg={},Cg={},Yc=[],Qc={},el={},tl=!1,al="",nl="",il=[],rl=null,ol=[],sl=[],ul=0,cl=null,ll=[];Object.defineProperties(u.data,{MARKET_JSON_LOCAL_BACKUP:{enumerable:!0,get(){return kg}}}),Object.defineProperties(u.state,{initData_characterSkills:{enumerable:!0,get(){return Tc},set(e){Tc=e}},initData_characterItems:{enumerable:!0,get(){return Ec},set(e){Ec=e}},initData_combatAbilities:{enumerable:!0,get(){return Ic},set(e){Ic=e}},initData_characterHouseRoomMap:{enumerable:!0,get(){return Nc},set(e){Nc=e}},initData_actionTypeDrinkSlotsMap:{enumerable:!0,get(){return Hc},set(e){Hc=e}},initData_actionDetailMap:{enumerable:!0,get(){return Dc},set(e){Dc=e}},initData_levelExperienceTable:{enumerable:!0,get(){return Pc},set(e){Pc=e}},initData_enhancementLevelSuccessRateTable:{enumerable:!0,get(){return Lc},set(e){Lc=e}},initData_enhancementLevelTotalBonusMultiplierTable:{enumerable:!0,get(){return $c},set(e){$c=e}},initData_itemDetailMap:{enumerable:!0,get(){return Oc},set(e){Oc=e}},initData_itemLocationDetailMap:{enumerable:!0,get(){return qc},set(e){qc=e}},initData_houseRoomDetailMap:{enumerable:!0,get(){return Rc},set(e){Rc=e}},initData_actionCategoryDetailMap:{enumerable:!0,get(){return Bc},set(e){Bc=e}},initData_abilityDetailMap:{enumerable:!0,get(){return zc},set(e){zc=e}},initData_shopItemDetailMap:{enumerable:!0,get(){return Fc},set(e){Fc=e}},initData_taskShopItemDetailMap:{enumerable:!0,get(){return jc},set(e){jc=e}},initData_labyrinthShopItemDetailMap:{enumerable:!0,get(){return Wc},set(e){Wc=e}},initData_openableLootDropMap:{enumerable:!0,get(){return Vc},set(e){Vc=e}},initData_guildBuffDetailMap:{enumerable:!0,get(){return Gc},set(e){Gc=e}},initData_characterAbilities:{enumerable:!0,get(){return Zc},set(e){Zc=e}},initData_myMarketListings:{enumerable:!0,get(){return Uc},set(e){Uc=e}},marketApiJson:{enumerable:!0,get(){return Kc},set(e){Kc=e}},marketValuesVersion:{enumerable:!0,get(){return Xc},set(e){Xc=e}},marketItemValues:{enumerable:!0,get(){return Jc},set(e){Jc=e??{}}},marketOrderBooks:{enumerable:!0,get(){return Sg}},marketPriceBands:{enumerable:!0,get(){return Cg}},currentActionsHridList:{enumerable:!0,get(){return Yc},set(e){Yc=e}},currentEquipmentMap:{enumerable:!0,get(){return Qc},set(e){Qc=e}},guildBuffLevels:{enumerable:!0,get(){return el},set(e){el=e??{}}},guildDataLoaded:{enumerable:!0,get(){return tl},set(e){tl=!!e}},currentCharacterId:{enumerable:!0,get(){return al},set(e){al=String(e??"")}},currentCharacterName:{enumerable:!0,get(){return nl},set(e){nl=String(e??"")}},characterQuests:{enumerable:!0,get(){return il},set(e){il=Array.isArray(e)?e:[]}},guild:{enumerable:!0,get(){return rl},set(e){rl=e??null}},guildCharacters:{enumerable:!0,get(){return ol},set(e){ol=Array.isArray(e)?e:[]}},guildLeaderboard:{enumerable:!0,get(){return sl},set(e){sl=Array.isArray(e)?e:[]}},guildStateUpdatedAt:{enumerable:!0,get(){return ul},set(e){ul=Number(e)||Date.now()}},actionTypeBuffSources:{enumerable:!0,get(){return cl},set(e){cl=e&&typeof e=="object"?e:null}},equipmentTaskActionBuffs:{enumerable:!0,get(){return ll},set(e){ll=Array.isArray(e)?e:[]}}});function Cn(e,t){return u.config.isZH?e:t}s(Cn,"localize");function Ag(e){return String(e??"").split("/").at(-1)?.replaceAll("_"," ")??""}s(Ag,"tailLabel");function Mg(e,t,a){return a||(e instanceof Map?e.get(t):e?.[t])}s(Mg,"detailFrom");var Tg={item:{zh:s(()=>u.data.ZHItemNames,"zh"),en:s(()=>u.state.initData_itemDetailMap,"en")},action:{zh:s(()=>u.data.ZHActionNames,"zh"),en:s(()=>u.state.initData_actionDetailMap,"en")},ability:{zh:s(()=>u.data.ZHOthersDic,"zh"),en:s(()=>u.state.initData_abilityDetailMap,"en")},monster:{zh:s(()=>u.data.ZHOthersDic,"zh"),en:s(()=>null,"en")}};function oo(e,t,{fallbackZh:a="",fallbackEn:n="",detail:i=null,fallback:o=""}={}){let r=Tg[e],c=r?.zh?.()?.[t],l=Mg(r?.en?.(),t,i),d=String(l?.name??"").trim(),m=o||Ag(t)||"—";return u.config.isZH?c||a||d||n||m:d||n||a||c||m}s(oo,"entityName");var Qa=s((e,t)=>oo("item",e,t),"itemName"),so=s((e,t)=>oo("action",e,t),"actionName"),I7=s((e,t)=>oo("ability",e,t),"abilityName"),N7=s((e,t)=>oo("monster",e,t),"monsterName");var lo=ug(dl(),1),Eg=.05,Ig=.18,ml=1e12,Ng=600*1e3,Hg=360*60*1e3;function co(e=globalThis.location?.hostname??""){return e.startsWith("test.")?"test":e.endsWith("milkywayidlecn.com")?"china":"production"}s(co,"getMarketEnvironment");function fl(e=globalThis.location?.hostname??""){switch(co(e)){case"test":return"https://test.milkywayidle.com/game_data/marketplace.json";case"china":return"https://www.milkywayidlecn.com/game_data/marketplace.json";default:return"https://www.milkywayidle.com/game_data/marketplace.json"}}s(fl,"getMarketApiUrl");function bl(e=globalThis.location?.hostname??""){return co(e)==="test"?Ng:Hg}s(bl,"getMarketRefreshInterval");function Dg(e,t,a=0){let n=e?.[t];if(!n)return null;let i=n[a]??n[String(a)];return Number.isFinite(Number(i))&&Number(i)>=0?Number(i):null}s(Dg,"getLevelValue");function pl(e,t=0){return u.state.marketApiJson?.marketData?.[e]?.[t]??u.state.marketApiJson?.marketData?.[e]?.[String(t)]??null}s(pl,"getMarketRecord");function Rs(e,t=0){let a=Number(pl(e,t)?.a);return a>0?a:0}s(Rs,"getAskPrice");function Bs(e,t=0){let a=Number(pl(e,t)?.b);return a>0?a:0}s(Bs,"getBidPrice");function gl(e,t=0){let a=Dg(u.state.marketItemValues,e,t);if(a!==null&&a>0)return a;let n=Rs(e,t),i=Bs(e,t);return n>0&&i>0?(n+i)/2:n||i||0}s(gl,"getFairValue");function zs(e){return e==="/items/bag_of_10_cowbells"?Ig:Eg}s(zs,"getMarketTaxRate");function Pg(e,t=0){return Bs(e,t)*(1-zs(e))}s(Pg,"getNetSellPrice");function Lg(e,t=0){return Rs(e,t)*(1-zs(e))}s(Lg,"getNetSellPriceAtAsk");function hl(e){let t=Math.max(1,Math.floor(Math.abs(Number(e)||0))),a=String(t),n=Number(a[0]),i=a.length;return n<=2&&i>=4?5*10**(i-4):n<=4&&i>=3?10**(i-3):i>=3?2*10**(i-3):1}s(hl,"getMarketPriceIncrement");function Fs(e,t=1,a=ml){let n=Math.min(Math.max(Number(e)||t,t),a),i=hl(n),o=Math.round(n/i)*i;return Math.min(Math.max(o,t),a)}s(Fs,"normalizeMarketPrice");function $g(e){if(typeof e=="number")return e;let a=String(e??"").trim().toLowerCase().replaceAll(u.config.THOUSAND_SEPERATOR||",","").replace(u.config.DECIMAL_SEPERATOR||".",".").match(/^([+-]?(?:\d+\.?\d*|\.\d+))\s*([kmbt])?$/i);if(!a)return Number.NaN;let n={k:1e3,m:1e6,b:1e9,t:1e12};return Number(a[1])*(n[a[2]]??1)}s($g,"parseCompactNumber");function js(){return u.config.isZH?"zh-CN":"en-US"}s(js,"getNumberLocale");function _l(e){if(e==null||e==="")return"—";let t=Number(e);return Number.isFinite(t)?new Intl.NumberFormat(js(),{maximumFractionDigits:20,useGrouping:!0}).format(t):"—"}s(_l,"formatExactNumber");function yl(e,t=2){if(e==null||e==="")return"—";let a=Number(e);if(!Number.isFinite(a))return"—";let n=Math.abs(a),i=Math.min(2,Math.max(0,Number(t)||0));if(n<1e3)return new Intl.NumberFormat(js(),{maximumFractionDigits:i,useGrouping:!0}).format(a);let o=[{value:1e3,symbol:"K"},{value:1e6,symbol:"M"},{value:1e9,symbol:"B"},{value:1e12,symbol:"T"}],r=n>=1e6&&u.settings.get?.("displayCapMM"),c=r?o[1]:[...o].reverse().find(({value:p})=>n>=p),l=a/c.value,d=Number(l.toFixed(i)),m=o.indexOf(c);return!r&&Math.abs(d)>=1e3&&m<o.length-1&&(c=o[m+1],l=a/c.value,d=Number(l.toFixed(i))),`${d.toLocaleString(js(),{maximumFractionDigits:i,useGrouping:!0})}${c.symbol}`}s(yl,"numberFormatter");function Og(e,t={}){let a=document.createElement(t.tagName??"span");return a.className=t.className??"mwi-number",a.textContent=yl(e,t.digits??2),a.title=_l(e),t.label&&a.setAttribute("aria-label",t.label),a}s(Og,"createFormattedNumber");function qg(e){let t=Number(e);if(!Number.isFinite(t))return"-";let a=t>100?Math.round(t).toString():t.toFixed(1),[n,i]=a.split("."),o=n.replace(/\B(?=(\d{3})+(?!\d))/g,u.config.THOUSAND_SEPERATOR||",");return i===void 0?o:`${o}${u.config.DECIMAL_SEPERATOR||"."}${i}`}s(qg,"formatScore");function Rg(e,t=0){let a=u.state.marketPriceBands?.[e]?.[t];if(a)return a;let n=gl(e,t);return n?{minimum:Fs(n*.9),maximum:Fs(n*1.1)}:null}s(Rg,"getPriceBand");function wl(e){if(!e)return null;let t=[e,lo.default.decompressFromUTF16(e),lo.default.decompress(e),lo.default.decompressFromBase64(e)];for(let a of t)if(a)try{let n=JSON.parse(a);if(n?.marketItemValues)return n}catch{}return null}s(wl,"parseStoredMarketItemValues");function Bg(){let e=null;try{e=(globalThis.unsafeWindow??globalThis).localStorageUtil?.getMarketItemValues?.()??null}catch(t){console.error(u.config.isZH?"[MWITools] 无法从游戏缓存读取市场价值":"[MWITools] Unable to read market values from the game cache",t)}return e??=wl(globalThis.localStorage?.getItem("marketItemValues")),e?(u.state.marketValuesVersion=e.marketValuesVersion??null,u.state.marketItemValues=e.marketItemValues,u.api.invalidateAssetValueCache?.(),!0):!1}s(Bg,"loadMarketItemValuesFromStorage");function Bi(e,t=!1){if(!e)return null;let a=e;try{typeof e=="string"&&(a=JSON.parse(e))}catch(i){return console.error(u.config.isZH?"[MWITools] 市场数据 JSON 解析失败:":"[MWITools] Failed to parse market data JSON:",i.message),null}if(!a?.timestamp||!a?.marketData)return null;let n={"/items/coin":{a:1,b:1},"/items/task_token":{a:0,b:0},"/items/cowbell":{a:0,b:0},"/items/small_treasure_chest":{a:0,b:0},"/items/medium_treasure_chest":{a:0,b:0},"/items/large_treasure_chest":{a:0,b:0},"/items/basic_task_badge":{a:0,b:0},"/items/advanced_task_badge":{a:0,b:0},"/items/expert_task_badge":{a:0,b:0}};for(let[i,o]of Object.entries(n))a.marketData[i]={0:o};return u.state.marketApiJson=a,u.api.invalidateAssetValueCache?.(),t&&(localStorage.setItem("MWITools_marketAPI_timestamp",String(Date.now())),localStorage.setItem("MWITools_marketAPI_json",JSON.stringify(a))),a}s(Bi,"validateMarketJsonFetch");function zg(e,t){console.warn(u.config.isZH?`[MWITools] ${e};将优先使用可用的市场缓存。`:`[MWITools] ${t}; using cached market data when available.`)}s(zg,"setMarketFetchFailure");function Fg(){let e=typeof GM<"u"&&typeof GM.xmlHttpRequest=="function"?GM.xmlHttpRequest:typeof GM_xmlhttpRequest=="function"?GM_xmlhttpRequest:null;return e?new Promise(t=>{let a=!1,n,i=s(r=>{a||(a=!0,clearTimeout(n),t(r))},"finish");n=setTimeout(()=>i(null),5500);let o={url:fl(),method:"GET",timeout:5e3,onload:i,onabort:s(()=>i(null),"onabort"),onerror:s(()=>i(null),"onerror"),ontimeout:s(()=>i(null),"ontimeout")};try{let r=e(o);r?.then&&r.then(i).catch(()=>i(null))}catch(r){console.error(u.config.isZH?"[MWITools] 市场数据请求失败":"[MWITools] Market data request failed",r),i(null)}}):Promise.resolve(null)}s(Fg,"requestMarketJson");function vl(){return!!(u.state.marketApiJson||Object.keys(u.state.marketItemValues??{}).length)}s(vl,"hasMarketValueSource");async function jg(){return vl()?!0:!!await xl()}s(jg,"ensureMarketValueSource");async function xl(e=!1){let t=Number(localStorage.getItem("MWITools_marketAPI_timestamp")),a=localStorage.getItem("MWITools_marketAPI_json");if(!e&&a&&t&&Date.now()-t<bl())return Bi(a,!1);let n=await Fg(),i=Bi(n?.status===200?n.responseText:null,!0);if(i)return i;if(zg("市场 API 请求失败","Market API request failed"),a){let o=Bi(a,!1);if(o)return o}return co()==="test"?null:Bi(u.data.MARKET_JSON_LOCAL_BACKUP,!1)}s(xl,"fetchMarketJSON");function Wg(e){e.marketItemValues&&(u.state.marketValuesVersion=e.marketValuesVersion??null,u.state.marketItemValues=e.marketItemValues,u.api.invalidateAssetValueCache?.())}s(Wg,"applyMarketItemValues");function Vg(e){let t=e.marketItemOrderBooks??e,a=t.itemHrid;if(!a)return;u.state.marketOrderBooks[a]=t.orderBooks??{},t.marketValues&&(u.state.marketItemValues[a]={...u.state.marketItemValues[a]??{},...t.marketValues}),u.api.invalidateAssetValueCache?.();let n=t.priceBandMins??{},i=t.priceBandMaxs??{},o=new Set([...Object.keys(n),...Object.keys(i)]);u.state.marketPriceBands[a]??={};for(let r of o)u.state.marketPriceBands[a][r]={minimum:Number(n[r])||0,maximum:Number(i[r])||ml}}s(Vg,"applyMarketOrderBooks");function Gg(e){let t=e.myMarketListings??e.marketListings??e.endMarketListings??e.listings;if(!Array.isArray(t))return;if(e.myMarketListings||e.marketListings||e.listings){u.state.initData_myMarketListings=t;return}let a=[...u.state.initData_myMarketListings??[]];for(let n of t){let i=n.id??n.marketListingId,o=a.findIndex(r=>(r.id??r.marketListingId)===i);n.isDone||n.isCancelled?o>=0&&a.splice(o,1):o>=0?a[o]=n:a.push(n)}u.state.initData_myMarketListings=a}s(Gg,"applyMarketListings");function Zg(e){return Number(e?.workingPrice)>0?Number(e.workingPrice):Number(e?.price)||0}s(Zg,"getListingWorkingPrice"),Object.assign(u.api,{getMarketEnvironment:co,getMarketApiUrl:fl,getMarketRefreshInterval:bl,getAskPrice:Rs,getBidPrice:Bs,getFairValue:gl,getMarketTaxRate:zs,getNetSellPrice:Pg,getNetSellPriceAtAsk:Lg,getMarketPriceIncrement:hl,normalizeMarketPrice:Fs,parseCompactNumber:$g,numberFormatter:yl,formatExactNumber:_l,createFormattedNumber:Og,formatScore:qg,getPriceBand:Rg,parseStoredMarketItemValues:wl,loadMarketItemValuesFromStorage:Bg,validateMarketJsonFetch:Bi,fetchMarketJSON:xl,hasMarketValueSource:vl,ensureMarketValueSource:jg,applyMarketItemValues:Wg,applyMarketOrderBooks:Vg,applyMarketListings:Gg,getListingWorkingPrice:Zg});var Ug=3,kl=12,Kg=Object.freeze([0,.02,.042,.066,.092,.12,.15,.182,.216,.255,.29,.33,.372,.416,.462,.51,.56,.612,.666,.722,.78]),Qn=Object.freeze({actionSpeed:"/buff_types/action_speed",artisan:"/buff_types/artisan",essenceFind:"/buff_types/essence_find",gathering:"/buff_types/gathering",gourmet:"/buff_types/gourmet",rareFind:"/buff_types/rare_find"});function pa(e){if(Array.isArray(e))return e;if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}s(pa,"asArray");function zi(e){return(u.state.initData_characterItems??[]).filter(t=>t.itemHrid===e&&t.itemLocationHrid==="/item_locations/inventory").reduce((t,a)=>t+Number(a.count||0),0)}s(zi,"getInventoryCount");function Ws(e){return pa(e?.outputItems).length?pa(e.outputItems).map(t=>({itemHrid:t.itemHrid,count:Number(t.count)||0})):pa(e?.dropTable).map(t=>({itemHrid:t.itemHrid,count:(Number(t.dropRate??1)||0)*((Number(t.minCount??t.count??0)+Number(t.maxCount??t.count??0))/2)}))}s(Ws,"getExpectedOutputs");function Xg(){let e=new Map;for(let[t,a]of Object.entries(u.state.initData_actionDetailMap??{})){if(!/(?:fabric|lumber|cheese)$/.test(t))continue;let n=pa(a?.inputItems)[0],i=pa(a?.outputItems)[0],o=Number(n?.count)||0;!n?.itemHrid||!i?.itemHrid||o<=0||e.set(n.itemHrid,{itemHrid:i.itemHrid,inputCount:o})}return e.has("/items/rainbow_milk")||e.set("/items/rainbow_milk",{itemHrid:"/items/rainbow_cheese",inputCount:2}),e}s(Xg,"getProcessingProductMap");function Jg(e,t){let a=1+Math.max(0,t?.quantity??0),n=Math.min(1,Math.max(0,t?.upgradedProduct??0)),i=n>0?Xg():null,o=[];for(let r of Ws(e)){let c=i?.get(r.itemHrid),l=Number(r.count)||0,d=l*a*(c?1-n:1);if(d>0&&o.push({...r,baseCount:l,count:d}),c){let m=l*a*n/c.inputCount;m>0&&o.push({itemHrid:c.itemHrid,baseCount:0,count:m,kind:"processed",processedFromItemHrid:r.itemHrid})}}return o}s(Jg,"getEffectiveOutputs");function Sl(e){let t=pa(e?.inputItems).map(a=>({itemHrid:a.itemHrid,count:Number(a.count)||0,isUpgradeItem:a.itemHrid===e?.upgradeItemHrid}));return e?.upgradeItemHrid&&!t.some(a=>a.itemHrid===e.upgradeItemHrid)&&t.push({itemHrid:e.upgradeItemHrid,count:1,isUpgradeItem:!0}),t}s(Sl,"getDirectInputs");function Yg(e){let t=u.state.initData_actionDetailMap?.[e],a=u.state.actionTypeBuffSources;if(!t||!a)return null;let n=[];for(let i of Object.values(a)){let o=i?.[t.type];Array.isArray(o)&&n.push(...o)}return n}s(Yg,"getActionBuffs");function mo(e,t){let a=Yg(e);return a?a.reduce((n,i)=>i?.typeHrid!==t?n:n+(Number(i.flatBoost)||0)+(Number(i.ratioBoost)||0),0):null}s(mo,"getActionBuffRatio");function Qg(e){let t=Object.values(u.state.currentEquipmentMap??{});return t.length||t.push(...(u.state.initData_characterItems??[]).filter(a=>a?.itemLocationHrid!=="/item_locations/inventory")),t.filter(a=>a?.itemHrid===e&&Number(a.count??1)>0).sort((a,n)=>(Number(n.enhancementLevel)||0)-(Number(a.enhancementLevel)||0))[0]}s(Qg,"getEquippedItem");function Cl(){let e=Qg("/items/guzzling_pouch");if(!e)return 1;let t=u.state.initData_itemDetailMap?.["/items/guzzling_pouch"],a=Number(t?.equipmentDetail?.noncombatStats?.drinkConcentration??0),n=Number(t?.equipmentDetail?.noncombatEnhancementBonuses?.drinkConcentration??a),i=Math.max(0,Math.floor(Number(e.enhancementLevel)||0));return Math.max(1,1+a+n*(Kg[i]??0))}s(Cl,"getDrinkConcentrationMultiplier");function eh(e){let t=u.state.initData_actionTypeDrinkSlotsMap;return!t||typeof t!="object"?null:pa(t[e.type]).filter(a=>a?.itemHrid)}s(eh,"getSelectedDrinks");function Al(e){let t=u.state.initData_actionDetailMap?.[e],a=t?eh(t):null;if(!t||a===null)return null;let n=Cl(),i={efficiency:0,extraExp:0,lessResource:0,quantity:0,upgradedProduct:0},o=[];for(let r of a){let c=u.state.initData_itemDetailMap?.[r.itemHrid];if(!c)return null;for(let l of pa(c.consumableDetail?.buffs)){let d=Number(l.flatBoost)||0;l.typeHrid===Qn.artisan?i.lessResource+=d:l.typeHrid===Qn.gathering||l.typeHrid===Qn.gourmet?i.quantity+=d:l.typeHrid==="/buff_types/wisdom"?i.extraExp+=d:l.typeHrid==="/buff_types/processing"?i.upgradedProduct+=d:l.typeHrid==="/buff_types/efficiency"?i.efficiency+=d:l.typeHrid==="/buff_types/action_level"?i.efficiency-=d/100:l.typeHrid===`/buff_types/${t.type.replace("/action_types/","")}_level`&&(i.efficiency+=d/100)}o.push({itemHrid:r.itemHrid})}return{concentrationMultiplier:n,drinks:o,efficiency:i.efficiency*n,extraExp:i.extraExp*n,lessResource:Math.min(1,Math.max(0,i.lessResource*n)),quantity:Math.max(0,i.quantity*n),upgradedProduct:Math.max(0,i.upgradedProduct*n)}}s(Al,"getEffectiveTeaEffects");function Ml(){return Array.isArray(u.state.initData_characterSkills)&&Array.isArray(u.state.initData_characterItems)&&u.state.initData_actionTypeDrinkSlotsMap!==null&&u.state.initData_actionTypeDrinkSlotsMap!==void 0}s(Ml,"isPlayerDataReady");function Tl(e){if(e?.hasMaxCount===!1)return 1/0;let t=Number(e?.targetCount??e?.maxCount??e?.count??e?.actionCount);if(!Number.isFinite(t)||t<0)return 1/0;let a=Number(e?.currentCount??e?.completedCount??0);return Math.max(0,t-(Number.isFinite(a)?a:0))}s(Tl,"getActionCount");function fo(e){return 1+(Number(u.api.getTotalEffiPercentage?.(e))||0)/100}s(fo,"getEfficiencyMultiplier");function El(e){let t=mo(e,Qn.actionSpeed);return t!==null?t*100:Number(u.api.getToolsSpeedBuffByActionHrid?.(e))||0}s(El,"getActionSpeedPercent");function th(e,t,a={}){let n=(fo(e)-1)*100,i=El(e),o=Number(a.durationPerAction);if(Number.isFinite(o)&&o>0)return{cycleSeconds:o,efficiencyPercent:n,secondsPerAction:o/fo(e),speedPercent:i,timingSource:"live"};let r=Number(t?.baseTimeCost)/1e9;if(!Number.isFinite(r)||r<=0)return null;let c=Math.max(Ug,r/(1+i/100));return{baseSeconds:r,cycleSeconds:c,efficiencyPercent:n,secondsPerAction:c/fo(e),speedPercent:i,timingSource:"calculated"}}s(th,"getEffectiveSeconds");var ah=new Set(["conservative","fair","aggressive"]),nh=new Set(["/action_types/alchemy","/action_types/brewing","/action_types/cheesesmithing","/action_types/cooking","/action_types/crafting","/action_types/foraging","/action_types/milking","/action_types/tailoring","/action_types/woodcutting"]);function ih(e,t,a){let n=0;return a==="conservative"?n=t==="sell"?u.api.getNetSellPrice?.(e,0):u.api.getAskPrice?.(e,0):a==="aggressive"?n=t==="sell"?u.api.getNetSellPriceAtAsk?.(e,0):u.api.getBidPrice?.(e,0):(n=u.api.getFairValue?.(e,0),t==="sell"&&Number(n)>0&&(n*=1-(Number(u.api.getMarketTaxRate?.(e))||0))),Number(n)>0?Number(n):null}s(ih,"getDirectPrice");function Fi(e,t,a){let n=ih(e,t,a);if(n!==null||t!=="sell")return{value:n,source:n===null?"missing":"market",complete:n!==null,missingItemHrids:n===null?[e]:[]};let i=u.api.getAssetLiquidationValue?.(e,0,a);return Number(i?.value)>0?{value:Number(i.value),source:i.source==="market"?"market":"derived",complete:!!i.complete,missingItemHrids:i.missingItemHrids??[]}:{value:null,source:"missing",complete:!1,missingItemHrids:i?.missingItemHrids??[e]}}s(Fi,"getPriceInfo");function bo(e,t,a){return Fi(e,t,a).value}s(bo,"getPrice");function po(e){let t=Number(e?.minCount??e?.count??0)||0,a=Number(e?.maxCount??e?.count??t)||0;return(Number(e?.dropRate??1)||0)*((t+a)/2)}s(po,"expectedDropCount");function rh(e,t){let a=Math.max(0,Number(mo(e,Qn.essenceFind))||0),n=Math.max(0,Number(mo(e,Qn.rareFind))||0);return[...pa(t?.essenceDropTable).map(i=>({itemHrid:i.itemHrid,count:po(i)*(1+a),baseCount:po(i),findBonus:a,kind:"essence"})),...pa(t?.rareDropTable).map(i=>({itemHrid:i.itemHrid,count:po(i)*(1+n),baseCount:po(i),findBonus:n,kind:"rare"}))]}s(rh,"getOptionalOutputs");function oh(e){let t=String(e??"");if(!t)return null;let a=Object.entries(u.state.initData_actionDetailMap??{}).filter(([,o])=>nh.has(o?.type)&&Ws(o).some(r=>r?.itemHrid===t&&Number(r.count)>0));if(!a.length)return null;let n=t.split("/").at(-1),i=a.find(([o])=>o.endsWith(`/${n}`));return i?i[0]:(a.sort(([o,r],[c,l])=>(Number(r?.sortIndex)||0)-(Number(l?.sortIndex)||0)||o.localeCompare(c)),a[0][0])}s(oh,"resolveProductionActionByItemHrid");function Il(e,t,a={}){let n=typeof e=="string"?{actionHrid:e}:e??{},i=n.actionHrid??n.hrid,o=u.state.initData_actionDetailMap?.[i];if(!i||!o)return{status:"waiting",actionHrid:i,missing:["actionData"]};let r=t===void 0?Tl(n):Number(t),c=r===1/0||!Number.isFinite(r),l=c?1/0:Math.max(0,r),d=a.respectInventoryLimit??(t===void 0&&typeof e!="string");if(!Ml())return{status:"waiting",actionHrid:i,detail:o,count:l,infinite:c,effectiveCount:l,effectivelyInfinite:c,materialLimited:!1,missing:["playerData"],missingPrices:[],netProfitPerAction:null,profitPerHour:null,totalProfit:null,totalSeconds:null};let m=th(i,o,a),p=Al(i);if(!p)return{status:"waiting",actionHrid:i,detail:o,count:l,infinite:c,effectiveCount:l,effectivelyInfinite:c,materialLimited:!1,missing:["playerData"],missingPrices:[],netProfitPerAction:null,profitPerHour:null,totalProfit:null,totalSeconds:null};let b=m?.secondsPerAction??null,f=Sl(o),g=Jg(o,p),h=p.lessResource,_=1/0;for(let J of f){let ne=J.count*(J.isUpgradeItem?1:1-h);ne>0&&(_=Math.min(_,Math.floor(zi(J.itemHrid)/ne)))}f.length||(_=1/0);let w=d&&!(c&&_===0)?Math.min(l,_):l,k=!Number.isFinite(w),C=d&&f.length>0&&Number.isFinite(_)&&_>0&&(c||_<l),x="fair",T=rh(i,o),A=b?3600/b:null;function I(J){let ne=[],Ae=[],L=[],ie=f.reduce((xe,Q)=>{let le=Q.count*(Q.isUpgradeItem?1:1-h),De=bo(Q.itemHrid,"buy",J);return De===null&&ne.push(Q.itemHrid),xe+(De===null?0:le*De)},0),Ee=g.reduce((xe,Q)=>{let le=Q.count,De=Fi(Q.itemHrid,"sell",J);return De.value===null&&ne.push(Q.itemHrid),!De.complete&&De.value!==null&&L.push(...De.missingItemHrids),xe+(De.value===null?0:le*De.value)},0),ye=T.reduce((xe,Q)=>{let le=Fi(Q.itemHrid,"sell",J);return le.value===null&&Ae.push(Q.itemHrid),!le.complete&&le.value!==null&&L.push(...le.missingItemHrids),xe+(le.value===null?0:Q.count*le.value)},0),Re=0;for(let xe of p.drinks){let Q=bo(xe.itemHrid,"buy",J);Q===null&&ne.push(xe.itemHrid);let le=kl*p.concentrationMultiplier;Re+=Q===null?0:Q*le}let Ue=A?Re/A:0,Ge=Ee+ye,D=ne.length===0&&b!==null,ee=D?Ge-ie-Ue:null,ue=ee===null||!A?null:ee*A,he=ee===null||k?null:ee*w;return{mode:J,complete:D,materialCostPerAction:ie,teaCostPerHour:Re,teaCostPerAction:Ue,primaryRevenuePerAction:Ee,byproductRevenuePerAction:ye,revenuePerAction:Ge,netProfitPerAction:ee,profitPerHour:ue,totalProfit:he,missingPrices:[...new Set(ne)],unpricedByproducts:[...new Set(Ae)],derivedMissingPrices:[...new Set(L)]}}s(I,"calculateValuation");let R=Object.fromEntries([...ah].map(J=>[J,I(J)])),z=R[x],j=z.missingPrices,W=f.map(J=>{let ne=J.count*(J.isUpgradeItem?1:1-h),Ae=bo(J.itemHrid,"buy",x);return{...J,effectiveCount:ne,owned:zi(J.itemHrid),unitPrice:Ae,valuePerAction:Ae===null?null:ne*Ae}}),B=g.map(J=>{let ne=J.count,Ae=Fi(J.itemHrid,"sell",x),L=Ae.value;return{...J,baseCount:J.baseCount??J.count,effectiveCount:ne,expectedCount:ne*(k?1:w),kind:"primary",owned:zi(J.itemHrid),unitPrice:L,valueSource:Ae.source,derivedMissingPrices:Ae.missingItemHrids,valuePerAction:L===null?null:ne*L}}),M=z.unpricedByproducts,N=T.map(J=>{let ne=Fi(J.itemHrid,"sell",x),Ae=ne.value;return{...J,effectiveCount:J.count,expectedCount:J.count*(k?1:w),owned:zi(J.itemHrid),unitPrice:Ae,valueSource:ne.source,derivedMissingPrices:ne.missingItemHrids,valuePerAction:Ae===null?null:J.count*Ae}}),q=p.drinks.map(J=>{let ne=bo(J.itemHrid,"buy",x),Ae=kl*p.concentrationMultiplier,L=ne===null?null:ne*Ae;return{...J,countPerHour:Ae,costPerHour:L,unitPrice:ne}}),$=z.complete,Y=null;if(k)Y=1/0;else if(b!==null){let J=Number(a.durationPerAction);if(Number.isFinite(J)&&J>0){let ne=Math.max(w>0?1:0,Math.round(w/fo(i))),Ae=Number(a.currentCycleRemainingSeconds);Y=ne>0&&Number.isFinite(Ae)&&Ae>=0?Math.min(J,Ae)+Math.max(0,ne-1)*J:ne*J}else Y=w*b}let re=Number(a.now??Date.now());return{status:$?"complete":"incomplete",isPartial:$&&(M.length>0||z.derivedMissingPrices.length>0),actionHrid:i,detail:o,count:l,infinite:c,effectiveCount:w,effectivelyInfinite:k,materialLimited:C,respectsInventoryLimit:!!d,secondsPerAction:b,totalSeconds:Y,finishAt:Number.isFinite(Y)&&Y!==null?re+Y*1e3:null,inputs:W,outputs:B,byproductOutputs:N,actionsPerHour:A,baseSeconds:m?.baseSeconds??null,cycleSeconds:m?.cycleSeconds??null,efficiencyPercent:m?.efficiencyPercent??0,speedPercent:m?.speedPercent??0,timingSource:m?.timingSource??null,teaEffects:{...p,drinks:q},maxCraftable:_,valuationMode:x,valuations:R,materialCostPerAction:z.materialCostPerAction,teaCostPerHour:z.teaCostPerHour,teaCostPerAction:z.teaCostPerAction,primaryRevenuePerAction:z.primaryRevenuePerAction,byproductRevenuePerAction:z.byproductRevenuePerAction,revenuePerAction:z.revenuePerAction,netProfitPerAction:z.netProfitPerAction,profitPerHour:z.profitPerHour,totalProfit:z.totalProfit,missingPrices:j,unpricedByproducts:M,derivedMissingPrices:z.derivedMissingPrices}}s(Il,"projectAction");function sh(e=u.state.currentActionsHridList,t={}){let a=Number(t.now??Date.now()),n=0,i=!1,o=[];for(let r of e??[]){let c=Il(r,void 0,{...t,now:a}),l=i?null:a+n*1e3;Number.isFinite(c.totalSeconds)&&!i?n+=c.totalSeconds:i=!0,o.push({...c,action:r,startsAt:l,cumulativeFinishAt:i?null:a+n*1e3})}return{items:o,totalSeconds:i?1/0:n,finishAt:i?null:a+n*1e3,hasInfinite:i}}s(sh,"projectQueue"),Object.assign(u.api,{getActionBuffRatio:mo,getActionSpeedPercent:El,getDrinkConcentrationMultiplier:Cl,getEffectiveTeaEffects:Al,getInventoryCount:zi,getExpectedOutputs:Ws,getDirectInputs:Sl,getActionRemainingCount:Tl,isPlayerProjectionDataReady:Ml,projectAction:Il,projectQueue:sh,resolveProductionActionByItemHrid:oh});var Nl=1,Hl="MWITools_procurement_settings_v1",uh="MWITools_procurement_v1",Dl=300*1e3,ch=30*1e3,lh=25,ji=Object.freeze({badgesEnabled:!0,upgradeChainEnabled:!0,createPlansByDefault:!0,inventorySyncEnabled:!0,autoCollapseEnabled:!0,locateEnabled:!0,autoPrefillEnabled:!0,purchaseNavEnabled:!0,pricesEnabled:!0,cartTotalEnabled:!0,autoRestockEnabled:!0,safetyLevel:"95",safetyThreshold:10,guzzlingPouchLevel:-1,nextItemShortcut:null,edgeZoneWidth:10,handleY:180,drawerWidth:360}),Pl=Object.freeze({off:0,95:1.645,99:2.326,99.9:3.09}),dh=Object.freeze([0,.02,.042,.066,.092,.12,.15,.182,.216,.255,.29,.33,.372,.416,.462,.51,.56,.612,.666,.722,.78]),go=new Map,ut=new Map,ga=new Map,ei=new Map,ho=new Map,Pa="",Wi="",Vi=!1,Pt=bh(),Ll=null,Gi=null;function An(e){return e==null?e:globalThis.structuredClone(e)}s(An,"clone");function aa(e,t={}){for(let a of go.get(e)??[])try{a(An(t))}catch(n){console.error(u.config.isZH?`[MWITools] 采购事件 ${e} 的监听器执行失败`:`[MWITools] Procurement ${e} listener failed`,n)}}s(aa,"emit");function $l(e,t){let a=go.get(e)??new Set;return a.add(t),go.set(e,a),e==="ready"&&Vi&&globalThis.queueMicrotask(()=>t({characterId:Pa})),()=>a.delete(t)}s($l,"on");function Ol(e,t){go.get(e)?.delete(t)}s(Ol,"off");function At(e){let t=String(e??"").trim();if(!t)return"";let a=t.replace(/^#/,"").replace(/^\/items\//,"");return a?`/items/${a}`:""}s(At,"normalizeItemHrid");function ti(e){let t=Math.floor(Number(e)||0);return Math.max(0,t)}s(ti,"normalizeEnhancementLevel");function _t(e,t=0){let a=At(e);return a?`${a}#${ti(t)}`:""}s(_t,"itemKey");function Zi(e){let t=String(e).lastIndexOf("#");return{itemHrid:t>=0?e.slice(0,t):At(e),enhancementLevel:t>=0?ti(e.slice(t+1)):0}}s(Zi,"parseItemKey");function mh(){return u.api.getMarketEnvironment?.()??"production"}s(mh,"getEnvironment");function fh(e=Pa){return`${uh}:${mh()}:${e}`}s(fh,"getCharacterStorageKey");function bh(){try{let e=JSON.parse(localStorage.getItem(Hl)||"null");return{...ji,...e?.values??{}}}catch{return{...ji}}}s(bh,"loadSettings");function ph(){localStorage.setItem(Hl,JSON.stringify({version:Nl,values:Pt}))}s(ph,"saveSettings");function gh(e){let t={...ji,...e};return t.safetyLevel=Object.hasOwn(Pl,t.safetyLevel)?t.safetyLevel:"95",t.safetyThreshold=Math.max(0,Math.floor(Number(t.safetyThreshold)||0)),t.guzzlingPouchLevel=Math.min(20,Math.max(-1,Math.floor(Number(t.guzzlingPouchLevel)||0))),t.edgeZoneWidth=Math.min(32,Math.max(0,Math.floor(Number(t.edgeZoneWidth)||0))),t.handleY=Math.max(8,Number(t.handleY)||180),t.drawerWidth=Math.min(560,Math.max(300,Number(t.drawerWidth)||360)),t}s(gh,"normalizeSettings");function hh(){return An(Pt)}s(hh,"getSettings");function _h(e,t){if(!Object.hasOwn(ji,e))return!1;let a=Pt[e];return Pt=gh({...Pt,[e]:t}),ph(),aa("settings:change",{id:e,value:Pt[e],previous:a}),!0}s(_h,"setSetting");function yh(){return{version:Nl,cart:[...ut.values()],plans:[...ga.values()]}}s(yh,"serializeData");function Vs(){Wi&&localStorage.setItem(Wi,JSON.stringify(yh()))}s(Vs,"persistData");function ql(e){if(Pa=String(e??""),Wi=Pa?fh(Pa):"",ut.clear(),ga.clear(),Wi)try{let t=JSON.parse(localStorage.getItem(Wi)||"null");for(let a of t?.cart??[]){let n=_t(a.itemHrid??a.itemId,a.enhancementLevel);n&&ut.set(n,{...a,itemHrid:Zi(n).itemHrid,enhancementLevel:Zi(n).enhancementLevel,quantity:Math.max(0,Math.ceil(Number(a.quantity)||0))})}for(let a of t?.plans??[])a?.id&&ga.set(a.id,a)}catch(t){console.warn(u.config.isZH?"[MWITools] 无法加载采购数据":"[MWITools] Could not load procurement data",t)}wh(u.state.initData_characterItems??[]),Qs(),Vi=!!Pa,aa("character:change",{characterId:Pa}),aa("cart:change",{items:wo()}),aa("plan:change",{plans:Ys()}),Vi&&aa("ready",{characterId:Pa})}s(ql,"loadCharacterData");function ai(e){let t=At(e);return Qa(t,{fallback:t})}s(ai,"resolveItemName");function Ui(e){let t=String(e??"").trim();return t?so(t,{fallback:t}):""}s(Ui,"resolveActionName");function Rl(e){return String(e?.hash??e?.id??`${e?.itemLocationHrid??""}:${_t(e?.itemHrid,e?.enhancementLevel)}`)}s(Rl,"inventoryEntryKey");function wh(e){ei.clear();for(let t of e??[])t?.itemHrid&&ei.set(Rl(t),{...t})}s(wh,"rebuildInventorySnapshot");function Gs(){let e=new Map;for(let t of ei.values()){if(t.itemLocationHrid&&t.itemLocationHrid!=="/item_locations/inventory")continue;let a=_t(t.itemHrid,t.enhancementLevel);e.set(a,(e.get(a)??0)+Math.max(0,Number(t.count)||0))}return e}s(Gs,"inventoryCounts");function La(e,t=0){return Gs().get(_t(e,t))??0}s(La,"getInventoryCount");function Zs(e,t=0,a=null,n=null){let i=_t(e,t),o=[],r=0;for(let c of ga.values()){if(c.id===a||c.status==="completed"||n?.has?.(c.actionHrid))continue;let l=Math.max(0,Number(c.materials?.[i])||0);l&&(r+=l,o.push({id:c.id,name:Ui(c.actionHrid)||c.name,quantity:l}))}return{total:r,byPlan:o}}s(Zs,"getLockedDetails");function vh(e,t=0,a=null){let n=La(e,t);return Math.max(0,n-Zs(e,t,a).total)}s(vh,"getEffectiveInventory");function Us(e){return At(e)==="/items/coin"}s(Us,"isCoin");function xh(){return Pl[Pt.safetyLevel]??0}s(xh,"getSafetyScore");function Bl(e,t,a,n={}){let i=Math.max(0,Number(e)||0),o=Math.max(0,Math.ceil(Number(t)||0)),r=i*o,c=Math.min(1,Math.max(0,Number(a)||0)),l=i*(1-c),d=l*o,m=n.threshold??Pt.safetyThreshold,p=o>m&&n.bufferable!==!1?xh():0,b=l-Math.floor(l),f=Math.sqrt(o*b*(1-b)),g=o*Math.ceil(l),h=Math.min(r,g,Math.ceil(d+p*f-1e-9));return{raw:r,expected:d,buffer:p*f,suggested:h}}s(Bl,"suggestedMaterialCount");function kh(){if(Pt.guzzlingPouchLevel>=0)return Pt.guzzlingPouchLevel;let e=-1;for(let t of ei.values())At(t.itemHrid)==="/items/guzzling_pouch"&&t.itemLocationHrid!=="/item_locations/inventory"&&(e=Math.max(e,ti(t.enhancementLevel)));return e}s(kh,"getGuzzlingPouchLevel");function Sh(){let e=kh();if(e<0)return 1;let t=u.state.initData_itemDetailMap?.["/items/guzzling_pouch"],a=Number(t?.equipmentDetail?.noncombatStats?.drinkConcentration??.1),n=Number(t?.equipmentDetail?.noncombatEnhancementBonuses?.drinkConcentration??a);return 1+a+n*(dh[e]??0)}s(Sh,"getDrinkConcentration");function Ch(e){let t=u.api.getTeaBuffsByActionHrid?.(e)??{},a=Math.max(0,Number(t.lessResource)||0)/100;return Math.min(1,a*Sh())}s(Ch,"getTeaSavings");function Ah(e,t,a,n={}){let i=At(e.itemHrid),o=ti(e.enhancementLevel),r=Math.max(0,Number(e.count)||0),c=!Us(i)&&!n.isUpgradeItem&&n.bufferable!==!1,l=Bl(r,a,c?Ch(t):0,{bufferable:c}),d=La(i,o),m=Zs(i,o,n.excludePlanId,n.excludeActionHrids),p=Math.max(0,d-m.total),b=ut.get(_t(i,o))?.quantity??0;return{itemHrid:i,enhancementLevel:o,name:ai(i),...l,owned:d,locked:m.total,lockedByPlans:m.byPlan,effectiveOwned:p,cartQuantity:b,shortage:Math.max(0,l.suggested-p),addableShortage:Math.max(0,l.suggested-p-b),purchasable:!Us(i)}}s(Ah,"materialRequirement");function _o(e,t,a={}){let n=u.state.initData_actionDetailMap?.[e],i=Math.max(0,Math.ceil(Number(t)||0));if(!n||!i)return{status:"waiting",actionHrid:e,count:i,materials:[]};let o=u.api.getDirectInputs?.(n)??[],r={...a,excludeActionHrids:a.excludeActionHrids??new Set([e])},c=o.map(l=>Ah(l,e,i,{...r,isUpgradeItem:At(l.itemHrid)===At(n.upgradeItemHrid)}));return{status:"complete",actionHrid:e,count:i,detail:n,materials:c,missingTypes:c.filter(l=>l.purchasable&&l.shortage>0).length,missingQuantity:c.reduce((l,d)=>l+(d.purchasable?d.shortage:0),0)}}s(_o,"calculateRequirements");function Ks(e){let t=At(e),a=u.state.initData_actionDetailMap??{};if(Ll!==a||!Gi){Ll=a,Gi=new Map;for(let[n,i]of Object.entries(a))for(let o of u.api.getExpectedOutputs?.(i)??[]){let r=At(o.itemHrid);!r||Gi.has(r)||Gi.set(r,{actionHrid:n,detail:i,outputCount:Number(o.count)||1})}}return Gi.get(t)??null}s(Ks,"getProducerAction");function yo(e,t){let a=_t(t.itemHrid,t.enhancementLevel),n=e.get(a);if(!n){e.set(a,{...t});return}let i=n.suggested+t.suggested,o=n.owned,r=n.locked,c=Math.max(0,o-r);e.set(a,{...n,raw:n.raw+t.raw,expected:n.expected+t.expected,buffer:n.buffer+t.buffer,suggested:i,shortage:Math.max(0,i-c),addableShortage:Math.max(0,i-c-n.cartQuantity)})}s(yo,"mergeMaterial");function Xs(e,t,a={}){let n=[],i=new Map,o=new Set,r=!1,c=!1,l={...a,excludeActionHrids:a.excludeActionHrids??new Set([e])},d=s((m,p,b)=>{if(b>=lh){c=!0;return}if(o.has(m)){r=!0;return}let f=u.state.initData_actionDetailMap?.[m];if(!f)return;o.add(m);let g=_o(m,p,l),h={actionHrid:m,name:Ui(m),count:p,depth:b,materials:g.materials};n.push(h);let _=At(f.upgradeItemHrid);for(let y of g.materials)_&&y.itemHrid===_||yo(i,y);if(_){let y=Ks(_);if(y)d(y.actionHrid,Math.ceil(p/y.outputCount),b+1);else{let w=g.materials.find(k=>k.itemHrid===_);w&&yo(i,w)}}o.delete(m)},"visit");return d(e,Math.max(0,Math.ceil(Number(t)||0)),0),{status:n.length?"complete":"waiting",stages:n,leaves:[...i.values()],cycle:r,truncated:c}}s(Xs,"calculateUpgradeChain");function Mh(e,t){let a=new Set(t??[]),n=new Map;for(let i of e?.stages??[]){if(!a.has(i.actionHrid))continue;let o=u.state.initData_actionDetailMap?.[i.actionHrid],r=At(o?.upgradeItemHrid),c=r?Ks(r):null;for(let l of i.materials??[])r&&l.itemHrid===r&&c&&a.has(c.actionHrid)||yo(n,l)}return[...n.values()]}s(Mh,"selectUpgradeChainMaterials");function wo(){return An([...ut.values()].map(e=>({...e,name:ai(e.itemHrid)||e.name})))}s(wo,"getCartItems");function zl(e,t=0){let a=ut.get(_t(e,t));return An(a?{...a,name:ai(a.itemHrid)||a.name}:null)}s(zl,"getCartItem");function Mn(){Vs(),aa("cart:change",{items:wo()})}s(Mn,"saveCartAndEmit");function Js(e){let t=Array.isArray(e)?e:[e],a=0,n=0;for(let i of t){let o=At(i?.itemHrid??i?.itemId),r=ti(i?.enhancementLevel),c=Math.ceil(Number(i?.quantity)||0);if(!o||c<=0||Us(o)){n+=1;continue}let l=_t(o,r),d=ut.get(l);ut.set(l,{itemHrid:o,enhancementLevel:r,name:i.name||d?.name||ai(o),quantity:(d?.quantity??0)+c,starred:!!(d?.starred??i.starred),threshold:d?.threshold??i.threshold??null,baselineStock:La(o,r),source:i.source??d?.source??"manual",updatedAt:new Date().toISOString(),manualOverrideUntil:d?.manualOverrideUntil??0}),a+=1}return a&&Mn(),{ok:a>0,added:a,skipped:n}}s(Js,"addToCart");function Th(e,t="material"){return Js((e??[]).filter(a=>a.purchasable&&a.addableShortage>0).map(a=>({itemHrid:a.itemHrid,enhancementLevel:a.enhancementLevel,name:a.name,quantity:a.addableShortage,source:t})))}s(Th,"addRequirementsToCart");function Eh(e){let t=new Map;for(let a of e??[])for(let n of a??[])yo(t,n);return[...t.values()]}s(Eh,"aggregateRequirements");function Fl(e,t,a=0){let n=_t(e,a),i=ut.get(n);if(!i)return{ok:!1};let o=Math.max(0,Math.ceil(Number(t)||0));return!o&&!i.starred?ut.delete(n):(i.quantity=o,i.baselineStock=La(i.itemHrid,i.enhancementLevel),i.manualOverrideUntil=Date.now()+Dl,i.updatedAt=new Date().toISOString()),Mn(),{ok:!0}}s(Fl,"setCartItemQuantity");function Ih(e,t,a){let n=ut.get(_t(e,t));return n?(Object.assign(n,a,{updatedAt:new Date().toISOString()}),Object.hasOwn(a,"quantity")&&(n.quantity=Math.max(0,Math.ceil(Number(a.quantity)||0)),n.manualOverrideUntil=Date.now()+Dl),Object.hasOwn(a,"threshold")&&(n.threshold=a.threshold==null?null:Math.max(0,Math.ceil(Number(a.threshold)||0))),Mn(),!0):!1}s(Ih,"updateCartItem");function jl(e,t=0){let a=ut.delete(_t(e,t));return a&&Mn(),{ok:a}}s(jl,"removeFromCart");function Wl({includeStarred:e=!1}={}){for(let[t,a]of ut)(e||!a.starred)&&ut.delete(t);return Mn(),{ok:!0}}s(Wl,"clearCart");function Vl(e,t,a,n={}){let i=_t(e,t),o=ut.get(i),r=Math.max(0,Math.floor(Number(a)||0));if(!o||!r||!Pt.inventorySyncEnabled)return!1;let c=o.quantity;o.quantity=Math.max(0,o.quantity-r),o.baselineStock=La(o.itemHrid,o.enhancementLevel),o.updatedAt=new Date().toISOString();let l=!1;return o.quantity<=0&&(l=!0,o.starred?o.quantity=0:ut.delete(i)),Mn(),l&&(aa("item:fulfilled",{item:An(o),source:n.source}),[...ut.values()].some(d=>d.quantity>0)||aa("all:fulfilled",{})),o.quantity!==c||l}s(Vl,"applyAcquisition");function Gl(e,t,a=0){let n=_t(e,a),i=Math.max(0,Math.floor(Number(t)||0));if(!i)return!1;let o=Vl(e,a,i,{source:"market-confirmation"});return o&&ho.set(n,{quantity:i,expiresAt:Date.now()+ch}),o}s(Gl,"confirmMarketPurchase");function Nh(e,t){let a=ho.get(e);if(!a||Date.now()>a.expiresAt)return ho.delete(e),t;let n=Math.max(0,t-a.quantity);return a.quantity=Math.max(0,a.quantity-t),a.quantity||ho.delete(e),n}s(Nh,"consumePurchaseSuppression");function Zl(e){let t=Gs();for(let i of e??[]){if(!i?.itemHrid)continue;let o=Rl(i);Number(i.count)<=0?ei.delete(o):ei.set(o,{...i})}let a=Gs(),n=new Set([...t.keys(),...a.keys()]);for(let i of n){let o=(a.get(i)??0)-(t.get(i)??0),r=ut.get(i);if(r&&(r.baselineStock=a.get(i)??0),o>0){let c=Nh(i,o);if(c>0){let l=Zi(i);Vl(l.itemHrid,l.enhancementLevel,c,{source:"inventory"})}}}Ul(),Qs(),Vs(),aa("inventory:change",{changes:[...n].map(i=>({...Zi(i),before:t.get(i)??0,after:a.get(i)??0,delta:(a.get(i)??0)-(t.get(i)??0)}))})}s(Zl,"applyInventoryUpdates");function Ul(){if(!Pt.autoRestockEnabled)return;let e=Date.now(),t=!1;for(let a of ut.values()){if(!a.starred||!a.threshold||a.manualOverrideUntil>e)continue;let n=La(a.itemHrid,a.enhancementLevel),i=Math.max(0,a.threshold-n);i!==a.quantity&&(a.quantity=i,a.baselineStock=n,t=!0)}t&&Mn()}s(Ul,"applyRestockThresholds");function Ys(){return Qs(),An([...ga.values()].map(e=>({...e,name:Ui(e.actionHrid)||e.name})))}s(Ys,"getPlans");function vo(){Vs(),aa("plan:change",{plans:Ys()})}s(vo,"savePlansAndEmit");function Hh(e,t,a=null){let n=u.state.initData_actionDetailMap?.[e];if(!n)return null;let i=Math.max(1,Math.ceil(Number(t)||1)),o=a??(Pt.upgradeChainEnabled?Xs(e,i).leaves:_o(e,i).materials),r=Object.fromEntries(o.filter(m=>m.purchasable).map(m=>[_t(m.itemHrid,m.enhancementLevel),m.suggested])),c=u.api.getExpectedOutputs?.(n)?.[0]??null,l=globalThis.crypto?.randomUUID?.()??`plan-${Date.now()}-${Math.random()}`,d={id:l,actionHrid:e,name:n.name??e.split("/").at(-1),targetCount:i,materials:r,outputItemHrid:c?.itemHrid??null,outputPerAction:Number(c?.count)||0,baselineOutput:c?La(c.itemHrid,0):0,onlineProgress:0,progress:0,status:"active",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return ga.set(l,d),vo(),An(d)}s(Hh,"createPlan");function Qs(){for(let e of ga.values()){if(e.status==="completed")continue;let t=e.outputItemHrid&&e.outputPerAction>0?Math.floor(Math.max(0,La(e.outputItemHrid,0)-e.baselineOutput)/e.outputPerAction):0;e.progress=Math.min(e.targetCount,Math.max(e.progress??0,e.onlineProgress??0,t))}}s(Qs,"refreshPlanProgress");function Kl(e){let t=e?.endCharacterAction??e?.characterAction??e,a=t?.actionHrid??t?.hrid??u.state.currentActionsHridList?.find(i=>i.id===t?.id)?.actionHrid;if(!a)return;let n=!1;for(let i of ga.values())i.status==="completed"||i.actionHrid!==a||(i.onlineProgress=Math.min(i.targetCount,(i.onlineProgress??0)+1),i.progress=Math.max(i.progress??0,i.onlineProgress),i.updatedAt=new Date().toISOString(),n=!0);n&&vo()}s(Kl,"recordActionCompletion");function Dh(e,t){let a=ga.get(e);if(!a)return!1;if(Object.hasOwn(t,"targetCount")){a.targetCount=Math.max(1,Math.ceil(Number(t.targetCount)||1));let n=Pt.upgradeChainEnabled?Xs(a.actionHrid,a.targetCount).leaves:_o(a.actionHrid,a.targetCount).materials;a.materials=Object.fromEntries(n.filter(i=>i.purchasable).map(i=>[_t(i.itemHrid,i.enhancementLevel),i.suggested]))}return(t.status==="completed"||t.status==="active")&&(a.status=t.status),a.updatedAt=new Date().toISOString(),vo(),!0}s(Dh,"updatePlan");function Ph(e){let t=ga.delete(e);return t&&vo(),t}s(Ph,"removePlan");function Xl(e){if(e?.type!=="info"||e?.message!=="infoNotification.buyOrderCompleted")return null;let t=new Map((Array.isArray(e.variables)?e.variables:[]).filter(a=>a?.name).map(a=>[a.name,a.data]));return{itemHrid:At(t.get("itemHrid")),quantity:Math.max(0,Math.floor(Number(t.get("count"))||0)),enhancementLevel:ti(t.get("enhancementLevel"))}}s(Xl,"parsePurchaseConfirmation");function Lh(){u.onMessage("init_character_data",()=>{ql(u.state.currentCharacterId)}),u.onMessage("items_updated",e=>{Zl(e.endCharacterItems??[])}),u.onMessage("action_completed",Kl),u.onMessage("info",e=>{let t=Xl(e);t?.itemHrid&&t.quantity&&Gl(t.itemHrid,t.quantity,t.enhancementLevel)})}s(Lh,"installMessageHandlers");function $h(){let e=globalThis.unsafeWindow??globalThis.window??globalThis,t=e.MWITools??{},a={version:"1.0.0",apiVersion:1,get ready(){return Vi},getCartItems:wo,getCartItem:zl,hasCartItem:s((n,i=0)=>ut.has(_t(n,i)),"hasCartItem"),getCartCount:s(()=>ut.size,"getCartCount"),addToCart:Js,setCartItemQuantity:Fl,removeFromCart:jl,clearCart:Wl,resolveItemName:ai,resolveActionName:Ui,normalizeItemId:s(n=>At(n).replace("/items/",""),"normalizeItemId"),openMarketplace:s((n,i=0)=>u.api.openProcurementMarketplace?.(n,i)??!1,"openMarketplace"),on:$l,off:Ol};return t.shopping=a,e.MWITools=t,a}s($h,"exposePublicApi"),Lh();var Oh=$h();Object.assign(u.api,{procurement:{defaults:ji,on:$l,off:Ol,emit:aa,get ready(){return Vi},get activeCharacterId(){return Pa},normalizeItemHrid:At,itemKey:_t,parseItemKey:Zi,resolveItemName:ai,resolveActionName:Ui,getSettings:hh,setSetting:_h,loadCharacterData:ql,getInventoryCount:La,getEffectiveInventory:vh,getLockedDetails:Zs,suggestedMaterialCount:Bl,calculateRequirements:_o,getProducerAction:Ks,calculateUpgradeChain:Xs,selectUpgradeChainMaterials:Mh,aggregateRequirements:Eh,getCartItems:wo,getCartItem:zl,addToCart:Js,addRequirementsToCart:Th,setCartItemQuantity:Fl,updateCartItem:Ih,removeFromCart:jl,clearCart:Wl,getPlans:Ys,createPlan:Hh,updatePlan:Dh,removePlan:Ph,confirmMarketPurchase:Gl,applyInventoryUpdates:Zl,applyRestockThresholds:Ul,recordActionCompletion:Kl,parsePurchaseConfirmation:Xl,publicApi:Oh}});var qh=50;function Ut(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}s(Ut,"positiveNumber");function Ft(e){return u.api.procurement?.normalizeItemHrid?.(e)??String(e??"")}s(Ft,"normalizeItemHrid");function Jl(e){let t=u.api.getExpectedOutputs?.(e)?.[0],a=Ft(t?.itemHrid);return a?{itemHrid:a,count:Ut(t?.count)||1}:null}s(Jl,"primaryOutput");function e0(){return Object.entries(u.state.initData_actionDetailMap??{})}s(e0,"actionEntries");function xo(e){let t=Ft(e);for(let[a,n]of e0()){if(!n?.upgradeItemHrid)continue;let i=Jl(n);if(i?.itemHrid===t)return{actionHrid:n.hrid??a,detail:n,output:i,inputHrid:Ft(n.upgradeItemHrid)}}return null}s(xo,"findUpgradeActionToItem");function Yl(e){let t=Ft(e);for(let[a,n]of e0()){if(n?.upgradeItemHrid)continue;let i=Jl(n);if(i?.itemHrid===t)return{actionHrid:n.hrid??a,detail:n,output:i}}return null}s(Yl,"findBaseActionForItem");function Rh(e,t){let a=Ft(t);return(u.api.getDirectInputs?.(e)??[]).reduce((n,i)=>Ft(i?.itemHrid)===a?n+Ut(i?.count):n,0)}s(Rh,"inputCountFor");function Ql(e){return Array.isArray(e)?e:e?.itemHrid||e?.hrid?[e]:Object.entries(e??{}).map(([t,a])=>({itemHrid:t,count:a?.count??a}))}s(Ql,"normalizeRows");function Bh(e){let t=e?.itemRewards??e?.rewards??e?.rewardItems;if(t)return Ql(t);let a=e?.itemHrid??e?.rewardItemHrid??e?.item?.itemHrid;return a?[{itemHrid:a,count:e?.outputCount??e?.itemCount??e?.rewardCount??1}]:[]}s(Bh,"shopRewards");function t0(e){let t=Ft(e),a=null;for(let[n,i]of Object.entries(u.state.initData_shopItemDetailMap??{})){let o=Bh(i).reduce((d,m)=>Ft(m?.itemHrid??m?.hrid)===t?d+Ut(m?.count??1):d,0);if(!o)continue;let r=Ql(i?.costs??i?.costItems??i?.cost).filter(d=>Ut(d?.count)>0);if(!r.length||r.some(d=>Ft(d?.itemHrid??d?.hrid)!=="/items/coin"))continue;let l=r.reduce((d,m)=>d+Ut(m?.count),0)/o;!l||a&&a.unitPrice<=l||(a={shopHrid:i?.hrid??i?.shopItemHrid??n,itemHrid:t,rewardCount:o,unitPrice:l,detail:i})}return a}s(t0,"findCoinShopOffer");function ed(e){let t=[],a=new Set,n=Ft(e),i=!1,o=!1;for(;n;){if(a.has(n)){i=!0;break}if(t.length>=qh){o=!0;break}a.add(n);let r=xo(n);if(!r)break;t.unshift({kind:"upgrade",actionHrid:r.actionHrid,outputHrid:n,outputCount:r.output.count,inputHrid:r.inputHrid,inputCount:Rh(r.detail,r.inputHrid)||1,detail:r.detail}),n=r.inputHrid}if(n&&t.length){let r=Yl(n);if(r)t.unshift({kind:"craft",actionHrid:r.actionHrid,outputHrid:n,outputCount:r.output.count,inputHrid:null,inputCount:0,detail:r.detail});else{let c=t0(n);c&&t.unshift({kind:"shop",actionHrid:null,outputHrid:n,outputCount:1,inputHrid:null,inputCount:0,shopHrid:c.shopHrid,shopOffer:c,detail:null})}}return{steps:t,cycle:i,truncated:o}}s(ed,"buildTrainChain");function td(e,t){return e instanceof Map?Ut(e.get(t)):Ut(e?.[t])}s(td,"demandCount");function ad(e,t={}){let a=u.api.procurement,n=e.steps.map(o=>({...o,count:0})),i=0;for(let o=n.length-1;o>=0;o-=1){let r=n[o],c=Ut(a?.getInventoryCount?.(r.outputHrid,0)),l=Math.max(0,i-c),d=Math.ceil(td(t,r.outputHrid));r.requiredByAbove=i,r.inventory=c,r.shortageUnits=l,r.count=r.kind==="shop"?Math.max(d,Math.ceil(l)):Math.max(d,Math.ceil(l/(Ut(r.outputCount)||1))),r.plannedOutput=r.count*(Ut(r.outputCount)||1),i=r.inputHrid?r.count*(Ut(r.inputCount)||1):0}return{...e,steps:n}}s(ad,"planTrainCounts");function nd(e,t={}){let a=e.steps[0];if(a?.kind!=="craft"||td(t,a.outputHrid)>0||a.count<=0)return e;let n=t0(a.outputHrid);if(!n)return e;let i=Ut(u.api.getAskPrice?.(a.outputHrid,0));return i&&n.unitPrice>i?e:{...e,steps:[{...a,kind:"shop",actionHrid:null,outputCount:1,count:Math.ceil(a.shortageUnits),plannedOutput:Math.ceil(a.shortageUnits),shopHrid:n.shopHrid,shopOffer:n,detail:null},...e.steps.slice(1)]}}s(nd,"applyShopPreference");function zh(e,t={},a={}){let n=ed(e),i=ad(n,t);return a.preferShop===!1?i:nd(i,t)}s(zh,"createTrainPlan");function Fh(e){let t=Ft(e),a=new Set;for(;t&&!a.has(t);){a.add(t);let n=xo(t);if(!n)break;t=n.inputHrid}return t}s(Fh,"trainChainRoot");function jh(e){let t=Ft(e),a=new Set,n=0;for(;t&&!a.has(t);){a.add(t);let i=xo(t);if(!i)break;t=i.inputHrid,n+=1}return n||(e0().some(([,i])=>Ft(i?.upgradeItemHrid)===t)?0:-1)}s(jh,"trainChainDepth");function Wh(e){let t=String(e??"").trim().toLowerCase().match(/^(\d+(?:\.\d+)?)([kmb])?$/);if(!t)return null;let a={k:1e3,m:1e6,b:1e9}[t[2]]??1,n=Math.floor(Number(t[1])*a);return Number.isFinite(n)&&n>0?n:null}s(Wh,"parseTrainCount");var Vh={findUpgradeActionToItem:xo,findBaseActionForItem:Yl,findCoinShopOffer:t0,buildTrainChain:ed,planTrainCounts:ad,applyShopPreference:nd,createTrainPlan:zh,trainChainRoot:Fh,trainChainDepth:jh,parseTrainCount:Wh};u.api.trainPlanning=Vh;var Gh="MWIToolsHistory",ni="xpSnapshots",id="MWITools_xp_history_v1",Zh=720*60*60*1e3,Tn=3600*1e3;function rd(){return globalThis.indexedDB?new Promise(e=>{let t=globalThis.indexedDB.open(Gh,1);t.onupgradeneeded=()=>{let a=t.result;a.objectStoreNames.contains(ni)||a.createObjectStore(ni,{keyPath:"key",autoIncrement:!0}).createIndex("objectKey","objectKey",{unique:!1})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null)}):Promise.resolve(null)}s(rd,"openDatabase");function od(){try{let e=JSON.parse(globalThis.localStorage?.getItem(id)||"[]");return Array.isArray(e)?e:[]}catch{return[]}}s(od,"readFallback");function Uh(e){try{globalThis.localStorage?.setItem(id,JSON.stringify(e))}catch(t){console.warn(u.config.isZH?"[MWITools] 无法保存经验历史备用数据":"[MWITools] Unable to save XP history fallback",t)}}s(Uh,"writeFallback");async function Kh(e){let t=await rd();return t?new Promise(a=>{let i=t.transaction(ni,"readonly").objectStore(ni).index("objectKey").getAll(e);i.onsuccess=()=>a(i.result??[]),i.onerror=()=>a(null)}):null}s(Kh,"readIndexed");async function Xh(e,t){let a=await rd();return a?new Promise(n=>{let i=a.transaction(ni,"readwrite"),o=i.objectStore(ni),r=o.index("objectKey").openKeyCursor(globalThis.IDBKeyRange.only(e));r.onsuccess=()=>{let c=r.result;if(c){o.delete(c.primaryKey),c.continue();return}for(let l of t)o.add({...l,objectKey:e})},i.oncomplete=()=>n(!0),i.onerror=()=>n(!1)}):!1}s(Xh,"replaceIndexed");async function sd(e){let t=await Kh(e);return t!==null?t.sort((a,n)=>a.at-n.at):od().filter(a=>a.objectKey===e).sort((a,n)=>a.at-n.at)}s(sd,"getXpHistory");function ud(e,t=Date.now()){let a=t-Zh,n=t-24*Tn,i=new Map,o=[];for(let r of e)r.at<a||(r.at>=n?o.push(r):i.set(Math.floor(r.at/Tn),r));return[...i.values(),...o].sort((r,c)=>r.at-c.at)}s(ud,"compactHistory");async function Jh(e,t){if(await Xh(e,t))return;let a=od().filter(n=>n.objectKey!==e);Uh([...a,...t.map(n=>({...n,objectKey:e}))])}s(Jh,"saveHistory");async function Yh(e,t,a=Date.now()){let n=Number(t),i=Number(a);if(!e||!Number.isFinite(n)||!Number.isFinite(i))return!1;let o=await sd(e),r=o.at(-1);return r&&(r.xp===n||r.at>=i||r.xp>n)?!1:(o.push({xp:n,at:i}),await Jh(e,ud(o,i)),!0)}s(Yh,"recordXpSnapshot");function cd(e,t,a,n){let i=e.at(-1);if(!i)return null;let r=e.filter(c=>c.at>=n-t&&c.at<=i.at)[0];return!r||i.at-r.at<a||i.xp<r.xp?null:(i.xp-r.xp)/(i.at-r.at)*Tn}s(cd,"calculateWindowRate");function Qh(e,t=Date.now()){let a=[...e].sort((o,r)=>o.at-r.at),n=a.at(-1),i=null;return n&&(i=[...a].reverse().find(o=>n.at-o.at>=300*1e3&&o.xp<=n.xp)),{recent:n&&i?(n.xp-i.xp)/(n.at-i.at)*Tn:null,hour:cd(a,Tn,1800*1e3,t),day:cd(a,24*Tn,12*Tn,t),lastSampleAt:n?.at??null,points:a}}s(Qh,"calculateXpRates"),Object.assign(u.api,{getXpHistory:sd,compactXpHistory:ud,recordXpSnapshot:Yh,calculateXpRates:Qh});var a0=new Set(["/items/chimerical_token","/items/sinister_token","/items/enchanted_token","/items/pirate_token","/items/task_token","/items/labyrinth_token"]),e1=.2,t1=12,ha=new Map,Ki=new Map,ko=null;function ze(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}s(ze,"positiveNumber");function $a(e){return Array.isArray(e)?e.map((t,a)=>[t?.hrid??t?.itemHrid??t?.guildBuffHrid??String(a),t]):Object.entries(e??{})}s($a,"entriesOfMap");function ld(){ha.clear(),Ki.clear(),ko=null}s(ld,"invalidateAssetValueCache");function Kt(e){return u.state.initData_itemDetailMap?.[e]??null}s(Kt,"getItemDetails");function dd(e){return!!(u.settings.get?.(e)??u.settings.settingsMap?.[e]?.isTrue)}s(dd,"settingEnabled");function a1(){return dd("includeCowbellsInAssets")}s(a1,"shouldIncludeCowbellsInAssets");function n0(e,t=""){if(t==="/item_locations/back"||/(?:^|_)cape(?:_refined)?$/.test(String(e).split("/").at(-1)))return!0;let a=Kt(e),n=a?.equipmentDetail;return[a?.itemLocationHrid,a?.equipmentSlotHrid,a?.slotHrid,n?.itemLocationHrid,n?.equipmentSlotHrid,n?.slotHrid,n?.equipmentTypeHrid,n?.typeHrid,n?.type].some(i=>/(?:^|[/_])back(?:$|[/_])/.test(String(i??"")))}s(n0,"isBackEquipment");function md(e){return!!Kt(e)?.equipmentDetail}s(md,"isEquipment");function i0(){if(ko)return ko;let e=new Set;for(let[,t]of $a(u.state.initData_itemDetailMap))for(let a of t?.guildCreditConversions??[])a?.creditItemHrid&&e.add(a.creditItemHrid);return ko=e,e}s(i0,"getGuildCreditHrids");function n1(e){return e==="/items/cowbell"||e==="/items/guild_token"||i0().has(e)}s(n1,"isNonTradableTokenAsset");function i1(e){let t=Number.POSITIVE_INFINITY;for(let[a,n]of $a(u.state.initData_itemDetailMap)){let i=n?.hrid??n?.itemHrid??a;if(!i||i==="/items/guild_token")continue;let o=u.api.getFairValue(i,0);if(o>0)for(let r of n?.guildCreditConversions??[]){if(r?.creditItemHrid!==e)continue;let c=ze(r.itemCount),l=ze(r.creditCount);!c||!l||(t=Math.min(t,o*c/l))}}return Number.isFinite(t)?t:0}s(i1,"getGuildCreditValue");function r1(e){let t=Kt("/items/guild_token"),a=0;for(let n of t?.guildCreditConversions??[]){let i=n?.creditItemHrid,o=ze(n?.guildTokenCount??n?.itemCount),r=ze(n?.creditCount);if(!i||!o||!r)continue;let c=en(i,0,e);c>0&&(a=Math.max(a,c*r/o))}return a}s(r1,"getGuildTokenValue");function Xi(e){let t=u.state.initData_openableLootDropMap,a=t instanceof Map?t.get(e):t?.[e];return Array.isArray(a)?a:a?.drops??a?.dropTable??a?.items??[]}s(Xi,"getDropRecords");function o1(e,t){let a=Xi(e);if(!Array.isArray(a)||!a.length)return 0;let n=0;for(let r of a){let c=r?.itemHrid??r?.hrid;if(!c)continue;let l=Array.isArray(r.dropRate)?r.dropRate[0]:r.dropRate,d=Number.isFinite(Number(l))?Math.max(0,Number(l)):1,m=Number(r.minCount??r.count??1),p=Number(r.maxCount??r.count??m);if(!Number.isFinite(m)||!Number.isFinite(p))continue;let b=d*(m+p)*.5,f=en(c,r.enhancementLevel??0,t);n+=b*f}let i=Kt(e)?.openKeyItemHrid;if(!i)return n;let o=wd(i,0,t);return o>0?Math.max(0,n-o):0}s(o1,"getOpenableValue");function fd(e){return!!Kt(e)?.scrollDetail?.personalBuffTypeHrid}s(fd,"isPersonalBuffScroll");function So(e){let t=e?.costs??e?.costItems??e?.cost;return Array.isArray(t)?t:t?.itemHrid||t?.hrid?[t]:Object.entries(t??{}).map(([a,n])=>({itemHrid:a,count:n?.count??n}))}s(So,"normalizeCostRecords");function Co(e){let t=e?.itemRewards??e?.rewards??e?.rewardItems;if(Array.isArray(t))return t;if(t?.itemHrid||t?.hrid)return[t];let a=e?.itemHrid??e?.rewardItemHrid??e?.item?.itemHrid??u.state.itemEnNameToHridMap?.[e?.name];return a?[{itemHrid:a,count:e?.outputCount??e?.itemCount??e?.rewardCount??1,enhancementLevel:e?.enhancementLevel??0}]:[]}s(Co,"normalizeRewardRecords");function Ao(){return[u.state.initData_shopItemDetailMap,u.state.initData_taskShopItemDetailMap,u.state.initData_labyrinthShopItemDetailMap].flatMap(e=>$a(e).map(([,t])=>t))}s(Ao,"getShopDetails");function s1(e={}){let t=u.settings.settingsMap??{};return{sellAtAsk:!!t.lootSellAtAsk?.isTrue,buyAtAsk:t.lootBuyAtAsk?.isTrue!==!1,fromFragments:!!t.lootKeyFromFragments?.isTrue,...e}}s(s1,"getLootConfig");function bd(e,t,a){if(e==="/items/coin")return 1;let n=ze(a?u.api.getAskPrice?.(e,t):u.api.getBidPrice?.(e,t));if(!(n>0))return 0;let i=Number(u.api.getMarketTaxRate?.(e))||0;return n*Math.max(0,1-i)}s(bd,"lootSaleValue");function r0(e,t,a){return e==="/items/coin"?1:ze(a?u.api.getAskPrice?.(e,t):u.api.getBidPrice?.(e,t))}s(r0,"lootPurchaseValue");function pd(e,t=0){return`${e}:${Number(t)||0}`}s(pd,"lootDropIdentity");function gd(e){return Xi(e).flatMap(t=>{let a=t?.itemHrid??t?.hrid;if(!a)return[];let n=Array.isArray(t.dropRate)?t.dropRate[0]:t.dropRate,i=Number.isFinite(Number(n))?Math.max(0,Number(n)):1,o=Number(t.minCount??t.count??1),r=Number(t.maxCount??t.count??o);if(!Number.isFinite(o)||!Number.isFinite(r))return[];let c=Number(t.enhancementLevel??0)||0;return[{itemHrid:a,enhancementLevel:c,dropRate:i,minCount:o,maxCount:r,expectedCount:i*(o+r)*.5}]})}s(gd,"normalizeLootDrops");function u1(e,t){if(!e)return{value:0,complete:!0,source:"none",missing:[]};if(!t.fromFragments){let o=r0(e,0,t.buyAtAsk);return{value:o,complete:o>0,source:"finished",missing:o>0?[]:[e]}}let a=Number.POSITIVE_INFINITY,n=!1,i=new Set;for(let[,o]of $a(u.state.initData_actionDetailMap)){let r=(o?.outputItems??[]).reduce((p,b)=>{let f=b?.itemHrid??b?.hrid,g=Number(b?.enhancementLevel??0)||0;return f===e&&g===0?p+ze(b.count??1):p},0);if(!r)continue;n=!0;let c=[...o?.inputItems??[]],l=o?.upgradeItemHrid;l&&!c.some(p=>(p?.itemHrid??p?.hrid)===l)&&c.unshift({itemHrid:l,count:1});let d=0,m=!0;for(let p of c){let b=p?.itemHrid??p?.hrid,f=ze(p?.count);if(!b||!f)continue;let g=r0(b,Number(p?.enhancementLevel??0)||0,t.buyAtAsk);if(!(g>0)){m=!1,i.add(b);continue}d+=f*g}m&&(a=Math.min(a,d/r))}return{value:Number.isFinite(a)?a:0,complete:Number.isFinite(a),source:"fragments",missing:Number.isFinite(a)?[]:[...i,...n?[]:[e]]}}s(u1,"getLootKeyCost");function c1(e,t){let a=new Set(e.map(o=>pd(o.itemHrid,o.enhancementLevel))),n=new Set(e.map(o=>o.itemHrid).filter(o=>a0.has(o))),i=new Map;if(!n.size)return i;for(let o of Ao()){let r=So(o),c=Co(o);if(!r.length||c.length!==1)continue;let l=c[0],d=l?.itemHrid??l?.hrid,m=Number(l?.enhancementLevel??0)||0,p=ze(l?.count??1);if(!d||!p||!a.has(pd(d,m)))continue;let b=bd(d,m,t.sellAtAsk);if(b>0)for(let f of n){let g=r.reduce((x,T)=>(T?.itemHrid??T?.hrid)===f?x+ze(T.count):x,0);if(!g)continue;let h=0,_=!0;for(let x of r){let T=x?.itemHrid??x?.hrid,A=ze(x?.count);if(!T||!A||T===f)continue;let I=r0(T,Number(x?.enhancementLevel??0)||0,t.buyAtAsk);if(!(I>0)){_=!1;break}h+=A*I}if(!_)continue;let y=Math.max(0,b*p-h),w=y/g;if(!(w>0))continue;let k={tokenItemHrid:f,tokenCount:g,rewardItemHrid:d,rewardEnhancementLevel:m,rewardCount:p,rewardUnitValue:b,totalValue:y,valuePerToken:w},C=i.get(f);(!C||w>C.valuePerToken||w===C.valuePerToken&&d.localeCompare(C.rewardItemHrid)<0)&&i.set(f,k)}}return i}s(c1,"getBestLootRedemptions");function hd(e,t,a){if(a.has(e))return null;let n=gd(e);if(!n.length)return null;a.add(e);let i=c1(n,t),o=[],r=0;for(let g of n){let h=gd(g.itemHrid).length>0,_=bd(g.itemHrid,g.enhancementLevel,t.sellAtAsk),y=i.get(g.itemHrid)??null,w=t.sellAtAsk?"aggressive":"conservative",k=0,C="missing",x=!1,T=!1,A=[],I=!1;if(h&&g.itemHrid===e)I=!0;else if(h){let j=hd(g.itemHrid,t,a);j&&Number.isFinite(j.netValue)&&(k=Math.max(0,j.netValue),C="nested",x=!0,T=!0,A=j.missing)}if(!T&&!I&&_>0&&(k=_,C="market",T=!0),!T&&!I&&y&&(k=y.valuePerToken,C="redemption",T=!0),!T&&!I&&!h){let j=Oa(g.itemHrid,g.enhancementLevel,w,new Set);j.value>0&&(k=j.value,C="derived",T=!0,A=j.missingItemHrids)}!T&&!I&&fd(g.itemHrid)&&(k=0,C="zero",T=!0,A=[]);let R=g.expectedCount*k;r+=R;let z=[...i.values()].filter(j=>j.rewardItemHrid===g.itemHrid&&j.rewardEnhancementLevel===g.enhancementLevel);o.push({...g,unitValue:k,value:R,priced:T,nested:x,nestedMissing:A,pendingSelfReference:I,valueSource:C,tokenRedemption:y,redemptions:z})}let c=Kt(e)?.openKeyItemHrid??null,l=u1(c,t),d=o.filter(g=>g.pendingSelfReference),m=d.reduce((g,h)=>g+h.expectedCount,0);if(d.length&&l.complete&&m<1){let g=Math.max(0,(r-l.value)/(1-m));for(let h of d)h.unitValue=g,h.value=h.expectedCount*g,h.priced=!0,h.nested=!0,h.valueSource="nested",h.pendingSelfReference=!1,r+=h.value}let p=new Set(o.filter(g=>g.expectedCount>0&&!g.priced).map(g=>g.itemHrid));for(let g of o)for(let h of g.nestedMissing)p.add(h);for(let g of l.missing)p.add(g);let b=p.size===0&&l.complete,f=l.complete?r-l.value:null;return a.delete(e),{itemHrid:e,keyItemHrid:c,config:t,drops:o.sort((g,h)=>h.value-g.value),redemptions:[...i.values()],grossValue:r,keyCost:l.value,keySource:l.source,keyComplete:l.complete,netValue:f,complete:b,missing:[...p]}}s(hd,"projectLootChestInternal");function l1(e,t={}){return hd(e,s1(t),new Set)}s(l1,"projectLootChest");function ii(e,t,a){return e==="/items/coin"?1:[...a].filter(i=>String(i).endsWith(":acquisition")).length>=t1?0:en(e,t,a,{forceAcquisitionValue:!0})}s(ii,"acquisitionCostValue");function _d(e,t,a){let n=Number.POSITIVE_INFINITY;for(let i of Ao()){let r=Co(i).reduce((d,m)=>{let p=m?.itemHrid??m?.hrid,b=Number(m?.enhancementLevel??0)||0;return p===e&&b===t?d+ze(m.count??1):d},0);if(!r)continue;let c=0,l=!0;for(let d of So(i)){let m=d?.itemHrid??d?.hrid,p=ze(d?.count);if(!m||!p)continue;let b=ii(m,Number(d?.enhancementLevel??0)||0,a);if(!(b>0)){l=!1;break}c+=p*b}l&&c>0&&(n=Math.min(n,c/r))}return Number.isFinite(n)?n:0}s(_d,"getShopAcquisitionValue");function yd(e,t,a){if(!String(e).endsWith("_refined"))return 0;let n=Number.POSITIVE_INFINITY;for(let[,i]of $a(u.state.initData_actionDetailMap)){let r=(Array.isArray(i?.outputItems)?i.outputItems:[]).reduce((p,b)=>(b?.itemHrid??b?.hrid)===e?p+ze(b.count??1):p,0),c=i?.upgradeItemHrid;if(!r||!c)continue;let l=i.retainAllEnhancement?t:0,d=ii(c,l,a),m=d>0;for(let p of i.inputItems??[]){let b=p?.itemHrid??p?.hrid,f=ze(p?.count);if(!b||!f)continue;let g=ii(b,Number(p?.enhancementLevel??0)||0,a);if(!(g>0)){m=!1;break}d+=f*g}m&&d>0&&(n=Math.min(n,d/r))}return Number.isFinite(n)?n:0}s(yd,"getRefinedAcquisitionValue");function wd(e,t,a){let n=Number.POSITIVE_INFINITY;for(let[,i]of $a(u.state.initData_actionDetailMap)){let r=(Array.isArray(i?.outputItems)?i.outputItems:[]).reduce((b,f)=>{let g=f?.itemHrid??f?.hrid,h=Number(f?.enhancementLevel??0)||0;return g===e&&h===t?b+ze(f.count??1):b},0);if(!r)continue;let c=0,l=!0,d=i?.inputItems??[],m=i?.upgradeItemHrid,p=d.some(b=>(b?.itemHrid??b?.hrid)===m);if(m&&!p){let b=i.retainAllEnhancement?t:0,f=ii(m,b,a);f>0?c+=f:l=!1}for(let b of d){let f=b?.itemHrid??b?.hrid,g=ze(b?.count);if(!f||!g)continue;let h=ii(f,Number(b?.enhancementLevel??0)||0,a);if(!(h>0)){l=!1;break}c+=g*h}l&&c>0&&(n=Math.min(n,c/r))}return Number.isFinite(n)?n:0}s(wd,"getCraftedAcquisitionValue");function d1(e,t,a,n={}){if(!(t>0)||!md(e)||typeof u.api.calculateEnhancementPlan!="function")return 0;let i=n0(e,n.itemLocationHrid),o=u.api.calculateEnhancementPlan({itemHrid:e,targetLevel:t,forcedProtectionItemHrid:i?"/items/mirror_of_protection":null,allowPhilosopherMirror:!i,getFairValue:s((r,c=0)=>ii(r,c,a),"getFairValue")});return o?.status==="complete"?ze(o.totalCost):0}s(d1,"getEnhancedEquipmentCost");function m1(e,t){let a=0;for(let n of Ao()){let i=So(n),o=i.find(d=>(d?.itemHrid??d?.hrid)===e),r=ze(o?.count);if(!r)continue;let c=0;for(let d of Co(n)){let m=d?.itemHrid??d?.hrid;m&&(c+=ze(d.count??1)*en(m,d.enhancementLevel??0,t))}let l=0;for(let d of i){let m=d?.itemHrid??d?.hrid;!m||m===e||(l+=ze(d.count)*en(m,0,t))}a=Math.max(a,Math.max(0,c-l)/r)}return a}s(m1,"getShopCurrencyValue");function en(e,t,a,n={}){if(!e)return 0;let i=Number(t)||0,o=u.api.getFairValue(e,i),r=n0(e,n.itemLocationHrid),c=i>0&&md(e),l=r&&String(e).endsWith("_refined"),d=i===0&&r&&!l&&n.forceAcquisitionValue!==!0&&dd("valueBackEquipmentWithProtectionMirror"),m=n.forceAcquisitionValue===!0||l,b=`${e}:${i}:${c?r?"enhancement-protected-mirror":"enhancement-protected":d?"protection-mirror-value":m?"acquisition":"market"}`;if(ha.has(b))return ha.get(b);if(a.has(b))return 0;if(d){a.add(b);let _=en("/items/mirror_of_protection",0,a);if(a.delete(b),_>0)return ha.set(b,_),_}if(c){let _=d1(e,i,a,n);if(_>0){let y=o>0?Math.abs(o-_)/_:Number.POSITIVE_INFINITY,w=o>0&&y<=e1?o:_;return ha.set(b,w),w}if(o>0)return ha.set(b,o),o}if(!m&&o>0)return ha.set(b,o),o;if(o<=0&&fd(e))return ha.set(b,0),0;a.add(b);let f=0;if(e==="/items/cowbell")f=en("/items/bag_of_10_cowbells",0,a)/10;else if(i0().has(e))f=i1(e);else if(e==="/items/guild_token")f=r1(a);else if(a0.has(e))f=m1(e,a);else if(m){let _=[o,_d(e,i,a),wd(e,i,a),yd(e,i,a)].filter(y=>y>0);f=_.length?Math.min(..._):0}else f=Math.max(r?0:_d(e,i,a),yd(e,i,a),o1(e,a));if(a.delete(b),!!Kt(e)?.openKeyItemHrid&&Xi(e).length>0&&!(f>0))return ha.set(b,0),0;f>0||(f=o),f>0||(f=ze(Kt(e)?.sellPrice));let h=Number.isFinite(f)&&f>0?f:0;return ha.set(b,h),h}s(en,"getAssetValueInternal");function o0(e,t=0,a={}){return en(e,t,new Set,a)}s(o0,"getAssetValue");function f1(e,t,a){if(a==="conservative")return ze(u.api.getNetSellPrice?.(e,t));if(a==="aggressive")return ze(u.api.getNetSellPriceAtAsk?.(e,t));let n=ze(u.api.getFairValue?.(e,t));if(!n)return 0;let i=Number(u.api.getMarketTaxRate?.(e))||0;return n*Math.max(0,1-i)}s(f1,"directLiquidationValue");function It(e,t,a=[]){let n=ze(e),i=[...new Set(a.filter(Boolean))];return{value:n,complete:n>0&&i.length===0,source:n>0?t:"missing",missingItemHrids:i}}s(It,"liquidationResult");function Mo(e){return e.flatMap(t=>t?.missingItemHrids??[])}s(Mo,"mergeLiquidationMissing");function b1(e,t,a,n){let i=Number.POSITIVE_INFINITY,o=[];for(let[,r]of $a(u.state.initData_actionDetailMap)){let l=(Array.isArray(r?.outputItems)?r.outputItems:[]).reduce((g,h)=>{let _=h?.itemHrid??h?.hrid,y=Number(h?.enhancementLevel??0)||0;return _===e&&y===t?g+ze(h.count??1):g},0);if(!l)continue;let d=[...r?.inputItems??[]],m=r?.upgradeItemHrid;m&&!d.some(g=>(g?.itemHrid??g?.hrid)===m)&&d.unshift({itemHrid:m,enhancementLevel:r.retainAllEnhancement?t:0,count:1});let p=0,b=!0,f=[];for(let g of d){let h=g?.itemHrid??g?.hrid,_=ze(g?.count);if(!h||!_)continue;let y=h==="/items/coin"?It(1,"coin"):Oa(h,Number(g?.enhancementLevel??0)||0,a,n);if(f.push(y),!(y.value>0)){b=!1;continue}p+=_*y.value}if(b&&p>0){let g=p/l;g<i&&(i=g)}else o.push(...Mo(f))}return Number.isFinite(i)?It(i,"crafting"):It(0,"missing",[...o,e])}s(b1,"getCraftedLiquidationValue");function p1(e,t,a){let n=Number.POSITIVE_INFINITY,i=null;for(let[o,r]of $a(u.state.initData_itemDetailMap)){let c=r?.hrid??r?.itemHrid??o;if(!(!c||c==="/items/guild_token"))for(let l of r?.guildCreditConversions??[]){if(l?.creditItemHrid!==e)continue;let d=ze(l.itemCount),m=ze(l.creditCount);if(!d||!m)continue;let p=Oa(c,0,t,a);if(p.value>0){let b=p.value*d/m;b<n&&(n=b,i=p)}}}return It(Number.isFinite(n)?n:0,"conversion",i?.missingItemHrids??[])}s(p1,"getGuildCreditLiquidationValue");function g1(e,t){let a=Kt("/items/guild_token"),n=0,i=null;for(let o of a?.guildCreditConversions??[]){let r=o?.creditItemHrid,c=ze(o?.guildTokenCount??o?.itemCount),l=ze(o?.creditCount);if(!r||!c||!l)continue;let d=Oa(r,0,e,t);if(d.value>0){let m=d.value*l/c;m>n&&(n=m,i=d)}}return It(n,"conversion",i?.missingItemHrids??[])}s(g1,"getGuildTokenLiquidationValue");function h1(e,t,a){let n=0,i=[];for(let o of Ao()){let r=So(o),c=r.find(f=>(f?.itemHrid??f?.hrid)===e),l=ze(c?.count);if(!l)continue;let d=[],m=0;for(let f of Co(o)){let g=f?.itemHrid??f?.hrid;if(!g)continue;let h=Oa(g,f.enhancementLevel??0,t,a);d.push(h),m+=ze(f.count??1)*h.value}let p=0;for(let f of r){let g=f?.itemHrid??f?.hrid;if(!g||g===e)continue;let h=Oa(g,0,t,a);d.push(h),p+=ze(f.count)*h.value}let b=Math.max(0,m-p)/l;b>n&&(n=b,i=d)}return It(n,"conversion",Mo(i))}s(h1,"getShopCurrencyLiquidationValue");function _1(e,t,a){let n=Xi(e);if(!Array.isArray(n)||!n.length)return It(0,"missing",[e]);let i=0,o=[];for(let c of n){let l=c?.itemHrid??c?.hrid;if(!l)continue;let d=Array.isArray(c.dropRate)?c.dropRate[0]:c.dropRate,m=Number.isFinite(Number(d))?Math.max(0,Number(d)):1,p=Number(c.minCount??c.count??1),b=Number(c.maxCount??c.count??p);if(!Number.isFinite(p)||!Number.isFinite(b))continue;let f=Oa(l,c.enhancementLevel??0,t,a);o.push(f),i+=m*(p+b)*.5*f.value}let r=Kt(e)?.openKeyItemHrid;if(r){let c=b1(r,0,t,a);if(o.push(c),!(c.value>0))return It(0,"missing",[...Mo(o),r]);i=Math.max(0,i-c.value)}return!(i>0)&&o.every(c=>c.complete)?{value:0,complete:!0,source:"openable",missingItemHrids:[]}:It(i,"openable",Mo(o))}s(_1,"getOpenableLiquidationValue");function Oa(e,t,a,n){if(!e)return It(0,"missing");let i=["conservative","fair","aggressive"].includes(a)?a:"fair",o=Number(t)||0,r=`${i}:${e}:${o}`;if(Ki.has(r))return Ki.get(r);if(n.has(r))return It(0,"missing",[e]);let c=f1(e,o,i);if(c>0){let m=It(c,"market");return Ki.set(r,m),m}n.add(r);let l;if(e==="/items/cowbell"){let m=Oa("/items/bag_of_10_cowbells",0,i,n);l=It(m.value/10,"conversion",m.missingItemHrids)}else i0().has(e)?l=p1(e,i,n):e==="/items/guild_token"?l=g1(i,n):a0.has(e)?l=h1(e,i,n):l=_1(e,i,n);n.delete(r);let d=!!Kt(e)?.openKeyItemHrid&&Xi(e).length>0;if(!(l.value>0)&&l.source==="missing"&&!d){let m=ze(Kt(e)?.sellPrice);l=m?It(m,"sell-price"):It(0,"missing",[...l.missingItemHrids,e])}return Ki.set(r,l),l}s(Oa,"getAssetLiquidationValueInternal");function y1(e,t=0,a="fair"){return Oa(e,t,a,new Set)}s(y1,"getAssetLiquidationValue");function w1(e){let t=u.state.guildBuffLevels,a=Array.isArray(t)?t.find(i=>(i?.guildBuffHrid??i?.hrid)===e):t?.[e],n=Number(typeof a=="object"?a?.level??a?.currentLevel:a);return Number.isSafeInteger(n)&&n>0?n:0}s(w1,"getGuildBuffLevel");function v1(){if(!u.state.guildDataLoaded)return null;let e=$a(u.state.initData_guildBuffDetailMap);if(!e.length)return null;let t=0;for(let[a,n]of e){let i=n?.guildBuffHrid??n?.hrid??a,o=n?.levelCosts;if(!i||!o)continue;let r=w1(i);for(let c=1;c<=r;c+=1){let l=o[c]??o[String(c)];if(!l)return null;let d=ze(l.guildTokenCost);if(d){let m=o0("/items/guild_token",0);if(!(m>0))return null;t+=d*m}for(let m of l.creditCosts??[]){let p=ze(m?.count);if(!p)continue;let b=o0(m.itemHrid,0);if(!(b>0))return null;t+=p*b}}}return t}s(v1,"getGuildShrineValue"),Object.assign(u.api,{getAssetValue:o0,getAssetLiquidationValue:y1,getGuildShrineValue:v1,projectLootChest:l1,isBackEquipment:n0,isNonTradableTokenAsset:n1,invalidateAssetValueCache:ld,shouldIncludeCowbellsInAssets:a1});function vd(){ld(),u.api.scheduleNetworthRefresh?.(),u.settings.settingsMap.assetHistory.isTrue&&u.api.scheduleAssetSnapshotRefresh?.(0)}s(vd,"refreshConfiguredAssetValues"),u.settings.onChange?.("includeCowbellsInAssets",vd),u.settings.onChange?.("valueBackEquipmentWithProtectionMirror",vd);function x1(e){u.state.initData_actionDetailMap=e.actionDetailMap,u.state.initData_levelExperienceTable=e.levelExperienceTable,u.state.initData_enhancementLevelSuccessRateTable=e.enhancementLevelSuccessRateTable,u.state.initData_enhancementLevelTotalBonusMultiplierTable=e.enhancementLevelTotalBonusMultiplierTable,u.state.initData_itemDetailMap=e.itemDetailMap,u.state.initData_itemLocationDetailMap=e.itemLocationDetailMap,u.state.initData_houseRoomDetailMap=e.houseRoomDetailMap,u.state.initData_actionCategoryDetailMap=e.actionCategoryDetailMap,u.state.initData_abilityDetailMap=e.abilityDetailMap,u.state.initData_shopItemDetailMap=e.shopItemDetailMap,u.state.initData_taskShopItemDetailMap=e.taskShopItemDetailMap,u.state.initData_labyrinthShopItemDetailMap=e.labyrinthShopItemDetailMap,u.state.initData_openableLootDropMap=e.openableLootDropMap,u.state.initData_guildBuffDetailMap=e.guildBuffDetailMap,u.api.invalidateAssetValueCache?.();for(let[t,a]of Object.entries(u.state.initData_itemDetailMap))u.state.itemEnNameToHridMap[a.name]=t}s(x1,"applyClientData");var k1=["characterGuildBuffMap","characterGuildBuffDict","characterGuildBuffs","characterGuildBuffLevelMap","characterGuildBuffLevelDict"],S1=["guildBuffLevelMap","guildBuffLevelDict","guildBuffLevels","guildBuffMap","guildBuffDict"],C1=["mooPassActionTypeBuffsMap","communityActionTypeBuffsMap","houseActionTypeBuffsMap","guildActionTypeBuffsMap","achievementActionTypeBuffsMap","consumableActionTypeBuffsMap","equipmentActionTypeBuffsMap","personalActionTypeBuffsMap"];function To(e,t=!1){let a=t?{}:{...u.state.actionTypeBuffSources??{}},n=!1;for(let i of C1)Object.hasOwn(e,i)&&(a[i]=e[i]??{},n=!0);t?u.state.actionTypeBuffSources=n?a:null:n&&(u.state.actionTypeBuffSources=a),Object.hasOwn(e,"equipmentTaskActionBuffs")?u.state.equipmentTaskActionBuffs=e.equipmentTaskActionBuffs??[]:t&&(u.state.equipmentTaskActionBuffs=[])}s(To,"applyActionTypeBuffs");function A1(e){if(!e||typeof e!="object")return{};let t=Array.isArray(e)?e.map((a,n)=>[a?.guildBuffHrid??a?.hrid??String(n),a]):Object.entries(e);return Object.fromEntries(t.filter(([a])=>a))}s(A1,"normalizeGuildBuffLevels");function s0(e,t=!1){let a=[],n=[],i=[{value:e,depth:0}],o=new Set,r=0;for(;i.length&&r<400;){let{value:l,depth:d}=i.pop();if(!(!l||typeof l!="object"||o.has(l)||d>6)){o.add(l),r+=1;for(let m of k1)l[m]&&typeof l[m]=="object"&&a.push(l[m]);for(let m of S1)l[m]&&typeof l[m]=="object"&&n.push(l[m]);for(let m of Object.values(l))m&&typeof m=="object"&&i.push({value:m,depth:d+1})}}let c=[...n,...a];c.length?(u.state.guildBuffLevels=c.reduce((l,d)=>({...l,...A1(d)}),u.state.guildBuffLevels??{}),u.state.guildDataLoaded=!0):t&&(u.state.guildDataLoaded=!0)}s(s0,"applyGuildData");function M1(e){u.state.currentCharacterId=e.character?.id??e.character?.characterID??e.characterID??e.characterSkills?.[0]?.characterID??"",u.state.currentCharacterName=e.character?.name??e.characterName??e.sharableCharacter?.name??e.combatUnit?.name??"",u.state.initData_characterSkills=e.characterSkills,u.state.initData_characterItems=e.characterItems??[],u.state.initData_characterHouseRoomMap=e.characterHouseRoomMap,u.state.initData_actionTypeDrinkSlotsMap=e.actionTypeDrinkSlotsMap,u.state.initData_characterAbilities=e.characterAbilities,u.state.initData_myMarketListings=e.myMarketListings??[],u.state.initData_combatAbilities=e.combatUnit?.combatAbilities??[],u.state.currentActionsHridList=[...e.characterActions??[]],u.state.characterQuests=(e.characterQuests??[]).map((t,a)=>({...t,_mwitoolsOriginalIndex:a})),To(e,!0),u.state.currentEquipmentMap={};for(let t of e.characterItems??[])t.itemLocationHrid!=="/item_locations/inventory"&&(u.state.currentEquipmentMap[t.itemLocationHrid]=t);s0(e),Sd(e),l0(e)}s(M1,"applyCharacterData");function u0(e){let t=e.endCharacterSkills??e.characterSkills??[];if(!Array.isArray(t)||!t.length)return;let a=[...u.state.initData_characterSkills??[]];for(let n of t){let i=a.findIndex(o=>o.skillHrid===n.skillHrid);i>=0?a[i]={...a[i],...n}:a.push(n)}u.state.initData_characterSkills=a}s(u0,"applySkillsUpdated");function xd(e){return e?.id??e?.characterQuestID??e?.characterQuestId}s(xd,"getQuestId");function c0(e){let t=e.endCharacterQuests??e.characterQuests??[];if(!Array.isArray(t))return;let a=[...u.state.characterQuests];for(let n of t){let i=xd(n),o=a.findIndex(c=>xd(c)===i);if(n.isClaimed||n.claimed||n.isDeleted||n.deleted||String(n.status??"").includes("claimed")){o>=0&&a.splice(o,1);continue}o>=0?a[o]={...a[o],...n,_mwitoolsOriginalIndex:a[o]._mwitoolsOriginalIndex}:a.push({...n,_mwitoolsOriginalIndex:a.length})}u.state.characterQuests=a}s(c0,"applyQuestsUpdated");function kd(e,t){for(let a of t)if(Array.isArray(e?.[a]))return e[a];for(let a of Object.values(e??{}))if(!(!a||typeof a!="object"||Array.isArray(a))){for(let n of t)if(Array.isArray(a[n]))return a[n]}return[]}s(kd,"findArray");function Sd(e){let t=e.guild??e.endGuild??e.guildData;t&&(u.state.guild={...u.state.guild??{},...t}),u.state.guildStateUpdatedAt=Date.now()}s(Sd,"applyGuildSnapshot");function l0(e){let t=kd(e,["guildCharacters","endGuildCharacters","characters","members"]),a=e.guildCharacterMap??e.endGuildCharacterMap??null,n=e.guildSharableCharacterMap??e.endGuildSharableCharacterMap??{};!t.length&&a&&typeof a=="object"&&(t=Object.entries(a).map(([i,o])=>({...n[i],...o,characterID:o.characterID??Number(i)}))),t.length&&(u.state.guildCharacters=t),u.state.guildStateUpdatedAt=Date.now()}s(l0,"applyGuildCharacters");function Cd(e){if(!String(e.category??e.leaderboardCategory??e.typeHrid??"").toLowerCase().includes("guild"))return;let a=kd(e,["leaderboard","leaderboardEntries","entries","rankings","guilds"]);a.length&&(u.state.guildLeaderboard=a)}s(Cd,"applyLeaderboard");function T1(e){for(let t of e.endCharacterActions)t.isDone===!1?u.state.currentActionsHridList.push(t):u.state.currentActionsHridList=u.state.currentActionsHridList.filter(({id:a})=>a!==t.id)}s(T1,"applyActionsUpdated");function E1(e){let t=e.endCharacterAction;if(!t||t.isDone===!0)return;let a=u.state.currentActionsHridList.find(({id:i})=>String(i)===String(t.id));if(!a)return;let n=Number(t.currentCount??t.completedCount??t.progressCount);Number.isFinite(n)&&(a.currentCount=n)}s(E1,"applyActionCompleted");function Ad(e){if(e.endCharacterItems)for(let t of e.endCharacterItems){let a=u.state.initData_characterItems?.findIndex(n=>t.id!=null&&n.id===t.id||t.id==null&&n.itemHrid===t.itemHrid&&n.itemLocationHrid===t.itemLocationHrid&&n.enhancementLevel===t.enhancementLevel);a>=0?t.count===0?u.state.initData_characterItems.splice(a,1):u.state.initData_characterItems[a]=t:t.count>0&&u.state.initData_characterItems?.push(t),t.itemLocationHrid!=="/item_locations/inventory"&&(u.state.currentEquipmentMap[t.itemLocationHrid]=t.count===0?null:t)}}s(Ad,"applyItemsUpdated");function Md(e){let t=e.endCharacterAbilities??e.characterAbilities??e.abilities;if(!Array.isArray(t))return;let a=[...u.state.initData_characterAbilities??[]];for(let n of t){let i=n.id??n.characterAbilityID??n.abilityHrid,o=a.findIndex(r=>(r.id??r.characterAbilityID??r.abilityHrid)===i);n.isDeleted||n.deleted?o>=0&&a.splice(o,1):o>=0?a[o]={...a[o],...n}:a.push(n)}u.state.initData_characterAbilities=a}s(Md,"applyCharacterAbilitiesUpdated");function I1(e){switch(e.type){case"init_client_data":x1(e);break;case"init_character_data":M1(e);break;case"actions_updated":T1(e);break;case"action_completed":E1(e),Ad(e),u0(e),c0(e),Md(e);break;case"items_updated":Ad(e);break;case"skills_updated":u0(e);break;case"quests_updated":c0(e);break;case"market_item_values_updated":u.api.applyMarketItemValues(e);break;case"market_item_order_books_updated":u.api.applyMarketOrderBooks(e);break;case"market_listings_updated":u.api.applyMarketListings(e);break;case"guild_updated":s0(e,!0),Sd(e);break;case"house_rooms_updated":u.state.initData_characterHouseRoomMap=e.characterHouseRoomMap??u.state.initData_characterHouseRoomMap,To(e);break;case"abilities_updated":case"character_abilities_updated":Md(e);break;case"achievement_buffs_updated":case"moo_pass_buffs_updated":case"community_buffs_updated":case"consumable_buffs_updated":case"equipment_buffs_updated":case"personal_buffs_updated":case"guild_buffs_updated":To(e);break;case"guild_characters_updated":l0(e);break;case"leaderboard_updated":Cd(e);break}}s(I1,"applyGameMessage"),Object.assign(u.api,{applyGameMessage:I1,applyGuildData:s0,applyQuestsUpdated:c0,applyGuildCharacters:l0,applyLeaderboard:Cd,applyActionTypeBuffs:To,applySkillsUpdated:u0});var N1=["api.milkywayidle.com/ws","api-test.milkywayidle.com/ws","api.milkywayidlecn.com/ws","api-test.milkywayidlecn.com/ws"];function H1(){let e=Object.getOwnPropertyDescriptor(MessageEvent.prototype,"data"),t=e.get;e.get=s(function(){let n=this.currentTarget;if(!n||typeof n.send!="function"&&typeof n.addEventListener!="function"||!N1.some(o=>String(n.url??"").includes(o)))return t.call(this);let i=t.call(this);return Object.defineProperty(this,"data",{value:i}),Td(i)},"hookedGet"),Object.defineProperty(MessageEvent.prototype,"data",e)}s(H1,"hookWS");function Td(e){let t;try{t=JSON.parse(e)}catch{return u.dispatchMessage({type:"__non_json_message__"},e),e}return t?.type&&(u.api.applyGameMessage(t),t.type==="init_character_data"&&u.features.handleCharacterData(t),u.dispatchMessage(t,e)),e}s(Td,"handleMessage"),Object.assign(u.api,{hookWS:H1,handleMessage:Td});var Ed=1e6;function Eo(e){return!!(e&&Object.keys(e).length)}s(Eo,"hasStats");function Id(e){let t=u.state.initData_itemLocationDetailMap?.[e.itemLocationHrid],a=u.state.initData_itemDetailMap?.[e.itemHrid]?.equipmentDetail,n=t?.isTool===!0;return{isTool:n,isCombat:!n&&(Eo(a?.combatStats)||Eo(a?.combatEnhancementBonuses)),isSkilling:n||Eo(a?.noncombatStats)||Eo(a?.noncombatEnhancementBonuses)}}s(Id,"classifyEquippedItem");function Nd(e){return!!u.state.initData_houseRoomDetailMap?.[e.houseRoomHrid]?.usableInActionTypeMap?.["/action_types/combat"]}s(Nd,"isCombatHouse");function Hd(e){let t=u.state.initData_houseRoomDetailMap?.[e.houseRoomHrid]?.usableInActionTypeMap;return Object.entries(t??{}).some(([a,n])=>a!=="/action_types/combat"&&!!n)}s(Hd,"isSkillingHouse");function d0(){return{combatEquipment:0,skillingTools:0,skillingEquipment:0}}s(d0,"createEmptyGearScores");function m0(e){let t=d0();for(let a of e??[]){if(a.itemLocationHrid==="/item_locations/inventory")continue;let n=Id(a);if(!n.isTool&&!n.isCombat&&!n.isSkilling)continue;let i=u.api.getAssetValue?u.api.getAssetValue(a.itemHrid,a.enhancementLevel,{itemLocationHrid:a.itemLocationHrid}):u.api.getFairValue(a.itemHrid,a.enhancementLevel);if(!(i>0))continue;let o=Number(a.count??1)*i;n.isCombat&&(t.combatEquipment+=o),n.isTool?t.skillingTools+=o:n.isSkilling&&(t.skillingEquipment+=o)}for(let a of Object.keys(t))t[a]/=Ed;return t}s(m0,"calculateGearScores");async function f0(e){let t=0,a=0,n=0;for(let i of Object.values(e??{})){let o=await Dd(i)/Ed;n+=o,Nd(i)&&(t+=o),Hd(i)&&(a+=o)}return{combat:t,skilling:a,all:n}}s(f0,"calculateHouseScores");function b0({houseScores:e,abilityScore:t,allAbilityScore:a,gearScores:n,equipmentHidden:i=!1}){let o={house:e.combat,abilities:t,equipment:n.combatEquipment};o.total=o.house+o.abilities+o.equipment;let r={house:e.skilling,tools:n.skillingTools,equipment:n.skillingEquipment,available:!i};return r.total=r.house+r.tools+r.equipment,{battle:o,skilling:r,assets:{allHouses:e.all,allAbilities:a},equipmentHidden:i}}s(b0,"createScoreResult");async function D1(){let e=await f0(u.state.initData_characterHouseRoomMap),t=m0(u.state.initData_characterItems),a=0;try{a=await p0()}catch(i){console.error(u.config.isZH?"[MWITools] 计算已装备技能评分失败。":"[MWITools] Failed to calculate equipped ability score.",i)}let n=0;try{n=await p0(!0)}catch(i){console.error(u.config.isZH?"[MWITools] 计算全部技能评分失败。":"[MWITools] Failed to calculate total ability score.",i)}return b0({houseScores:e,abilityScore:a,allAbilityScore:n,gearScores:t})}s(D1,"getSelfBuildScores");async function Dd(e){if(!await u.api.ensureMarketValueSource())return 0;let t=u.state.initData_houseRoomDetailMap?.[e.houseRoomHrid];if(!t)try{t=JSON.parse(GM_getValue("init_client_data","{}")).houseRoomDetailMap?.[e.houseRoomHrid]}catch{return 0}let a=t?.upgradeCostsMap;if(!a)return 0;let n=e.level,i=0;for(let o=1;o<=n;o++)for(let r of a[o]??[]){let c=u.api.getFairValue(r.itemHrid,0);c>0&&(i+=r.count*c)}return i}s(Dd,"getHouseFullBuildPrice");function P1(e,t=.5){let a=e[0].a,n=e[0].b;return a>0&&n<0&&(n=a),n>0&&a<0&&(a=n),a*t+n*(1-t)}s(P1,"getWeightedMarketPrice");async function p0(e=!1){let t=u.state.initData_levelExperienceTable,a=e?u.state.initData_characterAbilities:u.state.initData_combatAbilities;if(!t||!Array.isArray(a)||!await u.api.ensureMarketValueSource())return 0;let n=["poke","scratch","smack","quick_shot","water_strike","fireball","entangle","minor_heal"],i=s((r,c)=>{let l=t[r];if(!Number.isFinite(l))return 0;let d=l/c;return d+=1,d.toFixed(1)},"getNeedBooksToLevel"),o=0;return a.forEach(r=>{let c=0;n.some(m=>r.abilityHrid.includes(m))?c=i(r.level,50):c=i(r.level,500);let l=r.abilityHrid.replace("/abilities/","/items/"),d=u.api.getFairValue(l,0);d>0&&(o+=c*d)}),o/=1e6}s(p0,"calculateAbilityScore");function g0(){let e=document.querySelector("div.SharableProfile_overviewTab__W4dCV");return e||new Promise(t=>{setTimeout(()=>t(g0()),500)})}s(g0,"getInfoPanel");async function L1(e){let t=await Pd(e),a=t.equipmentHidden?u.config.isZH?"(装备隐藏)":" (Equipment hidden)":"",n=t.equipmentHidden?"-":null,i=await g0();i.style.height="auto",i.querySelector("#script_profile_gear_scores")?.remove(),i.insertAdjacentHTML("beforeend",`<section id="script_profile_gear_scores" style="display: block !important; width: fit-content !important; max-width: 100% !important; text-align: left !important; color: ${u.config.SCRIPT_COLOR_MAIN} !important; font-size: 0.8125rem !important; margin-top: 8px !important; border-left: 2px solid ${u.config.SCRIPT_COLOR_MAIN} !important; padding-left: 8px !important;">
            <p id="toggleScores_profile" style="display: block !important; margin: 4px 0 !important; padding: 4px 0 !important; cursor: pointer !important; font-weight: 650 !important; text-align: left !important; width: fit-content !important; float: none !important;">
                    <span class="mwi-profile-toggle-icon" style="display: inline !important; font-weight: bold !important; margin-right: 4px !important; float: none !important;">+</span>
                    <span style="display: inline !important; float: none !important;">${u.config.isZH?"战斗着装评分:":"Combat Gear Score: "}</span>
                    <span style="display: inline !important; font-weight: 700 !important; color: #ffffff !important; margin-left: 2px !important; float: none !important;">${u.api.formatScore(t.battle.total)}${a}</span>
            </p>
            <section id="buildScores_profile" style="display: none; width: fit-content !important; text-align: left !important; margin-left: 18px !important; margin-top: 3px !important; margin-bottom: 6px !important; font-size: 0.75rem !important;">
                    <p style="display: block !important; margin: 2px 0 !important; padding: 3px 0 !important; text-align: left !important; width: fit-content !important; float: none !important;">
                            <span style="display: inline !important; color: var(--color-text-secondary, #9da6b2) !important; float: none !important;">${u.config.isZH?"房屋:":"House: "}</span>
                            <span style="display: inline !important; font-weight: 600 !important; color: #f3f5f7 !important; margin-left: 2px !important; float: none !important;">${u.api.formatScore(t.battle.house)}</span>
                    </p>
                    <p style="display: block !important; margin: 2px 0 !important; padding: 3px 0 !important; text-align: left !important; width: fit-content !important; float: none !important;">
                            <span style="display: inline !important; color: var(--color-text-secondary, #9da6b2) !important; float: none !important;">${u.config.isZH?"技能:":"Abilities: "}</span>
                            <span style="display: inline !important; font-weight: 600 !important; color: #f3f5f7 !important; margin-left: 2px !important; float: none !important;">${n??u.api.formatScore(t.battle.abilities)}</span>
                    </p>
                    <p style="display: block !important; margin: 2px 0 !important; padding: 3px 0 !important; text-align: left !important; width: fit-content !important; float: none !important;">
                            <span style="display: inline !important; color: var(--color-text-secondary, #9da6b2) !important; float: none !important;">${u.config.isZH?"装备:":"Equipment: "}</span>
                            <span style="display: inline !important; font-weight: 600 !important; color: #f3f5f7 !important; margin-left: 2px !important; float: none !important;">${n??u.api.formatScore(t.battle.equipment)}</span>
                    </p>
            </section>
            <p id="toggleSkillingScores_profile" style="display: block !important; margin: 4px 0 !important; padding: 4px 0 !important; cursor: pointer !important; font-weight: 650 !important; text-align: left !important; width: fit-content !important; float: none !important;">
                    <span class="mwi-profile-toggle-icon" style="display: inline !important; font-weight: bold !important; margin-right: 4px !important; float: none !important;">+</span>
                    <span style="display: inline !important; float: none !important;">${u.config.isZH?"生活着装评分:":"Skilling Gear Score: "}</span>
                    <span style="display: inline !important; font-weight: 700 !important; color: #ffffff !important; margin-left: 2px !important; float: none !important;">${n??u.api.formatScore(t.skilling.total)}${a}</span>
            </p>
            <section id="skillingScores_profile" style="display: none; width: fit-content !important; text-align: left !important; margin-left: 18px !important; margin-top: 3px !important; margin-bottom: 6px !important; font-size: 0.75rem !important;">
                    <p style="display: block !important; margin: 2px 0 !important; padding: 3px 0 !important; text-align: left !important; width: fit-content !important; float: none !important;">
                            <span style="display: inline !important; color: var(--color-text-secondary, #9da6b2) !important; float: none !important;">${u.config.isZH?"房屋:":"House: "}</span>
                            <span style="display: inline !important; font-weight: 600 !important; color: #f3f5f7 !important; margin-left: 2px !important; float: none !important;">${u.api.formatScore(t.skilling.house)}</span>
                    </p>
                    <p style="display: block !important; margin: 2px 0 !important; padding: 3px 0 !important; text-align: left !important; width: fit-content !important; float: none !important;">
                            <span style="display: inline !important; color: var(--color-text-secondary, #9da6b2) !important; float: none !important;">${u.config.isZH?"工具:":"Tools: "}</span>
                            <span style="display: inline !important; font-weight: 600 !important; color: #f3f5f7 !important; margin-left: 2px !important; float: none !important;">${n??u.api.formatScore(t.skilling.tools)}</span>
                    </p>
                    <p style="display: block !important; margin: 2px 0 !important; padding: 3px 0 !important; text-align: left !important; width: fit-content !important; float: none !important;">
                            <span style="display: inline !important; color: var(--color-text-secondary, #9da6b2) !important; float: none !important;">${u.config.isZH?"装备:":"Equipment: "}</span>
                            <span style="display: inline !important; font-weight: 600 !important; color: #f3f5f7 !important; margin-left: 2px !important; float: none !important;">${n??u.api.formatScore(t.skilling.equipment)}</span>
                    </p>
            </section>
        </section>`);let o=s((r,c)=>{let l=document.getElementById(r),d=document.getElementById(c);if(!l||!d)return;let m=l.querySelector(".mwi-profile-toggle-icon");l.addEventListener("click",()=>{let p=d.style.display==="none";d.style.display=p?"block":"none",m&&(m.textContent=p?"↓":"+")})},"bindToggle");o("toggleScores_profile","buildScores_profile"),o("toggleSkillingScores_profile","skillingScores_profile")}s(L1,"showBuildScoreOnProfile");async function Pd(e){let t=e.profile,a=await f0(t.characterHouseRoomMap),n=t.hideWearableItems===!0,i=d0();if(n)return b0({houseScores:a,abilityScore:0,allAbilityScore:0,gearScores:i,equipmentHidden:!0});let o=0;try{o=await Ld(e)}catch(c){console.error(u.config.isZH?"[MWITools] 计算资料技能评分失败。":"[MWITools] Failed to calculate profile ability score.",c)}let r=i;try{r=await $d(e)}catch(c){console.error(u.config.isZH?"[MWITools] 计算资料装备评分失败。":"[MWITools] Failed to calculate profile equipment score.",c)}return b0({houseScores:a,abilityScore:o,allAbilityScore:0,gearScores:r})}s(Pd,"getBuildScoreByProfile");async function Ld(e){if(!await u.api.ensureMarketValueSource())return 0;let t=e.profile,a=["poke","scratch","smack","quick_shot","water_strike","fireball","entangle","minor_heal"],n=s((o,r)=>{let l=u.state.initData_levelExperienceTable[o]/r;return l+=1,l.toFixed(1)},"getNeedBooksToLevel"),i=0;return t.equippedAbilities.forEach(o=>{let r=0;a.some(d=>o.abilityHrid.includes(d))?r=n(o.level,50):r=n(o.level,500);let c=o.abilityHrid.replace("/abilities/","/items/"),l=u.api.getFairValue(c,0);l>0&&(i+=r*l)}),i/=1e6}s(Ld,"calculateSkill");async function $d(e){return await u.api.ensureMarketValueSource()?m0(Object.values(e.profile.wearableItemMap??{})):d0()}s($d,"calculateEquipment"),Object.assign(u.api,{getSelfBuildScores:D1,getHouseFullBuildPrice:Dd,getWeightedMarketPrice:P1,classifyEquippedItem:Id,isCombatHouse:Nd,isSkillingHouse:Hd,calculateGearScores:m0,calculateHouseScores:f0,calculateAbilityScore:p0,getInfoPanel:g0,showBuildScoreOnProfile:L1,getBuildScoreByProfile:Pd,calculateSkill:Ld,calculateEquipment:$d});var h0="mwitools-duplicate-script-warning",Od=globalThis.unsafeWindow??globalThis.window??globalThis,$1=!!Od.__MWI_DPS,qd=!1,Rd=!1;function Bd(e={}){let t=e.pageWindow??Od,a=e.documentRef??globalThis.document,n=[];return(t.MWIMM||a?.getElementById("mwi-mm2-host"))&&n.push("MWI 市场伴侣 / MWI Market Mate"),(e.dpsWasPresent??$1)&&n.push("银河奶牛 DPS 统计 / Galaxy Cow DPS"),(t.kbd_calculateTotalNetworth||t.__everyday_profit_plus_interval__||a?.querySelector(".deltaNetworthDiv,#deltaNetworthChartModal,#refreshNetworthIcon,.epPrecisionHintActions,#everyday-profit-chartjs,#everyday-profit-zoom,#everyday-profit-crosshair"))&&n.push("Everyday Profit Plus Fixed"),n}s(Bd,"detectDuplicateScripts");function zd(e,{documentRef:t=globalThis.document,isZH:a=u.config.isZH}={}){if(!e.length||!t?.body)return null;let n=t.getElementById(h0);if(!n){n=t.createElement("aside"),n.id=h0,n.setAttribute("role","status"),n.setAttribute("aria-live","polite"),n.style.cssText="position:fixed;z-index:2147483646;top:14px;right:14px;width:min(380px,calc(100vw - 28px));box-sizing:border-box;padding:12px 38px 12px 14px;border:1px solid rgba(245,158,11,.6);border-radius:9px;background:rgba(24,27,35,.97);box-shadow:0 8px 28px rgba(0,0,0,.42);color:#f5f5f5;font:13px/1.55 system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif";let r=t.createElement("button");r.type="button",r.textContent="×",r.setAttribute("aria-label",a?"关闭提醒":"Close warning"),r.style.cssText="position:absolute;top:5px;right:7px;width:26px;height:26px;border:0;background:transparent;color:#bbb;font:20px/26px sans-serif;cursor:pointer",r.addEventListener("click",()=>{Rd=!0,n.remove()}),n.append(r,t.createElement("div")),t.body.append(n)}let i=n.lastElementChild,o=e.join(a?"、":", ");return i.textContent=a?`检测到与新版 MWITools 功能重复的脚本:${o}。为避免重复监听、面板冲突和重复计算,建议在脚本管理器中停用或删除。`:`Scripts overlapping with the new MWITools were detected: ${o}. Disable or remove them in your userscript manager to avoid duplicate listeners, panels, and calculations.`,n}s(zd,"showDuplicateWarning"),u.features.register({id:"duplicateScriptWarning",initialize({scope:e}){if(qd)return;let t=new Set,a=s(()=>{if(!Rd){for(let i of Bd())t.add(i);t.size&&(qd=!0,zd([...t]))}},"scan");a(),e.interval(a,1e3);let n=new MutationObserver(a);e.observer(n,document.body,{childList:!0,subtree:!0}),e.add(()=>document.getElementById(h0)?.remove())}});var _a=["equipment","inventory","marketListings","houses","abilities","nonTradableTokens","shrine"],_0=new Set,Fd=null,Ji=null,jd=null;function y0(e){if(e==null||e==="")return null;let t=Number(e);return Number.isFinite(t)?t:null}s(y0,"finiteOrNull");function Wd(e){return e.reduce((t,a)=>t+(Number.isFinite(a)?a:0),0)}s(Wd,"sumKnown");function O1(e){return e?.isDone||e?.isCancelled||e?.isCanceled||e?.isExpired?!0:/(cancel|complete|expire|closed|done)/i.test(String(e?.status??""))}s(O1,"isTerminalMarketListing");function Vd(e){let t={fair:0,ask:0,bid:0};for(let a of e??[]){let n=a.enhancementLevel??0,i=Number(u.api.getFairValue?.(a.itemHrid,n)),o=Number.isFinite(i)&&i>0?i:u.api.getAssetValue(a.itemHrid,n),r=u.api.getAskPrice(a.itemHrid,n),c=u.api.getBidPrice(a.itemHrid,n),l=Math.max(0,Number(a.coinsAvailable??0)),d=Math.max(0,Number(a.unclaimedCoinCount??0)),m=l+d;t.fair+=m,t.ask+=m,t.bid+=m;let p=Math.max(0,Number(a.unclaimedItemCount??0));if(t.fair+=p*o,t.ask+=p*r,t.bid+=p*c,!a.isSell||O1(a))continue;let b=Math.max(0,Number(a.orderQuantity??0)-Number(a.filledQuantity??0)),f=1-u.api.getMarketTaxRate(a.itemHrid);t.fair+=b*o*f,t.ask+=b*r*f,t.bid+=b*c*f}return t}s(Vd,"calculateMarketListingValues");async function Gd(){if(!Array.isArray(u.state.initData_characterItems)||!await u.api.ensureMarketValueSource())return null;let e=0,t=0,a=0,n=0,i=0,o=0,r=0;for(let p of u.state.initData_characterItems){if(p.itemHrid==="/items/cowbell"&&!u.api.shouldIncludeCowbellsInAssets())continue;let b=Math.max(0,Number(p.count??0)),f=p.enhancementLevel??0,g=u.api.getAssetValue(p.itemHrid,f,{itemLocationHrid:p.itemLocationHrid}),h=u.api.getAskPrice(p.itemHrid,f),_=u.api.getBidPrice(p.itemHrid,f);p.itemLocationHrid!=="/item_locations/inventory"?(e+=b*g,n+=b*h,i+=b*_):u.api.isNonTradableTokenAsset(p.itemHrid)?a+=b*g:(t+=b*g,o+=b*h,r+=b*_)}let c=Vd(u.state.initData_myMarketListings),l=await u.api.getSelfBuildScores(),d=y0(u.api.getGuildShrineValue()),m={equipment:e,inventory:t,marketListings:c.fair,houses:y0(l?.assets?.allHouses*1e6),abilities:y0(l?.assets?.allAbilities*1e6),nonTradableTokens:a,shrine:d};return m.liquid=Wd([m.equipment,m.inventory,m.marketListings]),m.fixed=Wd([m.houses,m.abilities,m.nonTradableTokens,m.shrine]),m.total=m.liquid+m.fixed,{schema:1,recordedAt:new Date().toISOString(),server:u.api.getMarketEnvironment?.()??"production",characterId:String(u.state.currentCharacterId??""),complete:_a.every(p=>Number.isFinite(m[p])),values:m,liquidation:{ask:n+o+c.ask,bid:i+r+c.bid},scores:l}}s(Gd,"getAssetSnapshot");function Io(){return Fd}s(Io,"getLatestAssetSnapshot");function w0(e){return _0.add(e),()=>_0.delete(e)}s(w0,"onAssetSnapshot");async function Yi(){return Ji||(Ji=Gd().then(e=>{if(!e)return null;Fd=e;for(let t of _0)try{t(e)}catch(a){console.error(u.config.isZH?"[MWITools] 资产快照监听器执行失败。":"[MWITools] Asset snapshot listener failed.",a)}return e}).finally(()=>{Ji=null}),Ji)}s(Yi,"refreshAssetSnapshot");function v0(e=120){clearTimeout(jd),jd=setTimeout(()=>{Yi()},e)}s(v0,"scheduleAssetSnapshotRefresh"),Object.assign(u.api,{ASSET_COMPONENT_KEYS:_a,calculateMarketListingValues:Vd,getAssetSnapshot:Gd,getLatestAssetSnapshot:Io,onAssetSnapshot:w0,refreshAssetSnapshot:Yi,scheduleAssetSnapshotRefresh:v0});var Zd="MWITools_asset_history_v1",Ud="__mwitools_asset_history_backup__",Qi={total:"kbd_calc_data",breakdown:"kbd_calc_breakdown_data",tags:"kbd_calc_tags",tagPrefs:"kbd_calc_tag_prefs",tagPanel:"kbd_calc_tag_panel",dataPanel:"kbd_calc_data_panel",lastUpdate:"kbd_calc_last_update_at"};function No(e,t){try{return e?JSON.parse(e):t}catch{return t}}s(No,"safeParse");function q1(){return{version:1,roles:{},migrations:{everydayProfit:{}},legacy:{}}}s(q1,"createEmptyData");function x0(e){if(e==null||e==="")return null;let t=Number(e);return Number.isFinite(t)?t:null}s(x0,"finiteOrNull");function Kd(e,t){let a=t.map(n=>x0(e[n]));return a.every(Number.isFinite)?a.reduce((n,i)=>n+i,0):null}s(Kd,"sumIfComplete");function k0(e={},t={}){let a=Object.fromEntries(_a.map(n=>[n,x0(e[n])]));return a.liquid=Kd(a,["equipment","inventory","marketListings"]),a.fixed=Kd(a,["houses","abilities","nonTradableTokens","shrine"]),a.total=Number.isFinite(a.liquid)&&Number.isFinite(a.fixed)?a.liquid+a.fixed:t.preserveTotal?x0(e.total):null,a}s(k0,"normalizeAssetValues");function tn(e=new Date){return new Date(e.getTime()+8*36e5).toISOString().slice(0,10)}s(tn,"getUtc8DayKey");function S0(e){let[t,a,n]=String(e).split("-").map(Number);return Date.UTC(t,a-1,n)}s(S0,"parseDayKey");function qa(e,t){return Math.round((S0(t)-S0(e))/864e5)}s(qa,"dayGap");function Ho(e,t,a){if(!e||typeof e!="object")return{};if(t&&e[t])return e[t];if(a&&e[a])return e[a];let n=Object.keys(e);return n.length===1?e[n[0]]:{}}s(Ho,"roleBucketFromLegacy");function Xd(e,t={}){return k0({equipment:t.equip,inventory:t.inventory,marketListings:t.orders,houses:t.house,abilities:t.skill,nonTradableTokens:null,shrine:null,total:e},{preserveTotal:!0})}s(Xd,"legacyValues");function Jd(e={},t={}){return{...e,...t}}s(Jd,"mergeDays");var C0=class{static{s(this,"AssetHistoryStore")}constructor(t=globalThis.localStorage){this.storage=t;let a=No(t?.getItem(Zd),null);this.data=a?.version===1?a:q1()}save(){this.storage?.setItem(Zd,JSON.stringify(this.data))}scopeKey(t=u.state.currentCharacterId){return`${u.api.getMarketEnvironment?.()??"production"}:${String(t??"")}`}getRole(t=this.scopeKey()){return this.data.roles[t]??={days:{}},this.data.roles[t].days??={},this.data.roles[t]}list(t=this.scopeKey()){return Object.entries(this.getRole(t).days).sort(([a],[n])=>a.localeCompare(n))}record(t,a=this.scopeKey(t?.characterId)){if(!t?.complete)return!1;let n=k0(t.values);if(!Number.isFinite(n.total))return!1;let i=tn(new Date(t.recordedAt)),o=this.getRole(a);return o.server=t.server,o.characterId=t.characterId,o.days[i]={recordedAt:t.recordedAt,values:n},this.save(),i}comparison(t=tn(),a=this.scopeKey()){let n=this.list(a).filter(([l])=>l<t);if(!n.length)return null;let i=new Date(S0(t)-864e5).toISOString().slice(0,10),o=n.find(([l])=>l===i),[r,c]=o??n.at(-1);return{date:r,record:c,gapDays:qa(r,t)}}sevenDayAverage(t=tn(),a=this.scopeKey()){let n=this.list(a).filter(([l,d])=>l<=t&&Number.isFinite(d?.values?.total));if(n.length<2)return null;let i=n.findLastIndex(([l])=>l<=t),o=n[i],r=n[Math.max(0,i-1)];for(let l=i-1;l>=0;l-=1){let d=n[l];if(r=d,qa(d[0],o[0])>=7)break}let c=qa(r[0],o[0]);return c<=0?null:(o[1].values.total-r[1].values.total)/c}updateDay(t,a,n=this.scopeKey()){let i=k0(a);if(!_a.every(o=>Number.isFinite(i[o])))throw new TypeError("Every asset component needs a finite value");return this.getRole(n).days[t]={recordedAt:new Date().toISOString(),values:i,edited:!0},this.save(),i}deleteDay(t,a=this.scopeKey()){let n=this.getRole(a).days;return Object.hasOwn(n,t)?(delete n[t],this.save(),!0):!1}cleanupInvalid(t=this.scopeKey()){let a=0;for(let[n,i]of this.list(t))Number.isFinite(i?.values?.total)||(delete this.getRole(t).days[n],a+=1);return a&&this.save(),a}detectAnomalies(t=this.scopeKey()){let a=this.list(t).filter(([,r])=>Number.isFinite(r?.values?.total));if(a.length<5)return[];let n=a.slice(1).map(([r,c],l)=>({date:r,value:(c.values.total-a[l][1].values.total)/Math.max(1,qa(a[l][0],r))})),i=n.reduce((r,c)=>r+c.value,0)/n.length,o=Math.sqrt(n.reduce((r,c)=>r+(c.value-i)**2,0)/n.length);return o>0?n.map(r=>({...r,zScore:(r.value-i)/o})).filter(({zScore:r})=>Math.abs(r)>=4):[]}migrateLegacy({scopeKey:t=this.scopeKey(),roleName:a=""}={}){if(this.data.migrations.everydayProfit[t])return!1;let n=t.split(":").at(-1),i=No(this.storage?.getItem(Qi.total),{}),o=No(this.storage?.getItem(Qi.breakdown),{}),r=Ho(i,a,n),c=Ho(o,a,n),l={};for(let m of new Set([...Object.keys(r??{}),...Object.keys(c??{})])){let p=Xd(r?.[m],c?.[m]);Number.isFinite(p.total)&&(l[m]={recordedAt:`${m}T15:59:59.999Z`,values:p})}let d=this.getRole(t);return d.days={...l,...d.days},d.legacyRoleName=a||null,this.data.legacy=Object.fromEntries(Object.entries(Qi).filter(([m])=>m!=="total"&&m!=="breakdown").map(([m,p])=>[m,No(this.storage?.getItem(p),{})])),this.data.migrations.everydayProfit[t]={migratedAt:new Date().toISOString(),importedDays:Object.keys(l).length},this.save(),Object.keys(l).length}exportBackup(){return{[Ud]:!0,schema:1,exportedAt:new Date().toISOString(),data:this.data}}importBackup(t,{mode:a="merge",scopeKey:n=this.scopeKey()}={}){if(t?.[Ud]===!0){let i=t.data?.roles?.[n]?.days??{},o=this.getRole(n);return o.days=a==="replace"?{...i}:Jd(o.days,i),this.data.legacy={...this.data.legacy,...t.data?.legacy??{}},this.save(),Object.keys(i).length}if(t?.__everyday_profit_backup__===!0){let i=t.payload??{},o=i[Qi.total]??{},r=i[Qi.breakdown]??{},c=this.getRole(n).legacyRoleName??"",l=n.split(":").at(-1),d=Ho(o,c,l),m=Ho(r,c,l),p={};for(let f of new Set([...Object.keys(d),...Object.keys(m)])){let g=Xd(d[f],m[f]);Number.isFinite(g.total)&&(p[f]={recordedAt:`${f}T15:59:59.999Z`,values:g})}let b=this.getRole(n);return b.days=a==="replace"?p:Jd(b.days,p),this.data.legacy.importedEverydayProfit=i,this.save(),Object.keys(p).length}throw new TypeError("Unsupported asset history backup")}},vt=new C0;var Yd={equipment:"#5bc0eb",inventory:"#ffd166",marketListings:"#8ecae6",houses:"#ff6384",abilities:"#a78bfa",nonTradableTokens:"#80ed99",shrine:"#f4a261"},R1={equipment:["装备","Equipment"],inventory:["库存","Inventory"],marketListings:["订单","Market listings"],houses:["房屋","Houses"],abilities:["技能","Abilities"],nonTradableTokens:["不可交易代币","Non-tradable tokens"],shrine:["神龛","Shrine"]};function an(e,t){return u.config.isZH?e:t}s(an,"t");function B1(e,t){if(!Number.isFinite(t)||!e.length)return e;let a=e.at(-1)[0];return e.filter(([n])=>qa(n,a)<t)}s(B1,"filterEntries");function Qd(e,t){return e.map(([a,n],i)=>{if(!i)return null;let o=e[i-1],r=n?.values?.[t],c=o[1]?.values?.[t];return!Number.isFinite(r)||!Number.isFinite(c)?null:(r-c)/Math.max(1,qa(o[0],a))})}s(Qd,"normalizedChanges");function z1(e,t,a=7){return e.map(([n,i],o)=>{if(!o||!Number.isFinite(i?.values?.[t]))return null;let r=e[o-1];for(let d=o-1;d>=0&&(r=e[d],!(qa(r[0],n)>=a));d-=1);let c=qa(r[0],n),l=r[1]?.values?.[t];return!(c>0)||!Number.isFinite(l)?null:(i.values[t]-l)/c})}s(z1,"calendarAverage");function F1(e){return u.api.formatExactNumber?.(e)??String(e)}s(F1,"formatTooltip");var Do=class{static{s(this,"AssetHistoryChart")}constructor(t,a){this.canvas=t,this.fallback=a,this.instance=null}destroy(){this.instance?.destroy?.(),this.instance=null}resetZoom(){this.instance?.resetZoom?.()}render(t,{mode:a="total",range:n=null}={}){let i=globalThis.Chart;if(typeof i!="function"){this.destroy(),this.canvas.hidden=!0,this.fallback.hidden=!1,this.fallback.textContent=an("图表依赖未加载;资产数据与明细仍可正常使用。","Chart dependencies did not load; asset data is still available.");return}this.canvas.hidden=!1,this.fallback.hidden=!0;let o=B1(t,n),r=o.map(([d])=>d.slice(5)),c,l;if(a==="profit"){let d=Qd(o,"total");c=[{type:"bar",label:an("每日盈亏","Daily P/L"),data:d,backgroundColor:d.map(m=>m>=0?"rgba(65,190,115,.58)":"rgba(235,90,90,.58)"),borderRadius:3},{type:"line",label:an("7 日均线","7-day average"),data:z1(o,"total"),borderColor:"#ffd369",backgroundColor:"transparent",borderWidth:2,pointRadius:0,tension:.22,spanGaps:!0}],l=an("每日资产盈亏","Daily asset P/L")}else a==="breakdown"?(c=_a.map(d=>({type:"line",label:an(...R1[d]),data:Qd(o,d),borderColor:Yd[d],backgroundColor:Yd[d],borderWidth:2,pointRadius:2,tension:.2,spanGaps:!0})),l=an("分项每日变化","Daily component changes")):(c=[{type:"line",label:an("总资产","Total assets"),data:o.map(([,d])=>d?.values?.total??null),borderColor:"#4cc9f0",backgroundColor:"rgba(76,201,240,.14)",fill:!0,borderWidth:2,pointRadius:2,tension:.2,spanGaps:!0}],l=an("总资产历史","Total asset history"));this.destroy(),this.instance=new i(this.canvas.getContext("2d"),{data:{labels:r,datasets:c},options:{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},animation:!1,plugins:{title:{display:!0,text:l,color:"#eee"},legend:{labels:{color:"#ddd",usePointStyle:!0}},tooltip:{callbacks:{label(d){let m=d.raw;return`${d.dataset.label}: ${Number.isFinite(m)?F1(m):"—"}`}}},zoom:{pan:{enabled:!0,mode:"x"},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},drag:{enabled:!0,modifierKey:"shift"},mode:"x"}}},scales:{x:{ticks:{color:"#bbb",maxRotation:0,autoSkip:!0},grid:{color:"rgba(255,255,255,.06)"}},y:{ticks:{color:"#bbb",callback(d){return u.api.numberFormatter?.(d)??d}},grid:{color:"rgba(255,255,255,.08)"}}}}})}};var Xt="mwitools-asset-history-tab",er="mwitools-asset-history-panel",A0="mwitools-asset-history-style",j1=12,em=[["total","总计","Total"],["equipment","装备","Equipment"],["inventory","库存","Inventory"],["marketListings","订单","Market listings"],["houses","房屋","Houses"],["abilities","技能","Abilities"],["nonTradableTokens","不可交易代币","Non-tradable tokens"],["shrine","神龛","Shrine"]];function Ie(e,t){return u.config.isZH?e:t}s(Ie,"t");function ri(e,t=!1){if(!Number.isFinite(e))return"—";let a=u.api.numberFormatter?.(Math.abs(e))??e;return!t||e===0?String(a):`${e>0?"+":"−"}${a}`}s(ri,"formatNumber");function tm(e,t){if(!Number.isFinite(e)||!Number.isFinite(t)||t===0)return"—";let a=(e-t)/t*100;return`${a>0?"+":""}${a.toFixed(2)}%`}s(tm,"formatPercent");function tr(e){return!Number.isFinite(e)||e===0?"is-neutral":e>0?"is-positive":"is-negative"}s(tr,"valueClass");function W1(e){return u.config.isZH?e===1?"今天":`近 ${e} 天`:e===1?"Today":`Over the last ${e} days`}s(W1,"sharePeriod");function V1({change:e,percent:t,gapDays:a=1},n=Math.floor(Math.random()*j1)){if(!Number.isFinite(e)||!Number.isFinite(t))return"";let i=W1(a),o=ri(Math.abs(e)),r=`${Math.abs(t).toFixed(2)}%`,c=ri(e,!0),l=`${t>0?"+":""}${t.toFixed(2)}%`,d=[()=>`📈 ${i}资产战报:赚了 ${o},总资产增长 ${r}。`,()=>`${i}的奶牛账本飘绿:进账 ${o},身家上涨 ${r}。`,()=>`汇报一下${i}战果:盈利 ${o},资产增加 ${r}。`,()=>`${i}收工报数:净赚 ${o},总资产提升 ${r}。`,()=>`财富成绩单更新:赚到 ${o},资产涨幅 ${r}。`,()=>`牛棚财报新鲜出炉:${i}盈利 ${o},身家增长 ${r}。`,()=>`${i}搬砖结算:收入 ${o},资产上涨 ${r}。`,()=>`小小炫耀一下:${i}赚了 ${o},总资产 +${r}。`,()=>`账本一翻,${i}多了 ${o},身家涨了 ${r}。`,()=>`🚀 财富进度向前:+${o},涨幅 +${r}。`,()=>`挤奶之余看了眼资产:${i}进账 ${o},总计增长 ${r}。`,()=>`MWITools 资产盘点:${i}盈利 +${o},变化 +${r}。`],m=[()=>`📉 ${i}资产战报:亏了 ${o},总资产缩水 ${r}。`,()=>`${i}的奶牛账本飘红:损失 ${o},身家下降 ${r}。`,()=>`汇报一下${i}战况:亏损 ${o},资产减少 ${r}。`,()=>`${i}收工报数:净亏 ${o},总资产回落 ${r}。`,()=>`财富成绩单更新:少了 ${o},资产跌幅 ${r}。`,()=>`牛棚财报有点红:${i}亏损 ${o},身家缩水 ${r}。`,()=>`${i}搬砖结算:支出 ${o},资产下降 ${r}。`,()=>`今天不炫耀了:${i}亏了 ${o},总资产 -${r}。`,()=>`账本一翻,${i}少了 ${o},身家跌了 ${r}。`,()=>`🩹 财富进度回撤:−${o},跌幅 −${r}。`,()=>`挤奶之余看了眼资产:${i}损失 ${o},总计下降 ${r}。`,()=>`MWITools 资产盘点:${i}亏损 −${o},变化 −${r}。`],p=[()=>`📈 Asset report: ${i} I gained ${o}; total assets are up ${r}.`,()=>`${i}'s cow ledger is green: +${o}, net worth up ${r}.`,()=>`The grind paid off: ${i} I made ${o}, growing assets by ${r}.`,()=>`Closing the books ${i}: profit ${o}, total wealth up ${r}.`,()=>`My wealth scorecard: +${o}, with a ${r} gain ${i.toLowerCase()}.`,()=>`Fresh from the cowshed: ${i} brought ${o}, net worth up ${r}.`,()=>`Tiny flex: I earned ${o} ${i.toLowerCase()}, assets +${r}.`,()=>`Checked the books: ${i} added ${o} to the pile, up ${r}.`,()=>`🚀 Wealth progress unlocked: +${o} (+${r}) ${i.toLowerCase()}.`,()=>`Milk money report: ${i} profit ${o}, portfolio growth ${r}.`,()=>`A green day in the galaxy: +${o}, total assets climbed ${r}.`,()=>`MWITools flex: ${i} P/L +${o}, asset change +${r}.`],b=[()=>`📉 Asset report: ${i} I lost ${o}; total assets are down ${r}.`,()=>`${i}'s cow ledger took a hit: -${o}, net worth down ${r}.`,()=>`Rough shift: ${i} cost me ${o}, and assets slipped ${r}.`,()=>`Closing the books ${i}: loss ${o}, total wealth down ${r}.`,()=>`My wealth scorecard: -${o}, with a ${r} drop ${i.toLowerCase()}.`,()=>`The cowshed report is red: ${i} lost ${o}, net worth down ${r}.`,()=>`Painful little update: I dropped ${o}, and assets fell ${r}.`,()=>`Checked the books twice: ${i} erased ${o}, down ${r}.`,()=>`🩹 Wealth progress setback: -${o} (-${r}) ${i.toLowerCase()}.`,()=>`Spilled milk report: ${i} loss ${o}, portfolio down ${r}.`,()=>`A red day in the galaxy: -${o}, total assets fell ${r}.`,()=>`MWITools reality check: ${i} P/L -${o}, asset change -${r}.`],f=u.config.isZH?[()=>`${i}资产持平:盈亏 0,变化 ${l}。`,()=>`${i}的奶牛账本没动:资产变化 0(${l})。`,()=>`财富成绩单:${i}盈亏 0,涨跌 ${l}。`,()=>`收工报数:${i}资产不增不减,变化 ${l}。`,()=>`账本平静:${i}盈亏 0,资产变化 ${l}。`,()=>`牛棚财报:${i}资产持平,盈亏 0(${l})。`,()=>`${i}搬砖结算:收入支出相抵,变化 ${l}。`,()=>`今天低调一下:${i}盈亏 0,资产持平 ${l}。`,()=>`账本一翻:${i}没有盈亏,变化 ${l}。`,()=>`➖ 财富进度原地踏步:${c}(${l})。`,()=>`挤奶之余看了眼资产:${i}盈亏 0,变化 ${l}。`,()=>`MWITools 资产盘点:${i}盈亏 ${c},变化 ${l}。`]:[()=>`${i}'s asset report is flat: P/L 0, change ${l}.`,()=>`${i}'s cow ledger did not move: 0 P/L (${l}).`,()=>`Wealth scorecard: ${i} finished flat at ${l}.`,()=>`Closing the books ${i}: no gain or loss, change ${l}.`,()=>`Quiet ledger: ${i} P/L 0, asset change ${l}.`,()=>`Cowshed report: ${i} assets stayed flat at ${l}.`,()=>`${i}'s grind broke even: P/L 0, change ${l}.`,()=>`Keeping it low-key: ${i} assets stayed flat at ${l}.`,()=>`Checked the books: ${i} had no P/L, change ${l}.`,()=>`➖ Wealth progress held steady: ${c} (${l}).`,()=>`Paused milking to check: ${i} P/L 0, change ${l}.`,()=>`MWITools asset check: ${i} P/L ${c}, change ${l}.`],g=e===0?f:u.config.isZH?e>0?d:m:e>0?p:b,h=((Number(n)||0)%g.length+g.length)%g.length;return g[h]()}s(V1,"buildAssetShareMessage");function G1(e,t=document){let a=[...t.querySelectorAll('input[class*="Chat_chatInput"],input[placeholder*="输入消息"],input[placeholder*="message" i]')],n=a.find(c=>c.getClientRects().length>0)??a.at(0);if(!n||!e)return null;let i=n.ownerDocument?.defaultView??window,o=Object.getOwnPropertyDescriptor(i.HTMLInputElement.prototype,"value")?.set,r=s(c=>{o?o.call(n,c):n.value=c,n.dispatchEvent(new i.Event("input",{bubbles:!0}))},"applyValue");return r(""),r(e),n.focus(),n.setSelectionRange?.(e.length,e.length),n}s(G1,"pasteAssetShareToChat");function Z1(){if(document.getElementById(A0))return;let e=document.createElement("style");e.id=A0,e.textContent=`
    #${Xt}[data-active="true"] { color:#00c6ff!important; font-weight:700; }
    [data-mwitools-asset-active="true"] button:not(#${Xt}) { border-color:var(--mwi-asset-idle-border,rgba(255,255,255,.16))!important; background:var(--mwi-asset-idle-background,rgba(255,255,255,.08))!important; box-shadow:var(--mwi-asset-idle-shadow,none)!important; color:var(--mwi-asset-idle-color,var(--color-text-secondary,#aeb5c0))!important; filter:none!important; }
    #${er} { box-sizing:border-box; width:100%; max-width:100%; min-width:0; max-height:calc(100% - 34px); overflow-x:hidden; overflow-y:auto; overscroll-behavior:contain; scrollbar-gutter:stable; padding:12px 12px 24px; color:var(--color-text-primary,#eee); background:#111b2b; }
    .mwi-asset-disclaimer { margin:0 0 10px; color:var(--color-text-secondary,#aaa); font-size:.72rem; line-height:1.4; }
    .mwi-asset-share { display:flex; align-items:center; gap:8px; margin:-2px 0 10px; }
    .mwi-asset-share-status { min-width:0; color:var(--color-text-secondary,#aaa); font-size:.68rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .mwi-asset-summary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin-bottom:12px; }
    .mwi-asset-card { min-width:0; padding:10px 12px; border:1px solid rgba(255,255,255,.08); border-radius:8px; background:rgba(255,255,255,.06); }
    .mwi-asset-card-label { color:#9fb4d1; font-size:.68rem; }
    .mwi-asset-card-value { overflow:hidden; margin-top:4px; font-size:1rem; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }
    .mwi-asset-card-meta { margin-top:3px; color:var(--color-text-secondary,#999); font-size:.63rem; }
    .is-positive { color:#65d394!important; } .is-negative { color:#ff7b75!important; } .is-neutral { color:inherit; }
    .mwi-asset-section { margin-top:10px; border:1px solid rgba(255,255,255,.08); border-radius:8px; background:#0c141f; overflow:hidden; }
    .mwi-asset-section-title { padding:9px 11px; border-bottom:1px solid rgba(255,255,255,.08); font-size:.84rem; font-weight:700; }
    .mwi-asset-table-wrap { max-width:100%; overflow-x:hidden; }
    .mwi-asset-table { width:100%; min-width:0; table-layout:fixed; border-collapse:collapse; font-size:.72rem; }
    .mwi-asset-table th,.mwi-asset-table td { overflow:hidden; padding:7px 6px; border-bottom:1px solid rgba(255,255,255,.065); text-align:right; text-overflow:ellipsis; white-space:nowrap; }
    .mwi-asset-table th { overflow-wrap:anywhere; white-space:normal; }
    .mwi-asset-table th:first-child,.mwi-asset-table td:first-child { text-align:left; }
    .mwi-asset-table:not(.mwi-asset-history-table) th:first-child { width:18%; }
    .mwi-asset-history-table th:first-child { width:28%; }
    .mwi-asset-history-table th:last-child { width:38%; }
    .mwi-asset-table tr:last-child td { border-bottom:0; }
    .mwi-asset-table tr[data-key="total"] { font-weight:700; background:rgba(255,255,255,.035); }
    .mwi-asset-chart-controls { display:flex; flex-wrap:wrap; gap:6px; padding:9px 10px 0; }
    .mwi-asset-chart-controls button,.mwi-asset-action { border:1px solid rgba(255,255,255,.13); border-radius:5px; background:rgba(255,255,255,.07); color:inherit; padding:5px 9px; cursor:pointer; font:inherit; }
    .mwi-asset-chart-controls button:hover,.mwi-asset-action:hover { background:#3f4655; transform:translateY(-1px); }
    .mwi-asset-chart-controls button[data-active="true"] { border-color:transparent; background:#00c6ff; color:#0b1522; box-shadow:0 0 10px rgba(0,198,255,.45); }
    .mwi-asset-chart-box { position:relative; height:330px; padding:8px 10px 12px; }
    .mwi-asset-chart-fallback { display:grid; height:100%; place-items:center; color:var(--color-text-secondary,#aaa); font-size:.75rem; text-align:center; }
    .mwi-asset-manager { padding:9px 11px 12px; }
    .mwi-asset-manager summary { cursor:pointer; font-size:.8rem; font-weight:700; }
    .mwi-asset-manager-actions { display:flex; flex-wrap:wrap; gap:6px; margin:9px 0; }
    .mwi-asset-action.is-danger { color:#ff938c; }
    .mwi-asset-history-table button { padding:3px 7px; font-size:.68rem; }
    .mwi-asset-edit-dialog { width:min(520px,calc(100vw - 24px)); border:1px solid rgba(255,255,255,.16); border-radius:8px; background:#182033; color:#eee; }
    .mwi-asset-edit-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px 12px; }
    .mwi-asset-edit-grid label { display:grid; gap:3px; color:#bbb; font-size:.7rem; }
    .mwi-asset-edit-grid input { box-sizing:border-box; width:100%; border:1px solid rgba(255,255,255,.18); border-radius:4px; background:#101728; color:#eee; padding:6px; }
    .mwi-asset-edit-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:12px; }
    @media(max-width:760px){
      #${er} { min-height:0; padding:10px 8px calc(20px + env(safe-area-inset-bottom,0px)); overflow-x:hidden; overflow-y:auto; overscroll-behavior-y:contain; -webkit-overflow-scrolling:touch; touch-action:pan-y; }
      .mwi-asset-chart-box { height:280px; }
      .mwi-asset-edit-grid { grid-template-columns:1fr; }
    }
  `,(document.head??document.documentElement).appendChild(e)}s(Z1,"addStyles");function U1(e){return String(u.api.getOriTextFromElement?.(e)??e?.textContent??"").trim().toLowerCase()}s(U1,"buttonLabel");var K1={inventory:/^(库存|inventory)$/i,equipment:/^(装备|equipment)$/i,skills:/^(技能|skills?|abilities)$/i,house:/^(房屋|house)$/i,loadout:/^(配装|loadouts?)(?:\s*\d+)?$/i};function X1(){let e=new Map;for(let a of document.querySelectorAll('button[role="tab"],button')){let n=a.parentElement;n&&(e.has(n)||e.set(n,[]),e.get(n).push(a))}let t=[];for(let[a,n]of e){let i=Object.fromEntries(Object.entries(K1).map(([d,m])=>[d,n.find(p=>m.test(U1(p)))])),o=[i.equipment,i.skills,i.house].filter(Boolean).length;if(!i.inventory||!i.loadout||o<2)continue;let r=a.getBoundingClientRect?.(),c=!!(r&&r.width>0&&r.height>0),l=!!a.closest('[class*="CharacterManagement_characterManagement"]');t.push({button:i.loadout,score:Number(c)*4+Number(l)*2})}return t.sort((a,n)=>n.score-a.score),t[0]?.button??null}s(X1,"findCharacterManagementLoadoutTab");function J1(e){if(!(e instanceof Element))return!1;let t=String(e.className??"");return!!(e.querySelector("input,canvas")||/(Inventory|Equipment|Ability|Abilities|House|Loadout|Panel)_/i.test(t)||e.querySelector('[class*="Inventory_"],[class*="Equipment_"],[class*="Ability"],[class*="House_"],[class*="Loadout"]'))}s(J1,"looksLikeContent");function Y1(e){let t=e.parentElement;for(let a=0;t?.parentElement&&a<8;a+=1){let n=t.parentElement;if([...n.children].filter(o=>o!==t&&o.id!==er).some(J1))return{shell:n,navigationBranch:t};t=n}return null}s(Y1,"findPanelShell");function am(){let e=globalThis.window??globalThis;return e.matchMedia?.("(max-width: 760px)")?.matches??Number(e.innerWidth)<=760}s(am,"isCompactViewport");function Po(e,t,a=""){return`<div class="mwi-asset-card"><div class="mwi-asset-card-label">${e}</div><div class="mwi-asset-card-value" id="${t}">—</div>${a?`<div class="mwi-asset-card-meta" id="${a}"></div>`:""}</div>`}s(Po,"createCard");function Q1(e){let t=new Blob([JSON.stringify(e,null,2)],{type:"application/json;charset=utf-8"}),a=URL.createObjectURL(t),n=document.createElement("a");n.href=a,n.download=`MWITools-asset-history-${new Date().toISOString().slice(0,10)}.json`,document.body.appendChild(n),n.click(),n.remove(),URL.revokeObjectURL(a)}s(Q1,"downloadBackup");var M0=class{static{s(this,"AssetHistoryPanel")}constructor(t,a,n){this.host=t,this.store=a,this.scopeKey=n,this.snapshot=null,this.mode="total",this.range=30,this.build()}build(){this.host.innerHTML=`
      <p class="mwi-asset-disclaimer">${Ie("盈亏按资产估值变化计算,包含市场价格波动,并非已实现交易利润。","P/L is based on asset valuation changes, including market price movement; it is not realized trading profit.")}</p>
      <div class="mwi-asset-share"><button type="button" class="mwi-asset-action" id="mwi-asset-share-chat" disabled>${Ie("炫耀","Flex")}</button><span class="mwi-asset-share-status">${Ie("需要至少两天的资产记录","At least two asset records are required")}</span></div>
      <div class="mwi-asset-summary">
        ${Po(Ie("当前总资产","Current total assets"),"mwi-asset-current-total")}
        ${Po(Ie("总盈亏","Total P/L"),"mwi-asset-total-change","mwi-asset-compare-date")}
        ${Po(Ie("盈亏比例","P/L percentage"),"mwi-asset-total-percent")}
        ${Po(Ie("近 7 日平均","7-day average"),"mwi-asset-seven-average")}
      </div>
      <section class="mwi-asset-section">
        <div class="mwi-asset-section-title">${Ie("分项资产变化","Asset changes by component")}</div>
        <div class="mwi-asset-table-wrap"><table class="mwi-asset-table"><thead><tr><th>${Ie("项目","Component")}</th><th>${Ie("当前","Current")}</th><th id="mwi-asset-change-heading">${Ie("变化","Change")}</th><th>${Ie("比例","Percentage")}</th></tr></thead><tbody id="mwi-asset-breakdown"></tbody></table></div>
      </section>
      <section class="mwi-asset-section">
        <div class="mwi-asset-chart-controls">
          <button type="button" data-mode="total">${Ie("总资产","Total assets")}</button>
          <button type="button" data-mode="profit">${Ie("每日盈亏","Daily P/L")}</button>
          <button type="button" data-mode="breakdown">${Ie("分项变化","Components")}</button>
          <span style="flex:1"></span>
          <button type="button" data-range="7">7${Ie("天","d")}</button>
          <button type="button" data-range="15">15${Ie("天","d")}</button>
          <button type="button" data-range="30">30${Ie("天","d")}</button>
          <button type="button" data-range="all">${Ie("全部","All")}</button>
          <button type="button" id="mwi-asset-reset-zoom">${Ie("重置缩放","Reset zoom")}</button>
        </div>
        <div class="mwi-asset-chart-box"><canvas id="mwi-asset-chart"></canvas><div class="mwi-asset-chart-fallback" hidden></div></div>
      </section>
      <section class="mwi-asset-section"><details class="mwi-asset-manager"><summary>${Ie("数据管理与备份","Data management & backup")}</summary>
        <div class="mwi-asset-manager-actions">
          <button type="button" class="mwi-asset-action" id="mwi-asset-export">${Ie("导出备份","Export backup")}</button>
          <button type="button" class="mwi-asset-action" id="mwi-asset-import">${Ie("导入备份","Import backup")}</button>
          <button type="button" class="mwi-asset-action is-danger" id="mwi-asset-cleanup">${Ie("清理无效记录","Clean invalid records")}</button>
          <button type="button" class="mwi-asset-action is-danger" id="mwi-asset-anomalies">${Ie("检测并删除异常","Detect & delete anomalies")}</button>
          <input type="file" id="mwi-asset-import-file" accept="application/json" hidden>
        </div>
        <div class="mwi-asset-table-wrap"><table class="mwi-asset-table mwi-asset-history-table"><thead><tr><th>${Ie("日期","Date")}</th><th>${Ie("总资产","Total")}</th><th>${Ie("操作","Actions")}</th></tr></thead><tbody id="mwi-asset-history-rows"></tbody></table></div>
      </details></section>
      <dialog class="mwi-asset-edit-dialog" id="mwi-asset-edit-dialog"><h3>${Ie("编辑分项资产","Edit asset components")}</h3><div class="mwi-asset-edit-grid">${_a.map(t=>{let a=em.find(([n])=>n===t);return`<label>${Ie(a[1],a[2])}<input type="number" min="0" step="any" data-component="${t}"></label>`}).join("")}</div><div class="mwi-asset-edit-actions"><button type="button" class="mwi-asset-action" data-edit-cancel>${Ie("取消","Cancel")}</button><button type="button" class="mwi-asset-action" data-edit-save>${Ie("保存","Save")}</button></div></dialog>
    `,this.chart=new Do(this.host.querySelector("#mwi-asset-chart"),this.host.querySelector(".mwi-asset-chart-fallback")),this.bind()}bind(){this.host.querySelector("#mwi-asset-share-chat").addEventListener("click",()=>this.shareToChat()),this.host.querySelectorAll("[data-mode]").forEach(a=>{a.addEventListener("click",()=>{this.mode=a.dataset.mode,this.renderChart()})}),this.host.querySelectorAll("[data-range]").forEach(a=>{a.addEventListener("click",()=>{this.range=a.dataset.range==="all"?null:Number(a.dataset.range),this.renderChart()})}),this.host.querySelector("#mwi-asset-reset-zoom").addEventListener("click",()=>this.chart.resetZoom()),this.host.querySelector("#mwi-asset-export").addEventListener("click",()=>Q1(this.store.exportBackup()));let t=this.host.querySelector("#mwi-asset-import-file");this.host.querySelector("#mwi-asset-import").addEventListener("click",()=>t.click()),t.addEventListener("change",async()=>{let a=t.files?.[0];if(a)try{let n=JSON.parse(await a.text()),i=globalThis.confirm?.(Ie("确定:替换当前角色历史;取消:合并导入。","OK: replace this character's history; Cancel: merge it."));this.store.importBackup(n,{mode:i?"replace":"merge",scopeKey:this.scopeKey}),this.update(this.snapshot)}catch(n){globalThis.alert?.(`${Ie("导入失败","Import failed")}: ${n.message}`)}finally{t.value=""}}),this.host.querySelector("#mwi-asset-cleanup").addEventListener("click",()=>{let a=this.store.cleanupInvalid(this.scopeKey);globalThis.alert?.(Ie(`已删除 ${a} 条无效记录。`,`Removed ${a} invalid records.`)),this.update(this.snapshot)}),this.host.querySelector("#mwi-asset-anomalies").addEventListener("click",()=>{let a=this.store.detectAnomalies(this.scopeKey);if(!a.length){globalThis.alert?.(Ie("未发现明显异常。","No clear anomalies found."));return}let n=a.map(({date:i,zScore:o})=>`${i} (Z=${o.toFixed(1)})`).join(`
`);globalThis.confirm?.(Ie(`确认删除以下异常日期?
${n}`,`Delete these anomalous dates?
${n}`))&&(a.forEach(({date:i})=>this.store.deleteDay(i,this.scopeKey)),this.update(this.snapshot))}),this.host.querySelector("[data-edit-cancel]").addEventListener("click",()=>this.closeEditor()),this.host.querySelector("[data-edit-save]").addEventListener("click",()=>this.saveEditor())}shareToChat(){let t=this.host.querySelector(".mwi-asset-share-status"),a=V1(this.shareStats??{});if(!a){t.textContent=Ie("暂无可对比的盈亏数据","No comparable P/L data yet");return}let n=G1(a);t.dataset.pasted=String(!!n),t.textContent=n?Ie("已放入聊天框,按回车发送","Pasted into chat; press Enter to send"):Ie("未找到聊天框,请先展开聊天","Chat input not found; open chat first")}openEditor(t){let a=this.store.getRole(this.scopeKey).days[t],n=this.host.querySelector("#mwi-asset-edit-dialog");n.dataset.dayKey=t;for(let i of n.querySelectorAll("[data-component]")){let o=a?.values?.[i.dataset.component];i.value=Number.isFinite(o)?o:""}typeof n.showModal=="function"?n.showModal():n.setAttribute("open","")}closeEditor(){let t=this.host.querySelector("#mwi-asset-edit-dialog");typeof t.close=="function"?t.close():t.removeAttribute("open")}saveEditor(){let t=this.host.querySelector("#mwi-asset-edit-dialog"),a=Object.fromEntries([...t.querySelectorAll("[data-component]")].map(n=>[n.dataset.component,Number(n.value)]));if(!_a.every(n=>Number.isFinite(a[n])&&a[n]>=0)){globalThis.alert?.(Ie("请为全部七个分项填写不小于零的数字。","Enter a non-negative number for all seven components."));return}this.store.updateDay(t.dataset.dayKey,a,this.scopeKey),this.closeEditor(),this.update(this.snapshot)}update(t){this.snapshot=t??this.snapshot;let a=tn(),n=this.store.getRole(this.scopeKey).days[a],i=this.snapshot?.values??n?.values??{},o=this.store.comparison(a,this.scopeKey),r=o?.record?.values??{},c=Number.isFinite(i.total)&&Number.isFinite(r.total)?i.total-r.total:null,l=Number.isFinite(c)&&Number.isFinite(r.total)&&r.total!==0?c/r.total*100:null;this.shareStats=o&&Number.isFinite(l)?{change:c,percent:l,gapDays:o.gapDays}:null;let d=this.host.querySelector("#mwi-asset-share-chat"),m=this.host.querySelector(".mwi-asset-share-status");d.disabled=!this.shareStats,this.shareStats?m.dataset.pasted!=="true"&&(m.textContent=Ie("随机生成今日战报并放入聊天框","Generate a random report and paste it into chat")):m.textContent=Ie("需要至少两天的资产记录","At least two asset records are required");let p=o?o.gapDays===1?Ie(`较昨日(${o.date})`,`vs yesterday (${o.date})`):Ie(`较 ${o.gapDays} 天前(${o.date})`,`vs ${o.gapDays} days ago (${o.date})`):Ie("暂无历史对比","No prior record"),b=s((h,_,{signed:y=!1,className:w=""}={})=>{let k=this.host.querySelector(h);k.textContent=ri(_,y),k.title=Number.isFinite(_)?u.api.formatExactNumber(_):"",k.className=`mwi-asset-card-value ${w}`.trim()},"setNumber");b("#mwi-asset-current-total",i.total),b("#mwi-asset-total-change",c,{signed:!0,className:tr(c)}),this.host.querySelector("#mwi-asset-compare-date").textContent=p,b("#mwi-asset-total-percent",null,{className:tr(c)}),this.host.querySelector("#mwi-asset-total-percent").textContent=tm(i.total,r.total);let f=this.store.sevenDayAverage(a,this.scopeKey);b("#mwi-asset-seven-average",f,{signed:!0,className:tr(f)}),this.host.querySelector("#mwi-asset-change-heading").textContent=o?Ie(`变化(较 ${o.date})`,`Change (vs ${o.date})`):Ie("变化","Change"),this.host.querySelector("#mwi-asset-breakdown").replaceChildren(...em.map(([h,_,y])=>{let w=document.createElement("tr");w.dataset.key=h;let k=i[h],C=r[h],x=Number.isFinite(k)&&Number.isFinite(C)?k-C:null;return w.innerHTML=`<td>${Ie(_,y)}</td><td title="${Number.isFinite(k)?u.api.formatExactNumber(k):""}">${ri(k)}</td><td class="${tr(x)}" title="${Number.isFinite(x)?u.api.formatExactNumber(x):""}">${ri(x,!0)}</td><td class="${tr(x)}">${tm(k,C)}</td>`,w})),this.renderHistoryRows(),this.renderChart()}renderHistoryRows(){let t=this.host.querySelector("#mwi-asset-history-rows"),a=this.store.list(this.scopeKey).slice().reverse();t.replaceChildren(...a.map(([n,i])=>{let o=document.createElement("tr"),r=i?.values?.total;return o.innerHTML=`<td>${n}</td><td title="${Number.isFinite(r)?u.api.formatExactNumber(r):""}">${ri(r)}</td><td><button type="button" class="mwi-asset-action" data-edit>${Ie("编辑","Edit")}</button> <button type="button" class="mwi-asset-action is-danger" data-delete>${Ie("删除","Delete")}</button></td>`,o.querySelector("[data-edit]").addEventListener("click",()=>this.openEditor(n)),o.querySelector("[data-delete]").addEventListener("click",()=>{globalThis.confirm?.(Ie(`确认删除 ${n}?`,`Delete ${n}?`))&&(this.store.deleteDay(n,this.scopeKey),this.update(this.snapshot))}),o}))}renderChart(){this.host.querySelectorAll("[data-mode]").forEach(t=>{t.dataset.active=String(t.dataset.mode===this.mode)}),this.host.querySelectorAll("[data-range]").forEach(t=>{let a=t.dataset.range==="all"?null:Number(t.dataset.range);t.dataset.active=String(a===this.range)}),this.chart.render(this.store.list(this.scopeKey),{mode:this.mode,range:this.range})}destroy(){this.chart.destroy()}};function nm({scope:e,store:t,scopeKey:a}){let n=!1,i=null,o=null,r=null,c=null,l=null,d=null,m=new Map,p=null,b=s(()=>{for(let[x,T]of m)x.hidden=T.hidden,T.styleDisplay===null?x.style.removeProperty("display"):x.style.display=T.styleDisplay;m.clear()},"restoreNative"),f=s(()=>{if(!d||typeof getComputedStyle!="function")return;let x=d.querySelector(`button:not(#${Xt}):not([aria-selected="true"]):not(.Mui-selected)`)??d.querySelector(`button:not(#${Xt})`);if(!x)return;let T=getComputedStyle(x),A=T.background||T.backgroundColor;A&&A!=="transparent"&&A!=="rgba(0, 0, 0, 0)"&&d.style.setProperty("--mwi-asset-idle-background",A),T.borderColor&&T.borderColor!=="transparent"&&d.style.setProperty("--mwi-asset-idle-border",T.borderColor),T.color&&d.style.setProperty("--mwi-asset-idle-color",T.color),T.boxShadow&&T.boxShadow!=="none"&&d.style.setProperty("--mwi-asset-idle-shadow",T.boxShadow)},"captureIdleTabStyle"),g=s(()=>{if(d){delete d.dataset.mwitoolsAssetActive;for(let x of["--mwi-asset-idle-background","--mwi-asset-idle-border","--mwi-asset-idle-color","--mwi-asset-idle-shadow"])d.style.removeProperty(x)}},"clearNativeTabOverride"),h=s(()=>{if(!r)return;if(!am()||!n){r.style.removeProperty("height"),r.style.removeProperty("max-height");return}let T=`calc(100dvh - ${Math.max(0,Math.round(r.getBoundingClientRect().top))}px - env(safe-area-inset-bottom,0px))`;r.style.height=T,r.style.maxHeight=T},"syncHostViewport"),_=s(x=>{let T=!!x;if(i==="native"&&T&&!n&&f(),n=T,o&&(o.dataset.active=String(n),o.setAttribute("aria-selected",String(n)),o.classList.toggle("Mui-selected",n),o.hasAttribute("data-selected")&&(o.dataset.selected=String(n)),o.hasAttribute("data-state")&&(o.dataset.state=n?"active":"inactive"),n||o.blur()),d&&n){let A=d.querySelector(`button[aria-selected="true"]:not(#${Xt}), button.Mui-selected:not(#${Xt}), [role="tab"][aria-selected="true"]:not(#${Xt})`);A&&(p=A)}if(r&&(r.hidden=!n),!n){b(),g(),h();return}d.dataset.mwitoolsAssetActive="true";for(let A of[...l?.children??[]])A===d||A===r||A.tagName==="STYLE"||(m.has(A)||m.set(A,{hidden:A.hidden,styleDisplay:A.style.display||null}),A.hidden=!0,A.style.display="none");h(),c?.update(u.api.getLatestAssetSnapshot?.())},"setActive"),y=s(()=>{_(!1),c?.destroy(),c=null,o?.remove(),r?.remove(),i=null,o=null,r=null,l=null,d=null,p=null},"teardownMount"),w=s((x,T)=>{i="native",{shell:l,navigationBranch:d}=T,o=x.cloneNode(!0),o.id=Xt,o.type="button";let A=o.querySelector(".TabsComponent_badge__1Du26, .MuiBadge-root");A?A.textContent=Ie("盈亏","P/L"):o.textContent=Ie("盈亏","P/L");for(let I of[...o.classList])/(?:^|[_-])(?:active|selected)(?:[_-]|$)/i.test(I)&&o.classList.remove(I);o.dataset.active="false",o.hasAttribute("data-selected")&&(o.dataset.selected="false"),o.hasAttribute("data-state")&&(o.dataset.state="inactive"),o.setAttribute("aria-selected","false"),o.setAttribute("tabindex","-1"),o.addEventListener("click",I=>{I.preventDefault(),I.stopPropagation(),_(!n)}),x.insertAdjacentElement("afterend",o),r=document.createElement("section"),r.id=er,r.hidden=!0,l.appendChild(r),c=new M0(r,t,a),c.update(u.api.getLatestAssetSnapshot?.())},"mountNative"),k=s(()=>{let x=X1(),T=x&&Y1(x);if(x&&T){if(i==="native"&&o?.isConnected&&r?.isConnected){let A=d?.querySelector(`button[aria-selected="true"]:not(#${Xt}), button.Mui-selected:not(#${Xt}), [role="tab"][aria-selected="true"]:not(#${Xt})`);if(A&&A!==p||o.getAttribute("aria-selected")!=="true"){n&&_(!1);return}n&&_(!0);return}y(),w(x,T);return}i!==null&&y()},"ensureMounted");Z1(),k(),e.interval(k,500);let C=s(x=>{!n||x.target.closest(`#${Xt}`)||x.target.closest(`#${er}`)||d?.contains(x.target)&&_(!1)},"handleTabBranchClick");return e.event(document,"pointerdown",C,!0),e.event(document,"click",C,!0),e.event(document,"keydown",x=>{n&&am()&&x.key==="Escape"&&_(!1)}),e.event(window,"resize",h),{update(x){c?.update(x)},destroy(){y(),document.getElementById(A0)?.remove()}}}s(nm,"createAssetHistoryUi");function im(){if(u.state.currentCharacterName)return String(u.state.currentCharacterName).trim();let e=[".CharacterName_name__1amXp span",'[class*="CharacterName_name"] span','[data-testid="character-name"]'].map(t=>document.querySelector(t)).find(Boolean);return String(e?.textContent??"").trim()}s(im,"detectRoleName");function ya(){return vt.scopeKey(u.state.currentCharacterId)}s(ya,"currentScopeKey");var e5={storageKey:"MWITools_asset_history_v1",record(e=Io(),t=ya()){return vt.record(e,t)},getHistory(e=ya()){return vt.list(e)},getComparison(e=tn(),t=ya()){return vt.comparison(e,t)},getSevenDayAverage(e=tn(),t=ya()){return vt.sevenDayAverage(e,t)},updateDay(e,t,a=ya()){return vt.updateDay(e,t,a)},deleteDay(e,t=ya()){return vt.deleteDay(e,t)},cleanup(e=ya()){return vt.cleanupInvalid(e)},detectAnomalies(e=ya()){return vt.detectAnomalies(e)},exportBackup(){return vt.exportBackup()},importBackup(e,t={}){return vt.importBackup(e,{scopeKey:ya(),...t})},migrateLegacy(e={}){return vt.migrateLegacy({scopeKey:ya(),roleName:im(),...e})},refresh:Yi,scheduleRefresh:v0};u.api.assetHistory=e5,u.features.register({id:"assetHistory",setting:"assetHistory",scope:"character",initialize({scope:e,characterId:t}){let a=vt.scopeKey(t);vt.migrateLegacy({scopeKey:a,roleName:im()});let n=nm({scope:e,store:vt,scopeKey:a}),i=s(r=>{String(r?.characterId??"")===String(t)&&(vt.record(r,a),n.update(r))},"consume");e.add(w0(i));let o=Io();return o&&i(o),Yi(),()=>n.destroy()}});var t5=1,a5=1,rm="mwitools:scores-updated",oi=globalThis.unsafeWindow??globalThis.window??globalThis,En=null;function nn(e){let t=Number(e);return Number.isFinite(t)?t:null}s(nn,"finiteOrNull");function T0(e){if(e==null)return e??null;let t=JSON.stringify(e);return oi.JSON?.parse?.(t)??JSON.parse(t)}s(T0,"cloneForConsumer");function om(e){let t=e?.scores;return!t?.battle||!t?.skilling?null:{schemaVersion:a5,unit:"million_coins",server:String(e.server??"production"),characterId:String(e.characterId??""),calculatedAt:String(e.recordedAt??new Date().toISOString()),battle:{total:nn(t.battle.total),house:nn(t.battle.house),abilities:nn(t.battle.abilities),equipment:nn(t.battle.equipment)},skilling:{total:nn(t.skilling.total),house:nn(t.skilling.house),tools:nn(t.skilling.tools),equipment:nn(t.skilling.equipment),available:t.skilling.available!==!1}}}s(om,"createPublicScoreSnapshot");function n5(){if(!En||typeof oi.dispatchEvent!="function")return;let e=oi.CustomEvent??globalThis.CustomEvent;typeof e=="function"&&oi.dispatchEvent(new e(rm,{detail:T0(En)}))}s(n5,"dispatchScoresUpdated");function Lo(e){let t=om(e);return t?(En=t,n5(),T0(En)):null}s(Lo,"publishScoreSnapshot");function $o(){return T0(En)}s($o,"getScores");async function i5(){let e=await u.api.refreshAssetSnapshot?.();return e?((!En||En.calculatedAt!==String(e.recordedAt??""))&&Lo(e),$o()):null}s(i5,"refreshScores");var sm={name:"MWITools",apiVersion:t5,events:Object.freeze({scoresUpdated:rm}),get scores(){return $o()},getScores:$o,refreshScores:i5};try{Object.defineProperty(oi,"MWIToolsAPI",{configurable:!0,enumerable:!0,value:sm})}catch{oi.MWIToolsAPI=sm}u.api.onAssetSnapshot?.(Lo);var um=u.api.getLatestAssetSnapshot?.();um&&Lo(um),Object.assign(u.api,{createPublicScoreSnapshot:om,getPublishedScores:$o,publishScoreSnapshot:Lo});var cm="1.2.0",r5="https://mwi-guild.43.167.210.211.sslip.io/api/v1/leaderboards?categories=16",lm="MWITools_leaderboard_overlay_cache_v2",o5=900*1e3,s5="https://mwi-guild.43.167.210.211.sslip.io/dist/icons/skills",E0="mwi-leaderboard-overlay-style",rn="data-mwi-leaderboard-badges",ar="data-mwi-leaderboard-rate-header",Oo="data-mwi-leaderboard-rate-cell",dm='table[class*="LeaderboardPanel_leaderboardTable"]',qo=[["milking",{zh:"挤奶",en:"Milking"}],["foraging",{zh:"采摘",en:"Foraging"}],["woodcutting",{zh:"伐木",en:"Woodcutting"}],["cheesesmithing",{zh:"奶酪锻造",en:"Cheesesmithing"}],["crafting",{zh:"制作",en:"Crafting"}],["tailoring",{zh:"缝纫",en:"Tailoring"}],["cooking",{zh:"烹饪",en:"Cooking"}],["brewing",{zh:"冲泡",en:"Brewing"}],["alchemy",{zh:"炼金",en:"Alchemy"}],["enhancing",{zh:"强化",en:"Enhancing"}],["attack",{zh:"攻击",en:"Attack"}],["defense",{zh:"防御",en:"Defense"}],["melee",{zh:"近战",en:"Melee"}],["ranged",{zh:"远程",en:"Ranged"}],["magic",{zh:"魔法",en:"Magic"}],["fame_points",{zh:"名望",en:"Fame"}]],Ro=0,si=!1,Bo=new Set;function zo(e,t){return u.config.isZH?e:t}s(zo,"t");function u5(e,t){return e&&typeof e=="object"?e[u.config.isZH?"zh":"en"]??t:String(e||t)}s(u5,"categoryLabel");function In(e){return String(e||"").normalize("NFKC").trim().toLocaleLowerCase()}s(In,"normalizedName");function I0(e){let t=Number(e);return!Number.isInteger(t)||t<1||t>100?null:t<=20?"rainbow":t<=50?"gold":t<=80?"silver":"bronze"}s(I0,"badgeTier");function mm(e,t,a){let n=Math.round(e/t*10)/10;return`${Number.isInteger(n)?n.toFixed(0):n.toFixed(1)}${a}`}s(mm,"roundedCompact");function nr(e){if(e==null||e==="")return null;let t=Number(e);return Number.isFinite(t)&&t>=0?t:null}s(nr,"validExperienceRate");function N0(e){let t=nr(e);return t==null?"—":t>=1e6?mm(t,1e6,"M"):mm(t,1e3,"K")}s(N0,"formatExperienceRate");function H0(e,t,a){let n=nr(e?.xpPerHour),i=nr(t?.xpPerHour),o=n!=null,r=i!=null,c=Number(e?.rank)||Number.MAX_SAFE_INTEGER,l=Number(t?.rank)||Number.MAX_SAFE_INTEGER;return a==="official"?c-l:o!==r?o?-1:1:o&&(a==="ascending"?n-i:i-n)||c-l}s(H0,"compareRateRows");function fm(e){if(e.getElementById(E0))return;let t=e.head||e.documentElement;if(!t){e.addEventListener("readystatechange",()=>fm(e),{once:!0});return}let a=e.createElement("style");a.id=E0,a.textContent=`
    [${rn}]{display:inline-flex;align-items:center;flex-wrap:wrap;gap:2px;margin-inline-start:4px;vertical-align:middle}
    [${rn}][data-mwi-leaderboard-placement="profile"]{display:flex;flex-basis:100%;width:100%;margin-block-start:4px;margin-inline-start:0}
    .mwi-lb-badge{box-sizing:border-box;display:inline-flex;align-items:center;gap:1px;height:15px;min-height:15px;padding:0 3px 0 1px;border:1px solid;border-radius:999px;background:rgba(12,16,28,.78);color:#eef2ff;font:600 9px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;white-space:nowrap;box-shadow:0 1px 2px rgba(0,0,0,.24);vertical-align:middle}
    .mwi-lb-badge-icon{display:block;flex:none;width:11px;height:11px;object-fit:contain}
    .mwi-lb-badge--rainbow{border-color:transparent;color:#f8fbff;background:linear-gradient(rgba(12,16,28,.9),rgba(12,16,28,.9)) padding-box,linear-gradient(105deg,#ff5f6d,#ffd166,#67e8a5,#5cb8ff,#c77dff,#ff6ec7) border-box;box-shadow:0 0 7px rgba(121,190,255,.48),0 0 3px rgba(255,103,199,.34),inset 0 0 3px rgba(255,255,255,.14)}
    .mwi-lb-badge--gold{border-color:#d9aa38;color:#ffe8a3;box-shadow:0 0 5px rgba(217,170,56,.24)}
    .mwi-lb-badge--silver{border-color:#d8dee9;color:#f8fafc;box-shadow:0 0 4px rgba(226,232,240,.24)}
    .mwi-lb-badge--bronze{border-color:#b87333;color:#f2c49b;box-shadow:0 0 4px rgba(184,115,51,.24)}
    [${ar}]{cursor:pointer;user-select:none;white-space:nowrap}
    [${ar}]:hover{filter:brightness(1.18)}
    [${Oo}]{font-variant-numeric:tabular-nums;white-space:nowrap}
  `,t.append(a)}s(fm,"ensureStyles");function c5(e,t,a){if(t!=="fame_points"){let r=e.createElement("img");return r.className="mwi-lb-badge-icon",r.src=`${a}/${encodeURIComponent(t)}.png`,r.alt="",r.setAttribute("aria-hidden","true"),r}let n=e.createElementNS("http://www.w3.org/2000/svg","svg");n.classList.add("mwi-lb-badge-icon"),n.setAttribute("viewBox","0 0 40 40"),n.setAttribute("aria-hidden","true");let i=e.createElementNS("http://www.w3.org/2000/svg","use"),o=[...e.querySelectorAll("use")].map(r=>r.getAttribute("href")||"").find(r=>r.includes("misc_sprite"))?.split("#")[0]||"/static/media/misc_sprite.cfad291b.svg";return i.setAttribute("href",`${o}#experience`),n.append(i),n}s(c5,"createBadgeIcon");function l5(e={}){let t=e.document??(typeof document<"u"?document:null);if(!t)throw new Error(Cn("排行榜浮层需要可用的页面文档。","MWILeaderboardOverlay requires a document."));let a=Array.isArray(e.categories)&&e.categories.length?e.categories:qo,n=a.map(([x])=>x),i=Object.fromEntries(a),o=String(e.iconBaseUrl||s5).replace(/\/+$/,""),r={categories:{},nameIndex:new Map,currentLeaderboard:null,sortMode:"official",refreshPending:!1,destroyed:!1,showBadges:e.showBadges!==!1,showRates:e.showRates!==!1};fm(t);function c(){let x=new Map;for(let A of n){let I=r.categories?.[A];for(let R of Array.isArray(I?.rows)?I.rows:[]){let z=In(R.characterName||R.name),j=Number(R.rank),W=I0(j);!z||!W||(x.has(z)||x.set(z,[]),x.get(z).push({category:A,label:i[A],rank:j,tier:W}))}}let T=new Map(n.map((A,I)=>[A,I]));for(let A of x.values())A.sort((I,R)=>I.rank-R.rank||(T.get(I.category)??Number.MAX_SAFE_INTEGER)-(T.get(R.category)??Number.MAX_SAFE_INTEGER));r.nameIndex=x}s(c,"rebuildNameIndex");function l(x){return x.map(T=>`${T.category}:${T.rank}`).join("|")}s(l,"badgeSignature");function d(){if(!r.showBadges)return;let x=t.querySelectorAll('[class*="CharacterName_name"][data-name]');for(let T of x){let A=T.parentElement;if(!A)continue;if(T.closest('[class*="Header_characterInfo"]')){A.closest('[class*="Header_name"]')?.querySelector(`[${rn}]`)?.remove(),A.querySelector(`[${rn}]`)?.remove();continue}let I=T.closest('[class*="CharacterProfile_"],[class*="PlayerProfile_"],[class*="ProfilePage_"],[class*="ProfilePanel_"],[data-mwi-leaderboard-profile]'),R=I?T.closest('[class*="Header_name"]'):null,z=R||A,j=z.querySelector(`:scope > [${rn}]`)||(z===A?null:A.querySelector(`:scope > [${rn}]`));if(T.closest('[class*="LeaderboardPanel_"]')){j?.remove();continue}let W=r.nameIndex.get(In(T.getAttribute("data-name")))||[],B=T.closest('[class*="ChatMessage_name"]')?W.slice(0,3):W;if(!B.length){j?.remove();continue}let M=!!I,N=M?"profile":"inline",q=l(B),$=j?.dataset.mwiLeaderboardPlacement||"";if(j||(j=t.createElement("span"),j.setAttribute(rn,"")),j.dataset.mwiLeaderboardPlacement!==N&&(j.dataset.mwiLeaderboardPlacement=N),M){let Y=R&&T.closest('[class*="CharacterName_characterName"]')||T;(j.parentElement!==z||j.previousElementSibling!==Y)&&Y.insertAdjacentElement("afterend",j)}else(!j.isConnected||$==="profile")&&A.append(j);j.dataset.mwiLeaderboardSignature!==q&&(j.dataset.mwiLeaderboardSignature=q,j.replaceChildren(...B.map(Y=>{let re=t.createElement("span");re.className=`mwi-lb-badge mwi-lb-badge--${Y.tier}`;let J=c5(t,Y.category,o);re.append(J,t.createTextNode(`#${Y.rank}`));let ne=u5(Y.label,Y.category);return re.title=u.config.isZH?`${ne}排行榜第 ${Y.rank} 名`:`${ne} leaderboard rank #${Y.rank}`,re})))}}s(d,"renderNameBadges");function m(){return new Map((r.currentLeaderboard?.rows||[]).map(x=>[In(x.characterName||x.name),x]))}s(m,"currentRowsByName");function p(x){let T=r.sortMode==="descending"?" ↓":r.sortMode==="ascending"?" ↑":"",A=`${zo("经验/小时","XP/hour")}${T}`;x.textContent!==A&&(x.textContent=A),x.title=zo("点击排序:降序 → 升序 → 官方原排名","Click to sort: descending → ascending → official rank"),x.setAttribute("aria-sort",r.sortMode==="descending"?"descending":r.sortMode==="ascending"?"ascending":"none")}s(p,"updateHeaderCopy");function b(x,T){let A=x.tBodies?.[0];if(!A)return;let I=[...A.rows],R=In(u.state.currentCharacterName);I.sort((z,j)=>{let W=z.querySelector('[class*="CharacterName_name"][data-name]')?.getAttribute("data-name"),B=j.querySelector('[class*="CharacterName_name"][data-name]')?.getAttribute("data-name"),M=In(W),N=In(B);if(R){let q=M===R;if(q!==(N===R))return q?-1:1}return H0(T.get(M),T.get(N),r.sortMode)}),I.some((z,j)=>A.rows[j]!==z)&&I.forEach(z=>A.append(z))}s(b,"applyTableSort");function f(){if(!r.showRates||!r.currentLeaderboard)return;let T=t.querySelector(dm);if(!T)return;let A=T.tHead?.rows?.[0],I=T.tBodies?.[0];if(!A||!I)return;let R=A.querySelector(`[${ar}]`);R||(R=t.createElement("th"),R.setAttribute(ar,""),R.addEventListener("click",()=>{r.sortMode=r.sortMode==="official"?"descending":r.sortMode==="descending"?"ascending":"official",y()}),A.append(R)),p(R);let z=m();for(let j of I.rows){let W=j.querySelector('[class*="CharacterName_name"][data-name]')?.getAttribute("data-name"),B=z.get(In(W)),M=j.querySelector(`[${Oo}]`);M||(M=t.createElement("td"),M.setAttribute(Oo,""),j.append(M));let N=N0(B?.xpPerHour),q=nr(B?.xpPerHour),$=q!=null?`${Math.round(q).toLocaleString()} ${zo("经验/小时","XP/hour")}`:zo("缺少可比较的历史快照","No comparable historical snapshot");M.textContent!==N&&(M.textContent=N),M.title!==$&&(M.title=$)}b(T,z)}s(f,"renderLeaderboardRateColumn");function g(){r.destroyed||(r.showBadges&&d(),r.showRates&&f())}s(g,"refresh");function h(){t.querySelectorAll(`[${rn}]`).forEach(x=>x.remove())}s(h,"removeBadges");function _(){let x=t.querySelector(dm);x&&r.currentLeaderboard&&(r.sortMode="official",b(x,m())),t.querySelectorAll(`[${ar}],[${Oo}]`).forEach(T=>T.remove())}s(_,"removeRateColumn");function y(){if(r.destroyed||r.refreshPending)return;r.refreshPending=!0,(t.defaultView?.requestAnimationFrame||(T=>setTimeout(T,25)))(()=>{r.refreshPending=!1,g()})}s(y,"scheduleRefresh");let w=t.defaultView?.MutationObserver||(typeof MutationObserver<"u"?MutationObserver:null);if(!w)throw new Error(Cn("排行榜浮层需要 MutationObserver 支持。","MWILeaderboardOverlay requires MutationObserver."));let k=new w(()=>y()),C=s(()=>{r.destroyed||!t.documentElement||(k.observe(t.documentElement,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-name"]}),y())},"observe");return t.documentElement?C():t.addEventListener("readystatechange",C,{once:!0}),Ro+=1,{setRankings(x){r.categories=x&&typeof x=="object"?x:{},c(),y()},enhanceLeaderboard({category:x,rows:T}){return n.includes(x)?(r.currentLeaderboard={category:x,rows:Array.isArray(T)?T:[]},r.sortMode="official",y(),!0):!1},clearLeaderboard(){r.currentLeaderboard&&(_(),r.currentLeaderboard=null,r.sortMode="official")},setDisplay({badges:x=r.showBadges,rates:T=r.showRates}={}){let A=!!x,I=!!T;r.showBadges&&!A&&h(),r.showRates&&!I&&_(),r.showBadges=A,r.showRates=I,y()},destroy(){r.destroyed||(r.destroyed=!0,k.disconnect(),h(),_(),Ro=Math.max(0,Ro-1),Ro===0&&t.getElementById(E0)?.remove())}}}s(l5,"createOverlay");function D0(e={}){let t=null,a=!1,n=null,i=null,o={badges:e.showBadges!==!1,rates:e.showRates!==!1},r=new Set((Array.isArray(e.categories)&&e.categories.length?e.categories:qo).map(([m])=>m)),c=s(()=>{a||t||!si||(t=l5({...e,showBadges:o.badges,showRates:o.rates}),n&&t.setRankings(n),i&&t.enhanceLeaderboard(i))},"mount"),l=s(()=>{t?.destroy(),t=null},"unmount"),d={setRankings(m){n=m&&typeof m=="object"?m:{},t?.setRankings(n)},enhanceLeaderboard(m={}){return r.has(m.category)?(i={category:m.category,rows:Array.isArray(m.rows)?m.rows:[]},t?.enhanceLeaderboard(i),!0):!1},clearLeaderboard(){i=null,t?.clearLeaderboard()},setDisplay(m={}){o={badges:m.badges??o.badges,rates:m.rates??o.rates},t?.setDisplay(o)},destroy(){a||(a=!0,l(),Bo.delete(d))}};return Object.defineProperties(d,{enabled:{enumerable:!0,get(){return si&&!a}},_mount:{value:c},_unmount:{value:l}}),Bo.add(d),c(),d}s(D0,"create");var P0={VERSION:cm,create:D0,formatExperienceRate:N0,badgeTier:I0,compareRateRows:H0,get enabled(){return si}};function bm(e){if(e?.type!=="leaderboard_updated"||e?.leaderboardType!=="standard")return null;let t=e.leaderboard,a=String(e.leaderboardCategory??t?.category??"");if(t?.type!=="standard"||t?.category!==a||!qo.some(([i])=>i===a)||!Array.isArray(t?.rows))return null;let n=t.rows.map(i=>{let o=a==="fame_points";return{characterId:Number(i?.characterId??i?.id),characterName:String(i?.characterName??i?.name??"").trim(),rank:Number(i?.rank),level:o?0:Number(i?.level??i?.value1),experience:Number(i?.experience??(o?i?.value1:i?.value2)),xpPerHour:nr(i?.xpPerHour)}}).filter(i=>i.characterName&&Number.isInteger(i.rank)&&i.rank>=1&&i.rank<=100);return n.length?{category:a,rows:n}:null}s(bm,"normalizeLeaderboardPayload");function pm(e){let t=new Set(qo.map(([a])=>a));return Object.fromEntries(Object.entries(e??{}).flatMap(([a,n])=>{if(!t.has(a)||!Array.isArray(n?.rows))return[];let i=n.rows.filter(o=>String(o?.characterName??o?.name??"").trim()&&Number.isInteger(Number(o?.rank))&&Number(o.rank)>=1&&Number(o.rank)<=100);return i.length?[[a,{...n,rows:i}]]:[]}))}s(pm,"normalizeCategories");function d5(){try{let e=JSON.parse(globalThis.localStorage?.getItem(lm)||"null");return e?.schemaVersion===1?pm(e.categories):{}}catch{return{}}}s(d5,"loadCachedCategories");function m5(e){try{globalThis.localStorage?.setItem(lm,JSON.stringify({schemaVersion:1,cachedAt:Date.now(),categories:e}))}catch(t){console.warn(u.config.isZH?"[MWITools] 无法缓存排行榜名次":"[MWITools] Unable to cache leaderboard rankings",t)}}s(m5,"saveCachedCategories");function f5(e){let t=typeof GM<"u"&&typeof GM.xmlHttpRequest=="function"?GM.xmlHttpRequest:typeof GM_xmlhttpRequest=="function"?GM_xmlhttpRequest:null;return t?new Promise(a=>{let n=!1,i,o=s(r=>{if(!n){if(n=!0,clearTimeout(i),Number(r?.status)<200||Number(r?.status)>=300){a(null);return}try{let c=r.responseText||r.response,l=typeof c=="string"?JSON.parse(c):c;a(l?.schemaVersion===1&&l?.leaderboardType==="standard"?pm(l.categories):null)}catch{a(null)}}},"finish");i=setTimeout(()=>o(null),10500);try{let r=t({method:"GET",url:r5,timeout:1e4,onload:o,onabort:s(()=>o(null),"onabort"),onerror:s(()=>o(null),"onerror"),ontimeout:s(()=>o(null),"ontimeout")});e?.(r),r?.then&&r.then(o).catch(()=>o(null))}catch{o(null)}}):Promise.resolve(null)}s(f5,"requestLeaderboardCategories");var gm=globalThis.unsafeWindow??globalThis.window??globalThis;try{Object.defineProperty(gm,"MWILeaderboardOverlay",{configurable:!0,enumerable:!0,value:P0})}catch{gm.MWILeaderboardOverlay=P0}var ir=new Set,ui=null;function L0(){return{badges:ir.has("badges"),rates:ir.has("rates")}}s(L0,"integratedDisplay");function b5(){let e=L0(),t=D0({showBadges:e.badges,showRates:e.rates}),a=d5(),n=null,i=!0,o=null;t.setRankings(a);let r=s(()=>{n&&t.enhanceLeaderboard({category:n.category,rows:a[n.category]?.rows??n.rows})},"applyCurrentLeaderboard"),c=s(async()=>{let m=await f5(p=>{o=p});o=null,!(!i||!m)&&(a=m,m5(a),t.setRankings(a),r())},"refreshRankings"),l=u.onMessage("leaderboard_updated",m=>{let p=bm(m);if(!p){m?.type==="leaderboard_updated"&&m?.leaderboardType==="standard"&&(n=null,t.clearLeaderboard());return}n=p,a[p.category]||(a={...a,[p.category]:{receivedAt:new Date().toISOString(),rows:p.rows}},t.setRankings(a)),r()}),d=setInterval(()=>{c()},o5);return c(),{controller:t,stop(){i=!1,clearInterval(d),l(),o?.abort?.(),t.destroy()}}}s(b5,"startIntegratedService");function hm(e){if(ir.add(e),!si){si=!0;for(let t of Bo)t._mount()}return ui?ui.controller.setDisplay(L0()):ui=b5(),()=>{if(ir.delete(e),ir.size){ui?.controller.setDisplay(L0());return}ui?.stop(),ui=null,si=!1;for(let t of Bo)t._unmount()}}s(hm,"activateIntegratedMode"),u.features.register({id:"leaderboardOverlay",setting:"leaderboardOverlay",initialize(){return hm("badges")}}),u.features.register({id:"leaderboardXpRate",setting:"leaderboardXpRate",initialize(){return hm("rates")}});var _m="mwi-buff-style",p5="/static/media/abilities_sprite.fdd1b4de.svg",Nn=new Map([["/abilities/mana_spring",10],["/abilities/taunt",65],["/abilities/provoke",65],["/abilities/toughness",20],["/abilities/elusiveness",20],["/abilities/precision",20],["/abilities/berserk",20],["/abilities/elemental_affinity",20],["/abilities/frenzy",20],["/abilities/spike_shell",30],["/abilities/retribution",30],["/abilities/vampirism",20],["/abilities/insanity",12],["/abilities/invincible",12],["/abilities/fierce_aura",120],["/abilities/guardian_aura",120],["/abilities/mystic_aura",120],["/abilities/speed_aura",120],["/abilities/critical_aura",120]]),rr=new Map([["/abilities/puncture",10],["/abilities/maim",12],["/abilities/crippling_slash",12],["/abilities/fracturing_impact",12],["/abilities/pestilent_shot",12],["/abilities/ice_spear",8],["/abilities/frost_surge",9],["/abilities/toxic_pollen",10],["/abilities/smoke_burst",8]]),ym=new Set(["/abilities/puncture","/abilities/maim","/abilities/pestilent_shot","/abilities/smoke_burst"]),$0=new Set(["/abilities/mana_spring","/abilities/fierce_aura","/abilities/guardian_aura","/abilities/mystic_aura","/abilities/speed_aura","/abilities/critical_aura"]);function g5(e){let t=e.split("/");return t[t.length-1]||e}s(g5,"abilityId");function h5(e){if(document.getElementById(_m))return;let t=document.createElement("style");t.id=_m,t.textContent=`
.mwi-has-buffbar{height:auto!important;min-height:0;overflow:visible!important}
.mwi-buffbar{width:100%;box-sizing:border-box;display:flex;flex-wrap:wrap;gap:4px;margin-top:4px;align-items:center;justify-content:center}
.mwi-chip{font:11px/1.2 "Trebuchet MS", Verdana, Arial, sans-serif;padding:2px 6px;border-radius:10px;white-space:nowrap;display:inline-flex;align-items:center;gap:4px;position:relative}
.mwi-icon-wrap{position:relative;width:15px;height:15px;display:inline-block}
.mwi-icon{width:15px;height:15px;display:block}
.mwi-progress-ring{position:absolute;inset:-3px;border-radius:14px;pointer-events:none;mask:linear-gradient(#000 0 0);-webkit-mask:linear-gradient(#000 0 0)}
.mwi-progress-ring::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:3px;background:conic-gradient(var(--mwi-ring-color) 0deg var(--mwi-ring-deg), transparent var(--mwi-ring-deg) 360deg);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
.mwi-buff{background:#e7f4e4;color:#1e4d1a;border:1px solid #7fbf7a}
.mwi-debuff{background:#fbe3e3;color:#6b1a1a;border:1px solid #d17b7b}
`,(document.head||document.documentElement).appendChild(t),e.add(()=>t.remove())}s(h5,"ensureBuffStyles");function _5(e){let t=new WeakMap,a={players:new Map,monsters:new Map},n=[],i=[],o=null;function r(){if(o)return o;let A=['use[href*="abilities_sprite"]','use[xlink\\:href*="abilities_sprite"]','img[src*="abilities_sprite"]','link[href*="abilities_sprite"]'];for(let I of A){let R=document.querySelector(I);if(!R)continue;let z=R.getAttribute("href")||R.getAttribute("xlink:href")||R.getAttribute("src");if(typeof z=="string"&&z.includes("abilities_sprite"))return o=z.split("#")[0],o}return o=p5,o}s(r,"getAbilitySpriteBase");function c(A){let I=document.querySelector(`[class*="${A}"]`);if(!I)return[];let R=I.querySelector('[class*="BattlePanel_combatUnitGrid"]');return R?Array.from(R.querySelectorAll('[class*="CombatUnit_combatUnit"]')):[]}s(c,"getUnitElements");function l(){return{players:c("BattlePanel_playersArea"),monsters:c("BattlePanel_monstersArea")}}s(l,"getBattleUnits");function d(A){let I=A.querySelector(".mwi-buffbar");if(!I){I=document.createElement("div"),I.className="mwi-buffbar";let R=A.querySelector('[class*="CombatUnit_status"]')??A;R.classList.add("mwi-has-buffbar"),R.appendChild(I)}return I}s(d,"ensureBuffBar");function m(A){let I=t.get(A);return I||(I={effects:new Map},t.set(A,I)),I}s(m,"getState");function p(A){return!A||typeof A!="object"?null:typeof A.abilityHrid=="string"&&A.abilityHrid.length>0?A.abilityHrid:A.isAutoAtk===!0?"auto":null}s(p,"getActionKey");function b(A,I){if(Array.isArray(A))for(let R=0;R<A.length;R+=1){let z=A[R];if(!z||typeof z!="object")continue;let j=I.get(String(R))||{},W=typeof z.preparingAbilityHrid=="string"?z.preparingAbilityHrid:"";W?(j.abilityHrid=W,delete j.isAutoAtk):(z.isPreparingAutoAttack===!0||z.isAutoAtk===!0)&&(j.isAutoAtk=!0,delete j.abilityHrid),typeof z.currentHitpoints=="number"&&(j.cHP=z.currentHitpoints),typeof z.currentManapoints=="number"&&(j.cMP=z.currentManapoints),I.set(String(R),j)}}s(b,"seedStateFromCombatant");function f(){let A=l().monsters;for(let I of A){if(!I)continue;let R=t.get(I);R&&R.effects.clear();let z=I.querySelector(".mwi-buffbar");z&&(z.innerHTML="")}}s(f,"clearMonsterBuffs");function g(){a.monsters.clear(),n.length=0,i.length=0}s(g,"resetForNewBattle");function h(A){g(),f(),b(A.players,a.players),b(A.monsters,a.monsters)}s(h,"handleNewBattle");function _(A,I,R){let z=[],j=[];if(!I||typeof I!="object")return{actionChanges:z,hpChanges:j};let W=Object.keys(I);for(let B=0;B<W.length;B+=1){let M=W[B],N=I[M];if(!N||typeof N!="object")continue;let q=A.get(M)||{},$={...q,...N},Y=typeof N.preparingAbilityHrid=="string"?N.preparingAbilityHrid:typeof N.abilityHrid=="string"?N.abilityHrid:"",re=N.isPreparingAutoAttack===!0||N.isAutoAtk===!0||N.isAutoAttack===!0;Y?($.abilityHrid=Y,delete $.isAutoAtk):re&&($.isAutoAtk=!0,delete $.abilityHrid);let J=p(q),ne=p($);J&&ne&&J!==ne&&z.push({mapName:R,key:M,prevAction:J,nextAction:ne}),typeof q.cHP=="number"&&typeof $.cHP=="number"&&q.cHP!==$.cHP&&j.push({mapName:R,key:M,prevHP:q.cHP,newHP:$.cHP,delta:$.cHP-q.cHP}),A.set(M,$)}return{actionChanges:z,hpChanges:j}}s(_,"mergeState");function y(A){if(!A||typeof A!="object")return;let I=_(a.players,A.pMap,"pMap"),R=_(a.monsters,A.mMap,"mMap"),z=R.hpChanges.filter(W=>W.delta<0).map(W=>Number(W.key));for(let W of I.actionChanges){if(Nn.has(W.prevAction)){let M=Number(W.key);Number.isInteger(M)&&n.push({mapName:"pMap",casterIndex:M,abilityHrid:W.prevAction})}if(!rr.has(W.prevAction)||z.length===0)continue;let B=Number(W.key);Number.isInteger(B)&&i.push({casterMap:"pMap",casterIndex:B,abilityHrid:W.prevAction,targetSide:"monsters",targets:z})}let j=I.hpChanges.filter(W=>W.delta<0).map(W=>Number(W.key));for(let W of R.actionChanges){if(Nn.has(W.prevAction)){let M=Number(W.key);Number.isInteger(M)&&n.push({mapName:"mMap",casterIndex:M,abilityHrid:W.prevAction})}if(!rr.has(W.prevAction)||j.length===0)continue;let B=Number(W.key);Number.isInteger(B)&&i.push({casterMap:"mMap",casterIndex:B,abilityHrid:W.prevAction,targetSide:"players",targets:j})}}s(y,"updateBattleState");function w(A){let I=m(A),R=d(A),z=Date.now(),j=Array.from(I.effects.values()).filter(W=>W.expiresAt>z);I.effects=new Map(j.map(W=>[W.abilityHrid,W])),R.innerHTML="";for(let W of j.sort((B,M)=>B.expiresAt-M.expiresAt)){let B=document.createElement("span");B.className=`mwi-chip ${W.kind==="buff"?"mwi-buff":"mwi-debuff"}`;let M=document.createElement("span");M.className="mwi-icon-wrap";let N=document.createElementNS("http://www.w3.org/2000/svg","svg");N.setAttribute("role","img"),N.setAttribute("aria-label",u.config.isZH?"技能":"Ability"),N.setAttribute("class","Icon_icon__2LtL_ mwi-icon"),N.setAttribute("width","100%"),N.setAttribute("height","100%");let q=document.createElementNS("http://www.w3.org/2000/svg","use"),Y=`${r()}#${g5(W.abilityHrid)}`;q.setAttribute("href",Y),q.setAttribute("xlink:href",Y),N.appendChild(q);let re=Math.max(1,W.durationSec),J=Math.max(0,Math.min(re,(z-W.startedAt)/1e3)),Ae=Math.min(1,Math.max(0,J/re))*360;M.appendChild(N),B.appendChild(M);let L=document.createElement("span");L.className="mwi-progress-ring",L.style.setProperty("--mwi-ring-deg",`${Ae}deg`),L.style.setProperty("--mwi-ring-color",W.kind==="buff"?"rgba(60,140,60,0.7)":"rgba(180,60,60,0.7)"),B.appendChild(L),R.appendChild(B)}}s(w,"renderUnit");function k(A,I,R,z){let j=m(A),W=Date.now();j.effects.set(R,{abilityHrid:R,kind:I,durationSec:z,startedAt:W,expiresAt:W+z*1e3}),w(A)}s(k,"updateUnitEffect");function C(A){let I=A?.pMap,R=A?.mMap,z=l();if(z.players.length===0&&z.monsters.length===0)return;if(h5(e),y(A),n.length>0){let W=n.splice(0,n.length);for(let B of W){if(!Nn.has(B.abilityHrid))continue;let M=Nn.get(B.abilityHrid),N=$0.has(B.abilityHrid),q=B.mapName==="pMap"?z.players:z.monsters;if(N)for(let $ of q)$&&k($,"buff",B.abilityHrid,M);else{let $=q[B.casterIndex];$&&k($,"buff",B.abilityHrid,M)}}}if(i.length>0){let W=i.splice(0,i.length);for(let B of W){if(!rr.has(B.abilityHrid))continue;let M=rr.get(B.abilityHrid),N=B.targetSide==="monsters"?z.monsters:z.players,q=ym.has(B.abilityHrid)?B.targets.slice(0,1):B.targets;for(let $ of q){let Y=N[$];Y&&k(Y,"debuff",B.abilityHrid,M)}}}let j=s((W,B)=>{if(!W||typeof W!="object")return;let M=B==="pMap"?z.players:z.monsters,N=Object.keys(W);for(let q=0;q<N.length;q+=1){let $=N[q],Y=W[$];if(!Y||typeof Y!="object")continue;let re=Y.abilityHrid;if(typeof re!="string"||re.length===0||!Nn.has(re))continue;let J=Nn.get(re),ne=Number.isInteger(Number($))?Number($):q;if($0.has(re))for(let Ae of M)Ae&&k(Ae,"buff",re,J);else{let Ae=M[ne];Ae&&k(Ae,"buff",re,J)}}},"applyBuffsFromMap");j(I,"pMap"),j(R,"mMap")}s(C,"applyBattleUpdated");function x(){let A=l();for(let I of[...A.players,...A.monsters])t.has(I)&&w(I)}s(x,"tickCountdowns");function T(){let A=l();for(let I of[...A.players,...A.monsters]){let R=I?.querySelector(".mwi-buffbar");R&&(R.closest(".mwi-has-buffbar")?.classList.remove("mwi-has-buffbar"),R.remove())}}return s(T,"removeAllBuffBars"),{handleNewBattle:h,applyBattleUpdated:C,tickCountdowns:x,removeAllBuffBars:T}}s(_5,"createBuffTracker"),u.features.register({id:"battleBuffs",setting:"battleBuffs",initialize({scope:e}){let t=_5(e);e.interval(()=>t.tickCountdowns(),1e3),e.add(u.onMessage("new_battle",a=>{t.handleNewBattle(a)})),e.add(u.onMessage("battle_updated",a=>{t.applyBattleUpdated(a)})),e.add(()=>t.removeAllBuffBars())}}),Object.assign(u.api,{battleBuffs:{BUFFS:Nn,DEBUFFS:rr,TEAM_BUFFS:$0,SINGLE_TARGET_DEBUFFS:ym}});var wm=null,y5=0,Fo=new Map,vm="mwitools-inventory-summary-style";function w5(){if(document.getElementById(vm))return;let e=document.createElement("style");e.id=vm,e.textContent=`
    #script_inventory_summary {
      --mwi-inventory-heading-font-size: .875rem;
      --mwi-inventory-heading-line-height: 1.2;
      margin: .0625rem 0;
      color: var(--color-text-primary, #f3f5f7);
      font-size: var(--mwi-inventory-heading-font-size);
      line-height: var(--mwi-inventory-heading-line-height);
      text-align: left;
    }
    .mwi-inventory-summary-grid {
      display: grid;
      grid-template-columns: minmax(0, 1fr);
      gap: .0625rem;
    }
    .mwi-summary-card {
      --mwi-summary-accent: 120, 174, 255;
      min-width: 0;
      overflow: visible;
      border: 0;
      border-left: 2px solid rgba(var(--mwi-summary-accent), .75);
      border-radius: 0;
      background: transparent;
    }
    .mwi-summary-card--combat { --mwi-summary-accent: 238, 115, 103; }
    .mwi-summary-card--skilling { --mwi-summary-accent: 90, 200, 149; }
    .mwi-summary-card--assets { --mwi-summary-accent: 230, 181, 79; }
    .mwi-summary-toggle {
      display: flex;
      width: 100%;
      min-height: 1.375rem;
      box-sizing: border-box;
      align-items: center;
      gap: .1875rem;
      padding: .1875rem .25rem;
      border: 0;
      background: transparent;
      color: inherit;
      font: inherit;
      text-align: left;
      cursor: pointer;
      transition: none;
    }
    .mwi-summary-toggle:hover { background: rgba(var(--mwi-summary-accent), .075); }
    .mwi-summary-toggle:focus-visible {
      outline: 2px solid rgba(var(--mwi-summary-accent), .72);
      outline-offset: -3px;
    }
    .mwi-summary-heading {
      display: flex;
      min-width: 0;
      flex: 1;
      align-items: baseline;
      gap: .1875rem;
    }
    .mwi-summary-label {
      flex: 0 0 auto;
      color: var(--color-text-secondary, #aeb5c0);
      font-size: inherit;
      font-weight: 600;
      white-space: nowrap;
    }
    .mwi-summary-value {
      min-width: 0;
      color: rgb(var(--mwi-summary-accent));
      font-size: inherit;
      font-weight: 750;
      line-height: inherit;
      overflow-wrap: anywhere;
    }
    .mwi-summary-chevron {
      width: .375rem;
      height: .375rem;
      margin: 0 .0625rem 0 0;
      flex: 0 0 .375rem;
      border-right: 1.5px solid rgba(255, 255, 255, .65);
      border-bottom: 1.5px solid rgba(255, 255, 255, .65);
      transform: rotate(45deg) translate(-2px, 2px);
      transition: transform .18s ease;
    }
    .mwi-summary-toggle[aria-expanded="true"] .mwi-summary-chevron {
      transform: rotate(225deg) translate(-2px, 2px);
    }
    .mwi-summary-details {
      margin: 0 .25rem 0 .5rem;
      animation: mwi-summary-reveal .16s ease-out;
    }
    .mwi-summary-stats {
      position: relative;
      display: grid;
      grid-template-columns: minmax(0, 1fr);
      gap: 0;
      padding: 0 0 0 .5rem;
    }
    .mwi-summary-stats::before {
      position: absolute;
      top: 0;
      bottom: .5em;
      left: 0;
      width: 1px;
      background: rgba(var(--mwi-summary-accent), .34);
      content: "";
    }
    .mwi-summary-stat {
      position: relative;
      display: flex;
      min-width: 0;
      align-items: baseline;
      justify-content: flex-start;
      gap: .375rem;
      padding: .15rem .25rem;
      font-size: inherit;
      line-height: inherit;
    }
    .mwi-summary-stat::before {
      position: absolute;
      top: 50%;
      left: -.5rem;
      width: .5rem;
      border-top: 1px solid rgba(var(--mwi-summary-accent), .34);
      content: "";
    }
    .mwi-summary-stat::after {
      position: absolute;
      top: calc(50% - 2px);
      left: calc(-.5rem - 2px);
      width: 3px;
      height: 3px;
      border-radius: 50%;
      background: rgb(var(--mwi-summary-accent));
      content: "";
    }
    .mwi-summary-stat-label {
      overflow: hidden;
      color: var(--color-text-secondary, #9da6b2);
      font-size: inherit;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    .mwi-summary-stat-value { color: #f3f5f7; font-size: inherit; font-weight: 650; }
    .mwi-asset-groups {
      display: grid;
      gap: 0;
      padding: 0 0 0 .5rem;
    }
    .mwi-asset-group {
      position: relative;
      overflow: visible;
    }
    .mwi-asset-group:not(:last-child)::after {
      position: absolute;
      top: .6em;
      bottom: -.6em;
      left: -.5rem;
      border-left: 1px solid rgba(var(--mwi-summary-accent), .34);
      content: "";
    }
    .mwi-asset-toggle {
      position: relative;
      display: flex;
      width: 100%;
      min-height: 0;
      align-items: center;
      gap: .25rem;
      padding: .15rem .25rem;
      border: 0;
      background: transparent;
      color: var(--color-text-primary, #e8ebef);
      font: inherit;
      font-size: inherit;
      font-weight: 600;
      line-height: inherit;
      text-align: left;
      cursor: pointer;
    }
    .mwi-asset-toggle::before {
      position: absolute;
      top: 50%;
      left: -.5rem;
      width: .5rem;
      border-top: 1px solid rgba(var(--mwi-summary-accent), .34);
      content: "";
    }
    .mwi-asset-toggle:hover { background: rgba(255, 255, 255, .04); }
    .mwi-asset-toggle:focus-visible { outline: 1px solid rgb(var(--mwi-summary-accent)); outline-offset: -2px; }
    .mwi-asset-toggle .mwi-summary-chevron { margin: 0 2px 0 0; }
    .mwi-asset-subtotal {
      min-width: 0;
      margin-left: 6px;
      color: rgb(var(--mwi-summary-accent));
      font-size: inherit;
      font-weight: 700;
      font-variant-numeric: tabular-nums;
      overflow-wrap: anywhere;
    }
    .mwi-asset-rows {
      position: relative;
      display: grid;
      gap: 0;
      margin-left: .25rem;
      padding: 0 .25rem 0 .5rem;
    }
    .mwi-asset-rows::before {
      position: absolute;
      top: 0;
      bottom: .5em;
      left: 0;
      width: 1px;
      background: rgba(var(--mwi-summary-accent), .25);
      content: "";
    }
    .mwi-asset-row {
      position: relative;
      display: flex;
      align-items: baseline;
      justify-content: flex-start;
      gap: .375rem;
      padding: .15rem 0;
      color: var(--color-text-secondary, #aeb5c0);
      font-size: inherit;
      line-height: inherit;
    }
    .mwi-asset-row::before {
      position: absolute;
      top: 50%;
      left: -.5rem;
      width: .5rem;
      border-top: 1px solid rgba(var(--mwi-summary-accent), .25);
      content: "";
    }
    .mwi-asset-row .mwi-number, .mwi-asset-row > span:last-child { color: #f3f5f7; font-weight: 600; }
    .mwi-inventory-category-heading {
      display: flex !important;
      min-width: 0;
      align-items: center;
      gap: 8px;
    }
    .mwi-inventory-category-value {
      display: inline-flex;
      max-width: min(48%, 150px);
      align-items: center;
      overflow: hidden;
      padding: 2px 7px;
      border: 1px solid rgba(230, 181, 79, .22);
      border-radius: 999px;
      background: rgba(230, 181, 79, .09);
      color: #e6c778;
      font-size: .68rem;
      font-weight: 650;
      line-height: 1.25;
      letter-spacing: .015em;
      pointer-events: none;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    @keyframes mwi-summary-reveal {
      from { opacity: 0; transform: translateY(-3px); }
      to { opacity: 1; transform: translateY(0); }
    }
  `,(document.head??document.documentElement).appendChild(e)}s(w5,"addInventorySummaryStyles");function wa(e){return`<span class="mwi-number" title="${u.api.formatExactNumber(e)}">${u.api.numberFormatter(e)}</span>`}s(wa,"numberHtml");function v5(e,t){let a=e.querySelector('[class*="Inventory_categoryButton"]'),n=a?a.ownerDocument?.defaultView?.getComputedStyle(a):null,i=Number.parseFloat(n?.fontSize)>0?n.fontSize:".875rem",o=n?.lineHeight&&n.lineHeight!=="normal"?n.lineHeight:"1.2";t.style.setProperty("--mwi-inventory-heading-font-size",i),t.style.setProperty("--mwi-inventory-heading-line-height",o)}s(v5,"syncInventorySummaryTypography");function x5(){Array.isArray(u.state.initData_characterItems)&&(clearTimeout(wm),wm=setTimeout(()=>O0(),100))}s(x5,"scheduleNetworthRefresh");function k5(){let e=String(u.state.currentCharacterId??"").trim();return e?`${u.api.getMarketEnvironment?.()??"production"}:${e}`:""}s(k5,"inventoryDisplayKey");var S5={"/item_categories/currency":["currency","currencies","货币"],"/item_categories/loot":["loot","loots","战利品"],"/item_categories/scroll":["scroll","scrolls","卷轴"],"/item_categories/labyrinth":["labyrinth","迷宫"],"/item_categories/dungeon_key":["dungeon key","dungeon keys","地牢钥匙","地下城钥匙"],"/item_categories/food":["food","foods","食物"],"/item_categories/drink":["drink","drinks","饮料"],"/item_categories/ability_book":["ability book","ability books","技能书"],"/item_categories/equipment":["equipment","装备"],"/item_categories/resource":["resource","resources","资源"]};function C5(e){return String(e??"").replace(/^[+−-]\s*/,"").replace(/\s*\(\d+\)\s*$/,"").trim().toLowerCase()}s(C5,"normalizeCategoryLabel");function A5(e,t){let a=e.querySelector('div[class*="Item_itemContainer"] svg[aria-label]')?.getAttribute("aria-label")?.trim();if(a){let i=u.config.isZHInGameSetting?u.api.getItemEnNameFromZhName?.(a)??a:a,o=u.state.itemEnNameToHridMap?.[i],r=u.state.initData_itemDetailMap?.[o]?.categoryHrid;if(r)return r}let n=[u.api.getOriTextFromElement?.(t),t.textContent].map(C5);return Object.entries(S5).find(([,i])=>n.some(o=>i.includes(o)))?.[0]}s(A5,"resolveInventoryCategoryHrid");function xm(){let e=new Map;for(let t of u.state.initData_characterItems??[]){if(t?.itemLocationHrid!=="/item_locations/inventory"||t.itemHrid==="/items/cowbell"&&!u.api.shouldIncludeCowbellsInAssets())continue;let a=u.state.initData_itemDetailMap?.[t.itemHrid]?.categoryHrid;if(!a)continue;let n=Math.max(0,Number(t.count)||0)*u.api.getAssetValue(t.itemHrid,t.enhancementLevel,{itemLocationHrid:t.itemLocationHrid});e.set(a,(e.get(a)??0)+n)}return e}s(xm,"calculateInventoryCategoryValues");function km(e,t=xm()){for(let a of e.children){let n=a.matches?.('[class*="Inventory_itemGrid"]')?a:a.querySelector(':scope > [class*="Inventory_itemGrid"]')??a,i=n.querySelector(':scope > [class*="Inventory_label"],:scope > button[class*="Inventory_categoryButton"]');if(!i)continue;let o=A5(n,i);if(!o)continue;let r=t.get(o)??0;n.dataset.mwitoolsInventoryCategory="true",i.classList.add("mwi-inventory-category-heading"),i.querySelector(":scope > .mwi-inventory-category-value")?.remove();let c=document.createElement("span");c.className="mwi-inventory-category-value",c.title=`${u.config.isZH?"分类价值":"Category value"}: ${u.api.formatExactNumber(r)}`,c.textContent=`${u.config.isZH?"价值":"Value"} ${u.api.numberFormatter(r)}`,i.appendChild(c)}}s(km,"addInventoryCategoryValues");async function M5(e=!1){let t=k5();if(!t)return null;if(!e&&Fo.has(t))return Fo.get(t);let a=await u.api.refreshAssetSnapshot();if(!a)return Fo.get(t)??null;let n={snapshot:a,categoryValues:xm(),version:++y5};return Fo.set(t,n),n}s(M5,"getFrozenInventoryDisplay");async function O0(e={}){if(!Array.isArray(u.state.initData_characterItems))return;let t=document.querySelectorAll('div[class*="Inventory_items"]');if(!t.length)return;let a=u.settings.settingsMap.invWorth.isTrue,n=u.settings.settingsMap.invSort.isTrue,i=a?await M5(e.force===!0):null;if(a&&!i)return;let o=i?.snapshot;w5();let r=s(d=>{let{scores:m,values:p}=o,b=d.parentElement?.querySelector("#script_inventory_summary"),f=b?.querySelector("#buildScores")?.style.display==="block",g=b?.querySelector("#skillingScores")?.style.display==="block",h=b?.querySelector("#netWorthDetails")?.style.display==="block";b?.remove();let _=d.parentElement?.querySelector("#script_inv_sort_controls"),y=`<div id="script_inventory_summary">
        <div class="mwi-inventory-summary-grid">
          <section class="mwi-summary-card mwi-summary-card--combat">
            <button type="button" class="mwi-summary-toggle" id="toggleScores" aria-expanded="false" aria-controls="buildScores">
              <span class="mwi-summary-chevron" aria-hidden="true"></span>
              <span class="mwi-summary-heading">
                <span class="mwi-summary-label">${u.config.isZH?"战斗着装评分:":"Combat Gear Score: "}</span>
                <span class="mwi-summary-value">${u.api.formatScore(m.battle.total)}</span>
              </span>
            </button>
            <div class="mwi-summary-details" id="buildScores" style="display: none;" hidden>
              <div class="mwi-summary-stats">
                <div class="mwi-summary-stat"><span class="mwi-summary-stat-label">${u.config.isZH?"房屋:":"House: "}</span><span class="mwi-summary-stat-value">${u.api.formatScore(m.battle.house)}</span></div>
                <div class="mwi-summary-stat"><span class="mwi-summary-stat-label">${u.config.isZH?"技能:":"Abilities: "}</span><span class="mwi-summary-stat-value">${u.api.formatScore(m.battle.abilities)}</span></div>
                <div class="mwi-summary-stat"><span class="mwi-summary-stat-label">${u.config.isZH?"装备:":"Equipment: "}</span><span class="mwi-summary-stat-value">${u.api.formatScore(m.battle.equipment)}</span></div>
              </div>
            </div>
          </section>

          <section class="mwi-summary-card mwi-summary-card--skilling">
            <button type="button" class="mwi-summary-toggle" id="toggleSkillingScores" aria-expanded="false" aria-controls="skillingScores">
              <span class="mwi-summary-chevron" aria-hidden="true"></span>
              <span class="mwi-summary-heading">
                <span class="mwi-summary-label">${u.config.isZH?"生活着装评分:":"Skilling Gear Score: "}</span>
                <span class="mwi-summary-value">${u.api.formatScore(m.skilling.total)}</span>
              </span>
            </button>
            <div class="mwi-summary-details" id="skillingScores" style="display: none;" hidden>
              <div class="mwi-summary-stats">
                <div class="mwi-summary-stat"><span class="mwi-summary-stat-label">${u.config.isZH?"房屋:":"House: "}</span><span class="mwi-summary-stat-value">${u.api.formatScore(m.skilling.house)}</span></div>
                <div class="mwi-summary-stat"><span class="mwi-summary-stat-label">${u.config.isZH?"工具:":"Tools: "}</span><span class="mwi-summary-stat-value">${u.api.formatScore(m.skilling.tools)}</span></div>
                <div class="mwi-summary-stat"><span class="mwi-summary-stat-label">${u.config.isZH?"装备:":"Equipment: "}</span><span class="mwi-summary-stat-value">${u.api.formatScore(m.skilling.equipment)}</span></div>
              </div>
            </div>
          </section>

          <section class="mwi-summary-card mwi-summary-card--assets">
            <button type="button" class="mwi-summary-toggle" id="toggleNetWorth" aria-expanded="false" aria-controls="netWorthDetails">
              <span class="mwi-summary-chevron" aria-hidden="true"></span>
              <span class="mwi-summary-heading">
                <span class="mwi-summary-label">${u.config.isZH?"总资产:":"Total assets: "}</span>
                <span class="mwi-summary-value">${wa(p.total)}</span>
              </span>
            </button>
            <div class="mwi-summary-details" id="netWorthDetails" style="display: none;" hidden>
              <div class="mwi-asset-groups">
                <section class="mwi-asset-group">
                  <button type="button" class="mwi-asset-toggle" id="toggleCurrentAssets" aria-expanded="false" aria-controls="currentAssets"><span class="mwi-summary-chevron" aria-hidden="true"></span><span>${u.config.isZH?"流动资产":"Liquid assets"}</span><span class="mwi-asset-subtotal">${wa(p.liquid)}</span></button>
                  <div class="mwi-asset-rows" id="currentAssets" style="display: none;" hidden>
                    <div class="mwi-asset-row"><span>${u.config.isZH?"装备:":"Equipment: "}</span>${wa(p.equipment)}</div>
                    <div class="mwi-asset-row"><span>${u.config.isZH?"库存:":"Inventory: "}</span>${wa(p.inventory)}</div>
                    <div class="mwi-asset-row"><span>${u.config.isZH?"市场订单:":"Market orders: "}</span>${wa(p.marketListings)}</div>
                  </div>
                </section>
                <section class="mwi-asset-group">
                  <button type="button" class="mwi-asset-toggle" id="toggleNonCurrentAssets" aria-expanded="false" aria-controls="nonCurrentAssets"><span class="mwi-summary-chevron" aria-hidden="true"></span><span>${u.config.isZH?"非流动资产":"Non-current assets"}</span><span class="mwi-asset-subtotal">${wa(p.fixed)}</span></button>
                  <div class="mwi-asset-rows" id="nonCurrentAssets" style="display: none;" hidden>
                    <div class="mwi-asset-row"><span>${u.config.isZH?"房屋:":"Houses: "}</span>${wa(p.houses)}</div>
                    <div class="mwi-asset-row"><span>${u.config.isZH?"技能:":"Abilities: "}</span>${wa(p.abilities)}</div>
                    <div class="mwi-asset-row"><span>${u.config.isZH?"不可交易代币:":"Non-tradable tokens: "}</span>${wa(p.nonTradableTokens)}</div>
                    <div class="mwi-asset-row"><span>${u.config.isZH?"神龛:":"Shrine: "}</span><span>${p.shrine===null?"—":wa(p.shrine)}</span></div>
                  </div>
                </section>
              </div>
            </div>
          </section>
        </div>
      </div>`;_?_.insertAdjacentHTML("afterend",y):d.insertAdjacentHTML("beforebegin",y);let w=d.parentElement.querySelector("#script_inventory_summary");v5(d,w);let k=w.querySelector("#toggleScores"),C=w.querySelector("#buildScores"),x=w.querySelector("#toggleSkillingScores"),T=w.querySelector("#skillingScores"),A=w.querySelector("#toggleNetWorth"),I=w.querySelector("#netWorthDetails"),R=w.querySelector("#toggleCurrentAssets"),z=w.querySelector("#currentAssets"),j=w.querySelector("#toggleNonCurrentAssets"),W=w.querySelector("#nonCurrentAssets"),B=s((M,N,q)=>{M.setAttribute("aria-expanded",String(q)),N.hidden=!q,N.style.display=q?"block":"none"},"setExpanded");h&&(B(A,I,!0),B(R,z,!0),B(j,W,!0)),f&&B(k,C,!0),g&&B(x,T,!0),k.addEventListener("click",()=>{let M=C.style.display==="none";B(k,C,M)}),x.addEventListener("click",()=>{let M=T.style.display==="none";B(x,T,M)}),A.addEventListener("click",()=>{let M=I.style.display==="none";B(A,I,M),B(R,z,M),B(j,W,M)}),R.addEventListener("click",()=>{let M=z.style.display==="none";B(R,z,M)}),j.addEventListener("click",()=>{let M=W.style.display==="none";B(j,W,M)})},"addInventorySummary"),c=s(d=>{if(d.closest('[class*="TabPanel_hidden"]'))return!1;let p=d.closest('[class*="TabsComponent_tabPanelsContainer"]')?.parentElement??document;if(p.querySelector('#mwitools-asset-history-tab[data-active="true"]'))return!1;let f=p.querySelector('button[aria-selected="true"], button.Mui-selected, [role="tab"][aria-selected="true"]');if(f){if(f.id==="mwitools-asset-history-tab"||f.dataset.mwiCreditTab==="true"||f.classList.contains("income-tab"))return!1;let g=f.textContent||"";if(!/库存|Inventory/i.test(g)&&!f.querySelector('[class*="Inventory"]'))return!1}return!0},"isInventoryTabActive");s(()=>{for(let d of t){let m=c(d);if(a){d.classList.add("script_buildScore_added");let f=`${i.version}:${u.config.isZH?"zh":"en"}`;d.dataset.mwitoolsInventoryDisplayVersion!==f&&(r(d),km(d,i.categoryValues),d.dataset.mwitoolsInventoryDisplayVersion=f)}(n||a)&&(d.classList.contains("script_invSort_added")||(d.classList.add("script_invSort_added"),Am(d)));let p=d.parentElement?.querySelector("#script_inventory_summary");p&&(p.style.display=m?"":"none");let b=d.parentElement?.querySelector("#script_inv_sort_controls");b&&(b.style.display=m?"":"none")}},"renderInventoryPanels")()}s(O0,"calculateNetworth");function jo(e,t=0,a="fair"){let n=Number(u.api.getAssetValue?.(e,t))||Number(u.api.getFairValue?.(e,t))||0;return a==="ask"?Number(u.api.getAskPrice?.(e,t))||n:a==="bid"&&Number(u.api.getBidPrice?.(e,t))||n}s(jo,"getInventorySortUnitValue");function Sm(e){let t=e?.querySelector?.('[class*="Item_enhancementLevel"]')?.textContent??"";return Number.parseInt(t.replace(/\D/g,""),10)||0}s(Sm,"getInventoryItemEnhancementLevel");function Cm(e){return e!=="Equipment"}s(Cm,"isSortableInventoryCategory");async function Am(e){let t=u.settings.settingsMap.invSort.isTrue,a=u.settings.settingsMap.invWorth.isTrue;if(t&&!(await u.api.fetchMarketJSON())?.marketData){console.error(u.config.isZH?"[MWITools] 市场数据不可用,无法创建库存排序按钮。":"[MWITools] Market data is unavailable; inventory sort controls were not created.");return}let n=`<button
        id="script_sortByFair_btn">
        ${u.config.isZH?"市场价值":"Market Value"}
        </button>`,i=`<button
        id="script_sortByAsk_btn">
        ${u.config.isZH?"出售价":"Ask"}
        </button>`,o=`<button
        id="script_sortByBid_btn">
        ${u.config.isZH?"收购价":"Bid"}
        </button>`,r=`<button
        id="script_sortByNone_btn">
        ${u.config.isZH?"无":"None"}
        </button>`,c=`<button
        id="script_refresh_inventory_btn"
        style="border-radius: 4px; padding: 2px 8px; margin-left: 6px; cursor: pointer; font: inherit; font-size: 0.78rem; background-color: rgba(255, 255, 255, 0.08); color: var(--color-text-primary, #e8ebef); border: 1px solid rgba(255, 255, 255, 0.16);">
        ${u.config.isZH?"刷新":"Refresh"}
        </button>`,l=`<div id="script_inv_sort_controls" style="color: ${u.config.SCRIPT_COLOR_MAIN}; font-size: 0.875rem; text-align: left; ">${t?u.config.isZH?"物品排序:":"Sort items by: ":""}${t?`${n} ${i} ${o} ${r}`:""}${a?` ${c}`:""}</div>`;if(!e.isConnected||!e.parentElement)return;let d=e.parentElement.querySelector("#script_inventory_summary");d?d.insertAdjacentHTML("beforebegin",l):e.insertAdjacentHTML("beforebegin",l);let m=s(f=>{let g=e.parentElement;if(!g)return;let h={fair:g.querySelector("button#script_sortByFair_btn"),ask:g.querySelector("button#script_sortByAsk_btn"),bid:g.querySelector("button#script_sortByBid_btn"),none:g.querySelector("button#script_sortByNone_btn")};for(let[_,y]of Object.entries(h)){if(!y)continue;let w=_===f;y.style.borderRadius="4px",y.style.padding="2px 8px",y.style.margin="0 2px",y.style.cursor="pointer",y.style.font="inherit",y.style.fontSize="0.78rem",y.style.transition="all 0.15s ease-in-out",w?(y.style.backgroundColor=u.config.SCRIPT_COLOR_MAIN,y.style.color="#0b1522",y.style.fontWeight="700",y.style.border="1px solid transparent",y.style.boxShadow="0 0 8px rgba(0, 198, 255, 0.45)"):(y.style.backgroundColor="rgba(255, 255, 255, 0.08)",y.style.color="var(--color-text-secondary, #aeb5c0)",y.style.fontWeight="500",y.style.border="1px solid rgba(255, 255, 255, 0.16)",y.style.boxShadow="none")}},"updateSortButtonStyles"),p=s(f=>{m(f);for(let g of e.children){let h=g.querySelector('[class*="Inventory_categoryButton"]'),_=u.api.getOriTextFromElement?.(h)??h?.textContent??"";if(!Cm(_))continue;let y=g.querySelector('[class*="Inventory_label"]');y&&(y.style.order=Number.MIN_SAFE_INTEGER);let k=[...g.querySelectorAll('[class*="Item_itemContainer"]')].map((C,x)=>{let T=C.querySelector("svg[aria-label]")?.getAttribute("aria-label")??"";u.config.isZHInGameSetting&&typeof u.api.getItemEnNameFromZhName=="function"&&(T=u.api.getItemEnNameFromZhName(T));let A=u.state.itemEnNameToHridMap[T],I=Sm(C),R=C.querySelector('[class*="Item_count"]')?.textContent??"1",z=u.api.parseCompactNumber?.(R)??Number(R),j=Number.isFinite(Number(z))?Number(z):1,W={ask:jo(A,I,"ask")*j,bid:jo(A,I,"bid")*j,fair:jo(A,I,"fair")*j};C.querySelector("#script_stack_price")||(C.style.position="relative",(C.querySelector('[class*="Item_item"][class*="Item_clickable"]')??C).insertAdjacentHTML("beforeend",`<div
                        id="script_stack_price"
                        style="z-index: 1; position: absolute; top: 2px; left: 2px; text-align: left;">
                    </div>`));let B=C.querySelector("#script_stack_price");return{itemElem:C,originalIndex:x,priceElem:B,values:W}});if(f==="none"){for(let{itemElem:C,priceElem:x}of k)C.style.order=0,x.textContent="";continue}k.sort((C,x)=>x.values[f]-C.values[f]||C.originalIndex-x.originalIndex);for(let[C,{itemElem:x,priceElem:T,values:A}]of k.entries())x.style.order=C,T.textContent=u.api.numberFormatter(A[f])}},"sortItemsBy");t&&(e.parentElement.querySelector("button#script_sortByFair_btn")?.addEventListener("click",()=>p("fair")),e.parentElement.querySelector("button#script_sortByAsk_btn")?.addEventListener("click",()=>p("ask")),e.parentElement.querySelector("button#script_sortByBid_btn")?.addEventListener("click",()=>p("bid")),e.parentElement.querySelector("button#script_sortByNone_btn")?.addEventListener("click",()=>p("none")),m("none"));let b=e.parentElement.querySelector("button#script_refresh_inventory_btn");b?.addEventListener("click",async()=>{let f=u.config.isZH?"刷新":"Refresh";b.disabled=!0,b.textContent=u.config.isZH?"刷新中…":"Refreshing…";try{await O0({force:!0})}finally{b.isConnected&&(b.disabled=!1,b.textContent=f)}})}s(Am,"addInvSortButton");async function T5(){let e=document.querySelector(".ItemSelector_menu__12sEM");if(!e||e.querySelector("#script_itemSelector_sort_div"))return;let t=await u.api.fetchMarketJSON();if(!t||!t.marketData)return;let a={};for(let m in u.state.initData_itemDetailMap)if(u.state.initData_itemDetailMap[m]?.guildCreditConversions){let p=u.state.initData_itemDetailMap[m].guildCreditConversions;for(let b of p){let f=b.creditItemHrid,g=0;t.marketData[m]&&t.marketData[m][0]&&(g=t.marketData[m][0].a);let h=0;if(t.marketData[m]&&t.marketData[m][0]&&(h=t.marketData[m][0].b),g===0&&h===0)continue;let _=g*b.itemCount/b.creditCount,y=h*b.itemCount/b.creditCount,w=u.state.initData_itemDetailMap[m].name,k=u.data.ZHItemNames[m],C=u.config.isZHInGameSetting&&k||w;a[f]||(a[f]={ask:null,bid:null}),g>0&&(!a[f].ask||_<a[f].ask.price)&&(a[f].ask={name:C,price:_}),h>0&&(!a[f].bid||y<a[f].bid.price)&&(a[f].bid={name:C,price:y})}}let n=e.querySelector(".Input_inputContainer__22GnD");if(!n)return;let i=`<button
        id="script_itemSelector_sortByAsk_btn"
        style="border-radius: 3px; background-color: ${u.config.SCRIPT_COLOR_MAIN}; color: black; font-size: 0.875rem; padding: 2px 6px;">
        ${u.config.isZH?"出售价":"Ask"}
        </button>`,o=`<button
        id="script_itemSelector_sortByBid_btn"
        style="border-radius: 3px; background-color: ${u.config.SCRIPT_COLOR_MAIN}; color: black; font-size: 0.875rem; padding: 2px 6px;">
        ${u.config.isZH?"收购价":"Bid"}
        </button>`,r=`<button
        id="script_itemSelector_sortByNone_btn"
        style="border-radius: 3px; background-color: ${u.config.SCRIPT_COLOR_MAIN}; color: black; font-size: 0.875rem; padding: 2px 6px;">
        ${u.config.isZH?"无":"None"}
        </button>`,c=`<div id="script_itemSelector_sort_div" style="color: ${u.config.SCRIPT_COLOR_MAIN}; font-size: 0.875rem; text-align: left; margin-left: 8px; display: inline;">${u.config.isZH?"排序:":"Sort: "}${i} ${o} ${r}</div>`;n.insertAdjacentHTML("afterend",c);let l=e.querySelector(".ItemSelector_itemList__Qa5lq");if(!l)return;let d=s(m=>{let p=l.querySelectorAll(".ItemSelector_itemContainer__3olqe"),b="",f="",g=document.querySelector(".GuildPanel_exchangeModalContent__aQqyL");if(g){let y=g.querySelector(".GuildPanel_arrow__1v2a0 + .Item_itemContainer__x7kH1 svg");if(y){let w=y.attributes["aria-label"]?.value;w&&(u.config.isZHInGameSetting&&(w=u.api.getItemEnNameFromZhName(w)),b=u.state.itemEnNameToHridMap[w],f=w)}}let h=[];p.forEach(y=>{let w=y.querySelector(".Item_itemContainer__x7kH1");if(!w)return;let k=w.querySelector("svg")?.attributes["aria-label"]?.value;if(!k){w.style.order=0;let B=w.querySelector("#script_itemSelector_price");B&&B.remove();return}u.config.isZHInGameSetting&&(k=u.api.getItemEnNameFromZhName(k));let C=u.state.itemEnNameToHridMap[k],x=w.querySelector(".Item_count__1HVvv")?.innerText;if(!x){w.style.order=0;let B=w.querySelector("#script_itemSelector_price");B&&B.remove();return}x=u.api.parseCompactNumber(x);let T=0;t.marketData[C]&&t.marketData[C][0]&&(T=t.marketData[C][0].a);let A=0;t.marketData[C]&&t.marketData[C][0]&&(A=t.marketData[C][0].b);let I=0,R=0,z=0;if(b&&u.state.initData_itemDetailMap[C]?.guildCreditConversions){let M=u.state.initData_itemDetailMap[C].guildCreditConversions.find(N=>N.creditItemHrid===b);M&&(I=x/M.itemCount*M.creditCount,R=T*x/I,z=A*x/I)}b&&R>0&&h.push({name:k,ask:R,bid:z}),w.querySelector("#script_itemSelector_price")||(w.style.position="relative",w.querySelector(".Item_item__2De2O.Item_clickable__3viV6").insertAdjacentHTML("beforeend",`<div
                    id="script_itemSelector_price"
                    style="z-index: 1; position: absolute; top: 2px; left: 2px; text-align: left; font-size: 10px;">
                </div>`));let j=w.querySelector("#script_itemSelector_price");w.querySelector("#script_itemSelector_credit")||w.querySelector(".Item_item__2De2O.Item_clickable__3viV6").insertAdjacentHTML("beforeend",`<div
                    id="script_itemSelector_credit"
                    style="z-index: 1; position: absolute; bottom: 2px; left: 2px; text-align: left; font-size: 10px;">
                </div>`);let W=w.querySelector("#script_itemSelector_credit");if(m==="ask"){let B=R>0?R:T*x;y.style.order=Math.round(B),j.textContent=u.api.numberFormatter(I>0?I:T*x),W.textContent=u.api.numberFormatter(B)}else if(m==="bid"){let B=z>0?z:A*x;y.style.order=Math.round(B),j.textContent=u.api.numberFormatter(I>0?I:A*x),W.textContent=u.api.numberFormatter(B)}else m==="none"&&(y.style.order=0,j.textContent="",W.textContent="")});let _=e.querySelector("#script_best_item");if(m!=="none"&&b&&a[b]){let y=a[b][m];if(y)if(_)_.textContent=`${y.name} ${u.api.numberFormatter(y.price)}`;else{let w=`<span id="script_best_item" style="color: ${u.config.SCRIPT_COLOR_MAIN}; font-size: 0.875rem; margin-left: 8px;">${y.name} ${u.api.numberFormatter(y.price)}</span>`;e.querySelector("#script_itemSelector_sort_div").insertAdjacentHTML("beforeend",w)}else _&&_.remove()}else _&&_.remove()},"sortItemsBy");e.querySelector("button#script_itemSelector_sortByAsk_btn").addEventListener("click",function(m){d("ask")}),e.querySelector("button#script_itemSelector_sortByBid_btn").addEventListener("click",function(m){d("bid")}),e.querySelector("button#script_itemSelector_sortByNone_btn").addEventListener("click",function(m){d("none")})}s(T5,"addGuildCreditConversionsSortButton"),Object.assign(u.api,{calculateNetworth:O0,scheduleNetworthRefresh:x5,addInventoryCategoryValues:km,getInventorySortUnitValue:jo,getInventoryItemEnhancementLevel:Sm,isSortableInventoryCategory:Cm,addInvSortButton:Am,addGuildCreditConversionsSortButton:T5});var q0="mwitools-guild-credit-advisor",Mm="mwitools-guild-credit-advisor-style",Tm="mwi-guild-credit-recommendation",ci='[class*="GuildPanel_exchangeModalContent"]',or='[class*="ItemSelector_menu"]',Jt=12,li=12,E5={green:"#43c4ad",brown:"#b8885b",white:"#dfe4f2",blue:"#6ea9ff",purple:"#a980e9",red:"#e65d68",silver:"#aeb9c9",gold:"#d8a33c"},Hn=null,on=null;function xt(e,t){return Cn(e,t)}s(xt,"t");function rt(e){return String(e??"").replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}s(rt,"escapeHtml");function Nt(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}s(Nt,"positiveNumber");function R0(e,t=2){return Number.isFinite(Number(e))?u.api.numberFormatter?.(Number(e),t)??String(e):"—"}s(R0,"formatNumber");function Dn(e){return Number.isFinite(Number(e))?u.api.formatExactNumber?.(Number(e))??String(e):"—"}s(Dn,"formatExact");function Em(e){if(!e?.isConnected)return!1;for(let t=e;t;t=t.parentElement){if(t.hidden||t.getAttribute?.("aria-hidden")==="true")return!1;let a=t.ownerDocument?.defaultView?.getComputedStyle?.(t);if(a?.display==="none"||a?.visibility==="hidden")return!1}return!0}s(Em,"isVisible");function B0(e=document){return[...e.querySelectorAll(ci)].filter(Em).at(-1)}s(B0,"findGuildExchangeModal");function I5(e=document){return[...e.querySelectorAll(or)].filter(Em).at(-1)}s(I5,"findVisibleItemSelector");function N5(e){let t=e?.getAttribute?.("aria-label")?.trim();if(t&&u.config.isZHInGameSetting&&(t=u.api.getItemEnNameFromZhName?.(t)??t),t&&u.state.itemEnNameToHridMap?.[t])return u.state.itemEnNameToHridMap[t];let a=e?.querySelector?.("use")?.getAttribute?.("href")?.split("#").at(-1);return a?Object.keys(u.state.initData_itemDetailMap??{}).find(n=>n.split("/").at(-1)===a):""}s(N5,"itemHridFromIcon");function H5(){let e=new Set;for(let t of Object.values(u.state.initData_itemDetailMap??{}))for(let a of t?.guildCreditConversions??[])a?.creditItemHrid&&e.add(a.creditItemHrid);return e}s(H5,"guildCreditHrids");function D5(e){let t=H5(),a=[...e.querySelectorAll("svg[aria-label]")].map(N5).filter(Boolean),n=a.find(r=>t.has(r)),i=a.find(r=>r!==n&&u.state.initData_itemDetailMap?.[r]?.guildCreditConversions?.some(c=>c.creditItemHrid===n)),o=e.querySelector('input[type="number"],input');return{creditItemHrid:n,selectedItemHrid:i,batchCount:Math.max(1,Math.floor(Nt(o?.value)||1))}}s(D5,"readGuildExchangeContext");function Im(e){let t=[];for(let[a,n]of Object.entries(u.state.initData_itemDetailMap??{})){let i=n?.hrid??n?.itemHrid??a;for(let o of n?.guildCreditConversions??[]){if(o?.creditItemHrid!==e)continue;let r=Nt(o.itemCount),c=Nt(o.creditCount);!r||!c||t.push({itemHrid:i,itemCount:r,creditCount:c,detail:n})}}return t}s(Im,"collectGuildCreditConversions");function Nm(e){if(Array.isArray(e))return{price:Nt(e[0]),quantity:Nt(e[1])};let t=Nt(e?.quantity??e?.count??Nt(e?.orderQuantity)-Nt(e?.filledQuantity));return{price:Nt(e?.price),quantity:t}}s(Nm,"normalizeOrder");function Hm(e){return u.state.marketOrderBooks?.[e]?.[0]??u.state.marketOrderBooks?.[e]?.["0"]??null}s(Hm,"marketLevelBook");function Dm(e,t,a){let n=Nt(t);if(!n)return{available:!1,totalValue:0,estimated:!1};let i=Hm(e),o=i?.[a];if(i){if(!Array.isArray(o))return{available:!1,totalValue:0,estimated:!1};let c=n,l=0,d=a==="bids",m=o.map(Nm).filter(({price:p,quantity:b})=>p>0&&b>0).sort((p,b)=>d?b.price-p.price:p.price-b.price);for(let p of m){let b=Math.min(c,p.quantity);if(l+=b*p.price,c-=b,c<=0)break}return c<=0?{available:!0,totalValue:l,estimated:!1}:{available:!1,totalValue:0,estimated:!1}}let r=Nt(a==="bids"?u.api.getBidPrice?.(e,0):u.api.getAskPrice?.(e,0));return r?{available:!0,totalValue:r*n,estimated:!0}:{available:!1,totalValue:0,estimated:!0}}s(Dm,"quoteOrderBook");function Pm(e,t){let a=Dm(e,t,"asks");return{available:a.available,totalCost:a.totalValue,estimated:a.estimated}}s(Pm,"quoteGuildCreditAsk");function P5(e,t){let a=Dm(e,t,"bids");return{available:a.available,grossValue:a.totalValue,estimated:a.estimated}}s(P5,"quoteGuildCreditBid");function Lm(e,t=1){let a=Math.max(1,Math.ceil(Nt(t)/e.creditCount)),n=a*e.itemCount,i=a*e.creditCount,o=Pm(e.itemHrid,n);return{...e,...o,batches:a,requiredItems:n,producedCredits:i,costPerCredit:o.available?o.totalCost/i:Number.POSITIVE_INFINITY}}s(Lm,"evaluateGuildCreditConversion");function L5(e,t=1){return Im(e).map(a=>Lm(a,t)).filter(({available:a})=>a).sort((a,n)=>a.costPerCredit-n.costPerCredit||a.totalCost-n.totalCost||sr(a.itemHrid).localeCompare(sr(n.itemHrid)))}s(L5,"evaluateGuildCreditOptions");function $5(e,t){let a=Nt(t);if(!a)return{quantity:0,estimated:!1};let n=Hm(e);if(n){if(!Array.isArray(n.asks))return{quantity:0,estimated:!1};let o=a,r=0,c=n.asks.map(Nm).filter(({price:l,quantity:d})=>l>0&&d>0).sort((l,d)=>l.price-d.price);for(let l of c){let d=Math.floor(o/l.price),m=Math.min(l.quantity,d);if(m<=0)break;r+=m,o-=m*l.price}return{quantity:r,estimated:!1}}let i=Nt(u.api.getAskPrice?.(e,0));return{quantity:i?Math.floor(a/i):0,estimated:!!i}}s($5,"affordableItemsFromAsks");function O5(e,t){let a=$5(e.itemHrid,t),n=Math.floor(a.quantity/e.itemCount);if(n<=0)return{available:!1,estimated:a.estimated,batches:0,requiredItems:0,producedCredits:0,totalCost:0};let i=n*e.itemCount,o=Pm(e.itemHrid,i);return{available:o.available&&o.totalCost<=t,estimated:a.estimated||o.estimated,batches:n,requiredItems:i,producedCredits:n*e.creditCount,totalCost:o.totalCost}}s(O5,"buyGuildCreditsWithinBudget");function q5(e,t,a){let n=Math.max(1,Math.floor(Nt(t))),i=n*e.creditCount;if(e.itemHrid===a.itemHrid)return{status:"already_optimal",directCredits:i,difference:0};let o=n*e.itemCount,r=P5(e.itemHrid,o);if(!r.available)return{status:"no_sell_quote",directCredits:i,saleQuantity:o,sale:r};let c=Math.max(0,Math.min(1,Number(u.api.getMarketTaxRate?.(e.itemHrid))||0)),l=r.grossValue*(1-c),d=O5(a,l);return d.available?{status:"ok",directCredits:i,saleQuantity:o,taxRate:c,netSaleValue:l,sale:r,replacement:d,difference:d.producedCredits-i,estimated:r.estimated||d.estimated}:{status:"unaffordable",directCredits:i,saleQuantity:o,taxRate:c,netSaleValue:l,sale:r,replacement:d}}s(q5,"evaluateGuildCreditReplacement");function sr(e){return Qa(e,{fallback:e})}s(sr,"itemName");function R5(){for(let a of globalThis.performance?.getEntriesByType?.("resource")??[])if(a.name?.includes("items_sprite")&&a.name.endsWith(".svg"))try{return new URL(a.name).pathname}catch{return a.name}let e=document.querySelector('svg use[href*="items_sprite"],svg use[xlink\\:href*="items_sprite"]'),t=e?.getAttribute("href")??e?.getAttribute("xlink:href")??"";return t.includes("#")?t.split("#")[0]:""}s(R5,"findItemsSpriteBase");function B5(e,t){let a=R5(),n=String(e??"").split("/").at(-1);if(!a||!n)return`<span class="icon-fallback" aria-label="${rt(t)}">?</span>`;let i=`${a}#${n}`;return`<svg class="item-icon" viewBox="0 0 32 32" role="img" aria-label="${rt(t)}"><use href="${rt(i)}" xlink:href="${rt(i)}"></use></svg>`}s(B5,"itemIconMarkup");function z5(e){let t=String(e??"").split("/").at(-1)?.split("_")[0];return E5[t]??u.config.SCRIPT_COLOR_MAIN??"#43c4ad"}s(z5,"creditColor");function F5(){return`
    :host{position:fixed;z-index:2147483000;display:block;width:min(400px,calc(100vw - 24px));max-height:calc(100dvh - 24px);box-sizing:border-box;color:#f4f5ff;font-family:inherit;font-size:11px;line-height:1.25}
    *{box-sizing:border-box}
    .advisor{display:flex;max-height:inherit;flex-direction:column;overflow:hidden;border:1px solid #414361;border-left:4px solid var(--mwi-credit-accent,#43c4ad);border-radius:8px;background:#171927;box-shadow:0 10px 30px rgba(0,0,0,.48)}
    .head{display:flex;align-items:center;justify-content:space-between;gap:7px;padding:6px 9px;border-bottom:1px solid #414361;background:#24263e}
    .title{display:flex;align-items:center;gap:7px;min-width:0;color:#fff;font-size:13px;font-weight:750;white-space:nowrap}
    .credit{display:flex;align-items:center;gap:4px;min-width:0;overflow:hidden;color:#c7cae4;font-size:9px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}
    .credit::before{width:7px;height:7px;flex:0 0 7px;border-radius:2px;background:var(--mwi-credit-accent,#43c4ad);content:""}
    .basis{color:#aeb1c9;font-size:9px;white-space:nowrap}
    .body{min-height:0;overflow-x:hidden;overflow-y:auto;padding:5px;scrollbar-width:thin}
    .ranking{display:grid;gap:3px}
    .rank-row{display:grid;min-height:34px;grid-template-columns:18px 22px minmax(0,1fr) auto;align-items:center;gap:5px;padding:3px 5px;border:1px solid #3d3f5d;border-radius:5px;background:#202139}
    .rank-row.best{border-color:color-mix(in srgb,var(--mwi-credit-accent,#43c4ad) 72%,#414361);background:color-mix(in srgb,var(--mwi-credit-accent,#43c4ad) 13%,#202139)}
    .rank-row.current-row{margin-top:4px;border-style:dashed;background:#1d1f33}
    .rank{display:grid;width:17px;height:17px;place-items:center;border:1px solid #555976;border-radius:50%;color:#c9cce2;font:700 9px ui-monospace,SFMono-Regular,Menlo,monospace}
    .best .rank{border-color:var(--mwi-credit-accent,#43c4ad);background:var(--mwi-credit-accent,#43c4ad);color:#111827}
    .item-icon,.icon-fallback{display:grid;width:22px;height:22px;place-items:center;overflow:hidden;border-radius:4px;background:#292b45;color:#c7cae4;font-weight:700}
    .copy{display:block;min-width:0}
    .name-line{display:flex;min-width:0;align-items:center;gap:5px}
    .name{min-width:0;overflow:hidden;color:#f5f6ff;font-size:11px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}
    .tag{flex:0 0 auto;padding:1px 4px;border:1px solid color-mix(in srgb,var(--mwi-credit-accent,#43c4ad) 65%,#555976);border-radius:999px;color:var(--mwi-credit-accent,#43c4ad);font-size:8px;font-weight:700}
    .price{display:flex;align-items:baseline;justify-content:flex-end;gap:3px;color:var(--mwi-credit-accent,#43c4ad);font:750 12px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:nowrap}
    .price small{color:#aeb1c9;font:500 9px/1.2 inherit}
    .current-heading{margin:4px 2px 3px;color:#aeb1c9;font-size:8px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
    .summary{margin-top:5px;padding:5px 7px;border-top:1px solid #414361;border-radius:0 0 5px 5px;background:#1d1f31;color:#dfe1f4;font-size:9px;line-height:1.35;text-align:center}
    .summary strong{color:var(--mwi-credit-accent,#43c4ad);font-size:10px}
    .summary.warning strong{color:#ffd17c}
    .estimate{margin-top:3px;color:#9296b0;font-size:8px;text-align:center}
    .empty{padding:14px;color:#bfc2d9;text-align:center}
    @media(max-width:760px){
      :host{width:calc(100vw - 16px);max-height:min(38dvh,300px);font-size:10px}
      .head{padding:5px 7px}
      .title{font-size:12px}
      .basis{font-size:8px}
      .body{padding:4px}
      .rank-row{min-height:32px;grid-template-columns:17px 21px minmax(0,1fr) auto;gap:4px;padding:3px 4px}
      .item-icon,.icon-fallback{width:21px;height:21px}
      .name{font-size:10px}
      .price{font-size:11px}
      .price small{font-size:8px}
      .summary{margin-top:4px;padding:4px 6px}
    }
    @media(max-width:420px){
      :host{width:calc(100vw - 12px);max-height:min(40dvh,280px)}
      .head{gap:5px}
      .title{gap:5px}
      .credit{max-width:92px}
      .rank-row{grid-template-columns:17px 20px minmax(0,1fr) auto}
      .item-icon,.icon-fallback{width:20px;height:20px}
    }
  `}s(F5,"advisorStyles");function j5(){let e=document.getElementById(q0);if(e?.shadowRoot)return e;e?.remove(),e=document.createElement("div"),e.id=q0;let t=e.attachShadow({mode:"open"}),a=document.createElement("style");a.textContent=F5();let n=document.createElement("aside");return n.className="advisor",n.setAttribute("role","complementary"),n.setAttribute("aria-live","polite"),t.append(a,n),e}s(j5,"createAdvisorHost");function $m(e,t,{current:a=!1,separate:n=!1}={}){let i=sr(e.itemHrid),o=e.estimated?"≈":"";return`<div class="rank-row${t===0?" best":""}${n?" current-row":""}">
    <span class="rank">${n?"—":t+1}</span>
    ${B5(e.itemHrid,i)}
    <span class="copy"><span class="name-line"><span class="name" title="${rt(i)}">${rt(i)}</span>${a?`<span class="tag">${rt(xt("当前","Current"))}</span>`:""}</span></span>
    <span class="price" title="${rt(Dn(e.costPerCredit))}">${o}${rt(R0(e.costPerCredit))}<small>${rt(xt("每信用点","per credit"))}</small></span>
  </div>`}s($m,"rankRowMarkup");function W5(e,t){if(!e)return`<div class="summary">${rt(xt("选择兑换物品后可比较卖出换购收益。","Select an exchange item to compare sell-and-rebuy returns."))}</div>`;if(e.status==="already_optimal")return`<div class="summary"><strong>${rt(xt("当前方案已是单位信用成本最优","The selected option already has the best unit cost"))}</strong></div>`;if(e.status==="no_sell_quote")return`<div class="summary warning"><strong>${rt(xt("当前物品没有足够的收购报价","The selected item has insufficient buy-order depth"))}</strong><br>${rt(xt("无法估算卖出换购结果。","The sell-and-rebuy result cannot be estimated."))}</div>`;if(e.status==="unaffordable")return`<div class="summary warning"><strong>${rt(xt("税后收入不足以购买一个最优兑换批次","Net sale proceeds cannot buy one batch of the best option"))}</strong></div>`;let a=sr(t.itemHrid),n=Number(e.difference)||0,i;return n>0?i=xt(`卖出当前物品并改买${a},可多兑换 ${Dn(n)} 点信用。`,`Sell the selected items and buy ${a} to gain ${Dn(n)} more credits.`):n<0?i=xt(`直接兑换更划算;改买${a}会少 ${Dn(-n)} 点信用。`,`Direct exchange is better; switching to ${a} yields ${Dn(-n)} fewer credits.`):i=xt(`直接兑换与改买${a}获得的信用点相同。`,`Direct exchange and switching to ${a} yield the same credits.`),`<div class="summary"><strong>${rt(i)}</strong><br>${rt(xt(`税后可用 ${R0(e.netSaleValue)},可购买 ${Dn(e.replacement.requiredItems)} 个材料。`,`${R0(e.netSaleValue)} net proceeds buy ${Dn(e.replacement.requiredItems)} materials.`))}</div>`}s(W5,"replacementSummaryMarkup");function V5({context:e,ranked:t,selected:a,replacement:n}){let i=t.slice(0,3),o=sr(e.creditItemHrid),r=i.some(({itemHrid:m})=>m===e.selectedItemHrid),c=i.map((m,p)=>$m(m,p,{current:m.itemHrid===e.selectedItemHrid})).join(""),l=a&&!r?`<div class="current-heading">${rt(xt("当前方案","Selected option"))}</div>${$m(a,-1,{current:!0,separate:!0})}`:"",d=t.some(({estimated:m})=>m)||n?.estimated;return`<header class="head"><span class="title">${rt(xt("公会信用兑换推荐","Guild Credit Exchange"))}<span class="credit">${rt(o)}</span></span><span class="basis">${rt(xt("按订单深度","Order-book depth"))}</span></header>
    <div class="body">${c?`<div class="ranking">${c}</div>${l}${W5(n,i[0])}${d?`<div class="estimate">${rt(xt("带 ≈ 的市场结果使用当前最低报价估算。","Estimated market results use the current best quote."))}</div>`:""}`:`<div class="empty">${rt(xt("没有具备完整报价的兑换方案。","No exchange option has a complete market quote."))}</div>`}</div>`}s(V5,"advisorMarkup");function Om(e,t,a){return Math.min(Math.max(e,t),Math.max(t,a))}s(Om,"clamp");function G5(e){return e.closest('[class*="Modal_modalContainer"]')??e}s(G5,"findGuildExchangeAnchor");function Z5(){return{width:Number(globalThis.innerWidth)||document.documentElement.clientWidth,height:Number(globalThis.innerHeight)||document.documentElement.clientHeight}}s(Z5,"viewportSize");function z0({left:e,top:t,width:a,height:n},i){return!(i?.width>0)||!(i?.height>0)?!1:!(e+a<=i.left||e>=i.right||t+n<=i.top||t>=i.bottom)}s(z0,"overlapsRect");function qm(e=Hn){!e?.anchor||e.originalTranslate===void 0||(e.originalTranslate?e.anchor.style.setProperty("translate",e.originalTranslate,e.originalTranslatePriority):e.anchor.style.removeProperty("translate"),e.shiftY=0)}s(qm,"restoreGuildExchangeAnchor");function U5(e,t){let a=Math.round(t);a&&(e.anchor.style.setProperty("translate",`0 ${a}px`,"important"),e.shiftY=a)}s(U5,"shiftGuildExchangeAnchor");function K5(e,t,a){let n=Math.min(0,a.height-Jt-t.bottom);return n?(U5(e,n),{...t,top:t.top+n,bottom:t.bottom+n}):t}s(K5,"keepGuildExchangeAnchorReachable");function X5(e){let t=Math.max(72,e.height-Jt*2);return e.width>760?t:Math.min(t,300,Math.max(160,e.height*.38))}s(X5,"responsiveAdvisorMaxHeight");function Rm(){let e=Hn;if(!e?.host?.isConnected||!e.anchor?.isConnected)return!1;qm(e);let t=e.anchor.getBoundingClientRect(),a=e.host.getBoundingClientRect(),n=Z5();t=K5(e,t,n);let i=a.width||Math.min(400,n.width-24),o=X5(n),r=Math.min(a.height||Math.min(260,n.height-24),o),c=I5()?.getBoundingClientRect?.(),l=Om(t.top,Jt,n.height-r-Jt),d={left:t.right+li,top:l,width:i,height:r},m={left:t.left-li-i,top:l,width:i,height:r},p={left:Om(t.left+(t.width-i)/2,Jt,n.width-i-Jt),top:t.top-li-r,width:i,height:r},b=d.left+i<=n.width-Jt&&!z0(d,c),f=m.left>=Jt&&!z0(m,c),g=p.top>=Jt&&!z0(p,c),h=Math.min(t.top,c?.top??Number.POSITIVE_INFINITY),_=h-li-Jt,y=_>=72,w;b?w="right":f?w="left":g?w="top":y?w="top-compressed":w="overlay";let k,C,x=o;return w==="right"?{left:k,top:C}=d:w==="left"?{left:k,top:C}=m:w==="top"?({left:k,top:C}=p,x=Math.min(o,t.top-li-Jt)):w==="top-compressed"?(k=p.left,x=Math.min(o,_),C=h-li-Math.min(r,x)):(k=p.left,C=Jt),e.host.dataset.placement=w,e.host.style.left=`${Math.round(k)}px`,e.host.style.top=`${Math.round(C)}px`,e.host.style.maxHeight=`${Math.max(w==="top-compressed"?1:72,Math.round(x))}px`,!0}s(Rm,"positionGuildCreditAdvisor");function Wo(){if(on!==null)return;let e=s(()=>{on=null,Rm()},"run");typeof globalThis.requestAnimationFrame=="function"?on=globalThis.requestAnimationFrame(e):on=setTimeout(e,0)}s(Wo,"scheduleGuildCreditAdvisorPosition");function Bm(){on!==null&&(typeof globalThis.cancelAnimationFrame=="function"?globalThis.cancelAnimationFrame(on):clearTimeout(on),on=null),qm(),Hn?.resizeObserver?.disconnect(),Hn=null}s(Bm,"clearGuildCreditAdvisorPosition");function J5(e,t){let a=G5(t);if(e.parentElement!==document.body&&document.body.append(e),Hn?.host!==e||Hn?.anchor!==a){Bm();let n=globalThis.ResizeObserver?new globalThis.ResizeObserver(Wo):null;n?.observe(a),n?.observe(e),Hn={anchor:a,host:e,resizeObserver:n,originalTranslate:a.style.getPropertyValue("translate"),originalTranslatePriority:a.style.getPropertyPriority("translate"),shiftY:0}}Rm()}s(J5,"mountGuildCreditAdvisor");function Vo(){Bm(),document.getElementById(q0)?.remove()}s(Vo,"removeGuildCreditAdvisor");async function zm({marketReady:e=!1}={}){let t=B0();if(!t)return Vo(),null;let a=D5(t);if(!a.creditItemHrid||!e&&!await u.api.ensureMarketValueSource?.())return Vo(),null;let i=Im(a.creditItemHrid).find(({itemHrid:b})=>b===a.selectedItemHrid),o=i?i.creditCount*a.batchCount:1,r=L5(a.creditItemHrid,o),c=r[0],l=i?Lm(i,o):null,d=i&&c?q5(i,a.batchCount,c):null,m=j5();m.style.setProperty("--mwi-credit-accent",z5(a.creditItemHrid));let p=m.shadowRoot.querySelector(".advisor");return p.setAttribute("aria-label",xt("公会信用兑换推荐","Guild Credit Exchange")),p.innerHTML=V5({context:a,ranked:r,selected:l,replacement:d}),J5(m,t),m}s(zm,"renderGuildCreditAdvisor");async function Fm(){if(!B0()||!await u.api.ensureMarketValueSource?.())return F0(),null;let e=await zm({marketReady:!0});return{summaries:[],advisor:e}}s(Fm,"renderGuildCreditRecommendations");function F0(){Vo(),document.getElementById(Mm)?.remove(),document.querySelectorAll(`.${Tm}`).forEach(e=>e.remove())}s(F0,"cleanup"),u.features.register({id:"guildCreditConversionsSort",setting:"guildCreditConversionsSort",scope:"character",initialize({scope:e}){document.getElementById(Mm)?.remove(),document.querySelectorAll(`.${Tm}`).forEach(o=>o.remove());let t=null,a=s(()=>{if(t!==null)return;let o=s(()=>{t=null,Fm()},"run");typeof globalThis.requestAnimationFrame=="function"?t=globalThis.requestAnimationFrame(o):t=setTimeout(o,0)},"schedule"),n=new MutationObserver(o=>{let r=B0();o.some(l=>r&&(l.target===r||r.contains?.(l.target)||l.target?.contains?.(r))||l.type==="attributes"&&(l.target?.matches?.(`${ci},${or}`)||l.target?.querySelector?.(`${ci},${or}`))?!0:[...l.addedNodes,...l.removedNodes].some(d=>d?.matches?.(ci)||d?.matches?.(or)||d?.querySelector?.(ci)||d?.querySelector?.(or)))&&a()});e.observer(n,document.body,{attributes:!0,attributeFilter:["aria-hidden","aria-label","class","hidden","href","style"],childList:!0,subtree:!0});let i=s(o=>{o.target?.closest?.(ci)&&a()},"scheduleFromModal");e.event(document,"input",i,!0),e.event(document,"change",i,!0),e.event(globalThis.window??globalThis,"resize",Wo),e.event(globalThis.window??globalThis,"orientationchange",Wo),e.event(globalThis.window??globalThis,"scroll",Wo,!0);for(let o of["market_item_values_updated","market_item_order_books_updated"])e.add(u.onMessage(o,a));e.add(()=>{t!==null&&(typeof globalThis.cancelAnimationFrame=="function"?globalThis.cancelAnimationFrame(t):clearTimeout(t)),F0()}),a()}}),Object.assign(u.api,{renderGuildCreditAdvisor:zm,renderGuildCreditRecommendations:Fm});var di="mwitools-production-profit-panel",jm="mwitools-production-profit-panel-style",na=12,Pn=10,Ht=null;function se(e,t){return Cn(e,t)}s(se,"t");function Qe(e){return String(e??"").replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}s(Qe,"escapeHtml");function Dt(e,t=1){return Number.isFinite(Number(e))?Math.abs(Number(e))>=1e3?u.api.numberFormatter?.(Number(e),t)??String(e):new Intl.NumberFormat(u.config.isZH?"zh-CN":"en-US",{maximumFractionDigits:t}).format(Number(e)):"—"}s(Dt,"formatNumber");function ia(e){return e==null||e===""?"—":Number.isFinite(Number(e))?Dt(e,1):"—"}s(ia,"formatMoney");function Y5(e){return e==null||e===""||!Number.isFinite(Number(e))?"":Qe(u.api.formatExactNumber?.(Number(e))??String(e))}s(Y5,"exactNumberTitle");function Ln(e){let t=Y5(e);return t?` title="${t}"`:""}s(Ln,"numberTitleAttribute");function Wm(e){return`${Number(e||0)>=0?"+":""}${Dt(e,1)}%`}s(Wm,"formatPercent");function va(e){return Qa(e)}s(va,"itemName");function Vm(e,t){return so(e,{detail:t})}s(Vm,"actionName");function Q5(){for(let a of globalThis.performance?.getEntriesByType?.("resource")??[])if(a.name?.includes("items_sprite")&&a.name.endsWith(".svg"))try{return new URL(a.name).pathname}catch{return a.name}let e=document.querySelector('svg use[href*="items_sprite"],svg use[xlink\\:href*="items_sprite"]'),t=e?.getAttribute("href")??e?.getAttribute("xlink:href")??"";return t.includes("#")?t.split("#")[0]:""}s(Q5,"findItemsSpriteBase");function ur(e,t){let a=String(e??"").split("/").at(-1),n=Q5();if(!a||!n)return`<span class="mwi-profit-icon-fallback">${Qe(String(t||"?").trim().charAt(0)||"?")}</span>`;let i=`${n}#${a}`;return`<svg class="mwi-profit-icon" viewBox="0 0 32 32" aria-label="${Qe(t)}"><use href="${Qe(i)}" xlink:href="${Qe(i)}"></use></svg>`}s(ur,"renderItemIcon");function Gm(){if(document.getElementById(jm))return;let e=document.createElement("style");e.id=jm,e.textContent=`
    #${di} { position:fixed; z-index:2147483000; width:min(760px,calc(100vw - 24px)); max-height:min(78vh,760px); box-sizing:border-box; overflow:auto; pointer-events:none; color:var(--color-text-primary,#f2f2f2); border:1px solid rgba(255,255,255,.16); border-radius:10px; background:linear-gradient(145deg,rgba(35,39,47,.985),rgba(19,22,28,.985)); box-shadow:0 18px 48px rgba(0,0,0,.48),0 2px 8px rgba(0,0,0,.3); font-family:inherit; font-size:12px; line-height:1.35; scrollbar-width:thin; backdrop-filter:blur(12px); }
    #${di} * { box-sizing:border-box; }
    .mwi-profit-header { display:flex; align-items:center; gap:10px; padding:12px 14px; border-bottom:1px solid rgba(255,255,255,.1); }
    .mwi-profit-header-icon { display:grid; width:38px; height:38px; flex:0 0 38px; place-items:center; border-radius:8px; background:rgba(255,255,255,.065); }
    .mwi-profit-header-main { min-width:0; }
    .mwi-profit-title { color:#fff; font-size:14px; font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .mwi-profit-subtitle { margin-top:2px; color:var(--color-text-secondary,#aeb4bf); font-size:11px; }
    .mwi-profit-status { margin-left:auto; padding:3px 8px; border:1px solid currentColor; border-radius:999px; font-size:10px; font-weight:650; white-space:nowrap; }
    .mwi-profit-status.complete { color:#7bd69a; background:rgba(66,185,108,.1); }
    .mwi-profit-status.partial { color:#e7bd68; background:rgba(221,164,51,.1); }
    .mwi-profit-status.incomplete { color:#ef8c86; background:rgba(218,73,65,.1); }
    .mwi-profit-status.waiting { color:#9fb8df; background:rgba(74,119,187,.1); }
    .mwi-profit-body { display:grid; grid-template-columns:minmax(0,1fr) 138px minmax(0,1fr); gap:10px; padding:12px; align-items:stretch; }
    .mwi-profit-card { min-width:0; padding:10px; border:1px solid rgba(255,255,255,.095); border-radius:8px; background:rgba(255,255,255,.035); }
    .mwi-profit-card.cost { border-top:2px solid rgba(239,124,111,.72); }
    .mwi-profit-card.income { border-top:2px solid rgba(83,201,132,.72); }
    .mwi-profit-card-title { display:flex; align-items:center; justify-content:space-between; margin-bottom:7px; color:#fff; font-size:11px; font-weight:700; letter-spacing:.04em; }
    .mwi-profit-card-total { color:var(--color-text-secondary,#aeb4bf); font-size:10px; font-weight:600; }
    .mwi-profit-item { display:grid; grid-template-columns:28px minmax(0,1fr) auto; gap:7px; align-items:center; padding:7px 0; border-top:1px solid rgba(255,255,255,.065); }
    .mwi-profit-item:first-of-type { border-top:0; }
    .mwi-profit-item-name { min-width:0; color:#edf0f4; font-size:11px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .mwi-profit-item-meta { margin-top:2px; color:var(--color-text-secondary,#9ba2ad); font-size:9.5px; }
    .mwi-profit-item-value { min-width:64px; text-align:right; }
    .mwi-profit-item-value strong { display:block; color:#fff; font-size:11px; }
    .mwi-profit-item-value span { display:block; margin-top:2px; color:var(--color-text-secondary,#9ba2ad); font-size:9.5px; }
    .mwi-profit-kind { display:inline-block; margin-right:4px; padding:0 4px; border-radius:3px; background:rgba(255,255,255,.075); color:#bdc5d1; font-size:8.5px; }
    .mwi-profit-player { display:flex; min-width:0; flex-direction:column; align-items:center; justify-content:center; gap:7px; padding:9px 7px; border:1px solid rgba(255,255,255,.095); border-radius:8px; background:rgba(255,255,255,.025); text-align:center; }
    .mwi-profit-player-title { color:#fff; font-size:11px; font-weight:700; }
    .mwi-profit-teas { display:flex; min-height:28px; align-items:center; justify-content:center; gap:4px; }
    .mwi-profit-tea { display:grid; width:27px; height:27px; place-items:center; border-radius:6px; background:rgba(255,255,255,.07); }
    .mwi-profit-no-tea { color:var(--color-text-secondary,#9ba2ad); font-size:9.5px; }
    .mwi-profit-effects { display:flex; flex-wrap:wrap; justify-content:center; gap:3px; }
    .mwi-profit-effect { padding:2px 5px; border-radius:999px; color:#d5dbe4; background:rgba(255,255,255,.07); font-size:9px; }
    .mwi-profit-flow { color:var(--color-primary,#70a8ff); font-size:24px; line-height:1; }
    .mwi-profit-stat-list { width:100%; }
    .mwi-profit-stat { display:flex; justify-content:space-between; gap:6px; padding:3px 0; border-top:1px solid rgba(255,255,255,.055); color:var(--color-text-secondary,#a4abb6); font-size:9.5px; }
    .mwi-profit-stat strong { color:#edf0f4; font-weight:650; }
    .mwi-profit-valuations { display:flex; flex-direction:column; gap:4px; padding:0 12px 10px; }
    .mwi-profit-valuation-row { display:grid; grid-template-columns:126px repeat(6,minmax(0,1fr)); min-width:0; overflow:hidden; border:1px solid rgba(255,255,255,.1); border-left:3px solid var(--mwi-valuation-color); border-radius:7px; background:rgba(255,255,255,.03); }
    .mwi-profit-valuation-row[data-mode="fair"] { --mwi-valuation-color:#74a9ef; }
    .mwi-profit-valuation-row[data-mode="conservative"] { --mwi-valuation-color:#e1b65d; }
    .mwi-profit-valuation-row[data-mode="aggressive"] { --mwi-valuation-color:#68c98e; }
    .mwi-profit-valuation-row.mwi-loot-valuation-row { grid-template-columns:126px repeat(3,minmax(0,1fr)); }
    .mwi-profit-valuation-row.incomplete { opacity:.72; }
    .mwi-profit-valuation-name { display:flex; min-width:0; flex-direction:column; justify-content:center; gap:1px; padding:5px 8px; border-right:1px solid rgba(255,255,255,.08); }
    .mwi-profit-valuation-title { color:#fff; font-size:10.5px; font-weight:750; line-height:1.2; }
    .mwi-profit-valuation-state { color:var(--mwi-valuation-color); font-size:8px; line-height:1.15; }
    .mwi-profit-valuation-metric { min-width:0; padding:5px 4px; border-left:1px solid rgba(255,255,255,.055); text-align:center; }
    .mwi-profit-valuation-name + .mwi-profit-valuation-metric { border-left:0; }
    .mwi-profit-valuation-label { min-height:2.2em; color:var(--color-text-secondary,#9da5b0); font-size:8px; line-height:1.1; }
    .mwi-profit-valuation-value { margin-top:2px; color:#fff; font-size:10.5px; font-weight:700; overflow-wrap:anywhere; }
    .mwi-profit-valuation-metric.profit { background:rgba(55,160,97,.075); }
    .mwi-profit-valuation-metric.profit .mwi-profit-valuation-value { color:#82dfa4; }
    .mwi-profit-warning { margin:0 12px 12px; padding:8px 10px; border:1px solid rgba(224,177,75,.25); border-radius:7px; background:rgba(195,139,30,.09); color:#e3c276; font-size:10px; }
    .mwi-profit-hint { margin:0 12px 12px; color:var(--color-text-secondary,#8b93a0); font-size:9.5px; line-height:1.35; }
    #${di}.mwi-profit-pinned { pointer-events:auto; }
    .mwi-profit-close { flex:0 0 auto; width:22px; height:22px; margin-left:auto; padding:0; border:1px solid rgba(255,255,255,.16); border-radius:5px; background:rgba(255,255,255,.06); color:#e7e9ef; font-size:14px; line-height:1; cursor:pointer; }
    .mwi-profit-close:hover { background:rgba(255,255,255,.14); }
    .mwi-loot-controls { display:grid; grid-template-columns:minmax(0,1fr); gap:8px; margin:10px 12px 0; padding:8px 10px; border:1px solid rgba(255,255,255,.08); border-radius:7px; background:rgba(0,0,0,.12); }
    .mwi-loot-controls.has-key { grid-template-columns:repeat(3,minmax(0,1fr)); }
    .mwi-loot-control { display:grid; min-width:0; min-height:38px; grid-template-columns:minmax(0,1fr) 36px; grid-template-rows:auto 20px; align-items:center; gap:2px 7px; padding:0 7px; border-left:1px solid rgba(255,255,255,.07); }
    .mwi-loot-control:first-child { padding-left:0; border-left:0; }
    .mwi-loot-control-label { min-width:0; grid-column:1 / 3; color:#edf0f4; font-size:10.5px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .mwi-loot-control-state { min-width:0; color:var(--color-text-secondary,#aeb4bf); font-size:9.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .mwi-loot-switch { position:relative; width:36px; height:20px; flex:0 0 36px; }
    .mwi-loot-switch input { position:absolute; opacity:0; pointer-events:none; }
    .mwi-loot-switch span { position:absolute; inset:0; border-radius:999px; cursor:pointer; background:#555; transition:.16s; }
    .mwi-loot-switch span::after { content:""; position:absolute; top:2px; left:2px; width:16px; height:16px; border-radius:50%; background:#fff; transition:.16s; }
    .mwi-loot-switch input:checked + span { background:var(--color-primary,#70a8ff); }
    .mwi-loot-switch input:checked + span::after { transform:translateX(16px); }
    .mwi-loot-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(112px,1fr)); gap:6px; margin-top:8px; }
    .mwi-loot-cell { position:relative; display:flex; min-width:0; align-items:center; gap:6px; padding:5px 7px; border:1px solid rgba(255,255,255,.08); border-radius:6px; background:rgba(255,255,255,.03); }
    .mwi-loot-cell.unpriced { opacity:.6; }
    .mwi-loot-cell.best-redemption { border-color:rgba(255,193,74,.86); background:linear-gradient(135deg,rgba(255,185,55,.16),rgba(255,255,255,.035)); box-shadow:0 0 0 1px rgba(255,184,55,.12),0 0 14px rgba(255,171,42,.12); }
    .mwi-loot-best-badge { position:absolute; top:-6px; right:-4px; z-index:1; padding:1px 5px; border:1px solid rgba(255,211,112,.72); border-radius:999px; background:#7b5410; color:#fff3cf; font-size:8px; font-weight:750; line-height:1.35; white-space:nowrap; }
    .mwi-loot-cell-icon { position:relative; flex:0 0 26px; width:26px; height:26px; }
    .mwi-loot-cell-icon .mwi-profit-icon,.mwi-loot-cell-icon .mwi-profit-icon-fallback { width:26px; height:26px; }
    .mwi-loot-cell-chance { position:absolute; right:-3px; bottom:-3px; padding:0 3px; border-radius:6px; background:rgba(15,18,28,.92); color:#cbd3f4; font-size:8px; line-height:1.3; box-shadow:0 0 0 1px rgba(255,255,255,.1); }
    .mwi-loot-cell-main { min-width:0; }
    .mwi-loot-cell-name { overflow:hidden; color:#edf0f4; font-size:10.5px; font-weight:600; text-overflow:ellipsis; white-space:nowrap; }
    .mwi-loot-cell-value { margin-top:1px; color:#82dfa4; font-size:10px; font-weight:650; }
    .mwi-loot-cell.unpriced .mwi-loot-cell-value { color:var(--color-text-secondary,#9ba2ad); }
    .mwi-profit-state { margin:12px; padding:18px; border:1px solid rgba(255,255,255,.09); border-radius:8px; background:rgba(255,255,255,.03); color:var(--color-text-secondary,#acb3be); text-align:center; }
    .mwi-profit-icon,.mwi-profit-icon-fallback { width:26px; height:26px; }
    .mwi-profit-icon-fallback { display:grid; place-items:center; border-radius:5px; background:rgba(255,255,255,.09); color:#fff; font-weight:700; }
    .mwi-profit-header-icon .mwi-profit-icon,.mwi-profit-header-icon .mwi-profit-icon-fallback { width:32px; height:32px; }
    .mwi-profit-tea .mwi-profit-icon,.mwi-profit-tea .mwi-profit-icon-fallback { width:23px; height:23px; }
    @media(max-width:760px){#${di}{max-height:72vh}.mwi-profit-body{grid-template-columns:1fr}.mwi-profit-player{order:-1;flex-direction:row;flex-wrap:wrap}.mwi-profit-flow{transform:rotate(90deg)}.mwi-profit-stat-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 8px}.mwi-profit-valuation-row{grid-template-columns:repeat(2,minmax(0,1fr))}.mwi-profit-valuation-name{grid-column:1 / 3;border-right:0;border-bottom:1px solid rgba(255,255,255,.08)}.mwi-profit-valuation-metric{border-top:1px solid rgba(255,255,255,.055)}.mwi-profit-valuation-name + .mwi-profit-valuation-metric{border-left:0}}
  `,(document.head??document.documentElement).appendChild(e)}s(Gm,"addStyles");function Zm(e,t){let a=va(e.itemHrid),n=t==="input",i=Number(e.baseCount??e.count)||0,o=Number(e.effectiveCount??e.count)||0,r=Dt(o,3);Math.abs(i-o)>1e-9&&(r=`${Dt(i,3)} → ${r}`);let c="";e.isUpgradeItem&&(c=se("前置","Base")),e.kind==="essence"&&(c=se("精华","Essence")),e.kind==="rare"&&(c=se("稀有","Rare"));let l=n?se("市价","Market value"):e.valueSource==="derived"?se("派生期望值","Derived expected value"):se("税后市价","Net market value");return`
    <div class="mwi-profit-item" data-item-hrid="${Qe(e.itemHrid)}">
      <div>${ur(e.itemHrid,a)}</div>
      <div>
        <div class="mwi-profit-item-name">${c?`<span class="mwi-profit-kind">${Qe(c)}</span>`:""}${Qe(a)}</div>
        <div class="mwi-profit-item-meta">${Qe(r)} · ${l} <span${Ln(e.unitPrice)}>${ia(e.unitPrice)}</span></div>
      </div>
      <div class="mwi-profit-item-value">
        <strong${Ln(e.valuePerAction)}>${ia(e.valuePerAction)}</strong>
        <span>${se("每动作","per action")}</span>
      </div>
    </div>`}s(Zm,"renderItemRow");function Ra(e,t,a=!1){return`<div class="mwi-profit-valuation-metric${a?" profit":""}"><div class="mwi-profit-valuation-label">${Qe(e)}</div><div class="mwi-profit-valuation-value"${Ln(t)}>${ia(t)}</div></div>`}s(Ra,"renderValuationMetric");var cr=[{mode:"fair",title:{zh:"市价",en:"Market value"},explanation:{zh:"市场价值",en:"Market value"}},{mode:"conservative",title:{zh:"效率(高买低卖)",en:"Efficiency (buy high, sell low)"},explanation:{zh:"卖单买入 · 买单卖出",en:"Buy at ask · sell at bid"}},{mode:"aggressive",title:{zh:"贪心(低买高卖)",en:"Greedy (buy low, sell high)"},explanation:{zh:"买单买入 · 卖单卖出",en:"Buy at bid · sell at ask"}}];function j0(e){return e?.[u.config.isZH?"zh":"en"]??""}s(j0,"valuationText");function e_(e,t){let a=!!t?.complete,n=a?t.materialCostPerAction+t.teaCostPerAction:null,i=a?t.profitPerHour*24:null;return`<section class="mwi-profit-valuation-row${a?"":" incomplete"}" data-mode="${e.mode}">
    <div class="mwi-profit-valuation-name">
      <div class="mwi-profit-valuation-title">${Qe(j0(e.title))}</div>
      <div class="mwi-profit-valuation-state">${Qe(j0(e.explanation))}</div>
    </div>
    ${Ra(se("税后收入/动作","Net revenue/action"),a?t.revenuePerAction:null)}
    ${Ra(se("材料成本/动作","Materials/action"),a?t.materialCostPerAction:null)}
    ${Ra(se("茶饮成本/动作","Tea cost/action"),a?t.teaCostPerAction:null)}
    ${Ra(se("总成本/动作","Total cost/action"),n)}
    ${Ra(se("净利润/动作","Net profit/action"),a?t.netProfitPerAction:null,!0)}
    ${Ra(se("净利润/天","Net profit/day"),i,!0)}
  </section>`}s(e_,"renderValuationRow");function t_(e){if(e.status==="waiting")return{className:"waiting",label:se("玩家数据未就绪","Player data pending")};let t=cr.map(({mode:n})=>e.valuations?.[n]),a=t.filter(n=>n?.complete).length;return a===0?{className:"incomplete",label:se("无法计算","Unavailable")}:a<t.length?{className:"partial",label:se("部分口径缺价","Some prices missing")}:t.some(n=>n?.unpricedByproducts?.length>0||n?.derivedMissingPrices?.length>0)?{className:"partial",label:se("部分计价","Partial pricing")}:{className:"complete",label:se("完整计价","Fully priced")}}s(t_,"statusInfo");function a_(e,t,a,n={}){let i=va(t),o=t_(a),r=a.detail,c=!!n.directAction,l=c?Vm(a.actionHrid,r):i,d=c?`${se("全部期望产物","All expected outputs")} · ${se("当前玩家实时配置","Current player configuration")}`:`${Vm(a.actionHrid,r)} · ${se("当前玩家实时配置","Current player configuration")}`;if(e.dataset.status=o.className,e.innerHTML=`
    <header class="mwi-profit-header">
      <div class="mwi-profit-header-icon">${ur(t,i)}</div>
      <div class="mwi-profit-header-main">
        <div class="mwi-profit-title">${Qe(l)}</div>
        <div class="mwi-profit-subtitle">${Qe(d)}</div>
      </div>
      <div class="mwi-profit-status ${o.className}">${Qe(o.label)}</div>
    </header>`,a.status==="waiting"){e.insertAdjacentHTML("beforeend",`<div class="mwi-profit-state">${se("正在等待当前角色的装备、技能与茶饮数据,未使用任何默认配置。","Waiting for this character's equipment, skills, and drink data. No defaults are being used.")}</div>`);return}let m=(a.inputs??[]).map(k=>Zm(k,"input")).join(""),p=[...a.outputs??[],...a.byproductOutputs??[]].map(k=>Zm(k,"output")).join(""),b=a.teaEffects?.drinks??[],f=b.length?b.map(k=>{let C=va(k.itemHrid);return`<span class="mwi-profit-tea">${ur(k.itemHrid,C)}</span>`}).join(""):`<span class="mwi-profit-no-tea">${se("未使用茶饮","No active drinks")}</span>`,g=[];a.teaEffects?.lessResource>0&&g.push(`<span class="mwi-profit-effect">${se("工匠","Artisan")} −${Dt(a.teaEffects.lessResource*100,1)}%</span>`),a.teaEffects?.quantity>0&&g.push(`<span class="mwi-profit-effect">${se("额外产量","Extra output")} +${Dt(a.teaEffects.quantity*100,1)}%</span>`),e.insertAdjacentHTML("beforeend",`<div class="mwi-profit-body">
      <section class="mwi-profit-card cost">
        <div class="mwi-profit-card-title"><span>${se("投入","Inputs")}</span><span class="mwi-profit-card-total"${Ln(a.materialCostPerAction)}>${ia(a.materialCostPerAction)} / ${se("动作","action")}</span></div>
        ${m||`<div class="mwi-profit-no-tea">${se("无材料投入","No material inputs")}</div>`}
      </section>
      <section class="mwi-profit-player">
        <div class="mwi-profit-player-title">${se("当前玩家","Current player")}</div>
        <div class="mwi-profit-teas">${f}</div>
        <div class="mwi-profit-effects">${g.join("")}</div>
        <div class="mwi-profit-flow">→</div>
        <div class="mwi-profit-stat-list">
          <div class="mwi-profit-stat"><span>${se("饮料浓度","Drink strength")}</span><strong>×${Dt(a.teaEffects?.concentrationMultiplier??1,3)}</strong></div>
          <div class="mwi-profit-stat"><span>${se("动作速度","Action speed")}</span><strong>${Wm(a.speedPercent)}</strong></div>
          <div class="mwi-profit-stat"><span>${se("综合效率","Efficiency")}</span><strong>${Wm(a.efficiencyPercent)}</strong></div>
          <div class="mwi-profit-stat"><span>${se("动作/小时","Actions/hour")}</span><strong>${Dt(a.actionsPerHour,1)}</strong></div>
          <div class="mwi-profit-stat"><span>${se("茶费/小时","Tea cost/hour")}</span><strong${Ln(a.teaCostPerHour)}>${ia(a.teaCostPerHour)}</strong></div>
        </div>
      </section>
      <section class="mwi-profit-card income">
        <div class="mwi-profit-card-title"><span>${se("产出","Outputs")}</span><span class="mwi-profit-card-total"${Ln(a.revenuePerAction)}>${ia(a.revenuePerAction)} / ${se("动作","action")}</span></div>
        ${p||`<div class="mwi-profit-no-tea">${se("无可计价产出","No priced outputs")}</div>`}
      </section>
    </div>`),e.insertAdjacentHTML("beforeend",`<div class="mwi-profit-valuations">
      ${cr.map(k=>e_(k,a.valuations?.[k.mode])).join("")}
    </div>`);let h=cr.filter(({mode:k})=>!a.valuations?.[k]?.complete),_=[];if(h.length){let k=h.map(C=>{let x=(a.valuations?.[C.mode]?.missingPrices??[]).map(va).join(u.config.isZH?"、":", ");return`${j0(C.title)}:${x||"—"}`}).join(u.config.isZH?";":"; ");_.push(`${se("以下口径缺少必需市场价格:","Required prices are missing for: ")}${k}`)}let y=[...new Set(cr.flatMap(({mode:k})=>a.valuations?.[k]?.unpricedByproducts??[]))];y.length&&_.push(`${se("以下副产物没有市场价,已从利润中排除:","These byproducts have no market price and were excluded: ")}${y.map(va).join(u.config.isZH?"、":", ")}`);let w=[...new Set(cr.flatMap(({mode:k})=>a.valuations?.[k]?.derivedMissingPrices??[]))];w.length&&_.push(`${se("派生期望值仍有内部产物缺价,当前利润只计入已知部分:","Some contents used by derived expected values are unpriced; profit includes only known contents: ")}${w.map(va).join(u.config.isZH?"、":", ")}`),_.length&&e.insertAdjacentHTML("beforeend",`<div class="mwi-profit-warning">${Qe(_.join(u.config.isZH?";":"; "))}</div>`)}s(a_,"renderPanel");function n_(e){let t=va(e.itemHrid),a=e.dropRate>=1?se("必得","100%"):`${Dt(e.dropRate*100,e.dropRate*100<1?2:0)}%`,n=e.minCount===e.maxCount?Dt(e.minCount,0):`${Dt(e.minCount,0)}–${Dt(e.maxCount,0)}`,i=e.redemptions??[],o=i.map(d=>{let m=va(d.tokenItemHrid);return`${se("最佳兑换","Best exchange")} · ${m}: ${Dt(d.tokenCount,0)} → ${Dt(d.rewardCount,0)} ${t} · ${ia(d.valuePerToken)} / ${se("代币","token")}`}),r=e.valueSource==="redemption"?se("最佳兑换折算","Best redemption"):e.valueSource==="derived"?se("派生期望值","Derived expected value"):e.valueSource==="zero"?se("封印计为 0","Seal valued at 0"):e.nested?se("开箱期望","Opening EV"):se("单价","Unit"),c=[`${t}
${se("概率","Chance")}: ${a} · ${se("数量","Count")}: ${n} · ${se("期望","Expected")}: ${Dt(e.expectedCount,2)}`,`${r}: ${e.priced?ia(e.unitValue):se("无价","No price")} · ${se("期望价值","Expected value")}: ${e.priced?ia(e.value):se("无价","No price")}`,...o].join(`
`),l=e.priced?`${e.nested?"≈":""}${ia(e.value)}`:se("无价","No price");return`
    <div class="mwi-loot-cell${e.priced?"":" unpriced"}${i.length?" best-redemption":""}" data-item-hrid="${Qe(e.itemHrid)}" title="${Qe(c)}">
      ${i.length?`<span class="mwi-loot-best-badge">${se("最佳兑换","Best Exchange")}</span>`:""}
      <div class="mwi-loot-cell-icon">
        ${ur(e.itemHrid,t)}
        <span class="mwi-loot-cell-chance">${Qe(a)}</span>
      </div>
      <div class="mwi-loot-cell-main">
        <div class="mwi-loot-cell-name">${Qe(t)}</div>
        <div class="mwi-loot-cell-value">${Qe(l)}</div>
      </div>
    </div>`}s(n_,"renderLootChestDropCell");function W0(e,t,a,n){return`<div class="mwi-loot-control">
    <span class="mwi-loot-control-label">${Qe(t)}</span>
    <span class="mwi-loot-control-state">${Qe(a)}</span>
    <label class="mwi-loot-switch">
      <input type="checkbox" data-mwi-loot-setting="${e}" aria-label="${Qe(t)}"${n?" checked":""}>
      <span aria-hidden="true"></span>
    </label>
  </div>`}s(W0,"renderLootSwitch");function i_(e,t){let a=[W0("lootSellAtAsk",se("产物卖出","Sell drops"),e.sellAtAsk?se("挂卖单","List at ask"):se("立即卖出","Sell now"),e.sellAtAsk)];return t&&a.push(W0("lootBuyAtAsk",se("钥匙或碎片","Key or fragments"),e.buyAtAsk?se("立即买入","Buy now"):se("挂买单","Place bid"),e.buyAtAsk),W0("lootKeyFromFragments",se("钥匙来源","Key source"),e.fromFragments?se("碎片自制","Craft fragments"):se("购买成品","Buy finished"),e.fromFragments)),`<div class="mwi-loot-controls${t?" has-key":""}">${a.join("")}</div>`}s(i_,"renderLootChestControls");function Um(e,t,a,n={}){let i=!!n.pinned,o=va(t),r=!!a.keyItemHrid,c=a.complete?"complete":"partial",l=a.complete?se("完整计价","Fully priced"):se("部分计价","Partial pricing");e.dataset.status=c,e.classList.toggle("mwi-profit-pinned",i),e.innerHTML=`
    <header class="mwi-profit-header">
      <div class="mwi-profit-header-icon">${ur(t,o)}</div>
      <div class="mwi-profit-header-main">
        <div class="mwi-profit-title">${Qe(o)}</div>
        <div class="mwi-profit-subtitle">${Qe(r?se("开箱期望 · 已扣钥匙成本","Opening estimate · net of key cost"):se("开箱期望","Opening estimate"))}</div>
      </div>
      <div class="mwi-profit-status ${c}">${l}</div>
      ${i?`<button type="button" class="mwi-profit-close" aria-label="${se("关闭","Close")}" data-mwi-loot-close="1">×</button>`:""}
    </header>`,i&&e.insertAdjacentHTML("beforeend",i_(a.config,r));let d=a.drops.map(n_).join("");e.insertAdjacentHTML("beforeend",`<section class="mwi-profit-card income" style="margin:12px;">
      <div class="mwi-profit-card-title"><span>${se("可能产出","Possible drops")} (${a.drops.length})</span><span class="mwi-profit-card-total"${Ln(a.grossValue)}>${ia(a.grossValue)}</span></div>
      ${d?`<div class="mwi-loot-grid">${d}</div>`:`<div class="mwi-profit-no-tea">${se("无可计价产出","No priced drops")}</div>`}
    </section>`);let m=a.config.sellAtAsk?se("挂卖单","List at ask"):se("立即卖出","Sell now"),p=r?a.config.fromFragments?se("碎片自制","Crafted from fragments"):se("购买成品","Buy finished"):se("无需钥匙","No key");e.insertAdjacentHTML("beforeend",`<div class="mwi-profit-valuations">
      <section class="mwi-profit-valuation-row mwi-loot-valuation-row${a.complete?"":" incomplete"}" data-mode="fair">
        <div class="mwi-profit-valuation-name">
          <div class="mwi-profit-valuation-title">${se("期望价值","Expected value")}</div>
          <div class="mwi-profit-valuation-state">${Qe(`${m} · ${p}`)}</div>
        </div>
        ${Ra(se("毛期望价值","Gross value"),a.grossValue)}
        ${Ra(se("钥匙成本","Key cost"),r&&!a.keyComplete?null:a.keyCost)}
        ${Ra(se("净期望价值","Net value"),a.netValue,!0)}
      </section>
    </div>`),e.insertAdjacentHTML("beforeend",`<div class="mwi-profit-hint">${se(i?"开关会立即重算并保存;高亮卡片是每枚代币回报最高的兑换物品。":"双击固定面板后可调整买卖方向和钥匙来源;高亮卡片是每枚代币回报最高的兑换物品。",i?"Switches recalculate and save immediately; highlighted cards are the best return per token.":"Double-click to pin and adjust pricing; highlighted cards are the best return per token.")}</div>`),a.missing.length&&e.insertAdjacentHTML("beforeend",`<div class="mwi-profit-warning">${Qe(`${se("以下物品缺少所选口径的价格或配方,未计入期望:","These items lack prices or recipes for the selected mode and were excluded: ")}${a.missing.map(va).join(u.config.isZH?"、":", ")}`)}</div>`)}s(Um,"renderLootChestPanel");function Go(e,t,a){return Math.min(Math.max(e,t),Math.max(t,a))}s(Go,"clamp");function V0(){let e=Ht;if(!e?.anchor?.isConnected||!e.panel?.isConnected){ra();return}let t=e.anchor.getBoundingClientRect(),a=e.panel.getBoundingClientRect(),n=globalThis.innerWidth??document.documentElement.clientWidth,i=globalThis.innerHeight??document.documentElement.clientHeight,o=n-t.right-na,r=t.left-na,c="right",l,d;o>=a.width+Pn?(l=t.right+Pn,d=Go(t.top,na,i-a.height-na)):r>=a.width+Pn?(c="left",l=t.left-a.width-Pn,d=Go(t.top,na,i-a.height-na)):(c=i-t.bottom-na>=a.height+Pn?"bottom":"top",l=Go(t.left,na,n-a.width-na),d=c==="bottom"?t.bottom+Pn:t.top-a.height-Pn,d=Go(d,na,i-a.height-na)),e.panel.dataset.placement=c,e.panel.style.left=`${Math.round(l)}px`,e.panel.style.top=`${Math.round(d)}px`}s(V0,"positionPanel");function ra(){let e=Ht;if(!e){document.getElementById(di)?.remove();return}e.mutationObserver?.disconnect(),e.resizeObserver?.disconnect(),globalThis.removeEventListener?.("resize",e.position),globalThis.removeEventListener?.("scroll",e.position,!0),e.outsideHandler&&document.removeEventListener("mousedown",e.outsideHandler,!0);for(let t of e.settingStops??[])t?.();e.panel?.remove(),Ht=null}s(ra,"hideProductionProfitPanel");function Km(){let e=document.createElement("aside");return e.id=di,e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e}s(Km,"createPanelElement");function Xm(e,t,a={}){let n=!!a.pinned;e.insertAdjacentElement("afterend",t);let i=s(()=>globalThis.requestAnimationFrame?.(V0)??V0(),"position"),o=null,r=null;return n||(o=new MutationObserver(()=>{e.isConnected||ra()}),o.observe(document.body,{childList:!0,subtree:!0}),r=globalThis.ResizeObserver?new globalThis.ResizeObserver(i):null,r?.observe(e),r?.observe(t),globalThis.addEventListener?.("resize",i),globalThis.addEventListener?.("scroll",i,!0)),Ht={anchor:e,panel:t,position:i,mutationObserver:o,resizeObserver:r,pinned:n,...a},i(),n&&document.body&&t.parentElement!==document.body&&document.body.appendChild(t),t}s(Xm,"mountPanel");function r_(e,t,a={}){if(Ht?.pinned)return null;let n=a.actionHrid??u.api.resolveProductionActionByItemHrid?.(t);if(!e?.isConnected||!n)return ra(),null;ra(),Gm();let i=u.api.projectAction(n,1),o=t??u.api.getExpectedOutputs?.(i.detail)?.[0]?.itemHrid;if(!o)return null;let r=Km();return a_(r,o,i,{directAction:!!a.actionHrid}),Xm(e,r,{itemHrid:o,actionHrid:n})}s(r_,"showProductionProfitPanel");function Jm(e,t,a={}){let n=!!a.pinned;if(!n&&Ht?.pinned)return null;let i=u.api.projectLootChest?.(t);if(!e?.isConnected||!i)return ra(),null;ra(),Gm();let o=Km();return Um(o,t,i,{pinned:n}),Xm(e,o,{itemHrid:t,pinned:n,kind:"loot"}),n&&o_(o,t),o}s(Jm,"showLootChestPanel");function o_(e,t){let a=s(()=>{let o=u.api.projectLootChest?.(t);Ht?.panel!==e||!o||Um(e,t,o,{pinned:!0})},"rerender");e.addEventListener("click",o=>{o.target.closest?.("[data-mwi-loot-close]")&&(o.stopPropagation(),ra())}),e.addEventListener("change",o=>{let r=o.target.closest?.("input[data-mwi-loot-setting]");r&&(o.stopPropagation(),u.settings.set?.(r.dataset.mwiLootSetting,r.checked))});let n=["lootSellAtAsk","lootBuyAtAsk","lootKeyFromFragments"].map(o=>u.settings.onChange?.(o,a));n.push(u.settings.onChange?.("lootChestEstimate",o=>{o||ra()})),Ht?.panel===e&&(Ht.settingStops=n);let i=s(o=>{!Ht?.pinned||Ht.panel!==e||e.contains(o.target)||ra()},"outsideHandler");globalThis.setTimeout?.(()=>{Ht?.panel===e&&(document.addEventListener("mousedown",i,!0),Ht.outsideHandler=i)},0)}s(o_,"attachLootChestControls");function s_(){let e=Ht;return!e||e.pinned||e.kind!=="loot"||!e.itemHrid||!e.anchor?.isConnected?!1:!!Jm(e.anchor,e.itemHrid,{pinned:!0})}s(s_,"pinActiveLootChestPanel");function u_(){Ht?.pinned||ra()}s(u_,"dismissHoverPanel"),Object.assign(u.api,{hideProductionProfitPanel:ra,dismissHoverPanel:u_,pinActiveLootChestPanel:s_,positionProductionProfitPanel:V0,showLootChestPanel:Jm,showProductionProfitPanel:r_});var Ym=s(()=>{let e=document.querySelector("div.Header_actionName__31-L2");e?(console.log(u.config.isZH?"[MWITools] 开始监听行动进度栏。":"[MWITools] Started observing the action progress bar."),G0(e),new MutationObserver(t=>t.forEach(a=>{G0()})).observe(e,{characterData:!0,subtree:!0,childList:!0})):setTimeout(Ym,200)},"showTotalActionTime");function G0(){let e=document.querySelector("div.Header_actionName__31-L2 > div.Header_displayName__1hN09");if(e.textContent.includes("["))return;let t="Error",n=e.innerText.match(/\((\d+)\)/);if(n){let i=+n[1],o=+u.api.getOriTextFromElement(document.querySelector(".ProgressBar_text__102Yn")).match(/[\d\.]+/)[0],r=u.state.currentActionsHridList[0].actionHrid,c=1+u.api.getTotalEffiPercentage(r)/100;r.includes("enhanc")&&(c=1);let d=Math.round(i/c)*o;t=" ["+Qm(d)+"]";let m=new Date;m.setSeconds(m.getSeconds()+d),t+=` ${String(m.getHours()).padStart(2,"0")}:${String(m.getMinutes()).padStart(2,"0")}:${String(m.getSeconds()).padStart(2,"0")}`}else t=" [∞]";e.textContent+=t}s(G0,"calculateTotalTime");function Qm(e){if(!Number.isFinite(e)||e<0)return"—";let t=Math.round(e);if(t>=86400){let o=Math.floor(t/86400),r=Math.floor(t%86400/3600),c=Math.floor(t%3600/60),l=[u.config.isZH?`${o}天`:`${o}d`];return r>0&&l.push(u.config.isZH?`${r}小时`:`${r}h`),c>0&&l.push(u.config.isZH?`${c}分`:`${c}m`),l.join(u.config.isZH?"":" ")}let a=new Date(t*1e3);function n(o){return("0"+o).slice(-2)}return s(n,"pad"),a.getUTCHours()+"h "+n(a.getUTCMinutes())+"m "+n(a.getUTCSeconds())+"s"}s(Qm,"timeReadable");var Z0=new MutationObserver(async function(e){for(let t of e)for(let a of t.addedNodes)if(a?.nodeType===1&&a.classList.contains("MuiTooltip-popper")){if(a.querySelector("div.ItemTooltipText_name__2JAHA"))await sf(a);else if(a.querySelector("div.QueuedActions_queuedActionsEditMenu__3OoQH"))u.api.handleActionQueueMenue(a.querySelector("div.QueuedActions_queuedActionsEditMenu__3OoQH"));else if(u.settings.settingsMap.itemTooltip_profit.isTrue){let n=af(a);n&&u.api.showProductionProfitPanel?.(a,null,{actionHrid:n})}}}),ef=new Set(["/action_types/foraging","/action_types/milking","/action_types/woodcutting"]),c_=['[data-action-hrid^="/actions/"]','[class*="SkillAction_skillAction"]','[class*="GatheringProductionSkillPanel_action"]'].join(",");function l_(e){return Object.keys(e??{}).find(t=>t.startsWith("__reactFiber$")||t.startsWith("__reactInternalInstance$"))}s(l_,"reactFiberKey");function tf(e){let t=String(e??""),a=u.state.initData_actionDetailMap?.[t];return ef.has(a?.type)?t:""}s(tf,"gatheringActionHrid");function U0(e,t=0,a=new Set){if(!e||t>3||typeof e!="object"||a.has(e))return"";a.add(e);for(let n of["actionHrid","hrid"]){let i=tf(e[n]);if(i)return i}for(let n of["actionDetail","action","detail","selectedAction","children","props"]){let i=e[n];if(Array.isArray(i)){for(let r of i){let c=U0(r,t+1,a);if(c)return c}continue}let o=U0(i,t+1,a);if(o)return o}return""}s(U0,"actionHridFromReactValue");function af(e){for(let n=e;n;n=n.parentElement){let i=tf(n.dataset?.actionHrid??n.getAttribute?.("data-action-hrid"));if(i)return i;let o=l_(n),r=o?n[o]:null;for(let c=0;r&&c<8;c+=1){for(let l of[r.memoizedProps,r.pendingProps,r.memoizedState,r.stateNode?.props,r.stateNode?.state]){let d=U0(l);if(d)return d}r=r.return}if(n.classList?.contains("MuiTooltip-popper"))break}let t=[u.api.getOriTextFromElement?.(e),e?.textContent,...[...e?.querySelectorAll?.("div,span")??[]].filter(n=>String(n.textContent??"").trim().length<=80).map(n=>u.api.getOriTextFromElement?.(n)??n.textContent)].map(n=>String(n??"").replaceAll(/\s+/g," ").trim()).filter(Boolean);return Object.values(u.state.initData_actionDetailMap??{}).filter(n=>ef.has(n?.type)).filter(n=>{let i=[n.name,u.data.ZHActionNames?.[n.hrid]].map(o=>String(o??"").trim()).filter(Boolean);return t.some(o=>i.includes(o))}).sort((n,i)=>Number(n.sortIndex??0)-Number(i.sortIndex??0)||String(n.hrid).localeCompare(String(i.hrid)))[0]?.hrid??""}s(af,"resolveGatheringActionFromElement");function nf(e){return e?.closest?.(c_)??null}s(nf,"gatheringCardFromEventTarget");var rf={"/action_types/brewing":"brewingSpeed","/action_types/cheesesmithing":"cheesesmithingSpeed","/action_types/cooking":"cookingSpeed","/action_types/crafting":"craftingSpeed","/action_types/foraging":"foragingSpeed","/action_types/milking":"milkingSpeed","/action_types/tailoring":"tailoringSpeed","/action_types/woodcutting":"woodcuttingSpeed","/action_types/alchemy":"alchemySpeed"},of={"/action_types/brewing":"/house_rooms/brewery","/action_types/cheesesmithing":"/house_rooms/forge","/action_types/cooking":"/house_rooms/kitchen","/action_types/crafting":"/house_rooms/workshop","/action_types/foraging":"/house_rooms/garden","/action_types/milking":"/house_rooms/dairy_barn","/action_types/tailoring":"/house_rooms/sewing_parlor","/action_types/woodcutting":"/house_rooms/log_shed","/action_types/alchemy":"/house_rooms/laboratory"},mi={0:0,1:2,2:4.2,3:6.6,4:9.2,5:12,6:15,7:18.2,8:21.6,9:25.2,10:29,11:33.4,12:38.4,13:44,14:50.2,15:57,16:64.4,17:72.4,18:81,19:90.2,20:100};function d_(e){let t=0;for(let a of u.state.initData_characterItems)if(a.itemLocationHrid.includes("_tool")){let n=rf[u.state.initData_actionDetailMap[e].type],i=1+mi[a.enhancementLevel]/100,o=u.state.initData_itemDetailMap[a.itemHrid].equipmentDetail.noncombatStats[n]||0;t+=o*i}return Number(t*100).toFixed(1)}s(d_,"getToolsSpeedBuffByActionHrid");function m_(e){let t=0,a=u.state.initData_actionDetailMap[e].type.replace("/action_types/","")+"Efficiency";for(let n of u.state.initData_characterItems){if(n.itemLocationHrid==="/item_locations/inventory")continue;let i=u.state.initData_itemDetailMap[n.itemHrid],o=i?.equipmentDetail?.noncombatStats[a];if(o&&o>0){let c=1;n.itemLocationHrid.includes("earrings")||n.itemLocationHrid.includes("ring")||n.itemLocationHrid.includes("neck")?c=1+mi[n.enhancementLevel]*5/100:c=1+mi[n.enhancementLevel]/100,t+=o*c}let r=i?.equipmentDetail?.noncombatStats.skillingEfficiency;if(r&&r>0){let c=1;n.itemLocationHrid.includes("earrings")||n.itemLocationHrid.includes("ring")||n.itemLocationHrid.includes("neck")?c=1+mi[n.enhancementLevel]*5/100:c=1+mi[n.enhancementLevel]/100,t+=r*c}}return Number(t*100).toFixed(1)}s(m_,"getItemEffiBuffByActionHrid");function f_(e){let t=of[u.state.initData_actionDetailMap[e].type];if(!t)return 0;let a=u.state.initData_characterHouseRoomMap[t];return a?a.level*1.5:0}s(f_,"getHousesEffBuffByActionHrid");function b_(e){let t={efficiency:0,quantity:0,lessResource:0,extraExp:0,upgradedProduct:0},a=u.state.initData_actionDetailMap[e].type,n=u.state.initData_actionTypeDrinkSlotsMap[a];for(let i of n)if(!(!i||!i.itemHrid))for(let o of u.state.initData_itemDetailMap[i.itemHrid].consumableDetail.buffs)o.typeHrid==="/buff_types/artisan"?t.lessResource+=o.flatBoost*100:o.typeHrid==="/buff_types/action_level"?t.efficiency-=o.flatBoost:o.typeHrid==="/buff_types/gathering"||o.typeHrid==="/buff_types/gourmet"?t.quantity+=o.flatBoost*100:o.typeHrid==="/buff_types/wisdom"?t.extraExp+=o.flatBoost*100:o.typeHrid==="/buff_types/processing"?t.upgradedProduct+=o.flatBoost*100:o.typeHrid==="/buff_types/efficiency"?t.efficiency+=o.flatBoost*100:o.typeHrid===`/buff_types/${a.replace("/action_types/","")}_level`&&(t.efficiency+=o.flatBoost);return t}s(b_,"getTeaBuffsByActionHrid");async function sf(e){let t=e.querySelectorAll("div.ItemTooltipText_name__2JAHA span");if(t.length>1){u.api.dismissHoverPanel?.(),u.api.handleItemTooltipWithEnhancementLevel(e);return}u.api.hideEnhancementCostPanel?.();let a=t[0],n=u.api.getOriTextFromElement(a);u.config.isZHInGameSetting&&(n=u.api.getItemEnNameFromZhName(n));let i=u.state.itemEnNameToHridMap[n],o=0,r=null,c=e.querySelectorAll("span")[1];c?(o=u.api.parseCompactNumber(u.api.getOriTextFromElement(c).split(": ")[1]),r=c.parentNode.nextSibling):r=e.querySelectorAll("span")[0].parentNode.nextSibling;let l="",d=null,m=null,p=null,b=null;if(u.settings.settingsMap.itemTooltip_prices.isTrue&&(d=await p_(),(!d||!d.marketData)&&console.error(u.config.isZH?"[MWITools] 物品悬浮窗无法取得市场数据。":"[MWITools] Item tooltip market data is unavailable."),m=d?.marketData[i]?.[0]?.a??0,p=d?.marketData[i]?.[0]?.b??0,b=u.api.getFairValue(i,0),l+=`
    <div style="color: ${u.config.SCRIPT_COLOR_TOOLTIP};">${u.config.isZH?"市场价值:":"Market value: "}${b>0?fi(b):"-"}${b>0&&o>0?` (${fi(b*o)})`:""}</div>
    <div style="color: ${u.config.SCRIPT_COLOR_TOOLTIP};">${u.config.isZH?"价格: ":"Price: "}${fi(m)} / ${fi(p)} (${m&&m>0?fi(m*o):""} / ${p&&p>0?fi(p*o):""})</div>
    `),u.settings.settingsMap.showConsumTips.isTrue){let y=u.state.initData_itemDetailMap[i],w=y?.consumableDetail?.hitpointRestore,k=y?.consumableDetail?.manapointRestore,C=y?.consumableDetail?.cooldownDuration;if(w&&C){let x=60/(C/1e9)*w,T=m?m/(w/100):null,A=1440*60/(C/1e9);l+=`<div style="color: ${u.config.SCRIPT_COLOR_TOOLTIP}; font-size: 0.625rem;">${T?T.toFixed(0)+(u.config.isZH?"金/100血, ":"coins/100hp, "):""}${x.toFixed(0)+(u.config.isZH?"血/分":"hp/min")}, ${A.toFixed(0)}${u.config.isZH?"个/天":"/day"}</div>`}else if(k&&C){let x=60/(C/1e9)*k,T=m?m/(k/100):null,A=1440*60/(C/1e9);l+=`<div style="color: ${u.config.SCRIPT_COLOR_TOOLTIP}; font-size: 0.625rem;">${T?T.toFixed(0)+(u.config.isZH?"金/100蓝, ":"coins/100mp, "):""}${x.toFixed(0)+(u.config.isZH?"蓝/分":"mp/min")}, ${A.toFixed(0)}${u.config.isZH?"个/天":"/day"}</div>`}else if(C){let x=86400/(C/1e9);l+=`<div style="color: ${u.config.SCRIPT_COLOR_TOOLTIP}">${x.toFixed(0)}${u.config.isZH?"个/天":"/day"}</div>`}}r.insertAdjacentHTML("afterend",l);let f=u.state.initData_openableLootDropMap,g=!!(f instanceof Map?f.get(i):f?.[i]);g&&u.settings.settingsMap.lootChestEstimate?.isTrue?u.api.showLootChestPanel?.(e,i):!g&&u.settings.settingsMap.itemTooltip_profit.isTrue?u.api.showProductionProfitPanel?.(e,i):u.api.dismissHoverPanel?.();let h=r.closest(".MuiTooltip-popper");setTimeout(s(y=>{if(!y.isConnected)return;let w=y.getBoundingClientRect();if(w.top<0||w.bottom>window.innerHeight){let C=y.style.transform.split(/\w+\(|\);?/)[1].split(/,\s?/g).map(x=>parseInt(x));y.style.transform=`translate3d(${C[0]}px, 0px, ${C[2]}px)`}},"fixOverflow"),100,h)}s(sf,"handleTooltipItem");async function p_(e=!1){return u.api.fetchMarketJSON(e)}s(p_,"fetchMarketJSON");function fi(e,t=1){return u.api.numberFormatter(e,t)}s(fi,"numberFormatter");function g_(e){let t=e.replace("Milk","Cow");if(t=t.replace("Log","Tree"),t=t.replace("Cowing","Milking"),t=t.replace("Rainbow Cow","Unicow"),t=t.replace("Collector's Boots","Collectors Boots"),t=t.replace("Knight's Aegis","Knights Aegis"),!u.state.initData_actionDetailMap)return console.error(u.config.isZH?`[MWITools] 无法按物品名称查找行动:行动数据尚未加载(${e})。`:`[MWITools] Cannot find an action by item name because action data is not loaded (${e}).`),null;for(let a of Object.values(u.state.initData_actionDetailMap))if(a.name===t)return a.hrid;return null}s(g_,"getActionHridFromItemName"),Object.assign(u.api,{showTotalActionTime:Ym,calculateTotalTime:G0,timeReadable:Qm,getToolsSpeedBuffByActionHrid:d_,getItemEffiBuffByActionHrid:m_,getHousesEffBuffByActionHrid:f_,getTeaBuffsByActionHrid:b_,handleTooltipItem:sf,getActionHridFromItemName:g_}),Object.defineProperties(u.state,{tooltipObserver:{enumerable:!0,get(){return Z0}}}),Object.defineProperties(u.data,{actionHridToToolsSpeedBuffNamesMap:{enumerable:!0,get(){return rf}},actionHridToHouseNamesMap:{enumerable:!0,get(){return of}},itemEnhanceLevelToBuffBonusMap:{enumerable:!0,get(){return mi}}}),u.features.register({id:"itemTooltip_prices",setting:"itemTooltip_prices",initialize({scope:e}){let t=[GM_addStyle(`div.Header_actionName__31-L2 {
        overflow: visible !important;
        white-space: normal !important;
        height: auto !important;
      }`),GM_addStyle(`span.NavigationBar_label__1uH-y {
        width: 10px !important;
      }`)],a=!1,n=s(()=>{a||!document.body||(Z0.observe(document.body,{attributes:!1,childList:!0,characterData:!1}),a=!0)},"attach");n(),e.interval(n,250),e.event(document,"dblclick",i=>{i.button&&i.button!==0||u.api.pinActiveLootChestPanel?.()&&(i.preventDefault(),i.stopPropagation())},!0),e.add(()=>{Z0.disconnect();for(let i of t)i?.remove?.()})}});for(let e of["itemTooltip_profit","showConsumTips"])u.features.register({id:e,setting:e,dependsOn:["itemTooltip_prices"],initialize({scope:t}){e==="itemTooltip_profit"&&(t.event(document,"mouseover",a=>{let n=nf(a.target);if(!n||n.contains(a.relatedTarget))return;let i=af(n);i&&u.api.showProductionProfitPanel?.(n,null,{actionHrid:i})}),t.event(document,"mouseout",a=>{let n=nf(a.target);!n||n.contains(a.relatedTarget)||u.api.dismissHoverPanel?.()}))}});var uf="mwitools-action-panel-style",h_="/buff_types/efficiency",__="/buff_types/action_level";function y_(){if(document.getElementById(uf))return;let e=document.createElement("style");e.id=uf,e.textContent=`
    .mwi-level-progress { width:100%; max-width:100%; min-width:0; box-sizing:border-box; contain:inline-size; margin-top:6px; padding:6px 8px; border:1px solid rgba(255,255,255,.12); border-radius:5px; background:rgba(255,255,255,.025); color:var(--color-text-primary,#eee); font-size:.6875rem; line-height:1.35; }
    .mwi-level-progress-row { display:flex; align-items:center; gap:6px; min-width:0; }
    .mwi-level-progress-label { flex:0 0 auto; color:var(--color-text-secondary,#aaa); }
    .mwi-target-level-input { width:48px!important; min-width:48px!important; height:23px!important; padding:1px 4px!important; border-radius:3px!important; font:inherit!important; text-align:center; }
    .mwi-level-progress-result { min-width:0; margin-left:auto; text-align:right; font-weight:600; overflow-wrap:anywhere; }
    .mwi-level-meta { margin-top:3px; color:var(--color-text-secondary,#aaa); font-size:.625rem; }
    .mwi-native-level-stat { font:inherit; }
    @media(max-width:520px){.mwi-level-progress-row{align-items:flex-start;flex-wrap:wrap}.mwi-level-progress-result{width:100%;text-align:left}}
  `,(document.head??document.documentElement).appendChild(e)}s(y_,"addActionPanelStyles");var cf=s(()=>{let e=document.querySelector("div.GamePage_mainPanel__2njyb");e?(console.log(u.config.isZH?"[MWITools] 开始监听行动面板。":"[MWITools] Started observing the action panel."),new MutationObserver(async function(a){for(let n of a)for(let i of n.addedNodes)i?.classList?.contains("Modal_modalContainer__3B80m")&&i.querySelector("div.SkillActionDetail_regularComponent__3oCgr")&&Zo(i.querySelector("div.SkillActionDetail_regularComponent__3oCgr"))}).observe(e,{attributes:!1,childList:!0,subtree:!0})):setTimeout(cf,200)},"waitForActionPanelParent");async function Zo(e){if(!u.settings.settingsMap.actionPanel_totalTime.isTrue||e.dataset.mwitoolsActionPanel==="true"&&e.querySelector("#mwi-level-progress")&&e.querySelectorAll(".mwi-native-level-stat").length===4)return;e.querySelector("#mwi-level-progress")?.remove(),e.querySelectorAll(".mwi-native-level-stat").forEach(b=>b.remove()),e.dataset.mwitoolsActionPanel="true",y_();let t=e.querySelector('div[class*="SkillActionDetail_expGain"]'),a=e.querySelector('div[class*="SkillActionDetail_maxActionCountInput"] input');if(!t||!a)return;let n=u.api.resolveProductionAction?.(e),i=u.state.initData_actionDetailMap?.[n],o=u.api.getProductionPanelDuration?.(e);if(!i||!Number.isFinite(o)||o<=0)return;let r=Number(String(u.api.getOriTextFromElement(t)??"").replaceAll(u.config.THOUSAND_SEPERATOR,"").replaceAll(u.config.DECIMAL_SEPERATOR,"."));if(!Number.isFinite(r)||r<=0)return;let c=X0(n),l=1+c.total/100,d=i.experienceGain?.skillHrid,m=null,p=null;for(let b of u.state.initData_characterSkills)if(b.skillHrid===d){m=b.experience,p=b.level;break}if(m!==null&&p!==null){let b=s((R,z,j,W,B)=>{let M=0,N=0;for(let q=R;q<z;q++){let $=null;if(!Number.isFinite(u.state.initData_levelExperienceTable?.[q+1]))return null;q===R?$=u.state.initData_levelExperienceTable[q+1]-m:$=u.state.initData_levelExperienceTable[q+1]-u.state.initData_levelExperienceTable[q];let Y=(q-R)*(1+Number(c.skillLevelRatio||0))*.01,re=Math.ceil($/B);N+=re,M+=re/(j+Y)*W}return{numOfActions:N,timeSec:M}},"calculateNeedToLevel"),f=Math.min(200,(u.state.initData_levelExperienceTable?.length??201)-1),g=document.createElement("section");g.id="mwi-level-progress",g.className="mwi-level-progress";let h=document.createElement("div");h.className="mwi-level-progress-row";let _=document.createElement("span");_.className="mwi-level-progress-label",_.textContent=u.config.isZH?"目标等级":"Target level";let y=document.createElement("input");y.id="tillLevelInput",y.type="number",y.value=String(p+1),y.min=String(p+1),y.max=String(f),y.className=`${a.className} mwi-target-level-input`;let w=document.createElement("span");w.id="tillLevelNumber",w.className="mwi-level-progress-result",h.append(_,y,w),g.append(h);let k=e.querySelector('div[class*="SkillActionDetail_info"]'),C=k?.querySelector('div[class*="SkillActionDetail_label"]'),x=k?.querySelector('div[class*="SkillActionDetail_value"]');if(k&&C&&x){let R=s((z,j,W)=>{let B=document.createElement("div");B.className=`${C.className} mwi-native-level-stat`,B.textContent=j;let M=document.createElement("div");M.id=z,M.className=`${x.className} mwi-native-level-stat`,M.textContent=W,k.append(B,M)},"addNativeStat");R("expPerHour",u.config.isZH?"经验/小时":"XP/hour",u.api.numberFormatter(Math.round(3600/o*r*l))),R("currentEfficiency",u.config.isZH?"当前效率":"Efficiency",`+${Number((l-1)*100).toFixed(1)}%`)}(e.querySelector("#mwi-production-summary")??e.querySelector('div[class*="SkillActionDetail_actionContainer"]')??a.parentElement).insertAdjacentElement("afterend",g);let A=!1,I=s(()=>{let R=Number(y.value);if(R>p&&R<=f){let z=b(p,R,l,o,r);z&&(w.textContent=u.config.isZH?`还需 ${u.api.numberFormatter(z.numOfActions)} 次 · 预计 ${u.api.timeReadable(z.timeSec)}`:`${u.api.numberFormatter(z.numOfActions)} actions · ${u.api.timeReadable(z.timeSec)}`,A&&df(a,String(z.numOfActions)))}else w.textContent=u.config.isZH?`请输入 ${p+1}–${f}`:`Enter ${p+1}–${f}`},"updateTargetLevel");y.addEventListener("input",()=>{A=!0,I()}),I()}if((e.querySelector('div[class*="SkillActionDetail_dropTable"]')?.children.length??0)>1&&u.settings.settingsMap.actionPanel_foragingTotal.isTrue){let b=await u.api.fetchMarketJSON(),f=u.api.getTeaBuffsByActionHrid(n),g=0,h=0,_=u.state.initData_actionTypeDrinkSlotsMap[u.state.initData_actionDetailMap[n].type];for(let N of _)!N||!N.itemHrid||(g+=(b?.marketData[N.itemHrid]?.[0]?.a??0)*12,h+=(b?.marketData[N.itemHrid]?.[0]?.b??0)*12);let y=u.state.initData_actionDetailMap[n].baseTimeCost/1e9,w=u.api.getToolsSpeedBuffByActionHrid(n),C=3600/(y/(1+w/100)),x=u.state.initData_actionDetailMap[n].dropTable,T=0;for(let N of x){let q=b?.marketData[N.itemHrid]?.[0]?.b??0,$=N.dropRate*((N.minCount+N.maxCount)/2);T+=q*$*(1-u.api.getMarketTaxRate(N.itemHrid))}let I=C*1,R=lf(n);C*=1+R/100,I*=1+R/100;let z=I*f.quantity/100,j=T,W=I*j+z*j-g,B=24*W,M=`<div id="totalProfit" class="mwi-level-meta">${u.config.isZH?"综合利润: ":"Overall profit: "}<span class="mwi-number" title="${u.api.formatExactNumber(W)}">${u.api.numberFormatter(W)}</span>${u.config.isZH?"/小时":"/hour"}, <span class="mwi-number" title="${u.api.formatExactNumber(B)}">${u.api.numberFormatter(B)}</span>${u.config.isZH?"/天":"/day"}</div>`;e.querySelector("#mwi-level-progress")?.insertAdjacentHTML("beforeend",M)}}s(Zo,"handleActionPanel");function K0(e,t){return(e??[]).reduce((a,n)=>(n?.typeHrid!==t||(a.ratioBoost+=Number(n.ratioBoost)||0,a.flatBoost+=Number(n.flatBoost)||0),a),{ratioBoost:0,flatBoost:0})}s(K0,"sumBuffValue");function w_(e){return(u.state.characterQuests??[]).some(t=>{if(t?.actionHrid!==e)return!1;let a=String(t.status??"").toLowerCase();return!(t.isClaimed||t.claimed||a.includes("claimed")||a.includes("completed"))})}s(w_,"isTaskAction");function v_(e){let t=u.state.initData_actionDetailMap?.[e],a=u.state.actionTypeBuffSources;if(!t||!a)return null;let n=[];for(let i of Object.values(a)){let o=i?.[t.type];Array.isArray(o)&&n.push(...o)}return w_(e)&&n.push(...u.state.equipmentTaskActionBuffs??[]),n}s(v_,"getAuthoritativeActionBuffs");function x_(e){let t=String(e?.function??"").toLowerCase();return t?t.includes("gathering")||t.includes("production"):!!(e?.levelRequirement&&(e?.dropTable||e?.outputItems))}s(x_,"supportsLevelEfficiency");function k_(e,t){let a=u.state.initData_actionDetailMap?.[e],n=K0(t,h_).flatBoost*100,i=0,o=null,r=null,c=0;if(x_(a)&&a?.levelRequirement){let l=a.levelRequirement.skillHrid,d=(u.state.initData_characterSkills??[]).find(p=>p.skillHrid===l),m=Number(d?.level);if(Number.isFinite(m)){let p=String(l).split("/").pop(),b=K0(t,`/buff_types/${p}_level`);c=b.ratioBoost,o=(1+b.ratioBoost)*m+b.flatBoost,r=Number(a.levelRequirement.level||0)+K0(t,__).flatBoost,i=Math.max(0,o-r)}}return{source:"game",total:n+i,directEfficiency:n,levelEfficiency:i,boostedSkillLevel:o,requiredLevel:r,skillLevelRatio:c}}s(k_,"getAuthoritativeEfficiency");function S_(e){let t=u.state.initData_actionDetailMap?.[e];if(!t?.levelRequirement)return{source:"legacy",total:0,levelEfficiency:0};let a=Number(t.levelRequirement.level)||0,n=Number((u.state.initData_characterSkills??[]).find(l=>l.skillHrid===t.levelRequirement.skillHrid)?.level??a),i=Math.max(0,n-a),o=Number(u.api.getHousesEffBuffByActionHrid?.(e))||0,r=Number(u.api.getTeaBuffsByActionHrid?.(e)?.efficiency)||0,c=Number(u.api.getItemEffiBuffByActionHrid?.(e))||0;return{source:"legacy",total:i+o+r+c,levelEfficiency:i,houseEfficiency:o,teaEfficiency:r,equipmentEfficiency:c}}s(S_,"getLegacyEfficiency");function X0(e){let t=v_(e);return t?k_(e,t):S_(e)}s(X0,"getActionEfficiencyDetails");function lf(e,t=!1){let a=X0(e);return t&&console.log(u.config.isZH?"[MWITools] 行动总效率明细":"[MWITools] Total action efficiency details",e,a),Number.isFinite(a.total)?a.total:0}s(lf,"getTotalEffiPercentage");function C_(e,t,a){return e==="∞"?"[∞]":isNaN(e)?"Error":"["+u.api.timeReadable(Math.round(e/a)*t)+"]"}s(C_,"getTotalTimeStr");function df(e,t){let a=e.value;e.value=t;let n=e.ownerDocument?.defaultView?.Event??Event,i=new n("input",{bubbles:!0});i.simulated=!0;let o=e._valueTracker;o&&o.setValue(a),e.dispatchEvent(i)}s(df,"reactInputTriggerHack");var J0=s(()=>{let e=document.querySelectorAll(".NavigationBar_currentExperience__3GDeX");e.length&&(Uo(),e.forEach(t=>{let a=t.style.width;a=Number(a.replace("%","")).toFixed(2)+"%";let n=document.createElement("span");n.textContent=a,n.classList.add("insertedSpan"),n.style.fontSize="0.875rem",n.style.color=u.config.SCRIPT_COLOR_MAIN,t.parentNode.parentNode.querySelector("span.NavigationBar_level__3C7eR").style.width="auto";let i=t.parentNode.parentNode.children[0];i.insertBefore(n,i.children[1])}))},"waitForProgressBar"),Uo=s(()=>document.querySelectorAll("span.insertedSpan").forEach(e=>e.parentNode.removeChild(e)),"removeInsertedDivs");Object.assign(u.api,{waitForActionPanelParent:cf,handleActionPanel:Zo,getTotalEffiPercentage:lf,getActionEfficiencyDetails:X0,getTotalTimeStr:C_,reactInputTriggerHack:df,waitForProgressBar:J0,removeInsertedDivs:Uo}),u.features.register({id:"expPercentage",setting:"expPercentage",initialize({scope:e}){J0(),e.interval(()=>{Uo(),J0()},1e3),e.add(Uo)}}),u.features.register({id:"actionPanel_totalTime",setting:"actionPanel_totalTime",scope:"character",initialize({scope:e}){let t=null,a=s(()=>{let n=document.querySelector("div.GamePage_mainPanel__2njyb");if(!n||t===n)return;t=n;let i=new MutationObserver(r=>{for(let c of r)for(let l of c.addedNodes){let d=l?.querySelector?.("div.SkillActionDetail_regularComponent__3oCgr");d&&(!d.querySelector("#mwi-level-progress")||d.querySelectorAll(".mwi-native-level-stat").length!==4)&&Zo(d)}});e.observer(i,n,{childList:!0,subtree:!0});let o=n.querySelector("div.SkillActionDetail_regularComponent__3oCgr");o&&(!o.querySelector("#mwi-level-progress")||o.querySelectorAll(".mwi-native-level-stat").length!==4)&&Zo(o)},"attach");a(),e.interval(a,500),e.add(()=>{document.querySelectorAll("#showTotalTime,#quickInputHourButtons,#quickInputCountButtons,#mwi-level-progress,#tillLevel,#expPerHour,#currentEfficiency,#totalProfit,.mwi-native-level-stat").forEach(n=>n.remove()),document.querySelectorAll('[data-mwitools-action-panel="true"]').forEach(n=>delete n.dataset.mwitoolsActionPanel)})}});var mf="mwitools-action-dashboard-style",A_=[.5,1,2,3,4,5,6,10,12,24],M_=[10,100,300,500,1e3,2e3];function et(e,t){return u.config.isZH?e:t}s(et,"t");function ff(e){if(e===1/0)return"∞";if(!Number.isFinite(e))return"—";let t=Math.max(0,Math.round(e));if(t<86400)return u.api.timeReadable?.(t)??`${t}s`;let a=Math.floor(t/86400),n=Math.floor(t%86400/3600),i=Math.floor(t%3600/60),o=[et(`${a}天`,`${a}d`)];return n>0&&o.push(et(`${n}小时`,`${n}h`)),i>0&&o.push(et(`${i}分`,`${i}m`)),o.join(u.config.isZH?"":" ")}s(ff,"formatDuration");function T_(e){return Number.isFinite(e)?new Intl.DateTimeFormat(u.config.isZH?"zh-CN":"en-US",{hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(new Date(e)):"—"}s(T_,"formatClock");function sn(e){return u.api.createFormattedNumber(e)}s(sn,"number");function bf(){for(let a of globalThis.performance?.getEntriesByType?.("resource")??[])if(a.name?.includes("items_sprite")&&a.name.endsWith(".svg"))try{return new URL(a.name).pathname}catch{return a.name}let e=document.querySelector('svg use[href*="items_sprite"],svg use[xlink\\:href*="items_sprite"]'),t=e?.getAttribute("href")??e?.getAttribute("xlink:href")??"";return t.includes("#")?t.split("#")[0]:""}s(bf,"findItemsSpriteBase");function E_(e){return Qa(e,{fallback:"?"})}s(E_,"outputItemName");function I_(e,t,a){let n=String(t??"").split("/").at(-1),i=[...e?.querySelectorAll(':scope div[class*="SkillActionDetail_dropTable"] div[class*="Item_item"]')??[]].filter(p=>[...p.classList].some(b=>b.startsWith("Item_item__"))),o=i.find(p=>{let b=p.querySelector("use")?.getAttribute("href")??p.querySelector("use")?.getAttribute("xlink:href")??"";return n&&b.endsWith(`#${n}`)})??i[0];if(!o)return null;let r=o.cloneNode(!0);r.classList.add("mwi-production-native-item");for(let p of[...r.classList])p.includes("Item_clickable")&&r.classList.remove(p);let c=bf(),l=r.querySelector("use");if(l&&c&&n){let p=`${c}#${n}`;l.setAttribute("href",p),l.setAttribute("xlink:href",p)}r.querySelector("svg")?.setAttribute("aria-label",a);let m=r.querySelector('[class*="Item_name"]');return m&&(m.textContent=a),r}s(I_,"nativeProductionItem");function N_(e,t){let a=document.createElement("span");a.className="mwi-production-native-fallback";let n=String(e??"").split("/").at(-1),i=bf();if(n&&i){let r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.classList.add("mwi-production-output-icon"),r.setAttribute("viewBox","0 0 32 32"),r.setAttribute("aria-label",t);let c=document.createElementNS("http://www.w3.org/2000/svg","use"),l=`${i}#${n}`;c.setAttribute("href",l),c.setAttribute("xlink:href",l),r.append(c),a.append(r)}else{let r=document.createElement("span");r.className="mwi-production-output-fallback",r.setAttribute("aria-hidden","true"),r.textContent="?",a.append(r)}let o=document.createElement("span");return o.className="mwi-production-output-name",o.textContent=t,a.append(o),a}s(N_,"fallbackProductionItem");function H_(e,t){let a=document.createElement("span");a.className="mwi-production-output-item";let n=E_(e.itemHrid),i=Number.isFinite(Number(e.expectedCount))?Math.round(Number(e.expectedCount)*1e9)/1e9:e.expectedCount,o=u.api.formatExactNumber?.(i)??String(i);a.title=`${n} ×${o}`,a.setAttribute("aria-label",a.title),a.append(I_(t,e.itemHrid,n)??N_(e.itemHrid,n));let r=document.createElement("span");return r.className="mwi-production-output-count",r.append("×",sn(e.expectedCount)),a.append(r),a}s(H_,"createProductionOutput");function Ko(){if(document.getElementById(mf))return;let e=document.createElement("style");e.id=mf,e.textContent=`
    .mwi-action-dashboard-host { position:relative!important; }
    .mwi-action-dashboard { position:absolute; top:50%; right:0; z-index:5; box-sizing:border-box; max-width:calc(100% - var(--mwi-action-dashboard-left,0px)); margin:0; padding:2px 6px; transform:translateY(-50%); border:1px solid rgba(255,255,255,.1); border-radius:4px; background:rgba(0,0,0,.18); font:inherit; font-size:.6875rem; line-height:1.25; white-space:normal; overflow:visible; pointer-events:none; }
    .mwi-action-line { display:flex; align-items:center; flex-wrap:wrap; gap:3px 10px; max-width:100%; color:#ffa500; }
    .mwi-action-line > * { min-width:0; white-space:nowrap; }
    .mwi-action-line strong { color:inherit; font-weight:650; }
    .mwi-production-card { width:100%; max-width:100%; min-width:0; box-sizing:border-box; contain:inline-size; margin-top:6px; padding:6px; border:1px solid rgba(255,255,255,.12); border-radius:5px; background:rgba(255,255,255,.025); color:var(--color-text-primary,#eee); font-size:.6875rem; }
    .mwi-production-card-title { padding:0 2px 4px; font-size:.72rem; font-weight:600; }
    .mwi-production-metrics { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,110px),1fr)); gap:4px; }
    .mwi-production-metric { min-width:0; overflow:hidden; padding:4px 3px; border-radius:3px; background:rgba(0,0,0,.14); text-align:center; }
    .mwi-production-label { min-height:1.45em; color:var(--color-text-secondary,#aaa); font-size:.6rem; line-height:1.2; }
    .mwi-production-value { margin-top:1px; font-size:.7rem; line-height:1.25; font-weight:600; overflow-wrap:anywhere; }
    .mwi-production-output-metric { grid-column:1/-1; }
    .mwi-production-output-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,120px),1fr)); gap:4px 8px; width:100%; }
    .mwi-production-output-grid[data-count="1"] .mwi-production-output-item { grid-column:1/-1; }
    .mwi-production-output-item { display:flex; min-width:0; align-items:center; justify-content:center; gap:4px; overflow:hidden; }
    .mwi-production-native-item,.mwi-production-native-fallback { display:inline-flex!important; min-width:0; align-items:center; gap:4px; overflow:hidden; pointer-events:none; }
    .mwi-production-native-fallback { padding:1px 6px; border:1px solid rgb(152,167,233); border-radius:4px; background:rgb(44,46,69); color:rgb(231,231,231); }
    .mwi-production-native-item [class*="Item_iconContainer"] { width:14px!important; height:14px!important; flex:0 0 14px!important; }
    .mwi-production-native-item [class*="Item_name"],.mwi-production-output-name { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .mwi-production-output-icon,.mwi-production-output-fallback { display:grid; width:14px; height:14px; flex:0 0 14px; place-items:center; }
    .mwi-production-output-fallback { border-radius:4px; background:rgba(255,255,255,.08); color:var(--color-text-secondary,#aaa); font-size:.72rem; }
    .mwi-production-output-count { flex:0 0 auto; min-width:0; font-size:.72rem; font-weight:700; line-height:1; white-space:nowrap; }
    .mwi-production-warning { margin:4px 2px 0; color:#d7bb67; font-size:.6rem; line-height:1.25; }
    .mwi-max-action-button { margin-inline-start:4px; }
    .mwi-production-quick-inputs { position:relative; display:grid; z-index:0; box-sizing:border-box; gap:3px; width:100%; min-width:0; margin:4px 0 1px; color:var(--color-text-secondary,#aaa); font-size:.625rem; }
    .mwi-production-quick-row { display:flex; min-width:0; align-items:flex-start; gap:3px; }
    .mwi-production-quick-label { flex:0 0 3.25em; color:${u.config.SCRIPT_COLOR_MAIN}; white-space:nowrap; }
    .mwi-production-quick-buttons { display:flex; min-width:0; flex:1; flex-wrap:wrap; gap:2px; }
    .mwi-production-quick-button { min-width:0!important; height:21px!important; padding:1px 5px!important; font-size:.625rem!important; line-height:1!important; }
    @media(max-width:520px){.mwi-action-line{gap:2px 8px}}
  `,(document.head??document.documentElement).appendChild(e)}s(Ko,"addStyles");function pf(e){let a=(e?.closest?.('[class*="Header_currentAction"]')??e?.parentElement)?.querySelector?.('[class*="ProgressBar_progressBar"]');if(!a)return{durationPerAction:null,currentCycleRemaining:null};let n=Number(a.style?.getPropertyValue?.("--duration"));if(!Number.isFinite(n)||n<=0){let d=u.api.getOriTextFromElement?.(a.querySelector('[class*="ProgressBar_text"]')),m=String(d??"").replace(",",".").match(/[\d.]+/);n=m?Number(m[0]):null}if(!Number.isFinite(n)||n<=0)return{durationPerAction:null,currentCycleRemaining:null};let i=a.querySelector('[class*="ProgressBar_active"]'),o=i?i.ownerDocument?.defaultView?.getComputedStyle(i).transform??i.style?.transform:null,r=String(o??"").match(/^matrix(?:3d)?\(\s*(-?[\d.]+)/),c=r?Number(r[1]):null,l=Number.isFinite(c)?n*(1-Math.min(1,Math.max(0,c))):n;return{durationPerAction:n,currentCycleRemaining:l}}s(pf,"getLiveActionTiming");function D_(e,t){if(!String(t?.actionHrid??"").includes("/enhancing"))return null;let n=[...e?.childNodes??[]].filter(o=>o.nodeType!==1||o.id!=="mwi-action-dashboard").map(o=>o.textContent??"").join(" ").trim().match(/\(([\d\s.,]+)\)\s*$/);if(!n)return null;let i=Number(n[1].replace(/\D/g,""));return Number.isSafeInteger(i)&&i>=0?i:null}s(D_,"getNativeEnhancementCount");function Xo(e){for(let t of e?.querySelectorAll('div[class*="SkillActionDetail_value"]')??[]){let n=String(u.api.getOriTextFromElement?.(t)??"").trim().replaceAll(u.config.THOUSAND_SEPERATOR,"").replace(u.config.DECIMAL_SEPERATOR,".").match(/^([\d.]+)\s*s$/i);if(n&&Number(n[1])>0)return Number(n[1])}return null}s(Xo,"getProductionPanelDuration");function P_(){document.querySelector("#mwi-action-dashboard")?.remove(),document.querySelectorAll(".mwi-action-dashboard-host").forEach(e=>e.classList.remove("mwi-action-dashboard-host"))}s(P_,"clearActionDashboard");function L_(e){return[...e?.childNodes??[]].filter(t=>t.nodeType!==1||t.id!=="mwi-action-dashboard"&&t.id!=="script_item_warning").map(t=>t.textContent??"").join(" ").replaceAll(/\s+/g," ").trim()}s(L_,"nativeActionText");function gf(e){return String(e??"").replaceAll(/\([^)]*\)\s*$/g,"").replaceAll(/\s+/g," ").trim().toLocaleLowerCase()}s(gf,"normalizedActionText");function hf(e,t){let a=new Set([t?.name,u.data.ZHActionNames?.[e]]);for(let n of u.api.getExpectedOutputs?.(t)??[])a.add(u.state.initData_itemDetailMap?.[n.itemHrid]?.name),a.add(u.data.ZHItemNames?.[n.itemHrid]);return[...a].map(gf).filter(Boolean)}s(hf,"actionHeaderNames");function $_(e,t){let a=e?.actionHrid,n=u.state.initData_actionDetailMap?.[a];if(!a||!n||n.type==="/action_types/combat")return!1;let i=gf(L_(t));return!i||/^(doing nothing|无事可做|没有行动)$/.test(i)?!1:String(a).includes("/enhancing")?/\+\s*\d+/.test(i)||hf(a,n).some(o=>i.includes(o)):hf(a,n).some(o=>i===o||i.includes(o))}s($_,"actionMatchesHeader");function lr(){Ko();let e=document.querySelector('div[class*="Header_actionName"]'),a=[...u.state.currentActionsHridList??[]].sort((y,w)=>Number(y?.ordinal??0)-Number(w?.ordinal??0))[0];if(!e||!a||!$_(a,e)){P_();return}let n=pf(e),i=D_(e,a),o=u.api.projectAction(a,i??void 0,{durationPerAction:n.durationPerAction,currentCycleRemainingSeconds:n.currentCycleRemaining}),r=e.querySelector("#mwi-action-dashboard");r||(r=document.createElement("div"),r.id="mwi-action-dashboard",r.className="mwi-action-dashboard",e.appendChild(r)),e.classList.add("mwi-action-dashboard-host"),r.style.position="absolute";let c=[...e.children].filter(y=>y!==r&&y.id!=="script_item_warning").at(-1),l=e.getBoundingClientRect(),d=c?.getBoundingClientRect(),m=Math.max(0,(d?.right??l.left)-l.left+7);r.style.left=`${m}px`,r.style.setProperty("--mwi-action-dashboard-left",`${m}px`),r.replaceChildren(),r.removeAttribute("title");let p=document.createElement("div");p.className="mwi-action-line";let b=document.createElement("span"),f=o.effectivelyInfinite??o.infinite,g=o.effectiveCount??o.count;b.append(`${et("剩余","Remaining")} `,f?"∞":sn(g)),o.materialLimited?b.title=et("已按当前库存中的可用原料计算","Limited by materials currently in inventory"):i!==null&&(b.title=et("已按强化栏当前可处理数量计算","Based on the amount currently available for enhancement"));let h=document.createElement("span");h.textContent=`${et("还需","Time left")} ${ff(o.totalSeconds)}`;let _=document.createElement("strong");_.textContent=o.finishAt?`${et("预计完成","Finishes at")} ${T_(o.finishAt)}`:`${et("预计完成","Finishes at")} —`,p.append(b,h,_),r.append(p)}s(lr,"renderActionDashboard");function _f(){let t=[...document.querySelectorAll('div[class*="SkillActionDetail_regularComponent"],div[class*="SkillActionDetail_skillActionDetail"]')].filter(a=>{for(let n=a;n;n=n.parentElement){if(n.hidden||n.getAttribute("aria-hidden")==="true")return!1;let i=n.ownerDocument?.defaultView?.getComputedStyle(n);if(i?.display==="none"||i?.visibility==="hidden")return!1}return!0});return t.find(a=>String(a.className).includes("regularComponent"))??t.at(-1)??null}s(_f,"findActionPanel");function Y0(e){return e?.querySelector('div[class*="SkillActionDetail_maxActionCountInput"] input')}s(Y0,"getCountInput");function O_(e,t){return[...(t?.closest('div[class*="SkillActionDetail_actionContainer"]')??e)?.querySelectorAll("button")??[]].find(n=>n.classList.contains("mwi-max-action-button")?!1:String(u.api.getOriTextFromElement?.(n)??n.textContent??"").trim()==="∞"||/infinite|unlimited/i.test(n.title??""))}s(O_,"findInfinityButton");function yf(e,t){if(typeof u.api.reactInputTriggerHack=="function"){u.api.reactInputTriggerHack(e,t);return}let a=e.ownerDocument?.defaultView??window,n=e.value,i=Object.getOwnPropertyDescriptor(a.HTMLInputElement.prototype,"value")?.set;i?i.call(e,t):e.value=t,e._valueTracker?.setValue(n),e.dispatchEvent(new a.Event("input",{bubbles:!0}))}s(yf,"setReactInputValue");function Q0(){document.querySelectorAll(".mwi-production-quick-inputs").forEach(e=>e.remove())}s(Q0,"removeProductionQuickInputs");function q_(e,t){return[...(t?.closest('div[class*="SkillActionDetail_maxActionCountInput"]')??e)?.querySelectorAll("button")??[]].find(n=>!n.classList.contains("mwi-production-quick-button"))}s(q_,"quickButtonPrototype");function R_(e,t){!e?.isConnected||!Number.isSafeInteger(t)||t<=0||(yf(e,String(t)),e.dispatchEvent(new(e.ownerDocument?.defaultView?.Event??Event)("change",{bubbles:!0})),$n())}s(R_,"applyProductionQuickCount");function wf({panel:e,input:t,id:a,label:n,values:i,resolveCount:o}){let r=document.createElement("div");r.id=a,r.className="mwi-production-quick-row";let c=document.createElement("span");c.className="mwi-production-quick-label",c.textContent=n;let l=document.createElement("div");l.className="mwi-production-quick-buttons";let d=q_(e,t);for(let m of i){let p=d?.cloneNode(!1)??document.createElement("button");p.type="button",p.classList.add("mwi-production-quick-button"),p.textContent=u.api.numberFormatter(m),p.dataset.quickValue=String(m),p.addEventListener("click",()=>{let b=o(m);R_(t,b)}),l.append(p)}return r.append(c,l),r}s(wf,"createProductionQuickRow");function eu(){Ko();let e=_f(),t=Y0(e),a=tu(e);if(document.querySelectorAll(".mwi-production-quick-inputs").forEach(r=>{e?.contains(r)||r.remove()}),!e||!t||!a||!vf(a))return e?.querySelector(".mwi-production-quick-inputs")?.remove(),null;let n=t.closest('div[class*="SkillActionDetail_maxActionCountInput"]');if(!n)return null;let i=e.querySelector(".mwi-production-quick-inputs"),o=Xo(e);if(!i){i=document.createElement("div"),i.className="mwi-production-quick-inputs";let r=wf({panel:e,input:t,id:"quickInputHourButtons",label:et("时长","Hours"),values:A_,resolveCount:s(d=>{let m=Xo(e);return Number.isFinite(m)&&m>0?Math.max(1,Math.round(d*3600/m)):0},"resolveCount")}),c=wf({panel:e,input:t,id:"quickInputCountButtons",label:et("次数","Count"),values:M_,resolveCount:s(d=>d,"resolveCount")});i.append(r,c),(n.closest('div[class*="SkillActionDetail_actionContainer"]')??n).insertAdjacentElement("afterend",i)}return i.querySelectorAll("#quickInputHourButtons button").forEach(r=>{r.disabled=!Number.isFinite(o)||o<=0,r.title=r.disabled?et("无法读取当前单次耗时","Current action duration unavailable"):et(`按当前 ${o}s/次换算`,`Based on the current ${o}s per action`)}),i}s(eu,"renderProductionQuickInputs");function B_(e,t,a){let n=e?.querySelector(".mwi-max-action-button"),i=O_(e,t);if(!t||!i){n?.remove();return}n||(n=i.cloneNode(!1),n.type="button",n.classList.add("mwi-max-action-button"),n.textContent=et("最大","Max"),n.addEventListener("click",()=>{let r=Number(n.dataset.maxCraftable);if(!Number.isSafeInteger(r)||r<=0)return;let c=n.closest('div[class*="SkillActionDetail_regularComponent"],div[class*="SkillActionDetail_skillActionDetail"]'),l=Y0(c)??t;yf(l,String(r)),l.dispatchEvent(new(l.ownerDocument?.defaultView?.Event??Event)("change",{bubbles:!0})),$n()}),i.insertAdjacentElement("afterend",n));let o=Number.isSafeInteger(a)&&a>0;n.disabled=!o,n.dataset.maxCraftable=o?String(a):"",n.title=o?et(`填入库存最多可做 ${a} 次`,`Use inventory maximum: ${a}`):et("当前没有有限的可生产次数","No finite production maximum")}s(B_,"syncMaxButton");function tu(e){let t=u.api.getOriTextFromElement?.(e?.querySelector('div[class*="SkillActionDetail_name"]'))?.trim();if(!t)return null;let a=u.config.isZHInGameSetting;if(a){let r=Object.entries(u.data.ZHActionNames??{}).find(([,c])=>c===t);if(r)return r[0]}let n=u.state.initData_actionDetailMap;if(!n)return null;let i=new Set([t]);if(a){let r=u.api.getActionEnNameFromZhName?.(t);r&&i.add(r)}for(let[r,c]of Object.entries(n))if(i.has(c?.name))return r;let o=a?Object.entries(u.data.ZHItemNames??{}).find(([,r])=>r===t):null;if(o){let[r]=o,c=Object.entries(n).find(([,l])=>u.api.getExpectedOutputs?.(l).some(d=>d.itemHrid===r));if(c)return c[0]}return u.api.getActionHridFromItemName?.(t)??null}s(tu,"resolvePanelAction");function vf(e){let t=u.state.initData_actionDetailMap?.[e];return!t||String(t.type??"").includes("combat")?!1:!!u.api.getExpectedOutputs?.(t)?.length}s(vf,"isProductionAction");function un(e,t){let a=document.createElement("div");a.className="mwi-production-metric";let n=document.createElement("div");n.className="mwi-production-label",n.textContent=e;let i=document.createElement("div");return i.className="mwi-production-value",t?.nodeType?i.append(t):i.textContent=t,a.append(n,i),a}s(un,"metric");function $n(){Ko();let e=_f(),t=Y0(e),a=[...document.querySelectorAll("#mwi-production-summary")];if(!e){a.forEach(f=>f.remove()),document.querySelectorAll(".mwi-max-action-button").forEach(f=>f.remove());return}a.filter(f=>!e.contains(f)).forEach(f=>f.remove()),document.querySelectorAll(".mwi-max-action-button").forEach(f=>{e.contains(f)||f.remove()});let n=e.querySelector("#mwi-production-summary"),i=tu(e);if(!i||!vf(i)){n?.remove(),e.querySelector(".mwi-max-action-button")?.remove();return}let o=t?u.api.parseCompactNumber(t.value):Number.POSITIVE_INFINITY,r=u.api.projectAction(i,o,{durationPerAction:Xo(e),respectInventoryLimit:!0});B_(e,t,r.maxCraftable);let c=e.querySelector("#mwi-production-summary");if(!c){c=document.createElement("section"),c.id="mwi-production-summary",c.className="mwi-production-card";let f=e.querySelector('div[class*="SkillActionDetail_actionContainer"]')??t?.parentElement??e.querySelector('div[class*="SkillActionDetail_name"]');f?f.insertAdjacentElement("afterend",c):e.appendChild(c)}let l=[...c.querySelectorAll('[data-mwitools-production-extension="true"]')];c.replaceChildren();let d=document.createElement("div");d.className="mwi-production-card-title",d.textContent=et("本次生产摘要","Production summary");let m=document.createElement("div");m.className="mwi-production-metrics";let p=document.createElement("div");p.className="mwi-production-output-grid",p.dataset.count=String(r.outputs?.length??0),r.outputs?.forEach(f=>p.append(H_(f,e)));let b=un(r.effectivelyInfinite?et("预期单次产出","Output per action"):et("预期总产出","Total output"),p);if(b.classList.add("mwi-production-output-metric"),m.append(b,un(et("当前拥有","Owned"),r.outputs?.length?r.outputs.map(f=>u.api.numberFormatter(f.owned)).join(" · "):"—"),un(et("库存最多可做","Max craftable"),r.maxCraftable===1/0?"∞":sn(r.maxCraftable)),un(et("本次总耗时","Duration"),ff(r.totalSeconds))),u.settings.get("productionProfit")&&m.append(un(et("每次净利润","Per action"),sn(r.netProfitPerAction)),un(et("每小时净利润","Per hour"),sn(r.profitPerHour)),un(et("每天净利润","Per day"),sn(r.profitPerHour===null?null:r.profitPerHour*24)),un(et("本次总净利润","Total profit"),r.netProfitPerAction===null?sn(null):r.effectivelyInfinite?"∞":sn(r.totalProfit))),c.append(d,m),r.status==="incomplete"){let f=document.createElement("div");f.className="mwi-production-warning",f.textContent=et("部分市场价格缺失,利润暂不显示为 0。","Some market prices are missing; profit is not treated as zero."),c.append(f)}c.append(...l)}s($n,"renderProductionPanel");function z_(){document.querySelector("#mwi-action-dashboard")?.remove(),document.querySelectorAll(".mwi-action-dashboard-host").forEach(e=>e.classList.remove("mwi-action-dashboard-host")),document.querySelector("#mwi-production-summary")?.remove(),document.querySelector(".mwi-max-action-button")?.remove(),Q0()}s(z_,"removeActionUi"),u.features.register({id:"totalActionTime",setting:"totalActionTime",scope:"character",initialize({scope:e}){Ko(),lr(),e.interval(lr,500),e.add(()=>{document.querySelector("#mwi-action-dashboard")?.remove(),document.querySelectorAll(".mwi-action-dashboard-host").forEach(t=>t.classList.remove("mwi-action-dashboard-host"))})}}),u.features.register({id:"actionBarProfit",setting:"actionBarProfit",scope:"character",dependsOn:["totalActionTime"],initialize(){return lr(),lr}}),u.features.register({id:"actionPanel_totalTime_quickInputs",setting:"actionPanel_totalTime_quickInputs",scope:"character",dependsOn:["actionPanel_totalTime"],initialize({scope:e}){eu(),e.interval(eu,350),e.add(Q0)}}),u.features.register({id:"productionSummary",setting:"productionSummary",scope:"character",initialize({scope:e}){$n(),e.interval($n,350),e.add(()=>document.querySelector("#mwi-production-summary")?.remove())}}),u.features.register({id:"productionProfit",setting:"productionProfit",scope:"character",dependsOn:["productionSummary"],initialize(){return $n(),$n}}),Object.assign(u.api,{renderActionDashboard:lr,renderProductionPanel:$n,getProductionPanelDuration:Xo,getLiveActionTiming:pf,resolveProductionAction:tu,renderProductionQuickInputs:eu,removeProductionQuickInputs:Q0,removeActionUi:z_});var au="mwitools-procurement-style",F_="mwitools-procurement-host",cn="mwitools-procurement-market-nav",ln="mwitools-procurement-production",pe=u.api.procurement,On=null,yt=null,Yt=!1,Jo="cart",xa="",bi="",dr=new Map,qn=!1,Yo=!1,mr=0,pi=!1,Qo=null,es="",Ba="",xf=2500,j_='<svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="9" cy="21" r="1.6"/><circle cx="19" cy="21" r="1.6"/><path d="M2 3h3l2.6 12.5a2 2 0 0 0 2 1.5h8.7a2 2 0 0 0 2-1.6L22 7H6"/></svg>',W_='<svg class="icon" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 2.5l2.9 6 6.6.9-4.8 4.6 1.2 6.5L12 17.4 6.1 20.5l1.2-6.5L2.5 9.4l6.6-.9z"/></svg>';function fe(e,t){return u.config.isZH?e:t}s(fe,"t");function fr(e){return u.config.isZH?"种材料":Number(e)===1?"material":"materials"}s(fr,"materialNoun");function ka(e){return u.api.numberFormatter?.(e)??String(e??"—")}s(ka,"formatNumber");function dn(e){return u.api.formatExactNumber?.(e)??String(e??"—")}s(dn,"exactNumber");function oa(e){return String(e??"").replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}s(oa,"escapeHtml");function V_(){if(document.getElementById(au))return;let e=document.createElement("style");e.id=au,e.textContent=`
    .mwi-procurement-badge{position:static!important;display:inline-flex;max-width:78px;min-height:16px;align-items:center;margin-left:4px;padding:0 4px;border:1px solid rgba(255,255,255,.16);border-radius:3px;background:rgba(15,18,28,.72);font:600 .58rem/1.35 Roboto,Arial,sans-serif;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:auto}
    .mwi-procurement-panel{min-width:330px!important;max-width:min(420px,calc(100vw - 24px))!important}
    .mwi-procurement-requirement-row{width:max-content!important;max-width:none!important;grid-template-columns:repeat(4,max-content)!important;align-items:center!important;white-space:nowrap!important}
    .mwi-procurement-badge[data-state="missing"]{color:#ffad62;border-color:rgba(255,153,51,.45)}
    .mwi-procurement-badge[data-state="ready"]{color:#43d17f;border-color:#43c979;background:rgba(48,176,105,.12)}
    .mwi-procurement-badge[data-state="locked"]{color:#d9bd72;border-color:rgba(210,180,90,.4)}
    #${ln}{min-width:0;max-width:100%;box-sizing:border-box;margin-top:5px;padding-top:5px;border-top:1px solid rgba(255,255,255,.08);font:inherit;font-size:.66rem}
    .mwi-procurement-summary-line{display:flex;min-width:0;align-items:center;gap:5px;flex-wrap:wrap}
    .mwi-procurement-summary-state{min-width:0;flex:1;color:var(--color-text-secondary,#aaa);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .mwi-procurement-summary-state strong{color:#ffad62}
    .mwi-procurement-inline-button{min-height:24px;padding:2px 8px;border:1px solid rgba(255,255,255,.16);border-radius:4px;background:var(--color-midnight-500,#343a54);color:var(--color-neutral-100,#eee);font:inherit;font-size:.65rem;cursor:pointer}
    .mwi-procurement-inline-button:hover{background:var(--color-space-700,#46547e)}
    .mwi-procurement-chain{margin-top:4px;border-radius:4px;background:rgba(0,0,0,.12)}
    .mwi-procurement-chain>summary{padding:4px 6px;cursor:pointer;color:var(--color-text-secondary,#aaa)}
    .mwi-procurement-chain-list{display:grid;gap:3px;padding:0 6px 6px}
    .mwi-procurement-chain-stage{display:flex;align-items:center;gap:6px;min-width:0}
    .mwi-procurement-chain-stage span:first-of-type{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .mwi-procurement-chain-stage span:last-child{margin-left:auto;color:#d7bb67;white-space:nowrap}
    .mwi-procurement-market-target{outline:2px solid rgba(245,158,11,.72)!important;outline-offset:1px;border-radius:4px;box-shadow:0 0 0 3px rgba(245,158,11,.12)}
    #${cn}{position:fixed;z-index:1005;display:flex;box-sizing:border-box;align-items:center;gap:7px;min-height:40px;padding:5px 8px;border:1px solid var(--color-midnight-400,#505776);border-radius:0 0 5px 5px;background:var(--color-midnight-900,#151927);color:var(--color-neutral-100,#eee);box-shadow:0 7px 18px rgba(0,0,0,.38);font:inherit;font-size:.68rem}
    #${cn}[data-inside="true"]{border-radius:5px 5px 0 0;box-shadow:0 -5px 16px rgba(0,0,0,.35)}
    .mwi-procurement-nav-progress{flex:0 0 auto;color:var(--color-space-300,#9da9d0);white-space:nowrap}
    .mwi-procurement-nav-items{display:flex;min-width:0;flex:1;gap:4px;overflow-x:auto;padding:1px}
    .mwi-procurement-nav-chip{position:relative;display:flex;flex:0 0 34px;width:34px;height:32px;align-items:center;justify-content:center;padding:2px;border:1px solid var(--color-midnight-400,#505776);border-radius:4px;background:var(--color-midnight-700,#272d43);color:inherit;cursor:pointer}
    .mwi-procurement-nav-chip[data-current="true"]{border-color:#8293d6;background:#394568}
    .mwi-procurement-nav-chip[data-done="true"]{opacity:.68;border-color:#4d9d68;cursor:default}
    .mwi-procurement-nav-icon{display:flex;width:27px;height:27px;align-items:center;justify-content:center;overflow:hidden}.mwi-procurement-nav-icon svg{display:block;width:27px;height:27px}.mwi-procurement-nav-icon .item-icon-fallback{font-size:11px;font-weight:700}
    .mwi-procurement-nav-chip b{position:absolute;right:-2px;bottom:-2px;min-width:13px;padding:0 2px;border-radius:5px;background:var(--color-midnight-900,#151927);color:var(--color-neutral-100,#eee);font-size:.55rem;line-height:12px;text-align:center;box-shadow:0 0 0 1px var(--color-midnight-400,#505776)}.mwi-procurement-nav-chip[data-done="true"] b{color:#62d88e}
    .mwi-procurement-nav-next{flex:0 0 auto;min-height:28px;padding:3px 10px;border:0;border-radius:4px;background:var(--color-space-600,#52649a);color:#fff;cursor:pointer;white-space:nowrap}
    .mwi-procurement-toast{position:fixed;right:14px;top:14px;z-index:2147483000;max-width:min(360px,calc(100vw - 28px));padding:8px 11px;border:1px solid rgba(245,158,11,.55);border-radius:5px;background:rgba(15,18,28,.96);color:#eee;font-size:.75rem;box-shadow:0 8px 22px rgba(0,0,0,.4)}
  `,(document.head??document.documentElement).appendChild(e)}s(V_,"addStyles");function G_(){return`
    :host{all:initial;color-scheme:dark;--panel:#171b2a;--card:#23283b;--text:#e7e9ef;--muted:#9299aa;--line:#505773;--accent:#5669ab;--gold:#e8c87f;font-family:"PingFang SC","Microsoft YaHei",Roboto,system-ui,sans-serif}
    *{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
    button,input,select{border:0;background:none;color:inherit;font:inherit}
    button{cursor:pointer}.icon{display:block}
    ::-webkit-scrollbar{width:7px}::-webkit-scrollbar-thumb{border-radius:4px;background:color-mix(in srgb,var(--muted) 28%,transparent)}
    .handle{position:fixed;right:0;z-index:1002;display:flex;width:32px;height:62px;align-items:center;justify-content:center;border-radius:9px 0 0 9px;background:var(--panel);color:var(--text);box-shadow:-2px 2px 10px rgba(0,0,0,.3);cursor:pointer;opacity:.86;touch-action:none;user-select:none;transition:opacity .15s}
    .handle:hover{opacity:1}.handle .icon{width:16px;height:16px}.handle[data-has-items="true"]{box-shadow:-2px 2px 10px rgba(0,0,0,.3),inset 2px 0 0 var(--gold)}
    .handle-badge{position:absolute;top:9px;right:7px;width:7px;height:7px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 2px var(--panel)}
    .handle-badge::after{content:"";position:absolute;inset:-3px;border:1.5px solid var(--gold);border-radius:50%;opacity:.6;animation:badge-pulse 1.6s ease-out infinite}@keyframes badge-pulse{0%{transform:scale(.7);opacity:.7}100%{transform:scale(1.9);opacity:0}}
    .drawer{position:fixed;top:56px;right:10px;z-index:1001;display:flex;width:var(--drawer-width,360px);max-width:calc(100vw - 26px);min-height:320px;max-height:calc(100vh - 96px);flex-direction:column;border-radius:10px;background:var(--panel);color:var(--text);box-shadow:0 10px 32px rgba(0,0,0,.45),0 0 0 1px color-mix(in srgb,var(--line) 70%,transparent);transform:translateX(calc(100% + 18px));transition:transform .2s ease}
    .drawer[data-open="true"]{transform:translateX(0)}.resize{position:absolute;left:-3px;top:0;bottom:0;width:7px;border-radius:10px 0 0 10px;cursor:ew-resize;touch-action:none}.resize:hover{background:color-mix(in srgb,var(--accent) 25%,transparent)}
    .header{display:flex;flex:0 0 auto;align-items:center;gap:8px;padding:11px 14px 9px;border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent)}
    .title{font-size:14px;font-weight:700;letter-spacing:.2px}.head-count{padding:2px 7px;border-radius:5px;background:color-mix(in srgb,var(--gold) 12%,transparent);color:color-mix(in srgb,var(--gold) 85%,white);font-size:10.5px}.head-count:empty{display:none}
    .close{margin-left:auto;width:27px;height:27px;border-radius:5px;color:var(--muted);font-size:15px}.close:hover{background:color-mix(in srgb,var(--text) 9%,transparent);color:var(--text)}
    .tabs{display:flex;flex:0 0 auto;gap:2px;margin:8px 12px 0;padding:2px;border-radius:7px;background:color-mix(in srgb,var(--text) 5%,transparent)}
    .tab{flex:1;min-width:0;padding:7px 0;border-radius:5px;color:var(--muted);font-size:12px;font-weight:600;white-space:nowrap}.tab:hover{color:var(--text)}.tab[data-active="true"]{background:var(--accent);color:#fff}
    .body{min-height:100px;flex:1 1 auto;overflow-y:auto;padding:4px 12px 6px}.empty{margin:12px 2px;padding:26px 12px;border-radius:8px;background:color-mix(in srgb,var(--text) 4%,transparent);color:var(--muted);font-size:12.5px;line-height:1.7;text-align:center}
    .cart-row{display:grid;min-height:56px;grid-template-columns:26px 44px minmax(0,1fr) auto auto;grid-template-rows:auto auto;align-items:center;column-gap:9px;row-gap:2px;padding:7px 2px;border-bottom:1px solid color-mix(in srgb,var(--line) 40%,transparent)}.cart-row:hover,.plan-row:hover{background:color-mix(in srgb,var(--text) 4%,transparent)}
    .star{grid-column:1;grid-row:1/span 2;width:26px;height:32px;border-radius:5px;color:color-mix(in srgb,var(--muted) 32%,transparent)}.star:hover{color:color-mix(in srgb,var(--gold) 70%,transparent)}.star[data-active="true"]{color:var(--gold)}.star .icon{width:14px;height:14px;margin:auto}
    .item-icon{grid-column:2;grid-row:1/span 2;display:flex;width:42px;height:42px;align-items:center;justify-content:center;border-radius:8px;background:var(--card);cursor:pointer}.item-icon:hover{background:color-mix(in srgb,var(--card) 88%,white)}.item-icon svg{width:32px;height:32px}.item-icon-fallback{color:var(--muted);font-size:13px;font-weight:700}
    .item-name{grid-column:3;grid-row:1;min-width:0;overflow:hidden;color:var(--text);font-size:13.5px;font-weight:600;text-align:left;text-overflow:ellipsis;white-space:nowrap}.item-name:hover{color:var(--gold)}
    .row-controls{grid-column:4;grid-row:1;display:flex;align-items:stretch;overflow:hidden;border-radius:6px;background:color-mix(in srgb,var(--text) 6%,transparent)}.step{width:27px;color:var(--muted);font-size:15px}.step:hover{background:color-mix(in srgb,var(--text) 9%,transparent);color:var(--text)}.qty{width:56px;height:30px;outline:0;background:transparent;color:var(--gold);font-size:13.5px;font-weight:700;text-align:center;font-variant-numeric:tabular-nums}.qty:focus{background:color-mix(in srgb,var(--accent) 16%,transparent)}
    .delete{grid-column:5;grid-row:1;width:26px;height:32px;border-radius:5px;color:color-mix(in srgb,var(--muted) 55%,transparent);font-size:15px}.delete:hover{background:color-mix(in srgb,#e05a64 14%,transparent);color:#ff8d96}
    .row-bottom{grid-column:3/6;grid-row:2;display:flex;min-width:0;align-items:center;gap:6px;color:var(--muted);font-size:11px;white-space:nowrap}.owned,.price{color:var(--muted)}.price{color:color-mix(in srgb,var(--gold) 78%,var(--muted))}.threshold-wrap{display:flex;min-width:0;align-items:center;gap:3px}.threshold{width:52px;padding:2px 4px;border-radius:4px;outline:0;background:color-mix(in srgb,var(--text) 7%,transparent);color:var(--text);font-size:10px;text-align:center}
    .panel-footer{display:flex;flex:0 0 auto;align-items:center;gap:8px;min-height:56px;padding:10px 14px;border-top:1px solid color-mix(in srgb,var(--line) 55%,transparent);color:var(--muted);font-size:11px}.panel-footer:empty{display:none}.footer-total{font-size:10px;line-height:1.35}.footer-total strong{display:block;color:var(--gold);font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}.footer-total small{display:block;color:var(--muted);font-size:9px}.clear{margin-left:auto;padding:9px 18px;border-radius:6px;background:color-mix(in srgb,var(--text) 8%,transparent);color:var(--text);font-size:12.5px;font-weight:700}.clear:hover{background:color-mix(in srgb,#e05a64 14%,transparent);color:#ff8d96}
    .plan-row{display:flex;min-height:58px;flex-direction:column;gap:6px;padding:8px 4px;border-bottom:1px solid color-mix(in srgb,var(--line) 40%,transparent)}.row-top{display:flex;align-items:center;gap:8px;min-width:0}.plan-title{min-width:0;flex:1;overflow:hidden;color:var(--text);font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.plan-status{color:var(--gold);font-size:10.5px}.progress{height:4px;overflow:hidden;border-radius:2px;background:color-mix(in srgb,var(--text) 7%,transparent)}.progress>span{display:block;height:100%;background:var(--accent)}.plan-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:10.5px}.plan-actions{display:flex;gap:5px}.plan-actions button{padding:6px 9px;border-radius:6px;background:color-mix(in srgb,var(--text) 7%,transparent);color:var(--muted);font-size:11px;font-weight:600}.plan-actions button:hover{background:color-mix(in srgb,var(--text) 11%,transparent);color:var(--text)}
    .setting-section{margin-top:5px}.setting-section-title{padding:8px 4px 4px;color:var(--muted);font-size:10.5px;font-weight:700;letter-spacing:.4px}.setting-row{display:flex;min-height:48px;align-items:center;gap:10px;padding:5px 4px;border-bottom:1px solid color-mix(in srgb,var(--line) 32%,transparent)}.setting-label{min-width:0;flex:1;color:var(--text);font-size:13px;font-weight:600}.setting-label small{display:block;margin-top:2px;color:var(--muted);font-size:10.5px;font-weight:400}.switch-state{min-width:18px;color:var(--muted);font-size:10.5px;text-align:right}.switch-state[data-on="true"]{color:#3edd8b;font-weight:700}.switch{position:relative;width:42px;height:23px;flex:0 0 auto;border-radius:99px;background:color-mix(in srgb,var(--text) 10%,transparent);transition:background-color .15s}.switch::after{content:"";position:absolute;top:3px;left:3px;width:17px;height:17px;border-radius:50%;background:#fff;opacity:.5;transition:transform .15s,opacity .15s}.switch[data-on="true"]{background:#29c274}.switch[data-on="true"]::after{transform:translateX(19px);opacity:1}
    .setting-row input[type="number"],.setting-row select,.setting-button{flex:0 0 auto;min-height:28px;padding:5px 8px;border-radius:6px;background:color-mix(in srgb,var(--text) 7%,transparent);color:var(--text);font-size:11.5px}.setting-row input[type="number"]{width:76px;border:1px solid color-mix(in srgb,var(--text) 14%,transparent);outline:0;text-align:center}.setting-row select{max-width:116px}.setting-button{font-weight:600}.setting-button:hover{background:color-mix(in srgb,var(--text) 11%,transparent)}.shortcut{max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    @media(max-width:760px){
      .drawer{left:0;right:0;top:auto;bottom:0;width:100%!important;max-width:none;height:52%;min-height:0;max-height:90%;border-radius:14px 14px 0 0;box-shadow:0 -10px 32px rgba(0,0,0,.5);transform:translateY(105%)}
      .drawer[data-open="true"]{transform:translateY(0)}
      .resize{display:none}
      .header::before{content:"";position:absolute;top:7px;left:50%;width:44px;height:4px;border-radius:2px;background:color-mix(in srgb,var(--muted) 45%,transparent);transform:translateX(-50%)}.header{position:relative;padding-top:18px}
    }
    @media(prefers-reduced-motion:reduce){.drawer{transition:none}.handle-badge::after{animation:none}}
  `}s(G_,"shellStyles");function br(e){document.querySelectorAll(".mwi-procurement-toast").forEach(a=>a.remove());let t=document.createElement("div");t.className="mwi-procurement-toast",t.textContent=e,document.body.appendChild(t),setTimeout(()=>t.remove(),2800)}s(br,"showToast");function ts(){return pe.getCartItems().filter(e=>e.quantity>0).sort((e,t)=>e.starred!==t.starred?e.starred?-1:1:e.name.localeCompare(t.name,u.config.isZH?"zh":"en"))}s(ts,"pendingItems");function Z_(){for(let a of globalThis.performance?.getEntriesByType?.("resource")??[])if(a.name?.includes("items_sprite")&&a.name.endsWith(".svg"))try{return new URL(a.name).pathname}catch{return a.name}let e=document.querySelector('svg use[href*="items_sprite"],svg use[xlink\\:href*="items_sprite"]'),t=e?.getAttribute("href")??e?.getAttribute("xlink:href")??"";return t.includes("#")?t.split("#")[0]:""}s(Z_,"findItemsSpriteBase");function kf(e){let t=pe.normalizeItemHrid(e.itemHrid).split("/").at(-1),a=Z_();if(!t||!a)return`<span class="item-icon-fallback">${oa((e.name||"?").trim().charAt(0)||"?")}</span>`;let n=`${a}#${t}`;return`<svg viewBox="0 0 32 32" aria-label="${oa(e.name)}"><use href="${oa(n)}" xlink:href="${oa(n)}"></use></svg>`}s(kf,"renderItemIcon");function Lt(){if(!yt)return;let e=pe.getSettings(),a=pe.getCartItems().filter(r=>r.quantity>0).length,n=yt.querySelector(".handle"),i=yt.querySelector(".drawer");if(!n||!i)return;n.style.top=`${Sf(e.handleY)}px`,i.style.setProperty("--drawer-width",`${e.drawerWidth}px`),i.dataset.open=String(Yt),n.dataset.hasItems=String(a>0),n.setAttribute("aria-expanded",String(Yt)),n.querySelector(".handle-badge").hidden=a===0,yt.querySelector(".head-count").textContent=a?fe(`缺 ${a} 项`,`${a} missing`):fe("无缺料","All set");for(let r of yt.querySelectorAll(".tab"))r.dataset.active=String(r.dataset.tab===Jo);let o=yt.querySelector(".body");yt.querySelector(".panel-footer").replaceChildren(),Jo==="plans"?X_(o):Jo==="settings"?Q_(o):U_(o)}s(Lt,"renderShell");function U_(e){let t=pe.getCartItems();if(e.replaceChildren(),!t.length){let r=document.createElement("div");r.className="empty",r.textContent=fe("购物清单还是空的。打开生产或房屋界面,把缺少的材料加入这里。","Your shopping list is empty. Add missing materials from a production or housing panel."),e.append(r);return}let a=pe.getSettings(),n=0,i=0;for(let r of t){let c=document.createElement("article");c.className="cart-row";let l=a.pricesEnabled&&(u.api.getAskPrice?.(r.itemHrid,r.enhancementLevel)||u.api.getFairValue?.(r.itemHrid,r.enhancementLevel))||0;a.pricesEnabled&&r.quantity>0&&(l>0?n+=l*r.quantity:i+=1),c.innerHTML=`
      <button class="star" data-active="${!!r.starred}" title="${fe("收藏:买齐后保留并监控常备数量","Favorite: keep and restock")}">${W_}</button>
      <button class="item-icon" title="${fe("在市场中打开","Open in marketplace")}">${kf(r)}</button>
      <button class="item-name" title="${oa(r.name)}">${oa(r.name)}${r.enhancementLevel?` +${r.enhancementLevel}`:""}</button>
      <div class="row-controls">
        <button class="step" data-step="-1">−</button>
        <input class="qty" inputmode="numeric" value="${r.quantity}" aria-label="${fe("待购数量","Quantity")}">
        <button class="step" data-step="1">+</button>
      </div>
      <button class="delete" title="${fe("删除","Remove")}">×</button>
      <div class="row-bottom">
        <span class="owned" title="${dn(pe.getInventoryCount(r.itemHrid,r.enhancementLevel))}">${fe("库存","Stock")} ${ka(pe.getInventoryCount(r.itemHrid,r.enhancementLevel))}</span>
        ${a.pricesEnabled?`<span class="price" title="${l>0?dn(l*r.quantity):"—"}">${l>0?`${ka(l)} · ${fe("计","total")} ${ka(l*r.quantity)}`:"—"}</span>`:""}
        <label class="threshold-wrap" ${r.starred?"":"hidden"}>${fe("常备","Min")}<input class="threshold" inputmode="numeric" placeholder="0" value="${r.threshold??""}"></label>
      </div>`;let d=s(p=>{pe.setCartItemQuantity(r.itemHrid,p,r.enhancementLevel)},"setQuantity");c.querySelector(".star").addEventListener("click",()=>{pe.updateCartItem(r.itemHrid,r.enhancementLevel,{starred:!r.starred})});for(let p of c.querySelectorAll(".item-name,.item-icon"))p.addEventListener("click",()=>{gi(r.itemHrid,r.enhancementLevel)});c.querySelector(".delete").addEventListener("click",()=>{pe.removeFromCart(r.itemHrid,r.enhancementLevel)});let m=c.querySelector(".qty");m.addEventListener("change",()=>{d(u.api.parseCompactNumber?.(m.value))});for(let p of c.querySelectorAll(".step"))p.addEventListener("click",()=>{d(r.quantity+Number(p.dataset.step))}),K_(p,()=>{let b=pe.getCartItem(r.itemHrid,r.enhancementLevel);d((b?.quantity??0)+Number(p.dataset.step))});c.querySelector(".threshold").addEventListener("change",p=>{pe.updateCartItem(r.itemHrid,r.enhancementLevel,{threshold:p.target.value?u.api.parseCompactNumber?.(p.target.value):null})}),e.append(c)}let o=yt.querySelector(".panel-footer");o.innerHTML=`
    <span class="footer-total">${fe("补齐合计","Total")}<strong title="${i?fe("部分物品缺少价格","Some items are unpriced"):dn(n)}">${a.cartTotalEnabled&&!i?ka(n):"—"}</strong>${i?`<small>${i} ${fe("项未估价","unpriced")}</small>`:""}</span>
    <button class="clear">${fe("清空未收藏","Clear")}</button>`,o.querySelector(".clear").addEventListener("click",()=>{pe.clearCart()})}s(U_,"renderCart");function K_(e,t){let a=null,n=null,i=s(()=>{clearTimeout(a),clearInterval(n),a=null,n=null},"stop");e.addEventListener("pointerdown",()=>{a=setTimeout(()=>{n=setInterval(t,90)},420)}),e.addEventListener("pointerup",i),e.addEventListener("pointercancel",i),e.addEventListener("pointerleave",i)}s(K_,"installHoldRepeat");function X_(e){let t=pe.getPlans();if(e.replaceChildren(),!t.length){let n=document.createElement("div");n.className="empty",n.textContent=fe("还没有制作计划。把生产缺料加入购物车时可以同时创建。","No crafting plans yet. Create one when adding production materials."),e.append(n);return}for(let n of t){let i=document.createElement("article");i.className="plan-row";let o=n.targetCount?Math.min(100,n.progress/n.targetCount*100):0;i.innerHTML=`
      <div class="row-top"><div class="plan-title">${oa(n.name)}</div><span class="plan-status">${n.status==="completed"?fe("已完成","Completed"):fe("进行中","Active")}</span></div>
      <div class="progress"><span style="width:${o}%"></span></div>
      <div class="plan-meta"><span>${ka(n.progress)} / ${ka(n.targetCount)}</span><span>${Object.keys(n.materials??{}).length} ${fr(Object.keys(n.materials??{}).length)}</span></div>
      <div class="plan-actions"><button data-action="count">${fe("修改次数","Edit count")}</button><button data-action="toggle">${n.status==="completed"?fe("重新打开","Reopen"):fe("完成","Complete")}</button><button data-action="remove">${fe("删除","Delete")}</button></div>`,i.querySelector('[data-action="count"]').addEventListener("click",()=>{let r=globalThis.prompt?.(fe("输入新的目标次数","Enter a new target count"),String(n.targetCount));r!=null&&pe.updatePlan(n.id,{targetCount:r})}),i.querySelector('[data-action="toggle"]').addEventListener("click",()=>{pe.updatePlan(n.id,{status:n.status==="completed"?"active":"completed"})}),i.querySelector('[data-action="remove"]').addEventListener("click",()=>{pe.removePlan(n.id)}),e.append(i)}let a=yt.querySelector(".panel-footer");a.innerHTML=`<span>${fe("制作计划","Plans")} ${t.length}</span><button class="clear">${fe("清空计划","Clear plans")}</button>`,a.querySelector(".clear").addEventListener("click",()=>{for(let n of pe.getPlans())pe.removePlan(n.id)})}s(X_,"renderPlans");var J_=[{title:["生产材料","Production materials"],rows:[["badgesEnabled","材料缺口徽标","Material shortage badges","bool"],["upgradeChainEnabled","升级链材料","Upgrade-chain materials","bool"],["createPlansByDefault","默认建立制作计划","Create plans by default","bool"],["inventorySyncEnabled","精确库存同步","Exact inventory sync","bool"],["autoRestockEnabled","收藏物资自动补货","Favorite item restocking","bool"]]},{title:["市场购物","Marketplace"],rows:[["locateEnabled","市场材料定位","Locate market materials","bool"],["autoPrefillEnabled","自动填写购买数量","Prefill purchase quantity","bool"],["purchaseNavEnabled","购物导航条","Shopping navigation","bool"],["pricesEnabled","显示市场价格","Show market prices","bool"],["cartTotalEnabled","显示购物总价","Show cart total","bool"],["autoCollapseEnabled","全部补齐后自动收起","Collapse when fulfilled","bool"]]},{title:["安全材料","Material safety"],rows:[["safetyLevel","材料安全余量","Material safety margin","safety"],["safetyThreshold","启用余量的最少次数","Minimum count for margin","number"],["guzzlingPouchLevel","狂饮袋等级(-1 自动)","Guzzling pouch level (-1 auto)","pouch"]]},{title:["界面与快捷键","Interface & shortcut"],rows:[["nextItemShortcut","下一项快捷键","Next item shortcut","shortcut"],["resetHandle","重置把手位置","Reset handle position","button"],["resetDrawer","重置抽屉宽度","Reset drawer width","button"]]}],Y_={badgesEnabled:["直接在材料旁显示缺少或余量","Show shortages beside materials"],upgradeChainEnabled:["展开查看升级链各阶段材料","Show materials through upgrade chains"],createPlansByDefault:["加购缺料时同时锁定制作材料","Create and lock a plan when adding materials"],inventorySyncEnabled:["按服务器库存变化自动扣减清单","Update the list from live inventory changes"],autoRestockEnabled:["收藏物品低于常备数量时自动补单","Restock favorites below their minimum"],locateEnabled:["从清单打开市场并定位对应物品","Open and locate items in the marketplace"],autoPrefillEnabled:["只填写待买数量,不会自动下单","Fill quantity without placing an order"],purchaseNavEnabled:["买完后快速切换到下一项","Move through remaining shopping items"],pricesEnabled:["显示当前单价和物品小计","Show current prices and subtotals"],cartTotalEnabled:["在底部显示全部补齐所需金额","Show the total cost to fill the cart"],autoCollapseEnabled:["所有项目补齐后收起购物车","Collapse after every item is fulfilled"],safetyLevel:["为工匠茶的随机省料准备余量","Allow for Artisan's Tea material variance"],safetyThreshold:["次数较少时不额外准备材料","Skip the margin for smaller batches"],guzzlingPouchLevel:["填写 -1 时自动读取当前等级","Use -1 to detect the current level"],nextItemShortcut:["右键可清除已经录制的快捷键","Right-click to clear the shortcut"],resetHandle:["恢复购物车图标的默认高度","Restore the cart handle position"],resetDrawer:["恢复悬浮购物车的默认宽度","Restore the floating cart width"]};function Q_(e){e.replaceChildren();let t=pe.getSettings();for(let a of J_){let n=document.createElement("section");n.className="setting-section";let i=document.createElement("div");i.className="setting-section-title",i.textContent=fe(...a.title),n.append(i);for(let[o,r,c,l]of a.rows){let d=document.createElement("div");d.className="setting-row";let m=document.createElement("span");m.className="setting-label";let p=Y_[o];m.innerHTML=`${oa(fe(r,c))}${p?`<small>${oa(fe(...p))}</small>`:""}`,d.append(m);let b;if(l==="bool"){let f=document.createElement("span");f.className="switch-state",f.dataset.on=String(!!t[o]),f.textContent=t[o]?fe("开","On"):fe("关","Off"),d.append(f),b=document.createElement("button"),b.type="button",b.className="switch",b.dataset.on=String(!!t[o]),b.setAttribute("role","switch"),b.setAttribute("aria-checked",String(!!t[o])),b.setAttribute("aria-label",fe(r,c)),b.addEventListener("click",()=>pe.setSetting(o,!t[o]))}else if(l==="safety"){b=document.createElement("select");for(let[f,g]of[["off",fe("关闭","Off")],["95",fe("标准 95%","Standard 95%")],["99",fe("充足 99%","Ample 99%")],["99.9",fe("极高 99.9%","Full 99.9%")]]){let h=document.createElement("option");h.value=f,h.textContent=g,h.selected=String(t[o])===f,b.append(h)}b.addEventListener("change",()=>pe.setSetting(o,b.value))}else l==="shortcut"?(b=document.createElement("button"),b.type="button",b.className="setting-button shortcut",b.textContent=ey(t.nextItemShortcut)||fe("录制","Record"),b.addEventListener("click",()=>ty(b)),b.addEventListener("contextmenu",f=>{f.preventDefault(),pe.setSetting("nextItemShortcut",null)})):l==="button"?(b=document.createElement("button"),b.type="button",b.className="setting-button",b.textContent=fe("重置","Reset"),b.addEventListener("click",()=>{pe.setSetting(o==="resetHandle"?"handleY":"drawerWidth",o==="resetHandle"?180:360)})):(b=document.createElement("input"),b.type="number",b.min=o==="guzzlingPouchLevel"?"-1":"0",l==="pouch"&&(b.max="20"),b.value=String(t[o]),b.addEventListener("change",()=>pe.setSetting(o,Number(b.value))));d.append(b),n.append(d)}e.append(n)}}s(Q_,"renderProcurementSettings");function ey(e){return e?.code?[e.ctrl&&"Ctrl",e.shift&&"Shift",e.alt&&"Alt",e.meta&&"Meta",e.display||e.code].filter(Boolean).join("+"):""}s(ey,"formatShortcut");function ty(e){e.textContent=fe("请按快捷键…","Press shortcut…");let t=s(a=>{if(a.key==="Escape"){window.removeEventListener("keydown",t,!0),Lt();return}if(/^(Control|Shift|Alt|Meta|OS)/.test(a.code))return;a.preventDefault(),a.stopPropagation();let n=a.code==="Space"?"Space":a.code.startsWith("Arrow")?a.code.slice(5):a.key?.length===1?a.key.toUpperCase():a.key||a.code;pe.setSetting("nextItemShortcut",{code:a.code,display:n,ctrl:a.ctrlKey,shift:a.shiftKey,alt:a.altKey,meta:a.metaKey}),window.removeEventListener("keydown",t,!0)},"handler");window.addEventListener("keydown",t,!0)}s(ty,"captureShortcut");function Sf(e){return Math.min(Math.max(8,Number(e)||180),Math.max(8,window.innerHeight-84))}s(Sf,"clampHandleY");function ay(e){On=document.createElement("div"),On.id=F_,yt=On.attachShadow({mode:"open"});let t=document.createElement("style");t.textContent=G_(),yt.innerHTML=`
    <button class="handle" aria-label="${fe("购物车(可拖动)","Shopping cart (drag to move)")}" aria-expanded="false">${j_}<span class="handle-badge"></span></button>
    <aside class="drawer" data-open="false" aria-label="${fe("购物车","Shopping cart")}">
      <div class="resize"></div>
      <header class="header"><div class="title">${fe("购物车","Shopping Cart")}</div><span class="head-count"></span><button class="close" aria-label="${fe("收起","Collapse")}">»</button></header>
      <nav class="tabs"><button class="tab" data-tab="cart">${fe("清单","Cart")}</button><button class="tab" data-tab="plans">${fe("计划","Plans")}</button><button class="tab" data-tab="settings">${fe("设置","Settings")}</button></nav>
      <main class="body"></main>
      <footer class="panel-footer"></footer>
    </aside>`,yt.prepend(t),document.body.appendChild(On);let a=yt.querySelector(".handle"),n=yt.querySelector(".drawer"),i=null;a.addEventListener("pointerdown",c=>{i={y:c.clientY,top:a.getBoundingClientRect().top},a.setPointerCapture?.(c.pointerId)}),a.addEventListener("pointermove",c=>{if(!i)return;let l=Sf(i.top+c.clientY-i.y);a.style.top=`${l}px`}),a.addEventListener("pointerup",c=>{if(!i)return;let l=Math.abs(c.clientY-i.y)>5;i=null,pe.setSetting("handleY",parseFloat(a.style.top)),l||(Yt=!Yt,Lt())}),yt.querySelector(".close").addEventListener("click",()=>{Yt=!1,Lt()});for(let c of yt.querySelectorAll(".tab"))c.addEventListener("click",()=>{Jo=c.dataset.tab,Lt()});let o=yt.querySelector(".resize"),r=!1;o.addEventListener("pointerdown",c=>{r=!0,o.setPointerCapture?.(c.pointerId)}),o.addEventListener("pointermove",c=>{r&&n.style.setProperty("--drawer-width",`${Math.min(560,Math.max(300,window.innerWidth-c.clientX))}px`)}),o.addEventListener("pointerup",()=>{r&&(r=!1,pe.setSetting("drawerWidth",parseFloat(n.style.getPropertyValue("--drawer-width"))))}),e.event(window,"resize",Lt),e.event(document,"keydown",c=>{c.key==="Escape"&&Yt&&(Yt=!1,Lt())}),e.event(document,"pointerdown",c=>{!Yt||c.composedPath().includes(On)||(Yt=!1,Lt())}),e.add(()=>{On?.remove(),On=null,yt=null}),Lt()}s(ay,"createShell");function ny(){let e=[...document.querySelectorAll('div[class*="SkillActionDetail_maxActionCountInput"] input')].filter(t=>!Cf(t)).sort((t,a)=>+!!a.closest('[class*="Modal_modalContainer"]')-+!!t.closest('[class*="Modal_modalContainer"]'));for(let t of e){let a=t.closest('div[class*="SkillActionDetail_skillActionDetail"]')??t.closest('div[class*="SkillActionDetail_regularComponent"]')??t.parentElement;if(!a||Cf(a))continue;let n=iy(a),i=n?.actionHrid??u.api.resolveProductionAction?.(a)??(a.closest?.('[class*="EnhancingPanel"], [class*="EnhancementPanel"], [class*="EnhancePanel"]')?"/actions/enhancing/enhance":null),o=u.api.parseCompactNumber?.(t.value);if(!(!i||!Number.isFinite(o)||o<=0))return{panel:a,input:t,actionHrid:i,actionFunction:ry(a,i,n?.actionFunction),count:Math.ceil(o)}}return null}s(ny,"resolveActionPanel");function Cf(e){for(let t=e;t?.nodeType===1;t=t.parentElement){let a=String(t.className??"");if(t.hidden||t.getAttribute?.("aria-hidden")==="true"||t.style?.display==="none"||t.style?.visibility==="hidden"||/MainPanel_/.test(a)&&/hidden/i.test(a))return!0}return!1}s(Cf,"isHiddenActionElement");function iy(e){let t=Af(e);for(let a=0;t&&a<10;a+=1){let n=t.memoizedProps?.actionDetail;if(n?.hrid)return{actionHrid:n.hrid,actionFunction:n.function??""};t=t.return}return null}s(iy,"resolveActionFiberContext");function ry(e,t,a=""){return a||(e.closest?.('[class*="EnhancingPanel"], [class*="EnhancementPanel"], [class*="EnhancePanel"]')||String(t).includes("/enhancing/")?"/action_functions/enhancing":String(t).includes("/alchemy/")?"/action_functions/alchemy":"/action_functions/production")}s(ry,"resolveActionFunction");function oy(e){let t=String(e??"").match(/(?:\d[\d,.]*|\.\d+)\s*[kmbt]?/gi);if(!t?.length)return null;for(let a=t.length-1;a>=0;a-=1){let n=Number(u.api.parseCompactNumber?.(t[a]));if(Number.isFinite(n)&&n>=0)return n}return null}s(oy,"parseRequirementNumber");function sy(e){let t=e?.querySelector("svg use"),a=t?.getAttribute("href")??t?.getAttribute("xlink:href")??"",n=a.includes("#")?a.split("#").at(-1):a;return pe.normalizeItemHrid(n)}s(sy,"itemHridFromRequirement");function uy(e){let t=e.panel.querySelector('[class*="SkillActionDetail_itemRequirements"]');if(!t)return null;let a=[...t.querySelectorAll(':scope > [class*="Item_itemContainer"]')],n=[...t.querySelectorAll(':scope > [class*="SkillActionDetail_inputCount"]')];if(!a.length||n.length!==a.length)return null;let i=a.map((o,r)=>{let c=sy(o),l=oy(n[r].textContent);if(!c||l===null||l<=0)return null;let d=0,m=Math.ceil(l*e.count-1e-9),p=pe.getInventoryCount(c,d),b=pe.getLockedDetails(c,d),f=Math.max(0,p-b.total),g=pe.getCartItem(c,d)?.quantity??0;return{itemHrid:c,enhancementLevel:d,name:pe.resolveItemName(c),perAction:l,suggested:m,owned:p,locked:b.total,lockedByPlans:b.byPlan,effectiveOwned:f,cartQuantity:g,shortage:Math.max(0,m-f),addableShortage:Math.max(0,m-f-g),purchasable:c!=="/items/coin"}});return i.some(o=>!o)?null:{status:"complete",actionHrid:e.actionHrid,count:e.count,materials:i}}s(uy,"calculateEnhancingRequirements");function cy(e,t){let a=pe.normalizeItemHrid(t).split("/").at(-1);for(let n of e.querySelectorAll('[class*="Item_itemContainer"]'))if((n.querySelector("svg use")?.getAttribute("href")??n.querySelector("svg use")?.getAttribute("xlink:href")??"").includes(a))return n;return null}s(cy,"findMaterialHost");function pr(){document.getElementById(ln)?.remove(),document.querySelectorAll(".mwi-procurement-badge").forEach(e=>e.remove()),document.querySelectorAll(".mwi-procurement-requirement-row").forEach(e=>e.classList.remove("mwi-procurement-requirement-row")),document.querySelectorAll(".mwi-procurement-panel").forEach(e=>e.classList.remove("mwi-procurement-panel")),Ba=""}s(pr,"clearProductionUi");function as(){let e=ny();if(!e){let f=Tf();if(!f){pr();return}Ef(f);return}let t=pe.getSettings(),a=e.actionFunction==="/action_functions/enhancing",n=a?uy(e):pe.calculateRequirements(e.actionHrid,e.count);if(!n?.materials?.length){pr();return}let i=!a&&t.upgradeChainEnabled&&n.detail?.upgradeItemHrid?pe.calculateUpgradeChain(e.actionHrid,e.count):null,o=i?.leaves?.length?i.leaves:n.materials,r=JSON.stringify([a?"enhancing":"production",u.config.isZH,e.actionHrid,e.count,t.badgesEnabled,t.upgradeChainEnabled,o.map(f=>[f.itemHrid,f.suggested,f.owned,f.locked,f.cartQuantity])]);if(r===Ba&&document.getElementById(ln))return;if(pr(),Ba=r,t.badgesEnabled){e.panel.classList.add("mwi-procurement-panel");for(let f of n.materials){let g=cy(e.panel,f.itemHrid);if(!g)continue;g.parentElement?.classList.add("mwi-procurement-requirement-row");let h=document.createElement("span");h.className="mwi-procurement-badge",h.dataset.state=f.shortage?"missing":"ready",h.textContent=f.shortage?`${fe("缺","Need")} ${ka(f.shortage)}`:`${fe("余","Spare")} ${ka(f.effectiveOwned-f.suggested)}`;let _=f.lockedByPlans.map(y=>`${y.name}: ${dn(y.quantity)}`).join(`
`);h.title=`${fe("建议准备","Suggested")}: ${dn(f.suggested)}
${fe("当前拥有","Owned")}: ${dn(f.owned)}${f.locked?`
${fe("计划锁定","Locked")}: ${dn(f.locked)}
${_}`:""}`,g.insertAdjacentElement("afterend",h)}}let c=document.createElement("section");c.id=ln,c.dataset.mwitoolsProductionExtension="true";let l=o.filter(f=>f.purchasable&&f.shortage>0),d=o.filter(f=>f.purchasable&&f.addableShortage>0),m=document.createElement("div");m.className="mwi-procurement-summary-line",m.innerHTML=`<span class="mwi-procurement-summary-state">${l.length?`${fe("缺少","Missing")} <strong>${l.length}</strong> ${fr(l.length)} · ${fe("建议准备已包含安全余量","Suggested amounts include a safety margin")}`:fe("材料充足","Materials ready")}</span>`;let p=document.createElement("button");if(p.className="mwi-procurement-inline-button",p.type="button",p.disabled=d.length===0&&!i?.stages?.length,p.textContent=d.length?fe("加入购物清单","Add to shopping list"):fe("已在清单中","Already listed"),p.addEventListener("click",()=>{let f=new Set([...c.querySelectorAll(".mwi-procurement-chain-stage input:checked")].map(_=>_.dataset.action)),g=i?.stages?.length?pe.selectUpgradeChainMaterials(i,f):o,h=pe.addRequirementsToCart(g,a?"enhancing":"production");!a&&t.createPlansByDefault&&h.added>0&&pe.createPlan(e.actionHrid,e.count,g),br(h.added?fe(`已加入 ${h.added} 种材料`,`Added ${h.added} ${fr(h.added)}`):fe("没有新的缺料","No new shortages"))}),m.append(p),c.append(m),i?.stages?.length>1){let f=document.createElement("details");f.className="mwi-procurement-chain";let g=document.createElement("summary");g.textContent=`${fe("升级链","Upgrade chain")} · ${i.stages.length} ${fe("阶段","stages")}${i.cycle?` · ${fe("检测到循环","cycle detected")}`:""}${i.truncated?` · ${fe("已达到 25 层","25-level limit")}`:""}`;let h=document.createElement("div");h.className="mwi-procurement-chain-list";for(let _ of i.stages){let y=document.createElement("label");y.className="mwi-procurement-chain-stage",y.innerHTML=`<input type="checkbox" checked data-action="${oa(_.actionHrid)}"><span>${oa(_.name)}</span><span>×${ka(_.count)}</span>`,h.append(y)}f.append(g,h),c.append(f)}let b=a?null:e.panel.querySelector("#mwi-production-summary");b?b.append(c):(e.panel.querySelector('[class*="SkillActionDetail_actionContainer"]')??e.input.parentElement).insertAdjacentElement("afterend",c)}s(as,"renderProductionProcurement");function Af(e){if(!e)return null;let t=Object.getOwnPropertyNames(e).find(a=>a.startsWith("__reactFiber")||a.startsWith("__reactInternalInstance"));return t?e[t]:null}s(Af,"findReactFiber");function Mf(e,t=0,a=new Set){if(!e||typeof e!="object"||t>5||a.has(e))return null;a.add(e);for(let n of Object.values(e))if(Array.isArray(n)&&n.some(i=>i?.itemHrid&&Number(i?.count)>0))return n;for(let n of Object.values(e)){let i=Mf(n,t+1,a);if(i)return i}return null}s(Mf,"findObjectWithItemRequirements");function Tf(){return[...document.querySelectorAll('[class*="HousePanel_modalContent"]')].find(e=>e.getClientRects().length&&e.querySelector('[class*="HousePanel_itemRequirements"]'))}s(Tf,"findActiveHouseModal");function ly(e){let t=String(e??"").replaceAll(",","").trim(),a=Number(u.api.parseCompactNumber?.(t));if(Number.isFinite(a)&&a>=0)return a;let n=t.match(/-?\d+(?:\.\d+)?/),i=Number(n?.[0]);return Number.isFinite(i)&&i>=0?i:null}s(ly,"parseHouseCount");function dy(e){let t=e?.querySelector("svg use"),a=t?.getAttribute("href")??t?.getAttribute("xlink:href")??"",n=a.includes("#")?a.split("#").at(-1):a;return pe.normalizeItemHrid(n)}s(dy,"houseItemHrid");function my(e){let t=e.querySelector('[class*="HousePanel_itemRequirements"]');if(!t)return null;let a=[...t.querySelectorAll(':scope > [class*="Item_itemContainer"]')];a.length||(a=[...t.querySelectorAll('[class*="HousePanel_itemRequirementCell"] [class*="Item_itemContainer"]')]);let n=[...t.querySelectorAll(':scope > [class*="HousePanel_inputCount"]')];if(!a.length||n.length<a.length)return null;let i=a.map((o,r)=>({itemHrid:dy(o),enhancementLevel:0,count:ly(n[r]?.textContent)}));return i.every(o=>o.itemHrid&&o.count>0)?i:null}s(my,"extractHouseRequirementsFromDom");function fy(e){let t=Af(e),a=null;for(let n=0;t&&n<12&&!a;n+=1)a=Mf({props:t.memoizedProps,state:t.memoizedState}),t=t.return;return a?.length&&a.every(n=>pe.normalizeItemHrid(n?.itemHrid)&&Number(n?.count)>0)?a:null}s(fy,"extractHouseRequirementsFromFiber");function Ef(e=Tf()){if(!e)return;let t=my(e)??fy(e);if(!t?.length){e.querySelector(`#${ln}`)?.remove(),Ba="";return}let a=t.map(d=>{let m=pe.getEffectiveInventory(d.itemHrid,d.enhancementLevel),p=Math.ceil(Number(d.count)||0),b=pe.getCartItem(d.itemHrid,d.enhancementLevel)?.quantity??0;return{itemHrid:pe.normalizeItemHrid(d.itemHrid),enhancementLevel:Number(d.enhancementLevel)||0,name:pe.resolveItemName(d.itemHrid),suggested:p,owned:m,shortage:Math.max(0,p-m),addableShortage:Math.max(0,p-m-b),purchasable:pe.normalizeItemHrid(d.itemHrid)!=="/items/coin"}}),n=JSON.stringify(["housing",u.config.isZH,a.map(d=>[d.itemHrid,d.suggested,d.owned,d.shortage,d.addableShortage])]);if(n===Ba&&e.querySelector(`#${ln}`))return;document.getElementById(ln)?.remove(),Ba=n;let i=document.createElement("section");i.id=ln,i.className="mwi-procurement-summary-line";let o=a.filter(d=>d.purchasable&&d.shortage>0);i.innerHTML=`<span class="mwi-procurement-summary-state">${o.length?u.config.isZH?`房屋升级缺少 <strong>${o.length}</strong> 种材料`:`Missing <strong>${o.length}</strong> ${fr(o.length)} for the house upgrade`:fe("房屋升级材料充足","House materials ready")}</span>`;let r=document.createElement("button");r.className="mwi-procurement-inline-button",r.type="button";let c=a.filter(d=>d.purchasable&&d.addableShortage>0);r.textContent=c.length?fe("加入购物清单","Add to shopping list"):fe("已在清单中","Already listed"),r.disabled=c.length===0,r.addEventListener("click",()=>{let d=pe.addRequirementsToCart(a,"housing");br(d.added?fe(`已加入 ${d.added} 种材料`,`Added ${d.added} ${fr(d.added)}`):fe("没有新的缺料","No new shortages")),Ba="",globalThis.queueMicrotask(()=>Ef(e))}),i.append(r),(e.querySelector('[class*="HousePanel_upgradeButton"]')??e.lastElementChild)?.insertAdjacentElement("beforebegin",i)}s(Ef,"renderHouseProcurement");function by(){let e=document.getElementById("root"),t=[],a=s(o=>{let r=o?.current??o;r&&typeof r=="object"&&!t.includes(r)&&t.push(r)},"pushFiber");a(e?._reactRootContainer?.current),a(e?._reactRootContainer?._internalRoot?.current);for(let o of[e,document.body])for(let r of Object.getOwnPropertyNames(o??{}))(r.startsWith("__reactContainer")||r.startsWith("__reactFiber")||r.startsWith("__reactInternalInstance"))&&a(o[r]);let n=new Set,i=null;for(;t.length&&n.size<5e4;){let o=t.pop();if(!o||n.has(o))continue;n.add(o);let r=o.stateNode;if(typeof r?.handleGoToMarketplace=="function"&&typeof r?.handleCloseMarketplaceModal=="function"&&typeof r?.setState=="function")return{host:r,fn:r.handleGoToMarketplace,floating:!0};let c=r?.handleGoToMarketplace??r?.goToMarketplace??r?.openMarketplace;!i&&typeof c=="function"&&(i={host:r,fn:c}),o.child&&t.push(o.child),o.sibling&&t.push(o.sibling)}return i}s(by,"resolveMarketplaceHandler");function gi(e,t=0){let a=by();if(!a)return br(fe("暂时无法打开市场,请先手动打开市场","Could not open the market; open it manually first")),!1;xa=pe.normalizeItemHrid(e);let n=xa.replace(/^\/items\//,""),i=Number(t)||0,o=[[xa,i],[xa],[n,i],[n]],r=null;if(a.floating)try{let c=a.host.state?.navTarget==="marketplace"?"marketplace":"",l=s(()=>{a.host.setState({showMarketplaceModal:!0,marketViewOverrideData:{itemHrid:xa,enhancementLevel:i}})},"showFloatingModal");c?(a.host.setState({navTarget:"milking",showMarketplaceModal:!1},l),setTimeout(()=>{qn&&xa===pe.normalizeItemHrid(e)&&a.host.state?.navTarget!=="marketplace"&&a.fn.call(a.host,xa,i)},240)):l(),qn=!0,Yo=!0,mr=Date.now(),pi=!1,Qo=a.host,es=c,dr=new Map,window.matchMedia?.("(max-width:760px)").matches&&(Yt=!1,Lt());for(let d of[80,240,600,1200])setTimeout(()=>Rn(!0),d);return!0}catch(c){r=c}for(let c of o)try{a.fn.call(a.host,...c),qn=!0,Yo=!1,mr=Date.now(),pi=!1,Qo=null,es="",dr=new Map,window.matchMedia?.("(max-width:760px)").matches&&(Yt=!1,Lt());for(let l of[80,240,600,1200])setTimeout(()=>Rn(!0),l);return!0}catch(l){r=l}return console.warn(u.config.isZH?"[MWITools] 无法在市场中打开购物清单物品。":"[MWITools] Failed to open the shopping-list item in the marketplace.",r),br(fe("市场跳转失败","Marketplace navigation failed")),!1}s(gi,"openMarketplace"),u.api.openProcurementMarketplace=gi;function py(){let e=[...document.querySelectorAll('[class*="MarketplacePanel_marketplacePanel"]')].filter(t=>t.getClientRects().length);return e.find(t=>t.closest('[class*="MainPanel_marketplaceModal__"]'))??e.at(0)}s(py,"findMarketPanel");function gy(e){let t=e?.querySelector('[class*="MarketplacePanel_currentItem"] svg use, [class*="MarketplacePanel_itemContainer"] svg use'),n=(t?.getAttribute("href")??t?.getAttribute("xlink:href")??"").split("#").at(-1);return n?pe.normalizeItemHrid(n):""}s(gy,"detectMarketItem");function ns({preserveSession:e=!1}={}){if(document.getElementById(cn)?.remove(),document.querySelectorAll(".mwi-procurement-market-target").forEach(t=>t.classList.remove("mwi-procurement-market-target")),!e){let t=Qo,a=es;qn=!1,Yo=!1,mr=0,pi=!1,Qo=null,es="",xa="",bi="",dr=new Map,a&&typeof t?.setState=="function"&&t.state?.navTarget!==a&&t.setState({navTarget:a})}}s(ns,"clearMarketUi");function hy(e,t=!1){if(document.querySelectorAll(".mwi-procurement-market-target").forEach(i=>i.classList.remove("mwi-procurement-market-target")),!pe.getSettings().locateEnabled)return;let a=new Set(ts().map(i=>i.itemHrid.split("/").at(-1))),n=null;for(let i of e.querySelectorAll("svg use")){let o=i.getAttribute("href")??i.getAttribute("xlink:href")??"",r=[...a].find(l=>o.includes(l));if(!r)continue;let c=i.closest('[class*="Item_itemContainer"]')??i.parentElement;c.classList.add("mwi-procurement-market-target"),xa&&xa.endsWith(r)&&!n&&(n=c)}t&&n&&n.scrollIntoView({behavior:"smooth",block:"center"})}s(hy,"highlightMarketItems");function _y(){if(pe.getSettings().autoPrefillEnabled)for(let e of document.querySelectorAll('[class*="MarketplacePanel_modalContent"]')){if(e.dataset.mwitoolsProcurementPrefilled)continue;let t=e.querySelector('[class*="MarketplacePanel_header"]')?.textContent??"";if(!/立即购买|购买挂牌|购买订单|buy|purchase/i.test(t))continue;let a=e.querySelector("svg use"),n=a?.getAttribute("href")??a?.getAttribute("xlink:href")??"",i=pe.normalizeItemHrid(n.split("#").at(-1)),o=pe.getCartItems().find(l=>l.itemHrid===i),r=e.querySelector('[class*="MarketplacePanel_quantityInputs"] input');if(!o?.quantity||!r)continue;let c=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value")?.set;c?.call(r,String(o.quantity)),c||(r.value=String(o.quantity)),r.dispatchEvent(new Event("input",{bubbles:!0})),r.dispatchEvent(new Event("change",{bubbles:!0})),e.dataset.mwitoolsProcurementPrefilled="true"}}s(_y,"prefillPurchaseModal");function yy(e){if(!qn||!pe.getSettings().purchaseNavEnabled){document.getElementById(cn)?.remove();return}let t=ts();if(!t.length){document.getElementById(cn)?.remove();return}let a=gy(e),n=[...t.map(f=>({...f,done:!1})),...[...dr.values()].filter(f=>!t.some(g=>g.itemHrid===f.itemHrid))],i=document.getElementById(cn);i||(i=document.createElement("div"),i.id=cn,document.body.appendChild(i)),i.replaceChildren();let o=document.createElement("span");o.className="mwi-procurement-nav-progress",o.textContent=fe(`待购 ${t.length}`,`${t.length} pending`);let r=document.createElement("div");r.className="mwi-procurement-nav-items";for(let f of n){let g=document.createElement("button");g.className="mwi-procurement-nav-chip",g.dataset.current=String(!f.done&&f.itemHrid===a),g.dataset.done=String(!!f.done);let h=pe.resolveItemName(f.itemHrid)||f.name,_=f.done?fe("已完成","Completed"):dn(f.quantity);g.title=`${h} · ${_}`,g.setAttribute("aria-label",g.title),g.innerHTML=`<span class="mwi-procurement-nav-icon">${kf({...f,name:h})}</span><b>${f.done?"✓":ka(f.quantity)}</b>`,f.done||g.addEventListener("click",()=>gi(f.itemHrid,f.enhancementLevel)),r.append(g)}let c=t.find(f=>f.itemHrid!==a)??t.at(0)??null,l=document.createElement("button");l.className="mwi-procurement-nav-next",l.textContent=fe("下一项 ›","Next ›"),l.disabled=!c,l.addEventListener("click",()=>{c&&gi(c.itemHrid,c.enhancementLevel),bi=""}),i.append(o,r,l);let m=(e.closest('[class*="MainPanel_marketplaceModal__"]')??e.closest('[class*="Modal_modalContainer"]')??e).getBoundingClientRect(),p=i.offsetHeight||40,b=window.innerHeight-m.bottom;i.style.left=`${m.left}px`,i.style.width=`${m.width}px`,i.style.top=`${b>=p?m.bottom:Math.max(0,m.bottom-p)}px`,i.dataset.inside=String(b<p)}s(yy,"renderMarketNav");function Rn(e=!1){let t=py();if(!t){let a=qn&&!pi&&Date.now()-mr<xf;ns({preserveSession:a});return}if(qn&&Yo&&!t.closest('[class*="MainPanel_marketplaceModal__"]')){let a=!pi&&Date.now()-mr<xf;if(ns({preserveSession:a}),a)return}t.closest('[class*="MainPanel_marketplaceModal__"]')&&(pi=!0),hy(t,e),_y(),yy(t)}s(Rn,"updateMarketUi");function wy(e,t){return e.code===t?.code&&e.ctrlKey===!!t.ctrl&&e.shiftKey===!!t.shift&&e.altKey===!!t.alt&&e.metaKey===!!t.meta}s(wy,"shortcutMatches");function vy(e){let t=pe.getSettings().nextItemShortcut;if(!bi||!t||!wy(e,t))return;let a=document.activeElement;if(a?.matches?.("input,textarea,select")||a?.isContentEditable)return;let i=pe.getCartItems().find(o=>o.itemHrid===bi&&o.quantity>0)??ts().at(0);bi="",i&&(e.preventDefault(),e.stopPropagation(),gi(i.itemHrid,i.enhancementLevel))}s(vy,"handleShortcut");function xy(e){let t=s(()=>{Lt(),Ba="",as(),Rn()},"rerender");e.add(pe.on("cart:change",t)),e.add(pe.on("plan:change",t)),e.add(pe.on("settings:change",({id:a,value:n})=>{a==="badgesEnabled"&&!n&&pr(),a==="locateEnabled"&&!n&&document.querySelectorAll(".mwi-procurement-market-target").forEach(i=>i.classList.remove("mwi-procurement-market-target")),a==="purchaseNavEnabled"&&!n&&document.getElementById(cn)?.remove(),Lt(),Ba=""})),e.add(pe.on("item:fulfilled",({item:a})=>{dr.set(pe.itemKey(a.itemHrid,a.enhancementLevel),{...a,done:!0});let n=ts().at(0);bi=n?.itemHrid??"",br(n?fe(`${pe.resolveItemName(a.itemHrid)} 已补齐,下一项:${n.name}`,`${pe.resolveItemName(a.itemHrid)} fulfilled. Next: ${n.name}`):fe("购物清单已全部补齐","Shopping list fulfilled")),Rn()})),e.add(pe.on("all:fulfilled",()=>{ns(),pe.getSettings().autoCollapseEnabled&&(Yt=!1,Lt())}))}s(xy,"subscribeProcurement"),u.features.register({id:"procurementAssistant",scope:"character",initialize({scope:e,characterId:t}){V_(),pe.activeCharacterId!==t&&pe.loadCharacterData(t),ay(e),xy(e),as(),Rn(),e.interval(as,350),e.interval(Rn,900),e.event(document,"keydown",vy,!0),e.add(()=>{pr(),ns(),document.getElementById(au)?.remove(),u.api.openProcurementMarketplace=null})}}),Object.assign(u.api,{renderProcurementShell:Lt,renderProductionProcurement:as,updateProcurementMarketUi:Rn,openProcurementMarketplace:gi});var nu="mwitools-semi-auto-train-style",hi="mwi-train-controls",is="mwi-train-detail-modal",_i="mwi-train-active-indicator",jt="mwi-train-window-wide",ky='div[class*="SkillActionDetail_maxActionCountInput"] input',Sy='div[class*="SkillActionDetail_regularComponent"],div[class*="SkillActionDetail_skillActionDetail"]',Cy='[class*="SkillActionDetail_loadoutDropdown"]',If='[class*="SkillActionDetail_buttonsContainer"]',iu=6e4,Nf=["handleGoToActionTypeDetail","handleClickActionTypeDetail","handleGoToActionType","handleSelectActionType","handleGoToActionDetail","handleSelectAction","handleClickAction","handleGoToAction"],K=null,rs=!1,Bn=0;function Ay(e){return(globalThis.requestAnimationFrame??globalThis.setTimeout)(e)}s(Ay,"raf");function Ve(e,t){return u.config.isZH?e:t}s(Ve,"t");function gr(e){if(!e?.isConnected||e.hidden)return!1;let t=globalThis.getComputedStyle?.(e);return t?.display!=="none"&&t?.visibility!=="hidden"}s(gr,"visible");function Sa(e){document.querySelectorAll(".mwi-train-toast").forEach(a=>a.remove());let t=document.createElement("div");t.className="mwi-train-toast",t.textContent=e,document.body.appendChild(t),setTimeout(()=>t.remove(),2600)}s(Sa,"showToast");function My(){if(document.getElementById(nu))return;let e=document.createElement("style");e.id=nu,e.textContent=`
    .${hi}{display:flex;min-width:0;max-width:100%;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:4px;margin-left:auto}
    .mwi-train-button{height:24px;padding:0 8px;border:1px solid rgba(144,166,235,.55);border-radius:4px;background:#282844;color:#e8e8ef;font:600 11px/1 Roboto,Arial,sans-serif;cursor:pointer;white-space:nowrap}
    .mwi-train-button:hover{filter:brightness(1.16)}
    .mwi-train-button:disabled{cursor:default;filter:none;opacity:.58}
    .mwi-train-button[data-kind="cancel"]{border-color:rgba(235,144,144,.55);background:#5c2a2a}
    .mwi-train-button[data-kind="cart"]{border-color:rgba(245,180,70,.65);background:#43351f}
    .mwi-train-cart-mode{height:20px;padding:0 6px;border:1px solid rgba(144,166,235,.45);border-radius:999px;background:#202033;color:#b8bfd8;font:600 10px/1 Roboto,Arial,sans-serif;cursor:pointer;white-space:nowrap}
    .mwi-train-cart-mode[aria-pressed="true"]{border-color:rgba(245,180,70,.75);background:#49381d;color:#ffe2a0}
    .${jt}{box-sizing:border-box!important;width:min(480px,calc(100vw - 24px))!important;max-width:calc(100vw - 24px)!important;overflow-x:hidden!important}
    .${jt}>[class*="Modal_modalContent"]{box-sizing:border-box!important;width:100%!important;max-width:100%!important;min-width:0!important;overflow-x:hidden!important}
    .${jt} [class*="SkillActionDetail_regularComponent"],.${jt} [class*="SkillActionDetail_skillActionDetail"]{box-sizing:border-box!important;width:100%!important;max-width:100%!important;min-width:0!important;overflow-x:hidden!important}
    .${jt} [class*="SkillActionDetail_regularComponent"]>*{box-sizing:border-box!important;max-width:100%!important;min-width:0!important}
    .${jt} [class*="SkillActionDetail_loadoutDropdown"]{min-width:0!important;flex-wrap:wrap!important}
    .${jt} [class*="SkillActionDetail_buttonsContainer"]{box-sizing:border-box!important;max-width:100%!important;min-width:0!important;flex-wrap:wrap!important}
    .${jt} .${hi}{flex:1 1 100%;width:100%;margin-left:0}
    .mwi-train-shop-target{position:relative;z-index:1;outline:3px solid #ffd257!important;outline-offset:2px;box-shadow:0 0 0 2px rgba(255,210,87,.28),0 0 18px rgba(255,188,55,.8)!important;animation:mwi-train-shop-pulse 1.1s ease-in-out infinite alternate}
    .${is}{position:fixed;inset:0;z-index:2147483100;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.58)}
    .${is}>section{box-sizing:border-box;width:min(470px,calc(100vw - 24px));max-height:80vh;overflow:auto;padding:16px 20px;border:1px solid #90a6eb;border-radius:8px;background:#1c1c2c;color:#e8e8ef;box-shadow:0 5px 20px rgba(0,0,0,.55);font-size:13px}
    .mwi-train-detail-title{margin-bottom:9px;padding-bottom:6px;border-bottom:1px solid #444;font-size:15px;font-weight:700}
    .mwi-train-detail-row{display:flex;align-items:center;gap:7px;padding:4px 0}.mwi-train-detail-row[data-current="true"]{color:#ffe27a}.mwi-train-detail-row>span:first-child{min-width:0;flex:1}.mwi-train-detail-count{flex:0 0 auto;color:#9fd9ff}.mwi-train-detail-terminal{color:#80df91}
    .mwi-train-detail-close{margin-top:12px}
    .mwi-train-toast{position:fixed;right:14px;top:14px;z-index:2147483200;max-width:min(380px,calc(100vw - 28px));padding:8px 11px;border:1px solid rgba(245,158,11,.55);border-radius:5px;background:rgba(15,18,28,.97);color:#eee;font-size:.75rem;box-shadow:0 8px 22px rgba(0,0,0,.4)}
    #${_i}{position:fixed;top:max(8px,env(safe-area-inset-top));left:50%;z-index:2147483000;max-width:calc(100vw - 24px);transform:translateX(-50%);overflow:hidden;padding:7px 13px;border:1px solid rgba(245,180,70,.78);border-radius:999px;background:rgba(42,32,18,.96);color:#ffe8a3;font:700 12px/1.15 Roboto,Arial,sans-serif;text-overflow:ellipsis;white-space:nowrap;box-shadow:0 5px 18px rgba(0,0,0,.48),0 0 8px rgba(245,180,70,.22);cursor:pointer}
    #${_i}:hover{filter:brightness(1.14)}
    #${_i}:focus-visible{outline:2px solid #ffe27a;outline-offset:2px}
    @keyframes mwi-train-shop-pulse{from{filter:brightness(1)}to{filter:brightness(1.28)}}
  `,(document.head??document.documentElement).appendChild(e)}s(My,"addStyles");function zn(){for(let e of document.querySelectorAll(ky)){if(!gr(e))continue;let t=e.closest(Sy)??e.parentElement,a=u.api.resolveProductionAction?.(t);if(!(!t||!a))return{panel:t,input:e,actionHrid:a}}return null}s(zn,"panelContext");function Ty(e){let t=u.state.initData_actionDetailMap?.[e];return u.api.getExpectedOutputs?.(t)?.[0]?.itemHrid??""}s(Ty,"outputForAction");function hr(e){return u.api.procurement?.resolveItemName?.(e)??e}s(hr,"localizedItem");function Ey(e,t){let a=hr(e.outputHrid);return e.kind==="shop"?`${t+1}. ${Ve("商店购买","Buy from shop")}「${a}」`:e.kind==="craft"?`${t+1}. ${Ve("制造","Craft")}「${a}」`:`${t+1}. ${Ve("升级","Upgrade")}「${hr(e.inputHrid)}」→「${a}」`}s(Ey,"localizeStep");function _r(e,t,a){let n=document.createElement("button");return n.type="button",n.className="mwi-train-button",n.dataset.kind=t,n.textContent=e,n.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation(),a(i)}),n}s(_r,"createButton");function yi(){document.querySelector(`.${is}`)?.remove()}s(yi,"closeDetail");function Iy(e){return e?.closest?.('[class*="Modal_modalContainer"]')?.querySelector(':scope > [class*="Modal_modal"]:not([class*="Modal_modalContainer"])')??e?.closest?.('[class*="Modal_modal"]:not([class*="Modal_modalContainer"])')??null}s(Iy,"trainWindow");function Ny(e,t){Iy(e)?.classList.toggle(jt,!!t)}s(Ny,"setTrainWindowWide");function yr(){let e=document.getElementById(_i);if(!K){e?.remove();return}e||(e=document.createElement("button"),e.id=_i,e.type="button",e.addEventListener("click",()=>Fn(Ve("用户取消","Cancelled by user"))),document.body.appendChild(e));let t=u.config.isZH?`🚂 正在进行火车 (${K.index+1}/${K.steps.length}) · 点击退出`:`🚂 Train in progress (${K.index+1}/${K.steps.length}) · Click to cancel`;e.textContent!==t&&(e.textContent=t),e.title=Ve("点击退出当前火车","Click to cancel the current train")}s(yr,"renderActiveIndicator");function Hy(e,t=null){yi();let a=document.createElement("div");a.className=is;let n=document.createElement("section");n.setAttribute("role","dialog"),n.setAttribute("aria-modal","true");let i=document.createElement("div");i.className="mwi-train-detail-title",i.textContent=Ve("🚂 火车详情","🚂 Train details"),n.appendChild(i),e.steps.forEach((r,c)=>{let l=document.createElement("div");l.className="mwi-train-detail-row",l.dataset.current=String(c===t);let d=document.createElement("span");d.textContent=`${c===t?"▶ ":" "}${Ey(r,c)}`;let m=document.createElement("span");if(m.className="mwi-train-detail-count",m.textContent=Number.isFinite(r.count)?`× ${u.api.formatExactNumber?.(r.count)??r.count}`:Ve("保持当前次数","Keep current count"),l.append(d,m),c===e.steps.length-1){let p=document.createElement("span");p.className="mwi-train-detail-terminal",p.textContent=Ve("终点","Final"),l.appendChild(p)}n.appendChild(l)});let o=_r(Ve("关闭","Close"),"detail",yi);return o.classList.add("mwi-train-detail-close"),n.appendChild(o),a.appendChild(n),a.addEventListener("click",r=>{r.target===a&&yi()}),document.body.appendChild(a),a}s(Hy,"showTrainDetail");function Dy(e){return Object.getOwnPropertyNames(e??{}).find(t=>t.startsWith("__reactFiber$")||t.startsWith("__reactInternalInstance$"))}s(Dy,"fiberKey");function Hf(){let e=globalThis.unsafeWindow??globalThis,t=[];e.mwi?.game&&t.push(e.mwi.game);let a=[],n=document.getElementById("root");for(let o of[n?._reactRootContainer?.current,n?._reactRootContainer?._internalRoot?.current])o&&a.push(o);for(let o of[n,document.querySelector('[class*="GamePage_gamePage"]'),document.body])for(let r of Object.getOwnPropertyNames(o??{}))(r.startsWith("__reactContainer$")||r.startsWith("__reactFiber$")||r.startsWith("__reactInternalInstance$"))&&a.push(o[r]?.current??o[r]);let i=new Set;for(;a.length&&i.size<5e4;){let o=a.pop();if(!o||i.has(o))continue;i.add(o);let r=o.stateNode;r&&(typeof r.setState=="function"||Nf.some(c=>typeof r[c]=="function"))&&!t.includes(r)&&t.push(r),o.return&&a.push(o.return),o.child&&a.push(o.child),o.sibling&&a.push(o.sibling)}return t}s(Hf,"gameInstances");function Py(e,t){return[...document.querySelectorAll('[class*="NavigationBar_navigationLink"]')].filter(a=>[...a.classList].some(n=>n.startsWith("NavigationBar_navigationLink__"))).find(a=>{let n=[...a.querySelectorAll("use")].map(i=>i.getAttribute("href")??i.getAttribute("xlink:href")??"").join(" ").toLowerCase();return e&&n.includes(`#${e.toLowerCase()}`)||t?.test(a.textContent??"")})}s(Py,"nativeNavigationLink");function Df(e){let t=u.state.initData_actionDetailMap?.[e],a=u.api.getExpectedOutputs?.(t)?.[0]?.itemHrid,n=String(a??"").split("/").at(-1),i=new Set([t?.name,u.config.isZH?u.data.ZHActionNames?.[e]:null].filter(Boolean).map(r=>String(r).replaceAll(/\s+/g," ").trim())),o=[...document.querySelectorAll('[class*="SkillAction_skillAction"]')].filter(gr).find(r=>{let c=[...r.querySelectorAll("use")].map(d=>d.getAttribute("href")??d.getAttribute("xlink:href")??""),l=String(r.querySelector('[class*="SkillAction_name"]')?.textContent??"").replaceAll(/\s+/g," ").trim();return n&&c.some(d=>d.endsWith(`#${n}`))||i.has(l)});return o?.click(),!!o}s(Df,"clickActionCard");function Pf(e){let t=++Bn,a=s(()=>{for(let o of Hf())for(let r of Nf)if(typeof o[r]=="function")try{return o[r](e),!0}catch{}return!1},"invoke"),n=String(e).match(/^\/actions\/([^/]+)\//)?.[1];if(Df(e))return!0;let i=[...document.querySelectorAll('[class*="NavigationBar_navigationLink"],button,a,[data-target]')].find(o=>{let r=[o.getAttribute("data-target"),o.getAttribute("href"),o.getAttribute("aria-label"),o.id,...[...o.querySelectorAll?.("use")??[]].map(c=>c.getAttribute("href")??c.getAttribute("xlink:href")??"")].filter(Boolean).join(" ").toLowerCase();return n&&r.includes(n)});if(i){i.click();let o=K,r=Date.now()+iu,c=s(()=>{t===Bn&&(o&&K!==o||Df(e)||a()||Date.now()<r&&setTimeout(c,100))},"open");return setTimeout(c,150),!0}return a()}s(Pf,"navigateToTrainAction");function ru(){document.querySelectorAll(".mwi-train-shop-target").forEach(e=>e.classList.remove("mwi-train-shop-target"))}s(ru,"clearTrainShopHighlight");function Ly(e,t){let a=String(t.outputHrid??"").split("/").at(-1),n=hr(t.outputHrid);return[...e.querySelectorAll('[class*="ShopPanel_shopItem__"]')].filter(i=>[...i.classList].some(o=>o.startsWith("ShopPanel_shopItem__"))).filter(gr).find(i=>{let o=[...i.querySelectorAll("use")].map(c=>c.getAttribute("href")??c.getAttribute("xlink:href")??""),r=String(i.querySelector('[class*="ShopPanel_name"]')?.textContent??"").trim();return a&&o.some(c=>c.endsWith(`#${a}`))||r===n})}s(Ly,"findTrainShopItem");function Lf(e){let t=++Bn,a=Hf().find(r=>typeof r.setState=="function"&&r.state?.navTarget!==void 0);if(!e?.shopHrid)return!1;let n=!1;if(a)try{a.state?.navTarget!=="shop"&&a.setState({navTarget:"shop"}),n=!0}catch{}if(!n){let r=Py("shop",/^(商店|shop)$/i);if(!r)return!1;r.click(),n=!0}let i=Date.now()+iu,o=s(()=>{if(t!==Bn||!K||Date.now()>=i)return;let r=[...document.querySelectorAll('[class*="ShopPanel_shopPanel"]')].find(gr);if(!r){setTimeout(o,100);return}let c=Dy(r),l=c?r[c]:null,d=null;for(;l;){if(l.stateNode?.state?.shopItemHrid!==void 0){d=l.stateNode;break}l=l.return}let m=Math.max(1,Math.ceil(Number(e.count)||1)),p=Ly(r,e);if(p&&(ru(),p.classList.add("mwi-train-shop-target")),d)try{d.setState({shopItemHrid:e.shopHrid,shopItemQuantity:m,shopItemQuantityError:null});return}catch{}if(!p){setTimeout(o,100);return}p.click();let b=s(()=>{if(t!==Bn||!K||Date.now()>=i)return;let f=[...document.querySelectorAll('[class*="ShopPanel"] input[type="number"],[class*="Modal_modal"] input[type="number"]')].find(gr);if(f){$f(f,m);return}setTimeout(b,100)},"fill");b()},"open");return o(),n}s(Lf,"navigateToTrainShop");function $f(e,t){if(!e||!Number.isFinite(t)||t<=0)return!1;if(u.api.reactInputTriggerHack)return u.api.reactInputTriggerHack(e,String(t)),!0;let a=e.value;return e.value=String(t),e._valueTracker?.setValue(a),e.dispatchEvent(new Event("input",{bubbles:!0})),!0}s($f,"setInput");function os(){K&&(ru(),K.queueButton&&K.queueListener&&K.queueButton.removeEventListener("click",K.queueListener,!0),K.queueButton=null,K.queueListener=null,K.inventoryUnsubscribe?.(),K.inventoryUnsubscribe=null)}s(os,"clearTrainListeners");function ou(){if(K){if(clearTimeout(K.timeout),K.index>=K.steps.length-1){K.timeout=null;return}K.timeout=setTimeout(()=>Fn(Ve("等待下一站超时","Timed out waiting for the next stop")),iu)}}s(ou,"resetTrainTimeout");function $y(e){return[...e.querySelectorAll(`${If} button,button`)].find(t=>/添加到队列|add to queue/i.test(t.textContent??""))}s($y,"queueButton");function su(e){let t=K?.steps?.[K.index];if(!t)return null;let a=u.api.trainPlanning.parseTrainCount(e?.input?.value);return a&&(t.count=a),Number.isFinite(t.count)&&t.count>0?t.count:null}s(su,"activeStepCount");function Oy(){let e=K?.steps?.[K.index];return Number.isFinite(e?.count)&&e.count>0?e.count:null}s(Oy,"plannedStepCount");function qy(e){return K?.allOutputHrids?.has(e)??!1}s(qy,"hasPlannedProducer");function uu(e=zn(),{usePlannedCount:t=!1}={}){if(!K)return{ok:!1,added:0,skipped:0};let a=K.index,n=K.steps[a];if(n.kind==="shop")return Sa(Ve("商店站点无需加入市场购物车","Shop stops do not use the market cart")),{ok:!1,added:0,skipped:0};let i=t?Oy()??su(e):su(e);if(!i)return Sa(Ve("请先填写本步次数","Enter the action count first")),{ok:!1,added:0,skipped:0};n.count=i,K.cartStepIndexes.add(a);let o=[...K.cartStepIndexes].map(l=>{let d=K.steps[l];return u.api.procurement.calculateRequirements(d.actionHrid,d.count,{excludeActionHrids:new Set}).materials.filter(p=>!(p.itemHrid===d.inputHrid&&qy(d.inputHrid)))}),r=u.api.procurement.aggregateRequirements(o),c=u.api.procurement.addRequirementsToCart(r,"train");return Sa(c.added?Ve(`本步缺料已加入购物车(${c.added} 种)`,`Added this stop's shortages (${c.added})`):Ve("本步没有新的缺料","No new shortages for this stop")),wi(),c}s(uu,"addCurrentTrainStepToCart");function Of(e=zn()){if(!K?.autoCartEnabled)return!1;let t=K.index,a=K.steps[t];return a?.kind==="shop"||K.cartStepIndexes.has(t)||K.autoCartPendingIndex===t||!e||e.actionHrid!==a?.actionHrid?!1:(K.autoCartPendingIndex=t,setTimeout(()=>{if(!K?.autoCartEnabled||K.index!==t||K.cartStepIndexes.has(t))return;let n=zn();n?.actionHrid===a.actionHrid&&uu(n,{usePlannedCount:!0}),K?.index===t&&(K.autoCartPendingIndex=null)},150),!0)}s(Of,"maybeAutoAddCurrentStep");function qf(e,t=zn()){return K?(K.autoCartEnabled=!!e,K.autoCartPendingIndex=null,K.autoCartEnabled&&Of(t),wi(),!0):!1}s(qf,"setTrainAutoCart");function cu(){if(K){if(os(),K.index>=K.steps.length-1){Ff();return}K.index+=1,K.readyActionHrid="",K.autoCartPendingIndex=null,yr(),Bf()}}s(cu,"advanceTrain");function Rf(e=zn()){return K?(su(e),setTimeout(cu,0),!0):!1}s(Rf,"notifyCurrentTrainStepQueued");function Ry(e){if(!K)return;let t=K.steps[K.index];if(t.kind==="shop"||e.actionHrid!==t.actionHrid)return;K.readyActionHrid!==t.actionHrid&&(K.readyActionHrid=t.actionHrid,Number.isFinite(t.count)&&t.count>0&&setTimeout(()=>{if(K?.steps?.[K.index]!==t)return;let n=zn();n?.actionHrid===t.actionHrid&&$f(n.input,t.count)},100),K.index===K.steps.length-1&&!K.arrivalShown&&(K.arrivalShown=!0,Sa(Ve("火车已到终点,请手动加入队列","Final stop reached; add it to the queue manually"))));let a=$y(e.panel);a&&a!==K.queueButton&&(os(),K.queueButton=a,K.queueListener=()=>Rf(e),a.addEventListener("click",K.queueListener,!0)),Of(e),ou()}s(Ry,"wirePanel");function By(e){if(!K||K.inventoryUnsubscribe)return;let t=u.api.procurement.getInventoryCount(e.outputHrid,0),a=t+Math.max(0,Number(e.count)||0);if(a<=t){cu();return}K.inventoryUnsubscribe=u.api.procurement.on("inventory:change",()=>{K&&(u.api.procurement.getInventoryCount(e.outputHrid,0)<a||cu())}),Sa(Ve(`购买 ${e.count} 个「${hr(e.outputHrid)}」后自动续站`,`Buy ${e.count} ${hr(e.outputHrid)} to continue automatically`)),ou()}s(By,"watchShopStep");function Bf(){if(!K)return;let e=K.steps[K.index];if(!(e.kind==="shop"?(K.navigateShop??Lf)(e):(K.navigateAction??Pf)(e.actionHrid))){Fn(Ve("无法打开下一站","Could not open the next stop"));return}e.kind==="shop"&&By(e),ou(),wi()}s(Bf,"goToCurrentStep");function zf(e,t={}){if(Fn(""),e?.cycle||e?.truncated)return Sa(e.cycle?Ve("升级链存在循环,无法启动火车","The upgrade chain contains a cycle"):Ve("升级链过长,无法安全启动火车","The upgrade chain is too long to start safely")),!1;let a=(e?.steps??[]).map(c=>({...c})),n=Number(a.at(-1)?.count);if(!Number.isFinite(n)||n<=0)return Sa(Ve("请先填写生产数量,再开始火车","Enter a production count before starting the train")),!1;let i=a.some(c=>Number.isFinite(c.count)),o=a.findIndex(c=>!Number.isFinite(c.count)||c.count>0),r=i?a.slice(o<0?a.length:o):a;return r.length?(K={...e,steps:r,index:0,cartStepIndexes:new Set,allOutputHrids:new Set(a.map(c=>c.outputHrid)),queueButton:null,queueListener:null,inventoryUnsubscribe:null,timeout:null,readyActionHrid:"",arrivalShown:!1,autoCartEnabled:!1,autoCartPendingIndex:null,navigateAction:t.navigateAction,navigateShop:t.navigateShop},yr(),Bf(),!0):(Sa(Ve("库存已经足够,无需开火车","Inventory already covers this train")),!1)}s(zf,"startTrain");function Fn(e=""){return K?(Bn+=1,os(),clearTimeout(K.timeout),K=null,yi(),yr(),wi(),e&&Sa(`${Ve("火车已停止:","Train stopped: ")}${e}`),!0):!1}s(Fn,"cancelTrain");function Ff(){return K?(Bn+=1,os(),clearTimeout(K.timeout),K=null,yi(),yr(),wi(),Sa(Ve("火车已完成","Train completed")),!0):!1}s(Ff,"finishTrain");function zy(){return K?{index:K.index,steps:K.steps.map(e=>({...e})),cartStepIndexes:[...K.cartStepIndexes],autoCartEnabled:K.autoCartEnabled}:null}s(zy,"getTrainState");function jf(e){let t=Ty(e.actionHrid);if(!t)return null;let a=u.api.trainPlanning.parseTrainCount(e.input.value);if(a)return{...u.api.trainPlanning.createTrainPlan(t,{[t]:a}),hasExplicitCount:!0};let n=u.api.trainPlanning.buildTrainChain(t);return{...n,hasExplicitCount:!1,steps:n.steps.map(i=>({...i,count:null}))}}s(jf,"idlePlan");function Fy(e){return e.panel.querySelector(Cy)??e.panel.querySelector(If)??e.input.parentElement}s(Fy,"controlsHost");function jy(e){let t=Fy(e);if(!t)return;let a=K?.steps?.[K.index],n=K&&(a?.kind==="shop"||e.actionHrid===a?.actionHrid),i=K??jf(e),o=n||!K&&i?.steps?.length>=2,r=t.querySelector(`:scope > .${hi}`);if(Ny(e.panel,o),!o){r?.remove();return}let c=JSON.stringify([!!K,K?.index??-1,i.steps.length,a?.kind??"",K?.autoCartEnabled??!1,i?.hasExplicitCount!==!1,e.actionHrid,u.config.isZH]);if(r?.dataset.signature!==c){if(r?.remove(),r=document.createElement("span"),r.className=hi,r.dataset.signature=c,r.appendChild(_r(Ve("📋 详情","📋 Details"),"detail",()=>Hy(i,K?.index??null))),K){let l=document.createElement("button");l.type="button",l.className="mwi-train-cart-mode",l.setAttribute("aria-pressed",String(K.autoCartEnabled)),l.textContent=K.autoCartEnabled?Ve("自动加购","Auto cart"):Ve("手动加购","Manual cart"),l.title=Ve("切换本步材料的自动或手动加购","Toggle automatic or manual step shopping"),l.addEventListener("click",m=>{m.preventDefault(),m.stopPropagation(),qf(!K?.autoCartEnabled,e)}),r.appendChild(l);let d=_r(a.kind==="shop"?Ve("本步无需加购","No cart items"):Ve("🛒 本步加购","🛒 Add step shortages"),"cart",()=>uu(e));d.disabled=a.kind==="shop",r.appendChild(d),r.appendChild(_r(`🛑 ${Ve("取消火车","Cancel train")} (${K.index+1}/${K.steps.length})`,"cancel",()=>Fn(Ve("用户取消","Cancelled by user"))))}else{let l=_r(`🚂 ${Ve("开始火车","Start train")} (${i.steps.length}${Ve("步"," stops")})`,"start",()=>zf(jf(e)));l.disabled=i.hasExplicitCount===!1,l.disabled&&(l.title=Ve("请先填写生产数量","Enter a production count first")),r.appendChild(l)}t.appendChild(r)}}s(jy,"renderControls");function lu(){rs=!1,yr();let e=zn();document.querySelectorAll(`.${jt}`).forEach(t=>{(!e?.panel||!t.contains(e.panel))&&t.classList.remove(jt)}),document.querySelectorAll(`.${hi}`).forEach(t=>{e?.panel.contains(t)||t.remove()}),e&&(K&&Ry(e),jy(e))}s(lu,"scan");function wi(){rs||(rs=!0,Ay(lu))}s(wi,"scheduleScan");function Wy(){Fn(""),document.querySelectorAll(`.${hi}`).forEach(e=>e.remove()),document.querySelectorAll(".mwi-train-toast").forEach(e=>e.remove()),document.getElementById(_i)?.remove(),document.querySelectorAll(`.${jt}`).forEach(e=>e.classList.remove(jt)),ru(),document.getElementById(nu)?.remove(),yi(),rs=!1}s(Wy,"cleanup"),u.features.register({id:"semiAutoTrain",setting:"semiAutoTrain",scope:"character",dependsOn:["procurementAssistant"],initialize({scope:e}){My(),lu();let t=new MutationObserver(wi);e.observer(t,document.body,{childList:!0,subtree:!0}),e.interval(lu,500),e.add(Wy)}}),Object.assign(u.api,{semiAutoTrain:{start:zf,cancel:Fn,finish:Ff,getState:zy,addCurrentStepToCart:uu,setAutoCart:qf,notifyQueued:Rf,navigateToAction:Pf,navigateToShop:Lf}});var Vy='[class*="RandomTask_name"]';function Wf(e){return String(e??"").replaceAll(/\s+/g," ").trim().toLocaleLowerCase()}s(Wf,"normalize");function Ca(e){let t=e?.id??e?.characterQuestID??e?.characterQuestId??e?.questID??e?.questId??e?.characterTaskID??e?.characterTaskId;return t==null?"":String(t)}s(Ca,"taskCardTaskId");function Gy(e){let t=Object.getOwnPropertyNames(e??{}).find(n=>n.startsWith("__reactFiber$")||n.startsWith("__reactInternalInstance$")),a=t?e[t]:null;for(let n=0;a&&n<24;n+=1){for(let i of[a.memoizedProps,a.pendingProps,a.stateNode?.props]){let o=i?.characterQuest??i?.quest??i?.task;if(o&&typeof o=="object")return o}a=a.return}return null}s(Gy,"fiberQuest");function Zy(e){let t=String(e?.querySelector(Vy)?.textContent??"");return Wf(t.split(/\s[-–]\s/).at(-1))}s(Zy,"cardActionLabel");function Uy(e){let a=String(e?.textContent??"").match(/(?:进度|progress)\s*:?\s*([\d,.]+)\s*\/\s*([\d,.]+)/i);if(!a)return null;let n=Number(a[1].replaceAll(",","")),i=Number(a[2].replaceAll(",",""));return Number.isFinite(n)&&Number.isFinite(i)?Math.max(0,i-n):null}s(Uy,"cardRemaining");function Ky(e){let t=u.state.initData_actionDetailMap?.[e];return new Set([t?.name,u.data.ZHActionNames?.[e],String(e??"").split("/").at(-1)?.replaceAll("_"," ")].map(Wf).filter(Boolean))}s(Ky,"actionLabels");function Xy(e,t,a,n){let i=Zy(e),o=Uy(e),r=t.map((c,l)=>({task:c,taskIndex:l,taskId:Ca(c),actionHrid:a(c)})).filter(({actionHrid:c})=>i?Ky(c).has(i):!1);if(o!==null){let c=r.filter(({task:l})=>Number(n(l))===o);c.length&&(r=c)}return r}s(Xy,"semanticCandidates");function za(e,t,{taskActionHrid:a,taskRemaining:n}){let i=Array.isArray(t)?t:[],o=new Map(i.map((l,d)=>[Ca(l),{task:l,taskIndex:d}]).filter(([l])=>l)),r=new Set,c=[...e].map((l,d)=>{let m=null,p=Gy(l),b=Ca(p);if(b&&o.has(b))m=o.get(b);else if(p){let f=i.indexOf(p);f>=0&&(m={task:p,taskIndex:f})}return Number.isInteger(m?.taskIndex)&&r.add(m.taskIndex),{card:l,originalIndex:d,resolved:m}});for(let l of c){if(l.resolved)continue;let d=Xy(l.card,i,a,n).filter(({taskIndex:p})=>!r.has(p));if(!d.length)continue;let m=String(l.card.dataset.mwitoolsTaskId??"");l.resolved=d.find(({taskId:p})=>p&&p===m)??d[0],r.add(l.resolved.taskIndex)}for(let l of c){if(l.resolved)continue;let d=i.map((p,b)=>({task:p,taskIndex:b})).filter(({taskIndex:p})=>!r.has(p)),m=d.find(({taskIndex:p})=>i.length===c.length&&p===l.originalIndex);l.resolved=m??(d.length===1?d[0]:null),l.resolved&&r.add(l.resolved.taskIndex)}return c.map(({card:l,originalIndex:d,resolved:m})=>{let p=m?.task??{},b=Number.isInteger(m?.taskIndex)?m.taskIndex:-1;return{card:l,task:p,taskId:Ca(p),taskIndex:b,originalIndex:d,actionHrid:a(p)}})}s(za,"resolveTaskCards");var du="mwitools-task-style",wr='div[class*="RandomTask_randomTask"]:not([data-mwitools-task-mirror="true"])',vr=[],ct=null,vi=new Map,Fa=new Map,Wt=new Set,sa=new Set,ss=0,Qt=null,xr=[],jn="",us=null,cs=null,xi="planet",ls=null,Vf=new Map,mn=new Set,ki=new Set,Gf=[{actionHrid:"/actions/combat/chimerical_den",sortIndex:56,monsters:new Set(["/monsters/alligator","/monsters/aquahorse","/monsters/butterjerry","/monsters/centaur_archer","/monsters/crab","/monsters/dodocamel","/monsters/eye","/monsters/eyes","/monsters/frog","/monsters/gobo_boomy","/monsters/gobo_shooty","/monsters/gobo_slashy","/monsters/gobo_smashy","/monsters/gobo_stabby","/monsters/griffin","/monsters/jackalope","/monsters/jungle_sprite","/monsters/manticore","/monsters/myconid","/monsters/nom_nom","/monsters/porcupine","/monsters/rat","/monsters/sea_snail","/monsters/skunk","/monsters/slimy","/monsters/snake","/monsters/swampy","/monsters/turtle","/monsters/veyes"])},{actionHrid:"/actions/combat/sinister_circus",sortIndex:57,monsters:new Set(["/monsters/acrobat","/monsters/black_bear","/monsters/deranged_jester","/monsters/elementalist","/monsters/flame_sorcerer","/monsters/gobo_boomy","/monsters/gobo_shooty","/monsters/gobo_slashy","/monsters/gobo_smashy","/monsters/gobo_stabby","/monsters/grizzly_bear","/monsters/gummy_bear","/monsters/ice_sorcerer","/monsters/juggler","/monsters/magician","/monsters/novice_sorcerer","/monsters/panda","/monsters/polar_bear","/monsters/rabid_rabbit","/monsters/vampire","/monsters/werewolf","/monsters/zombie","/monsters/zombie_bear"])},{actionHrid:"/actions/combat/enchanted_fortress",sortIndex:58,monsters:new Set(["/monsters/abyssal_imp","/monsters/black_bear","/monsters/elementalist","/monsters/enchanted_bishop","/monsters/enchanted_king","/monsters/enchanted_knight","/monsters/enchanted_pawn","/monsters/enchanted_queen","/monsters/enchanted_rook","/monsters/flame_sorcerer","/monsters/grizzly_bear","/monsters/ice_sorcerer","/monsters/magnetic_golem","/monsters/novice_sorcerer","/monsters/panda","/monsters/polar_bear","/monsters/soul_hunter","/monsters/stalactite_golem"])},{actionHrid:"/actions/combat/pirate_cove",sortIndex:59,monsters:new Set(["/monsters/abyssal_imp","/monsters/anchor_shark","/monsters/brine_marksman","/monsters/captain_fishhook","/monsters/eye","/monsters/eyes","/monsters/granite_golem","/monsters/infernal_warlock","/monsters/magnetic_golem","/monsters/soul_hunter","/monsters/squawker","/monsters/stalactite_golem","/monsters/the_kraken","/monsters/tidal_conjuror","/monsters/vampire","/monsters/veyes","/monsters/werewolf","/monsters/zombie"])}],Si=[["milking","挤奶","Milking"],["foraging","采摘","Foraging"],["woodcutting","伐木","Woodcutting"],["cheesesmithing","奶酪锻造","Cheesesmithing"],["crafting","制作","Crafting"],["tailoring","缝纫","Tailoring"],["cooking","烹饪","Cooking"],["brewing","冲泡","Brewing"],["alchemy","炼金","Alchemy"],["enhancing","强化","Enhancing"],["combat","战斗","Combat"]].map(([e,t,a],n)=>({key:e,zh:t,en:a,order:n})),kr={key:"completed",zh:"已完成",en:"Completed",order:-1},Ci={key:"new",zh:"新任务",en:"New Tasks",order:-2};function Aa(e,t){return u.config.isZH?e:t}s(Aa,"t");function Sr(e){return Ca(e)}s(Sr,"taskId");function Jy(e){let t=Number(e);Qt=Number.isFinite(t)?{expiresAt:t,returning:!1}:null}s(Jy,"armTemporaryTaskReturn");function Yy(e=Date.now()){return!Qt||Qt.expiresAt<=e?(Qt=null,!1):(Qt.returning=!0,!0)}s(Yy,"resumeTemporaryTaskReturn");function Qy(){Qt=null}s(Qy,"cancelTemporaryTaskReturn");function Zf(e=Date.now()){return!Qt||Qt.expiresAt<=e?(Qt=null,!1):!0}s(Zf,"hasTemporaryTaskReturn");function e2(e=Date.now()){return!Zf(e)||!Qt.returning?!1:(Qt=null,!0)}s(e2,"consumeTemporaryTaskReturn");function Uf(){return`MWITools_task_combat_mode_v1:${globalThis.location?.hostname??"unknown"}:${String(u.state.currentCharacterId??"")}`}s(Uf,"combatModeStorageKey");function t2(){try{return localStorage.getItem(Uf())==="dungeon"?"dungeon":"planet"}catch{return"planet"}}s(t2,"readCombatGroupMode");function a2(e){try{localStorage.setItem(Uf(),e)}catch{}}s(a2,"writeCombatGroupMode");function mu(e,t){let a=String(t??"").split("#")[0];a.includes(`${e}_sprite`)&&a.endsWith(".svg")&&Vf.set(e,a)}s(mu,"rememberSpriteBase");function Kf(){try{document.querySelectorAll("svg use").forEach(e=>["items","actions","combat_monsters"].forEach(t=>mu(t,e.getAttribute("href")??e.getAttribute("xlink:href")))),globalThis.performance?.getEntriesByType?.("resource")?.forEach(e=>["items","actions","combat_monsters"].forEach(t=>mu(t,e.name)))}catch{}}s(Kf,"scanTaskSpriteBases");async function n2(){return ls||(ls=(async()=>{Kf();try{let e=await globalThis.fetch(new URL("/asset-manifest.json",globalThis.location?.origin).href);if(!e.ok)return;let t=await e.json();for(let a of Object.values(t?.files??{}))for(let n of["items","actions","combat_monsters"])mu(n,a)}catch{}})(),ls)}s(n2,"loadTaskSpriteManifest");function Xf(e,t){Kf();let a=Vf.get(e),n=String(t??"").split("/").at(-1);return a&&n?`${a}#${n}`:""}s(Xf,"taskSpriteHref");function Jf(){if(document.getElementById(du))return;let e=document.createElement("style");e.id=du,e.textContent=`
    [class*="TasksPanel_taskList"] { grid-template-columns:repeat(auto-fill,minmax(min(100%,270px),1fr)) !important; gap:8px !important; }
    [class*="RandomTask_randomTask"] { min-width:0 !important; }
    [class*="RandomTask_randomTask"] > [class*="RandomTask_content"] { gap:2px !important; padding:8px !important; font-size:.8125rem; }
    [class*="RandomTask_randomTask"] [class*="RandomTask_taskInfo"] { gap:2px !important; }
    [class*="RandomTask_randomTask"] [class*="RandomTask_buttonsContainer"] { margin-top:2px !important; }
    .mwi-task-profession-group { --mwi-task-group-accent:120,174,255; grid-column:1/-1; min-width:0; }
    .mwi-task-profession-group[data-profession="new"] { --mwi-task-group-accent:230,181,79; }
    .mwi-task-profession-group[data-profession="completed"] { --mwi-task-group-accent:90,200,149; }
    .mwi-task-profession-group[data-profession="combat"] { --mwi-task-group-accent:238,115,103; }
    .mwi-task-profession-header { display:flex; width:100%; min-height:32px; box-sizing:border-box; align-items:center; gap:7px; padding:5px 9px; border:0; border-left:3px solid rgba(var(--mwi-task-group-accent),.78); border-radius:0; background:transparent; color:var(--color-text-primary,#eee); font:inherit; text-align:left; cursor:pointer; }
    .mwi-task-profession-header:hover { background:rgba(var(--mwi-task-group-accent),.075); }
    .mwi-task-profession-header:focus-visible { outline:2px solid rgba(var(--mwi-task-group-accent),.72); outline-offset:-3px; }
    .mwi-task-profession-title { font-weight:650; }
    .mwi-task-profession-count { min-width:1.25rem; padding:0; border:0; background:transparent; color:rgba(var(--mwi-task-group-accent),.95); font-size:.68rem; font-weight:700; text-align:center; }
    .mwi-task-profession-chevron { margin-left:auto; color:rgba(var(--mwi-task-group-accent),.9); transition:transform .15s ease; }
    .mwi-task-profession-header[aria-expanded="false"] .mwi-task-profession-chevron { transform:rotate(-90deg); }
    .mwi-task-profession-body { display:none; }
    .mwi-task-combat-location { grid-column:1/-1; min-width:0; }
    .mwi-task-combat-location-title { margin:0 0 6px; padding:4px 8px; border-left:2px solid rgba(255,255,255,.22); color:var(--color-text-secondary,#bbb); font-size:.7rem; font-weight:600; }
    .mwi-task-combat-location-body { display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,270px),1fr)); gap:8px; min-width:0; }
    .mwi-task-dungeon-header { display:flex; width:100%; align-items:center; gap:8px; margin:0 0 6px; padding:5px 8px; border:0; border-left:2px solid rgba(183,126,255,.78); border-radius:0; background:transparent; color:var(--color-text-secondary,#bbb); font:inherit; font-size:.7rem; font-weight:650; text-align:left; cursor:pointer; }
    .mwi-task-dungeon-header:hover { background:rgba(183,126,255,.07); }
    .mwi-task-dungeon-header:focus-visible { outline:2px solid rgba(183,126,255,.62); outline-offset:-3px; }
    .mwi-task-dungeon-header span:last-child { margin-left:auto; transition:transform .15s ease; }
    .mwi-task-dungeon-header[aria-expanded="false"] span:last-child { transform:rotate(-90deg); }
    .mwi-task-dungeon-body { display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,270px),1fr)); gap:8px; min-width:0; }
    .mwi-task-combat-mode { display:flex; width:max-content; gap:2px; margin:4px 0 8px; padding:2px; border:1px solid rgba(255,255,255,.12); border-radius:6px; background:rgba(0,0,0,.18); }
    .mwi-task-combat-mode button { padding:3px 10px; border:0; border-radius:4px; background:transparent; color:var(--color-text-secondary,#bbb); font:inherit; font-size:.7rem; cursor:pointer; }
    .mwi-task-combat-mode button[aria-pressed="true"] { background:${u.config.SCRIPT_COLOR_MAIN}; color:#18130a; font-weight:700; }
    ${wr}[data-mwitools-collapsed="true"] { display:none !important; }
    ${wr}[data-mwitools-dungeon-source="true"] { display:none !important; }
    .mwi-task-bg { position:absolute; z-index:0; top:6%; left:68%; width:24%; height:88%; opacity:.3; pointer-events:none; }
    .mwi-task-bg.mwi-task-bg--monster { left:42%; }
    .mwi-task-bg.mwi-task-bg--dungeon { left:68%; }
    .mwi-task-bg svg { width:100%; height:100%; }
    ${wr} > :not(.mwi-task-bg),[data-mwitools-task-mirror="true"] > :not(.mwi-task-bg) { position:relative; z-index:1; }
    [data-mwitools-task-mirror="true"] { position:relative; }
    .mwi-task-merge-toast { position:fixed; top:56px; right:14px; z-index:2147483200; max-width:min(360px,calc(100vw - 28px)); box-sizing:border-box; padding:8px 11px; border:1px solid rgba(102,205,135,.5); border-radius:6px; background:rgba(15,24,20,.97); box-shadow:0 8px 22px rgba(0,0,0,.4); color:#a8e5b7; font-size:.75rem; line-height:1.35; animation:mwi-task-toast-in .16s ease-out; }
    @keyframes mwi-task-toast-in { from { opacity:0; transform:translateY(-6px); } to { opacity:1; transform:translateY(0); } }
  `,(document.head??document.documentElement).appendChild(e)}s(Jf,"addStyles");function Ai(e,t){let a=[e],n=new Set;for(;a.length;){let i=a.shift();if(!(!i||typeof i!="object"||n.has(i))){n.add(i);for(let o of t)if(i[o]!==void 0&&i[o]!==null)return i[o];a.push(...Object.values(i).filter(o=>o&&typeof o=="object"))}}return null}s(Ai,"nestedValue");function kt(e){let t=Ai(e,["actionHrid","taskActionHrid","skillActionHrid"]);if(t)return t;let a=Ai(e,["monsterHrid"]);if(!a)return null;for(let n of Object.values(u.state.initData_actionDetailMap??{})){if(!String(n?.hrid).startsWith("/actions/combat/"))continue;if(JSON.stringify(n.combatZoneInfo?.fightInfo??{}).includes(`"${a}"`))return n.hrid}return null}s(kt,"taskActionHrid");function ds(e){let t=Number(Ai(e,["targetCount","requiredCount","goalCount","count"])),a=Number(Ai(e,["currentCount","completedCount","progressCount"]));return Number.isFinite(t)?Math.max(0,t-(Number.isFinite(a)?a:0)):0}s(ds,"taskRemaining");function i2(e){let t=Ai(e,["rewardItems","rewards","items"]);if(!Array.isArray(t)&&e?.itemRewardsJSON)try{t=JSON.parse(e.itemRewardsJSON)}catch{t=[]}return Array.isArray(t)?t.reduce((a,n)=>{let i=n.itemHrid??n.hrid,o=u.api.getNetSellPrice?.(i,n.enhancementLevel??0);return a+(Number(o)||0)*(Number(n.count)||0)},0):0}s(i2,"rewardValue");function r2(e){let t=kt(e);if(!t)return null;let a=ds(e),n=u.api.projectAction(t,a),i=i2(e);return{...n,rewardValue:i,taskProfit:n.totalProfit===null?null:n.totalProfit+i,taskProfitPerHour:n.totalProfit===null||!Number.isFinite(n.totalSeconds)||n.totalSeconds<=0?null:(n.totalProfit+i)/n.totalSeconds*3600}}s(r2,"taskProjection");function Yf(e){return Cr(e).split(/\s[-–]\s/).slice(1).join(" - ").trim()}s(Yf,"targetNameFromCard");function o2(e){if(!e)return"";let t=e.replace(/\s+\+\d+\s*$/,"").trim(),a=u.config.isZHInGameSetting?u.api.getItemEnNameFromZhName?.(t)??t:t;return u.state.itemEnNameToHridMap?.[a]?u.state.itemEnNameToHridMap[a]:Object.entries(u.data.ZHItemNames??{}).find(([,n])=>n===t)?.[0]??""}s(o2,"itemHridFromDisplayName");function s2(e){let t=Yf(e).replace(/\s+(?:图|Z)\s*\d+\s*$/i,"").trim(),a=u.api.getOthersFromZhName?.(t);return String(a).startsWith("/monsters/")?a:String(a).startsWith("/actions/combat/")?String(a).replace("/actions/combat/","/monsters/"):Object.values(u.state.initData_actionDetailMap??{}).find(i=>String(i?.hrid).startsWith("/actions/combat/")&&!i?.combatZoneInfo?.isDungeon&&(i?.name===t||u.data.ZHActionNames?.[i.hrid]===t))?.hrid?.replace("/actions/combat/","/monsters/")}s(s2,"namedMonsterHridForCard");function fu(e){if(typeof e!="string")return"";if(e.startsWith("/monsters/"))return e;if(!e.startsWith("/actions/combat/"))return"";let t=e.replace("/actions/combat/","/monsters/");return Object.hasOwn(u.data.ZHOthersDic??{},t)?t:""}s(fu,"normalizeMonsterHrid");function Qf(e,t=new Set,a=new Set){if(!e||a.has(e))return t;if(typeof e=="string"){let n=fu(e);return n&&t.add(n),t}if(typeof e!="object")return t;a.add(e);for(let n of Object.values(e))Qf(n,t,a);return t}s(Qf,"fightMonsterHrids");function bu(e,t){let a=s2(e);if(a)return a;let n=fu(Ai(t,["monsterHrid","targetMonsterHrid","combatMonsterHrid"]));if(n)return n;let i=String(kt(t)??""),o=u.state.initData_actionDetailMap?.[i],r=[...Qf(o?.combatZoneInfo?.fightInfo)];return r.length===1?r[0]:fu(i)||null}s(bu,"monsterHridForCard");function u2(e,t){if(eb(e,t).key==="combat"){let l=bu(e,t);if(l)return{kind:"combat_monsters",hrid:l}}let n=o2(Yf(e));if(n)return{kind:"items",hrid:n};let i=kt(t),o=u.state.initData_actionDetailMap?.[i],r=[...o?.outputItems??[],...o?.dropTable??[]],c=o?.upgradeItemHrid??(r.length===1?r[0]?.itemHrid??r[0]?.hrid:r.find(l=>Number(l?.dropRate??1)>=1)?.itemHrid);return c?{kind:"items",hrid:c}:i?{kind:"actions",hrid:i}:null}s(u2,"taskArtworkForCard");function c2(e,t){if(e.querySelector(".mwi-task-insight")?.remove(),!u.settings.get("taskIcons")){e.querySelector(":scope > .mwi-task-bg")?.remove();return}let a=u2(e,t),n=a?Xf(a.kind,a.hrid):"",i=e.querySelector(":scope > .mwi-task-bg");if(!n){i?.remove();return}if(i?.dataset.spriteHref===n)return;i?.remove();let o=document.createElement("div");o.className="mwi-task-bg",o.dataset.spriteHref=n;let r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.setAttribute("width","100%"),r.setAttribute("height","100%"),r.setAttribute("aria-hidden","true");let c=document.createElementNS("http://www.w3.org/2000/svg","use");c.setAttribute("href",n),r.appendChild(c),o.appendChild(r),e.style.position="relative",e.appendChild(o)}s(c2,"decorateCard");function l2(e,t){e.querySelector(":scope > .mwi-task-bg--dungeon")?.remove();let a=e.querySelector(":scope > .mwi-task-bg");a?.classList.remove("mwi-task-bg--monster");let n=t?.isDungeon?t.actionHrid:"";if(!n)return;let i=Xf("actions",n);if(!i)return;a?.classList.add("mwi-task-bg--monster");let o=document.createElement("div");o.className="mwi-task-bg mwi-task-bg--dungeon",o.dataset.spriteHref=i;let r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.setAttribute("width","100%"),r.setAttribute("height","100%"),r.setAttribute("aria-hidden","true");let c=document.createElementNS("http://www.w3.org/2000/svg","use");c.setAttribute("href",i),r.append(c),o.append(r),e.append(o)}s(l2,"addDungeonArtwork");function Cr(e){let t=e.querySelector('div[class*="RandomTask_name"]');return String(u.api.getOriTextFromElement?.(t??e)??t?.textContent??e.textContent??"").trim().split(`
`)[0].trim()}s(Cr,"visibleTaskTitle");function eb(e,t){let a=Cr(e);for(let l of Si)if([l.zh,l.en].some(m=>a===m||a.startsWith(`${m} -`)||a.startsWith(`${m} –`)))return l;if(/^(击败|Defeat|Kill)(?:\s|[-–]|$)/i.test(a))return Si.find(({key:l})=>l==="combat");let n=kt(t),i=u.state.initData_actionDetailMap?.[n]?.type,o=String(i??"").split("/").pop(),r=Si.find(l=>l.key===o);if(r)return r;let c=a.split(/\s[-–]\s/)[0]?.trim()||Aa("任务","Tasks");return{key:`custom-${c.toLowerCase().replaceAll(/[^\p{L}\p{N}]+/gu,"-")}`,zh:c,en:c,order:Si.length-.5}}s(eb,"professionForCard");function tb(e,t){if([...e.querySelectorAll("button")].some(i=>/claim|领取/i.test(i.textContent)))return!0;let n=String(u.api.getOriTextFromElement?.(e)??e.textContent??"").match(/(?:进度|progress)\s*[::]\s*([\d,.]+)\s*\/\s*([\d,.]+)/i);if(n){let i=Number(n[1].replaceAll(",","")),o=Number(n[2].replaceAll(",",""));if(Number.isFinite(i)&&Number.isFinite(o)&&o>0&&i>=o)return!0}return!1}s(tb,"isCompletedCard");function d2(e,t){let a=u.state.initData_actionDetailMap?.[kt(t)],n=Cr(e).replace(/^(击败|Defeat|Kill)\s*[-–]\s*/i,"").replace(/\s+(?:图|Z)\s*\d+\s*$/i,"").trim(),i=u.config.isZHInGameSetting?u.api.getOthersFromZhName?.(n)??u.api.getActionEnNameFromZhName?.(n):null,o=String(i??"").replace("/actions/combat/","/monsters/");for(let r of Object.values(u.state.initData_actionDetailMap??{})){if(!String(r?.hrid).startsWith("/actions/combat/"))continue;let c=u.data.ZHActionNames?.[r.hrid];if(r.name?.toLowerCase()===n.toLowerCase()||c===n||r.hrid===String(i).replace("/monsters/","/actions/combat/")||o&&JSON.stringify(r.combatZoneInfo?.fightInfo??{}).includes(`"${o}"`))return r}return String(a?.hrid??kt(t)).startsWith("/actions/combat/")?a:null}s(d2,"combatDetailForCard");function ab(e,t){let a=d2(e,t),n=u.state.initData_actionCategoryDetailMap??{};if(a?.combatZoneInfo?.isDungeon){let o=(u.config.isZH?u.data.ZHActionNames?.[a.hrid]:a.name)??a.name;return{key:`dungeon-${a.hrid}`,label:o?`${Aa("地牢","Dungeon")} · ${o}`:Aa("地牢","Dungeon"),order:1e4+Number(a.sortIndex??0)}}if(a?.category){let o=n[a.category],r=Object.values(u.state.initData_actionDetailMap??{}).find(d=>d?.category===a.category&&d?.combatZoneInfo?.fightInfo?.battlesPerBoss===10),c=(u.config.isZH?u.data.ZHActionNames?.[r?.hrid]:r?.name)??o?.name,l=Number(o?.sortIndex??9999);return{key:`zone-${a.category}`,label:`${Aa("地图","Zone")} ${l}${c?` · ${c}`:""}`,order:l}}let i=Cr(e).match(/(?:图|Z)\s*(\d+)\s*$/i)?.[1];return i?{key:`zone-index-${i}`,label:`${Aa("地图","Zone")} ${i}`,order:Number(i)}:{key:"non-dungeon-monsters",label:Aa("非地牢怪物","Non-dungeon monsters"),order:99999}}s(ab,"combatLocationForCard");function nb(e){let t=(u.config.isZH?u.data.ZHActionNames?.[e?.hrid]:e?.name)??e?.name;return{key:`dungeon-${e?.hrid}`,actionHrid:e?.hrid??"",isDungeon:!0,label:t||Aa("地牢","Dungeon"),order:Number(e?.sortIndex??9999)}}s(nb,"dungeonLocation");function ib(){return{key:"non-dungeon-monsters",actionHrid:"",isDungeon:!1,label:Aa("非地牢怪物","Non-dungeon monsters"),order:99999}}s(ib,"nonDungeonLocation");function rb(e,t){let a=kt(t),n=u.state.initData_actionDetailMap?.[a];if(n?.combatZoneInfo?.isDungeon)return[nb(n)];let i=bu(e,t);if(!i)return[ib()];let o=u.state.initData_actionDetailMap??{},r=new Set(Object.values(o).filter(l=>l?.combatZoneInfo?.isDungeon&&JSON.stringify(l.combatZoneInfo?.fightInfo??{}).includes(`"${i}"`)).map(l=>l.hrid));for(let l of Gf)l.monsters.has(i)&&r.add(l.actionHrid);let c=[...r].map(l=>{let d=Gf.find(m=>m.actionHrid===l);return o[l]??{hrid:l,sortIndex:d?.sortIndex,combatZoneInfo:{isDungeon:!0}}}).map(nb).sort((l,d)=>l.order-d.order||l.label.localeCompare(d.label));return c.length?c:[ib()]}s(rb,"dungeonLocationsForCard");function m2(e,t){let a=kt(e),n=u.state.initData_actionDetailMap?.[a];if(!n)return{originalIndex:t,unknown:!0};let i=u.state.initData_actionCategoryDetailMap?.[n.category];return{originalIndex:t,unknown:!1,category:Number(i?.sortIndex??9999),level:Number(n.levelRequirement?.level??0),action:Number(n.sortIndex??n.actionSortIndex??0),name:String(n.name??a),actionHrid:a}}s(m2,"actionSortInfo");function f2(e){if(!u.settings.get("taskTrainPlanner"))return null;let t=u.api.trainPlanning;if(!t)return null;let a=e.map((i,o)=>{let r=kt(i),c=u.state.initData_actionDetailMap?.[r],l=u.api.getExpectedOutputs?.(c)?.[0]?.itemHrid,d=l?t.trainChainRoot(l):"",m=l?t.trainChainDepth(l):-1;return{actionHrid:r,root:d&&m>=0?d:`task:${o}`,depth:Math.max(0,m),index:o}}),n=new Map;for(let i of a)n.has(i.root)||n.set(i.root,i.index);return new Map(a.map(i=>[i.actionHrid,{depth:i.depth,group:n.get(i.root)??i.index}]))}s(f2,"productionChains");function b2(e,t){let a=new Set(t.map(Sr).filter(Boolean)),n=new Map([...Fa].map(([r,c])=>[c,r])),i=[...sa].filter(r=>{let c=Fa.get(r);return!c||!a.has(c)}),o=new Set;e.forEach((r,c)=>{let l=Sr(t[c]),d=Number(r.dataset.mwitoolsOriginalIndex),m=Number.isInteger(d)?d:void 0;if(m===void 0&&l&&(m=n.get(l)),m===void 0&&i.length&&(m=i.shift()),m===void 0||o.has(m))for(m=0;o.has(m);)m+=1;o.add(m);let p=String(m);r.dataset.mwitoolsOriginalIndex!==p&&(r.dataset.mwitoolsOriginalIndex=p)})}s(b2,"assignStablePageSlots");function p2(e,t,a){if(!u.settings.settingsMap.taskNewBadge.isTrue){Wt.clear(),e.forEach((r,c)=>{let l=Sr(t[c]);if(!l)return;let d=Number(r.dataset.mwitoolsOriginalIndex??c),m=Fa.get(d);m&&m!==l&&sa.delete(d),Fa.set(d,l),r.dataset.mwitoolsTaskId!==l&&(r.dataset.mwitoolsTaskId=l)}),u.state.mwitoolsPageNewTaskIds=new Set;return}let n=new Set(u.api.getNewTaskIds?.()??[]),i=new Set;e.forEach((r,c)=>{let l=Sr(t[c]);if(!l)return;let d=Number(r.dataset.mwitoolsOriginalIndex??c);i.add(l);let m=Fa.get(d);a||!m?n.has(l)&&Wt.add(l):m&&m!==l?(sa.has(d)?vi.get(d)?.profession?.key===Ci.key&&Wt.add(l):n.has(l)&&Wt.add(l),sa.delete(d)):n.has(l)&&Wt.add(l),Fa.set(d,l),r.dataset.mwitoolsTaskId!==l&&(r.dataset.mwitoolsTaskId=l)});for(let r of[...Wt])i.has(r)||Wt.delete(r);u.state.mwitoolsPageNewTaskIds=new Set(Wt);let o=[...n].filter(r=>i.has(r));o.length&&u.api.acknowledgeNewTaskIds?.(o)}s(p2,"syncPageNewTasks");function g2(){if(!ct?.isConnected)return;let e=ct.parentElement?.querySelector(":scope > .mwi-task-combat-mode");if(!e){e=document.createElement("div"),e.className="mwi-task-combat-mode";for(let[t,a,n]of[["planet","星球","Planet"],["dungeon","地牢","Dungeon"]]){let i=document.createElement("button");i.type="button",i.dataset.mode=t,i.textContent=Aa(a,n),i.addEventListener("click",()=>{xi!==t&&(xi=t,a2(t),jn="",Ma())}),e.appendChild(i)}ct.insertAdjacentElement("beforebegin",e)}for(let t of e.querySelectorAll("button[data-mode]")){let a=String(t.dataset.mode===xi);t.getAttribute("aria-pressed")!==a&&t.setAttribute("aria-pressed",a)}}s(g2,"ensureCombatModeToggle");function ob(){ct?.isConnected&&(ct.querySelectorAll(":scope > .mwi-task-profession-group,:scope > .mwi-task-combat-location").forEach(e=>e.remove()),ct.parentElement?.querySelector(":scope > .mwi-task-combat-mode")?.remove(),ct.querySelectorAll(`:scope > ${wr}`).forEach(e=>{e.style.order=e.dataset.mwitoolsOriginalOrder??"",delete e.dataset.mwitoolsOriginalOrder,delete e.dataset.mwitoolsOriginalIndex,delete e.dataset.mwitoolsTaskIndex,delete e.dataset.mwitoolsTaskId,delete e.dataset.mwitoolsCollapsed,delete e.dataset.mwitoolsProfession,delete e.dataset.mwitoolsLocation,delete e.dataset.mwitoolsDungeonSource,delete e.dataset.mwitoolsTaskId}))}s(ob,"ungroupCards");function h2(e,t){let a=f2(t),n=e.map((i,o)=>{let r=t[o],c=Number(i.dataset.mwitoolsOriginalIndex??o),l=tb(i,r),d=vi.get(c),m=Wt.has(Sr(r)),p=m?Ci:l?kr:eb(i,r),b=m?Ci:!l&&d&&!d.completed&&d.profession.key!==Ci.key?d.profession:p,f=b.key==="combat"?!l&&d?.profession.key==="combat"?d.location:ab(i,r):null,g=b.key==="combat"?!l&&d?.profession.key==="combat"?d.dungeonLocations??rb(i,r):rb(i,r):[],h=b.key==="combat"?bu(i,r)||kt(r)||`combat-slot-${c}`:"",_=b.key==="combat"&&!l&&d?.profession.key==="combat"?d.monsterGroupKey??h:h;return vi.set(c,{completed:l,profession:b,location:f,dungeonLocations:g,monsterGroupKey:_}),{card:i,task:r,profession:b,location:f,dungeonLocations:g,monsterGroupKey:_,info:m2(r,c),depth:a?.get(kt(r))?.depth??0,chain:a?.get(kt(r))?.group??o}});return n.sort((i,o)=>{let r=i.profession.order-o.profession.order;return r||(a?u.settings.get("taskAutoSort")?i.info.unknown&&o.info.unknown?i.info.originalIndex-o.info.originalIndex:i.info.unknown?1:o.info.unknown?-1:i.info.category-o.info.category||i.chain-o.chain||i.depth-o.depth||i.info.level-o.info.level||i.info.action-o.info.action||i.info.name.localeCompare(o.info.name)||i.info.originalIndex-o.info.originalIndex:i.chain-o.chain||i.depth-o.depth||i.info.originalIndex-o.info.originalIndex:i.info.originalIndex-o.info.originalIndex)}),n}s(h2,"orderedRows");function _2(e,t){let a=mn.has(t.key),n=e.querySelector(".mwi-task-profession-header"),i=e.querySelector(".mwi-task-profession-body"),o=String(!a);n.getAttribute("aria-expanded")!==o&&n.setAttribute("aria-expanded",o),i.hidden!==a&&(i.hidden=a)}s(_2,"updateGroupCollapsedState");function y2(e,t){let a=e.querySelector(`:scope > .mwi-task-profession-group[data-profession="${t.key}"]`);if(a)return a;a=document.createElement("section"),a.className="mwi-task-profession-group",a.dataset.profession=t.key;let n=document.createElement("button");n.type="button",n.className="mwi-task-profession-header";let i=document.createElement("span");i.className="mwi-task-profession-title";let o=document.createElement("span");o.className="mwi-task-profession-count";let r=document.createElement("span");r.className="mwi-task-profession-chevron",r.textContent="▾",n.append(i,o,r);let c=document.createElement("div");return c.className="mwi-task-profession-body",n.addEventListener("click",()=>{mn.has(t.key)?mn.delete(t.key):mn.add(t.key),Ma()}),a.append(n,c),a}s(y2,"ensureProfessionGroup");function w2(e,t){let a=e.cloneNode(!0);return a.dataset.mwitoolsTaskMirror="true",a.removeAttribute("id"),a.style.order="",a.style.display="",delete a.dataset.mwitoolsDungeonSource,delete a.dataset.mwitoolsCollapsed,l2(a,t),a.querySelectorAll("[id]").forEach(n=>n.removeAttribute("id")),a.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation();let i=n.target.closest("button");if(i){let o=[...a.querySelectorAll("button")];[...e.querySelectorAll("button")][o.indexOf(i)]?.click();return}e.click()}),a}s(w2,"mirrorTaskCard");function sb(e){let t=new Map;for(let a of e){let n=a.monsterGroupKey||`combat-slot-${a.info.originalIndex}`,i=t.get(n);(i===void 0||a.info.originalIndex<i)&&t.set(n,a.info.originalIndex)}return[...e].sort((a,n)=>{let i=a.monsterGroupKey||`combat-slot-${a.info.originalIndex}`,o=n.monsterGroupKey||`combat-slot-${n.info.originalIndex}`;return t.get(i)-t.get(o)||a.info.originalIndex-n.info.originalIndex})}s(sb,"groupMatchingMonsters");function v2(e,t,a){let n=new Map;for(let r of t){r.card.dataset.mwitoolsDungeonSource="true";for(let c of r.dungeonLocations??[])n.has(c.key)||n.set(c.key,{location:c,rows:[]}),n.get(c.key).rows.push(r)}let i=[...n.values()].sort((r,c)=>r.location.order-c.location.order||r.location.label.localeCompare(c.location.label)),o=new Set;for(let{location:r,rows:c}of i){let l=sb(c);o.add(r.key);let d=e.querySelector(`:scope > .mwi-task-combat-location[data-location="${r.key}"]`);if(!d||d.dataset.mode!=="dungeon"){d?.remove(),d=document.createElement("section"),d.className="mwi-task-combat-location",d.dataset.location=r.key,d.dataset.mode="dungeon";let f=document.createElement("button");f.type="button",f.className="mwi-task-dungeon-header";let g=document.createElement("span");g.className="mwi-task-combat-location-title-text";let h=document.createElement("span");h.textContent="▾",f.append(g,h);let _=document.createElement("div");_.className="mwi-task-dungeon-body",f.addEventListener("click",()=>{ki.has(r.key)?ki.delete(r.key):ki.add(r.key),jn="",Ma()}),d.append(f,_),e.appendChild(d)}let m=ki.has(r.key);d.querySelector(".mwi-task-dungeon-header").setAttribute("aria-expanded",String(!m)),d.querySelector(".mwi-task-combat-location-title-text").textContent=`${r.label} (${l.length})`;let b=d.querySelector(".mwi-task-dungeon-body");b.hidden=m,b.replaceChildren(...l.map(({card:f})=>w2(f,r))),d.hidden=mn.has("combat"),d.style.order=String(a.value++)}return o}s(v2,"renderDungeonCombatGroups");function x2(e,t,a){if(xi==="dungeon")return v2(e,t,a);for(let r of t)delete r.card.dataset.mwitoolsDungeonSource;let n=new Map;for(let r of t){let c=r.location??ab(r.card,r.task);n.has(c.key)||n.set(c.key,{location:c,rows:[]}),n.get(c.key).rows.push(r)}let i=[...n.values()].sort((r,c)=>r.location.order-c.location.order||r.location.label.localeCompare(c.location.label)),o=new Set;for(let{location:r,rows:c}of i){let l=sb(c);o.add(r.key);let d=e.querySelector(`:scope > .mwi-task-combat-location[data-location="${r.key}"]`);if(!d||d.dataset.mode==="dungeon"){d?.remove(),d=document.createElement("section"),d.className="mwi-task-combat-location",d.dataset.location=r.key,d.dataset.mode="planet";let m=document.createElement("h4");m.className="mwi-task-combat-location-title",d.append(m),e.appendChild(d)}d.querySelector(".mwi-task-combat-location-title").textContent=`${r.label} (${l.length})`,d.style.order=String(a.value++);for(let m of l)m.card.style.order=String(a.value++),m.card.dataset.mwitoolsLocation=r.key}return o}s(x2,"renderCombatGroups");function k2(e,t){for(let a of e)a.card.style.order=String(t.value++)}s(k2,"renderRegularGroup");function S2(e,t){if(!ct)return;for(let l of e)delete l.dataset.mwitoolsDungeonSource;document.querySelectorAll(".mwi-task-toolbar").forEach(l=>l.remove());let a=h2(e,t),n=a.map(l=>l.profession).filter((l,d,m)=>![Ci,kr,...Si].some(p=>p.key===l.key)&&m.findIndex(p=>p.key===l.key)===d),i=[Ci,kr,...Si,...n],o=new Set([kr.key]),r=new Set,c={value:1};for(let l of i){let d=a.filter(_=>_.profession.key===l.key);if(!d.length&&l.key!==kr.key)continue;o.add(l.key);let m=y2(ct,l);m.isConnected||ct.appendChild(m);let p=u.config.isZH?l.zh:l.en,b=m.querySelector(".mwi-task-profession-title");b.textContent!==p&&(b.textContent=p);let f=String(d.length),g=m.querySelector(".mwi-task-profession-count");g.textContent!==f&&(g.textContent=f);let h=String(c.value++);m.style.order!==h&&(m.style.order=h),_2(m,l);for(let _ of d){_.card.dataset.mwitoolsProfession!==l.key&&(_.card.dataset.mwitoolsProfession=l.key);let y=String(mn.has(l.key));_.card.dataset.mwitoolsCollapsed!==y&&(_.card.dataset.mwitoolsCollapsed=y)}if(l.key==="combat")for(let _ of x2(ct,d,c))r.add(_);else k2(d,c)}ct.querySelectorAll(":scope > .mwi-task-profession-group").forEach(l=>{o.has(l.dataset.profession)||l.remove()}),ct.querySelectorAll(":scope > .mwi-task-combat-location").forEach(l=>{r.has(l.dataset.location)||l.remove()})}s(S2,"groupCards");function C2(e,t){e.forEach((a,n)=>{if(a.dataset.mwitoolsMergeWired)return;let i=[...a.querySelectorAll("button")].find(o=>/go|前往|开始/i.test(o.textContent));i&&(a.dataset.mwitoolsMergeWired="true",i.addEventListener("click",()=>{if(!u.settings.get("taskMergeActions"))return;let o=kt(t[n]),r=t.filter(c=>kt(c)===o);u.state.pendingMergedTask={actionHrid:o,count:r.reduce((c,l)=>c+ds(l),0),taskCount:r.length}}))})}s(C2,"wireMergeButtons");function A2(e){e.forEach((t,a)=>{t.dataset.mwitoolsResetWired||![...t.querySelectorAll("button")].some(i=>/reset|重置/i.test(i.textContent))||(t.dataset.mwitoolsResetWired="true",t.addEventListener("click",i=>{let o=i.target?.closest?.("button");if(!o||!t.contains(o)||!/reset|重置/i.test(o.textContent))return;ss=Date.now()+1e4;let r=Number(t.dataset.mwitoolsOriginalIndex??a);sa.add(r),setTimeout(()=>sa.delete(r),3e4)?.unref?.()},!0))})}s(A2,"wireResetButtons");function pu(){let e=u.state.pendingMergedTask;if(!e)return;let t=document.querySelector('div[class*="SkillActionDetail_maxActionCountInput"] input');if(!t)return;let a=t.closest('div[class*="SkillActionDetail_regularComponent"]')??t.closest('div[class*="Modal_modalContainer"]')?.querySelector('div[class*="SkillActionDetail_regularComponent"]')??t.parentElement,n=u.api.getOriTextFromElement?.(a.querySelector('div[class*="SkillActionDetail_name"]')),i=u.api.getActionHridFromItemName?.(n);if(u.config.isZHInGameSetting&&!i&&(i=u.api.getActionHridFromItemName?.(u.api.getActionEnNameFromZhName?.(n))),i!==e.actionHrid)return;u.api.reactInputTriggerHack?.(t,e.count),document.querySelectorAll(".mwi-task-merged-note,.mwi-task-merge-toast").forEach(c=>c.remove());let o=document.createElement("div");o.className="mwi-task-merge-toast",o.setAttribute("role","status"),o.textContent=Aa(`已合并 ${e.taskCount} 个同动作任务,共 ${u.api.formatExactNumber(e.count)} 次。`,`Merged ${e.taskCount} matching tasks for ${u.api.formatExactNumber(e.count)} actions.`),document.body.append(o),setTimeout(()=>o.remove(),3200)?.unref?.(),u.state.pendingMergedTask=null}s(pu,"applyPendingMerge");function M2(e,t=Date.now()){return t<ss?!1:e.some(a=>(a.target?.nodeType===1?a.target:a.target?.parentElement)?.closest?.('[class*="TasksPanel_taskList"]')?!0:[...a.addedNodes??[],...a.removedNodes??[]].filter(i=>i?.nodeType===1).some(i=>i.matches?.('[class*="TasksPanel_taskList"]')||i.querySelector?.('[class*="TasksPanel_taskList"]')))}s(M2,"shouldRenderTaskMutations");function ub(e,t){let a=[u.config.isZH,u.settings.get("taskAutoSort"),u.settings.get("taskIcons"),xi,[...Wt].sort().join(","),[...mn].sort().join(","),[...ki].sort().join(",")],n=e.map((i,o)=>{let r=t[o]??{};return[kt(r)??"",Cr(i),String(i.textContent??"").match(/(?:进度|progress)\s*[::]\s*[\d,.]+\s*\/\s*[\d,.]+/i)?.[0]??"",tb(i,r)?"1":"0",i.dataset.mwitoolsProfession??"",i.dataset.mwitoolsCollapsed??""].join("")});return[...a,...n].join("")}s(ub,"taskRenderSignature");function Ma(){let e=[...document.querySelectorAll(wr)];if(!e.length){pu(),ct&&!ct.isConnected&&(vr=[],ct=null,xr=[],jn="",us=null,cs=null,!Zf()&&!sa.size&&(vi=new Map,Fa=new Map,Wt=new Set,sa=new Set,u.state.mwitoolsPageNewTaskIds=new Set));return}let t=e[0]?.parentElement??null,a=!ct?.isConnected||t&&t!==ct,n=a&&e2(),i=a&&sa.size>0;a&&(ob(),vr=[],!n&&!i&&(vi=new Map,Fa=new Map,Wt=new Set,sa=new Set),xi=t2(),ct=t),e=e.filter(b=>b.parentElement===ct);let o=u.state.characterQuests??[],r=za(e,o,{taskActionHrid:kt,taskRemaining:ds}),c=r.map(({task:b})=>b);b2(e,c),p2(e,c,a&&!n&&!i),g2();let l=ub(e,c),d=e.length===xr.length&&e.every((b,f)=>b===xr[f]),m=u.state.initData_actionDetailMap,p=u.state.initData_actionCategoryDetailMap;if(!a&&d&&m===us&&p===cs&&l===jn){pu();return}vr=[...e],vr.forEach((b,f)=>{"mwitoolsOriginalOrder"in b.dataset||(b.dataset.mwitoolsOriginalOrder=b.style.order);let g=String(r[f]?.taskIndex??-1);b.dataset.mwitoolsTaskIndex!==g&&(b.dataset.mwitoolsTaskIndex=g),"mwitoolsLocation"in b.dataset&&delete b.dataset.mwitoolsLocation}),e.forEach((b,f)=>c2(b,c[f])),C2(e,c),A2(e),S2(e,c),pu(),xr=[...e],us=m,cs=p,jn=ub(e,c)}s(Ma,"renderTasks");function T2(){ob(),document.querySelectorAll(".mwi-task-insight,.mwi-task-toolbar,.mwi-task-profession-group,.mwi-task-bg,.mwi-task-merged-note,.mwi-task-merge-toast").forEach(e=>e.remove()),document.querySelectorAll("[data-mwitools-merge-wired],[data-mwitools-reset-wired]").forEach(e=>{delete e.dataset.mwitoolsMergeWired,delete e.dataset.mwitoolsResetWired}),document.getElementById(du)?.remove(),vr=[],ct=null,vi=new Map,Fa=new Map,Wt=new Set,sa=new Set,ss=0,Qt=null,u.state.mwitoolsPageNewTaskIds=new Set,xr=[],jn="",us=null,cs=null,mn.clear(),ki.clear()}s(T2,"cleanupTasks"),u.features.register({id:"taskInsights",setting:"taskInsights",scope:"character",initialize({scope:e}){Jf(),Ma(),n2().then(()=>{jn="",Ma()});let t=!1,a=s(()=>{t||(t=!0,(globalThis.requestAnimationFrame??globalThis.setTimeout)(()=>{t=!1,Ma()}))},"scheduleRender"),n=new MutationObserver(i=>{M2(i)&&a()});e.observer(n,document.body,{childList:!0,characterData:!0,subtree:!0}),e.add(u.onMessage("quests_updated",()=>{ss=0,a()})),e.add(()=>{t=!1}),e.add(T2)}});for(let e of["taskMaterials","taskQueueProgress","taskAutoSort","taskIcons","taskStatistics","taskClaimCollector","taskMergeActions"])u.features.register({id:e,setting:e,scope:"character",dependsOn:["taskInsights"],initialize(){return Ma(),Ma}});Object.assign(u.api,{addTaskStyles:Jf,armTemporaryTaskReturn:Jy,cancelTemporaryTaskReturn:Qy,resumeTemporaryTaskReturn:Yy,taskActionHrid:kt,taskRemaining:ds,taskProjection:r2,renderTasks:Ma,restoreTaskOrder:Ma});var gu="mwitools-task-train-planner-style",ja="mwi-task-train-planner",ms='div[class*="RandomTask_randomTask"]:not([data-mwitools-task-mirror="true"])',E2='[class*="RandomTask_action"]';function Mi(e,t){return u.config.isZH?e:t}s(Mi,"t");function I2(){if(document.getElementById(gu))return;let e=document.createElement("style");e.id=gu,e.textContent=`
    .${ja}{flex:0 0 auto;margin-right:4px;white-space:nowrap}
    button.${ja}{height:28px;padding:0 8px;border:1px solid rgba(144,166,235,.55);border-radius:4px;background:#282844;color:#e8e8ef;font:600 11px/1 Roboto,Arial,sans-serif;cursor:pointer}
    button.${ja}:hover{filter:brightness(1.16)}
    span.${ja}{padding:0 8px;color:#8f96ad;font:italic 11px/28px Roboto,Arial,sans-serif;user-select:none}
  `,(document.head??document.documentElement).appendChild(e)}s(I2,"addStyles");function N2(e){let t=u.state.initData_actionDetailMap?.[e];return u.api.getExpectedOutputs?.(t)?.[0]?.itemHrid??""}s(N2,"primaryOutput");function cb(e){return u.api.taskActionHrid?.(e)??null}s(cb,"taskActionHrid");function lb(e){return u.api.taskRemaining?.(e)??0}s(lb,"taskRemaining");function hu(e=[]){let t=new Map,a=e.map((n,i)=>{let o=cb(n),r=lb(n),c=o?N2(o):"",l=c?u.api.trainPlanning.trainChainDepth(c):-1,d=l>=0?u.api.trainPlanning.trainChainRoot(c):"",m={index:i,task:n,actionHrid:o,outputHrid:c,remaining:r,depth:l,root:d,state:r<=0?"done":l<0?"isolated":"planned"};return m.state==="planned"&&(t.has(d)||t.set(d,[]),t.get(d).push(m)),m});for(let n of t.values()){n.sort((o,r)=>r.depth-o.depth||o.index-r.index);let i=u.api.trainPlanning.buildTrainChain(n[0].outputHrid);if(!i.steps.length||i.cycle||i.truncated){for(let o of n)o.state="isolated";t.delete(n[0].root)}else n[0].state="top"}return{entries:a,groups:t}}s(hu,"collectTaskTrainGroups");function db(e,t=u.state.characterQuests??[]){let{groups:a}=hu(t),n=a.get(e);if(!n?.length)return null;let i={};for(let o of n)i[o.outputHrid]=(i[o.outputHrid]??0)+o.remaining;return u.api.trainPlanning.createTrainPlan(n[0].outputHrid,i)}s(db,"createTaskTrainPlan");function _u(e,t){let a=[...e.querySelectorAll("button")].find(n=>/^(前往|go)$/i.test(n.textContent?.trim()??""));a?e.insertBefore(t,a):e.appendChild(t)}s(_u,"insertBeforeNavigation");function H2(e,t){let a=document.createElement("button");return a.type="button",a.className=ja,a.dataset.signature=t,a.textContent=Mi("🚂 规划火车","🚂 Plan train"),a.title=Mi("合并同一升级链全部未完成任务并按最新库存重新规划","Combine all unfinished tasks in this upgrade chain and recalculate from current inventory"),a.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation();let i=db(e.root);i?.steps?.length&&u.api.semiAutoTrain?.start(i)}),a}s(H2,"plannerButton");function mb(e,t,a){let n=document.createElement("span");return n.className=ja,n.dataset.signature=a,n.textContent=e,n.title=t,n}s(mb,"plannerLabel");function fb(){let e=[...document.querySelectorAll(ms)];if(!e.length)return;let t=u.state.characterQuests??[],{entries:a}=hu(t),n=za(e,t,{taskActionHrid:cb,taskRemaining:lb});for(let{card:i,taskIndex:o}of n){let r=a[o],c=i.querySelector(E2);if(!c)continue;let l=r?[r.state,r.root,r.remaining,u.config.isZH].join(":"):"none";c.querySelector(`.${ja}`)?.dataset.signature!==l&&(c.querySelectorAll(`.${ja}`).forEach(m=>m.remove()),!(!r||r.state==="done")&&(r.state==="top"?_u(c,H2(r,l)):r.state==="planned"?_u(c,mb(Mi("已被规划","Included in plan"),Mi("已由同一升级链的最高级任务统一规划","Included by the highest-level task in this upgrade chain"),l)):r.state==="isolated"&&_u(c,mb(Mi("无需火车","No train needed"),Mi("该任务不属于升级链","This task is not part of an upgrade chain"),l))))}}s(fb,"render");function D2(){document.querySelectorAll(`.${ja}`).forEach(e=>e.remove()),document.getElementById(gu)?.remove()}s(D2,"cleanup"),u.features.register({id:"taskTrainPlanner",setting:"taskTrainPlanner",scope:"character",dependsOn:["semiAutoTrain"],initialize({scope:e}){I2(),fb();let t=!1,a=s(()=>{t||(t=!0,(globalThis.requestAnimationFrame??globalThis.setTimeout)(()=>{t=!1,fb()}))},"schedule"),n=new MutationObserver(i=>{i.some(o=>(o.target?.nodeType===1?o.target:o.target?.parentElement)?.closest?.(ms)?!0:[...o.addedNodes??[],...o.removedNodes??[]].filter(c=>c?.nodeType===1).some(c=>c.matches?.(ms)||c.querySelector?.(ms)))&&a()});e.observer(n,document.body,{childList:!0,subtree:!0}),e.add(u.onMessage("quests_updated",a)),e.add(D2)}}),Object.assign(u.api,{collectTaskTrainGroups:hu,createTaskTrainPlan:db});var yu="mwitools-task-new-style",Ar='div[class*="RandomTask_randomTask"]:not([data-mwitools-task-mirror="true"])',Mr=new Map;function Tr(e){return Ca(e)}s(Tr,"questId");function bb(e){return!!(e?.isClaimed||e?.claimed||e?.isDeleted||e?.deleted||String(e?.status??"").toLowerCase().includes("claimed"))}s(bb,"isRemoved");function P2(e){if(bb(e))return!0;let t=Number(e?.targetCount??e?.requiredCount??e?.goalCount),a=Number(e?.currentCount??e?.completedCount??e?.progressCount);return Number.isFinite(t)&&t>0&&Number.isFinite(a)?a>=t:!!(e?.isCompleted||e?.completed)}s(P2,"isCompleted");function wu(e,t=globalThis.location?.hostname??"unknown"){return`MWITools_task_new_v1:${t}:${String(e??"")}`}s(wu,"taskNewStorageKey");function vu(e){try{let t=JSON.parse(localStorage.getItem(e)||"null");return{known:new Set(Array.isArray(t?.known)?t.known:[]),fresh:new Set(Array.isArray(t?.fresh)?t.fresh:[]),initialized:t?.initialized===!0||Array.isArray(t?.known)&&t.known.length>0}}catch{return{known:new Set,fresh:new Set,initialized:!1}}}s(vu,"readTaskNewState");function Er(e,t){localStorage.setItem(e,JSON.stringify({initialized:t.initialized===!0,known:[...t.known],fresh:[...t.fresh]}))}s(Er,"writeTaskNewState");function pb(e,t){let a=e.initialized!==!0,n=new Set((t??[]).map(Tr).filter(Boolean));for(let i of n)!a&&!e.known.has(i)&&e.fresh.add(i),e.known.add(i);for(let i of[...e.fresh])n.has(i)||e.fresh.delete(i);return e.initialized=!0,e}s(pb,"initializeQuestState");function L2(e,t){for(let a of t??[]){let n=Tr(a);if(n){if(bb(a)||P2(a)){e.fresh.delete(n),e.known.delete(n);continue}e.known.has(n)||e.fresh.add(n),e.known.add(n)}}return e}s(L2,"applyQuestUpdates");function $2(){if(document.getElementById(yu))return;let e=document.createElement("style");e.id=yu,e.textContent=`
    ${Ar}.mwi-task-is-new{position:relative}
    .mwi-task-new-badge{position:absolute;z-index:5;right:5px;top:5px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:auto!important;min-width:18px!important;max-width:max-content!important;height:18px!important;min-height:18px!important;margin:0!important;padding:0 4px!important;flex:0 0 auto!important;border:1px solid rgba(255,220,128,.72);border-radius:4px;background:#f0aa2e;color:#221704;font-size:9px;font-weight:800;line-height:16px;letter-spacing:0;white-space:nowrap;box-shadow:0 2px 6px rgba(0,0,0,.32);pointer-events:none}
  `,(document.head??document.documentElement).appendChild(e)}s($2,"addStyles");function O2(){document.querySelectorAll(".mwi-task-new-badge").forEach(e=>e.remove()),document.querySelectorAll(".mwi-task-is-new").forEach(e=>{e.classList.remove("mwi-task-is-new"),delete e.dataset.mwitoolsTaskNewWired}),document.getElementById(yu)?.remove()}s(O2,"cleanupDom"),u.features.register({id:"taskNewBadge",setting:"taskNewBadge",scope:"character",dependsOn:["taskInsights"],initialize({scope:e,characterId:t}){$2();let a=wu(t),n=vu(a);Mr.set(a,n);let i=u.state.characterQuests??[];pb(n,i),Er(a,n);let o=s(()=>{let d=u.state.characterQuests??[],m=new Set(d.map(Tr).filter(Boolean)),p=!1;for(let g of[...n.fresh])m.has(g)||(n.fresh.delete(g),n.known.delete(g),p=!0);p&&Er(a,n);let b=[...document.querySelectorAll(Ar)];za(b,d,{taskActionHrid:s(g=>u.api.taskActionHrid?.(g),"taskActionHrid"),taskRemaining:s(g=>u.api.taskRemaining?.(g)??0,"taskRemaining")}).forEach(({card:g,task:h})=>{let _=Tr(h),y=!!(_&&u.state.mwitoolsPageNewTaskIds?.has?.(_));g.classList.toggle("mwi-task-is-new",!!y);let w=g.querySelector(":scope > .mwi-task-new-badge");y&&!w?(w=document.createElement("span"),w.className="mwi-task-new-badge",w.textContent=u.config.isZH?"新":"NEW",g.appendChild(w)):y||w?.remove()})},"render"),r=!1,c=s(()=>{r||(r=!0,(globalThis.requestAnimationFrame??globalThis.setTimeout)(()=>{r=!1,o()}))},"schedule");e.add(u.onMessage("quests_updated",d=>{let m=d.endCharacterQuests??d.characterQuests??[];L2(n,m);let p=new Set((u.state.characterQuests??[]).map(Tr));for(let b of[...n.fresh])p.has(b)||n.fresh.delete(b);Er(a,n),c()}));let l=new MutationObserver(d=>{d.some(m=>(m.target?.nodeType===1?m.target:m.target?.parentElement)?.closest?.(Ar)?!0:[...m.addedNodes??[],...m.removedNodes??[]].filter(b=>b?.nodeType===1).some(b=>b.matches?.(Ar)||b.querySelector?.(Ar)))&&c()});e.observer(l,document.body,{childList:!0,subtree:!0}),o(),e.add(()=>{r=!1,Mr.get(a)===n&&Mr.delete(a),O2()})}}),Object.assign(u.api,{getNewTaskIds(){let e=wu(u.state.currentCharacterId),t=Mr.get(e)??vu(e);return pb(t,u.state.characterQuests??[]),Er(e,t),[...t.fresh]},acknowledgeNewTaskIds(e){let t=wu(u.state.currentCharacterId),a=Mr.get(t)??vu(t);for(let n of e??[])a.fresh.delete(String(n));Er(t,a)}});var xu='[class*="RandomTask_randomTask"]:not([data-mwitools-task-mirror="true"])',q2='[class*="TasksPanel_taskList"]',gb='[class*="SkillActionDetail_regularComponent"],[class*="SkillActionDetail_skillActionDetail"],[class*="ActionDetail_actionDetail"],[class*="SkillActionDetail_modalContent"],[class*="ActionDetail_modalContent"]',hb=3e4;function _b(e){return Ca(e)}s(_b,"taskIdentity");function yb(e){for(let t=e;t;t=t.parentElement){let a=globalThis.getComputedStyle?.(t);if(t.scrollHeight>t.clientHeight&&/auto|scroll/.test(`${a?.overflowY??""} ${a?.overflow??""}`))return t}return document.scrollingElement??document.documentElement}s(yb,"scrollContainerFor");function R2(e,t,a=Date.now()){if(!e)return null;let n=[...document.querySelectorAll(xu)],i=za(n,t,{taskActionHrid:s(m=>u.api.taskActionHrid?.(m),"taskActionHrid"),taskRemaining:s(m=>u.api.taskRemaining?.(m)??0,"taskRemaining")}).find(m=>m.card===e),o=Number(e.dataset.mwitoolsOriginalIndex),r=Number.isInteger(i?.taskIndex)&&i.taskIndex>=0?i.taskIndex:Number.isInteger(o)?o:n.indexOf(e),c=Number.isInteger(o)?o:n.indexOf(e),l=i?.task??t?.[r],d=yb(e);return{taskId:_b(l),originalIndex:c,profession:e.dataset.mwitoolsProfession??e.closest("[data-profession]")?.dataset.profession??"",scrollTop:Number(d?.scrollTop)||0,expiresAt:a+hb,sawAction:!1}}s(R2,"captureTaskReturnContext");function ku(e){return String(u.api.getOriTextFromElement?.(e)??e?.textContent??"").replaceAll(/\s+/g," ").trim()}s(ku,"buttonText");function B2(e){return/^(前往|go)$/i.test(ku(e))}s(B2,"isGoButton");function z2(e){let t=ku(e);return/^(添加任务|添加到队列|加入队列|立即开始|开始任务|开始动作|添加|开始|队列|add task|add to (?:action )?queue|start task|start action|start now|start immediately|add|start|queue)$/i.test(t)}s(z2,"isCommitButton");function F2(){let e=[],t=s(i=>{let o=i?.current??i;o&&typeof o=="object"&&!e.includes(o)&&e.push(o)},"push"),a=document.getElementById("root");t(a?._reactRootContainer?.current),t(a?._reactRootContainer?._internalRoot?.current);for(let i of[a,document.body])for(let o of Object.getOwnPropertyNames(i??{}))(o.startsWith("__reactContainer")||o.startsWith("__reactFiber")||o.startsWith("__reactInternalInstance"))&&t(i[o]);let n=new Set;for(;e.length&&n.size<5e4;){let i=e.pop();if(!i||n.has(i))continue;n.add(i);let o=i.stateNode;if(typeof o?.handleChangeNavTarget=="function"&&typeof o?.setState=="function")return o;i.child&&e.push(i.child),i.sibling&&e.push(i.sibling)}return null}s(F2,"findGameHost");function j2(){let e=F2();if(e)return e.handleChangeNavTarget("tasks"),!0;let a=[...document.querySelectorAll('nav button,[class*="Nav"] button,[class*="nav"] button')].find(n=>/^(任务|tasks)$/i.test(ku(n)));return a?.click(),!!a}s(j2,"openTasksPage");function W2(e){let t=[...document.querySelectorAll(xu)];if(e.taskId){let a=t.find(n=>n.dataset.mwitoolsTaskId===e.taskId)??za(t,u.state.characterQuests??[],{taskActionHrid:s(n=>u.api.taskActionHrid?.(n),"taskActionHrid"),taskRemaining:s(n=>u.api.taskRemaining?.(n)??0,"taskRemaining")}).find(({task:n})=>_b(n)===e.taskId)?.card;return a||null}return t[e.originalIndex]??null}s(W2,"findTaskCard");function V2(e,t){let a=e?.dataset.mwitoolsProfession??t;if(!a)return;let o=[...document.querySelectorAll(".mwi-task-profession-group")].find(r=>r.dataset.profession===a)?.querySelector(".mwi-task-profession-header");o?.getAttribute("aria-expanded")==="false"&&o.click()}s(V2,"expandTaskProfession");function G2(e){let t=W2(e);if(t)return V2(t,e.profession),t.scrollIntoView?.({block:"center",inline:"nearest"}),!0;let a=document.querySelector(q2),n=yb(a);return a&&n?(n.scrollTop=e.scrollTop,!0):!1}s(G2,"restoreTaskPosition"),u.features.register({id:"taskAutoReturn",setting:"taskAutoReturn",scope:"character",initialize({scope:e}){let t=null,a=null,n=null,i=null,o=s(()=>{a!==null&&clearTimeout(a),n!==null&&clearTimeout(n),i!==null&&clearTimeout(i),a=n=i=null},"clearTimers"),r=s(({cancelTaskReturn:b=!0}={})=>{o(),t=null,b&&u.api.cancelTemporaryTaskReturn?.()},"clearPending"),c=s(()=>{a!==null&&clearTimeout(a),a=setTimeout(r,hb)},"armExpiry"),l=s(()=>{if(!t||t.expiresAt<=Date.now()){r();return}let b=t;if(r({cancelTaskReturn:!1}),u.api.resumeTemporaryTaskReturn?.(),!j2()){u.api.cancelTemporaryTaskReturn?.();return}let f=0,g=s(()=>{i=null,!(G2(b)||f>=40)&&(f+=1,i=setTimeout(g,50))},"restore");i=setTimeout(g,0)},"returnToOrigin"),d=s((b=0)=>{t&&(n!==null&&clearTimeout(n),n=setTimeout(()=>{n=null,l()},b))},"scheduleReturn"),m=s(()=>{if(!t)return;document.querySelector(gb)?t.sawAction=!0:t.sawAction&&d()},"observeAction");e.event(document,"click",b=>{let f=b.target?.closest?.("button");if(!f)return;let g=f.closest(xu);if(g&&B2(f)){t=R2(g,u.state.characterQuests??[]),t&&(u.api.armTemporaryTaskReturn?.(t.expiresAt),c());return}t&&f.closest(gb)&&z2(f)&&d(500)},!0);let p=new MutationObserver(m);e.observer(p,document.body,{childList:!0,subtree:!0}),e.add(r)}});var Su="mwitools-ability-book-calculator-style",Mt="mwi-ability-book-calculator",Z2='[class*="ItemDictionary_modalContent"]';function Vt(e,t){return u.config.isZH?e:t}s(Vt,"t");function Wa(e){if(e==null||e==="")return null;let t=Number(e);return Number.isFinite(t)?t:null}s(Wa,"finite");function wb(e){if(!Array.isArray(e))return 0;for(let t=e.length-1;t>=1;t-=1)if(Wa(e[t])!==null)return t;return 0}s(wb,"maxAbilityLevel");function U2({isLearned:e,currentLevel:t,currentExperience:a,targetLevel:n,experienceGain:i,levelExperienceTable:o}){let r=wb(o),c=Number(n),l=Wa(t),d=Wa(a),m=Wa(i);if(!Number.isInteger(c)||c<1||c>r||l===null||d===null||m===null||m<=0)return{status:"invalid",maximumLevel:r};let p=Wa(o[c]);if(p===null)return{status:"invalid",maximumLevel:r};if(e&&(l>=c||d>=p))return{status:"reached",maximumLevel:r,targetExperience:p,unlockBooks:0,levelingBooks:0,totalBooks:0};let b=e?0:1,f=Math.ceil(Math.max(0,p-d)/m);return{status:"ready",maximumLevel:r,targetExperience:p,unlockBooks:b,levelingBooks:f,totalBooks:b+f}}s(U2,"calculateAbilityBookRequirement");function vb(e){let t=String(e??"").trim();return t?t.startsWith("/items/")?t:`/items/${t.split("/").at(-1)}`:""}s(vb,"normalizeItemHrid");function K2(e){let t=e?.querySelectorAll?.('[class*="MarketplacePanel_currentItem"] svg use,[class*="MarketplacePanel_itemContainer"] svg use,[class*="ItemDictionary_item"] svg use'),a=t?.length?t:e?.querySelectorAll?.("svg use")??[];for(let n of a){let o=(n.getAttribute("href")??n.getAttribute("xlink:href")??"").split("#").at(-1),r=vb(o);if(u.state.initData_itemDetailMap?.[r])return r}return""}s(K2,"itemHridFromIcon");function X2(e){let t=e?.querySelector?.('[class*="ItemDictionary_title"],h1,h2'),a=String(u.api.getOriTextFromElement?.(t)??t?.textContent??"").trim();if(!a)return"";let n=u.state.itemEnNameToHridMap?.[a];if(n)return n;let i=u.data.ZHToItemHridMap?.[a];if(i)return i;let o=u.api.getOthersFromZhName?.(a);return String(o??"").startsWith("/abilities/")?String(o).replace("/abilities/","/items/"):vb(o)}s(X2,"itemHridFromTitle");function J2(e){let t=K2(e)||X2(e);return u.state.initData_itemDetailMap?.[t]?.abilityBookDetail?t:""}s(J2,"resolveAbilityBookItem");function Y2(e){let t=u.state.initData_characterAbilities;if(t==null)return{ready:!1};let n=(Array.isArray(t)?t:Object.values(t)).find(r=>(r?.abilityHrid??r?.hrid)===e);if(!n)return{ready:!0,isLearned:!1,level:0,experience:0};let i=Wa(n.experience??n.totalExperience??n.experiencePoints);if(i===null)return{ready:!1};let o=Wa(n.level);if(o===null){o=0;let r=u.state.initData_levelExperienceTable??[];for(let c=1;c<r.length;c+=1)Wa(r[c])!==null&&i>=Number(r[c])&&(o=c)}return{ready:!0,isLearned:!0,level:o,experience:i}}s(Y2,"abilityRecord");function Q2(e){let a=u.state.initData_itemDetailMap?.[e]?.abilityBookDetail,n=u.state.initData_levelExperienceTable;if(!a||!Array.isArray(n))return{ready:!1};let i=a.abilityHrid??e.replace("/items/","/abilities/"),o=Y2(i);return o.ready?{ready:!0,itemHrid:e,experienceGain:Wa(a.experienceGain),maximumLevel:wb(n),levelExperienceTable:n,...o}:{ready:!1}}s(Q2,"calculatorData");function e6(){if(document.getElementById(Su))return;let e=document.createElement("style");e.id=Su,e.textContent=`
    .${Mt}{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 10px;margin:8px 0;padding:8px 10px;border:1px solid rgba(255,255,255,.13);border-radius:6px;background:rgba(0,0,0,.16);color:var(--color-text-primary,#eee);font-size:.72rem;line-height:1.35}
    .${Mt} .mwi-book-title{grid-column:1/-1;font-size:.78rem;font-weight:700;color:var(--color-primary,#e0bc42)}
    .${Mt} .mwi-book-target{display:flex;align-items:center;gap:6px}
    .${Mt} input{width:68px;box-sizing:border-box;border:1px solid rgba(255,255,255,.2);border-radius:4px;background:rgba(0,0,0,.25);color:inherit;padding:3px 5px}
    .${Mt} .mwi-book-result,.${Mt} .mwi-book-cost,.${Mt} .mwi-book-state{grid-column:1/-1}
    .${Mt} .mwi-book-result{font-weight:650;color:#9fd7ab}
    .${Mt}[data-status="invalid"] .mwi-book-result{color:#ff9c8f}
    .${Mt} .mwi-book-muted{color:var(--color-text-secondary,#aaa)}
    @media(max-width:700px){.${Mt}{grid-template-columns:1fr;gap:4px}.${Mt}>*{grid-column:1!important}}
  `,(document.head??document.documentElement).appendChild(e)}s(e6,"addStyles");function t6(e){let t=document.createElement("section");t.className=Mt,t.dataset.surface="dictionary";let a=document.createElement("div");a.className="mwi-book-title";let n=document.createElement("div");n.className="mwi-book-state";let i=document.createElement("div");i.className="mwi-book-muted mwi-book-per-book";let o=document.createElement("label");o.className="mwi-book-target";let r=document.createElement("span"),c=document.createElement("input");c.type="number",c.step="1",c.addEventListener("input",()=>e(t,c.value)),o.append(r,c);let l=document.createElement("div");l.className="mwi-book-result",l.setAttribute("aria-live","polite");let d=document.createElement("div");return d.className="mwi-book-cost mwi-book-muted",t.append(a,n,i,o,l,d),t}s(t6,"createPanel");function Va(e,t,a){let n=e.querySelector(t);n&&n.textContent!==a&&(n.textContent=a)}s(Va,"setPanelText");function xb(e,t,a){e.dataset.itemHrid=t,Va(e,".mwi-book-title",Vt("技能书计算器","Ability book calculator"));let n=Q2(t),i=e.querySelector("input"),o=e.querySelector(".mwi-book-target span");if(o.textContent=Vt("目标等级","Target level"),i.setAttribute("aria-label",o.textContent),!n.ready||!n.experienceGain||!n.maximumLevel){e.dataset.status="waiting",i.disabled=!0,Va(e,".mwi-book-state",Vt("等待角色与技能书数据","Waiting for character and ability-book data")),Va(e,".mwi-book-per-book",""),Va(e,".mwi-book-result","—"),Va(e,".mwi-book-cost","");return}i.disabled=!1,i.min="1",i.max=String(n.maximumLevel);let r=Math.min(n.maximumLevel,Math.max(1,Number(n.level)+1)),c=Number(a.get(t)??r);Number.isInteger(c)||(c=r),String(i.value)!==String(c)&&(i.value=String(c)),a.set(t,c);let l=u.api.formatExactNumber??(g=>String(g));Va(e,".mwi-book-state",n.isLearned?Vt(`当前 Lv.${n.level} · 总经验 ${l(n.experience)}`,`Current Lv.${n.level} · total XP ${l(n.experience)}`):Vt("当前:未学习","Current: not learned")),Va(e,".mwi-book-per-book",Vt(`每本增加 ${l(n.experienceGain)} 经验`,`${l(n.experienceGain)} XP per book`));let d=U2({isLearned:n.isLearned,currentLevel:n.level,currentExperience:n.experience,targetLevel:c,experienceGain:n.experienceGain,levelExperienceTable:n.levelExperienceTable});e.dataset.status=d.status;let m;d.status==="invalid"?m=Vt(`目标等级必须为 1–${n.maximumLevel} 的整数`,`Target level must be an integer from 1 to ${n.maximumLevel}`):d.status==="reached"?m=Vt("已达到目标 · 还需 0 本","Target reached · 0 books needed"):d.unlockBooks?m=Vt(`解锁 1 + 升级 ${d.levelingBooks} = 合计 ${d.totalBooks} 本`,`Unlock 1 + level ${d.levelingBooks} = ${d.totalBooks} books total`):m=Vt(`升级还需 ${d.totalBooks} 本`,`${d.totalBooks} books needed to level`),Va(e,".mwi-book-result",m);let p=d.totalBooks,b=u.api.getAskPrice?.(t,0)??0,f="";d.status!=="invalid"&&(f=p===0?Vt("参考购买成本:0","Reference purchase cost: 0"):b>0?Vt(`参考购买成本:${u.api.numberFormatter(p*b)}(最低出售价 ${u.api.numberFormatter(b)}/本)`,`Reference purchase cost: ${u.api.numberFormatter(p*b)} (best ask ${u.api.numberFormatter(b)}/book)`):Vt("参考购买成本:暂无出售价","Reference purchase cost: no ask price")),Va(e,".mwi-book-cost",f)}s(xb,"updatePanel");function a6(e){let t=[...document.querySelectorAll(e)],a=t.filter(n=>n.getClientRects().length);return a.length?a:t}s(a6,"visiblePanels"),u.features.register({id:"skillbook",setting:"skillbook",scope:"character",initialize({scope:e}){e6();let t=new Map,a=null,n=s((c,l)=>{let d=c.querySelector(`.${Mt}[data-surface="dictionary"]`);d||(d=t6((m,p)=>{t.set(m.dataset.itemHrid,Number(p)),xb(m,m.dataset.itemHrid,t)}),c.appendChild(d)),xb(d,l,t)},"updateSurface"),i=s(()=>{for(let c of a6(Z2)){let l=J2(c),d=c.querySelector(`.${Mt}[data-surface="dictionary"]`);l?n(c,l):d?.remove()}},"refresh"),o=s(()=>{a===null&&(a=setTimeout(()=>{a=null,i()},50))},"schedule"),r=new MutationObserver(o);e.observer(r,document.body,{childList:!0,subtree:!0});for(let c of["init_client_data","init_character_data","abilities_updated","character_abilities_updated","action_completed","market_item_values_updated","market_item_order_books_updated"])e.add(u.onMessage(c,o));e.add(()=>{a!==null&&clearTimeout(a),document.querySelectorAll(`.${Mt}`).forEach(c=>c.remove()),document.getElementById(Su)?.remove()}),i()}});var n6='div[class*="Inventory_items"]',i6='div[class*="Item_itemContainer"]';function r6(e){let t=e?.closest?.(i6);if(!t?.closest(n6))return null;let n=t.closest('div:has(> button[class*="Inventory_categoryButton"],> div[class*="Inventory_label"])')?.querySelector('button[class*="Inventory_categoryButton"]'),i=String(u.api.getOriTextFromElement?.(n)??n?.textContent??"").trim(),r=t.querySelector("svg[aria-label]")?.getAttribute("aria-label")?.trim();if(!r)return null;u.config.isZHInGameSetting&&(r=u.api.getItemEnNameFromZhName?.(r)??r);let c=u.state.itemEnNameToHridMap?.[r],l=u.state.initData_itemDetailMap?.[c];if(!c||l?.isTradable!==!0)return null;let d=t.querySelector('[class*="Item_enhancementLevel"]')?.textContent??"",m=Number.parseInt(d.replace(/\D/g,""),10)||0;return{itemHrid:c,enhancementLevel:m,categoryName:i}}s(r6,"inventoryItemTarget"),u.features.register({id:"inventoryMarketDoubleClick",setting:"inventoryMarketDoubleClick",scope:"character",initialize({scope:e}){e.event(document,"dblclick",t=>{if(t.button&&t.button!==0)return;let a=r6(t.target);if(!a)return;let n=u.api.openProcurementMarketplace;typeof n=="function"&&(t.preventDefault(),t.stopPropagation(),n(a.itemHrid,a.enhancementLevel))},!0)}});var kb="https://feedback.43.167.210.211.sslip.io/api/v1",o6="MWITools_feedback_identity_v1",Cu=1e4,s6=3;function ua(e,t){return u.config.isZH?e:t}s(ua,"t");var u6={"Required text is missing":["必填内容不能为空","Required text is missing"],"Bearer token required":["缺少反馈身份令牌","Feedback identity token is missing"],"Invalid bearer token":["反馈身份令牌无效","Feedback identity token is invalid"],"Identity is not registered":["反馈身份尚未注册","Feedback identity is not registered"],"Invalid image link list":["图片链接列表无效","Invalid image link list"],"Image links must be a list":["图片链接必须是列表","Image links must be a list"],"At most 3 image links are allowed":["最多只能填写 3 个图片链接","At most 3 image links are allowed"],"Image links must use http or https":["图片链接只支持 HTTP 或 HTTPS","Image links must use HTTP or HTTPS"],"Feedback not found":["未找到这条反馈","Feedback not found"],"This private identity belongs to another character":["当前反馈身份属于其他角色","This feedback identity belongs to another character"],"Invalid feedback type":["反馈类型无效","Invalid feedback type"],"Invalid context JSON":["反馈环境信息无效","Invalid feedback context"],"Context must be an object":["反馈环境信息格式无效","Feedback context must be an object"],"Weekly feedback limit reached":["本周反馈额度已用完","Weekly feedback limit reached"],"Closed feedback cannot be edited":["已结束的反馈不能修改","Closed feedback cannot be edited"],"Closed feedback cannot receive messages":["已结束的反馈不能继续留言","Closed feedback cannot receive messages"]};function Sb(e){let t=String(e??"").trim(),a=u6[t];if(a)return ua(...a);let n=/^Text exceeds (\d+) characters$/.exec(t);return n?ua(`内容不能超过 ${n[1]} 个字符`,`Text cannot exceed ${n[1]} characters`):t}s(Sb,"localizeErrorDetail");function c6(){return String(globalThis.location?.hostname??"unknown")}s(c6,"gameServer");function l6(e){let t="";for(let a of e)t+=String.fromCharCode(a);return globalThis.btoa(t).replaceAll("+","-").replaceAll("/","_").replace(/=+$/,"")}s(l6,"encodeToken");function d6(){let e=new Uint8Array(32);return globalThis.crypto.getRandomValues(e),l6(e)}s(d6,"createToken");function m6(e){try{return typeof GM_getValue=="function"?GM_getValue(e,""):""}catch{return""}}s(m6,"getPrivateValue");function f6(e,t){typeof GM_setValue=="function"&&GM_setValue(e,t)}s(f6,"setPrivateValue");function Cb(e){let t=e?.responseText??e?.response??"";if(!t)return null;if(typeof t=="object")return t;try{return JSON.parse(t)}catch{return{detail:String(t)}}}s(Cb,"parseResponse");function Ab({token:e,path:t,method:a="GET",body:n}){let i=typeof GM<"u"&&typeof GM.xmlHttpRequest=="function"?GM.xmlHttpRequest:typeof GM_xmlhttpRequest=="function"?GM_xmlhttpRequest:null,o={Authorization:`Bearer ${e}`};if(n&&!(n instanceof globalThis.FormData)&&(o["Content-Type"]="application/json"),!i){let r=new globalThis.AbortController,c=setTimeout(()=>r.abort(),Cu);return globalThis.fetch(`${kb}${t}`,{method:a,headers:o,signal:r.signal,body:n instanceof globalThis.FormData?n:n?JSON.stringify(n):void 0}).then(async l=>{if(!l.ok){let d=await l.json().catch(()=>({}));throw new Error(Sb(d.detail)||`HTTP ${l.status}`)}return l.json()}).catch(l=>{throw l?.name==="AbortError"?new Error(ua("意见反馈服务请求超时","Feedback service request timed out")):l}).finally(()=>clearTimeout(c))}return new Promise((r,c)=>{let l=!1,d,m=s(b=>{if(l)return;l=!0,clearTimeout(d);let f=Number(b?.status)||0;if(f<200||f>=300){let g=Cb(b),h=new Error(Sb(g?.detail)||ua(`反馈服务返回 HTTP ${f}`,`Feedback service returned HTTP ${f}`));h.status=f,c(h);return}r(Cb(b))},"finish"),p=s(b=>{l||(l=!0,clearTimeout(d),c(new Error(b)))},"fail");d=setTimeout(()=>p(ua("意见反馈服务请求超时","Feedback service request timed out")),Cu+1e3);try{i({method:a,url:`${kb}${t}`,headers:o,data:n instanceof globalThis.FormData?n:n?JSON.stringify(n):void 0,responseType:"text",timeout:Cu,anonymous:!1,onload:m,onerror:s(()=>p(ua("无法连接意见反馈服务","Unable to reach the feedback service")),"onerror"),ontimeout:s(()=>p(ua("意见反馈服务请求超时","Feedback service request timed out")),"ontimeout")})?.then?.(m).catch(f=>p(f.message))}catch(b){p(b.message)}})}s(Ab,"request");function Au(e){let a=(Array.isArray(e)?e:String(e??"").split(/\r?\n/)).map(n=>String(n).trim()).filter(Boolean);if(a.length>s6)throw new Error(ua("最多只能填写 3 个图片链接","At most 3 image links are allowed"));for(let n of a){if(n.length>2e3)throw new Error(ua("图片链接过长","The image link is too long"));let i;try{i=new URL(n)}catch{throw new Error(ua("图片链接格式不正确","Invalid image link format"))}if(!["http:","https:"].includes(i.protocol))throw new Error(ua("图片链接只支持 HTTP 或 HTTPS","Image links must use HTTP or HTTPS"))}return a}s(Au,"normalizeImageLinks");function Mb(e,t){return e.append("kind",t.type),e.append("title",t.title),e.append("detail",t.detail),e.append("reproduction",t.reproduction??""),e.append("expected",t.expected??""),t.context&&e.append("context",JSON.stringify(t.context)),e.append("imageLinks",JSON.stringify(Au(t.imageLinks))),e}s(Mb,"appendFeedbackForm");var Ir=class{static{s(this,"FeedbackClient")}constructor({characterId:t,characterName:a}){this.characterId=String(t),this.characterName=String(a??""),this.server=c6(),this.storageKey=`${o6}:${this.server}:${this.characterId}`,this.token=m6(this.storageKey)||d6(),f6(this.storageKey,this.token),this.registered=!1,this.identityPromise=null}async ensureIdentity(){if(!this.registered)return this.identityPromise||(this.identityPromise=Ab({token:this.token,path:"/identity",method:"POST",body:{gameServer:this.server,characterId:this.characterId,characterName:this.characterName,source:"mwitools-userscript"}}).then(t=>(this.registered=!0,t)).finally(()=>{this.identityPromise=null})),this.identityPromise}async call(t,a={}){return await this.ensureIdentity(),Ab({token:this.token,path:t,...a})}quota(){return this.call("/quota")}list(){return this.call("/feedback")}detail(t){return this.call(`/feedback/${encodeURIComponent(t)}`)}submit(t){return this.call("/feedback",{method:"POST",body:Mb(new globalThis.FormData,t)})}edit(t,a){return this.call(`/feedback/${encodeURIComponent(t)}`,{method:"PUT",body:Mb(new globalThis.FormData,a)})}reply(t,a){return this.call(`/feedback/${encodeURIComponent(t)}/messages`,{method:"POST",body:{body:a}})}markRead(t){return this.call(`/feedback/${encodeURIComponent(t)}/seen`,{method:"POST"})}};function Tb(e){let t=globalThis.GM_info?.script??{};return{scriptVersion:String(t.version??"unknown"),gameServer:e.server,characterId:e.characterId,characterName:e.characterName,browser:String(globalThis.navigator?.userAgent??"").slice(0,500)}}s(Tb,"feedbackContext");var Ti="mwitools-feedback-root",Wn="mwitools-feedback-button",fs="mwitools-feedback-style";function Be(e,t){return u.config.isZH?e:t}s(Be,"t");function Eb(e){let t={pending:["待处理","Pending"],processing:["处理中","Processing"],closed:["已结束","Closed"]};return t[e]?Be(...t[e]):e}s(Eb,"statusLabel");function b6(){if(document.getElementById(fs))return;let e=document.createElement("style");e.id=fs,e.textContent=`
    #${Wn}{position:relative;display:flex;align-items:center;align-self:center;justify-content:center;gap:5px;width:auto;min-width:76px;margin:2px auto 0;padding:1px 7px;border:1px solid rgba(245,158,11,.55);border-radius:4px;background:rgba(245,158,11,.1);color:#ffc45b;font-size:11px;line-height:1.2;cursor:pointer}
    #${Wn}:hover{background:rgba(245,158,11,.19);color:#ffd887}.mwi-feedback-badge{position:absolute;right:-5px;top:-6px;display:none;min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:#df4b4b;color:white;font:700 10px/16px sans-serif}.mwi-feedback-badge[data-count]:not([data-count="0"]){display:block}
    #${Ti}{position:fixed;inset:0;z-index:2147482600;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(4,6,12,.72);font-family:inherit;color:#e7e9f0}#${Ti}[hidden]{display:none}
    .mwi-feedback-modal{display:flex;flex-direction:column;width:min(760px,100%);max-height:min(820px,calc(100vh - 32px));overflow:hidden;border:1px solid #45516f;border-radius:9px;background:#171b2a;box-shadow:0 20px 60px rgba(0,0,0,.65)}
    .mwi-feedback-head{display:flex;align-items:center;padding:12px 15px;border-bottom:1px solid #343c55;background:#1d2336}.mwi-feedback-head h2{margin:0;font-size:16px}.mwi-feedback-close{margin-left:auto;width:30px;height:30px;border:0;border-radius:5px;background:transparent;color:#aab1c4;font-size:20px;cursor:pointer}.mwi-feedback-close:hover{background:#303950;color:white}
    .mwi-feedback-tabs{display:flex;border-bottom:1px solid #343c55}.mwi-feedback-tab{position:relative;flex:1;padding:10px;border:0;background:#191e2e;color:#aeb6ca;cursor:pointer}.mwi-feedback-tab[data-active="true"]{background:#252d45;color:#ffc65b;font-weight:700}.mwi-feedback-tab .mwi-feedback-badge{right:calc(50% - 52px);top:4px}
    .mwi-feedback-body{min-height:360px;overflow:auto;padding:16px}.mwi-feedback-view[hidden]{display:none}.mwi-feedback-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.mwi-feedback-field{display:flex;flex-direction:column;gap:5px}.mwi-feedback-field.is-wide{grid-column:1/-1}.mwi-feedback-field span{font-size:12px;color:#c5cada}.mwi-feedback-field input,.mwi-feedback-field select,.mwi-feedback-field textarea,.mwi-feedback-reply textarea{width:100%;box-sizing:border-box;padding:8px;border:1px solid #434e6c;border-radius:5px;background:#101522;color:#eef0f6;font:inherit}.mwi-feedback-field textarea{min-height:105px;resize:vertical}.mwi-feedback-bug-fields{display:contents}.mwi-feedback-bug-fields[hidden]{display:none}
    .mwi-feedback-label-row{display:flex;align-items:center;gap:6px}.mwi-feedback-image-help{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border:1px solid #6f7c9d;border-radius:50%;color:#a9cfff;text-decoration:none;font:700 11px/1 sans-serif}.mwi-feedback-image-help:hover{border-color:#ffc45b;color:#ffc45b}.mwi-feedback-image-links textarea{min-height:76px}.mwi-feedback-field small{color:#8691aa;font-size:11px}.mwi-feedback-link-list{display:grid;gap:6px}.mwi-feedback-link-list a{overflow:hidden;color:#82b8ff;text-overflow:ellipsis;white-space:nowrap}
    .mwi-feedback-footer{display:flex;align-items:center;gap:10px;margin-top:13px}.mwi-feedback-quota{font-size:12px;color:#aeb5c7}.mwi-feedback-submit{margin-left:auto;padding:8px 17px;border:0;border-radius:5px;background:#d58b27;color:#17130c;font-weight:700;cursor:pointer}.mwi-feedback-submit:disabled{opacity:.48;cursor:not-allowed}.mwi-feedback-error{min-height:18px;margin-top:8px;color:#ff8f8f;font-size:12px}.mwi-feedback-success{color:#7ddc96}
    .mwi-feedback-list{display:grid;gap:8px}.mwi-feedback-card{padding:11px;border:1px solid #353f59;border-radius:6px;background:#131927;cursor:pointer}.mwi-feedback-card:hover{background:#1b2336}.mwi-feedback-card h3{margin:0 0 5px;font-size:13px}.mwi-feedback-card-meta{display:flex;gap:7px;align-items:center;color:#959fb8;font-size:11px}.mwi-feedback-status{padding:2px 6px;border-radius:4px;background:#55401c;color:#ffd06f}.mwi-feedback-status.processing{background:#193f58;color:#7ad9ff}.mwi-feedback-status.closed{background:#24452e;color:#84df9d}.mwi-feedback-empty{padding:35px;text-align:center;color:#8d97b0}.mwi-feedback-detail-back{margin-bottom:10px;border:0;background:transparent;color:#81b7ff;cursor:pointer}.mwi-feedback-detail h3{margin:0 0 5px}.mwi-feedback-copy{white-space:pre-wrap;word-break:break-word;line-height:1.5}.mwi-feedback-section{margin-top:12px;padding:11px;border:1px solid #343e58;border-radius:6px;background:#131825}.mwi-feedback-section h4{margin:0 0 7px;font-size:12px;color:#b8c0d3}.mwi-feedback-messages{display:grid;gap:7px}.mwi-feedback-message{padding:8px 10px;border-radius:5px;background:#20283b;border-left:3px solid #f1ae42}.mwi-feedback-message.admin{border-left-color:#68a8ff}.mwi-feedback-message time{display:block;margin-top:4px;color:#8993aa;font-size:10px}.mwi-feedback-actions{display:flex;gap:8px;margin-top:12px}.mwi-feedback-actions button{padding:7px 11px;border:1px solid #465273;border-radius:5px;background:#26314d;color:#e7ebf5;cursor:pointer}.mwi-feedback-reply{display:flex;gap:8px;margin-top:9px}.mwi-feedback-reply textarea{min-height:64px}.mwi-feedback-reply button{align-self:flex-end}.mwi-feedback-notice{margin-bottom:12px;padding:9px;border-radius:5px;background:rgba(64,127,199,.12);color:#b8d7fb;font-size:12px}
    @media(max-width:620px){#${Ti}{padding:6px}.mwi-feedback-modal{max-height:calc(100vh - 12px)}.mwi-feedback-body{padding:11px}.mwi-feedback-grid{grid-template-columns:1fr}.mwi-feedback-field.is-wide{grid-column:1}.mwi-feedback-reply{flex-direction:column}}
  `,(document.head??document.documentElement).appendChild(e)}s(b6,"addStyles");function Mu(e){try{return new Date(e).toLocaleString()}catch{return String(e??"")}}s(Mu,"formatTime");function Je(e,t,a){let n=document.createElement(e);return t&&(n.className=t),a!==void 0&&(n.textContent=a),n}s(Je,"makeElement");var Nr=class{static{s(this,"FeedbackPanel")}constructor({client:t,scope:a}){this.client=t,this.scope=a,this.items=[],this.unread=0,this.currentDetailId=null,this.quota=null,this.editing=null,this.build()}build(){b6(),this.root=document.createElement("div"),this.root.id=Ti,this.root.hidden=!0,this.root.innerHTML=`
      <section class="mwi-feedback-modal" role="dialog" aria-modal="true" aria-label="${Be("MWITools 意见反馈","MWITools Feedback")}">
        <header class="mwi-feedback-head"><h2>${Be("MWITools 意见反馈","MWITools Feedback")}</h2><button type="button" class="mwi-feedback-close" aria-label="${Be("关闭","Close")}">×</button></header>
        <nav class="mwi-feedback-tabs"><button type="button" class="mwi-feedback-tab" data-tab="submit" data-active="true">${Be("提交反馈","Submit")}</button><button type="button" class="mwi-feedback-tab" data-tab="mine" data-active="false">${Be("我的反馈","My feedback")}<span class="mwi-feedback-badge" data-count="0">0</span></button></nav>
        <div class="mwi-feedback-body">
          <section class="mwi-feedback-view" data-view="submit"><div class="mwi-feedback-notice">${Be("每个角色每个 UTC+8 自然周最多提交 2 条;编辑和留言不占额度。不会采集聊天、游戏消息正文或凭证。","Up to 2 new reports per character each UTC+8 week. Edits and messages do not use quota. Chats, game message bodies, and credentials are never collected.")}</div>
            <form class="mwi-feedback-form"><div class="mwi-feedback-grid">
              <label class="mwi-feedback-field"><span>${Be("类型","Type")}</span><select name="type"><option value="bug">Bug</option><option value="feature">${Be("功能建议","Feature request")}</option><option value="other">${Be("其他","Other")}</option></select></label>
              <label class="mwi-feedback-field"><span>${Be("标题","Title")}</span><input name="title" maxlength="160" required></label>
              <label class="mwi-feedback-field is-wide"><span>${Be("详细说明","Details")}</span><textarea name="detail" maxlength="12000" required></textarea></label>
              <div class="mwi-feedback-bug-fields"><label class="mwi-feedback-field is-wide"><span>${Be("复现步骤","Steps to reproduce")}</span><textarea name="reproduction" maxlength="8000"></textarea></label><label class="mwi-feedback-field is-wide"><span>${Be("预期结果","Expected result")}</span><textarea name="expected" maxlength="8000"></textarea></label></div>
              <label class="mwi-feedback-field is-wide mwi-feedback-image-links"><span class="mwi-feedback-label-row"><span>${Be("图片链接(每行一个,最多 3 个)","Image links (one per line, up to 3)")}</span><a class="mwi-feedback-image-help" href="https://tupian.li" target="_blank" rel="noopener noreferrer" title="${Be("不知道图床?打开 tupian.li","Need image hosting? Open tupian.li")}">?</a></span><textarea name="imageLinks" maxlength="6002" placeholder="https://..."></textarea><small>${Be("服务器不会上传、下载或代理图片,只保存你填写的链接。","The server only stores your links; it never uploads, downloads, or proxies images.")}</small></label>
            </div><div class="mwi-feedback-footer"><span class="mwi-feedback-quota">${Be("正在查询本周额度…","Checking weekly quota…")}</span><button type="submit" class="mwi-feedback-submit">${Be("提交","Submit")}</button></div><div class="mwi-feedback-error"></div></form>
          </section>
          <section class="mwi-feedback-view" data-view="mine" hidden><div class="mwi-feedback-list"></div><div class="mwi-feedback-detail" hidden></div><div class="mwi-feedback-error"></div></section>
        </div>
      </section>`,document.body.appendChild(this.root),this.form=this.root.querySelector(".mwi-feedback-form"),this.scope.event(this.root.querySelector(".mwi-feedback-close"),"click",()=>this.close()),this.scope.event(this.root,"click",t=>{t.target===this.root&&this.close()}),this.root.querySelectorAll("[data-tab]").forEach(t=>this.scope.event(t,"click",()=>this.showTab(t.dataset.tab))),this.scope.event(this.form.elements.type,"change",()=>this.toggleBugFields()),this.scope.event(this.form,"submit",t=>this.submit(t)),this.scope.event(document,"keydown",t=>{t.key==="Escape"&&!this.root.hidden&&this.close()}),this.scope.add(()=>this.destroy()),this.toggleBugFields()}ensureButton(){let t=this.findTotalLevel();if(!t?.parentElement)return null;let a=document.getElementById(Wn);return a||(a=document.createElement("button"),a.type="button",a.id=Wn,a.innerHTML=`<span>✉</span><span>${Be("MWITools 意见反馈","MWITools Feedback")}</span><span class="mwi-feedback-badge" data-count="0">0</span>`,this.scope.event(a,"click",()=>this.open())),(a.parentElement!==t.parentElement||a.previousElementSibling!==t)&&t.insertAdjacentElement("afterend",a),a}findTotalLevel(){let t=document.querySelector('[class*="Header_totalLevel"],[class*="totalLevel"]');return t||[...document.querySelectorAll('header div,header span,[class*="Header"] div')].find(a=>{let n=a.textContent?.trim()??"";return n.length<80&&/^(总等级|Total Level)\s*[::]/i.test(n)})}setUnread(t){this.unread=Math.max(0,Number(t)||0);for(let a of document.querySelectorAll(`#${Wn} .mwi-feedback-badge,#${Ti} .mwi-feedback-tab .mwi-feedback-badge`))a.dataset.count=String(this.unread),a.textContent=String(this.unread)}async open(){this.root.hidden=!1,await this.refresh()}close(){this.root.hidden=!0}showTab(t){this.root.querySelectorAll("[data-tab]").forEach(a=>{a.dataset.active=String(a.dataset.tab===t)}),this.root.querySelectorAll("[data-view]").forEach(a=>{a.hidden=a.dataset.view!==t}),t==="mine"&&this.renderList()}toggleBugFields(){this.form.querySelector(".mwi-feedback-bug-fields").hidden=this.form.elements.type.value!=="bug"}formValue(){return{type:this.form.elements.type.value,title:this.form.elements.title.value.trim(),detail:this.form.elements.detail.value.trim(),reproduction:this.form.elements.reproduction.value.trim(),expected:this.form.elements.expected.value.trim(),imageLinks:Au(this.form.elements.imageLinks.value),context:Tb(this.client)}}async submit(t){t.preventDefault();let a=this.form.querySelector(".mwi-feedback-error"),n=this.form.querySelector(".mwi-feedback-submit");n.disabled=!0,a.classList.remove("mwi-feedback-success"),a.textContent=Be("正在提交…","Submitting…");try{let i=this.formValue();if(!i.title||!i.detail)throw new Error(Be("请填写标题和详细说明。","Enter a title and details."));let o=this.editing?.id??null,r=o?await this.client.edit(o,i):await this.client.submit(i);!o&&this.quota&&(this.quota={...this.quota,remaining:Math.max(0,Number(this.quota.remaining)-1)}),r?.id&&(this.items=[r,...this.items.filter(c=>c.id!==r.id)]),this.resetForm(),this.renderQuota(),a.classList.add("mwi-feedback-success"),a.textContent=Be("已保存反馈。","Feedback saved."),this.showTab("mine"),this.refresh()}catch(i){a.classList.remove("mwi-feedback-success"),a.textContent=i.message}finally{n.disabled=!this.editing&&this.quota?.remaining===0}}resetForm(){this.form.reset(),this.editing=null,this.form.querySelector(".mwi-feedback-submit").textContent=Be("提交","Submit"),this.toggleBugFields()}async refresh(){try{let t=await this.client.list();return this.items=t.items??[],this.quota=t.quota,this.setUnread(t.unread??0),this.renderQuota(),this.root.querySelectorAll(".mwi-feedback-error").forEach(a=>{a.classList.contains("mwi-feedback-success")||(a.textContent="")}),this.currentDetailId&&!this.root.hidden?await this.openDetail(this.currentDetailId):this.renderList(),!0}catch(t){return this.renderQuota(t.message),this.root.querySelector('[data-view="mine"] .mwi-feedback-error').textContent=t.message,!1}}renderQuota(t=""){let a=this.form.querySelector(".mwi-feedback-quota");a.textContent=t?Be(`额度查询失败:${t}`,`Quota check failed: ${t}`):this.quota?Be(`本周剩余 ${this.quota.remaining}/${this.quota.limit} 条`,`${this.quota.remaining}/${this.quota.limit} submissions left this week`):Be("额度暂时不可用","Quota unavailable"),this.form.querySelector(".mwi-feedback-submit").disabled=!this.editing&&this.quota?.remaining===0}renderList(){this.currentDetailId=null;let t=this.root.querySelector(".mwi-feedback-list"),a=this.root.querySelector(".mwi-feedback-detail");if(a.hidden=!0,t.hidden=!1,t.replaceChildren(),!this.items.length){t.append(Je("div","mwi-feedback-empty",Be("还没有提交过反馈。","No feedback yet.")));return}for(let n of this.items){let i=Je("article","mwi-feedback-card"),o=Je("h3","",n.title),r=Je("div","mwi-feedback-card-meta"),c=Je("span",`mwi-feedback-status ${n.status}`,Eb(n.status));r.append(c,document.createTextNode(Mu(n.updatedAt))),i.append(o,r),i.addEventListener("click",()=>this.openDetail(n.id),{once:!0}),t.append(i)}}async openDetail(t){let a=this.root.querySelector(".mwi-feedback-list"),n=this.root.querySelector(".mwi-feedback-detail");try{let i=await this.client.detail(t);this.currentDetailId=t,a.hidden=!0,n.hidden=!1,n.replaceChildren();let o=Je("button","mwi-feedback-detail-back",`← ${Be("返回列表","Back")}`);o.type="button",o.addEventListener("click",()=>this.renderList(),{once:!0});let r=Je("h3","",i.title),c=Je("div","mwi-feedback-card-meta",`${Eb(i.status)} · ${Mu(i.updatedAt)}`);if(n.append(o,r,c,this.textSection(Be("详细说明","Details"),i.detail)),i.type==="bug"&&n.append(this.textSection(Be("复现步骤","Steps to reproduce"),i.reproduction||"—"),this.textSection(Be("预期结果","Expected result"),i.expected||"—")),i.imageLinks?.length){let m=Je("section","mwi-feedback-section");m.append(Je("h4","",Be("图片链接","Image links")));let p=Je("div","mwi-feedback-link-list");for(let[b,f]of i.imageLinks.entries()){let g=Je("a","",`${Be("图片","Image")} ${b+1}:${f}`);g.href=f,g.target="_blank",g.rel="noopener noreferrer",p.append(g)}m.append(p),n.append(m)}let l=Je("section","mwi-feedback-section");l.append(Je("h4","",Be("留言","Messages")));let d=Je("div","mwi-feedback-messages");for(let m of i.messages??[]){let p=Je("div",`mwi-feedback-message ${m.actor}`);p.append(Je("strong","",m.actor==="admin"?Be("管理员","Admin"):Be("我","Me")),Je("div","mwi-feedback-copy",m.body),Je("time","",Mu(m.createdAt))),d.append(p)}if(d.childElementCount||d.append(Je("div","mwi-feedback-card-meta",Be("暂无留言","No messages"))),l.append(d),n.append(l),i.status!=="closed"){let m=Je("div","mwi-feedback-actions"),p=Je("button","",Be("修改反馈","Edit feedback"));p.type="button",p.addEventListener("click",()=>this.startEdit(i),{once:!0}),m.append(p),n.append(m);let b=Je("div","mwi-feedback-reply"),f=document.createElement("textarea");f.placeholder=Be("补充留言…","Add a message…"),f.maxLength=8e3;let g=Je("button","",Be("发送","Send"));g.type="button",g.addEventListener("click",async()=>{if(f.value.trim()){g.disabled=!0;try{await this.client.reply(i.id,f.value.trim()),await this.openDetail(i.id)}catch(h){g.disabled=!1,f.setCustomValidity(h.message),f.reportValidity()}}}),b.append(f,g),n.append(b)}else n.append(Je("div","mwi-feedback-notice",Be("该反馈已结束,内容和留言已锁定。","This feedback is closed and locked.")));await this.client.markRead(i.id).catch(()=>{}),i.unread&&this.setUnread(this.unread-1)}catch(i){n.hidden=!1,n.replaceChildren(Je("div","mwi-feedback-error",i.message))}}textSection(t,a){let n=Je("section","mwi-feedback-section");return n.append(Je("h4","",t),Je("div","mwi-feedback-copy",a)),n}startEdit(t){this.editing={...t};for(let a of["type","title","detail","reproduction","expected"])this.form.elements[a].value=t[a]??"";this.form.elements.imageLinks.value=(t.imageLinks??[]).join(`
`),this.form.querySelector(".mwi-feedback-submit").textContent=Be("保存修改","Save changes"),this.toggleBugFields(),this.renderQuota(),this.showTab("submit")}destroy(){document.getElementById(Wn)?.remove(),this.root?.remove(),document.getElementById(fs)?.remove()}},Lv={ROOT_ID:Ti,BUTTON_ID:Wn,STYLE_ID:fs};var Ta=null;u.features.register({id:"feedback",setting:"feedback",scope:"character",initialize({scope:e,characterId:t}){let a=new Ir({characterId:t,characterName:u.state.currentCharacterName});Ta=a;let n=new Nr({client:a,scope:e}),i=!1,o=0,r=null,c=s(d=>{clearTimeout(r),r=setTimeout(async()=>{if(i)return;let m=await n.refresh();o=m?0:Math.min(o+1,6),c(m?6e4:Math.min(15*6e4,6e4*2**o))},d)},"schedule"),l=s(()=>n.ensureButton(),"ensure");l(),e.interval(l,750),c(1500),e.add(()=>{i=!0,clearTimeout(r),Ta===a&&(Ta=null)})}}),u.api.feedback={submit:s((...e)=>Ta?.submit(...e),"submit"),list:s((...e)=>Ta?.list(...e),"list"),detail:s((...e)=>Ta?.detail(...e),"detail"),edit:s((...e)=>Ta?.edit(...e),"edit"),reply:s((...e)=>Ta?.reply(...e),"reply"),markRead:s((...e)=>Ta?.markRead(...e),"markRead"),quota:s((...e)=>Ta?.quota(...e),"quota")};var Ib="mwitools-guild-xp-style",bs=new Map,Tu=3600*1e3,p6=168*Tu;function lt(e,t){return u.config.isZH?e:t}s(lt,"t");function ps(e,t,a=4){let n=[{value:e,depth:0}],i=new Set;for(;n.length;){let{value:o,depth:r}=n.shift();if(!(!o||typeof o!="object"||i.has(o)||r>a)){i.add(o);for(let c of t)if(o[c]!==void 0&&o[c]!==null)return o[c];for(let c of Object.values(o))c&&typeof c=="object"&&n.push({value:c,depth:r+1})}}return null}s(ps,"findField");function Eu(e,t){if(!e||typeof e!="object")return{found:!1,value:void 0};for(let a of t)if(Object.prototype.hasOwnProperty.call(e,a))return{found:!0,value:e[a]};return{found:!1,value:void 0}}s(Eu,"findOwnField");function Nb(e){let t=Eu(e,["hideOnlineStatus","isOnlineHidden","onlineStatusHidden"]).value,a=Eu(e,["isOnline","online"]).value;if(t||a!==!0)return!1;let n=Eu(e,["actionType","currentActionType","currentActionHrid","actionHrid","currentAction"]);if(!n.found)return!1;if(n.value===null||n.value===!1)return!0;if(typeof n.value=="string"){let i=n.value.trim();return i===""||/(?:^|\/)idle$/i.test(i)}return!1}s(Nb,"isGuildMemberIdle");function Iu(e){return String(ps(e,["id","characterID","characterId","guildID","guildId","name"])??"")}s(Iu,"entityId");function g6(e){return String(ps(e,["name","guildName","characterName"])??"—")}s(g6,"entityName");function Nu(e){let t=ps(e,["guildExperience","totalGuildExperience","cumulativeGuildExperience","experience","totalExperience","xp"]);return Number.isFinite(Number(t))?Number(t):null}s(Nu,"entityXp");function Hr(e,t,a=""){let n=Iu(t);return n?`${e}:${a?`${a}:`:""}${n}`:""}s(Hr,"objectKey");async function Hb(e){if(!e)return null;let t=await u.api.getXpHistory(e),a=u.api.calculateXpRates(t);return bs.set(e,a),a}s(Hb,"refreshRate");async function Hu(e,t,a="",n=Date.now()){let i=Hr(e,t,a),o=Nu(t);return!i||o===null?null:(await u.api.recordXpSnapshot(i,o,n),Hb(i))}s(Hu,"sampleEntity");async function Dr(e=!1){let t=Date.now(),a=u.state.guild,n=Iu(a);a&&await Hu("guild",a,"",t),await Promise.all((u.state.guildCharacters??[]).map(i=>Hu("member",i,n,t))),e&&await Promise.all((u.state.guildLeaderboard??[]).map(i=>Hu("leaderboard",i,"",t)))}s(Dr,"sampleGuildState");function Db(){if(document.getElementById(Ib))return;let e=document.createElement("style");e.id=Ib,e.textContent=`
    .mwi-guild-xp-card { margin:10px 0; padding:11px 12px; border:1px solid rgba(255,255,255,.13); border-radius:8px; background:linear-gradient(135deg,rgba(255,255,255,.05),rgba(0,0,0,.17)); color:var(--color-text-primary,#eee); }
    .mwi-guild-xp-head { display:flex; justify-content:space-between; gap:12px; align-items:baseline; }
    .mwi-guild-xp-title { font-weight:700; font-size:.95rem; }
    .mwi-guild-xp-sampled { color:var(--color-text-secondary,#999); font-size:.66rem; }
    .mwi-guild-xp-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(125px,1fr)); gap:7px; margin-top:8px; }
    .mwi-guild-xp-metric { padding:7px 8px; border-radius:5px; background:rgba(0,0,0,.18); }
    .mwi-guild-xp-metric small { display:block; color:var(--color-text-secondary,#aaa); }
    .mwi-guild-xp-metric strong { display:block; margin-top:2px; color:#ffa500; }
    .mwi-guild-trend-label { margin-top:8px; color:var(--color-text-secondary,#aaa); font-size:.68rem; }
    .mwi-guild-trend { width:100%; height:180px; margin-top:8px; overflow:visible; }
    .mwi-guild-trend-axis { stroke:rgba(255,255,255,.38); stroke-width:1; vector-effect:non-scaling-stroke; }
    .mwi-guild-trend-grid { stroke:rgba(255,255,255,.1); stroke-width:1; vector-effect:non-scaling-stroke; }
    .mwi-guild-trend-tick { fill:var(--color-text-secondary,#aaa); font-size:10px; }
    .mwi-guild-trend-empty { fill:var(--color-text-secondary,#aaa); font-size:13px; text-anchor:middle; }
    .mwi-guild-trend polyline { fill:none; stroke:#ffa500; stroke-width:2; vector-effect:non-scaling-stroke; }
    .mwi-guild-idle { display:flex; flex-wrap:wrap; gap:5px; align-items:center; margin-top:8px; }
    .mwi-guild-idle span { padding:2px 7px; border-radius:999px; background:rgba(255,255,255,.07); font-size:.68rem; }
    .mwi-guild-members-wide { width:100% !important; max-width:860px !important; }
    .mwi-guild-members-wide .mwi-guild-member-table { width:100%; }
    .mwi-guild-member-table > thead > tr > th { white-space:nowrap; word-break:keep-all; }
    .mwi-guild-member-table > tbody > tr > td:not(:first-child) { white-space:nowrap; word-break:keep-all; }
    .mwi-guild-member-table > thead > tr > th:nth-child(2),
    .mwi-guild-member-table > thead > tr > th:nth-child(3),
    .mwi-guild-member-table > thead > tr > th:nth-child(4),
    .mwi-guild-member-table > tbody > tr > td:nth-child(2),
    .mwi-guild-member-table > tbody > tr > td:nth-child(3),
    .mwi-guild-member-table > tbody > tr > td:nth-child(4) { min-width:38px; }
    .mwi-guild-member-table > thead > tr > th:nth-child(5),
    .mwi-guild-member-table > tbody > tr > td:nth-child(5) { min-width:96px; }
    .mwi-guild-rate-cell { color:#ffa500; white-space:nowrap; min-width:105px; }
    .mwi-guild-rate-content { display:flex; align-items:center; gap:5px; }
    .mwi-guild-rate-value { flex:0 0 auto; }
    .mwi-guild-rate-track { display:block; flex:1 1 42px; min-width:24px; max-width:68px; height:5px; overflow:hidden; border-radius:999px; background:rgba(255,255,255,.08); }
    .mwi-guild-rate-fill { display:block; height:100%; min-width:2px; border-radius:inherit; background:rgba(91,134,255,.58); }
    .mwi-guild-rate-sort { margin-left:4px; color:var(--color-text-secondary,#aaa); font-size:.62rem; }
    .mwi-guild-div-rate-head,.mwi-guild-div-rates { display:grid; grid-template-columns:repeat(2,minmax(92px,1fr)); gap:8px; margin-left:auto; text-align:right; }
    .mwi-guild-div-rate-head { padding:5px 8px; color:var(--color-text-secondary,#aaa); font-size:.68rem; }
    .mwi-guild-div-rates { padding-left:10px; color:#ffa500; font-size:.7rem; }
  `,(document.head??document.documentElement).appendChild(e)}s(Db,"addStyles");function Pr(e,t=!1){return Number.isFinite(e)?`${u.api.numberFormatter(e)}/h`:t?lt("待再次采样","Awaiting another sample"):lt("样本不足","Not enough data")}s(Pr,"rateText");function Lr(e,t,a=""){let n=document.createElement("div");n.className="mwi-guild-xp-metric";let i=document.createElement("small");i.textContent=e;let o=document.createElement("strong");return t?.nodeType?o.append(t):o.textContent=t,o.title=a,n.append(i,o),n}s(Lr,"metric");function Pb(e,t=Date.now()){let a=t-p6,n=[...e].map(o=>({at:Number(o?.at),xp:Number(o?.xp)})).filter(o=>Number.isFinite(o.at)&&Number.isFinite(o.xp)).sort((o,r)=>o.at-r.at).filter(o=>o.at>=a),i=[];for(let o=1;o<n.length;o+=1){let r=n[o-1],c=n[o],l=c.at-r.at,d=c.xp-r.xp;l<=0||d<0||i.push({at:c.at,rate:d/l*Tu})}return i}s(Pb,"guildXpRatePoints");function Ga(e,t=""){let a=document.createElementNS("http://www.w3.org/2000/svg",e);return t&&a.setAttribute("class",t),a}s(Ga,"svgElement");function h6(e){if(!(e>0))return 1;let t=e/4,a=10**Math.floor(Math.log10(t)),n=t/a;return(n<=1?1:n<=2?2:n<=5?5:10)*a*4}s(h6,"niceRateCeiling");function _6(e,t){return new Intl.DateTimeFormat(u.config.isZH?"zh-CN":"en-US",{...t?{month:"numeric",day:"numeric"}:{hour:"2-digit",minute:"2-digit",hour12:!1}}).format(new Date(e))}s(_6,"trendTimeLabel");function y6(e){let n={left:58,right:12,top:10,bottom:30},i=520-n.left-n.right,o=180-n.top-n.bottom,r=Ga("svg");r.classList.add("mwi-guild-trend"),r.setAttribute("viewBox","0 0 520 180"),r.setAttribute("preserveAspectRatio","xMidYMid meet");let c=lt("公会经验获取速度(XP/小时)","Guild XP gain rate (XP/hour)");r.setAttribute("role","img"),r.setAttribute("aria-label",c);let l=Ga("title");l.textContent=c,r.append(l);let d=Pb(e);if(d.length<2){let y=Ga("text","mwi-guild-trend-empty");return y.setAttribute("x",String(520/2)),y.setAttribute("y",String(180/2)),y.textContent=lt("样本不足","Not enough data"),r.append(y),r}let m=h6(Math.max(...d.map(y=>y.rate))),p=d[0].at,b=d.at(-1).at,f=Ga("line","mwi-guild-trend-axis mwi-guild-axis-y");f.setAttribute("x1",String(n.left)),f.setAttribute("x2",String(n.left)),f.setAttribute("y1",String(n.top)),f.setAttribute("y2",String(n.top+o));let g=Ga("line","mwi-guild-trend-axis mwi-guild-axis-x");g.setAttribute("x1",String(n.left)),g.setAttribute("x2",String(n.left+i)),g.setAttribute("y1",String(n.top+o)),g.setAttribute("y2",String(n.top+o));for(let y=0;y<5;y+=1){let w=y/4,k=n.top+o-w*o,C=Ga("line","mwi-guild-trend-grid");C.setAttribute("x1",String(n.left)),C.setAttribute("x2",String(n.left+i)),C.setAttribute("y1",String(k)),C.setAttribute("y2",String(k));let x=Ga("text","mwi-guild-trend-tick mwi-guild-y-tick");x.setAttribute("x",String(n.left-7)),x.setAttribute("y",String(k+3)),x.setAttribute("text-anchor","end"),x.textContent=u.api.numberFormatter(m*w),r.append(C,x)}let h=b-p>24*Tu;for(let y=0;y<4;y+=1){let w=y/3,k=n.left+w*i,C=Ga("text","mwi-guild-trend-tick mwi-guild-x-tick");C.setAttribute("x",String(k)),C.setAttribute("y",String(n.top+o+19)),C.setAttribute("text-anchor",y===0?"start":y===3?"end":"middle"),C.textContent=_6(p+w*(b-p),h),r.append(C)}r.append(f,g);let _=Ga("polyline");return _.setAttribute("points",d.map(y=>{let w=n.left+(y.at-p)/Math.max(1,b-p)*i,k=n.top+o-y.rate/m*o;return`${w},${k}`}).join(" ")),r.append(_),r}s(y6,"trendSvg");function Du(e=null){document.querySelectorAll(".mwi-guild-xp-card").forEach(t=>{t!==e&&t.remove()})}s(Du,"removeGuildOverviewCards");function Lb(){let e=document.querySelector('div[class*="GuildPanel_guildPanel"]');if(!e)return null;let a=[...e.querySelector('[role="tablist"]')?.querySelectorAll('[role="tab"]')??[]],n=a.find(l=>/^(概览|overview)$/i.test(l.textContent?.trim()??""))??a[0],i=n?.getAttribute("aria-selected");if(!(i!=null?i==="true":n?.classList.contains("Mui-selected")||n?.getAttribute("tabindex")==="0"))return null;let r=e.querySelector('[class*="GuildPanel_overviewTab"]'),c=r?.closest('[class*="TabPanel_tabPanel"]');return!r||c?.hidden||c?.className.includes("TabPanel_hidden")?null:r}s(Lb,"findGuildOverviewHost");async function gs(){let e=Lb(),t=u.state.guild;if(!e||!t){Du();return}let a=Hr("guild",t),n=bs.get(a)??await Hb(a),i=Lb();if(!i||i!==e){Du();return}e=i;let o=e.querySelector(":scope > .mwi-guild-xp-card");Du(o),o||(o=document.createElement("section"),o.className="mwi-guild-xp-card",e.prepend(o)),o.replaceChildren();let r=document.createElement("div");r.className="mwi-guild-xp-head";let c=document.createElement("div");c.className="mwi-guild-xp-title",c.textContent=lt("公会经验进度","Guild XP progress");let l=document.createElement("div");l.className="mwi-guild-xp-sampled",l.textContent=n?.lastSampleAt?`${lt("最后采样","Last sample")} ${new Date(n.lastSampleAt).toLocaleString()}`:lt("待采样","Awaiting samples"),r.append(c,l);let d=document.createElement("div");d.className="mwi-guild-xp-grid";let m=Nu(t),p=Number(ps(t,["nextLevelExperience","experienceForNextLevel","levelExperience"])),b=Number.isFinite(p)&&m!==null?Math.max(0,p-m):null,f=b!==null&&Number(n?.day)>0?b/n.day:null;d.append(Lr(lt("当前经验","Current XP"),u.api.createFormattedNumber(m)),Lr(lt("最近 XP/h","Recent XP/h"),Pr(n?.recent,!n?.lastSampleAt)),Lr(lt("1 小时平均","1-hour average"),Pr(n?.hour)),Lr(lt("24 小时平均","24-hour average"),Pr(n?.day)),Lr(lt("预计升级","Level ETA"),Number.isFinite(f)?u.api.timeReadable(f*3600):lt("样本不足","Not enough data")));let g=document.createElement("div");if(g.className="mwi-guild-trend-label",g.textContent=lt("最近 7 天经验获取速度(XP/小时)","XP gain rate over the last 7 days (XP/hour)"),o.append(r,d,g,y6(n?.points??[])),u.settings.get("guildIdleMembers")){let h=(u.state.guildCharacters??[]).filter(Nb),_=document.createElement("div");_.className="mwi-guild-idle";let y=document.createElement("b");y.textContent=`${lt("当前闲置","Idle now")} (${h.length}) · ${lt("状态更新","Updated")} ${new Date(u.state.guildStateUpdatedAt).toLocaleTimeString()}`,_.append(y);for(let w of h){let k=document.createElement("span");k.textContent=g6(w),_.append(k)}o.append(_)}}s(gs,"renderGuildOverview");function $b(e,t,a,n=""){if(!e?.tHead?.rows?.[0]||!t.length)return;e.classList.add(`mwi-guild-${a}-table`),a==="member"&&e.closest('[class*="GuildPanel_membersTab__"]')?.classList.add("mwi-guild-members-wide");let i=e.tHead.rows[0];if(!i.querySelector(".mwi-guild-recent-head"))for(let[l,[d,m]]of[["mwi-guild-recent-head",lt("最近 XP/h","Recent XP/h")],["mwi-guild-day-head",lt("24 小时 XP/h","24h XP/h")]].entries()){let p=document.createElement("th");p.className=d;let b=document.createElement("span");b.textContent=m;let f=document.createElement("span");f.className="mwi-guild-rate-sort",f.textContent="↕",p.append(b,f),p.tabIndex=0,p.style.cursor="pointer",p.title=lt("点击按经验速率排序","Click to sort by XP rate");let g=s(()=>{let h=e.tBodies[0];if(!h)return;let _=p.dataset.direction==="desc"?1:-1;p.dataset.direction=_===-1?"desc":"asc",i.querySelectorAll(".mwi-guild-recent-head,.mwi-guild-day-head").forEach(w=>{if(w!==p){delete w.dataset.direction,w.setAttribute("aria-sort","none");let k=w.querySelector(".mwi-guild-rate-sort");k&&(k.textContent="↕")}}),p.setAttribute("aria-sort",_===-1?"descending":"ascending"),f.textContent=_===-1?"▼":"▲";let y=[...h.rows];y.sort((w,k)=>{let C=w.querySelectorAll(".mwi-guild-rate-cell")[l],x=k.querySelectorAll(".mwi-guild-rate-cell")[l],T=Number(C?.dataset.sortValue??-1),A=Number(x?.dataset.sortValue??-1);return T<0&&A<0?0:T<0?1:A<0?-1:_===-1?A-T:T-A}),y.forEach(w=>h.append(w))},"sortRows");p.addEventListener("click",g),p.addEventListener("keydown",h=>{h.key!=="Enter"&&h.key!==" "||(h.preventDefault(),g())}),i.append(p)}let o=new Map(t.map(l=>[Hr(a,l,n),l])),r=[...e.tBodies[0]?.rows??[]].map((l,d)=>{let m=l.dataset.mwiGuildEntityKey??"",p=o.get(m);return p||(p=t[d],m=Hr(a,p,n),m&&(l.dataset.mwiGuildEntityKey=m)),{row:l,key:m,rates:bs.get(m)}}),c=["recent","day"].map(l=>Math.max(0,...r.map(({rates:d})=>Number.isFinite(d?.[l])?d[l]:0)));r.forEach(({row:l,rates:d})=>{l.querySelectorAll(".mwi-guild-rate-cell").forEach(m=>m.remove());for(let[m,p]of[d?.recent,d?.day].entries()){let b=document.createElement("td");b.className="mwi-guild-rate-cell",b.dataset.sortValue=Number.isFinite(p)?String(p):"-1";let f=document.createElement("div");f.className="mwi-guild-rate-content";let g=document.createElement("span");if(g.className="mwi-guild-rate-value",g.textContent=Pr(p,!d?.lastSampleAt),f.append(g),Number.isFinite(p)&&c[m]>0){let h=document.createElement("span");h.className="mwi-guild-rate-track",h.setAttribute("aria-hidden","true");let _=document.createElement("span");_.className="mwi-guild-rate-fill",_.style.width=`${Math.max(0,p/c[m]*100)}%`,h.append(_),f.append(h)}b.append(f),l.append(b)}})}s($b,"appendRateColumns");function w6(e){let t=document.querySelector('div[class*="LeaderboardPanel_leaderboardTable"]');if(!t||!e.length)return;let a=t.parentElement.querySelector(":scope > .mwi-guild-div-rate-head");a||(a=document.createElement("div"),a.className="mwi-guild-div-rate-head",a.append(Object.assign(document.createElement("span"),{textContent:lt("最近 XP/h","Recent XP/h")}),Object.assign(document.createElement("span"),{textContent:lt("24 小时 XP/h","24h XP/h")})),t.before(a)),[...t.querySelectorAll('[class*="LeaderboardPanel_guildName"]')].forEach((i,o)=>{let r=i;for(;r.parentElement&&r.parentElement!==t;)r=r.parentElement;r.querySelector(":scope > .mwi-guild-div-rates")?.remove();let c=bs.get(Hr("leaderboard",e[o])),l=document.createElement("div");l.className="mwi-guild-div-rates";for(let d of[c?.recent,c?.day]){let m=document.createElement("span");m.dataset.sortValue=Number.isFinite(d)?String(d):"-1",m.textContent=Pr(d,!c?.lastSampleAt),l.append(m)}r.append(l)})}s(w6,"appendLeaderboardDivRates");function Pu(){if(u.settings.get("guildMemberXp")){let e=document.querySelector('div[class*="GuildPanel"] table');$b(e,u.state.guildCharacters,"member",Iu(u.state.guild))}if(u.settings.get("guildLeaderboardXp")){let e=document.querySelector('div[class*="Leaderboard"] table');$b(e,u.state.guildLeaderboard,"leaderboard"),e||w6(u.state.guildLeaderboard)}}s(Pu,"renderGuildTables"),u.features.register({id:"guildXpTracking",setting:"guildXpTracking",scope:"character",initialize({scope:e}){Dr(!1),e.add(u.onMessage("guild_updated",()=>Dr(!1))),e.add(u.onMessage("guild_characters_updated",()=>Dr(!1))),e.add(u.onMessage("leaderboard_updated",()=>Dr(!0)))}}),u.features.register({id:"guildOverview",setting:"guildOverview",scope:"character",dependsOn:["guildXpTracking"],initialize({scope:e}){Db(),gs(),e.interval(gs,1500),e.add(()=>document.querySelectorAll(".mwi-guild-xp-card").forEach(t=>t.remove()))}});for(let e of["guildMemberXp","guildLeaderboardXp","guildIdleMembers"])u.features.register({id:e,setting:e,scope:"character",dependsOn:e==="guildIdleMembers"?["guildXpTracking","guildOverview"]:["guildXpTracking"],initialize({scope:t}){Db(),Pu(),e==="guildIdleMembers"&&gs(),e!=="guildIdleMembers"&&t.interval(Pu,1500),t.add(()=>{if(e==="guildIdleMembers"){document.querySelectorAll(".mwi-guild-idle").forEach(n=>n.remove());return}let a=e==="guildMemberXp"?"member":"leaderboard";document.querySelectorAll(`table.mwi-guild-${a}-table`).forEach(n=>{a==="member"&&n.closest(".mwi-guild-members-wide")?.classList.remove("mwi-guild-members-wide"),n.querySelectorAll(".mwi-guild-rate-cell,.mwi-guild-recent-head,.mwi-guild-day-head").forEach(i=>i.remove()),n.classList.remove(`mwi-guild-${a}-table`)}),a==="leaderboard"&&document.querySelectorAll(".mwi-guild-div-rate-head,.mwi-guild-div-rates").forEach(n=>n.remove())})}});Object.assign(u.api,{sampleGuildState:Dr,renderGuildOverview:gs,renderGuildTables:Pu,getGuildEntityXp:Nu,getGuildXpRatePoints:Pb,isGuildMemberIdle:Nb});function ot(e,t){return u.config.isZH?e:t}s(ot,"t");async function v6(e){let t=await u.api.fetchMarketJSON(),a=!0;t||(console.error(u.config.isZH?"[MWITools] 市场数据不可用,战斗总结将不显示市场收益。":"[MWITools] Market data is unavailable; market revenue is omitted from the battle summary."),a=!1);let n=0,i=0,o=0;if(a&&e.unit.totalLootMap)for(let d of Object.values(e.unit.totalLootMap)){let m=d.count;d.itemHrid==="/items/coin"&&(o+=m),t.marketData[d.itemHrid]?(n+=t.marketData[d.itemHrid][0].a*m,i+=u.api.getNetSellPrice(d.itemHrid,0)*m):console.log(u.config.isZH?`[MWITools] 无法读取战利品价格:${d.itemHrid}`:`[MWITools] Could not read the loot price: ${d.itemHrid}`)}let r=0;if(e.unit.totalSkillExperienceMap)for(let d of Object.values(e.unit.totalSkillExperienceMap))r+=d;let c=0;l();function l(){c++;let d=document.querySelector(".BattlePanel_gainedExp__3SaCa")?.parentElement;if(d){let m=null,p=document.querySelector(".BattlePanel_combatInfo__sHGCe");if(p){let b=p.innerHTML.match(/(战斗时间|战斗时长|Combat Duration): (?:(\d+)d\s*)?(?:(\d+)h\s*)?(?:(\d+)m\s*)?(?:(\d+)s).*?(交战|战斗|Battles): (\d+).*?(战败|死亡次数|Deaths): (\d+)/);if(b){let f=parseInt(b[2],10)||0,g=parseInt(b[3],10)||0,h=parseInt(b[4],10)||0,_=parseInt(b[5],10)||0,y=parseInt(b[7],10)-1;m=f*86400+g*3600+h*60+_;let w=(y/m*3600).toFixed(1);d.insertAdjacentHTML("beforeend",`<div id="script_battleNumbers" style="color: ${u.config.SCRIPT_COLOR_MAIN};">${u.config.isZH?"每小时战斗: ":"Encounters/hour: "}${w}${u.config.isZH?" 次":""}</div>`)}}document.querySelector("div#script_battleNumbers").insertAdjacentHTML("afterend",`<div id="script_totalIncome" style="color: ${u.config.SCRIPT_COLOR_MAIN};">${u.config.isZH?"总收获: ":"Total revenue: "}${u.api.numberFormatter(n)} / ${u.api.numberFormatter(i)}</div>`),m&&(document.querySelector("div#script_totalIncome").insertAdjacentHTML("afterend",`<div id="script_averageIncome" style="color: ${u.config.SCRIPT_COLOR_MAIN};">${u.config.isZH?"每小时收获: ":"Revenue/hour: "}${u.api.numberFormatter(n/(m/60/60))} / ${u.api.numberFormatter(i/(m/60/60))}</div>`),document.querySelector("div#script_averageIncome").insertAdjacentHTML("afterend",`<div id="script_totalIncomeDay" style="color: ${u.config.SCRIPT_COLOR_MAIN};">${u.config.isZH?"每天收获: ":"Revenue/day: "}${u.api.numberFormatter(n/(m/60/60)*24)} / ${u.api.numberFormatter(i/(m/60/60)*24)}</div>`),document.querySelector("div#script_totalIncomeDay").insertAdjacentHTML("afterend",`<div id="script_avgRawCoinHour" style="color: ${u.config.SCRIPT_COLOR_MAIN};">${u.config.isZH?"每小时仅金币收获: ":"Raw coins/hour: "}${u.api.numberFormatter(o/(m/60/60))}</div>`)),document.querySelector("div#script_avgRawCoinHour").insertAdjacentHTML("afterend",`<div id="script_totalSkillsExp" style="color: ${u.config.SCRIPT_COLOR_MAIN};">${u.config.isZH?"总经验: ":"Total exp: "}${u.api.numberFormatter(r)}</div>`),m?(document.querySelector("div#script_totalSkillsExp").insertAdjacentHTML("afterend",`<div id="script_averageSkillsExp" style="color: ${u.config.SCRIPT_COLOR_MAIN};">${u.config.isZH?"每小时总经验: ":"Total exp/hour: "}${u.api.numberFormatter(r/(m/60/60))}</div>`),[{skillHrid:"/skills/magic",zhName:"魔法",enName:"Magic"},{skillHrid:"/skills/ranged",zhName:"远程",enName:"Ranged"},{skillHrid:"/skills/defense",zhName:"防御",enName:"Defense"},{skillHrid:"/skills/melee",zhName:"近战",enName:"Melee"},{skillHrid:"/skills/attack",zhName:"攻击",enName:"Attack"},{skillHrid:"/skills/intelligence",zhName:"智力",enName:"Intelligence"},{skillHrid:"/skills/stamina",zhName:"耐力",enName:"Stamina"}].forEach(b=>{let f=e.unit.totalSkillExperienceMap[b.skillHrid];f&&document.querySelector("div#script_totalSkillsExp").insertAdjacentHTML("afterend",`<div style="color: ${u.config.SCRIPT_COLOR_MAIN};">${u.config.isZH?"每小时":""}${u.config.isZH?b.zhName:b.enName}${u.config.isZH?"经验: ":" exp/hour: "}${u.api.numberFormatter(f/(m/60/60))}</div>`)})):console.error(u.config.isZH?"[MWITools] 战斗时长无效,无法显示平均经验。":"[MWITools] Battle duration is invalid; average XP cannot be displayed.")}else c<=10?setTimeout(l,200):console.error(u.config.isZH?"[MWITools] 重试 10 次后仍未找到战斗总结。":"[MWITools] Battle summary was not found after 10 attempts.")}s(l,"findElem")}s(v6,"handleBattleSummary");function hs(){let e=u.state.initData_itemDetailMap;if(!e)return;let t=document.querySelectorAll("div.Item_itemContainer__x7kH1 div.Item_item__2De2O.Item_clickable__3viV6");for(let a of t){if(a.querySelector("div.Item_name__2C42x"))continue;let n=a.querySelector("use")?.getAttribute("href");if(!n?.includes("#"))continue;let o="/items/"+n.split("#")[1],r;try{r=e[o]}catch{return}let c=r?.itemLevel,l=r?.abilityBookDetail?.levelRequirements?.[0]?.level;if(r?.equipmentDetail&&c&&c>0)a.querySelector("div.script_itemLevel")||(a.style.position="relative",a.insertAdjacentHTML("beforeend",`<div class="script_itemLevel" style="z-index: 1; position: absolute; top: 2px; right: 2px; text-align: right; color: ${u.config.SCRIPT_COLOR_MAIN};">${c}</div>`)),!r?.equipmentDetail?.type?.includes("_tool")&&a.parentElement.parentElement.parentElement.parentElement.className.includes("MarketplacePanel_marketItems__D4k7e")&&Ob(a,r);else if(l&&l>0)a.querySelector("div.script_itemLevel")||(a.style.position="relative",a.insertAdjacentHTML("beforeend",`<div class="script_itemLevel" style="z-index: 1; position: absolute; top: 2px; right: 2px; text-align: right; color: ${u.config.SCRIPT_COLOR_MAIN};">${l}</div>`));else if(u.settings.settingsMap.showsKeyInfoInIcon.isTrue&&(o.includes("_key_fragment")||o.includes("_key"))){let d=new Map;d.set("/items/blue_key_fragment",u.config.isZH?"图3":"Z3"),d.set("/items/green_key_fragment",u.config.isZH?"图4":"Z4"),d.set("/items/purple_key_fragment",u.config.isZH?"图5":"Z5"),d.set("/items/white_key_fragment",u.config.isZH?"图6":"Z6"),d.set("/items/orange_key_fragment",u.config.isZH?"图7":"Z7"),d.set("/items/brown_key_fragment",u.config.isZH?"图8":"Z8"),d.set("/items/stone_key_fragment",u.config.isZH?"图9":"Z9"),d.set("/items/dark_key_fragment",u.config.isZH?"图10":"Z10"),d.set("/items/burning_key_fragment",u.config.isZH?"图11":"Z11"),d.set("/items/chimerical_entry_key",u.config.isZH?"牢1":"D1"),d.set("/items/sinister_entry_key",u.config.isZH?"牢2":"D2"),d.set("/items/enchanted_entry_key",u.config.isZH?"牢3":"D3"),d.set("/items/pirate_entry_key",u.config.isZH?"牢4":"D4"),d.set("/items/chimerical_chest_key","3.4.5.6"),d.set("/items/sinister_chest_key","5.7.8.10"),d.set("/items/enchanted_chest_key","7.8.9.11"),d.set("/items/pirate_chest_key","6.9.10.11"),a.querySelector("div.script_key")||(a.style.position="relative",a.insertAdjacentHTML("beforeend",`<div class="script_key" style="z-index: 1; position: absolute; top: 2px; right: 2px; text-align: right; color: ${u.config.SCRIPT_COLOR_MAIN};">${d.get(o)}</div>`))}}}s(hs,"addItemLevels");var _s=1,ys=1e3,$r="all",Ei="all";function Lu(){let e=document.querySelector(".MarketplacePanel_itemFilterContainer__3F3td"),t=document.querySelector("#script_filters");if(e&&!t){e.insertAdjacentHTML("afterend",`<div id="script_filters" style="float: left; color: ${u.config.SCRIPT_COLOR_MAIN};"></div>`),t=document.querySelector("#script_filters"),t.insertAdjacentHTML("beforeend",`<span id="script_filter_level" style="float: left; color: ${u.config.SCRIPT_COLOR_MAIN};">${u.config.isZH?"等级: 大于等于 ":"Equipment level: >= "}
            <select name="script_filter_level_select" id="script_filter_level_select">
            <option value="1">${ot("全部","All")}</option>
            <option value="10">10</option>
            <option value="20">20</option>
            <option value="30">30</option>
            <option value="40">40</option>
            <option value="50">50</option>
            <option value="60">60</option>
            <option value="65">65</option>
            <option value="70">70</option>
            <option value="75">75</option>
            <option value="80">80</option>
            <option value="85">85</option>
            <option value="90">90</option>
            <option value="95">95</option>
            <option value="100">100</option>
        </select>&nbsp;</span>`),t.insertAdjacentHTML("beforeend",`<span id="script_filter_level_to" style="float: left; color: ${u.config.SCRIPT_COLOR_MAIN};">${u.config.isZH?"小于 ":"< "}
            <select name="script_filter_level_select_to" id="script_filter_level_select_to">
            <option value="1000">${ot("全部","All")}</option>
            <option value="10">10</option>
            <option value="20">20</option>
            <option value="30">30</option>
            <option value="40">40</option>
            <option value="50">50</option>
            <option value="60">60</option>
            <option value="65">65</option>
            <option value="70">70</option>
            <option value="75">75</option>
            <option value="80">80</option>
            <option value="85">85</option>
            <option value="90">90</option>
            <option value="95">95</option>
            <option value="100">100</option>
        </select>&emsp;</span>`),t.insertAdjacentHTML("beforeend",`<span id="script_filter_skill" style="float: left; color: ${u.config.SCRIPT_COLOR_MAIN};">${u.config.isZH?"职业: ":"Class: "}
            <select name="script_filter_skill_select" id="script_filter_skill_select">
                <option value="all">${ot("全部","All")}</option>
                <option value="attack">${ot("攻击","Attack")}</option>
                <option value="melee">${ot("近战","Melee")}</option>
                <option value="defense">${ot("防御","Defense")}</option>
                <option value="ranged">${ot("远程","Ranged")}</option>
                <option value="magic">${ot("魔法","Magic")}</option>
                <option value="others">${ot("其他","Others")}</option>
            </select>&emsp;</span>`),t.insertAdjacentHTML("beforeend",`<span id="script_filter_location" style="float: left; color: ${u.config.SCRIPT_COLOR_MAIN};">${u.config.isZH?"部位: ":"Slot: "}
            <select name="script_filter_location_select" id="script_filter_location_select">
                <option value="all">${ot("全部","All")}</option>
                <option value="main_hand">${ot("主手","Main Hand")}</option>
                <option value="off_hand">${ot("副手","Off Hand")}</option>
                <option value="two_hand">${ot("双手","Two Hand")}</option>
                <option value="head">${ot("头部","Head")}</option>
                <option value="body">${ot("身体","Body")}</option>
                <option value="hands">${ot("手部","Hands")}</option>
                <option value="legs">${ot("腿部","Legs")}</option>
                <option value="feet">${ot("脚部","Feet")}</option>
                <option value="neck">${ot("项链","Neck")}</option>
                <option value="earrings">${ot("耳饰","Earrings")}</option>
                <option value="ring">${ot("戒指","Ring")}</option>
                <option value="pouch">${ot("袋子","Pouch")}</option>
                <option value="back">${ot("背部","Back")}</option>
            </select>&emsp;</span>`);let a=document.querySelector("#script_filter_level_select");a.addEventListener("change",function(){a.value&&!isNaN(a.value)&&(_s=Number(a.value))});let n=document.querySelector("#script_filter_level_select_to");n.addEventListener("change",function(){n.value&&!isNaN(n.value)&&(ys=Number(n.value))});let i=document.querySelector("#script_filter_skill_select");i.addEventListener("change",function(){i.value&&(Ei=i.value)});let o=document.querySelector("#script_filter_location_select");o.addEventListener("change",function(){o.value&&($r=o.value)})}}s(Lu,"addMarketFilterButtons");function Ob(e,t){if(!t.equipmentDetail)return;let a=t.itemLevel,n=t.equipmentDetail.type,i=t.equipmentDetail.levelRequirements,o=!1;o=n&&n.includes($r),$r==="all"&&(o=!0);let r=!1;for(let c of i)c.skillHrid.includes(Ei)&&(r=!0);Ei==="others"&&(r=!["attack","melee","defense","ranged","magic"].some(l=>{for(let d of i)if(d.skillHrid.includes(l))return!0})),Ei==="all"&&(r=!0),a>=_s&&a<ys&&o&&r?e.style.display="block":e.style.display="none"}s(Ob,"handleMarketItemFilter");function $u(){let e=document.querySelectorAll("div.RandomTask_randomTask__3B9fA div.RandomTask_name__1hl1b");for(let t of e){if(t.querySelector("span.script_taskMapIndex"))continue;let a=u.api.getOriTextFromElement(t);if(!a.startsWith("Defeat - ")&&!a.startsWith("击败 - "))continue;let n=a.replace("Defeat - ","").replace("击败 - ",""),i=null;u.config.isZHInGameSetting&&(i=(u.api.getOthersFromZhName(n)?u.api.getOthersFromZhName(n):u.api.getActionEnNameFromZhName(n))?.replaceAll("/monsters/","/actions/combat/"));let o=null;for(let l of Object.values(u.state.initData_actionDetailMap))if(l.hrid.includes("/combat/")){if(l.hrid===i||l.name.toLowerCase()===n.toLowerCase()){o=l;break}else if(l.combatZoneInfo.fightInfo.battlesPerBoss===10&&(i?.replaceAll("/actions/combat/","/monsters/")===l.combatZoneInfo.fightInfo.bossSpawns[0].combatMonsterHrid||"/monsters/"+n.toLowerCase().replaceAll(" ","_")===l.combatZoneInfo.fightInfo.bossSpawns[0].combatMonsterHrid)){o=l;break}}let r=o?.category,c=u.state.initData_actionCategoryDetailMap?.[r]?.sortIndex;c&&t.insertAdjacentHTML("beforeend",`<span class="script_taskMapIndex" style="text-align: right; color: ${u.config.SCRIPT_COLOR_MAIN};"> ${u.config.isZH?"图":"Z"}${c}</span>`)}}s($u,"handleTaskCard");function Ou(){let e=document.querySelectorAll("div.MainPanel_subPanelContainer__1i-H9 div.CombatPanel_tabsComponentContainer__GsQlg div.MuiTabs-root.MuiTabs-vertical.css-6x4ics button.MuiButtonBase-root.MuiTab-root.MuiTab-textColorPrimary.css-1q2h7u5 span.MuiBadge-root.TabsComponent_badge__1Du26.css-1rzb3uu"),t=1;for(let a of e)a.querySelector("span.script_mapIndex")||a.insertAdjacentHTML("afterbegin",`<span class="script_mapIndex" style="color: ${u.config.SCRIPT_COLOR_MAIN};">${t++}. </span>`)}s(Ou,"addIndexToMaps"),Object.assign(u.api,{handleBattleSummary:v6,addItemLevels:hs,addMarketFilterButtons:Lu,handleMarketItemFilter:Ob,handleTaskCard:$u,addIndexToMaps:Ou}),Object.defineProperties(u.state,{onlyShowItemsAboveLevel:{enumerable:!0,get(){return _s},set(e){_s=e}},onlyShowItemsBelowLevel:{enumerable:!0,get(){return ys},set(e){ys=e}},onlyShowItemsType:{enumerable:!0,get(){return $r},set(e){$r=e}},onlyShowItemsSkillReq:{enumerable:!0,get(){return Ei},set(e){Ei=e}}}),u.features.register({id:"itemIconLevel",setting:"itemIconLevel",initialize({scope:e}){hs(),e.interval(hs,500),e.add(()=>document.querySelectorAll(".script_itemLevel,.script_key").forEach(t=>t.remove()))}}),u.features.register({id:"showsKeyInfoInIcon",setting:"showsKeyInfoInIcon",dependsOn:["itemIconLevel"],initialize(){return hs(),()=>document.querySelectorAll(".script_key").forEach(e=>e.remove())}}),u.features.register({id:"marketFilter",setting:"marketFilter",initialize({scope:e}){Lu(),e.interval(Lu,500),e.add(()=>document.querySelector("#script_filters")?.remove())}}),u.features.register({id:"taskMapIndex",setting:"taskMapIndex",scope:"character",initialize({scope:e}){$u(),e.interval($u,500),e.add(()=>document.querySelectorAll(".script_taskMapIndex").forEach(t=>t.remove()))}}),u.features.register({id:"mapIndex",setting:"mapIndex",initialize({scope:e}){Ou(),e.interval(Ou,500),e.add(()=>document.querySelectorAll(".script_mapIndex").forEach(t=>t.remove()))}});var x6=[{zh:"插件合集 Q7",en:"Plugin collection Q7",url:"https://js.nainai.eu.org/"},{zh:"利润网 Polokikiki",en:"Profit site Polokikiki",url:"https://polokikiki.github.io/Milkonomy/#/dashboard"},{zh:"战斗模拟 shykai",en:"Combat sim shykai",url:"https://shykai.github.io/MWICombatSimulatorTest/dist/"},{zh:"新战斗模拟 Stella",en:"New combat sim Stella",url:"https://mwisim.org/combat/setup"},{zh:"战斗榜 socko",en:"Combat Tracker socko",url:"https://sockosnewcombattracker.pages.dev/"},{zh:"人才市场 Shiin",en:"Talent market Shiin",url:"https://greasyfork.org/zh-CN/scripts/559347-mwi-talent-market"}];function qu(e,t){let a=document.createElement("div");return a.setAttribute("class","NavigationBar_minorNavigationLink__31K7Y"),a.dataset.mwitoolsExternalLink="true",a.style.color=u.config.SCRIPT_COLOR_MAIN,a.textContent=e,a.addEventListener("click",t),a}s(qu,"createMinorNavigationLink");function k6(){if(!u.settings.get("ThirdPartyLinks"))return;let e=document.querySelector("div.NavigationBar_minorNavigationLinks__dbxh7");if(!e||e.querySelector('[data-mwitools-external-link="true"]'))return;let t=x6.map(n=>qu(u.config.isZH?n.zh:n.en,()=>window.open(n.url,"_blank")));u.config.isZH&&t.push(qu("牛牛手册",()=>{window.open("https://test-ctmd6jnzo6t9.feishu.cn/docx/KG9ddER6Eo2uPoxJFkicsvbEnCe","_blank")})),t.push(qu(u.config.isZH?"插件设置":"Script settings",()=>{let n=document.querySelectorAll(".NavigationBar_navigationLink__3eAHA");n[n.length-1]?.click()}));let a=document.createDocumentFragment();t.forEach(n=>a.append(n)),e.insertBefore(a,e.firstChild)}s(k6,"add3rdPartyLinks");var Or=new Map;function S6(){for(let e of Or.values())e.disconnect();Or.clear()}s(S6,"disconnectActionQueueObservers");function C6(e){if(!u.settings.get("actionQueue"))return;Ru(e);let t=e.querySelector(".QueuedActions_actions__2Lur6");if(!t||Or.has(e))return;let a=new MutationObserver(()=>{if(!u.settings.get("actionQueue")){a.disconnect(),Or.delete(e);return}Ru(e)});Or.set(e,a),a.observe(t,{characterData:!1,subtree:!1,childList:!0})}s(C6,"handleActionQueueMenue");function Ru(e){let t=e.querySelectorAll("div.QueuedActions_action__r3HlD");if(!t.length)return;if(t.length!==u.state.currentActionsHridList.length-1){console.error(u.config.isZH?"[MWITools] 行动队列提示中的行动数量不一致。":"[MWITools] Action count mismatch in the action queue tooltip.");return}let a=0,n=!1,i=0,o=!1;for(let l of u.state.currentActionsHridList){let d=l.actionHrid,m=l.maxCount-l.currentCount,p=m===0||d.includes("/combat/");p&&(o=!0);let b=u.state.initData_actionDetailMap[d];if(!b)continue;let f=b.baseTimeCost/1e9,g=u.api.getTotalEffiPercentage(d),h=u.api.getToolsSpeedBuffByActionHrid(d),_=f/(1+h/100);_/=1+g/100;let y=m*_,w=u.config.isZH?"到 ∞ ":"Complete at ∞ ";if(!o){i+=y;let k=new Date;k.setSeconds(k.getSeconds()+i),w=`${u.config.isZH?"到 ":"Complete at "}${String(k.getHours()).padStart(2,"0")}:${String(k.getMinutes()).padStart(2,"0")}:${String(k.getSeconds()).padStart(2,"0")}`}if(n){let k=`<div class="script_actionTime" style="color: ${u.config.SCRIPT_COLOR_MAIN};">${p?"[ ∞ ] ":`[${u.api.timeReadable(y)}]`} ${w}</div>`,C=t[a]?.querySelector("div"),x=C?.querySelector("div.script_actionTime");x?x.outerHTML=k:C?.insertAdjacentHTML("beforeend",k),a+=1}n=!0}let r=`<div id="script_queueTotalTime" style="color: ${u.config.SCRIPT_COLOR_MAIN};">${u.config.isZH?"总时间:":"Total time: "}${o?"[ ∞ ] ":`[${u.api.timeReadable(i)}]`}</div>`,c=document.querySelector("div#script_queueTotalTime");c?c.outerHTML=r:e.insertAdjacentHTML("afterend",r)}s(Ru,"handleActionQueueMenueCalculateTime");function A6(e){return e?e.getAttribute("script_translatedfrom")||e.textContent:(console.error(u.config.isZH?"[MWITools] 无法读取空元素的文字。":"[MWITools] Cannot read text from a missing element."),"")}s(A6,"getOriTextFromElement"),Object.assign(u.api,{add3rdPartyLinks:k6,disconnectActionQueueObservers:S6,getOriTextFromElement:A6,handleActionQueueMenue:C6,handleActionQueueMenueCalculateTime:Ru});var Tt=Object.freeze({playerLevel:140,houseLevel:8,tool:{hrid:"/items/celestial_enhancer",enhancementLevel:14},top:{hrid:"/items/enhancers_top",enhancementLevel:10},bottoms:{hrid:"/items/enhancers_bottoms",enhancementLevel:10},gloves:{hrid:"/items/enchanted_gloves",enhancementLevel:10},cape:{hrid:"/items/chance_cape_refined",enhancementLevel:5},teas:["/items/ultra_enhancing_tea","/items/blessed_tea"],ultraTeaLevel:8,ultraTeaSpeed:.06,blessedChance:.01,houseSpeedPerLevel:.01,houseSuccessPerLevel:5e-4,baseActionSeconds:12,teaDurationSeconds:300}),Bu=[.5,.45,.45,.4,.4,.4,.35,.35,.35,.35,.3,.3,.3,.3,.3,.3,.3,.3,.3,.3],M6=[0,1,2.1,3.3,4.6,6,7.5,9.1,10.8,12.6,14.5,16.7,19.2,22,25.1,28.5,32.2,36.2,40.5,45.1,50],fn=1e-9;function T6(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}s(T6,"finitePositive");function qb(e,t){if(!e)return t;let a=Array.isArray(e)?e:Object.keys(e).sort((n,i)=>Number(n)-Number(i)).map(n=>e[n]);return a.length?a.map(Number):t}s(qb,"normalizedTable");function E6(e,t){let a=Number(e[t]??e.at(-1));return Number.isFinite(a)?a>1?a/100:a:0}s(E6,"successRateAt");function I6(e,t){let a=e.length,n=e.map((o,r)=>[...o.map(Number),Number(t[r])]);for(let o=0;o<a;o++){let r=o;for(let l=o+1;l<a;l++)Math.abs(n[l][o])>Math.abs(n[r][o])&&(r=l);if(Math.abs(n[r][o])<1e-12)return null;r!==o&&([n[r],n[o]]=[n[o],n[r]]);let c=n[o][o];for(let l=o;l<=a;l++)n[o][l]/=c;for(let l=0;l<a;l++){if(l===o)continue;let d=n[l][o];if(!(Math.abs(d)<1e-15))for(let m=o;m<=a;m++)n[l][m]-=d*n[o][m]}}let i=n.map(o=>o[a]);return i.every(Number.isFinite)?i:null}s(I6,"solveLinearSystem");function qr(e,t,a,n){let i=e?.[a.hrid]?.equipmentDetail,o=Number(i?.noncombatStats?.[n]),r=Number(i?.noncombatEnhancementBonuses?.[n]??0),c=Number(t[a.enhancementLevel]);return!Number.isFinite(o)||!Number.isFinite(c)?null:o+r*c}s(qr,"equipmentStat");function Rb({itemLevel:e,itemDetailMap:t=u.state.initData_itemDetailMap,bonusMultiplierTable:a=u.state.initData_enhancementLevelTotalBonusMultiplierTable}={}){let n=qb(a,M6),i=qr(t,n,Tt.tool,"enhancingSuccess"),o=qr(t,n,Tt.gloves,"enhancingSpeed"),r=qr(t,n,Tt.top,"enhancingSpeed"),c=qr(t,n,Tt.bottoms,"enhancingSpeed"),l=qr(t,n,Tt.cape,"enhancingSpeed"),d=Number(e);if(i===null||r===null||c===null||o===null||l===null||!Number.isFinite(d)||d<=0)return null;let m=Tt.playerLevel+Tt.ultraTeaLevel,b=(m>=d?(m-d)*5e-4:-.5*(1-m/d))+i+Tt.houseLevel*Tt.houseSuccessPerLevel,f=o+r+c+l+Tt.houseLevel*Tt.houseSpeedPerLevel+Tt.ultraTeaSpeed+Math.max(0,m-d)*.01;return{effectiveLevel:m,toolSuccess:i,gloveSpeed:o,topSpeed:r,bottomsSpeed:c,capeSpeed:l,successBonus:b,speedBonus:f,blessedChance:Tt.blessedChance,secondsPerAction:Tt.baseActionSeconds/(1+f)}}s(Rb,"getEnhancementProfileStats");function zu(e,t,a,n,i){n<=0||a>=i||(e[a][t]-=n)}s(zu,"addTransition");function ws({targetLevel:e,protectLevel:t,successRates:a=Bu,successBonus:n,blessedChance:i}){if(e<1)return null;let o=Array.from({length:e},(p,b)=>Array.from({length:e},(f,g)=>b===g?1:0)),r=Array(e).fill(0);r[0]=1;let c=[];for(let p=0;p<e;p++){let b=Math.min(1,E6(a,p)*(1+n)),f=Math.max(0,1-b);c[p]=f,zu(o,p,p+1,b*(1-i),e),zu(o,p,p+2,b*i,e);let g=p>=t?Math.max(0,p-1):0;zu(o,p,g,f,e)}let l=I6(o,r);if(!l||l.some(p=>p<-fn||!Number.isFinite(p)))return null;let d=l.map(p=>Math.abs(p)<fn?0:p),m=d.reduce((p,b,f)=>p+(f>=t?b*c[f]:0),0);return{actionsByLevel:d,totalActions:d.reduce((p,b)=>p+b,0),protectionCount:m}}s(ws,"calculateNormalEnhancementFlow");function N6(e,t){let a=Array(e+1).fill(0),n=Array(e).fill(0);a[e]=1;for(let r=e-1;r>=t;r--){let c=a[r+1];n[r]=c,a[r]+=c,a[r-1]+=c}let i=a[t],o=a[t-1];return{actionsByLevel:n,aCount:i,bCount:o,mirrorCount:i+o-1}}s(N6,"calculateMirrorRequirements");function Bb({targetLevel:e,protectLevel:t,philosopherStartLevel:a,successRates:n=Bu,successBonus:i,blessedChance:o}){if(e<=1||a<1||a>=e)return null;let r=N6(e,a),c=ws({targetLevel:a,protectLevel:t,successRates:n,successBonus:i,blessedChance:o}),l=a>1?ws({targetLevel:a-1,protectLevel:t,successRates:n,successBonus:i,blessedChance:o}):{actionsByLevel:[],totalActions:0,protectionCount:0};if(!c||!l)return null;let d=[...r.actionsByLevel];for(let b=0;b<a;b++)d[b]=r.aCount*(c.actionsByLevel[b]??0)+r.bCount*(l.actionsByLevel[b]??0);let m=r.aCount*c.totalActions+r.bCount*l.totalActions,p=r.aCount*c.protectionCount+r.bCount*l.protectionCount;return{actionsByLevel:d,baseItemCount:r.aCount+r.bCount,mirrorCount:r.mirrorCount,protectionCount:p,totalActions:m+r.mirrorCount,aCount:r.aCount,bCount:r.bCount}}s(Bb,"calculatePhilosopherEnhancementFlow");function Rr(e=[]){return{status:"unavailable",totalCost:null,totalSeconds:null,normalProtectStart:null,expectedProtectionCount:null,expectedNormalProtectionCount:null,expectedPhilosopherMirrorCount:null,philosopherStart:null,aLevel:null,aCount:null,bLevel:null,bCount:null,missingMarketValues:[...new Set(e)]}}s(Rr,"unavailableResult");function H6(e,t,a){return e===t?[]:(a instanceof Map?[...a.values()]:Object.values(a??{})).find(o=>o?.upgradeItemHrid===t&&o?.outputItems?.some(r=>r.itemHrid===e))?.inputItems??null}s(H6,"refinementInputs");function Fu({itemHrid:e,targetLevel:t,itemDetailMap:a=u.state.initData_itemDetailMap,successRateTable:n=u.state.initData_enhancementLevelSuccessRateTable,bonusMultiplierTable:i=u.state.initData_enhancementLevelTotalBonusMultiplierTable,actionDetailMap:o=u.state.initData_actionDetailMap,getFairValue:r=u.api.getFairValue,forcedProtectionItemHrid:c=null,allowPhilosopherMirror:l=!0}={}){let d=Math.max(0,Math.floor(Number(t)||0)),m=e.endsWith("_refined")?e.replace("_refined",""):e,p=a?.[m],b=H6(e,m,o);if(b===null||!p?.enhancementCosts?.length||d<1)return Rr();let f=Rb({itemLevel:p.itemLevel,itemDetailMap:a,bonusMultiplierTable:i});if(!f)return Rr();let g=new Set,h=s((N,q=0)=>{if(N==="/items/coin")return 1;let $=T6(r?.(N,q));return $||g.add(N),$},"price"),_=h(m,0),y=0,w=!_;for(let N of p.enhancementCosts){let q=h(N.itemHrid,0);q||(w=!0),y+=q*Number(N.count||0)}let k=0;for(let N of b){let q=h(N.itemHrid,0);q||(w=!0),k+=q*Number(N.count||0)}let C=h("/items/ultra_enhancing_tea",0),x=h("/items/blessed_tea",0);if((!C||!x)&&(w=!0),w)return Rr([...g]);let T=null,A=s((N,q)=>{N&&q>0&&(!T||q<T.value)&&(T={hrid:N,value:q})},"considerProtection");if(c)A(c,h(c,0));else{A(m,_);for(let N of new Set(p.protectionItemHrids??[]))A(N,h(N,0));A("/items/mirror_of_protection",h("/items/mirror_of_protection",0))}let I=T?.value??0,R=h("/items/philosophers_mirror",0),z=qb(n,Bu),j=f.secondsPerAction/Tt.teaDurationSeconds*C,W=f.secondsPerAction/Tt.teaDurationSeconds*x,B=y+j+W,M=null;for(let N=1;N<=d;N++){let q=ws({targetLevel:d,protectLevel:N,successRates:z,successBonus:f.successBonus,blessedChance:f.blessedChance});if(!q||q.protectionCount>fn&&!I)continue;let $=_+q.totalActions*B+q.protectionCount*I;(!M||$<M.totalCost)&&(M={mode:"normal",totalCost:$,totalActions:q.totalActions,protectionCount:q.protectionCount,mirrorCount:0,protectLevel:N,philosopherStartLevel:null,aCount:0,bCount:0})}if(l&&R>0)for(let N=1;N<d;N++)for(let q=1;q<=N;q++){let $=Bb({targetLevel:d,protectLevel:q,philosopherStartLevel:N,successRates:z,successBonus:f.successBonus,blessedChance:f.blessedChance});if(!$||$.baseItemCount<-fn||$.protectionCount>fn&&!I)continue;let Y=$.baseItemCount*_+$.totalActions*(y+j)+($.totalActions-$.mirrorCount)*W+$.protectionCount*I+$.mirrorCount*R;(!M||Y<M.totalCost)&&(M={mode:"philosopher",totalCost:Y,totalActions:$.totalActions,protectionCount:$.protectionCount,mirrorCount:$.mirrorCount,protectLevel:q,philosopherStartLevel:N,aCount:$.aCount,bCount:$.bCount})}return M?{status:"complete",totalCost:M.totalCost+k,totalSeconds:M.totalActions*f.secondsPerAction,normalProtectStart:M.protectionCount>fn?M.protectLevel:null,expectedProtectionCount:M.mode==="philosopher"?M.mirrorCount:M.protectionCount,expectedNormalProtectionCount:M.protectionCount,expectedPhilosopherMirrorCount:M.mirrorCount,protectionItemHrid:M.protectionCount>fn?T?.hrid??null:null,protectionUnitCost:M.protectionCount>fn?I:0,philosopherStart:M.philosopherStartLevel,aLevel:M.philosopherStartLevel,aCount:M.aCount,bLevel:M.philosopherStartLevel===null?null:M.philosopherStartLevel-1,bCount:M.bCount,missingMarketValues:[...g]}:Rr([...g])}s(Fu,"calculateEnhancementPlan"),Object.assign(u.api,{calculateEnhancementPlan:Fu,calculateNormalEnhancementFlow:ws,calculatePhilosopherEnhancementFlow:Bb,getEnhancementProfileStats:Rb});var vs="mwitools-enhancement-cost-panel",zb="mwitools-enhancement-cost-panel-style",bn=12,Za=8,Ua=null;function Gt(e,t){return u.config.isZH?e:t}s(Gt,"t");function D6(){if(document.getElementById(zb))return;let e=document.createElement("style");e.id=zb,e.textContent=`
    #${vs} { position:fixed; z-index:2147483000; width:min(252px,calc(100vw - 24px)); box-sizing:border-box; overflow:hidden; pointer-events:none; color:var(--color-text-primary,#eef1f6); border:1px solid rgba(255,255,255,.16); border-radius:8px; background:linear-gradient(145deg,rgba(34,38,47,.985),rgba(18,21,27,.985)); box-shadow:0 12px 34px rgba(0,0,0,.44),0 2px 7px rgba(0,0,0,.28); font-family:inherit; font-size:11px; line-height:1.25; backdrop-filter:blur(10px); }
    #${vs} * { box-sizing:border-box; }
    .mwi-enhancement-grid { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; }
    .mwi-enhancement-metric { display:contents; }
    .mwi-enhancement-label,.mwi-enhancement-value { min-height:27px; display:flex; align-items:center; padding:5px 9px; border-bottom:1px solid rgba(255,255,255,.075); }
    .mwi-enhancement-metric:last-child .mwi-enhancement-label,.mwi-enhancement-metric:last-child .mwi-enhancement-value { border-bottom:0; }
    .mwi-enhancement-label { min-width:0; color:var(--color-text-secondary,#aeb5c0); }
    .mwi-enhancement-value { justify-content:flex-end; color:#fff; font-weight:650; font-variant-numeric:tabular-nums; white-space:nowrap; }
    .mwi-enhancement-protection .mwi-enhancement-label { display:none; }
    .mwi-enhancement-protection .mwi-enhancement-value { grid-column:1/-1; justify-content:flex-start; white-space:normal; }
  `,document.head.append(e)}s(D6,"addStyles");function Br(e){return Number.isFinite(Number(e))?u.api.formatExactNumber?.(Number(e))??String(e):""}s(Br,"exactTitle");function Ii(e,t=1){return Number.isFinite(Number(e))?Math.abs(Number(e))>=1e3?u.api.numberFormatter?.(Number(e),t)??String(e):new Intl.NumberFormat(u.config.isZH?"zh-CN":"en-US",{minimumFractionDigits:t,maximumFractionDigits:t}).format(Number(e)):"—"}s(Ii,"compactNumber");function Fb(e){let t=Number(e);if(!Number.isFinite(t))return"—";let a=Math.round(t),n=Math.abs(t-a)<1e-8?0:1;return`${Ii(t,n)} ${Gt("个","pcs")}`}s(Fb,"countWithUnit");function Vn(e,t,a=null,n=""){let i=document.createElement("div");i.className="mwi-enhancement-metric";let o=document.createElement("div");o.className="mwi-enhancement-label",o.textContent=e;let r=document.createElement("div");r.className="mwi-enhancement-value",r.textContent=t;let c=n||Br(a);return c&&(r.title=c),i.append(o,r),i}s(Vn,"metric");function P6(e){let t=Number(e?.expectedNormalProtectionCount),a=Number(e?.expectedPhilosopherMirrorCount);return!Number.isFinite(t)||!Number.isFinite(a)?{text:"—",title:""}:{text:Gt(`普通保护 ${Ii(t,1)} 次,贤者之镜 ${Ii(a,1)} 次`,`Regular protection: ${Ii(t,1)} uses; Philosopher's Mirror: ${Ii(a,1)} uses`),title:Gt(`普通保护:${Br(t)} 次;贤者之镜:${Br(a)} 次`,`Regular protection: ${Br(t)} uses; Philosopher's Mirror: ${Br(a)} uses`)}}s(P6,"protectionUsage");function jb(e,t){let a=t?.status==="complete",n=a?P6(t):{text:"—",title:""},i=a?t.normalProtectStart===null?Gt("不用","None"):`+${t.normalProtectStart}`:"—",o=a?t.philosopherStart===null?Gt("不用","None"):`+${t.philosopherStart}`:"—",r=a&&t.aLevel!==null?Gt(`需要 +${t.aLevel}`,`Need +${t.aLevel}`):Gt("需要","Need"),c=a&&t.bLevel!==null?Gt(`需要 +${t.bLevel}`,`Need +${t.bLevel}`):Gt("需要","Need"),l=document.createElement("div");l.className="mwi-enhancement-grid";let d=Vn("",n.text,null,n.title);d.classList.add("mwi-enhancement-protection"),l.append(Vn(Gt("总成本","Total cost"),a?Ii(t.totalCost,1):"—",t?.totalCost),Vn(Gt("耗时","Time"),a?u.api.timeReadable(t.totalSeconds):"—",t?.totalSeconds),Vn(Gt("开始保护","Protect from"),i),d,Vn(Gt("开始贤者保护","Philosopher's Mirror from"),o),Vn(r,a?Fb(t.aCount):"—",t?.aCount),Vn(c,a?Fb(t.bCount):"—",t?.bCount)),e.replaceChildren(l),e.dataset.status=a?"complete":"unavailable"}s(jb,"renderPanel");function ju(){let e=Ua;if(!e?.anchor?.isConnected||!e.panel?.isConnected)return;let t=e.anchor.getBoundingClientRect(),a=e.panel.getBoundingClientRect(),n=Number(globalThis.innerWidth)||document.documentElement.clientWidth,i=Number(globalThis.innerHeight)||document.documentElement.clientHeight,o=n-t.right-bn,r=t.left-bn,c=i-t.bottom-bn,l=t.top-bn,d="right",m=t.right+Za,p=t.top;o<a.width+Za&&r>=a.width+Za?(d="left",m=t.left-a.width-Za):o<a.width+Za&&r<a.width+Za&&(c>=a.height+Za||c>=l?(d="bottom",m=t.left,p=t.bottom+Za):(d="top",m=t.left,p=t.top-a.height-Za)),m=Math.min(Math.max(bn,m),n-a.width-bn),p=Math.min(Math.max(bn,p),i-a.height-bn),e.panel.dataset.placement=d,e.panel.style.left=`${Math.round(m)}px`,e.panel.style.top=`${Math.round(p)}px`}s(ju,"positionPanel");function pn(){let e=Ua;if(!e){document.getElementById(vs)?.remove();return}e.mutationObserver?.disconnect(),e.resizeObserver?.disconnect(),globalThis.removeEventListener?.("resize",e.position),globalThis.removeEventListener?.("scroll",e.position,!0),e.panel?.remove(),Ua=null}s(pn,"hideEnhancementCostPanel");function xs(e,t=null){if(!e?.isConnected)return pn(),null;if(Ua?.anchor===e&&Ua.panel?.isConnected)return jb(Ua.panel,t),Ua.position(),Ua.panel;pn(),D6();let a=document.createElement("aside");a.id=vs,a.setAttribute("role","status"),a.setAttribute("aria-live","polite"),jb(a,t),e.insertAdjacentElement("afterend",a);let n=s(()=>globalThis.requestAnimationFrame?.(ju)??ju(),"position"),i=new MutationObserver(()=>{e.isConnected||pn()});i.observe(document.body,{childList:!0,subtree:!0});let o=globalThis.ResizeObserver?new globalThis.ResizeObserver(n):null;return o?.observe(e),o?.observe(a),Ua={anchor:e,mutationObserver:i,panel:a,position:n,resizeObserver:o},globalThis.addEventListener?.("resize",n),globalThis.addEventListener?.("scroll",n,!0),n(),a}s(xs,"showEnhancementCostPanel");var L6=ju;Object.assign(u.api,{hideEnhancementCostPanel:pn,positionEnhancementCostPanel:L6,showEnhancementCostPanel:xs});function $6(e,t,a){if(!u.settings.settingsMap.itemTooltip_prices.isTrue)return;e.querySelector('[data-mwitools-enhancement-market="true"]')?.remove();let n=document.createElement("div");n.dataset.mwitoolsEnhancementMarket="true",n.style.color=u.config.SCRIPT_COLOR_TOOLTIP;let i=u.api.getFairValue(t,a),o=u.api.getAskPrice(t,a),r=u.api.getBidPrice(t,a),c=document.createElement("div");c.textContent=`${u.config.isZH?"市场价值: ":"Market value: "}${i>0?u.api.numberFormatter(i):"-"}`;let l=document.createElement("div");l.textContent=`${u.config.isZH?"价格: ":"Price: "}${u.api.numberFormatter(o)} / ${u.api.numberFormatter(r)}`,n.append(c,l),e.append(n)}s($6,"appendMarketRows");function O6(e){let t=!!u.api.isBackEquipment?.(e);return{forcedProtectionItemHrid:t?"/items/mirror_of_protection":null,allowPhilosopherMirror:!t,getFairValue:s((a,n=0)=>u.api.getAssetValue?.(a,n,{forceAcquisitionValue:!0})||u.api.getFairValue(a,n)||0,"getFairValue")}}s(O6,"getTooltipEnhancementPlanOptions");async function q6(e){let t=e?.querySelector(".ItemTooltipText_itemTooltipText__zFq3A"),a=e?.querySelectorAll("div.ItemTooltipText_name__2JAHA span");if(!t||a?.length<2){pn();return}let n=u.api.getOriTextFromElement(a[0]);u.config.isZHInGameSetting&&(n=u.api.getItemEnNameFromZhName(n));let i=Math.max(0,Math.floor(Number(a[1].textContent.replace("+",""))||0)),o=u.state.itemEnNameToHridMap[n];if(!o||!u.state.initData_itemDetailMap?.[o]){pn();return}if(u.settings.settingsMap.enhanceSim.isTrue?xs(e,null):pn(),await u.api.fetchMarketJSON(),!e.isConnected||($6(t,o,i),!u.settings.settingsMap.enhanceSim.isTrue))return;let r=Fu({itemHrid:o,targetLevel:i,...O6(o)});e.isConnected&&xs(e,r)}s(q6,"handleEnhancedItemTooltip"),u.api.handleItemTooltipWithEnhancementLevel=q6;var Wb="MWITools_settings_v2",Vb="MWITools_back_mirror_default_disabled_v2",Wu="mwitools-settings-style",Gb="mwitools-equipment-warning-style",Ni="data-mwitools-settings-tab",zr="data-mwitools-settings-panel";function Zb(){let e=Object.fromEntries(Object.entries(u.settings.settingsMap).map(([t,a])=>[t,!!a.isTrue]));localStorage.setItem(Wb,JSON.stringify({version:2,values:e})),localStorage.setItem("script_settingsMap",JSON.stringify(u.settings.settingsMap))}s(Zb,"persistSettings");function Ub(e,t){let a=u.settings.settingsMap[e];a&&(a.isTrue=!!t)}s(Ub,"applyStoredSetting");function Kb(){u.config.isZH=u.settings.settingsMap.forceMWIToolsDisplayZH.isTrue||u.config.isZHInGameSetting,u.config.SCRIPT_COLOR_MAIN=u.settings.settingsMap.useOrangeAsMainColor.isTrue?"orange":"green",u.config.SCRIPT_COLOR_TOOLTIP=u.settings.settingsMap.useOrangeAsMainColor.isTrue?"#804600":"darkgreen"}s(Kb,"applyVisualSettings");function R6(){let e=!1;try{let t=JSON.parse(localStorage.getItem(Wb)||"null");if(t?.version===2&&t.values){for(let[a,n]of Object.entries(t.values))Ub(a,n);e=!0}}catch(t){console.warn(u.config.isZH?"[MWITools] 无法读取新版设置。":"[MWITools] Could not read v2 settings.",t)}if(!e)try{let t=JSON.parse(localStorage.getItem("script_settingsMap")||"null");for(let a of Object.values(t??{}))a?.id&&Ub(a.id,a.isTrue)}catch(t){console.warn(u.config.isZH?"[MWITools] 无法迁移旧版设置。":"[MWITools] Could not migrate legacy settings.",t)}localStorage.getItem(Vb)||(u.settings.settingsMap.valueBackEquipmentWithProtectionMirror.isTrue=!1,localStorage.setItem(Vb,"1")),Kb(),Zb()}s(R6,"readSettings");function Xb(){if(document.getElementById(Wu))return;let e=document.head??document.documentElement;if(!e)return;let t=document.createElement("style");t.id=Wu,t.textContent=`
    #script_settings { width:100%; margin-top:14px; color:var(--color-text-primary,#eee); }
    [${zr}] { width:100%; box-sizing:border-box; }
    [${Ni}][aria-selected="true"] { color:var(--color-primary,#fff); }
    .mwi-settings-hero { display:flex; justify-content:space-between; gap:14px; align-items:end; margin-bottom:11px; }
    .mwi-settings-title { font-size:1.2rem; font-weight:700; letter-spacing:.01em; }
    .mwi-settings-subtitle { color:var(--color-text-secondary,#aaa); margin-top:3px; font-size:.78rem; line-height:1.35; }
    .mwi-settings-search { width:min(320px,100%); box-sizing:border-box; border:1px solid rgba(255,255,255,.16); border-radius:5px; background:rgba(0,0,0,.2); color:inherit; padding:7px 9px; }
    .mwi-settings-group { margin:0 0 10px; border:1px solid rgba(255,255,255,.12); border-radius:7px; background:rgba(0,0,0,.13); overflow:hidden; }
    .mwi-settings-group-head { padding:10px 13px 8px; border-bottom:1px solid rgba(255,255,255,.08); }
    .mwi-settings-group-title { font-size:1rem; font-weight:700; }
    .mwi-settings-group-summary { color:var(--color-text-secondary,#aaa); font-size:.75rem; margin-top:2px; line-height:1.35; }
    .mwi-settings-grid { display:flex; flex-direction:column; padding:0 10px; }
    .mwi-setting-card { min-width:0; padding:7px 4px; border-bottom:1px solid rgba(255,255,255,.075); transition:background .15s; }
    .mwi-setting-card:last-child { border-bottom:0; }
    .mwi-setting-card:hover { background:rgba(255,255,255,.025); }
    .mwi-setting-card.mwi-setting-child { margin-top:5px; padding:6px 8px; border:1px solid rgba(255,255,255,.075); border-radius:5px; background:rgba(0,0,0,.12); }
    .mwi-setting-card.mwi-setting-child:has(input:disabled) { opacity:.52; }
    .mwi-setting-row { display:grid; min-height:42px; grid-template-columns:minmax(170px,.72fr) minmax(260px,1.5fr) auto minmax(40px,auto); align-items:center; gap:8px 14px; }
    .mwi-setting-copy { display:contents; }
    .mwi-setting-title-line { display:flex; min-width:0; grid-column:1; grid-row:1; align-items:center; gap:7px; text-align:left; }
    .mwi-setting-title { min-width:0; font-size:.84rem; font-weight:650; line-height:1.25; }
    .mwi-setting-summary { overflow:hidden; grid-column:2; grid-row:1; color:var(--color-text-secondary,#aaa); font-size:.71rem; line-height:1.3; text-align:left; text-overflow:ellipsis; white-space:nowrap; }
    .mwi-setting-status { display:inline-flex; flex:0 0 auto; padding:1px 6px; border-radius:999px; font-size:.61rem; color:#aaa; background:rgba(255,255,255,.07); }
    .mwi-setting-status[data-status="active"] { color:#87d7a0; background:rgba(70,170,100,.13); }
    .mwi-setting-status[data-status="failed"] { color:#ff9a90; background:rgba(210,70,60,.14); }
    .mwi-setting-status[data-status="waiting"] { color:#e3c56d; background:rgba(210,170,60,.13); }
    .mwi-setting-toggle { position:relative; width:36px; height:20px; grid-column:4; grid-row:1; justify-self:end; }
    .mwi-setting-toggle input { position:absolute; opacity:0; }
    .mwi-setting-toggle span { position:absolute; inset:0; border-radius:999px; cursor:pointer; background:#555; transition:.16s; }
    .mwi-setting-toggle span::after { content:""; position:absolute; width:16px; height:16px; left:2px; top:2px; border-radius:50%; background:#fff; transition:.16s; }
    .mwi-setting-toggle input:checked + span { background:var(--color-primary,${u.config.SCRIPT_COLOR_MAIN}); }
    .mwi-setting-toggle input:checked + span::after { transform:translateX(16px); }
    .mwi-setting-more { grid-column:3; grid-row:1; margin:0; font-size:.68rem; color:var(--color-text-secondary,#aaa); text-align:left; white-space:nowrap; }
    .mwi-setting-more summary { display:inline-block; cursor:pointer; color:var(--color-primary,${u.config.SCRIPT_COLOR_MAIN}); list-style-position:inside; }
    .mwi-setting-more[open] { grid-column:1 / 4; grid-row:2; margin:0; padding-top:5px; border-top:1px solid rgba(255,255,255,.06); white-space:normal; }
    .mwi-setting-more p { margin:4px 0 1px; line-height:1.4; }
    .mwi-setting-retry { margin-left:8px; border:0; border-radius:4px; padding:2px 6px; cursor:pointer; color:inherit; background:rgba(255,255,255,.1); }
    @media (max-width:700px) { .mwi-settings-hero { align-items:stretch; flex-direction:column; } .mwi-settings-search { width:100%; } .mwi-setting-row { grid-template-columns:minmax(0,1fr) 40px; gap:3px 10px; padding:3px 0; } .mwi-setting-title-line { grid-column:1;grid-row:1; } .mwi-setting-summary { grid-column:1;grid-row:2;white-space:normal; } .mwi-setting-more { grid-column:1;grid-row:3; } .mwi-setting-more[open] { grid-column:1 / 3;grid-row:3; } .mwi-setting-toggle { grid-column:2;grid-row:1 / 4; } }
  `,e.appendChild(t)}s(Xb,"addSettingsStyles");function Hi(e){return e?.[u.config.isZH?"zh":"en"]??""}s(Hi,"localizedText");function B6(e){let t=u.features.getStatus(e);return t.status!=="unregistered"?t:{id:e,status:u.settings.get(e)?"active":"disabled",error:null}}s(B6,"featureStatusForSetting");function z6(e){let t=u.config.isZH?{active:"已启用",disabled:"已关闭",initializing:"正在启动",waiting:"等待游戏数据",failed:"启动失败"}:{active:"Enabled",disabled:"Disabled",initializing:"Starting",waiting:"Waiting for game data",failed:"Failed to start"};return t[e]??t.disabled}s(z6,"statusLabel");function F6(e){return Object.values(u.settings.catalog).filter(t=>{let a=t.parent;for(;a;){if(a===e)return!0;a=u.settings.catalog[a]?.parent}return!1})}s(F6,"getSettingDescendants");function j6(e){let t=e.parent;for(;t;){if(!u.settings.get(t))return!1;t=u.settings.catalog[t]?.parent}return!0}s(j6,"areSettingParentsEnabled");function Jb(e,t={}){let a=u.settings.settingsMap[e.id],n=Object.values(u.settings.catalog).filter(w=>w.parent===e.id),i=F6(e.id),o=document.createElement("article");o.className="mwi-setting-card",t.child&&o.classList.add("mwi-setting-child"),o.dataset.search=[e.title?.zh,e.title?.en,e.summary?.zh,e.summary?.en,...i.flatMap(w=>[w.title?.zh,w.title?.en,w.summary?.zh,w.summary?.en])].filter(Boolean).join(" ").toLowerCase();let r=document.createElement("div");r.className="mwi-setting-row";let c=document.createElement("div");c.className="mwi-setting-copy";let l=document.createElement("div");l.className="mwi-setting-title",l.textContent=Hi(e.title);let d=document.createElement("div");d.className="mwi-setting-summary",d.textContent=Hi(e.summary);let m=document.createElement("span");m.className="mwi-setting-status";let p=s(()=>{let w=B6(e.id);if(m.dataset.status=w.status,m.textContent=z6(w.status),w.error&&(m.title=w.error),w.status==="failed"){let k=document.createElement("button");k.className="mwi-setting-retry",k.type="button",k.textContent=u.config.isZH?"重试":"Retry",k.addEventListener("click",()=>u.features.restart(e.id)),m.appendChild(k)}},"setStatus");p();let b=document.createElement("div");b.className="mwi-setting-title-line",b.append(l,m),c.append(b,d);let f=document.createElement("label");f.className="mwi-setting-toggle";let g=document.createElement("input");g.type="checkbox",g.dataset.settingId=e.id,g.checked=!!a.isTrue,e.parent&&(g.disabled=!j6(e)),g.setAttribute("aria-label",Hi(e.title));let h=document.createElement("span");if(f.append(g,h),e.details||n.length){let w=document.createElement("details");w.className="mwi-setting-more";let k=document.createElement("summary");if(k.textContent=u.config.isZH?n.length?"详细说明与更多设置":"详细说明":n.length?"Details and more settings":"Details",w.append(k),e.details){let C=document.createElement("p");C.textContent=Hi(e.details),w.append(C)}for(let C of n)w.append(Jb(C,{child:!0}));c.append(w)}r.append(c,f),o.append(r),g.addEventListener("change",async()=>{if(await u.settings.set(e.id,g.checked),e.id==="forceMWIToolsDisplayZH"||e.id==="useOrangeAsMainColor"||n.length){Kb(),Yb(document.querySelector("#script_settings"));return}p()});let _=u.features.onStatusChange(w=>{w===e.id&&p()}),y=u.settings.onChange(e.id,w=>{g.checked=!!w,p()});return o._mwitoolsCleanup=()=>{_?.(),y?.()},o}s(Jb,"createSettingCard");function Yb(e){if(!e)return;for(let r of e.querySelectorAll(".mwi-setting-card"))r._mwitoolsCleanup?.();e.replaceChildren();let t=document.createElement("div");t.className="mwi-settings-hero";let a=document.createElement("div"),n=document.createElement("div");n.className="mwi-settings-title",n.textContent="MWITools";let i=document.createElement("div");i.className="mwi-settings-subtitle",i.textContent=u.config.isZH?"所有设置会立即生效。功能数据与公会经验只保存在当前设备。":"Settings apply immediately. Feature data and guild XP stay on this device.",a.append(n,i);let o=document.createElement("input");o.className="mwi-settings-search",o.type="search",o.placeholder=u.config.isZH?"搜索功能或说明":"Search settings",t.append(a,o),e.append(t);for(let[r,c]of Object.entries(u.settings.groups)){let l=Object.values(u.settings.catalog).filter(g=>g.group===r&&!g.parent&&!g.hidden&&u.settings.settingsMap[g.id]);if(!l.length)continue;let d=document.createElement("section");d.className="mwi-settings-group";let m=document.createElement("header");m.className="mwi-settings-group-head";let p=document.createElement("div");p.className="mwi-settings-group-title",p.textContent=Hi(c.title);let b=document.createElement("div");b.className="mwi-settings-group-summary",b.textContent=Hi(c.summary),m.append(p,b);let f=document.createElement("div");f.className="mwi-settings-grid";for(let g of l)f.appendChild(Jb(g));d.append(m,f),e.append(d)}o.addEventListener("input",()=>{let r=o.value.trim().toLowerCase();for(let c of e.querySelectorAll(".mwi-setting-card"))c.hidden=!!r&&!c.dataset.search.includes(r);for(let c of e.querySelectorAll(".mwi-settings-group"))c.hidden=![...c.querySelectorAll(".mwi-setting-card")].some(l=>!l.hidden)})}s(Yb,"renderSettings");function W6(e,t,a){let n=e?.querySelector(`[${Ni}]`),i=t?.querySelector(`[${zr}]`);if(!n||!i)return;n.setAttribute("aria-selected","false"),n.tabIndex=-1,n.classList.remove("Mui-selected"),i.hidden=!0;let o=[...e.querySelectorAll('button[role="tab"]:not([data-mwitools-settings-tab])')];if(a)for(let c of o){let l=c===a;c.setAttribute("aria-selected",String(l)),c.tabIndex=l?0:-1,c.classList.toggle("Mui-selected",l)}for(let c of t.children)c!==i&&(c.hidden=!1);let r=e.querySelector('[class*="MuiTabs-indicator"]');if(r?.dataset.mwitoolsOriginalStyle!=null){let c=r.dataset.mwitoolsOriginalStyle;c?r.setAttribute("style",c):r.removeAttribute("style"),delete r.dataset.mwitoolsOriginalStyle}}s(W6,"restoreNativeSettingsPanels");function Qb(){let e=document.querySelector('[class*="SettingsPanel_settingsPanel"]'),t=e?.querySelector('[role="tablist"]'),a=[...e?.querySelectorAll('[class*="TabPanel_tabPanel"]:not([data-mwitools-settings-panel])')??[]],n=e?.querySelector('[class*="TabsComponent_tabPanelsContainer"]')??a[0]?.parentElement,i=[...t?.querySelectorAll('button[role="tab"]:not([data-mwitools-settings-tab])')??[]];if(!t||!n||!i.length||!a.length)return;let o=t.querySelector(`[${Ni}]`);o||(o=i.at(-1).cloneNode(!0),o.removeAttribute("id"),o.removeAttribute("aria-controls"),o.setAttribute(Ni,""),o.setAttribute("aria-selected","false"),o.tabIndex=-1,o.classList.remove("Mui-selected"),o.textContent="MWITools",t.append(o));let r=n.querySelector(`[${zr}]`);r||(r=document.createElement("div"),r.className=a[0].className,r.setAttribute(zr,""),r.setAttribute("role","tabpanel"),r.hidden=!0,n.append(r));let c=document.querySelector("#script_settings");if(c||(c=document.createElement("div"),c.id="script_settings"),c.parentElement!==r&&r.append(c),c.dataset.mwitoolsVersion!=="3"&&(c.dataset.mwitoolsVersion="3",Yb(c)),!o._mwitoolsActivateSettings){let l=s(()=>{for(let m of i)m.setAttribute("aria-selected","false"),m.tabIndex=-1,m.classList.remove("Mui-selected");for(let m of a)m.hidden=!0;o.setAttribute("aria-selected","true"),o.tabIndex=0,o.classList.add("Mui-selected"),r.hidden=!1;let d=t.querySelector('[class*="MuiTabs-indicator"]');d&&(d.dataset.mwitoolsOriginalStyle==null&&(d.dataset.mwitoolsOriginalStyle=d.getAttribute("style")??""),d.style.left=`${o.offsetLeft}px`,d.style.width=`${o.offsetWidth}px`)},"activate");o.addEventListener("click",l),o._mwitoolsActivateSettings=l}if(!t._mwitoolsRestoreSettings){let l=s(d=>{if(d.target.closest?.(`[${Ni}]`))return;let m=d.target.closest?.('button[role="tab"]');m&&setTimeout(()=>W6(t,n,m))},"restore");t.addEventListener("click",l),t._mwitoolsRestoreSettings=l}}s(Qb,"ensureSettingsPanel");function ep(){let e=u.state.currentActionsHridList?.[0]?.actionHrid;if(!e)return null;let t=u.state.currentEquipmentMap["/item_locations/head"]?.itemHrid==="/items/red_chefs_hat",a=u.state.currentEquipmentMap["/item_locations/off_hand"]?.itemHrid==="/items/eye_watch",n=u.state.currentEquipmentMap["/item_locations/feet"]?.itemHrid==="/items/collectors_boots",i=u.state.currentEquipmentMap["/item_locations/hands"]?.itemHrid==="/items/enchanted_gloves";if(e.includes("/actions/combat/")){if(t||a||n||i)return{code:"skilling-gear-in-combat",text:u.config.isZH?"正在穿着生活装备":"Skilling gear equipped in combat"}}else if(e.includes("/actions/cooking/")||e.includes("/actions/brewing/")){if(!t&&Fr("/items/red_chefs_hat"))return{code:"missing-production-hat",itemHrid:"/items/red_chefs_hat",text:u.config.isZH?"未装备生活帽":"Skilling hat not equipped"}}else if(e.includes("/actions/cheesesmithing/")||e.includes("/actions/crafting/")||e.includes("/actions/tailoring/")){if(!a&&Fr("/items/eye_watch"))return{code:"missing-production-off-hand",itemHrid:"/items/eye_watch",text:u.config.isZH?"未装备生活副手":"Skilling off-hand not equipped"}}else if(e.includes("/actions/milking/")||e.includes("/actions/foraging/")||e.includes("/actions/woodcutting/")){if(!n&&Fr("/items/collectors_boots"))return{code:"missing-production-boots",itemHrid:"/items/collectors_boots",text:u.config.isZH?"未装备生活鞋":"Skilling boots not equipped"}}else if(e.includes("/actions/enhancing")&&!i&&Fr("/items/enchanted_gloves"))return{code:"missing-enhancing-gloves",itemHrid:"/items/enchanted_gloves",text:u.config.isZH?"未装备强化手套":"Enhancing gloves not equipped"};return null}s(ep,"getEquipmentWarning");function V6(){if(document.getElementById(Gb))return;let e=document.createElement("style");e.id=Gb,e.textContent=`
    .mwi-equipment-warning-host { position:relative!important; }
    @keyframes mwi-equipment-warning-pulse { 0%,100% { box-shadow:0 0 0 2px rgba(255,75,75,.38),0 2px 10px rgba(0,0,0,.42); } 50% { box-shadow:0 0 0 4px rgba(255,75,75,.16),0 2px 12px rgba(0,0,0,.5); } }
    #script_item_warning { position:absolute; z-index:7; display:flex; box-sizing:border-box; min-width:28px; max-width:var(--mwi-equipment-warning-space,216px); height:22px; align-items:center; gap:5px; padding:1px 7px; border:2px solid #ff5b5b; outline:1px solid rgba(255,194,194,.72); outline-offset:2px; border-radius:999px; background:rgba(91,14,22,.96); color:#fff4f4; box-shadow:0 0 0 2px rgba(255,75,75,.38),0 2px 10px rgba(0,0,0,.42); text-shadow:0 1px 1px rgba(0,0,0,.9); font:inherit; font-size:.64rem; font-weight:750; line-height:1; white-space:nowrap; overflow:hidden; pointer-events:none; animation:mwi-equipment-warning-pulse 1.8s ease-in-out infinite; }
    .mwi-equipment-warning-icon { flex:0 0 auto; color:#ffb7b7; font-size:.78rem; }
    .mwi-equipment-warning-text { min-width:0; overflow:hidden; text-overflow:ellipsis; }
    @media(prefers-reduced-motion:reduce) { #script_item_warning { animation:none; } }
    @media(max-width:680px) { #script_item_warning { width:28px; max-width:28px; justify-content:center; padding:2px; } .mwi-equipment-warning-text { display:none; } }
  `,(document.head??document.documentElement).appendChild(e)}s(V6,"addEquipmentWarningStyles");function G6(){document.querySelector("#script_item_warning")?.remove(),document.querySelectorAll(".mwi-equipment-warning-host").forEach(e=>e.classList.remove("mwi-equipment-warning-host"))}s(G6,"removeEquipmentWarning");function Z6(e,t,a){let n=t.getBoundingClientRect(),i=a.getBoundingClientRect(),o=Math.max(0,i.left-n.left),r=Math.max(0,i.bottom-n.top+4),c=t.ownerDocument?.defaultView?.innerWidth??0,l=c?Math.max(26,c-n.left-o-12):i.width;e.style.left=`${o}px`,e.style.top=`${r}px`,e.style.setProperty("--mwi-equipment-warning-space",`${Math.min(216,i.width||216,l)}px`)}s(Z6,"positionEquipmentWarning");function U6(){let e=ep(),t=document.querySelector('div[class*="Header_actionInfo"]'),a=t?.querySelector('div[class*="Header_communityBuffs"]');if(!e||!t||!a)return G6(),e;V6(),document.querySelectorAll(".mwi-equipment-warning-host").forEach(i=>{i!==t&&i.classList.remove("mwi-equipment-warning-host")}),t.classList.add("mwi-equipment-warning-host");let n=document.querySelector("#script_item_warning");if(!n){n=document.createElement("div"),n.id="script_item_warning",n.setAttribute("role","status");let i=document.createElement("span");i.className="mwi-equipment-warning-icon",i.textContent="⚠";let o=document.createElement("span");o.className="mwi-equipment-warning-text",n.append(i,o)}return n.parentElement!==t&&t.appendChild(n),n.dataset.code=e.code,n.querySelector(".mwi-equipment-warning-text").textContent=e.text,n.title=e.text,Z6(n,t,a),e}s(U6,"checkEquipment");function Fr(e){let t=null;for(let a of u.state.initData_characterItems)a.itemHrid===e&&a.itemLocationHrid==="/item_locations/inventory"&&(t=a);return!!t}s(Fr,"hasItemHridInInv");function K6(){if(typeof GM_notification>"u"||!GM_notification){console.error(u.config.isZH?"[MWITools] 当前环境不支持系统通知。":"[MWITools] System notifications are unavailable.");return}u.state.currentActionsHridList.length>0||(console.log(u.config.isZH?"[MWITools] 行动队列为空,发送系统通知。":"[MWITools] Action queue is empty; sending a notification."),GM_notification({text:u.config.isZH?"动作队列为空":"Action queue is empty.",title:"MWITools"}))}s(K6,"notificate");var tp=s(()=>{let e=document.querySelector(".MarketplacePanel_marketListings__1GCyQ");e?(console.log(u.config.isZH?"[MWITools] 开始监听市场订单窗口。":"[MWITools] Started observing market order dialogs."),new MutationObserver(t=>{t.forEach(a=>{a.addedNodes.forEach(n=>{n.classList.contains("Modal_modalContainer__3B80m")&&ap(n)})})}).observe(e,{characterData:!1,subtree:!1,childList:!0})):setTimeout(tp,500)},"waitForMarketOrders");function ap(e){let t=u.api.getOriTextFromElement(e.querySelector(".MarketplacePanel_header__yahJo"));if(!t||t.includes(" Now")||t.includes("立即"))return;let a=e.querySelector("span.MarketplacePanel_bestPrice__3bgKp"),n=e.querySelector(".MarketplacePanel_inputContainer__3xmB2 .MarketplacePanel_priceInputs__3iWxy");if(!a||!n){console.error(u.config.isZH?"[MWITools] 市场订单窗口缺少价格输入控件。":"[MWITools] The market order dialog is missing price controls.");return}a.click();let i=s(o=>{let c=[...n.querySelectorAll("button")].find(l=>{let d=`${l.textContent} ${l.getAttribute("aria-label")??""} ${l.title??""}`.trim().toLowerCase();return o==="increase"?d==="+"||d.includes("increase"):d==="-"||d==="−"||d.includes("decrease")});return c?.click(),!!c},"clickAdjustmentButton");u.api.getOriTextFromElement(a.parentElement).toLowerCase().includes("best buy")||a.parentElement.textContent.includes("购买")?i("increase")||console.error(u.config.isZH?"[MWITools] 未找到提高收购价按钮。":"[MWITools] The increase-bid-price button was not found."):(u.api.getOriTextFromElement(a.parentElement).toLowerCase().includes("best sell")||a.parentElement.textContent.includes("出售"))&&(i("decrease")||console.error(u.config.isZH?"[MWITools] 未找到降低出售价按钮。":"[MWITools] The decrease-ask-price button was not found."))}s(ap,"handleMarketNewOrder"),Object.assign(u.api,{persistSettings:Zb,readSettings:R6,getEquipmentWarning:ep,checkEquipment:U6,hasItemHridInInv:Fr,notificate:K6,waitForMarketOrders:tp,handleMarketNewOrder:ap}),u.features.register({id:"settingsUi",scope:"global",initialize({scope:e}){Xb(),Qb(),e.interval(()=>{Xb(),Qb()},500),e.add(()=>{let t=document.querySelector("#script_settings");for(let i of t?.querySelectorAll(".mwi-setting-card")??[])i._mwitoolsCleanup?.();let a=document.querySelector(`[${Ni}]`),n=a?.parentElement;n?._mwitoolsRestoreSettings&&(n.removeEventListener("click",n._mwitoolsRestoreSettings),delete n._mwitoolsRestoreSettings),a?.remove(),document.querySelector(`[${zr}]`)?.remove(),t?.remove(),document.getElementById(Wu)?.remove()})}});var np="https://raw.githubusercontent.com/YangLeda/Userscripts-For-MilkyWayIdle/main/release-manifest.json",X6="https://greasyfork.org/zh-CN/scripts/494467-mwitools",ip="MWITools_important_update_manifest_v1",J6=360*60*1e3,Vu="mwitools-important-update-style",jr="mwitools-important-update-banner";function Gn(e){return typeof e=="string"?e:e?.[u.config.isZH?"zh":"en"]??e?.en??""}s(Gn,"t");function Y6(){return String(globalThis.GM_info?.script?.version??"26.4")}s(Y6,"currentVersion");function Q6(){let e=globalThis.GM_info?.script;return/测试|test/i.test(String(e?.name??""))||/mwitools-test/i.test(String(e?.updateURL??e?.downloadURL??""))}s(Q6,"isTestBuild");function rp(e){return String(e??"").split(/[.-]/).map(t=>Number.parseInt(t,10)).map(t=>Number.isFinite(t)?t:0)}s(rp,"versionParts");function op(e,t){let a=rp(e),n=rp(t);for(let i=0;i<Math.max(a.length,n.length);i+=1){let o=(a[i]??0)-(n[i]??0);if(o)return Math.sign(o)}return 0}s(op,"compareVersions");function sp(e,t=Y6()){return!!(e?.importantVersion&&op(t,e.importantVersion)<0&&localStorage.getItem(`MWITools_update_banner_dismissed_${e.importantVersion}`)!=="true")}s(sp,"shouldShowImportantUpdate");function e7(){try{let e=JSON.parse(localStorage.getItem(ip)||"null");return!e?.manifest||Date.now()-e.savedAt>J6?null:e.manifest}catch{return null}}s(e7,"readCachedManifest");function t7(e){localStorage.setItem(ip,JSON.stringify({savedAt:Date.now(),manifest:e}))}s(t7,"saveCachedManifest");function a7(){let e=typeof GM<"u"&&typeof GM.xmlHttpRequest=="function"?GM.xmlHttpRequest:typeof GM_xmlhttpRequest=="function"?GM_xmlhttpRequest:null;return e?new Promise((t,a)=>{let n=s(i=>{try{if(Number(i?.status)<200||Number(i?.status)>=300){a(new Error(Gn({zh:`更新清单请求失败(HTTP ${i?.status})`,en:`Update manifest request failed (HTTP ${i?.status})`})));return}t(JSON.parse(i.responseText))}catch(o){a(o)}},"finish");try{e({method:"GET",url:np,timeout:5e3,onload:n,onerror:s(()=>a(new Error(Gn({zh:"更新清单请求失败。",en:"Update manifest request failed."}))),"onerror"),ontimeout:s(()=>a(new Error(Gn({zh:"更新清单请求超时。",en:"Update manifest request timed out."}))),"ontimeout")})?.then?.(n).catch(a)}catch(i){a(i)}}):globalThis.fetch(np,{cache:"no-store"}).then(t=>{if(!t.ok)throw new Error(Gn({zh:`更新清单请求失败(HTTP ${t.status})`,en:`Update manifest request failed (HTTP ${t.status})`}));return t.json()})}s(a7,"requestManifest");async function up(){let e=e7();if(e)return e;let t=await a7();if(!t?.importantVersion)throw new Error(Gn({zh:"更新清单格式无效。",en:"Invalid update manifest."}));return t7(t),t}s(up,"getImportantUpdateManifest");function n7(){if(document.getElementById(Vu))return;let e=document.createElement("style");e.id=Vu,e.textContent=`
    #${jr}{position:fixed;left:50%;top:8px;z-index:2147482500;display:flex;box-sizing:border-box;width:min(720px,calc(100vw - 24px));align-items:center;gap:10px;padding:8px 10px;border:1px solid rgba(245,158,11,.62);border-radius:6px;background:rgba(25,28,42,.97);color:var(--color-neutral-100,#eee);box-shadow:0 9px 24px rgba(0,0,0,.42);font:inherit;transform:translateX(-50%)}
    .mwi-update-banner-icon{display:flex;width:28px;height:28px;flex:0 0 auto;align-items:center;justify-content:center;border-radius:5px;background:rgba(245,158,11,.14);color:#f5a623;font-weight:800}
    .mwi-update-banner-copy{min-width:0;flex:1}
    .mwi-update-banner-title{font-size:.78rem;font-weight:700;line-height:1.25}
    .mwi-update-banner-message{margin-top:2px;color:var(--color-text-secondary,#aaa);font-size:.68rem;line-height:1.3}
    .mwi-update-banner-action{flex:0 0 auto;min-height:29px;padding:3px 11px;border:0;border-radius:4px;background:#d98b2b;color:#171717;font-size:.7rem;font-weight:700;cursor:pointer;text-decoration:none}
    .mwi-update-banner-action:hover{background:#f0a13e}
    .mwi-update-banner-close{flex:0 0 auto;width:27px;height:27px;padding:0;border:0;border-radius:4px;background:transparent;color:#9299aa;cursor:pointer}
    .mwi-update-banner-close:hover{background:rgba(255,255,255,.08);color:#fff}
    @media(max-width:600px){#${jr}{align-items:flex-start;gap:7px;padding:7px}.mwi-update-banner-icon{display:none}.mwi-update-banner-action{align-self:center;padding:3px 8px}.mwi-update-banner-message{display:none}}
  `,(document.head??document.documentElement).appendChild(e)}s(n7,"addStyles");function cp(e){if(document.getElementById(jr)?.remove(),!sp(e))return!1;n7();let t=document.createElement("aside");t.id=jr,t.setAttribute("role","status"),t.innerHTML=`
    <span class="mwi-update-banner-icon">↑</span>
    <div class="mwi-update-banner-copy">
      <div class="mwi-update-banner-title"></div>
      <div class="mwi-update-banner-message"></div>
    </div>
    <a class="mwi-update-banner-action" target="_blank" rel="noopener noreferrer"></a>
    <button class="mwi-update-banner-close" aria-label="${u.config.isZH?"关闭":"Dismiss"}">×</button>`,t.querySelector(".mwi-update-banner-title").textContent=Gn(e.title)||(u.config.isZH?"MWITools 有重要更新":"Important MWITools update"),t.querySelector(".mwi-update-banner-message").textContent=Gn(e.message)||(u.config.isZH?`建议更新到 ${e.importantVersion}`:`Update to ${e.importantVersion} is recommended.`);let a=t.querySelector(".mwi-update-banner-action");return a.textContent=u.config.isZH?"前往更新":"Update",a.href=e.url||X6,t.querySelector(".mwi-update-banner-close").addEventListener("click",()=>{localStorage.setItem(`MWITools_update_banner_dismissed_${e.importantVersion}`,"true"),t.remove()}),document.body.appendChild(t),!0}s(cp,"renderImportantUpdateBanner"),u.features.register({id:"importantUpdateBanner",initialize({scope:e}){if(Q6())return;let t=!1;up().then(a=>{t||cp(a)}).catch(a=>{console.info(u.config.isZH?"[MWITools] 暂时无法检查重要更新":"[MWITools] Important update check unavailable",a.message)}),e.add(()=>{t=!0,document.getElementById(jr)?.remove(),document.getElementById(Vu)?.remove()})}}),Object.assign(u.api,{compareVersions:op,shouldShowImportantUpdate:sp,renderImportantUpdateBanner:cp,getImportantUpdateManifest:up});var lp="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAIa0lEQVR42u1YXWhlVxVea+29zzn3L7k3yfyUvtTCtE2nBQthEKZgx74IImptKYhSqlAtIqJQ+1DHgToVOvogfXFQaMGX0rSiUlo7RYgFtX24gmjG/FSdKZmZTCa5uZnc83/OXsuHe25+bybJWH3qhnDhZt+1vv2ttb699gL4aP2PlgCgiCgR0d2/cfWh2RahNbvjN2FXRHAnwx8GuO3fndrRru4HDhEFACALLnyBBI+zcJpl8TlEfKdwIL09+wI3Pq4Q0a4u/u2usld5kBFLYO2fEI+8u2fmRIRkYbKatN9/U3hBJJ8XsfMi2RWJlmd/UuxTO7G8s+0JDQAQLk4/nQcfJGKvitirIsklCZemfz4+Pq6Kw+ONACoAgHBp+qxIW+KVuSTxl7N4ZS6LFqdzkSWJ2jM/BQCQiQm9V5Ai0gW3NPWM8ILErVkOF6ezcHE6ixZnMpEVCVtTT23E0Fu4NbSrV2YPGMde0KZUEmcEEQkBEThui2SruTs8YuJ2+8eloSPf67LygL1RuEVEI2Iet2aecuuDZ5KV1ZyZFREiCACLcKnkSRInl9xhvBPgjhRAoGdzLTlfffVVAgBQhm8z2lTyPEMEQRAGYAvkNRCdQRO3lnKv0XgqWp55HvFEDvAHJdI/LNJsGkTMw2vT33Xrg2eS651chBVhFxwAACJimqZKAG6J2tnh4j/Yj0FCRI5WZm5Hi7MgTKBLoLwRLDYAkAJOVoDT1dwbHtbpSvuHbuPID7ohRLvuFqDZbJqxsbEsWpr5ljc48ELa8XO2ViEibpYzEaUUWLadVPPtg4N3tzYW6hqDiMgiQt7gHResyHtuo46cBpaT5d6GLpNuHcgZ0HGrlTv1+sl4efYkIuYA67mzBm5x5uveQO2FpONbtlYhEW7iGgGExZqBGqLgnwtwtDFldL/QMPGTWRS945YrjSRcZQQgdIc2gQQRlSwv526j8Wy8/D4j4nNdJv+CiGNZ1Jp5wqvVziZ+YNlaIkQEEFjjGAHYMhvP1XkY+VkuT/crOuwnpIjIwfzkMVOrniOBehqFrNwakTvcvWOKcNtoScCG1m00dLJy/Rlv6MiPAACipanHvWrtxTSMrO2Bw/UrCgCAmVm7DpFSUdTpfKZ2y70TPd83BNjTLMQTeXD1H59wquW3UaCWRiFrt0bYA4kEknbAxkuCyli3UddJa/nbjHCtVK2+nAQhs7VIvZzbAJCFWRuDpE0aX1/9XPXWe8/1fO7K4FZ5WL08eX9psPomitTSKGTl1IicOgAI2LgFIBmIgCAiGKNRRMBaBrZWcCO4ojaZmZXWSMbYJAw/Xz149xu9nO2HA3cT2E0gWWppHDEpTWuhBuzmpgiIFIIjsLVYezknyhghoyH1g4cqh4/+9kbgdgW4DeRA5S0QqWRxwqSINubUhi6or1EWFqWNKEdD4vuPVg7d89pu4DbJzI4nQMxFRA/ces8fY9//LBCFxnVJWLjfEXcEp7Rox1AahF/eK7g9MbiVyc7c5Ke8RvUNEvGSKBYi2i1NhLQCp1LGoL38WPXQvb+UZtPgHsDtC+BGkOHC34+bcuV1yXnQ5jluT7i1WwIQkbXrZWnoP1Y+ePSV/YDbU4j7OraQAqAI7NrNCACCiAChSm7GF+2XvdXLk/c7A7UJQhyyWQ47sdcNDyIzI+eZ49Yqvw4Xp76EY2OZNJtmr35xf6GdPm4q3u9QpJbGMRMWlYzbq3lTkTCL0lq061AS+I+WDx4d32uoaa/ggvnJY6biFYIdMxHR1nPuhJGI0OY55mnKTqX6crAw+TCOjWXNPTCJu7XpiCfyYH7ymFurvQXCjTSKt2tgtyuBQqKLJwvC1j1sWbQxQo6GxI8erRwafa1HwL4Z7IFbmZ885g7U3sKN4LaKM4sQETuOQa0UEhEIi2wtF1KENs+B0xzcavmVYGHyYUTMb5STOz0vFSJa/9Jf73Pr9d8TwFASRZaI1EZGeuCQyLpDdZ20lr/DCFdK1eor683CFp3sss2kCMlxJPWDL1YOH/3NnpuFXsvjXzp/n1svv02AI2kUWyRU2681EUSybn1AR+32yfLI6GkAgGhh6nFvoPpiGsfWZjmRItx6Dwozk9JIjrE2ih7yDoy+3q/doj6PaonaU7eZWumcQhpJomgzOCxYEAFAtG6jrqP2yqnyyOjp7rSgaUqHRl8KVv2vOp6nlNHMzLL2eynUEYmszYWzTKly6Vdpa/p4t6vfPGmg7VcvCud4yhmoHYjDMNsU1sKBsAAi5l6joePW8unyyF3PikxoQLSIXZ2rHhp9Kej4X3M8TymlmIsq2uQciWyeW22MsSLPd799RPoCLB4qVkQMonySfV8QSa29RzZcX4CYu0N1HbdWTpcO3HWy+/w8YbGo2Z4YVw+Ovhh0Ok84lco6yC1PJkRUmR8IAH5cOv86hIh86tT6KKRPFV9UKOgU/d0mrejGCXNvuKHT9vXnSgfuOLn+Nt6coesg7/5F2F550qmUuyC5x+SGqHf9qDCxZsfZDCJKd3bysThcnJ6kkncrJGkGAgYQgLsZnLvDDZO222fc4Tu/v9vDHcfGskLnzgZXz0O5MfizJAhtUd2EAMAi1imXKAqCf5dHjswXkeT+DD5SfCp8jrMcvJJnWMSKiNVaoTs8ZNL29TPu0J1Py8TuU4VeP9lsNk3l8NGz8WrnG261olzXJSnsGqM1eC6B8LOIaHe93XrjsfDa+Ucy/+KcRHMi0ZzkwcV2uDT1zM0Pj4r5zOL5r+T+hTkJLoqEH0jmX1jszE9+c1/jvd7Gpdn3BrLOxQcz/8Kn/WvNW/7bGWFPQpZm3xvI2u8/kHX++eDq5ebITdntN/n8MKas/WzcyC7uYdLaOxnfzNDy/2n3o9Vv/QcBmorNJ3wSfAAAAABJRU5ErkJggg==";var dp="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAFRklEQVR42u1Yz28bRRT+3uysncRO69AmIFFQKooETcuh6QEq1DZISJWKKi6JhLjQA/QMEmfHB/4FJESrSkXikBwQpeJAD0lB9AJFVFA4tEK0UJUQqSWJ7dg7O/Nx2LW9dhzHjovEoSON5dXuvPner++9GeDR6G/ItlaRMj0P9feNbtcvAjiOsQlwfhoOIvwPdaL0L6J7GbpnwSKcvHh3KFva+Yp1atDabvxEgiIqpSpLS3e+uiVSRZ4KBXEPz8Wx1i+eXRnR/tDldMY/5MJIAhFNSQhkyyYkoDQQVsKvw+F/Xrv6+uhaPk9V2AKk6hbfsVl4EKHo1MlU1j9UXTGBKRsbFI01JWPDorGmaGxQip8T05SMDcvGmlVjdEof1cXcl0fO/jpcKIjL56n6AkhS8qQam4DKk0o8ydLCiUCJiKeUeEo2TmmZEPEo4gdrJtS+flmn91164cK9TKEgDh1A6i3AKRFxsccCADjw8Xolp6GMhZM2QSISuVMrQAngmPQzACW6umbC1LB/NGd2XZq8ePfktVNSrsV39zEYL5j7mdnxPRi792dF5bKw567zjSIHPzAlYyHiJWNOpBGHKxVg3QBpH7BsxGFNAdKFqeGUNlWz4A34p67cQBmzYCvIthacm6M3I2IXb5tXB9L2XGWFj+8Y8sQ54PRBKMKCUBG42q5glBgElAJWK8CF68DtFSCbikAmzSKitFkzJpXzp6ql4DwK6ek8qArN+dXegiRlFpBjvwU/5R5L7V+5b6i82FgkSDbnq0htIQDAAUh7QDEQfPQ9cWcVyKQA6xKfRr9OeT6cC5buZ26O/zJzIIh4tmFF1Q6ciHAC0BDJrhfhREDnLOkcSca0Em8BAeugG3RTCYEhnzhzWPD0TqAcAF7dvdGHsZ5KiVS2lcUknCgoQCCR7hK5p2EJaeG/2n9PgMACGZ84Mwk8tQMomyhxWjOB2DyL1RYsLpHGTEpL7ND0EP1LuFAJULVAxgfeOSzYsyNKHC+hXN2S/RB1zVoOEW04RvFk2Txr75o2iEFmfeLtSWAsCxibsHjCG33VYhFgyItpYpMME0RuNW4jyEoI7B4EntsFLKwBKa+R2Z0s2DVAY4Ef/gLKRupcBmm4CTEp7xshnhyOQEqLgpbNIdB4J9sHaBlRxo9LwIffAYOacExYMQZby9z9o8D7R3ptNLl9gEoia+zNASeeieIpCSoJNLQRwK1iuZemSnfTj1kCIwPAmwejRGm8kzofJtuqqu0sr1YSH2rDGhIwplUwNyRMjV56OnCQfQJkvGkbkpVNnmWTyGJzIeiYwT01rJ1DefNv2yrAVoGyPYAusb6fY5i0CYNaAirVmai7a7f7QMcWg3Fjve+PZtrRA7cAJD2GATuI1L1aQ/oFRzowLtmEA6BB6NHRZbftJGEH6yUbG+lCkDfgKz/raz/jaz/rp3QGinCfXJmaCqfn6CWb1d4P7p2orKW53vgdnZf21BPp4LNq2X47YJWEWpFVd+vq6cHPQcq8iN2miwX9XqYogVMppabG3RfvvTR0vk2gs/djZ51HN48uJsoXt6AsOvDBugwfW6A+Pg69+DvCsWVwfkZsz0ny4No17h456AsQRn1qoi1vwcskZUibe48IYagUtCjyypSEsyQKeyXsuRaLCOfm6M0cFnP5ZuVybjfeKq76UKp9lWhn2w33NAQ8DV0qWhdQfQMAx5v7jt4ujxhfFM3/gYExmndF5PkgYL0/dd2mv4qKkIjQH1DVUjH49MSzgwu1k+P/8saU7O1+cau7GVlchPewwC0vgyJi8Wg8Go3xL8iPky24WzbFAAAAAElFTkSuQmCC";var mp="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAH0ElEQVR42u1YbYyUVxV+zr3vO9+zszO7C0vFiAhFsOoPTE1J6+7GKNpAgZaZ8tWSYFps/GO1/ig/Om6aGGNU/GVSaJMqLLvMiCU0MdjELktaTUwhUJUCJhiQj7K7M7O7s/P5vvcef7zz7s6O+8GupcSkN5mPzLz3nOc+5zznnnuBT8Y9GgwmTrJIxVnO9EwqzpKTLBhM9xRsEiymW8C9AZN0wByKD685Ga+ePLI5t8dlC2ACmFxWD23O7XkrUf1jKj68pn7ufIYx3wlfuAACAGnLdo8w1y+RzeuPbhmNJNK0n8H0Y4ASaVJHnsg9v0Q0/xIMANwO4II7dz6DFspidzfp32y6vb6No28waU82lP3SicPvXEIaWP+7R1a3V6PnDBKVnBjbsv1Y61vunI8FIAC8spbNvWfI6tmQ+dEST+xnI6pwRQutAQIpMmKe4LJbOvvCjt+3/MJ9diF+xMJEkRTPnoF9cNuHiwOG/5tF29YmvMuDHF4R5NAKD7zLCpatwwh+O7X7dvveM7CTSC7IFy1Utfc9e0bGbq96u1WGHs5VC5qICCAmqpUgzRzzB0XWLvx5qC3YefMAVDeIAScr7xqD/R1sdIN0ZGjlrhYZejhXLlpEQoCIAAgwBIFIkBDZUsFqlsF1LcP5p7tBur9j5pr5kQHs7IRmMEkld9kKmkTNBmPig9k1TsJW0EJjB4OpsxP67udgN5hAzEyLbECAQCRqlohAtaRxKiLIZghALCIQo3t+4Z0TYH8HG/0dbLi7QhJJQSD+9Y6rUZNEs4bNymayy4AuA6x5EoHzhRTbLCFjPdtvtBKI3V2HweTan00LdOdl5T0zunytvuo971s+vuJPAQp8tVAoan+bENHVgFKM4bMAFIFqy3ZCrbVPBkSFy2fzoetd3urKQu4KxJ2WnWkAMjGAAxtu+iNmYJ+HzNKQ9/ore3s/PwwAfZtGXlskI3uyhYLd+kVhtK4FhAHIAOPqSWDsEsHwOQxyzYFmbTd7gkZW53u2Hm/aBQAHv3MtFh2N7YVWoWKg+JOnD7cXa5B4VoCpOMtEmlTvE5l1nzFi75YsoKDLN8qivL9qWpci5eibVtFS0S9Dtq8DVAkgEyhlGDf7CfY4IGSdZQYYDGJSpuGVeU92CyzPsgC8PwgK76fDXuCanevYmoqddn3PFWJiMA5suOmPkv9lH/zPNHl8YQvAuF0CVwFPM2PZRmcqCWDwHJB93zFG0gFF4r/aG+ddEgWEDx4BjNmVQhXV14qhwr6nDrcX6U4YbBy9m6/f7+Pm5yWbTzLriFVRtPghQbE1ABEje5FwawAw/DVrPNUq0WS4GcwSgkkgr6ROlc3S/u1HWz9YUDeTirMM5f9pPHp86WUAz/U+njkV4VivVS0wiMnwA9VxIPt3QHqnB9dInmBoj8cn8kbue4lUrAcA/vCty97x8Eq7MbRzAqxNmJjELKoGQGSQypyHUFWgMkSw8wAZDWhoEi/zZLCYmA0BYsETCn705P2VeTLIBBC/Hr/1YJPZtKRqV8liW6PC37BJQQiQtgjD7zl5JsypxPGMecMggJRSEGR8/ci2oTJrCL8R4JJVurUz3fpX1/eMOeiqqO+x7NdazOhAvUNLASWrACIxpc41gmGu5d0EhY6KnXwkMDN8ZgCmnLQtBZBRI13xY9FTjUqewuA/1jiWLKjbhWr5bxocVcomEgQwQhIywmAnbOwqYIbCWte3UO1XZoYQhLJdGC1aPA4AkiQLSSMk7A/rMcyt4iREauh2IDc0LmW4SfsylGihlldLdkEBJMlNtAb2nLVMvyUwsx3yBIwxkd07Eta9Kj8mom0hlWhbXET39I0EzXSkpFouuJT/duO1FREsvqzYrkWLGpKOZ1kvuwyyx/DSqH9w9c7eT12sD2e9zzmbBWdTdzrgRJrUoZ3Da8Jm6z4CW43dwFSKpvmHp/7IrKyQHXuxb1fmARdcMsliOnBzMvj6k1c/F7baXpAKT0UMf7CigIJdYLepcoowTZyAySWRGJPHYp4sM6w5aAbJYwBjVrkIg3tGZPbnu48uvXzHDLqrORQfWtVUbDsfhf+7YekPZqv5q3k9dsSAOemeqXaqbKBtypndaQy11mwID+V5rC9byl8JCV8gAv8zzZXWc32JzAMEmvbcPGM/KBQIWvOoVboxRoWXxpt5bfxEZGdFV973Cz9pZjVVteyUE67vrh3FM2vlN/ywqXph6/HI9nJT7iujurBvpFr8NzPrGXJmVhUTAH71sQ/uMyPhyu5DSzMAwEkWPWcHH4og+o6CshXbkiCn6LZe3Q5AZklCeQ2vMSKyXRePtZ7uhnM+Phi/FrNR8j+XXnVj3g1rfU70d/QbnQOdKh2HSKRJ9W3Mfb/NaN4/Vi1pzYpJCDnZHNDkClkrgkDY45cZO/di4kTsp6k4y3ga+lQHZNcA2bMpeNYQu0pmMHUNdNkE4kSaVLKj39j2ZvRXOWvkh6Y0KGiEJDMziG33xdC2ZsV+GZRewyNzenSfCy6RJkUg7hogm8GUTCZnVPCCz8UTTe2mwUcCHH5ZQHb4DLNu5wDKygYL9W6J8i8l3mh7e7pm9K5efdQ7TG0eeVAI6iAlP6uZhZD8LzL49OPpyF8an/14LzHv4HIyFU/J/8XHR3LJmIqnZNtgfIqtoUXge8LaJ+P/bfwHrZD7qmvnWGYAAAAASUVORK5CYII=";var fp="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAJZUlEQVR42uVYa4xV1RX+1tr73McM84LOiKJNpWAUbGKCAQH13okoitXUmDNNRW2NdTC0vqrG+gMPx6Qqtr6w2g6mIUZtm7mxTasRBMrcK9OgFWprZIqPplErgYHOOI87c+85e+/VH3fQGRhg0NH+6P5zf5zH/c56fOtbH/B/dQQEAU3mKz/Py8hv97m7cQ4V9ncJWnJ2LNiAM3lwU7ZLcsg5EORLi1KmI6PHu9S6o81r3dHmjXct05HREBkbEBHyxVcQXyEI+HNH0G/3VW4kUh2ZDv3Amj8sjLTJGsRnW5GvibI1EBAJFxn0EZN+M+F0x2n/anjlyZZwEAB88VWODon2JKSY/Hafcy05u/yZoHbPGQdaYy/+ntOYKymGWAeJLQ4mkZgATWClILEDl/G+suqZKXuqn3jpmz/b64uvcqvniL8gmra/sXeN87iBinx3YfHPdyMIGGHoJg5QhAACCLJk28qWUp25303hmXY4hi0ZC1DMBAWBBwWACHAARGIRsiCn2NOerk5ABtw+LmFV54K2pwDg/FdveNadklguVmC7y68vfeHkc0IAEwcoQiCSdr9dPXHH1rVxvVtpjIGUbAwAlNSeSmlI2UGGTURCAyCII1RzktOUUnCRhS0ZQw6Ok5xQ6QRkwP36oneXXLfllA35uF7Nl5IBG+6Z3XPGqc8uvbMIAR1sKn1UcKuJgvVB8vFvbHneTKNlUU/ZsoijpPZUQsMN2t087H6nDOfTqH03tbf+48SUkgzUSM1QPHSqHY4youjKRFXiLGsqQG00BG9q+qrNp2w6AQ7VsKKICRBnxoOhj1hzaOH2UNz5r7W222lqmekZjhkgXZvypOg+0EN8z/T3T/xNriWMxnm+D8C/AWyTQO7LXrbyStHuftWQ+nrcW5L4PyWravQFEgMybISSikAgYO/EAPric45yNvPnFfe5E/Rlcc9QDBCp2qSmPrxQ152+fuOyx/cfpI+m/U2S2zVHsDqstMnqgPy5XdTd2E2UJQtCDkBu4Rvff5JT6gZXtuxKxgFEIDq+Lj5IJUu23Xzu0NTStiiODKxA1yW19Mhzr81/6uoKsEAXmkMLHIWAR2rppsceS759znvNiL26YT1wb1RlT5PYOQAMEUFCEZdl76yeqbOeXfrQ0Wswt2uOBIHwZu/6R40iYFicmuIlqEfy2+evu4bkJA4AhBSaY7NTQEEAyi/Y9Ss33VtuS0WYwRiIBQLwp1ESiECA6UdPcaYjowvNodnW0f0tqdfz3GDZcII1ldBX01NzLYHEz/kctkyAaCsM4Lraf9IYKbPc9kaRGDghp1EpOEiFlQSVRHuNfewOfc2Y8VLIZh0AlNLxSkdOCLBclWA1pNZsuvjhDzMdgc61THAKEAkk4O7GqBfCm1KNUxJebSLl1aW0V5vSui6lvbqU1jVJLzmtWjO8TY+03D4cSMCj5/anNTjC4P6W22Z8UP/xe05JkpiIYu6tO1A7a9PSR3oBqfzx8agbgizZfFedaej7rnPc4IyBjMxkEhLyFLGifTV7Gp9+8fJwaHT9jUlxJpvnQgjXnSwu4ik6ZYtRWU9JJKlHNm66+JGeygwle5xaSQBgy4Vr+gCsPZ5nxqnBLIACHMtZUFT5PhBUpP4EAXXn59DnUkD5QB3tlkI2tONJslEA85Ufha8KAIJTUrJIkO4CQZrauz67niNIAUfp+iBgZGXcyftJkzRlmwQAjLIJiECI2JWd02Xdc5B+vhh9OaJeiGQ8TXgYDzo4MDRIQBCBVQn3BcpfAoXu0m0/njnY29NfuDw8MBJGOSyC3fluAgBtdQQigGApyWy4OBUA/Lldk7prBBIwAGnefuOqvmm9u+Ov4q3zO3+wcNS1Q3kwW/kkyx9WxiNZSmtEKZkNgLob50weQBEKKXTf+eOPvlJS5VVRFHlcr0+wXnwzAMnn8+MBzI+oYfwdVgARIgIgURaANGW7Jq0G/VwLA6B9tUNnIKW0GIlcbB05GjpikxTylSmSNKntdiCOQJQwQxGskksvfPn26hxybrJWypFsiPHMJVSliIgcETE7fnN0NsdGMAwdJOAt5639gIW2qyoNiVzE9d70gZr+q0GQY3HZRDmxkIW7rf2htPHcNXY4Bkg8N2CkOk5tBYBsFm7cWZwZyb2C18aKCQRyw7FISlYt2XxXXSELd6T1cKJn3s5WDQrdG9N334QG72RXdhFXaUaE11/KPvwWgoBDCscHWGguWAjoxPT05+3H8duc1tqVjeFaNaNY39MGCl0mm+fD9tsJnkxHoHeevS6+bMOtc6NaF8TFsgMJsdKUkMSjBJJMdiymQ6Mhfs7n3Jlh5LnkHUorEiYy/WWDBvXtxa+veLDQXDAAwRf/eNJN83a0eoXm0Fzx/K0n9jYN/t54qCIjVlV7nvSYv2Y3NOYgAReax06cw9KVa8lZv91XnQt++aLrdeu9hpSGiJj+knUNdOeinSvaLl77WCJHOYsAnOnI6EACPqyBBBRIwJmOQAOQg5E7MHNoq6nGbDdsjGhiRHBVw1U3hmFo/NzhXEtHKmQ/53NV4xzvndo9Barn+aa3FDsi9uqSCoPyt0RZ311Y8OTGI0msMaS8fn1q29wdK8qJ6F6TcLVuyBhhIFGX1rzX3dK5eN3aIzkOdNQBHobu3JduajQnlTZQDc+Le0sGAFS1p1kYVHKdyunfJgfTr8zsP/2f6y5f8QmP3f7yT6v/Ub1v9nCieEmk42ulhk83QzEkcgYKnKivYtrrHuhc1Hb3yH5jjt/6kIBBoVvS3lpXnCXrqU5dYQbLkNhFQqRUtVasFVx/DHb0ETveD3LDEKQdo1GUzKAaDVseWfZFwGnPY2Gofr6rc1Hbg8fyao7djaO8ksU7b/ih9eQerlKNphhDjI0hcCB45DGTViACRBzECMSIhcAAUJxUWqU0pCi7VL+6tfO8X2xBu69wjBXi2J1YKEilAQL+8KqHXzv9ioXPxdpGApnJVbpepbUGEcEKJHKQ2DoxAmIildSsqj3NiplivKuK+r4Z71W1blz2+Du++KrrzGPvN8dnv41KR6bjlnpXay4QMhc5sWdbkZMhUkdCGhBLjF4Qv6+I/8JWbzj1rcatT18Xlg618SbfYRUhHy18aN0sfzWo7YtL9VSkhOepOF3Wvc8tC/sP+8AvzW0VkC++OpLbOtqNrbion01o0KQa6KsDCgCEALA6lC/Pl/4fnv8C4gvFAbl4eBAAAAAASUVORK5CYII=";var bp="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAFXklEQVR42u1YTWxUVRT+zr33zZuhM/3DYistRVoCihhDMCGEiEVATQiRSKs7JVE3JprgwoXRabeulOjGEBPUmNhuwCAhYJnya9SIxggBKn+1VFpKpy2dedN5997jojPNtDOVUEph0W83d87M/e653/nOeQ+Ywxzm8GCCGYJjULEYFDPogSOXtxbNXwMAdR/IERHswLFHnwwpWsuMobPX4geoKT6U+Y5z42m2M0cE23eoOlocslFXaYIQ8PzApeGU3Fa58fKf2Zjsb8SskWuFJIK90b5oQ0WJbU7zQxgt2aGTzuZ0yMWSAPQejq1XaL5fV1wBikYhiPAKCNatfNUEilc6zBYjXTeswm9PXbd9y6pacCY3i2IWCYqWFlg26AcgYJMACMSGidNsQSwt+/elSDgGRU8gfe37qkXBgN2cSpFOJ1qlSV03JtVrw855ZwjqaMXGc50cnWUNcgyKGqBvHK58urRMnXCVWE2QCiYhnOG9MqR/cbwR+pV9/XqhklUzbSEAQARmgBCDpAbo/sOVLxeFnD1Wo8hxgEHP7GcEPvBMcIkjMPTaZxePtbXBZC3onnhbrvlyK2T2c/xIzc7UiRq+1VFj7E+LeKh94eeFOsdU3YRmyHgZAAaPryyDNFS69uwAAAwfrf40HJTvJJLWug5EIs3vl23o/pijEFiRs3cTLGGiQc8IwSy5WycfXkDG3QU9+hwRCd+4P1jSkbKIfCmZZEgJL+WbHaUber7jGBSehZncMaYC3ZXeOiCBWhU3JlZWzmuSqUWQguDyVfhGAbAwlnuSSds4/4WeU9mCuZN9/reKOQrBDJGrj4zeJDrGCqAPcnVZWK9J+KvSwdr32KnZyUm5ytc6pbUVpwc9f910yU1JkBnEUQhqgSWCJQJzK2QsBkUEJoKhBujhWNW6sOQPR0e1VpHlUsgQCRkkMW8ZhYIsE776pOr53ssXDsCdDrkpbSajDx48VVcfCrnhXm/4PK3t9gDgr9aK8OLKwDZY+QaAZxzB0H4Auv+IlW61ZmbowRh8VuSQfzYahVj6IvzpSokKlfpgR22Jktgt7OhWZuOQCl0a9fGRsH6148q3AlIuEQCEAJKehbZ0ZZ6rFyvHARsGuRaDcdpVtvGfdydPJ3dLUBDBDrTXtJXN5+0Jr96Ss4DU6GmSlIIQMuPAQCLFnhTYn07rL4aLxMmwJ7YHFW+1zDAs9pU0dH3DDAIBU1nIHRHMau7q4aVLijHcGYgs52D124JUmNI3263X/bV13JBi2GtC4Ftj9JfFDf+em7LAALobYvkabAbQAgiBiIQVLMtZqCICG1CgkiMRRV6a9w2M0I7aLV3xbMcAADTCAhBoy/xXI0AEMxNdSuXkkplBnZ18rqg7cLFE/1Hn9R1Ky9BCMdq7lyNBcrwEdtdu6YrzAbj4GT41TSBhcA9AeVNvE8z1H2s2lbi8Nxgy82AAKIHBuPyqdKDrTTwOYAXMeLZmAo0AmsHUkl9MVMicqQX2dGt9xWNV3MRsSzXz8eL1V47d89GsgG6pUG+9drBq+SPzRWX/iBkBgQSEAtsSDUAxTRS+LHC5EpAmsyxzlg1gJsWzBJcUSeqN28vVm3ouTH6yUxMyR7BdB6vriwL0O1sZLA8p0NjJYMzYcZgzZ809m5qUBwBQmWDKyUM2TvF4mAUAH4hISvXG6lYSXfw7e4sFO4nrEIPJas0wGqBJCeOxToM8B2GACaDxvTnnijj/3pjHJ1s71r4MvDTftpMQgXsP1NSVl1PtyIjJWO00oAscv9Aag8Nh0M1b/pXKTX2XCj285wn1vr0SKbA3TTVmTZh4ZwNnCtvMHOYwh9vgP/Xfodt7xGPxAAAAAElFTkSuQmCC";var pp=globalThis.unsafeWindow??globalThis,gn=pp.__MWI_DPS=pp.__MWI_DPS||{};gn.__mwitoolsIntegrated=!0;var Ka="1.0.51",Gu="TabsComponent_tabsContainer__3BDUp",St="#d4af37",dt=(()=>{let e={abilities:"fdd1b4de",skills:"3bb4d936",items:"f58c9476",misc:"6560b17a",avatars:"75a98d25"},t=new Map,a=Number.NEGATIVE_INFINITY,n=5e3;function i(c){let l=String(c||""),d=l.match(/(?:https?:\/\/[^/]+)?(\/static\/media\/(abilities|skills|items|misc|avatars)_sprite\.[^/#]+\.svg)/i);d&&t.set(d[2].toLowerCase(),d[1])}s(i,"remember");function o(c=!0){let l=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();if(!(!c&&(t.size>=Object.keys(e).length||l-a<n))){a=l;try{typeof performance<"u"&&typeof performance.getEntriesByType=="function"&&performance.getEntriesByType("resource").forEach(d=>i(d.name))}catch{}try{typeof document<"u"&&typeof document.querySelectorAll=="function"&&document.querySelectorAll("svg use,img").forEach(d=>i(d.getAttribute&&(d.getAttribute("href")||d.getAttribute("xlink:href")||d.getAttribute("src"))||d.currentSrc||d.src))}catch{}}}s(o,"scan");function r(c,l){return o(!1),(t.get(c)||"/static/media/"+c+"_sprite."+e[c]+".svg")+"#"+String(l||"").split("/").pop()}return s(r,"sprite"),{ability:s(c=>r("abilities",c),"ability"),skill:s(c=>r("skills",c),"skill"),item:s(c=>r("items",c),"item"),misc:s(c=>r("misc",c),"misc"),avatar:s(c=>r("avatars",c),"avatar"),scan:s(()=>o(!0),"scan")}})(),Wr={get attack(){return dt.skill("attack")},get defense(){return dt.skill("defense")},get stamina(){return dt.skill("stamina")}},Ea={get history(){return dt.misc("loot_tracker")},get settings(){return dt.misc("settings")},trend:bp,debug:mp,reset:fp,copy:dp,close:lp},c7=["#C41E3A","#00FF98","#3FC7EB","#C69B6D","#A330C9","#FFF468","#AAD372","#0070DD","#F48CBA"],X=(()=>{let e="kikimeter:settings:v4",t="kikimeter:settings:v3",a=typeof u.config.isZH=="boolean"?u.config.isZH?"zh":"en":/^zh\b/i.test(globalThis.navigator?.language??"")?"zh":"en",n={colors:{},classOverrides:{},classCache:{},weaponCache:{},mainMode:"dps",showHealing:!0,showGraph:!1,autoReset:!0,language:a,panelOpacity:100},i={...n};try{let r=JSON.parse(localStorage.getItem(e)||localStorage.getItem(t)||"{}");r&&typeof r=="object"&&(i={...n,...r})}catch{}function o(){try{localStorage.setItem(e,JSON.stringify(i))}catch{}}return s(o,"save"),{getColor:s(r=>i.colors[r],"getColor"),setColor:s((r,c)=>{i.colors[r]=c,o()},"setColor"),getClassOverride:s(r=>i.classOverrides[r],"getClassOverride"),setClassOverride:s((r,c)=>{c?i.classOverrides[r]=c:delete i.classOverrides[r],o()},"setClassOverride"),getCachedClass:s(r=>i.classCache[r],"getCachedClass"),setCachedClass:s((r,c)=>{c?i.classCache[r]=c:delete i.classCache[r],o()},"setCachedClass"),getCachedWeapon:s(r=>i.weaponCache[r]||"","getCachedWeapon"),setCachedWeapon:s((r,c)=>{c?i.weaponCache[r]=c:delete i.weaponCache[r],o()},"setCachedWeapon"),getShowHealing:s(()=>i.showHealing,"getShowHealing"),setShowHealing:s(r=>{i.showHealing=r,o()},"setShowHealing"),getShowGraph:s(()=>i.showGraph,"getShowGraph"),setShowGraph:s(r=>{i.showGraph=r,o()},"setShowGraph"),getMainMode:s(()=>["dps","hps","taken","debug"].includes(i.mainMode)?i.mainMode:"dps","getMainMode"),setMainMode:s(r=>{i.mainMode=["dps","hps","taken","debug"].includes(r)?r:"dps",o()},"setMainMode"),getAutoReset:s(()=>i.autoReset,"getAutoReset"),setAutoReset:s(r=>{i.autoReset=r,o()},"setAutoReset"),getRecountMode:s(()=>i.recountMode||"dmg","getRecountMode"),setRecountMode:s(r=>{i.recountMode=r,o()},"setRecountMode"),getRecountPos:s(()=>i.recountPos,"getRecountPos"),setRecountPos:s(r=>{i.recountPos=r,o()},"setRecountPos"),getRecountSize:s(()=>i.recountSize,"getRecountSize"),setRecountSize:s(r=>{i.recountSize=r,o()},"setRecountSize"),getPanelLayoutVersion:s(()=>Number(i.panelLayoutVersion)||0,"getPanelLayoutVersion"),setPanelLayoutVersion:s(r=>{i.panelLayoutVersion=Number(r)||0,o()},"setPanelLayoutVersion"),getRecountShowGraph:s(()=>i.recountShowGraph!==!1,"getRecountShowGraph"),setRecountShowGraph:s(r=>{i.recountShowGraph=r,o()},"setRecountShowGraph"),getDebugMode:s(()=>i.debugMode||!1,"getDebugMode"),setDebugMode:s(r=>{i.debugMode=r,o()},"setDebugMode"),getLanguage:s(()=>i.language==="en"?"en":"zh","getLanguage"),setLanguage:s(r=>{i.language=r==="en"?"en":"zh",o()},"setLanguage"),getPanelOpacity:s(()=>Math.max(10,Math.min(100,Number(i.panelOpacity)||100)),"getPanelOpacity"),setPanelOpacity:s(r=>{i.panelOpacity=Math.max(10,Math.min(100,Number(r)||100)),o()},"setPanelOpacity"),getLauncherPos:s(()=>i.launcherPos,"getLauncherPos"),setLauncherPos:s(r=>{i.launcherPos=r&&typeof r=="object"?r:null,o()},"setLauncherPos")}})();function bt(e){let t=Number(e)||0,a=Math.abs(t);return a>=1e6?(t/1e6).toFixed(1)+"M":a>=1e3?(t/1e3).toFixed(1)+"K":Math.round(t).toString()}s(bt,"formatDamage");function mt(e){let t=Number(e)||0;return Math.abs(t)>=1e3?bt(t):t.toFixed(1)}s(mt,"formatRate");function ca(e){let t=Math.floor(e%60),a=Math.floor(e/60)%60,n=Math.floor(e/3600),i=s(o=>String(o).padStart(2,"0"),"p");return n>0?n+":"+i(a)+":"+i(t):a+":"+i(t)}s(ca,"formatDuration");function we(e,t){let a=document.createElement(e);return t&&Object.assign(a.style,t),a}s(we,"el");function Ia(e,t=""){let a=String(e||"");if(a.includes("/static/media/")&&a.includes(".svg#")){let i=document.createElementNS("http://www.w3.org/2000/svg","svg");i.setAttribute("role","img"),i.setAttribute("aria-label",t),i.setAttribute("width","100%"),i.setAttribute("height","100%");let o=document.createElementNS("http://www.w3.org/2000/svg","use");return o.setAttribute("href",a),i.appendChild(o),i}let n=document.createElement("img");return n.src=a,n.alt=t,n}s(Ia,"iconElement");var hn=(()=>{function e(n=new Date){let i=n instanceof Date?n:new Date(n);if(Number.isNaN(i.getTime()))return"";let o=s(r=>String(r).padStart(2,"0"),"pad");return i.getFullYear()+"-"+o(i.getMonth()+1)+"-"+o(i.getDate())}s(e,"dayStamp");function t(n,i,o,r=new Date){let c=String(n&&n.combatKey||""),l=e(r);return i==="trial"?{key:"guild-trial-day-"+o+"-"+l,rawKey:c,day:l}:{key:c,rawKey:c,day:l}}s(t,"resolve");function a(n,i,o,r){return!n||String(n.characterId||"unknown")!==String(r)?!1:n.combatKey===i.key?!0:o==="trial"&&n.type==="trial"&&!n.manualReset&&!String(n.combatKey||"").includes("-manual-")&&e(n.startedAt)===i.day}return s(a,"matches"),{dayStamp:e,resolve:t,matches:a}})();function Zu(e={},t={}){let a=e.battleType,n=t.type;return!a||!n?!0:a===n||a==="combat"&&n==="labyrinth"}s(Zu,"combatEventMatchesSession");function Uu(e){if(!e||typeof e.querySelector!="function")return!1;let t=e.querySelector('[role="tab"][aria-selected="true"]'),a=String(t&&t.textContent||"").replace(/\s+/g,"").toLowerCase();return a.startsWith("试炼")||a.startsWith("試煉")||a.startsWith("trials")||a.startsWith("trial")}s(Uu,"isSelectedTrialTabBar");function Ku(e){if(!e||typeof e.querySelector!="function")return!1;let t=e.querySelector('[role="tab"][aria-selected="true"]'),a=String(t&&t.textContent||"").replace(/\s+/g,"").toLowerCase();if(!(a.startsWith("进行中")||a.startsWith("進行中")||a.startsWith("inprogress")))return!1;let n=e;for(let i=0;n&&i<4;i++,n=n.parentElement){let o=String(n.textContent||"").replace(/\s+/g,"").toLowerCase();if(o.includes("试炼")||o.includes("試煉")||o.includes("trial")||o.includes("公会")||o.includes("公會")||o.includes("guild"))return!0;if(typeof document<"u"&&(n===document.body||n===document.documentElement))break}return!1}s(Ku,"isSelectedGuildProgressTabBar");var qe=(()=>{let e="unknown",t=new EventTarget,a={fire:{get label(){return X.getLanguage()==="en"?"Fire Mage":"火法"},color:"#C41E3A",get icon(){return dt.item("blazing_trident")}},nature:{get label(){return X.getLanguage()==="en"?"Nature Mage":"自然法"},color:"#00FF98",get icon(){return dt.item("blooming_trident")}},water:{get label(){return X.getLanguage()==="en"?"Water Mage":"水法"},color:"#3FC7EB",get icon(){return dt.item("rippling_trident")}},sword:{get label(){return X.getLanguage()==="en"?"Sword":"剑"},color:"#C69B6D",get icon(){return dt.item("regal_sword")}},mace:{get label(){return X.getLanguage()==="en"?"Mace":"锤"},color:"#A330C9",get icon(){return dt.item("chaotic_flail")}},spear:{get label(){return X.getLanguage()==="en"?"Spear":"枪"},color:"#FFF468",get icon(){return dt.item("furious_spear")}},bow:{get label(){return X.getLanguage()==="en"?"Bow":"弓"},color:"#AAD372",get icon(){return dt.item("cursed_bow")}},crossbow:{get label(){return X.getLanguage()==="en"?"Crossbow":"弩"},color:"#0070DD",get icon(){return dt.item("sundering_crossbow")}},shield:{get label(){return X.getLanguage()==="en"?"Shield":"盾"},color:"#F48CBA",get icon(){return dt.item("griffin_bulwark")}},unknown:{get label(){return X.getLanguage()==="en"?"Unknown":"未知"},color:"#7f8c8d",get icon(){return dt.skill("attack")}}},n=new Map,i={},o={blazing_trident:"fire",blooming_trident:"nature",rippling_trident:"water",regal_sword:"sword",chaotic_flail:"mace",furious_spear:"spear",cursed_bow:"bow",sundering_crossbow:"crossbow",griffin_bulwark:"shield"};function r(M){return String(M||"").split("/").pop().toLowerCase()}s(r,"tail");function c(M){return r(M).replace(/_refined$/,"")}s(c,"normalizeWeapon");function l(M,N=0){M=M&&typeof M=="object"?M:{};let $=(Array.isArray(M.combatStyleHrids)?M.combatStyleHrids:M.combatStyleHrid?[M.combatStyleHrid]:[]).map(r)[0]||"",Y=r(M.damageType),re=r(M.primaryTraining),J=Number(M.attackInterval||N||0);if($==="magic"){if(Y==="fire")return"fire";if(Y==="nature")return"nature";if(Y==="water")return"water"}return $==="slash"?"sword":$==="stab"?"spear":$==="smash"?re==="defense"?"shield":"mace":$==="ranged"&&J>0?Math.abs(J-32e8)<=Math.abs(J-36e8)?"bow":"crossbow":e}s(l,"identifyStats");function d(M){let N=String(M||""),q=r(N),$=c(N),Y=[N,q,"/items/"+q,$,"/items/"+$];for(let J of Y){let ne=i instanceof Map?i.get(J):i&&i[J];if(ne&&typeof ne=="object")return ne}return(i instanceof Map?[...i.values()]:Object.values(i||{})).find(J=>{let ne=J&&(J.hrid||J.itemHrid||J.item&&J.item.hrid||J.itemDetail&&J.itemDetail.hrid);return ne&&c(ne)===$})||{}}s(d,"itemDetailFor");function m(M){return M&&(M.equipmentDetail&&M.equipmentDetail.combatStats||M.item&&M.item.equipmentDetail&&M.item.equipmentDetail.combatStats||M.itemDetail&&M.itemDetail.equipmentDetail&&M.itemDetail.equipmentDetail.combatStats||M.combatStats)||null}s(m,"statsFromItemDetail");function p(M){let N=c(M);for(let[q,$]of Object.entries(o))if(N.includes(q))return $;return/(^|_)(crossbow|xbow)(_|$)/.test(N)||N.includes("crossbow")?"crossbow":/(^|_)bow(_|$)/.test(N)||N==="gobo_shooter"?"bow":N.includes("_fire_staff")||N==="infernal_battlestaff"||N==="gobo_boomstick"?"fire":N.includes("_nature_staff")||N==="jackalope_staff"?"nature":N.includes("_water_staff")||N==="frost_staff"?"water":/(^|_)(sword|slasher|dirk)(_|$)/.test(N)?"sword":/(^|_)(mace|flail|bludgeon|smasher)(_|$)/.test(N)?"mace":/(^|_)(spear|stabber)(_|$)/.test(N)?"spear":/(^|_)(bulwark|shield|aegis)(_|$)/.test(N)?"shield":e}s(p,"namedWeaponClass");function b(M){if(!M||typeof M!="object")return"";let N=M instanceof Map?[...M.entries()]:Array.isArray(M)?M.map((Y,re)=>[String(re),Y]):Object.entries(M),q=s((...Y)=>{for(let re of Y){let J=M instanceof Map?M.get(re):M[re];if(J)return J;let ne=N.find(([Ae,L])=>Ae===re||L&&(L.itemLocationHrid===re||L.equipmentTypeHrid===re||L.locationHrid===re));if(ne)return ne[1]}return null},"atSlot"),$=q("/item_locations/main_hand","/equipment_types/main_hand","main_hand","mainHand")||q("/item_locations/two_hand","/equipment_types/two_hand","two_hand","twoHand");return typeof $=="string"?$:$&&($.itemHrid||$.hrid||$.item&&$.item.hrid)||""}s(b,"weaponHridFromWearable");function f(M){if(!M||typeof M!="object")return"";let N=M.weaponHrid||M.mainHandItemHrid||M.twoHandItemHrid||M.combatDetails&&M.combatDetails.weaponHrid;if(N)return N;let q=M.wearableItemMap||M.equipmentMap||M.equippedItems||M.equipment||{},$=b(q);if($)return $;let Y=M.combatDetails&&M.combatDetails.combatStats||M.combatStats||{};return Number(Y.blaze)>0?"/items/blazing_trident":Number(Y.mayhem)>0?"/items/chaotic_flail":Number(Y.pierce)>0?"/items/sundering_crossbow":""}s(f,"weaponHridFromPlayer");function g(M){let N=f(M);if(N){let $=A(N);if($!==e)return $}let q=M&&M.combatDetails&&M.combatDetails.combatStats||M&&M.combatStats||{};return l(q,M&&M.attackInterval)}s(g,"identify");function h(M,N){if(!M)return"";let q=f(N);if(q)return X.setCachedWeapon(M,q),q;let $=N&&N.combatDetails&&N.combatDetails.combatStats||N&&N.combatStats;return $&&["blaze","mayhem","pierce"].some(Y=>Object.prototype.hasOwnProperty.call($,Y))&&X.setCachedWeapon(M,""),""}s(h,"syncWeaponCache");function _(M,N,q="被动战斗数据"){if(!M||!a[N]||N===e)return!1;let $=(n.get(M)||X.getCachedClass(M))!==N;return n.set(M,N),X.getCachedClass(M)!==N&&X.setCachedClass(M,N),$&&t.dispatchEvent(new CustomEvent("change",{detail:{name:M,classId:N,source:q}})),!0}s(_,"setDetected");function y(M){return X.getClassOverride(M)||n.get(M)||X.getCachedClass(M)||e}s(y,"classFor");function w(M){return a[y(M)]||a.unknown}s(w,"get");function k(M,N){X.setClassOverride(M,N==="auto"?null:N)}s(k,"setOverride");function C(M){let N={};return(M||[]).forEach(q=>{let $=q.character&&q.character.name||q.name;h($,q);let Y=$?y($):e,re=Y!==e?Y:g(q);$&&(Y===e&&re!==e&&_($,re),N[$]=re)}),N}s(C,"registerPlayers");function x(M){let N=M&&(M.unit||M.battleUnit||M.combatUnit)||M;if(!N||typeof N!="object")return null;let q=N.character&&N.character.name||N.characterName||N.name||M&&M.characterName||"";h(q,N);let $=q?y(q):e,Y=$!==e?$:g(N);return!q||Y===e?{name:q,classId:Y,updated:!1}:{name:q,classId:Y,updated:$===e&&_(q,Y,"战斗人物属性"),source:"combatDetails.combatStats"}}s(x,"learnBattleUnit");function T(M){M&&typeof M=="object"&&(i=M)}s(T,"cacheItemDetails");function A(M){if(!M)return e;let N=p(M);if(N!==e)return N;let q=d(M),$=m(q);if($){let Y=l($);if(Y!==e)return Y}return e}s(A,"classFromWeapon");function I(M){let N=M&&(M.profile||M.profileSharedData||M.profileData)||M;if(!N||typeof N!="object")return null;let $=(N.sharableCharacter||{}).name||N.characterName||N.name||"",Y=N.wearableItemMap||N.equipmentMap||N.equippedItems||{},re=b(Y);$&&re&&X.setCachedWeapon($,re);let J=A(re);return!$||J===e?{name:$,classId:J,weaponHrid:re,updated:!1,source:"profile_shared.wearableItemMap"}:{name:$,classId:J,weaponHrid:re,updated:_($,J,"手动点击人物装备"),source:"profile_shared.wearableItemMap"}}s(I,"learnProfile");function R(M){let N=String(M||"").toLowerCase();return N==="/abilities/maim"||N==="/abilities/crippling_slash"?"sword":e}s(R,"classFromAbility");function z(M,N){let q=R(N);return!M||q===e?{name:M,classId:q,abilityHrid:N,updated:!1}:X.getClassOverride(M)?{name:M,classId:y(M),abilityHrid:N,updated:!1,source:"手动职业覆盖"}:{name:M,classId:q,abilityHrid:N,updated:_(M,q,"武器专属技能"),source:"abilityHrid"}}s(z,"learnAbility");function j(M){Object.entries(M||{}).forEach(([N,q])=>_(N,q))}s(j,"applyClasses");function W(M){return X.getCachedWeapon(M)}s(W,"getWeapon");function B(){return Object.fromEntries(Array.from(n,([M,N])=>[M,{classId:y(M),detected:N,...w(M)}]))}return s(B,"diagnostics"),{bus:t,definitions:a,identify:g,registerPlayers:C,learnBattleUnit:x,learnProfile:I,learnAbility:z,classFromAbility:R,classFromWeapon:A,cacheItemDetails:T,applyClasses:j,setDetected:_,setOverride:k,classFor:y,get:w,getWeapon:W,diagnostics:B}})(),$t=(()=>{let e="kikimeter:class-debug:v1",a=new EventTarget,n=[];try{let b=JSON.parse(localStorage.getItem(e)||"[]");Array.isArray(b)&&(n=b.slice(0,12))}catch{}function i(b){return String(b||"").split("/").pop().toLowerCase()}s(i,"tail");function o(b){return[["combatDetails.combatStats",b&&b.combatDetails&&b.combatDetails.combatStats],["combatUnit.combatDetails.combatStats",b&&b.combatUnit&&b.combatUnit.combatDetails&&b.combatUnit.combatDetails.combatStats],["character.combatDetails.combatStats",b&&b.character&&b.character.combatDetails&&b.character.combatDetails.combatStats],["combatStats",b&&b.combatStats]].filter(([,f])=>f&&typeof f=="object").map(([f,g])=>({path:f,combatStyleHrids:Array.isArray(g.combatStyleHrids)?g.combatStyleHrids.slice(0,8):g.combatStyleHrids,combatStyleHrid:g.combatStyleHrid,damageType:g.damageType,primaryTraining:g.primaryTraining,attackInterval:g.attackInterval}))}s(o,"candidateStats");function r(b,f){let g=b&&b.character&&b.character.name||b&&b.name||"玩家槽位"+f,h=o(b),_=h[0]||{},y=qe.identify(b);return{index:f,name:g,detectedClass:y,detectedLabel:(qe.definitions[y]||qe.definitions.unknown).label,selectedPath:_.path||"未找到",topLevelKeys:b&&typeof b=="object"?Object.keys(b).sort():[],candidates:h,normalized:{style:i(Array.isArray(_.combatStyleHrids)?_.combatStyleHrids[0]:_.combatStyleHrid),damageType:i(_.damageType),primaryTraining:i(_.primaryTraining),attackInterval:Number(_.attackInterval||b&&b.attackInterval||0)}}}s(r,"summarizePlayer");function c(){try{localStorage.setItem(e,JSON.stringify(n))}catch{}}s(c,"save");function l(b,f){if(b!=="new_battle"&&b!=="new_guild_battle")return;let g=Array.isArray(f&&f.players)?f.players:[];n.unshift({time:new Date().toISOString(),type:b,battleKey:String(f&&(f.battleId||f.guildBattleId||f.combatStartTime||f.combatId)||""),playerCount:g.length,players:g.map(r)}),n=n.slice(0,12),c(),a.dispatchEvent(new Event("change"))}s(l,"record");function d(){n=[],c(),a.dispatchEvent(new Event("change"))}s(d,"clear");function m(){return JSON.parse(JSON.stringify(n))}s(m,"get");function p(){if(X.getLanguage()==="en"){let f=n.map(g=>({...g,players:g.players.map(h=>({...h,detectedLabel:(qe.definitions[h.detectedClass]||qe.definitions.unknown).label}))}));return[`=== MWI DPS Meter | Class Diagnostics | ${Ka} ===`,`Generated at: ${new Date().toLocaleString()}`,"Note: icons represent each class's signature weapon. The data below contains only class-identification fields.",`Recorded events: ${n.length}`,"",JSON.stringify(f,null,2)].join(`
`)}let b=[`=== 银河奶牛DPS统计|职业调试报告|${Ka} ===`,"生成时间:"+new Date().toLocaleString(),"说明:图标为职业代表武器;以下内容仅包含职业识别字段。","记录事件数:"+n.length,""];return n.forEach((f,g)=>{b.push("#"+(g+1)+" "+f.type+"|"+f.time+"|战斗标识 "+(f.battleKey||"无")+"|玩家 "+f.playerCount),f.players.forEach(h=>{b.push("  ["+h.index+"] "+h.name+" → "+h.detectedClass+"("+h.detectedLabel+")|读取路径 "+h.selectedPath),b.push("      规范化:style="+(h.normalized.style||"空")+",damageType="+(h.normalized.damageType||"空")+",primaryTraining="+(h.normalized.primaryTraining||"空")+",attackInterval="+(h.normalized.attackInterval||0)),h.candidates.length?h.candidates.forEach(_=>b.push("      候选 "+_.path+":"+JSON.stringify(_))):b.push("      未找到 combatStats;顶层字段:"+h.topLevelKeys.join(", "))}),b.push("")}),b.join(`
`)}return s(p,"report"),{bus:a,record:l,clear:d,get:m,report:p,size:s(()=>n.length,"size")}})(),ft=(()=>{let e="kikimeter:class-probe:v4",o=new EventTarget,r={},c=null,l=!1,d=0,m=null,p=null,b=null,f=h()||g();function g(){return{schemaVersion:4,startedAt:null,endedAt:null,durationMs:0,stopReason:"",messageCounts:{},roster:{},currentRoster:{trial:{},combat:{}},rosterGeneration:{trial:-1,combat:-1},rosterSignature:{trial:"",combat:""},players:{},messageShapes:{},relatedMessages:{},fullMessages:[],domSnapshots:[],clicks:[],learnedClasses:[]}}s(g,"emptyState");function h(){try{let D=JSON.parse(localStorage.getItem(e)||"null");return D&&D.schemaVersion===4?D:null}catch{return null}}s(h,"load");function _(){try{f.storageNotice="全量消息正文仅保留在当前页面内存中,请在刷新或关闭页面前下载";let D={...f,fullMessages:[]};localStorage.setItem(e,JSON.stringify(D))}catch{}}s(_,"save");function y(D,ee,ue=16){if(ee==null)return;let he=typeof ee=="string"||typeof ee=="number"||typeof ee=="boolean"?ee:JSON.stringify(ee);!D.some(xe=>xe===he)&&D.length<ue&&D.push(he)}s(y,"addUnique");function w(D){return D==null||typeof D=="string"||typeof D=="number"||typeof D=="boolean"?D:Array.isArray(D)?D.slice(0,8).map(w):"[对象]"}s(w,"safeValue");function k(D,ee="",ue="",he=0,xe=new WeakSet){if(D==null||typeof D=="number"||typeof D=="boolean")return D;if(typeof D=="string")return/password|token|authorization|cookie|secret|credential|email/i.test(ue)?"[已脱敏]":/chat|whisper|mail/i.test(ee)&&/message|text|content/i.test(ue)?"[聊天正文已脱敏]":D;if(typeof D!="object")return String(D);if(xe.has(D))return"[循环引用]";if(xe.add(D),Array.isArray(D))return D.map(le=>k(le,ee,ue,he+1,xe));let Q={};return Object.entries(D).forEach(([le,De])=>{Q[le]=k(De,ee,le,he+1,xe)}),Q}s(k,"sanitize");function C(D,ee){let ue="";try{ue=JSON.stringify(k(ee,D))}catch(xe){ue=JSON.stringify({type:D,error:"消息序列化失败:"+String(xe)})}let he=ue.length+D.length+80;d+=he,f.fullMessages.push({offsetMs:f.startedAt?Math.max(0,Date.now()-new Date(f.startedAt).getTime()):0,type:D,payloadText:ue})}s(C,"recordFullMessage");function x(D){if(!l)return;let ee=typeof D=="string"?D:{dataType:Object.prototype.toString.call(D),size:Number(D&&D.size||D&&D.byteLength)||0},ue="__non_json_message__";f.messageCounts[ue]=(f.messageCounts[ue]||0)+1,C(ue,{raw:ee}),o.dispatchEvent(new Event("change"))}s(x,"recordUnparsed");function T(D){if(!D)return null;let ee="";try{ee=String(D.outerHTML||"").slice(0,12e4)}catch{}let ue={};try{Array.from(D.attributes||[]).forEach(he=>{/style/i.test(he.name)||(ue[he.name]=he.value)})}catch{}return{tag:String(D.tagName||""),className:String(D.className||""),attributes:ue,text:String(D.textContent||"").trim().slice(0,3e4),html:ee}}s(T,"elementSnapshot");function A(D){if(!D)return!1;try{let ee=getComputedStyle(D);return ee.display!=="none"&&ee.visibility!=="hidden"&&ee.opacity!=="0"}catch{return!0}}s(A,"isVisible");function I(D){if(!l||f.domSnapshots.length>=36||!document.querySelectorAll)return;let ee=['[role="dialog"]','[class*="BattleUnit"]','[class*="CombatUnitStatsText"]','[class*="Modal_modal"]','[class*="modalContent"]'],ue=[];if(ee.forEach(le=>{try{document.querySelectorAll(le).forEach(De=>{De.closest&&De.closest('[data-kikimeter="true"]')||A(De)&&!ue.includes(De)&&ue.push(De)})}catch{}}),!ue.length)return;let he=ue.slice(0,20).map(T).filter(Boolean),xe=he.map(le=>le.className+"|"+le.text).join(`
`).slice(0,2e5),Q=f.domSnapshots[f.domSnapshots.length-1];Q&&Q.signature===xe||f.domSnapshots.push({offsetMs:Math.max(0,Date.now()-new Date(f.startedAt).getTime()),reason:D,signature:xe,views:he})}s(I,"captureDom");function R(D){l&&(b!==null&&clearTimeout(b),b=setTimeout(()=>{b=null,I(D)},120))}s(R,"scheduleDomCapture");function z(){document.addEventListener&&(m=s(D=>{if(!l)return;let ee=D.target,ue=ee&&ee.closest?ee.closest('[class*="CombatUnit"],[class*="MiniUnit"]'):null;f.clicks.push({offsetMs:Math.max(0,Date.now()-new Date(f.startedAt).getTime()),target:T(ee),unit:T(ue)}),R("点击后页面变化"),setTimeout(()=>I("点击后500毫秒"),500)},"clickHandler"),document.addEventListener("click",m,!0),typeof MutationObserver<"u"&&document.documentElement&&(p=new MutationObserver(()=>R("人物面板DOM变化")),p.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["class","role","aria-hidden"]})))}s(z,"attachInteractionObservers");function j(){m&&document.removeEventListener&&document.removeEventListener("click",m,!0),m=null,p&&p.disconnect(),p=null,b!==null&&clearTimeout(b),b=null}s(j,"detachInteractionObservers");function W(D,ee="",ue=0,he={paths:[],values:{},hrids:[]}){return ue>5||D===null||D===void 0?he:typeof D=="string"?(D.startsWith("/")&&y(he.hrids,D,40),he):(typeof D!="object"||(Array.isArray(D)?D.slice(0,12).map((Q,le)=>[String(le),Q]):Object.entries(D).slice(0,80)).forEach(([Q,le])=>{let De=ee?ee+"."+Q:Q;y(he.paths,De,120),/ability|combat|style|damage|type|training|attack|interval|weapon|equipment|item|hrid|auto/i.test(Q)&&(le===null||typeof le!="object"?(he.values[De]||(he.values[De]=[]),y(he.values[De],w(le))):Array.isArray(le)&&le.every(tt=>tt===null||typeof tt!="object")&&(he.values[De]||(he.values[De]=[]),le.slice(0,12).forEach(tt=>y(he.values[De],w(tt))))),typeof le=="string"&&le.startsWith("/")&&y(he.hrids,le,40),le&&typeof le=="object"&&W(le,De,ue+1,he)}),he)}s(W,"scanRelevant");function B(D,ee){ee.paths.forEach(ue=>y(D.paths,ue,120)),ee.hrids.forEach(ue=>y(D.hrids,ue,40)),Object.entries(ee.values).forEach(([ue,he])=>{D.values[ue]||(D.values[ue]=[]),he.forEach(xe=>y(D.values[ue],xe))})}s(B,"mergeScan");function M(D){D&&D.abilityDetailMap&&typeof D.abilityDetailMap=="object"&&(r=D.abilityDetailMap)}s(M,"cacheClientData");function N(D){return D==="trial"?"试炼":"普通"}s(N,"channelLabel");function q(D,ee){if(!Array.isArray(D)||!D.length)return;let ue=D.map((Q,le)=>({slot:String(le),name:Q.character&&Q.character.name||Q.name||"玩家槽位"+le,player:Q})),he=ue.map(Q=>Q.slot+"="+Q.name).join("|");if(he!==f.rosterSignature[ee]){let Q=Number(f.rosterGeneration[ee]);f.rosterGeneration[ee]=(Number.isFinite(Q)?Q:-1)+1,f.rosterSignature[ee]=he,f.currentRoster[ee]={}}let xe=Math.max(0,Number(f.rosterGeneration[ee])||0);ue.forEach(({slot:Q,name:le,player:De})=>{let tt=ee+":"+xe+":"+Q;f.currentRoster[ee][Q]=tt,f.roster[tt]={channel:ee,generation:xe,slot:Q,name:le,initialClass:qe.identify(De),initialPath:De.combatDetails&&De.combatDetails.combatStats?"combatDetails.combatStats":"未找到"},f.players[tt]&&(f.players[tt].name=le)})}s(q,"registerRoster");function $(){let D=$t.get()[0];if(!D||!Array.isArray(D.players))return;let ee=D.type==="new_guild_battle"?"trial":"combat";q(D.players.map(ue=>({name:ue.name,combatDetails:ue.selectedStats?{combatStats:ue.selectedStats}:void 0})),ee)}s($,"seedRoster");function Y(D,ee){let ue=f.currentRoster[ee]&&f.currentRoster[ee][D]||ee+":unknown:"+D,he=f.roster[ue];return f.players[ue]||(f.players[ue]={key:ue,channel:ee,generation:he?he.generation:-1,slot:D,name:he&&he.name||"玩家槽位"+D,updateCount:0,fieldKeys:[],paths:[],values:{},hrids:[],abilities:[],autoAttackCount:0,mpDropCount:0,mpDropValues:[],lastMP:null,samples:[]}),f.players[ue]}s(Y,"ensurePlayer");function re(D,ee){q(D.players||[],ee)}s(re,"recordRoster");function J(D,ee){let ue=D&&D.pMap&&typeof D.pMap=="object"?D.pMap:{};Object.entries(ue).forEach(([he,xe])=>{if(!xe||typeof xe!="object")return;let Q=Y(he,ee);Q.updateCount++,Object.keys(xe).forEach(qt=>y(Q.fieldKeys,qt,80));let le=W(xe);B(Q,le),le.hrids.filter(qt=>String(qt).startsWith("/abilities/")).forEach(qt=>y(Q.abilities,qt,30)),Object.entries(le.values).forEach(([qt,Kr])=>{/ability.*hrid/i.test(qt)&&Kr.forEach(ma=>typeof ma=="string"&&y(Q.abilities,ma,30))}),(xe.isAutoAtk===!0||xe.isAutoAttack===!0)&&Q.autoAttackCount++;let De=Number(xe.cMP!==void 0?xe.cMP:xe.currentManapoints);Number.isFinite(De)&&(Q.lastMP!==null&&De<Q.lastMP&&(Q.mpDropCount++,y(Q.mpDropValues,Q.lastMP-De,20)),Q.lastMP=De);let tt=JSON.stringify(xe);y(Q.samples,tt,5)})}s(J,"recordPlayerMap");function ne(D,ee){if(!/(battle|combat|ability|equipment|character_stats)/i.test(D))return;let ue=W(ee);f.relatedMessages[D]||(f.relatedMessages[D]={count:0,paths:[],values:{},hrids:[]});let he=f.relatedMessages[D];he.count++,B(he,ue)}s(ne,"recordRelated");function Ae(D,ee){if(D==="init_client_data"&&M(ee),!!l){if(f.messageCounts[D]=(f.messageCounts[D]||0)+1,f.messageShapes[D]||(f.messageShapes[D]=[]),Object.keys(ee||{}).forEach(ue=>y(f.messageShapes[D],ue,80)),C(D,ee),D==="new_guild_battle"&&re(ee,"trial"),D==="new_battle"&&re(ee,"combat"),D==="guild_battle_updated"&&J(ee,"trial"),D==="battle_updated"&&J(ee,"combat"),D==="battle_unit_fetched"||D==="profile_shared"){let ue=D==="profile_shared"?qe.learnProfile(ee):qe.learnBattleUnit(ee);ue&&y(f.learnedClasses,JSON.stringify(ue),80),R("收到 "+D)}ne(D,ee)}}s(Ae,"record");function L(){return l||(f=g(),f.startedAt=new Date().toISOString(),l=!0,d=0,$(),z(),c=setInterval(()=>o.dispatchEvent(new Event("change")),1e3),_(),o.dispatchEvent(new Event("change")),console.info("[KikiMeter] 全量入站消息采集已开始;点击“结束采集”才会停止。")),ye()}s(L,"start");function ie(D="手动停止"){return l&&(l=!1,c!==null&&clearInterval(c),c=null,j(),f.endedAt=new Date().toISOString(),f.durationMs=Math.max(0,new Date(f.endedAt)-new Date(f.startedAt)),f.stopReason=D,_(),o.dispatchEvent(new Event("change")),console.info("[KikiMeter] 全量入站消息采集已结束,共 "+f.fullMessages.length+" 条消息。")),ye()}s(ie,"stop");function Ee(){l&&ie("清空前停止"),f=g(),d=0,_(),o.dispatchEvent(new Event("change"))}s(Ee,"clear");function ye(){let D=l&&f.startedAt?Date.now()-new Date(f.startedAt).getTime():f.durationMs||0;return{active:l,elapsedMs:D,startedAt:f.startedAt,endedAt:f.endedAt,captureChars:d,playerCount:Object.keys(f.players).length,messageCount:Object.values(f.messageCounts).reduce((ee,ue)=>ee+ue,0),fullMessageCount:f.fullMessages.length,domSnapshotCount:f.domSnapshots.length}}s(ye,"status");function Re(D){let ee=r&&r[D];return ee?W(ee):null}s(Re,"abilityEvidence");function Ue(){if(X.getLanguage()==="en"){let Q=JSON.parse(JSON.stringify(f));return Q.storageNotice&&(Q.storageNotice="Full message bodies are kept only in this page's memory. Download them before refreshing or closing the page."),[`=== MWI DPS Meter | Manual Full Incoming-Message Probe | ${Ka} ===`,`Generated at: ${new Date().toLocaleString()}`,`Capture started: ${f.startedAt||"Not started"}`,`Capture ended: ${f.endedAt||(l?"In progress":"None")}`,`Effective capture: ${(ye().elapsedMs/1e3).toFixed(1)} seconds`,"Network policy: this probe does not call fetch, XHR, or WebSocket.send. It only reads data the game already received.","Scope: all incoming game WebSocket messages, user-selected targets, and character-panel DOM between start and stop. Chat bodies and credential fields are redacted.",`Messages: ${f.fullMessages.length} | Message bodies: ${(d/1024/1024).toFixed(2)} MB | DOM snapshots: ${f.domSnapshots.length}`,"",JSON.stringify(Q,null,2),"","--- Initial-message class report ---",$t.report()].join(`
`)}let D=[`=== 银河奶牛DPS统计|手动全量入站消息探针|${Ka} ===`,"生成时间:"+new Date().toLocaleString(),"采样开始:"+(f.startedAt||"未开始"),"采样结束:"+(f.endedAt||(l?"进行中":"无")),"有效采样:"+(ye().elapsedMs/1e3).toFixed(1)+" 秒|"+(f.stopReason||"尚未完成"),"网络原则:本探针没有调用 fetch、XHR 或 WebSocket.send,只被动读取游戏原本收到的数据。","采集范围:从点击开始到点击结束期间的全部游戏 WebSocket 入站消息、用户点击目标、人物面板 DOM;聊天正文及凭证类字段已脱敏。","完整消息:"+f.fullMessages.length+" 条|消息正文:"+(d/1024/1024).toFixed(2)+" MB|DOM快照:"+f.domSnapshots.length+" 份","","消息计数:"+JSON.stringify(f.messageCounts),"消息顶层字段:"+JSON.stringify(f.messageShapes),""];f.storageNotice&&D.push("存储提示:"+f.storageNotice,""),f.learnedClasses.length&&D.push("人物点击即时职业识别:"+f.learnedClasses.join(" | "),"");let ee=Object.values(f.roster),ue=new Map;ee.forEach(Q=>ue.set(Q.channel+"|"+Q.name,Q));let he=[...ue.values()],xe=he.filter(Q=>Q.initialClass&&Q.initialClass!=="unknown").length;return D.push("名册人数:"+he.length+"|初始化可识别:"+xe+"|初始化无职业字段:"+Math.max(0,he.length-xe),""),Object.values(f.players).sort((Q,le)=>Q.channel.localeCompare(le.channel)||Q.generation-le.generation||Number(Q.slot)-Number(le.slot)).forEach(Q=>{let le=Q.generation>=0?"第"+(Q.generation+1)+"阵容":"未知阵容";D.push("["+N(Q.channel)+" "+le+" slot "+Q.slot+"] "+Q.name+"|更新 "+Q.updateCount+"|MP下降 "+Q.mpDropCount+"|自动攻击 "+Q.autoAttackCount),D.push("  pMap字段:"+(Q.fieldKeys.join(", ")||"无")),D.push("  技能:"+(Q.abilities.join(", ")||"未出现")),D.push("  MP消耗:"+(Q.mpDropValues.join(", ")||"未出现")),D.push("  Hrid:"+(Q.hrids.join(", ")||"无")),D.push("  相关值:"+JSON.stringify(Q.values)),D.push("  原始样本:"+(Q.samples.join(" || ")||"无")),Q.abilities.forEach(De=>{let tt=Re(De);D.push("  技能定义 "+De+":"+(tt?JSON.stringify({values:tt.values,hrids:tt.hrids}):"客户端能力表中未找到"))}),D.push("")}),D.push("其他相关消息摘要:"+JSON.stringify(f.relatedMessages)),D.push("","--- 用户点击记录 ---"),f.clicks.length||D.push("采样期间没有捕获到页面点击。"),f.clicks.forEach((Q,le)=>D.push("#"+(le+1)+" +"+Q.offsetMs+`ms
`+JSON.stringify(Q))),D.push("","--- 人物面板 DOM 快照 ---"),f.domSnapshots.length||D.push("没有捕获到可见的人物面板;如需分析人物详情,请在采集期间点开战斗中的人物。"),f.domSnapshots.forEach((Q,le)=>{let De={...Q};delete De.signature,D.push("#"+(le+1)+" +"+Q.offsetMs+"ms|"+Q.reason+`
`+JSON.stringify(De))}),D.push("","--- 全部入站消息(按接收顺序) ---"),f.fullMessages.length||D.push("没有记录到入站消息。"),f.fullMessages.forEach((Q,le)=>{D.push("#"+(le+1)+" +"+Q.offsetMs+"ms|"+Q.type+`
`+Q.payloadText)}),D.push("","--- 初始化消息职业报告 ---",$t.report()),D.join(`
`)}s(Ue,"report");function Ge(){if(!f.startedAt)return console.warn("[KikiMeter] 尚未开始全量消息采集,已取消空报告下载。"),null;if(l)return console.warn("[KikiMeter] 请先点击“结束采集”,再下载全量 MSG。"),null;let D=new Date().toISOString().replace(/[:.]/g,"-"),ee=new Blob(["\uFEFF"+Ue()],{type:"text/plain;charset=utf-8"}),ue=URL.createObjectURL(ee),he=Object.assign(document.createElement("a"),{href:ue,download:"mwi-full-msg-capture-"+D+".txt"});return document.body.appendChild(he),he.click(),he.remove(),URL.revokeObjectURL(ue),he.download}return s(Ge,"download"),{bus:o,record:Ae,recordUnparsed:x,start:L,stop:ie,clear:Ee,status:ye,report:Ue,download:Ge,get:s(()=>JSON.parse(JSON.stringify(f)),"get")}})();function Xu(){if(document.getElementById("kikimeter-zh-theme"))return;let e=document.createElement("style");e.id="kikimeter-zh-theme",e.textContent=`[data-kikimeter="true"]{font-family:'Microsoft YaHei','微软雅黑','Noto Sans SC',sans-serif!important}`,(document.head||document.documentElement).appendChild(e)}s(Xu,"installThemeFont");var pt=(()=>{let e=s(()=>dt.skill("attack"),"combatIcon"),t={auto:["普通攻击","Auto Attack"],reflect:["反伤","Reflection"],dot:["持续伤害","Damage Over Time"],unknown:["未识别来源","Unknown Source"],legacy:["旧版本未记录来源","Legacy Untracked"]},a={"/items/blazing_trident":["炽焰三叉戟特效","Blazing Trident Effect"],"/items/blazing_trident_refined":["炽焰三叉戟★特效","Blazing Trident ★ Effect"],"/items/chaotic_flail":["混沌连枷特效","Chaotic Flail Effect"],"/items/chaotic_flail_refined":["混沌连枷★特效","Chaotic Flail ★ Effect"],"/items/sundering_crossbow":["裂空弩特效","Sundering Crossbow Effect"],"/items/sundering_crossbow_refined":["裂空弩★特效","Sundering Crossbow ★ Effect"]},n=new Set(["/abilities/aqua_aura","/abilities/berserk","/abilities/critical_aura","/abilities/elemental_affinity","/abilities/elusiveness","/abilities/fierce_aura","/abilities/flame_aura","/abilities/frenzy","/abilities/guardian_aura","/abilities/heal","/abilities/insanity","/abilities/invincible","/abilities/minor_heal","/abilities/mystic_aura","/abilities/precision","/abilities/provoke","/abilities/quick_aid","/abilities/rejuvenate","/abilities/revive","/abilities/speed_aura","/abilities/sylvan_aura","/abilities/taunt","/abilities/toughness","/abilities/vampirism"]);function i(f){let g=String(f||"").trim();return!g||g==="idle"?"unknown":g}s(i,"normalize");function o(f){let g=String(f||"").slice(9).split("|"),h=s(_=>{try{return decodeURIComponent(_||"")}catch{return _||""}},"decode");return{weapon:h(g[0]),action:h(g[1])}}s(o,"decodeCombined");function r(f){return i(f).startsWith("combined:")}s(r,"isCombined");function c(f){return n.has(i(f))}s(c,"isSupport");function l(f){let g=u.state.initData_abilityDetailMap,h=g instanceof Map?g.get(f):g?.[f];return String(h?.name||"").trim()}s(l,"clientAbilityName");function d(f,g){return g?l(f)||(f==="/abilities/natures_veil"?"Nature's Veil":"")||f.split("/").pop().replace(/_/g," ").replace(/\b\w/g,h=>h.toUpperCase()):u.data.ZHOthersDic?.[f]||l(f)||f.split("/").pop().replace(/_/g," ").replace(/\b\w/g,h=>h.toUpperCase())}s(d,"abilityLabel");function m(f,g=""){let h=i(f);if(h.startsWith("combined:")){let{weapon:_,action:y}=o(h);return c(y)?i(_):i(y)}if(c(h)){let _=String(qe.getWeapon(g)||"");if(_.includes("blazing_trident"))return _}return h}s(m,"canonical");function p(f){let g=i(f),h=X.getLanguage()==="en";if(g.startsWith("/abilities/"))return d(g,h);if(t[g])return t[g][h?1:0];if(g.startsWith("dot:")){let y=g.slice(4),w=y.startsWith("/abilities/")?d(y,h):t[y]?.[h?1:0]||y.split("/").pop().replace(/_/g," ").replace(/\b\w/g,k=>k.toUpperCase());return h?"Damage Over Time ("+w+")":"持续伤害("+w+")"}if(g.startsWith("combined:")){let{weapon:y,action:w}=o(g),k=p(y);return p(w)+"("+(h?"includes ":"含")+(h?k:k.startsWith("武器特效:")?k.slice(5)+"特效":k)+")"}if(g.startsWith("/items/")){let y=u.state.initData_itemDetailMap,w=y instanceof Map?y.get(g):y?.[g],k=String(w?.name||"").trim()||a[g]?.[1]||g.split("/").pop().replace(/_/g," ").replace(/\b\w/g,x=>x.toUpperCase()),C=u.data.ZHItemNames?.[g]||a[g]?.[0]||k;return h?k+" Effect":"武器特效:"+C}return g.split("/").pop().replace(/_/g," ").replace(/\b\w/g,y=>y.toUpperCase())||t.unknown[h?1:0]}s(p,"label");function b(f,g=""){let h=i(f);if(h.startsWith("dot:")){let _=h.slice(4);return _.startsWith("/abilities/")?dt.ability(_):e()}if(h.startsWith("combined:")){let{action:_}=o(h);return _.startsWith("/abilities/")?dt.ability(_):e()}if(h.startsWith("/abilities/"))return dt.ability(h);if(h.startsWith("/items/")){let _=qe.classFromWeapon(h),y=qe.definitions[_];if(y&&y.icon)return y.icon}return h.startsWith("weapon:")&&qe.get(g).icon||e()}return s(b,"icon"),{normalize:i,canonical:m,isCombined:r,isSupport:c,label:p,icon:b}})(),_n=(()=>{function e(o,r,c){return"taken:"+[o||"",r||"",pt.normalize(c)].map(encodeURIComponent).join("|")}s(e,"encode");function t(o){let r=String(o||"");if(!r.startsWith("taken:"))return{monsterName:"",monsterHrid:"",ability:"unknown"};let c=r.slice(6).split("|").map(l=>{try{return decodeURIComponent(l)}catch{return l}});return{monsterName:c[0]||"",monsterHrid:c[1]||"",ability:c[2]||"unknown"}}s(t,"decode");function a(o){if(X.getLanguage()!=="en"){let c=u.data.ZHOthersDic?.[o.monsterHrid];if(c)return c}if(o.monsterName)return o.monsterName;let r=String(o.monsterHrid||"").split("/").pop().replace(/_/g," ");return r?r.replace(/\b\w/g,c=>c.toUpperCase()):X.getLanguage()==="en"?"Unknown Monster":"未知怪物"}s(a,"monsterLabel");function n(o){let r=t(o);return a(r)+" · "+pt.label(r.ability)}s(n,"label");function i(o){return pt.icon(t(o).ability)}return s(i,"icon"),{encode:e,decode:t,label:n,icon:i}})();var de=(()=>{let e=performance.now(),t=0,a=0,n=null,i={},o=[],r=Date.now(),c="开始战斗",l={teamDamage:0,damage:{},sources:{},healing:{},taken:{},takenSources:{},kills:{}},d=null,m=new Map,p=new Map,b=new Map,f=new Map,g=new Map,h=new Map,_=150,y=2e3,w=new Array(_).fill(0),k=new Array(_).fill(!1),C=0,x=performance.now(),T=!1,A=1900,I=[0],R=[!1],z=performance.now(),j=s(L=>Object.fromEntries(L),"mapObject"),W=s((L,ie)=>{L.clear(),Object.entries(ie||{}).forEach(([Ee,ye])=>L.set(Ee,Number(ye)||0))},"restoreMap"),B=s(L=>Object.fromEntries(Array.from(L,([ie,Ee])=>[ie,Object.fromEntries(Ee)])),"nestedMapObject"),M=s((L,ie)=>{L.clear(),Object.entries(ie||{}).forEach(([Ee,ye])=>{let Re=new Map;Object.entries(ye||{}).forEach(([Ue,Ge])=>Re.set(Ue,Number(Ge)||0)),L.set(Ee,Re)})},"restoreNestedMap"),N=s((L,ie={})=>Object.fromEntries(Array.from(L,([Ee,ye])=>{let Re=ie[Ee]||{},Ue=Object.fromEntries(Array.from(ye,([Ge,D])=>[Ge,D-(Number(Re[Ge])||0)]).filter(([,Ge])=>Ge!==0));return[Ee,Ue]}).filter(([,Ee])=>Object.keys(Ee).length)),"nestedDelta"),q=s((L,ie)=>Object.fromEntries(Array.from(L,([Ee,ye])=>[Ee,ye-(ie[Ee]||0)]).filter(([,Ee])=>Ee!==0)),"mapDelta");function $(){return n!==null?n:t+(performance.now()-e)/1e3}s($,"elapsed");function Y(L=Date.now()){if(r===null)return null;let ie=Math.max(0,L-r);return{startedAt:d&&d.startedAt||new Date(r).toISOString(),endedAt:new Date(L).toISOString(),reason:c,durationMs:(d&&d.durationMs||0)+ie,teamDamage:a-l.teamDamage,players:{damage:q(m,l.damage),sources:N(p,l.sources),healing:q(b,l.healing),taken:q(g,l.taken),takenSources:N(h,l.takenSources),kills:q(f,l.kills)}}}s(Y,"currentFragment");function re(L){r=Date.now(),c=L||"断线续传",l={teamDamage:a,damage:j(m),sources:B(p),healing:j(b),taken:j(g),takenSources:B(h),kills:j(f)},d=null}s(re,"beginFragment");function J(L){let ie=Y();ie&&(L&&(ie.endReason=L),o.push(ie)),r=null,l=null,d=null}s(J,"closeFragment");function ne(L){for(;L-x>=y;)C=(C+1)%_,w[C]=0,k[C]=T,x+=y}s(ne,"tickBuckets");function Ae(L){for(;L-z>=y;)I.length<A&&(I.push(0),R.push(T)),z+=y}return s(Ae,"tickFullBuckets"),{reset(L={}){e=performance.now(),t=0,a=0,n=null,i={...L},m.clear(),p.clear(),b.clear(),f.clear(),g.clear(),h.clear(),w.fill(0),k.fill(!1),C=0,x=performance.now(),T=!1,I.length=0,R.length=0,I.push(0),R.push(!1),z=performance.now(),o=[],r=Date.now(),c="开始战斗",l={teamDamage:0,damage:{},sources:{},healing:{},taken:{},takenSources:{},kills:{}},d=null},freeze(L="战斗结束"){n===null&&(n=$(),J(L))},unfreeze(L="断线续传"){n!==null&&(t=n,e=performance.now(),n=null,re(L))},pause(L="连接中断"){this.freeze(L)},resume(L="断线续传"){this.unfreeze(L)},resumeTrialTier(L="进入下一层"){if(n===null)return;t=n,e=performance.now(),n=null;let ie=o.length?o.pop():null;if(!ie){re(L);return}let Ee=ie.players||{},ye=s((Ge,D)=>Object.fromEntries(Array.from(Ge,([ee,ue])=>[ee,ue-(Number(D&&D[ee])||0)])),"baseFrom"),Re=B(p);Object.entries(Ee.sources||{}).forEach(([Ge,D])=>Object.entries(D||{}).forEach(([ee,ue])=>{Re[Ge]&&(Re[Ge][ee]=(Number(Re[Ge][ee])||0)-(Number(ue)||0))}));let Ue=B(h);Object.entries(Ee.takenSources||{}).forEach(([Ge,D])=>Object.entries(D||{}).forEach(([ee,ue])=>{Ue[Ge]&&(Ue[Ge][ee]=(Number(Ue[Ge][ee])||0)-(Number(ue)||0))})),r=Date.now(),c=ie.reason||"开始战斗",l={teamDamage:a-(Number(ie.teamDamage)||0),damage:ye(m,Ee.damage),sources:Re,healing:ye(b,Ee.healing),taken:ye(g,Ee.taken),takenSources:Ue,kills:ye(f,Ee.kills)},d={startedAt:ie.startedAt,durationMs:Number(ie.durationMs)||0}},splitFragment(L="进入下一关"){r!==null&&(J(L),re(L))},isFrozen(){return n!==null},setMeta(L){i={...i,...L}},getMeta(){return{...i}},serialize(){let L=Y();return{schemaVersion:2,meta:{...i},savedAt:new Date().toISOString(),durationMs:Math.round($()*1e3),teamDamage:a,players:{damage:j(m),sources:B(p),healing:j(b),taken:j(g),takenSources:B(h),kills:j(f)},classes:Object.fromEntries(this.getAllPlayerNames().map(ie=>[ie,qe.classFor(ie)])),fragments:L?[...o,L]:[...o],isBoss:T,frozen:n!==null,graph:{damage:[...I],boss:[...R]}}},restore(L){if(!L||L.schemaVersion!==2)throw new Error(X.getLanguage()==="en"?"Unsupported combat cache format":"不支持的战斗缓存格式");for(i={...L.meta||{}},a=Number(L.teamDamage)||0,t=(Number(L.durationMs)||0)/1e3,e=performance.now(),n=t,W(m,L.players&&L.players.damage),W(b,L.players&&L.players.healing),M(p,L.players&&L.players.sources),W(g,L.players&&L.players.taken),M(h,L.players&&L.players.takenSources),W(f,L.players&&L.players.kills),qe.applyClasses(L.classes),o=Array.isArray(L.fragments)?L.fragments:[],r=null,l=null,d=null,T=!!L.isBoss,I.length=0,R.length=0,(L.graph&&L.graph.damage||[0]).slice(-A).forEach(ye=>I.push(Number(ye)||0)),(L.graph&&L.graph.boss||[!1]).slice(-A).forEach(ye=>R.push(!!ye)),I.length||I.push(0);R.length<I.length;)R.push(!1);w.fill(0),k.fill(!1);let ie=I.slice(-_),Ee=R.slice(-_);ie.forEach((ye,Re)=>{w[Re]=ye,k[Re]=!!Ee[Re]}),C=_-1,x=z=performance.now()},getFragments(){let L=Y();return L?[...o,L]:[...o]},setBoss(L){T=L,k[C]=L,R.length&&(R[R.length-1]=L)},addTeamDamage(L,ie){a+=L,ne(ie),w[C]+=L,k[C]=T,Ae(ie),I.length&&(I[I.length-1]+=L)},addPlayerDamage(L,ie,Ee="unknown"){m.set(L,(m.get(L)||0)+ie);let ye=pt.normalize(Ee),Re=p.get(L)||new Map;Re.set(ye,(Re.get(ye)||0)+ie),p.set(L,Re)},addPlayerHealing(L,ie){b.set(L,(b.get(L)||0)+ie)},addPlayerTaken(L,ie,Ee="unknown"){g.set(L,(g.get(L)||0)+ie);let ye=String(Ee||"unknown"),Re=h.get(L)||new Map;Re.set(ye,(Re.get(ye)||0)+ie),h.set(L,Re)},addPlayerKill(L){f.set(L,(f.get(L)||0)+1)},renamePlayer(L,ie){if(!L||!ie||L===ie)return;let Ee=s(ye=>{ye.has(L)&&(ye.set(ie,(ye.get(ie)||0)+ye.get(L)),ye.delete(L))},"merge");if(Ee(m),Ee(b),Ee(f),Ee(g),p.has(L)){let ye=p.get(ie)||new Map;p.get(L).forEach((Re,Ue)=>ye.set(Ue,(ye.get(Ue)||0)+Re)),p.set(ie,ye),p.delete(L)}if(h.has(L)){let ye=h.get(ie)||new Map;h.get(L).forEach((Re,Ue)=>ye.set(Ue,(ye.get(Ue)||0)+Re)),h.set(ie,ye),h.delete(L)}},getTeamDps(){let L=$();return L<1?0:a/L},getTeamDamage(){return a},getTeamKills(){let L=0;return f.forEach(ie=>L+=ie),L},getPlayerDps(L){let ie=$();return ie<1?0:(m.get(L)||0)/ie},getPlayerDamage(L){return m.get(L)||0},getPlayerDamageSources(L){return Object.fromEntries(p.get(L)||[])},getPlayerHps(L){let ie=$();return ie<1?0:(b.get(L)||0)/ie},getPlayerHealing(L){return b.get(L)||0},getPlayerTaken(L){return g.get(L)||0},getPlayerTakenSources(L){return Object.fromEntries(h.get(L)||[])},getPlayerTakenPs(L){let ie=$();return ie<1?0:(g.get(L)||0)/ie},getPlayerKills(L){return f.get(L)||0},getElapsedSeconds(){return $()},getAllPlayerNames(){return Array.from(new Set([...m.keys(),...f.keys(),...b.keys(),...g.keys()]))},advanceBuckets(){ne(performance.now()),Ae(performance.now())},getGraphPoints(){let L=[];for(let ie=1;ie<=_;ie++){let Ee=(C+ie)%_;L.push({dps:w[Ee]/(y/1e3),isBoss:k[Ee]})}return L},getFullGraphPoints(){let L=[];for(let ie=0;ie<I.length;ie++)L.push({dps:I[ie]/(y/1e3),isBoss:R[ie]});return L}}})(),Zt=(()=>{let e=0,t=0,a=0,n=0,i=0,o=0,r=0,c=0,l=5,d=0,m=s((p,b)=>p<l?(console.warn("[KikiMeter] "+b),p+1):p,"w");return{recordNominal(){e++},recordColdPlayer(){t++},recordColdMonsterAmbig(p){a++,n+=p},recordCollision(p){i++},recordCollisionSingleHit(p,b){o++},recordOrphan(p){r++,c+=p,d=m(d,"未归属伤害 "+p+",序号 "+r)},summary(){return{nominal:e,coldPlayer:t,coldMonsterAmbig:a,coldMonsterAmbigDmg:n,collision:i,collisionSingleHit:o,orphan:r,orphanDmg:c}}}})(),yn=(()=>{let e=!1,t=[],a={};return{start(){e=!0,t=[],a={},console.info("[KikiMeter] 已开始抓取战斗消息。")},stop(){e=!1,console.info("[KikiMeter] 已停止抓取,共 "+t.length+" 条消息。")},record(n,i){e&&(a[n]=(a[n]||0)+1,t.push({t:Date.now(),payload:i}))},download(n){let i=new Blob([JSON.stringify({typeCounts:a,combatLog:t})],{type:"application/json"}),o=URL.createObjectURL(i),r=Object.assign(document.createElement("a"),{href:o,download:n||"mwi-capture-"+Date.now()+".json"});document.body.appendChild(r),r.click(),r.remove(),URL.revokeObjectURL(o)},size(){return t.length}}})();var Xe=(()=>{let e=new EventTarget,t=[],a=[],n=[],i=[],o=[],r=[],c={},l={},d=[],m=[],p=[],b=[],f={},g={},h=[],_={},y={},w={},k=[],C=new Map,x=!1,T=null,A=null,I=null,R=null;function z(){return R===null?performance.now():R}s(z,"clockNow");let j=new Map,W=new Set,B={},M={},N={},q={},$={},Y={},re={},J={},ne={},Ae={},L={},ie={},Ee={},ye={},Re={},Ue={},Ge={},D={},ee={},ue=null,he="",xe=!1,Q=!1,le=0,De=!1,tt=!1,qt="",Kr=new Set(["milking","foraging","woodcutting","cheesesmithing","crafting","tailoring","cooking","brewing","alchemy","enhancing","combat","stamina","intelligence","attack","defense","melee","ranged","magic","stealth","power","marketplace","tasks","task","labyrinth","shop","loot","abilities","equipment","inventory","house","loadouts","statistics","buildings","overview","members","trials","application","guild","overview","dispatch","findparty","myparty","combatzones"]);function ma(v){let S=v.toLowerCase();return!!(Kr.has(S)||/^lv\.?\d+$/i.test(v)||/^\d+%?$/.test(v)||/^[\d.,]+[km]?$/i.test(v))}s(ma,"looksLikeNoise");function wn(v){let S=['[class*="MiniUnit_name"]','[class*="CombatUnit_name"]',".GuildBattle__members .Character__name",'[class*="GuildBattle"] [class*="name"]','[class*="guildBattle"] [class*="name"]','[class*="GuildMember"] [class*="name"]','[class*="TrialBattle"] [class*="name"]'],E=[];for(let Z of S){try{E=[...document.querySelectorAll(Z)]}catch{E=[]}if(E.length>0)break}let O=E.map(Z=>Z.textContent.trim()).filter(Z=>Z&&!ma(Z)&&!/^trial\s/i.test(Z)),P=[...C.values()][0],G=P&&O.includes(P),V=!P||!G?1:0,F=new Map;V===1&&P&&F.set("0",P),O.slice(0,v?v-V:O.length).forEach((Z,ae)=>{F.set(String(ae+V),Z)});for(let[Z,ae]of F){if(W.has(Z))continue;let Fe=fa(Z);j.set(Z,ae),W.add(Z),Fe!==ae&&e.dispatchEvent(new CustomEvent("guildSlotRenamed",{detail:{oldName:Fe,newName:ae}}))}j.size===0&&X.getDebugMode()&&console.warn("[KikiMeter][Guild] 玩家姓名解析失败,页面选择器可能已经变化。请在试炼中运行 window.__MWI_DPS.scanGuildNames() 查看诊断。")}s(wn,"resolveGuildNames");function Zn(v){return!!(v.closest("#kikimeter-panel")||v.closest('[data-kikimeter="true"]'))}s(Zn,"isOwnUI");function Ts(){let v=[...C.values()][0];if(!v)return console.warn("[KikiMeter] 尚不知道本地玩家姓名。请在公会试炼进行中再次运行此命令。"),[];console.log(`[KikiMeter] 正在精确搜索文本 "${v}" (页面 DOM)…`);let S=[];return document.querySelectorAll("*").forEach(E=>{Zn(E)||E.children.length<=1&&E.textContent.trim()===v&&S.push(E)}),console.log(`[KikiMeter] ${S.length} 个完全匹配项。`),console.log("====================================================="),S.forEach((E,O)=>{console.log(`--- 匹配项 #${O} ---`);let P=E,G=0;for(;P&&G<6;){let V=(P.className||"")+""||"(无类名)",F=P.parentElement?[...P.parentElement.children].slice(0,8).map(Z=>Z.textContent.trim().slice(0,16)):[];console.log(`  层级 ${G} | <${P.tagName}> 类名="${V}" | 子元素=${P.children.length} | 同级元素=${P.parentElement?P.parentElement.children.length:0} | 同级示例: [${F.join(" ¦ ")}]`),P=P.parentElement,G++}console.log("  ---")}),console.log("====================================================="),S}s(Ts,"scanGuildNamesByLocalName");function Xr(){let v=le||35,S=Math.max(2,v-5),E=v+10,O=[];return document.querySelectorAll("div, ul, section").forEach(P=>{if(Zn(P))return;let G=P.children.length;if(G>=S&&G<=E){let V=[...P.children].slice(0,6).map(F=>F.textContent.trim().slice(0,20));V.some(F=>F.length>0)&&O.push({selector:(P.className||P.tagName)+"",tag:P.tagName,childCount:G,sample:V})}}),console.log(`[KikiMeter] 预计玩家数:约 ${v} 名;${O.length} 个候选容器:`),console.log("====================================================="),O.forEach((P,G)=>{console.log(`#${G} | 类名="${P.selector}" | 子元素=${P.childCount} | 示例: [${P.sample.join(" ¦ ")}]`)}),console.log("====================================================="),O.length===0&&console.warn("[KikiMeter] 没有找到子元素数量完全匹配的容器。请运行 window.__MWI_DPS.scanGuildNamesLoose() 执行宽松搜索。"),O}s(Xr,"scanGuildNames");function vn(){let v=[];document.querySelectorAll("div, ul, section").forEach(E=>{if(Zn(E))return;let O=E.children.length;if(O>=10&&O<=200){let P=0,G=[];E.querySelectorAll(":scope > * ").forEach(V=>{let F=V.textContent.trim();F.length>=2&&F.length<=20&&!ma(F)&&(P++,G.push(F.slice(0,20)))}),P>=10&&v.push({selector:(E.className||E.tagName)+"",tag:E.tagName,childCount:O,nameLikeCount:P,sample:G.slice(0,8)})}}),v.sort((E,O)=>O.nameLikeCount-E.nameLikeCount);let S=v.slice(0,15);return console.log(`[KikiMeter] 宽松搜索:${v.length} 个候选容器,显示前 15 个:`),console.log("====================================================="),S.forEach((E,O)=>{console.log(`#${O} | 类名="${E.selector}" | 子元素=${E.childCount} | 疑似姓名=${E.nameLikeCount} | 示例: [${E.sample.join(" ¦ ")}]`)}),console.log("====================================================="),v}s(vn,"scanGuildNamesLoose");function Es(){let v=[];return document.querySelectorAll("[title], [aria-label], img[alt]").forEach(S=>{let E=S.getAttribute("title")||S.getAttribute("aria-label")||S.getAttribute("alt");E&&E.length>=2&&E.length<=20&&!ma(E)&&v.push({tag:S.tagName,attr:S.getAttribute("title")?"title":S.getAttribute("aria-label")?"aria-label":"alt",value:E,class:(S.className||"")+""})}),console.log(`[KikiMeter] ${v.length} 个候选属性:`),console.table(v.slice(0,60)),v}s(Es,"scanGuildNamesAttrs");function fa(v){return j.get(v)||(v==="0"?[...C.values()][0]||"Slot0":"Joueur"+(+v+1))}s(fa,"guildSlotLabel");function H(v={},S="guild_fallback"){let E=hn.dayStamp(new Date),O=v.combatStartTime||v.guildBattleId||v.battleId||v.combatId||"guild-fallback-"+E;return{combatKey:String(O),stageId:String(O),characterId:A||"unknown",classes:{},fallback:!0,source:S}}s(H,"fallbackGuildDetail");function ce(v){let S=Number(v);return v!=null&&Number.isFinite(S)?S:void 0}s(ce,"finiteCounter");function oe(v={}){return ce(v.attackAttemptCounter!==void 0?v.attackAttemptCounter:v.atkCounter)}s(oe,"playerAttackCounter");function te(v={}){return ce(v.damageSplatCounter!==void 0?v.damageSplatCounter:v.dmgCounter)}s(te,"monsterDamageCounter");let ke=new Set(["/buff_types/physical_thorns","/buff_types/elemental_thorns","/buff_types/retaliation"]),be=new Map([["/abilities/spike_shell",3e4],["/abilities/retribution",3e4]]),ve=new Map([["/abilities/firestorm",{direct:!0,dotDuration:6e3,dotInterval:3e3}],["/abilities/maim",{direct:!0,dotDuration:9e3,dotInterval:3e3}]]),Pe=3e3,Se=500,Le=2e3,$e=3e4,Ne=new Map,Me=new Map,He=new Set;function Te(v){let S=String(v||"").toLowerCase();return S.includes("physical_thorns")?"/buff_types/physical_thorns":S.includes("elemental_thorns")?"/buff_types/elemental_thorns":S.includes("retaliation")?"/buff_types/retaliation":""}s(Te,"normalizedReflectType");function Ze(v,S=0){return S>8||v===null||v===void 0?!1:typeof v=="string"?!!Te(v):typeof v!="object"?!1:Object.entries(v).some(([E,O])=>!!Te(E)||Ze(O,S+1))}s(Ze,"containsReflection");function Ye(v){let S=Number(v);return!Number.isFinite(S)||S<=0?0:S>864e5?S/1e6:S<1e3?S*1e3:S}s(Ye,"durationToMs");function Rt(v){let S=[],E=s((O,P=0)=>{P>8||!O||typeof O!="object"||Object.entries(O).forEach(([G,V])=>{if(/duration/i.test(G)&&typeof V=="number"){let F=Ye(V);F>=100&&F<=36e5&&S.push(F)}V&&typeof V=="object"&&E(V,P+1)})},"walk");return E(v),S.length?Math.max(...S):3e4}s(Rt,"reflectionDuration");function Bt(v={}){let S=v.abilityEffects||v.effects||v.abilityDetail&&v.abilityDetail.abilityEffects||[];return Array.isArray(S)?S:[]}s(Bt,"abilityEffects");function ea(v,S=0,E=[]){return S>8||!v||typeof v!="object"||(Te(v.typeHrid||v.uniqueHrid)&&E.push(v),Object.values(v).forEach(O=>{O&&typeof O=="object"&&ea(O,S+1,E)})),E}s(ea,"reflectionBuffs");function Li(v,S={}){let E=Bt(S),O=E.filter(Z=>String(Z&&Z.effectType||"").includes("/ability_effect_types/damage")),P=O.reduce((Z,ae)=>!(Number(ae.damageOverTimeRatio)>0)||!(Number(ae.damageOverTimeDuration)>0)?Z:Math.max(Z,Ye(ae.damageOverTimeDuration)),0),G=O.reduce((Z,ae)=>{if(!(Number(ae.damageOverTimeRatio)>0))return Z;let Fe=ae.damageOverTimeInterval??ae.damageOverTimeTickInterval??ae.tickInterval,at=Ye(Fe);return at>0?Z>0?Math.min(Z,at):at:Z},0),V=[...new Set(O.map(Z=>String(Z.targetType||"")).filter(Boolean))];(E.length||O.length||P)&&ve.set(v,{direct:O.length>0,dotDuration:P,dotInterval:P?G||Pe:0,targetTypes:V});let F=ea(S);F.length&&(be.set(v,Rt(S)),F.forEach(Z=>{let ae=String(Z.uniqueHrid||"");ae&&Ne.set(ae,v);let Fe=Te(Z.typeHrid||Z.uniqueHrid);Fe&&(Me.has(Fe)||Me.set(Fe,new Set),Me.get(Fe).add(v))}))}s(Li,"cacheAbilityRule");function Un(v={}){let S=[v,v.data,v.initGameData,v.init_game_data,v.initClientData,v.init_client_data,v.clientData,v.client_data].filter(E=>E&&typeof E=="object");for(let E of S){let O=E.abilityDetailMap||E.gameAbilityDetailMap;if(O&&typeof O=="object"){let G=O instanceof Map?[...O.entries()]:Object.entries(O);for(let[V,F]of G){let Z=String(F&&F.hrid||F&&F.abilityHrid||V);Z&&Li(Z,F||{})}}let P=E.itemDetailMap||E.gameItemDetailMap;if(P&&typeof P=="object"){let G=P instanceof Map?[...P.entries()]:Object.entries(P);for(let[V,F]of G){if(!Ze(F))continue;let Z=String(F&&F.hrid||F&&F.itemHrid||V);Z&&He.add(Z)}}}}s(Un,"cacheReflectionDefinitions");function Jr(v,S=0,E=new Set){return S>7||v===null||v===void 0?E:typeof v=="string"?(v.startsWith("/abilities/")&&E.add(v),E):(typeof v!="object"||Object.entries(v).forEach(([O,P])=>{typeof P=="string"&&P.startsWith("/abilities/")?E.add(P):P&&typeof P=="object"&&Jr(P,S+1,E)}),E)}s(Jr,"abilityHridsFrom");function $i(v,S){return v[S]||(v[S]=new Set)}s($i,"ensureSet");function ta(v,S,E,O){Jr(O).forEach(P=>{let G=ve.get(P);G&&G.dotDuration>0&&$i(v,E).add(P),S&&be.has(P)&&$i(S,E).add(P)})}s(ta,"rememberAbilityKnowledge");function Is(v){let S=String(v||"");if(S==="auto")return"direct";if(pt.isSupport(S))return"support";let E=ve.get(S);return E?E.direct?"direct":"support":"unknown"}s(Is,"actionDamageKind");function Yr(v,S,E,O,P,G=null){let V=String(O||""),F=ve.get(V);if(!F||!(F.dotDuration>0))return;$i(S,E).add(V);let Z=v[E]||(v[E]=new Map);Z.set(V,Math.max(Z.get(V)||0,P+F.dotDuration)),G&&Mp(G,E,V,P)}s(Yr,"activateDot");function Qr(v,S){for(let E=v.length-1;E>=0;E-=1)v[E].expiresAt+$e<S&&v.splice(E,1)}s(Qr,"pruneDotCasts");function Ap(v,S){let E=S.dotInterval||Pe,O=[];for(let P=E;P<=S.dotDuration;P+=E)O.push({dueAt:v+P,consumed:!1});return O}s(Ap,"dotTickSchedule");function Mp(v,S,E,O){let P=ve.get(E);!P||!(P.dotDuration>0)||(Qr(v,O),v.push({key:String(S),abilityHrid:E,startedAt:O,landedAt:null,expiresAt:O+P.dotDuration,targets:new Map}))}s(Mp,"scheduleDotCast");function Tp(v,S,E,O,P){if(!Array.isArray(O)||!O.length)return;Qr(v,P);let G=v.slice().reverse().find(F=>F.key===String(S)&&F.abilityHrid===E&&P-F.startedAt>=0&&P-F.startedAt<=Le);if(!G)return;if(G.landedAt===null){G.landedAt=P;let F=ve.get(E);G.expiresAt=P+(F?.dotDuration||0)}let V=ve.get(E);if(V)for(let F of O){let Z=String(F.key);G.targets.has(Z)||G.targets.set(Z,Ap(G.landedAt,V))}}s(Tp,"bindDotTargets");function Ep(v,S,E,{key:O=null,abilityHrid:P=""}={}){Qr(v,E);let G=[];for(let V of v)if(!(O!==null&&V.key!==String(O))&&!(P&&V.abilityHrid!==P))for(let F of V.targets.get(String(S))||[]){if(F.consumed)continue;let Z=E-F.dueAt;Z>=0&&Z<=Se&&G.push({cast:V,tick:F,distance:Z})}return G.sort((V,F)=>V.distance-F.distance||V.tick.dueAt-F.tick.dueAt||V.cast.startedAt-F.cast.startedAt),G.length?G.length>1&&Math.abs(G[0].distance-G[1].distance)<1?{ambiguous:!0}:G[0]:null}s(Ep,"scheduledDotCandidate");function ec(v,S,E,{key:O=null,abilityHrid:P=""}={}){let G=[],V=[],F=!1;for(let Z of S||[]){let ae=Ep(v,Z.key,E,{key:O,abilityHrid:P});if(!ae||ae.ambiguous){F||=!!ae?.ambiguous,V.push(Z);continue}ae.tick.consumed=!0,G.push({hit:Z,cast:ae.cast})}return{matched:G,unmatched:V,ambiguous:F}}s(ec,"consumeScheduledDotHits");function Ip(v,S,E){Qr(v,E);let O=new Set((S||[]).map(ae=>String(ae.key))),P=v.some(ae=>[...O].some(Fe=>(ae.targets.get(Fe)||[]).some(at=>!at.consumed))),{matched:G,unmatched:V,ambiguous:F}=ec(v,S,E),Z=new Map;for(let{hit:ae,cast:Fe}of G){let at=`${Fe.key}\0${Fe.abilityHrid}`,Ct=Z.get(at)||{key:Fe.key,abilityHrid:Fe.abilityHrid,amount:0};Ct.amount+=Number(ae.amount)||0,Z.set(at,Ct)}return{groups:[...Z.values()],unmatchedAmount:V.reduce((ae,Fe)=>ae+(Number(Fe.amount)||0),0),ambiguous:F,hasPendingTargetSchedule:P}}s(Ip,"scheduledDotDamage");function Np(v){let S=String(v||"");return S.startsWith("dot:/abilities/")?S.slice(4):ve.get(S)?.dotDuration>0?S:""}s(Np,"dotAbilityFromSource");function Hp(v,S,E,O,P){let G=String(E||""),V=Np(G);if(V&&!G.startsWith("dot:")){Tp(v,S,V,O,P);return}(G==="dot"||G.startsWith("dot:"))&&ec(v,O,P,{key:S,abilityHrid:V})}s(Hp,"recordDotAttribution");function tc(v,S,E){return v.filter(O=>[...(S[O]||new Map).values()].some(P=>P>E))}s(tc,"activeDotCandidates");function Dp(v,S,E){let O=tc(v,S,E);return O.length===1?O[0]:null}s(Dp,"uniqueActiveDotCandidate");function Pp(v,S,E){let O=[...(v[S]||new Map).entries()].filter(([,P])=>P>E).map(([P])=>P);return O.length===1?`dot:${O[0]}`:"dot"}s(Pp,"activeDotSourceFor");function ac(v,S,E,O){let P=[...v[E]||[]],G=[...(S[E]||new Map).entries()].filter(([,V])=>V>O).map(([V])=>V);return P.length===1?P:G.length===1||G.length?G:P}s(ac,"dotAbilitiesFor");function Oi(v,S,E,O){let P=ac(v,S,E,O);return P.length===1?"dot:"+P[0]:"dot"}s(Oi,"dotSourceFor");function eo(v,S,E,O){let P=v.filter(G=>ac(S,E,G,O).length>0);return P.length===1?P[0]:null}s(eo,"uniqueDotCandidate");let Lp=["blazing_trident","chaotic_flail","sundering_crossbow"];function to(v){let S=String(qe.getWeapon(v)||"");return Lp.some(E=>S.includes(E))?S:""}s(to,"directWeaponEffectFor");function $p(v,S){return"combined:"+encodeURIComponent(v)+"|"+encodeURIComponent(pt.normalize(S))}s($p,"combinedWeaponSource");function nc(v,S,E){let O=to(v);if(!O)return S;if(pt.normalize(S)===pt.normalize(O))return O;let P=Is(S),G=ve.get(String(S||""));if(P==="support")return O.includes("blazing_trident")?O:S;if(O.includes("chaotic_flail")&&S==="auto"||O.includes("sundering_crossbow")&&S==="auto")return S;let V=S==="auto"||!G||!(Array.isArray(G.targetTypes)&&G.targetTypes.some(F=>/allEnemies|all_enemies/i.test(F)));return O.includes("blazing_trident")&&V&&E>1?$p(O,S):S}s(nc,"sourceWithWeaponEffect");function ic(v,S,E,O){let P=to(v);if(S!=="auto"||!P.includes("sundering_crossbow")||!Array.isArray(E)||E.length<2)return null;let G=E.find(F=>String(F.key)===String(O));if(!G)return null;let V=E.filter(F=>String(F.key)!==String(O)).reduce((F,Z)=>F+(Number(Z.amount)||0),0);return V>0?{base:Number(G.amount)||0,effect:V,weapon:P}:null}s(ic,"splitCrossbowPierce");function Op(v,S,E){let O=v[E]||"怪物"+(+E+1),P=S[E]||"";return{name:Object.keys(v||{}).filter(V=>v[V]===O&&(S[V]||"")===P).length>1?O+" #"+(+E+1):O,hrid:P}}s(Op,"monsterIdentity");function Kn(v,S,E,O){let P=Op(v,S,E);return _n.encode(P.name,P.hrid,O)}s(Kn,"takenSource");function Ha(v={},S=""){return v.abilityHrid||(v.isAutoAtk||v.isAutoAttack?"auto":S)}s(Ha,"actionFromUpdate");function rc(v,S,E,O,P){let G=be.get(String(O||""));G&&(v[E]=Math.max(v[E]||0,P+G),S[E]=String(O))}s(rc,"activateReflection");function qp(v,S,E){rc(ne,Ae,v,S,E)}s(qp,"activateGuildReflection");function ao(v,S){return Number(ne[v])>S}s(ao,"isGuildReflecting");function Rp(v,S,E){rc(y,w,v,S,E)}s(Rp,"activatePlayerReflection");function oc(v,S){return Number(y[v])>S}s(oc,"isPlayerReflecting");function sc(v,S={}){ta(f,_,v,S);let E=Date.now(),O=z(),P=0,G=!1;Object.values(S.combatBuffMap||{}).forEach(Z=>{let ae=Te(Z&&Z.typeHrid||Z&&Z.uniqueHrid);if(!ke.has(ae))return;G=!0;let Fe=Ye(Z.duration),at=Date.parse(Z.startTime||""),Ct=Number.isFinite(at)?at+Fe:E+Fe;P=Math.max(P,Fe===0?1/0:Ct-E);let ba=String(Z&&Z.uniqueHrid||""),wt=Ne.get(ba),st=[...Me.get(ae)||[]],U=[..._[v]||[]],ge=ba.toLowerCase(),We=wt||(st.length===1?st[0]:"")||(U.length===1?U[0]:"")||(ge.includes("spike_shell")?"/abilities/spike_shell":ge.includes("retribution")?"/abilities/retribution":"");We&&(w[v]=We)});let V=S.combatDetails&&S.combatDetails.combatStats||{};if(!G&&(Number(V.physicalThorns)||Number(V.elementalThorns)||Number(V.retaliation))?y[v]=1/0:P>0&&(y[v]=Math.max(y[v]||0,O+P)),!w[v]){let Z=[..._[v]||[]];Z.length===1&&(w[v]=Z[0])}}s(sc,"learnPlayerReflectionState");function Bp(v={}){let S=v.name||v.character&&v.character.name;if(S)for(let[E,O]of C)O===S&&sc(E,v)}s(Bp,"learnPlayerReflectionUnit");function uc(v={}){let S=v.name||v.character&&v.character.name;if(!S)return;let E=[...j.entries()].filter(([,ae])=>ae===S).map(([ae])=>ae);if(!E.length)return;E.forEach(ae=>ta(L,Ee,ae,v));let O=Date.now(),P=z(),G=0,V=!1;Object.values(v.combatBuffMap||{}).forEach(ae=>{let Fe=Te(ae&&ae.typeHrid||ae&&ae.uniqueHrid);if(!ke.has(Fe))return;V=!0;let at=Ye(ae.duration),Ct=Date.parse(ae.startTime||""),ba=Number.isFinite(Ct)?Ct+at:O+at;G=Math.max(G,at===0?1/0:ba-O);let wt=String(ae&&ae.uniqueHrid||""),st=Ne.get(wt),U=[...Me.get(Fe)||[]],ge=wt.toLowerCase();E.forEach(We=>{let Oe=[...Ee[We]||[]],Ke=st||(U.length===1?U[0]:"")||(Oe.length===1?Oe[0]:"")||(ge.includes("spike_shell")?"/abilities/spike_shell":ge.includes("retribution")?"/abilities/retribution":"");Ke&&(Ae[We]=Ke)})});let F=v.combatDetails&&v.combatDetails.combatStats||{},Z=!V&&(Number(F.physicalThorns)||Number(F.elementalThorns)||Number(F.retaliation));E.forEach(ae=>{if(Z?ne[ae]=1/0:G>0&&(ne[ae]=Math.max(ne[ae]||0,P+G)),!Ae[ae]){let Fe=[...Ee[ae]||[]];Fe.length===1&&(Ae[ae]=Fe[0])}})}s(uc,"learnGuildReflectionState");function zp(v={}){let S=v.profile||v.data&&v.data.profile||v,E=S.sharableCharacter||S.character||S,O=E.name||S.name;if(!O)return;let P=S.wearableItemMap||E.wearableItemMap||{},G=new Set,V=s((Z,ae=0)=>{if(!(ae>5||Z===null||Z===void 0)){if(typeof Z=="string"){Z.startsWith("/items/")&&G.add(Z);return}typeof Z=="object"&&Object.values(Z).forEach(Fe=>V(Fe,ae+1))}},"walk");V(P);let F=[...G].find(Z=>He.has(Z));F&&[...j.entries()].filter(([,Z])=>Z===O).forEach(([Z])=>{ne[Z]=1/0,Ae[Z]=F})}s(zp,"learnProfileReflectionEquipment");function Fp(v={}){let S=String(v.combatStartTime||v.guildBattleId||v.battleId||v.combatId||"guild-"+hn.dayStamp(new Date)),E=v.tier!==void 0?String(v.tier):"unknown";return{base:S,signature:S+"|tier:"+E,tier:E}}s(Fp,"guildStageSignature");function cc(v){let S=v.players||[];if(S.length===0)return;let E=Fp(v),O=xe;xe=!0;let P=O&&he&&E.signature!==he;P&&(tt=!1,De=!1),he=E.signature,ue=E.tier,I=E.base;let G=qe.registerPlayers(S);le=Math.max(le,S.length),q={},$={},Y={},re={},J={},ne={},Ae={},L={},ie={},Ee={},B={},M={},N={},ye={},Re={},Ue={},Ge={},D={},ee={},S.forEach((V,F)=>{let Z=String(F),ae=V.name||V.character&&V.character.name;if(V.currentHitpoints!==void 0&&(q[Z]=Number(V.currentHitpoints)||0),V.currentManapoints!==void 0&&($[Z]=Number(V.currentManapoints)||0),Y[Z]=oe(V)??0,re[Z]=te(V)??0,J[Z]=Ha({abilityHrid:V.preparingAbilityHrid,isAutoAtk:V.isPreparingAutoAttack},""),ta(L,Ee,Z,V),!ae)return;let Fe=!j.has(Z),at=fa(Z);j.set(Z,ae),W.add(Z),Fe&&at!==ae&&e.dispatchEvent(new CustomEvent("guildSlotRenamed",{detail:{oldName:at,newName:ae}}))}),(v.monsters||[]).forEach((V,F)=>{let Z=String(F);B[Z]=Number(V.currentHitpoints!==void 0?V.currentHitpoints:V.cHP)||0,M[Z]=Number(V.maxHitpoints!==void 0?V.maxHitpoints:V.mHP)||0;let ae=te(V);ae!==void 0&&(N[Z]=ae),ye[Z]=oe(V)??0,Re[Z]=Ha({abilityHrid:V.preparingAbilityHrid,isAutoAtk:V.isPreparingAutoAttack},""),Ue[Z]=V.name||String(V.hrid||"").split("/").pop().replace(/_/g," ")||"怪物"+(F+1),Ge[Z]=V.hrid||"",ta(D,null,Z,V)}),S.forEach(uc),e.dispatchEvent(new CustomEvent("guildBattleDetected",{detail:{combatKey:I,stageId:E.signature,tier:E.tier,stageChanged:P,characterId:A,classes:G}}))}s(cc,"processNewGuildBattle");function jp(v){if(!v||!Array.isArray(v.players)||v.players.length===0)return!1;let S=v.players,E=Array.isArray(v.monsters)?v.monsters:[],O=[v.combatStartTime||"",v.battleId??"",v.battleWave??"",v.tier??"",S.length,E.length].join("|");return O===qt&&xe?!1:(qt=O,(!A||A==="unknown")&&S[0]&&S[0].character&&S[0].character.id&&(A=String(S[0].character.id)),cc(v),De=!0,tt=!1,!0)}s(jp,"processGuildCombatSnapshot");function Wp(v){let S=[v,v&&v.data,v&&v.clientData,v&&v.client_data,v&&v.initCharacterData].filter(E=>E&&typeof E=="object");for(let E of S)if(E.guildCombatBattle&&typeof E.guildCombatBattle=="object")return E.guildCombatBattle;return null}s(Wp,"guildCombatSnapshotFromMessage");function Vp(v){if(!xe||tt)return;let S=v.guild&&v.guild.currentTrialsData;if(!S)return;let E;try{E=JSON.parse(S)}catch{return}let O=E&&E.combat;if(!O)return;O.status==="in_progress"&&(De=!0);let P=O.parties,G=P&&Object.keys(P).length>0&&Object.values(P).every(F=>F&&F.done===!0),V=De&&O.status!=="in_progress";De&&(G||V)&&(tt=!0,e.dispatchEvent(new CustomEvent("guildTrialEnded")))}s(Vp,"processGuildUpdated");function Gp(v){if(!xe)return;let S=v.mMap||{},E=v.pMap||{},O=Object.keys(E),P=z();for(let U of O)le=Math.max(le,+U+1);let G=v.tier!==void 0?String(v.tier):ue;if(ue===null||G!==null&&String(ue)!==String(G)){ue=G,he=String(v.battleId||I||"guild")+"|tier:"+String(G||"unknown"),q={},$={},Y={},re={},J={},ne={},Ae={},L={},ie={},Ee={},B={},M={},N={},ye={},Re={},Ue={},Ge={},D={},ee={};for(let U of O){let ge=E[U],We=oe(ge);q[U]=Number(ge.cHP)||0,$[U]=Number(ge.cMP)||0,We!==void 0&&(Y[U]=We);let Oe=te(ge);Oe!==void 0&&(re[U]=Oe),J[U]=Ha(ge,""),ta(L,Ee,U,ge)}for(let U in S){let ge=S[U],We=te(ge);B[U]=Number(ge.cHP)||0,M[U]=Number(ge.mHP)||0,We!==void 0&&(N[U]=We),ye[U]=oe(ge)??0,Re[U]=Ha(ge,""),Ue[U]=ge.name||String(ge.hrid||"").split("/").pop().replace(/_/g," ")||"怪物"+(+U+1),Ge[U]=ge.hrid||"",ta(D,null,U,ge)}tt=!1,De=!0;return}let V=[],F={},Z=new Set;for(let U of O){let ge=E[U],We=oe(ge),Oe=Y[U];if(ta(L,Ee,U,ge),ge.abilityHrid&&qe.learnAbility(fa(U),ge.abilityHrid),$[U]=Number(ge.cMP)||0,We!==void 0){if(Oe!==void 0&&We>Oe){let ht=J[U]||(ge.isAutoAtk||ge.isAutoAttack?"auto":"unknown");V.push(U),F[U]=ht,qp(U,ht,P),Yr(ie,L,U,ht,P)}Y[U]=We}let Ke=te(ge),nt=re[U];Ke!==void 0&&(nt!==void 0&&Ke>nt&&Z.add(U),re[U]=Ke),J[U]=Ha(ge,J[U])}let ae=[],Fe={};for(let U in S){let ge=S[U],We=oe(ge),Oe=ye[U];if(ta(D,null,U,ge),We!==void 0){if(Oe!==void 0&&We>Oe){let Ke=Re[U]||Ha(ge,"unknown");ae.push(U),Fe[U]=Ke,Yr(ee,D,U,Ke,P)}ye[U]=We}Re[U]=Ha(ge,Re[U])}let at=_n.encode("未知怪物","","unknown");if(ae.length===1){let U=ae[0];at=Kn(Ue,Ge,U,Fe[U]||"unknown")}else if(ae.length===0){let U=Object.keys(S),ge=eo(U,D,ee,P);ge!==null?at=Kn(Ue,Ge,ge,Oi(D,ee,ge,P)):U.length===1&&(at=Kn(Ue,Ge,U[0],"unknown"))}for(let U of O){let ge=E[U].cHP||0;if(q[U]!==void 0){let We=fa(U),Oe=q[U]-ge;Oe>0?e.dispatchEvent(new CustomEvent("playerDamageTaken",{detail:{name:We,amount:Oe,source:at,battleType:"trial"}})):ge>q[U]&&e.dispatchEvent(new CustomEvent("healing",{detail:{name:We,amount:ge-q[U],battleType:"trial"}}))}q[U]=E[U].cHP||0}let Ct=Object.keys(B).sort((U,ge)=>+U-+ge).find(U=>Number(B[U])>0),ba=[],wt=0,st=0;for(let U in S){let ge=S[U];if(B[U]===void 0||M[U]!==ge.mHP){B[U]=ge.cHP||0,M[U]=ge.mHP;let ht=te(ge);ht!==void 0&&(N[U]=ht);continue}let We=B[U],Oe=N[U],Ke=te(ge),nt=We-(ge.cHP||0);nt>0&&Ke!==void 0&&Oe!==void 0&&Ke>Oe&&(wt+=nt,st++,ba.push({key:U,amount:nt})),B[U]=ge.cHP||0,Ke!==void 0&&(N[U]=Ke)}if(wt>0){e.dispatchEvent(new CustomEvent("damage",{detail:{amount:wt,ts:P,battleType:"trial"}}));let U=null,ge="unknown",We=V.length===1?V[0]:null;if(ae.length===1){let Oe=O.filter(nt=>Z.has(nt)&&ao(nt,P)),Ke=Oe.length?Oe:O.filter(nt=>ao(nt,P));Ke.length===1&&(U=Ke[0],ge=Ae[U]||"reflect")}if(U===null&&We!==null){let Oe=F[We]||"unknown",Ke=Is(Oe),nt=fa(We),ht=to(nt);if(Ke!=="support")U=We,ge=Oe;else if(ht.includes("blazing_trident"))U=We,ge=ht;else{let xn=eo(O,L,ie,P);xn!==null&&(U=xn,ge=Oi(L,ie,xn,P))}}if(U===null&&ae.length===0){let Oe=eo(O,L,ie,P);Oe!==null?(U=Oe,ge=Oi(L,ie,Oe,P)):O.length===1&&(U=O[0],ge=Oi(L,ie,O[0],P))}if(U!==null){let Oe=fa(U),Ke=ic(Oe,ge,ba,Ct);Ke?(Ke.base>0&&e.dispatchEvent(new CustomEvent("playerDamage",{detail:{name:Oe,amount:Ke.base,source:"auto",ts:P,battleType:"trial"}})),e.dispatchEvent(new CustomEvent("playerDamage",{detail:{name:Oe,amount:Ke.effect,source:Ke.weapon,ts:P,battleType:"trial"}}))):(ge=nc(Oe,ge,st),e.dispatchEvent(new CustomEvent("playerDamage",{detail:{name:Oe,amount:wt,source:ge,ts:P,battleType:"trial"}}))),Zt.recordNominal()}else if(ae.length===1){let Oe=O.filter(nt=>Z.has(nt)&&ao(nt,P)),Ke=Oe.length?Oe:O.filter(nt=>ao(nt,P));if(Ke.length){let nt=wt/Ke.length;Ke.forEach(ht=>e.dispatchEvent(new CustomEvent("playerDamage",{detail:{name:fa(ht),amount:nt,source:Ae[ht]||"reflect",ts:P,battleType:"trial"}}))),Zt.recordNominal()}else Zt.recordOrphan(wt)}else Zt.recordOrphan(wt)}}s(Gp,"processGuildBattleUpdated");function Zp(){t=[],a=[],n=[],i=[],o=[],r=[],c={},l={},d=[],m=[],p=[],b=[],f={},g={},h=[],_={},y={},w={},k=[],C.clear(),x=!1,T=null,xe=!1,B={},M={},N={},ye={},Re={},Ue={},Ge={},D={},ee={},q={},$={},Y={},re={},J={},ne={},Ae={},le=0,L={},ie={},Ee={},ue=null,he="",j.clear(),W.clear(),De=!1,tt=!1,qt=""}s(Zp,"resetBattleState");function Up(v){let S=xe,E=v.combatStartTime||v.battleId||v.combatId;E&&!S&&(T!==null&&E!==T&&e.dispatchEvent(new CustomEvent("newCombatInstance")),T=E,I=String(E)),S||(B={},M={},N={},ye={},Re={},Ue={},Ge={},D={},ee={},q={},$={},Y={},re={},J={},ne={},Ae={},L={},ie={},Ee={}),t=(v.monsters||[]).map(F=>F.currentHitpoints!==void 0?F.currentHitpoints:F.cHP||0),a=t.map(F=>F>0),n=(v.monsters||[]).map((F,Z)=>F.name||String(F.hrid||"").split("/").pop().replace(/_/g," ")||"怪物"+(Z+1)),i=(v.monsters||[]).map(F=>F.hrid||""),o=(v.monsters||[]).map(F=>oe(F)??0),r=(v.monsters||[]).map(F=>F.preparingAbilityHrid?F.preparingAbilityHrid:F.isPreparingAutoAttack?"auto":""),c={},l={},(v.monsters||[]).forEach((F,Z)=>ta(c,null,String(Z),F)),d=(v.players||[]).map(F=>F.currentManapoints!==void 0?F.currentManapoints:F.cMP||0),m=(v.players||[]).map(F=>{let Z=F.attackAttemptCounter!==void 0?F.attackAttemptCounter:F.atkCounter,ae=Number(Z);return Z!==void 0&&Number.isFinite(ae)?ae:void 0}),p=(v.players||[]).map(F=>te(F)),b=(v.players||[]).map(F=>F.currentHitpoints!==void 0?F.currentHitpoints:F.cHP||0),f={},g={},h=[],_={},y={},w={},C.clear();let O=[],P=qe.registerPlayers(v.players||[]);(v.players||[]).forEach((F,Z)=>{let ae=F.character&&F.character.name||F.name;ae&&(O.push(ae),C.set(String(Z),ae)),sc(String(Z),F)}),k=(v.players||[]).map(F=>F.preparingAbilityHrid?F.preparingAbilityHrid:F.isPreparingAutoAttack?"auto":"idle"),x=!0;let G=18e10,V=(v.monsters||[]).some(F=>(F.enrageTimerDuration||0)>G);e.dispatchEvent(new CustomEvent("newBattle",{detail:{names:O,isBoss:V,classes:P,combatKey:S?String(E||""):I||String(v.battleId||""),characterId:A,parallelGuildBattle:S}}))}s(Up,"processNewBattle");function Kp(v){if(!x||xe)return;let S=v.mMap||{},E=v.pMap||{},O=Object.keys(E),P=z(),G=Q?"labyrinth":"combat",V=[],F=[],Z={},ae=new Set;for(let me of O){let Ce=+me,je=E[me].cMP||0;ta(f,_,me,E[me]);let it=C.get(me);it&&E[me].abilityHrid&&qe.learnAbility(it,E[me].abilityHrid),d[Ce]!==void 0&&je<d[Ce]&&F.push(me),d[Ce]=je;let Ri=E[me].atkCounter!==void 0?E[me].atkCounter:E[me].attackAttemptCounter,Xn=Number(Ri),mc=m[Ce];if(Ri!==void 0&&Number.isFinite(Xn)){if(mc!==void 0&&Xn>mc){let Hs=k[Ce]||(E[me].isAutoAtk||E[me].isAutoAttack?"auto":"unknown");V.push(me),Z[me]=Hs,Rp(me,Hs,P),Yr(g,f,me,Hs,P,h)}m[Ce]=Xn}let Ns=te(E[me]),fc=p[Ce];Ns!==void 0&&(fc!==void 0&&Ns>fc&&ae.add(me),p[Ce]=Ns);let bc=Number(E[me].cHP);Number.isFinite(bc)&&b[Ce]!==void 0&&bc<b[Ce]&&ae.add(me)}let Fe=V.length===1?V[0]:null,at=F.length===1?F[0]:null,Ct=[],ba={};for(let me of Object.keys(S)){let Ce=S[me],je=+me,it=oe(Ce),Ri=o[je];if(ta(c,null,me,Ce),it!==void 0){if(Ri!==void 0&&it>Ri){let Xn=r[je]||Ha(Ce,"unknown");Ct.push(me),ba[me]=Xn,Yr(l,c,me,Xn,P)}o[je]=it}}let wt=_n.encode("未知怪物","","unknown");if(Ct.length===1){let me=Ct[0];wt=Kn(n,i,me,ba[me]||"unknown")}else if(Ct.length===0){let me=Object.keys(S),Ce=eo(me,c,l,P);Ce!==null?wt=Kn(n,i,Ce,Oi(c,l,Ce,P)):me.length===1&&(wt=Kn(n,i,me[0],"unknown"))}for(let me of O){let Ce=+me,je=E[me].cHP||0;if(b[Ce]!==void 0){let it=C.get(me);it&&je>b[Ce]?e.dispatchEvent(new CustomEvent("healing",{detail:{name:it,amount:je-b[Ce],battleType:G}})):it&&je<b[Ce]&&e.dispatchEvent(new CustomEvent("playerDamageTaken",{detail:{name:it,amount:b[Ce]-je,source:wt,battleType:G}}))}b[Ce]=je}let st=null,U="unknown",ge=O.filter(me=>ae.has(me)&&oc(me,P)),We=Ct.length===1?ge.length?ge:O.filter(me=>oc(me,P)):[],Oe=Fe!==null?Fe:at;if(We.length===1)st=We[0],U=w[st]||"reflect";else if(Oe!==null){let me=Z[Oe]||k[+Oe]||"unknown",Ce=C.get(Oe),je=to(Ce);Is(me)!=="support"?(st=Oe,U=me&&me!=="idle"?me:E[Oe].isAutoAtk?"auto":"unknown"):je.includes("blazing_trident")&&(st=Oe,U=je)}let Ke=a.findIndex(Boolean),nt=[],ht=0,xn=0,dc=0;for(let me in S){let Ce=+me,je=S[me];if(t[Ce]===void 0)continue;let it=t[Ce]-(je.cHP||0);t[Ce]=je.cHP||0,it>0&&(ht+=it,dc++,nt.push({key:me,amount:it})),a[Ce]&&(je.cHP||0)<=0&&(a[Ce]=!1,xn++)}let qi=st;if(ht>0){e.dispatchEvent(new CustomEvent("damage",{detail:{amount:ht,ts:P,battleType:G}}));let me=null;if(st===null&&We.length===0&&Ct.length===0){let Ce=[...C.keys()],je=tc(Ce,g,P);if(me=Ip(h,nt,P),me.groups.length)me.groups.length===1&&me.unmatchedAmount===0&&(qi=me.groups[0].key);else if(!me.ambiguous&&!me.hasPendingTargetSchedule&&je.length===1){let it=Dp(Ce,g,P);st=it,U=Pp(g,it,P),qi=it}else!me.ambiguous&&!me.hasPendingTargetSchedule&&je.length===0&&O.length===1&&(st=O[0],qi=st,U=k[+st]==="auto"||E[st].isAutoAtk?"auto":"unknown")}if(st!==null){let Ce=C.get(st);if(Ce){Hp(h,st,U,nt,P);let je=ic(Ce,U,nt,Ke);je?(je.base>0&&e.dispatchEvent(new CustomEvent("playerDamage",{detail:{name:Ce,amount:je.base,source:"auto",ts:P,battleType:G}})),e.dispatchEvent(new CustomEvent("playerDamage",{detail:{name:Ce,amount:je.effect,source:je.weapon,ts:P,battleType:G}}))):(U=nc(Ce,U,dc),e.dispatchEvent(new CustomEvent("playerDamage",{detail:{name:Ce,amount:ht,source:U,ts:P,battleType:G}}))),Zt.recordNominal()}}else if(me?.groups.length){for(let Ce of me.groups){let je=C.get(Ce.key);!je||!(Ce.amount>0)||e.dispatchEvent(new CustomEvent("playerDamage",{detail:{name:je,amount:Ce.amount,source:`dot:${Ce.abilityHrid}`,ts:P,battleType:G}}))}me.unmatchedAmount>0?Zt.recordOrphan(me.unmatchedAmount):Zt.recordNominal()}else if(We.length>1){let Ce=ht/We.length;We.forEach(je=>{let it=C.get(je);it&&e.dispatchEvent(new CustomEvent("playerDamage",{detail:{name:it,amount:Ce,source:w[je]||"reflect",ts:P,battleType:G}}))}),Zt.recordNominal()}else Zt.recordOrphan(ht)}if(xn>0&&qi!==null){let me=C.get(qi);if(me)for(let Ce=0;Ce<xn;Ce++)e.dispatchEvent(new CustomEvent("kill",{detail:{name:me,battleType:G}}))}for(let me of O){let Ce=+me,je=E[me];k[Ce]=je.abilityHrid?je.abilityHrid:je.isAutoAtk?"auto":"idle"}for(let me of Object.keys(S)){let Ce=+me;r[Ce]=Ha(S[me],r[Ce])}}s(Kp,"processBattleUpdated");function lc(v){let S;try{S=JSON.parse(v)}catch{ft.recordUnparsed(v);return}if(!S||!S.type)return;let E=S.data&&typeof S.data=="object"?S.data:S,O=E.itemDetailMap||E.gameItemDetailMap||S.itemDetailMap||S.gameItemDetailMap;if(O&&qe.cacheItemDetails(O),Un(S),Un(E),yn.record(S.type,S),$t.record(S.type,S),ft.record(S.type,S),S.type==="init_character_data"){let G=E.character||S.initCharacterData&&S.initCharacterData.character||{},V=String(G.id||G.characterID||E.characterId||S.characterId||"unknown"),F=A;A=V,Zp(),A=V,e.dispatchEvent(new CustomEvent("socketReconnected",{detail:{characterId:V,previousCharacterId:F}}))}let P=Wp(S);if(P&&jp(P),S.type==="battle_unit_fetched"||S.type==="profile_shared"){let G=S.type==="profile_shared"?qe.learnProfile(S):qe.learnBattleUnit(S);S.type==="battle_unit_fetched"?(Bp(S.unit||E.unit||{}),uc(S.unit||E.unit||{})):zp(S),G&&G.name&&G.classId!=="unknown"&&e.dispatchEvent(new CustomEvent("classLearned",{detail:G}))}if(S.type==="new_battle")Up(S);else if(S.type==="battle_updated")Kp(S);else if(S.type==="new_guild_battle")cc(S);else if(S.type==="guild_battle_updated")xe||(xe=!0,setTimeout(()=>wn(le),300),setTimeout(()=>wn(le),2e3),setTimeout(()=>wn(le),5e3),e.dispatchEvent(new CustomEvent("guildBattleDetected",{detail:H(S,"guild_battle_updated")}))),Gp(S);else if(S.type==="battle_consumable_ability_updated"&&S.isGuildBattle)xe||(xe=!0,e.dispatchEvent(new CustomEvent("guildBattleDetected",{detail:H(S,"battle_consumable_ability_updated")})));else if(S.type==="guild_updated")Vp(S);else if(S.type==="labyrinth_updated"){let G=S.labyrinth;G&&(Q=!!G.isActive)}}s(lc,"handleMessage");function Xp(){return wn(le),console.log(`[KikiMeter] ${j.size} 个姓名已解析(预计人数约 ${le}) :`),console.log("====================================================="),[...j.entries()].forEach(([v,S])=>{console.log(`  slot ${v} → "${S}"`)}),console.log("====================================================="),j.size!==le&&console.warn(`[KikiMeter] 注意:${j.size} 个姓名已解析,但预计有 ${le}  个位置,映射可能发生偏移。请确认位置 0 对应本地角色且顺序正确。`),Object.fromEntries(j)}s(Xp,"previewGuildNames");function Jp(){let v=[...document.querySelectorAll('[class*="CombatUnit_name"]')];return console.log(`[KikiMeter] ${v.length} 个元素 [class*="CombatUnit_name"](原始、未过滤):`),console.log("====================================================="),v.forEach((S,E)=>{console.log(`  #${E} | 类名="${S.className}" | 文本="${S.textContent.trim()}" | 可见=${S.offsetParent!==null}`)}),console.log("====================================================="),v.length===0&&console.warn("[KikiMeter] 没有找到元素:可能已离开试炼页面,或者游戏 CSS 类名已变化。请停留在试炼进行中页面并再次运行命令。"),v}s(Jp,"debugCombatUnitNames");function Yp(){let v=[];return document.querySelectorAll("*").forEach(S=>{if(Zn(S)||S.children.length>1)return;let E=S.textContent.trim();if(!E||E.length<2||E.length>40)return;let O=/(\.\.\.|…)$/.test(E),P=!1;if(!O&&E.length<=20&&!E.includes(" ")&&!ma(E))try{let G=getComputedStyle(S);P=G.textOverflow==="ellipsis"&&G.overflow!=="visible"}catch{}(O||P)&&v.push({el:S,mode:O?"文本":"CSS"})}),console.log(`[KikiMeter] ${v.length} 个被省略显示的元素(文本省略号或 CSS ellipsis):`),console.log("====================================================="),v.forEach(({el:S,mode:E},O)=>{let P=S.parentElement;console.log(`  #${O} [${E}] | 文本="${S.textContent.trim()}" | 类名="${S.className}" | 父级类名="${P?P.className:"?"}" | 父级子元素=${P?P.children.length:0} | 父级同级元素=${P&&P.parentElement?P.parentElement.children.length:0}`)}),console.log("====================================================="),v}s(Yp,"scanGuildNamesByEllipsis");function Qp(){let v=[...document.querySelectorAll('[class*="MiniUnit_name"]')];return console.log(`[KikiMeter] ${v.length} 个元素 [class*="MiniUnit_name"](预计人数约 ${le||"?"}) :`),console.log("====================================================="),v.forEach((S,E)=>{console.log(`  #${E} | 文本="${S.textContent.trim()}"`)}),console.log("====================================================="),v.map(S=>S.textContent.trim())}s(Qp,"countMiniUnitNames");function eg(){let v=[...document.querySelectorAll('[class*="MiniUnit_name"]')];if(v.length===0)return console.warn("[KikiMeter] 没有找到 MiniUnit 单元,请确认公会试炼正在进行。"),[];let S=v.map(V=>V.closest('[class*="MiniUnit_miniUnit"]')||V.parentElement),E=S.map(V=>(V.className||"")+""),O={};E.forEach(V=>{O[V]=(O[V]||0)+1});let P=Object.entries(O).sort((V,F)=>F[1]-V[1])[0][0],G=[];return S.forEach((V,F)=>{E[F]!==P&&G.push({index:F,name:v[F].textContent.trim(),classes:E[F]})}),console.log(`[KikiMeter] 主流类名(${O[P]}/${S.length} 个单元) : "${P}"`),console.log(`[KikiMeter] ${G.length} 个异常单元(可能是本地玩家):`),console.log("====================================================="),G.forEach(V=>{console.log(`  #${V.index} | 姓名="${V.name}" | 类名="${V.classes}"`)}),console.log("====================================================="),G.length===0?console.warn("[KikiMeter] 未发现异常单元;当前服务器可能没有本地玩家高亮,或者所有单元的样式完全相同。请观察角色单元是否存在边框或高亮。"):G.length>1&&console.warn("[KikiMeter] 发现多个异常单元,仅凭类名无法确定本地玩家,请与页面显示进行比对。"),G}return s(eg,"scanForOutlierMiniUnit"),{handleMessage:lc,bus:e,isGuildBattle:s(()=>xe,"isGuildBattle"),isGuildBattleActive:s(()=>xe&&!tt,"isGuildBattleActive"),isInLabyrinth:s(()=>Q,"isInLabyrinth"),getCharacterId:s(()=>A,"getCharacterId"),getCombatKey:s(()=>I,"getCombatKey"),testHandleMessage:lc,testSetNow(v){R=Number.isFinite(v)?Number(v):null},scanGuildNames:Xr,scanGuildNamesAttrs:Es,scanGuildNamesLoose:vn,scanGuildNamesByLocalName:Ts,previewGuildNames:Xp,debugCombatUnitNames:Jp,scanGuildNamesByEllipsis:Yp,countMiniUnitNames:Qp,scanForOutlierMiniUnit:eg}})();var Et=s((e,t)=>X.getLanguage()==="en"?t:e,"langText"),l7=1e-4;function gp(e,t,a){let n=e.reduce((o,r)=>o+(Number(r.damage)||0),0),i=Math.max(0,(Number(t)||0)-n);return i>l7?[...e,{name:Et("无法归属伤害","Unattributed Damage"),synthetic:"unattributed-damage",classId:"unknown",damage:i,dps:a>0?i/a:0,healing:0,hps:0,taken:0,takenPs:0,kills:0,breakdown:null,takenBreakdown:null}]:e}s(gp,"withUnattributedDamage");var gt=(()=>{let e="kikimeter:history:v2",t="kikimeter:history:v1",a="kikimeter:active:v2",i=0;function o(f){try{let g=JSON.parse(f||"[]");return Array.isArray(g)?g:[]}catch{return[]}}s(o,"validArray");function r(){if(localStorage.getItem(e)!==null)return;let f=o(localStorage.getItem(t)).map((g,h)=>({...g,schemaVersion:2,id:"legacy-"+(g.date||h),type:g.type||"combat",characterId:"legacy",combatKey:"legacy-"+h,startedAt:g.date,endedAt:g.date,durationMs:(g.durationSeconds||0)*1e3,fragments:[{reason:"旧版记录",startedAt:g.date,endedAt:g.date,durationMs:(g.durationSeconds||0)*1e3,teamDamage:g.teamDamage||0}]}));try{localStorage.setItem(e,JSON.stringify(f))}catch{}}s(r,"migrateLegacy");function c(f,g=0){return String(f&&(f.id||f.combatKey||f.date||f.startedAt)||"history-"+g)}s(c,"entryKey");function l(f){let g={combat:0,labyrinth:0,trial:0};return f.filter(h=>{if(h&&h.favorite===!0)return!0;let _=h&&h.type||"combat";return g[_]=(g[_]||0)+1,g[_]<=10})}s(l,"trim");function d(){r();let f=o(localStorage.getItem(e)),g=l(f);if(g.length!==f.length)try{localStorage.setItem(e,JSON.stringify(g))}catch{}return g}s(d,"load");function m(f){let g=l(f);for(;g.length>=0;)try{return localStorage.setItem(e,JSON.stringify(g)),!0}catch{let _=[...g].reverse().findIndex(y=>y&&y.favorite!==!0);if(_<0)return!1;g.splice(g.length-1-_,1)}return!1}s(m,"writeWithQuotaRetry");function p(f){let g=f.type||"combat";f.type=g;let h=d(),_=c(f),y=h.find((k,C)=>c(k,C)===_);y&&y.favorite===!0&&f.favorite!==!1&&(f.favorite=!0);let w=h.filter((k,C)=>c(k,C)!==_);w.unshift(f),m(w),i++}s(p,"save");function b(f,g){let h=d(),_=h.findIndex((k,C)=>c(k,C)===String(f));if(_<0)return!1;let y=g({...h[_]});y===null?h.splice(_,1):h[_]=y;let w=m(h);return w&&i++,w}return s(b,"updateEntry"),{push(f){p(f)},getAll(f){let g=d();return f?g.filter(h=>(h.type||"combat")===f):g},clear(f){if(!f){try{localStorage.removeItem(e)}catch{}i++;return}let g=d().filter(h=>(h.type||"combat")!==f);try{localStorage.setItem(e,JSON.stringify(g))}catch{}i++},setFavorite(f,g){return b(f,h=>({...h,favorite:!!g,favoritedAt:g?new Date().toISOString():void 0}))},rename(f,g){return b(f,h=>{let _=String(g||"").trim().slice(0,40);return{...h,customName:_||void 0}})},remove(f){return b(f,()=>null)},entryKey:c,saveActive(f){try{return localStorage.setItem(a,JSON.stringify(f)),!0}catch{return!1}},loadActive(){try{let f=JSON.parse(localStorage.getItem(a)||"null");return f&&f.schemaVersion===2?f:null}catch{return null}},clearActive(){try{localStorage.removeItem(a)}catch{}},getRevision:s(()=>i,"getRevision"),keys:{history:e,active:a}}})(),Na=(()=>{let e="current",t=-1,a="",n=[],i=new EventTarget,o=s(b=>"fight:"+encodeURIComponent(String(b)),"fightKey"),r=s((b,f)=>"fragment:"+encodeURIComponent(String(b))+":"+f,"fragmentKey");function c(b,f){return b.id||b.combatKey||b.date||"history-"+f}s(c,"entryId");function l(b){let f=new Date(b.date||b.startedAt||Date.now()),g=s(w=>String(w).padStart(2,"0"),"pad"),h=b.type||"combat",_=X.getLanguage()==="en"?{combat:"Combat",labyrinth:"Labyrinth",trial:"Trial"}[h]||"Combat":{combat:"普通",labyrinth:"迷宫",trial:"试炼"}[h]||"普通",y=(b.players||[]).length;return X.getLanguage()==="en"?`${_} ${y} players ${f.getMonth()+1}/${f.getDate()} ${g(f.getHours())}:${g(f.getMinutes())}`:`${_} ${y}人 ${f.getMonth()+1}月${f.getDate()}日${g(f.getHours())}:${g(f.getMinutes())}`}s(l,"dateLabel");function d(){let b=gt.getRevision(),f=X.getLanguage();if(b===t&&f===a)return n;let g=[{key:"current",label:Et("当前战斗","Current combat"),current:!0}];return gt.getAll().map((_,y)=>({entry:_,index:y})).sort((_,y)=>{let w=+(y.entry.favorite===!0)-+(_.entry.favorite===!0);if(w)return w;if(_.entry.favorite===!0&&y.entry.favorite===!0){let x=new Date(y.entry.favoritedAt||y.entry.date||0)-new Date(_.entry.favoritedAt||_.entry.date||0);if(x)return x}let k={combat:0,labyrinth:1,trial:2},C=(k[_.entry.type||"combat"]??9)-(k[y.entry.type||"combat"]??9);return C||_.index-y.index}).forEach(({entry:_,index:y})=>{let w=c(_,y),k=_.favorite===!0,C=k?"favorite":_.type||"combat",x=k&&_.customName?_.customName:l(_);g.push({key:o(w),label:(k?"★ ":"")+x,entry:_,group:C,favorite:k});let T=Array.isArray(_.fragments)?_.fragments:[];T.length>1&&T.forEach((A,I)=>g.push({key:r(w,I),label:Et("↳ 重连片段 ","↳ Reconnect fragment ")+(I+1)+" · "+ca((Number(A.durationMs)||0)/1e3),entry:_,fragment:A,fragmentIndex:I,group:C,favorite:k}))}),t=b,a=f,n=g,n}s(d,"options");function m(){let b=d(),f=b.find(g=>g.key===e);return f||(e="current",b[0])}s(m,"resolve");function p(b){let f=d().some(h=>h.key===b)?b:"current";if(f===e)return m();e=f;let g=m();return i.dispatchEvent(new CustomEvent("change",{detail:g})),g}return s(p,"select"),{bus:i,options:d,resolve:m,select:p,getKey:s(()=>e,"getKey"),isCurrent:s(()=>e==="current","isCurrent")}})();function Vr(e){e&&e._menu&&(e._menu.remove(),e._menu=null),e&&Array.isArray(e._sideMenus)&&(e._sideMenus.forEach(t=>t.remove()),e._sideMenus=[]),e&&e._button&&(e._button.style.borderColor="rgba(212,175,55,.45)")}s(Vr,"closeSegmentPicker");function Di(e){Vr(e),e._collapsedGroups instanceof Set||(e._collapsedGroups=new Set),e._expandedEntries instanceof Set||(e._expandedEntries=new Set);let t=we("div",{position:"fixed",zIndex:"10003",width:"300px",maxHeight:"min(390px,72vh)",overflowY:"auto",padding:"4px",boxSizing:"border-box",background:"rgba(14,14,14,.995)",border:"1px solid rgba(212,175,55,.55)",borderRadius:"4px",boxShadow:"0 7px 24px rgba(0,0,0,.85)",color:"#f2f2f2",fontSize:"11px"});t.id="kikimeter-segment-menu",t.dataset.kikimeter="true",e._menu=t;let a=s(()=>{Xa(e),e._onChanged&&e._onChanged()},"notify"),n=Na.options(),i=s((m,p=!1)=>{let b=we("div",{display:"flex",alignItems:"center",minHeight:"28px",padding:p?"4px 6px 4px 18px":"4px 6px",boxSizing:"border-box",borderRadius:"3px",cursor:"pointer",whiteSpace:"nowrap"});b.dataset.segmentKey=m.key;let f=m.entry?gt.entryKey(m.entry):"";if((!p&&m.entry?n.filter(_=>_.fragment&&_.entry===m.entry):[]).length){let _=e._expandedEntries.has(f),y=we("button",{width:"18px",height:"20px",padding:"0",marginRight:"2px",flexShrink:"0",cursor:"pointer",background:"transparent",border:"none",color:"rgba(255,255,255,.62)",fontSize:"11px"});y.type="button",y.textContent=_?"▾":"▸",y.title=_?Et("收起重连片段","Collapse reconnect fragments"):Et("展开重连片段","Expand reconnect fragments"),y.addEventListener("click",w=>{w.stopPropagation(),_?e._expandedEntries.delete(f):e._expandedEntries.add(f),Di(e)}),b.appendChild(y)}let h=we("span",{overflow:"hidden",textOverflow:"ellipsis",flex:"1"});if(h.textContent=m.label,b.appendChild(h),b.addEventListener("mouseenter",()=>{b.style.background="rgba(212,175,55,.13)"}),b.addEventListener("mouseleave",()=>{b.style.background="transparent"}),b.addEventListener("click",()=>{Na.select(m.key),Vr(e),a()}),m.entry&&!p){let _=s((C,x,T,A)=>{let I=document.createElement("button");return I.type="button",I.textContent=C,I.title=x,Object.assign(I.style,{width:"23px",height:"22px",padding:"0",marginLeft:"2px",cursor:"pointer",background:"transparent",border:"none",borderRadius:"3px",color:T,fontSize:"14px",lineHeight:"20px",flexShrink:"0"}),I.addEventListener("mouseenter",()=>I.style.background="rgba(255,255,255,.12)"),I.addEventListener("mouseleave",()=>I.style.background="transparent"),I.addEventListener("click",R=>{R.stopPropagation(),A(R)!==!1&&(a(),Di(e))}),I},"miniButton"),y=_(m.entry.favorite===!0?"★":"☆",m.entry.favorite===!0?Et("取消收藏","Remove favorite"):Et("收藏","Favorite"),"#facc15",()=>gt.setFavorite(f,m.entry.favorite!==!0)),w=m.entry.favorite===!0?_("✎",Et("修改收藏名称","Rename favorite"),"#93c5fd",()=>{let C=m.entry.customName||String(m.label||"").replace(/^★\s*/,""),x=document.createElement("input");x.type="text",x.value=C,x.maxLength=40,Object.assign(x.style,{minWidth:"0",height:"22px",flex:"1",boxSizing:"border-box",padding:"2px 5px",background:"#090909",border:"1px solid #93c5fd",borderRadius:"3px",outline:"none",color:"#fff",font:"inherit"});let T=!1,A=s(I=>{T||(T=!0,I&&gt.rename(f,x.value),a(),Di(e))},"finish");return x.addEventListener("mousedown",I=>I.stopPropagation()),x.addEventListener("click",I=>I.stopPropagation()),x.addEventListener("keydown",I=>{I.stopPropagation(),I.key==="Enter"?(I.preventDefault(),A(!0)):I.key==="Escape"&&(I.preventDefault(),A(!1))}),x.addEventListener("blur",()=>A(!0),{once:!0}),h.replaceWith(x),x.focus(),x.select(),!1}):null,k=_("✕",Et("删除记录","Delete record"),"#f87171",()=>{let C=Na.resolve();C.entry&&gt.entryKey(C.entry)===f&&Na.select("current"),gt.remove(f)});w&&b.append(w),b.append(y,k)}t.appendChild(b)},"addRecord"),o=n.find(m=>m.current);o&&i(o),[["favorite",Et("收藏","Favorites")],["combat",Et("普通","Combat")],["labyrinth",Et("迷宫","Labyrinth")],["trial",Et("试炼","Trial")]].forEach(([m,p])=>{let b=n.filter(_=>!_.current&&_.group===m);if(!b.length)return;let f=b.filter(_=>!_.fragment).length,g=e._collapsedGroups.has(m),h=we("div",{display:"flex",alignItems:"center",gap:"5px",padding:"7px 7px 4px",color:St,fontSize:"10px",fontWeight:"700",borderTop:"1px solid rgba(255,255,255,.08)",cursor:"pointer",userSelect:"none"});h.textContent=(g?"▸ ":"▾ ")+p+"("+f+")",h.title=g?Et(`展开${p}`,`Expand ${p}`):Et(`折叠${p}`,`Collapse ${p}`),h.addEventListener("click",_=>{_.stopPropagation(),g?e._collapsedGroups.delete(m):e._collapsedGroups.add(m),Di(e)}),t.appendChild(h),g||b.filter(_=>!_.fragment).forEach(_=>{i(_),e._expandedEntries.has(gt.entryKey(_.entry))&&b.filter(y=>y.fragment&&y.entry===_.entry).forEach(y=>i(y,!0))})}),document.body.appendChild(t);let r=e.getBoundingClientRect(),c=t.offsetHeight||300,l=r.bottom+3+c<=window.innerHeight?r.bottom+3:Math.max(4,r.top-c-3),d=Math.max(4,Math.min(r.right-300,window.innerWidth-304));Object.assign(t.style,{left:d+"px",top:l+"px"}),e._button.style.borderColor=St}s(Di,"buildSegmentMenu");function Gr(e,t=!1){let a=we("div",{position:"relative",minWidth:"0",flex:t?"none":"1"});a.dataset.kikimeter="true",a.dataset.segmentPicker="true",a._compact=t;let n=document.createElement("button");n.type="button",Object.assign(n.style,{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"6px",width:"100%",minWidth:"0",background:"#121212",color:"#f2f2f2",border:"1px solid rgba(212,175,55,.45)",borderRadius:"3px",padding:"4px 6px",fontSize:"11px",cursor:"pointer"});let i=we("span",{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),o=we("span",{opacity:".65"});if(o.textContent="▾",t){Object.assign(n.style,{width:"25px",height:"23px",padding:"0",justifyContent:"center",background:"transparent",borderColor:"transparent"});let r=Ia(Ea.history,"");Object.assign(r.style,{width:"17px",height:"17px",objectFit:"contain",pointerEvents:"none"}),i.appendChild(r),n.appendChild(i)}else n.append(i,o);return a.appendChild(n),a._button=n,a._text=i,a._onChanged=e,n.addEventListener("mousedown",r=>r.stopPropagation()),n.addEventListener("click",r=>{r.stopPropagation(),a._menu?Vr(a):Di(a)}),document.addEventListener("pointerdown",r=>{a._menu&&!a.contains(r.target)&&!a._menu.contains(r.target)&&Vr(a)}),Xa(a),a}s(Gr,"buildSegmentPicker");function Xa(e){if(!e||!e._text)return;let t=Na.resolve();e.value=t.key,e._compact||(e._text.textContent=t.label);let a=X.getLanguage()==="en";e.title=(t.current?a?"Select combat record":"选择战斗记录":(a?"Viewing: ":"正在查看:")+t.label)+(e._compact?a?" | Open combat history":"|点击展开历史":"")}s(Xa,"refreshSegmentSelect");var Ot=(()=>{function e(r){let c=r&&Array.isArray(r.damage)?r.damage:[],l=r&&Array.isArray(r.boss)?r.boss:[];return c.map((d,m)=>({dps:(Number(d)||0)/2,isBoss:!!l[m]}))}s(e,"graphPoints");function t(r,c,l,d=""){let m=new Map;Object.entries(r||{}).forEach(([g,h])=>{let _=pt.canonical(g,d),y=Number(h)||0;if(y<=0)return;let w=m.get(_)||{value:0,displaySource:_};w.value+=y,pt.isCombined(g)&&(w.displaySource=g),m.set(_,w)});let p=[...m].map(([g,h])=>({source:h.displaySource,label:pt.label(h.displaySource),value:h.value})),b=p.reduce((g,h)=>g+h.value,0),f=Math.max(0,(Number(c)||0)-b);return f>1e-4&&p.push({source:"legacy",label:pt.label("legacy"),value:f}),p.sort((g,h)=>h.value-g.value).map(g=>({...g,ps:l>0?g.value/l:0,pct:c>0?g.value*100/c:0}))}s(t,"damageBreakdown");function a(r,c,l){let d=Object.entries(r||{}).map(([b,f])=>({source:b,label:_n.label(b),icon:_n.icon(b),value:Number(f)||0})).filter(b=>b.value>0),m=d.reduce((b,f)=>b+f.value,0),p=Math.max(0,(Number(c)||0)-m);return p>1e-4&&d.push({source:"",label:X.getLanguage()==="en"?"Legacy / Unknown Source":"旧记录/未知来源",icon:pt.icon("unknown"),value:p}),d.sort((b,f)=>f.value-b.value).map(b=>({...b,ps:l>0?b.value/l:0,pct:c>0?b.value*100/c:0}))}s(a,"takenBreakdown");function n(){let r=de.getElapsedSeconds(),c=de.getAllPlayerNames(),l=de.getTeamDamage(),d=c.map(m=>({name:m,classId:qe.classFor(m),damage:de.getPlayerDamage(m),dps:de.getPlayerDps(m),healing:de.getPlayerHealing(m),hps:de.getPlayerHps(m),taken:de.getPlayerTaken(m),takenPs:de.getPlayerTakenPs(m),kills:de.getPlayerKills(m),breakdown:t(de.getPlayerDamageSources(m),de.getPlayerDamage(m),r,m),takenBreakdown:a(de.getPlayerTakenSources(m),de.getPlayerTaken(m),r)}));return{key:"current",label:Et("当前战斗","Current combat"),current:!0,type:de.getMeta().type||"combat",elapsed:r,teamDamage:l,teamDps:de.getTeamDps(),teamKills:de.getTeamKills(),fragmentCount:de.getFragments().length,graphPoints:de.getFullGraphPoints(),players:gp(d,l,r)}}s(n,"current");function i(r){let c=r.entry||{},l=r.fragment,d=l?(Number(l.durationMs)||0)/1e3:Number(c.durationSeconds)||(Number(c.durationMs)||0)/1e3,m;if(l){let f=l.players||{},g=f.damage||{},h=f.healing||{},_=f.taken||{},y=f.kills||{},w=[...new Set([...Object.keys(g),...Object.keys(h),...Object.keys(_),...Object.keys(y)])],k=f.sources||{},C=f.takenSources||{};m=w.map(x=>({name:x,classId:(c.classes||{})[x],damage:Number(g[x])||0,healing:Number(h[x])||0,taken:Number(_[x])||0,kills:Number(y[x])||0,dps:d>0?(Number(g[x])||0)/d:0,hps:d>0?(Number(h[x])||0)/d:0,takenPs:d>0?(Number(_[x])||0)/d:0,breakdown:t(k[x],Number(g[x])||0,d,x),takenBreakdown:a(C[x],Number(_[x])||0,d)}))}else m=(c.players||[]).map(f=>({...f,takenPs:d>0?(Number(f.taken)||0)/d:0,breakdown:t(f.sources,Number(f.damage)||0,d,f.name),takenBreakdown:a(f.takenSources,Number(f.taken)||0,d)}));m.forEach(f=>{f.classId&&qe.setDetected(f.name,f.classId)});let p=l?Number(l.teamDamage)||m.reduce((f,g)=>f+(Number(g.damage)||0),0):Number(c.teamDamage)||0,b=m.reduce((f,g)=>f+(Number(g.kills)||0),0);return{key:r.key,label:r.label,current:!1,type:c.type||"combat",elapsed:d,teamDamage:p,teamDps:d>0?p/d:0,teamKills:b,fragmentCount:l?1:(c.fragments||[]).length||1,graphPoints:l?[]:e(c.graph),players:gp(m,p,d)}}s(i,"historical");function o(){let r=Na.resolve();return r.current?n():i(r)}return s(o,"get"),{get:o}})();var ks="#FF3F34",Ss=s((e,t)=>X.getLanguage()==="en"?t:e,"langText");function d7(){let t=document.createElement("canvas"),a=440,n=160;t.width=a,t.height=n,Object.assign(t.style,{width:"100%",height:"80px",display:"block",borderRadius:"4px",background:"rgba(0,0,0,0.3)"});let i={top:14,right:8,bottom:22,left:50},o=a-i.left-i.right,r=n-i.top-i.bottom;function c(d,m){if(d<=0)return 100;let p=d/m,b=Math.pow(10,Math.floor(Math.log10(p))),f=p/b,g;return f<1.5?g=1:f<3.5?g=2:f<7.5?g=5:g=10,g*b}s(c,"niceInterval");function l(d){t.style.display="block";let m=t.getContext("2d");m.clearRect(0,0,a,n);let p=8,b=d.map((I,R)=>{let z=0,j=0;for(let W=Math.max(0,R-p+1);W<=R;W++)z+=d[W].dps,j++;return{dps:z/j,isBoss:I.isBoss}}),f=b.length,g=Math.max(...b.map(I=>I.dps),1),h=c(g,4),_=Math.ceil(g/h)*h;function y(I){return i.left+I/(f-1)*o}s(y,"xOf");function w(I){return i.top+r*(1-I/_)}s(w,"yOf"),m.font="18px monospace",m.textAlign="right";for(let I=0;I<=_;I+=h){let R=w(I);m.beginPath(),m.strokeStyle="rgba(255,255,255,0.08)",m.lineWidth=1,m.setLineDash([4,4]),m.moveTo(i.left,R),m.lineTo(i.left+o,R),m.stroke(),m.setLineDash([]),m.fillStyle="rgba(255,255,255,0.45)";let z=I>=1e3?(I/1e3).toFixed(I%1e3===0?0:1)+"k":String(Math.round(I));m.fillText(z,i.left-4,R+6)}let k=f*2e3/6e4,C;k<=6?C=1:k<=15?C=2:k<=30?C=5:C=10;let x=Math.round(C*6e4/2e3);m.font="17px monospace",m.textAlign="center";for(let I=1;;I++){let R=f-1-I*x;if(R<0)break;let z=y(R);m.beginPath(),m.strokeStyle="rgba(255,255,255,0.12)",m.lineWidth=1,m.setLineDash([2,4]),m.moveTo(z,i.top),m.lineTo(z,i.top+r),m.stroke(),m.setLineDash([]),m.fillStyle="rgba(255,255,255,0.35)",m.fillText("-"+I*C+"m",z,n-4)}m.textAlign="right",m.fillStyle="rgba(255,255,255,0.3)",m.fillText("now",a-2,n-4);let T=null,A=b.map((I,R)=>({x:y(R),y:w(I.dps),isBoss:I.isBoss}));A.forEach((I,R)=>{let z=I.isBoss?ks:St;z!==T&&(T!==null&&m.stroke(),m.beginPath(),m.strokeStyle=z,m.lineWidth=2.5,R>0?m.moveTo(A[R-1].x,A[R-1].y):m.moveTo(I.x,I.y),T=z),m.lineTo(I.x,I.y)}),T!==null&&m.stroke(),[!1,!0].forEach(I=>{m.fillStyle=I?"rgba(255,63,52,0.12)":"rgba(0,116,116,0.12)",m.beginPath();let R=!1;A.forEach((z,j)=>{if(z.isBoss!==I){R&&(m.lineTo(z.x,i.top+r),m.closePath(),m.fill(),R=!1);return}R||(m.beginPath(),m.moveTo(z.x,i.top+r),R=!0),m.lineTo(z.x,z.y)}),R&&(m.lineTo(A[f-1].x,i.top+r),m.closePath(),m.fill())}),m.beginPath(),m.strokeStyle="rgba(255,255,255,0.15)",m.lineWidth=1,m.moveTo(i.left,i.top),m.lineTo(i.left,i.top+r),m.lineTo(i.left+o,i.top+r),m.stroke()}return s(l,"render"),{canvas:t,render:l}}s(d7,"buildGraph");function Zr(){let a=document.createElement("canvas");Object.assign(a.style,{width:"100%",height:"112px",display:"block",borderRadius:"5px",boxSizing:"border-box",background:"linear-gradient(180deg,rgba(18,22,28,.94),rgba(6,8,12,.94))",border:"1px solid rgba(212,175,55,.24)"});function n(c,l=3){if(c<=0)return 1;let d=c/l,m=10**Math.floor(Math.log10(d)),p=d/m;return(p<1.5?1:p<3.5?2:p<7.5?5:10)*m}s(n,"niceInterval");function i(c,l){if(l.length){c.moveTo(l[0].x,l[0].y);for(let d=1;d<l.length;d++){let m=l[d-1],p=l[d],b=(m.x+p.x)/2;c.bezierCurveTo(b,m.y,b,p.y,p.x,p.y)}}}s(i,"traceSmooth");function o(c,l){return c>=60?"-"+Math.round(c/60)+(l?"m":"分"):"-"+Math.round(c)+(l?"s":"秒")}s(o,"durationLabel");function r(c){let l=Array.isArray(c)?c:[],d=X.getLanguage()==="en",m=Math.max(240,Math.round(a.getBoundingClientRect().width||320)),p=112,b=Math.max(1,Math.min(Number(window.devicePixelRatio)||1,2));(a.width!==Math.round(m*b)||a.height!==Math.round(p*b))&&(a.width=Math.round(m*b),a.height=Math.round(p*b));let f=a.getContext("2d");f.setTransform(b,0,0,b,0,0),f.clearRect(0,0,m,p),a.title=d?"Smoothed total team DPS trend; red areas indicate boss combat.":"平滑后的团队总 DPS 趋势;红色区段表示 Boss 战斗。";let g={top:27,right:10,bottom:19,left:39},h=m-g.left-g.right,_=p-g.top-g.bottom;if(f.font="600 9px 'Microsoft YaHei','Noto Sans SC',sans-serif",f.textBaseline="middle",f.fillStyle="rgba(255,255,255,.72)",f.textAlign="left",f.fillText(d?"TEAM DPS TREND":"团队 DPS 趋势",10,13),!l.length){f.fillStyle="rgba(255,255,255,.34)",f.textAlign="center",f.font="10px 'Microsoft YaHei','Noto Sans SC',sans-serif",f.fillText(d?"Waiting for combat data":"等待战斗数据",m/2,62);return}let y=Math.max(2,Math.min(6,Math.round(l.length/20)||2)),w=l.map(($,Y)=>{let re=0,J=0;for(let ne=Math.max(0,Y-y+1);ne<=Y;ne++){let Ae=ne-(Y-y);re+=(Number(l[ne].dps)||0)*Ae,J+=Ae}return{dps:J?re/J:0,isBoss:!!$.isBoss}}),k=w.length,C=Math.max(...w.map($=>$.dps),0),x=Math.max(C,1),T=n(x),A=Math.max(T,Math.ceil(x/T)*T),I=s($=>k<=1?g.left+h:g.left+$/(k-1)*h,"xOf"),R=s($=>g.top+_*(1-Math.max(0,$)/A),"yOf");f.font="8px 'Microsoft YaHei','Noto Sans SC',sans-serif",f.textAlign="right",f.textBaseline="middle";for(let $=0;$<=A+1e-4;$+=T){let Y=R($);f.beginPath(),f.strokeStyle="rgba(255,255,255,.075)",f.lineWidth=1,f.moveTo(g.left,Y+.5),f.lineTo(m-g.right,Y+.5),f.stroke(),f.fillStyle="rgba(255,255,255,.38)",f.fillText(bt($),g.left-5,Y)}let z=Math.max(0,(k-1)*2e3/1e3);f.textAlign="center",f.textBaseline="bottom",f.fillStyle="rgba(255,255,255,.32)",[0,.5,1].forEach($=>{let Y=g.left+h*$;$>0&&$<1&&(f.beginPath(),f.strokeStyle="rgba(255,255,255,.045)",f.moveTo(Y,g.top),f.lineTo(Y,g.top+_),f.stroke());let re=z*(1-$),J=$===1?d?"NOW":"现在":o(re,d);f.fillText(J,Y,p-3)});let j=-1;for(let $=0;$<=k;$++){let Y=$<k&&w[$].isBoss;if(Y&&j<0&&(j=$),!Y&&j>=0){let re=k>1?h/(k-1)/2:0,J=Math.max(g.left,I(j)-re),ne=Math.min(m-g.right,I($-1)+re);f.fillStyle="rgba(255,63,52,.07)",f.fillRect(J,g.top,ne-J,_),j=-1}}let W=w.map(($,Y)=>({x:I(Y),y:R($.dps),isBoss:$.isBoss,value:$.dps})),B=f.createLinearGradient(0,g.top,0,g.top+_);B.addColorStop(0,"rgba(212,175,55,.30)"),B.addColorStop(1,"rgba(212,175,55,.015)"),f.beginPath(),i(f,W),f.lineTo(W[k-1].x,g.top+_),f.lineTo(W[0].x,g.top+_),f.closePath(),f.fillStyle=B,f.fill(),f.save(),f.shadowColor="rgba(212,175,55,.45)",f.shadowBlur=5,f.beginPath(),i(f,W),f.strokeStyle=St,f.lineWidth=2,f.lineCap="round",f.lineJoin="round",f.stroke(),f.restore();for(let $=1;$<k;$++)W[$].isBoss&&(f.beginPath(),f.moveTo(W[$-1].x,W[$-1].y),f.lineTo(W[$].x,W[$].y),f.strokeStyle=ks,f.lineWidth=2.2,f.lineCap="round",f.stroke());let M=w.findIndex($=>$.dps===C),N=W[Math.max(0,M)],q=W[k-1];f.beginPath(),f.arc(N.x,N.y,2.3,0,Math.PI*2),f.fillStyle="#fff0a8",f.fill(),f.beginPath(),f.arc(q.x,q.y,3.2,0,Math.PI*2),f.fillStyle=q.isBoss?ks:St,f.fill(),f.strokeStyle="#17130a",f.lineWidth=1,f.stroke(),f.textAlign="right",f.textBaseline="middle",f.font="700 10px 'Microsoft YaHei','Noto Sans SC',sans-serif",f.fillStyle=q.isBoss?"#ff817a":"#f5d568",f.fillText(mt(w[k-1].dps)+" DPS",m-9,13)}return s(r,"render"),{canvas:a,render:r}}s(Zr,"buildDetailsGraph");function hp(e,t,a){let n=document.getElementById("kikimeter-class-picker");n&&n.remove();let i=document.createElement("select");i.id="kikimeter-class-picker",i.dataset.kikimeter="true",i.append(new Option(Ss("自动识别","Auto-detect"),"auto")),Object.entries(qe.definitions).filter(([c])=>c!=="unknown").forEach(([c,l])=>i.append(new Option(l.label,c))),i.value=X.getClassOverride(e)||"auto";let o=t.getBoundingClientRect();Object.assign(i.style,{position:"fixed",zIndex:"10002",left:o.left+"px",top:o.bottom+"px",background:"#171717",color:"#fff",border:"1px solid #d4af37",borderRadius:"3px",padding:"3px"});let r=s(()=>setTimeout(()=>i.remove(),0),"finish");i.addEventListener("change",()=>{qe.setOverride(e,i.value),r(),a()}),i.addEventListener("blur",r),document.body.appendChild(i),i.focus()}s(hp,"openClassPicker");var la=(()=>{let e=null,t=null,a="",n=null,i=null,o=s((g,h)=>X.getLanguage()==="en"?h:g,"langText");function r(){n!==null&&clearTimeout(n),n=null}s(r,"cancelClose");function c(){r(),e&&e.remove(),e=null,t=null,a="",i=null}s(c,"close");function l(){r(),n=setTimeout(c,140)}s(l,"scheduleClose");function d(g){if(!e||!g)return;let h=g.getBoundingClientRect(),_=Math.min(340,window.innerWidth-12),y=h.right+6+_<=window.innerWidth?h.right+6:Math.max(6,h.left-_-6),w=e.offsetHeight||180,k=Math.max(6,Math.min(h.top,window.innerHeight-w-6));Object.assign(e.style,{width:_+"px",left:y+"px",top:k+"px"})}s(d,"position");function m(g){if(!e||!g)return;let h=e.scrollTop;e.innerHTML="";let _=qe.get(g.name),y=we("div",{display:"flex",alignItems:"center",gap:"6px",padding:"6px 8px",fontWeight:"700",borderBottom:"1px solid rgba(255,255,255,.13)",color:"#fff"}),w=Ia(_.icon,_.label);Object.assign(w.style,{width:"20px",height:"20px",objectFit:"contain"});let k=we("span",{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});k.textContent=g.name+" · "+(g.breakdownTitle||o("伤害构成","Damage Breakdown")),y.append(w,k),e.appendChild(y);let C=Array.isArray(g.breakdown)?g.breakdown:[],x=C.length?Math.max(...C.map(T=>Number(T.value)||0),1):1;if(C.forEach((T,A)=>{let I=we("div",{position:"relative",height:"27px",margin:"3px 5px",overflow:"hidden",borderRadius:"2px",background:"rgba(0,0,0,.46)",border:"1px solid rgba(255,255,255,.06)"}),R=we("div",{position:"absolute",inset:"0 auto 0 0",width:(100*(Number(T.value)||0)/x).toFixed(2)+"%",background:`linear-gradient(90deg,${_.color}c9,${_.color}55)`}),z=we("div",{position:"absolute",inset:"0",display:"flex",alignItems:"center",gap:"5px",padding:"1px 5px",textShadow:"0 1px 2px #000"}),j=we("span",{width:"15px",textAlign:"right",fontSize:"10px",opacity:".8"});j.textContent=String(A+1)+".";let W=T.label||pt.label(T.source),B=Ia(T.icon||pt.icon(T.source,g.name),W);Object.assign(B.style,{width:"20px",height:"20px",objectFit:"contain",flexShrink:"0",filter:"drop-shadow(0 1px 1px #000)"});let M=we("span",{flex:"1",minWidth:"40px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontWeight:"600"});M.textContent=W,M.title=M.textContent;let N=we("span",{fontSize:"10px",fontVariantNumeric:"tabular-nums",whiteSpace:"nowrap"});N.textContent=bt(T.value)+"("+mt(T.ps)+" "+(g.breakdownRateLabel||"DPS")+","+(Number(T.pct)||0).toFixed(1)+"%)",z.append(j,B,M,N),I.append(R,z),e.appendChild(I)}),!C.length){let T=we("div",{padding:"14px",textAlign:"center",opacity:".55"});T.textContent=g.breakdownEmpty||o("暂无伤害来源","No damage sources"),e.appendChild(T)}d(i),e.scrollTop=h}s(m,"render");function p(g,h,_){r(),i=g,t=_,a=h.name,e||(e=we("div",{position:"fixed",zIndex:"10004",maxHeight:"min(420px,calc(100vh - 12px))",overflowY:"auto",boxSizing:"border-box",background:"linear-gradient(180deg,rgba(25,25,25,.99),rgba(7,7,7,.99))",border:"1px solid rgba(212,175,55,.72)",borderRadius:"5px",boxShadow:"0 8px 30px rgba(0,0,0,.9)",color:"#f2f2f2",fontSize:"11px"}),e.dataset.kikimeter="true",e.addEventListener("mouseenter",r),e.addEventListener("mouseleave",l),document.body.appendChild(e)),m(h)}s(p,"show");function b(g){if(!e)return!1;let h=(g||[]).find(_=>_.name===a);return h&&Array.isArray(h.breakdown)?m(h):c(),!!e}s(b,"update");function f(g){return!!e&&t===g}return s(f,"isOpenFor"),{show:p,update:b,isOpenFor:f,scheduleClose:l,cancelClose:r,close:c}})();function Pi(e,t,a){if(la.isOpenFor(e)&&la.update(t))return;e.innerHTML="";let n=t.length?Math.max(...t.map(i=>i.value),1):1;if(t.forEach((i,o)=>{let r=i.synthetic==="unattributed-damage",c=r?qe.definitions.unknown:qe.get(i.name),l=we("div",{position:"relative",height:"24px",margin:"2px 0",overflow:"hidden",minHeight:"24px",flexShrink:"0",boxSizing:"border-box",borderRadius:"2px",background:"rgba(0,0,0,.42)",border:"1px solid rgba(255,255,255,.06)",color:"#fff"});l.dataset.player=i.name;let d=we("div",{position:"absolute",left:"0",top:"0",bottom:"0",width:(100*i.value/n).toFixed(2)+"%",background:`linear-gradient(90deg,${c.color}d9,${c.color}70)`,boxShadow:`inset 0 0 5px ${c.color}`}),m=we("div",{position:"absolute",inset:"0",display:"flex",alignItems:"center",gap:"4px",padding:"1px 5px",whiteSpace:"nowrap",textShadow:"0 1px 2px #000"}),p=we("span",{width:"18px",textAlign:"right",opacity:".85",fontSize:"11px"});p.textContent=String(o+1)+".";let b=Ia(c.icon,c.label);b.title=r?i.name:`${c.label}${Ss("|点击选择职业"," | Click to choose class")}`,Object.assign(b.style,{width:"19px",height:"19px",objectFit:"contain",flexShrink:"0",cursor:r?"default":"pointer",filter:"drop-shadow(0 1px 1px #000)"}),r||b.addEventListener("click",h=>{h.stopPropagation(),hp(i.name,b,a)});let f=we("span",{fontWeight:"600",overflow:"hidden",textOverflow:"ellipsis",flex:"1",minWidth:"30px"});f.textContent=i.name;let g=we("span",{fontSize:"11px",fontVariantNumeric:"tabular-nums",textAlign:"right"});g.textContent=Ss(`${bt(i.value)}(${mt(i.ps)} ${i.rateLabel||"DPS"},${i.pct.toFixed(1)}%)`,`${bt(i.value)} (${mt(i.ps)} ${i.rateLabel||"DPS"}, ${i.pct.toFixed(1)}%)`),Array.isArray(i.breakdown)&&(l.title=i.breakdownHover||(X.getLanguage()==="en"?"Hover to view damage breakdown":"悬停查看伤害构成"),l.addEventListener("mouseenter",()=>la.show(l,i,e)),l.addEventListener("mouseleave",la.scheduleClose)),m.append(p,b,f,g),l.append(d,m),e.appendChild(l)}),!t.length){let i=we("div",{padding:"14px",textAlign:"center",opacity:".5"});i.textContent=Ss("暂无战斗数据","No combat data"),e.appendChild(i)}}s(Pi,"renderDetailsRows");var Ja=(()=>{let e=s((H,ce)=>X.getLanguage()==="en"?ce:H,"langText"),t=s(H=>({legacy:["旧版记录","Legacy record"],archived:["归档","Archived"],reconnect:["断线续传","Reconnect continuation"],nextTier:["进入下一层","Entered next tier"],continued:["继续战斗","Combat continued"],anotherCombat:["开始另一场战斗","Another combat started"],manual:["手动结束","Ended manually"],trialEnded:["公会试炼阶段结束","Guild Trial stage ended"],characterSwitched:["切换角色","Character switched"],disconnected:["连接中断","Connection interrupted"],pageClosed:["页面关闭","Page closed"],pageResumed:["页面恢复","Page resumed"],combat:["战斗","Combat"]})[{旧版记录:"legacy",归档:"archived",断线续传:"reconnect",进入下一层:"nextTier",继续战斗:"continued",开始另一场战斗:"anotherCombat",手动结束:"manual",公会试炼阶段结束:"trialEnded",切换角色:"characterSwitched",连接中断:"disconnected",页面关闭:"pageClosed",页面恢复:"pageResumed",开始战斗:"combat",战斗结束:"combat",战斗:"combat"}[H]||H]?.[X.getLanguage()==="en"?1:0]||H||e("战斗","Combat"),"localizeReason"),a=2,n=212,i=180,o=!1,r=null,c=null,l=null,d=null,m=null,p="combat",b,f,g,h,_,y,w,k,C,x,T,A,I,R,z,j=null,W=null,B=X.getMainMode();B==="debug"&&!X.getDebugMode()&&(B="dps");let M={},N=s(()=>!!(window.matchMedia&&window.matchMedia("(max-width:700px), (pointer:coarse)").matches),"isMobileViewport"),q=s(()=>{let H=window.visualViewport,ce=Number(H?.offsetLeft)||0,oe=Number(H?.offsetTop)||0,te=Number(H?.width)||Number(window.innerWidth)||0,ke=Number(H?.height)||Number(window.innerHeight)||0;return{left:ce,top:oe,width:te,height:ke,right:ce+te,bottom:oe+ke}},"viewportBounds"),$=s(()=>document.querySelector('div[class*="Header_communityBuffs"]')?.getBoundingClientRect?.()??null,"communityBuffRect"),Y=s(H=>H&&Number.isFinite(Number(H.left))&&Number.isFinite(Number(H.top)),"isStoredPosition");function re(H,ce){return H?H.mobile||H.desktop?H[ce]??null:ce==="desktop"&&Y(H)?H:null:null}s(re,"readResponsivePosition");function J(H,ce,oe){let te=H?.mobile||H?.desktop?{...H}:{};return Y(H)&&!te.desktop&&(te.desktop=H),te[ce]=oe,te}s(J,"writeResponsivePosition");let ne=s((H,ce,oe)=>Math.max(ce,Math.min(H,oe)),"clamp");function Ae(){if([[h,"dps"],[_,"hps"],[y,"taken"],[w,"debug"]].forEach(([H,ce])=>{if(!H)return;let oe=B===ce;Object.assign(H.style,{color:oe?St:"rgba(255,255,255,.52)",background:oe?"rgba(212,175,55,.12)":"transparent",borderColor:oe?"rgba(212,175,55,.38)":"transparent"})}),k){let H=X.getShowGraph();Object.assign(k.style,{color:H?St:"rgba(255,255,255,.52)",background:H?"rgba(212,175,55,.12)":"transparent",borderColor:H?"rgba(212,175,55,.38)":"transparent"}),k.setAttribute("aria-pressed",H?"true":"false")}w&&(w.style.display=X.getDebugMode()?"":"none")}s(Ae,"refreshModeTabs");function L(H){B=["dps","hps","taken","debug"].includes(H)?H:"dps",B==="debug"&&!X.getDebugMode()&&(B="dps"),X.setMainMode(B),Ae(),vn(Ot.get())}s(L,"setMainMode");function ie(){let H=W?W.hidden:!X.getShowGraph();X.setShowGraph(H),W&&(W.hidden=!H,H&&j&&j.render(Ot.get().graphPoints||[])),k&&k.setAttribute("aria-pressed",H?"true":"false"),Ae()}s(ie,"toggleMainGraph");function Ee(){if(!T)return;let H=X.getLanguage()==="en";T.setAttribute("aria-checked",H?"true":"false"),T.title=H?"Switch to Chinese":"切换为英文",T._knob&&(T._knob.style.transform=H?"translateX(19px)":"translateX(0)"),T._label&&(T._label.textContent=H?"EN":"中")}s(Ee,"refreshLanguageSwitch");function ye(){let H=X.getLanguage()==="en";[[h,"伤害输出(DPS)","Damage Done (DPS)"],[_,"恢复量(HPS)","Healing (HPS)"],[y,"承受伤害(DTPS)","Damage Taken (DTPS)"],[k,"显示或隐藏 DPS 趋势","Show or hide DPS trend"],[w,"职业调试","Class Debug"],[C,"设置","Settings"],[A,"结束并新建记录","End fight and start a new record"],[I,"复制统计","Copy statistics"],[R,"隐藏面板","Hide panel"]].forEach(([ce,oe,te])=>{ce&&(ce.title=H?te:oe)}),Xa(g),z&&(z.textContent=H?"Click each combat unit to identify its class accurately and cache it permanently.":"点击战斗界面中的人物,可准确识别职业并永久缓存。")}s(ye,"refreshToolbarLanguage");function Re(){la.close(),D(),X.setLanguage(X.getLanguage()==="zh"?"en":"zh"),Ee(),ye(),vn(Ot.get())}s(Re,"toggleLanguage");function Ue(){if(!c)return;let H=X.getPanelOpacity()/100;c.style.background=`linear-gradient(180deg,rgba(24,24,24,${H}),rgba(8,8,8,${H}))`}s(Ue,"applyPanelOpacity");function Ge(){let H=document.createElement("button");H.type="button",H.dataset.compactAction="true",H.setAttribute("role","switch"),Object.assign(H.style,{position:"relative",width:"43px",height:"23px",padding:"0 4px",cursor:"pointer",background:"rgba(255,255,255,.12)",border:"1px solid rgba(255,255,255,.22)",borderRadius:"12px",color:"#fff",fontSize:"9px",overflow:"hidden"});let ce=we("span",{position:"absolute",left:"2px",top:"2px",width:"17px",height:"17px",borderRadius:"50%",background:St,boxShadow:"0 1px 4px rgba(0,0,0,.8)",transition:"transform .16s"}),oe=we("span",{position:"relative",zIndex:"1",fontWeight:"700",textShadow:"0 1px 2px #000"});return H._knob=ce,H._label=oe,H.append(ce,oe),H.addEventListener("mousedown",te=>te.stopPropagation()),H.addEventListener("click",te=>{te.stopPropagation(),Re()}),T=H,Ee(),H}s(Ge,"buildLanguageSwitch");function D(){x&&(x.remove(),x=null)}s(D,"closeSettingsMenu");function ee(H){if(x){D();return}let ce=X.getLanguage()==="en",oe=we("div",{position:"fixed",zIndex:"10005",width:"230px",padding:"10px",boxSizing:"border-box",background:"rgba(18,18,18,.98)",border:"1px solid rgba(212,175,55,.65)",borderRadius:"5px",boxShadow:"0 8px 26px rgba(0,0,0,.85)",color:"#f3f3f3",fontSize:"11px"});oe.dataset.kikimeter="true";let te=we("div",{fontWeight:"700",fontSize:"12px",marginBottom:"9px",paddingBottom:"6px",borderBottom:"1px solid rgba(255,255,255,.12)"});te.textContent=ce?"Settings":"设置";let ke=we("div",{display:"flex",alignItems:"center",gap:"7px",marginBottom:"10px"}),be=we("span",{minWidth:"62px"});be.textContent=ce?"Opacity":"不透明度";let ve=document.createElement("input");ve.type="range",ve.min="10",ve.max="100",ve.step="5",ve.value=String(X.getPanelOpacity()),Object.assign(ve.style,{flex:"1",accentColor:St,minWidth:"80px"});let Pe=we("span",{width:"34px",textAlign:"right",fontVariantNumeric:"tabular-nums"});Pe.textContent=ve.value+"%",ve.addEventListener("input",()=>{X.setPanelOpacity(ve.value),Pe.textContent=X.getPanelOpacity()+"%",Ue()}),ke.append(be,ve,Pe);let Se=we("label",{display:"flex",alignItems:"center",gap:"7px",cursor:"pointer"}),Le=document.createElement("input");Le.type="checkbox",Le.checked=X.getDebugMode(),Le.style.accentColor=St;let $e=we("span");$e.textContent=ce?"Enable Debug mode":"启用 Debug 模式",Le.addEventListener("change",()=>{X.setDebugMode(Le.checked),Ae(),!Le.checked&&B==="debug"&&L("dps")}),Se.append(Le,$e),oe.append(te,ke,Se),document.body.appendChild(oe),x=oe;let Ne=H.getBoundingClientRect(),Me=oe.offsetWidth||230,He=oe.offsetHeight||120,Te=Math.max(5,Math.min(Ne.right-Me,window.innerWidth-Me-5)),Ze=Ne.bottom+4+He<=window.innerHeight?Ne.bottom+4:Math.max(5,Ne.top-He-4);Object.assign(oe.style,{left:Te+"px",top:Ze+"px"}),setTimeout(()=>document.addEventListener("pointerdown",s(function Ye(Rt){if(!x){document.removeEventListener("pointerdown",Ye);return}!x.contains(Rt.target)&&Rt.target!==C&&(D(),document.removeEventListener("pointerdown",Ye))},"outside")),0)}s(ee,"toggleSettingsMenu");function ue(){let H=document.createElement("div");H.id="kikimeter-panel",H.dataset.kikimeter="true";let ce=X.getRecountSize()||{};X.getPanelLayoutVersion()<a&&(ce={...ce,height:n},X.setRecountSize(ce),X.setShowGraph(!1),X.setPanelLayoutVersion(a));let oe=Math.max(0,Math.min(Math.max(280,Number(ce.width)||330),q().width-8)),te=Math.max(0,Math.min(Math.max(i,Number(ce.height)||n),q().height-8)),ke=X.getPanelOpacity()/100;Object.assign(H.style,{display:"none",position:"fixed",zIndex:"9999",width:oe+"px",height:te+"px",minWidth:"min(280px, calc(100vw - 8px))",minHeight:`min(${i}px, calc(100vh - 8px))`,maxWidth:"calc(100vw - 8px)",maxHeight:"calc(100vh - 8px)",boxSizing:"border-box",flexDirection:"column",overflow:"hidden",background:`linear-gradient(180deg,rgba(24,24,24,${ke}),rgba(8,8,8,${ke}))`,color:"#f2f2f2",borderRadius:"5px",padding:"8px",boxShadow:"0 6px 24px rgba(0,0,0,.85)",fontSize:"12px",lineHeight:"1.35",border:"1px solid rgba(212,175,55,.58)"});let be=we("div",{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"7px",cursor:"move",touchAction:"none",userSelect:"none",flexShrink:"0",paddingBottom:"5px",borderBottom:"1px solid rgba(255,255,255,.1)"});b=we("div",{fontWeight:"bold",fontSize:"13px",color:"#e8e8e8",letterSpacing:".2px",flex:"1",minWidth:"0",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),b.textContent=X.getLanguage()==="en"?B==="hps"?"Healing":B==="taken"?"Damage Taken":B==="debug"?"Class Debug":"Damage Done":B==="hps"?"恢复量":B==="taken"?"承受伤害":B==="debug"?"职业调试":"伤害输出";let ve=we("div",{display:"flex",alignItems:"center",gap:"1px",flexShrink:"0"}),Pe=s((Se,Le,$e)=>{let Ne=document.createElement("button");if(Ne.type="button",Ne.title=Le,Ne.dataset.compactAction="true",Object.assign(Ne.style,{width:"23px",height:"23px",padding:"0",cursor:"pointer",background:"transparent",color:"rgba(255,255,255,.52)",border:"1px solid transparent",borderRadius:"3px",fontSize:"12px",lineHeight:"20px",display:"inline-flex",alignItems:"center",justifyContent:"center"}),String(Se||"").startsWith("data:image/")||String(Se||"").includes("/static/media/")){let Me=Ia(Se,"");Object.assign(Me.style,{width:"17px",height:"17px",objectFit:"contain",pointerEvents:"none"}),Ne._icon=Me,Ne.appendChild(Me)}else Ne.textContent=Se;return Ne.addEventListener("mousedown",Me=>Me.stopPropagation()),Ne.addEventListener("click",Me=>{Me.stopPropagation(),$e()}),Ne},"iconButton");return g=Gr(()=>{M.onSegmentChange&&M.onSegmentChange()},!0),h=Pe(Wr.attack,"伤害输出(DPS)",()=>L("dps")),_=Pe(Wr.stamina,"恢复量(HPS)",()=>L("hps")),y=Pe(Wr.defense,"承受伤害(DTPS)",()=>L("taken")),k=Pe(Ea.trend,"显示或隐藏 DPS 趋势",ie),w=Pe(Ea.debug,"Debug",()=>L("debug")),C=Pe(Ea.settings,"设置",()=>ee(C)),Ge(),A=Pe(Ea.reset,"结束并新建记录",()=>{M.onReset&&M.onReset()}),I=Pe(Ea.copy,"复制统计",()=>{M.onCopy&&M.onCopy(I)}),R=Pe(Ea.close,"隐藏面板",xe),ve.append(g,h,_,y,k,w,C,A,I,T,R),be.append(b,ve),H.appendChild(be),Ae(),ye(),z=we("div",{display:"none",margin:"0 0 7px",padding:"5px 7px",border:"1px solid rgba(63,199,235,.35)",borderRadius:"3px",background:"rgba(63,199,235,.08)",color:"#9bddf3",fontSize:"10px",lineHeight:"1.45"}),z.textContent=e("点击战斗界面中的人物,可准确识别职业并永久缓存。","Click a character in the battle view to identify and cache their class."),H.appendChild(z),f=we("div",{marginBottom:"8px",paddingBottom:"8px",borderBottom:"1px solid rgba(255,255,255,.1)",flex:"1 1 auto",minHeight:"50px",overflowY:"auto"}),H.appendChild(f),j=Zr(),W=we("div",{flexShrink:"0",paddingTop:"6px",borderTop:"1px solid rgba(255,255,255,.1)"}),W.hidden=!X.getShowGraph(),W.append(j.canvas),H.appendChild(W),he(H,be),document.body.appendChild(H),H}s(ue,"buildPanel");function he(H,ce){let oe=null,te=null,ke=s(()=>N()?"mobile":"desktop","mode"),be=s(()=>{let Se=X.getRecountPos();X.setRecountPos(J(Se,ke(),{left:Number.parseFloat(H.style.left)||0,top:Number.parseFloat(H.style.top)||0})),X.setRecountSize({width:H.offsetWidth,height:H.offsetHeight})},"storeWindowState");ce.addEventListener("pointerdown",Se=>{if(Se.button!==0||Se.target.closest("button,input,select"))return;let Le=H.getBoundingClientRect();if(Object.assign(H.style,{left:Le.left+"px",top:Le.top+"px",right:"auto"}),oe={id:Se.pointerId,dx:Se.clientX-Le.left,dy:Se.clientY-Le.top},ce.setPointerCapture)try{ce.setPointerCapture(Se.pointerId)}catch{}Se.preventDefault()}),Object.entries({nw:["0","auto","auto","0","nwse-resize"],ne:["0","0","auto","auto","nesw-resize"],sw:["auto","auto","0","0","nesw-resize"],se:["auto","0","0","auto","nwse-resize"]}).forEach(([Se,[Le,$e,Ne,Me,He]])=>{let Te=we("div",{position:"absolute",top:Le,right:$e,bottom:Ne,left:Me,width:"16px",height:"16px",zIndex:"4",cursor:He,touchAction:"none"});Te.dataset.resizeCorner=Se,Te.addEventListener("pointerdown",Ze=>{if(Ze.button!==0)return;let Ye=H.getBoundingClientRect();if(te={id:Ze.pointerId,direction:Se,sx:Ze.clientX,sy:Ze.clientY,rect:Ye},Te.setPointerCapture)try{Te.setPointerCapture(Ze.pointerId)}catch{}Ze.preventDefault(),Ze.stopPropagation()}),H.appendChild(Te)}),window.addEventListener("pointermove",Se=>{let Le=q();if(oe&&oe.id===Se.pointerId){let Jr=ne(Se.clientX-oe.dx,Le.left,Math.max(Le.left,Le.right-H.offsetWidth)),$i=ne(Se.clientY-oe.dy,Le.top,Math.max(Le.top,Le.bottom-H.offsetHeight));H.style.left=Jr+"px",H.style.top=$i+"px",Se.preventDefault();return}if(!te||te.id!==Se.pointerId)return;let $e=Se.clientX-te.sx,Ne=Se.clientY-te.sy,Me=te.rect,He=te.direction,Te=Math.max(0,Le.width-8),Ze=Math.max(0,Le.height-8),Ye=Math.min(280,Te),Rt=Math.min(i,Ze),Bt=He.includes("w")?Me.width-$e:Me.width+$e,ea=He.includes("n")?Me.height-Ne:Me.height+Ne;Bt=ne(Bt,Ye,Te),ea=ne(ea,Rt,Ze);let Li=He.includes("w")?Me.right-Bt:Me.left,Un=He.includes("n")?Me.bottom-ea:Me.top;Li=ne(Li,Le.left,Math.max(Le.left,Le.right-Bt)),Un=ne(Un,Le.top,Math.max(Le.top,Le.bottom-ea)),Object.assign(H.style,{left:Li+"px",top:Un+"px",right:"auto",width:Bt+"px",height:ea+"px"}),Se.preventDefault()});let Pe=s(Se=>{let Le=oe&&oe.id===Se.pointerId,$e=te&&te.id===Se.pointerId;!Le&&!$e||(be(),oe=null,te=null)},"finishPointerAction");window.addEventListener("pointerup",Pe),window.addEventListener("pointercancel",Pe)}s(he,"installWindowControls");function xe(){o=!1,D(),la.close(),c&&(c.style.display="none"),r&&(r.style.filter="none")}s(xe,"close");function Q(){if(!c||!o)return;let H=q(),ce=c.getBoundingClientRect(),oe=ce.width||c.offsetWidth||Number.parseFloat(c.style.width)||280,te=ce.height||c.offsetHeight||Number.parseFloat(c.style.height)||i,ke=N()?"mobile":"desktop",be=re(X.getRecountPos(),ke),ve,Pe;if(Y(be))ve=Number(be.left),Pe=Number(be.top);else if(ke==="mobile"&&$()){let Se=$();ve=Se.right+6,Pe=Se.top}else ve=H.right-oe-12,Pe=H.bottom-te-12;ve=ne(ve,H.left+4,Math.max(H.left+4,H.right-oe-4)),Pe=ne(Pe,H.top+4,Math.max(H.top+4,H.bottom-te-4)),Object.assign(c.style,{display:"flex",left:ve+"px",top:Pe+"px",right:"auto"})}s(Q,"placePanel");function le(H,ce){let oe=!!c&&c.style.display!=="none";return(H===void 0?!oe:!!H)?(o=!0,c.style.display="flex",Q(),r&&(r.style.filter="brightness(1.15)"),!0):(xe(),!1)}s(le,"toggle");function De(H,ce,oe){let te=we("div",{display:"flex",alignItems:"center",gap:"6px",marginBottom:"3px"}),ke=document.createElement("input");ke.type="checkbox",ke.checked=ce,ke.style.accentColor=St,ke.addEventListener("change",()=>oe(ke.checked));let be=we("span",{fontSize:"12px"});return be.textContent=H,te.append(ke,be),te}s(De,"buildToggle");function tt(){let H=document.createElement("button");H.type="button",H.id="kikimeter-tab-btn",H.dataset.kikimeter="true",H.dataset.kikimeterBound=Ka,H.textContent="DPS",Object.assign(H.style,{display:"inline-flex",alignItems:"center",justifyContent:"center",position:"fixed",zIndex:"9998",cursor:"pointer",background:St,color:"#fff",border:"none",borderRadius:"4px",width:"54px",height:"28px",padding:"0",margin:"0",fontWeight:"600",fontSize:"13px",fontFamily:"inherit",whiteSpace:"nowrap",transition:"filter .12s,left .16s ease",touchAction:"none",boxShadow:"0 2px 9px rgba(0,0,0,.58)",outline:"none",flexShrink:"0",letterSpacing:".2px"});let ce=null,oe=!1,te=null,ke=s(()=>N()?"mobile":"desktop","mode"),be=s(($e=54,Ne=28)=>{let Me=q();if(ke()==="mobile"){let He=$();return He?{left:He.right+6,top:He.top+Math.max(0,(He.height-Ne)/2),edge:""}:{left:Me.left+8,top:Me.top+8,edge:""}}return{left:Me.left+130,top:Me.top+80,edge:""}},"defaultPos"),ve=s(($e,Ne)=>re(X.getLauncherPos(),ke())||be($e,Ne),"savedPos"),Pe=s(($e=!1)=>{let Ne=H.offsetWidth||54,Me=H.offsetHeight||28,He=ve(Ne,Me),Te=q(),Ze=Number(He.left),Ye=Number(He.top);Number.isFinite(Ze)||(Ze=be(Ne,Me).left),Number.isFinite(Ye)||(Ye=be(Ne,Me).top),Ye=ne(Ye,Te.top,Math.max(Te.top,Te.bottom-Me)),ke()==="mobile"?Ze=ne(Ze,Te.left,Math.max(Te.left,Te.right-Ne)):He.edge==="left"?Ze=$e?Te.left:Te.left-(Ne-14):He.edge==="right"?Ze=$e?Math.max(Te.left,Te.right-Ne):Math.max(Te.left,Te.right-14):Ze=ne(Ze,Te.left,Math.max(Te.left,Te.right-Ne)),Object.assign(H.style,{left:Ze+"px",top:Ye+"px"})},"place"),Se=s(()=>{ke()!=="mobile"&&(te!==null&&clearTimeout(te),te=setTimeout(()=>Pe(!1),350))},"hideAtEdge");H._placeLauncher=Pe,H.addEventListener("mouseenter",()=>{te!==null&&clearTimeout(te),H.style.filter="brightness(1.15)",Pe(!0)}),H.addEventListener("mouseleave",()=>{H.style.filter=o?"brightness(1.15)":"none",ve().edge&&Se()}),H.addEventListener("pointerdown",$e=>{if($e.button!==void 0&&$e.button!==0)return;$e.stopPropagation(),te!==null&&clearTimeout(te),Pe(!0);let Ne=H.getBoundingClientRect();if(ce={id:$e.pointerId,dx:$e.clientX-Ne.left,dy:$e.clientY-Ne.top,startX:$e.clientX,startY:$e.clientY},oe=!1,H.setPointerCapture)try{H.setPointerCapture($e.pointerId)}catch{}}),H.addEventListener("pointermove",$e=>{if(!ce||ce.id!==$e.pointerId||(Math.hypot($e.clientX-ce.startX,$e.clientY-ce.startY)>4&&(oe=!0),!oe))return;let Ne=H.offsetWidth||54,Me=H.offsetHeight||28,He=q(),Te=ne($e.clientX-ce.dx,He.left,Math.max(He.left,He.right-Ne)),Ze=ne($e.clientY-ce.dy,He.top,Math.max(He.top,He.bottom-Me));H.style.transition="none",Object.assign(H.style,{left:Te+"px",top:Ze+"px"}),$e.preventDefault()});let Le=s($e=>{if(!ce||ce.id!==$e.pointerId)return;let Ne=H.offsetWidth||54,Me=H.getBoundingClientRect(),He=q(),Te="";ke()!=="mobile"&&(Me.left<=He.left+24?Te="left":Me.right>=He.right-24&&(Te="right")),X.setLauncherPos(J(X.getLauncherPos(),ke(),{left:ne(Me.left,He.left,Math.max(He.left,He.right-Ne)),top:ne(Me.top,He.top,Math.max(He.top,He.bottom-(H.offsetHeight||28))),edge:Te})),ce=null,H.style.transition="filter .12s,left .16s ease",Te&&Se()},"finishDrag");return H.addEventListener("pointerup",Le),H.addEventListener("pointercancel",Le),H.addEventListener("click",$e=>{if($e.stopPropagation(),oe){oe=!1;return}le(void 0,H)}),setTimeout(()=>Pe(!1),0),H}s(tt,"buildTabBtn");function qt(){let H=document.querySelectorAll("#kikimeter-tab-btn");return H.forEach((ce,oe)=>{oe>0&&ce.remove()}),H[0]||null}s(qt,"dedupeAndGetButton");function Kr(){let H=[...new Set([...document.querySelectorAll("div."+Gu),...document.querySelectorAll('div[class*="TabsComponent_tabsContainer"]')])];for(let ce of H){let oe=ce.textContent;if(oe.includes("Combat Zones")||oe.includes("战斗区域")||oe.includes("戰鬥區域")||oe.includes("Labyrinth")&&oe.includes("Room")&&oe.includes("Automation")||oe.includes("迷宫")&&(oe.includes("房间")||oe.includes("自动化"))||oe.includes("迷宮")&&(oe.includes("房間")||oe.includes("自動化"))||Uu(ce)||Ku(ce))return ce}return null}s(Kr,"findCombatTabBar");function ma(H){H.title=X.getLanguage()==="en"?"Open DPS meter":"打开 DPS 统计",H._placeLauncher&&H._placeLauncher(!1)}s(ma,"setTabButtonStyle");function wn(){let H=qt();if(H&&H.dataset.kikimeterBound!==Ka){let ce=tt();H.replaceWith(ce),H=ce}return H?(H.style.display="inline-flex",ma(H),H.parentElement!==document.body&&document.body.appendChild(H),r=H,!0):(r=tt(),ma(r),document.body.appendChild(r),!0)}s(wn,"inject");function Zn(H){M=H,c?c.isConnected||document.body.appendChild(c):c=ue(),r=null,wn(),l&&l.disconnect(),l=new MutationObserver(()=>{d||(d=setTimeout(()=>{d=null,wn()},200))}),l.observe(document.body,{childList:!0,subtree:!0}),m&&(window.removeEventListener("resize",m),window.visualViewport?.removeEventListener("resize",m)),m=s(()=>{r?._placeLauncher?.(!1),Q()},"viewportHandler"),window.addEventListener("resize",m),window.visualViewport?.addEventListener("resize",m)}s(Zn,"init");function Ts(){xe(),d&&(clearTimeout(d),d=null),l&&(l.disconnect(),l=null),m&&(window.removeEventListener("resize",m),window.visualViewport?.removeEventListener("resize",m),m=null),document.querySelectorAll("#kikimeter-tab-btn").forEach(H=>H.remove()),document.querySelector("#kikimeter-segment-menu")?.remove(),document.querySelector("#kikimeter-class-picker")?.remove(),c&&c.remove(),r=null}s(Ts,"destroy");function Xr(H,ce,oe,te,ke,be,ve){if(!f)return;let Pe=H.map(Se=>({name:Se,value:oe(Se),ps:ce(Se),pct:be(Se),rateLabel:"DPS"})).sort((Se,Le)=>Le.value-Se.value);Pi(f,Pe,()=>Xr(H,ce,oe,te,ke,be,ve))}s(Xr,"renderPlayers");function vn(H){if(Xa(g),Ae(),ye(),b&&(b.textContent=X.getLanguage()==="en"?B==="hps"?"Healing":B==="taken"?"Damage Taken":B==="debug"?"Class Debug":"Damage Done":B==="hps"?"恢复量":B==="taken"?"承受伤害":B==="debug"?"职业调试":"伤害输出"),j&&j.render(H.graphPoints||[]),z&&(z.style.display=B!=="debug"&&H.type==="trial"?"block":"none"),B==="debug"){f.innerHTML="";let te=we("div",{fontSize:"11px",lineHeight:"1.55",color:"rgba(255,255,255,.76)",marginBottom:"7px"});te.textContent=e("全量探针会从点击开始持续被动记录全部游戏入站消息,直到你手动结束;不会主动发送任何请求。聊天正文和凭证字段会脱敏,结束后请在刷新页面前下载。","The full probe passively records all incoming game messages after you start it until you stop it manually. It sends no requests. Chat content and credential fields are redacted; download the capture before refreshing the page.");let ke=ft.status(),be=we("div",{display:"flex",gap:"5px",marginBottom:"7px"}),ve=document.createElement("button");ve.textContent=ke.active?e("全量采集中…","Capturing…"):e("开始全量采集","Start full capture"),ve.disabled=ke.active;let Pe=document.createElement("button");Pe.textContent=e("结束采集","Stop capture"),Pe.disabled=!ke.active;let Se=document.createElement("button");Se.textContent=e("⬇ 下载全量 MSG","⬇ Download full messages"),Se.disabled=ke.active||!ke.startedAt,[ve,Pe,Se].forEach(He=>Object.assign(He.style,{flex:"1",cursor:He.disabled?"default":"pointer",padding:"5px 2px",fontSize:"9px",borderRadius:"3px",border:"1px solid rgba(255,255,255,.18)",background:"rgba(255,255,255,.07)",color:"#e8eaf6",opacity:He.disabled?".45":"1"})),ve.addEventListener("mousedown",He=>{He.preventDefault(),ve.disabled||ft.start()}),Pe.addEventListener("mousedown",He=>{He.preventDefault(),Pe.disabled||ft.stop()}),Se.addEventListener("mousedown",He=>{He.preventDefault(),!Se.disabled&&ft.download()&&(Se.textContent=e("✓ 已下载","✓ Downloaded"),setTimeout(()=>Se.textContent=e("⬇ 下载全量 MSG","⬇ Download full messages"),1500))}),be.append(ve,Pe,Se);let Le=we("pre",{margin:"0 0 7px",padding:"7px",maxHeight:"210px",overflow:"auto",whiteSpace:"pre-wrap",wordBreak:"break-all",background:"rgba(0,0,0,.35)",border:"1px solid rgba(255,255,255,.12)",borderRadius:"3px",fontSize:"9px",lineHeight:"1.45"});Le.textContent=ke.active?e(`全量探针正在采集,已记录 ${ke.messageCount} 条消息,正文约 ${(ke.captureChars/1024/1024).toFixed(2)} MB;点击“结束采集”才会停止。`,`The full probe is capturing. ${ke.messageCount} messages recorded (${(ke.captureChars/1024/1024).toFixed(2)} MB). Click “Stop capture” to stop it.`):ke.startedAt?ft.report().slice(0,6e3):$t.report();let $e=we("div",{display:"flex",gap:"6px"}),Ne=document.createElement("button");Ne.textContent=e("📋 复制完整探针报告","📋 Copy full probe report");let Me=document.createElement("button");Me.textContent=e("清空报告","Clear report"),[Ne,Me].forEach(He=>Object.assign(He.style,{flex:"1",cursor:"pointer",padding:"5px",fontSize:"10px",borderRadius:"3px",border:"1px solid rgba(255,255,255,.18)",background:"rgba(255,255,255,.07)",color:"#e8eaf6"})),Ne.addEventListener("click",()=>navigator.clipboard.writeText(ft.report()).then(()=>{Ne.textContent=e("✓ 已复制","✓ Copied"),setTimeout(()=>Ne.textContent=e("📋 复制完整探针报告","📋 Copy full probe report"),1500)}).catch(()=>{})),Me.addEventListener("click",()=>{$t.clear(),ft.clear(),vn(Ot.get())}),$e.append(Ne,Me),f.append(te,be,Le,$e);return}let ce=B==="hps"?(H.players||[]).reduce((te,ke)=>te+(Number(ke.healing)||0),0):B==="taken"?(H.players||[]).reduce((te,ke)=>te+(Number(ke.taken)||0),0):H.teamDamage,oe=(H.players||[]).map(te=>({name:te.name,synthetic:te.synthetic,value:B==="hps"?Number(te.healing)||0:B==="taken"?Number(te.taken)||0:Number(te.damage)||0,ps:B==="hps"?Number(te.hps)||0:B==="taken"?Number(te.takenPs)||0:Number(te.dps)||0,pct:ce>0?(B==="hps"?Number(te.healing)||0:B==="taken"?Number(te.taken)||0:Number(te.damage)||0)*100/ce:0,rateLabel:B==="hps"?"HPS":B==="taken"?"DTPS":"DPS",breakdown:B==="dps"?te.breakdown:B==="taken"?te.takenBreakdown:null,breakdownTitle:B==="taken"?X.getLanguage()==="en"?"Damage Taken Sources":"承伤来源":void 0,breakdownRateLabel:B==="taken"?"DTPS":"DPS",breakdownHover:B==="taken"?X.getLanguage()==="en"?"Hover to view monster and skill sources":"悬停查看怪物与技能来源":void 0,breakdownEmpty:B==="taken"?X.getLanguage()==="en"?"No damage-taken sources":"暂无承伤来源":void 0})).filter(te=>te.value>0).sort((te,ke)=>ke.value-te.value);Pi(f,oe,()=>vn(Ot.get()))}s(vn,"renderView");function Es(H){let ce=new Date(H.date),oe=ce.toLocaleDateString()+" "+ce.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),te=ca(H.durationSeconds),ke=H.teamDamage,be=e(`=== KikiMeter 战斗记录|${oe}|${te} ===
`,`=== KikiMeter Combat Record | ${oe} | ${te} ===
`);return be+=e(`团队:${mt(H.teamDps||0)} DPS|总伤害 ${bt(ke||0)}`,`Team: ${mt(H.teamDps||0)} DPS | Total damage ${bt(ke||0)}`),H.teamKills>0&&(be+=e(`|击杀 ${H.teamKills}`,` | Kills ${H.teamKills}`)),be+=`
`,(H.players||[]).forEach(ve=>{let Pe=ke>0?(ve.damage/ke*100).toFixed(0):"0",Se=ve.name.padEnd(12).slice(0,12);be+=Se+e(":",": ")+mt(ve.dps||0).padStart(6)+e(" DPS|"," DPS | "),be+=bt(ve.damage).padStart(7)+" ("+Pe+"%)",ve.kills>0&&(be+=e(`|击杀 ${ve.kills}`,` | Kills ${ve.kills}`)),ve.hps>.1&&(be+=e(`|HPS ${mt(ve.hps)}`,` | HPS ${mt(ve.hps)}`)),be+=`
`}),be}s(Es,"entryToText");function fa(H){H.innerHTML="";let ce=[{id:"combat",label:e("普通战斗","Combat")},{id:"trial",label:e("公会试炼","Guild Trial")},{id:"labyrinth",label:e("迷宫","Labyrinth")}],oe=we("div",{display:"flex",gap:"4px",marginBottom:"8px"});ce.forEach(be=>{let ve=document.createElement("button");ve.textContent=be.label;let Pe=p===be.id;Object.assign(ve.style,{flex:"1",cursor:"pointer",fontSize:"11px",padding:"4px 0",borderRadius:"4px",border:"none",fontWeight:Pe?"700":"400",background:Pe?St:"rgba(255,255,255,.08)",color:Pe?"#fff":"rgba(255,255,255,.65)",transition:"background .12s"}),ve.addEventListener("click",()=>{p=be.id,fa(H)}),oe.appendChild(ve)}),H.appendChild(oe);let te=gt.getAll(p);if(!te.length){let be=we("div",{opacity:".5",fontSize:"11px",padding:"6px 0"});be.textContent=e("还没有保存的战斗记录。","No saved combat records yet."),H.appendChild(be);return}te.forEach((be,ve)=>{let Pe=new Date(be.date||be.startedAt),Se=Pe.toLocaleDateString()+" "+Pe.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),Le=we("div",{marginBottom:"8px",paddingBottom:"8px",borderBottom:ve<te.length-1?"1px solid rgba(255,255,255,.07)":"none"}),$e=we("div",{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"2px"}),Ne=we("span",{fontSize:"11px",color:"#a5b4fc",fontWeight:"bold"});Ne.textContent=Se+" · "+ca(be.durationSeconds||be.durationMs/1e3||0);let Me=we("button",{fontSize:"10px",cursor:"pointer",background:"transparent",color:"#93c5fd",border:"none",padding:"0 2px"});Me.textContent="📋",Me.title=e("复制这场战斗","Copy this combat record"),Me.addEventListener("click",Te=>{Te.stopPropagation(),navigator.clipboard.writeText(Es(be)).catch(()=>{}),Me.textContent="✓",setTimeout(()=>{Me.textContent="📋"},1500)}),$e.append(Ne,Me),Le.appendChild($e);let He=we("div",{fontSize:"11px",opacity:".75",marginBottom:"3px"});if(He.textContent=e(`团队:${mt(be.teamDps||0)} DPS · ${bt(be.teamDamage||0)}${be.teamKills>0?` · ${be.teamKills} 次击杀`:""} · ${(be.fragments||[]).length||1} 个片段`,`Team: ${mt(be.teamDps||0)} DPS · ${bt(be.teamDamage||0)}${be.teamKills>0?` · ${be.teamKills} kills`:""} · ${(be.fragments||[]).length||1} fragments`),Le.appendChild(He),(be.fragments||[]).length>1){let Te=document.createElement("details");Te.dataset.kikimeter="true";let Ze=document.createElement("summary");Ze.textContent=e("查看断线续传片段","View reconnect fragments"),Ze.style.cursor="pointer",Te.appendChild(Ze),be.fragments.forEach((Ye,Rt)=>{let Bt=we("div",{fontSize:"10px",opacity:".65",paddingLeft:"9px"});Bt.textContent=e(`片段 ${Rt+1}|${t(Ye.reason)}|${ca((Ye.durationMs||0)/1e3)}|伤害 ${bt(Ye.teamDamage||0)}`,`Fragment ${Rt+1} | ${t(Ye.reason)} | ${ca((Ye.durationMs||0)/1e3)} | Damage ${bt(Ye.teamDamage||0)}`),Te.appendChild(Bt)}),Le.appendChild(Te)}(be.players||[]).forEach(Te=>{Te.classId&&qe.setDetected(Te.name,Te.classId);let Ze=be.teamDamage>0?(Te.damage/be.teamDamage*100).toFixed(0):"0",Ye=we("div",{fontSize:"11px",display:"flex",alignItems:"center",gap:"4px"}),Rt=Ia(qe.get(Te.name).icon,qe.get(Te.name).label);Object.assign(Rt.style,{width:"15px",height:"15px",objectFit:"contain"});let Bt=we("span",{color:"#e8eaf6"});Bt.textContent=Te.name;let ea=we("span",{opacity:".7",marginLeft:"auto"});ea.textContent=mt(Te.dps||0)+e("/秒 · ","/s · ")+bt(Te.damage||0)+" ("+Ze+"%)",Ye.append(Rt,Bt,ea),Le.appendChild(Ye)}),H.appendChild(Le)});let ke=document.createElement("button");ke.textContent=e(`清空${(ce.find(be=>be.id===p)||{}).label}记录`,`Clear ${(ce.find(be=>be.id===p)||{}).label} records`),Object.assign(ke.style,{width:"100%",cursor:"pointer",background:"transparent",color:"rgba(255,255,255,.3)",border:"1px solid rgba(255,255,255,.15)",borderRadius:"4px",padding:"4px",fontSize:"11px",marginTop:"4px"}),ke.addEventListener("click",()=>{gt.clear(p),fa(H)}),H.appendChild(ke)}return s(fa,"renderHistory"),{init:Zn,destroy:Ts,toggle:le,close:xe,isOpen:s(()=>o,"isOpen"),renderPlayers:Xr,renderView:vn,refreshSegments:s(()=>Xa(g),"refreshSegments")}})();var m7=(()=>{let e=s((y,w)=>X.getLanguage()==="en"?w:y,"langText"),t=[{id:"dmg",zh:"造成伤害",en:"Damage Done",value:"damage",perSecond:"dps"},{id:"heal",zh:"恢复量",en:"Healing",value:"healing",perSecond:"hps"},{id:"taken",zh:"承受伤害",en:"Damage Taken",value:"taken",perSecond:"takenPs"}],a=null,n=null,i=null,o=null,r=0,c=!1,l=null,d=null,m=new Set;function p(y){let w=t.findIndex(k=>k.id===y);return w>=0?w:0}s(p,"modeById");function b(){let y=!X.getRecountShowGraph();X.setRecountShowGraph(y),d&&(d.style.display=y?"block":"none")}s(b,"toggleGraph");function f(){if(a)return;r=p(X.getRecountMode()),a=document.createElement("div"),a.dataset.kikimeter="true",Object.assign(a.style,{position:"fixed",zIndex:"9999",background:"linear-gradient(180deg,rgba(24,24,24,.98),rgba(8,8,8,.98))",border:"1px solid rgba(212,175,55,.58)",borderRadius:"5px",fontSize:"11px",color:"#f2f2f2",boxShadow:"0 4px 16px rgba(0,0,0,.6)",userSelect:"none"});let y=X.getRecountPos(),w=X.getRecountSize()||{width:270,height:430},k=Math.max(120,Math.min(w.width,window.innerWidth-16)),C=y&&y.left!=null?y.left:12;a.style.left=Math.max(0,Math.min(C,window.innerWidth-k))+"px",a.style.top=y&&y.top!=null?y.top+"px":"90px",a.style.width=k+"px",a.style.maxWidth="calc(100vw - 8px)",a.style.boxSizing="border-box";let x=document.createElement("div");Object.assign(x.style,{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"4px 6px",cursor:"move",background:"rgba(255,255,255,.07)",borderRadius:"6px 6px 0 0",fontWeight:"bold"}),i=document.createElement("span");let T=document.createElement("span"),A=s((q,$,Y)=>{let re=document.createElement("button");return re.textContent=q,re.title=$,Object.assign(re.style,{cursor:"pointer",background:"transparent",color:"rgba(255,255,255,.6)",border:"none",font:"12px monospace",padding:"0 3px"}),re.addEventListener("mouseenter",()=>re.style.color="#fff"),re.addEventListener("mouseleave",()=>re.style.color="rgba(255,255,255,.6)"),re.addEventListener("mousedown",J=>J.stopPropagation()),re.addEventListener("click",J=>{J.stopPropagation(),Y()}),re},"mkBtn");T.appendChild(A("⚔",e("造成伤害","Damage Done"),()=>g(0))),T.appendChild(A("✚",e("恢复量","Healing"),()=>g(1))),T.appendChild(A("🛡",e("承受伤害","Damage Taken"),()=>g(2)));let I=A("📈",e("显示或隐藏趋势图","Show or hide trend graph"),()=>b());T.appendChild(I),T.appendChild(A("✕",e("关闭","Close"),()=>h(!1))),x.append(i,T),a.appendChild(x),o=Gr(()=>{Ja.refreshSegments(),_()}),Object.assign(o.style,{display:"block",width:"calc(100% - 8px)",margin:"4px",boxSizing:"border-box",flex:"none"}),a.appendChild(o),n=document.createElement("div"),Object.assign(n.style,{maxHeight:w.height+"px",overflowY:"auto",padding:"3px"}),a.appendChild(n),l=Zr(),d=document.createElement("div"),Object.assign(d.style,{padding:"4px 6px 6px 6px"}),d.appendChild(l.canvas),d.style.display=X.getRecountShowGraph()?"block":"none",a.appendChild(d);let R=document.createElement("div");Object.assign(R.style,{position:"absolute",right:"0",bottom:"0",width:"14px",height:"14px",cursor:"nwse-resize",background:"transparent"}),R.innerHTML='<svg width="10" height="10" style="position:absolute;right:2px;bottom:2px;opacity:.4"><path d="M10 0 L10 10 L0 10 Z" fill="currentColor"/></svg>',a.appendChild(R);let z=null,j=180,W=520,B=100,M=800;R.addEventListener("mousedown",q=>{z={sx:q.clientX,sy:q.clientY,sw:a.offsetWidth,sh:n.offsetHeight},q.preventDefault(),q.stopPropagation()}),window.addEventListener("mousemove",q=>{if(!z)return;let $=Math.max(120,Math.min(W,window.innerWidth-8)),Y=Math.min($,Math.max(Math.min(j,$),z.sw+(q.clientX-z.sx))),re=Math.min(M,Math.max(B,z.sh+(q.clientY-z.sy)));a.style.width=Y+"px",n.style.maxHeight=re+"px"}),window.addEventListener("mouseup",()=>{z&&(z=null,X.setRecountSize({width:a.offsetWidth,height:n.offsetHeight}))});let N=null;x.addEventListener("mousedown",q=>{N={dx:q.clientX-a.offsetLeft,dy:q.clientY-a.offsetTop},q.preventDefault()}),window.addEventListener("mousemove",q=>{N&&(a.style.left=Math.max(0,Math.min(q.clientX-N.dx,window.innerWidth-a.offsetWidth))+"px",a.style.top=Math.max(0,q.clientY-N.dy)+"px")}),window.addEventListener("mouseup",()=>{N&&(N=null,X.setRecountPos({left:a.offsetLeft,top:a.offsetTop}))}),document.body.appendChild(a),a.style.display="none"}s(f,"build");function g(y){r=y,X.setRecountMode(t[y].id),_()}s(g,"setMode");function h(y){return f(),c=y===void 0?!c:y,c&&Ja.close(),a.style.display=c?"block":"none",c&&_(),c}s(h,"toggle");function _(y=Ot.get()){if(!c||!a)return;Xa(o),l&&X.getRecountShowGraph()&&l.render(y.graphPoints||[]);let w=t[r];i.textContent=e(w.zh,w.en);let k=(y.players||[]).map(T=>({n:T.name,synthetic:T.synthetic,v:Number(T[w.value])||0,ps:Number(T[w.perSecond])||0,breakdown:w.id==="dmg"?T.breakdown:w.id==="taken"?T.takenBreakdown:null})).filter(T=>T.v>0).sort((T,A)=>A.v-T.v),C=k.reduce((T,A)=>T+A.v,0)||1,x=k.length?k[0].v:1;Pi(n,k.map(T=>({name:T.n,synthetic:T.synthetic,value:T.v,ps:T.ps,pct:100*T.v/C,breakdown:T.breakdown,rateLabel:w.id==="heal"?"HPS":w.id==="taken"?"DTPS":"DPS",breakdownTitle:w.id==="taken"?X.getLanguage()==="en"?"Damage Taken Sources":"承伤来源":void 0,breakdownRateLabel:w.id==="taken"?"DTPS":"DPS"})),_)}return s(_,"render"),{toggle:h,render:_,isOpen:s(()=>c,"isOpen")}})();var da=s((e,t)=>X.getLanguage()==="en"?t:e,"langText");function Ju(e){Xu();let t=[],a=!1,n=!1,i=!1,o=0,r=gt.loadActive();if(r)try{de.restore(r),t=de.getAllPlayerNames(),i=!0,n=!0}catch{gt.clearActive(),console.warn("[KikiMeter] 已忽略损坏的活动战斗缓存。")}function c(){let h=de.serialize(),_=h.meta||{};if(!n&&!_.combatKey)return null;let y=t.length?t:de.getAllPlayerNames(),w=Xe.isGuildBattle()?"trial":Xe.isInLabyrinth()?"labyrinth":_.type||"combat";return{schemaVersion:2,id:_.id||"fight-"+(_.characterId||"unknown")+"-"+(_.combatKey||Date.now()),type:w,characterId:_.characterId||"unknown",combatKey:_.combatKey||"",startedAt:_.startedAt||h.savedAt,endedAt:h.savedAt,date:_.startedAt||h.savedAt,durationMs:h.durationMs,durationSeconds:Math.floor(h.durationMs/1e3),teamDps:h.durationMs>0?h.teamDamage/(h.durationMs/1e3):0,teamDamage:h.teamDamage,teamKills:de.getTeamKills(),classes:h.classes,fragments:h.fragments,graph:h.graph,players:y.map(k=>({name:k,classId:qe.classFor(k),damage:de.getPlayerDamage(k),dps:de.getPlayerDps(k),kills:de.getPlayerKills(k),hps:de.getPlayerHps(k),healing:de.getPlayerHealing(k),taken:de.getPlayerTaken(k),sources:de.getPlayerDamageSources(k),takenSources:de.getPlayerTakenSources(k)}))}}s(c,"buildHistoryEntry");function l(h="归档"){let _=c();return _?(_.endReason=h,gt.push(_),_):null}s(l,"saveCurrentSession");function d(h=!1){if(!n)return!1;let _=Date.now();return!h&&_-o<2e3?!1:(o=_,gt.saveActive(de.serialize()))}s(d,"persistActive");function m(h,_){let y=String(h.characterId||Xe.getCharacterId()||"unknown"),w=hn.resolve(h,_,y),k=w.key,C=de.getMeta(),x=C.combatKey&&hn.matches(C,w,_,y),T=Array.isArray(C.trialStageIds)?C.trialStageIds:[],A=_==="trial"?String(h.stageId||w.rawKey||""):"",I=A&&!T.includes(A);if(x)de.isFrozen()&&(i?de.resume("断线续传"):_==="trial"&&I?de.resumeTrialTier("进入下一层"):de.resume("继续战斗")),_==="trial"&&de.setMeta({id:"fight-"+y+"-"+k,combatKey:k,type:"trial",trialDay:w.day,trialStageIds:I?[...T,A]:T,manualReset:!1});else{C.combatKey&&(de.freeze("开始另一场战斗"),l("开始另一场战斗"));let R=new Date().toISOString();de.reset({id:"fight-"+y+"-"+(k||Date.now()),combatKey:k,characterId:y,startedAt:R,type:_||"combat"}),_==="trial"&&de.setMeta({trialDay:w.day,trialStageIds:A?[A]:[],manualReset:!1})}qe.applyClasses(h.classes),n=!0,i=!1,d(!0)}s(m,"beginEncounter");function p(h){let _=de.getMeta();de.freeze(h),l(h),gt.clearActive();let y=Date.now();de.reset({id:"fight-"+(_.characterId||"unknown")+"-manual-"+y,combatKey:(_.combatKey||"manual")+"-manual-"+y,characterId:_.characterId||Xe.getCharacterId()||"unknown",startedAt:new Date(y).toISOString(),type:_.type||"combat",manualReset:!0}),n=!0,t=de.getAllPlayerNames(),d(!0),console.info("[KikiMeter] 已结束当前记录并新建记录:"+h)}s(p,"resetSession");function b(){let h=Ot.get(),_=h.teamDamage,y=new Date,w=y.toLocaleDateString()+" "+y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),k=da(`=== 银河奶牛 DPS 统计|${h.label}|${w}|${ca(h.elapsed)} ===
`,`=== MWI DPS Meter | ${h.label} | ${w} | ${ca(h.elapsed)} ===
`);return k+=da(`团队:${mt(h.teamDps)} DPS|总伤害 ${bt(_)}`,`Team: ${mt(h.teamDps)} DPS | Total damage ${bt(_)}`),h.teamKills>0&&(k+=da(`|击杀 ${h.teamKills}`,` | Kills ${h.teamKills}`)),k+=`
`,h.players.forEach(C=>{let x=_>0?((Number(C.damage)||0)/_*100).toFixed(0):"0",T=C.name.padEnd(12).slice(0,12);k+=T+da(":",": ")+mt(C.dps||0).padStart(6)+da(" DPS|"," DPS | "),k+=bt(Number(C.damage)||0).padStart(7)+" ("+x+"%)",Number(C.kills)>0&&(k+=da(`|击杀 ${C.kills}`,` | Kills ${C.kills}`)),X.getShowHealing()&&Number(C.hps)>.1&&(k+=da(`|HPS ${mt(C.hps)}`,` | HPS ${mt(C.hps)}`)),k+=`
`}),k}s(b,"buildClipboardText");function f(){let h=Ot.get();Ja.renderView(h)}s(f,"renderSelectedPanels"),Ja.init({onReset:s(()=>p("手动结束"),"onReset"),onSegmentChange:f,onCopy:s(h=>{let _=h&&h.dataset.compactAction==="true",y=h&&h.textContent;navigator.clipboard.writeText(b()).then(()=>{h.textContent=_?"✓":da("✓ 已复制","✓ Copied"),setTimeout(()=>{h.textContent=y||da("复制统计","Copy statistics")},2e3)}).catch(()=>{h.textContent=_?"!":da("✗ 复制失败","✗ Copy failed"),setTimeout(()=>{h.textContent=y||da("复制统计","Copy statistics")},2e3)})},"onCopy")}),e.event(Xe.bus,"guildBattleDetected",h=>{let _={...h.detail||{}};_.combatKey||(_.combatKey="guild-fallback-"+hn.dayStamp(new Date)),_.stageId||(_.stageId=String(_.combatKey)),m(_,"trial")}),e.event(Xe.bus,"guildTrialEnded",()=>{de.freeze("公会试炼阶段结束"),l("公会试炼阶段结束"),d(!0),n=!0,console.info("[KikiMeter] 公会试炼阶段已结束;当天进入下一关时将继续累计。")}),e.event(Xe.bus,"guildSlotRenamed",h=>{de.renamePlayer(h.detail.oldName,h.detail.newName)}),e.event(Xe.bus,"newBattle",h=>{h.detail&&h.detail.parallelGuildBattle||(m(h.detail,Xe.isInLabyrinth()?"labyrinth":"combat"),t=h.detail.names,a=h.detail.isBoss,de.setBoss(h.detail.isBoss))});function g(h={}){return Zu(h,de.getMeta())}return s(g,"acceptsCombatEvent"),e.event(Xe.bus,"damage",h=>{g(h.detail)&&(de.addTeamDamage(h.detail.amount,h.detail.ts),d())}),e.event(Xe.bus,"playerDamage",h=>{g(h.detail)&&de.addPlayerDamage(h.detail.name,h.detail.amount,h.detail.source)}),e.event(Xe.bus,"healing",h=>{g(h.detail)&&de.addPlayerHealing(h.detail.name,h.detail.amount)}),e.event(Xe.bus,"playerDamageTaken",h=>{g(h.detail)&&de.addPlayerTaken(h.detail.name,h.detail.amount,h.detail.source)}),e.event(Xe.bus,"kill",h=>{g(h.detail)&&h.detail.name&&de.addPlayerKill(h.detail.name)}),e.event(Xe.bus,"socketReconnected",h=>{let _=String(h.detail&&h.detail.characterId||"unknown"),y=de.getMeta();y.characterId&&y.characterId!=="unknown"&&_!=="unknown"&&String(y.characterId)!==_?(de.freeze("切换角色"),l("切换角色"),gt.clearActive(),de.reset(),n=!1,t=[]):n&&(de.pause("连接中断"),d(!0),i=!0)}),e.event($t.bus,"change",()=>{X.getMainMode()==="debug"&&f()}),e.event(ft.bus,"change",()=>{X.getMainMode()==="debug"&&f()}),e.event(qe.bus,"change",()=>{f(),d()}),e.event(Xe.bus,"newCombatInstance",()=>{}),e.event(document,"visibilitychange",()=>{document.hidden&&d(!0)}),e.event(window,"pagehide",()=>{n&&(de.pause("页面关闭"),d(!0))}),e.event(window,"pageshow",h=>{h.persisted&&n&&de.isFrozen()&&(de.resume("页面恢复"),d(!0))}),e.interval(()=>{de.advanceBuckets(),d(),Ja.isOpen()&&f()},250),Object.assign(gn,{enabled:!0,bus:Xe.bus,getSessionDps:de.getTeamDps,getSessionDamage:de.getTeamDamage,getTeamKills:de.getTeamKills,getPlayerDps:de.getPlayerDps,getPlayerDamage:de.getPlayerDamage,getPlayerDamageSources:de.getPlayerDamageSources,getPlayerTakenSources:de.getPlayerTakenSources,getPlayerTaken:de.getPlayerTaken,getPlayerHps:de.getPlayerHps,getPlayerKills:de.getPlayerKills,getCurrentBattle:s(()=>de.serialize(),"getCurrentBattle"),getBattleHistory:s(h=>gt.getAll(h),"getBattleHistory"),getDisplayedSegment:s(()=>Ot.get(),"getDisplayedSegment"),listSegments:s(()=>Na.options().map(h=>({key:h.key,label:h.label,current:!!h.current})),"listSegments"),selectSegment:s(h=>(Na.select(h),f(),Ot.get()),"selectSegment"),getClassDiagnostics:qe.diagnostics,getClassDebugEvents:$t.get,getClassDebugReport:$t.report,clearClassDebugReport:$t.clear,startClassProbe:ft.start,stopClassProbe:ft.stop,getClassProbeStatus:ft.status,getClassProbeReport:ft.report,downloadClassProbeReport:ft.download,clearClassProbe:ft.clear,setPlayerClass:s((h,_)=>{qe.setOverride(h,_),f()},"setPlayerClass"),getLanguage:X.getLanguage,setLanguage:s(h=>(X.setLanguage(h),la.close(),f(),X.getLanguage()),"setLanguage"),forceSave:s(()=>d(!0),"forceSave"),resetSession:s(()=>p("控制台调用"),"resetSession"),diagnostics:Zt.summary,captureStart:yn.start,captureStop:yn.stop,captureDownload:yn.download,captureSize:yn.size,scanGuildNames:Xe.scanGuildNames,scanGuildNamesAttrs:Xe.scanGuildNamesAttrs,scanGuildNamesLoose:Xe.scanGuildNamesLoose,scanGuildNamesByLocalName:Xe.scanGuildNamesByLocalName,previewGuildNames:Xe.previewGuildNames,debugCombatUnitNames:Xe.debugCombatUnitNames,scanGuildNamesByEllipsis:Xe.scanGuildNamesByEllipsis,countMiniUnitNames:Xe.countMiniUnitNames,scanForOutlierMiniUnit:Xe.scanForOutlierMiniUnit}),()=>{d(!0),ft.stop(),la.close(),Ja.destroy(),document.getElementById("kikimeter-zh-theme")?.remove(),gn.enabled=!1}}s(Ju,"start");gn.enabled=!1,u.features.register({id:"dps",setting:"showDamage",initialize({scope:e}){let t=null,a=s(()=>{t||(t=Ju(e),e.add(u.onMessage("*",(n,i)=>{Xe.handleMessage(i)})))},"activate");return document.readyState==="loading"?e.event(document,"DOMContentLoaded",a,{once:!0}):a(),()=>t?.()}}),Object.assign(u.api,{dps:gn});function _p(){let t=setInterval(s(()=>{let a=document.querySelector("button#buttonImportExport");if(a){clearInterval(t);let n=document.createElement("button");a.parentNode.parentElement.parentElement.insertBefore(n,a.parentElement.parentElement.nextSibling),n.textContent=u.config.isZH?"单人/组队导入(刷新游戏网页更新人物数据)":"Import solo/group (Refresh game page to update character set)",n.style.backgroundColor=u.config.SCRIPT_COLOR_MAIN,n.style.padding="5px",n.onclick=function(){console.log(u.config.isZH?"[MWITools] 已点击战斗模拟器导入按钮。":"[MWITools] Combat simulator import button clicked.");let i=document.querySelector("button#buttonGetPrices");return i&&(console.log(u.config.isZH?"[MWITools] 正在刷新战斗模拟器价格。":"[MWITools] Refreshing combat simulator prices."),i.click()),yp(n),!1}}},"checkElem"),200)}s(_p,"addImportButtonForAmvoidguy");async function yp(e){let[t,a,n,i,o,r,c]=wp();console.log(t),console.log(a),document.querySelector("a#group-combat-tab").click();let l=document.querySelector("input#inputSetGroupCombatAll");if(l.value=JSON.stringify(t),document.querySelector("button#buttonImportSet").click(),document.querySelector("a#player1-tab").textContent=a[0],document.querySelector("a#player2-tab").textContent=a[1],document.querySelector("a#player3-tab").textContent=a[2],document.querySelector("a#player4-tab").textContent=a[3],document.querySelector("a#player5-tab").textContent=a[4],i){if(r){document.querySelector("input#simDungeonToggle").checked=!0,document.querySelector("input#simDungeonToggle").dispatchEvent(new Event("change"));let d=document.querySelector("select#selectDungeon");for(let m=0;m<d.options.length;m++)if(d.options[m].value===i){d.options[m].selected=!0;break}}else{document.querySelector("input#simDungeonToggle").checked=!1,document.querySelector("input#simDungeonToggle").dispatchEvent(new Event("change"));let d=document.querySelector("select#selectZone");for(let m=0;m<d.options.length;m++)if(d.options[m].value===i){d.options[m].selected=!0;break}}if(o){let d=document.querySelector("select#selectDifficulty");for(let m=0;m<d.options.length;m++)if(Number(d.options[m].value)===o){d.options[m].selected=!0;break}}}for(let d=0;d<5;d++)n[d]?document.querySelector(`input#player${d+1}.form-check-input.player-checkbox`)&&(document.querySelector(`input#player${d+1}.form-check-input.player-checkbox`).checked=!0,document.querySelector(`input#player${d+1}.form-check-input.player-checkbox`).dispatchEvent(new Event("change"))):document.querySelector(`input#player${d+1}.form-check-input.player-checkbox`)&&(document.querySelector(`input#player${d+1}.form-check-input.player-checkbox`).checked=!1,document.querySelector(`input#player${d+1}.form-check-input.player-checkbox`).dispatchEvent(new Event("change")));document.querySelector("input#inputSimulationTime").value=24,e.textContent=u.config.isZH?"已导入":"Imported",c||setTimeout(()=>{document.querySelector("button#buttonStartSimulation").click()},500)}s(yp,"importDataForAmvoidguy");function wp(){let e=JSON.parse(GM_getValue("init_character_data","")),t=JSON.parse(GM_getValue("init_client_data","")),a=null;GM_getValue("new_battle","")&&(a=JSON.parse(GM_getValue("new_battle","")));let n=JSON.parse(GM_getValue("profile_export_list","[]")),i='{"player":{"attackLevel":1,"magicLevel":1,"meleeLevel":1,"rangedLevel":1,"defenseLevel":1,"staminaLevel":1,"intelligenceLevel":1,"equipment":[]},"food":{"/action_types/combat":[{"itemHrid":""},{"itemHrid":""},{"itemHrid":""}]},"drinks":{"/action_types/combat":[{"itemHrid":""},{"itemHrid":""},{"itemHrid":""}]},"abilities":[{"abilityHrid":"","level":"1"},{"abilityHrid":"","level":"1"},{"abilityHrid":"","level":"1"},{"abilityHrid":"","level":"1"},{"abilityHrid":"","level":"1"}],"triggerMap":{},"zone":"/actions/combat/fly","simulationTime":"100","houseRooms":{"/house_rooms/dairy_barn":0,"/house_rooms/garden":0,"/house_rooms/log_shed":0,"/house_rooms/forge":0,"/house_rooms/workshop":0,"/house_rooms/sewing_parlor":0,"/house_rooms/kitchen":0,"/house_rooms/brewery":0,"/house_rooms/laboratory":0,"/house_rooms/observatory":0,"/house_rooms/dining_room":0,"/house_rooms/library":0,"/house_rooms/dojo":0,"/house_rooms/gym":0,"/house_rooms/armory":0,"/house_rooms/archery_range":0,"/house_rooms/mystical_study":0}}',o={};o[1]=i,o[2]=i,o[3]=i,o[4]=i,o[5]=i;let r=!1,c=["Player 1","Player 2","Player 3","Player 4","Player 5"],l=[!1,!1,!1,!1,!1],d="/actions/combat/fly",m=!1,p=0;if(e?.partyInfo?.partySlotMap){r=!0;let b=1;for(let f of Object.values(e.partyInfo.partySlotMap)){if(f.characterID)if(f.characterID===e.character.id)o[b]=JSON.stringify(Cs(e,t)),c[b-1]=e.character.name,l[b-1]=!0;else{let g=n.filter(w=>w.characterID===f.characterID);if(g.length!==1){console.log(u.config.isZH?`[MWITools] 找不到角色 ${f.characterID} 的已保存资料。`:`[MWITools] Cannot find a saved profile for character ${f.characterID}.`),c[b-1]=u.config.isZH?"需要点开资料":"Open profile in game",b++;continue}let h=g[0],_=a.players.filter(w=>w.character.id===f.characterID),y=null;_.length===1&&(y=_[0]),o[b]=JSON.stringify(Yu(h,t,y)),c[b-1]=h.characterName,l[b-1]=!0}b++}d=e.partyInfo?.party?.actionHrid,p=e.partyInfo?.party?.difficultyTier,m=t.actionDetailMap[d]?.combatZoneInfo?.isDungeon}else{o[1]=JSON.stringify(Cs(e,t)),c[0]=e.character.name,l[0]=!0;for(let b of e.characterActions)if(b&&b.actionHrid.includes("/actions/combat/")){d=b.actionHrid,p=b.difficultyTier,m=t.actionDetailMap[b.actionHrid]?.combatZoneInfo?.isDungeon;break}}return[o,c,l,d,p,m,r]}s(wp,"constructGroupExportObj");function Cs(e,t){let a={};a.player={};for(let i of e.characterSkills)i.skillHrid.includes("stamina")?a.player.staminaLevel=i.level:i.skillHrid.includes("intelligence")?a.player.intelligenceLevel=i.level:i.skillHrid.includes("attack")?a.player.attackLevel=i.level:i.skillHrid.includes("melee")?a.player.meleeLevel=i.level:i.skillHrid.includes("defense")?a.player.defenseLevel=i.level:i.skillHrid.includes("ranged")?a.player.rangedLevel=i.level:i.skillHrid.includes("magic")&&(a.player.magicLevel=i.level);a.player.equipment=[];for(let i of e.characterItems)i.itemLocationHrid.includes("/item_locations/inventory")||a.player.equipment.push({itemLocationHrid:i.itemLocationHrid,itemHrid:i.itemHrid,enhancementLevel:i.enhancementLevel});a.food={},a.food["/action_types/combat"]=[];for(let i of e.actionTypeFoodSlotsMap["/action_types/combat"])i?a.food["/action_types/combat"].push({itemHrid:i.itemHrid}):a.food["/action_types/combat"].push({itemHrid:""});a.drinks={},a.drinks["/action_types/combat"]=[];for(let i of e.actionTypeDrinkSlotsMap["/action_types/combat"])i?a.drinks["/action_types/combat"].push({itemHrid:i.itemHrid}):a.drinks["/action_types/combat"].push({itemHrid:""});a.abilities=[{abilityHrid:"",level:"1"},{abilityHrid:"",level:"1"},{abilityHrid:"",level:"1"},{abilityHrid:"",level:"1"},{abilityHrid:"",level:"1"}];let n=1;for(let i of e.combatUnit.combatAbilities)i&&t.abilityDetailMap[i.abilityHrid].isSpecialAbility?a.abilities[0]={abilityHrid:i.abilityHrid,level:i.level}:i&&(a.abilities[n++]={abilityHrid:i.abilityHrid,level:i.level});a.triggerMap={...e.abilityCombatTriggersMap,...e.consumableCombatTriggersMap},a.houseRooms={};for(let i of Object.values(e.characterHouseRoomMap))a.houseRooms[i.houseRoomHrid]=i.level;a.achievements={};for(let i of Object.values(e.characterAchievements))a.achievements[i.achievementHrid]=i.isCompleted;return a}s(Cs,"constructSelfPlayerExportObjFromInitCharacterData");function Yu(e,t,a){let n={};n.player={};for(let i of e.profile.characterSkills)i.skillHrid.includes("stamina")?n.player.staminaLevel=i.level:i.skillHrid.includes("intelligence")?n.player.intelligenceLevel=i.level:i.skillHrid.includes("attack")?n.player.attackLevel=i.level:i.skillHrid.includes("melee")?n.player.meleeLevel=i.level:i.skillHrid.includes("defense")?n.player.defenseLevel=i.level:i.skillHrid.includes("ranged")?n.player.rangedLevel=i.level:i.skillHrid.includes("magic")&&(n.player.magicLevel=i.level);if(n.player.equipment=[],e.profile.wearableItemMap)for(let i in e.profile.wearableItemMap){let o=e.profile.wearableItemMap[i];n.player.equipment.push({itemLocationHrid:o.itemLocationHrid,itemHrid:o.itemHrid,enhancementLevel:o.enhancementLevel})}if(n.food={},n.food["/action_types/combat"]=[],n.drinks={},n.drinks["/action_types/combat"]=[],a?.combatConsumables)for(let i of a.combatConsumables)i.itemHrid.includes("coffee")?n.drinks["/action_types/combat"].push({itemHrid:i.itemHrid}):n.food["/action_types/combat"].push({itemHrid:i.itemHrid});else{let i=e.profile.wearableItemMap&&(e.profile.wearableItemMap["/item_locations/main_hand"]?.itemHrid||e.profile.wearableItemMap["/item_locations/two_hand"]?.itemHrid);i&&(i.includes("shooter")||i.includes("bow")?(n.drinks["/action_types/combat"].push({itemHrid:"/items/wisdom_coffee"}),n.drinks["/action_types/combat"].push({itemHrid:"/items/super_ranged_coffee"}),n.drinks["/action_types/combat"].push({itemHrid:"/items/critical_coffee"}),n.food["/action_types/combat"].push({itemHrid:"/items/spaceberry_donut"}),n.food["/action_types/combat"].push({itemHrid:"/items/spaceberry_cake"}),n.food["/action_types/combat"].push({itemHrid:"/items/star_fruit_yogurt"})):i.includes("boomstick")||i.includes("staff")||i.includes("trident")?(n.drinks["/action_types/combat"].push({itemHrid:"/items/wisdom_coffee"}),n.drinks["/action_types/combat"].push({itemHrid:"/items/super_magic_coffee"}),n.drinks["/action_types/combat"].push({itemHrid:"/items/channeling_coffee"}),n.food["/action_types/combat"].push({itemHrid:"/items/spaceberry_cake"}),n.food["/action_types/combat"].push({itemHrid:"/items/star_fruit_gummy"}),n.food["/action_types/combat"].push({itemHrid:"/items/star_fruit_yogurt"})):i.includes("bulwark")?(n.drinks["/action_types/combat"].push({itemHrid:"/items/wisdom_coffee"}),n.drinks["/action_types/combat"].push({itemHrid:"/items/super_defense_coffee"}),n.drinks["/action_types/combat"].push({itemHrid:"/items/super_stamina_coffee"}),n.food["/action_types/combat"].push({itemHrid:"/items/spaceberry_donut"}),n.food["/action_types/combat"].push({itemHrid:"/items/spaceberry_cake"}),n.food["/action_types/combat"].push({itemHrid:"/items/star_fruit_yogurt"})):(n.drinks["/action_types/combat"].push({itemHrid:"/items/wisdom_coffee"}),n.drinks["/action_types/combat"].push({itemHrid:"/items/super_melee_coffee"}),n.drinks["/action_types/combat"].push({itemHrid:"/items/swiftness_coffee"}),n.food["/action_types/combat"].push({itemHrid:"/items/spaceberry_donut"}),n.food["/action_types/combat"].push({itemHrid:"/items/spaceberry_cake"}),n.food["/action_types/combat"].push({itemHrid:"/items/star_fruit_yogurt"})))}if(n.abilities=[{abilityHrid:"",level:"1"},{abilityHrid:"",level:"1"},{abilityHrid:"",level:"1"},{abilityHrid:"",level:"1"},{abilityHrid:"",level:"1"}],e.profile.equippedAbilities){let i=1;for(let o of e.profile.equippedAbilities)o&&t.abilityDetailMap[o.abilityHrid].isSpecialAbility?n.abilities[0]={abilityHrid:o.abilityHrid,level:o.level}:o&&(n.abilities[i++]={abilityHrid:o.abilityHrid,level:o.level})}e.profile.abilityCombatTriggersMap&&e.profile.consumableCombatTriggersMap&&(n.triggerMap={...e.profile.abilityCombatTriggersMap,...e.profile.consumableCombatTriggersMap}),n.houseRooms={};for(let i of Object.values(e.profile.characterHouseRoomMap))n.houseRooms[i.houseRoomHrid]=i.level;n.achievements={};for(let i of Object.values(e.profile.characterAchievements))n.achievements[i.achievementHrid]=i.isCompleted;return n}s(Yu,"constructPlayerExportObjFromStoredProfile");async function f7(){let e=document.querySelector("div.row")?.querySelectorAll("div.col-md-5")?.[2]?.querySelector("div.row > div.col-md-5");for(;!e;)await new Promise(o=>setTimeout(o,100)),e=document.querySelector("div.row")?.querySelectorAll("div.col-md-5")?.[2]?.querySelector("div.row > div.col-md-5");let t=document.querySelector("div#simulationResultPlayerDeaths"),a=document.querySelector("div#simulationResultExperienceGain"),n=document.querySelector("div#simulationResultConsumablesUsed");t.style.backgroundColor="#FFEAE9",t.style.color="black",a.style.backgroundColor="#CDFFDD",a.style.color="black",n.style.backgroundColor="#F0F8FF",n.style.color="black";let i=document.createElement("div");i.id="tillLevel",i.style.backgroundColor="#FFFFE0",i.style.color="black",i.textContent="",e.append(i),new MutationObserver(o=>{o.forEach(r=>{r.addedNodes.length>=3&&vp(r.addedNodes,i)})}).observe(a,{childList:!0,subtree:!0})}s(f7,"observeResultsForAmvoidguy");function vp(e,t){let a=localStorage.getItem("i18nextLng")?.toLowerCase()?.startsWith("zh"),n={stamina:0,intelligence:0,attack:0,melee:0,defense:0,ranged:0,magic:0};e.forEach(_=>{u.api.getOriTextFromElement(_.children[0]).includes("Stamina")||u.api.getOriTextFromElement(_.children[0]).includes("耐力")?n.stamina=Number(_.children[1].textContent):u.api.getOriTextFromElement(_.children[0]).includes("Intelligence")||u.api.getOriTextFromElement(_.children[0]).includes("智力")?n.intelligence=Number(_.children[1].textContent):u.api.getOriTextFromElement(_.children[0]).includes("Attack")||u.api.getOriTextFromElement(_.children[0]).includes("攻击")?n.attack=Number(_.children[1].textContent):u.api.getOriTextFromElement(_.children[0]).includes("Melee")||u.api.getOriTextFromElement(_.children[0]).includes("近战")?n.melee=Number(_.children[1].textContent):u.api.getOriTextFromElement(_.children[0]).includes("Defense")||u.api.getOriTextFromElement(_.children[0]).includes("防御")?n.defense=Number(_.children[1].textContent):u.api.getOriTextFromElement(_.children[0]).includes("Ranged")||u.api.getOriTextFromElement(_.children[0]).includes("远程")?n.ranged=Number(_.children[1].textContent):(u.api.getOriTextFromElement(_.children[0]).includes("Magic")||u.api.getOriTextFromElement(_.children[0]).includes("魔法"))&&(n.magic=Number(_.children[1].textContent))});let i=GM_getValue("init_character_data",null),o=JSON.parse(i);if(!o||!o.characterSkills||!o.currentTimestamp){console.error(u.config.isZH?"[MWITools] 无法导出:本地没有角色数据。":"[MWITools] Export failed because no character data is stored locally.");return}let r={};for(let _ of o.characterSkills)_.skillHrid.includes("stamina")?(r.stamina={},r.stamina.skillName="Stamina",r.stamina.skillZhName="耐力",r.stamina.currentLevel=_.level,r.stamina.currentExp=_.experience):_.skillHrid.includes("intelligence")?(r.intelligence={},r.intelligence.skillName="Intelligence",r.intelligence.skillZhName="智力",r.intelligence.currentLevel=_.level,r.intelligence.currentExp=_.experience):_.skillHrid.includes("attack")?(r.attack={},r.attack.skillName="Attack",r.attack.skillZhName="攻击",r.attack.currentLevel=_.level,r.attack.currentExp=_.experience):_.skillHrid.includes("melee")?(r.melee={},r.melee.skillName="Melee",r.melee.skillZhName="近战",r.melee.currentLevel=_.level,r.melee.currentExp=_.experience):_.skillHrid.includes("defense")?(r.defense={},r.defense.skillName="Defense",r.defense.skillZhName="防御",r.defense.currentLevel=_.level,r.defense.currentExp=_.experience):_.skillHrid.includes("ranged")?(r.ranged={},r.ranged.skillName="Ranged",r.ranged.skillZhName="远程",r.ranged.currentLevel=_.level,r.ranged.currentExp=_.experience):_.skillHrid.includes("magic")&&(r.magic={},r.magic.skillName="Magic",r.magic.skillZhName="魔法",r.magic.currentLevel=_.level,r.magic.currentExp=_.experience);let c=["stamina","intelligence","attack","melee","defense","ranged","magic"],l="";for(let _ of c)l+=`<div id="${"inputDiv_"+_}" style="display: flex; justify-content: flex-end">${a?r[_].skillZhName:r[_].skillName}${a?"到":" to level "}<input id="${"input_"+_}" type="number" value="${r[_].currentLevel+1}" min="${r[_].currentLevel+1}" max="200">${a?"级":""}</div>`;l+=`<div id="script_afterDays" style="display: flex; justify-content: flex-end"><input id="script_afterDays_input" type="number" value="1" min="0" max="200">${a?"天后":"days after"}</div>`,l+='<div id="needDiv"></div>',l+='<div id="needListDiv"></div>',t.innerHTML=l;for(let _ of c){let y=t.querySelector(`div#${"inputDiv_"+_}`),w=t.querySelector(`input#${"input_"+_}`);w.onchange=()=>{Ms(_,w,r,t,n,a)},w.addEventListener("keyup",function(k){Ms(_,w,r,t,n,a)}),y.onclick=()=>{Ms(_,w,r,t,n,a)}}let d=t.querySelector("div#script_afterDays"),m=t.querySelector("input#script_afterDays_input");m.onchange=()=>{As(m,r,t,n,c,a)},m.addEventListener("keyup",function(_){As(m,r,t,n,c,a)}),d.onclick=()=>{As(m,r,t,n,c,a)};let p=document.querySelector("span#expensesSpan"),b=document.querySelector("span#revenueSpan"),f=document.querySelector("span#profitPreview"),g=document.querySelector("div#script_expense"),h=document.querySelector("div#script_revenue");g&&g?(g.textContent=p.parentNode.textContent,h.textContent=b.parentNode.textContent):f.parentNode.insertAdjacentHTML("beforeend",`<div id="script_expense" style="background-color: #DCDCDC; color: black;">${p.parentNode.textContent}</div><div id="script_revenue" style="background-color: #DCDCDC; color: black;">${b.parentNode.textContent}</div>`)}s(vp,"handleResultForAmvoidguy");function As(e,t,a,n,i,o){let r=JSON.parse(GM_getValue("init_client_data",null)).levelExperienceTable,c=Number(e.value);a.querySelector("div#needDiv").textContent=`${o?"":"After"} ${c} ${o?"天后:":"days: "}`;let l=a.querySelector("div#needListDiv"),d="",m={};for(let b of i)for(let f of Object.values(t))if(f.skillName.toLowerCase()===b.toLowerCase()){let g=f.currentExp+n[f.skillName.toLowerCase()]*c*24,h=1;for(;r[h]<g;)h++;h--;let _=r[h],w=r[h+1]-1-_,k=Number((g-_)/w*100).toFixed(1);m[b.toLowerCase()]=h,d+=`<div>${o?f.skillZhName:f.skillName} ${o?"":"level"} ${h} ${o?"级":""} ${k}%</div>`;break}let p=.1*(m.stamina+m.intelligence+m.defense+m.attack+Math.max(m.melee,m.ranged,m.magic))+.5*Math.max(m.attack,m.defense,m.melee,m.ranged,m.magic);d+=`<div>${o?"战斗等级:":"Combat level: "} ${p.toFixed(1)}</div>`,l.innerHTML=d}s(As,"calculateAfterDays");function Ms(e,t,a,n,i,o){let r=JSON.parse(GM_getValue("init_client_data",null)).levelExperienceTable,c=Number(t.value);n.querySelector("div#needDiv").textContent=`${o?a[e].skillZhName:a[e].skillName} ${o?"到":"to level"} ${c} ${o?"级 还需:":" takes: "}`;let l=n.querySelector("div#needListDiv"),d=Number(a[e].currentLevel),m=Number(a[e].currentExp);if(c>d&&c<=200)if(i[e]===0)l.innerHTML=o?"永远":"Forever";else{let b=(r[c]-m)/i[e],f="";f+=`<div>[${Sp(b)}]</div>`;let g=document.querySelectorAll("div#simulationResultConsumablesUsed div.row");for(let h of g){let _=h.children[0].textContent,y=Number(h.children[1].textContent);f+=`<div>${_} ${Number(y*b).toFixed(0)}</div>`}l.innerHTML=f}else l.innerHTML=o?"输入错误":"Input error"}s(Ms,"calculateTill");function b7(){let t=setInterval(s(()=>{let a=document.querySelector('div[role="tablist"]');if(a){clearInterval(t);let n=document.createElement("button");a.parentNode.insertBefore(n,a.nextSibling),n.textContent=u.config.isZH?"导入人物数据 (刷新游戏网页更新人物数据)":"Import character settings (Refresh game page to update character settings)",n.style.backgroundColor=u.config.SCRIPT_COLOR_MAIN,n.style.color="black",n.style.padding="5px",n.onclick=function(){return console.log(u.config.isZH?"[MWITools] 已点击 Mooneycalc 导入按钮。":"[MWITools] Mooneycalc import button clicked."),xp(n),!1}}},"checkElem"),200)}s(b7,"addImportButtonForMooneycalc");async function xp(e){let t=JSON.parse(GM_getValue("init_character_data",""));if(console.log(t),!t||!t.characterSkills||!t.currentTimestamp){e.textContent=u.config.isZH?"错误:没有人物数据":"Error: no character settings found";return}let a=kp(t);localStorage.setItem("settings",a),e.textContent=u.config.isZH?"已导入":"Imported",await new Promise(n=>setTimeout(n,500)),location.reload()}s(xp,"importDataForMooneycalc");function kp(e){let t=localStorage.getItem("settings"),a=JSON.parse(t);a.state.settings.levels={};for(let n of e.characterSkills)a.state.settings.levels[n.skillHrid]=n.level;a.state.settings.communityBuffs={};for(let n of e.communityBuffs)a.state.settings.communityBuffs[n.hrid]=n.level;a.state.settings.equipment={},a.state.settings.equipmentLevels={};for(let n of e.characterItems)n.itemLocationHrid!=="/item_locations/inventory"&&(a.state.settings.equipment[n.itemLocationHrid.replace("item_locations","equipment_types")]=n.itemHrid,a.state.settings.equipmentLevels[n.itemLocationHrid.replace("item_locations","equipment_types")]=n.enhancementLevel);a.state.settings.houseRooms={};for(let n of Object.values(e.characterHouseRoomMap))a.state.settings.houseRooms[n.houseRoomHrid]=n.level;return JSON.stringify(a)}s(kp,"constructMooneycalcLocalStorage");function Sp(e){let t=e*60*60;return u.api.timeReadable?.(t)??`${Math.round(e)}h`}s(Sp,"hoursToReadableString");function p7(e){let a=setInterval(s(()=>{let n=document.querySelector("div.SharableProfile_overviewTab__W4dCV");if(n){clearInterval(a);let i=document.createElement("button");return n.appendChild(i),i.textContent=u.config.isZH?"导出人物到剪贴板":"Export to clipboard",i.style.borderRadius="5px",i.style.height="30px",i.style.backgroundColor=u.config.SCRIPT_COLOR_MAIN,i.style.color="black",i.style.boxShadow="none",i.style.border="0px",i.onclick=function(){let o="",r=e.profile.characterSkills[0].characterID,c=JSON.parse(GM_getValue("init_client_data","")),l=JSON.parse(GM_getValue("init_character_data",""));if(r===l.character.id)o=JSON.stringify(Cs(l,c));else{let m=JSON.parse(GM_getValue("profile_export_list","[]")).filter(f=>f.characterID===r),p=null;if(m.length!==1){console.log(u.config.isZH?`[MWITools] 找不到角色 ${r} 的已保存资料。`:`[MWITools] Cannot find a saved profile for character ${r}.`);return}p=m[0];let b=null;if(GM_getValue("new_battle","")){let g=JSON.parse(GM_getValue("new_battle","")).players.filter(h=>h.character.id===r);g.length===1&&(b=g[0])}o=JSON.stringify(Yu(p,c,b))}return console.log(o),navigator.clipboard.writeText(o),i.textContent=u.config.isZH?"已复制":"Copied",!1},!1}},"checkElem"),200)}s(p7,"addExportButton");var g7=_p;Object.assign(u.api,{addImportButtonFor9Battles:g7,addImportButtonForAmvoidguy:_p,importDataForAmvoidguy:yp,constructGroupExportObj:wp,constructSelfPlayerExportObjFromInitCharacterData:Cs,constructPlayerExportObjFromStoredProfile:Yu,observeResultsForAmvoidguy:f7,handleResultForAmvoidguy:vp,calculateAfterDays:As,calculateTill:Ms,addImportButtonForMooneycalc:b7,importDataForMooneycalc:xp,constructMooneycalcLocalStorage:kp,hoursToReadableString:Sp,addExportButton:p7});function Ya(e){document.querySelectorAll(e).forEach(t=>t.remove())}s(Ya,"removeAll");var Ur={invWorth:{scope:"character",initialize({scope:e}){u.api.scheduleNetworthRefresh?.(),e.interval(()=>{[...document.querySelectorAll('div[class*="Inventory_items"]')].some(a=>!a.classList.contains("script_buildScore_added"))&&u.api.scheduleNetworthRefresh?.()},500)},cleanup(){Ya("#script_inventory_summary"),document.querySelectorAll(".script_buildScore_added").forEach(e=>{e.classList.remove("script_buildScore_added"),delete e.dataset.mwitoolsInventoryDisplayVersion}),Ya(".mwi-inventory-category-value"),Ya("#script_inv_sort_controls"),document.querySelectorAll(".script_invSort_added").forEach(e=>e.classList.remove("script_invSort_added")),u.api.scheduleNetworthRefresh?.()}},invSort:{scope:"character",initialize({scope:e}){u.api.scheduleNetworthRefresh?.(),e.interval(()=>{[...document.querySelectorAll('div[class*="Inventory_items"]')].some(a=>!a.classList.contains("script_invSort_added"))&&u.api.scheduleNetworthRefresh?.()},500)},cleanup(){Ya("#script_inv_sort_controls,#script_stack_price"),document.querySelectorAll(".script_invSort_added").forEach(e=>e.classList.remove("script_invSort_added")),u.api.scheduleNetworthRefresh?.()}},actionQueue:{scope:"character",cleanup(){u.api.disconnectActionQueueObservers?.(),Ya(".script_actionTime,#script_queueTotalTime")}},checkEquipment:{scope:"character",initialize({scope:e}){u.api.checkEquipment?.(),e.interval(()=>u.api.checkEquipment?.(),500)},cleanup(){Ya("#script_item_warning"),Ya("#mwitools-equipment-warning-style"),document.querySelectorAll(".mwi-equipment-warning-host").forEach(e=>e.classList.remove("mwi-equipment-warning-host"))}},actionPanel_foragingTotal:{scope:"character",dependsOn:["actionPanel_totalTime"],cleanup(){Ya("#totalProfit")}}};for(let e of["useOrangeAsMainColor","profileBuildScore","battlePanel","enhanceSim","forceMWIToolsDisplayZH"])Ur[e]={};Ur.ThirdPartyLinks={initialize({scope:e}){u.api.add3rdPartyLinks?.(),e.interval(()=>u.api.add3rdPartyLinks?.(),500)},cleanup(){Ya('[data-mwitools-external-link="true"]')}},Ur.notifiEmptyAction={scope:"character",initialize(){u.api.notificate?.()}},Ur.fillMarketOrderPrice={scope:"character",initialize({scope:e}){let t=null,a=s(()=>{let n=document.querySelector(".MarketplacePanel_marketListings__1GCyQ");if(!n||n===t)return;t=n;let i=new MutationObserver(o=>{for(let r of o)for(let c of r.addedNodes)c?.classList?.contains("Modal_modalContainer__3B80m")&&u.api.handleMarketNewOrder?.(c)});e.observer(i,n,{childList:!0})},"attach");a(),e.interval(a,500)}};for(let[e,t]of Object.entries(Ur))u.features.getStatus(e).status==="unregistered"&&u.features.register({id:e,setting:e,scope:t.scope??"global",dependsOn:t.dependsOn,initialize(a){t.initialize?.(a)},cleanup(){t.cleanup?.()}});function Qu(){let e=u.settings.settingsMap;(e.invWorth.isTrue||e.invSort.isTrue)&&u.api.scheduleNetworthRefresh(),e.assetHistory.isTrue&&u.api.assetHistory.scheduleRefresh()}s(Qu,"refreshAssets"),u.onMessage("init_client_data",(e,t)=>{console.log(e),GM_setValue("init_client_data",t)}),u.onMessage("init_character_data",(e,t)=>{console.log(e),GM_setValue("init_character_data",t);let a=u.settings.settingsMap;Qu(),a.checkEquipment.isTrue&&u.api.checkEquipment()}),u.onMessage("actions_updated",()=>{let e=u.settings.settingsMap;e.checkEquipment.isTrue&&u.api.checkEquipment(),e.notifiEmptyAction.isTrue&&setTimeout(u.api.notificate,1e3)}),u.onMessage("battle_unit_fetched",e=>{u.settings.settingsMap.battlePanel.isTrue&&u.api.handleBattleSummary(e)}),u.onMessage("items_updated",()=>{u.settings.settingsMap.checkEquipment.isTrue&&u.api.checkEquipment(),Qu()});for(let e of["market_item_values_updated","market_item_order_books_updated","market_listings_updated","guild_updated","house_rooms_updated","abilities_updated","character_abilities_updated"])u.onMessage(e,()=>{Qu()});u.onMessage("profile_shared",e=>{let t=GM_getValue("profile_export_list",null);t?JSON.parse(t)?.filter||(console.error(u.config.isZH?"[MWITools] 已保存的资料导出列表无效,现已清空。":"[MWITools] The saved profile export list was invalid and has been cleared."),GM_setValue("profile_export_list",JSON.stringify([]))):GM_setValue("profile_export_list",JSON.stringify([])),e.characterID=e.profile.characterSkills[0].characterID,e.characterName=e.profile.sharableCharacter.name,e.timestamp=Date.now(),t=GM_getValue("profile_export_list",null)||JSON.stringify([]);let a=JSON.parse(t).filter(n=>n.characterID!==e.characterID);a.unshift(e),a.length>20&&a.pop(),GM_setValue("profile_export_list",JSON.stringify(a)),u.api.addExportButton(e),u.settings.settingsMap.profileBuildScore.isTrue&&u.api.showBuildScoreOnProfile(e)});function Cp(){let t=(globalThis.unsafeWindow??globalThis).localStorageUtil;if(!localStorage.getItem("initClientData")||typeof t?.getInitClientData!="function")return!1;let a=t.getInitClientData();if(!a?.actionDetailMap||!a?.itemDetailMap)return!1;GM_setValue("init_client_data",JSON.stringify(a)),u.state.initData_actionDetailMap=a.actionDetailMap,u.state.initData_levelExperienceTable=a.levelExperienceTable,u.state.initData_enhancementLevelSuccessRateTable=a.enhancementLevelSuccessRateTable,u.state.initData_enhancementLevelTotalBonusMultiplierTable=a.enhancementLevelTotalBonusMultiplierTable,u.state.initData_itemDetailMap=a.itemDetailMap,u.state.initData_itemLocationDetailMap=a.itemLocationDetailMap,u.state.initData_houseRoomDetailMap=a.houseRoomDetailMap,u.state.initData_actionCategoryDetailMap=a.actionCategoryDetailMap,u.state.initData_abilityDetailMap=a.abilityDetailMap,u.state.initData_shopItemDetailMap=a.shopItemDetailMap,u.state.initData_taskShopItemDetailMap=a.taskShopItemDetailMap,u.state.initData_labyrinthShopItemDetailMap=a.labyrinthShopItemDetailMap,u.state.initData_openableLootDropMap=a.openableLootDropMap,u.state.initData_guildBuffDetailMap=a.guildBuffDetailMap,u.api.invalidateAssetValueCache();for(let[n,i]of Object.entries(u.state.initData_itemDetailMap))u.state.itemEnNameToHridMap[i.name]=n;return!0}s(Cp,"loadCachedClientData");function h7(){Cp()||u.features.register({id:"clientDataCache",initialize({scope:n}){let i=n.interval(()=>{Cp()&&clearInterval(i)},250)}}),u.api.loadMarketItemValuesFromStorage(),u.api.hookWS();let t=3,a=localStorage.getItem("MWITools_marketAPI_ApiVersion");(!a||parseInt(a)<t)&&(console.log(u.config.isZH?"[MWITools] 市场 API 版本已更新,正在清理旧缓存。":"[MWITools] Market API version changed; clearing the old cache."),localStorage.setItem("MWITools_marketAPI_timestamp",JSON.stringify(0)),localStorage.setItem("MWITools_marketAPI_json",JSON.stringify(null)),localStorage.setItem("MWITools_marketAPI_ApiVersion",JSON.stringify(t))),u.api.fetchMarketJSON(!0),u.start()}s(h7,"startGame");function _7(){if(u.api.readSettings(),document.URL.includes("amvoidguy.github.io")||document.URL.includes("shykai.github.io/MWICombatSimulatorTest/")){u.api.addImportButtonForAmvoidguy(),u.api.observeResultsForAmvoidguy();return}if(document.URL.includes("mooneycalc.netlify.app")||document.URL.includes("mooneycalc.vercel.app")){u.api.addImportButtonForMooneycalc();return}h7()}s(_7,"main"),_7();})();