@forsion/extend 0.8.3 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -1,72 +1,72 @@
1
- "use strict";var __fxExtend=(()=>{var xr=Object.defineProperty;var xl=Object.getOwnPropertyDescriptor;var vl=Object.getOwnPropertyNames;var yl=Object.prototype.hasOwnProperty;var kl=(t,e)=>{for(var n in e)xr(t,n,{get:e[n],enumerable:!0})},wl=(t,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of vl(e))!yl.call(t,i)&&i!==n&&xr(t,i,{get:()=>e[i],enumerable:!(a=xl(e,i))||a.enumerable});return t};var _l=t=>wl(xr({},"__esModule",{value:!0}),t);var cp={};kl(cp,{dispose:()=>js});function Sl(t,e){this.v=t,this.k=e}function oi(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,a=Array(e);n<e;n++)a[n]=t[n];return a}function Al(t){if(Array.isArray(t))return t}function Cl(t,e){var n=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(n!=null){var a,i,o,s,l=[],c=!0,u=!1;try{if(o=(n=n.call(t)).next,e===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=o.call(n)).done)&&(l.push(a.value),l.length!==e);c=!0);}catch(f){u=!0,i=f}finally{try{if(!c&&n.return!=null&&(s=n.return(),Object(s)!==s))return}finally{if(u)throw i}}return l}}function Tl(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
2
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Pl(t,e){return Al(t)||Cl(t,e)||El(t,e)||Tl()}function El(t,e){if(t){if(typeof t=="string")return oi(t,e);var n={}.toString.call(t).slice(8,-1);return n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set"?Array.from(t):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?oi(t,e):void 0}}function wn(t){var e,n;function a(o,s){try{var l=t[o](s),c=l.value,u=c instanceof Sl;Promise.resolve(u?c.v:c).then(function(f){if(u){var m=o==="return"&&c.k?o:"next";if(!c.k||f.done)return a(m,f);f=t[m](f).value}i(!!l.done,f)},function(f){a("throw",f)})}catch(f){i(2,f)}}function i(o,s){o===2?e.reject(s):e.resolve({value:s,done:o}),(e=e.next)?a(e.key,e.arg):n=null}this._invoke=function(o,s){return new Promise(function(l,c){var u={key:o,arg:s,resolve:l,reject:c,next:null};n?n=n.next=u:(e=n=u,a(o,s))})},typeof t.return!="function"&&(this.return=void 0)}wn.prototype[typeof Symbol=="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},wn.prototype.next=function(t){return this._invoke("next",t)},wn.prototype.throw=function(t){return this._invoke("throw",t)},wn.prototype.return=function(t){return this._invoke("return",t)};var ki=Object.entries,si=Object.setPrototypeOf,Rl=Object.isFrozen,Ml=Object.getPrototypeOf,Il=Object.getOwnPropertyDescriptor,ke=Object.freeze,_e=Object.seal,Nt=Object.create,wi=typeof Reflect<"u"&&Reflect,Ar=wi.apply,Cr=wi.construct;ke||(ke=function(e){return e});_e||(_e=function(e){return e});Ar||(Ar=function(e,n){for(var a=arguments.length,i=new Array(a>2?a-2:0),o=2;o<a;o++)i[o-2]=arguments[o];return e.apply(n,i)});Cr||(Cr=function(e){for(var n=arguments.length,a=new Array(n>1?n-1:0),i=1;i<n;i++)a[i-1]=arguments[i];return new e(...a)});var bt=xe(Array.prototype.forEach);Array.prototype.indexOf;var Ll=xe(Array.prototype.lastIndexOf),li=xe(Array.prototype.pop),jt=xe(Array.prototype.push);Array.prototype.slice;var Dl=xe(Array.prototype.splice),Ot=Array.isArray,Kt=xe(String.prototype.toLowerCase),vr=xe(String.prototype.toString),ci=xe(String.prototype.match),Xt=xe(String.prototype.replace),ui=xe(String.prototype.indexOf),zl=xe(String.prototype.trim),Nl=xe(Number.prototype.toString),Ol=xe(Boolean.prototype.toString),di=typeof BigInt>"u"?null:xe(BigInt.prototype.toString),pi=typeof Symbol>"u"?null:xe(Symbol.prototype.toString),Pe=xe(Object.prototype.hasOwnProperty),Vt=xe(Object.prototype.toString),Ae=xe(RegExp.prototype.test),ot=Bl(TypeError);function xe(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var n=arguments.length,a=new Array(n>1?n-1:0),i=1;i<n;i++)a[i-1]=arguments[i];return Ar(t,e,a)}}function Bl(t){return function(){for(var e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];return Cr(t,n)}}function Y(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Kt;if(si&&si(t,null),!Ot(e))return t;let a=e.length;for(;a--;){let i=e[a];if(typeof i=="string"){let o=n(i);o!==i&&(Rl(e)||(e[a]=o),i=o)}t[i]=!0}return t}function Fl(t){for(let e=0;e<t.length;e++)Pe(t,e)||(t[e]=null);return t}function Ie(t){let e=Nt(null);for(let a of ki(t)){var n=Pl(a,2);let i=n[0],o=n[1];Pe(t,i)&&(Ot(o)?e[i]=Fl(o):o&&typeof o=="object"&&o.constructor===Object?e[i]=Ie(o):e[i]=o)}return e}function $l(t){switch(typeof t){case"string":return t;case"number":return Nl(t);case"boolean":return Ol(t);case"bigint":return di?di(t):"0";case"symbol":return pi?pi(t):"Symbol()";case"undefined":return Vt(t);case"function":case"object":{if(t===null)return Vt(t);let e=t,n=ze(e,"toString");if(typeof n=="function"){let a=n(e);return typeof a=="string"?a:Vt(a)}return Vt(t)}default:return Vt(t)}}function ze(t,e){for(;t!==null;){let a=Il(t,e);if(a){if(a.get)return xe(a.get);if(typeof a.value=="function")return xe(a.value)}t=Ml(t)}function n(){return null}return n}function Ul(t){try{return Ae(t,""),!0}catch{return!1}}var fi=ke(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),yr=ke(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),kr=ke(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Hl=ke(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),wr=ke(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),ql=ke(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),mi=ke(["#text"]),gi=ke(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),_r=ke(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","pointer-events","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","vector-effect","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),hi=ke(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),_n=ke(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Wl=_e(/{{[\w\W]*|^[\w\W]*}}/g),jl=_e(/<%[\w\W]*|^[\w\W]*%>/g),Xl=_e(/\${[\w\W]*/g),Vl=_e(/^data-[\-\w.\u00B7-\uFFFF]+$/),Kl=_e(/^aria-[\-\w]+$/),bi=_e(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Jl=_e(/^(?:\w+script|data):/i),Yl=_e(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Gl=_e(/^html$/i),Zl=_e(/^[a-z][.\w]*(-[.\w]+)+$/i),xi=_e(/<[/\w!]/g),vi=_e(/<[/\w]/g),Ql=_e(/<\/no(script|embed|frames)/i),ec=_e(/\/>/i),Me={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},_i=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],tc=ke(Y({},_i)),nc=(function(){let t={};return bt(_i,e=>{t[e]=_e(new RegExp("</"+e+"(?=[\\t\\n\\f\\r />])","i"))}),ke(t)})(),rc=function(){return typeof window>"u"?null:window},ac=function(e,n){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let a=null,i="data-tt-policy-suffix";n&&n.hasAttribute(i)&&(a=n.getAttribute(i));let o="dompurify"+(a?"#"+a:"");try{return e.createPolicy(o,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+o+" could not be created."),null}},yi=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},st=function(e,n,a,i){return Pe(e,n)&&Ot(e[n])?Y(i.base?Ie(i.base):{},e[n],i.transform):a},Sr=function(e,n,a){let i=Pe(e,n)?e[n]:void 0;return i&&typeof i=="object"?Ie(i):a()};function Si(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:rc(),e=A=>Si(A);if(e.version="3.4.16",e.removed=[],!t||!t.document||t.document.nodeType!==Me.document||!t.Element)return e.isSupported=!1,e;let n=t.document,a=n,i=a.currentScript;t.DocumentFragment;let o=t.HTMLTemplateElement,s=t.Node,l=t.Element,c=t.NodeFilter;t.NamedNodeMap===void 0&&(t.NamedNodeMap||t.MozNamedAttrMap),t.HTMLFormElement;let u=t.DOMParser,f=t.trustedTypes,m=l.prototype,d=ze(m,"cloneNode"),g=ze(m,"remove"),h=ze(m,"removeAttributeNode"),v=ze(m,"nextSibling"),k=ze(m,"childNodes"),y=ze(m,"parentNode"),x=ze(m,"shadowRoot"),w=ze(m,"attributes"),C=s&&s.prototype?ze(s.prototype,"nodeType"):null,R=s&&s.prototype?ze(s.prototype,"nodeName"):null,U=s&&s.prototype?ze(s.prototype,"ownerDocument"):null,J=function(p){return C?C(p):p.nodeType},H=function(p){return R?R(p):p.nodeName};if(typeof o=="function"){let A=n.createElement("template");A.content&&A.content.ownerDocument&&(n=A.content.ownerDocument)}let V,ee="",z,Q=!1,oe=0,Ee=function(){if(oe>0)throw ot('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},I=function(p){Ee(),oe++;try{return V.createHTML(p)}finally{oe--}},pe=function(p){Ee(),oe++;try{return V.createScriptURL(p)}finally{oe--}},ft=function(){return Q||(z=ac(f,i),Q=!0),z},cn=n,nr=cn.implementation,Ra=cn.createNodeIterator,Xs=cn.createDocumentFragment,Vs=cn.getElementsByTagName,Ks=a.importNode,se=yi();e.isSupported=typeof ki=="function"&&typeof y=="function"&&nr&&nr.createHTMLDocument!==void 0;let Js=Wl,Ys=jl,Gs=Xl,Zs=Vl,Qs=Kl,el=Jl,Ma=Yl,tl=Zl,Ia=bi,le=null,rr=Y({},[...fi,...yr,...kr,...wr,...mi]),ce=null,ar=Y({},[...gi,..._r,...hi,..._n]),We=Object.seal(Nt(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ht=null,La=null,rt=Object.seal(Nt(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Da=!0,ir=!0,za=!1,Na=!0,at=!1,mt=!0,gt=!1,or=!1,un=null,dn=null,sr=!1,Pt=!1,pn=!1,fn=!1,Oa=!0,Ba=!1,Fa="user-content-",lr=!0,cr=!1,Et={},Rt=null,$a=Y({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),Ua=null,Ha=Y({},["audio","video","img","source","image","track"]),qa=null,Wa=Y({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),mn="http://www.w3.org/1998/Math/MathML",gn="http://www.w3.org/2000/svg",je="http://www.w3.org/1999/xhtml",Mt=je,ur=!1,dr=null,nl=Y({},[mn,gn,je],vr),ja=ke(["mi","mo","mn","ms","mtext"]),pr=Y({},ja),Xa=ke(["annotation-xml"]),fr=Y({},Xa),rl=Y({},["title","style","font","a","script"]),qt=null,al=["application/xhtml+xml","text/html"],il="text/html",fe=null,It=null,ol=n.createElement("form"),Va=function(p){return p instanceof RegExp||p instanceof Function},mr=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(It&&It===p)return;(!p||typeof p!="object")&&(p={}),p=Ie(p),qt=al.indexOf(p.PARSER_MEDIA_TYPE)===-1?il:p.PARSER_MEDIA_TYPE,fe=qt==="application/xhtml+xml"?vr:Kt,le=st(p,"ALLOWED_TAGS",rr,{transform:fe}),ce=st(p,"ALLOWED_ATTR",ar,{transform:fe}),dr=st(p,"ALLOWED_NAMESPACES",nl,{transform:vr}),qa=st(p,"ADD_URI_SAFE_ATTR",Wa,{transform:fe,base:Wa}),Ua=st(p,"ADD_DATA_URI_TAGS",Ha,{transform:fe,base:Ha}),Rt=st(p,"FORBID_CONTENTS",$a,{transform:fe}),Ht=st(p,"FORBID_TAGS",Ie({}),{transform:fe}),La=st(p,"FORBID_ATTR",Ie({}),{transform:fe}),Et=Pe(p,"USE_PROFILES")?p.USE_PROFILES&&typeof p.USE_PROFILES=="object"?Ie(p.USE_PROFILES):p.USE_PROFILES:!1,Da=p.ALLOW_ARIA_ATTR!==!1,ir=p.ALLOW_DATA_ATTR!==!1,za=p.ALLOW_UNKNOWN_PROTOCOLS||!1,Na=p.ALLOW_SELF_CLOSE_IN_ATTR!==!1,at=p.SAFE_FOR_TEMPLATES||!1,mt=p.SAFE_FOR_XML!==!1,gt=p.WHOLE_DOCUMENT||!1,Pt=p.RETURN_DOM||!1,pn=p.RETURN_DOM_FRAGMENT||!1,fn=p.RETURN_TRUSTED_TYPE||!1,sr=p.FORCE_BODY||!1,Oa=p.SANITIZE_DOM!==!1,Ba=p.SANITIZE_NAMED_PROPS||!1,lr=p.KEEP_CONTENT!==!1,cr=p.IN_PLACE||!1,Ia=Ul(p.ALLOWED_URI_REGEXP)?p.ALLOWED_URI_REGEXP:bi,Mt=typeof p.NAMESPACE=="string"?p.NAMESPACE:je,pr=Sr(p,"MATHML_TEXT_INTEGRATION_POINTS",()=>Y({},ja)),fr=Sr(p,"HTML_INTEGRATION_POINTS",()=>Y({},Xa));let b=Sr(p,"CUSTOM_ELEMENT_HANDLING",()=>Nt(null));if(We=Nt(null),Pe(b,"tagNameCheck")&&Va(b.tagNameCheck)&&(We.tagNameCheck=b.tagNameCheck),Pe(b,"attributeNameCheck")&&Va(b.attributeNameCheck)&&(We.attributeNameCheck=b.attributeNameCheck),Pe(b,"allowCustomizedBuiltInElements")&&typeof b.allowCustomizedBuiltInElements=="boolean"&&(We.allowCustomizedBuiltInElements=b.allowCustomizedBuiltInElements),_e(We),at&&(ir=!1),pn&&(Pt=!0),Et&&(le=Y({},mi),ce=Nt(null),Et.html===!0&&(Y(le,fi),Y(ce,gi)),Et.svg===!0&&(Y(le,yr),Y(ce,_r),Y(ce,_n)),Et.svgFilters===!0&&(Y(le,kr),Y(ce,_r),Y(ce,_n)),Et.mathMl===!0&&(Y(le,wr),Y(ce,hi),Y(ce,_n))),rt.tagCheck=null,rt.attributeCheck=null,Pe(p,"ADD_TAGS")&&(typeof p.ADD_TAGS=="function"?rt.tagCheck=p.ADD_TAGS:Ot(p.ADD_TAGS)&&(le===rr&&(le=Ie(le)),Y(le,p.ADD_TAGS,fe))),Pe(p,"ADD_ATTR")&&(typeof p.ADD_ATTR=="function"?rt.attributeCheck=p.ADD_ATTR:Ot(p.ADD_ATTR)&&(ce===ar&&(ce=Ie(ce)),Y(ce,p.ADD_ATTR,fe))),Pe(p,"ADD_FORBID_CONTENTS")&&Ot(p.ADD_FORBID_CONTENTS)&&(Rt===$a&&(Rt=Ie(Rt)),Y(Rt,p.ADD_FORBID_CONTENTS,fe)),lr&&(le["#text"]=!0),gt&&Y(le,["html","head","body"]),le.table&&(Y(le,["tbody"]),delete Ht.tbody),p.TRUSTED_TYPES_POLICY){if(typeof p.TRUSTED_TYPES_POLICY.createHTML!="function")throw ot('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof p.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw ot('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let _=V;V=p.TRUSTED_TYPES_POLICY;try{ee=I("")}catch(T){throw V=_,T}}else p.TRUSTED_TYPES_POLICY===null?(V=void 0,ee=""):(V===void 0&&(V=ft()),V&&typeof ee=="string"&&(ee=I("")));ke&&ke(p),It=p},Ka=Y({},[...yr,...kr,...Hl]),Ja=Y({},[...wr,...ql]),sl=function(p,b,_){return b.namespaceURI===je?p==="svg":b.namespaceURI===mn?p==="svg"&&(_==="annotation-xml"||pr[_]):!!Ka[p]},ll=function(p,b,_){return b.namespaceURI===je?p==="math":b.namespaceURI===gn?p==="math"&&fr[_]:!!Ja[p]},cl=function(p,b,_){return b.namespaceURI===gn&&!fr[_]||b.namespaceURI===mn&&!pr[_]?!1:!Ja[p]&&(rl[p]||!Ka[p])},ul=function(p){let b=y(p);(!b||!b.tagName)&&(b={namespaceURI:Mt,tagName:"template"});let _=Kt(p.tagName),T=Kt(b.tagName);return dr[p.namespaceURI]?p.namespaceURI===gn?sl(_,b,T):p.namespaceURI===mn?ll(_,b,T):p.namespaceURI===je?cl(_,b,T):!!(qt==="application/xhtml+xml"&&dr[p.namespaceURI]):!1},it=function(p){jt(e.removed,{element:p});try{y(p).removeChild(p)}catch{if(g(p),!y(p))throw ot("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},Ya=function(p,b,_){try{h(p,b)}catch{try{p.removeAttribute(_)}catch{}}},hn=function(p){bn(p);let b=k(p);if(b){let T=[];bt(b,L=>{jt(T,L)}),bt(T,L=>{try{g(L)}catch{}})}let _=w(p);if(_)for(let T=_.length-1;T>=0;--T){let L=_[T],q=L&&L.name;typeof q=="string"&&Ya(p,L,q)}},ht=function(p,b,_){if(!_)try{_=b.getAttributeNode(p)}catch{_=null}jt(e.removed,{attribute:_||null,from:b});try{_?h(b,_):b.removeAttribute(p)}catch{try{b.removeAttribute(p)}catch{}}if(p==="is")if(Pt||pn)try{it(b)}catch{}else try{b.setAttribute(p,"")}catch{}},dl=function(p){let b=w(p);if(b)for(let _=b.length-1;_>=0;--_){let T=b[_],L=T&&T.name;typeof L!="string"||ce[fe(L)]||Ya(p,T,L)}},bn=function(p){let b=[p];for(;b.length>0;){let _=b.pop();J(_)===Me.element&&dl(_);let T=k(_);if(T)for(let L=T.length-1;L>=0;--L)b.push(T[L])}},Ga=function(p,b){return mt?p==="patchsrc"?!0:p==="for"&&b!=="label"&&b!=="output":!1},pl=function(p){if(!mt)return;let b=[p];for(;b.length>0;){let _=b.pop(),T=J(_);if(T===Me.processingInstruction||T===Me.comment&&Ae(vi,_.data)){try{g(_)}catch{}continue}if(T===Me.element){let q=_,K=fe(H(_));try{q.hasAttribute&&q.hasAttribute("patchsrc")&&q.removeAttribute("patchsrc"),q.hasAttribute&&q.hasAttribute("for")&&Ga("for",K)&&q.removeAttribute("for")}catch{}}let L=k(_);if(L)for(let q=L.length-1;q>=0;--q)b.push(L[q])}},Za=function(p){let b=null,_=null;if(sr)p="<remove></remove>"+p;else{let q=ci(p,/^[\r\n\t ]+/);_=q&&q[0]}qt==="application/xhtml+xml"&&Mt===je&&(p='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+p+"</body></html>");let T=V?I(p):p;if(Mt===je)try{b=new u().parseFromString(T,qt)}catch{}if(!b||!b.documentElement){b=nr.createDocument(Mt,"template",null);try{b.documentElement.innerHTML=ur?ee:T}catch{}}let L=b.body||b.documentElement;return p&&_&&L.insertBefore(n.createTextNode(_),L.childNodes[0]||null),Mt===je?Vs.call(b,gt?"html":"body")[0]:gt?b.documentElement:L},Qa=function(p){let b=U?U(p):p.ownerDocument;return Ra.call(b||p,p,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},xn=function(p){return p=Xt(p,Js," "),p=Xt(p,Ys," "),p=Xt(p,Gs," "),p},gr=function(p){var b;p.normalize();let _=U?U(p):p.ownerDocument,T=Ra.call(_||p,p,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),L=T.nextNode();for(;L;)L.data=xn(L.data),L=T.nextNode();let q=(b=p.querySelectorAll)===null||b===void 0?void 0:b.call(p,"template");q&&bt(q,K=>{Lt(K.content)&&gr(K.content)})},vn=function(p){let b=R?R(p):null;return typeof b!="string"||fe(b)!=="form"?!1:typeof p.nodeName!="string"||typeof p.textContent!="string"||typeof p.removeChild!="function"||p.attributes!==w(p)||typeof p.removeAttribute!="function"||typeof p.removeAttributeNode!="function"||typeof p.getAttributeNode!="function"||typeof p.setAttribute!="function"||typeof p.namespaceURI!="string"||typeof p.insertBefore!="function"||typeof p.hasChildNodes!="function"||p.nodeType!==C(p)||p.childNodes!==k(p)},Lt=function(p){if(!C||typeof p!="object"||p===null)return!1;try{return C(p)===Me.documentFragment}catch{return!1}},Wt=function(p){if(!C||typeof p!="object"||p===null)return!1;try{return typeof C(p)=="number"}catch{return!1}};function Xe(A,p,b){A.length!==0&&bt(A,_=>{_.call(e,p,b,It)})}let fl=function(p,b){return!!(mt&&p.hasChildNodes()&&!Wt(p.firstElementChild)&&Ae(xi,p.textContent)&&Ae(xi,p.innerHTML)||mt&&p.namespaceURI===je&&tc[b]&&(Wt(p.firstElementChild)||typeof p.textContent=="string"&&Ae(nc[b],p.textContent))||p.nodeType===Me.processingInstruction||mt&&p.nodeType===Me.comment&&Ae(vi,p.data))},yn=function(p,b){if(p instanceof RegExp)return Ae(p,b);if(p instanceof Function){for(var _=arguments.length,T=new Array(_>2?_-2:0),L=2;L<_;L++)T[L-2]=arguments[L];return!!p(b,...T)}return!1},ml=function(p,b,_){if(!Ht[b]&&ri(b)&&yn(We.tagNameCheck,b))return!1;if(lr&&!Rt[b]){let T=y(p),L=k(p);if(L&&T){let q=L.length;for(let K=q-1;K>=0;--K){let de=p===_?d(L[K],!0):L[K];T.insertBefore(de,v(p))}}}return it(p),!0},ei=function(p,b,_,T){return p.length===0?b:b===_||b===T?Ie(b):b},Dt=function(p,b){return p===b||y(p)!==null?!1:(cr&&bn(p),!0)},ti=function(p,b){if(Xe(se.beforeSanitizeElements,p,null),Dt(p,b))return!0;if(vn(p))return it(p),!0;let _=fe(H(p));if(le=ei(se.uponSanitizeElement,le,rr,un),Xe(se.uponSanitizeElement,p,{tagName:_,allowedTags:le}),Dt(p,b))return!0;if(fl(p,_))return it(p),!0;if(Ht[_]||!(rt.tagCheck instanceof Function&&rt.tagCheck(_))&&!le[_]){let T=ml(p,_,b);return T===!1&&(Xe(se.afterSanitizeElements,p,null),Dt(p,b))?!0:T}if(J(p)===Me.element&&!ul(p)||(_==="noscript"||_==="noembed"||_==="noframes")&&Ae(Ql,p.innerHTML))return it(p),!0;if(at&&p.nodeType===Me.text){let T=xn(p.textContent);p.textContent!==T&&(jt(e.removed,{element:p.cloneNode()}),p.textContent=T)}return Xe(se.afterSanitizeElements,p,null),Dt(p,b)},ni=function(p,b,_){if(La[b]||Ga(b,p)||Oa&&(b==="id"||b==="name")&&(_ in n||_ in ol))return!1;let T=ce[b]||rt.attributeCheck instanceof Function&&rt.attributeCheck(b,p);return ir&&Ae(Zs,b)||Da&&Ae(Qs,b)?!0:T?qa[b]||Ae(Ia,Xt(_,Ma,""))||(b==="src"||b==="xlink:href"||b==="href")&&p!=="script"&&ui(_,"data:")===0&&Ua[p]||za&&!Ae(el,Xt(_,Ma,""))?!0:!_:ri(p)&&yn(We.tagNameCheck,p)&&yn(We.attributeNameCheck,b,p)||b==="is"&&We.allowCustomizedBuiltInElements&&yn(We.tagNameCheck,_)},gl=Y({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),ri=function(p){return!gl[Kt(p)]&&Ae(tl,p)},hl=function(p,b,_,T){if(V&&typeof f=="object"&&typeof f.getAttributeType=="function"&&!_)switch(f.getAttributeType(p,b)){case"TrustedHTML":return I(T);case"TrustedScriptURL":return pe(T)}return T},bl=function(p,b,_,T){try{return _?p.setAttributeNS(_,b,T):p.setAttribute(b,T),vn(p)?(it(p),!1):!0}catch{return ht(b,p),!1}},ai=function(p,b){if(Xe(se.beforeSanitizeAttributes,p,null),Dt(p,b))return;let _=p.attributes;if(!_||vn(p))return;ce=ei(se.uponSanitizeAttribute,ce,ar,dn);let T={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ce,forceKeepAttr:void 0},L=_.length,q=fe(p.nodeName);for(;L--;){let K=_[L],de=K.name,De=K.namespaceURI,Re=K.value,zt=fe(de),br=Re,Te=de==="value"?br:zl(br),ii=!1;if(T.attrName=zt,T.attrValue=Te,T.keepAttr=!0,T.forceKeepAttr=void 0,Xe(se.uponSanitizeAttribute,p,T),Te=T.attrValue,Ba&&(zt==="id"||zt==="name")&&ui(Te,Fa)!==0&&(ht(de,p,K),Te=Fa+Te,ii=!0),mt&&Ae(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,Te)){ht(de,p,K);continue}if(zt==="attributename"&&ci(Te,"href")){ht(de,p,K);continue}if(!T.forceKeepAttr){if(!T.keepAttr){ht(de,p,K);continue}if(!Na&&Ae(ec,Te)){ht(de,p,K);continue}if(at&&(Te=xn(Te)),!ni(q,zt,Te)){ht(de,p,K);continue}Te=hl(q,zt,De,Te),Te!==br&&bl(p,de,De,Te)&&ii&&li(e.removed)}}Xe(se.afterSanitizeAttributes,p,null),Dt(p,b)},kn=function(p){let b=null,_=Qa(p);for(Xe(se.beforeSanitizeShadowDOM,p,null);b=_.nextNode();)if(Xe(se.uponSanitizeShadowNode,b,null),ti(b,p),ai(b,p),Lt(b.content)&&kn(b.content),J(b)===Me.element){let T=x(b);Lt(T)&&(hr(T),kn(T))}Xe(se.afterSanitizeShadowDOM,p,null)},hr=function(p){let b=[{node:p,shadow:null}];for(;b.length>0;){let _=b.pop();if(_.shadow){kn(_.shadow);continue}let T=_.node,L=J(T)===Me.element,q=k(T);if(q)for(let K=q.length-1;K>=0;--K)b.push({node:q[K],shadow:null});if(L){let K=R?R(T):null;if(typeof K=="string"&&fe(K)==="template"){let de=T.content;Lt(de)&&b.push({node:de,shadow:null})}}if(L){let K=x(T);Lt(K)&&b.push({node:null,shadow:K},{node:K,shadow:null})}}};return e.sanitize=function(A){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b=null,_=null,T=null,L=null;if(ur=!A,ur&&(A="<!-->"),typeof A!="string"&&!Wt(A)&&(A=$l(A),typeof A!="string"))throw ot("dirty is not a string, aborting");if(!e.isSupported)return A;or?(le=un,ce=dn):mr(p),(se.uponSanitizeElement.length>0||se.uponSanitizeAttribute.length>0)&&(le=Ie(le)),se.uponSanitizeAttribute.length>0&&(ce=Ie(ce)),e.removed=[];let q=cr&&typeof A!="string"&&Wt(A);if(q){pl(A);let De=H(A);if(typeof De=="string"){let Re=fe(De);if(!le[Re]||Ht[Re])throw hn(A),ot("root node is forbidden and cannot be sanitized in-place")}if(vn(A))throw hn(A),ot("root node is clobbered and cannot be sanitized in-place");try{hr(A)}catch(Re){throw hn(A),Re}}else if(Wt(A))b=Za("<!---->"),_=b.ownerDocument.importNode(A,!0),_.nodeType===Me.element&&_.nodeName==="BODY"||_.nodeName==="HTML"?b=_:b.appendChild(_),hr(b);else{if(!Pt&&!at&&!gt&&A.indexOf("<")===-1)return V&&fn?I(A):A;if(b=Za(A),!b)return Pt?null:fn?ee:""}b&&sr&&it(b.firstChild);let K=q?A:b;try{let De=Qa(K);for(;T=De.nextNode();)ti(T,K),ai(T,K),Lt(T.content)&&kn(T.content)}catch(De){throw q&&(hn(A),bt(e.removed,Re=>{Re.element&&bn(Re.element)})),De}if(q){let De=!1;if(bt(e.removed,Re=>{Re.element&&(Re.element===A&&(De=!0),bn(Re.element))}),De)throw ot("a node selected for removal could not be safely returned; refusing to sanitize in place");return at&&gr(A),A}if(Pt){if(at&&gr(b),pn)for(L=Xs.call(b.ownerDocument);b.firstChild;)L.appendChild(b.firstChild);else L=b;return(ce.shadowroot||ce.shadowrootmode)&&(L=Ks.call(a,L,!0)),L}let de=gt?b.outerHTML:b.innerHTML;return gt&&le["!doctype"]&&b.ownerDocument&&b.ownerDocument.doctype&&b.ownerDocument.doctype.name&&Ae(Gl,b.ownerDocument.doctype.name)&&(de="<!DOCTYPE "+b.ownerDocument.doctype.name+`>
3
- `+de),at&&(de=xn(de)),V&&fn?I(de):de},e.setConfig=function(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};mr(A),or=!0,un=le,dn=ce},e.clearConfig=function(){It=null,or=!1,un=null,dn=null,V=z,ee=""},e.isValidAttribute=function(A,p,b){It||mr({});let _=fe(A),T=fe(p);return ni(_,T,b)},e.addHook=function(A,p){typeof p=="function"&&Pe(se,A)&&jt(se[A],p)},e.removeHook=function(A,p){if(Pe(se,A)){if(p!==void 0){let b=Ll(se[A],p);return b===-1?void 0:Dl(se[A],b,1)[0]}return li(se[A])}},e.removeHooks=function(A){Pe(se,A)&&(se[A]=[])},e.removeAllHooks=function(){se=yi()},e}var Tr=Si();function Mr(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var yt=Mr();function zi(t){yt=t}var xt={exec:()=>null};function Bt(t){let e=[];return n=>{let a=Math.max(0,Math.min(3,n-1)),i=e[a];return i||(i=t(a),e[a]=i),i}}function F(t,e=""){let n=typeof t=="string"?t:t.source,a={replace:(i,o)=>{let s=typeof o=="string"?o:o.source;return s=s.replace(Se.caret,"$1"),n=n.replace(i,s),a},getRegex:()=>new RegExp(n,e)};return a}var ic=((t="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+t)}catch{return!1}})(),Se={codeRemoveIndent:/^(?: {0,3}\t| {1,4})/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,endingSpaceTabChar:/[ \t]$/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,leadingSpaceTab:/^[ \t]+/,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,numericCharacterReference:/&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/g,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Bt(t=>new RegExp(`^ {0,${t}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Bt(t=>new RegExp(`^ {0,${t}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:Bt(t=>new RegExp(`^ {0,${t}}(?:\`\`\`|~~~)`)),headingBeginRegex:Bt(t=>new RegExp(`^ {0,${t}}#`)),htmlBeginRegex:Bt(t=>new RegExp(`^ {0,${t}}(?:</?(?:${Zt})(?: +|$|/?>)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:Bt(t=>new RegExp(`^ {0,${t}}>`))},oc=/^(?:[ \t]*(?:\n|$))+/,sc=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,lc=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Gt=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,cc=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Ir=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Ni=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |fences|blockquote|heading|hr|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Oi=F(Ni).replace(/bull/g,Ir).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),uc=F(Ni).replace(/bull/g,Ir).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Lr=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,dc=/^[^\n]+/,Dr=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,pc=F(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Dr).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),fc=F(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,Ir).getRegex(),Zt="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",zr=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,mc=F("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][a-z0-9-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",zr).replace("tag",Zt).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Bi=t=>F(Lr).replace("hr",Gt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",t).replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Zt).getRegex(),gc=Bi(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),hc=Bi(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),bc=F(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",hc).getRegex(),Nr={blockquote:bc,code:sc,def:pc,fences:lc,heading:cc,hr:Gt,html:mc,lheading:Oi,list:fc,newline:oc,paragraph:gc,table:xt,text:dc},Ai=F("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Gt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Zt).getRegex(),xc={...Nr,lheading:uc,table:Ai,paragraph:F(Lr).replace("hr",Gt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Ai).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Zt).getRegex()},vc={...Nr,html:F(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",zr).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:xt,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:F(Lr).replace("hr",Gt).replace("heading",` *#{1,6} *[^
4
- ]`).replace("lheading",Oi).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},yc=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,kc=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Fi=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,wc=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Ge=/[\p{P}\p{S}]/u,Ft=/[\s\p{P}\p{S}]/u,Qt=/[^\s\p{P}\p{S}]/u,_c=F(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Ft).getRegex(),Sc=/[\p{Pi}\p{Ps}"']/u,$i=/(?!~)[\p{P}\p{S}]/u,Ac=/(?!~)[\s\p{P}\p{S}]/u,Cc=/(?:[^\s\p{P}\p{S}]|~)/u,Tc=F(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",ic?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Ui=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Pc=F(Ui,"u").replace(/punct/g,Ge).getRegex(),Ec=F(Ui,"u").replace(/punct/g,$i).getRegex(),Rc=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,Mc=F(Rc,"u").replace(/openQuote/g,Sc).replace(/punct/g,Ge).getRegex(),Hi="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Ic=F(Hi,"gu").replace(/notPunctSpace/g,Qt).replace(/punctSpace/g,Ft).replace(/punct/g,Ge).getRegex(),Lc=F(Hi,"gu").replace(/notPunctSpace/g,Cc).replace(/punctSpace/g,Ac).replace(/punct/g,$i).getRegex(),Dc="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",zc=F(Dc,"gu").replace(/notPunctSpace/g,Qt).replace(/punctSpace/g,Ft).replace(/punct/g,Ge).getRegex(),Nc=F("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Qt).replace(/punctSpace/g,Ft).replace(/punct/g,Ge).getRegex(),Oc="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",Bc=F(Oc,"gu").replace(/notPunctSpace/g,Qt).replace(/punctSpace/g,Ft).replace(/punct/g,Ge).getRegex(),Fc=F(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,Ge).getRegex(),$c="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",Uc=F($c,"gu").replace(/notPunctSpace/g,Qt).replace(/punctSpace/g,Ft).replace(/punct/g,Ge).getRegex(),Hc=F(/\\(punct)/,"gu").replace(/punct/g,Ge).getRegex(),qc=F(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Wc=F(zr).replace("(?:-->|$)","-->").getRegex(),jc=F("^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",Wc).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),qi=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,An=F(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",qi).getRegex(),Xc=F(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",An).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Vc=F(/^!?\[(label)\]\[(ref)\]/).replace("label",An).replace("ref",Dr).getRegex(),Kc=F(/^!?\[(ref)\](?:\[\])?/).replace("ref",Dr).getRegex(),Ci=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,Jc=F(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",qi).getRegex(),Yc=F("reflink|nolink(?!\\()","g").replace("reflink",F(/^!?\[(label)\]\[(ref)\]/).replace("label",Jc).replace("ref",Ci).getRegex()).replace("nolink",F(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ci).getRegex()).getRegex(),Ti=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Gc=/[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/,Zc=F(/(?:mailto:email|xmpp:email(?:\/[A-Za-z0-9@.]+)?)/).replace(/email/g,Gc).getRegex(),Or={_backpedal:xt,anyPunctuation:Hc,autolink:qc,blockSkip:Tc,br:Fi,code:kc,del:xt,delLDelim:xt,delRDelim:xt,emStrongLDelim:Pc,emStrongRDelimAst:Ic,emStrongRDelimUnd:Nc,escape:yc,link:Xc,nolink:Kc,punctuation:_c,reflink:Vc,reflinkSearch:Yc,tag:jc,text:wc,url:xt},Qc={...Or,emStrongLDelim:Mc,emStrongRDelimAst:zc,emStrongRDelimUnd:Bc,link:F(/^!?\[(label)\]\((.*?)\)/).replace("label",An).getRegex(),reflink:F(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",An).getRegex()},Pr={...Or,emStrongRDelimAst:Lc,emStrongLDelim:Ec,delLDelim:Fc,delRDelim:Uc,url:F(/^emailProtocol|^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("emailProtocol",Zc).replace("protocol",Ti).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:F(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))))/).replace("protocol",Ti).replace(/emailProtocol/g,/(?:mailto|xmpp):/).getRegex()},eu={...Pr,br:F(Fi).replace("{2,}","*").getRegex(),text:F(Pr.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Sn={normal:Nr,gfm:xc,pedantic:vc},Jt={normal:Or,gfm:Pr,breaks:eu,pedantic:Qc},tu={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Pi=t=>tu[t];function Le(t,e){if(e){if(Se.escapeTest.test(t))return t.replace(Se.escapeReplace,Pi)}else if(Se.escapeTestNoEncode.test(t))return t.replace(Se.escapeReplaceNoEncode,Pi);return t}function nu(t){return t.replace(Se.numericCharacterReference,(e,n,a)=>{let i=n===void 0?Number.parseInt(a,16):Number.parseInt(n,10);return i===0||i>1114111||i>=55296&&i<=57343?"\uFFFD":String.fromCodePoint(i)})}function Ei(t){try{t=encodeURI(t).replace(Se.percentDecode,"%")}catch{return null}return t}function Ri(t,e){let n=t.replace(Se.findPipe,(o,s,l)=>{let c=!1,u=s;for(;--u>=0&&l[u]==="\\";)c=!c;return c?"|":" |"}),a=n.split(Se.splitPipe),i=0;if(a[0].trim()||a.shift(),a.length>0&&!a.at(-1)?.trim()&&a.pop(),e)if(a.length>e)a.splice(e);else for(;a.length<e;)a.push("");for(;i<a.length;i++)a[i]=a[i].trim().replace(Se.slashPipe,"|");return a}function lt(t,e,n){let a=t.length;if(a===0)return"";let i=0;for(;i<a;){let o=t.charAt(a-i-1);if(o===e&&!n)i++;else if(o!==e&&n)i++;else break}return t.slice(0,a-i)}function Mi(t){let e=t.split(`
5
- `),n=e.length-1;for(;n>=0&&Se.blankLine.test(e[n]);)n--;return e.length-n<=2?t:e.slice(0,n+1).join(`
6
- `)}function Cn(t){return t.trim().toLowerCase().toUpperCase().toLowerCase()}function ru(t,e){if(t.indexOf(e[1])===-1)return-1;let n=0;for(let a=0;a<t.length;a++)if(t[a]==="\\")a++;else if(t[a]===e[0])n++;else if(t[a]===e[1]&&(n--,n<0))return a;return n>0?-2:-1}function Ii(t,e=0){let n=e,a="";for(let i of t)if(i===" "){let o=4-n%4;a+=" ".repeat(o),n+=o}else a+=i,n++;return a}function Li(t,e,n,a,i){let o=e.href,s=e.title||null,l=t[1].replace(i.other.outputLinkReplace,"$1"),c=t[0].charAt(0)==="!";a.state.inLink=!0;let u=a.state.linkEmitted,f=a.state.inRawBlock;a.state.linkEmitted=!1;let m=a.inlineTokens(l),d=a.state.linkEmitted;if(a.state.linkEmitted=u,a.state.inLink=!1,!c){if(d){a.state.inRawBlock=f;return}a.state.linkEmitted=!0}return{type:c?"image":"link",raw:n,href:o,title:s,text:l,tokens:m}}function au(t,e,n){let a=t.match(n.other.indentCodeCompensation);if(a===null)return e;let i=a[1];return e.split(`
7
- `).map(o=>{let s=o.match(n.other.beginningSpace);if(s===null)return o;let[l]=s;return o.slice(Math.min(l.length,i.length))}).join(`
8
- `)}function Di(t,e,n,a){if(!e.includes("<"))return!1;for(let i=0;i<e.length;i++){if(e[i]==="\\"){i++;continue}if(e[i]==="`"){let l=a.inline.code.exec(e.slice(i));if(l){i+=l[0].length-1;continue}}if(e[i]!=="<")continue;let o=t.slice(n+i),s=a.inline.tag.exec(o)||a.inline.autolink.exec(o);if(s){if(s[0].length>e.length-i)return!0;i+=s[0].length-1}}return!1}var Tn=class{options;rules;lexer;constructor(t){this.options=t||yt}space(t){let e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let n=this.options.pedantic?e[0]:Mi(e[0]),a=n.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:n,codeBlockStyle:"indented",text:a}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let n=e[0],a=au(n,e[3]||"",this.rules);return{type:"code",raw:n,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:a}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let n=e[2].trim();if(this.rules.other.endingHash.test(n)){let a=lt(n,"#");(this.options.pedantic||!a||this.rules.other.endingSpaceTabChar.test(a))&&(n=a.trim())}return{type:"heading",raw:lt(e[0],`
9
- `),depth:e[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:lt(e[0],`
10
- `)}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let n=lt(e[0],`
1
+ "use strict";var __fxExtend=(()=>{var Ur=Object.defineProperty;var $d=Object.getOwnPropertyDescriptor;var Bd=Object.getOwnPropertyNames;var Ud=Object.prototype.hasOwnProperty;var qd=(e,t)=>{for(var n in t)Ur(e,n,{get:t[n],enumerable:!0})},Hd=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Bd(t))!Ud.call(e,a)&&a!==n&&Ur(e,a,{get:()=>t[a],enumerable:!(r=$d(t,a))||r.enumerable});return e};var Vd=e=>Hd(Ur({},"__esModule",{value:!0}),e);var vg={};qd(vg,{dispose:()=>Cd});function Wd(e,t){this.v=e,this.k=t}function Ei(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function jd(e){if(Array.isArray(e))return e}function Gd(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,a,i,s,l=[],c=!0,d=!1;try{if(i=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(f){d=!0,a=f}finally{try{if(!c&&n.return!=null&&(s=n.return(),Object(s)!==s))return}finally{if(d)throw a}}return l}}function Xd(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
2
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Kd(e,t){return jd(e)||Gd(e,t)||Jd(e,t)||Xd()}function Jd(e,t){if(e){if(typeof e=="string")return Ei(e,t);var n={}.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ei(e,t):void 0}}function jo(e){var t,n;function r(i,s){try{var l=e[i](s),c=l.value,d=c instanceof Wd;Promise.resolve(d?c.v:c).then(function(f){if(d){var p=i==="return"&&c.k?i:"next";if(!c.k||f.done)return r(p,f);f=e[p](f).value}a(!!l.done,f)},function(f){r("throw",f)})}catch(f){a(2,f)}}function a(i,s){i===2?t.reject(s):t.resolve({value:s,done:i}),(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(i,s){return new Promise(function(l,c){var d={key:i,arg:s,resolve:l,reject:c,next:null};n?n=n.next=d:(t=n=d,r(i,s))})},typeof e.return!="function"&&(this.return=void 0)}jo.prototype[typeof Symbol=="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},jo.prototype.next=function(e){return this._invoke("next",e)},jo.prototype.throw=function(e){return this._invoke("throw",e)},jo.prototype.return=function(e){return this._invoke("return",e)};var Vi=Object.entries,Pi=Object.setPrototypeOf,Yd=Object.isFrozen,Zd=Object.getPrototypeOf,Qd=Object.getOwnPropertyDescriptor,$e=Object.freeze,Ve=Object.seal,jn=Object.create,Wi=typeof Reflect<"u"&&Reflect,Xr=Wi.apply,Kr=Wi.construct;$e||($e=function(t){return t});Ve||(Ve=function(t){return t});Xr||(Xr=function(t,n){for(var r=arguments.length,a=new Array(r>2?r-2:0),i=2;i<r;i++)a[i-2]=arguments[i];return t.apply(n,a)});Kr||(Kr=function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];return new t(...r)});var Sn=Fe(Array.prototype.forEach);Array.prototype.indexOf;var ep=Fe(Array.prototype.lastIndexOf),Mi=Fe(Array.prototype.pop),uo=Fe(Array.prototype.push);Array.prototype.slice;var tp=Fe(Array.prototype.splice),Gn=Array.isArray,go=Fe(String.prototype.toLowerCase),qr=Fe(String.prototype.toString),Ii=Fe(String.prototype.match),fo=Fe(String.prototype.replace),Ri=Fe(String.prototype.indexOf),np=Fe(String.prototype.trim),op=Fe(Number.prototype.toString),rp=Fe(Boolean.prototype.toString),Li=typeof BigInt>"u"?null:Fe(BigInt.prototype.toString),Di=typeof Symbol>"u"?null:Fe(Symbol.prototype.toString),ot=Fe(Object.prototype.hasOwnProperty),mo=Fe(Object.prototype.toString),Ke=Fe(RegExp.prototype.test),cn=ap(TypeError);function Fe(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];return Xr(e,t,r)}}function ap(e){return function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return Kr(e,n)}}function me(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:go;if(Pi&&Pi(e,null),!Gn(t))return e;let r=t.length;for(;r--;){let a=t[r];if(typeof a=="string"){let i=n(a);i!==a&&(Yd(t)||(t[r]=i),a=i)}e[a]=!0}return e}function ip(e){for(let t=0;t<e.length;t++)ot(e,t)||(e[t]=null);return e}function lt(e){let t=jn(null);for(let r of Vi(e)){var n=Kd(r,2);let a=n[0],i=n[1];ot(e,a)&&(Gn(i)?t[a]=ip(i):i&&typeof i=="object"&&i.constructor===Object?t[a]=lt(i):t[a]=i)}return t}function sp(e){switch(typeof e){case"string":return e;case"number":return op(e);case"boolean":return rp(e);case"bigint":return Li?Li(e):"0";case"symbol":return Di?Di(e):"Symbol()";case"undefined":return mo(e);case"function":case"object":{if(e===null)return mo(e);let t=e,n=ht(t,"toString");if(typeof n=="function"){let r=n(t);return typeof r=="string"?r:mo(r)}return mo(e)}default:return mo(e)}}function ht(e,t){for(;e!==null;){let r=Qd(e,t);if(r){if(r.get)return Fe(r.get);if(typeof r.value=="function")return Fe(r.value)}e=Zd(e)}function n(){return null}return n}function lp(e){try{return Ke(e,""),!0}catch{return!1}}var Ni=$e(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),Hr=$e(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Vr=$e(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),cp=$e(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Wr=$e(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),dp=$e(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Oi=$e(["#text"]),Fi=$e(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),jr=$e(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","pointer-events","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","vector-effect","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),$i=$e(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Go=$e(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),pp=Ve(/{{[\w\W]*|^[\w\W]*}}/g),up=Ve(/<%[\w\W]*|^[\w\W]*%>/g),fp=Ve(/\${[\w\W]*/g),mp=Ve(/^data-[\-\w.\u00B7-\uFFFF]+$/),gp=Ve(/^aria-[\-\w]+$/),Bi=Ve(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),hp=Ve(/^(?:\w+script|data):/i),bp=Ve(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),vp=Ve(/^html$/i),yp=Ve(/^[a-z][.\w]*(-[.\w]+)+$/i),Ui=Ve(/<[/\w!]/g),qi=Ve(/<[/\w]/g),xp=Ve(/<\/no(script|embed|frames)/i),kp=Ve(/\/>/i),st={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},ji=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],wp=$e(me({},ji)),zp=(function(){let e={};return Sn(ji,t=>{e[t]=Ve(new RegExp("</"+t+"(?=[\\t\\n\\f\\r />])","i"))}),$e(e)})(),_p=function(){return typeof window>"u"?null:window},Sp=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let r=null,a="data-tt-policy-suffix";n&&n.hasAttribute(a)&&(r=n.getAttribute(a));let i="dompurify"+(r?"#"+r:"");try{return t.createPolicy(i,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+i+" could not be created."),null}},Hi=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},dn=function(t,n,r,a){return ot(t,n)&&Gn(t[n])?me(a.base?lt(a.base):{},t[n],a.transform):r},Gr=function(t,n,r){let a=ot(t,n)?t[n]:void 0;return a&&typeof a=="object"?lt(a):r()};function Gi(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:_p(),t=M=>Gi(M);if(t.version="3.4.16",t.removed=[],!e||!e.document||e.document.nodeType!==st.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,a=r.currentScript;e.DocumentFragment;let i=e.HTMLTemplateElement,s=e.Node,l=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let d=e.DOMParser,f=e.trustedTypes,p=l.prototype,u=ht(p,"cloneNode"),h=ht(p,"remove"),m=ht(p,"removeAttributeNode"),y=ht(p,"nextSibling"),_=ht(p,"childNodes"),C=ht(p,"parentNode"),x=ht(p,"shadowRoot"),k=ht(p,"attributes"),A=s&&s.prototype?ht(s.prototype,"nodeType"):null,O=s&&s.prototype?ht(s.prototype,"nodeName"):null,q=s&&s.prototype?ht(s.prototype,"ownerDocument"):null,N=function(g){return A?A(g):g.nodeType},B=function(g){return O?O(g):g.nodeName};if(typeof i=="function"){let M=n.createElement("template");M.content&&M.content.ownerDocument&&(n=M.content.ownerDocument)}let Y,se="",V,ne=!1,pe=0,Ee=function(){if(pe>0)throw cn('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},v=function(g){Ee(),pe++;try{return Y.createHTML(g)}finally{pe--}},E=function(g){Ee(),pe++;try{return Y.createScriptURL(g)}finally{pe--}},I=function(){return ne||(V=Sp(f,a),ne=!0),V},Z=n,le=Z.implementation,de=Z.createNodeIterator,He=Z.createDocumentFragment,Pe=Z.getElementsByTagName,yt=r.importNode,be=Hi();t.isSupported=typeof Vi=="function"&&typeof C=="function"&&le&&le.createHTMLDocument!==void 0;let et=pp,Wt=up,vn=fp,yn=mp,xn=gp,oo=hp,jt=bp,Ye=yp,Gt=Bi,ge=null,Xt=me({},[...Ni,...Hr,...Vr,...Wr,...Oi]),ve=null,Kt=me({},[...Fi,...jr,...$i,...Go]),tt=Object.seal(jn(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),kn=null,No=null,Dt=Object.seal(jn(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Oo=!0,Nt=!0,Fo=!1,xt=!0,at=!1,nt=!0,ut=!1,Ot=!1,$n=null,kt=null,Jt=!1,ft=!1,Bn=!1,wn=!1,ro=!0,ao=!1,Un="user-content-",io=!0,qn=!1,Ft={},wt=null,so=me({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),$t=null,je=me({},["audio","video","img","source","image","track"]),$o=null,lo=me({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),zn="http://www.w3.org/1998/Math/MathML",zt="http://www.w3.org/2000/svg",mt="http://www.w3.org/1999/xhtml",an=mt,co=!1,b=null,z=me({},[zn,zt,mt],qr),S=$e(["mi","mo","mn","ms","mtext"]),L=me({},S),$=$e(["annotation-xml"]),j=me({},$),ye=me({},["title","style","font","a","script"]),xe=null,Nr=["application/xhtml+xml","text/html"],_t="text/html",Me=null,sn=null,Td=n.createElement("form"),hi=function(g){return g instanceof RegExp||g instanceof Function},Or=function(){let g=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(sn&&sn===g)return;(!g||typeof g!="object")&&(g={}),g=lt(g),xe=Nr.indexOf(g.PARSER_MEDIA_TYPE)===-1?_t:g.PARSER_MEDIA_TYPE,Me=xe==="application/xhtml+xml"?qr:go,ge=dn(g,"ALLOWED_TAGS",Xt,{transform:Me}),ve=dn(g,"ALLOWED_ATTR",Kt,{transform:Me}),b=dn(g,"ALLOWED_NAMESPACES",z,{transform:qr}),$o=dn(g,"ADD_URI_SAFE_ATTR",lo,{transform:Me,base:lo}),$t=dn(g,"ADD_DATA_URI_TAGS",je,{transform:Me,base:je}),wt=dn(g,"FORBID_CONTENTS",so,{transform:Me}),kn=dn(g,"FORBID_TAGS",lt({}),{transform:Me}),No=dn(g,"FORBID_ATTR",lt({}),{transform:Me}),Ft=ot(g,"USE_PROFILES")?g.USE_PROFILES&&typeof g.USE_PROFILES=="object"?lt(g.USE_PROFILES):g.USE_PROFILES:!1,Oo=g.ALLOW_ARIA_ATTR!==!1,Nt=g.ALLOW_DATA_ATTR!==!1,Fo=g.ALLOW_UNKNOWN_PROTOCOLS||!1,xt=g.ALLOW_SELF_CLOSE_IN_ATTR!==!1,at=g.SAFE_FOR_TEMPLATES||!1,nt=g.SAFE_FOR_XML!==!1,ut=g.WHOLE_DOCUMENT||!1,ft=g.RETURN_DOM||!1,Bn=g.RETURN_DOM_FRAGMENT||!1,wn=g.RETURN_TRUSTED_TYPE||!1,Jt=g.FORCE_BODY||!1,ro=g.SANITIZE_DOM!==!1,ao=g.SANITIZE_NAMED_PROPS||!1,io=g.KEEP_CONTENT!==!1,qn=g.IN_PLACE||!1,Gt=lp(g.ALLOWED_URI_REGEXP)?g.ALLOWED_URI_REGEXP:Bi,an=typeof g.NAMESPACE=="string"?g.NAMESPACE:mt,L=Gr(g,"MATHML_TEXT_INTEGRATION_POINTS",()=>me({},S)),j=Gr(g,"HTML_INTEGRATION_POINTS",()=>me({},$));let w=Gr(g,"CUSTOM_ELEMENT_HANDLING",()=>jn(null));if(tt=jn(null),ot(w,"tagNameCheck")&&hi(w.tagNameCheck)&&(tt.tagNameCheck=w.tagNameCheck),ot(w,"attributeNameCheck")&&hi(w.attributeNameCheck)&&(tt.attributeNameCheck=w.attributeNameCheck),ot(w,"allowCustomizedBuiltInElements")&&typeof w.allowCustomizedBuiltInElements=="boolean"&&(tt.allowCustomizedBuiltInElements=w.allowCustomizedBuiltInElements),Ve(tt),at&&(Nt=!1),Bn&&(ft=!0),Ft&&(ge=me({},Oi),ve=jn(null),Ft.html===!0&&(me(ge,Ni),me(ve,Fi)),Ft.svg===!0&&(me(ge,Hr),me(ve,jr),me(ve,Go)),Ft.svgFilters===!0&&(me(ge,Vr),me(ve,jr),me(ve,Go)),Ft.mathMl===!0&&(me(ge,Wr),me(ve,$i),me(ve,Go))),Dt.tagCheck=null,Dt.attributeCheck=null,ot(g,"ADD_TAGS")&&(typeof g.ADD_TAGS=="function"?Dt.tagCheck=g.ADD_TAGS:Gn(g.ADD_TAGS)&&(ge===Xt&&(ge=lt(ge)),me(ge,g.ADD_TAGS,Me))),ot(g,"ADD_ATTR")&&(typeof g.ADD_ATTR=="function"?Dt.attributeCheck=g.ADD_ATTR:Gn(g.ADD_ATTR)&&(ve===Kt&&(ve=lt(ve)),me(ve,g.ADD_ATTR,Me))),ot(g,"ADD_FORBID_CONTENTS")&&Gn(g.ADD_FORBID_CONTENTS)&&(wt===so&&(wt=lt(wt)),me(wt,g.ADD_FORBID_CONTENTS,Me)),io&&(ge["#text"]=!0),ut&&me(ge,["html","head","body"]),ge.table&&(me(ge,["tbody"]),delete kn.tbody),g.TRUSTED_TYPES_POLICY){if(typeof g.TRUSTED_TYPES_POLICY.createHTML!="function")throw cn('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof g.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw cn('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let P=Y;Y=g.TRUSTED_TYPES_POLICY;try{se=v("")}catch(D){throw Y=P,D}}else g.TRUSTED_TYPES_POLICY===null?(Y=void 0,se=""):(Y===void 0&&(Y=I()),Y&&typeof se=="string"&&(se=v("")));$e&&$e(g),sn=g},bi=me({},[...Hr,...Vr,...cp]),vi=me({},[...Wr,...dp]),Ad=function(g,w,P){return w.namespaceURI===mt?g==="svg":w.namespaceURI===zn?g==="svg"&&(P==="annotation-xml"||L[P]):!!bi[g]},Ed=function(g,w,P){return w.namespaceURI===mt?g==="math":w.namespaceURI===zt?g==="math"&&j[P]:!!vi[g]},Pd=function(g,w,P){return w.namespaceURI===zt&&!j[P]||w.namespaceURI===zn&&!L[P]?!1:!vi[g]&&(ye[g]||!bi[g])},Md=function(g){let w=C(g);(!w||!w.tagName)&&(w={namespaceURI:an,tagName:"template"});let P=go(g.tagName),D=go(w.tagName);return b[g.namespaceURI]?g.namespaceURI===zt?Ad(P,w,D):g.namespaceURI===zn?Ed(P,w,D):g.namespaceURI===mt?Pd(P,w,D):!!(xe==="application/xhtml+xml"&&b[g.namespaceURI]):!1},ln=function(g){uo(t.removed,{element:g});try{C(g).removeChild(g)}catch{if(h(g),!C(g))throw cn("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},yi=function(g,w,P){try{m(g,w)}catch{try{g.removeAttribute(P)}catch{}}},Bo=function(g){Uo(g);let w=_(g);if(w){let D=[];Sn(w,G=>{uo(D,G)}),Sn(D,G=>{try{h(G)}catch{}})}let P=k(g);if(P)for(let D=P.length-1;D>=0;--D){let G=P[D],ce=G&&G.name;typeof ce=="string"&&yi(g,G,ce)}},_n=function(g,w,P){if(!P)try{P=w.getAttributeNode(g)}catch{P=null}uo(t.removed,{attribute:P||null,from:w});try{P?m(w,P):w.removeAttribute(g)}catch{try{w.removeAttribute(g)}catch{}}if(g==="is")if(ft||Bn)try{ln(w)}catch{}else try{w.setAttribute(g,"")}catch{}},Id=function(g){let w=k(g);if(w)for(let P=w.length-1;P>=0;--P){let D=w[P],G=D&&D.name;typeof G!="string"||ve[Me(G)]||yi(g,D,G)}},Uo=function(g){let w=[g];for(;w.length>0;){let P=w.pop();N(P)===st.element&&Id(P);let D=_(P);if(D)for(let G=D.length-1;G>=0;--G)w.push(D[G])}},xi=function(g,w){return nt?g==="patchsrc"?!0:g==="for"&&w!=="label"&&w!=="output":!1},Rd=function(g){if(!nt)return;let w=[g];for(;w.length>0;){let P=w.pop(),D=N(P);if(D===st.processingInstruction||D===st.comment&&Ke(qi,P.data)){try{h(P)}catch{}continue}if(D===st.element){let ce=P,ue=Me(B(P));try{ce.hasAttribute&&ce.hasAttribute("patchsrc")&&ce.removeAttribute("patchsrc"),ce.hasAttribute&&ce.hasAttribute("for")&&xi("for",ue)&&ce.removeAttribute("for")}catch{}}let G=_(P);if(G)for(let ce=G.length-1;ce>=0;--ce)w.push(G[ce])}},ki=function(g){let w=null,P=null;if(Jt)g="<remove></remove>"+g;else{let ce=Ii(g,/^[\r\n\t ]+/);P=ce&&ce[0]}xe==="application/xhtml+xml"&&an===mt&&(g='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+g+"</body></html>");let D=Y?v(g):g;if(an===mt)try{w=new d().parseFromString(D,xe)}catch{}if(!w||!w.documentElement){w=le.createDocument(an,"template",null);try{w.documentElement.innerHTML=co?se:D}catch{}}let G=w.body||w.documentElement;return g&&P&&G.insertBefore(n.createTextNode(P),G.childNodes[0]||null),an===mt?Pe.call(w,ut?"html":"body")[0]:ut?w.documentElement:G},wi=function(g){let w=q?q(g):g.ownerDocument;return de.call(w||g,g,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},qo=function(g){return g=fo(g,et," "),g=fo(g,Wt," "),g=fo(g,vn," "),g},Fr=function(g){var w;g.normalize();let P=q?q(g):g.ownerDocument,D=de.call(P||g,g,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),G=D.nextNode();for(;G;)G.data=qo(G.data),G=D.nextNode();let ce=(w=g.querySelectorAll)===null||w===void 0?void 0:w.call(g,"template");ce&&Sn(ce,ue=>{Hn(ue.content)&&Fr(ue.content)})},Ho=function(g){let w=O?O(g):null;return typeof w!="string"||Me(w)!=="form"?!1:typeof g.nodeName!="string"||typeof g.textContent!="string"||typeof g.removeChild!="function"||g.attributes!==k(g)||typeof g.removeAttribute!="function"||typeof g.removeAttributeNode!="function"||typeof g.getAttributeNode!="function"||typeof g.setAttribute!="function"||typeof g.namespaceURI!="string"||typeof g.insertBefore!="function"||typeof g.hasChildNodes!="function"||g.nodeType!==A(g)||g.childNodes!==_(g)},Hn=function(g){if(!A||typeof g!="object"||g===null)return!1;try{return A(g)===st.documentFragment}catch{return!1}},po=function(g){if(!A||typeof g!="object"||g===null)return!1;try{return typeof A(g)=="number"}catch{return!1}};function Bt(M,g,w){M.length!==0&&Sn(M,P=>{P.call(t,g,w,sn)})}let Ld=function(g,w){return!!(nt&&g.hasChildNodes()&&!po(g.firstElementChild)&&Ke(Ui,g.textContent)&&Ke(Ui,g.innerHTML)||nt&&g.namespaceURI===mt&&wp[w]&&(po(g.firstElementChild)||typeof g.textContent=="string"&&Ke(zp[w],g.textContent))||g.nodeType===st.processingInstruction||nt&&g.nodeType===st.comment&&Ke(qi,g.data))},Vo=function(g,w){if(g instanceof RegExp)return Ke(g,w);if(g instanceof Function){for(var P=arguments.length,D=new Array(P>2?P-2:0),G=2;G<P;G++)D[G-2]=arguments[G];return!!g(w,...D)}return!1},Dd=function(g,w,P){if(!kn[w]&&Ci(w)&&Vo(tt.tagNameCheck,w))return!1;if(io&&!wt[w]){let D=C(g),G=_(g);if(G&&D){let ce=G.length;for(let ue=ce-1;ue>=0;--ue){let Ie=g===P?u(G[ue],!0):G[ue];D.insertBefore(Ie,y(g))}}}return ln(g),!0},zi=function(g,w,P,D){return g.length===0?w:w===P||w===D?lt(w):w},Vn=function(g,w){return g===w||C(g)!==null?!1:(qn&&Uo(g),!0)},_i=function(g,w){if(Bt(be.beforeSanitizeElements,g,null),Vn(g,w))return!0;if(Ho(g))return ln(g),!0;let P=Me(B(g));if(ge=zi(be.uponSanitizeElement,ge,Xt,$n),Bt(be.uponSanitizeElement,g,{tagName:P,allowedTags:ge}),Vn(g,w))return!0;if(Ld(g,P))return ln(g),!0;if(kn[P]||!(Dt.tagCheck instanceof Function&&Dt.tagCheck(P))&&!ge[P]){let D=Dd(g,P,w);return D===!1&&(Bt(be.afterSanitizeElements,g,null),Vn(g,w))?!0:D}if(N(g)===st.element&&!Md(g)||(P==="noscript"||P==="noembed"||P==="noframes")&&Ke(xp,g.innerHTML))return ln(g),!0;if(at&&g.nodeType===st.text){let D=qo(g.textContent);g.textContent!==D&&(uo(t.removed,{element:g.cloneNode()}),g.textContent=D)}return Bt(be.afterSanitizeElements,g,null),Vn(g,w)},Si=function(g,w,P){if(No[w]||xi(w,g)||ro&&(w==="id"||w==="name")&&(P in n||P in Td))return!1;let D=ve[w]||Dt.attributeCheck instanceof Function&&Dt.attributeCheck(w,g);return Nt&&Ke(yn,w)||Oo&&Ke(xn,w)?!0:D?$o[w]||Ke(Gt,fo(P,jt,""))||(w==="src"||w==="xlink:href"||w==="href")&&g!=="script"&&Ri(P,"data:")===0&&$t[g]||Fo&&!Ke(oo,fo(P,jt,""))?!0:!P:Ci(g)&&Vo(tt.tagNameCheck,g)&&Vo(tt.attributeNameCheck,w,g)||w==="is"&&tt.allowCustomizedBuiltInElements&&Vo(tt.tagNameCheck,P)},Nd=me({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),Ci=function(g){return!Nd[go(g)]&&Ke(Ye,g)},Od=function(g,w,P,D){if(Y&&typeof f=="object"&&typeof f.getAttributeType=="function"&&!P)switch(f.getAttributeType(g,w)){case"TrustedHTML":return v(D);case"TrustedScriptURL":return E(D)}return D},Fd=function(g,w,P,D){try{return P?g.setAttributeNS(P,w,D):g.setAttribute(w,D),Ho(g)?(ln(g),!1):!0}catch{return _n(w,g),!1}},Ti=function(g,w){if(Bt(be.beforeSanitizeAttributes,g,null),Vn(g,w))return;let P=g.attributes;if(!P||Ho(g))return;ve=zi(be.uponSanitizeAttribute,ve,Kt,kt);let D={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ve,forceKeepAttr:void 0},G=P.length,ce=Me(g.nodeName);for(;G--;){let ue=P[G],Ie=ue.name,gt=ue.namespaceURI,it=ue.value,Wn=Me(Ie),Br=it,Ze=Ie==="value"?Br:np(Br),Ai=!1;if(D.attrName=Wn,D.attrValue=Ze,D.keepAttr=!0,D.forceKeepAttr=void 0,Bt(be.uponSanitizeAttribute,g,D),Ze=D.attrValue,ao&&(Wn==="id"||Wn==="name")&&Ri(Ze,Un)!==0&&(_n(Ie,g,ue),Ze=Un+Ze,Ai=!0),nt&&Ke(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,Ze)){_n(Ie,g,ue);continue}if(Wn==="attributename"&&Ii(Ze,"href")){_n(Ie,g,ue);continue}if(!D.forceKeepAttr){if(!D.keepAttr){_n(Ie,g,ue);continue}if(!xt&&Ke(kp,Ze)){_n(Ie,g,ue);continue}if(at&&(Ze=qo(Ze)),!Si(ce,Wn,Ze)){_n(Ie,g,ue);continue}Ze=Od(ce,Wn,gt,Ze),Ze!==Br&&Fd(g,Ie,gt,Ze)&&Ai&&Mi(t.removed)}}Bt(be.afterSanitizeAttributes,g,null),Vn(g,w)},Wo=function(g){let w=null,P=wi(g);for(Bt(be.beforeSanitizeShadowDOM,g,null);w=P.nextNode();)if(Bt(be.uponSanitizeShadowNode,w,null),_i(w,g),Ti(w,g),Hn(w.content)&&Wo(w.content),N(w)===st.element){let D=x(w);Hn(D)&&($r(D),Wo(D))}Bt(be.afterSanitizeShadowDOM,g,null)},$r=function(g){let w=[{node:g,shadow:null}];for(;w.length>0;){let P=w.pop();if(P.shadow){Wo(P.shadow);continue}let D=P.node,G=N(D)===st.element,ce=_(D);if(ce)for(let ue=ce.length-1;ue>=0;--ue)w.push({node:ce[ue],shadow:null});if(G){let ue=O?O(D):null;if(typeof ue=="string"&&Me(ue)==="template"){let Ie=D.content;Hn(Ie)&&w.push({node:Ie,shadow:null})}}if(G){let ue=x(D);Hn(ue)&&w.push({node:null,shadow:ue},{node:ue,shadow:null})}}};return t.sanitize=function(M){let g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},w=null,P=null,D=null,G=null;if(co=!M,co&&(M="<!-->"),typeof M!="string"&&!po(M)&&(M=sp(M),typeof M!="string"))throw cn("dirty is not a string, aborting");if(!t.isSupported)return M;Ot?(ge=$n,ve=kt):Or(g),(be.uponSanitizeElement.length>0||be.uponSanitizeAttribute.length>0)&&(ge=lt(ge)),be.uponSanitizeAttribute.length>0&&(ve=lt(ve)),t.removed=[];let ce=qn&&typeof M!="string"&&po(M);if(ce){Rd(M);let gt=B(M);if(typeof gt=="string"){let it=Me(gt);if(!ge[it]||kn[it])throw Bo(M),cn("root node is forbidden and cannot be sanitized in-place")}if(Ho(M))throw Bo(M),cn("root node is clobbered and cannot be sanitized in-place");try{$r(M)}catch(it){throw Bo(M),it}}else if(po(M))w=ki("<!---->"),P=w.ownerDocument.importNode(M,!0),P.nodeType===st.element&&P.nodeName==="BODY"||P.nodeName==="HTML"?w=P:w.appendChild(P),$r(w);else{if(!ft&&!at&&!ut&&M.indexOf("<")===-1)return Y&&wn?v(M):M;if(w=ki(M),!w)return ft?null:wn?se:""}w&&Jt&&ln(w.firstChild);let ue=ce?M:w;try{let gt=wi(ue);for(;D=gt.nextNode();)_i(D,ue),Ti(D,ue),Hn(D.content)&&Wo(D.content)}catch(gt){throw ce&&(Bo(M),Sn(t.removed,it=>{it.element&&Uo(it.element)})),gt}if(ce){let gt=!1;if(Sn(t.removed,it=>{it.element&&(it.element===M&&(gt=!0),Uo(it.element))}),gt)throw cn("a node selected for removal could not be safely returned; refusing to sanitize in place");return at&&Fr(M),M}if(ft){if(at&&Fr(w),Bn)for(G=He.call(w.ownerDocument);w.firstChild;)G.appendChild(w.firstChild);else G=w;return(ve.shadowroot||ve.shadowrootmode)&&(G=yt.call(r,G,!0)),G}let Ie=ut?w.outerHTML:w.innerHTML;return ut&&ge["!doctype"]&&w.ownerDocument&&w.ownerDocument.doctype&&w.ownerDocument.doctype.name&&Ke(vp,w.ownerDocument.doctype.name)&&(Ie="<!DOCTYPE "+w.ownerDocument.doctype.name+`>
3
+ `+Ie),at&&(Ie=qo(Ie)),Y&&wn?v(Ie):Ie},t.setConfig=function(){let M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Or(M),Ot=!0,$n=ge,kt=ve},t.clearConfig=function(){sn=null,Ot=!1,$n=null,kt=null,Y=V,se=""},t.isValidAttribute=function(M,g,w){sn||Or({});let P=Me(M),D=Me(g);return Si(P,D,w)},t.addHook=function(M,g){typeof g=="function"&&ot(be,M)&&uo(be[M],g)},t.removeHook=function(M,g){if(ot(be,M)){if(g!==void 0){let w=ep(be[M],g);return w===-1?void 0:tp(be[M],w,1)[0]}return Mi(be[M])}},t.removeHooks=function(M){ot(be,M)&&(be[M]=[])},t.removeAllHooks=function(){be=Hi()},t}var Jr=Gi();function ea(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var An=ea();function rs(e){An=e}var Cn={exec:()=>null};function Xn(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),a=t[r];return a||(a=e(r),t[r]=a),a}}function oe(e,t=""){let n=typeof e=="string"?e:e.source,r={replace:(a,i)=>{let s=typeof i=="string"?i:i.source;return s=s.replace(Ge.caret,"$1"),n=n.replace(a,s),r},getRegex:()=>new RegExp(n,t)};return r}var Cp=((e="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+e)}catch{return!1}})(),Ge={codeRemoveIndent:/^(?: {0,3}\t| {1,4})/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,endingSpaceTabChar:/[ \t]$/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,leadingSpaceTab:/^[ \t]+/,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,numericCharacterReference:/&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/g,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Xn(e=>new RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Xn(e=>new RegExp(`^ {0,${e}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:Xn(e=>new RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:Xn(e=>new RegExp(`^ {0,${e}}#`)),htmlBeginRegex:Xn(e=>new RegExp(`^ {0,${e}}(?:</?(?:${yo})(?: +|$|/?>)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:Xn(e=>new RegExp(`^ {0,${e}}>`))},Tp=/^(?:[ \t]*(?:\n|$))+/,Ap=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Ep=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,vo=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Pp=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,ta=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,as=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |fences|blockquote|heading|hr|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,is=oe(as).replace(/bull/g,ta).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Mp=oe(as).replace(/bull/g,ta).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),na=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,Ip=/^[^\n]+/,oa=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Rp=oe(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",oa).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Lp=oe(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,ta).getRegex(),yo="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",ra=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Dp=oe("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][a-z0-9-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",ra).replace("tag",yo).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),ss=e=>oe(na).replace("hr",vo).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",e).replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",yo).getRegex(),Np=ss(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),Op=ss(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),Fp=oe(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Op).getRegex(),aa={blockquote:Fp,code:Ap,def:Rp,fences:Ep,heading:Pp,hr:vo,html:Dp,lheading:is,list:Lp,newline:Tp,paragraph:Np,table:Cn,text:Ip},Xi=oe("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",vo).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",yo).getRegex(),$p={...aa,lheading:Mp,table:Xi,paragraph:oe(na).replace("hr",vo).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Xi).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",yo).getRegex()},Bp={...aa,html:oe(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",ra).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Cn,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:oe(na).replace("hr",vo).replace("heading",` *#{1,6} *[^
4
+ ]`).replace("lheading",is).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Up=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,qp=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,ls=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,Hp=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Yt=/[\p{P}\p{S}]/u,Kn=/[\s\p{P}\p{S}]/u,xo=/[^\s\p{P}\p{S}]/u,Vp=oe(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Kn).getRegex(),Wp=/[\p{Pi}\p{Ps}"']/u,cs=/(?!~)[\p{P}\p{S}]/u,jp=/(?!~)[\s\p{P}\p{S}]/u,Gp=/(?:[^\s\p{P}\p{S}]|~)/u,Xp=oe(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Cp?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),ds=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Kp=oe(ds,"u").replace(/punct/g,Yt).getRegex(),Jp=oe(ds,"u").replace(/punct/g,cs).getRegex(),Yp=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,Zp=oe(Yp,"u").replace(/openQuote/g,Wp).replace(/punct/g,Yt).getRegex(),ps="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Qp=oe(ps,"gu").replace(/notPunctSpace/g,xo).replace(/punctSpace/g,Kn).replace(/punct/g,Yt).getRegex(),eu=oe(ps,"gu").replace(/notPunctSpace/g,Gp).replace(/punctSpace/g,jp).replace(/punct/g,cs).getRegex(),tu="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",nu=oe(tu,"gu").replace(/notPunctSpace/g,xo).replace(/punctSpace/g,Kn).replace(/punct/g,Yt).getRegex(),ou=oe("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,xo).replace(/punctSpace/g,Kn).replace(/punct/g,Yt).getRegex(),ru="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",au=oe(ru,"gu").replace(/notPunctSpace/g,xo).replace(/punctSpace/g,Kn).replace(/punct/g,Yt).getRegex(),iu=oe(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,Yt).getRegex(),su="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",lu=oe(su,"gu").replace(/notPunctSpace/g,xo).replace(/punctSpace/g,Kn).replace(/punct/g,Yt).getRegex(),cu=oe(/\\(punct)/,"gu").replace(/punct/g,Yt).getRegex(),du=oe(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),pu=oe(ra).replace("(?:-->|$)","-->").getRegex(),uu=oe("^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",pu).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),us=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,Ko=oe(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",us).getRegex(),fu=oe(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Ko).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),mu=oe(/^!?\[(label)\]\[(ref)\]/).replace("label",Ko).replace("ref",oa).getRegex(),gu=oe(/^!?\[(ref)\](?:\[\])?/).replace("ref",oa).getRegex(),Ki=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,hu=oe(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",us).getRegex(),bu=oe("reflink|nolink(?!\\()","g").replace("reflink",oe(/^!?\[(label)\]\[(ref)\]/).replace("label",hu).replace("ref",Ki).getRegex()).replace("nolink",oe(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ki).getRegex()).getRegex(),Ji=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,vu=/[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/,yu=oe(/(?:mailto:email|xmpp:email(?:\/[A-Za-z0-9@.]+)?)/).replace(/email/g,vu).getRegex(),ia={_backpedal:Cn,anyPunctuation:cu,autolink:du,blockSkip:Xp,br:ls,code:qp,del:Cn,delLDelim:Cn,delRDelim:Cn,emStrongLDelim:Kp,emStrongRDelimAst:Qp,emStrongRDelimUnd:ou,escape:Up,link:fu,nolink:gu,punctuation:Vp,reflink:mu,reflinkSearch:bu,tag:uu,text:Hp,url:Cn},xu={...ia,emStrongLDelim:Zp,emStrongRDelimAst:nu,emStrongRDelimUnd:au,link:oe(/^!?\[(label)\]\((.*?)\)/).replace("label",Ko).getRegex(),reflink:oe(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Ko).getRegex()},Yr={...ia,emStrongRDelimAst:eu,emStrongLDelim:Jp,delLDelim:iu,delRDelim:lu,url:oe(/^emailProtocol|^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("emailProtocol",yu).replace("protocol",Ji).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:oe(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))))/).replace("protocol",Ji).replace(/emailProtocol/g,/(?:mailto|xmpp):/).getRegex()},ku={...Yr,br:oe(ls).replace("{2,}","*").getRegex(),text:oe(Yr.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Xo={normal:aa,gfm:$p,pedantic:Bp},ho={normal:ia,gfm:Yr,breaks:ku,pedantic:xu},wu={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Yi=e=>wu[e];function ct(e,t){if(t){if(Ge.escapeTest.test(e))return e.replace(Ge.escapeReplace,Yi)}else if(Ge.escapeTestNoEncode.test(e))return e.replace(Ge.escapeReplaceNoEncode,Yi);return e}function zu(e){return e.replace(Ge.numericCharacterReference,(t,n,r)=>{let a=n===void 0?Number.parseInt(r,16):Number.parseInt(n,10);return a===0||a>1114111||a>=55296&&a<=57343?"\uFFFD":String.fromCodePoint(a)})}function Zi(e){try{e=encodeURI(e).replace(Ge.percentDecode,"%")}catch{return null}return e}function Qi(e,t){let n=e.replace(Ge.findPipe,(i,s,l)=>{let c=!1,d=s;for(;--d>=0&&l[d]==="\\";)c=!c;return c?"|":" |"}),r=n.split(Ge.splitPipe),a=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),t)if(r.length>t)r.splice(t);else for(;r.length<t;)r.push("");for(;a<r.length;a++)r[a]=r[a].trim().replace(Ge.slashPipe,"|");return r}function pn(e,t,n){let r=e.length;if(r===0)return"";let a=0;for(;a<r;){let i=e.charAt(r-a-1);if(i===t&&!n)a++;else if(i!==t&&n)a++;else break}return e.slice(0,r-a)}function es(e){let t=e.split(`
5
+ `),n=t.length-1;for(;n>=0&&Ge.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(`
6
+ `)}function Jo(e){return e.trim().toLowerCase().toUpperCase().toLowerCase()}function _u(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]==="\\")r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function ts(e,t=0){let n=t,r="";for(let a of e)if(a===" "){let i=4-n%4;r+=" ".repeat(i),n+=i}else r+=a,n++;return r}function ns(e,t,n,r,a){let i=t.href,s=t.title||null,l=e[1].replace(a.other.outputLinkReplace,"$1"),c=e[0].charAt(0)==="!";r.state.inLink=!0;let d=r.state.linkEmitted,f=r.state.inRawBlock;r.state.linkEmitted=!1;let p=r.inlineTokens(l),u=r.state.linkEmitted;if(r.state.linkEmitted=d,r.state.inLink=!1,!c){if(u){r.state.inRawBlock=f;return}r.state.linkEmitted=!0}return{type:c?"image":"link",raw:n,href:i,title:s,text:l,tokens:p}}function Su(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let a=r[1];return t.split(`
7
+ `).map(i=>{let s=i.match(n.other.beginningSpace);if(s===null)return i;let[l]=s;return i.slice(Math.min(l.length,a.length))}).join(`
8
+ `)}function os(e,t,n,r){if(!t.includes("<"))return!1;for(let a=0;a<t.length;a++){if(t[a]==="\\"){a++;continue}if(t[a]==="`"){let l=r.inline.code.exec(t.slice(a));if(l){a+=l[0].length-1;continue}}if(t[a]!=="<")continue;let i=e.slice(n+a),s=r.inline.tag.exec(i)||r.inline.autolink.exec(i);if(s){if(s[0].length>t.length-a)return!0;a+=s[0].length-1}}return!1}var Yo=class{options;rules;lexer;constructor(e){this.options=e||An}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=this.options.pedantic?t[0]:es(t[0]),r=n.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:n,codeBlockStyle:"indented",text:r}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=Su(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=pn(n,"#");(this.options.pedantic||!r||this.rules.other.endingSpaceTabChar.test(r))&&(n=r.trim())}return{type:"heading",raw:pn(t[0],`
9
+ `),depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:pn(t[0],`
10
+ `)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=pn(t[0],`
11
11
  `).split(`
12
- `),a="",i="",o=[];for(;n.length>0;){let s=!1,l=[],c;for(c=0;c<n.length;c++)if(this.rules.other.blockquoteStart.test(n[c]))l.push(n[c]),s=!0;else if(!s)l.push(n[c]);else break;n=n.slice(c);let u=l.join(`
13
- `),f=u.replace(this.rules.other.blockquoteSetextReplace,`
14
- $1`).replace(this.rules.other.blockquoteSetextReplace2,"");a=a?`${a}
15
- ${u}`:u,i=i?`${i}
16
- ${f}`:f;let m=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(f,o,!0),this.lexer.state.top=m,n.length===0)break;let d=o.at(-1);if(d?.type==="code")break;if(d?.type==="blockquote"){let g=d,h=n.join(`
17
- `),v=g.raw+`
18
- `+h.replace(this.rules.other.blockquoteSetextReplace2,""),k=this.blockquote(v);o[o.length-1]=k;let y=v.substring(k.raw.length).replace(/^\n/,""),x=y?y.split(`
19
- `).length:0,w=x?n.slice(0,-x):n;w.length>0&&(a=`${a}
20
- ${w.join(`
21
- `)}`),i=i.substring(0,i.length-g.text.length)+k.text;break}else if(d?.type==="list"){let g=d,h=g.raw+`
12
+ `),r="",a="",i=[];for(;n.length>0;){let s=!1,l=[],c;for(c=0;c<n.length;c++)if(this.rules.other.blockquoteStart.test(n[c]))l.push(n[c]),s=!0;else if(!s)l.push(n[c]);else break;n=n.slice(c);let d=l.join(`
13
+ `),f=d.replace(this.rules.other.blockquoteSetextReplace,`
14
+ $1`).replace(this.rules.other.blockquoteSetextReplace2,"");r=r?`${r}
15
+ ${d}`:d,a=a?`${a}
16
+ ${f}`:f;let p=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(f,i,!0),this.lexer.state.top=p,n.length===0)break;let u=i.at(-1);if(u?.type==="code")break;if(u?.type==="blockquote"){let h=u,m=n.join(`
17
+ `),y=h.raw+`
18
+ `+m.replace(this.rules.other.blockquoteSetextReplace2,""),_=this.blockquote(y);i[i.length-1]=_;let C=y.substring(_.raw.length).replace(/^\n/,""),x=C?C.split(`
19
+ `).length:0,k=x?n.slice(0,-x):n;k.length>0&&(r=`${r}
20
+ ${k.join(`
21
+ `)}`),a=a.substring(0,a.length-h.text.length)+_.text;break}else if(u?.type==="list"){let h=u,m=h.raw+`
22
22
  `+n.join(`
23
- `),v=this.list(h);o[o.length-1]=v,a=a.substring(0,a.length-d.raw.length)+v.raw,i=i.substring(0,i.length-g.raw.length)+v.raw,n=h.substring(o.at(-1).raw.length).split(`
24
- `);continue}}return{type:"blockquote",raw:a,tokens:o,text:i}}}list(t){let e=this.rules.block.list.exec(t);if(e){let n=e[1].trim(),a=n.length>1,i={type:"list",raw:"",ordered:a,start:a?+n.slice(0,-1):"",loose:!1,items:[]};n=a?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=a?n:"[*+-]");let o=this.rules.other.listItemRegex(n),s=!1;for(;t;){let c=!1,u="",f="";if(!(e=o.exec(t))||this.rules.block.hr.test(t))break;u=e[0],t=t.substring(u.length);let m=e[2].split(`
25
- `,1)[0],d=e[1].length,g=this.options.pedantic?Ii(m,d):m.replace(this.rules.other.leadingSpaceTab,y=>Ii(y,d)),h=t.split(`
26
- `,1)[0],v=!g.trim(),k=0;if(this.options.pedantic?(k=2,f=g.trimStart()):v?k=d+1:(k=g.search(this.rules.other.nonSpaceChar),k=k>4?1:k,f=g.slice(k),k+=d),v&&this.rules.other.blankLine.test(h)&&(u+=h+`
27
- `,t=t.substring(h.length+1),c=!0),!c){let y=this.rules.other.nextBulletRegex(k),x=this.rules.other.hrRegex(k),w=this.rules.other.fencesBeginRegex(k),C=this.rules.other.headingBeginRegex(k),R=this.rules.other.htmlBeginRegex(k),U=this.rules.other.blockquoteBeginRegex(k);for(;t;){let J=t.split(`
28
- `,1)[0],H;if(h=J,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting," "),H=h):H=h.replace(this.rules.other.leadingSpaceTab,V=>V.replace(this.rules.other.tabCharGlobal," ")),w.test(h)||C.test(h)||R.test(h)||U.test(h)||y.test(h)||x.test(h))break;if(H.search(this.rules.other.nonSpaceChar)>=k||!h.trim())f+=`
29
- `+H.slice(k);else{if(v||g.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||w.test(g)||C.test(g)||x.test(g))break;f+=`
30
- `+h}v=!h.trim(),u+=J+`
31
- `,t=t.substring(J.length+1),g=H.slice(k)}}i.loose||(s?i.loose=!0:this.rules.other.doubleBlankLine.test(u)&&(s=!0)),i.items.push({type:"list_item",raw:u,task:!!this.options.gfm&&this.rules.other.listIsTask.test(f),loose:!1,text:f,tokens:[]}),i.raw+=u}let l=i.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let c of i.items)if(this.lexer.state.top=!1,c.tokens=this.lexer.blockTokens(c.text,[]),!i.loose){let u=c.tokens.filter(m=>m.type==="space"),f=u.length>0&&u.some(m=>this.rules.other.anyLine.test(m.raw));i.loose=f}for(let c of i.items){let u=c.tokens[0];if(c.task&&(u?.type==="text"||u?.type==="paragraph")){c.text=c.text.replace(this.rules.other.listReplaceTask,""),u.raw=u.raw.replace(this.rules.other.listReplaceTask,""),u.text=u.text.replace(this.rules.other.listReplaceTask,"");for(let m=this.lexer.inlineQueue.length-1;m>=0;m--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[m].src)){this.lexer.inlineQueue[m].src=this.lexer.inlineQueue[m].src.replace(this.rules.other.listReplaceTask,"");break}let f=this.rules.other.listTaskCheckbox.exec(c.raw);if(f){let m={type:"checkbox",raw:f[0]+" ",checked:f[0]!=="[ ]"};c.checked=m.checked,i.loose?c.tokens[0]&&["paragraph","text"].includes(c.tokens[0].type)&&"tokens"in c.tokens[0]&&c.tokens[0].tokens?(c.tokens[0].raw=m.raw+c.tokens[0].raw,c.tokens[0].text=m.raw+c.tokens[0].text,c.tokens[0].tokens.unshift(m)):c.tokens.unshift({type:"paragraph",raw:m.raw,text:m.raw,tokens:[m]}):c.tokens.unshift(m)}}else c.task&&(c.task=!1)}if(i.loose)for(let c of i.items){c.loose=!0;for(let u of c.tokens)u.type==="text"&&(u.type="paragraph")}return i}}html(t){let e=this.rules.block.html.exec(t);if(e){let n=Mi(e[0]);return{type:"html",block:!0,raw:n,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:n}}}def(t){let e=this.rules.block.def.exec(t);if(e){let n=Cn(e[1]).replace(this.rules.other.multipleSpaceGlobal," "),a=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",i=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:n,raw:lt(e[0],`
32
- `),href:a,title:i}}}table(t){let e=this.rules.block.table.exec(t);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let n=Ri(e[1]),a=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),i=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(`
33
- `):[],o={type:"table",raw:lt(e[0],`
34
- `),header:[],align:[],rows:[]};if(n.length===a.length){for(let s of a)this.rules.other.tableAlignRight.test(s)?o.align.push("right"):this.rules.other.tableAlignCenter.test(s)?o.align.push("center"):this.rules.other.tableAlignLeft.test(s)?o.align.push("left"):o.align.push(null);for(let s=0;s<n.length;s++)o.header.push({text:n[s],tokens:this.lexer.inline(n[s]),header:!0,align:o.align[s]});for(let s of i)o.rows.push(Ri(s,o.header.length).map((l,c)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:o.align[c]})));return o}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e){let n=e[1].trim();return{type:"heading",raw:lt(e[0],`
35
- `),depth:e[2].charAt(0)==="="?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let n=e[1].charAt(e[1].length-1)===`
36
- `?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:n,tokens:this.lexer.inline(n)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let n=e[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&Di(t,e[1],n,this.rules))return;let a=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(a)){if(!this.rules.other.endAngleBracket.test(a))return;let s=lt(a.slice(0,-1),"\\");if((a.length-s.length)%2===0)return}else{let s=ru(e[2],"()");if(s===-2)return;if(s>-1){let l=(e[0].indexOf("!")===0?5:4)+e[1].length+s;e[2]=e[2].substring(0,s),e[0]=e[0].substring(0,l).trim(),e[3]=""}}let i=e[2],o="";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(i);s&&(i=s[1],o=s[3])}else o=e[3]?e[3].slice(1,-1):"";return i=i.trim(),this.rules.other.startAngleBracket.test(i)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(a)?i=i.slice(1):i=i.slice(1,-1)),Li(e,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:o&&o.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let n;if((n=this.rules.inline.reflink.exec(t))||(n=this.rules.inline.nolink.exec(t))){let a=n[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&Di(t,n[1],a,this.rules))return;let i=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[Cn(i)];if(!o){let s=n[0].charAt(0);return{type:"text",raw:s,text:s}}return Li(n,o,n[0],this.lexer,this.rules)}}emStrong(t,e,n=""){let a=this.rules.inline.emStrongLDelim.exec(t);if(!(!a||!a[1]&&!a[2]&&!a[3]&&!a[4]||a[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(a[1]||a[3])||!n||this.rules.inline.punctuation.exec(n))){let i=[...a[0]].length-1,o,s,l=i,c=0,u=a[0][0],f=n===u,m=u==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(m.lastIndex=0,e=e.slice(-1*t.length+i);(a=m.exec(e))!==null;){if(o=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!o)continue;if(s=[...o].length,a[3]||a[4]){l+=s;continue}else if(a[5]||a[6]){if(i%3&&!((i+s)%3)){c+=s;continue}if(f)break}if(l-=s,l>0)continue;s=Math.min(s,s+l+c);let d=[...a[0]][0].length,g=t.slice(0,i+a.index+d+s);if(Math.min(i,s)%2){let v=g.slice(1,-1);return{type:"em",raw:g,text:v,tokens:this.lexer.inlineTokens(v)}}let h=g.slice(2,-2);return{type:"strong",raw:g,text:h,tokens:this.lexer.inlineTokens(h)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let n=e[2].replace(this.rules.other.newLineCharGlobal," "),a=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return a&&i&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:e[0],text:n}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t,e,n=""){let a=this.rules.inline.delLDelim.exec(t);if(a&&(!a[1]||!n||this.rules.inline.punctuation.exec(n))){let i=[...a[0]].length-1,o,s,l=i,c=this.rules.inline.delRDelim;for(c.lastIndex=0,e=e.slice(-1*t.length+i);(a=c.exec(e))!==null;){if(o=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!o||(s=[...o].length,s!==i))continue;if(a[3]||a[4]){l+=s;continue}if(l-=s,l>0)continue;s=Math.min(s,s+l);let u=[...a[0]][0].length,f=t.slice(0,i+a.index+u+s),m=f.slice(i,-i);return{type:"del",raw:f,text:m,tokens:this.lexer.inlineTokens(m)}}}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let n,a;return e[2]==="@"?(n=e[1],a="mailto:"+n):(n=e[1],a=n),{type:"link",raw:e[0],text:n,href:a,autolink:!0,tokens:[{type:"text",raw:n,text:n}]}}}url(t){let e;if(e=this.rules.inline.url.exec(t)){let n,a;if(e[2]==="@")n=e[0],a="mailto:"+n;else{let i;do i=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(i!==e[0]);n=e[0],e[1]==="www."?a="http://"+e[0]:a=e[0]}return{type:"link",raw:e[0],text:n,href:a,autolink:!0,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let n=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:n?e[0]:nu(e[0]),escaped:n}}}},Be=class Er{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||yt,this.options.tokenizer=this.options.tokenizer||new Tn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let n={other:Se,block:Sn.normal,inline:Jt.normal};this.options.pedantic?(n.block=Sn.pedantic,n.inline=Jt.pedantic):this.options.gfm&&(n.block=Sn.gfm,this.options.breaks?n.inline=Jt.breaks:n.inline=Jt.gfm),this.tokenizer.rules=n}static get rules(){return{block:Sn,inline:Jt}}static lex(e,n){return new Er(n).lex(e)}static lexInline(e,n){return new Er(n).inlineTokens(e)}lex(e){e=e.replace(Se.carriageReturn,`
37
- `),this.blockTokens(e,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let a=this.inlineQueue[n];this.inlineTokens(a.src,a.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,n=[],a=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(Se.tabCharGlobal," ").replace(Se.spaceLine,""));let i=1/0;for(;e;){if(e.length<i)i=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let o;if(this.options.extensions?.block?.some(l=>(o=l.call({lexer:this},e,n))?(e=e.substring(o.raw.length),n.push(o),!0):!1))continue;if(o=this.tokenizer.space(e)){e=e.substring(o.raw.length);let l=n.at(-1);o.raw.length===1&&l!==void 0?l.raw+=`
38
- `:n.push(o);continue}if(o=this.tokenizer.code(e)){e=e.substring(o.raw.length);let l=n.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(`
23
+ `),y=this.list(m);i[i.length-1]=y,r=r.substring(0,r.length-u.raw.length)+y.raw,a=a.substring(0,a.length-h.raw.length)+y.raw,n=m.substring(i.at(-1).raw.length).split(`
24
+ `);continue}}return{type:"blockquote",raw:r,tokens:i,text:a}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,a={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let i=this.rules.other.listItemRegex(n),s=!1;for(;e;){let c=!1,d="",f="";if(!(t=i.exec(e))||this.rules.block.hr.test(e))break;d=t[0],e=e.substring(d.length);let p=t[2].split(`
25
+ `,1)[0],u=t[1].length,h=this.options.pedantic?ts(p,u):p.replace(this.rules.other.leadingSpaceTab,C=>ts(C,u)),m=e.split(`
26
+ `,1)[0],y=!h.trim(),_=0;if(this.options.pedantic?(_=2,f=h.trimStart()):y?_=u+1:(_=h.search(this.rules.other.nonSpaceChar),_=_>4?1:_,f=h.slice(_),_+=u),y&&this.rules.other.blankLine.test(m)&&(d+=m+`
27
+ `,e=e.substring(m.length+1),c=!0),!c){let C=this.rules.other.nextBulletRegex(_),x=this.rules.other.hrRegex(_),k=this.rules.other.fencesBeginRegex(_),A=this.rules.other.headingBeginRegex(_),O=this.rules.other.htmlBeginRegex(_),q=this.rules.other.blockquoteBeginRegex(_);for(;e;){let N=e.split(`
28
+ `,1)[0],B;if(m=N,this.options.pedantic?(m=m.replace(this.rules.other.listReplaceNesting," "),B=m):B=m.replace(this.rules.other.leadingSpaceTab,Y=>Y.replace(this.rules.other.tabCharGlobal," ")),k.test(m)||A.test(m)||O.test(m)||q.test(m)||C.test(m)||x.test(m))break;if(B.search(this.rules.other.nonSpaceChar)>=_||!m.trim())f+=`
29
+ `+B.slice(_);else{if(y||h.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||k.test(h)||A.test(h)||x.test(h))break;f+=`
30
+ `+m}y=!m.trim(),d+=N+`
31
+ `,e=e.substring(N.length+1),h=B.slice(_)}}a.loose||(s?a.loose=!0:this.rules.other.doubleBlankLine.test(d)&&(s=!0)),a.items.push({type:"list_item",raw:d,task:!!this.options.gfm&&this.rules.other.listIsTask.test(f),loose:!1,text:f,tokens:[]}),a.raw+=d}let l=a.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;a.raw=a.raw.trimEnd();for(let c of a.items)if(this.lexer.state.top=!1,c.tokens=this.lexer.blockTokens(c.text,[]),!a.loose){let d=c.tokens.filter(p=>p.type==="space"),f=d.length>0&&d.some(p=>this.rules.other.anyLine.test(p.raw));a.loose=f}for(let c of a.items){let d=c.tokens[0];if(c.task&&(d?.type==="text"||d?.type==="paragraph")){c.text=c.text.replace(this.rules.other.listReplaceTask,""),d.raw=d.raw.replace(this.rules.other.listReplaceTask,""),d.text=d.text.replace(this.rules.other.listReplaceTask,"");for(let p=this.lexer.inlineQueue.length-1;p>=0;p--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[p].src)){this.lexer.inlineQueue[p].src=this.lexer.inlineQueue[p].src.replace(this.rules.other.listReplaceTask,"");break}let f=this.rules.other.listTaskCheckbox.exec(c.raw);if(f){let p={type:"checkbox",raw:f[0]+" ",checked:f[0]!=="[ ]"};c.checked=p.checked,a.loose?c.tokens[0]&&["paragraph","text"].includes(c.tokens[0].type)&&"tokens"in c.tokens[0]&&c.tokens[0].tokens?(c.tokens[0].raw=p.raw+c.tokens[0].raw,c.tokens[0].text=p.raw+c.tokens[0].text,c.tokens[0].tokens.unshift(p)):c.tokens.unshift({type:"paragraph",raw:p.raw,text:p.raw,tokens:[p]}):c.tokens.unshift(p)}}else c.task&&(c.task=!1)}if(a.loose)for(let c of a.items){c.loose=!0;for(let d of c.tokens)d.type==="text"&&(d.type="paragraph")}return a}}html(e){let t=this.rules.block.html.exec(e);if(t){let n=es(t[0]);return{type:"html",block:!0,raw:n,pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:n}}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=Jo(t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",a=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:pn(t[0],`
32
+ `),href:r,title:a}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=Qi(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),a=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
33
+ `):[],i={type:"table",raw:pn(t[0],`
34
+ `),header:[],align:[],rows:[]};if(n.length===r.length){for(let s of r)this.rules.other.tableAlignRight.test(s)?i.align.push("right"):this.rules.other.tableAlignCenter.test(s)?i.align.push("center"):this.rules.other.tableAlignLeft.test(s)?i.align.push("left"):i.align.push(null);for(let s=0;s<n.length;s++)i.header.push({text:n[s],tokens:this.lexer.inline(n[s]),header:!0,align:i.align[s]});for(let s of a)i.rows.push(Qi(s,i.header.length).map((l,c)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:i.align[c]})));return i}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:"heading",raw:pn(t[0],`
35
+ `),depth:t[2].charAt(0)==="="?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`
36
+ `?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&os(e,t[1],n,this.rules))return;let r=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let s=pn(r.slice(0,-1),"\\");if((r.length-s.length)%2===0)return}else{let s=_u(t[2],"()");if(s===-2)return;if(s>-1){let l=(t[0].indexOf("!")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,l).trim(),t[3]=""}}let a=t[2],i="";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(a);s&&(a=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):"";return a=a.trim(),this.rules.other.startAngleBracket.test(a)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?a=a.slice(1):a=a.slice(1,-1)),ns(t,{href:a&&a.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=n[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&os(e,n[1],r,this.rules))return;let a=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=t[Jo(a)];if(!i){let s=n[0].charAt(0);return{type:"text",raw:s,text:s}}return ns(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let a=[...r[0]].length-1,i,s,l=a,c=0,d=r[0][0],f=n===d,p=d==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(p.lastIndex=0,t=t.slice(-1*e.length+a);(r=p.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i)continue;if(s=[...i].length,r[3]||r[4]){l+=s;continue}else if(r[5]||r[6]){if(a%3&&!((a+s)%3)){c+=s;continue}if(f)break}if(l-=s,l>0)continue;s=Math.min(s,s+l+c);let u=[...r[0]][0].length,h=e.slice(0,a+r.index+u+s);if(Math.min(a,s)%2){let y=h.slice(1,-1);return{type:"em",raw:h,text:y,tokens:this.lexer.inlineTokens(y)}}let m=h.slice(2,-2);return{type:"strong",raw:h,text:m,tokens:this.lexer.inlineTokens(m)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),r=this.rules.other.nonSpaceChar.test(n),a=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&a&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e,t,n=""){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let a=[...r[0]].length-1,i,s,l=a,c=this.rules.inline.delRDelim;for(c.lastIndex=0,t=t.slice(-1*e.length+a);(r=c.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(s=[...i].length,s!==a))continue;if(r[3]||r[4]){l+=s;continue}if(l-=s,l>0)continue;s=Math.min(s,s+l);let d=[...r[0]][0].length,f=e.slice(0,a+r.index+d+s),p=f.slice(a,-a);return{type:"del",raw:f,text:p,tokens:this.lexer.inlineTokens(p)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]==="@"?(n=t[1],r="mailto:"+n):(n=t[1],r=n),{type:"link",raw:t[0],text:n,href:r,autolink:!0,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]==="@")n=t[0],r="mailto:"+n;else{let a;do a=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(a!==t[0]);n=t[0],t[1]==="www."?r="http://"+t[0]:r=t[0]}return{type:"link",raw:t[0],text:n,href:r,autolink:!0,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:n?t[0]:zu(t[0]),escaped:n}}}},St=class Zr{tokens;options;state;inlineQueue;tokenizer;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||An,this.options.tokenizer=this.options.tokenizer||new Yo,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let n={other:Ge,block:Xo.normal,inline:ho.normal};this.options.pedantic?(n.block=Xo.pedantic,n.inline=ho.pedantic):this.options.gfm&&(n.block=Xo.gfm,this.options.breaks?n.inline=ho.breaks:n.inline=ho.gfm),this.tokenizer.rules=n}static get rules(){return{block:Xo,inline:ho}}static lex(t,n){return new Zr(n).lex(t)}static lexInline(t,n){return new Zr(n).inlineTokens(t)}lex(t){t=t.replace(Ge.carriageReturn,`
37
+ `),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let r=this.inlineQueue[n];this.inlineTokens(r.src,r.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],r=!1){this.tokenizer.lexer=this,this.options.pedantic&&(t=t.replace(Ge.tabCharGlobal," ").replace(Ge.spaceLine,""));let a=1/0;for(;t;){if(t.length<a)a=t.length;else{this.infiniteLoopError(t.charCodeAt(0));break}let i;if(this.options.extensions?.block?.some(l=>(i=l.call({lexer:this},t,n))?(t=t.substring(i.raw.length),n.push(i),!0):!1))continue;if(i=this.tokenizer.space(t)){t=t.substring(i.raw.length);let l=n.at(-1);i.raw.length===1&&l!==void 0?l.raw+=`
38
+ `:n.push(i);continue}if(i=this.tokenizer.code(t)){t=t.substring(i.raw.length);let l=n.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(`
39
39
  `)?"":`
40
- `)+o.raw,l.text+=`
41
- `+o.text,this.inlineQueue.at(-1).src=l.text):n.push(o);continue}if(o=this.tokenizer.fences(e)){e=e.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.heading(e)){e=e.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.hr(e)){e=e.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.blockquote(e)){e=e.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.list(e)){e=e.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.html(e)){e=e.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.def(e)){e=e.substring(o.raw.length);let l=n.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(`
40
+ `)+i.raw,l.text+=`
41
+ `+i.text,this.inlineQueue.at(-1).src=l.text):n.push(i);continue}if(i=this.tokenizer.fences(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.heading(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.hr(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.blockquote(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.list(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.html(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.def(t)){t=t.substring(i.raw.length);let l=n.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(`
42
42
  `)?"":`
43
- `)+o.raw,l.text+=`
44
- `+o.raw,this.inlineQueue.at(-1).src=l.text):this.tokens.links[o.tag]||(this.tokens.links[o.tag]={href:o.href,title:o.title},n.push(o));continue}if(o=this.tokenizer.table(e)){e=e.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.lheading(e)){e=e.substring(o.raw.length),n.push(o);continue}let s=e;if(this.options.extensions?.startBlock){let l=1/0,c=e.slice(1),u;this.options.extensions.startBlock.forEach(f=>{u=f.call({lexer:this},c),typeof u=="number"&&u>=0&&(l=Math.min(l,u))}),l<1/0&&l>=0&&(s=e.substring(0,l+1))}if(this.state.top&&(o=this.tokenizer.paragraph(s))){let l=n.at(-1);a&&l?.type==="paragraph"?(l.raw+=(l.raw.endsWith(`
43
+ `)+i.raw,l.text+=`
44
+ `+i.raw,this.inlineQueue.at(-1).src=l.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},n.push(i));continue}if(i=this.tokenizer.table(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.lheading(t)){t=t.substring(i.raw.length),n.push(i);continue}let s=t;if(this.options.extensions?.startBlock){let l=1/0,c=t.slice(1),d;this.options.extensions.startBlock.forEach(f=>{d=f.call({lexer:this},c),typeof d=="number"&&d>=0&&(l=Math.min(l,d))}),l<1/0&&l>=0&&(s=t.substring(0,l+1))}if(this.state.top&&(i=this.tokenizer.paragraph(s))){let l=n.at(-1);r&&l?.type==="paragraph"?(l.raw+=(l.raw.endsWith(`
45
45
  `)?"":`
46
- `)+o.raw,l.text+=`
47
- `+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(o),a=s.length!==e.length,e=e.substring(o.raw.length);continue}if(o=this.tokenizer.text(e)){e=e.substring(o.raw.length);let l=n.at(-1);l?.type==="text"?(l.raw+=(l.raw.endsWith(`
46
+ `)+i.raw,l.text+=`
47
+ `+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(i),r=s.length!==t.length,t=t.substring(i.raw.length);continue}if(i=this.tokenizer.text(t)){t=t.substring(i.raw.length);let l=n.at(-1);l?.type==="text"?(l.raw+=(l.raw.endsWith(`
48
48
  `)?"":`
49
- `)+o.raw,l.text+=`
50
- `+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(o);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,n}inline(e,n=[]){return this.inlineQueue.push({src:e,tokens:n}),n}linkInText(e){if(!e.includes("["))return!1;let n=this.tokenizer.rules.inline.link;for(let a of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(n.test(a[0])&&e.charAt(a.index-1)!=="!")return!0;for(let a of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let i=a[0],o=i.lastIndexOf("[");if(!(i.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,Cn(i.slice(o+1,-1))))&&!(o>1&&this.linkInText(i.slice(1,o-1))))return!0}return!1}inlineTokens(e,n=[]){this.tokenizer.lexer=this;let a=e;if(this.tokens.links&&e.includes("[")){let l=this.tokenizer.rules.inline.reflinkSearch,c=u=>{let f=u.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,Cn(u.slice(f+1,-1))))return u;if(f>1&&u.charAt(0)!=="!"){let m=u.slice(1,f-1);if(this.linkInText(m))return"["+m.replace(l,c)+"]["+"a".repeat(u.length-f-2)+"]"}return"["+"a".repeat(u.length-2)+"]"};a=a.replace(l,c)}a=a.replace(this.tokenizer.rules.inline.anyPunctuation,l=>"+".repeat(l.length)),a=a.replace(this.tokenizer.rules.inline.blockSkip,(l,c,u)=>{let f=u?u.length:0;return l.slice(0,f)+"["+"a".repeat(l.length-f-2)+"]"}),a=this.options.hooks?.emStrongMask?.call({lexer:this},a)??a;let i=!1,o="",s=1/0;for(;e;){if(e.length<s)s=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}i||(o=""),i=!1;let l;if(this.options.extensions?.inline?.some(u=>(l=u.call({lexer:this},e,n))?(e=e.substring(l.raw.length),n.push(l),!0):!1))continue;if(l=this.tokenizer.escape(e)){e=e.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.tag(e)){e=e.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.link(e)){e=e.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(l.raw.length);let u=n.at(-1);l.type==="text"&&u?.type==="text"?(u.raw+=l.raw,u.text+=l.text):n.push(l);continue}if(l=this.tokenizer.emStrong(e,a,o)){e=e.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.codespan(e)){e=e.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.br(e)){e=e.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.del(e,a,o)){e=e.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.autolink(e)){e=e.substring(l.raw.length),n.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(e))){e=e.substring(l.raw.length),n.push(l);continue}let c=e;if(this.options.extensions?.startInline){let u=1/0,f=e.slice(1),m;this.options.extensions.startInline.forEach(d=>{m=d.call({lexer:this},f),typeof m=="number"&&m>=0&&(u=Math.min(u,m))}),u<1/0&&u>=0&&(c=e.substring(0,u+1))}if(l=this.tokenizer.inlineText(c)){e=e.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(o=l.raw.slice(-1)),i=!0;let u=n.at(-1);u?.type==="text"?(u.raw+=l.raw,u.text+=l.text):n.push(l);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return n}infiniteLoopError(e){let n="Infinite loop on byte: "+e;if(this.options.silent)console.error(n);else throw new Error(n)}},Pn=class{options;parser;constructor(t){this.options=t||yt}space(t){return""}code({text:t,lang:e,escaped:n}){let a=(e||"").match(Se.notSpaceStart)?.[0],i=t?t.replace(Se.endingNewline,"")+`
51
- `:"";return a?'<pre><code class="language-'+Le(a)+'">'+(n?i:Le(i,!0))+`</code></pre>
52
- `:"<pre><code>"+(n?i:Le(i,!0))+`</code></pre>
53
- `}blockquote({tokens:t}){return`<blockquote>
54
- ${this.parser.parse(t)}</blockquote>
55
- `}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:e}){return`<h${e}>${this.parser.parseInline(t)}</h${e}>
56
- `}hr(t){return`<hr>
57
- `}list(t){let e=t.ordered,n=t.start,a="";for(let s=0;s<t.items.length;s++){let l=t.items[s];a+=this.listitem(l)}let i=e?"ol":"ul",o=e&&n!==1?' start="'+n+'"':"";return"<"+i+o+`>
58
- `+a+"</"+i+`>
59
- `}listitem(t){return`<li>${this.parser.parse(t.tokens)}</li>
60
- `}checkbox({checked:t}){return"<input "+(t?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:t}){return`<p>${this.parser.parseInline(t)}</p>
61
- `}table(t){let e="",n="";for(let i=0;i<t.header.length;i++)n+=this.tablecell(t.header[i]);e+=this.tablerow({text:n});let a="";for(let i=0;i<t.rows.length;i++){let o=t.rows[i];n="";for(let s=0;s<o.length;s++)n+=this.tablecell(o[s]);a+=this.tablerow({text:n})}return a&&(a=`<tbody>${a}</tbody>`),`<table>
49
+ `)+i.raw,l.text+=`
50
+ `+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(i);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}linkInText(t){if(!t.includes("["))return!1;let n=this.tokenizer.rules.inline.link;for(let r of t.matchAll(this.tokenizer.rules.inline.blockSkip))if(n.test(r[0])&&t.charAt(r.index-1)!=="!")return!0;for(let r of t.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let a=r[0],i=a.lastIndexOf("[");if(!(a.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,Jo(a.slice(i+1,-1))))&&!(i>1&&this.linkInText(a.slice(1,i-1))))return!0}return!1}inlineTokens(t,n=[]){this.tokenizer.lexer=this;let r=t;if(this.tokens.links&&t.includes("[")){let l=this.tokenizer.rules.inline.reflinkSearch,c=d=>{let f=d.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,Jo(d.slice(f+1,-1))))return d;if(f>1&&d.charAt(0)!=="!"){let p=d.slice(1,f-1);if(this.linkInText(p))return"["+p.replace(l,c)+"]["+"a".repeat(d.length-f-2)+"]"}return"["+"a".repeat(d.length-2)+"]"};r=r.replace(l,c)}r=r.replace(this.tokenizer.rules.inline.anyPunctuation,l=>"+".repeat(l.length)),r=r.replace(this.tokenizer.rules.inline.blockSkip,(l,c,d)=>{let f=d?d.length:0;return l.slice(0,f)+"["+"a".repeat(l.length-f-2)+"]"}),r=this.options.hooks?.emStrongMask?.call({lexer:this},r)??r;let a=!1,i="",s=1/0;for(;t;){if(t.length<s)s=t.length;else{this.infiniteLoopError(t.charCodeAt(0));break}a||(i=""),a=!1;let l;if(this.options.extensions?.inline?.some(d=>(l=d.call({lexer:this},t,n))?(t=t.substring(l.raw.length),n.push(l),!0):!1))continue;if(l=this.tokenizer.escape(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.tag(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.link(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(l.raw.length);let d=n.at(-1);l.type==="text"&&d?.type==="text"?(d.raw+=l.raw,d.text+=l.text):n.push(l);continue}if(l=this.tokenizer.emStrong(t,r,i)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.codespan(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.br(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.del(t,r,i)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.autolink(t)){t=t.substring(l.raw.length),n.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(t))){t=t.substring(l.raw.length),n.push(l);continue}let c=t;if(this.options.extensions?.startInline){let d=1/0,f=t.slice(1),p;this.options.extensions.startInline.forEach(u=>{p=u.call({lexer:this},f),typeof p=="number"&&p>=0&&(d=Math.min(d,p))}),d<1/0&&d>=0&&(c=t.substring(0,d+1))}if(l=this.tokenizer.inlineText(c)){t=t.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(i=l.raw.slice(-1)),a=!0;let d=n.at(-1);d?.type==="text"?(d.raw+=l.raw,d.text+=l.text):n.push(l);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return n}infiniteLoopError(t){let n="Infinite loop on byte: "+t;if(this.options.silent)console.error(n);else throw new Error(n)}},Zo=class{options;parser;constructor(e){this.options=e||An}space(e){return""}code({text:e,lang:t,escaped:n}){let r=(t||"").match(Ge.notSpaceStart)?.[0],a=e?e.replace(Ge.endingNewline,"")+`
51
+ `:"";return r?'<pre><code class="language-'+ct(r)+'">'+(n?a:ct(a,!0))+`</code></pre>
52
+ `:"<pre><code>"+(n?a:ct(a,!0))+`</code></pre>
53
+ `}blockquote({tokens:e}){return`<blockquote>
54
+ ${this.parser.parse(e)}</blockquote>
55
+ `}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
56
+ `}hr(e){return`<hr>
57
+ `}list(e){let t=e.ordered,n=e.start,r="";for(let s=0;s<e.items.length;s++){let l=e.items[s];r+=this.listitem(l)}let a=t?"ol":"ul",i=t&&n!==1?' start="'+n+'"':"";return"<"+a+i+`>
58
+ `+r+"</"+a+`>
59
+ `}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>
60
+ `}checkbox({checked:e}){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>
61
+ `}table(e){let t="",n="";for(let a=0;a<e.header.length;a++)n+=this.tablecell(e.header[a]);t+=this.tablerow({text:n});let r="";for(let a=0;a<e.rows.length;a++){let i=e.rows[a];n="";for(let s=0;s<i.length;s++)n+=this.tablecell(i[s]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>
62
62
  <thead>
63
- `+e+`</thead>
64
- `+a+`</table>
65
- `}tablerow({text:t}){return`<tr>
66
- ${t}</tr>
67
- `}tablecell(t){let e=this.parser.parseInline(t.tokens),n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`</${n}>
68
- `}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${Le(t,!0)}</code>`}br(t){return"<br>"}del({tokens:t}){return`<del>${this.parser.parseInline(t)}</del>`}link({href:t,title:e,text:n,tokens:a,autolink:i}){let o=i?Le(n,!0):this.parser.parseInline(a),s=Ei(t);if(s===null)return o;t=Le(s,i);let l='<a href="'+t+'"';return e&&(l+=' title="'+Le(e)+'"'),l+=">"+o+"</a>",l}image({href:t,title:e,text:n,tokens:a}){a&&(n=this.parser.parseInline(a,this.parser.textRenderer));let i=Ei(t);if(i===null)return Le(n);t=i;let o=`<img src="${Le(t)}" alt="${Le(n)}"`;return e&&(o+=` title="${Le(e)}"`),o+=">",o}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:Le(t.text)}},Br=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}checkbox({raw:t}){return t}},Fe=class Rr{options;renderer;textRenderer;constructor(e){this.options=e||yt,this.options.renderer=this.options.renderer||new Pn,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Br}static parse(e,n){return new Rr(n).parse(e)}static parseInline(e,n){return new Rr(n).parseInline(e)}parse(e){this.renderer.parser=this;let n="";for(let a=0;a<e.length;a++){let i=e[a];if(this.options.extensions?.renderers?.[i.type]){let s=i,l=this.options.extensions.renderers[s.type].call({parser:this},s);if(l!==!1||!["space","hr","heading","code","table","blockquote","list","checkbox","html","def","paragraph","text"].includes(s.type)){n+=l||"";continue}}let o=i;switch(o.type){case"space":{n+=this.renderer.space(o);break}case"hr":{n+=this.renderer.hr(o);break}case"heading":{n+=this.renderer.heading(o);break}case"code":{n+=this.renderer.code(o);break}case"table":{n+=this.renderer.table(o);break}case"blockquote":{n+=this.renderer.blockquote(o);break}case"list":{n+=this.renderer.list(o);break}case"checkbox":{n+=this.renderer.checkbox(o);break}case"html":{n+=this.renderer.html(o);break}case"def":{n+=this.renderer.def(o);break}case"paragraph":{n+=this.renderer.paragraph(o);break}case"text":{n+=this.renderer.text(o);break}default:{let s='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(s),"";throw new Error(s)}}}return n}parseInline(e,n=this.renderer){this.renderer.parser=this;let a="";for(let i=0;i<e.length;i++){let o=e[i];if(this.options.extensions?.renderers?.[o.type]){let l=this.options.extensions.renderers[o.type].call({parser:this},o);if(l!==!1||!["escape","html","link","image","checkbox","strong","em","codespan","br","del","text"].includes(o.type)){a+=l||"";continue}}let s=o;switch(s.type){case"escape":{a+=n.text(s);break}case"html":{a+=n.html(s);break}case"link":{a+=n.link(s);break}case"image":{a+=n.image(s);break}case"checkbox":{a+=n.checkbox(s);break}case"strong":{a+=n.strong(s);break}case"em":{a+=n.em(s);break}case"codespan":{a+=n.codespan(s);break}case"br":{a+=n.br(s);break}case"del":{a+=n.del(s);break}case"text":{a+=n.text(s);break}default:{let l='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return a}},Yt=class{options;block;constructor(t){this.options=t||yt}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}emStrongMask(t){return t}provideLexer(t=this.block){return t?Be.lex:Be.lexInline}provideParser(t=this.block){return t?Fe.parse:Fe.parseInline}},Fr=class{defaults=Mr();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Fe;Renderer=Pn;TextRenderer=Br;Lexer=Be;Tokenizer=Tn;Hooks=Yt;constructor(...t){this.use(...t)}walkTokens(t,e){let n=[];for(let a of t)switch(n=n.concat(e.call(this,a)),a.type){case"table":{let i=a;for(let o of i.header)n=n.concat(this.walkTokens(o.tokens,e));for(let o of i.rows)for(let s of o)n=n.concat(this.walkTokens(s.tokens,e));break}case"list":{let i=a;n=n.concat(this.walkTokens(i.items,e));break}default:{let i=a;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(o=>{let s=i[o].flat(1/0);n=n.concat(this.walkTokens(s,e))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,e)))}}return n}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(n=>{let a={...n};if(a.async=this.defaults.async||a.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let o=e.renderers[i.name];o?e.renderers[i.name]=function(...s){let l=i.renderer.apply(this,s);return l===!1&&(l=o.apply(this,s)),l}:e.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let o=e[i.level];o?o.unshift(i.tokenizer):e[i.level]=[i.tokenizer],i.start&&(i.level==="block"?e.startBlock?e.startBlock.push(i.start):e.startBlock=[i.start]:i.level==="inline"&&(e.startInline?e.startInline.push(i.start):e.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(e.childTokens[i.name]=i.childTokens)}),a.extensions=e),n.renderer){let i=this.defaults.renderer||new Pn(this.defaults);for(let o in n.renderer){if(!(o in i))throw new Error(`renderer '${o}' does not exist`);if(["options","parser"].includes(o))continue;let s=o,l=n.renderer[s],c=i[s];i[s]=(...u)=>{let f=l.apply(i,u);return f===!1&&(f=c.apply(i,u)),f||""}}a.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new Tn(this.defaults);for(let o in n.tokenizer){if(!(o in i))throw new Error(`tokenizer '${o}' does not exist`);if(["options","rules","lexer"].includes(o))continue;let s=o,l=n.tokenizer[s],c=i[s];i[s]=(...u)=>{let f=l.apply(i,u);return f===!1&&(f=c.apply(i,u)),f}}a.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new Yt;for(let o in n.hooks){if(!(o in i))throw new Error(`hook '${o}' does not exist`);if(["options","block"].includes(o))continue;let s=o,l=n.hooks[s],c=i[s];Yt.passThroughHooks.has(o)?i[s]=u=>{if(this.defaults.async&&Yt.passThroughHooksRespectAsync.has(o))return(async()=>{let m=await l.call(i,u);return c.call(i,m)})();let f=l.call(i,u);return c.call(i,f)}:i[s]=(...u)=>{if(this.defaults.async)return(async()=>{let m=await l.apply(i,u);return m===!1&&(m=await c.apply(i,u)),m})();let f=l.apply(i,u);return f===!1&&(f=c.apply(i,u)),f}}a.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,o=n.walkTokens;a.walkTokens=function(s){let l=[];return l.push(o.call(this,s)),i&&(l=l.concat(i.call(this,s))),l}}this.defaults={...this.defaults,...a}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return Be.lex(t,e??this.defaults)}parser(t,e){return Fe.parse(t,e??this.defaults)}parseMarkdown(t){return(e,n)=>{let a={...n},i={...this.defaults,...a},o=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&a.async===!1)return o(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return o(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(i.hooks&&(i.hooks.options=i,i.hooks.block=t),i.async)return(async()=>{let s=i.hooks?await i.hooks.preprocess(e):e,l=await(i.hooks?await i.hooks.provideLexer(t):t?Be.lex:Be.lexInline)(s,i),c=i.hooks?await i.hooks.processAllTokens(l):l;i.walkTokens&&await Promise.all(this.walkTokens(c,i.walkTokens));let u=await(i.hooks?await i.hooks.provideParser(t):t?Fe.parse:Fe.parseInline)(c,i);return i.hooks?await i.hooks.postprocess(u):u})().catch(o);try{i.hooks&&(e=i.hooks.preprocess(e));let s=(i.hooks?i.hooks.provideLexer(t):t?Be.lex:Be.lexInline)(e,i);i.hooks&&(s=i.hooks.processAllTokens(s)),i.walkTokens&&this.walkTokens(s,i.walkTokens);let l=(i.hooks?i.hooks.provideParser(t):t?Fe.parse:Fe.parseInline)(s,i);return i.hooks&&(l=i.hooks.postprocess(l)),l}catch(s){return o(s)}}}onError(t,e){return n=>{if(n.message+=`
69
- Please report this to https://github.com/markedjs/marked.`,t){let a="<p>An error occurred:</p><pre>"+Le(n.message+"",!0)+"</pre>";return e?Promise.resolve(a):a}if(e)return Promise.reject(n);throw n}}},vt=new Fr;function ne(t,e){return vt.parse(t,e)}ne.options=ne.setOptions=function(t){return vt.setOptions(t),ne.defaults=vt.defaults,zi(ne.defaults),ne};ne.getDefaults=Mr;ne.defaults=yt;function iu(...t){return vt.use(...t),ne.defaults=vt.defaults,zi(ne.defaults),ne}ne.use=iu;ne.walkTokens=function(t,e){return vt.walkTokens(t,e)};ne.parseInline=vt.parseInline;ne.Parser=Fe;ne.parser=Fe.parse;ne.Renderer=Pn;ne.TextRenderer=Br;ne.Lexer=Be;ne.lexer=Be.lex;ne.Tokenizer=Tn;ne.Hooks=Yt;ne.parse=ne;var pp=ne.options,fp=ne.setOptions,mp=ne.walkTokens,gp=ne.parseInline;var hp=Fe.parse,bp=Be.lex;var Nn,te,Vi,ou,ct,Wi,Ki,Ji,$r,Rn,en,Yi,Wr,Ur,Hr,Gi,Ln={},Dn=[],su=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,On=Array.isArray;function Ze(t,e){for(var n in e)t[n]=e[n];return t}function jr(t){t&&t.parentNode&&t.parentNode.removeChild(t)}function lu(t,e,n){var a,i,o,s={};for(o in e)o=="key"?a=e[o]:o=="ref"?i=e[o]:s[o]=e[o];if(arguments.length>2&&(s.children=arguments.length>3?Nn.call(arguments,2):n),typeof t=="function"&&t.defaultProps!=null)for(o in t.defaultProps)s[o]===void 0&&(s[o]=t.defaultProps[o]);return Mn(t,s,a,i,null)}function Mn(t,e,n,a,i){var o={type:t,props:e,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:i??++Vi,__i:-1,__u:0};return i==null&&te.vnode!=null&&te.vnode(o),o}function N(t){return t.children}function In(t,e){this.props=t,this.context=e}function kt(t,e){if(e==null)return t.__?kt(t.__,t.__i+1):null;for(var n;e<t.__k.length;e++)if((n=t.__k[e])!=null&&n.__e!=null)return n.__e;return typeof t.type=="function"?kt(t):null}function cu(t){if(t.__P&&t.__d){var e=t.__v,n=e.__e,a=[],i=[],o=Ze({},e);o.__v=e.__v+1,te.vnode&&te.vnode(o),Xr(t.__P,o,e,t.__n,t.__P.namespaceURI,32&e.__u?[n]:null,a,n??kt(e),!!(32&e.__u),i),o.__v=e.__v,o.__.__k[o.__i]=o,no(a,o,i),e.__e=e.__=null,o.__e!=n&&Zi(o)}}function Zi(t){if((t=t.__)!=null&&t.__c!=null)return t.__e=t.__c.base=null,t.__k.some(function(e){if(e!=null&&e.__e!=null)return t.__e=t.__c.base=e.__e}),Zi(t)}function qr(t){(!t.__d&&(t.__d=!0)&&ct.push(t)&&!zn.__r++||Wi!=te.debounceRendering)&&((Wi=te.debounceRendering)||Ki)(zn)}function zn(){try{for(var t,e=1;ct.length;)ct.length>e&&ct.sort(Ji),t=ct.shift(),e=ct.length,cu(t)}finally{ct.length=zn.__r=0}}function Qi(t,e,n,a,i,o,s,l,c,u,f){var m,d,g,h,v,k,y=a&&a.__k||Dn,x=e.length;for(c=uu(n,e,y,c,x),m=0;m<x;m++)(g=n.__k[m])!=null&&(d=g.__i!=-1&&y[g.__i]||Ln,g.__i=m,k=Xr(t,g,d,i,o,s,l,c,u,f),h=g.__e,g.ref&&d.ref!=g.ref&&(d.ref&&Vr(d.ref,null,g),f.push(g.ref,g.__c||h,g)),v==null&&h!=null&&(v=h),4&g.__u?(c=eo(g,c,t),d.__e&&(d.__e=null)):typeof g.type=="function"&&k!==void 0?c=k:h&&(c=h.nextSibling),g.__u&=-7);return n.__e=v,c}function uu(t,e,n,a,i){var o,s,l,c,u,f=n.length,m=f,d=0;for(t.__k=new Array(i),o=0;o<i;o++)(s=e[o])!=null&&typeof s!="boolean"&&typeof s!="function"?(typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?s=t.__k[o]=Mn(null,s,null,null,null):On(s)?s=t.__k[o]=Mn(N,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=t.__k[o]=Mn(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):t.__k[o]=s,c=o+d,s.__=t,s.__b=t.__b+1,l=null,(u=s.__i=du(s,n,c,m))!=-1&&(m--,(l=n[u])&&(l.__u|=2)),l==null||l.__v==null?(u==-1&&(i>f?d--:i<f&&d++),typeof s.type!="function"&&(s.__u|=4)):u!=c&&(u==c-1?d--:u==c+1?d++:(u>c?d--:d++,s.__u|=4))):t.__k[o]=null;if(m)for(o=0;o<f;o++)(l=n[o])!=null&&(2&l.__u)==0&&(l.__e==a&&(a=kt(l)),ao(l,l));return a}function eo(t,e,n){var a,i;if(typeof t.type=="function"){for(a=t.__k,i=0;a&&i<a.length;i++)a[i]&&(a[i].__=t,e=eo(a[i],e,n));return e}t.__e!=e&&(e&&t.type&&!e.parentNode&&(e=kt(t)),e=n.insertBefore(t.__e,e||null));do e=e&&e.nextSibling;while(e!=null&&e.nodeType==8);return e}function du(t,e,n,a){var i,o,s,l=t.key,c=t.type,u=e[n],f=u!=null&&(2&u.__u)==0;if(u===null&&l==null||f&&l==u.key&&c==u.type)return n;if(a>(f?1:0)){for(i=n-1,o=n+1;i>=0||o<e.length;)if((u=e[s=i>=0?i--:o++])!=null&&(2&u.__u)==0&&l==u.key&&c==u.type)return s}return-1}function ji(t,e,n){e[0]=="-"?t.setProperty(e,n??""):t[e]=n==null?"":typeof n!="number"||su.test(e)?n:n+"px"}function En(t,e,n,a,i){var o,s;e:if(e=="style")if(typeof n=="string")t.style.cssText=n;else{if(typeof a=="string"&&(t.style.cssText=a=""),a)for(e in a)n&&e in n||ji(t.style,e,"");if(n)for(e in n)a&&n[e]==a[e]||ji(t.style,e,n[e])}else if(e[0]=="o"&&e[1]=="n")o=e!=(e=e.replace(Yi,"$1")),s=e.toLowerCase(),e=s in t||e=="onFocusOut"||e=="onFocusIn"?s.slice(2):e.slice(2),t.l||(t.l={}),t.l[e+o]=n,n?a?n[en]=a[en]:(n[en]=Wr,t.addEventListener(e,o?Hr:Ur,o)):t.removeEventListener(e,o?Hr:Ur,o);else{if(i=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in t)try{t[e]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&e[4]!="-"?t.removeAttribute(e):t.setAttribute(e,e=="popover"&&n==1?"":n))}}function Xi(t){return function(e){if(this.l){var n=this.l[e.type+t];if(e[Rn]==null)e[Rn]=Wr++;else if(e[Rn]<n[en])return;return n(te.event?te.event(e):e)}}}function Xr(t,e,n,a,i,o,s,l,c,u){var f,m,d,g,h,v,k,y,x,w,C,R,U,J,H,V,ee=e.type;if(e.constructor!==void 0)return null;128&n.__u&&(c=!!(32&n.__u),o=[l=e.__e=n.__e]),(f=te.__b)&&f(e);e:if(typeof ee=="function"){m=s.length;try{if(x=e.props,w=ee.prototype&&ee.prototype.render,C=(f=ee.contextType)&&a[f.__c],R=f?C?C.props.value:f.__:a,n.__c?y=(d=e.__c=n.__c).__=d.__E:(w?e.__c=d=new ee(x,R):(e.__c=d=new In(x,R),d.constructor=ee,d.render=fu),C&&C.sub(d),d.state||(d.state={}),d.__n=a,g=d.__d=!0,d.__h=[],d._sb=[]),w&&d.__s==null&&(d.__s=d.state),w&&ee.getDerivedStateFromProps!=null&&(d.__s==d.state&&(d.__s=Ze({},d.__s)),Ze(d.__s,ee.getDerivedStateFromProps(x,d.__s))),h=d.props,v=d.state,d.__v=e,g)w&&ee.getDerivedStateFromProps==null&&d.componentWillMount!=null&&d.componentWillMount(),w&&d.componentDidMount!=null&&d.__h.push(d.componentDidMount);else{if(w&&ee.getDerivedStateFromProps==null&&x!==h&&d.componentWillReceiveProps!=null&&d.componentWillReceiveProps(x,R),e.__v==n.__v||!d.__e&&d.shouldComponentUpdate!=null&&d.shouldComponentUpdate(x,d.__s,R)===!1){e.__v!=n.__v&&(d.props=x,d.state=d.__s,d.__d=!1),e.__e=n.__e,e.__k=n.__k,e.__k.some(function(z){z&&(z.__=e)}),Dn.push.apply(d.__h,d._sb),d._sb=[],d.__h.length&&s.push(d),l=kt(n);break e}d.componentWillUpdate!=null&&d.componentWillUpdate(x,d.__s,R),w&&d.componentDidUpdate!=null&&d.__h.push(function(){d.componentDidUpdate(h,v,k)})}if(d.context=R,d.props=x,d.__P=t,d.__e=!1,U=te.__r,J=0,w)d.state=d.__s,d.__d=!1,U&&U(e),f=d.render(d.props,d.state,d.context),Dn.push.apply(d.__h,d._sb),d._sb=[];else do d.__d=!1,U&&U(e),f=d.render(d.props,d.state,d.context),d.state=d.__s;while(d.__d&&++J<25);d.state=d.__s,d.getChildContext!=null&&(a=Ze(Ze({},a),d.getChildContext())),w&&!g&&d.getSnapshotBeforeUpdate!=null&&(k=d.getSnapshotBeforeUpdate(h,v)),H=f!=null&&f.type===N&&f.key==null?ro(f.props.children):f,l=Qi(t,On(H)?H:[H],e,n,a,i,o,s,l,c,u),d.base=e.__e,e.__u&=-161,d.__h.length&&s.push(d),y&&(d.__E=d.__=null)}catch(z){if(s.length=m,e.__v=null,c||o!=null){if(z.then){for(e.__u|=c?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;o!=null&&(o[o.indexOf(l)]=null),e.__e=l}else if(o!=null)for(V=o.length;V--;)jr(o[V])}else e.__e=n.__e;e.__k==null&&(e.__k=n.__k||[]),z.then||to(e),te.__e(z,e,n)}}else o==null&&e.__v==n.__v?(e.__k=n.__k,e.__e=n.__e):l=e.__e=pu(n.__e,e,n,a,i,o,s,c,u);return(f=te.diffed)&&f(e),128&e.__u?void 0:l}function to(t){t&&(t.__c&&(t.__c.__e=!0),t.__k&&t.__k.some(to))}function no(t,e,n){for(var a=0;a<n.length;a++)Vr(n[a],n[++a],n[++a]);te.__c&&te.__c(e,t),t.some(function(i){try{t=i.__h,i.__h=[],t.some(function(o){o.call(i)})}catch(o){te.__e(o,i.__v)}})}function ro(t){return typeof t!="object"||t==null||t.__b>0?t:On(t)?t.map(ro):t.constructor!==void 0?null:Ze({},t)}function pu(t,e,n,a,i,o,s,l,c){var u,f,m,d,g,h,v,k=n.props||Ln,y=e.props,x=e.type;if(x=="svg"?i="http://www.w3.org/2000/svg":x=="math"?i="http://www.w3.org/1998/Math/MathML":i||(i="http://www.w3.org/1999/xhtml"),o!=null){for(u=0;u<o.length;u++)if((g=o[u])&&"setAttribute"in g==!!x&&(x?g.localName==x:g.nodeType==3)){t=g,o[u]=null;break}}if(t==null){if(x==null)return document.createTextNode(y);t=document.createElementNS(i,x,y.is&&y),l&&(te.__m&&te.__m(e,o),l=!1),o=null}if(x==null)k===y||l&&t.data==y||(t.data=y);else{if(o=x=="textarea"&&y.defaultValue!=null?null:o&&Nn.call(t.childNodes),!l&&o!=null)for(k={},u=0;u<t.attributes.length;u++)k[(g=t.attributes[u]).name]=g.value;for(u in k)g=k[u],u=="dangerouslySetInnerHTML"?m=g:u=="children"||u in y||u=="value"&&"defaultValue"in y||u=="checked"&&"defaultChecked"in y||En(t,u,null,g,i);for(u in y)g=y[u],u=="children"?d=g:u=="dangerouslySetInnerHTML"?f=g:u=="value"?h=g:u=="checked"?v=g:l&&typeof g!="function"||k[u]===g||En(t,u,g,k[u],i);if(f)l||m&&(f.__html==m.__html||f.__html==t.innerHTML)||(t.innerHTML=f.__html),e.__k=[];else if(m&&(t.innerHTML=""),Qi(e.type=="template"?t.content:t,On(d)?d:[d],e,n,a,x=="foreignObject"?"http://www.w3.org/1999/xhtml":i,o,s,o?o[0]:n.__k&&kt(n,0),l,c),o!=null)for(u=o.length;u--;)jr(o[u]);l&&x!="textarea"||(u="value",x=="progress"&&h==null?t.removeAttribute("value"):h!=null&&(h!==t[u]||x=="progress"&&!h||x=="option"&&h!=k[u])&&En(t,u,h,k[u],i),u="checked",v!=null&&v!=t[u]&&En(t,u,v,k[u],i))}return t}function Vr(t,e,n){try{if(typeof t=="function"){var a=typeof t.__u=="function";a&&t.__u(),a&&e==null||(t.__u=t(e))}else t.current=e}catch(i){te.__e(i,n)}}function ao(t,e,n){var a,i;if(te.unmount&&te.unmount(t),(a=t.ref)&&(a.current&&a.current!=t.__e||Vr(a,null,e)),(a=t.__c)!=null){if(a.componentWillUnmount)try{a.componentWillUnmount()}catch(o){te.__e(o,e)}a.base=a.__P=a.__n=null}if(a=t.__k)for(i=0;i<a.length;i++)a[i]&&ao(a[i],e,n||typeof t.type!="function");n||jr(t.__e),t.__c=t.__=t.__e=void 0}function fu(t,e,n){return this.constructor(t,n)}function ut(t,e,n){var a,i,o,s;e==document&&(e=document.documentElement),te.__&&te.__(t,e),i=(a=typeof n=="function")?null:n&&n.__k||e.__k,o=[],s=[],Xr(e,t=(!a&&n||e).__k=lu(N,null,[t]),i||Ln,Ln,e.namespaceURI,!a&&n?[n]:i?null:e.firstChild?Nn.call(e.childNodes):null,o,!a&&n?n:i?i.__e:e.firstChild,a,s),no(o,t,s),t.props.children=null}function io(t){function e(n){var a,i;return this.getChildContext||(a=new Set,(i={})[e.__c]=this,this.getChildContext=function(){return i},this.componentWillUnmount=function(){a=null},this.shouldComponentUpdate=function(o){this.props.value!=o.value&&a.forEach(function(s){s.__e=!0,qr(s)})},this.sub=function(o){a.add(o);var s=o.componentWillUnmount;o.componentWillUnmount=function(){a&&a.delete(o),s&&s.call(o)}}),n.children}return e.__c="__cC"+Gi++,e.__=t,e.Provider=e.__l=(e.Consumer=function(n,a){return n.children(a)}).contextType=e,e}Nn=Dn.slice,te={__e:function(t,e,n,a){for(var i,o,s;e=e.__;)if((i=e.__c)&&!i.__)try{if((o=i.constructor)&&o.getDerivedStateFromError!=null&&(i.setState(o.getDerivedStateFromError(t)),s=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(t,a||{}),s=i.__d),s)return i.__E=i}catch(l){t=l}throw t}},Vi=0,ou=function(t){return t!=null&&t.constructor===void 0},In.prototype.setState=function(t,e){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=Ze({},this.state),typeof t=="function"&&(t=t(Ze({},n),this.props)),t&&Ze(n,t),t!=null&&this.__v&&(e&&this._sb.push(e),qr(this))},In.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),qr(this))},In.prototype.render=N,ct=[],Ki=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ji=function(t,e){return t.__v.__b-e.__v.__b},zn.__r=0,$r=Math.random().toString(8),Rn="__d"+$r,en="__a"+$r,Yi=/(PointerCapture)$|Capture$/i,Wr=0,Ur=Xi(!1),Hr=Xi(!0),Gi=0;var dt,ie,Kr,oo,tn=0,go=[],me=te,so=me.__b,lo=me.__r,co=me.diffed,uo=me.__c,po=me.unmount,fo=me.__;function $t(t,e){me.__h&&me.__h(ie,t,tn||e),tn=0;var n=ie.__H||(ie.__H={__:[],__h:[]});return t>=n.__.length&&n.__.push({}),n.__[t]}function S(t){return tn=1,mu(xo,t)}function mu(t,e,n){var a=$t(dt++,2);if(a.t=t,!a.__c&&(a.__=[n?n(e):xo(void 0,e),function(l){var c=a.__N?a.__N[0]:a.__[0],u=a.t(c,l);c!==u&&(a.__N=[u,a.__[1]],a.__c.setState({}))}],a.__c=ie,!ie.__f)){var i=function(l,c,u){if(!a.__c.__H)return!0;var f=!1,m=a.__c.props!==l;if(a.__c.__H.__.some(function(g){if(g.__N){f=!0;var h=g.__[0];g.__=g.__N,g.__N=void 0,h!==g.__[0]&&(m=!0)}}),o){var d=o.call(this,l,c,u);return f?d||m:d}return!f||m};ie.__f=!0;var o=ie.shouldComponentUpdate,s=ie.componentWillUpdate;ie.componentWillUpdate=function(l,c,u){if(this.__e){var f=o;o=void 0,i(l,c,u),o=f}s&&s.call(this,l,c,u)},ie.shouldComponentUpdate=i}return a.__N||a.__}function X(t,e){var n=$t(dt++,3);!me.__s&&Gr(n.__H,e)&&(n.__=t,n.u=e,ie.__H.__h.push(n))}function ho(t,e){var n=$t(dt++,4);!me.__s&&Gr(n.__H,e)&&(n.__=t,n.u=e,ie.__h.push(n))}function W(t){return tn=5,Ve(function(){return{current:t}},[])}function Ve(t,e){var n=$t(dt++,7);return Gr(n.__H,e)&&(n.__=t(),n.__H=e,n.__h=t),n.__}function pt(t,e){return tn=8,Ve(function(){return t},e)}function bo(t){var e=ie.context[t.__c],n=$t(dt++,9);return n.c=t,e?(n.__==null&&(n.__=!0,e.sub(ie)),e.props.value):t.__}function Yr(){var t=$t(dt++,11);if(!t.__){for(var e=ie.__v;e!==null&&!e.__m&&e.__!==null;)e=e.__;var n=e.__m||(e.__m=[0,0]);t.__="P"+n[0]+"-"+n[1]++}return t.__}function gu(){for(var t;t=go.shift();){var e=t.__H;if(t.__P&&e)try{e.__h.some(Bn),e.__h.some(Jr),e.__h=[]}catch(n){e.__h=[],me.__e(n,t.__v)}}}me.__b=function(t){ie=null,so&&so(t)},me.__=function(t,e){t&&e.__k&&e.__k.__m&&(t.__m=e.__k.__m),fo&&fo(t,e)},me.__r=function(t){lo&&lo(t),dt=0;var e=(ie=t.__c).__H;e&&(Kr===ie?(e.__h=[],ie.__h=[],e.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(e.__h.some(Bn),e.__h.some(Jr),e.__h=[],dt=0)),Kr=ie},me.diffed=function(t){co&&co(t);var e=t.__c;e&&e.__H&&(e.__H.__h.length&&(go.push(e)!==1&&oo===me.requestAnimationFrame||((oo=me.requestAnimationFrame)||hu)(gu)),e.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),Kr=ie=null},me.__c=function(t,e){e.some(function(n){try{n.__h.some(Bn),n.__h=n.__h.filter(function(a){return!a.__||Jr(a)})}catch(a){e.some(function(i){i.__h&&(i.__h=[])}),e=[],me.__e(a,n.__v)}}),uo&&uo(t,e)},me.unmount=function(t){po&&po(t);var e,n=t.__c;n&&n.__H&&(n.__H.__.some(function(a){try{Bn(a)}catch(i){e=i}}),n.__H=void 0,e&&me.__e(e,n.__v))};var mo=typeof requestAnimationFrame=="function";function hu(t){var e,n=function(){clearTimeout(a),mo&&cancelAnimationFrame(e),setTimeout(t)},a=setTimeout(n,35);mo&&(e=requestAnimationFrame(n))}function Bn(t){var e=ie,n=t.__c;typeof n=="function"&&(t.__c=void 0,n()),ie=e}function Jr(t){var e=ie;t.__c=t.__(),ie=e}function Gr(t,e){return!t||t.length!==e.length||e.some(function(n,a){return n!==t[a]})}function xo(t,e){return typeof e=="function"?e(t):e}var j=()=>typeof window<"u"&&window.tangu||{};function Fn(t){let e=typeof t?.status=="number"?t.status:0;if(e>=200&&e<300)return{ok:!0,status:e,data:t?.json??null};let n=t?.json&&typeof t.json=="object"?t.json:null,a=typeof n?.error=="string"?n.error:typeof n?.code=="string"?n.code:null,i=typeof n?.detail=="string"?n.detail:typeof n?.message=="string"?n.message:null;return{ok:!1,status:e,code:a,detail:i,transport:typeof t?.error=="string"?t.error:null}}var Zr=t=>({ok:!1,status:0,code:null,detail:null,transport:t});async function M(t,e={}){let n=j().cloudFetch;if(!n)return Zr("no_bridge");try{return Fn(await n({path:t,...e}))}catch(a){return Zr(String(a?.message||a))}}async function $n(t,e){if(!t)return e();try{return Fn(await t())}catch(n){return Zr(String(n?.message||n))}}var wt=t=>t.status===401&&(t.transport==="not_signed_in"||t.code===null&&t.detail===null&&t.transport===null);function $e(t){return String(t?.message??t??"").replace(/^Error invoking remote method '[^']*':\s*/,"").replace(/^(?:[A-Za-z]*Error):\s*/,"").trim()}async function Ut(t,e,n){let a=j().cloudInvoke;if(!a)return!1;let i=t==="membership"&&e?n?[t,e,n]:[t,e]:[t];try{return!!(await a("auth:openPayCenter",...i))?.ok}catch{return!1}}async function _t(t){let e=j().openAccountCenter;if(!e)return!1;try{return!!(await e(t)).ok}catch{return!1}}var bu=0;function r(t,e,n,a,i,o){e||(e={});var s,l,c=e;if("ref"in c)for(l in c={},e)l=="ref"?s=e[l]:c[l]=e[l];var u={type:t,props:c,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--bu,__i:-1,__u:0,__source:i,__self:o};if(typeof t=="function"&&(s=t.defaultProps))for(l in s)c[l]===void 0&&(c[l]=s[l]);return te.vnode&&te.vnode(u),u}var xu={user:"M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M4 20c.8-3.5 4-5.5 8-5.5s7.2 2 8 5.5",backpack:"M9 5V3h6v2 M6 8a6 6 0 0 1 12 0v12H6V8Z M9 13h6v5H9z M3 11h3v7H3z M18 11h3v7h-3 M10 8h4",gauge:"M4 16a8 8 0 1 1 16 0 M12 16l4-5 M12 16h.01",shield:"M12 3l7 3v5c0 4.5-3 8.2-7 10-4-1.8-7-5.5-7-10V6l7-3Z",chart:"M4 20V10 M10 20V4 M16 20v-7 M21 20H3",message:"M5 4h14a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-7l-5 4v-4H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Z",card:"M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Z M3 10h18 M7 15h4",coins:"M9 11a5 5 0 1 0 0-10 5 5 0 0 0 0 10Z M15.5 9.2A5 5 0 1 1 9.8 16",clock:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M12 7v5l3 2",gift:"M4 11h16v9H4z M3 7h18v4H3z M12 7v13 M12 7c-1.5-3-5-3-5-1s3 1 5 1c2 0 5 1 5-1s-3.5-2-5 1",key:"M8 15a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M11 11h10 M17 11v3 M20 11v2",laptop:"M5 5h14v10H5z M3 19h18",alert:"M12 4l9 16H3l9-16Z M12 10v4 M12 17h.01",external:"M14 4h6v6 M20 4l-9 9 M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5",copy:"M9 9h11v11H9z M5 15H4V4h11v1",check:"M5 12.5l4.5 4.5L19 7.5",chevron:"M9 6l6 6-6 6",back:"M15 6l-6 6 6 6",pencil:"M4 20h4L19 9l-4-4L4 16v4Z M13.5 6.5l4 4",plus:"M12 5v14 M5 12h14",refresh:"M20 11a8 8 0 0 0-14.3-4.9L4 8 M4 4v4h4 M4 13a8 8 0 0 0 14.3 4.9L20 16 M20 20v-4h-4",phone:"M8 3h8a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M11 18h2",mail:"M4 6h16v12H4z M4 7l8 6 8-6",image:"M4 5h16v14H4z M4 16l5-5 4 4 3-3 4 4 M15.5 9.5h.01",x:"M6 6l12 12 M18 6L6 18",logout:"M15 4h4v16h-4 M10 8l-4 4 4 4 M6 12h10",globe:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M3 12h18 M12 3c2.5 2.6 3.8 5.6 3.8 9s-1.3 6.4-3.8 9c-2.5-2.6-3.8-5.6-3.8-9S9.5 5.6 12 3Z",lock:"M6 11h12v9H6z M8.5 11V8a3.5 3.5 0 0 1 7 0v3",palette:"M12 3a9 9 0 0 0 0 18c1.2 0 2-.8 2-1.9 0-.5-.2-.9-.5-1.3-.3-.4-.5-.8-.5-1.3 0-1 .8-1.8 1.8-1.8H17a4 4 0 0 0 4-4c0-4.3-4-7.7-9-7.7Z M7.5 12.5h.01 M9 8.5h.01 M14 7.5h.01",calendar:"M5 5h14v15H5z M5 10h14 M9 3v4 M15 3v4",link:"M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1 M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1",flame:"M12 21a6 6 0 0 0 6-6c0-2.5-1.4-4.4-3-6-.3 1.5-1 2.5-2 3 .3-3-1-6-3.5-8 .2 3-1 4.8-2.2 6.3C6.4 11.5 6 13.2 6 15a6 6 0 0 0 6 6Z",trophy:"M8 4h8v6a4 4 0 0 1-8 0V4Z M8 6H5v1a3 3 0 0 0 3 3 M16 6h3v1a3 3 0 0 1-3 3 M12 14v4 M8.5 20h7",sprout:"M12 20v-8 M12 12c0-3-2-5-6-5 0 3.5 2 5 6 5Z M12 14c0-3 2-5 6-5 0 3.5-2 5-6 5Z",eye:"M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12Z M12 14.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z",download:"M12 4v11 M7.5 11l4.5 4.5 4.5-4.5 M5 20h14",up:"M12 19V5 M6 11l6-6 6 6",down:"M12 5v14 M6 13l6 6 6-6",sparkles:"M12 4l1.8 4.7 4.7 1.8-4.7 1.8L12 17l-1.8-4.7-4.7-1.8 4.7-1.8L12 4Z M18.5 15.5v4 M16.5 17.5h4",bot:"M6 9h12v10H6z M12 9V5 M12 4.5h.01 M9.5 13.5h.01 M14.5 13.5h.01 M3.5 13v3 M20.5 13v3",box:"M12 3l8 4.5v9L12 21l-8-4.5v-9L12 3Z M4 7.5l8 4.5 8-4.5 M12 12v9",grid:"M4 4h7v7H4z M13 4h7v7h-7z M4 13h7v7H4z M13 13h7v7h-7z",note:"M6 3h9l4 4v14H6z M15 3v4h4 M9 12h6 M9 16h4"};function E({name:t,size:e=14,class:n}){return r("svg",{class:n,width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",focusable:"false",children:r("path",{d:xu[t]})})}function St({size:t=12}){return r("svg",{class:"spin",width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","aria-hidden":"true",focusable:"false",children:r("path",{d:"M21 12a9 9 0 1 1-6.2-8.56"})})}var vu={"sub.mine":"\u6211\u7684\u6295\u7A3F","page.submission":"\u63D2\u4EF6\u6295\u7A3F","sub.desc":"\u7BA1\u7406\u4F60\u6295\u7A3F\u7684\u5185\u5BB9\u3001\u5BA1\u6838\u7ED3\u679C\u548C\u7248\u672C\u66F4\u65B0\u3002","sub.new":"\u65B0\u6295\u7A3F","sub.refresh":"\u5237\u65B0","sub.empty":"\u8FD8\u6CA1\u6709\u6295\u7A3F","sub.emptyHint":"\u628A\u4F60\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001Agent \u6216 Space \u5206\u4EAB\u5230\u5E94\u7528\u5E02\u573A\u3002","sub.name":"\u540D\u79F0","sub.summary":"\u7B80\u4ECB","sub.type":"\u5185\u5BB9\u7C7B\u578B","sub.source":"\u53D1\u5E03\u6E20\u9053","sub.type.skill":"\u6280\u80FD","sub.type.agent":"Agent","sub.type.plugin":"\u63D2\u4EF6","sub.type.space":"Space","sub.type.theme":"\u4E3B\u9898","sub.type.amadeus_plugin":"Amadeus \u63D2\u4EF6","sub.pending":"\u5F85\u5BA1\u6838","sub.approved":"\u5DF2\u4E0A\u67B6","sub.rejected":"\u5DF2\u9A73\u56DE","sub.pendingVersion":"v{version} \u66F4\u65B0\u5F85\u5BA1\u6838","sub.rejectedVersion":"v{version} \u66F4\u65B0\u5DF2\u9A73\u56DE","sub.update":"\u63D0\u4EA4\u65B0\u7248\u672C","sub.updateTitle":"\u66F4\u65B0 {name}","sub.submit":"\u63D0\u4EA4\u5BA1\u6838","sub.submitted":"\u6295\u7A3F\u5DF2\u63D0\u4EA4\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u663E\u793A\u5728\u6211\u7684\u6295\u7A3F\u4E2D\u3002","sub.updated":"\u65B0\u7248\u5DF2\u63D0\u4EA4\u5BA1\u6838\uFF0C\u5DF2\u4E0A\u67B6\u7248\u672C\u4ECD\u53EF\u4E0B\u8F7D\u3002","sub.repo":"GitHub \u516C\u5F00\u4ED3\u5E93","sub.npm":"npm \u516C\u5F00\u5305","sub.repoHint":"\u4ECE\u4ED3\u5E93\u8BFB\u53D6 README \u548C Release\uFF1B\u4ED3\u5E93\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.npmHint":"\u4ECE npm \u8BFB\u53D6\u5305\u4FE1\u606F\uFF1B\u5BF9\u5E94\u516C\u5F00\u4ED3\u5E93\u7684\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.reviewHint":"\u65B0\u7248\u672C\u9700\u91CD\u65B0\u5BA1\u6838\uFF0C\u5BA1\u6838\u901A\u8FC7\u540E\u624D\u5411\u7528\u6237\u63D0\u4F9B\u3002\u4F60\u7684 Forsion \u8D26\u53F7\u7528\u4E8E\u7BA1\u7406\u6295\u7A3F\u3002","sub.remoteUpdate":"\u5728\u539F\u6E20\u9053\u53D1\u5E03\u65B0\u7248\u672C\u540E\uFF0C\u7531\u7BA1\u7406\u5458\u91CD\u65B0\u5BA1\u6838\u3002","sub.zip":"ZIP \u5305","sub.zipHint":"\u6700\u5927 50 MB\uFF0C\u5305\u5185\u5305\u542B\u5BF9\u5E94\u7684 manifest \u4E0E\u5165\u53E3\u6587\u4EF6\u3002","sub.version":"\u7248\u672C\u53F7","sub.versionHint":"\u65B0\u7248\u987B\u9AD8\u4E8E\u5F53\u524D\u7248\u672C\uFF0C\u5E76\u4E0E manifest \u4E2D\u7684\u7248\u672C\u4E00\u81F4\u3002","sub.readme":"\u8BF4\u660E\u6587\u6863\uFF08Markdown\uFF09","sub.keep":"\u7559\u7A7A\u4FDD\u6301\u4E0D\u53D8","sub.filter":"\u6309\u72B6\u6001\u7B5B\u9009","sub.all":"\u5168\u90E8","sub.noResults":"\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u6295\u7A3F","sub.downloads":"{n} \u6B21\u4E0B\u8F7D","sub.errName":"\u8BF7\u586B\u5199\u540D\u79F0\u3002","sub.errSource":"\u8BF7\u586B\u5199\u516C\u5F00\u4ED3\u5E93\u5730\u5740\u6216 npm \u5305\u540D\u3002","sub.errZip":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.errLarge":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.errVersion":"\u8BF7\u586B\u5199\u7248\u672C\u53F7\u3002","sub.err.market_npm_invalid":"npm \u5305\u4E0D\u5B58\u5728\u6216\u4E0D\u7B26\u5408\u63D2\u4EF6\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_npm_source":"\u8BF7\u901A\u8FC7 npm \u53D1\u5E03\u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_github_source":"\u8BF7\u5728 GitHub \u53D1\u5E03 Release \u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_not_found":"\u6295\u7A3F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","sub.err.market_zip_required":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.err.market_zip_invalid":"ZIP \u5305\u7ED3\u6784\u4E0D\u7B26\u5408\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_zip_too_large":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.err.market_version_required":"\u8BF7\u586B\u5199\u7248\u672C\u53F7\u3002","sub.err.market_version_invalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u7248\u672C\u53F7\u3002","sub.err.market_version_mismatch":"\u7248\u672C\u53F7\u4E0E\u5305\u5185 manifest \u4E0D\u4E00\u81F4\u3002","sub.err.market_version_not_newer":"\u65B0\u7248\u987B\u9AD8\u4E8E\u5F53\u524D\u5DF2\u4E0A\u67B6\u7248\u672C\u3002","sub.err.market_icon_invalid":"\u56FE\u6807\u5E94\u4E3A 64\u2013512 px \u7684\u6B63\u65B9\u5F62 PNG\u3002","sub.err.market_duplicate":"\u8BE5\u5185\u5BB9\u5DF2\u6709\u6295\u7A3F\uFF0C\u8BF7\u7BA1\u7406\u73B0\u6709\u6295\u7A3F\u3002","sub.err.market_update_pending":"\u5DF2\u6709\u65B0\u7248\u7B49\u5F85\u5BA1\u6838\uFF0C\u8BF7\u5148\u7B49\u5F85\u5BA1\u6838\u7ED3\u679C\u3002","sub.err.market_stale":"\u6295\u7A3F\u5DF2\u53D1\u751F\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","page.account":"\u8D26\u53F7","page.profile":"\u4E2A\u4EBA\u4E3B\u9875","page.quota":"\u989D\u5EA6\u4E0E\u79EF\u5206","page.backpack":"\u80CC\u5305","page.security":"\u5B89\u5168","page.usage":"\u7528\u91CF\u8BB0\u5F55","page.feedback":"\u53CD\u9988","store.group":"\u4F1A\u5458\u4E0E\u79EF\u5206","store.membership":"\u4F1A\u5458","store.membership.desc":"\u5347\u7EA7\u6863\u4F4D\uFF0C\u83B7\u5F97\u66F4\u591A\u6BCF\u65E5\u4E0E\u6BCF\u5468\u989D\u5EA6","store.points":"\u79EF\u5206","store.points.desc":"\u5145\u503C\u79EF\u5206\uFF0C\u7528\u6765\u5151\u6362\u7269\u54C1","store.items":"\u7269\u54C1","store.items.desc":"\u7528\u79EF\u5206\u5151\u6362\u7684\u7269\u54C1\uFF0C\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.status":"\u6863\u4F4D\u4E0E\u79EF\u5206","store.tier":"\u5F53\u524D\u6863\u4F4D","store.balance":"\u79EF\u5206\u4F59\u989D","store.choosePlan":"\u9009\u62E9\u6863\u4F4D","store.payHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u56DE\u5230\u5E94\u7528\u540E\u81EA\u52A8\u5237\u65B0","store.payOff":"\u6682\u65F6\u4E0D\u80FD\u8D2D\u4E70","store.period":"\u4ED8\u8D39\u5468\u671F","store.period.monthly":"\u6708\u4ED8","store.period.quarterly":"\u5B63\u4ED8","store.period.yearly":"\u5E74\u4ED8","store.per.monthly":"/ \u6708","store.per.quarterly":"/ \u5B63","store.per.yearly":"/ \u5E74","store.currentTier":"\u5F53\u524D\u6863\u4F4D","store.pay":"\u53BB\u652F\u4ED8","store.payPrice":"{price} \u53BB\u652F\u4ED8","store.noPlans":"\u6682\u65F6\u6CA1\u6709\u53EF\u9009\u7684\u6863\u4F4D","store.packs":"\u79EF\u5206\u5305","store.packsHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u4ED8\u6B3E\u540E\u79EF\u5206\u5373\u65F6\u5230\u8D26","store.noPacks":"\u6682\u65F6\u6CA1\u6709\u79EF\u5206\u5305","store.kind.pack":"\u79EF\u5206\u5305","store.kind.card":"\u9053\u5177","store.kind.code":"\u5151\u6362\u7801","store.kind.item":"\u7269\u54C1","store.nPoints":"{n} \u79EF\u5206","store.instant":"\u4ED8\u6B3E\u540E\u5373\u65F6\u5230\u8D26","store.redeemTitle":"\u79EF\u5206\u5151\u6362","store.redeemHint":"\u7528\u79EF\u5206\u5151\u6362\u5728\u5E94\u7528\u5185\u76F4\u63A5\u5B8C\u6210\uFF0C\u5151\u6362\u540E\u7269\u54C1\u8FDB\u80CC\u5305","store.redeem":"{n} \u79EF\u5206\u5151\u6362","store.redeemConfirm":"\u786E\u8BA4\u82B1 {n} \u79EF\u5206","store.redeemed":"\u5DF2\u5151\u6362\uFF0C\u7269\u54C1\u5728\u80CC\u5305\u91CC","store.uncertain":"\u6CA1\u6536\u5230\u7ED3\u679C\u3002\u5148\u5230\u80CC\u5305\u770B\u4E00\u4E0B\u6709\u6CA1\u6709\u5230\u8D26\uFF0C\u518D\u51B3\u5B9A\u8981\u4E0D\u8981\u91CD\u8BD5\u3002","store.soldOut":"\u5DF2\u552E\u7F44","store.left":"\u4F59 {n}","store.toBackpack":"\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.limitReached":"\u5DF2\u8FBE\u8D2D\u4E70\u4E0A\u9650","store.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u6682\u65F6\u4E0D\u80FD\u5151\u6362","store.noItems":"\u6682\u65F6\u6CA1\u6709\u53EF\u5151\u6362\u7684\u7269\u54C1","store.itemsOff":"\u7269\u54C1\u5151\u6362\u6682\u672A\u5F00\u653E","store.openBackpack":"\u6253\u5F00\u80CC\u5305","backpack.desc":"\u5728\u8FD9\u91CC\u67E5\u770B\u4F60\u83B7\u5F97\u7684\u7269\u54C1\uFF0C\u70B9\u51FB\u683C\u5B50\u67E5\u770B\u8BE6\u60C5\u3002","backpack.refresh":"\u5237\u65B0","backpack.total":"\u5171 {n} \u4EF6\u7269\u54C1","backpack.grid":"\u80CC\u5305\u7269\u54C1","backpack.slot":"{name}\uFF0C\u6570\u91CF {n}","backpack.item":"\u7269\u54C1","backpack.empty":"\u80CC\u5305\u8FD8\u662F\u7A7A\u7684","backpack.emptyHint":"\u5151\u6362\u6216\u83B7\u8D60\u7684\u7269\u54C1\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","backpack.select":"\u70B9\u51FB\u7269\u54C1\u67E5\u770B\u8BE6\u60C5","backpack.details":"\u7269\u54C1\u8BE6\u60C5","backpack.quantity":"\u6301\u6709\u6570\u91CF","backpack.acquired":"\u83B7\u5F97\u65F6\u95F4","backpack.source":"\u83B7\u5F97\u65B9\u5F0F","backpack.source.points":"\u79EF\u5206\u5151\u6362","backpack.source.admin":"\u8D60\u9001","backpack.source.reward":"\u5956\u52B1","backpack.source.other":"\u4E91\u7AEF\u53D1\u653E","backpack.consumable":"\u6D88\u8017\u54C1","backpack.voucher":"\u5361\u5238","backpack.getCards":"\u5151\u6362\u91CD\u7F6E\u5361","backpack.manageCards":"\u4F7F\u7528\u6216\u5151\u6362","backpack.reveal":"\u67E5\u770B\u5361\u5BC6","backpack.copyKey":"\u590D\u5236\u5361\u5BC6","backpack.noKey":"\u8FD9\u4EF6\u7269\u54C1\u6CA1\u6709\u5361\u5BC6\u3002","backpack.use":"\u4F7F\u7528","backpack.confirmUse":"\u786E\u8BA4\u4F7F\u7528","backpack.consumeConfirm":"\u4F7F\u7528\u540E\u6D88\u8017 1 \u4EF6\u7269\u54C1\u3002","backpack.collectible":"\u7EAA\u5FF5\u54C1","backpack.effect.points":"+{n} \u79EF\u5206","backpack.effect.cards":"+{n} \u5F20\u91CD\u7F6E\u5361","backpack.effect.quota":"\u91CD\u7F6E\u4ECA\u65E5\u4E0E\u672C\u5468\u989D\u5EA6","backpack.rarity.common":"\u666E\u901A","backpack.rarity.rare":"\u7A00\u6709","backpack.rarity.epic":"\u53F2\u8BD7","backpack.rarity.legendary":"\u4F20\u8BF4","backpack.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u5DF2\u4E0D\u53EF\u7528\uFF0C\u8BF7\u5237\u65B0\u80CC\u5305\u3002","backpack.notUsable":"\u8FD9\u4EF6\u7269\u54C1\u4E0D\u80FD\u4F7F\u7528\u3002","backpack.quotaUnavailable":"\u8BF7\u5148\u4F7F\u7528\u4E91\u7AEF AI \u521D\u59CB\u5316\u989D\u5EA6\uFF0C\u518D\u4F7F\u7528\u8FD9\u4EF6\u7269\u54C1\u3002","common.cancel":"\u53D6\u6D88","common.copied":"\u5DF2\u590D\u5236","common.copyFailed":"\u590D\u5236\u5931\u8D25","common.done":"\u5B8C\u6210","common.loadFailed":"\u6CA1\u80FD\u52A0\u8F7D","common.loadMore":"\u52A0\u8F7D\u66F4\u591A","common.loading":"\u52A0\u8F7D\u4E2D\u2026","common.openInBrowser":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00","common.retry":"\u91CD\u8BD5","common.save":"\u4FDD\u5B58","common.thisWeek":"\u672C\u5468","common.today":"\u4ECA\u65E5","common.unlimited":"\u4E0D\u9650","ann.eyebrow":"FORSION \xB7 \u516C\u544A","ann.close":"\u5173\u95ED","ann.ok":"\u77E5\u9053\u4E86","signin.button":"\u767B\u5F55 Forsion","signin.desc":"\u767B\u5F55 Forsion \u8D26\u53F7\u540E\uFF0C\u53EF\u4EE5\u5728\u8FD9\u91CC\u7BA1\u7406\u8D26\u53F7\u3001\u989D\u5EA6\u3001\u5B89\u5168\u3001\u6295\u7A3F\u4E0E\u53CD\u9988\u3002","signin.pending":"\u7B49\u5F85\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u767B\u5F55\u2026","signin.deviceHint":"\u6D4F\u89C8\u5668\u4F1A\u81EA\u52A8\u6253\u5F00\u767B\u5F55\u9875\uFF1B\u6CA1\u6709\u6253\u5F00\u7684\u8BDD\uFF0C\u7528\u624B\u673A\u626B\u7801\u6216\u6253\u5F00\u4E0B\u9762\u7684\u94FE\u63A5\uFF0C\u5E76\u6838\u5BF9\u9A8C\u8BC1\u7801\u3002","signin.code":"\u9A8C\u8BC1\u7801","signin.openLink":"\u6253\u5F00\u767B\u5F55\u9875","signin.copyLink":"\u590D\u5236\u94FE\u63A5","signin.qrLabel":"\u767B\u5F55\u4E8C\u7EF4\u7801","account.profile.title":"\u4E2A\u4EBA\u8D44\u6599","account.profile.desc":"\u5934\u50CF\u3001\u6635\u79F0\uFF0C\u4EE5\u53CA\u7ED1\u5B9A\u7684\u624B\u673A\u548C\u90AE\u7BB1","account.avatar.change":"\u66F4\u6362\u5934\u50CF","account.avatar.saved":"\u5934\u50CF\u5DF2\u66F4\u65B0","account.nickname.edit":"\u4FEE\u6539\u6635\u79F0","account.nickname.label":"\u6635\u79F0","account.nickname.saved":"\u6635\u79F0\u5DF2\u66F4\u65B0","account.role.admin":"\u7BA1\u7406\u5458","account.username":"\u7528\u6237\u540D {name}","account.contact.phone":"\u624B\u673A","account.contact.email":"\u90AE\u7BB1","account.contact.unbound":"\u672A\u7ED1\u5B9A","account.contact.manage":"\u53BB\u5B89\u5168\u9875\u7BA1\u7406","account.web.open":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u4E2A\u4EBA\u4E2D\u5FC3","account.web.desc":"\u4E91\u7A7A\u95F4\u3001AI \u5927\u8111\u4E0E\u4E3B\u9898\u5728\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7BA1\u7406\u3002","member.title":"\u4F1A\u5458","member.desc":"\u5F53\u524D\u6863\u4F4D\u3001\u65B9\u6848\u4E0E\u5230\u671F\u65E5","member.upgrade":"\u5347\u7EA7\u4F1A\u5458","member.renew":"\u7EED\u8D39","member.freeName":"\u514D\u8D39\u7248","member.freeHint":"\u5347\u7EA7\u4F1A\u5458\u53EF\u4EE5\u83B7\u5F97\u66F4\u591A AI \u989D\u5EA6","member.expires":"{date} \u5230\u671F","member.noExpiry":"\u957F\u671F\u6709\u6548","member.loadFailed":"\u4F1A\u5458\u4FE1\u606F\u6682\u65F6\u62FF\u4E0D\u5230\u3002","local.title":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u8D26\u53F7","local.desc":"\u5728\u767B\u5F55\u8FC7\u7684\u8D26\u53F7\u4E4B\u95F4\u5207\u6362","local.current":"\u5F53\u524D","local.switch":"\u5207\u6362","local.add":"\u767B\u5F55\u5176\u4ED6\u8D26\u53F7","local.signOut":"\u9000\u51FA\u767B\u5F55","local.empty":"\u8FD8\u6CA1\u6709\u4FDD\u5B58\u7684\u8D26\u53F7","local.loadFailed":"\u8D26\u53F7\u5217\u8868\u6682\u65F6\u8BFB\u4E0D\u5230","diag.title":"\u8BCA\u65AD\u6570\u636E","diag.desc":"\u5E2E\u52A9\u6211\u4EEC\u6392\u67E5\u95EE\u9898\u3001\u6539\u8FDB Forsion\u3002\u9ED8\u8BA4\u5173\u95ED\u3002","diag.enable":"\u4E0A\u4F20\u8BCA\u65AD\u6570\u636E","diag.enableDesc":"\u6253\u5F00\u540E\uFF0C\u8FD9\u53F0\u7535\u8111\u4F1A\u5B9A\u671F\u4E0A\u4F20\u4E00\u4EFD Forsion \u4FE1\u606F\u5FEB\u7167\u5230\u4F60\u7684 Forsion \u8D26\u53F7\uFF0CForsion \u56E2\u961F\u53EF\u4EE5\u67E5\u770B\u3002\u591A\u4E45\u4E0A\u4F20\u4E00\u6B21\u7531 Forsion \u56E2\u961F\u8BBE\u5B9A\uFF0C\u9ED8\u8BA4\u6BCF\u5929\u4E00\u6B21\u3002\u968F\u65F6\u53EF\u4EE5\u5173\u95ED\u3002","diag.collected":"\u4F1A\u4E0A\u4F20","diag.item.app":"\u5E94\u7528\u4E0E\u7CFB\u7EDF\u7684\u7248\u672C\uFF0C\u8FD9\u53F0\u7535\u8111\u7684\u540D\u5B57\u3001\u5185\u5B58\u4E0E\u78C1\u76D8\u4F59\u91CF","diag.item.settings":"\u6A21\u578B\u4E0E\u8BED\u97F3\u7684\u9009\u62E9\uFF0C\u540E\u53F0 Agent \u4E0E\u63D2\u4EF6\u8BBE\u7F6E\u91CC\u7684\u5F00\u5173\u548C\u6570\u503C\uFF0CMCP \u670D\u52A1\u4E0E\u6D88\u606F\u901A\u9053\u7684\u540D\u5B57\u548C\u5F00\u5173","diag.item.agents":"Agent \u4E0E\u56E2\u961F\u7684\u914D\u7F6E\uFF08\u540D\u5B57\u3001\u6A21\u578B\u8FD9\u7C7B\u9009\u9879\uFF1B\u63CF\u8FF0\u4E0E\u63D0\u793A\u8BCD\u53EA\u8BB0\u957F\u5EA6\uFF0C\u6B63\u6587\u5F52\u4E0B\u9762\u300C\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55\u300D\u90A3\u4E2A\u5F00\u5173\uFF09","diag.item.plugins":"\u5DF2\u5B89\u88C5\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001\u4E3B\u9898\u548C Space \u7684\u540D\u5B57\u4E0E\u7248\u672C","diag.item.runs":"\u6700\u8FD1 7 \u5929\u7684\u8FD0\u884C\u8BB0\u5F55\uFF1A\u6BCF\u6B21\u8FD0\u884C\u7684\u72B6\u6001\u548C\u62A5\u9519\u539F\u56E0\uFF0C\u6A21\u578B\u8C03\u7528\u4E0E\u5DE5\u5177\u7684\u7528\u91CF\u3001\u8017\u65F6\uFF08\u4E0D\u5E26\u5BF9\u8BDD\u5185\u5BB9\u548C\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\uFF09\uFF0C\u4EE5\u53CA\u5F15\u64CE\u6700\u8FD1\u7684\u8FD0\u884C\u65E5\u5FD7","diag.notCollected":"\u4E0D\u4F1A\u4E0A\u4F20\uFF1A\u4FDD\u5B58\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u767B\u5F55\u51ED\u636E\u4E0E API \u5BC6\u94A5\u3001\u7B14\u8BB0\u6587\u4EF6\u3001Agent \u7684\u8D44\u6599\u5E93\u3001\u63D2\u4EF6\u6570\u636E\u3002","diag.sessions":"\u5305\u542B\u4F1A\u8BDD\u5185\u5BB9","diag.sessionsDesc":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u5BF9\u8BDD\uFF1A\u4F60\u548C Agent \u7684\u6D88\u606F\u6587\u5B57\u3001Agent \u7684\u601D\u8003\u8FC7\u7A0B\u548C\u7528\u5230\u7684\u5DE5\u5177\u540D\uFF0C\u5305\u62EC\u56E2\u961F\u6210\u5458\u3001\u8BA8\u8BBA\u3001\u59D4\u6D3E\u5728\u540E\u53F0\u505A\u7684\u90A3\u90E8\u5206\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\u548C\u9644\u4EF6\u672C\u8EAB\u4E0D\u5E26\uFF1B\u6D88\u606F\u91CC\u51FA\u73B0\u7684\u6587\u4EF6\u540D\u3001Agent \u5728\u56DE\u590D\u91CC\u590D\u8FF0\u7684\u7B14\u8BB0\u6216\u6587\u4EF6\u5185\u5BB9\u4F1A\u5728\u5176\u4E2D\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.memory":"\u5305\u542B Agent \u7684\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55","diag.memoryDesc":"\u6BCF\u4E2A Agent \u7684\u4EBA\u8BBE\uFF08\u5305\u62EC\u914D\u7F6E\u91CC\u7684\u63CF\u8FF0\u548C\u5F00\u53D1\u8005\u6307\u4EE4\uFF09\uFF0C\u548C\u5B83\u81EA\u5DF1\u6512\u4E0B\u6765\u7684\u5185\u5BB9\uFF1A\u8BB0\u5FC6\u548C\u8FD8\u6CA1\u6574\u7406\u7684\u8BB0\u5FC6\u5019\u9009\u3001\u8FDB\u5316\u8BB0\u5F55\u3001\u5199\u7ED9\u4F60\u7684\u534F\u4F5C\u8BF4\u660E\u3001\u6700\u8FD1 7 \u5929\u7684\u65E5\u5FD7\u548C\u8BB0\u5FC6\u6574\u7406\u8BB0\u5F55\uFF0C\u4EE5\u53CA\u9879\u76EE\u8BB0\u5FC6\uFF1B\u8FD8\u6709\u56E2\u961F\u7684\u8BBE\u5B9A\u548C\u4F60\u7684\u7528\u6237\u753B\u50CF\u3002\u8FD9\u4E9B\u662F\u4F60\u7ED9 Agent \u548C\u56E2\u961F\u5199\u7684\u8BBE\u5B9A\uFF0C\u548C Agent \u4ECE\u5BF9\u8BDD\u91CC\u8BB0\u4E0B\u7684\u5173\u4E8E\u4F60\u548C\u4F60\u7684\u5DE5\u4F5C\u7684\u4E8B\u5B9E\uFF0C\u6BCF\u6B21\u4E0A\u4F20\u5B83\u4EEC\u5F53\u524D\u7684\u5185\u5BB9\uFF08\u5F88\u957F\u7684\u4F1A\u622A\u65AD\uFF09\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.activity":"\u5305\u542B\u6D3B\u52A8\u65E5\u5FD7","diag.activityDesc":"\u6D3B\u52A8\u8BB0\u5F55\u91CC\u6709\u5BF9\u8BDD\u5F00\u5934\u7684\u51E0\u5341\u4E2A\u5B57\u548C\u7B14\u8BB0\u6587\u4EF6\u540D\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.last":"\u4E0A\u6B21\u4E0A\u4F20\uFF1A{time}","diag.noUpload":"\u8FD8\u6CA1\u6709\u4E0A\u4F20\u8FC7","diag.freq.hour":"\u6BCF\u5C0F\u65F6\u4E00\u6B21","diag.freq.hours":"\u6BCF {n} \u5C0F\u65F6\u4E00\u6B21","diag.freq.day":"\u6BCF\u5929\u4E00\u6B21","diag.freq.days":"\u6BCF {n} \u5929\u4E00\u6B21","diag.freq.manual":"Forsion \u56E2\u961F\u9700\u8981\u65F6\u624D\u91C7\u96C6","diag.retention":"\u4E91\u7AEF\u4FDD\u7559\u8FD9\u53F0\u7535\u8111\u6700\u8FD1 {n} \u5929\u7684\u5FEB\u7167\u3002\u5173\u95ED\u540E\u4E0D\u518D\u4E0A\u4F20\uFF1B\u5DF2\u4E0A\u4F20\u7684\u5FEB\u7167\u4ECD\u7559\u5728\u4E91\u7AEF\uFF0C\u9700\u8981\u5220\u9664\u53EF\u4EE5\u5728\u300C\u53CD\u9988\u300D\u91CC\u544A\u8BC9\u6211\u4EEC\u3002","diag.uploadNow":"\u7ACB\u5373\u4E0A\u4F20","diag.uploaded":"\u5DF2\u4E0A\u4F20","diag.failed":"\u4E0A\u4F20\u5931\u8D25\uFF1A{reason}","quota.ai.title":"AI \u989D\u5EA6","quota.ai.desc":"\u4ECA\u65E5\u548C\u672C\u5468\u5404\u8FD8\u5269\u591A\u5C11\uFF1B\u7528\u5B8C\u540E\u53EF\u4EE5\u7528\u989D\u5EA6\u91CD\u7F6E\u5361\u6062\u590D","quota.resetDaily":"\u6BCF\u5929 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","quota.resetWeekly":"{date} 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","card.title":"\u989D\u5EA6\u91CD\u7F6E\u5361","card.desc":"\u628A\u4ECA\u65E5\u548C\u672C\u5468\u7684 AI \u989D\u5EA6\u6062\u590D\u5230 100%","card.owned":"\u6301\u6709 {n} \u5F20","card.use":"\u4F7F\u7528\u4E00\u5F20","card.useConfirm":"\u786E\u8BA4\u4F7F\u7528","card.used":"\u5DF2\u4F7F\u7528 1 \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","card.left":"\u8FD8\u5269 {n} \u5F20","card.noneHint":"\u6CA1\u6709\u989D\u5EA6\u91CD\u7F6E\u5361\u4E86\uFF0C\u53EF\u4EE5\u7528\u79EF\u5206\u5151\u6362\u3002","card.exchange":"\u7528\u79EF\u5206\u5151\u6362","card.price":"\u6BCF\u5F20 {price} \u79EF\u5206\uFF0C\u4E00\u6B21 1\u201350 \u5F20","card.count":"\u5151\u6362\u5F20\u6570","card.cost":"\u82B1\u8D39 {cost} \u79EF\u5206","card.countHint":"\u586B 1\u201350","card.exchangeButton":"\u5151\u6362","card.exchangeConfirm":"\u786E\u8BA4\u82B1\u8D39 {cost} \u79EF\u5206","card.exchanged":"\u5DF2\u5151\u6362 {n} \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","points.title":"\u79EF\u5206","points.desc":"\u79EF\u5206\u53EF\u4EE5\u5151\u6362\u989D\u5EA6\u91CD\u7F6E\u5361","points.balance":"\u4F59\u989D","points.balanceFailed":"\u4F59\u989D\u6682\u65F6\u62FF\u4E0D\u5230","points.recharge":"\u5145\u503C\u79EF\u5206","bg.title":"\u540E\u53F0\u989D\u5EA6","bg.desc":"Muse \u4E0E\u81EA\u52A8\u5316\u4F7F\u7528\uFF0C\u548C AI \u989D\u5EA6\u5206\u5F00\u8BA1\u7B97","bg.autoMain":"\u7528\u5B8C\u540E\u6539\u7528 AI \u989D\u5EA6\u7EE7\u7EED","bg.autoMainDesc":"\u5173\u7740\u65F6\uFF0C\u540E\u53F0\u989D\u5EA6\u7528\u5B8C\u540E Muse \u4E0E\u81EA\u52A8\u5316\u4F1A\u6682\u505C","bg.convert":"\u4ECE AI \u989D\u5EA6\u8F6C\u5165","bg.convertDesc":"\u6309 AI \u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B\u8F6C\u5165\uFF0C\u672C\u5468\u671F\u5185\u6709\u6548","bg.convertConfirm":"\u786E\u8BA4\u8F6C\u5165 {pct}%","bg.converted":"\u5DF2\u4ECE AI \u989D\u5EA6\u8F6C\u5165 {pct}%","invite.title":"\u9080\u8BF7\u4E0E\u5151\u6362","invite.desc":"\u9080\u8BF7\u597D\u53CB\u6CE8\u518C\uFF0C\u6216\u5151\u6362\u4F60\u6536\u5230\u7684\u7801","invite.myCode":"\u6211\u7684\u9080\u8BF7\u7801","invite.count":"\u5DF2\u9080\u8BF7 {n} \u4EBA","invite.copyCode":"\u590D\u5236\u9080\u8BF7\u7801","invite.copyLink":"\u590D\u5236\u9080\u8BF7\u94FE\u63A5","invite.loadFailed":"\u9080\u8BF7\u7801\u6682\u65F6\u62FF\u4E0D\u5230","invite.claim":"\u586B\u5199\u9080\u8BF7\u7801","invite.claimDesc":"\u6CE8\u518C\u540E 7 \u5929\u5185\uFF0C\u53EF\u4EE5\u8865\u586B\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimPlaceholder":"\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimSubmit":"\u63D0\u4EA4","invite.claimed":"\u9080\u8BF7\u7801\u5DF2\u751F\u6548","redeem.title":"\u5151\u6362\u7801","redeem.desc":"\u5151\u6362\u79EF\u5206\u3001\u4F1A\u5458\u6216\u5176\u4ED6\u5956\u52B1","redeem.placeholder":"\u8F93\u5165\u5151\u6362\u7801","redeem.submit":"\u5151\u6362","redeem.success":"\u5151\u6362\u6210\u529F","redeem.successWith":"\u5151\u6362\u6210\u529F\uFF1A{what}","redeem.gotPoints":"{n} \u79EF\u5206","redeem.gotMembership":"\u4F1A\u5458","sec.methods.title":"\u767B\u5F55\u65B9\u5F0F","sec.methods.desc":"\u624B\u673A\u548C\u90AE\u7BB1\u53EF\u4EE5\u7528\u6765\u767B\u5F55\u3001\u627E\u56DE\u5BC6\u7801","sec.bind":"\u7ED1\u5B9A","sec.change":"\u66F4\u6362","sec.phone":"\u624B\u673A\u53F7","sec.email":"\u90AE\u7BB1\u5730\u5740","sec.newPhone":"\u65B0\u624B\u673A\u53F7","sec.newEmail":"\u65B0\u90AE\u7BB1\u5730\u5740","sec.phonePlaceholder":"\u4E2D\u56FD\u5927\u9646\u53F7\u7801\u76F4\u63A5\u586B\uFF0C\u5176\u4ED6\u5730\u533A\u5E26 +\u533A\u53F7","sec.emailPlaceholder":"name@example.com","sec.code":"\u9A8C\u8BC1\u7801","sec.codePlaceholder":"\u8F93\u5165\u9A8C\u8BC1\u7801","sec.sendCode":"\u53D1\u9001\u9A8C\u8BC1\u7801","sec.resendIn":"{s} \u79D2\u540E\u91CD\u53D1","sec.codeSent":"\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001","sec.bindSubmit":"\u786E\u8BA4\u7ED1\u5B9A","sec.phoneBound":"\u624B\u673A\u5DF2\u7ED1\u5B9A","sec.emailBound":"\u90AE\u7BB1\u5DF2\u7ED1\u5B9A","sec.devices.title":"\u767B\u5F55\u8BBE\u5907","sec.devices.desc":"\u62C5\u5FC3\u8D26\u53F7\u88AB\u522B\u4EBA\u7528\u4E86\uFF0C\u53EF\u4EE5\u8BA9\u6240\u6709\u8BBE\u5907\u91CD\u65B0\u767B\u5F55","sec.logoutAll":"\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDesc":"\u5305\u62EC\u8FD9\u53F0\u7535\u8111\uFF0C\u6240\u6709\u8BBE\u5907\u90FD\u8981\u91CD\u65B0\u767B\u5F55","sec.logoutAllConfirm":"\u786E\u8BA4\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDone":"\u5DF2\u9000\u51FA\u6240\u6709\u8BBE\u5907","pw.title":"\u5BC6\u7801","pw.desc":"{min}\u2013{max} \u4F4D\uFF0C\u542B\u5C0F\u5199\u5B57\u6BCD\u3001\u5927\u5199\u5B57\u6BCD\u548C\u7279\u6B8A\u5B57\u7B26\uFF0C\u4E0D\u80FD\u6709\u7A7A\u683C","pw.change":"\u4FEE\u6539\u5BC6\u7801","pw.modeLabel":"\u4FEE\u6539\u65B9\u5F0F","pw.mode.current":"\u7528\u5F53\u524D\u5BC6\u7801","pw.mode.code":"\u7528\u9A8C\u8BC1\u7801","pw.current":"\u5F53\u524D\u5BC6\u7801","pw.currentRequired":"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801","pw.new":"\u65B0\u5BC6\u7801","pw.confirm":"\u518D\u8F93\u4E00\u6B21\u65B0\u5BC6\u7801","pw.mismatch":"\u4E24\u6B21\u8F93\u5165\u7684\u65B0\u5BC6\u7801\u4E0D\u4E00\u81F4","pw.submit":"\u4FEE\u6539\u5BC6\u7801","pw.submitReset":"\u8BBE\u7F6E\u65B0\u5BC6\u7801","pw.changed":"\u5BC6\u7801\u5DF2\u66F4\u65B0","pw.noPasswordYet":"\u8FD9\u4E2A\u8D26\u53F7\u8FD8\u6CA1\u6709\u8BBE\u7F6E\u5BC6\u7801\uFF0C\u8BF7\u6539\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u3002","pw.codeNeedsContact":"\u7ED1\u5B9A\u624B\u673A\u6216\u90AE\u7BB1\u540E\uFF0C\u624D\u80FD\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u5BC6\u7801\u3002","pw.via":"\u9A8C\u8BC1\u7801\u53D1\u5230","pw.codeTo":"\u9A8C\u8BC1\u7801\u4F1A\u53D1\u5230 {target}","pw.rulesLabel":"\u5BC6\u7801\u89C4\u5219","pw.req.length":"{min}\u2013{max} \u4F4D","pw.req.lower":"\u542B\u5C0F\u5199\u5B57\u6BCD","pw.req.upper":"\u542B\u5927\u5199\u5B57\u6BCD","pw.req.special":"\u542B\u7279\u6B8A\u5B57\u7B26","pw.req.space":"\u4E0D\u542B\u7A7A\u683C","pw.rule.format":"\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E","pw.rule.min":"\u5BC6\u7801\u81F3\u5C11 8 \u4F4D","pw.rule.max":"\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D","pw.rule.space":"\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C","pw.rule.lower":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD","pw.rule.upper":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD","pw.rule.special":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26","del.title":"\u6CE8\u9500\u8D26\u53F7","del.desc":"\u6C38\u4E45\u5220\u9664\u8D26\u53F7\u548C\u5168\u90E8\u6570\u636E\uFF0C\u65E0\u6CD5\u6062\u590D","del.start":"\u6CE8\u9500\u8D26\u53F7","del.warn":"\u6CE8\u9500\u540E\uFF0C\u8D26\u53F7\u3001\u79EF\u5206\u3001\u4F1A\u5458\u3001\u4E91\u7A7A\u95F4\u548C\u5168\u90E8\u6570\u636E\u90FD\u4F1A\u88AB\u5220\u9664\uFF0C\u65E0\u6CD5\u627E\u56DE\u3002","del.methodLabel":"\u9A8C\u8BC1\u65B9\u5F0F","del.byCode":"\u9A8C\u8BC1\u7801","del.byPassword":"\u5BC6\u7801","del.codeLabel":"\u53D1\u5230 {target} \u7684\u9A8C\u8BC1\u7801","del.passwordLabel":"\u8D26\u53F7\u5BC6\u7801","del.submit":"\u6CE8\u9500\u8D26\u53F7","del.confirm":"\u786E\u8BA4\u6C38\u4E45\u6CE8\u9500","del.done":"\u8D26\u53F7\u5DF2\u6CE8\u9500","usage.overview.title":"\u7528\u91CF\u6982\u89C8","usage.overview.desc":"\u6240\u9009\u65F6\u95F4\u6BB5\u5185\u7684\u8BF7\u6C42\u4E0E AI \u989D\u5EA6\u6D88\u8017","usage.range":"\u65F6\u95F4\u8303\u56F4","usage.days":"{n} \u5929","usage.requests":"\u8BF7\u6C42\u6B21\u6570","usage.successRate":"\u6210\u529F\u7387","usage.consumption":"AI \u989D\u5EA6\u6D88\u8017","usage.ofToday":"\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650","usage.unlimitedNote":"\u4F60\u7684 AI \u989D\u5EA6\u4E0D\u9650\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.noLimitNote":"\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u4E3A 0 \u6216\u6682\u65F6\u62FF\u4E0D\u5230\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.byModel.title":"\u6309\u6A21\u578B","usage.byModel.desc":"\u5404\u6A21\u578B\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.byApp.title":"\u6309\u5E94\u7528","usage.byApp.desc":"\u5404\u5E94\u7528\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.col.model":"\u6A21\u578B","usage.col.app":"\u5E94\u7528","usage.col.requests":"\u8BF7\u6C42","usage.col.consumption":"\u989D\u5EA6\u6D88\u8017","usage.empty":"\u8FD9\u6BB5\u65F6\u95F4\u6CA1\u6709\u7528\u91CF","usage.appUnknown":"\u5176\u4ED6","usage.recent.title":"\u6700\u8FD1\u6D88\u8017","usage.recent.desc":"\u6BCF\u6B21\u8C03\u7528\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B","usage.recentEmpty":"\u8FD8\u6CA1\u6709\u6D88\u8017\u8BB0\u5F55","usage.failed":"\u5931\u8D25","usage.shown":"\u5DF2\u663E\u793A {shown} / {total} \u6761","fb.list.title":"\u6211\u7684\u53CD\u9988","fb.list.desc":"\u63D0\u4EA4\u8FC7\u7684\u95EE\u9898\u548C\u5EFA\u8BAE\uFF0C\u56DE\u590D\u4F1A\u663E\u793A\u5728\u8FD9\u91CC","fb.new":"\u65B0\u5EFA\u53CD\u9988","fb.empty":"\u8FD8\u6CA1\u6709\u53CD\u9988","fb.untitled":"\u672A\u547D\u540D\u53CD\u9988","fb.unread":"\u6709\u65B0\u56DE\u590D","fb.shown":"\u5DF2\u663E\u793A {n} \u6761","fb.submitted":"\u5DF2\u63D0\u4EA4\uFF0C\u6211\u4EEC\u4F1A\u5C3D\u5FEB\u56DE\u590D","fb.descLabel":"\u63CF\u8FF0\u95EE\u9898\u6216\u5EFA\u8BAE","fb.descPlaceholder":"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF0C\u4F60\u671F\u671B\u600E\u6837\u2026\u2026","fb.imagesHint":"\u6700\u591A\u9644 {n} \u5F20\u622A\u56FE\uFF08\u6BCF\u5F20\u4E0D\u8D85\u8FC7 5MB\uFF09\uFF0C\u53EF\u4EE5\u7C98\u8D34\u6216\u62D6\u8FDB\u6765\u3002","fb.addImages":"\u6DFB\u52A0\u622A\u56FE","fb.removeImage":"\u79FB\u9664\u8FD9\u5F20\u56FE","fb.submit":"\u63D0\u4EA4","fb.back":"\u8FD4\u56DE\u5217\u8868","fb.you":"\u4F60","fb.support":"Forsion \u56E2\u961F","fb.attachment":"\u9644\u4EF6","fb.imagePreview":"\u67E5\u770B\u5927\u56FE","fb.closedNote":"\u8FD9\u4E2A\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u4E0D\u80FD\u518D\u56DE\u590D\u3002\u6709\u65B0\u95EE\u9898\u8BF7\u65B0\u5EFA\u53CD\u9988\u3002","fb.replyPlaceholder":"\u56DE\u590D\u2026","fb.replySend":"\u53D1\u9001\u56DE\u590D","fb.replySent":"\u56DE\u590D\u5DF2\u53D1\u9001","fb.status.open":"\u5F85\u5904\u7406","fb.status.in_progress":"\u5904\u7406\u4E2D","fb.status.resolved":"\u5DF2\u89E3\u51B3","fb.status.closed":"\u5DF2\u5173\u95ED","err.accountGone":"\u8FD9\u4E2A\u8D26\u53F7\u5DF2\u9000\u51FA\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.adminCannotDelete":"\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500","err.avatarInvalid":"\u8FD9\u5F20\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765\uFF0C\u6362\u4E00\u5F20\u8BD5\u8BD5","err.avatarTooLarge":"\u56FE\u7247\u592A\u5927\u4E86\uFF0C\u6362\u4E00\u5F20\u5C0F\u4E00\u70B9\u7684","err.backgroundUnavailable":"\u540E\u53F0\u989D\u5EA6\u6682\u65F6\u4E0D\u53EF\u7528","err.captcha":"\u9700\u8981\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u4EBA\u673A\u9A8C\u8BC1","err.codeCooldown":"\u53D1\u9001\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.codeInvalid":"\u9A8C\u8BC1\u7801\u4E0D\u5BF9\u6216\u5DF2\u8FC7\u671F","err.codeRequired":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","err.codeSendFailed":"\u9A8C\u8BC1\u7801\u6CA1\u53D1\u51FA\u53BB\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.currentPasswordWrong":"\u5F53\u524D\u5BC6\u7801\u4E0D\u5BF9","err.deleteTargetInvalid":"\u9A8C\u8BC1\u7801\u53EA\u80FD\u53D1\u5230\u8D26\u53F7\u7ED1\u5B9A\u7684\u624B\u673A\u6216\u90AE\u7BB1","err.deleteVerifyFailed":"\u9A8C\u8BC1\u6CA1\u901A\u8FC7\uFF0C\u8D26\u53F7\u6CA1\u6709\u6CE8\u9500","err.emailInUse":"\u8FD9\u4E2A\u90AE\u7BB1\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.emailInvalid":"\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.featureDisabled":"\u8FD9\u9879\u529F\u80FD\u6682\u65F6\u5173\u95ED\u4E86","err.feedbackEmpty":"\u8BF7\u5199\u4E00\u4E0B\u95EE\u9898\u6216\u5EFA\u8BAE","err.feedbackTooLong":"\u63CF\u8FF0\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.generic":"\u64CD\u4F5C\u6CA1\u6709\u6210\u529F\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.imageRead":"\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765","err.imageTooLarge":"\u6BCF\u5F20\u56FE\u7247\u4E0D\u80FD\u8D85\u8FC7 5MB","err.imageType":"\u53EA\u80FD\u6DFB\u52A0\u56FE\u7247","err.insufficientMainQuota":"AI \u989D\u5EA6\u5DF2\u7528\u5B8C\uFF0C\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6","err.insufficientPoints":"\u79EF\u5206\u4E0D\u591F","err.priceChanged":"\u91CD\u7F6E\u5361\u5355\u4EF7\u521A\u521A\u8C03\u6574\u8FC7\uFF0C\u8BF7\u770B\u4E00\u4E0B\u65B0\u4EF7\u683C\uFF0C\u518D\u786E\u8BA4\u5151\u6362\u3002","err.invalidCount":"\u5F20\u6570\u8981\u5728 1\u201350 \u4E4B\u95F4","err.invalidInviteCode":"\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548","err.inviteAlreadyUsed":"\u4F60\u5DF2\u7ECF\u7528\u8FC7\u9080\u8BF7\u7801\u4E86","err.inviteEmpty":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","err.inviteOwnCode":"\u4E0D\u80FD\u586B\u81EA\u5DF1\u7684\u9080\u8BF7\u7801","err.inviteWindowExpired":"\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F","err.loginCodeExpired":"\u767B\u5F55\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.loginInProgress":"\u6B63\u5728\u767B\u5F55\u4E2D","err.loginTimeout":"\u767B\u5F55\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5","err.loginUnsupported":"\u8FD9\u4E2A\u4E91\u7AEF\u4E0D\u652F\u6301\u684C\u9762\u7AEF\u767B\u5F55","err.network":"\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u540E\u91CD\u8BD5","err.noCloudUrl":"\u8BF7\u5148\u5728\u300C\u8FDE\u63A5\u300D\u91CC\u586B\u5199\u4E91\u7AEF\u5730\u5740","err.noResetCard":"\u6CA1\u6709\u53EF\u7528\u7684\u989D\u5EA6\u91CD\u7F6E\u5361","err.openFailed":"\u6CA1\u80FD\u6253\u5F00\u6D4F\u89C8\u5668","err.passwordRequired":"\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801\u548C\u65B0\u5BC6\u7801","err.phoneInUse":"\u8FD9\u4E2A\u624B\u673A\u53F7\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.phoneInvalid":"\u624B\u673A\u53F7\u683C\u5F0F\u4E0D\u5BF9\uFF08\u5176\u4ED6\u5730\u533A\u8BF7\u5E26 +\u533A\u53F7\uFF09","err.redeemEmpty":"\u8BF7\u8F93\u5165\u5151\u6362\u7801","err.redeemExpired":"\u5151\u6362\u7801\u5DF2\u8FC7\u671F","err.redeemInactive":"\u5151\u6362\u7801\u5DF2\u505C\u7528","err.redeemNotFound":"\u5151\u6362\u7801\u4E0D\u5B58\u5728","err.redeemUsedUp":"\u5151\u6362\u7801\u5DF2\u88AB\u7528\u5B8C","err.redeemUserLimit":"\u4F60\u5DF2\u7ECF\u5151\u6362\u8FC7\u8FD9\u4E2A\u7801\u4E86","err.replyEmpty":"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9","err.replyTooLong":"\u56DE\u590D\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.server":"\u670D\u52A1\u5668\u51FA\u9519\u4E86\uFF08{status}\uFF09\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.session":"\u767B\u5F55\u72B6\u6001\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.signedOut":"\u8BF7\u5148\u767B\u5F55 Forsion","err.targetInvalid":"\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.ticketNotFound":"\u8FD9\u6761\u53CD\u9988\u4E0D\u5B58\u5728\u6216\u5DF2\u5220\u9664","err.tooFrequent":"\u64CD\u4F5C\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.tooManyImages":"\u6700\u591A\u6DFB\u52A0 5 \u5F20\u56FE\u7247","err.unavailable":"\u8FD9\u4E2A\u7248\u672C\u7684\u684C\u9762\u7AEF\u8FD8\u4E0D\u652F\u6301\u8FD9\u4E2A\u64CD\u4F5C\uFF0C\u8BF7\u66F4\u65B0 Forsion","profile.unsupported":"\u8FD9\u4E2A\u670D\u52A1\u7AEF\u8FD8\u6CA1\u6709\u4E2A\u4EBA\u4E3B\u9875\u529F\u80FD","profile.state.private":"\u4EC5\u81EA\u5DF1\u53EF\u89C1","profile.state.public":"\u5DF2\u516C\u5F00","profile.state.privateDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.state.publicDesc":"\u4EFB\u4F55\u4EBA\u6253\u5F00\u516C\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.decorate":"\u88C5\u9970","profile.publish":"\u516C\u5F00\u4E3B\u9875","profile.makePrivate":"\u8BBE\u4E3A\u79C1\u6709","profile.address":"\u516C\u5F00\u5730\u5740","profile.copyLink":"\u590D\u5236\u94FE\u63A5","profile.openPublic":"\u67E5\u770B\u516C\u5F00\u9875","profile.nowPublic":"\u4E3B\u9875\u5DF2\u516C\u5F00","profile.nowPrivate":"\u4E3B\u9875\u5DF2\u8BBE\u4E3A\u79C1\u6709\uFF0C\u516C\u5F00\u5730\u5740\u4E0D\u518D\u80FD\u6253\u5F00","profile.bio":"\u7B80\u4ECB","profile.bioPlaceholder":"\u5199\u4E00\u53E5\u7B80\u4ECB","profile.linkAdd":"\u6DFB\u52A0\u94FE\u63A5","profile.linkRemove":"\u79FB\u9664\u94FE\u63A5","profile.linkInvalid":"\u94FE\u63A5\u8981\u4EE5 http:// \u6216 https:// \u5F00\u5934\uFF0C\u6216\u76F4\u63A5\u5199\u57DF\u540D","profile.joined":"{date}\u52A0\u5165","profile.stat.tokens":"\u7D2F\u8BA1 Token","profile.stat.activeDays":"\u6D3B\u8DC3\u5929\u6570","profile.stat.longest":"\u6700\u957F\u8FDE\u7EED","profile.stat.current":"\u5F53\u524D\u8FDE\u7EED","profile.stat.installs":"\u4F5C\u54C1\u88AB\u5B89\u88C5","profile.unit.days":"\u5929","profile.works":"\u7CBE\u9009\u4F5C\u54C1","profile.worksPick":"\u9009\u62E9","profile.worksEmpty":"\u8FD8\u6CA1\u6709\u4E0A\u67B6\u7684\u4F5C\u54C1\u3002\u4E0A\u67B6\u5230\u5546\u5E97\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\uFF0C\u53EF\u4EE5\u653E\u5230\u8FD9\u91CC\u3002","profile.worksNone":"\u8FD8\u6CA1\u6709\u53EF\u4EE5\u653E\u4E0A\u4E3B\u9875\u7684\u4F5C\u54C1\u3002\u4F5C\u54C1\u4E0A\u67B6\u5230\u5546\u5E97\u3001\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","profile.worksPicked":"\u5DF2\u9009 {n} / {max} \u4EF6","profile.worksAuto":"\u4E0D\u9009\u7684\u8BDD\uFF0C\u6309\u5B89\u88C5\u91CF\u81EA\u52A8\u53D6\u524D\u51E0\u4EF6","profile.goSubmit":"\u53BB\u6295\u7A3F","profile.workInstalls":"{n} \u6B21\u5B89\u88C5","profile.workVisits":"{n} \u6B21\u8BBF\u95EE","profile.work.skill":"\u6280\u80FD","profile.work.agent":"Agent","profile.work.plugin":"\u63D2\u4EF6","profile.work.space":"Space","profile.work.theme":"\u4E3B\u9898","profile.work.note":"\u7B14\u8BB0\u63D2\u4EF6","profile.work.webapp":"\u7F51\u9875\u5E94\u7528","profile.activity":"\u6D3B\u52A8","profile.activityDays":"\u8FC7\u53BB\u4E00\u5E74\u6709 {n} \u5929\u5728\u7528","profile.less":"\u5C11","profile.more":"\u591A","profile.badges":"\u5FBD\u7AE0","profile.badgesEmpty":"\u8FD8\u6CA1\u6709\u5FBD\u7AE0\u3002\u8FDE\u7EED\u4F7F\u7528\u3001\u4E0A\u67B6\u4F5C\u54C1\u3001\u9080\u8BF7\u670B\u53CB\u90FD\u4F1A\u70B9\u4EAE\u3002","profile.badge.early":"\u65E9\u671F\u7528\u6237","profile.badge.streak":"\u8FDE\u7EED 30 \u5929","profile.badge.author":"\u4F5C\u8005","profile.badge.inviter":"\u9080\u8BF7\u8FBE\u4EBA","profile.badge.event":"\u6D3B\u52A8\u7EAA\u5FF5","profile.badgeSub.early":"{value} \u5E74\u52A0\u5165","profile.badgeSub.streak":"\u6700\u957F\u8FDE\u7EED {value} \u5929","profile.badgeSub.author":"\u4E0A\u67B6\u4E86 {value} \u4EF6\u4F5C\u54C1","profile.badgeSub.inviter":"\u9080\u8BF7\u4E86 {value} \u4F4D\u670B\u53CB","profile.badgeSub.event":"\u53C2\u52A0\u8FC7 Forsion \u7684\u6D3B\u52A8{value}","profile.insights":"\u6D1E\u5BDF","profile.insightsEmpty":"\u7528\u5F97\u8FD8\u4E0D\u591F\u591A\uFF0C\u8FC7\u51E0\u5929\u518D\u6765\u770B\u3002","profile.insightModel":"\u6700\u5E38\u7528\u6A21\u578B","profile.insightHours":"\u6700\u6D3B\u8DC3\u65F6\u6BB5","profile.deco.skin":"\u516C\u5F00\u9875\u7684\u914D\u8272","profile.deco.mode":"\u516C\u5F00\u9875\u7684\u660E\u6697","profile.deco.publicHint":"\u8FD9\u4E24\u9879\u53EA\u7BA1\u8BBF\u5BA2\u5728\u516C\u5F00\u9875\u4E0A\u770B\u5230\u7684\u3002\u5728\u8FD9\u91CC\uFF0C\u4E3B\u9875\u8DDF Forsion \u5F53\u524D\u7684\u4E3B\u9898\u8D70\u3002","profile.deco.cover":"\u5C01\u9762","profile.deco.frame":"\u5934\u50CF\u6846","profile.deco.modules":"\u6A21\u5757","profile.skin.cream":"\u7ECF\u5178","profile.skin.coral":"\u73CA\u745A","profile.skin.teal":"\u67D4\u9752","profile.skin.lavender":"\u85B0\u8863\u8349","profile.mode.auto":"\u8DDF\u968F\u8BBF\u5BA2","profile.mode.light":"\u6D45\u8272","profile.mode.dark":"\u6DF1\u8272","profile.cover.none":"\u65E0","profile.cover.mist":"\u6668\u96FE","profile.cover.contour":"\u7B49\u9AD8\u7EBF","profile.cover.dots":"\u7F51\u70B9","profile.frame.none":"\u65E0","profile.frame.ring":"\u7EC6\u73AF","profile.frame.pro":"\u4F1A\u5458\u73AF","profile.frameProHint":"\u4F1A\u5458\u73AF\u662F\u4ED8\u8D39\u4F1A\u5458\u4E13\u5C5E\u3002","profile.col.show":"\u663E\u793A","profile.col.public":"\u516C\u5F00","profile.moveUp":"\u4E0A\u79FB","profile.moveDown":"\u4E0B\u79FB","profile.modulesHint":"\u300C\u663E\u793A\u300D\u51B3\u5B9A\u4E3B\u9875\u4E0A\u6709\u6CA1\u6709\u8FD9\u4E00\u5757\uFF1B\u300C\u516C\u5F00\u300D\u51B3\u5B9A\u8BBF\u5BA2\u80FD\u4E0D\u80FD\u770B\u5230\uFF0C\u4E3B\u9875\u516C\u5F00\u540E\u624D\u8D77\u4F5C\u7528\u3002","profile.mod.stats":"\u6570\u636E","profile.mod.works":"\u7CBE\u9009\u4F5C\u54C1","profile.mod.activity":"\u6D3B\u52A8","profile.mod.badges":"\u5FBD\u7AE0","profile.mod.insights":"\u6D1E\u5BDF","profile.modDesc.stats":"\u7D2F\u8BA1 Token\u3001\u6D3B\u8DC3\u5929\u6570\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4F5C\u54C1\u5B89\u88C5\u91CF","profile.modDesc.works":"\u4F60\u4E0A\u67B6\u7684\u4F5C\u54C1\uFF0C\u6700\u591A 6 \u4EF6","profile.modDesc.activity":"\u8FC7\u53BB\u4E00\u5E74\u6BCF\u5929\u7528\u6CA1\u7528\u3001\u7528\u5F97\u591A\u4E0D\u591A\uFF08\u53EA\u6709\u6DF1\u6D45\uFF0C\u6CA1\u6709\u5177\u4F53\u6570\u5B57\uFF09","profile.modDesc.badges":"\u52A0\u5165\u5E74\u4EFD\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4E0A\u67B6\u3001\u9080\u8BF7\u3001\u6D3B\u52A8","profile.modDesc.insights":"\u6700\u5E38\u7528\u7684\u6A21\u578B\u3001\u6700\u6D3B\u8DC3\u7684\u65F6\u6BB5","profile.publishDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u8FD9\u4E2A\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55\u3002\u4E0B\u9762\u6BCF\u4E00\u5757\u53EF\u4EE5\u5355\u72EC\u51B3\u5B9A\u7ED9\u4E0D\u7ED9\u8BBF\u5BA2\u770B\u3002","profile.publishNever":"\u5934\u50CF\u3001\u6635\u79F0\u3001\u7528\u6237\u540D\u3001\u7B80\u4ECB\u548C\u94FE\u63A5\u4F1A\u4E00\u8D77\u516C\u5F00\u3002\u90AE\u7BB1\u3001\u624B\u673A\u53F7\u3001\u4F1A\u5458\u5230\u671F\u65E5\u3001\u79EF\u5206\u548C\u989D\u5EA6\u4E0D\u4F1A\u51FA\u73B0\u5728\u4E3B\u9875\u4E0A\u3002","profile.publishConfirm":"\u516C\u5F00","profile.blocked.machineUsername":"\u4F60\u73B0\u5728\u7684\u7528\u6237\u540D\u662F\u7CFB\u7EDF\u751F\u6210\u7684\uFF0C\u91CC\u9762\u5E26\u7740\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u7684\u4E00\u90E8\u5206\uFF0C\u516C\u5F00\u4F1A\u628A\u5B83\u9732\u51FA\u53BB\u3002\u5148\u5230\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u300C\u8D26\u53F7\u300D\u9875\u6539\u4E00\u4E2A\u7528\u6237\u540D\uFF08\u6BCF\u4E2A\u8D26\u53F7\u53EF\u4EE5\u6539\u4E00\u6B21\uFF09\uFF0C\u518D\u56DE\u6765\u516C\u5F00\u3002","profile.blocked.publishBlocked":"\u8FD9\u4E2A\u4E3B\u9875\u5DF2\u88AB\u7BA1\u7406\u5458\u505C\u6B62\u516C\u5F00\u3002\u6709\u7591\u95EE\u8BF7\u901A\u8FC7\u300C\u53CD\u9988\u300D\u8054\u7CFB\u6211\u4EEC\u3002","profile.goRename":"\u53BB\u6539\u7528\u6237\u540D","profile.invalid":"\u8FD9\u9879\u5185\u5BB9\u6CA1\u80FD\u4FDD\u5B58\uFF0C\u8BF7\u68C0\u67E5\u540E\u518D\u8BD5"},yu={"sub.mine":"My submissions","page.submission":"Submissions","sub.desc":"Manage your submissions, review results and version updates.","sub.new":"New submission","sub.refresh":"Refresh","sub.empty":"No submissions yet","sub.emptyHint":"Share your plugins, skills, Agents or Spaces in the marketplace.","sub.name":"Name","sub.summary":"Summary","sub.type":"Content type","sub.source":"Source","sub.type.skill":"Skill","sub.type.agent":"Agent","sub.type.plugin":"Plugin","sub.type.space":"Space","sub.type.theme":"Theme","sub.type.amadeus_plugin":"Amadeus plugin","sub.pending":"Pending review","sub.approved":"Published","sub.rejected":"Rejected","sub.pendingVersion":"v{version} update pending review","sub.rejectedVersion":"v{version} update rejected","sub.update":"Submit new version","sub.updateTitle":"Update {name}","sub.submit":"Submit for review","sub.submitted":"Submitted. Review results will appear in your submissions.","sub.updated":"Update submitted for review. The published version remains available.","sub.repo":"Public GitHub repository","sub.npm":"Public npm package","sub.repoHint":"README and Releases come from the repository; its owner is shown as the publisher.","sub.npmHint":"Package metadata comes from npm; the public repository owner is shown as the publisher.","sub.reviewHint":"New versions require review before distribution. Your Forsion account manages the submission.","sub.remoteUpdate":"Publish a new version at the source for an administrator to review.","sub.zip":"ZIP archive","sub.zipHint":"Up to 50 MB. Include the required manifest and entry files.","sub.version":"Version","sub.versionHint":"Use a version newer than the current one, matching the manifest.","sub.readme":"README (Markdown)","sub.keep":"Leave blank to keep unchanged","sub.filter":"Filter by status","sub.all":"All","sub.noResults":"No matching submissions","sub.downloads":"{n} downloads","sub.errName":"Enter a name.","sub.errSource":"Enter a public repository URL or npm package name.","sub.errZip":"Choose a ZIP archive.","sub.errLarge":"ZIP archives must not exceed 50 MB.","sub.errVersion":"Enter a version.","sub.err.market_npm_invalid":"The npm package is unavailable or does not meet the plugin requirements.","sub.err.market_npm_source":"Publish the new version on npm for review.","sub.err.market_github_source":"Publish a GitHub Release for review.","sub.err.market_not_found":"Submission unavailable. Refresh and retry.","sub.err.market_zip_required":"Choose a ZIP archive.","sub.err.market_zip_invalid":"The ZIP structure does not meet the publishing requirements.","sub.err.market_zip_too_large":"ZIP archives must not exceed 50 MB.","sub.err.market_version_required":"Enter a version.","sub.err.market_version_invalid":"Enter a valid version.","sub.err.market_version_mismatch":"The version does not match the manifest.","sub.err.market_version_not_newer":"The new version must be newer than the published version.","sub.err.market_icon_invalid":"Use a square PNG icon between 64 and 512 px.","sub.err.market_duplicate":"This content has already been submitted. Manage the existing submission.","sub.err.market_update_pending":"An update is already awaiting review.","sub.err.market_stale":"The submission has changed. Refresh and retry.","page.account":"Account","page.profile":"Profile","page.quota":"Quota & points","page.backpack":"Backpack","page.security":"Security","page.usage":"Usage","page.feedback":"Feedback","store.group":"Membership & points","store.membership":"Membership","store.membership.desc":"Upgrade your plan for more daily and weekly quota","store.points":"Points","store.points.desc":"Buy points and use them to redeem items","store.items":"Items","store.items.desc":"Items you can redeem with points. Redeemed items go to your backpack","store.status":"Plan and points","store.tier":"Current plan","store.balance":"Points balance","store.choosePlan":"Choose a plan","store.payHint":"You pay on the payment page in your browser. This page refreshes when you come back","store.payOff":"Purchases are unavailable right now","store.period":"Billing period","store.period.monthly":"Monthly","store.period.quarterly":"Quarterly","store.period.yearly":"Yearly","store.per.monthly":"/ month","store.per.quarterly":"/ quarter","store.per.yearly":"/ year","store.currentTier":"Current plan","store.pay":"Pay","store.payPrice":"Pay {price}","store.noPlans":"No plans are available right now","store.packs":"Point packs","store.packsHint":"You pay on the payment page in your browser. Points arrive right after payment","store.noPacks":"No point packs are available right now","store.kind.pack":"Point pack","store.kind.card":"Consumable","store.kind.code":"Redeem code","store.kind.item":"Item","store.nPoints":"{n} points","store.instant":"Arrives right after payment","store.redeemTitle":"Redeem with points","store.redeemHint":"Redeeming with points completes right here. Items go to your backpack","store.redeem":"Redeem for {n} points","store.redeemConfirm":"Confirm: spend {n} points","store.redeemed":"Redeemed. The item is in your backpack","store.uncertain":"No response came back. Check your backpack before you try again","store.soldOut":"Sold out","store.left":"{n} left","store.toBackpack":"Goes to your backpack","store.limitReached":"You've reached the purchase limit","store.unavailable":"This item can't be redeemed right now","store.noItems":"Nothing to redeem right now","store.itemsOff":"Item redemption isn't available yet","store.openBackpack":"Open backpack","backpack.desc":"View the items you have collected. Select a slot for details.","backpack.refresh":"Refresh","backpack.total":"{n} items","backpack.grid":"Backpack items","backpack.slot":"{name}, quantity {n}","backpack.item":"Item","backpack.empty":"Your backpack is empty","backpack.emptyHint":"Items you redeem or receive will appear here.","backpack.select":"Select an item to view details","backpack.details":"Item details","backpack.quantity":"Quantity","backpack.acquired":"Acquired","backpack.source":"Received through","backpack.source.points":"Points exchange","backpack.source.admin":"Gift","backpack.source.reward":"Reward","backpack.source.other":"Cloud account","backpack.consumable":"Consumable","backpack.voucher":"Voucher","backpack.getCards":"Redeem reset cards","backpack.manageCards":"Use or redeem","backpack.reveal":"Reveal key","backpack.copyKey":"Copy key","backpack.noKey":"This item has no key.","backpack.use":"Use","backpack.confirmUse":"Confirm use","backpack.consumeConfirm":"Using this item consumes one copy.","backpack.collectible":"Collectible","backpack.effect.points":"+{n} points","backpack.effect.cards":"+{n} reset cards","backpack.effect.quota":"Reset daily and weekly quota","backpack.rarity.common":"Common","backpack.rarity.rare":"Rare","backpack.rarity.epic":"Epic","backpack.rarity.legendary":"Legendary","backpack.unavailable":"This item is no longer available. Refresh your backpack.","backpack.notUsable":"This item cannot be used.","backpack.quotaUnavailable":"Use cloud AI to initialize your quota before using this item.","common.cancel":"Cancel","common.copied":"Copied","common.copyFailed":"Couldn't copy","common.done":"Done","common.loadFailed":"Couldn't load","common.loadMore":"Load more","common.loading":"Loading\u2026","common.openInBrowser":"Open in browser","common.retry":"Retry","common.save":"Save","common.thisWeek":"This week","common.today":"Today","common.unlimited":"Unlimited","ann.eyebrow":"FORSION \xB7 Announcement","ann.close":"Close","ann.ok":"Got it","signin.button":"Sign in to Forsion","signin.desc":"Sign in to your Forsion account to manage your account, quota, security, submissions and feedback here.","signin.pending":"Waiting for you to finish in your browser\u2026","signin.deviceHint":"Your browser opens the sign-in page on its own. If it doesn't, scan the code with your phone or open the link below, and check that the code matches.","signin.code":"Code","signin.openLink":"Open sign-in page","signin.copyLink":"Copy link","signin.qrLabel":"Sign-in QR code","account.profile.title":"Profile","account.profile.desc":"Your photo and nickname, plus the phone and email linked to your account","account.avatar.change":"Change photo","account.avatar.saved":"Photo updated","account.nickname.edit":"Edit nickname","account.nickname.label":"Nickname","account.nickname.saved":"Nickname updated","account.role.admin":"Admin","account.username":"Username {name}","account.contact.phone":"Phone","account.contact.email":"Email","account.contact.unbound":"Not linked","account.contact.manage":"Manage in Security","account.web.open":"Open the account center in your browser","account.web.desc":"Cloud storage, AI Brain and themes are managed in the web account center.","member.title":"Membership","member.desc":"Your tier, plan and expiry date","member.upgrade":"Upgrade membership","member.renew":"Renew","member.freeName":"Free plan","member.freeHint":"Upgrade to get more AI quota","member.expires":"Expires {date}","member.noExpiry":"No expiry","member.loadFailed":"Couldn't load your membership.","local.title":"Accounts on this computer","local.desc":"Switch between accounts you've signed in with","local.current":"Current","local.switch":"Switch","local.add":"Sign in to another account","local.signOut":"Sign out","local.empty":"No saved accounts yet","local.loadFailed":"Couldn't read the account list","diag.title":"Diagnostic data","diag.desc":"Helps us troubleshoot problems and improve Forsion. Off by default.","diag.enable":"Upload diagnostic data","diag.enableDesc":"When this is on, this computer periodically uploads a snapshot of its Forsion setup to your Forsion account, where the Forsion team can view it. The Forsion team sets how often, once a day by default. You can turn it off at any time.","diag.collected":"What's uploaded","diag.item.app":"App and system versions, this computer's name, and its free memory and disk space","diag.item.settings":"Your model and voice choices, the switches and numeric values in background agent and plugin settings, and the names and on/off state of MCP servers and message channels","diag.item.agents":"Agent and team configuration (options such as name and model; descriptions and prompts are recorded by length only, and their text falls under the personas, memory and evolution switch below)","diag.item.plugins":"Names and versions of installed plugins, skills, themes and Spaces","diag.item.runs":"Run records from the last 7 days: each run's status and error reason, usage and timing of model calls and tools (no conversation text, and nothing those tools read or wrote), and the engine's recent log output","diag.notCollected":"Never uploaded: the sign-in credentials and API keys saved on this computer, your note files, agent libraries, or plugin data.","diag.sessions":"Include conversations","diag.sessionsDesc":"Conversations on this computer: the text of your messages and the agent's replies, the agent's reasoning and the names of the tools it used, including the background work of team members, discussions and delegated tasks. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. What those tools read or wrote and the attachments themselves are left out; file names that appear in messages, and anything the agent repeated from your notes or files in its replies, are included. Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.memory":"Include agent personas, memory and evolution records","diag.memoryDesc":"Each agent's persona (including the description and developer instructions in its configuration), and what the agent has built up on its own: its memory and the memory candidates it hasn't consolidated yet, its evolution record, its collaboration notes for you, the last 7 days of its logs and memory-consolidation activity, and project memory; plus your teams' charters and your user profile. These are the instructions you wrote for your agents and teams, and the facts they noted about you and your work from conversations. Each upload carries their current content (very long ones are cut short). Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.activity":"Include activity log","diag.activityDesc":"Your activity records, which include the first few dozen characters of conversations and the names of note files. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. If you'd rather not share them, turn this off before you turn uploads on.","diag.last":"Last upload: {time}","diag.noUpload":"Nothing uploaded yet","diag.freq.hour":"every hour","diag.freq.hours":"every {n} hours","diag.freq.day":"once a day","diag.freq.days":"every {n} days","diag.freq.manual":"only when the Forsion team requests it","diag.retention":"The cloud keeps this computer's snapshots from the last {n} days. Turning this off stops uploads; snapshots already uploaded stay in the cloud. To have them deleted, let us know under Feedback.","diag.uploadNow":"Upload now","diag.uploaded":"Uploaded","diag.failed":"Upload failed: {reason}","quota.ai.title":"AI quota","quota.ai.desc":"What's left today and this week; a quota reset card restores it","quota.resetDaily":"Resets daily at 0:00 (Beijing time)","quota.resetWeekly":"Resets {date} at 0:00 (Beijing time)","card.title":"Quota reset card","card.desc":"Restores today's and this week's AI quota to 100%","card.owned":"You have {n}","card.use":"Use one","card.useConfirm":"Confirm","card.used":"Used 1 quota reset card","card.left":"{n} left","card.noneHint":"You have no quota reset cards left. You can exchange points for more.","card.exchange":"Exchange points","card.price":"{price} points each, 1\u201350 at a time","card.count":"Number of cards","card.cost":"Costs {cost} points","card.countHint":"Enter 1\u201350","card.exchangeButton":"Exchange","card.exchangeConfirm":"Spend {cost} points","card.exchanged":"Quota reset cards added: {n}","points.title":"Points","points.desc":"Use points to get quota reset cards","points.balance":"Balance","points.balanceFailed":"Couldn't load your balance","points.recharge":"Buy points","bg.title":"Background quota","bg.desc":"Used by Muse and automations, counted separately from your AI quota","bg.autoMain":"Continue with AI quota when used up","bg.autoMainDesc":"When off, Muse and automations pause once the background quota runs out","bg.convert":"Move from AI quota","bg.convertDesc":"Moves a share of your AI quota limit, valid for the current period","bg.convertConfirm":"Move {pct}%","bg.converted":"Moved {pct}% from your AI quota","invite.title":"Invites & codes","invite.desc":"Invite friends to join, or redeem a code you received","invite.myCode":"My invite code","invite.count":"{n} invited","invite.copyCode":"Copy code","invite.copyLink":"Copy invite link","invite.loadFailed":"Couldn't load your invite code","invite.claim":"Enter an invite code","invite.claimDesc":"Within 7 days of signing up, you can enter a friend's invite code","invite.claimPlaceholder":"Friend's invite code","invite.claimSubmit":"Submit","invite.claimed":"Invite code applied","redeem.title":"Redemption code","redeem.desc":"Redeem points, membership or other rewards","redeem.placeholder":"Enter a code","redeem.submit":"Redeem","redeem.success":"Redeemed","redeem.successWith":"Redeemed: {what}","redeem.gotPoints":"{n} points","redeem.gotMembership":"membership","sec.methods.title":"Sign-in methods","sec.methods.desc":"Your phone and email can be used to sign in and reset your password","sec.bind":"Link","sec.change":"Change","sec.phone":"Phone number","sec.email":"Email address","sec.newPhone":"New phone number","sec.newEmail":"New email address","sec.phonePlaceholder":"Mainland China numbers as is; others with +country code","sec.emailPlaceholder":"name@example.com","sec.code":"Verification code","sec.codePlaceholder":"Enter the code","sec.sendCode":"Send code","sec.resendIn":"Resend in {s}s","sec.codeSent":"Code sent","sec.bindSubmit":"Link","sec.phoneBound":"Phone linked","sec.emailBound":"Email linked","sec.devices.title":"Signed-in devices","sec.devices.desc":"If you think someone else is using your account, sign out on every device","sec.logoutAll":"Sign out everywhere","sec.logoutAllDesc":"Including this computer: every device has to sign in again","sec.logoutAllConfirm":"Confirm sign out everywhere","sec.logoutAllDone":"Signed out everywhere","pw.title":"Password","pw.desc":"{min}\u2013{max} characters, with a lowercase letter, an uppercase letter and a special character, and no spaces","pw.change":"Change password","pw.modeLabel":"How to change it","pw.mode.current":"With current password","pw.mode.code":"With a verification code","pw.current":"Current password","pw.currentRequired":"Enter your current password","pw.new":"New password","pw.confirm":"Confirm new password","pw.mismatch":"The new passwords don't match","pw.submit":"Change password","pw.submitReset":"Set new password","pw.changed":"Password updated","pw.noPasswordYet":"This account doesn't have a password yet. Set one with a verification code instead.","pw.codeNeedsContact":"Link a phone or email first to set a password with a verification code.","pw.via":"Send the code to","pw.codeTo":"The code goes to {target}","pw.rulesLabel":"Password rules","pw.req.length":"{min}\u2013{max} characters","pw.req.lower":"A lowercase letter","pw.req.upper":"An uppercase letter","pw.req.special":"A special character","pw.req.space":"No spaces","pw.rule.format":"Invalid password","pw.rule.min":"Password must be at least 8 characters","pw.rule.max":"Password can't be longer than 64 characters","pw.rule.space":"Password can't contain spaces","pw.rule.lower":"Password needs a lowercase letter","pw.rule.upper":"Password needs an uppercase letter","pw.rule.special":"Password needs a special character","del.title":"Delete account","del.desc":"Permanently delete your account and all its data. This can't be undone","del.start":"Delete account","del.warn":"Deleting your account removes your account, points, membership, cloud storage and all other data for good.","del.methodLabel":"Verify with","del.byCode":"Verification code","del.byPassword":"Password","del.codeLabel":"Code sent to {target}","del.passwordLabel":"Account password","del.submit":"Delete account","del.confirm":"Delete permanently","del.done":"Account deleted","usage.overview.title":"Overview","usage.overview.desc":"Requests and AI quota used in the selected period","usage.range":"Time range","usage.days":"{n} days","usage.requests":"Requests","usage.successRate":"Success rate","usage.consumption":"AI quota used","usage.ofToday":"Of your daily limit","usage.unlimitedNote":"Your AI quota is unlimited, so usage isn't shown as a percentage.","usage.noLimitNote":"Your daily limit is 0 or unavailable right now, so usage isn't shown as a percentage.","usage.byModel.title":"By model","usage.byModel.desc":"Requests and quota used per model","usage.byApp.title":"By app","usage.byApp.desc":"Requests and quota used per app","usage.col.model":"Model","usage.col.app":"App","usage.col.requests":"Requests","usage.col.consumption":"Quota used","usage.empty":"No usage in this period","usage.appUnknown":"Other","usage.recent.title":"Recent usage","usage.recent.desc":"Each call as a share of your daily limit","usage.recentEmpty":"No usage yet","usage.failed":"Failed","usage.shown":"Showing {shown} of {total}","fb.list.title":"My feedback","fb.list.desc":"Issues and suggestions you've sent; replies show up here","fb.new":"New feedback","fb.empty":"No feedback yet","fb.untitled":"Untitled feedback","fb.unread":"New reply","fb.shown":"Showing {n}","fb.submitted":"Sent. We'll reply as soon as we can","fb.descLabel":"Describe the issue or suggestion","fb.descPlaceholder":"What happened, and what did you expect?","fb.imagesHint":"Attach up to {n} screenshots (5 MB each). You can paste or drop them here.","fb.addImages":"Add screenshots","fb.removeImage":"Remove this image","fb.submit":"Send","fb.back":"Back to list","fb.you":"You","fb.support":"Forsion team","fb.attachment":"Attachment","fb.imagePreview":"View image","fb.closedNote":"This ticket is closed and can't take replies. Send new feedback for a new issue.","fb.replyPlaceholder":"Reply\u2026","fb.replySend":"Send reply","fb.replySent":"Reply sent","fb.status.open":"Open","fb.status.in_progress":"In progress","fb.status.resolved":"Resolved","fb.status.closed":"Closed","err.accountGone":"This account is signed out. Sign in again","err.adminCannotDelete":"Admin accounts can't be deleted here","err.avatarInvalid":"Couldn't read this image. Try another one","err.avatarTooLarge":"This image is too large. Try a smaller one","err.backgroundUnavailable":"Background quota is unavailable right now","err.captcha":"You need to finish a verification check in your browser","err.codeCooldown":"Too many codes requested. Try again shortly","err.codeInvalid":"The code is wrong or has expired","err.codeRequired":"Enter the verification code","err.codeSendFailed":"Couldn't send the code. Try again later","err.currentPasswordWrong":"Your current password is incorrect","err.deleteTargetInvalid":"Codes can only go to the phone or email linked to your account","err.deleteVerifyFailed":"Verification failed, so your account wasn't deleted","err.emailInUse":"This email is already used by another account","err.emailInvalid":"Enter a valid email address","err.featureDisabled":"This feature is turned off for now","err.feedbackEmpty":"Describe the issue or suggestion first","err.feedbackTooLong":"The description is too long (10,000 characters max)","err.generic":"That didn't work. Try again later","err.imageRead":"Couldn't read the image","err.imageTooLarge":"Each image must be 5 MB or less","err.imageType":"Only images can be added","err.insufficientMainQuota":"Your AI quota is used up, so there's nothing to move","err.insufficientPoints":"Not enough points","err.priceChanged":"The reset card price just changed. Check the new price, then confirm the exchange again.","err.invalidCount":"Choose between 1 and 50 cards","err.invalidInviteCode":"This invite code is invalid or has expired","err.inviteAlreadyUsed":"You've already used an invite code","err.inviteEmpty":"Enter an invite code","err.inviteOwnCode":"You can't use your own invite code","err.inviteWindowExpired":"The 7-day window after sign-up has passed","err.loginCodeExpired":"The sign-in code expired. Sign in again","err.loginInProgress":"A sign-in is already in progress","err.loginTimeout":"Sign-in timed out. Try again","err.loginUnsupported":"This cloud doesn't support desktop sign-in","err.network":"Network error. Check your connection and try again","err.noCloudUrl":"Set the cloud address under Connection first","err.noResetCard":"You have no quota reset cards","err.openFailed":"Couldn't open the browser","err.passwordRequired":"Enter your current and new password","err.phoneInUse":"This phone number is already used by another account","err.phoneInvalid":"Enter a valid phone number (with +country code outside mainland China)","err.redeemEmpty":"Enter a code","err.redeemExpired":"This code has expired","err.redeemInactive":"This code is no longer active","err.redeemNotFound":"This code doesn't exist","err.redeemUsedUp":"This code has been used up","err.redeemUserLimit":"You've already redeemed this code","err.replyEmpty":"Write a reply first","err.replyTooLong":"The reply is too long (10,000 characters max)","err.server":"Server error ({status}). Try again later","err.session":"You've been signed out. Sign in again","err.signedOut":"Sign in to Forsion first","err.targetInvalid":"Enter a valid phone number or email","err.ticketNotFound":"This feedback doesn't exist or was deleted","err.tooFrequent":"Too many attempts. Try again shortly","err.tooManyImages":"You can add up to 5 images","err.unavailable":"This version of the desktop app can't do that yet. Update Forsion","profile.unsupported":"This server doesn't have profiles yet","profile.state.private":"Only you can see this","profile.state.public":"Public","profile.state.privateDesc":"Once public, anyone with the address can see your profile without signing in","profile.state.publicDesc":"Anyone with the public address can see it without signing in","profile.decorate":"Decorate","profile.publish":"Make public","profile.makePrivate":"Make private","profile.address":"Public address","profile.copyLink":"Copy link","profile.openPublic":"View public page","profile.nowPublic":"Your profile is now public","profile.nowPrivate":"Your profile is private. The public address no longer opens","profile.bio":"Bio","profile.bioPlaceholder":"Add a short bio","profile.linkAdd":"Add a link","profile.linkRemove":"Remove link","profile.linkInvalid":"Links must start with http:// or https://, or be a plain domain","profile.joined":"Joined {date}","profile.stat.tokens":"Total tokens","profile.stat.activeDays":"Active days","profile.stat.longest":"Longest streak","profile.stat.current":"Current streak","profile.stat.installs":"Work installs","profile.unit.days":"d","profile.works":"Featured works","profile.worksPick":"Choose","profile.worksEmpty":"No published works yet. Publish to the store or as a web app, and they can go here.","profile.worksNone":"Nothing to feature yet. Works appear here once they are in the store or published as a web app.","profile.worksPicked":"{n} of {max} selected","profile.worksAuto":"With none selected, the most installed ones are shown","profile.goSubmit":"Submit a work","profile.workInstalls":"{n} installs","profile.workVisits":"{n} visits","profile.work.skill":"Skill","profile.work.agent":"Agent","profile.work.plugin":"Plugin","profile.work.space":"Space","profile.work.theme":"Theme","profile.work.note":"Notes plugin","profile.work.webapp":"Web app","profile.activity":"Activity","profile.activityDays":"Active on {n} days in the past year","profile.less":"Less","profile.more":"More","profile.badges":"Badges","profile.badgesEmpty":"No badges yet. Streaks, published works and invites all earn one.","profile.badge.early":"Early user","profile.badge.streak":"30-day streak","profile.badge.author":"Author","profile.badge.inviter":"Top inviter","profile.badge.event":"Event keepsake","profile.badgeSub.early":"Joined in {value}","profile.badgeSub.streak":"Longest streak: {value} days","profile.badgeSub.author":"{value} published works","profile.badgeSub.inviter":"Invited {value} friends","profile.badgeSub.event":"Took part in a Forsion event{value}","profile.insights":"Insights","profile.insightsEmpty":"Not enough usage yet. Check back in a few days.","profile.insightModel":"Most used model","profile.insightHours":"Most active hours","profile.deco.skin":"Public page color scheme","profile.deco.mode":"Public page appearance","profile.deco.publicHint":"These two only set what visitors see on the public page. Here the profile follows Forsion's current theme.","profile.deco.cover":"Cover","profile.deco.frame":"Avatar frame","profile.deco.modules":"Sections","profile.skin.cream":"Classic","profile.skin.coral":"Coral","profile.skin.teal":"Teal","profile.skin.lavender":"Lavender","profile.mode.auto":"Auto","profile.mode.light":"Light","profile.mode.dark":"Dark","profile.cover.none":"None","profile.cover.mist":"Mist","profile.cover.contour":"Contour","profile.cover.dots":"Dots","profile.frame.none":"None","profile.frame.ring":"Ring","profile.frame.pro":"Member ring","profile.frameProHint":"The member ring is for paid members.","profile.col.show":"Show","profile.col.public":"Public","profile.moveUp":"Move up","profile.moveDown":"Move down","profile.modulesHint":'"Show" decides whether a section is on your profile. "Public" decides whether visitors see it, once your profile is public.',"profile.mod.stats":"Stats","profile.mod.works":"Works","profile.mod.activity":"Activity","profile.mod.badges":"Badges","profile.mod.insights":"Insights","profile.modDesc.stats":"Total tokens, active days, streaks and installs of your works","profile.modDesc.works":"Works you have published, up to 6","profile.modDesc.activity":"Which days you were active in the past year (shades only, no numbers)","profile.modDesc.badges":"Join year, streaks, publishing, invites and events","profile.modDesc.insights":"Your most used model and most active hours","profile.publishDesc":"Once public, anyone with this address can see your profile without signing in. You decide section by section what visitors see.","profile.publishNever":"Your avatar, nickname, username, bio and links become public too. Your email, phone number, membership expiry, points and quota never appear on your profile.","profile.publishConfirm":"Make public","profile.blocked.machineUsername":"Your current username was generated by the system and contains part of your phone number or email, so making it public would expose that. Change your username on the Account page of the web account center first (each account can do this once), then come back.","profile.blocked.publishBlocked":"An administrator has stopped this profile from being public. Contact us through Feedback if you have questions.","profile.goRename":"Change username","profile.invalid":"This couldn't be saved. Check it and try again"},vo={zh:vu,en:yu},Ke=t=>t==="en"?"en":"zh";function Un(t,e,n){let a=vo[t][e]??vo.zh[e]??e;return n?a.replace(/\{(\w+)\}/g,(i,o)=>o in n?String(n[o]):i):a}var Hn=t=>(e,n)=>Un(t,e,n),Ne=(t,e)=>"raw"in t?t.raw:e(t.key,t.vars);var yo=`
63
+ `+t+`</thead>
64
+ `+r+`</table>
65
+ `}tablerow({text:e}){return`<tr>
66
+ ${e}</tr>
67
+ `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
68
+ `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${ct(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,text:n,tokens:r,autolink:a}){let i=a?ct(n,!0):this.parser.parseInline(r),s=Zi(e);if(s===null)return i;e=ct(s,a);let l='<a href="'+e+'"';return t&&(l+=' title="'+ct(t)+'"'),l+=">"+i+"</a>",l}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let a=Zi(e);if(a===null)return ct(n);e=a;let i=`<img src="${ct(e)}" alt="${ct(n)}"`;return t&&(i+=` title="${ct(t)}"`),i+=">",i}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:ct(e.text)}},sa=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},Ct=class Qr{options;renderer;textRenderer;constructor(t){this.options=t||An,this.options.renderer=this.options.renderer||new Zo,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new sa}static parse(t,n){return new Qr(n).parse(t)}static parseInline(t,n){return new Qr(n).parseInline(t)}parse(t){this.renderer.parser=this;let n="";for(let r=0;r<t.length;r++){let a=t[r];if(this.options.extensions?.renderers?.[a.type]){let s=a,l=this.options.extensions.renderers[s.type].call({parser:this},s);if(l!==!1||!["space","hr","heading","code","table","blockquote","list","checkbox","html","def","paragraph","text"].includes(s.type)){n+=l||"";continue}}let i=a;switch(i.type){case"space":{n+=this.renderer.space(i);break}case"hr":{n+=this.renderer.hr(i);break}case"heading":{n+=this.renderer.heading(i);break}case"code":{n+=this.renderer.code(i);break}case"table":{n+=this.renderer.table(i);break}case"blockquote":{n+=this.renderer.blockquote(i);break}case"list":{n+=this.renderer.list(i);break}case"checkbox":{n+=this.renderer.checkbox(i);break}case"html":{n+=this.renderer.html(i);break}case"def":{n+=this.renderer.def(i);break}case"paragraph":{n+=this.renderer.paragraph(i);break}case"text":{n+=this.renderer.text(i);break}default:{let s='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(s),"";throw new Error(s)}}}return n}parseInline(t,n=this.renderer){this.renderer.parser=this;let r="";for(let a=0;a<t.length;a++){let i=t[a];if(this.options.extensions?.renderers?.[i.type]){let l=this.options.extensions.renderers[i.type].call({parser:this},i);if(l!==!1||!["escape","html","link","image","checkbox","strong","em","codespan","br","del","text"].includes(i.type)){r+=l||"";continue}}let s=i;switch(s.type){case"escape":{r+=n.text(s);break}case"html":{r+=n.html(s);break}case"link":{r+=n.link(s);break}case"image":{r+=n.image(s);break}case"checkbox":{r+=n.checkbox(s);break}case"strong":{r+=n.strong(s);break}case"em":{r+=n.em(s);break}case"codespan":{r+=n.codespan(s);break}case"br":{r+=n.br(s);break}case"del":{r+=n.del(s);break}case"text":{r+=n.text(s);break}default:{let l='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return r}},bo=class{options;block;constructor(e){this.options=e||An}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?St.lex:St.lexInline}provideParser(e=this.block){return e?Ct.parse:Ct.parseInline}},la=class{defaults=ea();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Ct;Renderer=Zo;TextRenderer=sa;Lexer=St;Tokenizer=Yo;Hooks=bo;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case"table":{let a=r;for(let i of a.header)n=n.concat(this.walkTokens(i.tokens,t));for(let i of a.rows)for(let s of i)n=n.concat(this.walkTokens(s.tokens,t));break}case"list":{let a=r;n=n.concat(this.walkTokens(a.items,t));break}default:{let a=r;this.defaults.extensions?.childTokens?.[a.type]?this.defaults.extensions.childTokens[a.type].forEach(i=>{let s=a[i].flat(1/0);n=n.concat(this.walkTokens(s,t))}):a.tokens&&(n=n.concat(this.walkTokens(a.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){let i=t.renderers[a.name];i?t.renderers[a.name]=function(...s){let l=a.renderer.apply(this,s);return l===!1&&(l=i.apply(this,s)),l}:t.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let i=t[a.level];i?i.unshift(a.tokenizer):t[a.level]=[a.tokenizer],a.start&&(a.level==="block"?t.startBlock?t.startBlock.push(a.start):t.startBlock=[a.start]:a.level==="inline"&&(t.startInline?t.startInline.push(a.start):t.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(t.childTokens[a.name]=a.childTokens)}),r.extensions=t),n.renderer){let a=this.defaults.renderer||new Zo(this.defaults);for(let i in n.renderer){if(!(i in a))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let s=i,l=n.renderer[s],c=a[s];a[s]=(...d)=>{let f=l.apply(a,d);return f===!1&&(f=c.apply(a,d)),f||""}}r.renderer=a}if(n.tokenizer){let a=this.defaults.tokenizer||new Yo(this.defaults);for(let i in n.tokenizer){if(!(i in a))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let s=i,l=n.tokenizer[s],c=a[s];a[s]=(...d)=>{let f=l.apply(a,d);return f===!1&&(f=c.apply(a,d)),f}}r.tokenizer=a}if(n.hooks){let a=this.defaults.hooks||new bo;for(let i in n.hooks){if(!(i in a))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let s=i,l=n.hooks[s],c=a[s];bo.passThroughHooks.has(i)?a[s]=d=>{if(this.defaults.async&&bo.passThroughHooksRespectAsync.has(i))return(async()=>{let p=await l.call(a,d);return c.call(a,p)})();let f=l.call(a,d);return c.call(a,f)}:a[s]=(...d)=>{if(this.defaults.async)return(async()=>{let p=await l.apply(a,d);return p===!1&&(p=await c.apply(a,d)),p})();let f=l.apply(a,d);return f===!1&&(f=c.apply(a,d)),f}}r.hooks=a}if(n.walkTokens){let a=this.defaults.walkTokens,i=n.walkTokens;r.walkTokens=function(s){let l=[];return l.push(i.call(this,s)),a&&(l=l.concat(a.call(this,s))),l}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return St.lex(e,t??this.defaults)}parser(e,t){return Ct.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},a={...this.defaults,...r},i=this.onError(!!a.silent,!!a.async);if(this.defaults.async===!0&&r.async===!1)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return i(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(a.hooks&&(a.hooks.options=a,a.hooks.block=e),a.async)return(async()=>{let s=a.hooks?await a.hooks.preprocess(t):t,l=await(a.hooks?await a.hooks.provideLexer(e):e?St.lex:St.lexInline)(s,a),c=a.hooks?await a.hooks.processAllTokens(l):l;a.walkTokens&&await Promise.all(this.walkTokens(c,a.walkTokens));let d=await(a.hooks?await a.hooks.provideParser(e):e?Ct.parse:Ct.parseInline)(c,a);return a.hooks?await a.hooks.postprocess(d):d})().catch(i);try{a.hooks&&(t=a.hooks.preprocess(t));let s=(a.hooks?a.hooks.provideLexer(e):e?St.lex:St.lexInline)(t,a);a.hooks&&(s=a.hooks.processAllTokens(s)),a.walkTokens&&this.walkTokens(s,a.walkTokens);let l=(a.hooks?a.hooks.provideParser(e):e?Ct.parse:Ct.parseInline)(s,a);return a.hooks&&(l=a.hooks.postprocess(l)),l}catch(s){return i(s)}}}onError(e,t){return n=>{if(n.message+=`
69
+ Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error occurred:</p><pre>"+ct(n.message+"",!0)+"</pre>";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}},Tn=new la;function ke(e,t){return Tn.parse(e,t)}ke.options=ke.setOptions=function(e){return Tn.setOptions(e),ke.defaults=Tn.defaults,rs(ke.defaults),ke};ke.getDefaults=ea;ke.defaults=An;function Cu(...e){return Tn.use(...e),ke.defaults=Tn.defaults,rs(ke.defaults),ke}ke.use=Cu;ke.walkTokens=function(e,t){return Tn.walkTokens(e,t)};ke.parseInline=Tn.parseInline;ke.Parser=Ct;ke.parser=Ct.parse;ke.Renderer=Zo;ke.TextRenderer=sa;ke.Lexer=St;ke.lexer=St.lex;ke.Tokenizer=Yo;ke.Hooks=bo;ke.parse=ke;var kg=ke.options,wg=ke.setOptions,zg=ke.walkTokens,_g=ke.parseInline;var Sg=Ct.parse,Cg=St.lex;var ar,te,hs,Tu,un,fs,bs,vs,ca,er,ko,ys,fa,da,pa,xs,nr={},or=[],Au=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,wo=Array.isArray;function Zt(e,t){for(var n in t)e[n]=t[n];return e}function ma(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function Pn(e,t,n){var r,a,i,s={};for(i in t)i=="key"?r=t[i]:i=="ref"?a=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?ar.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(i in e.defaultProps)s[i]===void 0&&(s[i]=e.defaultProps[i]);return tr(e,s,r,a,null)}function tr(e,t,n,r,a){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++hs,__i:-1,__u:0};return a==null&&te.vnode!=null&&te.vnode(i),i}function R(e){return e.children}function Tt(e,t){this.props=e,this.context=t}function En(e,t){if(t==null)return e.__?En(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?En(e):null}function Eu(e){if(e.__P&&e.__d){var t=e.__v,n=t.__e,r=[],a=[],i=Zt({},t);i.__v=t.__v+1,te.vnode&&te.vnode(i),ga(e.__P,i,t,e.__n,e.__P.namespaceURI,32&t.__u?[n]:null,r,n??En(t),!!(32&t.__u),a),i.__v=t.__v,i.__.__k[i.__i]=i,Ss(r,i,a),t.__e=t.__=null,i.__e!=n&&ks(i)}}function ks(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),ks(e)}function ua(e){(!e.__d&&(e.__d=!0)&&un.push(e)&&!rr.__r++||fs!=te.debounceRendering)&&((fs=te.debounceRendering)||bs)(rr)}function rr(){try{for(var e,t=1;un.length;)un.length>t&&un.sort(vs),e=un.shift(),t=un.length,Eu(e)}finally{un.length=rr.__r=0}}function ws(e,t,n,r,a,i,s,l,c,d,f){var p,u,h,m,y,_,C=r&&r.__k||or,x=t.length;for(c=Pu(n,t,C,c,x),p=0;p<x;p++)(h=n.__k[p])!=null&&(u=h.__i!=-1&&C[h.__i]||nr,h.__i=p,_=ga(e,h,u,a,i,s,l,c,d,f),m=h.__e,h.ref&&u.ref!=h.ref&&(u.ref&&ha(u.ref,null,h),f.push(h.ref,h.__c||m,h)),y==null&&m!=null&&(y=m),4&h.__u?(c=zs(h,c,e),u.__e&&(u.__e=null)):typeof h.type=="function"&&_!==void 0?c=_:m&&(c=m.nextSibling),h.__u&=-7);return n.__e=y,c}function Pu(e,t,n,r,a){var i,s,l,c,d,f=n.length,p=f,u=0;for(e.__k=new Array(a),i=0;i<a;i++)(s=t[i])!=null&&typeof s!="boolean"&&typeof s!="function"?(typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?s=e.__k[i]=tr(null,s,null,null,null):wo(s)?s=e.__k[i]=tr(R,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=e.__k[i]=tr(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):e.__k[i]=s,c=i+u,s.__=e,s.__b=e.__b+1,l=null,(d=s.__i=Mu(s,n,c,p))!=-1&&(p--,(l=n[d])&&(l.__u|=2)),l==null||l.__v==null?(d==-1&&(a>f?u--:a<f&&u++),typeof s.type!="function"&&(s.__u|=4)):d!=c&&(d==c-1?u--:d==c+1?u++:(d>c?u--:u++,s.__u|=4))):e.__k[i]=null;if(p)for(i=0;i<f;i++)(l=n[i])!=null&&(2&l.__u)==0&&(l.__e==r&&(r=En(l)),Ts(l,l));return r}function zs(e,t,n){var r,a;if(typeof e.type=="function"){for(r=e.__k,a=0;r&&a<r.length;a++)r[a]&&(r[a].__=e,t=zs(r[a],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=En(e)),t=n.insertBefore(e.__e,t||null));do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function zo(e,t){return t=t||[],e==null||typeof e=="boolean"||(wo(e)?e.some(function(n){zo(n,t)}):t.push(e)),t}function Mu(e,t,n,r){var a,i,s,l=e.key,c=e.type,d=t[n],f=d!=null&&(2&d.__u)==0;if(d===null&&l==null||f&&l==d.key&&c==d.type)return n;if(r>(f?1:0)){for(a=n-1,i=n+1;a>=0||i<t.length;)if((d=t[s=a>=0?a--:i++])!=null&&(2&d.__u)==0&&l==d.key&&c==d.type)return s}return-1}function ms(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||Au.test(t)?n:n+"px"}function Qo(e,t,n,r,a){var i,s;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof r=="string"&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||ms(e.style,t,"");if(n)for(t in n)r&&n[t]==r[t]||ms(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")i=t!=(t=t.replace(ys,"$1")),s=t.toLowerCase(),t=s in e||t=="onFocusOut"||t=="onFocusIn"?s.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r?n[ko]=r[ko]:(n[ko]=fa,e.addEventListener(t,i?pa:da,i)):e.removeEventListener(t,i?pa:da,i);else{if(a=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function gs(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t[er]==null)t[er]=fa++;else if(t[er]<n[ko])return;return n(te.event?te.event(t):t)}}}function ga(e,t,n,r,a,i,s,l,c,d){var f,p,u,h,m,y,_,C,x,k,A,O,q,N,B,Y,se=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(c=!!(32&n.__u),i=[l=t.__e=n.__e]),(f=te.__b)&&f(t);e:if(typeof se=="function"){p=s.length;try{if(x=t.props,k=se.prototype&&se.prototype.render,A=(f=se.contextType)&&r[f.__c],O=f?A?A.props.value:f.__:r,n.__c?C=(u=t.__c=n.__c).__=u.__E:(k?t.__c=u=new se(x,O):(t.__c=u=new Tt(x,O),u.constructor=se,u.render=Ru),A&&A.sub(u),u.state||(u.state={}),u.__n=r,h=u.__d=!0,u.__h=[],u._sb=[]),k&&u.__s==null&&(u.__s=u.state),k&&se.getDerivedStateFromProps!=null&&(u.__s==u.state&&(u.__s=Zt({},u.__s)),Zt(u.__s,se.getDerivedStateFromProps(x,u.__s))),m=u.props,y=u.state,u.__v=t,h)k&&se.getDerivedStateFromProps==null&&u.componentWillMount!=null&&u.componentWillMount(),k&&u.componentDidMount!=null&&u.__h.push(u.componentDidMount);else{if(k&&se.getDerivedStateFromProps==null&&x!==m&&u.componentWillReceiveProps!=null&&u.componentWillReceiveProps(x,O),t.__v==n.__v||!u.__e&&u.shouldComponentUpdate!=null&&u.shouldComponentUpdate(x,u.__s,O)===!1){t.__v!=n.__v&&(u.props=x,u.state=u.__s,u.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(V){V&&(V.__=t)}),or.push.apply(u.__h,u._sb),u._sb=[],u.__h.length&&s.push(u),l=En(n);break e}u.componentWillUpdate!=null&&u.componentWillUpdate(x,u.__s,O),k&&u.componentDidUpdate!=null&&u.__h.push(function(){u.componentDidUpdate(m,y,_)})}if(u.context=O,u.props=x,u.__P=e,u.__e=!1,q=te.__r,N=0,k)u.state=u.__s,u.__d=!1,q&&q(t),f=u.render(u.props,u.state,u.context),or.push.apply(u.__h,u._sb),u._sb=[];else do u.__d=!1,q&&q(t),f=u.render(u.props,u.state,u.context),u.state=u.__s;while(u.__d&&++N<25);u.state=u.__s,u.getChildContext!=null&&(r=Zt(Zt({},r),u.getChildContext())),k&&!h&&u.getSnapshotBeforeUpdate!=null&&(_=u.getSnapshotBeforeUpdate(m,y)),B=f!=null&&f.type===R&&f.key==null?Cs(f.props.children):f,l=ws(e,wo(B)?B:[B],t,n,r,a,i,s,l,c,d),u.base=t.__e,t.__u&=-161,u.__h.length&&s.push(u),C&&(u.__E=u.__=null)}catch(V){if(s.length=p,t.__v=null,c||i!=null){if(V.then){for(t.__u|=c?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;i!=null&&(i[i.indexOf(l)]=null),t.__e=l}else if(i!=null)for(Y=i.length;Y--;)ma(i[Y])}else t.__e=n.__e;t.__k==null&&(t.__k=n.__k||[]),V.then||_s(t),te.__e(V,t,n)}}else i==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):l=t.__e=Iu(n.__e,t,n,r,a,i,s,c,d);return(f=te.diffed)&&f(t),128&t.__u?void 0:l}function _s(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(_s))}function Ss(e,t,n){for(var r=0;r<n.length;r++)ha(n[r],n[++r],n[++r]);te.__c&&te.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(i){i.call(a)})}catch(i){te.__e(i,a.__v)}})}function Cs(e){return typeof e!="object"||e==null||e.__b>0?e:wo(e)?e.map(Cs):e.constructor!==void 0?null:Zt({},e)}function Iu(e,t,n,r,a,i,s,l,c){var d,f,p,u,h,m,y,_=n.props||nr,C=t.props,x=t.type;if(x=="svg"?a="http://www.w3.org/2000/svg":x=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),i!=null){for(d=0;d<i.length;d++)if((h=i[d])&&"setAttribute"in h==!!x&&(x?h.localName==x:h.nodeType==3)){e=h,i[d]=null;break}}if(e==null){if(x==null)return document.createTextNode(C);e=document.createElementNS(a,x,C.is&&C),l&&(te.__m&&te.__m(t,i),l=!1),i=null}if(x==null)_===C||l&&e.data==C||(e.data=C);else{if(i=x=="textarea"&&C.defaultValue!=null?null:i&&ar.call(e.childNodes),!l&&i!=null)for(_={},d=0;d<e.attributes.length;d++)_[(h=e.attributes[d]).name]=h.value;for(d in _)h=_[d],d=="dangerouslySetInnerHTML"?p=h:d=="children"||d in C||d=="value"&&"defaultValue"in C||d=="checked"&&"defaultChecked"in C||Qo(e,d,null,h,a);for(d in C)h=C[d],d=="children"?u=h:d=="dangerouslySetInnerHTML"?f=h:d=="value"?m=h:d=="checked"?y=h:l&&typeof h!="function"||_[d]===h||Qo(e,d,h,_[d],a);if(f)l||p&&(f.__html==p.__html||f.__html==e.innerHTML)||(e.innerHTML=f.__html),t.__k=[];else if(p&&(e.innerHTML=""),ws(t.type=="template"?e.content:e,wo(u)?u:[u],t,n,r,x=="foreignObject"?"http://www.w3.org/1999/xhtml":a,i,s,i?i[0]:n.__k&&En(n,0),l,c),i!=null)for(d=i.length;d--;)ma(i[d]);l&&x!="textarea"||(d="value",x=="progress"&&m==null?e.removeAttribute("value"):m!=null&&(m!==e[d]||x=="progress"&&!m||x=="option"&&m!=_[d])&&Qo(e,d,m,_[d],a),d="checked",y!=null&&y!=e[d]&&Qo(e,d,y,_[d],a))}return e}function ha(e,t,n){try{if(typeof e=="function"){var r=typeof e.__u=="function";r&&e.__u(),r&&t==null||(e.__u=e(t))}else e.current=t}catch(a){te.__e(a,n)}}function Ts(e,t,n){var r,a;if(te.unmount&&te.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||ha(r,null,t)),(r=e.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(i){te.__e(i,t)}r.base=r.__P=r.__n=null}if(r=e.__k)for(a=0;a<r.length;a++)r[a]&&Ts(r[a],t,n||typeof e.type!="function");n||ma(e.__e),e.__c=e.__=e.__e=void 0}function Ru(e,t,n){return this.constructor(e,n)}function Be(e,t,n){var r,a,i,s;t==document&&(t=document.documentElement),te.__&&te.__(e,t),a=(r=typeof n=="function")?null:n&&n.__k||t.__k,i=[],s=[],ga(t,e=(!r&&n||t).__k=Pn(R,null,[e]),a||nr,nr,t.namespaceURI,!r&&n?[n]:a?null:t.firstChild?ar.call(t.childNodes):null,i,!r&&n?n:a?a.__e:t.firstChild,r,s),Ss(i,e,s),e.props.children=null}function ir(e){function t(n){var r,a;return this.getChildContext||(r=new Set,(a={})[t.__c]=this,this.getChildContext=function(){return a},this.componentWillUnmount=function(){r=null},this.shouldComponentUpdate=function(i){this.props.value!=i.value&&r.forEach(function(s){s.__e=!0,ua(s)})},this.sub=function(i){r.add(i);var s=i.componentWillUnmount;i.componentWillUnmount=function(){r&&r.delete(i),s&&s.call(i)}}),n.children}return t.__c="__cC"+xs++,t.__=e,t.Provider=t.__l=(t.Consumer=function(n,r){return n.children(r)}).contextType=t,t}ar=or.slice,te={__e:function(e,t,n,r){for(var a,i,s;t=t.__;)if((a=t.__c)&&!a.__)try{if((i=a.constructor)&&i.getDerivedStateFromError!=null&&(a.setState(i.getDerivedStateFromError(e)),s=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,r||{}),s=a.__d),s)return a.__E=a}catch(l){e=l}throw e}},hs=0,Tu=function(e){return e!=null&&e.constructor===void 0},Tt.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=Zt({},this.state),typeof e=="function"&&(e=e(Zt({},n),this.props)),e&&Zt(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),ua(this))},Tt.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),ua(this))},Tt.prototype.render=R,un=[],bs=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,vs=function(e,t){return e.__v.__b-t.__v.__b},rr.__r=0,ca=Math.random().toString(8),er="__d"+ca,ko="__a"+ca,ys=/(PointerCapture)$|Capture$/i,fa=0,da=gs(!1),pa=gs(!0),xs=0;var fn,Se,ba,As,_o=0,Ns=[],Ne=te,Es=Ne.__b,Ps=Ne.__r,Ms=Ne.diffed,Is=Ne.__c,Rs=Ne.unmount,Ls=Ne.__;function Jn(e,t){Ne.__h&&Ne.__h(Se,e,_o||t),_o=0;var n=Se.__H||(Se.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function T(e){return _o=1,Os(Fs,e)}function Os(e,t,n){var r=Jn(fn++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):Fs(void 0,t),function(l){var c=r.__N?r.__N[0]:r.__[0],d=r.t(c,l);c!==d&&(r.__N=[d,r.__[1]],r.__c.setState({}))}],r.__c=Se,!Se.__f)){var a=function(l,c,d){if(!r.__c.__H)return!0;var f=!1,p=r.__c.props!==l;if(r.__c.__H.__.some(function(h){if(h.__N){f=!0;var m=h.__[0];h.__=h.__N,h.__N=void 0,m!==h.__[0]&&(p=!0)}}),i){var u=i.call(this,l,c,d);return f?u||p:u}return!f||p};Se.__f=!0;var i=Se.shouldComponentUpdate,s=Se.componentWillUpdate;Se.componentWillUpdate=function(l,c,d){if(this.__e){var f=i;i=void 0,a(l,c,d),i=f}s&&s.call(this,l,c,d)},Se.shouldComponentUpdate=a}return r.__N||r.__}function X(e,t){var n=Jn(fn++,3);!Ne.__s&&xa(n.__H,t)&&(n.__=e,n.u=t,Se.__H.__h.push(n))}function So(e,t){var n=Jn(fn++,4);!Ne.__s&&xa(n.__H,t)&&(n.__=e,n.u=t,Se.__h.push(n))}function J(e){return _o=5,At(function(){return{current:e}},[])}function At(e,t){var n=Jn(fn++,7);return xa(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function Qt(e,t){return _o=8,At(function(){return e},t)}function ya(e){var t=Se.context[e.__c],n=Jn(fn++,9);return n.c=e,t?(n.__==null&&(n.__=!0,t.sub(Se)),t.props.value):e.__}function lr(){var e=Jn(fn++,11);if(!e.__){for(var t=Se.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__}function Lu(){for(var e;e=Ns.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(sr),t.__h.some(va),t.__h=[]}catch(n){t.__h=[],Ne.__e(n,e.__v)}}}Ne.__b=function(e){Se=null,Es&&Es(e)},Ne.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Ls&&Ls(e,t)},Ne.__r=function(e){Ps&&Ps(e),fn=0;var t=(Se=e.__c).__H;t&&(ba===Se?(t.__h=[],Se.__h=[],t.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.some(sr),t.__h.some(va),t.__h=[],fn=0)),ba=Se},Ne.diffed=function(e){Ms&&Ms(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Ns.push(t)!==1&&As===Ne.requestAnimationFrame||((As=Ne.requestAnimationFrame)||Du)(Lu)),t.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),ba=Se=null},Ne.__c=function(e,t){t.some(function(n){try{n.__h.some(sr),n.__h=n.__h.filter(function(r){return!r.__||va(r)})}catch(r){t.some(function(a){a.__h&&(a.__h=[])}),t=[],Ne.__e(r,n.__v)}}),Is&&Is(e,t)},Ne.unmount=function(e){Rs&&Rs(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(r){try{sr(r)}catch(a){t=a}}),n.__H=void 0,t&&Ne.__e(t,n.__v))};var Ds=typeof requestAnimationFrame=="function";function Du(e){var t,n=function(){clearTimeout(r),Ds&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);Ds&&(t=requestAnimationFrame(n))}function sr(e){var t=Se,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),Se=t}function va(e){var t=Se;e.__c=e.__(),Se=t}function xa(e,t){return!e||e.length!==t.length||t.some(function(n,r){return n!==e[r]})}function Fs(e,t){return typeof t=="function"?t(e):t}var ee=()=>typeof window<"u"&&window.tangu||{};function cr(e){let t=typeof e?.status=="number"?e.status:0;if(t>=200&&t<300)return{ok:!0,status:t,data:e?.json??null};let n=e?.json&&typeof e.json=="object"?e.json:null,r=typeof n?.error=="string"?n.error:typeof n?.code=="string"?n.code:null,a=typeof n?.detail=="string"?n.detail:typeof n?.message=="string"?n.message:null;return{ok:!1,status:t,code:r,detail:a,transport:typeof e?.error=="string"?e.error:null}}var ka=e=>({ok:!1,status:0,code:null,detail:null,transport:e});async function H(e,t={}){let n=ee().cloudFetch;if(!n)return ka("no_bridge");try{return cr(await n({path:e,...t}))}catch(r){return ka(String(r?.message||r))}}async function dr(e,t){if(!e)return t();try{return cr(await e())}catch(n){return ka(String(n?.message||n))}}var Mn=e=>e.status===401&&(e.transport==="not_signed_in"||e.code===null&&e.detail===null&&e.transport===null);function Et(e){return String(e?.message??e??"").replace(/^Error invoking remote method '[^']*':\s*/,"").replace(/^(?:[A-Za-z]*Error):\s*/,"").trim()}async function mn(e,t,n){let r=ee().cloudInvoke;if(!r)return!1;let a=e==="membership"&&t?n?[e,t,n]:[e,t]:[e];try{return!!(await r("auth:openPayCenter",...a))?.ok}catch{return!1}}async function In(e){let t=ee().openAccountCenter;if(!t)return!1;try{return!!(await t(e)).ok}catch{return!1}}var Nu=0;function o(e,t,n,r,a,i){t||(t={});var s,l,c=t;if("ref"in c)for(l in c={},t)l=="ref"?s=t[l]:c[l]=t[l];var d={type:e,props:c,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Nu,__i:-1,__u:0,__source:a,__self:i};if(typeof e=="function"&&(s=e.defaultProps))for(l in s)c[l]===void 0&&(c[l]=s[l]);return te.vnode&&te.vnode(d),d}var Ou={user:"M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M4 20c.8-3.5 4-5.5 8-5.5s7.2 2 8 5.5",backpack:"M9 5V3h6v2 M6 8a6 6 0 0 1 12 0v12H6V8Z M9 13h6v5H9z M3 11h3v7H3z M18 11h3v7h-3 M10 8h4",gauge:"M4 16a8 8 0 1 1 16 0 M12 16l4-5 M12 16h.01",shield:"M12 3l7 3v5c0 4.5-3 8.2-7 10-4-1.8-7-5.5-7-10V6l7-3Z",chart:"M4 20V10 M10 20V4 M16 20v-7 M21 20H3",message:"M5 4h14a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-7l-5 4v-4H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Z",card:"M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Z M3 10h18 M7 15h4",coins:"M9 11a5 5 0 1 0 0-10 5 5 0 0 0 0 10Z M15.5 9.2A5 5 0 1 1 9.8 16",clock:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M12 7v5l3 2",gift:"M4 11h16v9H4z M3 7h18v4H3z M12 7v13 M12 7c-1.5-3-5-3-5-1s3 1 5 1c2 0 5 1 5-1s-3.5-2-5 1",key:"M8 15a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M11 11h10 M17 11v3 M20 11v2",laptop:"M5 5h14v10H5z M3 19h18",alert:"M12 4l9 16H3l9-16Z M12 10v4 M12 17h.01",external:"M14 4h6v6 M20 4l-9 9 M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5",copy:"M9 9h11v11H9z M5 15H4V4h11v1",check:"M5 12.5l4.5 4.5L19 7.5",chevron:"M9 6l6 6-6 6",back:"M15 6l-6 6 6 6",pencil:"M4 20h4L19 9l-4-4L4 16v4Z M13.5 6.5l4 4",plus:"M12 5v14 M5 12h14",refresh:"M20 11a8 8 0 0 0-14.3-4.9L4 8 M4 4v4h4 M4 13a8 8 0 0 0 14.3 4.9L20 16 M20 20v-4h-4",phone:"M8 3h8a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M11 18h2",mail:"M4 6h16v12H4z M4 7l8 6 8-6",image:"M4 5h16v14H4z M4 16l5-5 4 4 3-3 4 4 M15.5 9.5h.01",x:"M6 6l12 12 M18 6L6 18",logout:"M15 4h4v16h-4 M10 8l-4 4 4 4 M6 12h10",globe:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M3 12h18 M12 3c2.5 2.6 3.8 5.6 3.8 9s-1.3 6.4-3.8 9c-2.5-2.6-3.8-5.6-3.8-9S9.5 5.6 12 3Z",lock:"M6 11h12v9H6z M8.5 11V8a3.5 3.5 0 0 1 7 0v3",palette:"M12 3a9 9 0 0 0 0 18c1.2 0 2-.8 2-1.9 0-.5-.2-.9-.5-1.3-.3-.4-.5-.8-.5-1.3 0-1 .8-1.8 1.8-1.8H17a4 4 0 0 0 4-4c0-4.3-4-7.7-9-7.7Z M7.5 12.5h.01 M9 8.5h.01 M14 7.5h.01",calendar:"M5 5h14v15H5z M5 10h14 M9 3v4 M15 3v4",link:"M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1 M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1",flame:"M12 21a6 6 0 0 0 6-6c0-2.5-1.4-4.4-3-6-.3 1.5-1 2.5-2 3 .3-3-1-6-3.5-8 .2 3-1 4.8-2.2 6.3C6.4 11.5 6 13.2 6 15a6 6 0 0 0 6 6Z",trophy:"M8 4h8v6a4 4 0 0 1-8 0V4Z M8 6H5v1a3 3 0 0 0 3 3 M16 6h3v1a3 3 0 0 1-3 3 M12 14v4 M8.5 20h7",sprout:"M12 20v-8 M12 12c0-3-2-5-6-5 0 3.5 2 5 6 5Z M12 14c0-3 2-5 6-5 0 3.5-2 5-6 5Z",eye:"M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12Z M12 14.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z",download:"M12 4v11 M7.5 11l4.5 4.5 4.5-4.5 M5 20h14",up:"M12 19V5 M6 11l6-6 6 6",down:"M12 5v14 M6 13l6 6 6-6",sparkles:"M12 4l1.8 4.7 4.7 1.8-4.7 1.8L12 17l-1.8-4.7-4.7-1.8 4.7-1.8L12 4Z M18.5 15.5v4 M16.5 17.5h4",bot:"M6 9h12v10H6z M12 9V5 M12 4.5h.01 M9.5 13.5h.01 M14.5 13.5h.01 M3.5 13v3 M20.5 13v3",box:"M12 3l8 4.5v9L12 21l-8-4.5v-9L12 3Z M4 7.5l8 4.5 8-4.5 M12 12v9",grid:"M4 4h7v7H4z M13 4h7v7h-7z M4 13h7v7H4z M13 13h7v7h-7z",note:"M6 3h9l4 4v14H6z M15 3v4h4 M9 12h6 M9 16h4"};function W({name:e,size:t=14,class:n}){return o("svg",{class:n,width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",focusable:"false",children:o("path",{d:Ou[e]})})}function Yn({size:e=12}){return o("svg",{class:"spin",width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","aria-hidden":"true",focusable:"false",children:o("path",{d:"M21 12a9 9 0 1 1-6.2-8.56"})})}var Fu={"sub.identity":"\u63D2\u4EF6 ID","sub.identityHint":"\u63D0\u4EA4\u540E\u81EA\u52A8\u5206\u914D\u552F\u4E00 ID\u3002\u540D\u79F0\u53EF\u4EE5\u91CD\u590D\uFF0C\u66F4\u65B0\u6CBF\u7528\u540C\u4E00\u4E2A ID\u3002","sub.description":"\u8BE6\u7EC6\u63CF\u8FF0","sub.tags":"\u6807\u7B7E","sub.tagsHint":"\u4EE5\u9017\u53F7\u5206\u9694\uFF0C\u6700\u591A 8 \u4E2A","sub.minAppVersion":"\u6700\u4F4E Forsion \u7248\u672C","sub.maxAppVersion":"\u6700\u9AD8\u7248\u672C\uFF08\u4E0D\u542B\uFF09","sub.optional":"\u9009\u586B","sub.platforms":"\u652F\u6301\u7684\u7AEF","sub.requirementsHint":"\u652F\u6301 desktop\u3001macos\u3001windows\u3001linux\u3001android\u3001ios\u3001web\u3002\u7559\u7A7A\u8868\u793A\u672A\u58F0\u660E\u3002ZIP \u6E05\u5355\u4E2D\u7684\u8981\u6C42\u4F1A\u81EA\u52A8\u8BFB\u53D6\uFF0C\u624B\u586B\u503C\u987B\u4E0E\u6E05\u5355\u4E00\u81F4\u3002","sub.err.market_requirements_invalid":"\u7248\u672C\u8981\u6C42\u6216\u5E73\u53F0\u65E0\u6548\u3002","sub.err.market_requirements_mismatch":"\u624B\u586B\u7248\u672C\u8981\u6C42\u4E0E ZIP \u6E05\u5355\u4E0D\u4E00\u81F4\u3002","sub.mine":"\u6211\u7684\u6295\u7A3F","page.submission":"\u63D2\u4EF6\u6295\u7A3F","sub.desc":"\u7BA1\u7406\u4F60\u6295\u7A3F\u7684\u5185\u5BB9\u3001\u5BA1\u6838\u7ED3\u679C\u548C\u7248\u672C\u66F4\u65B0\u3002","sub.new":"\u65B0\u6295\u7A3F","sub.refresh":"\u5237\u65B0","sub.empty":"\u8FD8\u6CA1\u6709\u6295\u7A3F","sub.emptyHint":"\u628A\u4F60\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001Agent \u6216 Space \u5206\u4EAB\u5230\u5E94\u7528\u5E02\u573A\u3002","sub.name":"\u540D\u79F0","sub.summary":"\u7B80\u4ECB","sub.type":"\u5185\u5BB9\u7C7B\u578B","sub.source":"\u53D1\u5E03\u6E20\u9053","sub.type.skill":"\u6280\u80FD","sub.type.agent":"Agent","sub.type.plugin":"\u63D2\u4EF6","sub.type.space":"Space","sub.type.theme":"\u4E3B\u9898","sub.type.amadeus_plugin":"Amadeus \u63D2\u4EF6","sub.pending":"\u5F85\u5BA1\u6838","sub.approved":"\u5DF2\u4E0A\u67B6","sub.rejected":"\u5DF2\u9A73\u56DE","sub.pendingVersion":"v{version} \u66F4\u65B0\u5F85\u5BA1\u6838","sub.rejectedVersion":"v{version} \u66F4\u65B0\u5DF2\u9A73\u56DE","sub.update":"\u63D0\u4EA4\u65B0\u7248\u672C","sub.updateTitle":"\u66F4\u65B0 {name}","sub.submit":"\u63D0\u4EA4\u5BA1\u6838","sub.submitted":"\u6295\u7A3F\u5DF2\u63D0\u4EA4\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u663E\u793A\u5728\u6211\u7684\u6295\u7A3F\u4E2D\u3002","sub.updated":"\u65B0\u7248\u5DF2\u63D0\u4EA4\u5BA1\u6838\uFF0C\u5DF2\u4E0A\u67B6\u7248\u672C\u4ECD\u53EF\u4E0B\u8F7D\u3002","sub.repo":"GitHub \u516C\u5F00\u4ED3\u5E93","sub.npm":"npm \u516C\u5F00\u5305","sub.repoHint":"\u4ECE\u4ED3\u5E93\u8BFB\u53D6 README \u548C Release\uFF1B\u4ED3\u5E93\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.npmHint":"\u4ECE npm \u8BFB\u53D6\u5305\u4FE1\u606F\uFF1B\u5BF9\u5E94\u516C\u5F00\u4ED3\u5E93\u7684\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.reviewHint":"\u65B0\u7248\u672C\u9700\u91CD\u65B0\u5BA1\u6838\uFF0C\u5BA1\u6838\u901A\u8FC7\u540E\u624D\u5411\u7528\u6237\u63D0\u4F9B\u3002\u4F60\u7684 Forsion \u8D26\u53F7\u7528\u4E8E\u7BA1\u7406\u6295\u7A3F\u3002","sub.remoteUpdate":"\u5728\u539F\u6E20\u9053\u53D1\u5E03\u65B0\u7248\u672C\u540E\uFF0C\u7531\u7BA1\u7406\u5458\u91CD\u65B0\u5BA1\u6838\u3002","sub.zip":"ZIP \u5305","sub.zipHint":"\u6700\u5927 50 MB\uFF0C\u5305\u5185\u5305\u542B\u5BF9\u5E94\u7684 manifest \u4E0E\u5165\u53E3\u6587\u4EF6\u3002","sub.version":"\u7248\u672C\u53F7","sub.versionHint":"\u65B0\u7248\u987B\u9AD8\u4E8E\u5F53\u524D\u7248\u672C\uFF0C\u5E76\u4E0E manifest \u4E2D\u7684\u7248\u672C\u4E00\u81F4\u3002","sub.readme":"\u8BF4\u660E\u6587\u6863\uFF08Markdown\uFF09","sub.keep":"\u7559\u7A7A\u4FDD\u6301\u4E0D\u53D8","sub.filter":"\u6309\u72B6\u6001\u7B5B\u9009","sub.all":"\u5168\u90E8","sub.noResults":"\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u6295\u7A3F","sub.downloads":"{n} \u6B21\u4E0B\u8F7D","sub.errName":"\u8BF7\u586B\u5199\u540D\u79F0\u3002","sub.errSource":"\u8BF7\u586B\u5199\u516C\u5F00\u4ED3\u5E93\u5730\u5740\u6216 npm \u5305\u540D\u3002","sub.errZip":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.errLarge":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.errVersion":"\u8BF7\u586B\u5199\u7248\u672C\u53F7\u3002","sub.err.market_npm_invalid":"npm \u5305\u4E0D\u5B58\u5728\u6216\u4E0D\u7B26\u5408\u63D2\u4EF6\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_npm_source":"\u8BF7\u901A\u8FC7 npm \u53D1\u5E03\u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_github_source":"\u8BF7\u5728 GitHub \u53D1\u5E03 Release \u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_not_found":"\u6295\u7A3F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","sub.err.market_zip_required":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.err.market_zip_invalid":"ZIP \u5305\u7ED3\u6784\u4E0D\u7B26\u5408\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_zip_too_large":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.err.market_version_required":"\u8BF7\u586B\u5199\u7248\u672C\u53F7\u3002","sub.err.market_version_invalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u7248\u672C\u53F7\u3002","sub.err.market_version_mismatch":"\u7248\u672C\u53F7\u4E0E\u5305\u5185 manifest \u4E0D\u4E00\u81F4\u3002","sub.err.market_version_not_newer":"\u65B0\u7248\u987B\u9AD8\u4E8E\u5F53\u524D\u5DF2\u4E0A\u67B6\u7248\u672C\u3002","sub.err.market_icon_invalid":"\u56FE\u6807\u5E94\u4E3A 64\u2013512 px \u7684\u6B63\u65B9\u5F62 PNG\u3002","sub.err.market_duplicate":"\u8BE5\u5185\u5BB9\u5DF2\u6709\u6295\u7A3F\uFF0C\u8BF7\u7BA1\u7406\u73B0\u6709\u6295\u7A3F\u3002","sub.err.market_update_pending":"\u5DF2\u6709\u65B0\u7248\u7B49\u5F85\u5BA1\u6838\uFF0C\u8BF7\u5148\u7B49\u5F85\u5BA1\u6838\u7ED3\u679C\u3002","sub.err.market_stale":"\u6295\u7A3F\u5DF2\u53D1\u751F\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","page.account":"\u8D26\u53F7","page.membershipUsage":"\u4F1A\u5458\u4E0E\u7528\u91CF","page.membershipQuota":"\u4F1A\u5458\u4E0E\u989D\u5EA6","page.pointsInvite":"\u79EF\u5206\u4E0E\u9080\u8BF7","page.helpDiagnostics":"\u5E2E\u52A9\u4E0E\u8BCA\u65AD","account.details.title":"\u767B\u5F55\u4E0E\u8D44\u6599","account.details.desc":"\u5934\u50CF\u3001\u6635\u79F0\u4E0E\u7B80\u4ECB\u5728\u300C\u4E2A\u4EBA\u4E3B\u9875\u300D\u4E2D\u7F16\u8F91\u3002","account.details.username":"\u7528\u6237\u540D","diag.unavailable":"\u5F53\u524D\u5BBF\u4E3B\u4E0D\u652F\u6301\u8BCA\u65AD\u6570\u636E\uFF0C\u8BF7\u66F4\u65B0 Forsion \u540E\u91CD\u8BD5\u3002","page.profile":"\u4E2A\u4EBA\u4E3B\u9875","page.quota":"\u989D\u5EA6\u4E0E\u79EF\u5206","page.backpack":"\u80CC\u5305","page.security":"\u5B89\u5168","page.usage":"\u7528\u91CF\u8BB0\u5F55","page.feedback":"\u53CD\u9988","store.group":"\u4F1A\u5458\u4E0E\u79EF\u5206","store.membership":"\u4F1A\u5458","store.membership.desc":"\u5347\u7EA7\u6863\u4F4D\uFF0C\u83B7\u5F97\u66F4\u591A\u6BCF\u65E5\u4E0E\u6BCF\u5468\u989D\u5EA6","store.points":"\u79EF\u5206","store.points.desc":"\u5145\u503C\u79EF\u5206\uFF0C\u7528\u6765\u5151\u6362\u7269\u54C1","store.items":"\u7269\u54C1","store.items.desc":"\u7528\u79EF\u5206\u5151\u6362\u7684\u7269\u54C1\uFF0C\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.status":"\u6863\u4F4D\u4E0E\u79EF\u5206","store.tier":"\u5F53\u524D\u6863\u4F4D","store.balance":"\u79EF\u5206\u4F59\u989D","store.choosePlan":"\u9009\u62E9\u6863\u4F4D","store.payHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u56DE\u5230\u5E94\u7528\u540E\u81EA\u52A8\u5237\u65B0","store.payOff":"\u6682\u65F6\u4E0D\u80FD\u8D2D\u4E70","store.period":"\u4ED8\u8D39\u5468\u671F","store.period.monthly":"\u6708\u4ED8","store.period.quarterly":"\u5B63\u4ED8","store.period.yearly":"\u5E74\u4ED8","store.per.monthly":"/ \u6708","store.per.quarterly":"/ \u5B63","store.per.yearly":"/ \u5E74","store.currentTier":"\u5F53\u524D\u6863\u4F4D","store.pay":"\u53BB\u652F\u4ED8","store.payPrice":"{price} \u53BB\u652F\u4ED8","store.noPlans":"\u6682\u65F6\u6CA1\u6709\u53EF\u9009\u7684\u6863\u4F4D","store.packs":"\u79EF\u5206\u5305","store.packsHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u4ED8\u6B3E\u540E\u79EF\u5206\u5373\u65F6\u5230\u8D26","store.noPacks":"\u6682\u65F6\u6CA1\u6709\u79EF\u5206\u5305","store.kind.pack":"\u79EF\u5206\u5305","store.kind.card":"\u9053\u5177","store.kind.code":"\u5151\u6362\u7801","store.kind.item":"\u7269\u54C1","store.nPoints":"{n} \u79EF\u5206","store.instant":"\u4ED8\u6B3E\u540E\u5373\u65F6\u5230\u8D26","store.redeemTitle":"\u79EF\u5206\u5151\u6362","store.redeemHint":"\u7528\u79EF\u5206\u5151\u6362\u5728\u5E94\u7528\u5185\u76F4\u63A5\u5B8C\u6210\uFF0C\u5151\u6362\u540E\u7269\u54C1\u8FDB\u80CC\u5305","store.redeem":"{n} \u79EF\u5206\u5151\u6362","store.redeemConfirm":"\u786E\u8BA4\u82B1 {n} \u79EF\u5206","store.redeemed":"\u5DF2\u5151\u6362\uFF0C\u7269\u54C1\u5728\u80CC\u5305\u91CC","store.uncertain":"\u6CA1\u6536\u5230\u7ED3\u679C\u3002\u5148\u5230\u80CC\u5305\u770B\u4E00\u4E0B\u6709\u6CA1\u6709\u5230\u8D26\uFF0C\u518D\u51B3\u5B9A\u8981\u4E0D\u8981\u91CD\u8BD5\u3002","store.soldOut":"\u5DF2\u552E\u7F44","store.left":"\u4F59 {n}","store.toBackpack":"\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.limitReached":"\u5DF2\u8FBE\u8D2D\u4E70\u4E0A\u9650","store.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u6682\u65F6\u4E0D\u80FD\u5151\u6362","store.noItems":"\u6682\u65F6\u6CA1\u6709\u53EF\u5151\u6362\u7684\u7269\u54C1","store.itemsOff":"\u7269\u54C1\u5151\u6362\u6682\u672A\u5F00\u653E","store.openBackpack":"\u6253\u5F00\u80CC\u5305","backpack.desc":"\u5728\u8FD9\u91CC\u67E5\u770B\u4F60\u83B7\u5F97\u7684\u7269\u54C1\uFF0C\u70B9\u51FB\u683C\u5B50\u67E5\u770B\u8BE6\u60C5\u3002","backpack.refresh":"\u5237\u65B0","backpack.total":"\u5171 {n} \u4EF6\u7269\u54C1","backpack.grid":"\u80CC\u5305\u7269\u54C1","backpack.slot":"{name}\uFF0C\u6570\u91CF {n}","backpack.item":"\u7269\u54C1","backpack.empty":"\u80CC\u5305\u8FD8\u662F\u7A7A\u7684","backpack.emptyHint":"\u5151\u6362\u6216\u83B7\u8D60\u7684\u7269\u54C1\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","backpack.select":"\u70B9\u51FB\u7269\u54C1\u67E5\u770B\u8BE6\u60C5","backpack.details":"\u7269\u54C1\u8BE6\u60C5","backpack.quantity":"\u6301\u6709\u6570\u91CF","backpack.acquired":"\u83B7\u5F97\u65F6\u95F4","backpack.source":"\u83B7\u5F97\u65B9\u5F0F","backpack.source.points":"\u79EF\u5206\u5151\u6362","backpack.source.admin":"\u8D60\u9001","backpack.source.reward":"\u5956\u52B1","backpack.source.other":"\u4E91\u7AEF\u53D1\u653E","backpack.consumable":"\u6D88\u8017\u54C1","backpack.voucher":"\u5361\u5238","backpack.getCards":"\u5151\u6362\u91CD\u7F6E\u5361","backpack.manageCards":"\u4F7F\u7528\u6216\u5151\u6362","backpack.reveal":"\u67E5\u770B\u5361\u5BC6","backpack.copyKey":"\u590D\u5236\u5361\u5BC6","backpack.noKey":"\u8FD9\u4EF6\u7269\u54C1\u6CA1\u6709\u5361\u5BC6\u3002","backpack.use":"\u4F7F\u7528","backpack.confirmUse":"\u786E\u8BA4\u4F7F\u7528","backpack.consumeConfirm":"\u4F7F\u7528\u540E\u6D88\u8017 1 \u4EF6\u7269\u54C1\u3002","backpack.collectible":"\u7EAA\u5FF5\u54C1","backpack.effect.points":"+{n} \u79EF\u5206","backpack.effect.cards":"+{n} \u5F20\u91CD\u7F6E\u5361","backpack.effect.quota":"\u91CD\u7F6E\u4ECA\u65E5\u4E0E\u672C\u5468\u989D\u5EA6","backpack.rarity.common":"\u666E\u901A","backpack.rarity.rare":"\u7A00\u6709","backpack.rarity.epic":"\u53F2\u8BD7","backpack.rarity.legendary":"\u4F20\u8BF4","backpack.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u5DF2\u4E0D\u53EF\u7528\uFF0C\u8BF7\u5237\u65B0\u80CC\u5305\u3002","backpack.notUsable":"\u8FD9\u4EF6\u7269\u54C1\u4E0D\u80FD\u4F7F\u7528\u3002","backpack.quotaUnavailable":"\u8BF7\u5148\u4F7F\u7528\u4E91\u7AEF AI \u521D\u59CB\u5316\u989D\u5EA6\uFF0C\u518D\u4F7F\u7528\u8FD9\u4EF6\u7269\u54C1\u3002","common.cancel":"\u53D6\u6D88","common.copied":"\u5DF2\u590D\u5236","common.copyFailed":"\u590D\u5236\u5931\u8D25","common.done":"\u5B8C\u6210","common.loadFailed":"\u6CA1\u80FD\u52A0\u8F7D","common.loadMore":"\u52A0\u8F7D\u66F4\u591A","common.loading":"\u52A0\u8F7D\u4E2D\u2026","common.openInBrowser":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00","common.retry":"\u91CD\u8BD5","common.save":"\u4FDD\u5B58","common.thisWeek":"\u672C\u5468","common.today":"\u4ECA\u65E5","common.unlimited":"\u4E0D\u9650","ann.eyebrow":"FORSION \xB7 \u516C\u544A","ann.close":"\u5173\u95ED","ann.ok":"\u77E5\u9053\u4E86","signin.button":"\u767B\u5F55 Forsion","signin.desc":"\u767B\u5F55 Forsion \u8D26\u53F7\u540E\uFF0C\u53EF\u4EE5\u5728\u8FD9\u91CC\u7BA1\u7406\u8D26\u53F7\u3001\u989D\u5EA6\u3001\u5B89\u5168\u3001\u6295\u7A3F\u4E0E\u53CD\u9988\u3002","signin.pending":"\u7B49\u5F85\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u767B\u5F55\u2026","signin.deviceHint":"\u6D4F\u89C8\u5668\u4F1A\u81EA\u52A8\u6253\u5F00\u767B\u5F55\u9875\uFF1B\u6CA1\u6709\u6253\u5F00\u7684\u8BDD\uFF0C\u7528\u624B\u673A\u626B\u7801\u6216\u6253\u5F00\u4E0B\u9762\u7684\u94FE\u63A5\uFF0C\u5E76\u6838\u5BF9\u9A8C\u8BC1\u7801\u3002","signin.code":"\u9A8C\u8BC1\u7801","signin.openLink":"\u6253\u5F00\u767B\u5F55\u9875","signin.copyLink":"\u590D\u5236\u94FE\u63A5","signin.qrLabel":"\u767B\u5F55\u4E8C\u7EF4\u7801","account.profile.title":"\u4E2A\u4EBA\u8D44\u6599","account.profile.desc":"\u5934\u50CF\u3001\u6635\u79F0\uFF0C\u4EE5\u53CA\u7ED1\u5B9A\u7684\u624B\u673A\u548C\u90AE\u7BB1","account.avatar.change":"\u66F4\u6362\u5934\u50CF","account.avatar.saved":"\u5934\u50CF\u5DF2\u66F4\u65B0","account.nickname.edit":"\u4FEE\u6539\u6635\u79F0","account.nickname.label":"\u6635\u79F0","account.nickname.saved":"\u6635\u79F0\u5DF2\u66F4\u65B0","account.role.admin":"\u7BA1\u7406\u5458","account.username":"\u7528\u6237\u540D {name}","account.contact.phone":"\u624B\u673A","account.contact.email":"\u90AE\u7BB1","account.contact.unbound":"\u672A\u7ED1\u5B9A","account.contact.manage":"\u53BB\u5B89\u5168\u9875\u7BA1\u7406","account.web.open":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u4E2A\u4EBA\u4E2D\u5FC3","account.web.desc":"\u4E91\u7A7A\u95F4\u3001AI \u5927\u8111\u4E0E\u4E3B\u9898\u5728\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7BA1\u7406\u3002","member.title":"\u4F1A\u5458","member.desc":"\u5F53\u524D\u6863\u4F4D\u3001\u65B9\u6848\u4E0E\u5230\u671F\u65E5","member.upgrade":"\u5347\u7EA7\u4F1A\u5458","member.renew":"\u7EED\u8D39","member.freeName":"\u514D\u8D39\u7248","member.freeHint":"\u5347\u7EA7\u4F1A\u5458\u53EF\u4EE5\u83B7\u5F97\u66F4\u591A AI \u989D\u5EA6","member.expires":"{date} \u5230\u671F","member.noExpiry":"\u957F\u671F\u6709\u6548","member.loadFailed":"\u4F1A\u5458\u4FE1\u606F\u6682\u65F6\u62FF\u4E0D\u5230\u3002","local.title":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u8D26\u53F7","local.desc":"\u5728\u767B\u5F55\u8FC7\u7684\u8D26\u53F7\u4E4B\u95F4\u5207\u6362","local.current":"\u5F53\u524D","local.switch":"\u5207\u6362","local.add":"\u767B\u5F55\u5176\u4ED6\u8D26\u53F7","local.signOut":"\u9000\u51FA\u767B\u5F55","local.empty":"\u8FD8\u6CA1\u6709\u4FDD\u5B58\u7684\u8D26\u53F7","local.loadFailed":"\u8D26\u53F7\u5217\u8868\u6682\u65F6\u8BFB\u4E0D\u5230","diag.title":"\u8BCA\u65AD\u6570\u636E","diag.desc":"\u5E2E\u52A9\u6211\u4EEC\u6392\u67E5\u95EE\u9898\u3001\u6539\u8FDB Forsion\u3002\u9ED8\u8BA4\u5173\u95ED\u3002","diag.enable":"\u4E0A\u4F20\u8BCA\u65AD\u6570\u636E","diag.enableDesc":"\u6253\u5F00\u540E\uFF0C\u8FD9\u53F0\u7535\u8111\u4F1A\u5B9A\u671F\u4E0A\u4F20\u4E00\u4EFD Forsion \u4FE1\u606F\u5FEB\u7167\u5230\u4F60\u7684 Forsion \u8D26\u53F7\uFF0CForsion \u56E2\u961F\u53EF\u4EE5\u67E5\u770B\u3002\u591A\u4E45\u4E0A\u4F20\u4E00\u6B21\u7531 Forsion \u56E2\u961F\u8BBE\u5B9A\uFF0C\u9ED8\u8BA4\u6BCF\u5929\u4E00\u6B21\u3002\u968F\u65F6\u53EF\u4EE5\u5173\u95ED\u3002","diag.collected":"\u4F1A\u4E0A\u4F20","diag.item.app":"\u5E94\u7528\u4E0E\u7CFB\u7EDF\u7684\u7248\u672C\uFF0C\u8FD9\u53F0\u7535\u8111\u7684\u540D\u5B57\u3001\u5185\u5B58\u4E0E\u78C1\u76D8\u4F59\u91CF","diag.item.settings":"\u6A21\u578B\u4E0E\u8BED\u97F3\u7684\u9009\u62E9\uFF0C\u540E\u53F0 Agent \u4E0E\u63D2\u4EF6\u8BBE\u7F6E\u91CC\u7684\u5F00\u5173\u548C\u6570\u503C\uFF0CMCP \u670D\u52A1\u4E0E\u6D88\u606F\u901A\u9053\u7684\u540D\u5B57\u548C\u5F00\u5173","diag.item.agents":"Agent \u4E0E\u56E2\u961F\u7684\u914D\u7F6E\uFF08\u540D\u5B57\u3001\u6A21\u578B\u8FD9\u7C7B\u9009\u9879\uFF1B\u63CF\u8FF0\u4E0E\u63D0\u793A\u8BCD\u53EA\u8BB0\u957F\u5EA6\uFF0C\u6B63\u6587\u5F52\u4E0B\u9762\u300C\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55\u300D\u90A3\u4E2A\u5F00\u5173\uFF09","diag.item.plugins":"\u5DF2\u5B89\u88C5\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001\u4E3B\u9898\u548C Space \u7684\u540D\u5B57\u4E0E\u7248\u672C","diag.item.runs":"\u6700\u8FD1 7 \u5929\u7684\u8FD0\u884C\u8BB0\u5F55\uFF1A\u6BCF\u6B21\u8FD0\u884C\u7684\u72B6\u6001\u548C\u62A5\u9519\u539F\u56E0\uFF0C\u6A21\u578B\u8C03\u7528\u4E0E\u5DE5\u5177\u7684\u7528\u91CF\u3001\u8017\u65F6\uFF08\u4E0D\u5E26\u5BF9\u8BDD\u5185\u5BB9\u548C\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\uFF09\uFF0C\u4EE5\u53CA\u5F15\u64CE\u6700\u8FD1\u7684\u8FD0\u884C\u65E5\u5FD7","diag.notCollected":"\u4E0D\u4F1A\u4E0A\u4F20\uFF1A\u4FDD\u5B58\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u767B\u5F55\u51ED\u636E\u4E0E API \u5BC6\u94A5\u3001\u7B14\u8BB0\u6587\u4EF6\u3001Agent \u7684\u8D44\u6599\u5E93\u3001\u63D2\u4EF6\u6570\u636E\u3002","diag.sessions":"\u5305\u542B\u4F1A\u8BDD\u5185\u5BB9","diag.sessionsDesc":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u5BF9\u8BDD\uFF1A\u4F60\u548C Agent \u7684\u6D88\u606F\u6587\u5B57\u3001Agent \u7684\u601D\u8003\u8FC7\u7A0B\u548C\u7528\u5230\u7684\u5DE5\u5177\u540D\uFF0C\u5305\u62EC\u56E2\u961F\u6210\u5458\u3001\u8BA8\u8BBA\u3001\u59D4\u6D3E\u5728\u540E\u53F0\u505A\u7684\u90A3\u90E8\u5206\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\u548C\u9644\u4EF6\u672C\u8EAB\u4E0D\u5E26\uFF1B\u6D88\u606F\u91CC\u51FA\u73B0\u7684\u6587\u4EF6\u540D\u3001Agent \u5728\u56DE\u590D\u91CC\u590D\u8FF0\u7684\u7B14\u8BB0\u6216\u6587\u4EF6\u5185\u5BB9\u4F1A\u5728\u5176\u4E2D\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.memory":"\u5305\u542B Agent \u7684\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55","diag.memoryDesc":"\u6BCF\u4E2A Agent \u7684\u4EBA\u8BBE\uFF08\u5305\u62EC\u914D\u7F6E\u91CC\u7684\u63CF\u8FF0\u548C\u5F00\u53D1\u8005\u6307\u4EE4\uFF09\uFF0C\u548C\u5B83\u81EA\u5DF1\u6512\u4E0B\u6765\u7684\u5185\u5BB9\uFF1A\u8BB0\u5FC6\u548C\u8FD8\u6CA1\u6574\u7406\u7684\u8BB0\u5FC6\u5019\u9009\u3001\u8FDB\u5316\u8BB0\u5F55\u3001\u5199\u7ED9\u4F60\u7684\u534F\u4F5C\u8BF4\u660E\u3001\u6700\u8FD1 7 \u5929\u7684\u65E5\u5FD7\u548C\u8BB0\u5FC6\u6574\u7406\u8BB0\u5F55\uFF0C\u4EE5\u53CA\u9879\u76EE\u8BB0\u5FC6\uFF1B\u8FD8\u6709\u56E2\u961F\u7684\u8BBE\u5B9A\u548C\u4F60\u7684\u7528\u6237\u753B\u50CF\u3002\u8FD9\u4E9B\u662F\u4F60\u7ED9 Agent \u548C\u56E2\u961F\u5199\u7684\u8BBE\u5B9A\uFF0C\u548C Agent \u4ECE\u5BF9\u8BDD\u91CC\u8BB0\u4E0B\u7684\u5173\u4E8E\u4F60\u548C\u4F60\u7684\u5DE5\u4F5C\u7684\u4E8B\u5B9E\uFF0C\u6BCF\u6B21\u4E0A\u4F20\u5B83\u4EEC\u5F53\u524D\u7684\u5185\u5BB9\uFF08\u5F88\u957F\u7684\u4F1A\u622A\u65AD\uFF09\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.activity":"\u5305\u542B\u6D3B\u52A8\u65E5\u5FD7","diag.activityDesc":"\u6D3B\u52A8\u8BB0\u5F55\u91CC\u6709\u5BF9\u8BDD\u5F00\u5934\u7684\u51E0\u5341\u4E2A\u5B57\u548C\u7B14\u8BB0\u6587\u4EF6\u540D\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.last":"\u4E0A\u6B21\u4E0A\u4F20\uFF1A{time}","diag.noUpload":"\u8FD8\u6CA1\u6709\u4E0A\u4F20\u8FC7","diag.freq.hour":"\u6BCF\u5C0F\u65F6\u4E00\u6B21","diag.freq.hours":"\u6BCF {n} \u5C0F\u65F6\u4E00\u6B21","diag.freq.day":"\u6BCF\u5929\u4E00\u6B21","diag.freq.days":"\u6BCF {n} \u5929\u4E00\u6B21","diag.freq.manual":"Forsion \u56E2\u961F\u9700\u8981\u65F6\u624D\u91C7\u96C6","diag.retention":"\u4E91\u7AEF\u4FDD\u7559\u8FD9\u53F0\u7535\u8111\u6700\u8FD1 {n} \u5929\u7684\u5FEB\u7167\u3002\u5173\u95ED\u540E\u4E0D\u518D\u4E0A\u4F20\uFF1B\u5DF2\u4E0A\u4F20\u7684\u5FEB\u7167\u4ECD\u7559\u5728\u4E91\u7AEF\uFF0C\u9700\u8981\u5220\u9664\u53EF\u4EE5\u5728\u300C\u53CD\u9988\u300D\u91CC\u544A\u8BC9\u6211\u4EEC\u3002","diag.uploadNow":"\u7ACB\u5373\u4E0A\u4F20","diag.uploaded":"\u5DF2\u4E0A\u4F20","diag.failed":"\u4E0A\u4F20\u5931\u8D25\uFF1A{reason}","quota.ai.title":"AI \u989D\u5EA6","quota.ai.desc":"\u4ECA\u65E5\u548C\u672C\u5468\u5404\u8FD8\u5269\u591A\u5C11\uFF1B\u7528\u5B8C\u540E\u53EF\u4EE5\u7528\u989D\u5EA6\u91CD\u7F6E\u5361\u6062\u590D","quota.resetDaily":"\u6BCF\u5929 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","quota.resetWeekly":"{date} 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","card.title":"\u989D\u5EA6\u91CD\u7F6E\u5361","card.desc":"\u628A\u4ECA\u65E5\u548C\u672C\u5468\u7684 AI \u989D\u5EA6\u6062\u590D\u5230 100%","card.owned":"\u6301\u6709 {n} \u5F20","card.use":"\u4F7F\u7528\u4E00\u5F20","card.useConfirm":"\u786E\u8BA4\u4F7F\u7528","card.used":"\u5DF2\u4F7F\u7528 1 \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","card.left":"\u8FD8\u5269 {n} \u5F20","card.noneHint":"\u6CA1\u6709\u989D\u5EA6\u91CD\u7F6E\u5361\u4E86\uFF0C\u53EF\u4EE5\u7528\u79EF\u5206\u5151\u6362\u3002","card.exchange":"\u7528\u79EF\u5206\u5151\u6362","card.price":"\u6BCF\u5F20 {price} \u79EF\u5206\uFF0C\u4E00\u6B21 1\u201350 \u5F20","card.count":"\u5151\u6362\u5F20\u6570","card.cost":"\u82B1\u8D39 {cost} \u79EF\u5206","card.countHint":"\u586B 1\u201350","card.exchangeButton":"\u5151\u6362","card.exchangeConfirm":"\u786E\u8BA4\u82B1\u8D39 {cost} \u79EF\u5206","card.exchanged":"\u5DF2\u5151\u6362 {n} \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","points.title":"\u79EF\u5206","points.desc":"\u79EF\u5206\u53EF\u4EE5\u5151\u6362\u989D\u5EA6\u91CD\u7F6E\u5361","points.balance":"\u4F59\u989D","points.balanceFailed":"\u4F59\u989D\u6682\u65F6\u62FF\u4E0D\u5230","points.recharge":"\u5145\u503C\u79EF\u5206","bg.title":"\u540E\u53F0\u989D\u5EA6","bg.desc":"Muse \u4E0E\u81EA\u52A8\u5316\u4F7F\u7528\uFF0C\u548C AI \u989D\u5EA6\u5206\u5F00\u8BA1\u7B97","bg.autoMain":"\u7528\u5B8C\u540E\u6539\u7528 AI \u989D\u5EA6\u7EE7\u7EED","bg.autoMainDesc":"\u5173\u7740\u65F6\uFF0C\u540E\u53F0\u989D\u5EA6\u7528\u5B8C\u540E Muse \u4E0E\u81EA\u52A8\u5316\u4F1A\u6682\u505C","bg.convert":"\u4ECE AI \u989D\u5EA6\u8F6C\u5165","bg.convertDesc":"\u6309 AI \u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B\u8F6C\u5165\uFF0C\u672C\u5468\u671F\u5185\u6709\u6548","bg.convertConfirm":"\u786E\u8BA4\u8F6C\u5165 {pct}%","bg.converted":"\u5DF2\u4ECE AI \u989D\u5EA6\u8F6C\u5165 {pct}%","invite.title":"\u9080\u8BF7\u4E0E\u5151\u6362","invite.desc":"\u9080\u8BF7\u597D\u53CB\u6CE8\u518C\uFF0C\u6216\u5151\u6362\u4F60\u6536\u5230\u7684\u7801","invite.myCode":"\u6211\u7684\u9080\u8BF7\u7801","invite.count":"\u5DF2\u9080\u8BF7 {n} \u4EBA","invite.copyCode":"\u590D\u5236\u9080\u8BF7\u7801","invite.copyLink":"\u590D\u5236\u9080\u8BF7\u94FE\u63A5","invite.loadFailed":"\u9080\u8BF7\u7801\u6682\u65F6\u62FF\u4E0D\u5230","invite.claim":"\u586B\u5199\u9080\u8BF7\u7801","invite.claimDesc":"\u6CE8\u518C\u540E 7 \u5929\u5185\uFF0C\u53EF\u4EE5\u8865\u586B\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimPlaceholder":"\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimSubmit":"\u63D0\u4EA4","invite.claimed":"\u9080\u8BF7\u7801\u5DF2\u751F\u6548","redeem.title":"\u5151\u6362\u7801","redeem.desc":"\u5151\u6362\u79EF\u5206\u3001\u4F1A\u5458\u6216\u5176\u4ED6\u5956\u52B1","redeem.placeholder":"\u8F93\u5165\u5151\u6362\u7801","redeem.submit":"\u5151\u6362","redeem.success":"\u5151\u6362\u6210\u529F","redeem.successWith":"\u5151\u6362\u6210\u529F\uFF1A{what}","redeem.gotPoints":"{n} \u79EF\u5206","redeem.gotMembership":"\u4F1A\u5458","sec.methods.title":"\u767B\u5F55\u65B9\u5F0F","sec.methods.desc":"\u624B\u673A\u548C\u90AE\u7BB1\u53EF\u4EE5\u7528\u6765\u767B\u5F55\u3001\u627E\u56DE\u5BC6\u7801","sec.bind":"\u7ED1\u5B9A","sec.change":"\u66F4\u6362","sec.phone":"\u624B\u673A\u53F7","sec.email":"\u90AE\u7BB1\u5730\u5740","sec.newPhone":"\u65B0\u624B\u673A\u53F7","sec.newEmail":"\u65B0\u90AE\u7BB1\u5730\u5740","sec.phonePlaceholder":"\u4E2D\u56FD\u5927\u9646\u53F7\u7801\u76F4\u63A5\u586B\uFF0C\u5176\u4ED6\u5730\u533A\u5E26 +\u533A\u53F7","sec.emailPlaceholder":"name@example.com","sec.code":"\u9A8C\u8BC1\u7801","sec.codePlaceholder":"\u8F93\u5165\u9A8C\u8BC1\u7801","sec.sendCode":"\u53D1\u9001\u9A8C\u8BC1\u7801","sec.resendIn":"{s} \u79D2\u540E\u91CD\u53D1","sec.codeSent":"\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001","sec.bindSubmit":"\u786E\u8BA4\u7ED1\u5B9A","sec.phoneBound":"\u624B\u673A\u5DF2\u7ED1\u5B9A","sec.emailBound":"\u90AE\u7BB1\u5DF2\u7ED1\u5B9A","sec.devices.title":"\u767B\u5F55\u8BBE\u5907","sec.devices.desc":"\u62C5\u5FC3\u8D26\u53F7\u88AB\u522B\u4EBA\u7528\u4E86\uFF0C\u53EF\u4EE5\u8BA9\u6240\u6709\u8BBE\u5907\u91CD\u65B0\u767B\u5F55","sec.logoutAll":"\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDesc":"\u5305\u62EC\u8FD9\u53F0\u7535\u8111\uFF0C\u6240\u6709\u8BBE\u5907\u90FD\u8981\u91CD\u65B0\u767B\u5F55","sec.logoutAllConfirm":"\u786E\u8BA4\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDone":"\u5DF2\u9000\u51FA\u6240\u6709\u8BBE\u5907","pw.title":"\u5BC6\u7801","pw.desc":"{min}\u2013{max} \u4F4D\uFF0C\u542B\u5C0F\u5199\u5B57\u6BCD\u3001\u5927\u5199\u5B57\u6BCD\u548C\u7279\u6B8A\u5B57\u7B26\uFF0C\u4E0D\u80FD\u6709\u7A7A\u683C","pw.change":"\u4FEE\u6539\u5BC6\u7801","pw.modeLabel":"\u4FEE\u6539\u65B9\u5F0F","pw.mode.current":"\u7528\u5F53\u524D\u5BC6\u7801","pw.mode.code":"\u7528\u9A8C\u8BC1\u7801","pw.current":"\u5F53\u524D\u5BC6\u7801","pw.currentRequired":"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801","pw.new":"\u65B0\u5BC6\u7801","pw.confirm":"\u518D\u8F93\u4E00\u6B21\u65B0\u5BC6\u7801","pw.mismatch":"\u4E24\u6B21\u8F93\u5165\u7684\u65B0\u5BC6\u7801\u4E0D\u4E00\u81F4","pw.submit":"\u4FEE\u6539\u5BC6\u7801","pw.submitReset":"\u8BBE\u7F6E\u65B0\u5BC6\u7801","pw.changed":"\u5BC6\u7801\u5DF2\u66F4\u65B0","pw.noPasswordYet":"\u8FD9\u4E2A\u8D26\u53F7\u8FD8\u6CA1\u6709\u8BBE\u7F6E\u5BC6\u7801\uFF0C\u8BF7\u6539\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u3002","pw.codeNeedsContact":"\u7ED1\u5B9A\u624B\u673A\u6216\u90AE\u7BB1\u540E\uFF0C\u624D\u80FD\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u5BC6\u7801\u3002","pw.via":"\u9A8C\u8BC1\u7801\u53D1\u5230","pw.codeTo":"\u9A8C\u8BC1\u7801\u4F1A\u53D1\u5230 {target}","pw.rulesLabel":"\u5BC6\u7801\u89C4\u5219","pw.req.length":"{min}\u2013{max} \u4F4D","pw.req.lower":"\u542B\u5C0F\u5199\u5B57\u6BCD","pw.req.upper":"\u542B\u5927\u5199\u5B57\u6BCD","pw.req.special":"\u542B\u7279\u6B8A\u5B57\u7B26","pw.req.space":"\u4E0D\u542B\u7A7A\u683C","pw.rule.format":"\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E","pw.rule.min":"\u5BC6\u7801\u81F3\u5C11 8 \u4F4D","pw.rule.max":"\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D","pw.rule.space":"\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C","pw.rule.lower":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD","pw.rule.upper":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD","pw.rule.special":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26","del.title":"\u6CE8\u9500\u8D26\u53F7","del.desc":"\u6C38\u4E45\u5220\u9664\u8D26\u53F7\u548C\u5168\u90E8\u6570\u636E\uFF0C\u65E0\u6CD5\u6062\u590D","del.start":"\u6CE8\u9500\u8D26\u53F7","del.warn":"\u6CE8\u9500\u540E\uFF0C\u8D26\u53F7\u3001\u79EF\u5206\u3001\u4F1A\u5458\u3001\u4E91\u7A7A\u95F4\u548C\u5168\u90E8\u6570\u636E\u90FD\u4F1A\u88AB\u5220\u9664\uFF0C\u65E0\u6CD5\u627E\u56DE\u3002","del.methodLabel":"\u9A8C\u8BC1\u65B9\u5F0F","del.byCode":"\u9A8C\u8BC1\u7801","del.byPassword":"\u5BC6\u7801","del.codeLabel":"\u53D1\u5230 {target} \u7684\u9A8C\u8BC1\u7801","del.passwordLabel":"\u8D26\u53F7\u5BC6\u7801","del.submit":"\u6CE8\u9500\u8D26\u53F7","del.confirm":"\u786E\u8BA4\u6C38\u4E45\u6CE8\u9500","del.done":"\u8D26\u53F7\u5DF2\u6CE8\u9500","usage.overview.title":"\u7528\u91CF\u6982\u89C8","usage.overview.desc":"\u6240\u9009\u65F6\u95F4\u6BB5\u5185\u7684\u8BF7\u6C42\u4E0E AI \u989D\u5EA6\u6D88\u8017","usage.range":"\u65F6\u95F4\u8303\u56F4","usage.days":"{n} \u5929","usage.requests":"\u8BF7\u6C42\u6B21\u6570","usage.successRate":"\u6210\u529F\u7387","usage.consumption":"AI \u989D\u5EA6\u6D88\u8017","usage.ofToday":"\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650","usage.unlimitedNote":"\u4F60\u7684 AI \u989D\u5EA6\u4E0D\u9650\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.noLimitNote":"\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u4E3A 0 \u6216\u6682\u65F6\u62FF\u4E0D\u5230\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.byModel.title":"\u6309\u6A21\u578B","usage.byModel.desc":"\u5404\u6A21\u578B\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.byApp.title":"\u6309\u5E94\u7528","usage.byApp.desc":"\u5404\u5E94\u7528\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.col.model":"\u6A21\u578B","usage.col.app":"\u5E94\u7528","usage.col.requests":"\u8BF7\u6C42","usage.col.consumption":"\u989D\u5EA6\u6D88\u8017","usage.empty":"\u8FD9\u6BB5\u65F6\u95F4\u6CA1\u6709\u7528\u91CF","usage.appUnknown":"\u5176\u4ED6","usage.recent.title":"\u6700\u8FD1\u6D88\u8017","usage.recent.desc":"\u6BCF\u6B21\u8C03\u7528\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B","usage.recentEmpty":"\u8FD8\u6CA1\u6709\u6D88\u8017\u8BB0\u5F55","usage.failed":"\u5931\u8D25","usage.shown":"\u5DF2\u663E\u793A {shown} / {total} \u6761","fb.list.title":"\u6211\u7684\u53CD\u9988","fb.list.desc":"\u63D0\u4EA4\u8FC7\u7684\u95EE\u9898\u548C\u5EFA\u8BAE\uFF0C\u56DE\u590D\u4F1A\u663E\u793A\u5728\u8FD9\u91CC","fb.new":"\u65B0\u5EFA\u53CD\u9988","fb.empty":"\u8FD8\u6CA1\u6709\u53CD\u9988","fb.untitled":"\u672A\u547D\u540D\u53CD\u9988","fb.unread":"\u6709\u65B0\u56DE\u590D","fb.shown":"\u5DF2\u663E\u793A {n} \u6761","fb.submitted":"\u5DF2\u63D0\u4EA4\uFF0C\u6211\u4EEC\u4F1A\u5C3D\u5FEB\u56DE\u590D","fb.descLabel":"\u63CF\u8FF0\u95EE\u9898\u6216\u5EFA\u8BAE","fb.descPlaceholder":"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF0C\u4F60\u671F\u671B\u600E\u6837\u2026\u2026","fb.imagesHint":"\u6700\u591A\u9644 {n} \u5F20\u622A\u56FE\uFF08\u6BCF\u5F20\u4E0D\u8D85\u8FC7 5MB\uFF09\uFF0C\u53EF\u4EE5\u7C98\u8D34\u6216\u62D6\u8FDB\u6765\u3002","fb.addImages":"\u6DFB\u52A0\u622A\u56FE","fb.removeImage":"\u79FB\u9664\u8FD9\u5F20\u56FE","fb.submit":"\u63D0\u4EA4","fb.back":"\u8FD4\u56DE\u5217\u8868","fb.you":"\u4F60","fb.support":"Forsion \u56E2\u961F","fb.attachment":"\u9644\u4EF6","fb.imagePreview":"\u67E5\u770B\u5927\u56FE","fb.closedNote":"\u8FD9\u4E2A\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u4E0D\u80FD\u518D\u56DE\u590D\u3002\u6709\u65B0\u95EE\u9898\u8BF7\u65B0\u5EFA\u53CD\u9988\u3002","fb.replyPlaceholder":"\u56DE\u590D\u2026","fb.replySend":"\u53D1\u9001\u56DE\u590D","fb.replySent":"\u56DE\u590D\u5DF2\u53D1\u9001","fb.status.open":"\u5F85\u5904\u7406","fb.status.in_progress":"\u5904\u7406\u4E2D","fb.status.resolved":"\u5DF2\u89E3\u51B3","fb.status.closed":"\u5DF2\u5173\u95ED","err.accountGone":"\u8FD9\u4E2A\u8D26\u53F7\u5DF2\u9000\u51FA\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.adminCannotDelete":"\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500","err.avatarInvalid":"\u8FD9\u5F20\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765\uFF0C\u6362\u4E00\u5F20\u8BD5\u8BD5","err.avatarTooLarge":"\u56FE\u7247\u592A\u5927\u4E86\uFF0C\u6362\u4E00\u5F20\u5C0F\u4E00\u70B9\u7684","err.backgroundUnavailable":"\u540E\u53F0\u989D\u5EA6\u6682\u65F6\u4E0D\u53EF\u7528","err.captcha":"\u9700\u8981\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u4EBA\u673A\u9A8C\u8BC1","err.codeCooldown":"\u53D1\u9001\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.codeInvalid":"\u9A8C\u8BC1\u7801\u4E0D\u5BF9\u6216\u5DF2\u8FC7\u671F","err.codeRequired":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","err.codeSendFailed":"\u9A8C\u8BC1\u7801\u6CA1\u53D1\u51FA\u53BB\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.currentPasswordWrong":"\u5F53\u524D\u5BC6\u7801\u4E0D\u5BF9","err.deleteTargetInvalid":"\u9A8C\u8BC1\u7801\u53EA\u80FD\u53D1\u5230\u8D26\u53F7\u7ED1\u5B9A\u7684\u624B\u673A\u6216\u90AE\u7BB1","err.deleteVerifyFailed":"\u9A8C\u8BC1\u6CA1\u901A\u8FC7\uFF0C\u8D26\u53F7\u6CA1\u6709\u6CE8\u9500","err.emailInUse":"\u8FD9\u4E2A\u90AE\u7BB1\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.emailInvalid":"\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.featureDisabled":"\u8FD9\u9879\u529F\u80FD\u6682\u65F6\u5173\u95ED\u4E86","err.feedbackEmpty":"\u8BF7\u5199\u4E00\u4E0B\u95EE\u9898\u6216\u5EFA\u8BAE","err.feedbackTooLong":"\u63CF\u8FF0\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.generic":"\u64CD\u4F5C\u6CA1\u6709\u6210\u529F\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.imageRead":"\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765","err.imageTooLarge":"\u6BCF\u5F20\u56FE\u7247\u4E0D\u80FD\u8D85\u8FC7 5MB","err.imageType":"\u53EA\u80FD\u6DFB\u52A0\u56FE\u7247","err.insufficientMainQuota":"AI \u989D\u5EA6\u5DF2\u7528\u5B8C\uFF0C\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6","err.insufficientPoints":"\u79EF\u5206\u4E0D\u591F","err.priceChanged":"\u91CD\u7F6E\u5361\u5355\u4EF7\u521A\u521A\u8C03\u6574\u8FC7\uFF0C\u8BF7\u770B\u4E00\u4E0B\u65B0\u4EF7\u683C\uFF0C\u518D\u786E\u8BA4\u5151\u6362\u3002","err.invalidCount":"\u5F20\u6570\u8981\u5728 1\u201350 \u4E4B\u95F4","err.invalidInviteCode":"\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548","err.inviteAlreadyUsed":"\u4F60\u5DF2\u7ECF\u7528\u8FC7\u9080\u8BF7\u7801\u4E86","err.inviteEmpty":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","err.inviteOwnCode":"\u4E0D\u80FD\u586B\u81EA\u5DF1\u7684\u9080\u8BF7\u7801","err.inviteWindowExpired":"\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F","err.loginCodeExpired":"\u767B\u5F55\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.loginInProgress":"\u6B63\u5728\u767B\u5F55\u4E2D","err.loginTimeout":"\u767B\u5F55\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5","err.loginUnsupported":"\u8FD9\u4E2A\u4E91\u7AEF\u4E0D\u652F\u6301\u684C\u9762\u7AEF\u767B\u5F55","err.network":"\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u540E\u91CD\u8BD5","err.noCloudUrl":"\u8BF7\u5148\u5728\u300C\u8FDE\u63A5\u300D\u91CC\u586B\u5199\u4E91\u7AEF\u5730\u5740","err.noResetCard":"\u6CA1\u6709\u53EF\u7528\u7684\u989D\u5EA6\u91CD\u7F6E\u5361","err.openFailed":"\u6CA1\u80FD\u6253\u5F00\u6D4F\u89C8\u5668","err.passwordRequired":"\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801\u548C\u65B0\u5BC6\u7801","err.phoneInUse":"\u8FD9\u4E2A\u624B\u673A\u53F7\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.phoneInvalid":"\u624B\u673A\u53F7\u683C\u5F0F\u4E0D\u5BF9\uFF08\u5176\u4ED6\u5730\u533A\u8BF7\u5E26 +\u533A\u53F7\uFF09","err.redeemEmpty":"\u8BF7\u8F93\u5165\u5151\u6362\u7801","err.redeemExpired":"\u5151\u6362\u7801\u5DF2\u8FC7\u671F","err.redeemInactive":"\u5151\u6362\u7801\u5DF2\u505C\u7528","err.redeemNotFound":"\u5151\u6362\u7801\u4E0D\u5B58\u5728","err.redeemUsedUp":"\u5151\u6362\u7801\u5DF2\u88AB\u7528\u5B8C","err.redeemUserLimit":"\u4F60\u5DF2\u7ECF\u5151\u6362\u8FC7\u8FD9\u4E2A\u7801\u4E86","err.replyEmpty":"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9","err.replyTooLong":"\u56DE\u590D\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.server":"\u670D\u52A1\u5668\u51FA\u9519\u4E86\uFF08{status}\uFF09\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.session":"\u767B\u5F55\u72B6\u6001\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.signedOut":"\u8BF7\u5148\u767B\u5F55 Forsion","err.targetInvalid":"\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.ticketNotFound":"\u8FD9\u6761\u53CD\u9988\u4E0D\u5B58\u5728\u6216\u5DF2\u5220\u9664","err.tooFrequent":"\u64CD\u4F5C\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.tooManyImages":"\u6700\u591A\u6DFB\u52A0 5 \u5F20\u56FE\u7247","err.unavailable":"\u8FD9\u4E2A\u7248\u672C\u7684\u684C\u9762\u7AEF\u8FD8\u4E0D\u652F\u6301\u8FD9\u4E2A\u64CD\u4F5C\uFF0C\u8BF7\u66F4\u65B0 Forsion","profile.unsupported":"\u8FD9\u4E2A\u670D\u52A1\u7AEF\u8FD8\u6CA1\u6709\u4E2A\u4EBA\u4E3B\u9875\u529F\u80FD","profile.state.private":"\u4EC5\u81EA\u5DF1\u53EF\u89C1","profile.state.public":"\u5DF2\u516C\u5F00","profile.state.privateDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.state.publicDesc":"\u4EFB\u4F55\u4EBA\u6253\u5F00\u516C\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.decorate":"\u88C5\u9970","profile.publish":"\u516C\u5F00\u4E3B\u9875","profile.makePrivate":"\u8BBE\u4E3A\u79C1\u6709","profile.address":"\u516C\u5F00\u5730\u5740","profile.copyLink":"\u590D\u5236\u94FE\u63A5","profile.openPublic":"\u67E5\u770B\u516C\u5F00\u9875","profile.nowPublic":"\u4E3B\u9875\u5DF2\u516C\u5F00","profile.nowPrivate":"\u4E3B\u9875\u5DF2\u8BBE\u4E3A\u79C1\u6709\uFF0C\u516C\u5F00\u5730\u5740\u4E0D\u518D\u80FD\u6253\u5F00","profile.bio":"\u7B80\u4ECB","profile.bioPlaceholder":"\u5199\u4E00\u53E5\u7B80\u4ECB","profile.linkAdd":"\u6DFB\u52A0\u94FE\u63A5","profile.linkRemove":"\u79FB\u9664\u94FE\u63A5","profile.linkInvalid":"\u94FE\u63A5\u8981\u4EE5 http:// \u6216 https:// \u5F00\u5934\uFF0C\u6216\u76F4\u63A5\u5199\u57DF\u540D","profile.joined":"{date}\u52A0\u5165","profile.stat.tokens":"\u7D2F\u8BA1 Token","profile.stat.activeDays":"\u6D3B\u8DC3\u5929\u6570","profile.stat.longest":"\u6700\u957F\u8FDE\u7EED","profile.stat.current":"\u5F53\u524D\u8FDE\u7EED","profile.stat.installs":"\u4F5C\u54C1\u88AB\u5B89\u88C5","profile.unit.days":"\u5929","profile.works":"\u7CBE\u9009\u4F5C\u54C1","profile.worksPick":"\u9009\u62E9","profile.worksEmpty":"\u8FD8\u6CA1\u6709\u4E0A\u67B6\u7684\u4F5C\u54C1\u3002\u4E0A\u67B6\u5230\u5546\u5E97\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\uFF0C\u53EF\u4EE5\u653E\u5230\u8FD9\u91CC\u3002","profile.worksNone":"\u8FD8\u6CA1\u6709\u53EF\u4EE5\u653E\u4E0A\u4E3B\u9875\u7684\u4F5C\u54C1\u3002\u4F5C\u54C1\u4E0A\u67B6\u5230\u5546\u5E97\u3001\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","profile.worksPicked":"\u5DF2\u9009 {n} / {max} \u4EF6","profile.worksAuto":"\u4E0D\u9009\u7684\u8BDD\uFF0C\u6309\u5B89\u88C5\u91CF\u81EA\u52A8\u53D6\u524D\u51E0\u4EF6","profile.goSubmit":"\u53BB\u6295\u7A3F","profile.workInstalls":"{n} \u6B21\u5B89\u88C5","profile.workVisits":"{n} \u6B21\u8BBF\u95EE","profile.work.skill":"\u6280\u80FD","profile.work.agent":"Agent","profile.work.plugin":"\u63D2\u4EF6","profile.work.space":"Space","profile.work.theme":"\u4E3B\u9898","profile.work.note":"\u7B14\u8BB0\u63D2\u4EF6","profile.work.webapp":"\u7F51\u9875\u5E94\u7528","profile.activity":"\u6D3B\u52A8","profile.activityDays":"\u8FC7\u53BB\u4E00\u5E74\u6709 {n} \u5929\u5728\u7528","profile.less":"\u5C11","profile.more":"\u591A","profile.badges":"\u5FBD\u7AE0","profile.badgesEmpty":"\u8FD8\u6CA1\u6709\u5FBD\u7AE0\u3002\u8FDE\u7EED\u4F7F\u7528\u3001\u4E0A\u67B6\u4F5C\u54C1\u3001\u9080\u8BF7\u670B\u53CB\u90FD\u4F1A\u70B9\u4EAE\u3002","profile.badge.early":"\u65E9\u671F\u7528\u6237","profile.badge.streak":"\u8FDE\u7EED 30 \u5929","profile.badge.author":"\u4F5C\u8005","profile.badge.inviter":"\u9080\u8BF7\u8FBE\u4EBA","profile.badge.event":"\u6D3B\u52A8\u7EAA\u5FF5","profile.badgeSub.early":"{value} \u5E74\u52A0\u5165","profile.badgeSub.streak":"\u6700\u957F\u8FDE\u7EED {value} \u5929","profile.badgeSub.author":"\u4E0A\u67B6\u4E86 {value} \u4EF6\u4F5C\u54C1","profile.badgeSub.inviter":"\u9080\u8BF7\u4E86 {value} \u4F4D\u670B\u53CB","profile.badgeSub.event":"\u53C2\u52A0\u8FC7 Forsion \u7684\u6D3B\u52A8{value}","profile.insights":"\u6D1E\u5BDF","profile.insightsEmpty":"\u7528\u5F97\u8FD8\u4E0D\u591F\u591A\uFF0C\u8FC7\u51E0\u5929\u518D\u6765\u770B\u3002","profile.insightModel":"\u6700\u5E38\u7528\u6A21\u578B","profile.insightHours":"\u6700\u6D3B\u8DC3\u65F6\u6BB5","profile.deco.skin":"\u516C\u5F00\u9875\u7684\u914D\u8272","profile.deco.mode":"\u516C\u5F00\u9875\u7684\u660E\u6697","profile.deco.publicHint":"\u8FD9\u4E24\u9879\u53EA\u7BA1\u8BBF\u5BA2\u5728\u516C\u5F00\u9875\u4E0A\u770B\u5230\u7684\u3002\u5728\u8FD9\u91CC\uFF0C\u4E3B\u9875\u8DDF Forsion \u5F53\u524D\u7684\u4E3B\u9898\u8D70\u3002","profile.deco.cover":"\u5C01\u9762","profile.deco.frame":"\u5934\u50CF\u6846","profile.deco.modules":"\u6A21\u5757","profile.skin.cream":"\u7ECF\u5178","profile.skin.coral":"\u73CA\u745A","profile.skin.teal":"\u67D4\u9752","profile.skin.lavender":"\u85B0\u8863\u8349","profile.mode.auto":"\u8DDF\u968F\u8BBF\u5BA2","profile.mode.light":"\u6D45\u8272","profile.mode.dark":"\u6DF1\u8272","profile.cover.none":"\u65E0","profile.cover.mist":"\u6668\u96FE","profile.cover.contour":"\u7B49\u9AD8\u7EBF","profile.cover.dots":"\u7F51\u70B9","profile.frame.none":"\u65E0","profile.frame.ring":"\u7EC6\u73AF","profile.frame.pro":"\u4F1A\u5458\u73AF","profile.frameProHint":"\u4F1A\u5458\u73AF\u662F\u4ED8\u8D39\u4F1A\u5458\u4E13\u5C5E\u3002","profile.col.show":"\u663E\u793A","profile.col.public":"\u516C\u5F00","profile.moveUp":"\u4E0A\u79FB","profile.moveDown":"\u4E0B\u79FB","profile.modulesHint":"\u300C\u663E\u793A\u300D\u51B3\u5B9A\u4E3B\u9875\u4E0A\u6709\u6CA1\u6709\u8FD9\u4E00\u5757\uFF1B\u300C\u516C\u5F00\u300D\u51B3\u5B9A\u8BBF\u5BA2\u80FD\u4E0D\u80FD\u770B\u5230\uFF0C\u4E3B\u9875\u516C\u5F00\u540E\u624D\u8D77\u4F5C\u7528\u3002","profile.mod.stats":"\u6570\u636E","profile.mod.works":"\u7CBE\u9009\u4F5C\u54C1","profile.mod.activity":"\u6D3B\u52A8","profile.mod.badges":"\u5FBD\u7AE0","profile.mod.insights":"\u6D1E\u5BDF","profile.modDesc.stats":"\u7D2F\u8BA1 Token\u3001\u6D3B\u8DC3\u5929\u6570\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4F5C\u54C1\u5B89\u88C5\u91CF","profile.modDesc.works":"\u4F60\u4E0A\u67B6\u7684\u4F5C\u54C1\uFF0C\u6700\u591A 6 \u4EF6","profile.modDesc.activity":"\u8FC7\u53BB\u4E00\u5E74\u6BCF\u5929\u7528\u6CA1\u7528\u3001\u7528\u5F97\u591A\u4E0D\u591A\uFF08\u53EA\u6709\u6DF1\u6D45\uFF0C\u6CA1\u6709\u5177\u4F53\u6570\u5B57\uFF09","profile.modDesc.badges":"\u52A0\u5165\u5E74\u4EFD\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4E0A\u67B6\u3001\u9080\u8BF7\u3001\u6D3B\u52A8","profile.modDesc.insights":"\u6700\u5E38\u7528\u7684\u6A21\u578B\u3001\u6700\u6D3B\u8DC3\u7684\u65F6\u6BB5","profile.publishDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u8FD9\u4E2A\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55\u3002\u4E0B\u9762\u6BCF\u4E00\u5757\u53EF\u4EE5\u5355\u72EC\u51B3\u5B9A\u7ED9\u4E0D\u7ED9\u8BBF\u5BA2\u770B\u3002","profile.publishNever":"\u5934\u50CF\u3001\u6635\u79F0\u3001\u7528\u6237\u540D\u3001\u7B80\u4ECB\u548C\u94FE\u63A5\u4F1A\u4E00\u8D77\u516C\u5F00\u3002\u90AE\u7BB1\u3001\u624B\u673A\u53F7\u3001\u4F1A\u5458\u5230\u671F\u65E5\u3001\u79EF\u5206\u548C\u989D\u5EA6\u4E0D\u4F1A\u51FA\u73B0\u5728\u4E3B\u9875\u4E0A\u3002","profile.publishConfirm":"\u516C\u5F00","profile.blocked.machineUsername":"\u4F60\u73B0\u5728\u7684\u7528\u6237\u540D\u662F\u7CFB\u7EDF\u751F\u6210\u7684\uFF0C\u91CC\u9762\u5E26\u7740\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u7684\u4E00\u90E8\u5206\uFF0C\u516C\u5F00\u4F1A\u628A\u5B83\u9732\u51FA\u53BB\u3002\u5148\u5230\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u300C\u8D26\u53F7\u300D\u9875\u6539\u4E00\u4E2A\u7528\u6237\u540D\uFF08\u6BCF\u4E2A\u8D26\u53F7\u53EF\u4EE5\u6539\u4E00\u6B21\uFF09\uFF0C\u518D\u56DE\u6765\u516C\u5F00\u3002","profile.blocked.publishBlocked":"\u8FD9\u4E2A\u4E3B\u9875\u5DF2\u88AB\u7BA1\u7406\u5458\u505C\u6B62\u516C\u5F00\u3002\u6709\u7591\u95EE\u8BF7\u901A\u8FC7\u300C\u53CD\u9988\u300D\u8054\u7CFB\u6211\u4EEC\u3002","profile.goRename":"\u53BB\u6539\u7528\u6237\u540D","profile.invalid":"\u8FD9\u9879\u5185\u5BB9\u6CA1\u80FD\u4FDD\u5B58\uFF0C\u8BF7\u68C0\u67E5\u540E\u518D\u8BD5","guide.title":"\u4F7F\u7528\u6307\u5357","guide.readOnly":"\u53EA\u8BFB","guide.more":"\u66F4\u591A","guide.unlockAll":"\u5168\u90E8\u89E3\u9501","guide.relock":"\u6539\u56DE\u6309\u7B49\u7EA7\u89E3\u9501","guide.reminders":"\u4F7F\u7528\u6307\u5357\u63D0\u9192","guide.spotlight":"\u73B0\u573A\u6307\u5F15","guide.spotStep":"\u7B2C {n} \u6B65\uFF0C\u5171 {total} \u6B65","guide.figure":"\u793A\u610F\u56FE","guide.openAchievements":"\u6253\u5F00\u6210\u5C31","guide.tasks":"\u672C\u7AE0\u4EFB\u52A1","guide.go":"\u5E26\u6211\u53BB","guide.desktopOnly":"\u5728\u7535\u8111\u4E0A\u505A","guide.taskDone":"\u5DF2\u5B8C\u6210","guide.askTangu":"\u95EE Tangu","guide.progress":"\u8FDB\u5EA6","guide.justUnlocked":"\u521A\u89E3\u9501","guide.lockedHint":"\u672A\u89E3\u9501","guide.whatsNew":"\u65B0\u7248\u672C \xB7 {version}","guide.level.lv1":"Lv.1 \u521D\u6765\u4E4D\u5230","guide.level.lv2":"Lv.2 \u719F\u95E8\u719F\u8DEF","guide.level.lv3":"Lv.3 \u5F97\u5FC3\u5E94\u624B","guide.level.lv4":"Lv.4 \u878D\u4F1A\u8D2F\u901A","guide.locked.title":"\u8FD9\u4E00\u7AE0\u8FD8\u6CA1\u89E3\u9501","guide.locked.body":"\u505A\u5B8C\u300C{level}\u300D\u7684\u4EFB\u52A1\u5C31\u80FD\u8BFB\u5168\u6587\u3002","guide.locked.left":"\u8FD8\u5DEE\u8FD9\u51E0\u9879\uFF1A","guide.locked.hint":"\u7528\u8FC7\u4E00\u9635\u4E86\uFF1F\u53F3\u4E0A\u89D2\u300C\xB7\xB7\xB7\u300D\u91CC\u53EF\u4EE5\u5168\u90E8\u89E3\u9501\u3002","guide.levelProgress":"\u672C\u7EA7\u8FDB\u5EA6 {done}/{total}","guide.next":"\u4E0B\u4E00\u7EA7","guide.allDone":"\u5168\u90E8\u5B8C\u6210","guide.allDoneBody":"\u6307\u5357\u91CC\u7684\u4EFB\u52A1\u90FD\u505A\u5B8C\u4E86\uFF0C\u968F\u65F6\u56DE\u6765\u7FFB\u770B\u3002","guide.review":"\u56DE\u770B","guide.ask.hint":"\u5BF9\u300C{chapter}\u300D\u6709\u7591\u95EE\uFF1F\u95EE Tangu \u4F1A\u5F00\u4E00\u4E2A\u5E26\u4E0A\u672C\u7AE0\u5185\u5BB9\u7684\u65B0\u5BF9\u8BDD\u3002","guide.ask.placeholder":"\u60F3\u95EE\u4EC0\u4E48\uFF1F","guide.ask.send":"\u5F00\u59CB\u5BF9\u8BDD","guide.ask.prompt":"\u6211\u6B63\u5728\u8BFB Forsion \u4F7F\u7528\u6307\u5357\u91CC\u300C{chapter}\u300D\u8FD9\u4E00\u7AE0\uFF0C\u5185\u5BB9\u9644\u5728\u4E0B\u9762\u3002{question}","guide.ask.unavailable":"\u8FD9\u91CC\u5F00\u4E0D\u4E86\u5BF9\u8BDD","guide.ask.chatTitle":"\u4F7F\u7528\u6307\u5357\u95EE\u7B54","guide.companion.back":"\u56DE\u5230\u6307\u5357","guide.companion.close":"\u6536\u8D77","guide.toast.taskDone":"\u5B8C\u6210\uFF1A{task}","guide.letter.levelTitle":"{level} \u5DF2\u89E3\u9501\uFF1A\u63A5\u4E0B\u6765\u8BD5\u8BD5\u8FD9\u51E0\u4EF6\u4E8B","guide.letter.levelBody":"\u4E0A\u4E00\u7EA7\u7684\u4EFB\u52A1\u90FD\u505A\u5B8C\u4E86\uFF0C\u4E0B\u9762\u8FD9\u51E0\u7AE0\u73B0\u5728\u53EF\u4EE5\u8BFB\u4E86\u3002\u6BCF\u9879\u4EFB\u52A1\u90FD\u80FD\u300C\u5E26\u6211\u53BB\u300D\u3002","guide.letter.versionTitle":"{version} \u6709 {n} \u4EF6\u65B0\u4E1C\u897F\u53EF\u4EE5\u4F53\u9A8C","guide.letter.versionBody":"\u8FD9\u4E2A\u7248\u672C\u65B0\u52A0\u7684\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4E0A\u624B\uFF1A","guide.letter.open":"\u6253\u5F00\u6307\u5357","guide.status.done":"\u5DF2\u5B8C\u6210","guide.cmd.open":"\u6253\u5F00\u4F7F\u7528\u6307\u5357","penzor.title":"\u84EC\u6D32\u4E91","penzor.kicker":"\u84EC\u6D32\u4E91 \xB7 Penzor Cloud","penzor.overview":"\u6982\u89C8","penzor.places":"\u4F4D\u7F6E","penzor.details":"\u8BE6\u60C5","penzor.ledger.sync":"\u667A\u5E93\u540C\u6B65","penzor.ledger.ama":"Amadeus Cloud","penzor.ledger.apps":"\u5E94\u7528\u6587\u4EF6","penzor.ledger.exports":"\u5BFC\u51FA","penzor.trash":"\u56DE\u6536\u7AD9","penzor.items":"{n} \u9879","penzor.total.sub":"\u5B58\u5728 Forsion \u4E91\u7AEF \xB7 {time}\u66F4\u65B0","penzor.justNow":"\u521A\u521A","penzor.ofMax":"/ {max}","penzor.card.syncSub":"{n} \u4E2A\u5E93 \xB7 \u4E0A\u6B21\u5199\u5165 {time}","penzor.card.syncSubNone":"{n} \u4E2A\u5E93","penzor.card.syncFoot":"\u5355\u4E2A\u6587\u4EF6\u8D85\u8FC7 {size} \u4E0D\u4E0A\u4F20","penzor.card.syncWarn":"\u5FEB\u6EE1\u4E86\uFF1A\u6EE1 {max} \u540E\u65B0\u6587\u4EF6\u4E0D\u518D\u4E0A\u4F20\uFF0C\u5DF2\u5728\u4E91\u7AEF\u7684\u7167\u5E38\u540C\u6B65","penzor.card.amaSmall":"\u4E0D\u7B97\u5728\u989D\u5EA6\u91CC","penzor.card.amaSub":"{n} \u4E2A\u4E91\u7AEF\u667A\u5E93","penzor.card.amaFoot":"\u7B14\u8BB0\u548C\u9644\u4EF6\u5728 Amadeus \u7684 Cloud \u4FA7","penzor.card.appsFoot":"\u56DE\u6536\u7AD9 {n} \u9879 \xB7 {size}","penzor.card.appsWarn":"\u5FEB\u6EE1\u4E86\uFF1A\u6EE1 {max} \u540E\u5E94\u7528\u4E0D\u80FD\u518D\u5B58\u65B0\u6587\u4EF6\uFF1B\u56DE\u6536\u7AD9\u91CC\u7684\u4E5F\u7B97\uFF0C\u6E05\u7A7A\u80FD\u817E\u51FA\u7A7A\u95F4","penzor.card.expSmall":"{n} \u4E2A\u6587\u4EF6","penzor.card.expSub":"\u6700\u8FD1\uFF1A{name} \xB7 {time}","penzor.card.expFoot":"\u5404\u5E94\u7528\u5BFC\u51FA\u7684\u6587\u4EF6","penzor.card.none":"\u8FD8\u6CA1\u6709\u4E1C\u897F","penzor.largest":"\u5360\u7528\u6700\u591A","penzor.col.name":"\u540D\u79F0","penzor.col.size":"\u5927\u5C0F","penzor.col.mtime":"\u4FEE\u6539\u65F6\u95F4","penzor.col.device":"\u5199\u5165\u8BBE\u5907","penzor.col.deleted":"\u5220\u9664\u4E8E","penzor.col.origin":"\u539F\u4F4D\u7F6E","penzor.col.app":"\u6765\u6E90","penzor.sort.mtime":"\u6309\u4FEE\u6539\u65F6\u95F4","penzor.sort.size":"\u6309\u5927\u5C0F","penzor.sort.name":"\u6309\u540D\u79F0","penzor.search":"\u641C\u7D22\u8FD9\u91CC\u7684\u6587\u4EF6\u540D","penzor.sync.thisDevice":"\u672C\u673A\u5728\u540C\u6B65","penzor.meta.files":"{size} \xB7 {n} \u4E2A\u6587\u4EF6","penzor.sync.last":"\u4E0A\u6B21\u5199\u5165 {time} \xB7 {device}","penzor.sync.lastNoDevice":"\u4E0A\u6B21\u5199\u5165 {time}","penzor.sync.devices":"{n} \u53F0\u8BBE\u5907\u540C\u6B65\u8FD9\u4E2A\u5E93","penzor.sync.meter":"\u667A\u5E93\u540C\u6B65\u5171\u7528 {max}\uFF0C\u5DF2\u7528 {used}","penzor.apps.meter":"\u5E94\u7528\u6587\u4EF6\u5171\u7528 {max}\uFF0C\u5DF2\u7528 {used}\uFF08\u56DE\u6536\u7AD9\u91CC\u7684\u4E5F\u7B97\uFF09","penzor.apps.by":"\u7531 {app} \u5199\u5165","penzor.ama.notCounted":"\u4E0D\u7B97\u5728\u989D\u5EA6\u91CC","penzor.ama.open":"\u5728 Amadeus \u4E2D\u6253\u5F00","penzor.trash.meta":"{n} \u9879 \xB7 {size}","penzor.trash.note":"\u4ECD\u7B97\u5728\u5E94\u7528\u6587\u4EF6\u7684 {max} \u91CC\uFF0C\u6C38\u4E45\u5220\u9664\u540E\u624D\u817E\u51FA\u7A7A\u95F4","penzor.trash.emptyBtn":"\u6E05\u7A7A\u56DE\u6536\u7AD9","penzor.act.download":"\u4E0B\u8F7D","penzor.act.rename":"\u91CD\u547D\u540D","penzor.act.move":"\u79FB\u52A8\u5230\u2026","penzor.act.trash":"\u79FB\u5230\u56DE\u6536\u7AD9","penzor.act.delete":"\u5220\u9664","penzor.act.restore":"\u6062\u590D","penzor.act.purge":"\u6C38\u4E45\u5220\u9664","penzor.act.copyName":"\u590D\u5236\u5E93\u540D","penzor.act.openSync":"\u5728\u8BBE\u7F6E\u4E2D\u6253\u5F00\u540C\u6B65","penzor.act.refresh":"\u5237\u65B0","penzor.act.up":"\u4E0A\u4E00\u7EA7","penzor.toast.trashed":"\u5DF2\u628A\u300C{name}\u300D\u79FB\u5230\u56DE\u6536\u7AD9","penzor.toast.restored":"\u5DF2\u6062\u590D\u300C{name}\u300D","penzor.toast.purged":"\u5DF2\u6C38\u4E45\u5220\u9664\u300C{name}\u300D","penzor.toast.emptied":"\u5DF2\u6E05\u7A7A\u56DE\u6536\u7AD9","penzor.toast.downloaded":"\u5DF2\u5B58\u5230\u300C\u4E0B\u8F7D\u300D\uFF1A{name}","penzor.toast.renamed":"\u5DF2\u6539\u540D\u4E3A\u300C{name}\u300D","penzor.toast.moved":"\u5DF2\u79FB\u5230\u300C{name}\u300D","penzor.toast.versionRestored":"\u5DF2\u6062\u590D\u5230\u7B2C {n} \u7248","penzor.toast.copied":"\u5DF2\u590D\u5236\u5E93\u540D","penzor.toast.failed":"\u6CA1\u6210\u529F\uFF1A{reason}","penzor.confirm.purge":"\u6C38\u4E45\u5220\u9664\u300C{name}\u300D\uFF1F\u5220\u4E86\u5C31\u627E\u4E0D\u56DE\u6765\u4E86\u3002","penzor.confirm.empty":"\u6E05\u7A7A\u56DE\u6536\u7AD9\uFF1F{n} \u9879\u4F1A\u88AB\u6C38\u4E45\u5220\u9664\uFF0C\u627E\u4E0D\u56DE\u6765\u3002","penzor.confirm.deleteExport":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5BFC\u51FA\u7684\u6587\u4EF6\u6CA1\u6709\u56DE\u6536\u7AD9\uFF0C\u5220\u4E86\u5C31\u627E\u4E0D\u56DE\u6765\u4E86\u3002","penzor.cancel":"\u53D6\u6D88","penzor.side.where":"\u4F4D\u7F6E","penzor.side.mtime":"\u4FEE\u6539","penzor.side.device":"\u5199\u5165\u8BBE\u5907","penzor.side.thisDevice":"{name}\uFF08\u672C\u673A\uFF09","penzor.side.from":"\u6765\u6E90","penzor.side.versions":"\u5386\u53F2\u7248\u672C","penzor.side.versionsNone":"\u6CA1\u6709","penzor.side.versionRow":"\u7B2C {n} \u7248 \xB7 {time} \xB7 {size}","penzor.side.restoreVersion":"\u6062\u590D\u8FD9\u4E00\u7248","penzor.side.deletedAt":"\u5220\u9664\u4E8E","penzor.side.origin":"\u539F\u4F4D\u7F6E","penzor.side.inner":"\u91CC\u9762\u8FD8\u6709 {n} \u9879\uFF0C\u6062\u590D\u65F6\u4E00\u8D77\u56DE\u6765","penzor.side.inTrash":"\u5728\u56DE\u6536\u7AD9 \xB7 {size}","penzor.side.readonlySync":"\u540C\u6B65\u5E93\u91CC\u7684\u6587\u4EF6\u53EA\u5728\u8BBE\u5907\u4E0A\u5220\u6539\u3002\u5728\u8FD9\u91CC\u5220\u6389\u4E00\u4E2A\u6587\u4EF6\uFF0C\u6BCF\u53F0\u540C\u6B65 {vault} \u7684\u8BBE\u5907\u4E0B\u6B21\u540C\u6B65\u65F6\u90FD\u4F1A\u8DDF\u7740\u5220\u6389\uFF0C\u6240\u4EE5\u8FD9\u91CC\u53EA\u80FD\u770B\u548C\u4E0B\u8F7D\u3002","penzor.side.readonlyAma":"\u7B14\u8BB0\u548C\u9644\u4EF6\u5728 Amadeus \u91CC\u6539\u3002\u5728\u8FD9\u91CC\u5220\u6389\u4E00\u4E2A\u9644\u4EF6\uFF0C\u5F15\u7528\u5B83\u7684\u7B14\u8BB0\u4F1A\u7F3A\u56FE\uFF0C\u6240\u4EE5\u8FD9\u91CC\u53EA\u80FD\u770B\u548C\u4E0B\u8F7D\u3002","penzor.side.exportNote":"\u5BFC\u51FA\u7684\u6587\u4EF6\u6CA1\u6709\u56DE\u6536\u7AD9\uFF1A\u5220\u9664\u5C31\u662F\u6C38\u4E45\u5220\u9664\u3002","penzor.side.none":"\u9009\u4E00\u4E2A\u6587\u4EF6\u770B\u8BE6\u60C5","penzor.side.folder":"\u6587\u4EF6\u5939 \xB7 {n} \u9879","penzor.side.folderPlain":"\u6587\u4EF6\u5939","penzor.move.title":"\u79FB\u5230\u54EA\u91CC","penzor.move.root":"{app} \u6700\u4E0A\u5C42","penzor.move.here":"\u79FB\u5230\u8FD9\u91CC","penzor.move.noFolders":"\u8FD9\u4E00\u5C42\u6CA1\u6709\u6587\u4EF6\u5939","penzor.rename.save":"\u4FDD\u5B58","penzor.empty.title":"\u84EC\u6D32\u4E91\u91CC\u8FD8\u6CA1\u6709\u4E1C\u897F","penzor.empty.lead":"\u8FD9\u4E9B\u4E1C\u897F\u5B58\u8FDB\u4E91\u7AEF\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\uFF1A","penzor.empty.sync":"\u5728\u300C\u8BBE\u7F6E \u203A \u540C\u6B65\u300D\u91CC\u628A\u8FDC\u7A0B\u670D\u52A1\u9009\u6210\u300C\u84EC\u6D32\u4E91\u300D\uFF0C\u672C\u5730\u667A\u5E93\u5C31\u540C\u6B65\u5230\u8FD9\u91CC","penzor.empty.ama":"Amadeus \u5207\u5230 Cloud \u4FA7\u5199\u7684\u7B14\u8BB0","penzor.empty.apps":"\u5404\u5E94\u7528\u5B58\u5230\u4E91\u7AEF\u6216\u5BFC\u51FA\u7684\u6587\u4EF6","penzor.empty.openSync":"\u6253\u5F00\u540C\u6B65\u8BBE\u7F6E","penzor.out.title":"\u767B\u5F55\u540E\u67E5\u770B\u4F60\u7684\u84EC\u6D32\u4E91","penzor.out.lead":"\u84EC\u6D32\u4E91\u653E\u7740\u4F60\u540C\u6B65\u5230 Forsion \u4E91\u7AEF\u7684\u5E93\u3001Amadeus Cloud \u7684\u7B14\u8BB0\uFF0C\u548C\u5404\u5E94\u7528\u5B58\u5728\u4E91\u7AEF\u7684\u6587\u4EF6\u3002","penzor.out.signIn":"\u767B\u5F55 Forsion \u8D26\u53F7","penzor.loading":"\u6B63\u5728\u8BFB\u53D6\u2026","penzor.err":"\u6CA1\u8BFB\u5230\uFF1A{reason}","penzor.folderEmpty":"\u8FD9\u91CC\u6CA1\u6709\u6587\u4EF6","penzor.noMatch":"\u6CA1\u6709\u540D\u5B57\u91CC\u5E26\u300C{q}\u300D\u7684\u6587\u4EF6","penzor.cmd.open":"\u6253\u5F00\u84EC\u6D32\u4E91","penzor.unreachable":"\u8FDE\u4E0D\u4E0A Forsion \u4E91\u7AEF\uFF0C\u7A0D\u540E\u518D\u8BD5","penzor.toast.emptyPartial":"\u56DE\u6536\u7AD9\u91CC\u8FD8\u6709 {n} \u9879\u6CA1\u5220\u6389","penzor.sort.deleted":"\u6309\u5220\u9664\u65F6\u95F4","penzor.side.versionsN":"{n} \u4E2A","penzor.drive":"\u6211\u7684\u4E91\u76D8","penzor.drive.meta":"\u7B97\u5728\u5E94\u7528\u6587\u4EF6\u7684 {max} \u91CC","penzor.drive.empty":"\u8FD9\u91CC\u8FD8\u7A7A\u7740\u3002\u628A\u6587\u4EF6\u62D6\u8FDB\u6765\uFF0C\u6216\u8005\u70B9\u300C\u4E0A\u4F20\u300D\u3002","penzor.act.upload":"\u4E0A\u4F20","penzor.act.uploadMore":"\u66F4\u591A\u4E0A\u4F20\u65B9\u5F0F","penzor.act.uploadFiles":"\u4E0A\u4F20\u6587\u4EF6\u2026","penzor.act.uploadFolder":"\u4E0A\u4F20\u6587\u4EF6\u5939\u2026","penzor.act.uploadHere":"\u4E0A\u4F20\u5230\u8FD9\u91CC\u2026","penzor.act.newFolder":"\u65B0\u5EFA\u6587\u4EF6\u5939","penzor.act.clearSel":"\u53D6\u6D88\u9009\u62E9","penzor.newFolder.default":"\u65B0\u5EFA\u6587\u4EF6\u5939","penzor.sel.bar":"\u5DF2\u9009 {n} \u9879 \xB7 {size}","penzor.sel.title":"\u5DF2\u9009 {n} \u9879","penzor.sel.sub":"{size} \xB7 {files} \u4E2A\u6587\u4EF6","penzor.sel.subDirs":"{size} \xB7 {files} \u4E2A\u6587\u4EF6\u3001{dirs} \u4E2A\u6587\u4EF6\u5939","penzor.sel.download":"\u4E0B\u8F7D {n} \u9879","penzor.sel.saveTo":"\u4E0B\u8F7D\u5230","penzor.sel.saveToValue":"\u4E0B\u8F7D / {folder}","penzor.sel.noDirs":"\u6587\u4EF6\u5939\u8FD9\u4E00\u7248\u8FD8\u4E0D\u80FD\u4E0B\u8F7D\uFF0C\u53EA\u4E0B\u8F7D\u9009\u4E2D\u7684\u6587\u4EF6\u3002","penzor.download.folder":"\u84EC\u6D32\u4E91 {date}","penzor.drop.to":"\u677E\u624B\u4E0A\u4F20\u5230\u300C{place}\u300D","penzor.tx.busy":"\u6B63\u5728\u4F20\u8F93 {n} \u9879","penzor.tx.allDone":"\u5168\u90E8\u4F20\u5B8C","penzor.tx.failedN":"{n} \u9879\u6CA1\u4F20\u5B8C","penzor.tx.counts":"\u4E0A\u4F20 {up} \xB7 \u4E0B\u8F7D {down}","penzor.tx.eta":"\u5269\u7EA6 {eta}","penzor.tx.doneN":"{n} \u9879\u5DF2\u4F20\u5B8C","penzor.tx.restDone":"\u5176\u4F59 {n} \u9879\u5DF2\u4F20\u5B8C","penzor.tx.pill":"{counts} \xB7 {pct}%","penzor.tx.queued":"\u6392\u961F\u4E2D","penzor.tx.paused":"\u5DF2\u6682\u505C \xB7 \u7EE7\u7EED\u4F1A\u4ECE\u5934\u4F20","penzor.tx.uploaded":"\u5DF2\u4E0A\u4F20 \xB7 {time}","penzor.tx.downloaded":"\u5DF2\u4E0B\u8F7D \xB7 {time}","penzor.tx.canceled":"\u5DF2\u53D6\u6D88","penzor.tx.left":"\u5269 {eta}","penzor.tx.sec":"{n} \u79D2","penzor.tx.min":"{n} \u5206\u949F","penzor.tx.pause":"\u6682\u505C","penzor.tx.resume":"\u7EE7\u7EED","penzor.tx.cancel":"\u53D6\u6D88","penzor.tx.retry":"\u91CD\u8BD5","penzor.tx.remove":"\u79FB\u9664","penzor.tx.locate":"\u5B9A\u4F4D","penzor.tx.reveal":"\u5728\u6587\u4EF6\u5939\u4E2D\u663E\u793A","penzor.tx.pauseAll":"\u5168\u90E8\u6682\u505C","penzor.tx.resumeAll":"\u5168\u90E8\u7EE7\u7EED","penzor.tx.retryAll":"\u5168\u90E8\u91CD\u8BD5","penzor.tx.clearDone":"\u6E05\u9664\u5DF2\u5B8C\u6210","penzor.tx.clear":"\u6E05\u9664","penzor.tx.collapse":"\u6536\u8D77","penzor.tx.expand":"\u5C55\u5F00\u4F20\u8F93\u5217\u8868","penzor.tx.quota":"\u7A7A\u95F4\u4E0D\u591F\uFF0C\u8FD8\u5DEE {size}","penzor.tx.quotaSub":"\u8FD9\u4E00\u6279\u4E00\u4E2A\u90FD\u6CA1\u5F00\u59CB\u4F20","penzor.tx.freeSpace":"\u53BB\u56DE\u6536\u7AD9\u817E\u5730\u65B9","penzor.err.too_large":"\u5355\u4E2A\u6587\u4EF6\u8D85\u8FC7 50 MB\uFF08\u8FD9\u4E2A {size}\uFF09\uFF0C\u8FD9\u4E00\u7248\u4F20\u4E0D\u4E86","penzor.err.quota":"\u4E91\u7AEF\u7A7A\u95F4\u4E0D\u591F","penzor.err.network":"\u7F51\u7EDC\u65AD\u4E86\uFF0C\u4F20\u5230 {pct}% \u505C\u4E0B","penzor.err.account_changed":"\u6362\u4E86\u8D26\u53F7\uFF0C\u8FD9\u4E00\u9879\u6CA1\u6709\u63A5\u7740\u4F20","penzor.err.not_signed_in":"\u6CA1\u767B\u5F55","penzor.err.gone":"\u672C\u673A\u4E0A\u627E\u4E0D\u5230\u8FD9\u4E2A\u6587\u4EF6\u4E86","penzor.err.changed":"\u4F20\u7684\u65F6\u5019\u6587\u4EF6\u6539\u52A8\u4E86\uFF0C\u91CD\u8BD5\u4E00\u6B21","penzor.err.storage_unavailable":"\u4E91\u7AEF\u5B58\u50A8\u6682\u65F6\u4E0D\u53EF\u7528","penzor.err.other":"\u6CA1\u4F20\u5B8C\uFF08{code}\uFF09","penzor.err.too_many":"\u4E00\u6B21\u6700\u591A {n} \u4E2A\u6587\u4EF6\uFF0C\u5206\u51E0\u6B21\u62D6\u8FDB\u6765","penzor.toast.upDoneOne":"\u5DF2\u4E0A\u4F20\u300C{name}\u300D","penzor.toast.upDoneMany":"\u5DF2\u4E0A\u4F20 {n} \u4E2A\u6587\u4EF6","penzor.toast.downDoneMany":"\u5DF2\u4E0B\u8F7D {n} \u4E2A\u6587\u4EF6\u5230\u300C\u4E0B\u8F7D\u300D","penzor.toast.txFailed":"{n} \u9879\u6CA1\u4F20\u5B8C\uFF0C\u56DE\u84EC\u6D32\u4E91\u770B\u770B","penzor.toast.folderExists":"\u5DF2\u7ECF\u6709\u53EB\u300C{name}\u300D\u7684\u6587\u4EF6\u5939\u4E86","penzor.toast.trashedN":"\u5DF2\u628A {n} \u9879\u79FB\u5230\u56DE\u6536\u7AD9","penzor.toast.movedN":"\u5DF2\u628A {n} \u9879\u79FB\u5230\u300C{name}\u300D","penzor.toast.batchPartial":"\u6709 {n} \u9879\u6CA1\u6210\u529F","penzor.sync.title":"\u540C\u6B65","penzor.sync.onN":"{n} \u9879\u5DF2\u5F00","penzor.sync.allOff":"\u90FD\u6CA1\u5F00","penzor.sync.waiting":"\u7B49\u4F60\u51B3\u5B9A","penzor.sync.badgeWaiting":"{n} \u9879\u5DF2\u5F00 \xB7 1 \u9879\u7B49\u4F60\u51B3\u5B9A","penzor.sync.running":"\u540C\u6B65\u4E2D {pct}%","penzor.sync.runningPlain":"\u540C\u6B65\u4E2D","penzor.sync.metaDevice":"\u8FD9\u53F0 {name}","penzor.sync.metaLast":"\u4E0A\u6B21\u540C\u6B65 {time}","penzor.sync.metaNever":"\u8FD8\u6CA1\u540C\u6B65\u8FC7","penzor.sync.every":"\u6BCF {n} \u5206\u949F","penzor.sync.everyHours":"\u6BCF {n} \u5C0F\u65F6","penzor.sync.manual":"\u624B\u52A8","penzor.sync.onStart":"\u5F00\u673A\u65F6\u4E00\u6B21","penzor.sync.minAgo":"{n} \u5206\u949F\u524D","penzor.sync.hoursAgo":"{n} \u5C0F\u65F6\u524D","penzor.sync.notesNamed":"\u667A\u5E93\u300C{name}\u300D","penzor.sync.notesPlain":"\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93","penzor.sync.notesDesc":"\u6574\u4E2A\u672C\u673A\u667A\u5E93\uFF0C\u548C\u4F60\u7684\u5176\u4ED6\u7535\u8111\u4FDD\u6301\u4E00\u81F4","penzor.sync.agents":"Agents \u4E0E\u8BB0\u5FC6","penzor.sync.agentsDesc":"Agents \u7684\u8BB0\u5FC6\u3001\u65E5\u5FD7\u3001\u6280\u80FD\u548C\u534F\u4F5C\u8BF4\u660E","penzor.sync.agentsN":"{n} \u4E2A Agent","penzor.sync.plugins":"\u63D2\u4EF6\u6570\u636E","penzor.sync.pluginsDesc":"\u63D2\u4EF6\u81EA\u5DF1\u5B58\u7684\u8BBE\u7F6E\u548C\u6570\u636E","penzor.sync.pluginsN":"{n} \u4E2A\u63D2\u4EF6","penzor.sync.off":"\u6CA1\u5F00","penzor.sync.done":"\u5DF2\u540C\u6B65","penzor.sync.doneSize":"\u5DF2\u540C\u6B65 \xB7 {size}","penzor.sync.firstPending":"\u7B49\u7B2C\u4E00\u6B21\u540C\u6B65","penzor.sync.failed":"\u4E0A\u6B21\u6CA1\u540C\u6B65\u6210\u529F","penzor.sync.overQuota":"\u8D85\u51FA\u989D\u5EA6\uFF0C\u6709\u7684\u6CA1\u4F20","penzor.sync.to":"\u540C\u6B65\u5230 {name}","penzor.sync.toFolder":"\u540C\u6B65\u5230\u672C\u673A\u6587\u4EF6\u5939","penzor.sync.decideAbove":"\u5728\u4E0A\u9762\u90A3\u5F20\u5361\u91CC\u9009","penzor.sync.kvSchedule":"\u540C\u6B65\u8BA1\u5212","penzor.sync.kvDirection":"\u65B9\u5411","penzor.sync.kvSkipped":"\u6CA1\u4F20\u7684","penzor.sync.kvWhere":"\u4E91\u7AEF\u4F4D\u7F6E","penzor.sync.change":"\u6539","penzor.sync.open":"\u6253\u5F00","penzor.sync.dir.both":"\u53CC\u5411","penzor.sync.dir.push":"\u4EC5\u4E0A\u4F20","penzor.sync.dir.pull":"\u4EC5\u4E0B\u8F7D","penzor.sync.skippedN":"{n} \u4E2A\u8D85\u8FC7 {size} \u7684\u6587\u4EF6","penzor.sync.where":"{ledger} \u203A {vault}","penzor.sync.whereUsed":"{ledger} \u203A {vault} \xB7 {used} / {max}","penzor.sync.devicesTitle":"\u5728\u540C\u6B65\u7684\u8BBE\u5907","penzor.sync.thisOne":"\u8FD9\u53F0","penzor.sync.lastWrite":"\u4E0A\u6B21\u5199\u5165 {time}","penzor.sync.noDevices":"\u8FD8\u6CA1\u6709\u8BBE\u5907\u5728\u540C\u6B65","penzor.sync.phoneTitle":"\u624B\u673A\u548C\u7F51\u9875\u770B\u5230\u7684\u90A3\u4E00\u4EFD","penzor.sync.phoneTip":"\u624B\u673A\u548C\u7F51\u9875\u76F4\u63A5\u8BFB\u300C\u4E91\u7AEF\u667A\u5E93\u300D\uFF08Amadeus \u7684\u4E91\u7AEF\u4FA7\uFF0C{size}\uFF09\uFF0C\u5B83\u4E00\u76F4\u5728\u540C\u6B65\uFF0C\u548C\u4E0A\u9762\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93\u662F\u4E24\u4EFD\u3002\u60F3\u5728\u624B\u673A\u4E0A\u770B\u8FD9\u53F0\u7684\u67D0\u4E2A\u6587\u4EF6\u5939\uFF1A\u5728\u7B14\u8BB0\u91CC\u53F3\u952E\u90A3\u4E2A\u6587\u4EF6\u5939\uFF0C\u628A\u5B83\u540C\u6B65\u5230\u4E91\u7AEF\u667A\u5E93\u3002","penzor.sync.phoneTipPlain":"\u624B\u673A\u548C\u7F51\u9875\u76F4\u63A5\u8BFB\u300C\u4E91\u7AEF\u667A\u5E93\u300D\uFF08Amadeus \u7684\u4E91\u7AEF\u4FA7\uFF09\uFF0C\u5B83\u4E00\u76F4\u5728\u540C\u6B65\uFF0C\u548C\u4E0A\u9762\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93\u662F\u4E24\u4EFD\u3002\u60F3\u5728\u624B\u673A\u4E0A\u770B\u8FD9\u53F0\u7684\u67D0\u4E2A\u6587\u4EF6\u5939\uFF1A\u5728\u7B14\u8BB0\u91CC\u53F3\u952E\u90A3\u4E2A\u6587\u4EF6\u5939\uFF0C\u628A\u5B83\u540C\u6B65\u5230\u4E91\u7AEF\u667A\u5E93\u3002","penzor.sync.foot":"\u540C\u6B65\u8BA1\u5212\u3001\u65B9\u5411\u548C\u5176\u4ED6\u5B58\u50A8\uFF08Dropbox / S3 / WebDAV\uFF09\u5728","penzor.sync.footLink":"\u8BBE\u7F6E \u203A \u540C\u6B65","penzor.sync.askTitle":"\u4E91\u7AEF\u5DF2\u7ECF\u6709\u4E00\u4EFD\u667A\u5E93","penzor.sync.askCloud":"\u4E91\u7AEF\u90A3\u4EFD\u6765\u81EA {device}\uFF1A{files} \u4E2A\u6587\u4EF6 \xB7 {size}\u3002","penzor.sync.askCloudNoDevice":"\u4E91\u7AEF\u90A3\u4EFD\uFF1A{files} \u4E2A\u6587\u4EF6 \xB7 {size}\u3002","penzor.sync.askLocal":"\u8FD9\u53F0\u6709 {local} \u4E2A\u6587\u4EF6\u4E91\u7AEF\u6CA1\u6709\uFF0C{conflicts} \u4E2A\u4E24\u8FB9\u5185\u5BB9\u4E0D\u540C\u3002","penzor.sync.askMerge":"\u5408\u5E76\u4E24\u8FB9","penzor.sync.askCloudBtn":"\u7528\u4E91\u7AEF\u90A3\u4EFD","penzor.sync.askSkip":"\u8FD9\u53F0\u5148\u4E0D\u540C\u6B65\u667A\u5E93","penzor.sync.askExplain":"\u5408\u5E76\uFF1A\u4E24\u8FB9\u90FD\u7559\u7740\uFF0C\u5185\u5BB9\u4E0D\u540C\u7684\u53E6\u5B58\u4E00\u4EFD\u300C\uFF08\u51B2\u7A81\uFF09\u300D\u3002\u7528\u4E91\u7AEF\u90A3\u4EFD\uFF1A\u8FD9\u53F0\u548C\u4E91\u7AEF\u4E0D\u4E00\u6837\u7684\u6587\u4EF6\u5148\u632A\u8FDB\u65C1\u8FB9\u7684\u300C{backup}\u300D\u6587\u4EF6\u5939\uFF0C\u518D\u4E0B\u8F7D\u4E91\u7AEF\u90A3\u4EFD\u3002","penzor.sync.askConfirm":"\u8FD9\u53F0\u548C\u4E91\u7AEF\u4E0D\u4E00\u6837\u7684\u6587\u4EF6\u4F1A\u5148\u632A\u8FDB\u300C{backup}\u300D\uFF0C\u518D\u6362\u6210\u4E91\u7AEF\u90A3\u4EFD\u3002","penzor.sync.askConfirmGo":"\u632A\u8D70\u5E76\u7528\u4E91\u7AEF\u90A3\u4EFD","penzor.sync.backupName":"{name} \u540C\u6B65\u524D\u5907\u4EFD {date}","penzor.sync.quotaTitle":"\u667A\u5E93 {size}\uFF0C\u8D85\u8FC7\u4E86\u300C{ledger}\u300D\u7684 {max} \u4E0A\u9650","penzor.sync.quotaTitlePlain":"\u667A\u5E93\u8D85\u8FC7\u4E86\u300C{ledger}\u300D\u7684\u4E0A\u9650","penzor.sync.quotaBody":"\u653E\u4E0D\u4E0B\u7684\u6587\u4EF6\u7559\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\uFF0C\u6CA1\u6709\u5220\uFF0C\u4E5F\u6CA1\u6709\u4F20\uFF1B\u5176\u4F59\u51E0\u9879\u7167\u5E38\u540C\u6B65\u3002","penzor.sync.quotaLarge":"\u8D85\u8FC7 {size} \u7684\u5355\u4E2A\u6587\u4EF6\u4E00\u76F4\u4E0D\u4F20\uFF08{n} \u4E2A\uFF09\u3002","penzor.sync.quotaSee":"\u770B\u770B\u6CA1\u4F20\u7684\u6587\u4EF6"},$u={"sub.identity":"Plugin ID","sub.identityHint":"A unique ID is assigned after submission. Names may repeat; updates keep the same ID.","sub.description":"Detailed description","sub.tags":"Tags","sub.tagsHint":"Comma separated, up to 8","sub.minAppVersion":"Minimum Forsion version","sub.maxAppVersion":"Maximum version (exclusive)","sub.optional":"Optional","sub.platforms":"Supported platforms","sub.requirementsHint":"Supported: desktop, macos, windows, linux, android, ios, web. Leave blank if unspecified. ZIP requirements are read from the manifest; supplied values must match it.","sub.err.market_requirements_invalid":"Invalid version requirements or platforms.","sub.err.market_requirements_mismatch":"Supplied requirements differ from the ZIP manifest.","sub.mine":"My submissions","page.submission":"Submissions","sub.desc":"Manage your submissions, review results and version updates.","sub.new":"New submission","sub.refresh":"Refresh","sub.empty":"No submissions yet","sub.emptyHint":"Share your plugins, skills, Agents or Spaces in the marketplace.","sub.name":"Name","sub.summary":"Summary","sub.type":"Content type","sub.source":"Source","sub.type.skill":"Skill","sub.type.agent":"Agent","sub.type.plugin":"Plugin","sub.type.space":"Space","sub.type.theme":"Theme","sub.type.amadeus_plugin":"Amadeus plugin","sub.pending":"Pending review","sub.approved":"Published","sub.rejected":"Rejected","sub.pendingVersion":"v{version} update pending review","sub.rejectedVersion":"v{version} update rejected","sub.update":"Submit new version","sub.updateTitle":"Update {name}","sub.submit":"Submit for review","sub.submitted":"Submitted. Review results will appear in your submissions.","sub.updated":"Update submitted for review. The published version remains available.","sub.repo":"Public GitHub repository","sub.npm":"Public npm package","sub.repoHint":"README and Releases come from the repository; its owner is shown as the publisher.","sub.npmHint":"Package metadata comes from npm; the public repository owner is shown as the publisher.","sub.reviewHint":"New versions require review before distribution. Your Forsion account manages the submission.","sub.remoteUpdate":"Publish a new version at the source for an administrator to review.","sub.zip":"ZIP archive","sub.zipHint":"Up to 50 MB. Include the required manifest and entry files.","sub.version":"Version","sub.versionHint":"Use a version newer than the current one, matching the manifest.","sub.readme":"README (Markdown)","sub.keep":"Leave blank to keep unchanged","sub.filter":"Filter by status","sub.all":"All","sub.noResults":"No matching submissions","sub.downloads":"{n} downloads","sub.errName":"Enter a name.","sub.errSource":"Enter a public repository URL or npm package name.","sub.errZip":"Choose a ZIP archive.","sub.errLarge":"ZIP archives must not exceed 50 MB.","sub.errVersion":"Enter a version.","sub.err.market_npm_invalid":"The npm package is unavailable or does not meet the plugin requirements.","sub.err.market_npm_source":"Publish the new version on npm for review.","sub.err.market_github_source":"Publish a GitHub Release for review.","sub.err.market_not_found":"Submission unavailable. Refresh and retry.","sub.err.market_zip_required":"Choose a ZIP archive.","sub.err.market_zip_invalid":"The ZIP structure does not meet the publishing requirements.","sub.err.market_zip_too_large":"ZIP archives must not exceed 50 MB.","sub.err.market_version_required":"Enter a version.","sub.err.market_version_invalid":"Enter a valid version.","sub.err.market_version_mismatch":"The version does not match the manifest.","sub.err.market_version_not_newer":"The new version must be newer than the published version.","sub.err.market_icon_invalid":"Use a square PNG icon between 64 and 512 px.","sub.err.market_duplicate":"This content has already been submitted. Manage the existing submission.","sub.err.market_update_pending":"An update is already awaiting review.","sub.err.market_stale":"The submission has changed. Refresh and retry.","page.account":"Account","page.membershipUsage":"Membership & usage","page.membershipQuota":"Membership & quota","page.pointsInvite":"Points & invites","page.helpDiagnostics":"Help & diagnostics","account.details.title":"Sign-in & details","account.details.desc":"Edit your photo, nickname and bio under Profile.","account.details.username":"Username","diag.unavailable":"This host does not support diagnostic data. Update Forsion and try again.","page.profile":"Profile","page.quota":"Quota & points","page.backpack":"Backpack","page.security":"Security","page.usage":"Usage","page.feedback":"Feedback","store.group":"Membership & points","store.membership":"Membership","store.membership.desc":"Upgrade your plan for more daily and weekly quota","store.points":"Points","store.points.desc":"Buy points and use them to redeem items","store.items":"Items","store.items.desc":"Items you can redeem with points. Redeemed items go to your backpack","store.status":"Plan and points","store.tier":"Current plan","store.balance":"Points balance","store.choosePlan":"Choose a plan","store.payHint":"You pay on the payment page in your browser. This page refreshes when you come back","store.payOff":"Purchases are unavailable right now","store.period":"Billing period","store.period.monthly":"Monthly","store.period.quarterly":"Quarterly","store.period.yearly":"Yearly","store.per.monthly":"/ month","store.per.quarterly":"/ quarter","store.per.yearly":"/ year","store.currentTier":"Current plan","store.pay":"Pay","store.payPrice":"Pay {price}","store.noPlans":"No plans are available right now","store.packs":"Point packs","store.packsHint":"You pay on the payment page in your browser. Points arrive right after payment","store.noPacks":"No point packs are available right now","store.kind.pack":"Point pack","store.kind.card":"Consumable","store.kind.code":"Redeem code","store.kind.item":"Item","store.nPoints":"{n} points","store.instant":"Arrives right after payment","store.redeemTitle":"Redeem with points","store.redeemHint":"Redeeming with points completes right here. Items go to your backpack","store.redeem":"Redeem for {n} points","store.redeemConfirm":"Confirm: spend {n} points","store.redeemed":"Redeemed. The item is in your backpack","store.uncertain":"No response came back. Check your backpack before you try again","store.soldOut":"Sold out","store.left":"{n} left","store.toBackpack":"Goes to your backpack","store.limitReached":"You've reached the purchase limit","store.unavailable":"This item can't be redeemed right now","store.noItems":"Nothing to redeem right now","store.itemsOff":"Item redemption isn't available yet","store.openBackpack":"Open backpack","backpack.desc":"View the items you have collected. Select a slot for details.","backpack.refresh":"Refresh","backpack.total":"{n} items","backpack.grid":"Backpack items","backpack.slot":"{name}, quantity {n}","backpack.item":"Item","backpack.empty":"Your backpack is empty","backpack.emptyHint":"Items you redeem or receive will appear here.","backpack.select":"Select an item to view details","backpack.details":"Item details","backpack.quantity":"Quantity","backpack.acquired":"Acquired","backpack.source":"Received through","backpack.source.points":"Points exchange","backpack.source.admin":"Gift","backpack.source.reward":"Reward","backpack.source.other":"Cloud account","backpack.consumable":"Consumable","backpack.voucher":"Voucher","backpack.getCards":"Redeem reset cards","backpack.manageCards":"Use or redeem","backpack.reveal":"Reveal key","backpack.copyKey":"Copy key","backpack.noKey":"This item has no key.","backpack.use":"Use","backpack.confirmUse":"Confirm use","backpack.consumeConfirm":"Using this item consumes one copy.","backpack.collectible":"Collectible","backpack.effect.points":"+{n} points","backpack.effect.cards":"+{n} reset cards","backpack.effect.quota":"Reset daily and weekly quota","backpack.rarity.common":"Common","backpack.rarity.rare":"Rare","backpack.rarity.epic":"Epic","backpack.rarity.legendary":"Legendary","backpack.unavailable":"This item is no longer available. Refresh your backpack.","backpack.notUsable":"This item cannot be used.","backpack.quotaUnavailable":"Use cloud AI to initialize your quota before using this item.","common.cancel":"Cancel","common.copied":"Copied","common.copyFailed":"Couldn't copy","common.done":"Done","common.loadFailed":"Couldn't load","common.loadMore":"Load more","common.loading":"Loading\u2026","common.openInBrowser":"Open in browser","common.retry":"Retry","common.save":"Save","common.thisWeek":"This week","common.today":"Today","common.unlimited":"Unlimited","ann.eyebrow":"FORSION \xB7 Announcement","ann.close":"Close","ann.ok":"Got it","signin.button":"Sign in to Forsion","signin.desc":"Sign in to your Forsion account to manage your account, quota, security, submissions and feedback here.","signin.pending":"Waiting for you to finish in your browser\u2026","signin.deviceHint":"Your browser opens the sign-in page on its own. If it doesn't, scan the code with your phone or open the link below, and check that the code matches.","signin.code":"Code","signin.openLink":"Open sign-in page","signin.copyLink":"Copy link","signin.qrLabel":"Sign-in QR code","account.profile.title":"Profile","account.profile.desc":"Your photo and nickname, plus the phone and email linked to your account","account.avatar.change":"Change photo","account.avatar.saved":"Photo updated","account.nickname.edit":"Edit nickname","account.nickname.label":"Nickname","account.nickname.saved":"Nickname updated","account.role.admin":"Admin","account.username":"Username {name}","account.contact.phone":"Phone","account.contact.email":"Email","account.contact.unbound":"Not linked","account.contact.manage":"Manage in Security","account.web.open":"Open the account center in your browser","account.web.desc":"Cloud storage, AI Brain and themes are managed in the web account center.","member.title":"Membership","member.desc":"Your tier, plan and expiry date","member.upgrade":"Upgrade membership","member.renew":"Renew","member.freeName":"Free plan","member.freeHint":"Upgrade to get more AI quota","member.expires":"Expires {date}","member.noExpiry":"No expiry","member.loadFailed":"Couldn't load your membership.","local.title":"Accounts on this computer","local.desc":"Switch between accounts you've signed in with","local.current":"Current","local.switch":"Switch","local.add":"Sign in to another account","local.signOut":"Sign out","local.empty":"No saved accounts yet","local.loadFailed":"Couldn't read the account list","diag.title":"Diagnostic data","diag.desc":"Helps us troubleshoot problems and improve Forsion. Off by default.","diag.enable":"Upload diagnostic data","diag.enableDesc":"When this is on, this computer periodically uploads a snapshot of its Forsion setup to your Forsion account, where the Forsion team can view it. The Forsion team sets how often, once a day by default. You can turn it off at any time.","diag.collected":"What's uploaded","diag.item.app":"App and system versions, this computer's name, and its free memory and disk space","diag.item.settings":"Your model and voice choices, the switches and numeric values in background agent and plugin settings, and the names and on/off state of MCP servers and message channels","diag.item.agents":"Agent and team configuration (options such as name and model; descriptions and prompts are recorded by length only, and their text falls under the personas, memory and evolution switch below)","diag.item.plugins":"Names and versions of installed plugins, skills, themes and Spaces","diag.item.runs":"Run records from the last 7 days: each run's status and error reason, usage and timing of model calls and tools (no conversation text, and nothing those tools read or wrote), and the engine's recent log output","diag.notCollected":"Never uploaded: the sign-in credentials and API keys saved on this computer, your note files, agent libraries, or plugin data.","diag.sessions":"Include conversations","diag.sessionsDesc":"Conversations on this computer: the text of your messages and the agent's replies, the agent's reasoning and the names of the tools it used, including the background work of team members, discussions and delegated tasks. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. What those tools read or wrote and the attachments themselves are left out; file names that appear in messages, and anything the agent repeated from your notes or files in its replies, are included. Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.memory":"Include agent personas, memory and evolution records","diag.memoryDesc":"Each agent's persona (including the description and developer instructions in its configuration), and what the agent has built up on its own: its memory and the memory candidates it hasn't consolidated yet, its evolution record, its collaboration notes for you, the last 7 days of its logs and memory-consolidation activity, and project memory; plus your teams' charters and your user profile. These are the instructions you wrote for your agents and teams, and the facts they noted about you and your work from conversations. Each upload carries their current content (very long ones are cut short). Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.activity":"Include activity log","diag.activityDesc":"Your activity records, which include the first few dozen characters of conversations and the names of note files. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. If you'd rather not share them, turn this off before you turn uploads on.","diag.last":"Last upload: {time}","diag.noUpload":"Nothing uploaded yet","diag.freq.hour":"every hour","diag.freq.hours":"every {n} hours","diag.freq.day":"once a day","diag.freq.days":"every {n} days","diag.freq.manual":"only when the Forsion team requests it","diag.retention":"The cloud keeps this computer's snapshots from the last {n} days. Turning this off stops uploads; snapshots already uploaded stay in the cloud. To have them deleted, let us know under Feedback.","diag.uploadNow":"Upload now","diag.uploaded":"Uploaded","diag.failed":"Upload failed: {reason}","quota.ai.title":"AI quota","quota.ai.desc":"What's left today and this week; a quota reset card restores it","quota.resetDaily":"Resets daily at 0:00 (Beijing time)","quota.resetWeekly":"Resets {date} at 0:00 (Beijing time)","card.title":"Quota reset card","card.desc":"Restores today's and this week's AI quota to 100%","card.owned":"You have {n}","card.use":"Use one","card.useConfirm":"Confirm","card.used":"Used 1 quota reset card","card.left":"{n} left","card.noneHint":"You have no quota reset cards left. You can exchange points for more.","card.exchange":"Exchange points","card.price":"{price} points each, 1\u201350 at a time","card.count":"Number of cards","card.cost":"Costs {cost} points","card.countHint":"Enter 1\u201350","card.exchangeButton":"Exchange","card.exchangeConfirm":"Spend {cost} points","card.exchanged":"Quota reset cards added: {n}","points.title":"Points","points.desc":"Use points to get quota reset cards","points.balance":"Balance","points.balanceFailed":"Couldn't load your balance","points.recharge":"Buy points","bg.title":"Background quota","bg.desc":"Used by Muse and automations, counted separately from your AI quota","bg.autoMain":"Continue with AI quota when used up","bg.autoMainDesc":"When off, Muse and automations pause once the background quota runs out","bg.convert":"Move from AI quota","bg.convertDesc":"Moves a share of your AI quota limit, valid for the current period","bg.convertConfirm":"Move {pct}%","bg.converted":"Moved {pct}% from your AI quota","invite.title":"Invites & codes","invite.desc":"Invite friends to join, or redeem a code you received","invite.myCode":"My invite code","invite.count":"{n} invited","invite.copyCode":"Copy code","invite.copyLink":"Copy invite link","invite.loadFailed":"Couldn't load your invite code","invite.claim":"Enter an invite code","invite.claimDesc":"Within 7 days of signing up, you can enter a friend's invite code","invite.claimPlaceholder":"Friend's invite code","invite.claimSubmit":"Submit","invite.claimed":"Invite code applied","redeem.title":"Redemption code","redeem.desc":"Redeem points, membership or other rewards","redeem.placeholder":"Enter a code","redeem.submit":"Redeem","redeem.success":"Redeemed","redeem.successWith":"Redeemed: {what}","redeem.gotPoints":"{n} points","redeem.gotMembership":"membership","sec.methods.title":"Sign-in methods","sec.methods.desc":"Your phone and email can be used to sign in and reset your password","sec.bind":"Link","sec.change":"Change","sec.phone":"Phone number","sec.email":"Email address","sec.newPhone":"New phone number","sec.newEmail":"New email address","sec.phonePlaceholder":"Mainland China numbers as is; others with +country code","sec.emailPlaceholder":"name@example.com","sec.code":"Verification code","sec.codePlaceholder":"Enter the code","sec.sendCode":"Send code","sec.resendIn":"Resend in {s}s","sec.codeSent":"Code sent","sec.bindSubmit":"Link","sec.phoneBound":"Phone linked","sec.emailBound":"Email linked","sec.devices.title":"Signed-in devices","sec.devices.desc":"If you think someone else is using your account, sign out on every device","sec.logoutAll":"Sign out everywhere","sec.logoutAllDesc":"Including this computer: every device has to sign in again","sec.logoutAllConfirm":"Confirm sign out everywhere","sec.logoutAllDone":"Signed out everywhere","pw.title":"Password","pw.desc":"{min}\u2013{max} characters, with a lowercase letter, an uppercase letter and a special character, and no spaces","pw.change":"Change password","pw.modeLabel":"How to change it","pw.mode.current":"With current password","pw.mode.code":"With a verification code","pw.current":"Current password","pw.currentRequired":"Enter your current password","pw.new":"New password","pw.confirm":"Confirm new password","pw.mismatch":"The new passwords don't match","pw.submit":"Change password","pw.submitReset":"Set new password","pw.changed":"Password updated","pw.noPasswordYet":"This account doesn't have a password yet. Set one with a verification code instead.","pw.codeNeedsContact":"Link a phone or email first to set a password with a verification code.","pw.via":"Send the code to","pw.codeTo":"The code goes to {target}","pw.rulesLabel":"Password rules","pw.req.length":"{min}\u2013{max} characters","pw.req.lower":"A lowercase letter","pw.req.upper":"An uppercase letter","pw.req.special":"A special character","pw.req.space":"No spaces","pw.rule.format":"Invalid password","pw.rule.min":"Password must be at least 8 characters","pw.rule.max":"Password can't be longer than 64 characters","pw.rule.space":"Password can't contain spaces","pw.rule.lower":"Password needs a lowercase letter","pw.rule.upper":"Password needs an uppercase letter","pw.rule.special":"Password needs a special character","del.title":"Delete account","del.desc":"Permanently delete your account and all its data. This can't be undone","del.start":"Delete account","del.warn":"Deleting your account removes your account, points, membership, cloud storage and all other data for good.","del.methodLabel":"Verify with","del.byCode":"Verification code","del.byPassword":"Password","del.codeLabel":"Code sent to {target}","del.passwordLabel":"Account password","del.submit":"Delete account","del.confirm":"Delete permanently","del.done":"Account deleted","usage.overview.title":"Overview","usage.overview.desc":"Requests and AI quota used in the selected period","usage.range":"Time range","usage.days":"{n} days","usage.requests":"Requests","usage.successRate":"Success rate","usage.consumption":"AI quota used","usage.ofToday":"Of your daily limit","usage.unlimitedNote":"Your AI quota is unlimited, so usage isn't shown as a percentage.","usage.noLimitNote":"Your daily limit is 0 or unavailable right now, so usage isn't shown as a percentage.","usage.byModel.title":"By model","usage.byModel.desc":"Requests and quota used per model","usage.byApp.title":"By app","usage.byApp.desc":"Requests and quota used per app","usage.col.model":"Model","usage.col.app":"App","usage.col.requests":"Requests","usage.col.consumption":"Quota used","usage.empty":"No usage in this period","usage.appUnknown":"Other","usage.recent.title":"Recent usage","usage.recent.desc":"Each call as a share of your daily limit","usage.recentEmpty":"No usage yet","usage.failed":"Failed","usage.shown":"Showing {shown} of {total}","fb.list.title":"My feedback","fb.list.desc":"Issues and suggestions you've sent; replies show up here","fb.new":"New feedback","fb.empty":"No feedback yet","fb.untitled":"Untitled feedback","fb.unread":"New reply","fb.shown":"Showing {n}","fb.submitted":"Sent. We'll reply as soon as we can","fb.descLabel":"Describe the issue or suggestion","fb.descPlaceholder":"What happened, and what did you expect?","fb.imagesHint":"Attach up to {n} screenshots (5 MB each). You can paste or drop them here.","fb.addImages":"Add screenshots","fb.removeImage":"Remove this image","fb.submit":"Send","fb.back":"Back to list","fb.you":"You","fb.support":"Forsion team","fb.attachment":"Attachment","fb.imagePreview":"View image","fb.closedNote":"This ticket is closed and can't take replies. Send new feedback for a new issue.","fb.replyPlaceholder":"Reply\u2026","fb.replySend":"Send reply","fb.replySent":"Reply sent","fb.status.open":"Open","fb.status.in_progress":"In progress","fb.status.resolved":"Resolved","fb.status.closed":"Closed","err.accountGone":"This account is signed out. Sign in again","err.adminCannotDelete":"Admin accounts can't be deleted here","err.avatarInvalid":"Couldn't read this image. Try another one","err.avatarTooLarge":"This image is too large. Try a smaller one","err.backgroundUnavailable":"Background quota is unavailable right now","err.captcha":"You need to finish a verification check in your browser","err.codeCooldown":"Too many codes requested. Try again shortly","err.codeInvalid":"The code is wrong or has expired","err.codeRequired":"Enter the verification code","err.codeSendFailed":"Couldn't send the code. Try again later","err.currentPasswordWrong":"Your current password is incorrect","err.deleteTargetInvalid":"Codes can only go to the phone or email linked to your account","err.deleteVerifyFailed":"Verification failed, so your account wasn't deleted","err.emailInUse":"This email is already used by another account","err.emailInvalid":"Enter a valid email address","err.featureDisabled":"This feature is turned off for now","err.feedbackEmpty":"Describe the issue or suggestion first","err.feedbackTooLong":"The description is too long (10,000 characters max)","err.generic":"That didn't work. Try again later","err.imageRead":"Couldn't read the image","err.imageTooLarge":"Each image must be 5 MB or less","err.imageType":"Only images can be added","err.insufficientMainQuota":"Your AI quota is used up, so there's nothing to move","err.insufficientPoints":"Not enough points","err.priceChanged":"The reset card price just changed. Check the new price, then confirm the exchange again.","err.invalidCount":"Choose between 1 and 50 cards","err.invalidInviteCode":"This invite code is invalid or has expired","err.inviteAlreadyUsed":"You've already used an invite code","err.inviteEmpty":"Enter an invite code","err.inviteOwnCode":"You can't use your own invite code","err.inviteWindowExpired":"The 7-day window after sign-up has passed","err.loginCodeExpired":"The sign-in code expired. Sign in again","err.loginInProgress":"A sign-in is already in progress","err.loginTimeout":"Sign-in timed out. Try again","err.loginUnsupported":"This cloud doesn't support desktop sign-in","err.network":"Network error. Check your connection and try again","err.noCloudUrl":"Set the cloud address under Connection first","err.noResetCard":"You have no quota reset cards","err.openFailed":"Couldn't open the browser","err.passwordRequired":"Enter your current and new password","err.phoneInUse":"This phone number is already used by another account","err.phoneInvalid":"Enter a valid phone number (with +country code outside mainland China)","err.redeemEmpty":"Enter a code","err.redeemExpired":"This code has expired","err.redeemInactive":"This code is no longer active","err.redeemNotFound":"This code doesn't exist","err.redeemUsedUp":"This code has been used up","err.redeemUserLimit":"You've already redeemed this code","err.replyEmpty":"Write a reply first","err.replyTooLong":"The reply is too long (10,000 characters max)","err.server":"Server error ({status}). Try again later","err.session":"You've been signed out. Sign in again","err.signedOut":"Sign in to Forsion first","err.targetInvalid":"Enter a valid phone number or email","err.ticketNotFound":"This feedback doesn't exist or was deleted","err.tooFrequent":"Too many attempts. Try again shortly","err.tooManyImages":"You can add up to 5 images","err.unavailable":"This version of the desktop app can't do that yet. Update Forsion","profile.unsupported":"This server doesn't have profiles yet","profile.state.private":"Only you can see this","profile.state.public":"Public","profile.state.privateDesc":"Once public, anyone with the address can see your profile without signing in","profile.state.publicDesc":"Anyone with the public address can see it without signing in","profile.decorate":"Decorate","profile.publish":"Make public","profile.makePrivate":"Make private","profile.address":"Public address","profile.copyLink":"Copy link","profile.openPublic":"View public page","profile.nowPublic":"Your profile is now public","profile.nowPrivate":"Your profile is private. The public address no longer opens","profile.bio":"Bio","profile.bioPlaceholder":"Add a short bio","profile.linkAdd":"Add a link","profile.linkRemove":"Remove link","profile.linkInvalid":"Links must start with http:// or https://, or be a plain domain","profile.joined":"Joined {date}","profile.stat.tokens":"Total tokens","profile.stat.activeDays":"Active days","profile.stat.longest":"Longest streak","profile.stat.current":"Current streak","profile.stat.installs":"Work installs","profile.unit.days":"d","profile.works":"Featured works","profile.worksPick":"Choose","profile.worksEmpty":"No published works yet. Publish to the store or as a web app, and they can go here.","profile.worksNone":"Nothing to feature yet. Works appear here once they are in the store or published as a web app.","profile.worksPicked":"{n} of {max} selected","profile.worksAuto":"With none selected, the most installed ones are shown","profile.goSubmit":"Submit a work","profile.workInstalls":"{n} installs","profile.workVisits":"{n} visits","profile.work.skill":"Skill","profile.work.agent":"Agent","profile.work.plugin":"Plugin","profile.work.space":"Space","profile.work.theme":"Theme","profile.work.note":"Notes plugin","profile.work.webapp":"Web app","profile.activity":"Activity","profile.activityDays":"Active on {n} days in the past year","profile.less":"Less","profile.more":"More","profile.badges":"Badges","profile.badgesEmpty":"No badges yet. Streaks, published works and invites all earn one.","profile.badge.early":"Early user","profile.badge.streak":"30-day streak","profile.badge.author":"Author","profile.badge.inviter":"Top inviter","profile.badge.event":"Event keepsake","profile.badgeSub.early":"Joined in {value}","profile.badgeSub.streak":"Longest streak: {value} days","profile.badgeSub.author":"{value} published works","profile.badgeSub.inviter":"Invited {value} friends","profile.badgeSub.event":"Took part in a Forsion event{value}","profile.insights":"Insights","profile.insightsEmpty":"Not enough usage yet. Check back in a few days.","profile.insightModel":"Most used model","profile.insightHours":"Most active hours","profile.deco.skin":"Public page color scheme","profile.deco.mode":"Public page appearance","profile.deco.publicHint":"These two only set what visitors see on the public page. Here the profile follows Forsion's current theme.","profile.deco.cover":"Cover","profile.deco.frame":"Avatar frame","profile.deco.modules":"Sections","profile.skin.cream":"Classic","profile.skin.coral":"Coral","profile.skin.teal":"Teal","profile.skin.lavender":"Lavender","profile.mode.auto":"Auto","profile.mode.light":"Light","profile.mode.dark":"Dark","profile.cover.none":"None","profile.cover.mist":"Mist","profile.cover.contour":"Contour","profile.cover.dots":"Dots","profile.frame.none":"None","profile.frame.ring":"Ring","profile.frame.pro":"Member ring","profile.frameProHint":"The member ring is for paid members.","profile.col.show":"Show","profile.col.public":"Public","profile.moveUp":"Move up","profile.moveDown":"Move down","profile.modulesHint":'"Show" decides whether a section is on your profile. "Public" decides whether visitors see it, once your profile is public.',"profile.mod.stats":"Stats","profile.mod.works":"Works","profile.mod.activity":"Activity","profile.mod.badges":"Badges","profile.mod.insights":"Insights","profile.modDesc.stats":"Total tokens, active days, streaks and installs of your works","profile.modDesc.works":"Works you have published, up to 6","profile.modDesc.activity":"Which days you were active in the past year (shades only, no numbers)","profile.modDesc.badges":"Join year, streaks, publishing, invites and events","profile.modDesc.insights":"Your most used model and most active hours","profile.publishDesc":"Once public, anyone with this address can see your profile without signing in. You decide section by section what visitors see.","profile.publishNever":"Your avatar, nickname, username, bio and links become public too. Your email, phone number, membership expiry, points and quota never appear on your profile.","profile.publishConfirm":"Make public","profile.blocked.machineUsername":"Your current username was generated by the system and contains part of your phone number or email, so making it public would expose that. Change your username on the Account page of the web account center first (each account can do this once), then come back.","profile.blocked.publishBlocked":"An administrator has stopped this profile from being public. Contact us through Feedback if you have questions.","profile.goRename":"Change username","profile.invalid":"This couldn't be saved. Check it and try again","guide.title":"Guide","guide.readOnly":"Read-only","guide.more":"More","guide.unlockAll":"Unlock all","guide.relock":"Unlock level by level","guide.reminders":"Guide reminders","guide.spotlight":"On-screen hints","guide.spotStep":"Step {n} of {total}","guide.figure":"Diagram","guide.openAchievements":"Open achievements","guide.tasks":"Tasks in this chapter","guide.go":"Take me there","guide.desktopOnly":"Do it on your computer","guide.taskDone":"Done","guide.askTangu":"Ask Tangu","guide.progress":"Progress","guide.justUnlocked":"Just unlocked","guide.lockedHint":"Locked","guide.whatsNew":"What's new in {version}","guide.level.lv1":"Lv.1 Getting started","guide.level.lv2":"Lv.2 Finding your way","guide.level.lv3":"Lv.3 Making it yours","guide.level.lv4":"Lv.4 Going further","guide.locked.title":"This chapter is still locked","guide.locked.body":"Finish the tasks in {level} to read the rest.","guide.locked.left":"Still to do:","guide.locked.hint":"Been around a while? Unlock everything from the \xB7\xB7\xB7 menu.","guide.levelProgress":"This level: {done}/{total}","guide.next":"Next level","guide.allDone":"All done","guide.allDoneBody":"You've done every task in the guide. Come back any time.","guide.review":"Look back","guide.ask.hint":'Questions about "{chapter}"? Ask Tangu opens a new chat with this chapter attached.',"guide.ask.placeholder":"What would you like to know?","guide.ask.send":"Start a chat","guide.ask.prompt":`I'm reading the "{chapter}" chapter of the Forsion guide; it's attached below. {question}`,"guide.ask.unavailable":"Chat isn't available here","guide.ask.chatTitle":"Guide Q&A","guide.companion.back":"Back to the guide","guide.companion.close":"Close","guide.toast.taskDone":"Done: {task}","guide.letter.levelTitle":"{level} unlocked: try these next","guide.letter.levelBody":'You finished the previous level, so these chapters are open now. Every task has a "Take me there" button.',"guide.letter.versionTitle":"{n} new things to try in {version}","guide.letter.versionBody":"New in this version, ready to try:","guide.letter.open":"Open the guide","guide.status.done":"Done","guide.cmd.open":"Open the guide","penzor.title":"Penzor Cloud","penzor.kicker":"Penzor Cloud","penzor.overview":"Overview","penzor.places":"Places","penzor.details":"Details","penzor.ledger.sync":"Vault sync","penzor.ledger.ama":"Amadeus Cloud","penzor.ledger.apps":"App files","penzor.ledger.exports":"Exports","penzor.trash":"Trash","penzor.items":"{n} items","penzor.total.sub":"Stored in Forsion Cloud \xB7 updated {time}","penzor.justNow":"just now","penzor.ofMax":"/ {max}","penzor.card.syncSub":"{n} vaults \xB7 last write {time}","penzor.card.syncSubNone":"{n} vaults","penzor.card.syncFoot":"Files over {size} are not uploaded","penzor.card.syncWarn":"Almost full: after {max}, new files stop uploading; files already in the cloud keep syncing","penzor.card.amaSmall":"Not counted in your quota","penzor.card.amaSub":"{n} cloud vaults","penzor.card.amaFoot":"Notes and attachments on the Cloud side of Amadeus","penzor.card.appsFoot":"Trash: {n} items \xB7 {size}","penzor.card.appsWarn":"Almost full: after {max}, apps can't save new files. Trash counts too, so emptying it frees space","penzor.card.expSmall":"{n} files","penzor.card.expSub":"Latest: {name} \xB7 {time}","penzor.card.expFoot":"Files exported from apps","penzor.card.none":"Nothing yet","penzor.largest":"Largest files","penzor.col.name":"Name","penzor.col.size":"Size","penzor.col.mtime":"Modified","penzor.col.device":"Written by","penzor.col.deleted":"Deleted","penzor.col.origin":"Original location","penzor.col.app":"From","penzor.sort.mtime":"By modified","penzor.sort.size":"By size","penzor.sort.name":"By name","penzor.search":"Search file names here","penzor.sync.thisDevice":"Syncing on this device","penzor.meta.files":"{size} \xB7 {n} files","penzor.sync.last":"Last write {time} \xB7 {device}","penzor.sync.lastNoDevice":"Last write {time}","penzor.sync.devices":"{n} devices sync this vault","penzor.sync.meter":"Vault sync shares {max}; {used} used","penzor.apps.meter":"App files share {max}; {used} used (trash included)","penzor.apps.by":"Written by {app}","penzor.ama.notCounted":"Not counted in your quota","penzor.ama.open":"Open in Amadeus","penzor.trash.meta":"{n} items \xB7 {size}","penzor.trash.note":"Still counts toward the {max} for app files; space frees up once deleted permanently","penzor.trash.emptyBtn":"Empty trash","penzor.act.download":"Download","penzor.act.rename":"Rename","penzor.act.move":"Move to\u2026","penzor.act.trash":"Move to trash","penzor.act.delete":"Delete","penzor.act.restore":"Restore","penzor.act.purge":"Delete permanently","penzor.act.copyName":"Copy vault name","penzor.act.openSync":"Open sync settings","penzor.act.refresh":"Refresh","penzor.act.up":"Up one level","penzor.toast.trashed":"Moved \u201C{name}\u201D to trash","penzor.toast.restored":"Restored \u201C{name}\u201D","penzor.toast.purged":"Deleted \u201C{name}\u201D permanently","penzor.toast.emptied":"Trash emptied","penzor.toast.downloaded":"Saved to Downloads: {name}","penzor.toast.renamed":"Renamed to \u201C{name}\u201D","penzor.toast.moved":"Moved to \u201C{name}\u201D","penzor.toast.versionRestored":"Restored version {n}","penzor.toast.copied":"Vault name copied","penzor.toast.failed":"That didn't work: {reason}","penzor.confirm.purge":"Delete \u201C{name}\u201D permanently? This can't be undone.","penzor.confirm.empty":"Empty the trash? {n} items will be deleted permanently.","penzor.confirm.deleteExport":"Delete \u201C{name}\u201D? Exports have no trash, so this can't be undone.","penzor.cancel":"Cancel","penzor.side.where":"Location","penzor.side.mtime":"Modified","penzor.side.device":"Written by","penzor.side.thisDevice":"{name} (this device)","penzor.side.from":"From","penzor.side.versions":"Versions","penzor.side.versionsNone":"None","penzor.side.versionRow":"Version {n} \xB7 {time} \xB7 {size}","penzor.side.restoreVersion":"Restore this version","penzor.side.deletedAt":"Deleted","penzor.side.origin":"Original location","penzor.side.inner":"{n} more items inside come back with it","penzor.side.inTrash":"In trash \xB7 {size}","penzor.side.readonlySync":"Files in a synced vault are changed on your devices. Deleting one here would delete it on every device that syncs {vault}, so here you can only view and download.","penzor.side.readonlyAma":"Notes and attachments are changed in Amadeus. Deleting an attachment here would leave the notes that use it with missing images, so here you can only view and download.","penzor.side.exportNote":"Exports have no trash: deleting is permanent.","penzor.side.none":"Select a file to see its details","penzor.side.folder":"Folder \xB7 {n} items","penzor.side.folderPlain":"Folder","penzor.move.title":"Move to","penzor.move.root":"Top of {app}","penzor.move.here":"Move here","penzor.move.noFolders":"No folders at this level","penzor.rename.save":"Save","penzor.empty.title":"Nothing in Penzor Cloud yet","penzor.empty.lead":"These show up here once they're in the cloud:","penzor.empty.sync":"Pick Penzor Cloud as the remote service in Settings \u203A Sync, and your local vault syncs here","penzor.empty.ama":"Notes you write on the Cloud side of Amadeus","penzor.empty.apps":"Files apps save to the cloud or export","penzor.empty.openSync":"Open sync settings","penzor.out.title":"Sign in to see your Penzor Cloud","penzor.out.lead":"Penzor Cloud holds the vaults you sync to Forsion Cloud, your Amadeus Cloud notes and the files apps keep in the cloud.","penzor.out.signIn":"Sign in to Forsion","penzor.loading":"Loading\u2026","penzor.err":"Couldn't load: {reason}","penzor.folderEmpty":"No files here","penzor.noMatch":"No file names contain \u201C{q}\u201D","penzor.cmd.open":"Open Penzor Cloud","penzor.unreachable":"Can\u2019t reach Forsion Cloud. Try again later","penzor.toast.emptyPartial":"{n} items in the trash couldn\u2019t be deleted","penzor.sort.deleted":"By deleted","penzor.side.versionsN":"{n}","penzor.drive":"My drive","penzor.drive.meta":"Counts toward the {max} for app files","penzor.drive.empty":"Nothing here yet. Drag files in, or click Upload.","penzor.act.upload":"Upload","penzor.act.uploadMore":"More upload options","penzor.act.uploadFiles":"Upload files\u2026","penzor.act.uploadFolder":"Upload folder\u2026","penzor.act.uploadHere":"Upload here\u2026","penzor.act.newFolder":"New folder","penzor.act.clearSel":"Clear selection","penzor.newFolder.default":"New folder","penzor.sel.bar":"{n} selected \xB7 {size}","penzor.sel.title":"{n} selected","penzor.sel.sub":"{size} \xB7 {files} files","penzor.sel.subDirs":"{size} \xB7 {files} files, {dirs} folders","penzor.sel.download":"Download {n}","penzor.sel.saveTo":"Saves to","penzor.sel.saveToValue":"Downloads / {folder}","penzor.sel.noDirs":"Folders can\u2019t be downloaded yet; only the selected files will be.","penzor.download.folder":"Penzor Cloud {date}","penzor.drop.to":"Drop to upload to \u201C{place}\u201D","penzor.tx.busy":"Transferring {n}","penzor.tx.allDone":"All done","penzor.tx.failedN":"{n} didn\u2019t finish","penzor.tx.counts":"{up} up \xB7 {down} down","penzor.tx.eta":"about {eta} left","penzor.tx.doneN":"{n} finished","penzor.tx.restDone":"The other {n} finished","penzor.tx.pill":"{counts} \xB7 {pct}%","penzor.tx.queued":"Queued","penzor.tx.paused":"Paused \xB7 resumes from the start","penzor.tx.uploaded":"Uploaded \xB7 {time}","penzor.tx.downloaded":"Downloaded \xB7 {time}","penzor.tx.canceled":"Canceled","penzor.tx.left":"{eta} left","penzor.tx.sec":"{n}s","penzor.tx.min":"{n} min","penzor.tx.pause":"Pause","penzor.tx.resume":"Resume","penzor.tx.cancel":"Cancel","penzor.tx.retry":"Retry","penzor.tx.remove":"Remove","penzor.tx.locate":"Show","penzor.tx.reveal":"Show in folder","penzor.tx.pauseAll":"Pause all","penzor.tx.resumeAll":"Resume all","penzor.tx.retryAll":"Retry all","penzor.tx.clearDone":"Clear finished","penzor.tx.clear":"Clear","penzor.tx.collapse":"Collapse","penzor.tx.expand":"Show transfers","penzor.tx.quota":"Not enough space: {size} short","penzor.tx.quotaSub":"Nothing in this batch was started","penzor.tx.freeSpace":"Free up space in Trash","penzor.err.too_large":"Over the 50 MB per-file limit ({size}); can\u2019t upload it yet","penzor.err.quota":"Not enough cloud space","penzor.err.network":"Connection lost at {pct}%","penzor.err.account_changed":"You switched accounts, so this one stopped","penzor.err.not_signed_in":"Not signed in","penzor.err.gone":"The file is no longer on this device","penzor.err.changed":"The file changed while uploading. Try again","penzor.err.storage_unavailable":"Cloud storage is unavailable right now","penzor.err.other":"Didn\u2019t finish ({code})","penzor.err.too_many":"Up to {n} files at a time. Add them in smaller batches","penzor.toast.upDoneOne":"Uploaded \u201C{name}\u201D","penzor.toast.upDoneMany":"Uploaded {n} files","penzor.toast.downDoneMany":"Downloaded {n} files to Downloads","penzor.toast.txFailed":"{n} transfers didn\u2019t finish. Open Penzor Cloud to check","penzor.toast.folderExists":"There\u2019s already a folder called \u201C{name}\u201D","penzor.toast.trashedN":"Moved {n} items to the trash","penzor.toast.movedN":"Moved {n} items to \u201C{name}\u201D","penzor.toast.batchPartial":"{n} items didn\u2019t go through","penzor.sync.title":"Sync","penzor.sync.onN":"{n} on","penzor.sync.allOff":"All off","penzor.sync.waiting":"Waiting for you","penzor.sync.badgeWaiting":"{n} on \xB7 1 waiting for you","penzor.sync.running":"Syncing {pct}%","penzor.sync.runningPlain":"Syncing","penzor.sync.metaDevice":"This computer: {name}","penzor.sync.metaLast":"Last synced {time}","penzor.sync.metaNever":"Not synced yet","penzor.sync.every":"Every {n} min","penzor.sync.everyHours":"Every {n} h","penzor.sync.manual":"Manual","penzor.sync.onStart":"once at startup","penzor.sync.minAgo":"{n} min ago","penzor.sync.hoursAgo":"{n} h ago","penzor.sync.notesNamed":"Notes vault \u201C{name}\u201D","penzor.sync.notesPlain":"This computer\u2019s notes vault","penzor.sync.notesDesc":"The whole local vault, kept the same on your other computers","penzor.sync.agents":"Agents & memory","penzor.sync.agentsDesc":"Your agents\u2019 memory, logs, skills and working notes","penzor.sync.agentsN":"Agents: {n}","penzor.sync.plugins":"Plugin data","penzor.sync.pluginsDesc":"Settings and data your plugins keep","penzor.sync.pluginsN":"Plugins: {n}","penzor.sync.off":"Off","penzor.sync.done":"Synced","penzor.sync.doneSize":"Synced \xB7 {size}","penzor.sync.firstPending":"Waiting for the first sync","penzor.sync.failed":"Last sync failed","penzor.sync.overQuota":"Over the limit, some files not uploaded","penzor.sync.to":"Syncing to {name}","penzor.sync.toFolder":"Syncing to a local folder","penzor.sync.decideAbove":"Choose in the card above","penzor.sync.kvSchedule":"Schedule","penzor.sync.kvDirection":"Direction","penzor.sync.kvSkipped":"Not uploaded","penzor.sync.kvWhere":"In the cloud","penzor.sync.change":"Change","penzor.sync.open":"Open","penzor.sync.dir.both":"Both ways","penzor.sync.dir.push":"Upload only","penzor.sync.dir.pull":"Download only","penzor.sync.skippedN":"{n} files over {size}","penzor.sync.where":"{ledger} \u203A {vault}","penzor.sync.whereUsed":"{ledger} \u203A {vault} \xB7 {used} / {max}","penzor.sync.devicesTitle":"Devices syncing","penzor.sync.thisOne":"This computer","penzor.sync.lastWrite":"Last write {time}","penzor.sync.noDevices":"No devices are syncing yet","penzor.sync.phoneTitle":"What your phone and the web see","penzor.sync.phoneTip":"Your phone and the web read the cloud vault (the cloud side of Amadeus, {size}) directly. It always syncs, and it\u2019s a separate copy from this computer\u2019s notes vault above. To see a folder from this computer on your phone, right-click it in your notes and sync it to the cloud vault.","penzor.sync.phoneTipPlain":"Your phone and the web read the cloud vault (the cloud side of Amadeus) directly. It always syncs, and it\u2019s a separate copy from this computer\u2019s notes vault above. To see a folder from this computer on your phone, right-click it in your notes and sync it to the cloud vault.","penzor.sync.foot":"Schedule, direction and other storage (Dropbox / S3 / WebDAV) are in","penzor.sync.footLink":"Settings \u203A Sync","penzor.sync.askTitle":"There\u2019s already a notes vault in the cloud","penzor.sync.askCloud":"The cloud copy is from {device}: {files} files \xB7 {size}.","penzor.sync.askCloudNoDevice":"The cloud copy: {files} files \xB7 {size}.","penzor.sync.askLocal":"This computer has {local} files the cloud copy doesn\u2019t, and {conflicts} that differ.","penzor.sync.askMerge":"Merge both","penzor.sync.askCloudBtn":"Use the cloud copy","penzor.sync.askSkip":"Don\u2019t sync notes on this computer yet","penzor.sync.askExplain":"Merge keeps both sides; files that differ are saved again as a \u201C(conflict)\u201D copy. Use the cloud copy first moves this computer\u2019s differing files into a \u201C{backup}\u201D folder next to the vault, then downloads the cloud copy.","penzor.sync.askConfirm":"This computer\u2019s differing files move to \u201C{backup}\u201D first, then the cloud copy replaces them.","penzor.sync.askConfirmGo":"Move them and use the cloud copy","penzor.sync.backupName":"{name} backup before sync {date}","penzor.sync.quotaTitle":"Your notes vault is {size}, over the {max} limit of {ledger}","penzor.sync.quotaTitlePlain":"Your notes vault is over the {ledger} limit","penzor.sync.quotaBody":"Files that don\u2019t fit stay on this computer. Nothing is deleted, they just aren\u2019t uploaded, and everything else keeps syncing.","penzor.sync.quotaLarge":"Single files over {size} are never uploaded ({n}).","penzor.sync.quotaSee":"See what\u2019s not uploaded"},$s={zh:Fu,en:$u},Qe=e=>e==="en"?"en":"zh";function Ce(e,t,n){let r=$s[e][t]??$s.zh[t]??t;return n?r.replace(/\{(\w+)\}/g,(a,i)=>i in n?String(n[i]):a):r}var pr=e=>(t,n)=>Ce(e,t,n),bt=(e,t)=>"raw"in e?e.raw:t(e.key,e.vars);var Bs=`
70
70
  .fx-acct { color: var(--text); }
71
71
  .fx-acct .fx-panel > .settings-panel-head:last-child { border-bottom-color: transparent; }
72
72
  .fx-acct .fx-panel > .fx-block + .fx-block,
@@ -564,7 +564,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let a="<p>An error
564
564
  .fx-acct .fx-sub-summary { margin: 0; color: var(--text-muted); overflow-wrap: anywhere; font-size: var(--ui-font-body); line-height: var(--ui-line-body); }
565
565
  .fx-acct .fx-sub-item > .btn { justify-self: start; }
566
566
  .fx-acct .fx-sub-item > .fx-note { margin: 0; overflow-wrap: anywhere; }
567
- `,ko=`
567
+ `,Us=`
568
568
  .fx-ann-backdrop { position: fixed; inset: 0; z-index: 1600; display: grid; place-items: center; padding: 20px; background: color-mix(in srgb, var(--bg) 78%, transparent); backdrop-filter: blur(8px); animation: fx-ann-fade 300ms ease-out both; }
569
569
  .fx-ann { position: relative; display: flex; flex-direction: column; width: min(100%, 560px); max-height: calc(100dvh - 40px); overflow: auto; padding: 24px 28px 22px; border: var(--border-width) solid var(--border); border-radius: var(--radius-lg); background: var(--bg-card); box-shadow: var(--card-shadow); color: var(--text); font-family: var(--font-ui); text-align: left; animation: fx-ann-enter 480ms cubic-bezier(.2,.75,.15,1) both; }
570
570
  .fx-ann:focus { outline: none; }
@@ -591,7 +591,7 @@ html[data-glass='off'] .fx-ann-backdrop { backdrop-filter: none; background: var
591
591
  @media (prefers-reduced-motion: reduce) {
592
592
  .fx-ann-backdrop, .fx-ann, .fx-ann-eyebrow, .fx-ann-title, .fx-ann-body, .fx-ann-ok { animation: none; }
593
593
  }
594
- `,wo=`
594
+ `,qs=`
595
595
  :host { display: block; color: var(--text); font-family: var(--font-body, var(--font-ui)); font-size: var(--ui-font-body); line-height: 1.65; overflow-wrap: anywhere; }
596
596
  .doc > :first-child { margin-top: 0; }
597
597
  .doc > :last-child { margin-bottom: 0; }
@@ -615,5 +615,689 @@ img { border-radius: var(--radius-sm); }
615
615
  hr { margin: 16px 0; border: 0; border-top: var(--border-width) solid var(--border); }
616
616
  a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
617
617
  strong, b { font-weight: 650; }
618
- `;var At=t=>typeof t=="string"?t:"";function ku(t){if(!t||typeof t!="object")return null;let e=t,n=typeof e.id=="string"?e.id.trim():typeof e.id=="number"&&Number.isFinite(e.id)?String(e.id):"",a=At(e.titleZh),i=At(e.bodyZh);return!n||!a.trim()&&!i.trim()?null:{id:n,titleZh:a,titleEn:At(e.titleEn).trim()?At(e.titleEn):null,bodyZh:i,bodyEn:At(e.bodyEn).trim()?At(e.bodyEn):null,format:e.format==="html"?"html":"markdown",publishedAt:At(e.publishedAt)||null}}function wu(t,e){return e==="en"&&t.bodyEn?{lang:"en",title:t.titleEn??t.titleZh,body:t.bodyEn}:{lang:"zh",title:t.titleZh,body:t.bodyZh}}var _u=new Fr({gfm:!0,breaks:!0}),Su=["script","iframe","frame","frameset","object","embed","applet","portal","form","input","textarea","select","option","button","link","meta","base","noscript"],Au=/^(?:https?:|mailto:|#)/i;function So(t){return Tr.sanitize(t,{FORCE_BODY:!0,RETURN_DOM_FRAGMENT:!0,FORBID_TAGS:Su,ALLOWED_URI_REGEXP:Au})}function Cu(t,e){let n=e==="markdown"?_u.parse(t,{async:!1}):t;return So(n)}var qn=null;function Tu(){if(qn===null)try{let t=So('<p onclick="1"><a href="javascript:void 0">a</a></p><script>1<\/script><iframe></iframe>');qn=Tr.isSupported&&!t.querySelector("script, iframe, [onclick], a[href]")}catch{qn=!1}return qn}function Pu(t){try{let e=new URL(String(t??"").trim());return e.protocol==="http:"||e.protocol==="https:"?e.href:null}catch{return null}}var Eu="http://www.w3.org/1999/xlink";function Wn(t){let e=t.target,n=e&&typeof e.closest=="function"?e.closest("a, area"):null;if(!n||(t.preventDefault(),t.type!=="click"))return;let a=Pu(n.getAttribute("href")??n.getAttributeNS(Eu,"href"));if(a)try{j().openExternal?.(a)?.catch(()=>{})}catch{}}function _o(t){return t.shadowRoot??t.attachShadow({mode:"open"})}function Ru(t){let{ctx:e,ann:n}=t,[a,i]=S(()=>Ke(e.getLocale?.()));X(()=>{i(Ke(e.getLocale?.()));let d=e.subscribeLocale?.(g=>i(Ke(g)));return()=>{typeof d=="function"&&d()}},[e]);let o=Ve(()=>Hn(a),[a]),s=wu(n,a),l=W(null),c=W(null),u=W(null),f=W(null),m=W(t.onClose);return m.current=t.onClose,X(()=>{let d=document.activeElement instanceof HTMLElement?document.activeElement:null;l.current?.focus();let g=v=>{if(v.key==="Escape"){v.preventDefault(),v.stopPropagation(),m.current();return}if(v.key!=="Tab")return;let k=c.current,y=u.current,x=l.current;if(!k||!y||!x)return;let w=document.activeElement;if(!w||!x.contains(w)){v.preventDefault(),(v.shiftKey?y:k).focus();return}v.shiftKey&&(w===k||w===x)?(v.preventDefault(),y.focus()):!v.shiftKey&&w===y&&(v.preventDefault(),k.focus())},h=v=>{let k=l.current;k&&v.target instanceof Node&&!k.contains(v.target)&&k.focus()};return window.addEventListener("keydown",g,!0),document.addEventListener("focusin",h,!0),()=>{window.removeEventListener("keydown",g,!0),document.removeEventListener("focusin",h,!0),d?.isConnected&&d.focus()}},[]),X(()=>{let d=f.current;if(!d)return;let g=_o(d);return g.addEventListener("click",Wn),g.addEventListener("auxclick",Wn),()=>{g.removeEventListener("click",Wn),g.removeEventListener("auxclick",Wn)}},[]),X(()=>{let d=f.current;if(!d)return;let g=document.createElement("style");g.textContent=wo;let h=document.createElement("div");h.className="doc",h.appendChild(Cu(s.body,n.format)),_o(d).replaceChildren(g,h)},[s.body,n.format]),r("div",{class:"fx-ann-backdrop",children:[r("style",{children:ko}),r("section",{ref:l,class:"fx-ann",role:"dialog","aria-modal":"true","aria-labelledby":"fx-ann-title","aria-describedby":"fx-ann-body",tabIndex:-1,lang:s.lang==="zh"?"zh-CN":"en","data-announcement-id":n.id,children:[r("button",{ref:c,type:"button",class:"fx-ann-close","aria-label":o("ann.close"),onClick:()=>m.current(),children:r(E,{name:"x",size:16})}),r("div",{class:"fx-ann-eyebrow",children:o("ann.eyebrow")}),r("h2",{id:"fx-ann-title",class:"fx-ann-title",children:s.title}),r("div",{class:"fx-ann-body",children:r("div",{ref:f,id:"fx-ann-body",class:"fx-ann-doc"})}),r("div",{class:"fx-ann-footer",children:r("button",{ref:u,type:"button",class:"fx-ann-ok",onClick:()=>m.current(),children:o("ann.ok")})})]})]})}function Mu(t){try{return new URLSearchParams(t||"").has("window")}catch{return!1}}function Iu(t=document,e=12e3){let n=t.getElementById("tangu-splash");return n?.parentNode?new Promise(a=>{let i=()=>{o.disconnect(),clearTimeout(s),a()},o=new MutationObserver(()=>{n.isConnected||i()});o.observe(n.parentNode,{childList:!0});let s=setTimeout(i,e)}):Promise.resolve()}function Ao(t,e=window){let n=e?.tangu;if(!t||!n?.cloudFetch||n.unitPage||Mu(e.location?.search))return null;let a=0,i=!1,o=null,s=Promise.resolve(),l=f=>{let m=document.createElement("div");m.className="fx-ann-root",document.body.appendChild(m);let d=!1,g=h=>{d||(d=!0,o?.id===f.id&&(o=null),ut(null,m),m.remove(),h&&(s=M(`/announcements/${encodeURIComponent(f.id)}/seen`,{method:"POST"})))};o={id:f.id,finish:g},ut(r(Ru,{ctx:t,ann:f,onClose:()=>g(!0)}),m)},c=async()=>{let f=++a;await s;let m=await M("/announcements/pending");if(i||f!==a||!m.ok)return;let d=ku(m.data?.announcement);!d||o||Tu()&&(await Iu(),!(i||f!==a||o)&&l(d))},u=n.onAuthChanged?.(f=>{o?.finish(!1),f?.loggedIn?c():a++});return c(),{check:c,dispose(){i=!0,a++,typeof u=="function"&&u(),o?.finish(!1)}}}function Co(t){return typeof t!="string"?{ok:!1,rule:"format"}:t.length<8?{ok:!1,rule:"min"}:t.length>64?{ok:!1,rule:"max"}:/\s/.test(t)?{ok:!1,rule:"space"}:/[a-z]/.test(t)?/[A-Z]/.test(t)?/[^A-Za-z0-9]/.test(t)?{ok:!0}:{ok:!1,rule:"special"}:{ok:!1,rule:"upper"}:{ok:!1,rule:"lower"}}function To(t){return{length:t.length>=8&&t.length<=64,lower:/[a-z]/.test(t),upper:/[A-Z]/.test(t),special:/[^A-Za-z0-9]/.test(t),space:t.length>0&&!/\s/.test(t)}}var Po={\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E:"format","\u5BC6\u7801\u81F3\u5C11 8 \u4F4D":"min","\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D":"max",\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C:"space",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD:"lower",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD:"upper",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26:"special"};var Eo={no_reset_card:"err.noResetCard",invalid_type:"err.generic",invalid_count:"err.invalidCount",insufficient_points:"err.insufficientPoints",price_changed:"err.priceChanged",insufficient_main_quota:"err.insufficientMainQuota",background_unavailable:"err.backgroundUnavailable",invalid_percent:"err.generic",invalid_request:"err.generic",invalid_invite_code:"err.invalidInviteCode",already_used:"err.inviteAlreadyUsed",window_expired:"err.inviteWindowExpired",ITEM_NOT_FOUND:"backpack.unavailable",ITEM_NOT_ACTIVE:"backpack.unavailable",ITEM_NOT_USABLE:"backpack.notUsable",ITEM_EFFECT_UNAVAILABLE:"backpack.quotaUnavailable",FEATURE_DISABLED:"err.featureDisabled",INSUFFICIENT_POINTS:"err.insufficientPoints",OUT_OF_STOCK:"store.soldOut",LIMIT_REACHED:"store.limitReached",NOT_AVAILABLE:"store.unavailable",NOT_POINTS_PURCHASABLE:"store.unavailable",CAPTCHA_FAILED:"err.captcha",machine_username:"profile.blocked.machineUsername",publish_blocked:"profile.blocked.publishBlocked",invalid_settings:"profile.invalid"},Ro={"Current password is incorrect":"err.currentPasswordWrong","Current and new password are required":"err.passwordRequired",\u9A8C\u8BC1\u7801\u65E0\u6548\u6216\u5DF2\u8FC7\u671F:"err.codeInvalid","Invalid or expired verification code":"err.codeInvalid",\u8D26\u53F7\u6216\u9A8C\u8BC1\u7801\u9519\u8BEF:"err.codeInvalid",\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801:"err.codeRequired","Email already in use":"err.emailInUse","Phone number already in use":"err.phoneInUse","Invalid email format":"err.emailInvalid","Email is required":"err.emailInvalid","Invalid phone number format":"err.phoneInvalid","Phone number is required":"err.phoneInvalid","Invalid phone number or email format":"err.targetInvalid","Please wait before requesting another code":"err.codeCooldown","Failed to send verification code":"err.codeSendFailed","Invalid target for account deletion":"err.deleteTargetInvalid","\u8EAB\u4EFD\u9A8C\u8BC1\u5931\u8D25\uFF0C\u65E0\u6CD5\u6CE8\u9500\u8D26\u6237":"err.deleteVerifyFailed",\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500:"err.adminCannotDelete",\u79EF\u5206\u4F59\u989D\u4E0D\u8DB3:"err.insufficientPoints","\u5151\u6362\u5F20\u6570\u9700\u4E3A 1-50 \u7684\u6574\u6570":"err.invalidCount",\u6CA1\u6709\u53EF\u7528\u7684\u91CD\u7F6E\u5361:"err.noResetCard","\u4E3B\u989D\u5EA6\u5DF2\u7528\u5B8C,\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6":"err.insufficientMainQuota",\u540E\u53F0\u989D\u5EA6\u6682\u4E0D\u53EF\u7528:"err.backgroundUnavailable",\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548:"err.invalidInviteCode","\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F":"err.inviteWindowExpired",\u4F60\u5DF2\u4F7F\u7528\u8FC7\u9080\u8BF7\u7801:"err.inviteAlreadyUsed","You have already used an invite code":"err.inviteAlreadyUsed","Cannot use your own invite code":"err.inviteOwnCode","Invite code is required":"err.inviteEmpty","code is required":"err.redeemEmpty","Redemption code not found":"err.redeemNotFound","Redemption code is not active":"err.redeemInactive","Redemption code has expired":"err.redeemExpired","Redemption code has reached maximum uses":"err.redeemUsedUp","You have already used this code the maximum number of times":"err.redeemUserLimit",avatar_too_large:"err.avatarTooLarge","description is required":"err.feedbackEmpty","description too long (max 10000 chars)":"err.feedbackTooLong","content is required":"err.replyEmpty","content too long (max 10000 chars)":"err.replyTooLong","Ticket not found":"err.ticketNotFound","Too many attachments (max 5)":"err.tooManyImages","Attachment type not allowed (image / json / text only)":"err.imageType","\u4EBA\u673A\u9A8C\u8BC1\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5":"err.captcha"},Qr={format:"pw.rule.format",min:"pw.rule.min",max:"pw.rule.max",space:"pw.rule.space",lower:"pw.rule.lower",upper:"pw.rule.upper",special:"pw.rule.special"};function Lu(t){if(t.code&&Eo[t.code])return Eo[t.code];if(t.detail){if(Ro[t.detail])return Ro[t.detail];let e=Po[t.detail];if(e)return Qr[e];if(t.detail.startsWith("Attachment exceeds 5MB"))return"err.imageTooLarge"}return null}function Ce(t){let e=Lu(t);return e?{key:e}:wt(t)?{key:"err.signedOut"}:t.status===0?{key:"err.network"}:t.status===401?{key:"err.session"}:t.status===429?{key:"err.tooFrequent"}:t.detail?{raw:t.detail}:t.status>=500?{key:"err.server",vars:{status:t.status}}:{key:"err.generic"}}function nn(t){let e=t.trim();return e?/cancelled\.?$/i.test(e)?null:e==="A sign-in is already in progress."?{key:"err.loginInProgress"}:e.startsWith("\u767B\u5F55\u8D85\u65F6")?{key:"err.loginTimeout"}:e.startsWith("\u767B\u5F55\u7801\u5DF2\u8FC7\u671F")?{key:"err.loginCodeExpired"}:e.startsWith("\u65E0\u6CD5\u8FDE\u63A5")?{key:"err.network"}:e.startsWith("\u4E91\u7AEF\u4E0D\u652F\u6301 CLI \u767B\u5F55")?{key:"err.loginUnsupported"}:e.startsWith("\u8BF7\u5148\u586B\u5199 Forsion \u4E91\u7AEF\u5730\u5740")?{key:"err.noCloudUrl"}:e.startsWith("Account is no longer signed in")?{key:"err.accountGone"}:{raw:e}:{key:"err.generic"}}var ea=io(null);function D(){let t=bo(ea);if(!t)throw new Error("forsion-extend: page rendered outside its host root");return t}var Ue=()=>D().t;function we(){let t=W(!0);return X(()=>(t.current=!0,()=>{t.current=!1}),[]),t}var Mo={pending:!1,error:null,success:null,captcha:!1};function O(){let t=we(),[e,n]=S(Mo),a=W(!1),i=pt(async s=>{if(a.current)return;a.current=!0,n({pending:!0,error:null,success:null,captcha:!1});let l;try{l=await s()}catch(c){l={error:{raw:String(c?.message||c)}}}a.current=!1,t.current&&n({pending:!1,error:l?.error??null,success:l?.success??null,captcha:!!l?.captcha})},[]),o=pt(()=>{a.current||n(Mo)},[]);return{...e,run:i,clear:o}}var ue=t=>({error:Ce(t),captcha:t.status===403&&t.code==="CAPTCHA_FAILED"});function Io(){let[t,e]=S(0),n=W(null);X(()=>()=>{n.current&&clearInterval(n.current)},[]);let a=pt((o=60)=>{n.current&&clearInterval(n.current),e(o),n.current=setInterval(()=>{e(s=>s<=1?(n.current&&clearInterval(n.current),n.current=null,0):s-1)},1e3)},[]),i=pt(()=>{n.current&&clearInterval(n.current),n.current=null,e(0)},[]);return{left:t,start:a,stop:i}}function ve(t){let[e,n]=S({state:"loading"}),a=W(0),i=W(t);i.current=t;let o=pt((c=!1)=>{let u=++a.current;c||n({state:"loading"}),(async()=>{let f;try{f=await i.current()}catch(m){f={ok:!1,status:0,code:null,detail:null,transport:String(m?.message||m)}}u===a.current&&(f.ok?n({state:"ready",data:f.data,gen:u}):wt(f)?n({state:"signedOut"}):(f.status===401&&j().authStatus?.().catch(()=>{}),n({state:"error",fail:f})))})()},[]);X(()=>{o();let c=j().onAuthChanged?.(()=>o());return()=>{a.current++,c?.()}},[o]);let s=pt(()=>o(),[o]),l=pt(()=>o(!0),[o]);switch(e.state){case"ready":{let c=e.gen,u=f=>n(m=>m.state==="ready"&&m.gen===c?{...m,data:f(m.data)}:m);return{state:"ready",data:e.data,reload:l,update:u}}case"error":return{state:"error",error:Ce(e.fail),retry:s};default:return e}}function jn(t){let e=String(t||"").trim();if(!e)return"";let n=e.startsWith("+")?4:3;return e.length<=n+4?`${e.slice(0,2)}***`:`${e.slice(0,n)}****${e.slice(-4)}`}function Xn(t){let e=String(t||"").trim(),n=e.lastIndexOf("@");if(n<=0)return e?`${e.slice(0,1)}***`:"";let a=e.slice(0,n);return`${a.slice(0,a.length<=2?1:2)}***${e.slice(n)}`}function rn(t){let e=String(t||"").trim().toLowerCase()||"free";return e.charAt(0).toUpperCase()+e.slice(1)}var Du=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Lo(t,e){let n=String(t||"").trim(),a,i,o=/^(\d{4})-(\d{2})-(\d{2})$/.exec(n);if(o)a=Number(o[2]),i=Number(o[3]);else{let s=new Date(n);if(!n||Number.isNaN(s.getTime()))return null;let l=new Intl.DateTimeFormat("en-US",{timeZone:"Asia/Shanghai",month:"numeric",day:"numeric"}).formatToParts(s);a=Number(l.find(c=>c.type==="month")?.value),i=Number(l.find(c=>c.type==="day")?.value)}return!(a>=1&&a<=12)||!(i>=1&&i<=31)?null:e==="zh"?`${a}\u6708${i}\u65E5`:`${Du[a-1]} ${i}`}var ta=t=>t==="zh"?"zh-CN":"en-US";function Do(t){if(t==null||t==="")return null;let e=new Date(typeof t=="string"&&/^\d+$/.test(t)?Number(t):t);return Number.isNaN(e.getTime())?null:e}function Vn(t,e){let n=Do(t);return n?new Intl.DateTimeFormat(ta(e),{year:"numeric",month:"short",day:"numeric"}).format(n):"\u2014"}function Je(t,e){let n=Do(t);return n?new Intl.DateTimeFormat(ta(e),{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(n):"\u2014"}function re(t,e){let n=typeof t=="number"?t:Number(t);return Number.isFinite(n)?new Intl.NumberFormat(ta(e),{maximumFractionDigits:2}).format(n):"\u2014"}var Qe=class extends Error{};async function Kn(t,e=256){if(t.size>20971520)throw new Qe;let n=URL.createObjectURL(t);try{let a=new Image;await new Promise((f,m)=>{a.onload=()=>f(),a.onerror=()=>m(new Error("image decode failed")),a.src=n});let i=a.naturalWidth,o=a.naturalHeight;if(!i||!o)throw new Error("empty image");if(i*o>5e7)throw new Qe;let s=Math.min(1,e/Math.max(i,o)),l=document.createElement("canvas");l.width=Math.max(1,Math.round(i*s)),l.height=Math.max(1,Math.round(o*s));let c=l.getContext("2d");if(!c)throw new Error("canvas unavailable");c.fillStyle="#fff",c.fillRect(0,0,l.width,l.height),c.drawImage(a,0,0,l.width,l.height);let u=l.toDataURL("image/jpeg",.85);if(u.length>262144)throw new Qe;return u}finally{URL.revokeObjectURL(n)}}function Jn(t){let e=String(t||"").trim();if(!e)return"?";let n=Array.from(e)[0];return/[㐀-鿿]/.test(n)?n:Array.from(e).slice(0,2).join("").toUpperCase()}var Ct=(t=>(t[t.Border=-1]="Border",t[t.Data=0]="Data",t[t.Function=1]="Function",t[t.Position=2]="Position",t[t.Timing=3]="Timing",t[t.Alignment=4]="Alignment",t))(Ct||{}),zu=[0,1],No=[1,0],Oo=[2,3],Bo=[3,2],Nu={L:zu,M:No,Q:Oo,H:Bo},Ou=/^\d*$/,Bu=/^[A-Z0-9 $%*+./:-]*$/,na="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",oa=1,sa=40,zo=3,Fu=3,Yn=40,$u=10,Fo=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],$o=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],ra=class{constructor(e,n,a,i){if(this.version=e,this.ecc=n,e<oa||e>sa)throw new RangeError("Version value out of range");if(i<-1||i>7)throw new RangeError("Mask value out of range");this.size=e*4+17;let o=Array.from({length:this.size}).fill(!1);for(let l=0;l<this.size;l++)this.modules.push(o.slice()),this.types.push(o.map(()=>0));this.drawFunctionPatterns();let s=this.addEccAndInterleave(a);if(this.drawCodewords(s),i===-1){let l=1e9;for(let c=0;c<8;c++){this.applyMask(c),this.drawFormatBits(c);let u=this.getPenaltyScore();u<l&&(i=c,l=u),this.applyMask(c)}}this.mask=i,this.applyMask(i),this.drawFormatBits(i)}size;mask;modules=[];types=[];getModule(e,n){return e>=0&&e<this.size&&n>=0&&n<this.size&&this.modules[n][e]}drawFunctionPatterns(){for(let a=0;a<this.size;a++)this.setFunctionModule(6,a,a%2===0,Ct.Timing),this.setFunctionModule(a,6,a%2===0,Ct.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let e=this.getAlignmentPatternPositions(),n=e.length;for(let a=0;a<n;a++)for(let i=0;i<n;i++)a===0&&i===0||a===0&&i===n-1||a===n-1&&i===0||this.drawAlignmentPattern(e[a],e[i]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){let n=this.ecc[1]<<3|e,a=n;for(let o=0;o<10;o++)a=a<<1^(a>>>9)*1335;let i=(n<<10|a)^21522;for(let o=0;o<=5;o++)this.setFunctionModule(8,o,et(i,o));this.setFunctionModule(8,7,et(i,6)),this.setFunctionModule(8,8,et(i,7)),this.setFunctionModule(7,8,et(i,8));for(let o=9;o<15;o++)this.setFunctionModule(14-o,8,et(i,o));for(let o=0;o<8;o++)this.setFunctionModule(this.size-1-o,8,et(i,o));for(let o=8;o<15;o++)this.setFunctionModule(8,this.size-15+o,et(i,o));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let a=0;a<12;a++)e=e<<1^(e>>>11)*7973;let n=this.version<<12|e;for(let a=0;a<18;a++){let i=et(n,a),o=this.size-11+a%3,s=Math.floor(a/3);this.setFunctionModule(o,s,i),this.setFunctionModule(s,o,i)}}drawFinderPattern(e,n){for(let a=-4;a<=4;a++)for(let i=-4;i<=4;i++){let o=Math.max(Math.abs(i),Math.abs(a)),s=e+i,l=n+a;s>=0&&s<this.size&&l>=0&&l<this.size&&this.setFunctionModule(s,l,o!==2&&o!==4,Ct.Position)}}drawAlignmentPattern(e,n){for(let a=-2;a<=2;a++)for(let i=-2;i<=2;i++)this.setFunctionModule(e+i,n+a,Math.max(Math.abs(i),Math.abs(a))!==1,Ct.Alignment)}setFunctionModule(e,n,a,i=Ct.Function){this.modules[n][e]=a,this.types[n][e]=i}addEccAndInterleave(e){let n=this.version,a=this.ecc;if(e.length!==Gn(n,a))throw new RangeError("Invalid argument");let i=$o[a[0]][n],o=Fo[a[0]][n],s=Math.floor(aa(n)/8),l=i-s%i,c=Math.floor(s/i),u=[],f=Ju(o);for(let d=0,g=0;d<i;d++){let h=e.slice(g,g+c-o+(d<l?0:1));g+=h.length;let v=Yu(h,f);d<l&&h.push(0),u.push(h.concat(v))}let m=[];for(let d=0;d<u[0].length;d++)u.forEach((g,h)=>{(d!==c-o||h>=l)&&m.push(g[d])});return m}drawCodewords(e){if(e.length!==Math.floor(aa(this.version)/8))throw new RangeError("Invalid argument");let n=0;for(let a=this.size-1;a>=1;a-=2){a===6&&(a=5);for(let i=0;i<this.size;i++)for(let o=0;o<2;o++){let s=a-o,c=(a+1&2)===0?this.size-1-i:i;!this.types[c][s]&&n<e.length*8&&(this.modules[c][s]=et(e[n>>>3],7-(n&7)),n++)}}}applyMask(e){if(e<0||e>7)throw new RangeError("Mask value out of range");for(let n=0;n<this.size;n++)for(let a=0;a<this.size;a++){let i;switch(e){case 0:i=(a+n)%2===0;break;case 1:i=n%2===0;break;case 2:i=a%3===0;break;case 3:i=(a+n)%3===0;break;case 4:i=(Math.floor(a/3)+Math.floor(n/2))%2===0;break;case 5:i=a*n%2+a*n%3===0;break;case 6:i=(a*n%2+a*n%3)%2===0;break;case 7:i=((a+n)%2+a*n%3)%2===0;break;default:throw new Error("Unreachable")}!this.types[n][a]&&i&&(this.modules[n][a]=!this.modules[n][a])}}getPenaltyScore(){let e=0;for(let o=0;o<this.size;o++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let u=0;u<this.size;u++)this.modules[o][u]===s?(l++,l===5?e+=zo:l>5&&e++):(this.finderPenaltyAddHistory(l,c),s||(e+=this.finderPenaltyCountPatterns(c)*Yn),s=this.modules[o][u],l=1);e+=this.finderPenaltyTerminateAndCount(s,l,c)*Yn}for(let o=0;o<this.size;o++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let u=0;u<this.size;u++)this.modules[u][o]===s?(l++,l===5?e+=zo:l>5&&e++):(this.finderPenaltyAddHistory(l,c),s||(e+=this.finderPenaltyCountPatterns(c)*Yn),s=this.modules[u][o],l=1);e+=this.finderPenaltyTerminateAndCount(s,l,c)*Yn}for(let o=0;o<this.size-1;o++)for(let s=0;s<this.size-1;s++){let l=this.modules[o][s];l===this.modules[o][s+1]&&l===this.modules[o+1][s]&&l===this.modules[o+1][s+1]&&(e+=Fu)}let n=0;for(let o of this.modules)n=o.reduce((s,l)=>s+(l?1:0),n);let a=this.size*this.size,i=Math.ceil(Math.abs(n*20-a*10)/a)-1;return e+=i*$u,e}getAlignmentPatternPositions(){if(this.version===1)return[];{let e=Math.floor(this.version/7)+2,n=this.version===32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,a=[6];for(let i=this.size-7;a.length<e;i-=n)a.splice(1,0,i);return a}}finderPenaltyCountPatterns(e){let n=e[1],a=n>0&&e[2]===n&&e[3]===n*3&&e[4]===n&&e[5]===n;return(a&&e[0]>=n*4&&e[6]>=n?1:0)+(a&&e[6]>=n*4&&e[0]>=n?1:0)}finderPenaltyTerminateAndCount(e,n,a){return e&&(this.finderPenaltyAddHistory(n,a),n=0),n+=this.size,this.finderPenaltyAddHistory(n,a),this.finderPenaltyCountPatterns(a)}finderPenaltyAddHistory(e,n){n[0]===0&&(e+=this.size),n.pop(),n.unshift(e)}};function tt(t,e,n){if(e<0||e>31||t>>>e)throw new RangeError("Value out of range");for(let a=e-1;a>=0;a--)n.push(t>>>a&1)}function et(t,e){return(t>>>e&1)!==0}var an=class{constructor(e,n,a){if(this.mode=e,this.numChars=n,this.bitData=a,n<0)throw new RangeError("Invalid argument");this.bitData=a.slice()}getData(){return this.bitData.slice()}},Uu=[1,10,12,14],Hu=[2,9,11,13],qu=[4,8,16,16];function Uo(t,e){return t[Math.floor((e+7)/17)+1]}function Ho(t){let e=[];for(let n of t)tt(n,8,e);return new an(qu,t.length,e)}function Wu(t){if(!qo(t))throw new RangeError("String contains non-numeric characters");let e=[];for(let n=0;n<t.length;){let a=Math.min(t.length-n,3);tt(Number.parseInt(t.substring(n,n+a),10),a*3+1,e),n+=a}return new an(Uu,t.length,e)}function ju(t){if(!Wo(t))throw new RangeError("String contains unencodable characters in alphanumeric mode");let e=[],n;for(n=0;n+2<=t.length;n+=2){let a=na.indexOf(t.charAt(n))*45;a+=na.indexOf(t.charAt(n+1)),tt(a,11,e)}return n<t.length&&tt(na.indexOf(t.charAt(n)),6,e),new an(Hu,t.length,e)}function Xu(t){return t===""?[]:qo(t)?[Wu(t)]:Wo(t)?[ju(t)]:[Ho(Ku(t))]}function qo(t){return Ou.test(t)}function Wo(t){return Bu.test(t)}function Vu(t,e){let n=0;for(let a of t){let i=Uo(a.mode,e);if(a.numChars>=1<<i)return Number.POSITIVE_INFINITY;n+=4+i+a.bitData.length}return n}function Ku(t){t=encodeURI(t);let e=[];for(let n=0;n<t.length;n++)t.charAt(n)!=="%"?e.push(t.charCodeAt(n)):(e.push(Number.parseInt(t.substring(n+1,n+3),16)),n+=2);return e}function aa(t){if(t<oa||t>sa)throw new RangeError("Version number out of range");let e=(16*t+128)*t+64;if(t>=2){let n=Math.floor(t/7)+2;e-=(25*n-10)*n-55,t>=7&&(e-=36)}return e}function Gn(t,e){return Math.floor(aa(t)/8)-Fo[e[0]][t]*$o[e[0]][t]}function Ju(t){if(t<1||t>255)throw new RangeError("Degree out of range");let e=[];for(let a=0;a<t-1;a++)e.push(0);e.push(1);let n=1;for(let a=0;a<t;a++){for(let i=0;i<e.length;i++)e[i]=ia(e[i],n),i+1<e.length&&(e[i]^=e[i+1]);n=ia(n,2)}return e}function Yu(t,e){let n=e.map(a=>0);for(let a of t){let i=a^n.shift();n.push(0),e.forEach((o,s)=>n[s]^=ia(o,i))}return n}function ia(t,e){if(t>>>8||e>>>8)throw new RangeError("Byte out of range");let n=0;for(let a=7;a>=0;a--)n=n<<1^(n>>>7)*285,n^=(e>>>a&1)*t;return n}function Gu(t,e,n=1,a=40,i=-1,o=!0){if(!(oa<=n&&n<=a&&a<=sa)||i<-1||i>7)throw new RangeError("Invalid value");let s,l;for(s=n;;s++){let m=Gn(s,e)*8,d=Vu(t,s);if(d<=m){l=d;break}if(s>=a)throw new RangeError("Data too long")}for(let m of[No,Oo,Bo])o&&l<=Gn(s,m)*8&&(e=m);let c=[];for(let m of t){tt(m.mode[0],4,c),tt(m.numChars,Uo(m.mode,s),c);for(let d of m.getData())c.push(d)}let u=Gn(s,e)*8;tt(0,Math.min(4,u-c.length),c),tt(0,(8-c.length%8)%8,c);for(let m=236;c.length<u;m^=253)tt(m,8,c);let f=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((m,d)=>f[d>>>3]|=m<<7-(d&7)),new ra(s,e,f,i)}function jo(t,e){let{ecc:n="L",boostEcc:a=!1,minVersion:i=1,maxVersion:o=40,maskPattern:s=-1,border:l=1}=e||{},c=typeof t=="string"?Xu(t):Array.isArray(t)?[Ho(t)]:void 0;if(!c)throw new Error(`uqr only supports encoding string and binary data, but got: ${typeof t}`);let u=Gu(c,Nu[n],i,o,s,a),f=Zu({version:u.version,maskPattern:u.mask,size:u.size,data:u.modules,types:u.types},l);return e?.invert&&(f.data=f.data.map(m=>m.map(d=>!d))),e?.onEncoded?.(f),f}function Zu(t,e=1){if(!e)return t;let{size:n}=t,a=n+e*2;t.size=a,t.data.forEach(o=>{for(let s=0;s<e;s++)o.unshift(!1),o.push(!1)});for(let o=0;o<e;o++)t.data.unshift(Array.from({length:a},s=>!1)),t.data.push(Array.from({length:a},s=>!1));let i=Ct.Border;t.types.forEach(o=>{for(let s=0;s<e;s++)o.unshift(i),o.push(i)});for(let o=0;o<e;o++)t.types.unshift(Array.from({length:a},s=>i)),t.types.push(Array.from({length:a},s=>i));return t}function G(t){return r("section",{class:`settings-panel fx-panel${t.danger?" fx-panel--danger":""}`,"aria-label":t.label,children:[r("div",{class:`settings-panel-head${t.actions?" settings-panel-head--actions":""}`,children:[t.icon&&r("span",{class:"settings-panel-icon",children:r(E,{name:t.icon,size:16})}),r("div",{children:[r("strong",{children:t.title}),t.desc&&r("p",{children:t.desc})]}),t.actions&&r("div",{class:"settings-panel-actions settings-panel-actions--wide",children:t.actions})]}),t.children]})}function ge(t){return r("div",{class:`settings-control-row settings-setting-row fx-row fx-block${t.class?` ${t.class}`:""}`,children:[r("div",{class:"settings-control-copy",children:r("span",{children:[r("strong",{children:t.label}),t.desc&&r("small",{children:t.desc})]})}),t.children!==void 0&&t.children!==null&&r("div",{class:"settings-row-control fx-row-control",children:t.children})]})}function ae(t){return r("div",{class:`fx-sub${t.class?` ${t.class}`:""}`,children:t.children})}function He(t){return r("button",{type:"button",role:"switch","aria-checked":t.checked,"aria-label":t.label,class:`settings-switch${t.checked?" active":""}`,disabled:t.disabled,onClick:()=>t.onChange(!t.checked),children:r("span",{})})}function P(t){let e=t.variant??"ghost",n=e==="danger-solid"?"btn sm danger fx-danger-solid":`btn sm ${e}`;return r("button",{type:t.submit?"submit":"button",class:n,disabled:t.disabled||t.pending,"aria-busy":t.pending||void 0,"aria-label":t.label,title:t.title,"data-armed":t.armed?"true":void 0,onClick:t.onClick,children:[t.pending&&r(St,{}),t.children]})}var Qu=5e3;function nt(t){let[e,n]=S(!1),a=W(null),i=()=>{a.current&&clearTimeout(a.current),a.current=null,n(!1)};X(()=>()=>{a.current&&clearTimeout(a.current)},[]),X(()=>{(t.pending||t.disabled)&&i()},[t.pending,t.disabled]);let o=()=>{if(!e){n(!0),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{a.current=null,n(!1)},Qu);return}i(),t.onConfirm()},s=t.variant??"ghost";return r(P,{variant:e?s==="danger"||s==="danger-solid"?"danger-solid":"primary":s,armed:e,pending:t.pending,disabled:t.disabled,onClick:o,children:e?t.confirmLabel:t.label})}function B(t){let e=Ue(),{a:n}=t;return n.error?r("div",{class:"fx-msg is-error",role:"alert",children:[r("span",{children:Ne(n.error,e)}),n.captcha&&r("button",{type:"button",class:"fx-link",onClick:()=>void _t(t.captchaSection??"security"),children:[e("common.openInBrowser")," ",r(E,{name:"external",size:12})]})]}):n.success?r("div",{class:"fx-msg is-ok",role:"status",children:Ne(n.success,e)}):null}function $(t){return r("p",{class:`fx-note${t.tone?` is-${t.tone}`:""}`,children:t.children})}function Oe(t){return r("div",{class:"settings-empty-row fx-block",children:t.children})}function on(t){let e=Ue(),n=t.display;return r("div",{class:`fx-quota${n.low?" is-low":""}`,children:[r("div",{class:"fx-quota-top",children:[r("span",{class:"fx-quota-label",children:t.label}),r("span",{class:"fx-quota-value",children:n.unlimited?e("common.unlimited"):n.text})]}),r("div",{class:"fx-bar",role:"progressbar","aria-label":t.label,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n.pct,"aria-valuetext":n.unlimited?e("common.unlimited"):n.text,children:r("span",{style:{width:`${n.pct}%`}})}),t.note&&r("div",{class:"fx-quota-note",children:t.note})]})}function qe(t){return r("div",{class:"seg fx-seg",role:"radiogroup","aria-label":t.label,children:t.options.map(e=>r("button",{type:"button",role:"radio","aria-checked":e.value===t.value,class:e.value===t.value?"active":"",onClick:()=>{e.value!==t.value&&t.onChange(e.value)},children:e.label}))})}async function ed(t){try{return await navigator.clipboard.writeText(t),!0}catch{try{let e=document.createElement("textarea");e.value=t,e.setAttribute("readonly",""),e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.select();let n=document.execCommand("copy");return e.remove(),n}catch{return!1}}}function Ye(t){let e=Ue(),[n,a]=S("idle"),i=W(null);X(()=>()=>{i.current&&clearTimeout(i.current)},[]);let o=async()=>{let s=await ed(t.text);a(s?"copied":"failed"),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>a("idle"),1800)};return r(P,{disabled:t.disabled||!t.text,onClick:()=>void o(),children:[r(E,{name:n==="copied"?"check":"copy",size:12}),n==="copied"?e("common.copied"):n==="failed"?e("common.copyFailed"):t.label]})}function td(t){let e=Ve(()=>{try{return jo(t.value,{ecc:"M",border:2})}catch{return null}},[t.value]);if(!e)return null;let n="";e.data.forEach((i,o)=>i.forEach((s,l)=>{s&&(n+=`M${l} ${o}h1v1h-1z`)}));let a=t.size??148;return r("svg",{class:"fx-qr",width:a,height:a,viewBox:`0 0 ${e.size} ${e.size}`,"shape-rendering":"crispEdges",role:"img","aria-label":t.label,children:[r("rect",{width:e.size,height:e.size,fill:"#fff"}),r("path",{d:n,fill:"#000"})]})}function la(t){let e=Ue(),{device:n}=t;return r("div",{class:"fx-device",children:[r(td,{value:n.url,label:e("signin.qrLabel")}),r("div",{class:"fx-device-copy",children:[r("p",{children:e("signin.deviceHint")}),n.userCode&&r("div",{class:"fx-device-code",children:[r("span",{children:e("signin.code")}),r("code",{children:n.userCode})]}),r("div",{class:"fx-inline",children:[r("button",{type:"button",class:"fx-link",onClick:()=>window.open(n.url,"_blank"),children:[e("signin.openLink")," ",r(E,{name:"external",size:12})]}),r(Ye,{text:n.url,label:e("signin.copyLink")})]})]})]})}function ye(){let t=Ue(),e=O(),[n,a]=S(null);X(()=>j().onAuthDevice?.(o=>a(o)),[]);let i=()=>void e.run(async()=>{let o=j().forsionLogin;if(!o)return{error:{key:"err.unavailable"}};try{await o()}catch(s){a(null);let l=nn($e(s));return l?{error:l}:void 0}});return r("section",{class:"settings-panel fx-panel fx-signin","aria-label":t("signin.button"),children:r("div",{class:"settings-state fx-signin-body",children:[r("span",{class:"settings-state-icon",children:r(E,{name:"user",size:18})}),r("p",{class:"fx-signin-lead",children:t("signin.desc")}),r("div",{class:"settings-state-actions",children:r(P,{variant:"primary",pending:e.pending,onClick:i,children:e.pending?t("signin.pending"):t("signin.button")})}),n&&r(la,{device:n}),r(B,{a:e})]})})}function he(t){let e=Ue(),n=t.panels??2,a=t.rows??2;return r("div",{class:"fx-skeleton","aria-busy":"true","aria-label":e("common.loading"),children:Array.from({length:n},(i,o)=>r("section",{class:"settings-panel fx-panel",children:[r("div",{class:"settings-panel-head",children:[r("span",{class:"fx-skel fx-skel--icon"}),r("div",{children:[r("span",{class:"fx-skel fx-skel--title"}),r("span",{class:"fx-skel fx-skel--line"})]})]}),Array.from({length:a},(s,l)=>r("div",{class:"settings-control-row",children:r("span",{class:"fx-skel fx-skel--row"})},l))]},o))})}function be(t){let e=Ue();return r("section",{class:"settings-panel fx-panel",children:r("div",{class:"settings-state fx-error-state",role:"alert",children:[r("span",{class:"settings-state-icon",children:r(E,{name:"alert",size:18})}),r("strong",{children:e("common.loadFailed")}),r("p",{children:Ne(t.error,e)}),r("div",{class:"settings-state-actions",children:r(P,{variant:"primary",onClick:t.onRetry,children:[r(E,{name:"refresh",size:12})," ",e("common.retry")]})})]})})}var nd=t=>!!t&&typeof t=="object"&&typeof t.enabled=="boolean";async function ca(t,e){let n=j().cloudInvoke;if(!n)throw new Error("no_bridge");let a=await n(t,e);if(!nd(a))throw new Error(String(a?.error??"unavailable"));return a}var rd=["diag.item.app","diag.item.settings","diag.item.agents","diag.item.plugins","diag.item.runs"];function Xo(){let{t,locale:e}=D(),n=we(),[a,i]=S(null),o=O(),s=O();if(X(()=>{let d=!1,g=()=>{ca("diagnostics:get").then(v=>{d||i(v)},()=>{d||i(null)})};g();let h=j().onAuthChanged?.(g);return()=>{d=!0,h?.()}},[]),!a?.signedIn)return null;let l=()=>void s.run(async()=>{try{let d=await ca("diagnostics:uploadNow");return n.current&&i(d),d.lastError?{error:{key:"diag.failed",vars:{reason:d.lastError}}}:d.enabled&&d.lastUploadAt?{success:{key:"diag.uploaded"}}:void 0}catch(d){return{error:{raw:$e(d)||t("err.generic")}}}}),c=async d=>{let g=!1;await o.run(async()=>{s.clear();try{let h=await ca("diagnostics:set",d);n.current&&i(h),g=!0}catch(h){return{error:{raw:$e(h)||t("err.generic")}}}}),g&&d.enabled&&n.current&&l()},u=a.intervalHours??24,f=a.mode==="manual"?t("diag.freq.manual"):u===1?t("diag.freq.hour"):u%24===0?u===24?t("diag.freq.day"):t("diag.freq.days",{n:u/24}):t("diag.freq.hours",{n:u}),m=`${a.lastUploadAt?t("diag.last",{time:Je(a.lastUploadAt,e)}):t("diag.noUpload")} \xB7 ${f}`;return r(G,{icon:"chart",title:t("diag.title"),desc:t("diag.desc"),children:[r(ge,{label:t("diag.enable"),desc:t("diag.enableDesc"),children:r(He,{checked:a.enabled,disabled:o.pending,label:t("diag.enable"),onChange:d=>void c({enabled:d})})}),r(ae,{class:"fx-diag",children:[r("strong",{children:t("diag.collected")}),r("ul",{children:rd.map(d=>r("li",{children:t(d)},d))}),r($,{children:t("diag.notCollected")})]}),a.sessions!==void 0&&r(ge,{label:t("diag.sessions"),desc:t("diag.sessionsDesc"),children:r(He,{checked:a.sessions,disabled:o.pending,label:t("diag.sessions"),onChange:d=>void c({sessions:d})})}),a.memory!==void 0&&r(ge,{label:t("diag.memory"),desc:t("diag.memoryDesc"),children:r(He,{checked:a.memory,disabled:o.pending,label:t("diag.memory"),onChange:d=>void c({memory:d})})}),r(ge,{label:t("diag.activity"),desc:t("diag.activityDesc"),children:r(He,{checked:a.activity,disabled:o.pending,label:t("diag.activity"),onChange:d=>void c({activity:d})})}),a.enabled&&r("div",{class:"settings-panel-footer fx-footer",children:[r("span",{class:"fx-muted",children:m}),r(P,{pending:s.pending,disabled:o.pending,onClick:l,children:t("diag.uploadNow")})]}),r(ae,{class:"fx-sub--tight",children:[r($,{children:t("diag.retention",{n:a.retainDays})}),a.enabled&&a.lastError&&!s.error&&!s.success&&r("div",{class:"fx-msg is-error",role:"alert",children:t("diag.failed",{reason:a.lastError})}),r(B,{a:o}),r(B,{a:s})]})]})}function Ko(){let t=ve(async()=>{let[n,a,i]=await Promise.all([M("/auth/me"),M("/membership/my"),M("/features")]);return n.ok?{ok:!0,status:n.status,data:{me:n.data,membership:a.ok?a.data?.membership??null:null,membershipFailed:!a.ok,features:i.ok&&i.data&&typeof i.data=="object"?i.data:{}}}:n});if(t.state==="loading")return r(he,{panels:3});if(t.state==="signedOut")return r(ye,{});if(t.state==="error")return r(be,{error:t.error,onRetry:t.retry});let{data:e}=t;return r(N,{children:[r(ad,{me:e.me,onPatch:n=>t.update(a=>({...a,me:{...a.me,...n}}))}),r(id,{membership:e.membership,failed:e.membershipFailed,payment:e.features.payment!==!1,onRetry:t.reload}),r(od,{}),r(Xo,{}),r(ld,{})]})}function ad(t){let{t:e}=D(),{me:n}=t,a=O(),i=O(),[o,s]=S(!1),[l,c]=S(""),u=W(null),f=n.nickname||n.username,m=h=>{h&&a.run(async()=>{let v;try{v=await Kn(h)}catch(y){return{error:{key:y instanceof Qe?"err.avatarTooLarge":"err.avatarInvalid"}}}let k=await M("/settings",{method:"PUT",body:{avatar:v}});return k.ok?(t.onPatch({avatar:v}),{success:{key:"account.avatar.saved"}}):{error:Ce(k)}})},d=()=>{i.clear(),c(f||""),s(!0)},g=()=>{let h=l.trim();if(!h||h===f){s(!1);return}i.run(async()=>{let v=await M("/settings",{method:"PUT",body:{nickname:h}});return v.ok?(t.onPatch({nickname:h}),s(!1),{success:{key:"account.nickname.saved"}}):{error:Ce(v)}})};return r(G,{icon:"user",title:e("account.profile.title"),desc:e("account.profile.desc"),children:[r("div",{class:"fx-identity fx-block",children:[r("button",{type:"button",class:"fx-avatar",disabled:a.pending,onClick:()=>u.current?.click(),"aria-label":e("account.avatar.change"),title:e("account.avatar.change"),children:[n.avatar?r("img",{src:n.avatar,alt:""}):r("span",{class:"fx-avatar-initial",children:Jn(f)}),r("span",{class:"fx-avatar-mask",children:a.pending?r(St,{size:14}):r(E,{name:"pencil",size:14})})]}),r("input",{ref:u,type:"file",accept:"image/png,image/jpeg,image/webp,image/gif,image/avif",hidden:!0,onChange:h=>{let v=h.currentTarget;m(v.files?.[0]),v.value=""}}),r("div",{class:"fx-identity-main",children:[o?r("form",{class:"fx-inline",onSubmit:h=>{h.preventDefault(),g()},children:[r("input",{class:"fx-input fx-input--name",value:l,maxLength:40,autoFocus:!0,"aria-label":e("account.nickname.label"),onInput:h=>c(h.currentTarget.value),onKeyDown:h=>{h.key==="Escape"&&(h.preventDefault(),s(!1))}}),r(P,{variant:"primary",submit:!0,pending:i.pending,children:e("common.save")}),r(P,{disabled:i.pending,onClick:()=>s(!1),children:e("common.cancel")})]}):r("div",{class:"fx-name-row",children:[r("span",{class:"fx-name",children:f}),r("button",{type:"button",class:"fx-icon-btn",onClick:d,"aria-label":e("account.nickname.edit"),title:e("account.nickname.edit"),children:r(E,{name:"pencil",size:13})}),n.role==="ADMIN"&&r("span",{class:"fx-tag",children:e("account.role.admin")})]}),r("div",{class:"fx-muted",children:e("account.username",{name:n.username})}),r(B,{a:i}),r(B,{a})]})]}),r(Vo,{kind:"phone",value:n.phone}),r(Vo,{kind:"email",value:n.email})]})}function Vo(t){let{t:e,goTo:n}=D(),a=!!t.value,i=a?t.kind==="phone"?jn(t.value):Xn(t.value):e("account.contact.unbound"),o=t.kind==="phone"?e("account.contact.phone"):e("account.contact.email");return r(ge,{label:o,children:n?r("button",{type:"button",class:`fx-link-row${a?"":" is-empty"}`,onClick:()=>n("security"),title:e("account.contact.manage"),children:[r("span",{children:i}),r(E,{name:"chevron",size:12})]}):r("span",{class:`fx-value${a?"":" is-empty"}`,children:i})})}function id(t){let{t:e,locale:n}=D(),a=O(),i=t.membership&&(t.membership.status===void 0||t.membership.status==="active")?t.membership:null,o=rn(i?.tier),s=o==="Free",l=s?"free":o.toLowerCase()==="pro"?"pro":"paid",c=()=>void a.run(async()=>await Ut("membership")?void 0:{error:{key:"err.openFailed"}});return r(G,{icon:"card",title:e("member.title"),desc:e("member.desc"),actions:t.payment&&!t.failed?r(P,{variant:"primary",pending:a.pending,onClick:c,children:e(s?"member.upgrade":"member.renew")}):void 0,children:[!t.failed&&r("div",{class:"fx-member fx-block",children:[r("span",{class:`fx-tier fx-tier--${l}`,children:o}),r("div",{class:"fx-member-copy",children:[r("strong",{children:s?e("member.freeName"):i?.plan?.name||o}),r("span",{class:"fx-muted",children:s?e("member.freeHint"):i?.expiresAt?e("member.expires",{date:Vn(i.expiresAt,n)}):e("member.noExpiry")})]})]}),t.failed&&r("div",{class:"fx-sub",children:r($,{tone:"warn",children:[e("member.loadFailed")," ",r("button",{type:"button",class:"fx-link",onClick:t.onRetry,children:e("common.retry")})]})}),a.error&&r("div",{class:"fx-sub fx-sub--tight",children:r(B,{a})})]})}function od(){let{t}=D(),e=we(),[n,a]=S(null),[i,o]=S(!1),[s,l]=S(null),[c,u]=S(null),f=O(),m=O(),d=O(),g=!!j().authAccounts;X(()=>{let x=0,w=()=>{let U=j().authAccounts;if(!U)return;let J=++x;o(!1),U().then(H=>{J===x&&a(Array.isArray(H)?H:[])}).catch(()=>{J===x&&o(!0)})};w();let C=j().onAuthChanged?.(w),R=j().onAuthDevice?.(U=>u(U));return()=>{x++,C?.(),R?.()}},[]);let h=x=>{l(x),f.run(async()=>{let w=j().forsionSwitchAccount;if(!w)return{error:{key:"err.unavailable"}};try{await w(x)}catch(C){let R=nn($e(C));return R?{error:R}:void 0}finally{e.current&&l(null)}})},v=()=>void m.run(async()=>{let x=j().forsionLogin;if(!x)return{error:{key:"err.unavailable"}};u(null);try{await x()}catch(w){e.current&&u(null);let C=nn($e(w));return C?{error:C}:void 0}}),k=()=>void d.run(async()=>{let x=j().forsionLogout;if(!x)return{error:{key:"err.unavailable"}};try{await x()}catch(w){return{error:{raw:$e(w)||t("err.generic")}}}}),y=f.pending||m.pending||d.pending;return r(G,{icon:"laptop",title:t("local.title"),desc:t("local.desc"),children:[g&&n===null&&!i&&r(Oe,{children:[r(St,{})," ",t("common.loading")]}),i&&r("div",{class:"fx-sub",children:r($,{tone:"warn",children:t("local.loadFailed")})}),n&&n.length===0&&r(Oe,{children:t("local.empty")}),n&&n.length>0&&r("div",{class:"fx-list fx-block",role:"list",children:n.map(x=>r("div",{class:"fx-list-row",role:"listitem",children:[r("span",{class:"fx-list-icon",children:r(E,{name:"user",size:14})}),r("span",{class:"fx-list-main",children:[r("strong",{children:x.nickname||x.username||"Forsion"}),r("small",{children:[x.username&&x.nickname?x.username:null,sd(x.cloudUrl)].filter(Boolean).join(" \xB7 ")})]}),x.active?r("span",{class:"fx-tag fx-tag--accent",children:[r(E,{name:"check",size:11})," ",t("local.current")]}):r(P,{pending:s===x.id,disabled:y&&s!==x.id,onClick:()=>h(x.id),children:t("local.switch")})]},x.id))}),m.pending&&c&&r("div",{class:"fx-sub",children:r(la,{device:c})}),r("div",{class:"settings-panel-footer fx-footer",children:[r(P,{pending:m.pending,disabled:y&&!m.pending,onClick:v,children:[r(E,{name:"plus",size:12})," ",m.pending?t("signin.pending"):t("local.add")]}),r(P,{pending:d.pending,disabled:y&&!d.pending,onClick:k,children:[r(E,{name:"logout",size:12})," ",t("local.signOut")]})]}),(f.error||m.error||d.error)&&r("div",{class:"fx-sub fx-sub--tight",children:[r(B,{a:f}),r(B,{a:m}),r(B,{a:d})]})]})}function sd(t){try{return new URL(t).host}catch{return t}}function ld(){let{t}=D(),e=O();return r("div",{class:"fx-page-foot",children:[r("button",{type:"button",class:"fx-link",disabled:e.pending,onClick:()=>void e.run(async()=>await _t()?void 0:{error:{key:"err.openFailed"}}),children:[t("account.web.open")," ",r(E,{name:"external",size:12})]}),r("span",{class:"fx-muted",children:t("account.web.desc")}),r(B,{a:e})]})}var Jo=["cream","coral","teal","lavender"],Yo=["auto","light","dark"],Go=["none","mist","contour","dots"],Zo=["none","ring","pro"],Qo=["early","streak","author","inviter","event"];var es=t=>`/u/${encodeURIComponent(t)}`,ua=t=>!!t&&t.toLowerCase()!=="free";function da(t,e){let n={...t.settings,...e};return{...t,settings:n,bio:n.bio,links:n.links,skin:n.skin,mode:n.mode,cover:n.cover,frame:n.frame==="pro"&&!ua(t.tier)?"none":n.frame,modules:n.modules.filter(a=>a.show).map(a=>({id:a.id}))}}function pa(t,e,n){let a=t.findIndex(s=>s.id===e),i=a+n;if(a<0||i<0||i>=t.length)return t;let o=t.slice();return[o[a],o[i]]=[o[i],o[a]],o}function ts(t){let e=t.trim();if(!e)return null;let n=/^[a-z][a-z0-9+.-]*:/i.test(e)?e:`https://${e}`,a;try{a=new URL(n)}catch{return null}if(a.protocol!=="http:"&&a.protocol!=="https:"||!a.hostname.includes("."))return null;let i=a.toString();return i.length<=200?i:null}function fa(t){return t.replace(/^https?:\/\//i,"").replace(/^www\./i,"").replace(/\/$/,"")}function ns(t,e){let n=e==="zh"?[[1e8,"\u4EBF"],[1e4,"\u4E07"]]:[[1e9,"B"],[1e6,"M"],[1e3,"K"]];for(let[a,i]of n)if(t>=a){let o=t/a;return{value:o>=100?String(Math.round(o)):String(Math.round(o*10)/10),unit:i}}return{value:Math.round(t).toLocaleString("en-US"),unit:""}}var rs=t=>t==="zh"?"zh-CN":"en-US";function as(t,e){let[n,a]=t.split("-").map(Number);if(!n||!a)return[];let i=new Intl.DateTimeFormat(rs(e),{month:"short",timeZone:"UTC"});return Array.from({length:12},(o,s)=>i.format(new Date(Date.UTC(n,a-12+s,1))))}function is(t,e){let[n,a]=t.split("-").map(Number);return!n||!a?"":new Intl.DateTimeFormat(rs(e),{year:"numeric",month:"short",timeZone:"UTC"}).format(new Date(Date.UTC(n,a-1,1)))}function os([t,e]){let n=a=>`${String((a%24+24)%24).padStart(2,"0")}:00`;return`${n(t)} \u2013 ${n(e)}`}function ss(t){let e=0,n=Promise.resolve(),a=()=>{let i=e;return t.read().then(o=>{i===e&&t.apply(o)})};return{read:a,write(i){let o=++e,s=n.then(i).then(l=>{o===e&&t.apply(l)});return n=s.catch(()=>o===e?a().catch(()=>{}):void 0),s}}}var ds={skill:{key:"profile.work.skill",icon:"sparkles"},agent:{key:"profile.work.agent",icon:"bot"},plugin:{key:"profile.work.plugin",icon:"box"},space:{key:"profile.work.space",icon:"grid"},theme:{key:"profile.work.theme",icon:"palette"},"amadeus-plugin":{key:"profile.work.note",icon:"note"},webapp:{key:"profile.work.webapp",icon:"globe"}},cs={early:"sprout",streak:"flame",author:"box",inviter:"gift",event:"trophy"},us={plus:"Plus",pro:"Pro"},ga=t=>!!t&&/^https?:\/\//i.test(t);function ha(t){if(!ga(t))return;let e=j().openExternal;e?e(t).catch(()=>{}):window.open(t,"_blank","noopener")}async function dd(){let t=j().cloudInvoke;if(!t)return null;try{let e=await t("profile:publicOrigin");return e?.ok&&typeof e.origin=="string"&&/^https?:\/\/[^/]+$/i.test(e.origin)?e.origin:null}catch{return null}}async function pd(t,e,n){let a=await M(t,{method:e,body:n});if(!a.ok)throw a;if(!a.data?.profile)throw{ok:!1,status:a.status,code:null,detail:null,transport:"bad_response"};return a.data.profile}var ps=t=>t&&typeof t=="object"&&t.ok===!1?Ce(t):{raw:String(t?.message||t)};function fs(){let{t}=D(),e=ve(async()=>{let[a,i,o]=await Promise.all([M("/profile/me"),M("/auth/me"),dd()]);return i.ok?a.ok?a.data?.profile?{ok:!0,status:a.status,data:{profile:a.data.profile,me:i.data,origin:o}}:{ok:!0,status:404,data:null}:a.status===404?{ok:!0,status:404,data:null}:a:i});if(e.state==="loading")return r(he,{panels:2,rows:3});if(e.state==="signedOut")return r(ye,{});if(e.state==="error")return r(be,{error:e.error,onRetry:e.retry});if(!e.data)return r(G,{icon:"user",title:t("page.profile"),children:r(Oe,{children:t("profile.unsupported")})});let{update:n}=e;return r(fd,{data:e.data,update:a=>n(i=>i&&a(i))})}function fd(t){let{t:e}=D(),n=we(),{profile:a,me:i,origin:o}=t.data,[s,l]=S(null),[c,u]=S(null),[f,m]=S(!1),d=W(t.update);d.current=t.update;let g=(z,Q,oe)=>n.current?pd(z,Q,oe):Promise.reject(new Error("unmounted")),h=Ve(()=>ss({apply:z=>d.current(Q=>({...Q,profile:z})),read:()=>g("/profile/me")}),[]),v=i.username||a.username,k={...a,username:v,nickname:i.nickname||null},y=a.settings.isPublic,x=o?`${o}${es(v)}`:null,w=z=>{n.current&&u({tone:"error",m:ps(z)})},C=z=>{u(null),t.update(Q=>({...Q,profile:da(Q.profile,z)})),h.write(()=>g("/profile/me","PUT",z)).catch(w)},R=async z=>{t.update(Q=>({...Q,profile:da(Q.profile,{modules:Q.profile.settings.modules.map(oe=>({...oe,public:z.find(Ee=>Ee.id===oe.id)?.public??oe.public}))})})),await h.write(()=>g("/profile/me/visibility","POST",{public:!0,modules:z})),n.current&&(l(null),u({tone:"ok",m:{key:"profile.nowPublic"}}))},U=async()=>{m(!0),u(null);try{await h.write(()=>g("/profile/me/visibility","POST",{public:!1})),n.current&&u({tone:"ok",m:{key:"profile.nowPrivate"}})}catch(z){w(z)}finally{n.current&&m(!1)}},J=W(Promise.resolve()),H=(z,Q)=>{let oe=J.current.then(async()=>{if(!n.current)return;let Ee=await M("/settings",{method:"PUT",body:z});if(n.current){if(!Ee.ok)return u({tone:"error",m:Ce(Ee)});d.current(I=>({...I,me:{...I.me,...z}})),u({tone:"ok",m:{key:Q}})}});return J.current=oe,oe},V=async z=>{u(null);let Q;try{Q=await Kn(z)}catch(oe){return u({tone:"error",m:{key:oe instanceof Qe?"err.avatarTooLarge":"err.avatarInvalid"}})}await H({avatar:Q},"account.avatar.saved")},ee=z=>{u(null),l(Q=>Q===z?null:z)};return r("div",{class:"fx-pf-page",children:[r(G,{icon:y?"globe":"lock",title:e(y?"profile.state.public":"profile.state.private"),desc:e(y?"profile.state.publicDesc":"profile.state.privateDesc"),actions:r(N,{children:[r(P,{onClick:()=>ee("deco"),children:[r(E,{name:"palette",size:12})," ",e("profile.decorate")]}),y?r(P,{pending:f,onClick:()=>void U(),children:[r(E,{name:"lock",size:12})," ",e("profile.makePrivate")]}):r(P,{variant:"primary",onClick:()=>ee("publish"),children:[r(E,{name:"globe",size:12})," ",e("profile.publish")]})]}),children:[y&&x&&r(ge,{label:e("profile.address"),desc:x.replace(/^https?:\/\//i,""),children:[r(Ye,{text:x,label:e("profile.copyLink")}),r(P,{onClick:()=>ha(x),children:[r(E,{name:"external",size:12})," ",e("profile.openPublic")]})]}),s==="publish"&&!y&&r(md,{profile:a,url:x,submit:R,onClose:()=>l(null)}),c&&r(ae,{class:"fx-sub--tight",children:r("div",{class:`fx-msg ${c.tone==="ok"?"is-ok":"is-error"}`,role:c.tone==="ok"?"status":"alert",children:Ne(c.m,e)})})]}),r("div",{class:"fx-pf-home","data-deco":s==="deco"?"":void 0,children:[r("div",{class:"fx-pf-root",children:r(xd,{view:k,avatar:i.avatar||null,pinned:a.settings.pinned,owner:{onAvatar:z=>void V(z),onNickname:z=>{u(null),H({nickname:z},"account.nickname.saved")},onBio:z=>C({bio:z}),onLinks:z=>C({links:z}),onPinned:z=>C({pinned:z}),onInvalidLink:()=>u({tone:"error",m:{key:"profile.linkInvalid"}})}})}),s==="deco"&&r(gd,{profile:a,onChange:C,onClose:()=>l(null)})]})]})}function md(t){let{t:e}=D(),n=we(),{profile:a}=t,[i,o]=S({}),s=a.settings.modules.filter(g=>g.show).map(g=>({...g,public:i[g.id]??g.public})),[l,c]=S(!1),[u,f]=S(null),m=a.canPublish?null:a.publishBlockedReason||"publish_blocked";if(m)return r(ae,{children:[r($,{children:e(m==="machine_username"?"profile.blocked.machineUsername":"profile.blocked.publishBlocked")}),r("div",{class:"fx-inline fx-pf-foot",children:[m==="machine_username"&&r(P,{variant:"primary",onClick:()=>void _t("profile"),children:[e("profile.goRename")," ",r(E,{name:"external",size:12})]}),r(P,{onClick:t.onClose,children:e("common.cancel")})]})]});let d=async()=>{c(!0),f(null);try{await t.submit(s.map(({id:g,public:h})=>({id:g,public:h})))}catch(g){if(!n.current)return;f(ps(g)),c(!1)}};return r(ae,{children:[t.url&&r("div",{class:"fx-pf-url",children:[r(E,{name:"globe",size:14}),r("span",{children:t.url.replace(/^https?:\/\//i,"")})]}),r($,{children:e("profile.publishDesc")}),r("div",{class:"fx-pf-checks",children:s.map(g=>r("div",{class:"fx-pf-check",children:[r("div",{children:[e(`profile.mod.${g.id}`),r("small",{children:e(`profile.modDesc.${g.id}`)})]}),r(He,{checked:g.public,disabled:l,label:`${e(`profile.mod.${g.id}`)} \xB7 ${e("profile.col.public")}`,onChange:h=>o(v=>({...v,[g.id]:h}))})]},g.id))}),r($,{children:e("profile.publishNever")}),u&&r("div",{class:"fx-msg is-error",role:"alert",children:Ne(u,e)}),r("div",{class:"fx-inline fx-pf-foot",children:[r(P,{variant:"primary",pending:l,onClick:()=>void d(),children:e("profile.publishConfirm")}),r(P,{disabled:l,onClick:t.onClose,children:e("common.cancel")})]})]})}function gd(t){let{t:e}=D(),n=t.profile.settings,a=ua(t.profile.tier),i=(s,l)=>t.onChange({modules:n.modules.map(c=>c.id===s?{...c,...l}:c)}),o=s=>r("span",{class:"fx-pf-thumb",children:s});return r("aside",{class:"fx-pf-deco","aria-label":e("profile.decorate"),children:r(G,{icon:"palette",title:e("profile.decorate"),actions:r(P,{onClick:t.onClose,children:e("common.done")}),children:r("div",{class:"fx-pf-deco-body",children:[r("h4",{children:e("profile.deco.cover")}),r("div",{class:"fx-pf-opts",children:Go.map(s=>r("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.cover===s,onClick:()=>t.onChange({cover:s}),children:[o(r("span",{class:`fx-pf-cv-thumb fx-pf-cv-${s}`})),e(`profile.cover.${s}`)]},s))}),r("h4",{children:e("profile.deco.frame")}),r("div",{class:"fx-pf-opts",children:Zo.map(s=>r("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.frame===s,disabled:s==="pro"&&!a,title:s==="pro"&&!a?e("profile.frameProHint"):void 0,onClick:()=>t.onChange({frame:s}),children:[o(r("span",{class:`fx-pf-fr-demo fx-pf-fr-${s}`,children:r("span",{class:"fx-pf-av"})})),e(`profile.frame.${s}`)]},s))}),!a&&r($,{children:e("profile.frameProHint")}),r("h4",{children:e("profile.deco.modules")}),r("div",{class:"fx-pf-mod-head","aria-hidden":"true",children:[r("span",{children:e("profile.col.show")}),r("span",{children:e("profile.col.public")})]}),n.modules.map((s,l)=>r("div",{class:"fx-pf-mod",children:[r("span",{children:e(`profile.mod.${s.id}`)}),r("button",{type:"button",class:"fx-icon-btn",disabled:l===0,title:e("profile.moveUp"),"aria-label":`${e(`profile.mod.${s.id}`)} \xB7 ${e("profile.moveUp")}`,onClick:()=>t.onChange({modules:pa(n.modules,s.id,-1)}),children:r(E,{name:"up",size:13})}),r("button",{type:"button",class:"fx-icon-btn",disabled:l===n.modules.length-1,title:e("profile.moveDown"),"aria-label":`${e(`profile.mod.${s.id}`)} \xB7 ${e("profile.moveDown")}`,onClick:()=>t.onChange({modules:pa(n.modules,s.id,1)}),children:r(E,{name:"down",size:13})}),r(He,{checked:s.show,label:`${e(`profile.mod.${s.id}`)} \xB7 ${e("profile.col.show")}`,onChange:c=>i(s.id,{show:c})}),r(He,{checked:s.show&&s.public,disabled:!s.show,label:`${e(`profile.mod.${s.id}`)} \xB7 ${e("profile.col.public")}`,onChange:c=>i(s.id,{public:c})})]},s.id)),r($,{children:e("profile.modulesHint")}),r("h4",{children:e("profile.deco.skin")}),r("div",{class:"fx-pf-opts",children:Jo.map(s=>r("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.skin===s,onClick:()=>t.onChange({skin:s}),children:[o(r("span",{class:"fx-pf-swatch","data-skin":s})),e(`profile.skin.${s}`)]},s))}),r("h4",{children:e("profile.deco.mode")}),r(qe,{value:n.mode,label:e("profile.deco.mode"),onChange:s=>t.onChange({mode:s}),options:Yo.map(s=>({value:s,label:e(`profile.mode.${s}`)}))}),r($,{children:e("profile.deco.publicHint")})]})})})}function ma(t){let[e,n]=S(null),a=W(!1),i=W(null),o=e!==null;ho(()=>{o&&i.current?.focus()},[o]);let s=t.class?` ${t.class}`:"";if(e===null)return r("button",{type:"button",class:`fx-pf-ed${s}${t.value?"":" is-empty"}`,title:t.label,"aria-label":t.label,onClick:()=>{a.current=!1,n(t.value)},children:[r("span",{children:t.value||t.placeholder}),r(E,{name:t.value?"pencil":"plus",size:12})]});let l=()=>{let c=e.trim();n(null),!a.current&&c!==t.value&&t.onSave(c)};return r("span",{class:`fx-pf-ed-on${s}`,children:[r("input",{ref:i,class:"fx-input",type:"text",value:e,maxLength:t.maxLength,placeholder:t.placeholder,"aria-label":t.label,onInput:c=>n(c.currentTarget.value),onBlur:l,onKeyDown:c=>{c.isComposing||(c.key==="Enter"?c.currentTarget.blur():c.key==="Escape"&&(c.preventDefault(),a.current=!0,c.currentTarget.blur()))}}),t.counter&&r("small",{children:[Array.from(e).length,"/",t.maxLength]})]})}function Zn(t){return r("section",{class:"fx-pf-sec",style:{order:t.order},children:[r("div",{class:"fx-pf-sec-h",children:[r("h3",{children:t.title}),t.action]}),t.children]})}function hd(t){let{t:e}=D(),{work:n}=t,a=ds[n.type],i=r(N,{children:[r("div",{class:"fx-pf-work-top",children:[r("span",{class:"fx-pf-work-ico",children:r(E,{name:a?.icon??"box",size:17})}),r("div",{children:[r("div",{class:"fx-pf-work-name",children:n.name}),r("div",{class:"fx-pf-work-type",children:a?e(a.key):n.type})]})]}),r("p",{children:n.summary}),(n.countKind!=="visits"||n.count>0)&&r("div",{class:"fx-pf-work-foot",children:[r(E,{name:n.countKind==="visits"?"eye":"download",size:12}),e(n.countKind==="visits"?"profile.workVisits":"profile.workInstalls",{n:n.count.toLocaleString("en-US")})]})]}),o=n.url;return ga(o)?r("a",{class:"fx-pf-work",href:o,onClick:s=>{s.preventDefault(),ha(o)},children:i}):r("article",{class:"fx-pf-work",children:i})}function bd(t){let{t:e}=D(),n=we(),[a,i]=S(null),[o,s]=S(()=>t.pinned.map(f=>`${f.kind}:${f.id}`));X(()=>{M("/profile/me/works").then(f=>{n.current&&i(f.ok?f.data?.works??[]:"failed")})},[]);let l=f=>`${f.kind}:${f.id}`,c=f=>s(m=>m.includes(f)?m.filter(d=>d!==f):[...m,f]);if(a===null)return r("div",{class:"fx-pf-card fx-pf-empty",children:[r(St,{})," ",e("common.loading")]});if(a==="failed"||a.length===0)return r("div",{class:"fx-pf-card fx-pf-empty",children:[r("p",{children:e(a==="failed"?"common.loadFailed":"profile.worksNone")}),r("div",{class:"fx-inline fx-pf-foot",children:[a!=="failed"&&r(P,{variant:"primary",onClick:()=>void _t("submission"),children:[e("profile.goSubmit")," ",r(E,{name:"external",size:12})]}),r(P,{onClick:t.onClose,children:e("common.cancel")})]})]});let u=()=>{let f=new Map(a.map(m=>[l(m),m]));t.onSave(o.flatMap(m=>{let d=f.get(m);return d?[{kind:d.kind,id:d.id}]:[]})),t.onClose()};return r("div",{class:"fx-pf-card fx-pf-picker",children:[a.map(f=>{let m=l(f),d=o.includes(m),g=ds[f.type];return r("button",{type:"button",class:"fx-pf-pick","aria-pressed":d,disabled:!d&&o.length>=6,onClick:()=>c(m),children:[r("div",{children:[f.name,r("small",{children:[g?e(g.key):f.type," \xB7 ",f.summary]})]}),d&&r(E,{name:"check",size:15})]},m)}),r("div",{class:"fx-inline fx-pf-foot",children:[r("span",{class:"fx-grow",children:o.length?e("profile.worksPicked",{n:o.length,max:6}):e("profile.worksAuto")}),r(P,{variant:"primary",onClick:u,children:e("common.done")}),r(P,{onClick:t.onClose,children:e("common.cancel")})]})]})}function xd(t){let{t:e,locale:n}=D(),{view:a,owner:i}=t,o=W(null),[s,l]=S(!1),c=a.nickname||a.username,u=(a.tier||"free").toLowerCase(),f=a.modules.map(I=>I.id),m=I=>f.indexOf(I),d=I=>m(I)>=0,g=a.stats,h=g?ns(g.totalTokens,n):null,v=e("profile.unit.days"),k=g&&h?[[h.value,h.unit,e("profile.stat.tokens")],[String(g.activeDays),v,e("profile.stat.activeDays")],[String(g.longestStreak),v,e("profile.stat.longest")],[String(g.currentStreak),v,e("profile.stat.current")],[g.installs.toLocaleString("en-US"),"",e("profile.stat.installs")]]:[],y=g&&d("stats")&&r("div",{class:"fx-pf-stats",style:{order:m("stats")},children:k.map(([I,pe,ft])=>r("div",{class:"fx-pf-stat",children:[r("b",{children:[I,pe&&r("small",{children:pe})]}),r("span",{children:ft})]},ft))},"stats"),x=f[0]==="stats",w=a.works||[],C=d("works")&&r(Zn,{order:m("works"),title:e("profile.works"),action:!s&&r("button",{type:"button",class:"fx-link",onClick:()=>l(!0),children:e("profile.worksPick")}),children:s?r(bd,{pinned:t.pinned,onSave:i.onPinned,onClose:()=>l(!1)}):w.length?r("div",{class:"fx-pf-works",children:w.map(I=>r(hd,{work:I},`${I.kind}:${I.id}`))}):r("div",{class:"fx-pf-card fx-pf-empty",children:e("profile.worksEmpty")})},"works"),R=a.activity,U=d("activity")&&R&&r(Zn,{order:m("activity"),title:e("profile.activity"),children:r("div",{class:"fx-pf-card",children:[r("div",{class:"fx-pf-hm",role:"img","aria-label":e("profile.activityDays",{n:R.activeDays}),children:R.levels.map((I,pe)=>r("i",{class:I?`l${I}`:void 0},pe))}),r("div",{class:"fx-pf-hm-months","aria-hidden":"true",children:as(R.end,n).map((I,pe)=>r("span",{children:I},pe))}),r("div",{class:"fx-pf-hm-foot",children:[r("span",{children:e("profile.activityDays",{n:R.activeDays})}),r("span",{class:"fx-pf-hm-legend","aria-hidden":"true",children:[e("profile.less"),r("i",{}),r("i",{class:"l1"}),r("i",{class:"l2"}),r("i",{class:"l3"}),r("i",{class:"l4"}),e("profile.more")]})]})]})},"activity"),J=(a.badges||[]).filter(I=>Qo.includes(I.id)),H=d("badges")&&r(Zn,{order:m("badges"),title:e("profile.badges"),children:J.length?r("div",{class:"fx-pf-card fx-pf-rows",children:J.map(I=>r("div",{class:"fx-pf-brow",children:[r("span",{class:"fx-pf-badge",children:r(E,{name:cs[I.id],size:14})}),r("div",{children:[r("b",{children:e(`profile.badge.${I.id}`)}),r("span",{children:e(`profile.badgeSub.${I.id}`,{value:I.value??""})})]})]},I.id))}):r("div",{class:"fx-pf-card fx-pf-empty",children:e("profile.badgesEmpty")})},"badges"),V=a.insights,ee=[];V?.topModel&&ee.push([e("profile.insightModel"),V.topModel]),V?.activeHours&&ee.push([e("profile.insightHours"),os(V.activeHours)]);let z=d("insights")&&r(Zn,{order:m("insights"),title:e("profile.insights"),children:ee.length?r("div",{class:"fx-pf-card fx-pf-rows",children:ee.map(([I,pe])=>r("div",{class:"fx-pf-row",children:[r("span",{children:I}),r("b",{children:pe})]},I))}):r("div",{class:"fx-pf-card fx-pf-empty",children:e("profile.insightsEmpty")})},"insights"),Q=[!x&&y,C,U].filter(Boolean),oe=[H,z].filter(Boolean),Ee=I=>{if(!I)return;let pe=ts(I);if(!pe)return i.onInvalidLink();a.links.includes(pe)||i.onLinks([...a.links,pe])};return r("div",{class:"fx-pf","data-cover":a.cover,"data-frame":a.frame,children:[r("div",{class:"fx-pf-cover"}),r("div",{class:"fx-pf-id",children:[r("button",{type:"button",class:"fx-pf-avatar",title:e("account.avatar.change"),"aria-label":e("account.avatar.change"),onClick:()=>o.current?.click(),children:[r("span",{class:"fx-pf-av",children:t.avatar?r("img",{src:t.avatar,alt:""}):r("span",{class:"fx-pf-av-fallback",children:Jn(c)})}),r("span",{class:"fx-pf-av-mask",children:r(E,{name:"pencil",size:18})})]}),r("input",{ref:o,type:"file",accept:"image/png,image/jpeg,image/webp,image/gif,image/avif",hidden:!0,onChange:I=>{let pe=I.currentTarget,ft=pe.files?.[0];pe.value="",ft&&i.onAvatar(ft)}}),r("div",{class:"fx-pf-id-text",children:[r("div",{class:"fx-pf-name",children:[r(ma,{value:c,placeholder:a.username,maxLength:40,label:e("account.nickname.edit"),onSave:I=>{I&&i.onNickname(I)}}),us[u]&&r("span",{class:`fx-tag${u==="pro"?" fx-pf-tier-pro":" fx-tag--accent"}`,children:us[u]})]}),r("div",{class:"fx-pf-handle",children:["@",a.username]})]}),J.length>0&&d("badges")&&r("div",{class:"fx-pf-badges",children:J.map(I=>r("span",{class:"fx-pf-badge",title:e(`profile.badge.${I.id}`),children:r(E,{name:cs[I.id],size:14})},I.id))})]}),r("div",{class:"fx-pf-sub",children:[r(ma,{class:"fx-pf-bio",value:a.bio,placeholder:e("profile.bioPlaceholder"),maxLength:80,label:e("profile.bio"),counter:!0,onSave:i.onBio}),r("div",{class:"fx-pf-meta",children:[a.joinedMonth&&r("span",{children:[r(E,{name:"calendar",size:13}),e("profile.joined",{date:is(a.joinedMonth,n)})]}),a.links.map(I=>r("span",{children:[r(E,{name:"link",size:13}),ga(I)?r("a",{href:I,onClick:pe=>{pe.preventDefault(),ha(I)},children:fa(I)}):r("span",{children:fa(I)}),r("button",{type:"button",class:"fx-pf-x",title:e("profile.linkRemove"),"aria-label":e("profile.linkRemove"),onClick:()=>i.onLinks(a.links.filter(pe=>pe!==I)),children:r(E,{name:"x",size:11})})]},I)),a.links.length<2&&r(ma,{value:"",placeholder:e("profile.linkAdd"),maxLength:200,label:e("profile.linkAdd"),onSave:Ee},a.links.length)]})]}),x&&y,r("div",{class:"fx-pf-body","data-cols":Q.length&&oe.length?2:1,children:[r("div",{class:"fx-pf-main",children:Q}),oe.length>0&&r("div",{class:"fx-pf-side",children:oe})]})]})}function Z(t){if(typeof t=="number")return Number.isFinite(t)?t:null;if(typeof t=="string"&&t.trim()!==""){let e=Number(t);return Number.isFinite(e)?e:null}return null}function vd(t,e){let n=Z(e);if(n===null||n<0)return null;if(n===0)return 0;let a=Math.max(0,Z(t)??0);return Math.min(100,Math.max(0,Math.floor(a/n*100)))}var yd=15;function Tt(t,e){let n=vd(t,e);if(n===null)return{unlimited:!0,pct:100,text:null,low:!1};let a=Math.max(0,Z(t)??0),i=n===0&&a>0&&(Z(e)??0)>0?"<1%":`${n}%`;return{unlimited:!1,pct:n,text:i,low:n<=yd}}function Qn(t,e){let n=Z(e);if(n===null||n<=0)return null;let a=Z(t);if(a===null)return null;let i=Math.max(0,a);if(i===0)return"0%";let o=i/n*100;if(o<.1)return"<0.1%";let s=Math.round(o*10)/10;return s<10?`${s}%`:`${Math.round(o).toLocaleString("en-US")}%`}var kd=t=>t.ok?"ok":t.status===404?"hidden":"failed";function gs(){let t=ve(async()=>{let[s,l,c,u]=await Promise.all([M("/token-quota/my"),M("/credits/balance"),M("/features"),M("/invite/my-code")]);return s.ok?{ok:!0,status:s.status,data:{quota:s.data??{},balance:l.ok?Z(l.data?.balance):null,balanceFailed:!l.ok,features:c.ok&&c.data&&typeof c.data=="object"?c.data:{},invite:u.ok?u.data:null,inviteState:kd(u)}}:s});if(t.state==="loading")return r(he,{panels:3,rows:2});if(t.state==="signedOut")return r(ye,{});if(t.state==="error")return r(be,{error:t.error,onRetry:t.retry});let{data:e,update:n}=t,a=e.quota.background,i=e.features.redemption_codes!==!1,o=e.features.payment!==!1;return r(N,{children:[r(_d,{data:e,update:n,onFailed:t.reload}),r(Ad,{data:e,payment:o,onRetry:t.reload}),a?.modelId?r(Td,{bg:a,update:n}):null,(e.inviteState!=="hidden"||i)&&r(Pd,{data:e,update:n,redeemEnabled:i,onRedeemed:t.reload})]})}var ms=t=>({dailyLimit:t.dailyLimit,dailyRemaining:t.dailyRemaining,weeklyLimit:t.weeklyLimit,weeklyRemaining:t.weeklyRemaining});function wd(t,e){if(typeof t?.showResetCardCeremony!="function")return!1;try{return t.showResetCardCeremony(e),!0}catch{return!1}}function _d(t){let{t:e,locale:n,ctx:a}=D(),i=t.data.quota,o=Tt(i.dailyRemaining,i.dailyLimit),s=Tt(i.weeklyRemaining,i.weeklyLimit),l=Lo(i.weeklyResetAt,n),c=Math.max(0,Z(i.resetCards)??0),u=Z(i.resetCardPricePoints)??100,f=O(),m=O(),[d,g]=S(null),[h,v]=S("1"),k=/^\d+$/.test(h.trim())?Number(h.trim()):NaN,y=Number.isInteger(k)&&k>=1&&k<=50,x=y?k*u:null,w=t.data.balance,C=x!==null&&w!==null&&w<x,R=()=>void f.run(async()=>{let H={daily:o,weekly:s},V=ms(i);g(null);let ee=j(),z=await $n(ee.accountUseResetCard?()=>ee.accountUseResetCard("both"):null,()=>M("/token-quota/reset-card/use",{method:"POST",body:{type:"both"}}));if(!z.ok)return t.onFailed(),ue(z);let Q=z.data?.quota,oe=Z(z.data?.resetCards);return t.update(Ee=>({...Ee,quota:{...Ee.quota,...Q??{},resetCards:oe??Ee.quota.resetCards}})),Q&&!wd(a.app,{before:V,after:ms(Q),remainingCards:oe??void 0})&&g({before:H,after:{daily:Tt(Q.dailyRemaining,Q.dailyLimit),weekly:Tt(Q.weeklyRemaining,Q.weeklyLimit)},cards:oe}),{success:{key:"card.used"}}}),U=()=>void m.run(async()=>{if(!y)return{error:{key:"err.invalidCount"}};let H=await M("/points/exchange-reset-cards",{method:"POST",body:{count:k,expectedPricePerCard:u}});return H.ok?(t.update(V=>({...V,quota:{...V.quota,resetCards:Z(H.data?.resetCards)??V.quota.resetCards},balance:Z(H.data?.newPointsBalance)??V.balance})),v("1"),{success:{key:"card.exchanged",vars:{n:Z(H.data?.cardsGranted)??k}}}):(t.onFailed(),ue(H))}),J=H=>H.unlimited?e("common.unlimited"):H.text;return r(G,{icon:"gauge",title:e("quota.ai.title"),desc:e("quota.ai.desc"),children:[r("div",{class:"fx-quota-list fx-block",children:[r(on,{label:e("common.today"),display:o,note:o.unlimited?null:e("quota.resetDaily")}),r(on,{label:e("common.thisWeek"),display:s,note:s.unlimited||!l?null:e("quota.resetWeekly",{date:l})})]}),r(ge,{label:e("card.title"),desc:e("card.desc"),children:[r("span",{class:"fx-value","data-testid":"reset-card-count",children:e("card.owned",{n:c})}),r(nt,{label:e("card.use"),confirmLabel:e("card.useConfirm"),pending:f.pending,disabled:c<=0,onConfirm:R})]}),c<=0&&!f.success&&r(ae,{children:r($,{children:e("card.noneHint")})}),(f.error||f.success)&&r(ae,{children:[r(B,{a:f}),f.success&&d&&r("div",{class:"fx-ceremony",role:"status",children:[r("span",{children:[e("common.today")," ",r("b",{children:J(d.before.daily)})," \u2192 ",r("b",{children:J(d.after.daily)})]}),r("span",{children:[e("common.thisWeek")," ",r("b",{children:J(d.before.weekly)})," \u2192 ",r("b",{children:J(d.after.weekly)})]}),d.cards!==null&&r("span",{class:"fx-muted",children:e("card.left",{n:d.cards})})]})]}),r(ge,{label:e("card.exchange"),desc:e("card.price",{price:re(u,n)}),class:"fx-row--wide",children:[r("input",{class:"fx-input fx-input--count",type:"number",inputMode:"numeric",min:1,max:50,step:1,value:h,"aria-label":e("card.count"),onInput:H=>{v(H.currentTarget.value),m.clear()}}),r("span",{class:"fx-muted fx-cost",children:x!==null?e("card.cost",{cost:re(x,n)}):e("card.countHint")}),r(nt,{label:e("card.exchangeButton"),confirmLabel:e("card.exchangeConfirm",{cost:x!==null?re(x,n):"\u2014"}),pending:m.pending,disabled:!y||C,onConfirm:U})]}),(C||m.error||m.success)&&r(ae,{children:[C&&!m.error&&r($,{tone:"warn",children:e("err.insufficientPoints")}),r(B,{a:m})]})]})}function Sd(t,e,n){let a=O(),[i,o]=S(null);return{checked:i??t,toggle:l=>{o(l),a.run(async()=>{let c=await e(l);if(o(null),!c.ok)return ue(c);n(l)})},action:a}}function Ad(t){let{t:e,locale:n}=D(),a=O(),i=()=>void a.run(async()=>await Ut("credits")?void 0:{error:{key:"err.openFailed"}});return r(G,{icon:"coins",title:e("points.title"),desc:e("points.desc"),actions:t.payment?r(P,{variant:"primary",pending:a.pending,onClick:i,children:e("points.recharge")}):void 0,children:[r(ge,{label:e("points.balance"),children:t.data.balance!==null?r("span",{class:"fx-big","data-testid":"points-balance",children:re(t.data.balance,n)}):r("span",{class:"fx-value is-empty",children:[e("points.balanceFailed")," ",r("button",{type:"button",class:"fx-link",onClick:t.onRetry,children:e("common.retry")})]})}),a.error&&r(ae,{children:r(B,{a})})]})}var Cd=[5,10,20];function Td(t){let{t:e}=D(),{bg:n}=t,a=Tt(n.dailyRemaining,n.dailyLimit),i=Tt(n.weeklyRemaining,n.weeklyLimit),o=O(),[s,l]=S(null),c=Sd(!!n.autoMain,f=>{let m=j();return $n(m.accountBgAutoMain?()=>m.accountBgAutoMain(f):null,()=>M("/token-quota/background/auto-main",{method:"POST",body:{enabled:f}}))},f=>t.update(m=>({...m,quota:{...m.quota,background:{...m.quota.background??{},autoMain:f}}}))),u=f=>{l(f),o.run(async()=>{let m=j(),d=await $n(m.accountBgConvert?()=>m.accountBgConvert(f):null,()=>M("/token-quota/background/convert",{method:"POST",body:{percent:f}}));if(l(null),!d.ok)return ue(d);let g=d.data?.quota;return g&&t.update(v=>({...v,quota:{...v.quota,...g,resetCards:v.quota.resetCards,resetCardPricePoints:v.quota.resetCardPricePoints}})),{success:{key:"bg.converted",vars:{pct:f}}}})};return r(G,{icon:"clock",title:e("bg.title"),desc:e("bg.desc"),children:[r("div",{class:"fx-quota-list fx-block",children:[r(on,{label:e("common.today"),display:a}),r(on,{label:e("common.thisWeek"),display:i})]}),r(ge,{label:e("bg.autoMain"),desc:e("bg.autoMainDesc"),children:r(He,{checked:c.checked,disabled:c.action.pending,label:e("bg.autoMain"),onChange:c.toggle})}),r(ge,{label:e("bg.convert"),desc:e("bg.convertDesc"),class:"fx-row--wide",children:Cd.map(f=>r(nt,{label:`${f}%`,confirmLabel:e("bg.convertConfirm",{pct:f}),pending:o.pending&&s===f,disabled:o.pending&&s!==f,onConfirm:()=>u(f)},f))}),(o.error||o.success||c.action.error)&&r(ae,{children:[r(B,{a:c.action}),r(B,{a:o})]})]})}function Pd(t){let{t:e,locale:n}=D(),{invite:a,inviteState:i}=t.data,[o,s]=S(null),[l,c]=S(""),[u,f]=S(""),m=O(),d=O(),g=O();X(()=>{let x=!0;return j().authStatus?.().then(w=>{x&&s(w?.cloudUrl?w.cloudUrl.replace(/\/+$/,""):null)}).catch(()=>{}),()=>{x=!1}},[]);let h=async()=>{let x=await M("/invite/my-code");return t.update(w=>({...w,invite:x.ok?x.data:w.invite,inviteState:x.ok?"ok":x.status===404?"hidden":w.inviteState})),x},v=()=>void m.run(async()=>{let x=l.trim();if(!x)return{error:{key:"err.inviteEmpty"}};let w=await M("/invite/claim",{method:"POST",body:{code:x}});return w.ok?(c(""),h(),{success:{key:"invite.claimed"}}):ue(w)}),k=()=>void d.run(async()=>{let x=u.trim();if(!x)return{error:{key:"err.redeemEmpty"}};let w=await M("/redemption/redeem",{method:"POST",body:{code:x}});if(!w.ok)return ue(w);f(""),t.onRedeemed();let C=[],R=Z(w.data?.creditsAmount);R&&C.push(e("redeem.gotPoints",{n:re(R,n)})),w.data?.membershipPlanId&&C.push(e("redeem.gotMembership"));for(let U of Array.isArray(w.data?.items)?w.data.items:[]){let J=(n==="zh"?U?.label?.zh:U?.label?.en)||U?.label?.zh||U?.label?.en||U?.kind;J&&C.push(J)}return{success:C.length?{key:"redeem.successWith",vars:{what:C.join(n==="zh"?"\u3001":", ")}}:{key:"redeem.success"}}}),y=a?.code&&o?`${o}/auth?invite=${encodeURIComponent(a.code)}`:"";return r(G,{icon:"gift",title:e("invite.title"),desc:e("invite.desc"),children:[i==="ok"&&a?.code&&r(ge,{label:e("invite.myCode"),desc:e("invite.count",{n:re(Z(a.invitedCount)??0,n)}),class:"fx-row--wide",children:[r("code",{class:"fx-code","data-testid":"invite-code",children:a.code}),r(Ye,{text:a.code,label:e("invite.copyCode")}),r(Ye,{text:y,label:e("invite.copyLink"),disabled:!y})]}),i==="failed"&&r(ae,{children:r($,{tone:"warn",children:[e("invite.loadFailed")," ",r("button",{type:"button",class:"fx-link",disabled:g.pending,onClick:()=>void g.run(async()=>{await h()}),children:e("common.retry")})]})}),i==="ok"&&a?.claim?.eligible&&r(ge,{label:e("invite.claim"),desc:e("invite.claimDesc"),class:"fx-row--wide",children:r("form",{class:"fx-inline",onSubmit:x=>{x.preventDefault(),v()},children:[r("input",{class:"fx-input",value:l,placeholder:e("invite.claimPlaceholder"),"aria-label":e("invite.claim"),onInput:x=>c(x.currentTarget.value)}),r(P,{submit:!0,pending:m.pending,children:e("invite.claimSubmit")})]})}),(m.error||m.success)&&r(ae,{children:r(B,{a:m})}),t.redeemEnabled&&r(ge,{label:e("redeem.title"),desc:e("redeem.desc"),class:"fx-row--wide",children:r("form",{class:"fx-inline",onSubmit:x=>{x.preventDefault(),k()},children:[r("input",{class:"fx-input",value:u,placeholder:e("redeem.placeholder"),"aria-label":e("redeem.title"),onInput:x=>f(x.currentTarget.value)}),r(P,{submit:!0,pending:d.pending,children:e("redeem.submit")})]})}),(d.error||d.success)&&r(ae,{children:r(B,{a:d})})]})}function Ed(t){let e=[],n,a=new Map;for(let i of t)if(i.itemType==="reset_card")n||(n={id:"reset_card",items:[],resetCard:!0},e.push(n)),n.items.push(i);else if(i.itemType==="custom_item"&&i.itemDefinition?.stackable){let o=`${i.productId||i.id}:${JSON.stringify(i.itemDefinition)}`,s=a.get(o);s||(s={id:`custom:${o}`,items:[],resetCard:!1},a.set(o,s),e.push(s)),s.items.push(i)}else e.push({id:i.id,items:[i],resetCard:!1});return e}function hs(){let t=ve(()=>M("/shop/inventory"));return t.state==="loading"?r(he,{panels:1,rows:4}):t.state==="signedOut"?r(ye,{}):t.state==="error"?r(be,{error:t.error,onRetry:t.retry}):r(Rd,{items:t.data??[],onRefresh:t.reload,onUsed:e=>{t.update(n=>n.filter(a=>a.id!==e.itemId)),t.reload()}})}function Rd(t){let{t:e,locale:n,goTo:a}=D(),[i,o]=S(null),[s,l]=S(null),c=we(),u=Ed(t.items),f=u.find(h=>h.id===i),m=Math.max(24,Math.ceil(u.length/6)*6)-u.length,d=h=>h.resetCard?e("card.title"):h.items[0].itemDefinition?.name[n]||h.items[0].displayName||e("backpack.item"),g=h=>{c.current&&(l(h),t.onUsed(h))};return r(G,{icon:"backpack",title:e("page.backpack"),desc:e("backpack.desc"),actions:r(P,{onClick:t.onRefresh,children:[r(E,{name:"refresh",size:13}),e("backpack.refresh")]}),children:r("div",{class:"fx-backpack fx-block",children:[r("div",{class:"fx-backpack-summary",children:[r("span",{children:e("backpack.total",{n:re(t.items.length,n)})}),a&&r("button",{class:"fx-link",type:"button",onClick:()=>a("quota"),children:e("backpack.getCards")})]}),s&&r("div",{class:`fx-backpack-used fx-backpack-${s.animation}`,role:"status",children:[r(E,{name:"gift",size:20}),r("div",{children:[r("strong",{children:s.message[n]}),r("div",{children:s.effects.map(h=>bs(h,e,n)).join(" \xB7 ")})]})]},s.itemId),r("div",{class:"fx-backpack-layout",children:[r("div",{children:[r("div",{class:"fx-backpack-grid",role:"group","aria-label":e("backpack.grid"),children:[u.map(h=>{let v=d(h);return r("button",{type:"button",class:`fx-backpack-slot${h.resetCard?" is-card":""}`,"data-rarity":h.items[0].itemDefinition?.rarity,"aria-pressed":f?.id===h.id,"aria-label":e("backpack.slot",{name:v,n:h.items.length}),title:v,onClick:()=>o(h.id),children:[r("span",{class:"fx-backpack-icon",children:h.items[0].itemDefinition?.icon?r("span",{class:"fx-backpack-emoji",children:h.items[0].itemDefinition.icon}):r(E,{name:h.resetCard?"card":"gift",size:30})}),r("span",{class:"fx-backpack-name",children:v}),(h.resetCard||h.items[0].itemDefinition?.stackable)&&r("span",{class:"fx-backpack-count",children:["\xD7",re(h.items.length,n)]})]},h.id)}),Array.from({length:m},(h,v)=>r("div",{class:"fx-backpack-slot is-empty","aria-hidden":"true"},`empty:${v}`))]}),!u.length&&r("p",{class:"fx-backpack-empty",children:e("backpack.empty")})]}),f?r(Md,{slot:f,name:d(f),onUsed:g},`${f.id}:${f.items[0].id}`):r("div",{class:"fx-backpack-detail fx-backpack-prompt",children:[r(E,{name:"backpack",size:30}),r($,{children:e(u.length?"backpack.select":"backpack.emptyHint")})]})]})]})})}function bs(t,e,n){return t.type==="points"?e("backpack.effect.points",{n:re(t.amount,n)}):t.type==="reset_card"?e("backpack.effect.cards",{n:re(t.count,n)}):e("backpack.effect.quota")}function Md(t){let{t:e,locale:n,goTo:a}=D(),i=t.slot.items[0],[o,s]=S(null),l=O(),c=O(),[u,f]=S(!1),m=i.itemDefinition,d=we(),g=i.source==="points"?e("backpack.source.points"):i.source==="admin"?e("backpack.source.admin"):i.source==="reward"?e("backpack.source.reward"):e("backpack.source.other"),h=()=>void l.run(async()=>{let k=await M(`/shop/inventory/${encodeURIComponent(i.id)}`);if(d.current){if(!k.ok)return ue(k);s(k.data)}}),v=()=>void c.run(async()=>{let k=await M(`/shop/inventory/${encodeURIComponent(i.id)}/use`,{method:"POST"});if(!k.ok)return ue(k);t.onUsed(k.data)});return r("section",{class:"fx-backpack-detail","aria-label":e("backpack.details"),children:[r("span",{class:`fx-backpack-detail-icon${t.slot.resetCard?" is-card":""}`,children:m?.icon?r("span",{class:"fx-backpack-emoji",children:m.icon}):r(E,{name:t.slot.resetCard?"card":"gift",size:32})}),r("h3",{children:t.name}),r("span",{class:"fx-tag",children:[e(t.slot.resetCard||m?.use?"backpack.consumable":m?"backpack.collectible":"backpack.voucher"),m&&` \xB7 ${e(`backpack.rarity.${m.rarity}`)}`]}),r("dl",{class:"fx-backpack-facts",children:[r("div",{children:[r("dt",{children:e("backpack.quantity")}),r("dd",{children:re(t.slot.items.length,n)})]}),r("div",{children:[r("dt",{children:e("backpack.acquired")}),r("dd",{children:Je(i.acquiredAt,n)})]}),!t.slot.resetCard&&r("div",{children:[r("dt",{children:e("backpack.source")}),r("dd",{children:g})]})]}),m?r(N,{children:[m.description&&r($,{children:m.description[n]}),m.use&&r(N,{children:[r("div",{class:"fx-backpack-effects",children:m.use.effects.map((k,y)=>r("div",{children:bs(k,e,n)},y))}),u?r(N,{children:[r($,{children:e("backpack.consumeConfirm")}),r("div",{class:"fx-backpack-use-actions",children:[r(P,{variant:"primary",pending:c.pending,onClick:v,children:e("backpack.confirmUse")}),r(P,{disabled:c.pending,onClick:()=>f(!1),children:e("common.cancel")})]})]}):r(P,{variant:"primary",onClick:()=>f(!0),children:m.use.label?.[n]||e("backpack.use")}),r(B,{a:c,captchaSection:"backpack"})]})]}):t.slot.resetCard?r(N,{children:[r($,{children:e("card.desc")}),a&&r(P,{variant:"primary",onClick:()=>a("quota"),children:e("backpack.manageCards")})]}):o?r("div",{class:"fx-backpack-reveal",children:[o.codeName&&r("div",{class:"fx-muted",children:o.codeName}),o.key?r(N,{children:[r("code",{children:o.key}),r(Ye,{text:o.key,label:e("backpack.copyKey")})]}):r($,{children:e("backpack.noKey")})]}):r(P,{pending:l.pending,onClick:h,children:[r(E,{name:"key",size:14}),e("backpack.reveal")]}),r(B,{a:l,captchaSection:"backpack"})]})}var Id=/^1[3-9]\d{9}$|^\+[1-9]\d{6,14}$/,Ld=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,xs=(t,e)=>t==="phone"?Id.test(e):Ld.test(e),sn=(t,e)=>t==="phone"?jn(e):Xn(e);function ys(){let t=ve(()=>M("/auth/me"));if(t.state==="loading")return r(he,{panels:3,rows:2});if(t.state==="signedOut")return r(ye,{});if(t.state==="error")return r(be,{error:t.error,onRetry:t.retry});let e=t.data;return r(N,{children:[r(Dd,{me:e,onBound:(n,a)=>t.update(i=>({...i,[n]:a}))}),r(Od,{me:e}),r($d,{}),r(Ud,{me:e})]})}function xa(){let t=Io(),e=O();return{cd:t,a:e,send:(i,o,s)=>e.run(async()=>{let l=await M("/auth/send-code",{method:"POST",body:{target:i,type:o,purpose:s}});return l.ok?(t.start(60),{success:{key:"sec.codeSent"}}):ue(l)}),reset:()=>{t.stop(),e.clear()}}}function Dd(t){let{t:e}=D(),[n,a]=S(null),[i,o]=S(null);return r(G,{icon:"key",title:e("sec.methods.title"),desc:e("sec.methods.desc"),children:["phone","email"].map(s=>{let l=t.me[s];return r(N,{children:[r(ge,{label:e(s==="phone"?"account.contact.phone":"account.contact.email"),desc:l?sn(s,l):e("account.contact.unbound"),children:r(P,{onClick:()=>{o(null),a(n===s?null:s)},children:e(n===s?"common.cancel":l?"sec.change":"sec.bind")})}),n===s&&r(zd,{kind:s,current:l??null,onDone:c=>{t.onBound(s,c),a(null),o(s)}}),i===s&&n!==s&&r(ae,{children:r("div",{class:"fx-msg is-ok",role:"status",children:e(s==="phone"?"sec.phoneBound":"sec.emailBound")})})]},s)})})}function zd(t){let{t:e}=D(),{kind:n}=t,[a,i]=S(""),[o,s]=S(""),l=xa(),c=O(),u=a.trim(),f=n==="phone"?"err.phoneInvalid":"err.emailInvalid",m=()=>{if(!xs(n,u)){l.a.run(async()=>({error:{key:f}}));return}l.send(u,n,"bind")},d=()=>void c.run(async()=>{if(!xs(n,u))return{error:{key:f}};if(!o.trim())return{error:{key:"err.codeRequired"}};let g=n==="phone"?{phone:u,verification_code:o.trim()}:{email:u,verification_code:o.trim()},h=await M(n==="phone"?"/auth/bind-phone":"/auth/bind-email",{method:"POST",body:g});if(!h.ok)return ue(h);t.onDone(u)});return r(ae,{class:"fx-form",children:[r("label",{class:"fx-field",children:[r("span",{children:t.current?e(n==="phone"?"sec.newPhone":"sec.newEmail"):e(n==="phone"?"sec.phone":"sec.email")}),r("input",{class:"fx-input",type:n==="phone"?"tel":"email",value:a,autoComplete:"off",placeholder:e(n==="phone"?"sec.phonePlaceholder":"sec.emailPlaceholder"),onInput:g=>i(g.currentTarget.value)})]}),r(va,{code:o,setCode:s,sender:l,onSend:m}),r("div",{class:"fx-inline",children:r(P,{variant:"primary",pending:c.pending,onClick:d,children:e("sec.bindSubmit")})}),r(B,{a:c})]})}function va(t){let{t:e}=D(),{cd:n,a}=t.sender;return r("div",{class:"fx-field",children:[r("span",{children:t.label??e("sec.code")}),r("div",{class:"fx-inline",children:[r("input",{class:"fx-input fx-input--code",inputMode:"numeric",autoComplete:"one-time-code",value:t.code,placeholder:e("sec.codePlaceholder"),"aria-label":t.label??e("sec.code"),onInput:i=>t.setCode(i.currentTarget.value)}),r(P,{pending:a.pending,disabled:n.left>0||t.disabled,onClick:t.onSend,children:n.left>0?e("sec.resendIn",{s:n.left}):e("sec.sendCode")})]}),r(B,{a})]})}function Nd(t){let{t:e}=D(),n=To(t.value),a=t.value.length>0,i=[[n.length,e("pw.req.length",{min:8,max:64})],[n.lower,e("pw.req.lower")],[n.upper,e("pw.req.upper")],[n.special,e("pw.req.special")],[n.space,e("pw.req.space")]];return r("ul",{class:"fx-rules","aria-label":e("pw.rulesLabel"),children:i.map(([o,s])=>r("li",{class:o?"is-ok":a?"is-bad":"",children:[o?r(E,{name:"check",size:11}):a?r(E,{name:"x",size:11}):r("span",{class:"fx-rule-dot","aria-hidden":"true"}),r("span",{children:s})]},s))})}function ks(t,e){let n=Co(t);return n.ok?t!==e?{error:{key:"pw.mismatch"}}:null:{error:{key:Qr[n.rule]}}}function Od(t){let{t:e}=D(),n=["phone","email"].filter(l=>!!t.me[l]),[a,i]=S("current"),[o,s]=S(!1);return r(G,{icon:"shield",title:e("pw.title"),desc:e("pw.desc",{min:8,max:64}),actions:r(P,{onClick:()=>s(!o),children:e(o?"common.cancel":"pw.change")}),children:o&&r(ae,{class:"fx-form",children:[r(qe,{label:e("pw.modeLabel"),value:a,onChange:i,options:[{value:"current",label:e("pw.mode.current")},{value:"code",label:e("pw.mode.code")}]}),a==="current"?r(Bd,{onDone:()=>s(!1)}):n.length?r(Fd,{me:t.me,targets:n,onDone:()=>s(!1)}):r($,{children:e("pw.codeNeedsContact")})]})})}function ws(t){let{t:e}=D();return r(N,{children:[r("label",{class:"fx-field",children:[r("span",{children:e("pw.new")}),r("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:t.pw,maxLength:72,onInput:n=>t.setPw(n.currentTarget.value)})]}),r(Nd,{value:t.pw}),r("label",{class:"fx-field",children:[r("span",{children:e("pw.confirm")}),r("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:t.confirm,onInput:n=>t.setConfirm(n.currentTarget.value)})]})]})}function Bd(t){let{t:e}=D(),[n,a]=S(""),[i,o]=S(""),[s,l]=S(""),c=O(),[u,f]=S(!1),m=()=>void c.run(async()=>{if(!n)return{error:{key:"pw.currentRequired"}};let d=ks(i,s);if(d)return d;let g=await M("/auth/password",{method:"PUT",body:{currentPassword:n,newPassword:i}});return g.ok?(a(""),o(""),l(""),f(!0),{success:{key:"pw.changed"}}):g.status===404?{error:{key:"pw.noPasswordYet"}}:ue(g)});return r(N,{children:[r("label",{class:"fx-field",children:[r("span",{children:e("pw.current")}),r("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:n,onInput:d=>a(d.currentTarget.value)})]}),r(ws,{pw:i,setPw:o,confirm:s,setConfirm:l}),r("div",{class:"fx-inline",children:[r(P,{variant:"primary",pending:c.pending,onClick:m,children:e("pw.submit")}),u&&r(P,{onClick:t.onDone,children:e("common.done")})]}),r(B,{a:c})]})}function Fd(t){let{t:e}=D(),[n,a]=S(t.targets[0]),[i,o]=S(""),[s,l]=S(""),[c,u]=S(""),f=xa(),m=O(),[d,g]=S(!1),h=t.me[n]||"",v=()=>void m.run(async()=>{if(!i.trim())return{error:{key:"err.codeRequired"}};let k=ks(s,c);if(k)return k;let y=n==="phone"?{phone:h,code:i.trim(),newPassword:s}:{email:h,code:i.trim(),newPassword:s},x=await M("/auth/reset-password",{method:"POST",body:y});return x.ok?(o(""),l(""),u(""),g(!0),{success:{key:"pw.changed"}}):ue(x)});return r(N,{children:[t.targets.length>1?r(qe,{label:e("pw.via"),value:n,onChange:k=>{a(k),o(""),f.reset()},options:t.targets.map(k=>({value:k,label:sn(k,t.me[k])}))}):r($,{children:e("pw.codeTo",{target:sn(n,h)})}),r(va,{code:i,setCode:o,sender:f,onSend:()=>void f.send(h,n,"reset_password")}),r(ws,{pw:s,setPw:l,confirm:c,setConfirm:u}),r("div",{class:"fx-inline",children:[r(P,{variant:"primary",pending:m.pending,onClick:v,children:e("pw.submitReset")}),d&&r(P,{onClick:t.onDone,children:e("common.done")})]}),r(B,{a:m})]})}function $d(){let{t}=D(),e=O(),n=()=>void e.run(async()=>{let a=await M("/auth/logout-all",{method:"POST"});if(!a.ok)return ue(a);try{await j().forsionLogout?.()}catch(i){return{error:{raw:$e(i)}}}return{success:{key:"sec.logoutAllDone"}}});return r(G,{icon:"laptop",title:t("sec.devices.title"),desc:t("sec.devices.desc"),children:[r(ge,{label:t("sec.logoutAll"),desc:t("sec.logoutAllDesc"),children:r(nt,{label:t("sec.logoutAll"),confirmLabel:t("sec.logoutAllConfirm"),pending:e.pending,onConfirm:n})}),(e.error||e.success)&&r(ae,{children:r(B,{a:e})})]})}function Ud(t){let{t:e}=D(),n=["phone","email"].filter(y=>!!t.me[y]),[a,i]=S(!1),[o,s]=S(n.length?"code":"password"),[l,c]=S(n[0]??null),[u,f]=S(""),[m,d]=S(""),g=xa(),h=O(),v=l&&t.me[l]||"",k=()=>void h.run(async()=>{if(o==="code"&&!u.trim())return{error:{key:"err.codeRequired"}};if(o==="password"&&!m)return{error:{key:"pw.currentRequired"}};let y=await M("/auth/delete-account",{method:"POST",body:o==="code"?{verification_code:u.trim()}:{password:m}});if(!y.ok)return ue(y);try{await j().forsionLogout?.()}catch{}return{success:{key:"del.done"}}});return r(G,{icon:"alert",danger:!0,title:e("del.title"),desc:e("del.desc"),actions:r(P,{variant:"danger",onClick:()=>{i(!a),h.clear()},children:e(a?"common.cancel":"del.start")}),children:a&&r(ae,{class:"fx-form",children:[r($,{tone:"error",children:e("del.warn")}),n.length>0&&r(qe,{label:e("del.methodLabel"),value:o,onChange:s,options:[{value:"code",label:e("del.byCode")},{value:"password",label:e("del.byPassword")}]}),o==="code"&&l?r(N,{children:[n.length>1&&r(qe,{label:e("pw.via"),value:l,onChange:y=>{c(y),f(""),g.reset()},options:n.map(y=>({value:y,label:sn(y,t.me[y])}))}),r(va,{code:u,setCode:f,sender:g,label:e("del.codeLabel",{target:sn(l,v)}),onSend:()=>void g.send(v,l,"delete_account")})]}):r("label",{class:"fx-field",children:[r("span",{children:e("del.passwordLabel")}),r("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:m,onInput:y=>d(y.currentTarget.value)})]}),r("div",{class:"fx-inline",children:r(nt,{variant:"danger",label:e("del.submit"),confirmLabel:e("del.confirm"),pending:h.pending,onConfirm:k})}),r(B,{a:h})]})})}var Ss=20;function As(){let t=ve(async()=>{let[e,n]=await Promise.all([M("/token-quota/my"),M(`/token-quota/my/logs?limit=${Ss}&offset=0`)]);if(!e.ok)return e;let a=n.ok&&Array.isArray(n.data?.logs)?n.data.logs:null;return{ok:!0,status:e.status,data:{dailyLimit:Z(e.data?.dailyLimit),logs:a,total:n.ok?Z(n.data?.total)??a?.length??0:0,logsFail:n.ok?null:n}}});return t.state==="loading"?r(he,{panels:3,rows:2}):t.state==="signedOut"?r(ye,{}):t.state==="error"?r(be,{error:t.error,onRetry:t.retry}):r(N,{children:[r(Hd,{dailyLimit:t.data.dailyLimit}),r(Wd,{base:t.data,onRetry:t.reload})]})}function Hd(t){let{t:e,locale:n}=D(),[a,i]=S(30),[o,s]=S({state:"loading"}),[l,c]=S(!1),[u,f]=S(0),m=W(0);X(()=>{let w=++m.current;return c(!0),M(`/usage/stats?days=${a}`).then(C=>{w===m.current&&(c(!1),s(C.ok?{state:"ready",data:C.data??{}}:{state:"error",fail:C}))}),()=>{m.current++}},[a,u]);let d=t.dailyLimit!==null&&t.dailyLimit<0?"usage.unlimitedNote":Qn(1,t.dailyLimit)===null?"usage.noLimitNote":null,g=w=>Qn(w,t.dailyLimit)??"\u2014",h=r(qe,{label:e("usage.range"),value:a,onChange:i,options:[{value:7,label:e("usage.days",{n:7})},{value:30,label:e("usage.days",{n:30})},{value:90,label:e("usage.days",{n:90})}]}),v=o.state==="ready"?o.data:null,k=(v?.byModel??[]).filter(Boolean),y=(v?.byProject??[]).filter(Boolean),x=Z(v?.successRate);return r(N,{children:[r(G,{icon:"chart",title:e("usage.overview.title"),desc:e("usage.overview.desc"),actions:h,children:[o.state==="error"?r("div",{class:"fx-sub",children:r("div",{class:"fx-msg is-error",role:"alert",children:[r("span",{children:Ne(Ce(o.fail),e)}),r("button",{type:"button",class:"fx-link",onClick:()=>f(w=>w+1),children:e("common.retry")})]})}):r("div",{class:`fx-stats fx-block${l&&v?" is-refreshing":""}`,"aria-busy":l||void 0,children:[r(ya,{label:e("usage.requests"),value:v?re(Z(v.totalRequests)??0,n):null,testId:"usage-requests"}),r(ya,{label:e("usage.successRate"),value:v?x===null?"\u2014":`${x.toFixed(1)}%`:null}),r(ya,{label:e("usage.consumption"),value:v?g(v.totalPointsCost):null,sub:e("usage.ofToday"),testId:"usage-consumption"})]}),d&&r("div",{class:"fx-sub fx-sub--tight",children:r($,{children:e(d)})})]}),o.state!=="error"&&r(N,{children:[r(G,{icon:"gauge",title:e("usage.byModel.title"),desc:e("usage.byModel.desc"),children:r(_s,{loading:!v,empty:e("usage.empty"),head:[e("usage.col.model"),e("usage.col.requests"),e("usage.col.consumption")],rows:k.map(w=>[w.modelName||w.modelId||"\u2014",re(Z(w.count)??0,n),g(w.pointsCost)])})}),r(G,{icon:"laptop",title:e("usage.byApp.title"),desc:e("usage.byApp.desc"),children:r(_s,{loading:!v,empty:e("usage.empty"),head:[e("usage.col.app"),e("usage.col.requests"),e("usage.col.consumption")],rows:y.map(w=>[Cs(w.projectSource,e("usage.appUnknown")),re(Z(w.count)??0,n),g(w.pointsCost)])})})]})]})}var qd={tangu:"Tangu","ai-studio":"Forsion AI Studio",desktop:"Forsion Desktop",amadeus:"Amadeus",notebase:"Notebase",calendar:"Forsion Calendar",chat:"Forsion Chat",desk:"Forsion Desk","photo-studio":"Photo Studio",connect:"Forsion Connect"},Cs=(t,e)=>!t||t==="unknown"?e:qd[t]??t;function ya(t){return r("div",{class:"fx-stat",children:[r("span",{class:"fx-stat-label",children:t.label}),t.value===null?r("span",{class:"fx-skel fx-skel--stat"}):r("strong",{class:"fx-stat-value","data-testid":t.testId,children:t.value}),t.sub&&r("span",{class:"fx-stat-sub",children:t.sub})]})}function _s(t){return t.loading?r("div",{class:"fx-sub",children:[r("span",{class:"fx-skel fx-skel--row"}),r("span",{class:"fx-skel fx-skel--row"})]}):t.rows.length?r("div",{class:"fx-table-wrap fx-block",children:r("table",{class:"fx-table",children:[r("thead",{children:r("tr",{children:t.head.map((e,n)=>r("th",{class:n?"is-num":"",children:e},n))})}),r("tbody",{children:t.rows.map((e,n)=>r("tr",{children:e.map((a,i)=>r("td",{class:i?"is-num":"",children:a},i))},n))})]})}):r(Oe,{children:t.empty})}function Wd(t){let{t:e,locale:n}=D(),a=we(),[i,o]=S(t.base.logs??[]),[s,l]=S(t.base.total),c=O();X(()=>{o(t.base.logs??[]),l(t.base.total)},[t.base]);let u=()=>void c.run(async()=>{let m=await M(`/token-quota/my/logs?limit=${Ss}&offset=${i.length}`);if(!m.ok)return{error:Ce(m)};let d=Array.isArray(m.data?.logs)?m.data.logs:[];a.current&&(o(g=>[...g,...d]),l(g=>d.length?Z(m.data?.total)??g:i.length))}),f=t.base.dailyLimit;return r(G,{icon:"clock",title:e("usage.recent.title"),desc:e("usage.recent.desc"),children:[t.base.logsFail?r("div",{class:"fx-sub",children:r("div",{class:"fx-msg is-error",role:"alert",children:[r("span",{children:Ne(Ce(t.base.logsFail),e)}),r("button",{type:"button",class:"fx-link",onClick:t.onRetry,children:e("common.retry")})]})}):i.length===0?r(Oe,{children:e("usage.recentEmpty")}):r("div",{class:"fx-list fx-block",role:"list",children:i.map((m,d)=>r("div",{class:"fx-list-row",role:"listitem",children:[r("span",{class:"fx-list-main",children:[r("strong",{children:[m.modelName||m.modelId||"\u2014",m.success===!1&&r("span",{class:"fx-tag fx-tag--danger",children:e("usage.failed")})]}),r("small",{children:[Je(m.createdAt,n),Cs(m.projectSource,e("usage.appUnknown"))].join(" \xB7 ")})]}),r("span",{class:"fx-value",children:Qn(m.pointsCost,f)??"\u2014"})]},m.id??d))}),i.length>0&&r("div",{class:"settings-panel-footer fx-footer",children:[r("span",{class:"fx-muted",children:e("usage.shown",{shown:re(i.length,n),total:re(Math.max(s,i.length),n)})}),i.length<s&&r(P,{pending:c.pending,onClick:u,children:e("common.loadMore")})]}),c.error&&r("div",{class:"fx-sub fx-sub--tight",children:r(B,{a:c})})]})}var jd=["plugin","amadeus-plugin","skill","agent","space","theme"],Xd=["github","npm","zip"],Vd=new Set(["market_npm_invalid","market_npm_source","market_github_source","market_not_found","market_zip_required","market_zip_invalid","market_zip_too_large","market_version_required","market_version_invalid","market_version_mismatch","market_version_not_newer","market_icon_invalid","market_duplicate","market_update_pending","market_stale"]),Ps=t=>`sub.type.${t.replace("-","_")}`,Ts=t=>t==="approved"?"sub.approved":t==="rejected"?"sub.rejected":"sub.pending";function Kd({target:t,onDone:e,onCancel:n}){let a=Ue(),i=Yr(),o=we(),s=O(),[l,c]=S("github"),[u,f]=S({type:"plugin",name:"",summary:"",githubRepoUrl:"",npmPackage:"",version:"",readme:""}),m=W(null),d=W(null);X(()=>{d.current?.scrollIntoView({block:"start"}),d.current?.querySelector("input")?.focus({preventScroll:!0})},[]);let g=!!t||l==="zip",h=(y,x)=>{f(w=>({...w,[y]:x})),s.clear()},v=()=>void s.run(async()=>{if(!t&&!u.name.trim())return{error:{key:"sub.errName"}};if(!g&&!(l==="github"?u.githubRepoUrl:u.npmPackage).trim())return{error:{key:"sub.errSource"}};let y=m.current?.files?.[0];if(g&&!y)return{error:{key:"sub.errZip"}};if(y&&y.size>50*1024*1024)return{error:{key:"sub.errLarge"}};if(g&&!u.version.trim())return{error:{key:"sub.errVersion"}};let x=j().cloudInvoke;if(!x)return{error:{key:"err.unavailable"}};let w=t?{summary:u.summary.trim(),version:u.version.trim(),readme:u.readme}:{type:u.type,source:l,name:u.name.trim(),summary:u.summary.trim(),...l==="github"?{githubRepoUrl:u.githubRepoUrl.trim()}:l==="npm"?{npmPackage:u.npmPackage.trim()}:{version:u.version.trim(),readme:u.readme}},C=g&&y?new Uint8Array(await y.arrayBuffer()):null;if(!o.current)return;let R=Fn(await x("cloud:marketSubmit",{...t?{id:t.id}:{},fields:w,...C&&y?{zip:{name:y.name,data:C}}:{}}));if(o.current){if(!R.ok)return R.status===401&&j().authStatus?.().catch(()=>{}),Vd.has(R.code||"")?{error:{key:`sub.err.${R.code}`}}:ue(R);e()}}),k=(y,x,w="")=>r("label",{class:"fx-sub-field",for:`${i}-${y}`,children:[r("span",{children:x}),r("input",{id:`${i}-${y}`,value:u[y],placeholder:w,maxLength:y==="summary"?2e3:500,onInput:C=>h(y,C.currentTarget.value)})]});return r(G,{title:t?a("sub.updateTitle",{name:t.name}):a("sub.new"),children:r("form",{ref:d,class:"fx-sub-form",onSubmit:y=>{y.preventDefault(),v()},children:[r("fieldset",{disabled:s.pending,children:[!t&&r(N,{children:[r("div",{class:"fx-sub-columns",children:[r("label",{class:"fx-sub-field",for:`${i}-type`,children:[r("span",{id:`${i}-type-label`,children:a("sub.type")}),r("select",{"aria-labelledby":`${i}-type-label`,id:`${i}-type`,value:u.type,onChange:y=>h("type",y.currentTarget.value),children:jd.map(y=>r("option",{value:y,children:a(Ps(y))},y))})]}),r("label",{class:"fx-sub-field",for:`${i}-source`,children:[r("span",{id:`${i}-source-label`,children:a("sub.source")}),r("select",{"aria-labelledby":`${i}-source-label`,id:`${i}-source`,value:l,onChange:y=>{c(y.currentTarget.value),s.clear()},children:Xd.map(y=>r("option",{value:y,children:y==="github"?"GitHub":y==="npm"?"npm":"ZIP"},y))})]})]}),k("name",a("sub.name"))]}),k("summary",a("sub.summary"),t?a("sub.keep"):""),g?r(N,{children:[r("label",{class:"fx-sub-field",for:`${i}-zip`,children:[r("span",{id:`${i}-zip-label`,children:a("sub.zip")}),r("input",{"aria-labelledby":`${i}-zip-label`,id:`${i}-zip`,type:"file",accept:".zip,application/zip",ref:m}),r("small",{children:a("sub.zipHint")})]}),k("version",a("sub.version"),t?.version?`> ${t.version}`:"1.0.0"),t&&r($,{children:a("sub.versionHint")}),r("label",{class:"fx-sub-field",for:`${i}-readme`,children:[r("span",{children:a("sub.readme")}),r("textarea",{id:`${i}-readme`,value:u.readme,rows:5,maxLength:2e5,placeholder:t?a("sub.keep"):"",onInput:y=>h("readme",y.currentTarget.value)})]})]}):r(N,{children:[l==="github"?k("githubRepoUrl",a("sub.repo"),"https://github.com/owner/repo"):k("npmPackage",a("sub.npm"),"@scope/plugin-name"),r($,{children:a(l==="github"?"sub.repoHint":"sub.npmHint")})]}),r($,{children:a("sub.reviewHint")})]}),r("div",{class:"fx-sub-actions",children:[r(P,{variant:"primary",pending:s.pending,submit:!0,children:a("sub.submit")}),r(P,{disabled:s.pending,onClick:n,children:a("common.cancel")})]}),r(B,{a:s,captchaSection:"submission"})]})})}function Jd({items:t,reload:e}){let n=Ue(),a=Yr(),[i,o]=S("all"),[s,l]=S(null),[c,u]=S(null),f=d=>{u(null),l(d)},m=t.filter(d=>i==="all"||(i==="pending"?d.status==="pending"||!!d.pendingUpdate:d.status===i));return r(N,{children:[s&&r(Kd,{target:s==="new"?null:s,onCancel:()=>l(null),onDone:()=>{u(s==="new"?"sub.submitted":"sub.updated"),l(null),e()}},s==="new"?"new":s.id),r(G,{title:n("sub.mine"),desc:n("sub.desc"),actions:r(N,{children:[r(P,{variant:"primary",disabled:!!s,onClick:()=>f("new"),children:n("sub.new")}),r(P,{disabled:!!s,onClick:e,children:n("sub.refresh")})]}),children:[c&&r("p",{class:"fx-msg is-ok fx-sub-result",role:"status",children:n(c)}),!!t.length&&r("div",{class:"fx-sub-filter",children:[r("label",{for:a,children:n("sub.filter")}),r("select",{id:a,value:i,onChange:d=>o(d.currentTarget.value),children:[r("option",{value:"all",children:n("sub.all")}),["pending","approved","rejected"].map(d=>r("option",{value:d,children:n(Ts(d))},d))]})]}),m.length?m.map(d=>r("article",{class:"fx-sub-item","data-submission-id":d.id,children:[r("div",{class:"fx-sub-item-head",children:[r("strong",{children:d.name}),r("span",{class:`fx-tag ${d.status==="approved"?"fx-status--resolved":d.status==="rejected"?"fx-tag--danger":"fx-tag--accent"}`,children:n(Ts(d.status))})]}),r("div",{class:"fx-sub-meta",children:[r("span",{children:n(Ps(d.type))}),r("span",{children:d.source==="github"?"GitHub":d.source==="npm"?"npm":"ZIP"}),d.version&&r("span",{children:["v",d.version]}),r("span",{children:n("sub.downloads",{n:d.downloads||0})})]}),d.summary&&r("p",{class:"fx-sub-summary",children:d.summary}),d.status==="rejected"&&d.reviewNote&&r($,{tone:"error",children:d.reviewNote}),d.rejectedUpdate&&r($,{tone:"error",children:[n("sub.rejectedVersion",{version:d.rejectedUpdate.version}),d.rejectedUpdate.note?`: ${d.rejectedUpdate.note}`:""]}),d.pendingUpdate?r($,{children:n("sub.pendingVersion",{version:d.pendingUpdate.version})}):d.source==="zip"?r(P,{disabled:!!s,onClick:()=>f(d),children:n("sub.update")}):r($,{children:n("sub.remoteUpdate")})]},d.id)):r(Oe,{children:t.length?n("sub.noResults"):r(N,{children:[r("strong",{children:n("sub.empty")}),r("p",{children:n("sub.emptyHint")})]})})]})]})}function Es(){let t=ve(()=>M("/market/mine"));switch(t.state){case"loading":return r(he,{});case"signedOut":return r(ye,{});case"error":return r(be,{error:t.error,onRetry:t.retry});case"ready":return r(Jd,{items:t.data?.items||[],reload:t.reload})}}var ln=20,er=5,Yd=5*1024*1024,tr=1e4,Gd={open:"fb.status.open",in_progress:"fb.status.in_progress",resolved:"fb.status.resolved",closed:"fb.status.closed"};function Ms(t){let{t:e}=D(),n=t.status||"open",a=Gd[n];return r("span",{class:`fx-tag fx-status fx-status--${n}`,children:a?e(a):n})}function Is(){let[t,e]=S(null),n=ve(async()=>{let a=await M(`/feedback?limit=${ln}&offset=0`);return a.ok?{ok:!0,status:a.status,data:Array.isArray(a.data?.tickets)?a.data.tickets:[]}:a});return n.state==="loading"?r(he,{panels:1,rows:3}):n.state==="signedOut"?r(ye,{}):n.state==="error"?r(be,{error:n.error,onRetry:n.retry}):t?r(np,{id:t,onBack:()=>{e(null),n.reload()}}):r(Zd,{first:n.data,onOpen:e,onChanged:n.reload})}function Zd(t){let{t:e,locale:n}=D(),a=we(),[i,o]=S(t.first),[s,l]=S(t.first.length===ln),[c,u]=S(!1),[f,m]=S(!1),d=O();X(()=>{o(t.first),l(t.first.length===ln)},[t.first]);let g=()=>void d.run(async()=>{let h=await M(`/feedback?limit=${ln}&offset=${i.length}`);if(!h.ok)return{error:Ce(h)};let v=Array.isArray(h.data?.tickets)?h.data.tickets:[];a.current&&(o(k=>{let y=new Set(k.map(x=>x.id));return[...k,...v.filter(x=>!y.has(x.id))]}),l(v.length===ln))});return r(G,{icon:"message",title:e("fb.list.title"),desc:e("fb.list.desc"),actions:c?void 0:r(P,{variant:"primary",onClick:()=>{m(!1),u(!0)},children:[r(E,{name:"plus",size:12})," ",e("fb.new")]}),children:[c&&r(tp,{onCancel:()=>u(!1),onSubmitted:()=>{u(!1),m(!0),t.onChanged()}}),f&&!c&&r(ae,{children:r("div",{class:"fx-msg is-ok",role:"status",children:e("fb.submitted")})}),i.length===0?r(Oe,{children:e("fb.empty")}):r("div",{class:"fx-list fx-block",role:"list",children:i.map(h=>r("button",{type:"button",class:"fx-list-row fx-list-row--button",role:"listitem",onClick:()=>t.onOpen(h.id),children:[r("span",{class:`fx-dot${h.user_unread?" is-on":""}`,"aria-label":h.user_unread?e("fb.unread"):void 0}),r("span",{class:"fx-list-main",children:[r("strong",{children:h.title||(h.description||"").slice(0,60)||e("fb.untitled")}),r("small",{children:Je(h.updated_at||h.created_at,n)})]}),r(Ms,{status:h.status}),r(E,{name:"chevron",size:12})]},h.id))}),i.length>0&&(s||d.error)&&r("div",{class:"settings-panel-footer fx-footer",children:[r("span",{class:"fx-muted",children:e("fb.shown",{n:re(i.length,n)})}),s&&r(P,{pending:d.pending,onClick:g,children:e("common.loadMore")})]}),d.error&&r(ae,{children:r(B,{a:d})})]})}function Qd(t){return new Promise((e,n)=>{let a=new FileReader;a.onload=()=>e(String(a.result||"")),a.onerror=()=>n(a.error||new Error("read failed")),a.readAsDataURL(t)})}var ep=0;function tp(t){let{t:e}=D(),n=we(),[a,i]=S(""),[o,s]=S([]),[l,c]=S(null),[u,f]=S(!1),m=W(null),d=O(),[g,h]=S(0),v=W(0);v.current=o.length;let k=async x=>{c(null);for(let w of Array.from(x||[])){if(!w.type||!w.type.startsWith("image/")){c({key:"err.imageType"});continue}if(w.size>Yd){c({key:"err.imageTooLarge"});continue}if(v.current>=er){c({key:"err.tooManyImages"});break}v.current++,h(C=>C+1);try{let C=await Qd(w);if(!n.current)return;let R={id:`img-${++ep}`,filename:w.name||"image",mime_type:w.type,size:w.size,data_base64:C.replace(/^data:[^;]+;base64,/,""),url:C};s(U=>U.length>=er?U:[...U,R])}catch{v.current--,c({key:"err.imageRead"})}finally{n.current&&h(C=>C-1)}}},y=()=>void d.run(async()=>{let x=a.trim();if(!x)return{error:{key:"err.feedbackEmpty"}};if(x.length>tr)return{error:{key:"err.feedbackTooLong"}};let w=o.map(({filename:R,mime_type:U,size:J,data_base64:H})=>({filename:R,mime_type:U,size:J,data_base64:H})),C=await M("/feedback",{method:"POST",body:{description:x,attachments:w},timeoutMs:12e4});if(!C.ok)return ue(C);t.onSubmitted()});return r("div",{class:`fx-sub fx-form fx-composer${u?" is-drag":""}`,onPaste:x=>{let w=Array.from(x.clipboardData?.items||[]).filter(C=>C.kind==="file").map(C=>C.getAsFile()).filter(Boolean);w.length&&(x.preventDefault(),k(w))},onDragOver:x=>{x.preventDefault(),f(!0)},onDragLeave:()=>f(!1),onDrop:x=>{x.preventDefault(),f(!1),k(x.dataTransfer?.files)},children:[r("label",{class:"fx-field",children:[r("span",{children:e("fb.descLabel")}),r("textarea",{class:"fx-input fx-textarea",rows:5,value:a,maxLength:tr,autoFocus:!0,placeholder:e("fb.descPlaceholder"),onInput:x=>i(x.currentTarget.value)})]}),r("p",{class:"fx-note",children:e("fb.imagesHint",{n:er})}),o.length>0&&r("div",{class:"fx-thumbs",children:o.map(x=>r("span",{class:"fx-thumb",children:[r("img",{src:x.url,alt:x.filename}),r("button",{type:"button","aria-label":e("fb.removeImage"),title:e("fb.removeImage"),onClick:()=>{s(w=>w.filter(C=>C.id!==x.id)),c(null)},children:r(E,{name:"x",size:11})})]},x.id))}),l&&r("div",{class:"fx-msg is-error",role:"alert",children:Ne(l,e)}),r("input",{ref:m,type:"file",accept:"image/*",multiple:!0,hidden:!0,onChange:x=>{let w=x.currentTarget;k(w.files),w.value=""}}),r("div",{class:"fx-inline",children:[r(P,{disabled:o.length>=er||d.pending,onClick:()=>m.current?.click(),children:[r(E,{name:"image",size:12})," ",e("fb.addImages")]}),r("span",{class:"fx-grow"}),r(P,{disabled:d.pending,onClick:t.onCancel,children:e("common.cancel")}),r(P,{variant:"primary",pending:d.pending,disabled:g>0,onClick:y,children:e("fb.submit")})]}),r(B,{a:d})]})}function np(t){let{t:e,locale:n}=D(),[a,i]=S({state:"loading"}),[o,s]=S(0),[l,c]=S(""),[u,f]=S(null),m=O(),d=W(0);X(()=>{let C=++d.current;return M(`/feedback/${encodeURIComponent(t.id)}`).then(R=>{if(C===d.current){if(!R.ok){i({state:"error",fail:R});return}i({state:"ready",data:{ticket:R.data.ticket,replies:R.data.replies??[],attachments:R.data.attachments??[]}}),M(`/feedback/${encodeURIComponent(t.id)}/read`,{method:"POST"})}}),()=>{d.current++}},[t.id,o]),X(()=>{if(!u)return;let C=R=>{R.key==="Escape"&&f(null)};return window.addEventListener("keydown",C),()=>window.removeEventListener("keydown",C)},[u]);let g=r("div",{class:"fx-back",children:r(P,{onClick:t.onBack,children:[r(E,{name:"back",size:12})," ",e("fb.back")]})});if(a.state==="loading")return r(N,{children:[g,r(he,{panels:1,rows:3})]});if(a.state==="error")return r(N,{children:[g,r(be,{error:Ce(a.fail),onRetry:()=>{i({state:"loading"}),s(C=>C+1)}})]});let{ticket:h,replies:v,attachments:k}=a.data,y=h.status==="closed",x=C=>k.filter(R=>(R.reply_id??null)===C),w=()=>void m.run(async()=>{let C=l.trim();if(!C)return{error:{key:"err.replyEmpty"}};if(C.length>tr)return{error:{key:"err.replyTooLong"}};let R=await M(`/feedback/${encodeURIComponent(h.id)}/replies`,{method:"POST",body:{content:C},timeoutMs:6e4});return R.ok?(c(""),s(U=>U+1),{success:{key:"fb.replySent"}}):ue(R)});return r(N,{children:[g,r(G,{icon:"message",title:h.title||e("fb.untitled"),actions:r(Ms,{status:h.status}),desc:`#${String(h.id).slice(0,8)} \xB7 ${Je(h.created_at,n)}`,children:[r("div",{class:"fx-thread fx-block",children:[r(Rs,{who:"user",when:h.created_at,text:h.description||"",files:x(null),onZoom:f}),v.map((C,R)=>r(Rs,{who:C.author_role==="user"?"user":"admin",when:C.created_at,text:C.content||"",files:C.id?x(C.id):[],onZoom:f},C.id??R))]}),y?r(ae,{children:r($,{children:e("fb.closedNote")})}):r(ae,{class:"fx-form",children:[r("textarea",{class:"fx-input fx-textarea",rows:3,value:l,maxLength:tr,placeholder:e("fb.replyPlaceholder"),"aria-label":e("fb.replyPlaceholder"),onInput:C=>{c(C.currentTarget.value),m.success&&m.clear()}}),r("div",{class:"fx-inline",children:[r("span",{class:"fx-grow"}),r(P,{variant:"primary",pending:m.pending,onClick:w,children:e("fb.replySend")})]}),r(B,{a:m})]})]}),u&&r("div",{class:"fx-lightbox",role:"dialog","aria-label":e("fb.imagePreview"),onClick:()=>f(null),children:r("img",{src:u,alt:""})})]})}function Rs(t){let{t:e,locale:n}=D();return r("div",{class:`fx-bubble fx-bubble--${t.who}`,children:[r("div",{class:"fx-bubble-meta",children:[t.who==="user"?e("fb.you"):e("fb.support")," \xB7 ",Je(t.when,n)]}),r("div",{class:"fx-bubble-text",children:t.text}),t.files.length>0&&r("div",{class:"fx-thumbs",children:t.files.map((a,i)=>{let o=a.mime_type||"";if(o.startsWith("image/")&&a.data_base64){let s=`data:${o};base64,${a.data_base64}`;return r("button",{type:"button",class:"fx-thumb",onClick:()=>t.onZoom(s),"aria-label":e("fb.imagePreview"),children:r("img",{src:s,alt:a.filename||""})},a.id??i)}return r("span",{class:"fx-tag",children:[r(E,{name:"card",size:11})," ",a.filename||e("fb.attachment")]},a.id??i)})})]})}var Ds=[{id:"monthly",field:"priceMonthly",discount:"recurringPriceMonthly"},{id:"quarterly",field:"priceQuarterly",discount:"recurringPriceQuarterly"},{id:"yearly",field:"priceYearly",discount:"recurringPriceYearly"}];function Ls(t,e){let n=Ds.find(s=>s.id===e),a=Z(t.priceMonthly)??0,i=(Z(t[n.field])??0)||(e==="quarterly"?Math.round(a*300)/100:0),o=Z(t[n.discount])??0;return o>0&&o<i?o:i}function ka(t,e,n){let a=re(t,n),i=String(e||"CNY").toUpperCase();return i==="CNY"?`\xA5${a}`:i==="USD"?`$${a}`:`${a} ${i}`}async function rp(){let[t,e,n]=await Promise.all([M("/membership/my"),M("/credits/balance"),M("/features")]);return!t.ok&&wt(t)?t:!e.ok&&wt(e)?e:{ok:!0,status:200,data:{membership:t.ok?t.data?.membership??null:null,membershipFailed:!t.ok,balance:e.ok?Z(e.data?.balance):null,balanceFailed:!e.ok,features:n.ok&&n.data&&typeof n.data=="object"?n.data:{}}}}async function wa(t,e){let[n,a]=await Promise.all([rp(),M(t)]);return n.ok?a.ok?{ok:!0,status:a.status,data:{status:n.data,list:e(a.data)}}:a:n}var _a=t=>(Array.isArray(t)?t:[]).filter(e=>!!e&&typeof e=="object"&&e.isActive!==!1),ap=15*6e4;function Sa(t){let e=W(0),n=W(0),a=W(t);return a.current=t,X(()=>{let i=()=>{let o=Date.now();o>e.current||document.visibilityState==="hidden"||o-n.current<2e3||(n.current=o,a.current?.())};return window.addEventListener("focus",i),document.addEventListener("visibilitychange",i),()=>{window.removeEventListener("focus",i),document.removeEventListener("visibilitychange",i)}},[]),()=>{e.current=Date.now()+ap}}function zs(t){let e=t.membership;return e&&(e.status===void 0||e.status==="active")?e:null}function Aa(t){let{t:e,locale:n}=D(),a=t.status,i=zs(a),o=rn(i?.tier),s=o==="Free";return r("section",{class:"fx-shop-strip","aria-label":e("store.status"),children:[r("div",{class:"fx-shop-stat",children:[r("small",{children:e("store.tier")}),a.membershipFailed?r("b",{class:"is-empty",children:"\u2014"}):r("b",{"data-testid":"shop-tier",children:[s?e("member.freeName"):i?.plan?.name||o,!s&&r("i",{children:i?.expiresAt?e("member.expires",{date:Vn(i.expiresAt,n)}):e("member.noExpiry")})]})]}),r("div",{class:"fx-shop-stat",children:[r("small",{children:e("store.balance")}),r("b",{class:a.balance===null?"is-empty":"","data-testid":"shop-balance",children:a.balance===null?"\u2014":re(a.balance,n)})]}),(a.membershipFailed||a.balanceFailed)&&r("button",{type:"button",class:"fx-link",onClick:t.onRetry,children:e("common.retry")}),r("span",{class:"fx-grow"}),t.children]})}function Ca(t){return r("section",{class:"fx-shop-section",children:[r("div",{class:"fx-shop-head",children:[r("div",{children:[r("h2",{children:t.title}),t.desc&&r("p",{children:t.desc})]}),t.right]}),t.children]})}function Ta(t){let e=O(),[n,a]=S(null),i=(o,s,l,c)=>{a(o),e.run(async()=>{if(!await Ut(s,l,c))return{error:{key:"err.openFailed"}};t()})};return{a:e,payingId:e.pending?n:null,open:i}}function Pa(t){return r(P,{variant:"ghost",pending:t.pending,disabled:t.disabled,onClick:t.onClick,children:[t.label,r(E,{name:"external",size:12})]})}function Ea(t){return r("div",{class:"fx-shop-empty",children:t.children})}function Ns(){let{t,locale:e}=D(),n=ve(()=>wa("/payment/offerings",g=>_a(g?.membershipPlans))),a=Sa(n.state==="ready"?n.reload:null),i=Ta(a),[o,s]=S("monthly");if(n.state==="loading")return r(he,{panels:2,rows:2});if(n.state==="signedOut")return r(ye,{});if(n.state==="error")return r(be,{error:n.error,onRetry:n.retry});let{status:l,list:c}=n.data,u=l.features.payment!==!1,f=Ds.filter(g=>c.some(h=>Ls(h,g.id)>0)),m=f.some(g=>g.id===o)?o:f[0]?.id??"monthly",d=zs(l)?.tier?.toLowerCase()??null;return r(N,{children:[r(Aa,{status:l,onRetry:n.reload}),r(Ca,{title:t("store.choosePlan"),desc:t(u?"store.payHint":"store.payOff"),right:f.length>1?r(qe,{value:m,label:t("store.period"),onChange:s,options:f.map(g=>({value:g.id,label:t(`store.period.${g.id}`)}))}):void 0,children:[c.length===0?r(Ea,{children:t("store.noPlans")}):r("div",{class:"fx-shop-tiers",children:c.map(g=>{let h=Ls(g,m),v=!!d&&!l.membershipFailed&&g.tier?.toLowerCase()===d;return r("article",{class:"fx-shop-tier","data-tier":g.tier,children:[r("h3",{children:[g.name||rn(g.tier),v&&r("span",{class:"fx-shop-current",children:[r(E,{name:"check",size:12}),t("store.currentTier")]})]}),r("div",{class:"fx-shop-price",children:h>0?r(N,{children:[ka(h,g.currency,e),r("small",{children:t(`store.per.${m}`)})]}):"\u2014"}),r("p",{children:g.description}),u&&h>0&&r(Pa,{label:t(v?"member.renew":"store.pay"),pending:i.payingId===g.id,disabled:i.a.pending,onClick:()=>i.open(g.id,"membership",g.id,m)})]},g.id)})}),r(B,{a:i.a})]})]})}function Os(){let{t,locale:e}=D(),n=ve(()=>wa("/payment/offerings",c=>_a(c?.packages))),a=Sa(n.state==="ready"?n.reload:null),i=Ta(a);if(n.state==="loading")return r(he,{panels:2,rows:2});if(n.state==="signedOut")return r(ye,{});if(n.state==="error")return r(be,{error:n.error,onRetry:n.retry});let{status:o,list:s}=n.data,l=o.features.payment!==!1;return r(N,{children:[r(Aa,{status:o,onRetry:n.reload}),r(Ca,{title:t("store.packs"),desc:t(l?"store.packsHint":"store.payOff"),children:[s.length===0?r(Ea,{children:t("store.noPacks")}):r("div",{class:"fx-shop-grid",children:s.map(c=>{let u=Z(c.price)??0;return r(Bs,{icon:"coins",kind:t("store.kind.pack"),name:`${c.name||""} \xB7 ${t("store.nPoints",{n:re(c.credits,e)})}`,desc:c.description,meta:t("store.instant"),children:l&&u>0&&r(Pa,{label:t("store.payPrice",{price:ka(u,c.currency,e)}),pending:i.payingId===c.id,disabled:i.a.pending,onClick:()=>i.open(c.id,"credits")})},c.id)})}),r(B,{a:i.a})]})]})}function Bs(t){return r("article",{class:"fx-shop-card",children:[r("div",{class:"fx-shop-visual","aria-hidden":"true",children:t.emoji?r("span",{class:"fx-shop-emoji",children:t.emoji}):r(E,{name:t.icon,size:18})}),r("div",{class:"fx-shop-body",children:[r("span",{class:"fx-shop-kind",children:t.kind}),r("strong",{children:t.name}),t.desc&&r("p",{children:t.desc}),r("div",{class:"fx-shop-foot",children:[r("span",{class:"fx-shop-meta",children:t.meta}),r("span",{class:"fx-shop-acts",children:t.children})]}),t.below]})]})}var ip={reset_card:"store.kind.card",api_quota_key:"store.kind.code"};function op(t){let{t:e,locale:n}=D(),{p:a}=t,i=O(),[o,s]=S(null),[l,c]=S(!1),u=Z(a.pricePoints)??0,f=Z(a.priceRmb)??0,m=typeof a.availableKeys=="number"&&a.availableKeys<=0,d=u>0&&t.balance!==null&&t.balance<u,g=()=>void i.run(async()=>{let v=await M("/shop/purchase",{method:"POST",body:{productId:a.id,payMethod:"points"},timeoutMs:3e4});return v.ok?(s(typeof v.data?.key=="string"&&v.data.key?v.data.key:null),t.onRedeemed(),{success:{key:"store.redeemed"}}):v.status===0?(c(!0),{error:{key:"store.uncertain"}}):ue(v)}),h=m?e("store.soldOut"):d?e("err.insufficientPoints"):typeof a.availableKeys=="number"?e("store.left",{n:a.availableKeys}):e("store.toBackpack");return r(Bs,{icon:a.type==="api_quota_key"?"key":"gift",emoji:a.icon,kind:e(ip[a.type||""]??"store.kind.item"),name:a.name||"",desc:a.description,meta:h,below:r(N,{children:[r(B,{a:i}),o&&r("div",{class:"fx-shop-key",children:[r("code",{children:o}),r(Ye,{text:o,label:e("backpack.copyKey")})]})]}),children:[u>0&&r(nt,{variant:"primary",pending:i.pending,disabled:m||d||l,label:e("store.redeem",{n:re(u,n)}),confirmLabel:e("store.redeemConfirm",{n:re(u,n)}),onConfirm:g}),t.payment&&f>0&&r(Pa,{label:ka(f,a.currency,n),pending:t.paying,disabled:t.payBusy||m,onClick:t.onPay})]})}function Fs(){let{t,goTo:e}=D(),n=ve(()=>wa("/shop/products",u=>_a(u))),a=Sa(n.state==="ready"?n.reload:null),i=Ta(a);if(n.state==="loading")return r(he,{panels:2,rows:2});if(n.state==="signedOut")return r(ye,{});if(n.state==="error")return r(be,{error:n.error,onRetry:n.retry});let{status:o,list:s}=n.data,l=o.features.payment!==!1,c=o.features.shop!==!1;return r(N,{children:[r(Aa,{status:o,onRetry:n.reload,children:e&&r(P,{onClick:()=>e("backpack"),children:t("store.openBackpack")})}),r(Ca,{title:t("store.redeemTitle"),desc:t("store.redeemHint"),children:[!c||s.length===0?r(Ea,{children:t(c?"store.noItems":"store.itemsOff")}):r("div",{class:"fx-shop-grid",children:s.map(u=>r(op,{p:u,balance:o.balance,payment:l,paying:i.payingId===u.id,payBusy:i.a.pending,onPay:()=>i.open(u.id,"storefront"),onRedeemed:n.reload},u.id))}),r(B,{a:i.a})]})]})}var sp="forsion-extend",$s=[{id:"account",titleKey:"page.account",Component:Ko},{id:"profile",titleKey:"page.profile",Component:fs},{id:"quota",titleKey:"page.quota",Component:gs},{id:"backpack",titleKey:"page.backpack",Component:hs},{id:"submission",titleKey:"page.submission",Component:Es},{id:"security",titleKey:"page.security",Component:ys},{id:"usage",titleKey:"page.usage",Component:As},{id:"feedback",titleKey:"page.feedback",Component:Is}],Us=[{id:"membership",titleKey:"store.membership",descKey:"store.membership.desc",icon:"crown",Component:Ns},{id:"points",titleKey:"store.points",descKey:"store.points.desc",icon:"coins",Component:Os},{id:"items",titleKey:"store.items",descKey:"store.items.desc",icon:"package",Component:Fs}],lp=t=>`forsion/fx:${sp}:${t}`;function Hs(t){let{ctx:e,page:n}=t,[a,i]=S(()=>Ke(e.getLocale?.()));X(()=>{i(Ke(e.getLocale?.()));let l=e.subscribeLocale?.(c=>i(Ke(c)));return()=>{typeof l=="function"&&l()}},[e]);let o=Ve(()=>{let l=e.app?.openSettings;return{ctx:e,locale:a,t:Hn(a),goTo:typeof l=="function"?c=>l.call(e.app,lp(c)):null}},[e,a]),s=n.Component;return r(ea.Provider,{value:o,children:r("div",{class:"fx-acct","data-fx-page":n.id,lang:a==="zh"?"zh-CN":"en",children:[r("style",{children:yo}),r(s,{})]})})}function qs(t,e=window){let n=e?.tangu;if(!t||!n?.cloudFetch||!n.cloudInvoke||n.unitPage||typeof t.registerStoreView!="function")return 0;let a=i=>()=>Un(Ke(t.getLocale?.()),i);for(let i of Us)t.registerStoreView({id:i.id,title:a(i.titleKey),description:a(i.descKey),group:a("store.group"),icon:i.icon,mount(o){return ut(r(Hs,{ctx:t,page:i}),o),()=>{ut(null,o)}}});return Us.length}function Ws(t,e=window){let n=e?.tangu;if(!t||!n?.cloudFetch||!n.cloudInvoke||n.unitPage||typeof t.registerSettingsView!="function")return 0;for(let a of $s)t.registerSettingsView({id:a.id,category:"forsion",title:()=>Un(Ke(t.getLocale?.()),a.titleKey),mount(i){return ut(r(Hs,{ctx:t,page:a}),i),()=>{ut(null,i)}}});return $s.length}var js;if(typeof ctx<"u"){Ws(ctx),qs(ctx);let t=Ao(ctx);t&&(js=()=>t.dispose())}return _l(cp);})();
618
+ `;var Rn=e=>typeof e=="string"?e:"";function Bu(e){if(!e||typeof e!="object")return null;let t=e,n=typeof t.id=="string"?t.id.trim():typeof t.id=="number"&&Number.isFinite(t.id)?String(t.id):"",r=Rn(t.titleZh),a=Rn(t.bodyZh);return!n||!r.trim()&&!a.trim()?null:{id:n,titleZh:r,titleEn:Rn(t.titleEn).trim()?Rn(t.titleEn):null,bodyZh:a,bodyEn:Rn(t.bodyEn).trim()?Rn(t.bodyEn):null,format:t.format==="html"?"html":"markdown",publishedAt:Rn(t.publishedAt)||null}}function Uu(e,t){return t==="en"&&e.bodyEn?{lang:"en",title:e.titleEn??e.titleZh,body:e.bodyEn}:{lang:"zh",title:e.titleZh,body:e.bodyZh}}var qu=new la({gfm:!0,breaks:!0}),Hu=["script","iframe","frame","frameset","object","embed","applet","portal","form","input","textarea","select","option","button","link","meta","base","noscript"],Vu=/^(?:https?:|mailto:|#)/i;function Vs(e){return Jr.sanitize(e,{FORCE_BODY:!0,RETURN_DOM_FRAGMENT:!0,FORBID_TAGS:Hu,ALLOWED_URI_REGEXP:Vu})}function Wu(e,t){let n=t==="markdown"?qu.parse(e,{async:!1}):e;return Vs(n)}var ur=null;function ju(){if(ur===null)try{let e=Vs('<p onclick="1"><a href="javascript:void 0">a</a></p><script>1<\/script><iframe></iframe>');ur=Jr.isSupported&&!e.querySelector("script, iframe, [onclick], a[href]")}catch{ur=!1}return ur}function Gu(e){try{let t=new URL(String(e??"").trim());return t.protocol==="http:"||t.protocol==="https:"?t.href:null}catch{return null}}var Xu="http://www.w3.org/1999/xlink";function fr(e){let t=e.target,n=t&&typeof t.closest=="function"?t.closest("a, area"):null;if(!n||(e.preventDefault(),e.type!=="click"))return;let r=Gu(n.getAttribute("href")??n.getAttributeNS(Xu,"href"));if(r)try{ee().openExternal?.(r)?.catch(()=>{})}catch{}}function Hs(e){return e.shadowRoot??e.attachShadow({mode:"open"})}function Ku(e){let{ctx:t,ann:n}=e,[r,a]=T(()=>Qe(t.getLocale?.()));X(()=>{a(Qe(t.getLocale?.()));let u=t.subscribeLocale?.(h=>a(Qe(h)));return()=>{typeof u=="function"&&u()}},[t]);let i=At(()=>pr(r),[r]),s=Uu(n,r),l=J(null),c=J(null),d=J(null),f=J(null),p=J(e.onClose);return p.current=e.onClose,X(()=>{let u=document.activeElement instanceof HTMLElement?document.activeElement:null;l.current?.focus();let h=y=>{if(y.key==="Escape"){y.preventDefault(),y.stopPropagation(),p.current();return}if(y.key!=="Tab")return;let _=c.current,C=d.current,x=l.current;if(!_||!C||!x)return;let k=document.activeElement;if(!k||!x.contains(k)){y.preventDefault(),(y.shiftKey?C:_).focus();return}y.shiftKey&&(k===_||k===x)?(y.preventDefault(),C.focus()):!y.shiftKey&&k===C&&(y.preventDefault(),_.focus())},m=y=>{let _=l.current;_&&y.target instanceof Node&&!_.contains(y.target)&&_.focus()};return window.addEventListener("keydown",h,!0),document.addEventListener("focusin",m,!0),()=>{window.removeEventListener("keydown",h,!0),document.removeEventListener("focusin",m,!0),u?.isConnected&&u.focus()}},[]),X(()=>{let u=f.current;if(!u)return;let h=Hs(u);return h.addEventListener("click",fr),h.addEventListener("auxclick",fr),()=>{h.removeEventListener("click",fr),h.removeEventListener("auxclick",fr)}},[]),X(()=>{let u=f.current;if(!u)return;let h=document.createElement("style");h.textContent=qs;let m=document.createElement("div");m.className="doc",m.appendChild(Wu(s.body,n.format)),Hs(u).replaceChildren(h,m)},[s.body,n.format]),o("div",{class:"fx-ann-backdrop",children:[o("style",{children:Us}),o("section",{ref:l,class:"fx-ann",role:"dialog","aria-modal":"true","aria-labelledby":"fx-ann-title","aria-describedby":"fx-ann-body",tabIndex:-1,lang:s.lang==="zh"?"zh-CN":"en","data-announcement-id":n.id,children:[o("button",{ref:c,type:"button",class:"fx-ann-close","aria-label":i("ann.close"),onClick:()=>p.current(),children:o(W,{name:"x",size:16})}),o("div",{class:"fx-ann-eyebrow",children:i("ann.eyebrow")}),o("h2",{id:"fx-ann-title",class:"fx-ann-title",children:s.title}),o("div",{class:"fx-ann-body",children:o("div",{ref:f,id:"fx-ann-body",class:"fx-ann-doc"})}),o("div",{class:"fx-ann-footer",children:o("button",{ref:d,type:"button",class:"fx-ann-ok",onClick:()=>p.current(),children:i("ann.ok")})})]})]})}function Ju(e){try{return new URLSearchParams(e||"").has("window")}catch{return!1}}function Yu(e=document,t=12e3){let n=e.getElementById("tangu-splash");return n?.parentNode?new Promise(r=>{let a=()=>{i.disconnect(),clearTimeout(s),r()},i=new MutationObserver(()=>{n.isConnected||a()});i.observe(n.parentNode,{childList:!0});let s=setTimeout(a,t)}):Promise.resolve()}function Ws(e,t=window){let n=t?.tangu;if(!e||!n?.cloudFetch||n.unitPage||Ju(t.location?.search))return null;let r=0,a=!1,i=null,s=null,l=()=>{s?.done(),s=null},c=Promise.resolve(),d=(u,h)=>{let m=document.createElement("div");m.className="fx-ann-root",document.body.appendChild(m);let y=!1,_=C=>{y||(y=!0,i?.id===u.id&&(i=null),Be(null,m),m.remove(),h?.done(),C&&(c=H(`/announcements/${encodeURIComponent(u.id)}/seen`,{method:"POST"})))};i={id:u.id,finish:_},Be(o(Ku,{ctx:e,ann:u,onClose:()=>_(!0)}),m)},f=async()=>{let u=++r;await c;let h=await H("/announcements/pending");if(a||u!==r||!h.ok)return;let m=Bu(h.data?.announcement);if(!m||i||!ju()||(await Yu(),a||u!==r||i))return;let y=e.app?.queuePopup?.();if(y&&(l(),s=y,await y.ready,s===y&&(s=null),a||u!==r||i)){y.done();return}d(m,y)},p=n.onAuthChanged?.(u=>{i?.finish(!1),l(),u?.loggedIn?f():r++});return f(),{check:f,dispose(){a=!0,r++,typeof p=="function"&&p(),i?.finish(!1),l()}}}function js(e){return typeof e!="string"?{ok:!1,rule:"format"}:e.length<8?{ok:!1,rule:"min"}:e.length>64?{ok:!1,rule:"max"}:/\s/.test(e)?{ok:!1,rule:"space"}:/[a-z]/.test(e)?/[A-Z]/.test(e)?/[^A-Za-z0-9]/.test(e)?{ok:!0}:{ok:!1,rule:"special"}:{ok:!1,rule:"upper"}:{ok:!1,rule:"lower"}}function Gs(e){return{length:e.length>=8&&e.length<=64,lower:/[a-z]/.test(e),upper:/[A-Z]/.test(e),special:/[^A-Za-z0-9]/.test(e),space:e.length>0&&!/\s/.test(e)}}var Xs={\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E:"format","\u5BC6\u7801\u81F3\u5C11 8 \u4F4D":"min","\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D":"max",\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C:"space",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD:"lower",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD:"upper",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26:"special"};var Ks={no_reset_card:"err.noResetCard",invalid_type:"err.generic",invalid_count:"err.invalidCount",insufficient_points:"err.insufficientPoints",price_changed:"err.priceChanged",insufficient_main_quota:"err.insufficientMainQuota",background_unavailable:"err.backgroundUnavailable",invalid_percent:"err.generic",invalid_request:"err.generic",invalid_invite_code:"err.invalidInviteCode",already_used:"err.inviteAlreadyUsed",window_expired:"err.inviteWindowExpired",ITEM_NOT_FOUND:"backpack.unavailable",ITEM_NOT_ACTIVE:"backpack.unavailable",ITEM_NOT_USABLE:"backpack.notUsable",ITEM_EFFECT_UNAVAILABLE:"backpack.quotaUnavailable",FEATURE_DISABLED:"err.featureDisabled",INSUFFICIENT_POINTS:"err.insufficientPoints",OUT_OF_STOCK:"store.soldOut",LIMIT_REACHED:"store.limitReached",NOT_AVAILABLE:"store.unavailable",NOT_POINTS_PURCHASABLE:"store.unavailable",CAPTCHA_FAILED:"err.captcha",machine_username:"profile.blocked.machineUsername",publish_blocked:"profile.blocked.publishBlocked",invalid_settings:"profile.invalid"},Js={"Current password is incorrect":"err.currentPasswordWrong","Current and new password are required":"err.passwordRequired",\u9A8C\u8BC1\u7801\u65E0\u6548\u6216\u5DF2\u8FC7\u671F:"err.codeInvalid","Invalid or expired verification code":"err.codeInvalid",\u8D26\u53F7\u6216\u9A8C\u8BC1\u7801\u9519\u8BEF:"err.codeInvalid",\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801:"err.codeRequired","Email already in use":"err.emailInUse","Phone number already in use":"err.phoneInUse","Invalid email format":"err.emailInvalid","Email is required":"err.emailInvalid","Invalid phone number format":"err.phoneInvalid","Phone number is required":"err.phoneInvalid","Invalid phone number or email format":"err.targetInvalid","Please wait before requesting another code":"err.codeCooldown","Failed to send verification code":"err.codeSendFailed","Invalid target for account deletion":"err.deleteTargetInvalid","\u8EAB\u4EFD\u9A8C\u8BC1\u5931\u8D25\uFF0C\u65E0\u6CD5\u6CE8\u9500\u8D26\u6237":"err.deleteVerifyFailed",\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500:"err.adminCannotDelete",\u79EF\u5206\u4F59\u989D\u4E0D\u8DB3:"err.insufficientPoints","\u5151\u6362\u5F20\u6570\u9700\u4E3A 1-50 \u7684\u6574\u6570":"err.invalidCount",\u6CA1\u6709\u53EF\u7528\u7684\u91CD\u7F6E\u5361:"err.noResetCard","\u4E3B\u989D\u5EA6\u5DF2\u7528\u5B8C,\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6":"err.insufficientMainQuota",\u540E\u53F0\u989D\u5EA6\u6682\u4E0D\u53EF\u7528:"err.backgroundUnavailable",\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548:"err.invalidInviteCode","\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F":"err.inviteWindowExpired",\u4F60\u5DF2\u4F7F\u7528\u8FC7\u9080\u8BF7\u7801:"err.inviteAlreadyUsed","You have already used an invite code":"err.inviteAlreadyUsed","Cannot use your own invite code":"err.inviteOwnCode","Invite code is required":"err.inviteEmpty","code is required":"err.redeemEmpty","Redemption code not found":"err.redeemNotFound","Redemption code is not active":"err.redeemInactive","Redemption code has expired":"err.redeemExpired","Redemption code has reached maximum uses":"err.redeemUsedUp","You have already used this code the maximum number of times":"err.redeemUserLimit",avatar_too_large:"err.avatarTooLarge","description is required":"err.feedbackEmpty","description too long (max 10000 chars)":"err.feedbackTooLong","content is required":"err.replyEmpty","content too long (max 10000 chars)":"err.replyTooLong","Ticket not found":"err.ticketNotFound","Too many attachments (max 5)":"err.tooManyImages","Attachment type not allowed (image / json / text only)":"err.imageType","\u4EBA\u673A\u9A8C\u8BC1\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5":"err.captcha"},wa={format:"pw.rule.format",min:"pw.rule.min",max:"pw.rule.max",space:"pw.rule.space",lower:"pw.rule.lower",upper:"pw.rule.upper",special:"pw.rule.special"};function Zu(e){if(e.code&&Ks[e.code])return Ks[e.code];if(e.detail){if(Js[e.detail])return Js[e.detail];let t=Xs[e.detail];if(t)return wa[t];if(e.detail.startsWith("Attachment exceeds 5MB"))return"err.imageTooLarge"}return null}function dt(e){let t=Zu(e);return t?{key:t}:Mn(e)?{key:"err.signedOut"}:e.status===0?{key:"err.network"}:e.status===401?{key:"err.session"}:e.status===429?{key:"err.tooFrequent"}:e.detail?{raw:e.detail}:e.status>=500?{key:"err.server",vars:{status:e.status}}:{key:"err.generic"}}function Co(e){let t=e.trim();return t?/cancelled\.?$/i.test(t)?null:t==="A sign-in is already in progress."?{key:"err.loginInProgress"}:t.startsWith("\u767B\u5F55\u8D85\u65F6")?{key:"err.loginTimeout"}:t.startsWith("\u767B\u5F55\u7801\u5DF2\u8FC7\u671F")?{key:"err.loginCodeExpired"}:t.startsWith("\u65E0\u6CD5\u8FDE\u63A5")?{key:"err.network"}:t.startsWith("\u4E91\u7AEF\u4E0D\u652F\u6301 CLI \u767B\u5F55")?{key:"err.loginUnsupported"}:t.startsWith("\u8BF7\u5148\u586B\u5199 Forsion \u4E91\u7AEF\u5730\u5740")?{key:"err.noCloudUrl"}:t.startsWith("Account is no longer signed in")?{key:"err.accountGone"}:{raw:t}:{key:"err.generic"}}var za=ir(null);function K(){let e=ya(za);if(!e)throw new Error("forsion-extend: page rendered outside its host root");return e}var Pt=()=>K().t;function Ue(){let e=J(!0);return X(()=>(e.current=!0,()=>{e.current=!1}),[]),e}var Ys={pending:!1,error:null,success:null,captcha:!1};function re(){let e=Ue(),[t,n]=T(Ys),r=J(!1),a=Qt(async s=>{if(r.current)return;r.current=!0,n({pending:!0,error:null,success:null,captcha:!1});let l;try{l=await s()}catch(c){l={error:{raw:String(c?.message||c)}}}r.current=!1,e.current&&n({pending:!1,error:l?.error??null,success:l?.success??null,captcha:!!l?.captcha})},[]),i=Qt(()=>{r.current||n(Ys)},[]);return{...t,run:a,clear:i}}var Ae=e=>({error:dt(e),captcha:e.status===403&&e.code==="CAPTCHA_FAILED"});function Zs(){let[e,t]=T(0),n=J(null);X(()=>()=>{n.current&&clearInterval(n.current)},[]);let r=Qt((i=60)=>{n.current&&clearInterval(n.current),t(i),n.current=setInterval(()=>{t(s=>s<=1?(n.current&&clearInterval(n.current),n.current=null,0):s-1)},1e3)},[]),a=Qt(()=>{n.current&&clearInterval(n.current),n.current=null,t(0)},[]);return{left:e,start:r,stop:a}}function Re(e){let[t,n]=T({state:"loading"}),r=J(0),a=J(e);a.current=e;let i=Qt((c=!1)=>{let d=++r.current;c||n({state:"loading"}),(async()=>{let f;try{f=await a.current()}catch(p){f={ok:!1,status:0,code:null,detail:null,transport:String(p?.message||p)}}d===r.current&&(f.ok?n({state:"ready",data:f.data,gen:d}):Mn(f)?n({state:"signedOut"}):(f.status===401&&ee().authStatus?.().catch(()=>{}),n({state:"error",fail:f})))})()},[]);X(()=>{i();let c=ee().onAuthChanged?.(()=>i());return()=>{r.current++,c?.()}},[i]);let s=Qt(()=>i(),[i]),l=Qt(()=>i(!0),[i]);switch(t.state){case"ready":{let c=t.gen,d=f=>n(p=>p.state==="ready"&&p.gen===c?{...p,data:f(p.data)}:p);return{state:"ready",data:t.data,reload:l,update:d}}case"error":return{state:"error",error:dt(t.fail),retry:s};default:return t}}function mr(e){let t=String(e||"").trim();if(!t)return"";let n=t.startsWith("+")?4:3;return t.length<=n+4?`${t.slice(0,2)}***`:`${t.slice(0,n)}****${t.slice(-4)}`}function gr(e){let t=String(e||"").trim(),n=t.lastIndexOf("@");if(n<=0)return t?`${t.slice(0,1)}***`:"";let r=t.slice(0,n);return`${r.slice(0,r.length<=2?1:2)}***${t.slice(n)}`}function To(e){let t=String(e||"").trim().toLowerCase()||"free";return t.charAt(0).toUpperCase()+t.slice(1)}var Qu=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Qs(e,t){let n=String(e||"").trim(),r,a,i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(n);if(i)r=Number(i[2]),a=Number(i[3]);else{let s=new Date(n);if(!n||Number.isNaN(s.getTime()))return null;let l=new Intl.DateTimeFormat("en-US",{timeZone:"Asia/Shanghai",month:"numeric",day:"numeric"}).formatToParts(s);r=Number(l.find(c=>c.type==="month")?.value),a=Number(l.find(c=>c.type==="day")?.value)}return!(r>=1&&r<=12)||!(a>=1&&a<=31)?null:t==="zh"?`${r}\u6708${a}\u65E5`:`${Qu[r-1]} ${a}`}var _a=e=>e==="zh"?"zh-CN":"en-US";function el(e){if(e==null||e==="")return null;let t=new Date(typeof e=="string"&&/^\d+$/.test(e)?Number(e):e);return Number.isNaN(t.getTime())?null:t}function hr(e,t){let n=el(e);return n?new Intl.DateTimeFormat(_a(t),{year:"numeric",month:"short",day:"numeric"}).format(n):"\u2014"}function Ut(e,t){let n=el(e);return n?new Intl.DateTimeFormat(_a(t),{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(n):"\u2014"}function we(e,t){let n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?new Intl.NumberFormat(_a(t),{maximumFractionDigits:2}).format(n):"\u2014"}var Ln=(e=>(e[e.Border=-1]="Border",e[e.Data=0]="Data",e[e.Function=1]="Function",e[e.Position=2]="Position",e[e.Timing=3]="Timing",e[e.Alignment=4]="Alignment",e))(Ln||{}),ef=[0,1],nl=[1,0],ol=[2,3],rl=[3,2],tf={L:ef,M:nl,Q:ol,H:rl},nf=/^\d*$/,of=/^[A-Z0-9 $%*+./:-]*$/,Sa="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",Ea=1,Pa=40,tl=3,rf=3,br=40,af=10,al=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],il=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],Ca=class{constructor(t,n,r,a){if(this.version=t,this.ecc=n,t<Ea||t>Pa)throw new RangeError("Version value out of range");if(a<-1||a>7)throw new RangeError("Mask value out of range");this.size=t*4+17;let i=Array.from({length:this.size}).fill(!1);for(let l=0;l<this.size;l++)this.modules.push(i.slice()),this.types.push(i.map(()=>0));this.drawFunctionPatterns();let s=this.addEccAndInterleave(r);if(this.drawCodewords(s),a===-1){let l=1e9;for(let c=0;c<8;c++){this.applyMask(c),this.drawFormatBits(c);let d=this.getPenaltyScore();d<l&&(a=c,l=d),this.applyMask(c)}}this.mask=a,this.applyMask(a),this.drawFormatBits(a)}size;mask;modules=[];types=[];getModule(t,n){return t>=0&&t<this.size&&n>=0&&n<this.size&&this.modules[n][t]}drawFunctionPatterns(){for(let r=0;r<this.size;r++)this.setFunctionModule(6,r,r%2===0,Ln.Timing),this.setFunctionModule(r,6,r%2===0,Ln.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let t=this.getAlignmentPatternPositions(),n=t.length;for(let r=0;r<n;r++)for(let a=0;a<n;a++)r===0&&a===0||r===0&&a===n-1||r===n-1&&a===0||this.drawAlignmentPattern(t[r],t[a]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(t){let n=this.ecc[1]<<3|t,r=n;for(let i=0;i<10;i++)r=r<<1^(r>>>9)*1335;let a=(n<<10|r)^21522;for(let i=0;i<=5;i++)this.setFunctionModule(8,i,en(a,i));this.setFunctionModule(8,7,en(a,6)),this.setFunctionModule(8,8,en(a,7)),this.setFunctionModule(7,8,en(a,8));for(let i=9;i<15;i++)this.setFunctionModule(14-i,8,en(a,i));for(let i=0;i<8;i++)this.setFunctionModule(this.size-1-i,8,en(a,i));for(let i=8;i<15;i++)this.setFunctionModule(8,this.size-15+i,en(a,i));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let t=this.version;for(let r=0;r<12;r++)t=t<<1^(t>>>11)*7973;let n=this.version<<12|t;for(let r=0;r<18;r++){let a=en(n,r),i=this.size-11+r%3,s=Math.floor(r/3);this.setFunctionModule(i,s,a),this.setFunctionModule(s,i,a)}}drawFinderPattern(t,n){for(let r=-4;r<=4;r++)for(let a=-4;a<=4;a++){let i=Math.max(Math.abs(a),Math.abs(r)),s=t+a,l=n+r;s>=0&&s<this.size&&l>=0&&l<this.size&&this.setFunctionModule(s,l,i!==2&&i!==4,Ln.Position)}}drawAlignmentPattern(t,n){for(let r=-2;r<=2;r++)for(let a=-2;a<=2;a++)this.setFunctionModule(t+a,n+r,Math.max(Math.abs(a),Math.abs(r))!==1,Ln.Alignment)}setFunctionModule(t,n,r,a=Ln.Function){this.modules[n][t]=r,this.types[n][t]=a}addEccAndInterleave(t){let n=this.version,r=this.ecc;if(t.length!==vr(n,r))throw new RangeError("Invalid argument");let a=il[r[0]][n],i=al[r[0]][n],s=Math.floor(Ta(n)/8),l=a-s%a,c=Math.floor(s/a),d=[],f=gf(i);for(let u=0,h=0;u<a;u++){let m=t.slice(h,h+c-i+(u<l?0:1));h+=m.length;let y=hf(m,f);u<l&&m.push(0),d.push(m.concat(y))}let p=[];for(let u=0;u<d[0].length;u++)d.forEach((h,m)=>{(u!==c-i||m>=l)&&p.push(h[u])});return p}drawCodewords(t){if(t.length!==Math.floor(Ta(this.version)/8))throw new RangeError("Invalid argument");let n=0;for(let r=this.size-1;r>=1;r-=2){r===6&&(r=5);for(let a=0;a<this.size;a++)for(let i=0;i<2;i++){let s=r-i,c=(r+1&2)===0?this.size-1-a:a;!this.types[c][s]&&n<t.length*8&&(this.modules[c][s]=en(t[n>>>3],7-(n&7)),n++)}}}applyMask(t){if(t<0||t>7)throw new RangeError("Mask value out of range");for(let n=0;n<this.size;n++)for(let r=0;r<this.size;r++){let a;switch(t){case 0:a=(r+n)%2===0;break;case 1:a=n%2===0;break;case 2:a=r%3===0;break;case 3:a=(r+n)%3===0;break;case 4:a=(Math.floor(r/3)+Math.floor(n/2))%2===0;break;case 5:a=r*n%2+r*n%3===0;break;case 6:a=(r*n%2+r*n%3)%2===0;break;case 7:a=((r+n)%2+r*n%3)%2===0;break;default:throw new Error("Unreachable")}!this.types[n][r]&&a&&(this.modules[n][r]=!this.modules[n][r])}}getPenaltyScore(){let t=0;for(let i=0;i<this.size;i++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let d=0;d<this.size;d++)this.modules[i][d]===s?(l++,l===5?t+=tl:l>5&&t++):(this.finderPenaltyAddHistory(l,c),s||(t+=this.finderPenaltyCountPatterns(c)*br),s=this.modules[i][d],l=1);t+=this.finderPenaltyTerminateAndCount(s,l,c)*br}for(let i=0;i<this.size;i++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let d=0;d<this.size;d++)this.modules[d][i]===s?(l++,l===5?t+=tl:l>5&&t++):(this.finderPenaltyAddHistory(l,c),s||(t+=this.finderPenaltyCountPatterns(c)*br),s=this.modules[d][i],l=1);t+=this.finderPenaltyTerminateAndCount(s,l,c)*br}for(let i=0;i<this.size-1;i++)for(let s=0;s<this.size-1;s++){let l=this.modules[i][s];l===this.modules[i][s+1]&&l===this.modules[i+1][s]&&l===this.modules[i+1][s+1]&&(t+=rf)}let n=0;for(let i of this.modules)n=i.reduce((s,l)=>s+(l?1:0),n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return t+=a*af,t}getAlignmentPatternPositions(){if(this.version===1)return[];{let t=Math.floor(this.version/7)+2,n=this.version===32?26:Math.ceil((this.version*4+4)/(t*2-2))*2,r=[6];for(let a=this.size-7;r.length<t;a-=n)r.splice(1,0,a);return r}}finderPenaltyCountPatterns(t){let n=t[1],r=n>0&&t[2]===n&&t[3]===n*3&&t[4]===n&&t[5]===n;return(r&&t[0]>=n*4&&t[6]>=n?1:0)+(r&&t[6]>=n*4&&t[0]>=n?1:0)}finderPenaltyTerminateAndCount(t,n,r){return t&&(this.finderPenaltyAddHistory(n,r),n=0),n+=this.size,this.finderPenaltyAddHistory(n,r),this.finderPenaltyCountPatterns(r)}finderPenaltyAddHistory(t,n){n[0]===0&&(t+=this.size),n.pop(),n.unshift(t)}};function tn(e,t,n){if(t<0||t>31||e>>>t)throw new RangeError("Value out of range");for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function en(e,t){return(e>>>t&1)!==0}var Ao=class{constructor(t,n,r){if(this.mode=t,this.numChars=n,this.bitData=r,n<0)throw new RangeError("Invalid argument");this.bitData=r.slice()}getData(){return this.bitData.slice()}},sf=[1,10,12,14],lf=[2,9,11,13],cf=[4,8,16,16];function sl(e,t){return e[Math.floor((t+7)/17)+1]}function ll(e){let t=[];for(let n of e)tn(n,8,t);return new Ao(cf,e.length,t)}function df(e){if(!cl(e))throw new RangeError("String contains non-numeric characters");let t=[];for(let n=0;n<e.length;){let r=Math.min(e.length-n,3);tn(Number.parseInt(e.substring(n,n+r),10),r*3+1,t),n+=r}return new Ao(sf,e.length,t)}function pf(e){if(!dl(e))throw new RangeError("String contains unencodable characters in alphanumeric mode");let t=[],n;for(n=0;n+2<=e.length;n+=2){let r=Sa.indexOf(e.charAt(n))*45;r+=Sa.indexOf(e.charAt(n+1)),tn(r,11,t)}return n<e.length&&tn(Sa.indexOf(e.charAt(n)),6,t),new Ao(lf,e.length,t)}function uf(e){return e===""?[]:cl(e)?[df(e)]:dl(e)?[pf(e)]:[ll(mf(e))]}function cl(e){return nf.test(e)}function dl(e){return of.test(e)}function ff(e,t){let n=0;for(let r of e){let a=sl(r.mode,t);if(r.numChars>=1<<a)return Number.POSITIVE_INFINITY;n+=4+a+r.bitData.length}return n}function mf(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)!=="%"?t.push(e.charCodeAt(n)):(t.push(Number.parseInt(e.substring(n+1,n+3),16)),n+=2);return t}function Ta(e){if(e<Ea||e>Pa)throw new RangeError("Version number out of range");let t=(16*e+128)*e+64;if(e>=2){let n=Math.floor(e/7)+2;t-=(25*n-10)*n-55,e>=7&&(t-=36)}return t}function vr(e,t){return Math.floor(Ta(e)/8)-al[t[0]][e]*il[t[0]][e]}function gf(e){if(e<1||e>255)throw new RangeError("Degree out of range");let t=[];for(let r=0;r<e-1;r++)t.push(0);t.push(1);let n=1;for(let r=0;r<e;r++){for(let a=0;a<t.length;a++)t[a]=Aa(t[a],n),a+1<t.length&&(t[a]^=t[a+1]);n=Aa(n,2)}return t}function hf(e,t){let n=t.map(r=>0);for(let r of e){let a=r^n.shift();n.push(0),t.forEach((i,s)=>n[s]^=Aa(i,a))}return n}function Aa(e,t){if(e>>>8||t>>>8)throw new RangeError("Byte out of range");let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return n}function bf(e,t,n=1,r=40,a=-1,i=!0){if(!(Ea<=n&&n<=r&&r<=Pa)||a<-1||a>7)throw new RangeError("Invalid value");let s,l;for(s=n;;s++){let p=vr(s,t)*8,u=ff(e,s);if(u<=p){l=u;break}if(s>=r)throw new RangeError("Data too long")}for(let p of[nl,ol,rl])i&&l<=vr(s,p)*8&&(t=p);let c=[];for(let p of e){tn(p.mode[0],4,c),tn(p.numChars,sl(p.mode,s),c);for(let u of p.getData())c.push(u)}let d=vr(s,t)*8;tn(0,Math.min(4,d-c.length),c),tn(0,(8-c.length%8)%8,c);for(let p=236;c.length<d;p^=253)tn(p,8,c);let f=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((p,u)=>f[u>>>3]|=p<<7-(u&7)),new Ca(s,t,f,a)}function pl(e,t){let{ecc:n="L",boostEcc:r=!1,minVersion:a=1,maxVersion:i=40,maskPattern:s=-1,border:l=1}=t||{},c=typeof e=="string"?uf(e):Array.isArray(e)?[ll(e)]:void 0;if(!c)throw new Error(`uqr only supports encoding string and binary data, but got: ${typeof e}`);let d=bf(c,tf[n],a,i,s,r),f=vf({version:d.version,maskPattern:d.mask,size:d.size,data:d.modules,types:d.types},l);return t?.invert&&(f.data=f.data.map(p=>p.map(u=>!u))),t?.onEncoded?.(f),f}function vf(e,t=1){if(!t)return e;let{size:n}=e,r=n+t*2;e.size=r,e.data.forEach(i=>{for(let s=0;s<t;s++)i.unshift(!1),i.push(!1)});for(let i=0;i<t;i++)e.data.unshift(Array.from({length:r},s=>!1)),e.data.push(Array.from({length:r},s=>!1));let a=Ln.Border;e.types.forEach(i=>{for(let s=0;s<t;s++)i.unshift(a),i.push(a)});for(let i=0;i<t;i++)e.types.unshift(Array.from({length:r},s=>a)),e.types.push(Array.from({length:r},s=>a));return e}function fe(e){return o("section",{class:`settings-panel fx-panel${e.danger?" fx-panel--danger":""}`,"aria-label":e.label,children:[o("div",{class:`settings-panel-head${e.actions?" settings-panel-head--actions":""}`,children:[e.icon&&o("span",{class:"settings-panel-icon",children:o(W,{name:e.icon,size:16})}),o("div",{children:[o("strong",{children:e.title}),e.desc&&o("p",{children:e.desc})]}),e.actions&&o("div",{class:"settings-panel-actions settings-panel-actions--wide",children:e.actions})]}),e.children]})}function Le(e){return o("div",{class:`settings-control-row settings-setting-row fx-row fx-block${e.class?` ${e.class}`:""}`,children:[o("div",{class:"settings-control-copy",children:o("span",{children:[o("strong",{children:e.label}),e.desc&&o("small",{children:e.desc})]})}),e.children!==void 0&&e.children!==null&&o("div",{class:"settings-row-control fx-row-control",children:e.children})]})}function ze(e){return o("div",{class:`fx-sub${e.class?` ${e.class}`:""}`,children:e.children})}function Mt(e){return o("button",{type:"button",role:"switch","aria-checked":e.checked,"aria-label":e.label,class:`settings-switch${e.checked?" active":""}`,disabled:e.disabled,onClick:()=>e.onChange(!e.checked),children:o("span",{})})}function U(e){let t=e.variant??"ghost",n=t==="danger-solid"?"btn sm danger fx-danger-solid":`btn sm ${t}`;return o("button",{type:e.submit?"submit":"button",class:n,disabled:e.disabled||e.pending,"aria-busy":e.pending||void 0,"aria-label":e.label,title:e.title,"data-armed":e.armed?"true":void 0,onClick:e.onClick,children:[e.pending&&o(Yn,{}),e.children]})}var yf=5e3;function nn(e){let[t,n]=T(!1),r=J(null),a=()=>{r.current&&clearTimeout(r.current),r.current=null,n(!1)};X(()=>()=>{r.current&&clearTimeout(r.current)},[]),X(()=>{(e.pending||e.disabled)&&a()},[e.pending,e.disabled]);let i=()=>{if(!t){n(!0),r.current&&clearTimeout(r.current),r.current=setTimeout(()=>{r.current=null,n(!1)},yf);return}a(),e.onConfirm()},s=e.variant??"ghost";return o(U,{variant:t?s==="danger"||s==="danger-solid"?"danger-solid":"primary":s,armed:t,pending:e.pending,disabled:e.disabled,onClick:i,children:t?e.confirmLabel:e.label})}function ae(e){let t=Pt(),{a:n}=e;return n.error?o("div",{class:"fx-msg is-error",role:"alert",children:[o("span",{children:bt(n.error,t)}),n.captcha&&o("button",{type:"button",class:"fx-link",onClick:()=>void In(e.captchaSection??"security"),children:[t("common.openInBrowser")," ",o(W,{name:"external",size:12})]})]}):n.success?o("div",{class:"fx-msg is-ok",role:"status",children:bt(n.success,t)}):null}function ie(e){return o("p",{class:`fx-note${e.tone?` is-${e.tone}`:""}`,children:e.children})}function rt(e){return o("div",{class:"settings-empty-row fx-block",children:e.children})}function Eo(e){let t=Pt(),n=e.display;return o("div",{class:`fx-quota${n.low?" is-low":""}`,children:[o("div",{class:"fx-quota-top",children:[o("span",{class:"fx-quota-label",children:e.label}),o("span",{class:"fx-quota-value",children:n.unlimited?t("common.unlimited"):n.text})]}),o("div",{class:"fx-bar",role:"progressbar","aria-label":e.label,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n.pct,"aria-valuetext":n.unlimited?t("common.unlimited"):n.text,children:o("span",{style:{width:`${n.pct}%`}})}),e.note&&o("div",{class:"fx-quota-note",children:e.note})]})}function It(e){return o("div",{class:"seg fx-seg",role:"radiogroup","aria-label":e.label,children:e.options.map(t=>o("button",{type:"button",role:"radio","aria-checked":t.value===e.value,class:t.value===e.value?"active":"",onClick:()=>{t.value!==e.value&&e.onChange(t.value)},children:t.label}))})}async function xf(e){try{return await navigator.clipboard.writeText(e),!0}catch{try{let t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let n=document.execCommand("copy");return t.remove(),n}catch{return!1}}}function qt(e){let t=Pt(),[n,r]=T("idle"),a=J(null);X(()=>()=>{a.current&&clearTimeout(a.current)},[]);let i=async()=>{let s=await xf(e.text);r(s?"copied":"failed"),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>r("idle"),1800)};return o(U,{disabled:e.disabled||!e.text,onClick:()=>void i(),children:[o(W,{name:n==="copied"?"check":"copy",size:12}),n==="copied"?t("common.copied"):n==="failed"?t("common.copyFailed"):e.label]})}function kf(e){let t=At(()=>{try{return pl(e.value,{ecc:"M",border:2})}catch{return null}},[e.value]);if(!t)return null;let n="";t.data.forEach((a,i)=>a.forEach((s,l)=>{s&&(n+=`M${l} ${i}h1v1h-1z`)}));let r=e.size??148;return o("svg",{class:"fx-qr",width:r,height:r,viewBox:`0 0 ${t.size} ${t.size}`,"shape-rendering":"crispEdges",role:"img","aria-label":e.label,children:[o("rect",{width:t.size,height:t.size,fill:"#fff"}),o("path",{d:n,fill:"#000"})]})}function Ma(e){let t=Pt(),{device:n}=e;return o("div",{class:"fx-device",children:[o(kf,{value:n.url,label:t("signin.qrLabel")}),o("div",{class:"fx-device-copy",children:[o("p",{children:t("signin.deviceHint")}),n.userCode&&o("div",{class:"fx-device-code",children:[o("span",{children:t("signin.code")}),o("code",{children:n.userCode})]}),o("div",{class:"fx-inline",children:[o("button",{type:"button",class:"fx-link",onClick:()=>window.open(n.url,"_blank"),children:[t("signin.openLink")," ",o(W,{name:"external",size:12})]}),o(qt,{text:n.url,label:t("signin.copyLink")})]})]})]})}function De(){let e=Pt(),t=re(),[n,r]=T(null);X(()=>ee().onAuthDevice?.(i=>r(i)),[]);let a=()=>void t.run(async()=>{let i=ee().forsionLogin;if(!i)return{error:{key:"err.unavailable"}};try{await i()}catch(s){r(null);let l=Co(Et(s));return l?{error:l}:void 0}});return o("section",{class:"settings-panel fx-panel fx-signin","aria-label":e("signin.button"),children:o("div",{class:"settings-state fx-signin-body",children:[o("span",{class:"settings-state-icon",children:o(W,{name:"user",size:18})}),o("p",{class:"fx-signin-lead",children:e("signin.desc")}),o("div",{class:"settings-state-actions",children:o(U,{variant:"primary",pending:t.pending,onClick:a,children:t.pending?e("signin.pending"):e("signin.button")})}),n&&o(Ma,{device:n}),o(ae,{a:t})]})})}function Te(e){let t=Pt(),n=e.panels??2,r=e.rows??2;return o("div",{class:"fx-skeleton","aria-busy":"true","aria-label":t("common.loading"),children:Array.from({length:n},(a,i)=>o("section",{class:"settings-panel fx-panel",children:[o("div",{class:"settings-panel-head",children:[o("span",{class:"fx-skel fx-skel--icon"}),o("div",{children:[o("span",{class:"fx-skel fx-skel--title"}),o("span",{class:"fx-skel fx-skel--line"})]})]}),Array.from({length:r},(s,l)=>o("div",{class:"settings-control-row",children:o("span",{class:"fx-skel fx-skel--row"})},l))]},i))})}function Oe(e){let t=Pt();return o("section",{class:"settings-panel fx-panel",children:o("div",{class:"settings-state fx-error-state",role:"alert",children:[o("span",{class:"settings-state-icon",children:o(W,{name:"alert",size:18})}),o("strong",{children:t("common.loadFailed")}),o("p",{children:bt(e.error,t)}),o("div",{class:"settings-state-actions",children:o(U,{variant:"primary",onClick:e.onRetry,children:[o(W,{name:"refresh",size:12})," ",t("common.retry")]})})]})})}function fl(){let{t:e}=K(),t=Re(()=>H("/auth/me"));if(t.state==="loading")return o(Te,{panels:2});if(t.state==="signedOut")return o(De,{});if(t.state==="error")return o(Oe,{error:t.error,onRetry:t.retry});let n=t.data;return o(R,{children:[o(fe,{icon:"user",title:e("account.details.title"),desc:e("account.details.desc"),children:[o(Le,{label:e("account.details.username"),children:[o("span",{class:"fx-value",children:n.username}),n.role==="ADMIN"&&o("span",{class:"fx-tag",children:e("account.role.admin")})]}),o(ul,{kind:"phone",value:n.phone}),o(ul,{kind:"email",value:n.email})]}),o(wf,{}),o(_f,{})]})}function ul(e){let{t,goTo:n}=K(),r=!!e.value,a=r?e.kind==="phone"?mr(e.value):gr(e.value):t("account.contact.unbound"),i=e.kind==="phone"?t("account.contact.phone"):t("account.contact.email");return o(Le,{label:i,children:n?o("button",{type:"button",class:`fx-link-row${r?"":" is-empty"}`,onClick:()=>n("security"),title:t("account.contact.manage"),children:[o("span",{children:a}),o(W,{name:"chevron",size:12})]}):o("span",{class:`fx-value${r?"":" is-empty"}`,children:a})})}function wf(){let{t:e}=K(),t=Ue(),[n,r]=T(null),[a,i]=T(!1),[s,l]=T(null),[c,d]=T(null),f=re(),p=re(),u=re(),h=!!ee().authAccounts;X(()=>{let x=0,k=()=>{let q=ee().authAccounts;if(!q)return;let N=++x;i(!1),q().then(B=>{N===x&&r(Array.isArray(B)?B:[])}).catch(()=>{N===x&&i(!0)})};k();let A=ee().onAuthChanged?.(k),O=ee().onAuthDevice?.(q=>d(q));return()=>{x++,A?.(),O?.()}},[]);let m=x=>{l(x),f.run(async()=>{let k=ee().forsionSwitchAccount;if(!k)return{error:{key:"err.unavailable"}};try{await k(x)}catch(A){let O=Co(Et(A));return O?{error:O}:void 0}finally{t.current&&l(null)}})},y=()=>void p.run(async()=>{let x=ee().forsionLogin;if(!x)return{error:{key:"err.unavailable"}};d(null);try{await x()}catch(k){t.current&&d(null);let A=Co(Et(k));return A?{error:A}:void 0}}),_=()=>void u.run(async()=>{let x=ee().forsionLogout;if(!x)return{error:{key:"err.unavailable"}};try{await x()}catch(k){return{error:{raw:Et(k)||e("err.generic")}}}}),C=f.pending||p.pending||u.pending;return o(fe,{icon:"laptop",title:e("local.title"),desc:e("local.desc"),children:[h&&n===null&&!a&&o(rt,{children:[o(Yn,{})," ",e("common.loading")]}),a&&o("div",{class:"fx-sub",children:o(ie,{tone:"warn",children:e("local.loadFailed")})}),n&&n.length===0&&o(rt,{children:e("local.empty")}),n&&n.length>0&&o("div",{class:"fx-list fx-block",role:"list",children:n.map(x=>o("div",{class:"fx-list-row",role:"listitem",children:[o("span",{class:"fx-list-icon",children:o(W,{name:"user",size:14})}),o("span",{class:"fx-list-main",children:[o("strong",{children:x.nickname||x.username||"Forsion"}),o("small",{children:[x.username&&x.nickname?x.username:null,zf(x.cloudUrl)].filter(Boolean).join(" \xB7 ")})]}),x.active?o("span",{class:"fx-tag fx-tag--accent",children:[o(W,{name:"check",size:11})," ",e("local.current")]}):o(U,{pending:s===x.id,disabled:C&&s!==x.id,onClick:()=>m(x.id),children:e("local.switch")})]},x.id))}),p.pending&&c&&o("div",{class:"fx-sub",children:o(Ma,{device:c})}),o("div",{class:"settings-panel-footer fx-footer",children:[o(U,{pending:p.pending,disabled:C&&!p.pending,onClick:y,children:[o(W,{name:"plus",size:12})," ",p.pending?e("signin.pending"):e("local.add")]}),o(U,{pending:u.pending,disabled:C&&!u.pending,onClick:_,children:[o(W,{name:"logout",size:12})," ",e("local.signOut")]})]}),(f.error||p.error||u.error)&&o("div",{class:"fx-sub fx-sub--tight",children:[o(ae,{a:f}),o(ae,{a:p}),o(ae,{a:u})]})]})}function zf(e){try{return new URL(e).host}catch{return e}}function _f(){let{t:e}=K(),t=re();return o("div",{class:"fx-page-foot",children:[o("button",{type:"button",class:"fx-link",disabled:t.pending,onClick:()=>void t.run(async()=>await In()?void 0:{error:{key:"err.openFailed"}}),children:[e("account.web.open")," ",o(W,{name:"external",size:12})]}),o("span",{class:"fx-muted",children:e("account.web.desc")}),o(ae,{a:t})]})}var Dn=class extends Error{};async function ml(e,t=256){if(e.size>20971520)throw new Dn;let n=URL.createObjectURL(e);try{let r=new Image;await new Promise((f,p)=>{r.onload=()=>f(),r.onerror=()=>p(new Error("image decode failed")),r.src=n});let a=r.naturalWidth,i=r.naturalHeight;if(!a||!i)throw new Error("empty image");if(a*i>5e7)throw new Dn;let s=Math.min(1,t/Math.max(a,i)),l=document.createElement("canvas");l.width=Math.max(1,Math.round(a*s)),l.height=Math.max(1,Math.round(i*s));let c=l.getContext("2d");if(!c)throw new Error("canvas unavailable");c.fillStyle="#fff",c.fillRect(0,0,l.width,l.height),c.drawImage(r,0,0,l.width,l.height);let d=l.toDataURL("image/jpeg",.85);if(d.length>262144)throw new Dn;return d}finally{URL.revokeObjectURL(n)}}function gl(e){let t=String(e||"").trim();if(!t)return"?";let n=Array.from(t)[0];return/[㐀-鿿]/.test(n)?n:Array.from(t).slice(0,2).join("").toUpperCase()}var hl=["cream","coral","teal","lavender"],bl=["auto","light","dark"],vl=["none","mist","contour","dots"],yl=["none","ring","pro"],xl=["early","streak","author","inviter","event"];var kl=e=>`/u/${encodeURIComponent(e)}`,Ia=e=>!!e&&e.toLowerCase()!=="free";function Ra(e,t){let n={...e.settings,...t};return{...e,settings:n,bio:n.bio,links:n.links,skin:n.skin,mode:n.mode,cover:n.cover,frame:n.frame==="pro"&&!Ia(e.tier)?"none":n.frame,modules:n.modules.filter(r=>r.show).map(r=>({id:r.id}))}}function La(e,t,n){let r=e.findIndex(s=>s.id===t),a=r+n;if(r<0||a<0||a>=e.length)return e;let i=e.slice();return[i[r],i[a]]=[i[a],i[r]],i}function wl(e){let t=e.trim();if(!t)return null;let n=/^[a-z][a-z0-9+.-]*:/i.test(t)?t:`https://${t}`,r;try{r=new URL(n)}catch{return null}if(r.protocol!=="http:"&&r.protocol!=="https:"||!r.hostname.includes("."))return null;let a=r.toString();return a.length<=200?a:null}function Da(e){return e.replace(/^https?:\/\//i,"").replace(/^www\./i,"").replace(/\/$/,"")}function zl(e,t){let n=t==="zh"?[[1e8,"\u4EBF"],[1e4,"\u4E07"]]:[[1e9,"B"],[1e6,"M"],[1e3,"K"]];for(let[r,a]of n)if(e>=r){let i=e/r;return{value:i>=100?String(Math.round(i)):String(Math.round(i*10)/10),unit:a}}return{value:Math.round(e).toLocaleString("en-US"),unit:""}}var _l=e=>e==="zh"?"zh-CN":"en-US";function Sl(e,t){let[n,r]=e.split("-").map(Number);if(!n||!r)return[];let a=new Intl.DateTimeFormat(_l(t),{month:"short",timeZone:"UTC"});return Array.from({length:12},(i,s)=>a.format(new Date(Date.UTC(n,r-12+s,1))))}function Cl(e,t){let[n,r]=e.split("-").map(Number);return!n||!r?"":new Intl.DateTimeFormat(_l(t),{year:"numeric",month:"short",timeZone:"UTC"}).format(new Date(Date.UTC(n,r-1,1)))}function Tl([e,t]){let n=r=>`${String((r%24+24)%24).padStart(2,"0")}:00`;return`${n(e)} \u2013 ${n(t)}`}function Al(e){let t=0,n=Promise.resolve(),r=()=>{let a=t;return e.read().then(i=>{a===t&&e.apply(i)})};return{read:r,write(a){let i=++t,s=n.then(a).then(l=>{i===t&&e.apply(l)});return n=s.catch(()=>i===t?r().catch(()=>{}):void 0),s}}}var Il={skill:{key:"profile.work.skill",icon:"sparkles"},agent:{key:"profile.work.agent",icon:"bot"},plugin:{key:"profile.work.plugin",icon:"box"},space:{key:"profile.work.space",icon:"grid"},theme:{key:"profile.work.theme",icon:"palette"},"amadeus-plugin":{key:"profile.work.note",icon:"note"},webapp:{key:"profile.work.webapp",icon:"globe"}},Pl={early:"sprout",streak:"flame",author:"box",inviter:"gift",event:"trophy"},Ml={plus:"Plus",pro:"Pro"},Oa=e=>!!e&&/^https?:\/\//i.test(e);function Fa(e){if(!Oa(e))return;let t=ee().openExternal;t?t(e).catch(()=>{}):window.open(e,"_blank","noopener")}async function Tf(){let e=ee().cloudInvoke;if(!e)return null;try{let t=await e("profile:publicOrigin");return t?.ok&&typeof t.origin=="string"&&/^https?:\/\/[^/]+$/i.test(t.origin)?t.origin:null}catch{return null}}async function Af(e,t,n){let r=await H(e,{method:t,body:n});if(!r.ok)throw r;if(!r.data?.profile)throw{ok:!1,status:r.status,code:null,detail:null,transport:"bad_response"};return r.data.profile}var Rl=e=>e&&typeof e=="object"&&e.ok===!1?dt(e):{raw:String(e?.message||e)};function Ll(){let{t:e}=K(),t=Re(async()=>{let[r,a,i]=await Promise.all([H("/profile/me"),H("/auth/me"),Tf()]);return a.ok?r.ok?r.data?.profile?{ok:!0,status:r.status,data:{profile:r.data.profile,me:a.data,origin:i}}:{ok:!0,status:404,data:null}:r.status===404?{ok:!0,status:404,data:null}:r:a});if(t.state==="loading")return o(Te,{panels:2,rows:3});if(t.state==="signedOut")return o(De,{});if(t.state==="error")return o(Oe,{error:t.error,onRetry:t.retry});if(!t.data)return o(fe,{icon:"user",title:e("page.profile"),children:o(rt,{children:e("profile.unsupported")})});let{update:n}=t;return o(Ef,{data:t.data,update:r=>n(a=>a&&r(a))})}function Ef(e){let{t}=K(),n=Ue(),{profile:r,me:a,origin:i}=e.data,[s,l]=T(null),[c,d]=T(null),[f,p]=T(!1),u=J(e.update);u.current=e.update;let h=(V,ne,pe)=>n.current?Af(V,ne,pe):Promise.reject(new Error("unmounted")),m=At(()=>Al({apply:V=>u.current(ne=>({...ne,profile:V})),read:()=>h("/profile/me")}),[]),y=a.username||r.username,_={...r,username:y,nickname:a.nickname||null},C=r.settings.isPublic,x=i?`${i}${kl(y)}`:null,k=V=>{n.current&&d({tone:"error",m:Rl(V)})},A=V=>{d(null),e.update(ne=>({...ne,profile:Ra(ne.profile,V)})),m.write(()=>h("/profile/me","PUT",V)).catch(k)},O=async V=>{e.update(ne=>({...ne,profile:Ra(ne.profile,{modules:ne.profile.settings.modules.map(pe=>({...pe,public:V.find(Ee=>Ee.id===pe.id)?.public??pe.public}))})})),await m.write(()=>h("/profile/me/visibility","POST",{public:!0,modules:V})),n.current&&(l(null),d({tone:"ok",m:{key:"profile.nowPublic"}}))},q=async()=>{p(!0),d(null);try{await m.write(()=>h("/profile/me/visibility","POST",{public:!1})),n.current&&d({tone:"ok",m:{key:"profile.nowPrivate"}})}catch(V){k(V)}finally{n.current&&p(!1)}},N=J(Promise.resolve()),B=(V,ne)=>{let pe=N.current.then(async()=>{if(!n.current)return;let Ee=await H("/settings",{method:"PUT",body:V});if(n.current){if(!Ee.ok)return d({tone:"error",m:dt(Ee)});u.current(v=>({...v,me:{...v.me,...V}})),d({tone:"ok",m:{key:ne}})}});return N.current=pe,pe},Y=async V=>{d(null);let ne;try{ne=await ml(V)}catch(pe){return d({tone:"error",m:{key:pe instanceof Dn?"err.avatarTooLarge":"err.avatarInvalid"}})}await B({avatar:ne},"account.avatar.saved")},se=V=>{d(null),l(ne=>ne===V?null:V)};return o("div",{class:"fx-pf-page",children:[o(fe,{icon:C?"globe":"lock",title:t(C?"profile.state.public":"profile.state.private"),desc:t(C?"profile.state.publicDesc":"profile.state.privateDesc"),actions:o(R,{children:[o(U,{onClick:()=>se("deco"),children:[o(W,{name:"palette",size:12})," ",t("profile.decorate")]}),C?o(U,{pending:f,onClick:()=>void q(),children:[o(W,{name:"lock",size:12})," ",t("profile.makePrivate")]}):o(U,{variant:"primary",onClick:()=>se("publish"),children:[o(W,{name:"globe",size:12})," ",t("profile.publish")]})]}),children:[C&&x&&o(Le,{label:t("profile.address"),desc:x.replace(/^https?:\/\//i,""),children:[o(qt,{text:x,label:t("profile.copyLink")}),o(U,{onClick:()=>Fa(x),children:[o(W,{name:"external",size:12})," ",t("profile.openPublic")]})]}),s==="publish"&&!C&&o(Pf,{profile:r,url:x,submit:O,onClose:()=>l(null)}),c&&o(ze,{class:"fx-sub--tight",children:o("div",{class:`fx-msg ${c.tone==="ok"?"is-ok":"is-error"}`,role:c.tone==="ok"?"status":"alert",children:bt(c.m,t)})})]}),o("div",{class:"fx-pf-home","data-deco":s==="deco"?"":void 0,children:[o("div",{class:"fx-pf-root",children:o(Lf,{view:_,avatar:a.avatar||null,pinned:r.settings.pinned,owner:{onAvatar:V=>void Y(V),onNickname:V=>{d(null),B({nickname:V},"account.nickname.saved")},onBio:V=>A({bio:V}),onLinks:V=>A({links:V}),onPinned:V=>A({pinned:V}),onInvalidLink:()=>d({tone:"error",m:{key:"profile.linkInvalid"}})}})}),s==="deco"&&o(Mf,{profile:r,onChange:A,onClose:()=>l(null)})]})]})}function Pf(e){let{t}=K(),n=Ue(),{profile:r}=e,[a,i]=T({}),s=r.settings.modules.filter(h=>h.show).map(h=>({...h,public:a[h.id]??h.public})),[l,c]=T(!1),[d,f]=T(null),p=r.canPublish?null:r.publishBlockedReason||"publish_blocked";if(p)return o(ze,{children:[o(ie,{children:t(p==="machine_username"?"profile.blocked.machineUsername":"profile.blocked.publishBlocked")}),o("div",{class:"fx-inline fx-pf-foot",children:[p==="machine_username"&&o(U,{variant:"primary",onClick:()=>void In("profile"),children:[t("profile.goRename")," ",o(W,{name:"external",size:12})]}),o(U,{onClick:e.onClose,children:t("common.cancel")})]})]});let u=async()=>{c(!0),f(null);try{await e.submit(s.map(({id:h,public:m})=>({id:h,public:m})))}catch(h){if(!n.current)return;f(Rl(h)),c(!1)}};return o(ze,{children:[e.url&&o("div",{class:"fx-pf-url",children:[o(W,{name:"globe",size:14}),o("span",{children:e.url.replace(/^https?:\/\//i,"")})]}),o(ie,{children:t("profile.publishDesc")}),o("div",{class:"fx-pf-checks",children:s.map(h=>o("div",{class:"fx-pf-check",children:[o("div",{children:[t(`profile.mod.${h.id}`),o("small",{children:t(`profile.modDesc.${h.id}`)})]}),o(Mt,{checked:h.public,disabled:l,label:`${t(`profile.mod.${h.id}`)} \xB7 ${t("profile.col.public")}`,onChange:m=>i(y=>({...y,[h.id]:m}))})]},h.id))}),o(ie,{children:t("profile.publishNever")}),d&&o("div",{class:"fx-msg is-error",role:"alert",children:bt(d,t)}),o("div",{class:"fx-inline fx-pf-foot",children:[o(U,{variant:"primary",pending:l,onClick:()=>void u(),children:t("profile.publishConfirm")}),o(U,{disabled:l,onClick:e.onClose,children:t("common.cancel")})]})]})}function Mf(e){let{t}=K(),n=e.profile.settings,r=Ia(e.profile.tier),a=(s,l)=>e.onChange({modules:n.modules.map(c=>c.id===s?{...c,...l}:c)}),i=s=>o("span",{class:"fx-pf-thumb",children:s});return o("aside",{class:"fx-pf-deco","aria-label":t("profile.decorate"),children:o(fe,{icon:"palette",title:t("profile.decorate"),actions:o(U,{onClick:e.onClose,children:t("common.done")}),children:o("div",{class:"fx-pf-deco-body",children:[o("h4",{children:t("profile.deco.cover")}),o("div",{class:"fx-pf-opts",children:vl.map(s=>o("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.cover===s,onClick:()=>e.onChange({cover:s}),children:[i(o("span",{class:`fx-pf-cv-thumb fx-pf-cv-${s}`})),t(`profile.cover.${s}`)]},s))}),o("h4",{children:t("profile.deco.frame")}),o("div",{class:"fx-pf-opts",children:yl.map(s=>o("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.frame===s,disabled:s==="pro"&&!r,title:s==="pro"&&!r?t("profile.frameProHint"):void 0,onClick:()=>e.onChange({frame:s}),children:[i(o("span",{class:`fx-pf-fr-demo fx-pf-fr-${s}`,children:o("span",{class:"fx-pf-av"})})),t(`profile.frame.${s}`)]},s))}),!r&&o(ie,{children:t("profile.frameProHint")}),o("h4",{children:t("profile.deco.modules")}),o("div",{class:"fx-pf-mod-head","aria-hidden":"true",children:[o("span",{children:t("profile.col.show")}),o("span",{children:t("profile.col.public")})]}),n.modules.map((s,l)=>o("div",{class:"fx-pf-mod",children:[o("span",{children:t(`profile.mod.${s.id}`)}),o("button",{type:"button",class:"fx-icon-btn",disabled:l===0,title:t("profile.moveUp"),"aria-label":`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.moveUp")}`,onClick:()=>e.onChange({modules:La(n.modules,s.id,-1)}),children:o(W,{name:"up",size:13})}),o("button",{type:"button",class:"fx-icon-btn",disabled:l===n.modules.length-1,title:t("profile.moveDown"),"aria-label":`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.moveDown")}`,onClick:()=>e.onChange({modules:La(n.modules,s.id,1)}),children:o(W,{name:"down",size:13})}),o(Mt,{checked:s.show,label:`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.col.show")}`,onChange:c=>a(s.id,{show:c})}),o(Mt,{checked:s.show&&s.public,disabled:!s.show,label:`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.col.public")}`,onChange:c=>a(s.id,{public:c})})]},s.id)),o(ie,{children:t("profile.modulesHint")}),o("h4",{children:t("profile.deco.skin")}),o("div",{class:"fx-pf-opts",children:hl.map(s=>o("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.skin===s,onClick:()=>e.onChange({skin:s}),children:[i(o("span",{class:"fx-pf-swatch","data-skin":s})),t(`profile.skin.${s}`)]},s))}),o("h4",{children:t("profile.deco.mode")}),o(It,{value:n.mode,label:t("profile.deco.mode"),onChange:s=>e.onChange({mode:s}),options:bl.map(s=>({value:s,label:t(`profile.mode.${s}`)}))}),o(ie,{children:t("profile.deco.publicHint")})]})})})}function Na(e){let[t,n]=T(null),r=J(!1),a=J(null),i=t!==null;So(()=>{i&&a.current?.focus()},[i]);let s=e.class?` ${e.class}`:"";if(t===null)return o("button",{type:"button",class:`fx-pf-ed${s}${e.value?"":" is-empty"}`,title:e.label,"aria-label":e.label,onClick:()=>{r.current=!1,n(e.value)},children:[o("span",{children:e.value||e.placeholder}),o(W,{name:e.value?"pencil":"plus",size:12})]});let l=()=>{let c=t.trim();n(null),!r.current&&c!==e.value&&e.onSave(c)};return o("span",{class:`fx-pf-ed-on${s}`,children:[o("input",{ref:a,class:"fx-input",type:"text",value:t,maxLength:e.maxLength,placeholder:e.placeholder,"aria-label":e.label,onInput:c=>n(c.currentTarget.value),onBlur:l,onKeyDown:c=>{c.isComposing||(c.key==="Enter"?c.currentTarget.blur():c.key==="Escape"&&(c.preventDefault(),r.current=!0,c.currentTarget.blur()))}}),e.counter&&o("small",{children:[Array.from(t).length,"/",e.maxLength]})]})}function yr(e){return o("section",{class:"fx-pf-sec",style:{order:e.order},children:[o("div",{class:"fx-pf-sec-h",children:[o("h3",{children:e.title}),e.action]}),e.children]})}function If(e){let{t}=K(),{work:n}=e,r=Il[n.type],a=o(R,{children:[o("div",{class:"fx-pf-work-top",children:[o("span",{class:"fx-pf-work-ico",children:o(W,{name:r?.icon??"box",size:17})}),o("div",{children:[o("div",{class:"fx-pf-work-name",children:n.name}),o("div",{class:"fx-pf-work-type",children:r?t(r.key):n.type})]})]}),o("p",{children:n.summary}),(n.countKind!=="visits"||n.count>0)&&o("div",{class:"fx-pf-work-foot",children:[o(W,{name:n.countKind==="visits"?"eye":"download",size:12}),t(n.countKind==="visits"?"profile.workVisits":"profile.workInstalls",{n:n.count.toLocaleString("en-US")})]})]}),i=n.url;return Oa(i)?o("a",{class:"fx-pf-work",href:i,onClick:s=>{s.preventDefault(),Fa(i)},children:a}):o("article",{class:"fx-pf-work",children:a})}function Rf(e){let{t}=K(),n=Ue(),[r,a]=T(null),[i,s]=T(()=>e.pinned.map(f=>`${f.kind}:${f.id}`));X(()=>{H("/profile/me/works").then(f=>{n.current&&a(f.ok?f.data?.works??[]:"failed")})},[]);let l=f=>`${f.kind}:${f.id}`,c=f=>s(p=>p.includes(f)?p.filter(u=>u!==f):[...p,f]);if(r===null)return o("div",{class:"fx-pf-card fx-pf-empty",children:[o(Yn,{})," ",t("common.loading")]});if(r==="failed"||r.length===0)return o("div",{class:"fx-pf-card fx-pf-empty",children:[o("p",{children:t(r==="failed"?"common.loadFailed":"profile.worksNone")}),o("div",{class:"fx-inline fx-pf-foot",children:[r!=="failed"&&o(U,{variant:"primary",onClick:()=>void In("submission"),children:[t("profile.goSubmit")," ",o(W,{name:"external",size:12})]}),o(U,{onClick:e.onClose,children:t("common.cancel")})]})]});let d=()=>{let f=new Map(r.map(p=>[l(p),p]));e.onSave(i.flatMap(p=>{let u=f.get(p);return u?[{kind:u.kind,id:u.id}]:[]})),e.onClose()};return o("div",{class:"fx-pf-card fx-pf-picker",children:[r.map(f=>{let p=l(f),u=i.includes(p),h=Il[f.type];return o("button",{type:"button",class:"fx-pf-pick","aria-pressed":u,disabled:!u&&i.length>=6,onClick:()=>c(p),children:[o("div",{children:[f.name,o("small",{children:[h?t(h.key):f.type," \xB7 ",f.summary]})]}),u&&o(W,{name:"check",size:15})]},p)}),o("div",{class:"fx-inline fx-pf-foot",children:[o("span",{class:"fx-grow",children:i.length?t("profile.worksPicked",{n:i.length,max:6}):t("profile.worksAuto")}),o(U,{variant:"primary",onClick:d,children:t("common.done")}),o(U,{onClick:e.onClose,children:t("common.cancel")})]})]})}function Lf(e){let{t,locale:n}=K(),{view:r,owner:a}=e,i=J(null),[s,l]=T(!1),c=r.nickname||r.username,d=(r.tier||"free").toLowerCase(),f=r.modules.map(v=>v.id),p=v=>f.indexOf(v),u=v=>p(v)>=0,h=r.stats,m=h?zl(h.totalTokens,n):null,y=t("profile.unit.days"),_=h&&m?[[m.value,m.unit,t("profile.stat.tokens")],[String(h.activeDays),y,t("profile.stat.activeDays")],[String(h.longestStreak),y,t("profile.stat.longest")],[String(h.currentStreak),y,t("profile.stat.current")],[h.installs.toLocaleString("en-US"),"",t("profile.stat.installs")]]:[],C=h&&u("stats")&&o("div",{class:"fx-pf-stats",style:{order:p("stats")},children:_.map(([v,E,I])=>o("div",{class:"fx-pf-stat",children:[o("b",{children:[v,E&&o("small",{children:E})]}),o("span",{children:I})]},I))},"stats"),x=f[0]==="stats",k=r.works||[],A=u("works")&&o(yr,{order:p("works"),title:t("profile.works"),action:!s&&o("button",{type:"button",class:"fx-link",onClick:()=>l(!0),children:t("profile.worksPick")}),children:s?o(Rf,{pinned:e.pinned,onSave:a.onPinned,onClose:()=>l(!1)}):k.length?o("div",{class:"fx-pf-works",children:k.map(v=>o(If,{work:v},`${v.kind}:${v.id}`))}):o("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.worksEmpty")})},"works"),O=r.activity,q=u("activity")&&O&&o(yr,{order:p("activity"),title:t("profile.activity"),children:o("div",{class:"fx-pf-card",children:[o("div",{class:"fx-pf-hm",role:"img","aria-label":t("profile.activityDays",{n:O.activeDays}),children:O.levels.map((v,E)=>o("i",{class:v?`l${v}`:void 0},E))}),o("div",{class:"fx-pf-hm-months","aria-hidden":"true",children:Sl(O.end,n).map((v,E)=>o("span",{children:v},E))}),o("div",{class:"fx-pf-hm-foot",children:[o("span",{children:t("profile.activityDays",{n:O.activeDays})}),o("span",{class:"fx-pf-hm-legend","aria-hidden":"true",children:[t("profile.less"),o("i",{}),o("i",{class:"l1"}),o("i",{class:"l2"}),o("i",{class:"l3"}),o("i",{class:"l4"}),t("profile.more")]})]})]})},"activity"),N=(r.badges||[]).filter(v=>xl.includes(v.id)),B=u("badges")&&o(yr,{order:p("badges"),title:t("profile.badges"),children:N.length?o("div",{class:"fx-pf-card fx-pf-rows",children:N.map(v=>o("div",{class:"fx-pf-brow",children:[o("span",{class:"fx-pf-badge",children:o(W,{name:Pl[v.id],size:14})}),o("div",{children:[o("b",{children:t(`profile.badge.${v.id}`)}),o("span",{children:t(`profile.badgeSub.${v.id}`,{value:v.value??""})})]})]},v.id))}):o("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.badgesEmpty")})},"badges"),Y=r.insights,se=[];Y?.topModel&&se.push([t("profile.insightModel"),Y.topModel]),Y?.activeHours&&se.push([t("profile.insightHours"),Tl(Y.activeHours)]);let V=u("insights")&&o(yr,{order:p("insights"),title:t("profile.insights"),children:se.length?o("div",{class:"fx-pf-card fx-pf-rows",children:se.map(([v,E])=>o("div",{class:"fx-pf-row",children:[o("span",{children:v}),o("b",{children:E})]},v))}):o("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.insightsEmpty")})},"insights"),ne=[!x&&C,A,q].filter(Boolean),pe=[B,V].filter(Boolean),Ee=v=>{if(!v)return;let E=wl(v);if(!E)return a.onInvalidLink();r.links.includes(E)||a.onLinks([...r.links,E])};return o("div",{class:"fx-pf","data-cover":r.cover,"data-frame":r.frame,children:[o("div",{class:"fx-pf-cover"}),o("div",{class:"fx-pf-id",children:[o("button",{type:"button",class:"fx-pf-avatar",title:t("account.avatar.change"),"aria-label":t("account.avatar.change"),onClick:()=>i.current?.click(),children:[o("span",{class:"fx-pf-av",children:e.avatar?o("img",{src:e.avatar,alt:""}):o("span",{class:"fx-pf-av-fallback",children:gl(c)})}),o("span",{class:"fx-pf-av-mask",children:o(W,{name:"pencil",size:18})})]}),o("input",{ref:i,type:"file",accept:"image/png,image/jpeg,image/webp,image/gif,image/avif",hidden:!0,onChange:v=>{let E=v.currentTarget,I=E.files?.[0];E.value="",I&&a.onAvatar(I)}}),o("div",{class:"fx-pf-id-text",children:[o("div",{class:"fx-pf-name",children:[o(Na,{value:c,placeholder:r.username,maxLength:40,label:t("account.nickname.edit"),onSave:v=>{v&&a.onNickname(v)}}),Ml[d]&&o("span",{class:`fx-tag${d==="pro"?" fx-pf-tier-pro":" fx-tag--accent"}`,children:Ml[d]})]}),o("div",{class:"fx-pf-handle",children:["@",r.username]})]}),N.length>0&&u("badges")&&o("div",{class:"fx-pf-badges",children:N.map(v=>o("span",{class:"fx-pf-badge",title:t(`profile.badge.${v.id}`),children:o(W,{name:Pl[v.id],size:14})},v.id))})]}),o("div",{class:"fx-pf-sub",children:[o(Na,{class:"fx-pf-bio",value:r.bio,placeholder:t("profile.bioPlaceholder"),maxLength:80,label:t("profile.bio"),counter:!0,onSave:a.onBio}),o("div",{class:"fx-pf-meta",children:[r.joinedMonth&&o("span",{children:[o(W,{name:"calendar",size:13}),t("profile.joined",{date:Cl(r.joinedMonth,n)})]}),r.links.map(v=>o("span",{children:[o(W,{name:"link",size:13}),Oa(v)?o("a",{href:v,onClick:E=>{E.preventDefault(),Fa(v)},children:Da(v)}):o("span",{children:Da(v)}),o("button",{type:"button",class:"fx-pf-x",title:t("profile.linkRemove"),"aria-label":t("profile.linkRemove"),onClick:()=>a.onLinks(r.links.filter(E=>E!==v)),children:o(W,{name:"x",size:11})})]},v)),r.links.length<2&&o(Na,{value:"",placeholder:t("profile.linkAdd"),maxLength:200,label:t("profile.linkAdd"),onSave:Ee},r.links.length)]})]}),x&&C,o("div",{class:"fx-pf-body","data-cols":ne.length&&pe.length?2:1,children:[o("div",{class:"fx-pf-main",children:ne}),pe.length>0&&o("div",{class:"fx-pf-side",children:pe})]})]})}function Dl(){let e=Re(async()=>{let[t,n]=await Promise.all([H("/membership/my"),H("/features")]);return t.ok?{ok:!0,status:t.status,data:{membership:t.data?.membership??null,payment:!n.ok||n.data?.payment!==!1}}:t});return e.state==="loading"?o(Te,{panels:1}):e.state==="signedOut"?null:o(Df,{membership:e.state==="ready"?e.data.membership:null,failed:e.state==="error",payment:e.state==="ready"&&e.data.payment,onRetry:e.state==="ready"?e.reload:e.retry})}function Df(e){let{t,locale:n}=K(),r=re(),a=e.membership&&(e.membership.status===void 0||e.membership.status==="active")?e.membership:null,i=To(a?.tier),s=i==="Free",l=s?"free":i.toLowerCase()==="pro"?"pro":"paid",c=()=>void r.run(async()=>await mn("membership")?void 0:{error:{key:"err.openFailed"}});return o(fe,{icon:"card",title:t("member.title"),desc:t("member.desc"),actions:e.payment&&!e.failed?o(U,{variant:"primary",pending:r.pending,onClick:c,children:t(s?"member.upgrade":"member.renew")}):void 0,children:[!e.failed&&o("div",{class:"fx-member fx-block",children:[o("span",{class:`fx-tier fx-tier--${l}`,children:i}),o("div",{class:"fx-member-copy",children:[o("strong",{children:s?t("member.freeName"):a?.plan?.name||i}),o("span",{class:"fx-muted",children:s?t("member.freeHint"):a?.expiresAt?t("member.expires",{date:hr(a.expiresAt,n)}):t("member.noExpiry")})]})]}),e.failed&&o("div",{class:"fx-sub",children:o(ie,{tone:"warn",children:[t("member.loadFailed")," ",o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}),r.error&&o("div",{class:"fx-sub fx-sub--tight",children:o(ae,{a:r})})]})}function he(e){if(typeof e=="number")return Number.isFinite(e)?e:null;if(typeof e=="string"&&e.trim()!==""){let t=Number(e);return Number.isFinite(t)?t:null}return null}function Nf(e,t){let n=he(t);if(n===null||n<0)return null;if(n===0)return 0;let r=Math.max(0,he(e)??0);return Math.min(100,Math.max(0,Math.floor(r/n*100)))}var Of=15;function Nn(e,t){let n=Nf(e,t);if(n===null)return{unlimited:!0,pct:100,text:null,low:!1};let r=Math.max(0,he(e)??0),a=n===0&&r>0&&(he(t)??0)>0?"<1%":`${n}%`;return{unlimited:!1,pct:n,text:a,low:n<=Of}}function xr(e,t){let n=he(t);if(n===null||n<=0)return null;let r=he(e);if(r===null)return null;let a=Math.max(0,r);if(a===0)return"0%";let i=a/n*100;if(i<.1)return"<0.1%";let s=Math.round(i*10)/10;return s<10?`${s}%`:`${Math.round(i).toLocaleString("en-US")}%`}var Ff=e=>e.ok?"ok":e.status===404?"hidden":"failed";function Ol(){return o($l,{section:"points"})}function Fl(){return o(R,{children:[o(Dl,{}),o($l,{section:"quota"})]})}function $l({section:e}){let t=Re(async()=>{let[l,c,d,f]=await Promise.all([H("/token-quota/my"),H("/credits/balance"),H("/features"),H("/invite/my-code")]);return l.ok?{ok:!0,status:l.status,data:{quota:l.data??{},balance:c.ok?he(c.data?.balance):null,balanceFailed:!c.ok,features:d.ok&&d.data&&typeof d.data=="object"?d.data:{},invite:f.ok?f.data:null,inviteState:Ff(f)}}:l});if(t.state==="loading")return o(Te,{panels:3,rows:2});if(t.state==="signedOut")return o(De,{});if(t.state==="error")return o(Oe,{error:t.error,onRetry:t.retry});let{data:n,update:r}=t,a=n.quota.background,i=n.features.redemption_codes!==!1,s=n.features.payment!==!1;return o(R,{children:[e==="quota"&&o(R,{children:[o(Bf,{data:n,update:r,onFailed:t.reload}),a?.modelId?o(Vf,{bg:a,update:r}):null]}),e==="points"&&o(qf,{data:n,payment:s,onRetry:t.reload}),e==="points"&&(n.inviteState!=="hidden"||i)&&o(Wf,{data:n,update:r,redeemEnabled:i,onRedeemed:t.reload})]})}var Nl=e=>({dailyLimit:e.dailyLimit,dailyRemaining:e.dailyRemaining,weeklyLimit:e.weeklyLimit,weeklyRemaining:e.weeklyRemaining});function $f(e,t){if(typeof e?.showResetCardCeremony!="function")return!1;try{return e.showResetCardCeremony(t),!0}catch{return!1}}function Bf(e){let{t,locale:n,ctx:r}=K(),a=e.data.quota,i=Nn(a.dailyRemaining,a.dailyLimit),s=Nn(a.weeklyRemaining,a.weeklyLimit),l=Qs(a.weeklyResetAt,n),c=Math.max(0,he(a.resetCards)??0),d=he(a.resetCardPricePoints)??100,f=re(),p=re(),[u,h]=T(null),[m,y]=T("1"),_=/^\d+$/.test(m.trim())?Number(m.trim()):NaN,C=Number.isInteger(_)&&_>=1&&_<=50,x=C?_*d:null,k=e.data.balance,A=x!==null&&k!==null&&k<x,O=()=>void f.run(async()=>{let B={daily:i,weekly:s},Y=Nl(a);h(null);let se=ee(),V=await dr(se.accountUseResetCard?()=>se.accountUseResetCard("both"):null,()=>H("/token-quota/reset-card/use",{method:"POST",body:{type:"both"}}));if(!V.ok)return e.onFailed(),Ae(V);let ne=V.data?.quota,pe=he(V.data?.resetCards);return e.update(Ee=>({...Ee,quota:{...Ee.quota,...ne??{},resetCards:pe??Ee.quota.resetCards}})),ne&&!$f(r.app,{before:Y,after:Nl(ne),remainingCards:pe??void 0})&&h({before:B,after:{daily:Nn(ne.dailyRemaining,ne.dailyLimit),weekly:Nn(ne.weeklyRemaining,ne.weeklyLimit)},cards:pe}),{success:{key:"card.used"}}}),q=()=>void p.run(async()=>{if(!C)return{error:{key:"err.invalidCount"}};let B=await H("/points/exchange-reset-cards",{method:"POST",body:{count:_,expectedPricePerCard:d}});return B.ok?(e.update(Y=>({...Y,quota:{...Y.quota,resetCards:he(B.data?.resetCards)??Y.quota.resetCards},balance:he(B.data?.newPointsBalance)??Y.balance})),y("1"),{success:{key:"card.exchanged",vars:{n:he(B.data?.cardsGranted)??_}}}):(e.onFailed(),Ae(B))}),N=B=>B.unlimited?t("common.unlimited"):B.text;return o(fe,{icon:"gauge",title:t("quota.ai.title"),desc:t("quota.ai.desc"),children:[o("div",{class:"fx-quota-list fx-block",children:[o(Eo,{label:t("common.today"),display:i,note:i.unlimited?null:t("quota.resetDaily")}),o(Eo,{label:t("common.thisWeek"),display:s,note:s.unlimited||!l?null:t("quota.resetWeekly",{date:l})})]}),o(Le,{label:t("card.title"),desc:t("card.desc"),children:[o("span",{class:"fx-value","data-testid":"reset-card-count",children:t("card.owned",{n:c})}),o(nn,{label:t("card.use"),confirmLabel:t("card.useConfirm"),pending:f.pending,disabled:c<=0,onConfirm:O})]}),c<=0&&!f.success&&o(ze,{children:o(ie,{children:t("card.noneHint")})}),(f.error||f.success)&&o(ze,{children:[o(ae,{a:f}),f.success&&u&&o("div",{class:"fx-ceremony",role:"status",children:[o("span",{children:[t("common.today")," ",o("b",{children:N(u.before.daily)})," \u2192 ",o("b",{children:N(u.after.daily)})]}),o("span",{children:[t("common.thisWeek")," ",o("b",{children:N(u.before.weekly)})," \u2192 ",o("b",{children:N(u.after.weekly)})]}),u.cards!==null&&o("span",{class:"fx-muted",children:t("card.left",{n:u.cards})})]})]}),o(Le,{label:t("card.exchange"),desc:t("card.price",{price:we(d,n)}),class:"fx-row--wide",children:[o("input",{class:"fx-input fx-input--count",type:"number",inputMode:"numeric",min:1,max:50,step:1,value:m,"aria-label":t("card.count"),onInput:B=>{y(B.currentTarget.value),p.clear()}}),o("span",{class:"fx-muted fx-cost",children:x!==null?t("card.cost",{cost:we(x,n)}):t("card.countHint")}),o(nn,{label:t("card.exchangeButton"),confirmLabel:t("card.exchangeConfirm",{cost:x!==null?we(x,n):"\u2014"}),pending:p.pending,disabled:!C||A,onConfirm:q})]}),(A||p.error||p.success)&&o(ze,{children:[A&&!p.error&&o(ie,{tone:"warn",children:t("err.insufficientPoints")}),o(ae,{a:p})]})]})}function Uf(e,t,n){let r=re(),[a,i]=T(null);return{checked:a??e,toggle:l=>{i(l),r.run(async()=>{let c=await t(l);if(i(null),!c.ok)return Ae(c);n(l)})},action:r}}function qf(e){let{t,locale:n}=K(),r=re(),a=()=>void r.run(async()=>await mn("credits")?void 0:{error:{key:"err.openFailed"}});return o(fe,{icon:"coins",title:t("points.title"),desc:t("points.desc"),actions:e.payment?o(U,{variant:"primary",pending:r.pending,onClick:a,children:t("points.recharge")}):void 0,children:[o(Le,{label:t("points.balance"),children:e.data.balance!==null?o("span",{class:"fx-big","data-testid":"points-balance",children:we(e.data.balance,n)}):o("span",{class:"fx-value is-empty",children:[t("points.balanceFailed")," ",o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}),r.error&&o(ze,{children:o(ae,{a:r})})]})}var Hf=[5,10,20];function Vf(e){let{t}=K(),{bg:n}=e,r=Nn(n.dailyRemaining,n.dailyLimit),a=Nn(n.weeklyRemaining,n.weeklyLimit),i=re(),[s,l]=T(null),c=Uf(!!n.autoMain,f=>{let p=ee();return dr(p.accountBgAutoMain?()=>p.accountBgAutoMain(f):null,()=>H("/token-quota/background/auto-main",{method:"POST",body:{enabled:f}}))},f=>e.update(p=>({...p,quota:{...p.quota,background:{...p.quota.background??{},autoMain:f}}}))),d=f=>{l(f),i.run(async()=>{let p=ee(),u=await dr(p.accountBgConvert?()=>p.accountBgConvert(f):null,()=>H("/token-quota/background/convert",{method:"POST",body:{percent:f}}));if(l(null),!u.ok)return Ae(u);let h=u.data?.quota;return h&&e.update(y=>({...y,quota:{...y.quota,...h,resetCards:y.quota.resetCards,resetCardPricePoints:y.quota.resetCardPricePoints}})),{success:{key:"bg.converted",vars:{pct:f}}}})};return o(fe,{icon:"clock",title:t("bg.title"),desc:t("bg.desc"),children:[o("div",{class:"fx-quota-list fx-block",children:[o(Eo,{label:t("common.today"),display:r}),o(Eo,{label:t("common.thisWeek"),display:a})]}),o(Le,{label:t("bg.autoMain"),desc:t("bg.autoMainDesc"),children:o(Mt,{checked:c.checked,disabled:c.action.pending,label:t("bg.autoMain"),onChange:c.toggle})}),o(Le,{label:t("bg.convert"),desc:t("bg.convertDesc"),class:"fx-row--wide",children:Hf.map(f=>o(nn,{label:`${f}%`,confirmLabel:t("bg.convertConfirm",{pct:f}),pending:i.pending&&s===f,disabled:i.pending&&s!==f,onConfirm:()=>d(f)},f))}),(i.error||i.success||c.action.error)&&o(ze,{children:[o(ae,{a:c.action}),o(ae,{a:i})]})]})}function Wf(e){let{t,locale:n}=K(),{invite:r,inviteState:a}=e.data,[i,s]=T(null),[l,c]=T(""),[d,f]=T(""),p=re(),u=re(),h=re();X(()=>{let x=!0;return ee().authStatus?.().then(k=>{x&&s(k?.cloudUrl?k.cloudUrl.replace(/\/+$/,""):null)}).catch(()=>{}),()=>{x=!1}},[]);let m=async()=>{let x=await H("/invite/my-code");return e.update(k=>({...k,invite:x.ok?x.data:k.invite,inviteState:x.ok?"ok":x.status===404?"hidden":k.inviteState})),x},y=()=>void p.run(async()=>{let x=l.trim();if(!x)return{error:{key:"err.inviteEmpty"}};let k=await H("/invite/claim",{method:"POST",body:{code:x}});return k.ok?(c(""),m(),{success:{key:"invite.claimed"}}):Ae(k)}),_=()=>void u.run(async()=>{let x=d.trim();if(!x)return{error:{key:"err.redeemEmpty"}};let k=await H("/redemption/redeem",{method:"POST",body:{code:x}});if(!k.ok)return Ae(k);f(""),e.onRedeemed();let A=[],O=he(k.data?.creditsAmount);O&&A.push(t("redeem.gotPoints",{n:we(O,n)})),k.data?.membershipPlanId&&A.push(t("redeem.gotMembership"));for(let q of Array.isArray(k.data?.items)?k.data.items:[]){let N=(n==="zh"?q?.label?.zh:q?.label?.en)||q?.label?.zh||q?.label?.en||q?.kind;N&&A.push(N)}return{success:A.length?{key:"redeem.successWith",vars:{what:A.join(n==="zh"?"\u3001":", ")}}:{key:"redeem.success"}}}),C=r?.code&&i?`${i}/auth?invite=${encodeURIComponent(r.code)}`:"";return o(fe,{icon:"gift",title:t("invite.title"),desc:t("invite.desc"),children:[a==="ok"&&r?.code&&o(Le,{label:t("invite.myCode"),desc:t("invite.count",{n:we(he(r.invitedCount)??0,n)}),class:"fx-row--wide",children:[o("code",{class:"fx-code","data-testid":"invite-code",children:r.code}),o(qt,{text:r.code,label:t("invite.copyCode")}),o(qt,{text:C,label:t("invite.copyLink"),disabled:!C})]}),a==="failed"&&o(ze,{children:o(ie,{tone:"warn",children:[t("invite.loadFailed")," ",o("button",{type:"button",class:"fx-link",disabled:h.pending,onClick:()=>void h.run(async()=>{await m()}),children:t("common.retry")})]})}),a==="ok"&&r?.claim?.eligible&&o(Le,{label:t("invite.claim"),desc:t("invite.claimDesc"),class:"fx-row--wide",children:o("form",{class:"fx-inline",onSubmit:x=>{x.preventDefault(),y()},children:[o("input",{class:"fx-input",value:l,placeholder:t("invite.claimPlaceholder"),"aria-label":t("invite.claim"),onInput:x=>c(x.currentTarget.value)}),o(U,{submit:!0,pending:p.pending,children:t("invite.claimSubmit")})]})}),(p.error||p.success)&&o(ze,{children:o(ae,{a:p})}),e.redeemEnabled&&o(Le,{label:t("redeem.title"),desc:t("redeem.desc"),class:"fx-row--wide",children:o("form",{class:"fx-inline",onSubmit:x=>{x.preventDefault(),_()},children:[o("input",{class:"fx-input",value:d,placeholder:t("redeem.placeholder"),"aria-label":t("redeem.title"),onInput:x=>f(x.currentTarget.value)}),o(U,{submit:!0,pending:u.pending,children:t("redeem.submit")})]})}),(u.error||u.success)&&o(ze,{children:o(ae,{a:u})})]})}function jf(e){let t=[],n,r=new Map;for(let a of e)if(a.itemType==="reset_card")n||(n={id:"reset_card",items:[],resetCard:!0},t.push(n)),n.items.push(a);else if(a.itemType==="custom_item"&&a.itemDefinition?.stackable){let i=`${a.productId||a.id}:${JSON.stringify(a.itemDefinition)}`,s=r.get(i);s||(s={id:`custom:${i}`,items:[],resetCard:!1},r.set(i,s),t.push(s)),s.items.push(a)}else t.push({id:a.id,items:[a],resetCard:!1});return t}function Bl(){let e=Re(()=>H("/shop/inventory"));return e.state==="loading"?o(Te,{panels:1,rows:4}):e.state==="signedOut"?o(De,{}):e.state==="error"?o(Oe,{error:e.error,onRetry:e.retry}):o(Gf,{items:e.data??[],onRefresh:e.reload,onUsed:t=>{e.update(n=>n.filter(r=>r.id!==t.itemId)),e.reload()}})}function Gf(e){let{t,locale:n,goTo:r}=K(),[a,i]=T(null),[s,l]=T(null),c=Ue(),d=jf(e.items),f=d.find(m=>m.id===a),p=Math.max(24,Math.ceil(d.length/6)*6)-d.length,u=m=>m.resetCard?t("card.title"):m.items[0].itemDefinition?.name[n]||m.items[0].displayName||t("backpack.item"),h=m=>{c.current&&(l(m),e.onUsed(m))};return o(fe,{icon:"backpack",title:t("page.backpack"),desc:t("backpack.desc"),actions:o(U,{onClick:e.onRefresh,children:[o(W,{name:"refresh",size:13}),t("backpack.refresh")]}),children:o("div",{class:"fx-backpack fx-block",children:[o("div",{class:"fx-backpack-summary",children:[o("span",{children:t("backpack.total",{n:we(e.items.length,n)})}),r&&o("button",{class:"fx-link",type:"button",onClick:()=>r("quota"),children:t("backpack.getCards")})]}),s&&o("div",{class:`fx-backpack-used fx-backpack-${s.animation}`,role:"status",children:[o(W,{name:"gift",size:20}),o("div",{children:[o("strong",{children:s.message[n]}),o("div",{children:s.effects.map(m=>Ul(m,t,n)).join(" \xB7 ")})]})]},s.itemId),o("div",{class:"fx-backpack-layout",children:[o("div",{children:[o("div",{class:"fx-backpack-grid",role:"group","aria-label":t("backpack.grid"),children:[d.map(m=>{let y=u(m);return o("button",{type:"button",class:`fx-backpack-slot${m.resetCard?" is-card":""}`,"data-rarity":m.items[0].itemDefinition?.rarity,"aria-pressed":f?.id===m.id,"aria-label":t("backpack.slot",{name:y,n:m.items.length}),title:y,onClick:()=>i(m.id),children:[o("span",{class:"fx-backpack-icon",children:m.items[0].itemDefinition?.icon?o("span",{class:"fx-backpack-emoji",children:m.items[0].itemDefinition.icon}):o(W,{name:m.resetCard?"card":"gift",size:30})}),o("span",{class:"fx-backpack-name",children:y}),(m.resetCard||m.items[0].itemDefinition?.stackable)&&o("span",{class:"fx-backpack-count",children:["\xD7",we(m.items.length,n)]})]},m.id)}),Array.from({length:p},(m,y)=>o("div",{class:"fx-backpack-slot is-empty","aria-hidden":"true"},`empty:${y}`))]}),!d.length&&o("p",{class:"fx-backpack-empty",children:t("backpack.empty")})]}),f?o(Xf,{slot:f,name:u(f),onUsed:h},`${f.id}:${f.items[0].id}`):o("div",{class:"fx-backpack-detail fx-backpack-prompt",children:[o(W,{name:"backpack",size:30}),o(ie,{children:t(d.length?"backpack.select":"backpack.emptyHint")})]})]})]})})}function Ul(e,t,n){return e.type==="points"?t("backpack.effect.points",{n:we(e.amount,n)}):e.type==="reset_card"?t("backpack.effect.cards",{n:we(e.count,n)}):t("backpack.effect.quota")}function Xf(e){let{t,locale:n,goTo:r}=K(),a=e.slot.items[0],[i,s]=T(null),l=re(),c=re(),[d,f]=T(!1),p=a.itemDefinition,u=Ue(),h=a.source==="points"?t("backpack.source.points"):a.source==="admin"?t("backpack.source.admin"):a.source==="reward"?t("backpack.source.reward"):t("backpack.source.other"),m=()=>void l.run(async()=>{let _=await H(`/shop/inventory/${encodeURIComponent(a.id)}`);if(u.current){if(!_.ok)return Ae(_);s(_.data)}}),y=()=>void c.run(async()=>{let _=await H(`/shop/inventory/${encodeURIComponent(a.id)}/use`,{method:"POST"});if(!_.ok)return Ae(_);e.onUsed(_.data)});return o("section",{class:"fx-backpack-detail","aria-label":t("backpack.details"),children:[o("span",{class:`fx-backpack-detail-icon${e.slot.resetCard?" is-card":""}`,children:p?.icon?o("span",{class:"fx-backpack-emoji",children:p.icon}):o(W,{name:e.slot.resetCard?"card":"gift",size:32})}),o("h3",{children:e.name}),o("span",{class:"fx-tag",children:[t(e.slot.resetCard||p?.use?"backpack.consumable":p?"backpack.collectible":"backpack.voucher"),p&&` \xB7 ${t(`backpack.rarity.${p.rarity}`)}`]}),o("dl",{class:"fx-backpack-facts",children:[o("div",{children:[o("dt",{children:t("backpack.quantity")}),o("dd",{children:we(e.slot.items.length,n)})]}),o("div",{children:[o("dt",{children:t("backpack.acquired")}),o("dd",{children:Ut(a.acquiredAt,n)})]}),!e.slot.resetCard&&o("div",{children:[o("dt",{children:t("backpack.source")}),o("dd",{children:h})]})]}),p?o(R,{children:[p.description&&o(ie,{children:p.description[n]}),p.use&&o(R,{children:[o("div",{class:"fx-backpack-effects",children:p.use.effects.map((_,C)=>o("div",{children:Ul(_,t,n)},C))}),d?o(R,{children:[o(ie,{children:t("backpack.consumeConfirm")}),o("div",{class:"fx-backpack-use-actions",children:[o(U,{variant:"primary",pending:c.pending,onClick:y,children:t("backpack.confirmUse")}),o(U,{disabled:c.pending,onClick:()=>f(!1),children:t("common.cancel")})]})]}):o(U,{variant:"primary",onClick:()=>f(!0),children:p.use.label?.[n]||t("backpack.use")}),o(ae,{a:c,captchaSection:"backpack"})]})]}):e.slot.resetCard?o(R,{children:[o(ie,{children:t("card.desc")}),r&&o(U,{variant:"primary",onClick:()=>r("quota"),children:t("backpack.manageCards")})]}):i?o("div",{class:"fx-backpack-reveal",children:[i.codeName&&o("div",{class:"fx-muted",children:i.codeName}),i.key?o(R,{children:[o("code",{children:i.key}),o(qt,{text:i.key,label:t("backpack.copyKey")})]}):o(ie,{children:t("backpack.noKey")})]}):o(U,{pending:l.pending,onClick:m,children:[o(W,{name:"key",size:14}),t("backpack.reveal")]}),o(ae,{a:l,captchaSection:"backpack"})]})}var Kf=/^1[3-9]\d{9}$|^\+[1-9]\d{6,14}$/,Jf=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,ql=(e,t)=>e==="phone"?Kf.test(t):Jf.test(t),Po=(e,t)=>e==="phone"?mr(t):gr(t);function Vl(){let e=Re(()=>H("/auth/me"));if(e.state==="loading")return o(Te,{panels:3,rows:2});if(e.state==="signedOut")return o(De,{});if(e.state==="error")return o(Oe,{error:e.error,onRetry:e.retry});let t=e.data;return o(R,{children:[o(Yf,{me:t,onBound:(n,r)=>e.update(a=>({...a,[n]:r}))}),o(em,{me:t}),o(om,{}),o(rm,{me:t})]})}function Ba(){let e=Zs(),t=re();return{cd:e,a:t,send:(a,i,s)=>t.run(async()=>{let l=await H("/auth/send-code",{method:"POST",body:{target:a,type:i,purpose:s}});return l.ok?(e.start(60),{success:{key:"sec.codeSent"}}):Ae(l)}),reset:()=>{e.stop(),t.clear()}}}function Yf(e){let{t}=K(),[n,r]=T(null),[a,i]=T(null);return o(fe,{icon:"key",title:t("sec.methods.title"),desc:t("sec.methods.desc"),children:["phone","email"].map(s=>{let l=e.me[s];return o(R,{children:[o(Le,{label:t(s==="phone"?"account.contact.phone":"account.contact.email"),desc:l?Po(s,l):t("account.contact.unbound"),children:o(U,{onClick:()=>{i(null),r(n===s?null:s)},children:t(n===s?"common.cancel":l?"sec.change":"sec.bind")})}),n===s&&o(Zf,{kind:s,current:l??null,onDone:c=>{e.onBound(s,c),r(null),i(s)}}),a===s&&n!==s&&o(ze,{children:o("div",{class:"fx-msg is-ok",role:"status",children:t(s==="phone"?"sec.phoneBound":"sec.emailBound")})})]},s)})})}function Zf(e){let{t}=K(),{kind:n}=e,[r,a]=T(""),[i,s]=T(""),l=Ba(),c=re(),d=r.trim(),f=n==="phone"?"err.phoneInvalid":"err.emailInvalid",p=()=>{if(!ql(n,d)){l.a.run(async()=>({error:{key:f}}));return}l.send(d,n,"bind")},u=()=>void c.run(async()=>{if(!ql(n,d))return{error:{key:f}};if(!i.trim())return{error:{key:"err.codeRequired"}};let h=n==="phone"?{phone:d,verification_code:i.trim()}:{email:d,verification_code:i.trim()},m=await H(n==="phone"?"/auth/bind-phone":"/auth/bind-email",{method:"POST",body:h});if(!m.ok)return Ae(m);e.onDone(d)});return o(ze,{class:"fx-form",children:[o("label",{class:"fx-field",children:[o("span",{children:e.current?t(n==="phone"?"sec.newPhone":"sec.newEmail"):t(n==="phone"?"sec.phone":"sec.email")}),o("input",{class:"fx-input",type:n==="phone"?"tel":"email",value:r,autoComplete:"off",placeholder:t(n==="phone"?"sec.phonePlaceholder":"sec.emailPlaceholder"),onInput:h=>a(h.currentTarget.value)})]}),o(Ua,{code:i,setCode:s,sender:l,onSend:p}),o("div",{class:"fx-inline",children:o(U,{variant:"primary",pending:c.pending,onClick:u,children:t("sec.bindSubmit")})}),o(ae,{a:c})]})}function Ua(e){let{t}=K(),{cd:n,a:r}=e.sender;return o("div",{class:"fx-field",children:[o("span",{children:e.label??t("sec.code")}),o("div",{class:"fx-inline",children:[o("input",{class:"fx-input fx-input--code",inputMode:"numeric",autoComplete:"one-time-code",value:e.code,placeholder:t("sec.codePlaceholder"),"aria-label":e.label??t("sec.code"),onInput:a=>e.setCode(a.currentTarget.value)}),o(U,{pending:r.pending,disabled:n.left>0||e.disabled,onClick:e.onSend,children:n.left>0?t("sec.resendIn",{s:n.left}):t("sec.sendCode")})]}),o(ae,{a:r})]})}function Qf(e){let{t}=K(),n=Gs(e.value),r=e.value.length>0,a=[[n.length,t("pw.req.length",{min:8,max:64})],[n.lower,t("pw.req.lower")],[n.upper,t("pw.req.upper")],[n.special,t("pw.req.special")],[n.space,t("pw.req.space")]];return o("ul",{class:"fx-rules","aria-label":t("pw.rulesLabel"),children:a.map(([i,s])=>o("li",{class:i?"is-ok":r?"is-bad":"",children:[i?o(W,{name:"check",size:11}):r?o(W,{name:"x",size:11}):o("span",{class:"fx-rule-dot","aria-hidden":"true"}),o("span",{children:s})]},s))})}function Wl(e,t){let n=js(e);return n.ok?e!==t?{error:{key:"pw.mismatch"}}:null:{error:{key:wa[n.rule]}}}function em(e){let{t}=K(),n=["phone","email"].filter(l=>!!e.me[l]),[r,a]=T("current"),[i,s]=T(!1);return o(fe,{icon:"shield",title:t("pw.title"),desc:t("pw.desc",{min:8,max:64}),actions:o(U,{onClick:()=>s(!i),children:t(i?"common.cancel":"pw.change")}),children:i&&o(ze,{class:"fx-form",children:[o(It,{label:t("pw.modeLabel"),value:r,onChange:a,options:[{value:"current",label:t("pw.mode.current")},{value:"code",label:t("pw.mode.code")}]}),r==="current"?o(tm,{onDone:()=>s(!1)}):n.length?o(nm,{me:e.me,targets:n,onDone:()=>s(!1)}):o(ie,{children:t("pw.codeNeedsContact")})]})})}function jl(e){let{t}=K();return o(R,{children:[o("label",{class:"fx-field",children:[o("span",{children:t("pw.new")}),o("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:e.pw,maxLength:72,onInput:n=>e.setPw(n.currentTarget.value)})]}),o(Qf,{value:e.pw}),o("label",{class:"fx-field",children:[o("span",{children:t("pw.confirm")}),o("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:e.confirm,onInput:n=>e.setConfirm(n.currentTarget.value)})]})]})}function tm(e){let{t}=K(),[n,r]=T(""),[a,i]=T(""),[s,l]=T(""),c=re(),[d,f]=T(!1),p=()=>void c.run(async()=>{if(!n)return{error:{key:"pw.currentRequired"}};let u=Wl(a,s);if(u)return u;let h=await H("/auth/password",{method:"PUT",body:{currentPassword:n,newPassword:a}});return h.ok?(r(""),i(""),l(""),f(!0),{success:{key:"pw.changed"}}):h.status===404?{error:{key:"pw.noPasswordYet"}}:Ae(h)});return o(R,{children:[o("label",{class:"fx-field",children:[o("span",{children:t("pw.current")}),o("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:n,onInput:u=>r(u.currentTarget.value)})]}),o(jl,{pw:a,setPw:i,confirm:s,setConfirm:l}),o("div",{class:"fx-inline",children:[o(U,{variant:"primary",pending:c.pending,onClick:p,children:t("pw.submit")}),d&&o(U,{onClick:e.onDone,children:t("common.done")})]}),o(ae,{a:c})]})}function nm(e){let{t}=K(),[n,r]=T(e.targets[0]),[a,i]=T(""),[s,l]=T(""),[c,d]=T(""),f=Ba(),p=re(),[u,h]=T(!1),m=e.me[n]||"",y=()=>void p.run(async()=>{if(!a.trim())return{error:{key:"err.codeRequired"}};let _=Wl(s,c);if(_)return _;let C=n==="phone"?{phone:m,code:a.trim(),newPassword:s}:{email:m,code:a.trim(),newPassword:s},x=await H("/auth/reset-password",{method:"POST",body:C});return x.ok?(i(""),l(""),d(""),h(!0),{success:{key:"pw.changed"}}):Ae(x)});return o(R,{children:[e.targets.length>1?o(It,{label:t("pw.via"),value:n,onChange:_=>{r(_),i(""),f.reset()},options:e.targets.map(_=>({value:_,label:Po(_,e.me[_])}))}):o(ie,{children:t("pw.codeTo",{target:Po(n,m)})}),o(Ua,{code:a,setCode:i,sender:f,onSend:()=>void f.send(m,n,"reset_password")}),o(jl,{pw:s,setPw:l,confirm:c,setConfirm:d}),o("div",{class:"fx-inline",children:[o(U,{variant:"primary",pending:p.pending,onClick:y,children:t("pw.submitReset")}),u&&o(U,{onClick:e.onDone,children:t("common.done")})]}),o(ae,{a:p})]})}function om(){let{t:e}=K(),t=re(),n=()=>void t.run(async()=>{let r=await H("/auth/logout-all",{method:"POST"});if(!r.ok)return Ae(r);try{await ee().forsionLogout?.()}catch(a){return{error:{raw:Et(a)}}}return{success:{key:"sec.logoutAllDone"}}});return o(fe,{icon:"laptop",title:e("sec.devices.title"),desc:e("sec.devices.desc"),children:[o(Le,{label:e("sec.logoutAll"),desc:e("sec.logoutAllDesc"),children:o(nn,{label:e("sec.logoutAll"),confirmLabel:e("sec.logoutAllConfirm"),pending:t.pending,onConfirm:n})}),(t.error||t.success)&&o(ze,{children:o(ae,{a:t})})]})}function rm(e){let{t}=K(),n=["phone","email"].filter(C=>!!e.me[C]),[r,a]=T(!1),[i,s]=T(n.length?"code":"password"),[l,c]=T(n[0]??null),[d,f]=T(""),[p,u]=T(""),h=Ba(),m=re(),y=l&&e.me[l]||"",_=()=>void m.run(async()=>{if(i==="code"&&!d.trim())return{error:{key:"err.codeRequired"}};if(i==="password"&&!p)return{error:{key:"pw.currentRequired"}};let C=await H("/auth/delete-account",{method:"POST",body:i==="code"?{verification_code:d.trim()}:{password:p}});if(!C.ok)return Ae(C);try{await ee().forsionLogout?.()}catch{}return{success:{key:"del.done"}}});return o(fe,{icon:"alert",danger:!0,title:t("del.title"),desc:t("del.desc"),actions:o(U,{variant:"danger",onClick:()=>{a(!r),m.clear()},children:t(r?"common.cancel":"del.start")}),children:r&&o(ze,{class:"fx-form",children:[o(ie,{tone:"error",children:t("del.warn")}),n.length>0&&o(It,{label:t("del.methodLabel"),value:i,onChange:s,options:[{value:"code",label:t("del.byCode")},{value:"password",label:t("del.byPassword")}]}),i==="code"&&l?o(R,{children:[n.length>1&&o(It,{label:t("pw.via"),value:l,onChange:C=>{c(C),f(""),h.reset()},options:n.map(C=>({value:C,label:Po(C,e.me[C])}))}),o(Ua,{code:d,setCode:f,sender:h,label:t("del.codeLabel",{target:Po(l,y)}),onSend:()=>void h.send(y,l,"delete_account")})]}):o("label",{class:"fx-field",children:[o("span",{children:t("del.passwordLabel")}),o("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:p,onInput:C=>u(C.currentTarget.value)})]}),o("div",{class:"fx-inline",children:o(nn,{variant:"danger",label:t("del.submit"),confirmLabel:t("del.confirm"),pending:m.pending,onConfirm:_})}),o(ae,{a:m})]})})}var Xl=20;function Kl(){let e=Re(async()=>{let[t,n]=await Promise.all([H("/token-quota/my"),H(`/token-quota/my/logs?limit=${Xl}&offset=0`)]);if(!t.ok)return t;let r=n.ok&&Array.isArray(n.data?.logs)?n.data.logs:null;return{ok:!0,status:t.status,data:{dailyLimit:he(t.data?.dailyLimit),logs:r,total:n.ok?he(n.data?.total)??r?.length??0:0,logsFail:n.ok?null:n}}});return e.state==="loading"?o(Te,{panels:3,rows:2}):e.state==="signedOut"?o(De,{}):e.state==="error"?o(Oe,{error:e.error,onRetry:e.retry}):o(R,{children:[o(am,{dailyLimit:e.data.dailyLimit}),o(sm,{base:e.data,onRetry:e.reload})]})}function am(e){let{t,locale:n}=K(),[r,a]=T(30),[i,s]=T({state:"loading"}),[l,c]=T(!1),[d,f]=T(0),p=J(0);X(()=>{let k=++p.current;return c(!0),H(`/usage/stats?days=${r}`).then(A=>{k===p.current&&(c(!1),s(A.ok?{state:"ready",data:A.data??{}}:{state:"error",fail:A}))}),()=>{p.current++}},[r,d]);let u=e.dailyLimit!==null&&e.dailyLimit<0?"usage.unlimitedNote":xr(1,e.dailyLimit)===null?"usage.noLimitNote":null,h=k=>xr(k,e.dailyLimit)??"\u2014",m=o(It,{label:t("usage.range"),value:r,onChange:a,options:[{value:7,label:t("usage.days",{n:7})},{value:30,label:t("usage.days",{n:30})},{value:90,label:t("usage.days",{n:90})}]}),y=i.state==="ready"?i.data:null,_=(y?.byModel??[]).filter(Boolean),C=(y?.byProject??[]).filter(Boolean),x=he(y?.successRate);return o(R,{children:[o(fe,{icon:"chart",title:t("usage.overview.title"),desc:t("usage.overview.desc"),actions:m,children:[i.state==="error"?o("div",{class:"fx-sub",children:o("div",{class:"fx-msg is-error",role:"alert",children:[o("span",{children:bt(dt(i.fail),t)}),o("button",{type:"button",class:"fx-link",onClick:()=>f(k=>k+1),children:t("common.retry")})]})}):o("div",{class:`fx-stats fx-block${l&&y?" is-refreshing":""}`,"aria-busy":l||void 0,children:[o(qa,{label:t("usage.requests"),value:y?we(he(y.totalRequests)??0,n):null,testId:"usage-requests"}),o(qa,{label:t("usage.successRate"),value:y?x===null?"\u2014":`${x.toFixed(1)}%`:null}),o(qa,{label:t("usage.consumption"),value:y?h(y.totalPointsCost):null,sub:t("usage.ofToday"),testId:"usage-consumption"})]}),u&&o("div",{class:"fx-sub fx-sub--tight",children:o(ie,{children:t(u)})})]}),i.state!=="error"&&o(R,{children:[o(fe,{icon:"gauge",title:t("usage.byModel.title"),desc:t("usage.byModel.desc"),children:o(Gl,{loading:!y,empty:t("usage.empty"),head:[t("usage.col.model"),t("usage.col.requests"),t("usage.col.consumption")],rows:_.map(k=>[k.modelName||k.modelId||"\u2014",we(he(k.count)??0,n),h(k.pointsCost)])})}),o(fe,{icon:"laptop",title:t("usage.byApp.title"),desc:t("usage.byApp.desc"),children:o(Gl,{loading:!y,empty:t("usage.empty"),head:[t("usage.col.app"),t("usage.col.requests"),t("usage.col.consumption")],rows:C.map(k=>[Jl(k.projectSource,t("usage.appUnknown")),we(he(k.count)??0,n),h(k.pointsCost)])})})]})]})}var im={tangu:"Tangu","ai-studio":"Forsion AI Studio",desktop:"Forsion Desktop",amadeus:"Amadeus",notebase:"Notebase",calendar:"Forsion Calendar",chat:"Forsion Chat",desk:"Forsion Desk","photo-studio":"Photo Studio",connect:"Forsion Connect"},Jl=(e,t)=>!e||e==="unknown"?t:im[e]??e;function qa(e){return o("div",{class:"fx-stat",children:[o("span",{class:"fx-stat-label",children:e.label}),e.value===null?o("span",{class:"fx-skel fx-skel--stat"}):o("strong",{class:"fx-stat-value","data-testid":e.testId,children:e.value}),e.sub&&o("span",{class:"fx-stat-sub",children:e.sub})]})}function Gl(e){return e.loading?o("div",{class:"fx-sub",children:[o("span",{class:"fx-skel fx-skel--row"}),o("span",{class:"fx-skel fx-skel--row"})]}):e.rows.length?o("div",{class:"fx-table-wrap fx-block",children:o("table",{class:"fx-table",children:[o("thead",{children:o("tr",{children:e.head.map((t,n)=>o("th",{class:n?"is-num":"",children:t},n))})}),o("tbody",{children:e.rows.map((t,n)=>o("tr",{children:t.map((r,a)=>o("td",{class:a?"is-num":"",children:r},a))},n))})]})}):o(rt,{children:e.empty})}function sm(e){let{t,locale:n}=K(),r=Ue(),[a,i]=T(e.base.logs??[]),[s,l]=T(e.base.total),c=re();X(()=>{i(e.base.logs??[]),l(e.base.total)},[e.base]);let d=()=>void c.run(async()=>{let p=await H(`/token-quota/my/logs?limit=${Xl}&offset=${a.length}`);if(!p.ok)return{error:dt(p)};let u=Array.isArray(p.data?.logs)?p.data.logs:[];r.current&&(i(h=>[...h,...u]),l(h=>u.length?he(p.data?.total)??h:a.length))}),f=e.base.dailyLimit;return o(fe,{icon:"clock",title:t("usage.recent.title"),desc:t("usage.recent.desc"),children:[e.base.logsFail?o("div",{class:"fx-sub",children:o("div",{class:"fx-msg is-error",role:"alert",children:[o("span",{children:bt(dt(e.base.logsFail),t)}),o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}):a.length===0?o(rt,{children:t("usage.recentEmpty")}):o("div",{class:"fx-list fx-block",role:"list",children:a.map((p,u)=>o("div",{class:"fx-list-row",role:"listitem",children:[o("span",{class:"fx-list-main",children:[o("strong",{children:[p.modelName||p.modelId||"\u2014",p.success===!1&&o("span",{class:"fx-tag fx-tag--danger",children:t("usage.failed")})]}),o("small",{children:[Ut(p.createdAt,n),Jl(p.projectSource,t("usage.appUnknown"))].join(" \xB7 ")})]}),o("span",{class:"fx-value",children:xr(p.pointsCost,f)??"\u2014"})]},p.id??u))}),a.length>0&&o("div",{class:"settings-panel-footer fx-footer",children:[o("span",{class:"fx-muted",children:t("usage.shown",{shown:we(a.length,n),total:we(Math.max(s,a.length),n)})}),a.length<s&&o(U,{pending:c.pending,onClick:d,children:t("common.loadMore")})]}),c.error&&o("div",{class:"fx-sub fx-sub--tight",children:o(ae,{a:c})})]})}var lm=["plugin","amadeus-plugin","skill","agent","space","theme"],cm=["github","npm","zip"],dm=new Set(["market_npm_invalid","market_npm_source","market_github_source","market_not_found","market_zip_required","market_zip_invalid","market_zip_too_large","market_version_required","market_version_invalid","market_version_mismatch","market_version_not_newer","market_icon_invalid","market_duplicate","market_update_pending","market_stale","market_requirements_invalid","market_requirements_mismatch"]),Zl=e=>`sub.type.${e.replace("-","_")}`,Yl=e=>e==="approved"?"sub.approved":e==="rejected"?"sub.rejected":"sub.pending";function pm({target:e,onDone:t,onCancel:n}){let r=Pt(),a=lr(),i=Ue(),s=re(),[l,c]=T("github"),[d,f]=T({type:"plugin",name:"",summary:"",githubRepoUrl:"",npmPackage:"",version:"",readme:"",description:e?.description||"",tags:(e?.tags||[]).join(", "),minAppVersion:e?.minAppVersion||"",maxAppVersion:e?.maxAppVersion||"",platforms:(e?.platforms||[]).join(", ")}),[p,u]=T(new Set),h=J(null),m=J(null);X(()=>{m.current?.scrollIntoView({block:"start"}),m.current?.querySelector("input")?.focus({preventScroll:!0})},[]);let y=!!e||l==="zip",_=(k,A)=>{f(O=>({...O,[k]:A})),u(O=>new Set([...O,k])),s.clear()},C=()=>void s.run(async()=>{if(!e&&!d.name.trim())return{error:{key:"sub.errName"}};if(!y&&!(l==="github"?d.githubRepoUrl:d.npmPackage).trim())return{error:{key:"sub.errSource"}};let k=h.current?.files?.[0];if(y&&!k)return{error:{key:"sub.errZip"}};if(k&&k.size>50*1024*1024)return{error:{key:"sub.errLarge"}};if(y&&!d.version.trim())return{error:{key:"sub.errVersion"}};let A=ee().cloudInvoke;if(!A)return{error:{key:"err.unavailable"}};let O=e?{summary:d.summary.trim(),version:d.version.trim(),readme:d.readme}:{type:d.type,source:l,name:d.name.trim(),summary:d.summary.trim(),...l==="github"?{githubRepoUrl:d.githubRepoUrl.trim()}:l==="npm"?{npmPackage:d.npmPackage.trim()}:{version:d.version.trim(),readme:d.readme}},q=Object.fromEntries(["description","tags","minAppVersion","maxAppVersion","platforms"].filter(Y=>!e||p.has(Y)).map(Y=>[Y,d[Y].trim()])),N=y&&k?new Uint8Array(await k.arrayBuffer()):null;if(!i.current)return;let B=cr(await A("cloud:marketSubmit",{...e?{id:e.id}:{},fields:{...O,...q},...N&&k?{zip:{name:k.name,data:N}}:{}}));if(i.current){if(!B.ok)return B.status===401&&ee().authStatus?.().catch(()=>{}),dm.has(B.code||"")?{error:{key:`sub.err.${B.code}`}}:Ae(B);t()}}),x=(k,A,O="")=>o("label",{class:"fx-sub-field",for:`${a}-${k}`,children:[o("span",{children:A}),o("input",{id:`${a}-${k}`,value:d[k],placeholder:O,maxLength:k==="summary"?2e3:500,onInput:q=>_(k,q.currentTarget.value)})]});return o(fe,{title:e?r("sub.updateTitle",{name:e.name}):r("sub.new"),children:o("form",{ref:m,class:"fx-sub-form",onSubmit:k=>{k.preventDefault(),C()},children:[o("fieldset",{disabled:s.pending,children:[!e&&o(R,{children:[o("div",{class:"fx-sub-columns",children:[o("label",{class:"fx-sub-field",for:`${a}-type`,children:[o("span",{id:`${a}-type-label`,children:r("sub.type")}),o("select",{"aria-labelledby":`${a}-type-label`,id:`${a}-type`,value:d.type,onChange:k=>_("type",k.currentTarget.value),children:lm.map(k=>o("option",{value:k,children:r(Zl(k))},k))})]}),o("label",{class:"fx-sub-field",for:`${a}-source`,children:[o("span",{id:`${a}-source-label`,children:r("sub.source")}),o("select",{"aria-labelledby":`${a}-source-label`,id:`${a}-source`,value:l,onChange:k=>{c(k.currentTarget.value),s.clear()},children:cm.map(k=>o("option",{value:k,children:k==="github"?"GitHub":k==="npm"?"npm":"ZIP"},k))})]})]}),x("name",r("sub.name"))]}),o(ie,{children:e?`${r("sub.identity")}: ${e.id}`:r("sub.identityHint")}),x("summary",r("sub.summary"),e?r("sub.keep"):""),o("label",{class:"fx-sub-field",for:`${a}-description`,children:[o("span",{children:r("sub.description")}),o("textarea",{id:`${a}-description`,value:d.description,rows:3,maxLength:2e5,onInput:k=>_("description",k.currentTarget.value)})]}),x("tags",r("sub.tags"),r("sub.tagsHint")),o("div",{class:"fx-sub-columns",children:[x("minAppVersion",r("sub.minAppVersion"),"2.13.0"),x("maxAppVersion",r("sub.maxAppVersion"),r("sub.optional"))]}),x("platforms",r("sub.platforms"),"desktop, android, ios, web"),o(ie,{children:r("sub.requirementsHint")}),y?o(R,{children:[o("label",{class:"fx-sub-field",for:`${a}-zip`,children:[o("span",{id:`${a}-zip-label`,children:r("sub.zip")}),o("input",{"aria-labelledby":`${a}-zip-label`,id:`${a}-zip`,type:"file",accept:".zip,application/zip",ref:h}),o("small",{children:r("sub.zipHint")})]}),x("version",r("sub.version"),e?.version?`> ${e.version}`:"1.0.0"),e&&o(ie,{children:r("sub.versionHint")}),o("label",{class:"fx-sub-field",for:`${a}-readme`,children:[o("span",{children:r("sub.readme")}),o("textarea",{id:`${a}-readme`,value:d.readme,rows:5,maxLength:2e5,placeholder:e?r("sub.keep"):"",onInput:k=>_("readme",k.currentTarget.value)})]})]}):o(R,{children:[l==="github"?x("githubRepoUrl",r("sub.repo"),"https://github.com/owner/repo"):x("npmPackage",r("sub.npm"),"@scope/plugin-name"),o(ie,{children:r(l==="github"?"sub.repoHint":"sub.npmHint")})]}),o(ie,{children:r("sub.reviewHint")})]}),o("div",{class:"fx-sub-actions",children:[o(U,{variant:"primary",pending:s.pending,submit:!0,children:r("sub.submit")}),o(U,{disabled:s.pending,onClick:n,children:r("common.cancel")})]}),o(ae,{a:s,captchaSection:"submission"})]})})}function um({items:e,reload:t}){let n=Pt(),r=lr(),[a,i]=T("all"),[s,l]=T(null),[c,d]=T(null),f=u=>{d(null),l(u)},p=e.filter(u=>a==="all"||(a==="pending"?u.status==="pending"||!!u.pendingUpdate:u.status===a));return o(R,{children:[s&&o(pm,{target:s==="new"?null:s,onCancel:()=>l(null),onDone:()=>{d(s==="new"?"sub.submitted":"sub.updated"),l(null),t()}},s==="new"?"new":s.id),o(fe,{title:n("sub.mine"),desc:n("sub.desc"),actions:o(R,{children:[o(U,{variant:"primary",disabled:!!s,onClick:()=>f("new"),children:n("sub.new")}),o(U,{disabled:!!s,onClick:t,children:n("sub.refresh")})]}),children:[c&&o("p",{class:"fx-msg is-ok fx-sub-result",role:"status",children:n(c)}),!!e.length&&o("div",{class:"fx-sub-filter",children:[o("label",{for:r,children:n("sub.filter")}),o("select",{id:r,value:a,onChange:u=>i(u.currentTarget.value),children:[o("option",{value:"all",children:n("sub.all")}),["pending","approved","rejected"].map(u=>o("option",{value:u,children:n(Yl(u))},u))]})]}),p.length?p.map(u=>o("article",{class:"fx-sub-item","data-submission-id":u.id,children:[o("div",{class:"fx-sub-item-head",children:[o("strong",{children:u.name}),o("span",{class:`fx-tag ${u.status==="approved"?"fx-status--resolved":u.status==="rejected"?"fx-tag--danger":"fx-tag--accent"}`,children:n(Yl(u.status))})]}),o("div",{class:"fx-sub-meta",children:[o("span",{children:u.id}),o("span",{children:n(Zl(u.type))}),o("span",{children:u.source==="github"?"GitHub":u.source==="npm"?"npm":"ZIP"}),u.version&&o("span",{children:["v",u.version]}),o("span",{children:n("sub.downloads",{n:u.downloads||0})})]}),u.summary&&o("p",{class:"fx-sub-summary",children:u.summary}),u.status==="rejected"&&u.reviewNote&&o(ie,{tone:"error",children:u.reviewNote}),u.rejectedUpdate&&o(ie,{tone:"error",children:[n("sub.rejectedVersion",{version:u.rejectedUpdate.version}),u.rejectedUpdate.note?`: ${u.rejectedUpdate.note}`:""]}),u.pendingUpdate?o(ie,{children:n("sub.pendingVersion",{version:u.pendingUpdate.version})}):u.source==="zip"?o(U,{disabled:!!s,onClick:()=>f(u),children:n("sub.update")}):o(ie,{children:n("sub.remoteUpdate")})]},u.id)):o(rt,{children:e.length?n("sub.noResults"):o(R,{children:[o("strong",{children:n("sub.empty")}),o("p",{children:n("sub.emptyHint")})]})})]})]})}function Ql(){let e=Re(()=>H("/market/mine"));switch(e.state){case"loading":return o(Te,{});case"signedOut":return o(De,{});case"error":return o(Oe,{error:e.error,onRetry:e.retry});case"ready":return o(um,{items:e.data?.items||[],reload:e.reload})}}var fm=e=>!!e&&typeof e=="object"&&typeof e.enabled=="boolean";async function Ha(e,t){let n=ee().cloudInvoke;if(!n)throw new Error("no_bridge");let r=await n(e,t);if(!fm(r))throw new Error(String(r?.error??"unavailable"));return r}var mm=["diag.item.app","diag.item.settings","diag.item.agents","diag.item.plugins","diag.item.runs"];function ec(){let[e,t]=T(0);return X(()=>ee().onAuthChanged?.(()=>t(n=>n+1)),[]),o(gm,{standalone:!0},e)}function gm({standalone:e=!1}={}){let{t,locale:n}=K(),r=Ue(),[a,i]=T(null),[s,l]=T(!1),c=re(),d=re();if(X(()=>{let y=!1,_=0,C=()=>{let k=++_;Ha("diagnostics:get").then(A=>{!y&&k===_&&(i(A),l(!0))},()=>{!y&&k===_&&(i(null),l(!0))})};C();let x=ee().onAuthChanged?.(C);return()=>{y=!0,x?.()}},[]),!a?.signedIn)return e?s?a?o(De,{}):o(rt,{children:t("diag.unavailable")}):o(Te,{panels:1}):null;let f=()=>void d.run(async()=>{try{let y=await Ha("diagnostics:uploadNow");return r.current&&i(y),y.lastError?{error:{key:"diag.failed",vars:{reason:y.lastError}}}:y.enabled&&y.lastUploadAt?{success:{key:"diag.uploaded"}}:void 0}catch(y){return{error:{raw:Et(y)||t("err.generic")}}}}),p=async y=>{let _=!1;await c.run(async()=>{d.clear();try{let C=await Ha("diagnostics:set",y);r.current&&i(C),_=!0}catch(C){return{error:{raw:Et(C)||t("err.generic")}}}}),_&&y.enabled&&r.current&&f()},u=a.intervalHours??24,h=a.mode==="manual"?t("diag.freq.manual"):u===1?t("diag.freq.hour"):u%24===0?u===24?t("diag.freq.day"):t("diag.freq.days",{n:u/24}):t("diag.freq.hours",{n:u}),m=`${a.lastUploadAt?t("diag.last",{time:Ut(a.lastUploadAt,n)}):t("diag.noUpload")} \xB7 ${h}`;return o(fe,{icon:"chart",title:t("diag.title"),desc:t("diag.desc"),children:[o(Le,{label:t("diag.enable"),desc:t("diag.enableDesc"),children:o(Mt,{checked:a.enabled,disabled:c.pending,label:t("diag.enable"),onChange:y=>void p({enabled:y})})}),o(ze,{class:"fx-diag",children:[o("strong",{children:t("diag.collected")}),o("ul",{children:mm.map(y=>o("li",{children:t(y)},y))}),o(ie,{children:t("diag.notCollected")})]}),a.sessions!==void 0&&o(Le,{label:t("diag.sessions"),desc:t("diag.sessionsDesc"),children:o(Mt,{checked:a.sessions,disabled:c.pending,label:t("diag.sessions"),onChange:y=>void p({sessions:y})})}),a.memory!==void 0&&o(Le,{label:t("diag.memory"),desc:t("diag.memoryDesc"),children:o(Mt,{checked:a.memory,disabled:c.pending,label:t("diag.memory"),onChange:y=>void p({memory:y})})}),o(Le,{label:t("diag.activity"),desc:t("diag.activityDesc"),children:o(Mt,{checked:a.activity,disabled:c.pending,label:t("diag.activity"),onChange:y=>void p({activity:y})})}),a.enabled&&o("div",{class:"settings-panel-footer fx-footer",children:[o("span",{class:"fx-muted",children:m}),o(U,{pending:d.pending,disabled:c.pending,onClick:f,children:t("diag.uploadNow")})]}),o(ze,{class:"fx-sub--tight",children:[o(ie,{children:t("diag.retention",{n:a.retainDays})}),a.enabled&&a.lastError&&!d.error&&!d.success&&o("div",{class:"fx-msg is-error",role:"alert",children:t("diag.failed",{reason:a.lastError})}),o(ae,{a:c}),o(ae,{a:d})]})]})}var Mo=20,kr=5,hm=5*1024*1024,wr=1e4,bm={open:"fb.status.open",in_progress:"fb.status.in_progress",resolved:"fb.status.resolved",closed:"fb.status.closed"};function nc(e){let{t}=K(),n=e.status||"open",r=bm[n];return o("span",{class:`fx-tag fx-status fx-status--${n}`,children:r?t(r):n})}function oc(){let[e,t]=T(null),n=Re(async()=>{let r=await H(`/feedback?limit=${Mo}&offset=0`);return r.ok?{ok:!0,status:r.status,data:Array.isArray(r.data?.tickets)?r.data.tickets:[]}:r});return n.state==="loading"?o(Te,{panels:1,rows:3}):n.state==="signedOut"?o(De,{}):n.state==="error"?o(Oe,{error:n.error,onRetry:n.retry}):e?o(wm,{id:e,onBack:()=>{t(null),n.reload()}}):o(vm,{first:n.data,onOpen:t,onChanged:n.reload})}function vm(e){let{t,locale:n}=K(),r=Ue(),[a,i]=T(e.first),[s,l]=T(e.first.length===Mo),[c,d]=T(!1),[f,p]=T(!1),u=re();X(()=>{i(e.first),l(e.first.length===Mo)},[e.first]);let h=()=>void u.run(async()=>{let m=await H(`/feedback?limit=${Mo}&offset=${a.length}`);if(!m.ok)return{error:dt(m)};let y=Array.isArray(m.data?.tickets)?m.data.tickets:[];r.current&&(i(_=>{let C=new Set(_.map(x=>x.id));return[..._,...y.filter(x=>!C.has(x.id))]}),l(y.length===Mo))});return o(fe,{icon:"message",title:t("fb.list.title"),desc:t("fb.list.desc"),actions:c?void 0:o(U,{variant:"primary",onClick:()=>{p(!1),d(!0)},children:[o(W,{name:"plus",size:12})," ",t("fb.new")]}),children:[c&&o(km,{onCancel:()=>d(!1),onSubmitted:()=>{d(!1),p(!0),e.onChanged()}}),f&&!c&&o(ze,{children:o("div",{class:"fx-msg is-ok",role:"status",children:t("fb.submitted")})}),a.length===0?o(rt,{children:t("fb.empty")}):o("div",{class:"fx-list fx-block",role:"list",children:a.map(m=>o("button",{type:"button",class:"fx-list-row fx-list-row--button",role:"listitem",onClick:()=>e.onOpen(m.id),children:[o("span",{class:`fx-dot${m.user_unread?" is-on":""}`,"aria-label":m.user_unread?t("fb.unread"):void 0}),o("span",{class:"fx-list-main",children:[o("strong",{children:m.title||(m.description||"").slice(0,60)||t("fb.untitled")}),o("small",{children:Ut(m.updated_at||m.created_at,n)})]}),o(nc,{status:m.status}),o(W,{name:"chevron",size:12})]},m.id))}),a.length>0&&(s||u.error)&&o("div",{class:"settings-panel-footer fx-footer",children:[o("span",{class:"fx-muted",children:t("fb.shown",{n:we(a.length,n)})}),s&&o(U,{pending:u.pending,onClick:h,children:t("common.loadMore")})]}),u.error&&o(ze,{children:o(ae,{a:u})})]})}function ym(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result||"")),r.onerror=()=>n(r.error||new Error("read failed")),r.readAsDataURL(e)})}var xm=0;function km(e){let{t}=K(),n=Ue(),[r,a]=T(""),[i,s]=T([]),[l,c]=T(null),[d,f]=T(!1),p=J(null),u=re(),[h,m]=T(0),y=J(0);y.current=i.length;let _=async x=>{c(null);for(let k of Array.from(x||[])){if(!k.type||!k.type.startsWith("image/")){c({key:"err.imageType"});continue}if(k.size>hm){c({key:"err.imageTooLarge"});continue}if(y.current>=kr){c({key:"err.tooManyImages"});break}y.current++,m(A=>A+1);try{let A=await ym(k);if(!n.current)return;let O={id:`img-${++xm}`,filename:k.name||"image",mime_type:k.type,size:k.size,data_base64:A.replace(/^data:[^;]+;base64,/,""),url:A};s(q=>q.length>=kr?q:[...q,O])}catch{y.current--,c({key:"err.imageRead"})}finally{n.current&&m(A=>A-1)}}},C=()=>void u.run(async()=>{let x=r.trim();if(!x)return{error:{key:"err.feedbackEmpty"}};if(x.length>wr)return{error:{key:"err.feedbackTooLong"}};let k=i.map(({filename:O,mime_type:q,size:N,data_base64:B})=>({filename:O,mime_type:q,size:N,data_base64:B})),A=await H("/feedback",{method:"POST",body:{description:x,attachments:k},timeoutMs:12e4});if(!A.ok)return Ae(A);e.onSubmitted()});return o("div",{class:`fx-sub fx-form fx-composer${d?" is-drag":""}`,onPaste:x=>{let k=Array.from(x.clipboardData?.items||[]).filter(A=>A.kind==="file").map(A=>A.getAsFile()).filter(Boolean);k.length&&(x.preventDefault(),_(k))},onDragOver:x=>{x.preventDefault(),f(!0)},onDragLeave:()=>f(!1),onDrop:x=>{x.preventDefault(),f(!1),_(x.dataTransfer?.files)},children:[o("label",{class:"fx-field",children:[o("span",{children:t("fb.descLabel")}),o("textarea",{class:"fx-input fx-textarea",rows:5,value:r,maxLength:wr,autoFocus:!0,placeholder:t("fb.descPlaceholder"),onInput:x=>a(x.currentTarget.value)})]}),o("p",{class:"fx-note",children:t("fb.imagesHint",{n:kr})}),i.length>0&&o("div",{class:"fx-thumbs",children:i.map(x=>o("span",{class:"fx-thumb",children:[o("img",{src:x.url,alt:x.filename}),o("button",{type:"button","aria-label":t("fb.removeImage"),title:t("fb.removeImage"),onClick:()=>{s(k=>k.filter(A=>A.id!==x.id)),c(null)},children:o(W,{name:"x",size:11})})]},x.id))}),l&&o("div",{class:"fx-msg is-error",role:"alert",children:bt(l,t)}),o("input",{ref:p,type:"file",accept:"image/*",multiple:!0,hidden:!0,onChange:x=>{let k=x.currentTarget;_(k.files),k.value=""}}),o("div",{class:"fx-inline",children:[o(U,{disabled:i.length>=kr||u.pending,onClick:()=>p.current?.click(),children:[o(W,{name:"image",size:12})," ",t("fb.addImages")]}),o("span",{class:"fx-grow"}),o(U,{disabled:u.pending,onClick:e.onCancel,children:t("common.cancel")}),o(U,{variant:"primary",pending:u.pending,disabled:h>0,onClick:C,children:t("fb.submit")})]}),o(ae,{a:u})]})}function wm(e){let{t,locale:n}=K(),[r,a]=T({state:"loading"}),[i,s]=T(0),[l,c]=T(""),[d,f]=T(null),p=re(),u=J(0);X(()=>{let A=++u.current;return H(`/feedback/${encodeURIComponent(e.id)}`).then(O=>{if(A===u.current){if(!O.ok){a({state:"error",fail:O});return}a({state:"ready",data:{ticket:O.data.ticket,replies:O.data.replies??[],attachments:O.data.attachments??[]}}),H(`/feedback/${encodeURIComponent(e.id)}/read`,{method:"POST"})}}),()=>{u.current++}},[e.id,i]),X(()=>{if(!d)return;let A=O=>{O.key==="Escape"&&f(null)};return window.addEventListener("keydown",A),()=>window.removeEventListener("keydown",A)},[d]);let h=o("div",{class:"fx-back",children:o(U,{onClick:e.onBack,children:[o(W,{name:"back",size:12})," ",t("fb.back")]})});if(r.state==="loading")return o(R,{children:[h,o(Te,{panels:1,rows:3})]});if(r.state==="error")return o(R,{children:[h,o(Oe,{error:dt(r.fail),onRetry:()=>{a({state:"loading"}),s(A=>A+1)}})]});let{ticket:m,replies:y,attachments:_}=r.data,C=m.status==="closed",x=A=>_.filter(O=>(O.reply_id??null)===A),k=()=>void p.run(async()=>{let A=l.trim();if(!A)return{error:{key:"err.replyEmpty"}};if(A.length>wr)return{error:{key:"err.replyTooLong"}};let O=await H(`/feedback/${encodeURIComponent(m.id)}/replies`,{method:"POST",body:{content:A},timeoutMs:6e4});return O.ok?(c(""),s(q=>q+1),{success:{key:"fb.replySent"}}):Ae(O)});return o(R,{children:[h,o(fe,{icon:"message",title:m.title||t("fb.untitled"),actions:o(nc,{status:m.status}),desc:`#${String(m.id).slice(0,8)} \xB7 ${Ut(m.created_at,n)}`,children:[o("div",{class:"fx-thread fx-block",children:[o(tc,{who:"user",when:m.created_at,text:m.description||"",files:x(null),onZoom:f}),y.map((A,O)=>o(tc,{who:A.author_role==="user"?"user":"admin",when:A.created_at,text:A.content||"",files:A.id?x(A.id):[],onZoom:f},A.id??O))]}),C?o(ze,{children:o(ie,{children:t("fb.closedNote")})}):o(ze,{class:"fx-form",children:[o("textarea",{class:"fx-input fx-textarea",rows:3,value:l,maxLength:wr,placeholder:t("fb.replyPlaceholder"),"aria-label":t("fb.replyPlaceholder"),onInput:A=>{c(A.currentTarget.value),p.success&&p.clear()}}),o("div",{class:"fx-inline",children:[o("span",{class:"fx-grow"}),o(U,{variant:"primary",pending:p.pending,onClick:k,children:t("fb.replySend")})]}),o(ae,{a:p})]})]}),d&&o("div",{class:"fx-lightbox",role:"dialog","aria-label":t("fb.imagePreview"),onClick:()=>f(null),children:o("img",{src:d,alt:""})})]})}function tc(e){let{t,locale:n}=K();return o("div",{class:`fx-bubble fx-bubble--${e.who}`,children:[o("div",{class:"fx-bubble-meta",children:[e.who==="user"?t("fb.you"):t("fb.support")," \xB7 ",Ut(e.when,n)]}),o("div",{class:"fx-bubble-text",children:e.text}),e.files.length>0&&o("div",{class:"fx-thumbs",children:e.files.map((r,a)=>{let i=r.mime_type||"";if(i.startsWith("image/")&&r.data_base64){let s=`data:${i};base64,${r.data_base64}`;return o("button",{type:"button",class:"fx-thumb",onClick:()=>e.onZoom(s),"aria-label":t("fb.imagePreview"),children:o("img",{src:s,alt:r.filename||""})},r.id??a)}return o("span",{class:"fx-tag",children:[o(W,{name:"card",size:11})," ",r.filename||t("fb.attachment")]},r.id??a)})})]})}var ac=[{id:"monthly",field:"priceMonthly",discount:"recurringPriceMonthly"},{id:"quarterly",field:"priceQuarterly",discount:"recurringPriceQuarterly"},{id:"yearly",field:"priceYearly",discount:"recurringPriceYearly"}];function rc(e,t){let n=ac.find(s=>s.id===t),r=he(e.priceMonthly)??0,a=(he(e[n.field])??0)||(t==="quarterly"?Math.round(r*300)/100:0),i=he(e[n.discount])??0;return i>0&&i<a?i:a}function Va(e,t,n){let r=we(e,n),a=String(t||"CNY").toUpperCase();return a==="CNY"?`\xA5${r}`:a==="USD"?`$${r}`:`${r} ${a}`}async function zm(){let[e,t,n]=await Promise.all([H("/membership/my"),H("/credits/balance"),H("/features")]);return!e.ok&&Mn(e)?e:!t.ok&&Mn(t)?t:{ok:!0,status:200,data:{membership:e.ok?e.data?.membership??null:null,membershipFailed:!e.ok,balance:t.ok?he(t.data?.balance):null,balanceFailed:!t.ok,features:n.ok&&n.data&&typeof n.data=="object"?n.data:{}}}}async function Wa(e,t){let[n,r]=await Promise.all([zm(),H(e)]);return n.ok?r.ok?{ok:!0,status:r.status,data:{status:n.data,list:t(r.data)}}:r:n}var ja=e=>(Array.isArray(e)?e:[]).filter(t=>!!t&&typeof t=="object"&&t.isActive!==!1),_m=15*6e4;function Ga(e){let t=J(0),n=J(0),r=J(e);return r.current=e,X(()=>{let a=()=>{let i=Date.now();i>t.current||document.visibilityState==="hidden"||i-n.current<2e3||(n.current=i,r.current?.())};return window.addEventListener("focus",a),document.addEventListener("visibilitychange",a),()=>{window.removeEventListener("focus",a),document.removeEventListener("visibilitychange",a)}},[]),()=>{t.current=Date.now()+_m}}function ic(e){let t=e.membership;return t&&(t.status===void 0||t.status==="active")?t:null}function Xa(e){let{t,locale:n}=K(),r=e.status,a=ic(r),i=To(a?.tier),s=i==="Free";return o("section",{class:"fx-shop-strip","aria-label":t("store.status"),children:[o("div",{class:"fx-shop-stat",children:[o("small",{children:t("store.tier")}),r.membershipFailed?o("b",{class:"is-empty",children:"\u2014"}):o("b",{"data-testid":"shop-tier",children:[s?t("member.freeName"):a?.plan?.name||i,!s&&o("i",{children:a?.expiresAt?t("member.expires",{date:hr(a.expiresAt,n)}):t("member.noExpiry")})]})]}),o("div",{class:"fx-shop-stat",children:[o("small",{children:t("store.balance")}),o("b",{class:r.balance===null?"is-empty":"","data-testid":"shop-balance",children:r.balance===null?"\u2014":we(r.balance,n)})]}),(r.membershipFailed||r.balanceFailed)&&o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")}),o("span",{class:"fx-grow"}),e.children]})}function Ka(e){return o("section",{class:"fx-shop-section",children:[o("div",{class:"fx-shop-head",children:[o("div",{children:[o("h2",{children:e.title}),e.desc&&o("p",{children:e.desc})]}),e.right]}),e.children]})}function Ja(e){let t=re(),[n,r]=T(null),a=(i,s,l,c)=>{r(i),t.run(async()=>{if(!await mn(s,l,c))return{error:{key:"err.openFailed"}};e()})};return{a:t,payingId:t.pending?n:null,open:a}}function Ya(e){return o(U,{variant:"ghost",pending:e.pending,disabled:e.disabled,onClick:e.onClick,children:[e.label,o(W,{name:"external",size:12})]})}function Za(e){return o("div",{class:"fx-shop-empty",children:e.children})}function sc(){let{t:e,locale:t}=K(),n=Re(()=>Wa("/payment/offerings",h=>ja(h?.membershipPlans))),r=Ga(n.state==="ready"?n.reload:null),a=Ja(r),[i,s]=T("monthly");if(n.state==="loading")return o(Te,{panels:2,rows:2});if(n.state==="signedOut")return o(De,{});if(n.state==="error")return o(Oe,{error:n.error,onRetry:n.retry});let{status:l,list:c}=n.data,d=l.features.payment!==!1,f=ac.filter(h=>c.some(m=>rc(m,h.id)>0)),p=f.some(h=>h.id===i)?i:f[0]?.id??"monthly",u=ic(l)?.tier?.toLowerCase()??null;return o(R,{children:[o(Xa,{status:l,onRetry:n.reload}),o(Ka,{title:e("store.choosePlan"),desc:e(d?"store.payHint":"store.payOff"),right:f.length>1?o(It,{value:p,label:e("store.period"),onChange:s,options:f.map(h=>({value:h.id,label:e(`store.period.${h.id}`)}))}):void 0,children:[c.length===0?o(Za,{children:e("store.noPlans")}):o("div",{class:"fx-shop-tiers",children:c.map(h=>{let m=rc(h,p),y=!!u&&!l.membershipFailed&&h.tier?.toLowerCase()===u;return o("article",{class:"fx-shop-tier","data-tier":h.tier,children:[o("h3",{children:[h.name||To(h.tier),y&&o("span",{class:"fx-shop-current",children:[o(W,{name:"check",size:12}),e("store.currentTier")]})]}),o("div",{class:"fx-shop-price",children:m>0?o(R,{children:[Va(m,h.currency,t),o("small",{children:e(`store.per.${p}`)})]}):"\u2014"}),o("p",{children:h.description}),d&&m>0&&o(Ya,{label:e(y?"member.renew":"store.pay"),pending:a.payingId===h.id,disabled:a.a.pending,onClick:()=>a.open(h.id,"membership",h.id,p)})]},h.id)})}),o(ae,{a:a.a})]})]})}function lc(){let{t:e,locale:t}=K(),n=Re(()=>Wa("/payment/offerings",c=>ja(c?.packages))),r=Ga(n.state==="ready"?n.reload:null),a=Ja(r);if(n.state==="loading")return o(Te,{panels:2,rows:2});if(n.state==="signedOut")return o(De,{});if(n.state==="error")return o(Oe,{error:n.error,onRetry:n.retry});let{status:i,list:s}=n.data,l=i.features.payment!==!1;return o(R,{children:[o(Xa,{status:i,onRetry:n.reload}),o(Ka,{title:e("store.packs"),desc:e(l?"store.packsHint":"store.payOff"),children:[s.length===0?o(Za,{children:e("store.noPacks")}):o("div",{class:"fx-shop-grid",children:s.map(c=>{let d=he(c.price)??0;return o(cc,{icon:"coins",kind:e("store.kind.pack"),name:`${c.name||""} \xB7 ${e("store.nPoints",{n:we(c.credits,t)})}`,desc:c.description,meta:e("store.instant"),children:l&&d>0&&o(Ya,{label:e("store.payPrice",{price:Va(d,c.currency,t)}),pending:a.payingId===c.id,disabled:a.a.pending,onClick:()=>a.open(c.id,"credits")})},c.id)})}),o(ae,{a:a.a})]})]})}function cc(e){return o("article",{class:"fx-shop-card",children:[o("div",{class:"fx-shop-visual","aria-hidden":"true",children:e.emoji?o("span",{class:"fx-shop-emoji",children:e.emoji}):o(W,{name:e.icon,size:18})}),o("div",{class:"fx-shop-body",children:[o("span",{class:"fx-shop-kind",children:e.kind}),o("strong",{children:e.name}),e.desc&&o("p",{children:e.desc}),o("div",{class:"fx-shop-foot",children:[o("span",{class:"fx-shop-meta",children:e.meta}),o("span",{class:"fx-shop-acts",children:e.children})]}),e.below]})]})}var Sm={reset_card:"store.kind.card",api_quota_key:"store.kind.code"};function Cm(e){let{t,locale:n}=K(),{p:r}=e,a=re(),[i,s]=T(null),[l,c]=T(!1),d=he(r.pricePoints)??0,f=he(r.priceRmb)??0,p=typeof r.availableKeys=="number"&&r.availableKeys<=0,u=d>0&&e.balance!==null&&e.balance<d,h=()=>void a.run(async()=>{let y=await H("/shop/purchase",{method:"POST",body:{productId:r.id,payMethod:"points"},timeoutMs:3e4});return y.ok?(s(typeof y.data?.key=="string"&&y.data.key?y.data.key:null),e.onRedeemed(),{success:{key:"store.redeemed"}}):y.status===0?(c(!0),{error:{key:"store.uncertain"}}):Ae(y)}),m=p?t("store.soldOut"):u?t("err.insufficientPoints"):typeof r.availableKeys=="number"?t("store.left",{n:r.availableKeys}):t("store.toBackpack");return o(cc,{icon:r.type==="api_quota_key"?"key":"gift",emoji:r.icon,kind:t(Sm[r.type||""]??"store.kind.item"),name:r.name||"",desc:r.description,meta:m,below:o(R,{children:[o(ae,{a}),i&&o("div",{class:"fx-shop-key",children:[o("code",{children:i}),o(qt,{text:i,label:t("backpack.copyKey")})]})]}),children:[d>0&&o(nn,{variant:"primary",pending:a.pending,disabled:p||u||l,label:t("store.redeem",{n:we(d,n)}),confirmLabel:t("store.redeemConfirm",{n:we(d,n)}),onConfirm:h}),e.payment&&f>0&&o(Ya,{label:Va(f,r.currency,n),pending:e.paying,disabled:e.payBusy||p,onClick:e.onPay})]})}function dc(){let{t:e,goTo:t}=K(),n=Re(()=>Wa("/shop/products",d=>ja(d))),r=Ga(n.state==="ready"?n.reload:null),a=Ja(r);if(n.state==="loading")return o(Te,{panels:2,rows:2});if(n.state==="signedOut")return o(De,{});if(n.state==="error")return o(Oe,{error:n.error,onRetry:n.retry});let{status:i,list:s}=n.data,l=i.features.payment!==!1,c=i.features.shop!==!1;return o(R,{children:[o(Xa,{status:i,onRetry:n.reload,children:t&&o(U,{onClick:()=>t("backpack"),children:e("store.openBackpack")})}),o(Ka,{title:e("store.redeemTitle"),desc:e("store.redeemHint"),children:[!c||s.length===0?o(Za,{children:e(c?"store.noItems":"store.itemsOff")}):o("div",{class:"fx-shop-grid",children:s.map(d=>o(Cm,{p:d,balance:i.balance,payment:l,paying:a.payingId===d.id,payBusy:a.a.pending,onPay:()=>a.open(d.id,"storefront"),onRedeemed:n.reload},d.id))}),o(ae,{a:a.a})]})]})}var Tm="forsion-extend",pc=[{id:"account",titleKey:"page.account",tabTitleKey:"page.profile",aliases:["profile"],keywords:"\u4E2A\u4EBA\u4E3B\u9875 profile avatar nickname \u5934\u50CF \u6635\u79F0",Component:Ll},{id:"account-details",parent:"account",titleKey:"account.details.title",keywords:"\u767B\u5F55 \u8D44\u6599 \u624B\u673A \u90AE\u7BB1 \u5207\u6362 \u9000\u51FA login sign-in email phone account switch logout",Component:fl},{id:"security",parent:"account",titleKey:"page.security",keywords:"\u5B89\u5168 \u5BC6\u7801 \u8BBE\u5907 \u7ED1\u5B9A security password devices",Component:Vl},{id:"quota",titleKey:"page.membershipUsage",tabTitleKey:"page.membershipQuota",aliases:["membership"],keywords:"\u4F1A\u5458 \u989D\u5EA6 \u540E\u53F0 quota membership background",Component:Fl},{id:"points",parent:"quota",titleKey:"page.pointsInvite",keywords:"\u79EF\u5206 \u9080\u8BF7 \u5151\u6362 \u5145\u503C points invite redeem credits",Component:Ol},{id:"usage",parent:"quota",titleKey:"page.usage",keywords:"\u7528\u91CF \u8BB0\u5F55 \u6D88\u8017 usage history tokens",Component:Kl},{id:"backpack",titleKey:"page.backpack",keywords:"\u80CC\u5305 \u5361\u5238 backpack inventory",Component:Bl},{id:"submission",titleKey:"page.submission",Component:Ql},{id:"feedback",titleKey:"page.helpDiagnostics",tabTitleKey:"page.feedback",keywords:"\u5E2E\u52A9 \u53CD\u9988 help feedback",Component:oc},{id:"diagnostics",parent:"feedback",titleKey:"diag.title",keywords:"\u8BCA\u65AD \u4E0A\u4F20 \u65E5\u5FD7 diagnostic upload logs",Component:ec}],uc=[{id:"membership",titleKey:"store.membership",descKey:"store.membership.desc",icon:"crown",Component:sc},{id:"points",titleKey:"store.points",descKey:"store.points.desc",icon:"coins",Component:lc},{id:"items",titleKey:"store.items",descKey:"store.items.desc",icon:"package",Component:dc}],Am=e=>`forsion/fx:${Tm}:${e}`;function fc(e){let{ctx:t,page:n}=e,[r,a]=T(()=>Qe(t.getLocale?.()));X(()=>{a(Qe(t.getLocale?.()));let l=t.subscribeLocale?.(c=>a(Qe(c)));return()=>{typeof l=="function"&&l()}},[t]);let i=At(()=>{let l=t.app?.openSettings;return{ctx:t,locale:r,t:pr(r),goTo:typeof l=="function"?c=>l.call(t.app,Am(c)):null}},[t,r]),s=n.Component;return o(za.Provider,{value:i,children:o("div",{class:"fx-acct","data-fx-page":n.id,lang:r==="zh"?"zh-CN":"en",children:[o("style",{children:Bs}),o(s,{})]})})}function mc(e,t=window){let n=t?.tangu;if(!e||!n?.cloudFetch||!n.cloudInvoke||n.unitPage||typeof e.registerStoreView!="function")return 0;let r=a=>()=>Ce(Qe(e.getLocale?.()),a);for(let a of uc)e.registerStoreView({id:a.id,title:r(a.titleKey),description:r(a.descKey),group:r("store.group"),icon:a.icon,mount(i){return Be(o(fc,{ctx:e,page:a}),i),()=>{Be(null,i)}}});return uc.length}function gc(e,t=window){let n=t?.tangu;if(!e||!n?.cloudFetch||!n.cloudInvoke||n.unitPage||typeof e.registerSettingsView!="function")return 0;for(let r of pc)e.registerSettingsView({id:r.id,category:"forsion",parent:r.parent,tabTitle:r.tabTitleKey?()=>Ce(Qe(e.getLocale?.()),r.tabTitleKey):void 0,aliases:r.aliases,keywords:r.keywords,title:()=>Ce(Qe(e.getLocale?.()),r.titleKey),mount(a){return Be(o(fc,{ctx:e,page:r}),a),()=>{Be(null,a)}}});return pc.length}var Zn=[{id:"lv1"},{id:"lv2"},{id:"lv3"},{id:"lv4"},{id:"new",version:"2.14"}],F=(e,t)=>({zh:e,en:t}),gn=[{id:"welcome",level:"lv1",icon:"compass",title:F("\u8BA4\u8BC6 Forsion","Meet Forsion"),tasks:[{id:"guide-open",event:"own:guide.open",goal:1,title:F("\u6253\u5F00\u4F7F\u7528\u6307\u5357","Open the guide")},{id:"space-switch",event:"space.switch",goal:1,title:F("\u5728 Ribbon \u4E0A\u6362\u4E00\u4E2A Space","Switch to another Space from the ribbon"),go:{space:"amadeus"},spot:{anchor:"ribbon-spaces",here:!0,title:F("\u70B9 Ribbon \u4E0A\u4EFB\u610F\u4E00\u4E2A\u56FE\u6807","Click any icon on the ribbon"),body:F("\u6BCF\u4E2A\u56FE\u6807\u662F\u4E00\u4E2A Space\uFF0C\u70B9\u4E00\u4E0B\u5C31\u5207\u8FC7\u53BB\u3002","Each icon is a Space. One click switches to it.")}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon",label:F("Ribbon\uFF1A\u6BCF\u4E2A\u56FE\u6807\u662F\u4E00\u4E2A Space","Ribbon: each icon is a Space")},{slot:"main-tabs",label:F("\u4E3B\u533A\u7684\u6807\u7B7E\u9875","Tabs in the main area"),text:F("\u6807\u7B7E\u9875","Tab")},{slot:["left-list","right"],label:F("\u5DE6\u53F3\u4FA7\u680F","Left and right sidebars")}]}},{id:"chat",level:"lv1",icon:"message-circle",title:F("\u548C Tangu \u8BF4\u7B2C\u4E00\u53E5\u8BDD","Say hello to Tangu"),tasks:[{id:"chat-first",event:"chat.send",goal:1,title:F("\u53D1\u51FA\u7B2C\u4E00\u6761\u6D88\u606F","Send your first message"),go:{space:"tangu",command:"new-chat"},spot:{anchor:"chat-composer",title:F("\u5728\u8FD9\u91CC\u6253\u4E2A\u62DB\u547C","Say hello here"),body:F("\u6253\u5B57\uFF0C\u6309 Enter \u53D1\u9001\uFF1BShift+Enter \u6362\u884C\u3002","Type, then press Enter to send. Shift+Enter starts a new line.")}},{id:"chat-five",event:"chat.send",goal:5,title:F("\u518D\u804A\u51E0\u53E5\uFF08\u7D2F\u8BA1 5 \u6761\uFF09","Keep talking (5 messages in all)"),go:{space:"tangu"},spot:{anchor:"chat-composer",title:F("\u63A5\u7740\u804A\u51E0\u53E5","Keep the conversation going"),body:F("\u7D2F\u8BA1\u53D1\u51FA 5 \u6761\u5C31\u7B97\u5B8C\u6210\u3002","Five messages in all and this one is done.")}}],figure:{layout:"space",main:"chat",marks:[{slot:"left-top",label:F("\u5DE6\u680F\u9876\u90E8\u300C\u65B0\u4F1A\u8BDD\u300D",'"New chat" at the top of the left sidebar'),text:F("\u65B0\u4F1A\u8BDD","New chat")},{slot:"main-bottom",label:F("\u8F93\u5165\u6846","Message box")}]}},{id:"note",level:"lv1",icon:"file-text",title:F("\u5199\u4E0B\u7B2C\u4E00\u7BC7\u7B14\u8BB0","Write your first note"),tasks:[{id:"note-create",event:"note.create",goal:1,title:F("\u65B0\u5EFA\u4E00\u7BC7\u7B14\u8BB0","Create a note"),go:{space:"amadeus",command:"amadeus-new-note"},spot:{anchor:"note-new",title:F("\u70B9\u300C\u65B0\u5EFA\u7B14\u8BB0\u300D",'Click "New note"'),body:F("\u4E5F\u53EF\u4EE5\u6309 \u2318/Ctrl+N\u3002\u6BCF\u7BC7\u7B14\u8BB0\u90FD\u662F\u667A\u5E93\u91CC\u7684\u4E00\u4E2A .md \u6587\u4EF6\u3002","Or press \u2318/Ctrl+N. Every note is a .md file in your vault.")}},{id:"note-link",event:"note.wikilink",goal:1,title:F("\u7528 [[ \u94FE\u63A5\u53E6\u4E00\u7BC7\u7B14\u8BB0","Link another note with [["),go:{space:"amadeus"},spot:{anchor:"note-body",title:F("\u5728\u6B63\u6587\u91CC\u8F93\u5165 [[","Type [[ in the note"),body:F("\u4ECE\u5F39\u51FA\u7684\u5019\u9009\u91CC\u9009\u4E00\u7BC7\u7B14\u8BB0\uFF0C\u6309 Enter\uFF0C\u4E24\u7BC7\u5C31\u8FDE\u4E0A\u4E86\u3002","Pick a note from the suggestions and press Enter to link the two.")}},{id:"note-canvas",event:"note.canvas",goal:1,title:F("\u628A\u7B14\u8BB0\u5207\u5230\u753B\u5E03","Switch a note to the canvas"),go:{space:"amadeus",command:"amadeus-toggle-canvas"},spot:{anchor:"note-canvas",title:F("\u70B9\u300C\u753B\u5E03\u300D",'Click "Canvas"'),body:F("\u540C\u4E00\u7BC7\u7B14\u8BB0\u644A\u6210\u767D\u677F\uFF0C\u968F\u624B\u6446\uFF1B\u70B9\u300C\u6587\u6863\u300D\u5207\u56DE\u6765\uFF0C\u4E00\u4E2A\u5B57\u90FD\u4E0D\u53D8\u3002",'The same note opens as a whiteboard. Click "Document" to switch back; nothing changes.')}}],figure:{layout:"space",main:"doc",marks:[{slot:"left-top",label:F("\u5DE6\u680F\u300C\u65B0\u5EFA\u7B14\u8BB0\u300D",'"New note" in the left sidebar'),text:F("\u65B0\u5EFA\u7B14\u8BB0","New note")},{slot:"main-top",label:F("\u300C\u6587\u6863 / \u753B\u5E03\u300D\u80F6\u56CA","The Document / Canvas switch")},{slot:"right",label:F("\u53F3\u680F\u91CC\u7684\u300C\u53CD\u94FE\u300D","Backlinks in the right sidebar"),text:F("\u53CD\u94FE","Backlinks")}]}},{id:"theme",level:"lv1",icon:"sparkles",title:F("\u6362\u4E00\u8EAB\u4E3B\u9898","Make it look like yours"),tasks:[{id:"theme-change",event:"theme.change",goal:1,title:F("\u6362\u4E00\u4E2A\u4E3B\u9898","Pick another theme"),go:{settings:"theme"}}],figure:{layout:"settings",marks:[{slot:"nav",label:F("\u8BBE\u7F6E\u91CC\u7684\u300C\u5916\u89C2\u300D",'"Appearance" in Settings'),text:F("\u5916\u89C2","Appearance")},{slot:"section-1",label:F("\u8BBE\u8BA1\u8BED\u8A00","Design language"),text:F("\u8BBE\u8BA1\u8BED\u8A00","Design language")},{slot:"section-2",label:F("\u4E3B\u9898\u8272\u548C\u80CC\u666F\u8272","Theme and background colors"),text:F("\u914D\u8272","Colors")}]}},{id:"database",level:"lv2",icon:"database",title:F("\u6570\u636E\u5E93\uFF1A\u628A\u7B14\u8BB0\u53D8\u6210\u8868","Databases: turn notes into a table"),tasks:[{id:"base-create",event:"base.create",goal:1,title:F("\u65B0\u5EFA\u4E00\u4E2A\u6570\u636E\u5E93","Create a database"),go:{space:"amadeus"}}],figure:{layout:"space",main:"doc",marks:[{slot:"left-list",label:F("\u7B14\u8BB0\u6811\uFF1A\u53F3\u952E \u2192\u300C\u65B0\u5EFA Base\u300D",'Note tree: right-click \u2192 "New Base"')},{slot:"main-body",label:F("\u6B63\u6587\u91CC\u8F93\u5165 /\uFF0C\u9009\u300C\u591A\u7EF4\u8868\u300D",'Type / in a note and pick "Database"')}]}},{id:"market",level:"lv2",icon:"store",title:F("\u4ECE\u5546\u5E97\u88C5\u4E00\u4E2A\u63D2\u4EF6","Install a plugin from the store"),tasks:[{id:"market-install",event:"market.install",goal:1,title:F("\u88C5\u4E00\u4E2A\u63D2\u4EF6","Install a plugin"),go:{command:"open-market"}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon-bottom",label:F("Ribbon \u5E95\u90E8\u7684\u300C\u5546\u5E97\u300D",'"Store" at the bottom of the ribbon')}]}},{id:"space",level:"lv2",icon:"layout-grid",title:F("\u5B58\u4E0B\u81EA\u5DF1\u7684 Space","Save a Space of your own"),tasks:[{id:"space-save",event:"space.save",goal:1,title:F("\u628A\u5F53\u524D\u5E03\u5C40\u5B58\u6210 Space","Save the current layout as a Space"),go:{command:"save-as-space"}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon-plus",label:F("Space \u533A\u7684 \uFF0B","The + under the Spaces")},{slot:"main-top-right",label:F("\u53F3\u4E0A\u89D2\u7684\u6D6E\u52A8\u6309\u94AE","Floating buttons at the top right")}]}},{id:"calendar",level:"lv2",icon:"calendar-days",title:F("\u65E5\u5386\u548C\u5F85\u529E","Calendar and to-dos"),tasks:[{id:"calendar-event",event:"calendar.event",goal:1,title:F("\u5728\u65E5\u5386\u4E0A\u5EFA\u4E00\u4E2A\u65E5\u7A0B","Add an event to the calendar"),go:{space:"calendar"}},{id:"todo-done",event:"todo.done",goal:1,title:F("\u52FE\u6389\u4E00\u6761\u5F85\u529E","Tick off a to-do"),go:{space:"calendar"}}],figure:{layout:"space",main:"grid",marks:[{slot:"left-plus",label:F("\u5DE6\u680F\u300C\u65E5\u5386\u300D\u65C1\u7684 +",'The + next to "Calendars" in the left sidebar')},{slot:"main-body",label:F("\u65F6\u95F4\u683C\uFF1A\u5355\u51FB\u5EFA\u65E5\u7A0B","Time grid: click to add an event")},{slot:"right",label:F("\u53F3\u680F\u7684\u5F85\u529E","To-dos in the right sidebar"),text:F("\u5F85\u529E","To-dos")}]}},{id:"agent",level:"lv3",icon:"bot",title:F("\u521B\u5EFA\u4F60\u7684 Agent","Create your own agent"),tasks:[{id:"agent-create",event:"agent.create",goal:1,title:F("\u65B0\u5EFA\u4E00\u4E2A Agent","Create an agent"),go:{space:"agents"},spot:{anchor:"agent-new",title:F("\u70B9\u300C\u521B\u5EFA Agent\u300D",'Click "Create agent"'),body:F("\u8D77\u4E2A\u540D\u5B57\uFF0C\u5199\u51E0\u53E5\u5B83\u8BE5\u600E\u4E48\u505A\u4E8B\u3002","Give it a name and a few lines on how it should work.")}}]},{id:"muse",level:"lv3",icon:"sparkles",title:F("Muse\uFF1A\u8BA9\u7075\u611F\u81EA\u5DF1\u957F","Muse: ideas that grow on their own"),tasks:[{id:"muse-open",event:"muse.open",goal:1,title:F("\u53BB Muse \u770B\u4E00\u773C","Take a look at Muse"),go:{space:"muse"}}]},{id:"automation",level:"lv3",icon:"zap",title:F("\u81EA\u52A8\u5316\uFF1A\u5230\u70B9\u5C31\u505A","Automations: done on schedule"),tasks:[{id:"automation-create",event:"automation.create",goal:1,title:F("\u5EFA\u4E00\u6761\u81EA\u52A8\u5316","Create an automation"),go:{space:"automation"}}]},{id:"computer",level:"lv4",icon:"terminal",title:F("\u8BA9 Tangu \u64CD\u4F5C\u7535\u8111","Let Tangu use your computer"),tasks:[{id:"cu-use",event:"computer.use",goal:1,title:F("\u8BA9 Tangu \u7528\u4E00\u6B21\u7535\u8111","Have Tangu use your computer once"),go:{settings:"computer-use"},desktopOnly:!0}]},{id:"plugin",level:"lv4",icon:"code",title:F("\u5199\u4E00\u4E2A\u81EA\u5DF1\u7684\u63D2\u4EF6","Write a plugin of your own"),tasks:[{id:"plugin-dev",event:"plugin.local",goal:1,title:F("\u4ECE\u672C\u673A\u6587\u4EF6\u5939\u8F7D\u5165\u4E00\u4E2A\u63D2\u4EF6","Load a plugin from a local folder"),go:{settings:"amadeus-plugins"},desktopOnly:!0}]},{id:"mini-capsules",level:"new",icon:"layout-grid",title:F("Mini \u9876\u680F\u4E24\u9897\u80F6\u56CA","Two capsules on the Mini bar"),tasks:[{id:"mini-open",event:"mini.open",goal:1,title:F("\u6253\u5F00\u4E00\u6B21 Mini \u7A97\u53E3","Open the Mini window"),go:{command:"open-mini"},desktopOnly:!0}]},{id:"todo-standalone",level:"new",icon:"list-tree",title:F("\u5F85\u529E\u89C6\u56FE\u5355\u72EC\u6253\u5F00","Open the to-do view on its own"),tasks:[{id:"todo-open",event:"todo.open",goal:1,title:F("\u5355\u72EC\u6253\u5F00\u4E00\u6B21\u5F85\u529E\u89C6\u56FE","Open the to-do view by itself"),go:{space:"calendar"}}]}],Rt=e=>gn.filter(t=>t.level===e),hn=e=>gn.find(t=>t.id===e);var pt=Zn.filter(e=>!e.version);function Ht(e,t){let n=e.event.startsWith("own:");return t.count(n?e.event.slice(4):e.event,n)>=e.goal}var Io=(e,t)=>e.filter(n=>t.desktop||!n.desktopOnly);function hc(e,t){return Rt(e).every(n=>Io(n.tasks,t).every(r=>Ht(r,t)))}function zr(e,t){let n=pt.findIndex(r=>r.id===e);return n<=0||t.unlockAll?!0:pt.slice(0,n).every(r=>hc(r.id,t))}function Qn(e,t){return zr(e.level,t)?Io(e.tasks,t).every(n=>Ht(n,t))?"done":"active":"locked"}function Qa(e){return pt.find(t=>!hc(t.id,e))?.id??null}function bc(e){let t={...e,unlockAll:!1},n=pt[0].id;for(let r of pt)zr(r.id,t)&&(n=r.id);return n}function Em(e,t){let n=e.split(/[.+-]/).map(a=>Number.parseInt(a,10)||0),r=t.split(/[.+-]/).map(a=>Number.parseInt(a,10)||0);for(let a=0;a<Math.max(n.length,r.length);a++){let i=(n[a]??0)-(r[a]??0);if(i)return i<0?-1:1}return 0}function ei(e){let t=Zn.find(n=>n.version);return t?.version&&e.appVersion&&Em(e.appVersion,t.version)>=0?t.version:null}var vc=e=>gn.filter(t=>t.level!=="new"||!!ei(e));function yc(e,t){let n=Io(Rt(e).flatMap(r=>r.tasks),t);return{done:n.filter(r=>Ht(r,t)).length,total:n.length}}var ti={zh:{agent:`\u9664\u4E86\u9ED8\u8BA4\u7684 Tangu\uFF0C\u4F60\u53EF\u4EE5\u6309\u7528\u9014\u5EFA\u81EA\u5DF1\u7684 Agent\uFF1A\u7ED9\u5B83\u540D\u5B57\u3001\u5DE5\u4F5C\u6307\u4EE4\u548C\u81EA\u5DF1\u7684\u8BB0\u5FC6\uFF0C\u8BA9\u5B83\u4E13\u95E8\u505A\u4E00\u7C7B\u4E8B\u3002
619
+
620
+ ## \u521B\u5EFA
621
+
622
+ - \u70B9 Ribbon \u4E0A\u7684 Agents\uFF0C\u6216\u5728\u300C\u8BBE\u7F6E \u2192 Agent\u300D\u91CC\u70B9\u300C\u6253\u5F00 Agents\u300D\u3002
623
+ - \u5728\u5DE6\u680F\u540D\u518C\u91CC\u70B9\u300C\u521B\u5EFA Agent\u300D\uFF0C\u586B\u300C\u540D\u79F0\u300D\u300C\u7B80\u4ECB\u300D\u548C\u300C\u5DE5\u4F5C\u6307\u4EE4\u300D\uFF0C\u5199\u6E05\u5B83\u600E\u4E48\u5E2E\u4F60\u3001\u505A\u4E8B\u5B88\u4EC0\u4E48\u539F\u5219\uFF0C\u518D\u70B9\u300C\u521B\u5EFA Agent\u300D\u3002
624
+
625
+ ## \u521B\u5EFA\u4E4B\u540E
626
+
627
+ - \u5B83\u7684\u6863\u6848\u9875\u91CC\u53EF\u4EE5\u63A5\u7740\u8C03\uFF1A\u6A21\u578B\u3001\u601D\u8003\u6863\u4F4D\u3001\u5BA1\u6279\u6A21\u5F0F\u3001\u4EBA\u683C\u3001\u6280\u80FD\u548C MCP\uFF0C\u6539\u5B8C\u70B9\u300C\u4FDD\u5B58\u914D\u7F6E\u300D\uFF0C\u4E0B\u4E00\u6B21\u8FD0\u884C\u751F\u6548\uFF1B\u4E5F\u80FD\u7FFB\u770B\u5B83\u7684\u8BB0\u5FC6\u3001\u65E5\u5FD7\u548C\u8FDB\u5316\u3002
628
+ - \u8BB0\u5FC6\u53EF\u4EE5\u72EC\u7ACB\uFF0C\u4E5F\u53EF\u4EE5\u5171\u7528\u9ED8\u8BA4 Agent \u7684\u8BB0\u5FC6\u3002
629
+ - \u60F3\u548C\u5B83\u804A\uFF0C\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u7684\u6A21\u5F0F\u83DC\u5355\u91CC\uFF0C\u4ECE\u300C\u666E\u901A\u6A21\u5F0F\u300D\u4E0B\u5207\u6362\u5230\u8FD9\u4E2A Agent\u3002
630
+
631
+ > [!tip]
632
+ > \u540D\u518C\u91CC\u6BCF\u4E2A Agent \u7684\u64CD\u4F5C\u83DC\u5355\u6709\u300C\u8BBE\u4E3A\u9ED8\u8BA4\u300D\u548C\u300C\u8C03\u6574\u987A\u5E8F\u300D\u3002`,automation:`\u81EA\u52A8\u5316\u628A\u91CD\u590D\u7684\u4E8B\u5199\u6210\u4E00\u6761\u89C4\u5219\uFF1A\u4EC0\u4E48\u65F6\u5019\u89E6\u53D1\uFF0C\u4F9D\u6B21\u505A\u4EC0\u4E48\u3002\u4E4B\u540E\u5B83\u81EA\u5DF1\u8DD1\uFF0C\u7ED3\u679C\u9001\u8FDB\u6536\u4EF6\u7BB1\u3002
633
+
634
+ ## \u5EFA\u7B2C\u4E00\u6761
635
+
636
+ - \u70B9 Ribbon \u4E0A\u7684\u300C\u81EA\u52A8\u5316\u300D\u3002\u70B9\u5DE6\u680F\u7684\u300C\u65B0\u5EFA\u81EA\u52A8\u5316\u300D\uFF0C\u6216\u4ECE\u300C\u5165\u95E8\u4E0E\u6A21\u677F\u300D\u6311\u4E00\u4E2A\uFF1A\u6BCF\u65E5\u63D0\u9192\u3001Agent \u6BCF\u65E5\u7B80\u62A5\u3001\u65B0\u589E\u8BB0\u5F55\u63D0\u9192\u3001\u4E00\u952E\u4EA4\u7ED9 Agent\uFF1B\u300C\u81EA\u5B9A\u4E49\u6D41\u7A0B\u300D\u4ECE\u5934\u642D\u3002
637
+ - \u753B\u5E03\u4E0A\u4F9D\u6B21\u662F \u89E6\u53D1 \u2192 \u52A8\u4F5C\u6B65\u9AA4 \u2192 \u4FDD\u5B58\u4E0E\u542F\u7528\u3002\u70B9\u8282\u70B9\uFF0C\u5728\u65C1\u8FB9\u7684\u9762\u677F\u91CC\u586B\u914D\u7F6E\uFF1B\u8FD8\u6CA1\u586B\u5B8C\u7684\u9879\u4F1A\u5217\u5728\u5E95\u90E8\u3002
638
+ - \u65B0\u6D41\u7A0B\u9ED8\u8BA4\u300C\u4FDD\u5B58\u4E3A\u6682\u505C\u300D\u3002\u70B9\u300C\u8BD5\u8DD1\u300D\u4F1A\u771F\u5B9E\u6267\u884C\u4E00\u6B21\uFF0C\u770B\u8FC7\u6BCF\u4E00\u6B65\u7684\u7ED3\u679C\u518D\u542F\u7528\u3002
639
+
640
+ ## \u80FD\u7528\u4EC0\u4E48
641
+
642
+ - \u89E6\u53D1\uFF1A\u5B9A\u65F6\uFF08\u6BCF\u5929\u3001\u4E00\u6B21\u3001\u95F4\u9694\uFF09\u3001\u4E8B\u4EF6\u3001\u6587\u4EF6\u8FBE\u6807\u3001\u624B\u52A8\uFF08\u6309\u94AE\uFF09\u3001\u591A\u7EF4\u8868\u53D8\u5316\u3002
643
+ - \u52A8\u4F5C\uFF1A\u53D1\u901A\u77E5\u3001\u8DD1 Agent\u3001\u8C03\u5DE5\u5177\u3001\u5199\u591A\u7EF4\u8868\uFF0C\u6309\u8FDE\u7EBF\u7684\u987A\u5E8F\u6267\u884C\u3002
644
+
645
+ > [!tip]
646
+ > \u300C\u624B\u52A8\uFF08\u6309\u94AE\uFF09\u300D\u89C4\u5219\u53EF\u4EE5\u7ED1\u5230\u7B14\u8BB0\u91CC\u7684\u6309\u94AE\u5757\u4E0A\uFF0C\u70B9\u4E00\u4E0B\u5C31\u8DD1\u3002`,calendar:"\u65E5\u5386 Space \u628A\u591A\u7EF4\u8868\u91CC\u7684\u65E5\u671F\u3001\u7B14\u8BB0\u91CC\u5199\u4E0B\u7684\u65F6\u95F4\u6807\u8BB0\u548C\u8BA2\u9605\u7684\u5916\u90E8\u65E5\u5386\u53E0\u5728\u4E00\u8D77\u770B\uFF0C\u5F85\u529E\u4E5F\u6536\u5728\u8FD9\u91CC\u3002\n\n## \u5148\u6709\u4E00\u4E2A\u65E5\u5386\n\n\u65E5\u5386\u7684\u6570\u636E\u6765\u81EA\u542B\u300C\u65E5\u671F\u300D\u5C5E\u6027\u7684\u591A\u7EF4\u8868\uFF0C\u6240\u4EE5\u7B2C\u4E00\u6B21\u8FDB\u6765\u662F\u7A7A\u7684\u3002\u5728\u5DE6\u680F\u300C\u65E5\u5386\u300D\u53F3\u8FB9\u70B9 \u2460 +\uFF0C\u9009\u300C\u6DFB\u52A0\u591A\u7EF4\u8868\u300D\uFF0C\u6311\u4E00\u5F20\u5E26\u65E5\u671F\u5217\u7684\u8868\uFF1B\u8FD8\u6CA1\u6709\u7684\u8BDD\u5148\u56DE\u7B14\u8BB0 Space \u5EFA\u4E00\u5F20\u3002\u540C\u4E00\u4E2A\u83DC\u5355\u91CC\u8FD8\u80FD\u8BA2\u9605\u5916\u90E8\u65E5\u5386\u3001\u5BFC\u5165 `.ics` \u6587\u4EF6\uFF0C\u8FD9\u4E24\u79CD\u662F\u53EA\u8BFB\u7684\u3002\n\n## \u5EFA\u4E00\u4E2A\u65E5\u7A0B\n\n- \u2461 \u5355\u51FB\u65F6\u95F4\u683C\uFF08\u6216\u6309 `C`\uFF09\uFF0C\u5728\u683C\u5B50\u91CC\u76F4\u63A5\u6253\u6807\u9898\uFF0C`Enter` \u4FDD\u5B58\uFF0C`Esc` \u53D6\u6D88\u3002\n- \u62D6\u52A8\u4E8B\u4EF6\u6539\u65F6\u95F4\uFF0C\u62D6\u5B83\u7684\u4E0A\u4E0B\u8FB9\u6539\u65F6\u957F\uFF1B\u70B9\u4E00\u4E0B\u4E8B\u4EF6\uFF0C\u65C1\u8FB9\u4F1A\u5F39\u51FA\u8BE6\u60C5\u5361\u3002\n- `D` / `W` / `3` / `M` \u5207\u5230\u65E5\u3001\u5468\u30013 \u65E5\u3001\u6708\u89C6\u56FE\uFF0C`T` \u56DE\u5230\u4ECA\u5929\u3002\n\n## \u52FE\u6389\u5F85\u529E\n\n\u2462 \u53F3\u680F\u662F\u5F85\u529E\u6E05\u5355\u3002\u5728\u7B14\u8BB0\u91CC\u5199\u4E00\u884C\u590D\u9009\u6846\u5F85\u529E\uFF0C\u540E\u9762\u6253 `@\u660E\u5929`\uFF0C\u4ECE\u5019\u9009\u91CC\u9009\u300C\u65E5\u7A0B\u300D\uFF0C\u5B83\u5C31\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002\u70B9\u52FE\u9009\u6846\u5C31\u7B97\u5B8C\u6210\uFF0C\u7B14\u8BB0\u91CC\u90A3\u4E00\u884C\u4E5F\u4F1A\u8DDF\u7740\u6539\u6210\u5DF2\u5B8C\u6210\u3002",chat:`Tangu \u662F Forsion \u91CC\u7684 AI Agent\uFF1A\u4F60\u8BF4\u4E00\u53E5\uFF0C\u5B83\u4F1A\u56DE\u7B54\uFF0C\u4E5F\u80FD\u52A8\u624B\u67E5\u8D44\u6599\u3001\u6539\u6587\u4EF6\u3001\u8DD1\u547D\u4EE4\u3002\u5148\u4ECE\u6253\u4E2A\u62DB\u547C\u5F00\u59CB\u3002
647
+
648
+ ## \u5F00\u4E00\u4E2A\u65B0\u4F1A\u8BDD
649
+
650
+ - \u70B9 Ribbon \u4E0A\u7684 Tangu\uFF1A\u5DE6\u680F\u662F\u4F1A\u8BDD\u5217\u8868\uFF0C\u4E2D\u95F4\u662F\u5BF9\u8BDD\u3002
651
+ - \u2460 \u70B9\u5DE6\u680F\u9876\u90E8\u7684\u300C\u65B0\u4F1A\u8BDD\u300D\uFF0C\u6216\u5728 Tangu \u91CC\u6309 \`\u2318/Ctrl+N\`\uFF08\u5728\u7B14\u8BB0 Space \u91CC\u8FD9\u4E2A\u952E\u662F\u65B0\u5EFA\u7B14\u8BB0\uFF09\u3002
652
+ - \u2461 \u5728\u8F93\u5165\u6846\u91CC\u6253\u5B57\uFF0C\`Enter\` \u53D1\u9001\uFF0C\`Shift+Enter\` \u6362\u884C\u3002
653
+
654
+ ## \u8BA9\u5B83\u77E5\u9053\u4F60\u5728\u8BF4\u4EC0\u4E48
655
+
656
+ - \u628A\u6587\u4EF6\u3001\u7B14\u8BB0\u6216\u5DE6\u680F\u91CC\u7684\u4F1A\u8BDD\u62D6\u8FDB\u5BF9\u8BDD\u533A\uFF0C\u5C31\u6210\u4E86\u4E00\u6761\u5F15\u7528\uFF0CTangu \u8BFB\u5F97\u5230\u5185\u5BB9\uFF1B\u622A\u56FE\u53EF\u4EE5\u76F4\u63A5\u7C98\u8D34\u8FDB\u8F93\u5165\u6846\u3002
657
+ - \u8F93\u5165 \`[[\` \u5F15\u7528\u4EE5\u524D\u7684\u4F1A\u8BDD\uFF0C\u8F93\u5165 \`/\` \u5524\u8D77\u6280\u80FD\u548C\u547D\u4EE4\u3002
658
+ - \u5B83\u5E72\u6D3B\u7684\u65F6\u5019\u4F60\u53EF\u4EE5\u63A5\u7740\u53D1\u6D88\u606F\uFF0C\u4F1A\u5728\u4E0B\u4E00\u6B65\u4EA4\u7ED9\u5B83\u3002
659
+ - \u5212\u9009\u56DE\u590D\u91CC\u7684\u6587\u5B57\uFF0C\u70B9\u300C\u5F15\u7528\u300D\uFF0C\u5C31\u80FD\u5E26\u8FDB\u4E0B\u4E00\u6761\u6D88\u606F\u3002
660
+
661
+ > [!tip]
662
+ > \u300C\u65B0\u4F1A\u8BDD\u300D\u65C1\u8FB9\u7684 Chat / Work \u80F6\u56CA\u51B3\u5B9A\u6A21\u5F0F\uFF1AChat \u662F\u8F7B\u804A\u5929\uFF0CWork \u5E26\u5B8C\u6574\u7684\u5DE5\u5177\u3002\u6A21\u5F0F\u5728\u5EFA\u4F1A\u8BDD\u65F6\u5B9A\u4E0B\uFF0C\u60F3\u6362\u5C31\u65B0\u5F00\u4E00\u4E2A\u3002`,computer:`\u8BA9 Tangu \u770B\u7740\u5C4F\u5E55\u66FF\u4F60\u64CD\u4F5C\u522B\u7684\u5E94\u7528\uFF1A\u5B83\u5148\u622A\u56FE\u770B\u6E05\u754C\u9762\uFF0C\u518D\u70B9\u6309\u3001\u8F93\u5165\uFF0C\u4E00\u6B65\u6B65\u628A\u4E8B\u60C5\u505A\u5B8C\u3002
663
+
664
+ ## \u51C6\u5907
665
+
666
+ - \u8FD9\u662F\u7535\u8111\u4E0A\u7684\u529F\u80FD\uFF0C\u9760 Computer Use \u63D2\u4EF6\u5B8C\u6210\uFF1B\u7B2C\u4E00\u6B21\u8BBE\u7F6E\u6743\u9650\u65F6\u4F1A\u81EA\u52A8\u88C5\u597D\u3002
667
+ - macOS \u4E0A\u8981\u5728\u7CFB\u7EDF\u8BBE\u7F6E\u7684\u300C\u9690\u79C1\u4E0E\u5B89\u5168\u6027\u300D\u91CC\u7ED9 tangu-computer-use \u6388\u6743\uFF08\u8F85\u52A9\u529F\u80FD\u548C\u5C4F\u5E55\u5F55\u5236\uFF09\u3002\u5230\u300C\u8BBE\u7F6E \u2192 \u7CFB\u7EDF \u2192 \u8BBE\u5907\u6743\u9650\u300D\u70B9\u300C\u8BBE\u7F6E\u6743\u9650\u300D\uFF0C\u6309\u5F15\u5BFC\u505A\u5B8C\uFF0C\u518D\u70B9\u300C\u9A8C\u8BC1 Computer Use \u6743\u9650\u300D\u3002Windows \u4E0D\u9700\u8981\u8FD9\u4E00\u6B65\u3002
668
+ - \u300C\u8BBE\u7F6E \u2192 \u7535\u8111\u64CD\u4F5C\u300D\u91CC\u53EF\u4EE5\u51B3\u5B9A\u5B83\u80FD\u4E0D\u80FD\u62A2\u524D\u53F0\uFF0C\u4EE5\u53CA\u662F\u5426\u6253\u5F00 Jev \u52A0\u901F\u548C\u6D4F\u89C8\u5668\u5DE5\u5177\u3002
669
+
670
+ ## \u7528\u8D77\u6765
671
+
672
+ \u76F4\u63A5\u5728\u5BF9\u8BDD\u91CC\u8BF4\u8981\u505A\u4EC0\u4E48\uFF0C\u6BD4\u5982\u300C\u6253\u5F00\u5907\u5FD8\u5F55\uFF0C\u65B0\u5EFA\u4E00\u6761\u8D2D\u7269\u6E05\u5355\u300D\u3002Tangu \u4F1A\u8FB9\u622A\u56FE\u8FB9\u64CD\u4F5C\uFF0C\u6BCF\u4E00\u6B65\u90FD\u663E\u793A\u5728\u5BF9\u8BDD\u91CC\uFF1B\u52A8\u624B\u524D\u8981\u4E0D\u8981\u5148\u95EE\u4F60\uFF0C\u8DDF\u7740\u8FD9\u6761\u4F1A\u8BDD\u7684\u5BA1\u6279\u6A21\u5F0F\u8D70\u3002
673
+
674
+ > [!tip]
675
+ > \u60F3\u4E2D\u9014\u53EB\u505C\uFF0C\u70B9\u5BF9\u8BDD\u91CC\u7684\u505C\u6B62\u6309\u94AE\u3002`,database:`\u6570\u636E\u5E93\uFF08\u754C\u9762\u4E0A\u53EB\u591A\u7EF4\u8868\uFF0C\u6587\u4EF6\u662F \`.db\`\uFF09\u628A\u4E00\u884C\u884C\u8BB0\u5F55\u88C5\u8FDB\u4E00\u5F20\u6709\u5217\u7C7B\u578B\u7684\u8868\uFF0C\u540C\u4E00\u6279\u6570\u636E\u8FD8\u80FD\u6362\u6210\u770B\u677F\u3001\u65E5\u5386\u3001\u753B\u5ECA\u6765\u770B\u3002
676
+
677
+ ## \u65B0\u5EFA\u4E00\u5F20
678
+
679
+ \u2460 \u5728\u7B14\u8BB0 Space \u5DE6\u680F\u7684\u7B14\u8BB0\u6811\u91CC\uFF0C\u53F3\u952E\u7A7A\u767D\u5904\u6216\u67D0\u4E2A\u6587\u4EF6\u5939\uFF0C\u9009\u300C\u65B0\u5EFA Base\u300D\uFF0C\u8D77\u4E2A\u540D\u5B57\u3002\u667A\u5E93\u91CC\u4F1A\u591A\u51FA\u4E00\u4E2A \`.db\` \u6587\u4EF6\uFF0C\u5E76\u76F4\u63A5\u6253\u5F00\u6210\u6807\u7B7E\u9875\u3002
680
+
681
+ \u2461 \u60F3\u628A\u8868\u653E\u8FDB\u67D0\u7BC7\u7B14\u8BB0\uFF0C\u5C31\u5728\u6B63\u6587\u91CC\u8F93\u5165 \`/\`\uFF0C\u9009\u300C\u591A\u7EF4\u8868\u300D\uFF1B\u9009\u300C\u94FE\u63A5\u591A\u7EF4\u8868\u300D\u53EF\u4EE5\u628A\u5DF2\u6709\u7684\u8868\u5D4C\u8FDB\u6765\u3002
682
+
683
+ ## \u5217\u4E0E\u89C6\u56FE
684
+
685
+ - \u8868\u5934\u6700\u53F3\u8FB9\u7684 \uFF0B \u52A0\u5217\u3002\u5217\u6709\u7C7B\u578B\uFF1A\u6587\u672C\u3001\u6570\u5B57\u3001\u52FE\u9009\u3001\u65E5\u671F\u3001\u9644\u4EF6\u3001\u5173\u8054\u7B49\u3002
686
+ - \u89C6\u56FE\u6807\u7B7E\u65C1\u7684 \uFF0B \u52A0\u89C6\u56FE\uFF1A\u8868\u683C\u3001\u770B\u677F\u3001\u65E5\u5386\u3001\u753B\u5ECA\u3001\u56FE\u8868\u3001\u8868\u5355\u3001\u7518\u7279\uFF0C\u6BCF\u4E2A\u89C6\u56FE\u5404\u5B58\u81EA\u5DF1\u7684\u7B5B\u9009\u548C\u6392\u5E8F\u3002
687
+ - \u5DE5\u5177\u680F\u7684\u300C\u65B0\u5EFA\u300D\u52A0\u4E00\u884C\uFF0C\u70B9\u683C\u5B50\u5C31\u80FD\u76F4\u63A5\u6539\u3002
688
+
689
+ > [!tip]
690
+ > \u987A\u624B\u7ED9\u8868\u52A0\u4E00\u5217\u300C\u65E5\u671F\u300D\u5C5E\u6027\uFF0C\u5230\u300C\u65E5\u5386\u548C\u5F85\u529E\u300D\u90A3\u4E00\u7AE0\u5C31\u80FD\u628A\u5B83\u63A5\u8FDB\u65E5\u5386 Space\u3002`,market:`\u5546\u5E97\u91CC\u6709\u522B\u4EBA\u505A\u597D\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001Agent\u3001\u4E3B\u9898\u548C Space\uFF0C\u70B9\u4E00\u4E0B\u5C31\u88C5\u597D\uFF0C\u7528\u4E0D\u4E0A\u4E86\u4E5F\u80FD\u968F\u65F6\u5378\u8F7D\u3002
691
+
692
+ ## \u6253\u5F00\u5546\u5E97
693
+
694
+ \u2460 \u70B9 Ribbon \u5E95\u90E8\u7684\u300C\u5546\u5E97\u300D\u56FE\u6807\uFF0C\u6216\u5728\u547D\u4EE4\u9762\u677F\uFF08\`\u2318/Ctrl+K\`\uFF09\u91CC\u641C\u300C\u5546\u5E97\u300D\u3002\u5DE6\u8FB9\u6309\u5206\u7C7B\u6D4F\u89C8\uFF1A\u63D2\u4EF6\u3001\u6280\u80FD\u3001Agent\u3001Space\u3001\u4E3B\u9898\u3001\u7F51\u7AD9\u5E94\u7528\uFF1B\u9876\u4E0A\u53EF\u4EE5\u6309\u540D\u79F0\u3001\u4F5C\u8005\u6216\u6807\u7B7E\u641C\u7D22\u3002
695
+
696
+ ## \u5B89\u88C5\u4E0E\u7BA1\u7406
697
+
698
+ - \u70B9\u5F00\u4E00\u4E2A\u6761\u76EE\u770B\u8BE6\u60C5\uFF0C\u518D\u70B9\u300C\u5B89\u88C5\u300D\u3002\u591A\u6570\u63D2\u4EF6\u88C5\u597D\u5C31\u80FD\u7528\uFF0C\u6709\u8BBE\u7F6E\u9879\u7684\u70B9\u300C\u6253\u5F00\u8BBE\u7F6E\u300D\u53BB\u8C03\u3002
699
+ - \u300C\u5DF2\u5B89\u88C5\u300D\u91CC\u662F\u4F60\u88C5\u8FC7\u7684\u5168\u90E8\u5185\u5BB9\uFF0C\u5728\u8FD9\u91CC\u300C\u5378\u8F7D\u300D\uFF1B\u300C\u53EF\u66F4\u65B0\u300D\u5217\u51FA\u6709\u65B0\u7248\u672C\u7684\u3002
700
+ - \u6807\u7740\u300C\u4EC5\u684C\u9762\u300D\u7684\u63D2\u4EF6\u8981\u7528\u5230\u7535\u8111\u4E0A\u624D\u6709\u7684\u529F\u80FD\uFF0C\u624B\u673A\u4E0A\u88C5\u4E0D\u4E86\u3002
701
+
702
+ > [!tip]
703
+ > \u63D2\u4EF6\u4E5F\u53EF\u4EE5\u5728\u300C\u8BBE\u7F6E \u2192 \u63D2\u4EF6\u300D\u91CC\u968F\u65F6\u505C\u7528\uFF0C\u4E0D\u5FC5\u5378\u8F7D\u3002`,"mini-capsules":`2.14 \u8D77\uFF0CMini \u7A97\u53E3\u7684\u9876\u680F\u4E0D\u518D\u5360\u4E24\u6761\u6A2A\u680F\uFF0C\u6539\u6210\u6D6E\u5728\u5185\u5BB9\u4E0A\u7684\u4E24\u9897\u80F6\u56CA\uFF0C\u6B63\u6587\u80FD\u591A\u9732\u51FA\u4E00\u622A\u3002
704
+
705
+ ## \u6253\u5F00 Mini \u7A97\u53E3
706
+
707
+ \u6309 \`\u2318/Ctrl+Shift+M\`\uFF08\u5168\u5C40\u5FEB\u6377\u952E\uFF0C\u522B\u7684\u5E94\u7528\u5728\u524D\u53F0\u65F6\u4E5F\u80FD\u7528\uFF09\uFF0C\u6216\u5728\u547D\u4EE4\u9762\u677F\u91CC\u8FD0\u884C\u300C\u6253\u5F00 Mini \u5361\u7247\u300D\u3002\u5B83\u662F\u4E00\u5F20\u7F6E\u9876\u7684\u5C0F\u5361\u7247\uFF0C\u9002\u5408\u4E00\u8FB9\u505A\u522B\u7684\u4E8B\uFF0C\u4E00\u8FB9\u804A\u4E24\u53E5\u3001\u8BB0\u4E00\u7B14\u3001\u52FE\u4E2A\u5F85\u529E\u3002
708
+
709
+ ## \u4E24\u9897\u80F6\u56CA
710
+
711
+ - \u5DE6\u8FB9\uFF1A\u5207\u6362 Space \u7684\u6309\u94AE\uFF0C\u65C1\u8FB9\u662F\u6807\u9898\u4E0B\u62C9\uFF0C\u7528\u6765\u6362\u4F1A\u8BDD\u6216\u6362\u7B14\u8BB0\u3002
712
+ - \u53F3\u8FB9\uFF1A\u65B0\u5EFA\u3001\u300C\u5728\u4E3B\u9762\u677F\u663E\u793A\u300D\u548C\u5173\u95ED\u3002
713
+ - \u80F6\u56CA\u4E4B\u5916\u7684\u9876\u680F\u662F\u900F\u660E\u7684\uFF0C\u6309\u4F4F\u7A7A\u767D\u5904\u5C31\u80FD\u62D6\u52A8\u7A97\u53E3\uFF1B\u5BF9\u8BDD\u4F1A\u4ECE\u80F6\u56CA\u5E95\u4E0B\u6EDA\u8FC7\u53BB\u3002
714
+
715
+ ## \u80FD\u653E\u4EC0\u4E48
716
+
717
+ Tangu\uFF08\u5207\u6362\u4F1A\u8BDD\u3001\u53D1\u6D88\u606F\uFF09\u3001\u7B14\u8BB0\uFF08\u9009\u4E00\u7BC7\u6216\u65B0\u5EFA\uFF0C\u5C31\u5730\u7F16\u8F91\uFF09\u548C\u5F85\u529E\u6E05\u5355\u3002\u62D6\u5361\u7247\u7684\u8FB9\u6216\u89D2\u53EF\u4EE5\u6539\u5927\u5C0F\uFF0C\u5173\u6389\u518D\u5F00\u4F1A\u6CBF\u7528\u4E0A\u6B21\u7684\u5927\u5C0F\u3002`,muse:`Muse \u662F\u5728\u540E\u53F0\u4E3B\u52A8\u5E72\u6D3B\u7684 Agent\uFF1A\u6309\u8282\u594F\u9192\u6765\uFF0C\u770B\u770B\u4F60\u6700\u8FD1\u5728\u505A\u4EC0\u4E48\uFF0C\u63D0\u51FA\u503C\u5F97\u505A\u7684\u5F85\u529E\uFF0C\u66FF\u4F60\u76EF\u7740\u4EA4\u4EE3\u8FC7\u7684\u4E8B\u3002
718
+
719
+ ## Muse \u4E0E Historian
720
+
721
+ \u300C\u8BBE\u7F6E \u2192 Agent \u2192 \u540E\u53F0 Agent\u300D\u91CC\u6709\u4E24\u4F4D\uFF1A
722
+
723
+ - Historian\uFF1A\u6574\u7406\u4F1A\u8BDD\u4E0E\u8BB0\u5FC6\uFF0C\u8D1F\u8D23\u603B\u7ED3\u4F1A\u8BDD\u3001\u7EF4\u62A4\u65E5\u5FD7\u548C\u8BB0\u5FC6\u3002
724
+ - Muse\uFF1A\u6309\u8282\u594F\u4E3B\u52A8\u5DE5\u4F5C\uFF0C\u6709\u81EA\u5DF1\u7684 Library \u548C Space\uFF08Ribbon \u4E0A\u7684 Muse\uFF09\u3002
725
+
726
+ \u4E24\u4F4D\u9ED8\u8BA4\u90FD\u5F00\u7740\u3002\u4F60\u5173\u6389\u8FC7\u7684\u8BDD\uFF0C\u5728\u8FD9\u91CC\u91CD\u65B0\u6253\u5F00\uFF0C\u518D\u70B9\u300C\u4FDD\u5B58\u66F4\u6539\u300D\u3002
727
+
728
+ ## \u8C03\u5B83\u7684\u5DE5\u4F5C\u65B9\u5F0F
729
+
730
+ - \u300C\u6743\u9650\u6863\u300D\uFF1A\u5BA1\u6279\uFF08\u8D8A\u754C\u64CD\u4F5C\u6392\u961F\u7B49\u4F60\u6279\u51C6\uFF09\u3001\u4EE3\u6279\uFF08\u9ED8\u8BA4 Agent \u66FF\u4F60\u88C1\u51B3\u4E00\u6B21\uFF09\u3001\u5168\u5F00\u3002
731
+ - \u5FC3\u8DF3\u95F4\u9694\u3001\u8FD0\u884C\u65F6\u6BB5\uFF0C\u4EE5\u53CA\u901A\u77E5\u662F\u5373\u65F6\u53D1\u8FD8\u662F\u6512\u6210\u65E5\u62A5\u3002
732
+ - \u5728\u4EFB\u610F\u804A\u5929\u91CC\u8BF4\u300C\u5E2E\u6211\u76EF\u7740\u67D0\u4EF6\u4E8B\u300D\uFF0C\u5C31\u6210\u4E86\u4E00\u6761\u76EF\u4EFB\u52A1\u89C4\u5219\uFF1B\u804A\u5929\u91CC\u7684\u4EFB\u52A1\u5361\u8FD8\u80FD\u300C\u4EA4\u7ED9 Muse \u8FFD\u8E2A\u300D\u3002
733
+
734
+ > [!tip]
735
+ > Muse \u63D0\u7684\u5F85\u529E\u548C\u7B49\u4F60\u6279\u51C6\u7684\u64CD\u4F5C\u4F1A\u8FDB\u6536\u4EF6\u7BB1\uFF0C\u4E5F\u5217\u5728 Muse Space \u7684\u53F3\u680F\u91CC\u3002`,note:`\u7B14\u8BB0 Space\uFF08Amadeus\uFF09\u662F\u4F60\u7684\u7B14\u8BB0\u5E93\uFF1A\u6BCF\u7BC7\u7B14\u8BB0\u90FD\u662F\u786C\u76D8\u4E0A\u7684\u4E00\u4E2A Markdown \u6587\u4EF6\uFF0C\u53EF\u4EE5\u5199\u3001\u53EF\u4EE5\u4E92\u76F8\u94FE\u63A5\uFF0C\u8FD8\u80FD\u644A\u5F00\u6210\u4E00\u5F20\u753B\u5E03\u3002
736
+
737
+ ## \u65B0\u5EFA\u4E0E\u4E66\u5199
738
+
739
+ - \u5148\u6253\u5F00\u4E00\u4E2A\u667A\u5E93\uFF0C\u5B83\u5C31\u662F\u7535\u8111\u4E0A\u7684\u4E00\u4E2A\u666E\u901A\u6587\u4EF6\u5939\uFF0C\u5DE6\u680F\u7684\u7B14\u8BB0\u6811\u663E\u793A\u91CC\u9762\u7684\u5185\u5BB9\u3002
740
+ - \u2460 \u5728\u7B14\u8BB0 Space \u91CC\u6309 \`\u2318/Ctrl+N\`\uFF0C\u6216\u70B9\u5DE6\u680F\u7684\u300C\u65B0\u5EFA\u7B14\u8BB0\u300D\u3002
741
+ - \u5728\u7A7A\u884C\u8F93\u5165 \`/\` \u5524\u51FA\u5757\u83DC\u5355\uFF1A\u6807\u9898\u3001\u5F85\u529E\u3001\u8868\u683C\u3001\u4EE3\u7801\u3001\u591A\u7EF4\u8868\u2026\u2026\`# \` \u8FD9\u7C7B Markdown \u524D\u7F00\u4E5F\u76F4\u63A5\u751F\u6548\u3002
742
+
743
+ ## \u7528\u53CC\u94FE\u8FDE\u8D77\u6765
744
+
745
+ \u8F93\u5165 \`[[\`\uFF0C\u4ECE\u5019\u9009\u91CC\u9009\u4E00\u7BC7\uFF0C\u6309 \`Enter\`\uFF0C\u5C31\u751F\u6210\u4E00\u6761\u53CC\u94FE\u3002\u88AB\u94FE\u63A5\u7684\u90A3\u7BC7\u4F1A\u591A\u51FA\u4E00\u6761\u53CD\u5411\u94FE\u63A5\uFF0C\u5C55\u5F00\u53F3\u680F\uFF0C\u5728 \u2462\u300C\u53CD\u94FE\u300D\u91CC\u770B\u5F97\u5230\u3002
746
+
747
+ ## \u6587\u6863\u4E0E\u753B\u5E03
748
+
749
+ \u6253\u5F00\u4E00\u7BC7\u7B14\u8BB0\uFF0C\u7B14\u8BB0\u9876\u4E0A\u9760\u5DE6\u6709 \u2461\u300C\u6587\u6863 / \u753B\u5E03\u300D\u80F6\u56CA\u3002\u540C\u4E00\u4EFD\u5185\u5BB9\u4E24\u79CD\u770B\u6CD5\uFF1A\u6587\u6863\u4ECE\u4E0A\u5F80\u4E0B\u8BFB\uFF0C\u753B\u5E03\u50CF\u767D\u677F\u4E00\u6837\u968F\u624B\u6446\uFF0C\u5207\u8FC7\u53BB\u4E00\u4E2A\u5B57\u90FD\u4E0D\u4F1A\u53D8\u3002\u547D\u4EE4\u9762\u677F\u91CC\u7684\u300C\u5207\u6362\u6587\u6863 / \u753B\u5E03\u300D\u505A\u7684\u662F\u540C\u4E00\u4EF6\u4E8B\uFF0C\u8BB0\u5F97\u5148\u6253\u5F00\u4E00\u7BC7\u7B14\u8BB0\u3002`,plugin:`Forsion \u7684\u89C6\u56FE\u3001\u547D\u4EE4\u548C Space \u90FD\u80FD\u7528\u63D2\u4EF6\u6269\u5C55\u3002\u4E00\u4E2A\u684C\u9762\u63D2\u4EF6\u5C31\u662F\u4E00\u4E2A\u6587\u4EF6\u5939\uFF0C\u653E\u8FDB\u63D2\u4EF6\u76EE\u5F55\u3001\u91CD\u65B0\u52A0\u8F7D\u5C31\u80FD\u8DD1\u3002
750
+
751
+ ## \u63D2\u4EF6\u957F\u4EC0\u4E48\u6837
752
+
753
+ - \u6BCF\u4E2A\u63D2\u4EF6\u662F \`~/.forsion/plugins/\` \u4E0B\u7684\u4E00\u4E2A\u6587\u4EF6\u5939\uFF0C\u91CC\u9762\u81F3\u5C11\u6709 \`manifest.json\`\uFF08id\u3001\u540D\u79F0\u3001\u7248\u672C\u7B49\uFF09\u548C \`main.js\`\u3002
754
+ - \`main.js\` \u672C\u8EAB\u5C31\u662F \`setup(ctx)\` \u7684\u51FD\u6570\u4F53\uFF1A\u5728\u9876\u5C42\u76F4\u63A5\u8C03\u7528 \`ctx.registerView(\u2026)\` \u8FD9\u7C7B\u63A5\u53E3\uFF0C\u6CE8\u518C\u89C6\u56FE\u3001\u547D\u4EE4\u3001\u659C\u6760\u83DC\u5355\u9879\u6216\u6587\u4EF6\u7C7B\u578B\u3002\u522B\u518D\u628A\u5B83\u5305\u8FDB\u4E00\u4E2A\u51FD\u6570\u91CC\uFF0C\u5426\u5219\u4EC0\u4E48\u90FD\u4E0D\u4F1A\u6CE8\u518C\uFF0C\u4E5F\u4E0D\u62A5\u9519\u3002
755
+ - \u7ED9 AI \u52A0\u5DE5\u5177\u7684\u662F\u53E6\u4E00\u7C7B\u300CTangu \u5F15\u64CE\u63D2\u4EF6\u300D\uFF0C\u683C\u5F0F\u4E0D\u4E00\u6837\u3002
756
+
757
+ ## \u4ECE\u672C\u673A\u6587\u4EF6\u5939\u8F7D\u5165
758
+
759
+ - \u6253\u5F00\u300C\u8BBE\u7F6E \u2192 \u63D2\u4EF6\u300D\uFF0C\u8FDB\u300C\u5DF2\u5B89\u88C5\u63D2\u4EF6\u300D\uFF0C\u5C55\u5F00\u300C\u5F00\u53D1\u5DE5\u5177\u300D\u3002
760
+ - \u300C\u521B\u5EFA\u793A\u4F8B\u63D2\u4EF6\u300D\u4E00\u952E\u751F\u6210\u4E00\u4E2A\u80FD\u8DD1\u7684\u6837\u4F8B\uFF1B\u300C\u6253\u5F00\u63D2\u4EF6\u6587\u4EF6\u5939\u300D\u7528\u6765\u653E\u4F60\u81EA\u5DF1\u7684\u63D2\u4EF6\u3002
761
+ - \u6539\u5B8C\u4EE3\u7801\u70B9\u300C\u91CD\u65B0\u52A0\u8F7D\u300D\uFF0C\u4E0D\u7528\u91CD\u542F\u5E94\u7528\u3002
762
+
763
+ > [!tip]
764
+ > \u63D2\u4EF6\u4F5C\u8005\u624B\u518C\u968F\u5E94\u7528\u9644\u5E26\uFF0C\u5C31\u5728\u5185\u7F6E\u6280\u80FD\u300CForsion \u6269\u5C55\u5F00\u53D1\u300D\u91CC\u3002\u8DDF Tangu \u8BF4\u300C\u5E2E\u6211\u5199\u4E00\u4E2A Forsion \u63D2\u4EF6\u300D\uFF0C\u5B83\u4F1A\u7167\u5B98\u65B9\u6A21\u677F\u8D77\u597D\u9AA8\u67B6\uFF1B\u88C5\u597D\u7684\u63D2\u4EF6\u51FA\u4E86\u95EE\u9898\uFF0C\u4E5F\u53EF\u4EE5\u8BA9\u5B83\u8DD1\u4E00\u904D\u63D2\u4EF6\u4F53\u68C0\u3002`,space:`\u628A\u89C6\u56FE\u6446\u6210\u987A\u624B\u7684\u6837\u5B50\u4E4B\u540E\uFF0C\u53EF\u4EE5\u628A\u8FD9\u5957\u5E03\u5C40\u5B58\u6210\u4E00\u4E2A\u65B0\u7684 Space\uFF0C\u4EE5\u540E\u5728 Ribbon \u4E0A\u70B9\u4E00\u4E0B\u5C31\u56DE\u6765\u3002
765
+
766
+ ## \u5B58\u4E0B\u5F53\u524D\u5E03\u5C40
767
+
768
+ - \u5728\u4EFB\u610F Space \u91CC\u628A\u6807\u7B7E\u9875\u548C\u4FA7\u680F\u6446\u597D\u3002
769
+ - \u6253\u5F00\u547D\u4EE4\u9762\u677F\uFF08\`\u2318/Ctrl+K\`\uFF09\uFF0C\u8FD0\u884C\u300C\u5C06\u5F53\u524D\u5E03\u5C40\u53E6\u5B58\u4E3A Space\u300D\u3002
770
+ - \u6309\u63D0\u793A\u586B\u4E0A\u300C\u65B0 Space \u540D\u79F0\u300D\uFF0CRibbon \u9876\u90E8\u5C31\u591A\u4E86\u4E00\u4E2A\u56FE\u6807\u3002
771
+
772
+ \u4E5F\u53EF\u4EE5\u70B9 Ribbon \u4E0A Space \u533A\u7684 \u2460 \uFF0B\uFF08\u300C\u65B0\u5EFA Space \u6216\u6536\u7EB3\u5939\u300D\uFF09\uFF0C\u9009\u300C\u65B0\u5EFA Space\u300D\uFF0C\u4ECE\u4E00\u4E2A\u7A7A\u767D Space \u5F00\u59CB\u6446\u3002\u5B58 Space \u8981\u5728\u7535\u8111\u4E0A\u7684 Forsion \u91CC\u505A\u3002
773
+
774
+ ## \u4E4B\u540E
775
+
776
+ - \u5728\u81EA\u5DF1\u7684 Space \u91CC\u7EE7\u7EED\u8C03\u5E03\u5C40\uFF0C\u4F1A\u81EA\u52A8\u8BB0\u4F4F\uFF1B\u6446\u4E71\u4E86\uFF0C\u70B9 \u2461 \u53F3\u4E0A\u89D2\u90A3\u6392\u6D6E\u52A8\u6309\u94AE\u91CC\u7684\u300C\u6062\u590D\u672C Space \u9ED8\u8BA4\u5E03\u5C40\u300D\u3002
777
+ - \u62D6\u52A8\u56FE\u6807\u53EF\u4EE5\u6392\u5E8F\uFF1B\u53F3\u952E\u81EA\u5DF1\u7684 Space \u56FE\u6807\uFF0C\u53EF\u4EE5\u300C\u5728\u65B0\u7A97\u53E3\u4E2D\u6253\u5F00\u300D\u6216\u300C\u5220\u9664 Space\u2026\u300D\u3002
778
+ - \u300C\u8BBE\u7F6E \u2192 Space\u300D\u91CC\u5217\u7740\u5168\u90E8 Space\uFF0C\u81EA\u5EFA\u7684\u53EF\u4EE5\u5728\u8FD9\u91CC\u5378\u8F7D\u3002`,theme:`Forsion \u7684\u6837\u5B50\u7531\u4F60\u5B9A\uFF1A\u6362\u4E00\u79CD\u8BBE\u8BA1\u8BED\u8A00\uFF0C\u518D\u6311\u4E3B\u9898\u8272\u548C\u80CC\u666F\u8272\uFF0C\u6574\u4E2A\u5E94\u7528\u90FD\u4F1A\u8DDF\u7740\u53D8\u3002
779
+
780
+ ## \u5728\u54EA\u91CC\u6362
781
+
782
+ \u6309 \`\u2318/Ctrl+,\` \u6253\u5F00\u8BBE\u7F6E\uFF0C\u8FDB\u5165 \u2460\u300C\u5916\u89C2\u300D\u3002\u8FD9\u4E00\u9875\u4ECE\u4E0A\u5F80\u4E0B\u662F\uFF1A
783
+
784
+ - \u2461\u300C\u8BBE\u8BA1\u8BED\u8A00\u300D\uFF1A\u51B3\u5B9A\u5706\u89D2\u3001\u5B57\u4F53\u3001\u9634\u5F71\u8FD9\u4E9B\u7ED3\u6784\uFF0C\u6BD4\u5982 Genesis\u3001Genesis Glass \xB7 \u7409\u7483\u3002
785
+ - \u2462\u300C\u914D\u8272\u300D\uFF1A\u300C\u4E3B\u9898\u8272\u300D\u548C\u300C\u80CC\u666F\u8272\u300D\u662F\u4E24\u6761\u72EC\u7ACB\u7684\u8F74\uFF0C\u5404\u6709\u7ECF\u5178\u3001\u73CA\u745A\u3001\u67D4\u9752\u3001\u85B0\u8863\u8349\u3001\u6674\u84DD\u3001\u58A8\u8272\u548C\u81EA\u5B9A\u4E49\u3002
786
+ - \u300C\u663E\u793A\u4E0E\u52A8\u6548\u300D\uFF1A\u660E\u6697\u3001\u754C\u9762\u5927\u5C0F\u3001\u9634\u5F71\u7B49\u3002
787
+
788
+ ## \u51E0\u70B9\u8BF4\u660E
789
+
790
+ - \u672C\u7AE0\u7684\u4EFB\u52A1\u8BA4\u7684\u662F\u8BBE\u8BA1\u8BED\u8A00\u3001\u4E3B\u9898\u8272\u6216\u80CC\u666F\u8272\u7684\u53D8\u5316\uFF0C\u53EA\u5207\u660E\u6697\u4E0D\u7B97\u3002
791
+ - \u660E\u6697\u53EF\u4EE5\u7528 Ribbon \u5E95\u90E8\u7684\u660E\u6697\u6309\u94AE\uFF0C\u6216\u547D\u4EE4\u9762\u677F\u91CC\u7684\u300C\u5207\u6362\u660E\u6697\u6A21\u5F0F\u300D\u4E00\u952E\u5207\u3002\u6709\u7684\u8BBE\u8BA1\u8BED\u8A00\u56FA\u5B9A\u8DDF\u968F\u7CFB\u7EDF\u660E\u6697\uFF0C\u8FD9\u65F6\u5207\u4E0D\u52A8\u662F\u6B63\u5E38\u7684\u3002
792
+ - \u5546\u5E97\u7684\u300C\u4E3B\u9898\u300D\u5206\u7C7B\u91CC\u8FD8\u80FD\u88C5\u522B\u4EBA\u505A\u7684\u4E3B\u9898\u3002`,"todo-standalone":`2.14 \u8D77\uFF0C\u5F85\u529E\u6E05\u5355\u5355\u72EC\u5F00\u6210\u4E00\u4E2A\u6807\u7B7E\u9875\u4E5F\u662F\u5B8C\u6574\u7684\uFF1A\u80FD\u7B5B\u9009\u3001\u80FD\u65B0\u5EFA\u3001\u80FD\u62D6\u7740\u6539\u65E5\u671F\uFF0C\u5BBD\u7A84\u90FD\u6392\u5F97\u597D\u3002
793
+
794
+ ## \u5355\u72EC\u6253\u5F00
795
+
796
+ \u5728\u65E5\u5386 Space \u7684\u6807\u7B7E\u680F\u70B9 +\uFF08\u300C\u65B0\u5EFA\u6807\u7B7E\u9875\u300D\uFF09\uFF0C\u9009\u300C\u5F85\u529E\u6E05\u5355\u300D\u5361\u7247\uFF0C\u5B83\u5C31\u5F00\u6210\u4E3B\u533A\u7684\u4E00\u4E2A\u6807\u7B7E\u3002\u5361\u7247\u4E5F\u53EF\u4EE5\u62D6\u5230\u522B\u7684\u5206\u680F\u6216\u4FA7\u680F\u91CC\u6253\u5F00\u3002
797
+
798
+ ## \u5BBD\u7684\u65F6\u5019
799
+
800
+ - \u9876\u90E8\u300C\u4ECA\u5929 / \u8BA1\u5212 / \u5168\u90E8\u300D\u5207\u6362\u8303\u56F4\uFF0C\u65C1\u8FB9\u7684\u6E05\u5355\u83DC\u5355\u9009\u300C\u6240\u6709\u6E05\u5355\u300D\u3001\u67D0\u4E00\u5F20\u8868\uFF0C\u6216\u300C\u7B14\u8BB0\u91CC\u7684\u4EFB\u52A1\u300D\u3002\u6BCF\u4E2A\u6807\u7B7E\u9875\u5404\u8BB0\u5404\u7684\u7B5B\u9009\u3002
801
+ - \u6700\u4E0A\u9762\u7684\u65B0\u5EFA\u6846\u8BA4\u5F97\u300C\u660E\u5929\u4E0B\u53483\u70B9\u300D\u8FD9\u6837\u7684\u8BF4\u6CD5\uFF1B\u53EF\u5199\u7684\u8868\u4E0D\u6B62\u4E00\u5F20\u65F6\uFF0C\u53EF\u4EE5\u9009\u52A0\u5230\u54EA\u5F20\u3002
802
+ - \u628A\u4E00\u884C\u62D6\u5230\u300C\u4ECA\u5929\u300D\u300C\u660E\u5929\u300D\u6216\u300C\u672A\u6392\u671F\u300D\u7EC4\u5934\u4E0A\u5C31\u6539\u4E86\u65E5\u671F\uFF0C\u6539\u9519\u4E86\u80FD\u64A4\u9500\u3002
803
+ - \u952E\u76D8\uFF1A\`N\` \u805A\u7126\u65B0\u5EFA\u6846\uFF0C\`\u2191\` \`\u2193\` \u6362\u884C\uFF0C\u7A7A\u683C\u52FE\u9009\uFF0C\`Enter\` \u6253\u5F00\u3002
804
+
805
+ ## \u7A84\u7684\u65F6\u5019
806
+
807
+ \u653E\u5728\u65E5\u5386\u53F3\u680F\u6216 Mini \u7A97\u53E3\u91CC\uFF0C\u7B5B\u9009\u548C\u6E05\u5355\u5408\u6210\u6807\u9898\u65C1\u7684\u4E00\u4E2A\u83DC\u5355\uFF0C\u6765\u6E90\u7F29\u6210\u65E5\u671F\u524D\u7684\u8272\u70B9\u3002\u5BBD\u7A84\u6309\u5B83\u81EA\u5DF1\u7684\u5BBD\u5EA6\u5207\u6362\uFF0C\u4E0D\u770B\u5B83\u653E\u5728\u54EA\u91CC\u3002`,welcome:`Forsion \u662F\u4E00\u5F20\u53EF\u4EE5\u81EA\u5DF1\u642D\u7684\u5DE5\u4F5C\u53F0\uFF1A\u548C Tangu \u5BF9\u8BDD\uFF0C\u5728\u7B14\u8BB0\u91CC\u5199\u4E1C\u897F\uFF0C\u518D\u628A\u5B83\u4EEC\u6446\u6210\u987A\u624B\u7684\u6837\u5B50\u3002\u8FD9\u4EFD\u6307\u5357\u966A\u4F60\u4E00\u7EA7\u4E00\u7EA7\u4E0A\u624B\u3002
808
+
809
+ ## Space \u4E0E View
810
+
811
+ - \u2460 \u7A97\u53E3\u6700\u5DE6\u8FB9\u7684\u7AD6\u680F\u53EB Ribbon\uFF0C\u4E0A\u9762\u6BCF\u4E2A\u56FE\u6807\u662F\u4E00\u4E2A Space\uFF1ATangu\u3001\u7B14\u8BB0\u3001\u65E5\u5386\u3001\u6536\u4EF6\u7BB1\u3001\u81EA\u52A8\u5316\u2026\u2026\u70B9\u4E00\u4E0B\u5C31\u5207\u8FC7\u53BB\uFF0C\u4E5F\u53EF\u4EE5\u6309 \`\u2318/Ctrl+1\` \u5230 \`9\` \u6309\u4F4D\u7F6E\u5207\u3002
812
+ - \u4E00\u4E2A Space \u662F\u4E3A\u4E00\u7C7B\u4E8B\u6446\u597D\u7684\u4E00\u7EC4 View\uFF1A\u2461 \u4E3B\u533A\u7684\u6807\u7B7E\u9875\uFF0C\u52A0\u4E0A \u2462 \u5DE6\u53F3\u4FA7\u680F\u548C\u5E95\u90E8\u9762\u677F\u3002
813
+ - Tangu \u662F Forsion \u91CC\u7684 AI Agent\uFF0C\u80FD\u804A\u5929\uFF0C\u4E5F\u80FD\u66FF\u4F60\u8BFB\u5199\u6587\u4EF6\u3001\u8DD1\u547D\u4EE4\u3002\u7B14\u8BB0 Space\uFF08Amadeus\uFF09\u662F\u4F60\u7684\u7B14\u8BB0\u5E93\uFF0C\u6BCF\u7BC7\u7B14\u8BB0\u90FD\u662F\u786C\u76D8\u4E0A\u7684\u4E00\u4E2A \`.md\` \u6587\u4EF6\u3002
814
+
815
+ ## \u8FD9\u4EFD\u6307\u5357\u600E\u4E48\u7528
816
+
817
+ - \u7AE0\u8282\u6309\u7B49\u7EA7\u5206\u7EC4\uFF0C\u505A\u5B8C\u672C\u7EA7\u7684\u4EFB\u52A1\uFF0C\u4E0B\u4E00\u7EA7\u5C31\u89E3\u9501\uFF1B\u300C\u65B0\u7248\u672C\u300D\u90A3\u7EC4\u4E0D\u4E0A\u9501\u3002
818
+ - \u4EFB\u52A1\u65C1\u7684\u300C\u5E26\u6211\u53BB\u300D\u4F1A\u5207\u5230\u5BF9\u5E94\u7684 Space\u3001\u6253\u5F00\u8981\u7528\u7684\u5730\u65B9\uFF0C\u8FD9\u4E00\u7AE0\u4E5F\u8DDF\u8FC7\u53BB\u6302\u5728\u90A3\u8FB9\u7684\u53F3\u680F\uFF0C\u8FB9\u770B\u8FB9\u505A\u3002
819
+ - \u5361\u4F4F\u4E86\u5C31\u70B9\u300C\u95EE Tangu\u300D\uFF0C\u5B83\u4F1A\u5E26\u7740\u672C\u7AE0\u5185\u5BB9\u5F00\u4E00\u4E2A\u65B0\u5BF9\u8BDD\u3002
820
+ - \u4EE5\u524D\u505A\u8FC7\u7684\u4E8B\u76F4\u63A5\u7B97\u6570\uFF0C\u8FDB\u5EA6\u5B58\u5728\u8FD9\u53F0\u8BBE\u5907\u4E0A\u3002\u7528\u8FC7\u4E00\u9635\u7684\u8BDD\uFF0C\u53F3\u4E0A\u89D2\u300C\xB7\xB7\xB7\u300D\u91CC\u53EF\u4EE5\u5168\u90E8\u89E3\u9501\u3002
821
+
822
+ > [!tip]
823
+ > \u627E\u4E0D\u5230\u67D0\u4E2A\u529F\u80FD\u65F6\uFF0C\u6309 \`\u2318/Ctrl+K\` \u6253\u5F00\u547D\u4EE4\u9762\u677F\uFF0C\u8F93\u5165\u540D\u5B57\u641C\u4E00\u4E0B\u3002`},en:{agent:`Besides the default Tangu, you can create agents for specific jobs. Give each one a name, instructions and a memory of its own, and let it focus on one kind of work.
824
+
825
+ ## Create one
826
+
827
+ - Click Agents on the ribbon, or open Settings \u2192 Agents and click Open Agents.
828
+ - In the roster on the left, click Create agent. Fill in Name, Description and Instructions, saying how it should help and which principles it should follow, then click Create agent.
829
+
830
+ ## After that
831
+
832
+ - Its profile lets you keep tuning it: model, thinking effort, approval mode, persona, skills and MCP. Click Save configuration when you are done; changes apply from its next run. You can also read its memory, log and evolution.
833
+ - Its memory can be private, or shared with the default agent.
834
+ - To talk to it, open the mode menu in the chat box and switch to it under Normal mode.
835
+
836
+ > [!tip]
837
+ > Each agent's actions menu in the roster has Set as default and Reorder.`,automation:`Automations turn repeat work into a rule: when it triggers and what happens next. After that it runs by itself and sends the results to your Inbox.
838
+
839
+ ## Build your first one
840
+
841
+ - Click Automation on the ribbon. Use New automation in the left panel, or open Guide and templates and pick Daily reminder, Daily agent briefing, New record notification or One click to an agent. Custom workflow starts from scratch.
842
+ - The canvas reads trigger \u2192 action steps \u2192 Save and enable. Click a node to fill in its settings in the panel beside it; anything still missing is listed at the bottom.
843
+ - New workflows are saved paused by default. Test run carries it out once for real, so check each step's result before you enable it.
844
+
845
+ ## Building blocks
846
+
847
+ - Triggers: Timer (daily, once or at an interval), Event, File threshold, Manual (button) and Database changes.
848
+ - Actions: notify, run an agent, call a tool and write to a database, carried out in the order they are connected.
849
+
850
+ > [!tip]
851
+ > A Manual (button) rule can be attached to a button block in a note, so one click runs it.`,calendar:"The Calendar Space shows dates from your databases, time marks written in notes and subscribed calendars in one view. Your to-dos live here too.\n\n## Start with a calendar\n\nCalendar data comes from databases with a Date property, so the first visit is empty. In the left panel, click \u2460 + next to Calendars, choose Add database and pick a table with a date column. If you have none yet, create one in the Note Space first. The same menu can subscribe to an external calendar or import an `.ics` file; both stay read-only.\n\n## Add an event\n\n- \u2461 Click a time slot (or press `C`), type the title right in the grid, then press `Enter` to save or `Esc` to cancel.\n- Drag an event to move it, or drag its top or bottom edge to change its length. Click an event to open its detail card beside it.\n- `D`, `W`, `3` and `M` switch to day, week, 3-day and month; `T` jumps back to today.\n\n## Tick off a to-do\n\n\u2462 The right panel holds your to-do list. In a note, write a checkbox task, type `@tomorrow` after it and pick Schedule from the suggestions; the task then shows up here. Tick its box to finish it, and the line in the note is marked done as well.",chat:`Tangu is the AI agent in Forsion. Say something and it answers, and it can also look things up, edit files and run commands for you. Start with a hello.
852
+
853
+ ## Start a new session
854
+
855
+ - Click Tangu on the ribbon. Your sessions are listed on the left and the conversation sits in the middle.
856
+ - \u2460 Click New session at the top of the left panel, or press \`\u2318/Ctrl+N\` in Tangu (in the Note Space the same key creates a note).
857
+ - \u2461 Type in the box, then press \`Enter\` to send or \`Shift+Enter\` for a new line.
858
+
859
+ ## Give it context
860
+
861
+ - Drop files, notes or a session from the left panel into the chat to attach them as references Tangu can read. Screenshots can be pasted straight into the box.
862
+ - Type \`[[\` to reference a past chat, or \`/\` to call up skills and commands.
863
+ - You can keep sending messages while it works; it reads them at its next step.
864
+ - Select text in a reply and click Quote to bring it into your next message.
865
+
866
+ > [!tip]
867
+ > The Chat / Work capsule next to New session sets the mode: Chat for light conversation, Work for the full toolset. The mode is fixed when a session is created, so start a new one to change it.`,computer:`Let Tangu operate other apps by looking at your screen. It takes a screenshot to see what is there, then clicks and types, step by step, until the job is done.
868
+
869
+ ## Before you start
870
+
871
+ - This works in the desktop app through the Computer Use plugin, which is installed the first time you set up its permissions.
872
+ - On macOS, tangu-computer-use needs access under Privacy & Security in System Settings (Accessibility and Screen Recording). Go to Settings \u2192 System \u2192 Device permissions, click Set up permission, follow the guide, then click Verify Computer Use permissions. Windows skips this step.
873
+ - Settings \u2192 Computer Use decides whether it may take the foreground, and turns Jev acceleration and the browser tools on or off.
874
+
875
+ ## Put it to work
876
+
877
+ Just say what you want done in a chat, for example "open Notes and start a shopping list". Tangu works from screenshots, and each step shows up in the conversation. Whether it asks before acting follows the session's approval mode.
878
+
879
+ > [!tip]
880
+ > To stop it partway, click the stop button in the chat.`,database:`A database (a \`.db\` file, called a base in the notes tree) holds records in a table with typed columns. The same rows can also be viewed as a board, a calendar or a gallery.
881
+
882
+ ## Create one
883
+
884
+ \u2460 In the Note Space, right-click empty space or a folder in the notes tree, choose New base and give it a name. A \`.db\` file appears in your vault and opens in a tab.
885
+
886
+ \u2461 To put a table inside a note, type \`/\` in the text and choose Database. Link database embeds a table you already have.
887
+
888
+ ## Columns and views
889
+
890
+ - The \uFF0B at the right end of the header adds a column. Columns have types: text, number, checkbox, date, attachment, relation and more.
891
+ - The \uFF0B next to the view tabs adds a view: table, board, calendar, gallery, chart, form or gantt. Each view keeps its own filters and sorting.
892
+ - New in the toolbar adds a row, and you can click any cell to edit it.
893
+
894
+ > [!tip]
895
+ > Add a Date column while you are here, and in the "Calendar and to-dos" chapter you can plug this table into the Calendar Space.`,market:`The Store has plugins, skills, agents, themes and Spaces that other people have built. Install one with a click, and remove it whenever you like.
896
+
897
+ ## Open the Store
898
+
899
+ \u2460 Click the Store icon at the bottom of the ribbon, or search for "Store" in the command palette (\`\u2318/Ctrl+K\`). Browse by category on the left: Plugins, Skills, Agents, Spaces, Themes and Web apps. The search box at the top finds names, authors and tags.
900
+
901
+ ## Install and manage
902
+
903
+ - Open a listing to see its details, then click Install. Most plugins work right away; if one has settings, Open settings takes you to them.
904
+ - Installed lists everything you have added, and that is where you Uninstall. Updates shows what has a newer version.
905
+ - Plugins marked Desktop only need features that exist only on a computer, so they cannot be installed on a phone.
906
+
907
+ > [!tip]
908
+ > You can also turn a plugin off in Settings \u2192 Plugins without uninstalling it.`,"mini-capsules":`From 2.14, the Mini window's top bar no longer takes up two strips. It is now two capsules floating over the content, so more of the content shows.
909
+
910
+ ## Open the Mini window
911
+
912
+ Press \`\u2318/Ctrl+Shift+M\` (a global shortcut that works even while another app is in front), or run "Open mini card" from the command palette. It is a small card that stays on top, handy for a quick chat, a quick note or ticking off a to-do while you do something else.
913
+
914
+ ## The two capsules
915
+
916
+ - Left: a button for switching Space, followed by a title menu for changing the session or note.
917
+ - Right: new, Show in main panel and close.
918
+ - The rest of the bar is transparent. Hold any empty spot to drag the window, and the conversation scrolls underneath the capsules.
919
+
920
+ ## What it can hold
921
+
922
+ Tangu (switch sessions and send messages), Note (pick or create a note and edit it in place) and the to-do list. Drag an edge or corner of the card to resize it; it keeps that size the next time you open it.`,muse:`Muse is an agent that works on its own in the background. It wakes up on a rhythm, looks at what you have been doing, proposes to-dos worth doing and keeps an eye on whatever you asked it to watch.
923
+
924
+ ## Muse and Historian
925
+
926
+ Settings \u2192 Agents \u2192 Background agents holds two of them:
927
+
928
+ - Historian organizes conversations and memory: it summarizes sessions and maintains logs and memories.
929
+ - Muse works proactively on a schedule, with its own Library and its own Space (Muse on the ribbon).
930
+
931
+ Both are on by default. If you turned one off, switch it back on here, then click Save changes.
932
+
933
+ ## Shape how it works
934
+
935
+ - Permission tier: Ask (out-of-scope actions wait for your approval), Agent approves (your default agent decides once on your behalf) or Full auto.
936
+ - Heartbeat interval, active hours, and whether notifications arrive immediately or as a daily digest.
937
+ - Say "keep an eye on \u2026" in any chat to set a watch rule, and use Hand to Muse on a task card in chat to have it track a follow-up.
938
+
939
+ > [!tip]
940
+ > The to-dos Muse proposes and the actions waiting for your approval arrive in your Inbox, and are also listed in the right panel of the Muse Space.`,note:`The Note Space (Amadeus) is your notes library. Every note is a Markdown file on your disk that you can write in, link to other notes and spread out on a canvas.
941
+
942
+ ## Create and write
943
+
944
+ - Open a vault first. It is just an ordinary folder on your computer, and the notes tree on the left shows what is inside.
945
+ - \u2460 In the Note Space, press \`\u2318/Ctrl+N\` or click New note in the left panel.
946
+ - Type \`/\` on an empty line for the block menu: heading, to-do, table, code, database and more. Markdown prefixes such as \`# \` work too.
947
+
948
+ ## Link notes together
949
+
950
+ Type \`[[\`, pick a note from the suggestions and press \`Enter\` to create a wikilink. The note you linked to gains a backlink, which you can see under \u2462 Backlinks once you open the right panel.
951
+
952
+ ## Document and canvas
953
+
954
+ With a note open, the \u2461 Document / Canvas switch sits at the top left of the note. It is the same content seen two ways: the document reads top to bottom, the canvas lets you arrange it like a whiteboard, and switching never changes a word. "Toggle document / canvas" in the command palette does the same thing, as long as a note is open.`,plugin:`Views, commands and Spaces in Forsion can all be extended with plugins. A desktop plugin is just a folder: put it in the plugins folder, reload, and it runs.
955
+
956
+ ## What a plugin looks like
957
+
958
+ - Each plugin is one folder under \`~/.forsion/plugins/\`, holding at least \`manifest.json\` (id, name, version and so on) and \`main.js\`.
959
+ - \`main.js\` is itself the body of \`setup(ctx)\`. Call things like \`ctx.registerView(\u2026)\` at the top level to register views, commands, slash menu items or file types. Do not wrap it in another function, or nothing gets registered and no error appears.
960
+ - Tools for the AI come from a different kind of plugin, Tangu engine plugins, which use their own format.
961
+
962
+ ## Load one from a local folder
963
+
964
+ - Open Settings \u2192 Plugins, go to Installed plugins and expand Developer tools.
965
+ - Create sample plugin sets up a working example in one click; Open plugins folder is where your own plugin goes.
966
+ - After editing the code, click Reload. There is no need to restart the app.
967
+
968
+ > [!tip]
969
+ > The plugin author handbook ships with the app as the built-in Forsion extension development skill. Ask Tangu to "write a Forsion plugin" and it starts from the official template. If an installed plugin misbehaves, it can also run the plugin checker for you.`,space:`Once your views are arranged just right, save the layout as a Space of its own. One click on the ribbon brings it back.
970
+
971
+ ## Save the current layout
972
+
973
+ - Arrange the tabs and sidebars in any Space.
974
+ - Open the command palette (\`\u2318/Ctrl+K\`) and run "Save current layout as a Space".
975
+ - Enter a name when asked for the New Space name, and a new icon appears at the top of the ribbon.
976
+
977
+ You can also click \u2460 the \uFF0B in the Spaces area of the ribbon (New Space or folder) and choose New Space to start from an empty one. Saving Spaces works in the desktop app.
978
+
979
+ ## Afterwards
980
+
981
+ - Keep adjusting the layout inside your Space; it is remembered automatically. If it gets messy, use "Restore default layout for this Space" in \u2461 the row of floating buttons at the top right.
982
+ - Drag icons to reorder them. Right-click your Space's icon to open it in a new window or delete it.
983
+ - Settings \u2192 Spaces lists every Space, and lets you uninstall the ones you created.`,theme:`Make Forsion look the way you like: pick a design language, then an accent and a background, and the whole app follows.
984
+
985
+ ## Where to change it
986
+
987
+ Press \`\u2318/Ctrl+,\` to open Settings and go to \u2460 Appearance. From top to bottom you will find:
988
+
989
+ - \u2461 Design language, which sets the structure: corners, fonts and shadows. Genesis and Genesis Glass are two of them.
990
+ - \u2462 Color scheme, with two separate axes, Accent and Background. Each offers Classic, Coral, Teal, Lavender, Clear blue, Ink and Custom.
991
+ - Display and motion, covering light or dark, interface size, shadows and more.
992
+
993
+ ## Good to know
994
+
995
+ - This chapter's task counts a change of design language, accent or background. Switching between light and dark alone does not count.
996
+ - The light/dark button at the bottom of the ribbon and "Toggle light/dark mode" in the command palette switch modes in one click. Some design languages always follow the system setting, so the switch has no effect there.
997
+ - The Store has a Themes category with more themes to install.`,"todo-standalone":`From 2.14, the to-do list is complete even in a tab of its own: filters, a quick-add box and drag-to-reschedule, laid out well at any width.
998
+
999
+ ## Open it on its own
1000
+
1001
+ In the Calendar Space, click + on the tab bar (New tab) and choose the To-do list card. It opens as a tab in the main area. You can also drag the card into another pane or a sidebar.
1002
+
1003
+ ## When it is wide
1004
+
1005
+ - Today / Scheduled / All at the top sets the range, and the list menu beside it picks All lists, a single table or Tasks in notes. Each tab remembers its own filters.
1006
+ - The quick-add box at the top understands phrases like "tomorrow 3pm". When more than one table can take new to-dos, you choose which one it adds to.
1007
+ - Drag a row onto the Today, Tomorrow or Unscheduled heading to change its date. You can undo it.
1008
+ - Keyboard: \`N\` focuses the quick-add box, \`\u2191\` \`\u2193\` move between rows, the space bar ticks a row off and \`Enter\` opens it.
1009
+
1010
+ ## When it is narrow
1011
+
1012
+ In the Calendar's right panel or the Mini window, the filters and the list choice merge into one menu next to the title, and each source shrinks to a color dot before the date. It switches by its own width, not by where it sits.`,welcome:`Forsion is a workbench you shape yourself: talk with Tangu, write in your notes, and arrange it all the way you like. This guide takes you through it one level at a time.
1013
+
1014
+ ## Spaces and Views
1015
+
1016
+ - \u2460 The strip on the far left is the ribbon. Each icon on it is a Space: Tangu, Note, Calendar, Inbox, Automation and more. Click one to switch to it, or press \`\u2318/Ctrl+1\` to \`9\` to switch by position.
1017
+ - A Space is a set of Views laid out for one kind of work: \u2461 tabs in the main area, plus \u2462 the left and right sidebars and the bottom panel.
1018
+ - Tangu is the AI agent in Forsion. It chats, and it can also read and write files and run commands for you. The Note Space (Amadeus) is your notes library, where every note is a plain \`.md\` file on your disk.
1019
+
1020
+ ## How this guide works
1021
+
1022
+ - Chapters are grouped by level. Finish a level's tasks and the next level unlocks. The What's new group is never locked.
1023
+ - "Take me there" next to a task switches to the right Space and opens what you need. This chapter comes along in that Space's right panel, so you can read while you work.
1024
+ - Stuck? "Ask Tangu" starts a new chat that has this chapter attached.
1025
+ - Things you have already done count right away, and progress is kept on this device. Been around a while? Unlock everything from the \xB7\xB7\xB7 menu at the top right.
1026
+
1027
+ > [!tip]
1028
+ > Can't find something? Press \`\u2318/Ctrl+K\` to open the command palette and search for it by name.`}};var xc="forsion-guide",Lt={reader:"guide",side:"guide-side",companion:"guide-companion"},ni="guide-chapters",kc=e=>`forsion-extend.guide.${e}`;function We(e,t){try{let n=localStorage.getItem(kc(e));return n===null?t:JSON.parse(n)}catch{return t}}function Je(e,t){try{localStorage.setItem(kc(e),JSON.stringify(t))}catch{}}function wc(e,t){let n=new Set,r=We("unlockAll",!1),a=null,i=We("chapter","welcome"),s=We("companion","welcome"),l=null,c=null,d=!1,f,p=[],u=()=>Qe(e.getLocale?.()),h=(v,E)=>Ce(u(),v,E),m=(v,E)=>e.achievements?.count?.(v,E?{own:!0}:void 0)??0,y=()=>({count:m,unlockAll:r,desktop:t.desktop,appVersion:a}),_=v=>v.title[u()]||v.title.zh,C=v=>v==="new"?h("guide.whatsNew",{version:Zn.find(E=>E.version)?.version??""}):h(`guide.level.${v}`),x=()=>{for(let v of[...n])try{v()}catch(E){console.error("[guide] listener failed",E)}},k=()=>{let v=y(),E=new Set(gn.flatMap(le=>le.tasks.filter(de=>Ht(de,v)).map(de=>de.id)));if(l)for(let le of gn)for(let de of le.tasks)E.has(de.id)&&!l.has(de.id)&&e.app?.notify?.(h("guide.toast.taskDone",{task:_(de)}));l=E,q(v);let I=bc(v),Z=We("reached",null);Z===null?Je("reached",I):pt.findIndex(le=>le.id===I)>pt.findIndex(le=>le.id===Z)&&(Je("reached",I),Je("justUnlocked",I),B({kind:"level",level:I})),We("pendingLetter",null)&&Y()},A=v=>!!v.spot&&!!e.app?.spotlight&&We("spotlight",!0)&&(t.desktop||!v.desktopOnly),O=(v,E,I)=>{let Z=v.spot;c={chapter:E.id,task:v.id},x();let le=E.tasks.length>1?h("guide.spotStep",{n:E.tasks.indexOf(v)+1,total:E.tasks.length}):void 0;e.app.spotlight({anchor:Z.anchor,title:_(Z),body:Z.body[u()]||Z.body.zh,step:le}).then(async de=>{d||(c?.task===v.id&&de!=="replaced"&&(c=null,x()),de==="mute"&&ne.setSpotlight(!1),de==="missing"&&I&&(Z.here&&v.go?.space&&await e.app?.openSpace?.(v.go.space),v.go?.command&&e.app?.runCommand?.(v.go.command)))})},q=v=>{let E=c&&hn(c.chapter),I=E&&E.tasks.find(le=>le.id===c.task);if(!E||!I||!Ht(I,v))return;let Z=E.tasks.find(le=>!Ht(le,v)&&A(le)&&!le.spot.here&&(le.go?.space??"")===(I.go?.space??""));Z?O(Z,E,!1):(c=null,e.app?.spotlight?.(null))},N=Promise.resolve(),B=v=>{!e.inbox||!We("reminders",!0)||(Je("pendingLetter",v),Y())},Y=()=>{N=N.then(se,se)},se=async()=>{let v=We("pendingLetter",null);if(d||!v||!e.inbox)return;let E=v.kind==="level"?Rt(v.level):Rt("new"),I=E.map(He=>`- ${_(He)}`).join(`
1029
+ `),Z=v.kind==="level"?{title:h("guide.letter.levelTitle",{level:C(v.level)}),body:`${h("guide.letter.levelBody")}
1030
+
1031
+ ${I}`}:{title:h("guide.letter.versionTitle",{version:v.version,n:E.length}),body:`${h("guide.letter.versionBody")}
1032
+
1033
+ ${I}`},le=await e.inbox.post(Z);if(!le||d)return;let de=We("lastLetter",null);Je("lastLetter",le),Je("letters",{...We("letters",{}),[le]:v}),JSON.stringify(We("pendingLetter",null))===JSON.stringify(v)&&Je("pendingLetter",null),de&&de!==le&&await e.inbox.archive(de)},V=()=>{let v=ei(y());if(!v||We("seenVersion",null)===v)return;if(!(We("seenVersion",null)!==null||m("chat.send",!1)+m("note.create",!1)>0)){Je("seenVersion",v);return}let I=Date.now(),Z=()=>{if(!d){if(document.querySelector(".ob-rail")&&Date.now()-I<6e5){f=window.setTimeout(Z,3e3);return}Je("seenVersion",v),B({kind:"version",version:v})}};f=window.setTimeout(Z,3e3)},ne={ctx:e,locale:u,t:h,env:y,title:_,levelName:C,subscribe(v){return n.add(v),()=>{n.delete(v)}},selected:()=>hn(i)??gn[0],select(v){!hn(v)||v===i||(i=v,Je("chapter",v),hn(v).level===We("justUnlocked",null)&&Je("justUnlocked",null),x())},companionChapter:()=>hn(s)??ne.selected(),async go(v,E){let I=v.go;if(!I||v.desktopOnly&&!t.desktop)return;s=E.id,Je("companion",E.id);let Z=A(v);c&&(c=null,Z||e.app?.spotlight?.(null)),I.space&&!(Z&&v.spot.here)&&await e.app?.openSpace?.(I.space)&&I.space!==xc&&e.openView?.(Lt.companion,{location:"right"}),Z?O(v,E,!0):I.command&&e.app?.runCommand?.(I.command),I.settings&&e.app?.openSettings?.(I.settings),x()},markdown(v){let E=ti[u()]?.[v.id]||ti.zh[v.id]||"",I=E.search(/\n\s*\n/);return I<0?{intro:E.trim(),body:""}:{intro:E.slice(0,I).trim(),body:E.slice(I).trim()}},justUnlocked:()=>We("justUnlocked",null),setUnlockAll(v){r=v,Je("unlockAll",v),x()},reminders:()=>We("reminders",!0),setReminders(v){Je("reminders",v),x()},spotlightOn:()=>!!e.app?.spotlight&&We("spotlight",!0),setSpotlight(v){Je("spotlight",v),!v&&c&&(c=null,e.app?.spotlight?.(null)),x()},spotTask:()=>c?.task??null,letter:v=>We("letters",{})[v]??null,async openGuide(v){v&&ne.select(v),Je("justUnlocked",null),await e.app?.openSpace?.(xc),x()},dispose(){c&&e.app?.spotlight?.(null),d=!0,window.clearTimeout(f);for(let v of p.splice(0))v();n.clear()}},pe=e.achievements?.subscribe?.(()=>{k(),x()});pe&&p.push(pe);let Ee=e.subscribeLocale?.(()=>x());return typeof Ee=="function"&&p.push(Ee),k(),t.appVersion.then(v=>{d||(a=v,V(),x())}),ne}function _r(e){let t=vc(e.env());return Zn.map(n=>({level:n.id,chapters:t.filter(r=>r.level===n.id)})).filter(n=>n.chapters.length)}function zc(e,t){switch(e){case"ribbon":return{x:5,y:10,w:28,h:168};case"ribbon-plus":return{x:5,y:180,w:28,h:26};case"ribbon-bottom":return{x:5,y:208,w:28,h:26};case"left-top":return{x:48,y:14,w:128,h:28};case"left-plus":return{x:180,y:16,w:22,h:24};case"left-list":return{x:48,y:54,w:154,h:122};case"main-tabs":return{x:224,y:14,w:96,h:22};case"main-top":return{x:226,y:44,w:104,h:24};case"main-top-right":return{x:498,y:44,w:60,h:24};case"main-body":return t.main==="grid"?{x:232,y:78,w:328,h:170}:{x:244,y:80,w:304,h:112};case"main-bottom":return{x:236,y:208,w:312,h:42};case"right":return{x:588,y:16,w:116,h:76};case"nav":return{x:14,y:92,w:172,h:28};case"section-1":return{x:224,y:60,w:476,h:86};case"section-2":return{x:224,y:160,w:476,h:90}}}var _e=e=>({style:e}),qe=(e,t,n,r=7)=>o("rect",{x:e,y:t,width:n,height:r,rx:r/2,..._e("fill:var(--overlay-medium)")}),eo=(e,t,n=12,r=!1)=>o("rect",{x:e,y:t,width:n,height:n,rx:3,..._e(r?"fill:var(--text-muted)":"fill:var(--overlay-strong)")}),to=(e,t,n,r="")=>o("text",{x:e,y:t,..._e(`fill:var(--text);font:500 12px var(--font-ui);${r}`),children:n});function _c({g:e,figure:t}){let n=e.locale(),r=new Map;for(let p of t.marks)if(p.text)for(let u of[].concat(p.slot))r.set(u,p.text[n]||p.text.zh);let a=new Set(t.marks.flatMap(p=>[].concat(p.slot))),i=t.marks.flatMap(p=>[].concat(p.slot).map(u=>zc(u,t))),s=t.marks.map((p,u)=>{let h=zc([].concat(p.slot)[0],t);return{n:u+1,x:Math.min(h.x+h.w+4,712),y:Math.max(h.y-4,12)}}),l=t.marks.map(p=>p.label[n]||p.label.zh),c=()=>o(R,{children:[[16,44,72,100,128,156].map((p,u)=>o("g",{children:eo(11,p,16,u===2)},p)),o("path",{d:"M19 186v14M12 193h14",..._e("stroke:var(--text-faint);stroke-width:2;stroke-linecap:round")}),eo(11,213,16,a.has("ribbon-bottom")),eo(11,240,16),o("rect",{x:38,y:1,width:1,height:266,..._e("fill:var(--border)")}),eo(56,22,12,a.has("left-top")),r.has("left-top")?to(76,32,r.get("left-top")):qe(76,25,70),a.has("left-plus")&&o("path",{d:"M191 21v14M184 28h14",..._e("stroke:var(--text-muted);stroke-width:2;stroke-linecap:round")}),[62,86,110,134,158].map((p,u)=>o("g",{children:[eo(58,p,10),qe(76,p+1.5,[74,56,88,48,66][u])]},p)),r.has("right")?to(598,38,r.get("right")):qe(598,30,52),qe(598,52,84),qe(598,68,62),qe(598,116,92),qe(598,132,70)]}),d=()=>o(R,{children:[o("rect",{x:228,y:16,width:88,height:18,rx:6,..._e("fill:var(--bg-card)")}),r.has("main-tabs")?to(240,29,r.get("main-tabs"),"font-size:11px"):qe(238,22,52,6),o("rect",{x:230,y:47,width:48,height:18,rx:9,..._e("fill:var(--bg-card)")}),qe(242,53,24,6),qe(290,53,26,6),[506,524,542].map(p=>o("rect",{x:p,y:50,width:12,height:12,rx:3,..._e("fill:var(--overlay-strong)")},p)),t.main==="grid"?o(R,{children:[[0,1,2,3,4,5,6].map(p=>o("g",{children:qe(244+p*46,86,22,6)},p)),[104,140,176,212].map(p=>o("rect",{x:238,y:p,width:316,height:1,..._e("fill:var(--border)")},p)),[1,2,3,4,5,6].map(p=>o("rect",{x:238+p*45,y:98,width:1,height:146,..._e("fill:var(--border)")},p)),o("rect",{x:286,y:146,width:40,height:24,rx:4,..._e("fill:var(--overlay-medium)")}),o("rect",{x:376,y:182,width:40,height:18,rx:4,..._e("fill:var(--overlay-medium)")})]}):t.main==="chat"?o(R,{children:[o("rect",{x:412,y:84,width:132,height:26,rx:10,..._e("fill:var(--overlay-light)")}),qe(252,128,260),qe(252,144,230),qe(252,160,150),o("rect",{x:240,y:212,width:304,height:34,rx:10,..._e("fill:var(--bg-card);stroke:var(--border)")}),qe(254,226,120),o("circle",{cx:528,cy:229,r:8,..._e("fill:var(--overlay-strong)")})]}):o(R,{children:[o("rect",{x:252,y:86,width:120,height:12,rx:4,..._e("fill:var(--overlay-strong)")}),[110,126,142,166,182,206,222].map((p,u)=>o("g",{children:qe(252,p,[292,270,200,286,240,280,150][u])},p))]})]}),f=()=>o(R,{children:[[36,64,92,120,148,176].map((p,u)=>o("g",{children:[eo(24,p+8,12,u===2&&a.has("nav")),u===2&&r.has("nav")?to(44,p+18,r.get("nav")):qe(44,p+11,[64,52,58,70,46,60][u])]},p)),o("rect",{x:232,y:28,width:110,height:12,rx:4,..._e("fill:var(--overlay-strong)")}),r.has("section-1")?to(234,82,r.get("section-1")):qe(234,74,70),[0,1,2].map(p=>o("rect",{x:234+p*150,y:94,width:136,height:42,rx:8,..._e(p===0?"fill:var(--bg-card);stroke:var(--accent)":"fill:var(--bg-card);stroke:var(--border)")},p)),r.has("section-2")?to(234,182,r.get("section-2")):qe(234,174,70),[0,1,2,3,4,5,6].map(p=>o("circle",{cx:246+p*30,cy:210,r:10,..._e(p===0?"fill:var(--accent)":"fill:var(--overlay-strong)")},p)),[0,1,2,3,4,5,6].map(p=>o("circle",{cx:246+p*30,cy:236,r:8,..._e("fill:var(--overlay-medium)")},`b${p}`))]});return o("figure",{class:"fxg-figure",children:[o("svg",{class:"fxg-figure-svg",viewBox:"0 0 724 268",role:"img","aria-label":`${e.t("guide.figure")}: ${l.map((p,u)=>`${u+1} ${p}`).join("; ")}`,children:[o("rect",{x:.5,y:.5,width:723,height:267,rx:10,..._e("fill:var(--sidebar-bg, var(--bg));stroke:var(--border)")}),t.layout==="settings"?o("rect",{x:200,y:1,width:523,height:266,..._e("fill:var(--bg)")}):o("rect",{x:216,y:8,width:352,height:252,rx:8,..._e("fill:var(--bg)")}),i.map((p,u)=>o("rect",{x:p.x-4,y:p.y-4,width:p.w+8,height:p.h+8,rx:7,..._e("fill:var(--accent-wash);stroke:var(--accent);stroke-width:2")},`r${u}`)),t.layout==="settings"?f():o(R,{children:[c(),d()]}),s.map(p=>o("g",{children:[o("circle",{cx:p.x,cy:p.y,r:10,..._e("fill:var(--accent)")}),o("text",{x:p.x,y:p.y+4,"text-anchor":"middle",..._e("fill:var(--on-accent);font:600 12px var(--font-ui)"),children:p.n})]},p.n))]}),o("figcaption",{class:"fxg-figure-cap",children:l.map((p,u)=>o("span",{children:[o("b",{children:u+1}),p]},u))})]})}var Sc=`
1034
+ .fxg { color: var(--text); font-size: var(--ui-font-body); line-height: var(--ui-line-body); height: 100%; min-height: 0; display: flex; flex-direction: column; }
1035
+ .fxg button { font: inherit; }
1036
+ .fxg .fx-link { display: inline-flex; align-items: center; gap: 4px; padding: 0; border: 0; background: transparent; color: var(--accent-ink); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
1037
+ .fxg .fx-tag { display: inline-flex; align-items: center; padding: 1px 7px; border: var(--border-width) solid var(--overlay-strong); border-radius: var(--radius-pill); color: var(--text-muted); font-size: var(--ui-font-caption); line-height: var(--ui-line-caption); font-weight: 500; white-space: nowrap; }
1038
+ .fxg .fxg-muted { color: var(--text-muted); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); margin: 0; }
1039
+ .fxg .fxg-icon-btn { display: inline-flex; align-items: center; justify-content: center; min-width: 28px; height: 28px; padding: 0 6px; border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--text-muted); cursor: pointer; letter-spacing: 1px; }
1040
+ .fxg .fxg-icon-btn:hover { background: var(--overlay-light); color: var(--text); }
1041
+
1042
+ .fxg-reader .fxg-bar { flex: none; display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding: 8px 12px 0; }
1043
+ .fxg-reader .fxg-ro { color: var(--text-muted); }
1044
+ .fxg-reader .fxg-scroll { flex: 1 1 auto; min-height: 0; overflow: auto; }
1045
+ .fxg-reader .fxg-doc { min-height: 0; }
1046
+ .fxg-reader .fxg-col { box-sizing: border-box; width: 100%; max-width: var(--amx-page-max, 920px); margin: 0 auto; padding: 0 48px 48px; } /* \u540C Amadeus \u7B14\u8BB0\u9875 .amx-doc */
1047
+ .fxg-reader .fxg-col > .fxg-section, .fxg-reader .fxg-col > .fxg-lock { margin-top: 24px; }
1048
+ .fxg-reader .fxg-section h2 { margin: 8px 0 10px; font-size: var(--ui-font-title); line-height: var(--ui-line-title); font-weight: 600; }
1049
+
1050
+ .fxg .fxg-tasks { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
1051
+ .fxg .fxg-task { display: flex; align-items: center; gap: 10px; min-height: 34px; padding: 2px 6px; border-radius: var(--radius-sm); }
1052
+ .fxg .fxg-task:hover { background: var(--overlay-subtle); }
1053
+ .fxg .fxg-task-title { flex: 1 1 auto; min-width: 0; }
1054
+ .fxg .fxg-task.is-done .fxg-task-title { color: var(--text-muted); text-decoration: line-through; text-decoration-color: var(--text-faint); }
1055
+ .fxg .fxg-task-state { flex: none; color: var(--text-faint); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
1056
+ .fxg .fxg-go { flex: none; }
1057
+ .fxg .fxg-task.is-current { background: var(--accent-wash); } /* \u6B63\u5728\u73B0\u573A\u5708\u6CE8\u7684\u90A3\u4E00\u6761 */
1058
+ .fxg .fxg-check { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: var(--radius-pill); box-shadow: inset 0 0 0 1.5px var(--overlay-strong); color: var(--on-accent, #fff); }
1059
+ .fxg .fxg-check.is-on { background: var(--accent); box-shadow: none; }
1060
+
1061
+ .fxg-reader .fxg-figure { margin: 16px 0 20px; }
1062
+ .fxg-reader .fxg-figure-svg { display: block; width: 100%; height: auto; }
1063
+ .fxg-reader .fxg-figure-cap { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 6px 16px; color: var(--text-muted); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
1064
+ .fxg-reader .fxg-figure-cap b { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; margin-right: 6px; border-radius: var(--radius-pill); background: var(--accent); color: var(--on-accent); font-size: var(--ui-font-caption); line-height: 1; vertical-align: 1px; }
1065
+
1066
+ .fxg-reader .fxg-lock { margin-top: 4px; padding: 16px 18px; border-radius: var(--radius-lg); background: var(--overlay-subtle); display: grid; gap: 8px; }
1067
+ .fxg-reader .fxg-lock p { margin: 0; }
1068
+ .fxg-reader .fxg-lock-title { font-weight: 600; }
1069
+
1070
+ .fxg .fxg-more { position: relative; }
1071
+ .fxg .fxg-menu { position: absolute; right: 0; top: calc(100% + 4px); z-index: 20; min-width: 200px; padding: 4px; border-radius: var(--radius-md); background: var(--menu-bg, var(--panel-bg, var(--bg))); box-shadow: var(--shadow-menu, 0 8px 24px rgba(0, 0, 0, 0.16)); display: grid; }
1072
+ .fxg .fxg-menu-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 6px 10px; border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--text); text-align: left; cursor: pointer; }
1073
+ .fxg .fxg-menu-item:hover { background: var(--overlay-light); }
1074
+
1075
+ .fxg-side .fxg-tabs { flex: none; display: flex; gap: 4px; padding: 10px 12px 0; }
1076
+ .fxg-side .fxg-tabs button { padding: 4px 10px; border: 0; border-radius: var(--radius-pill); background: transparent; color: var(--text-muted); cursor: pointer; }
1077
+ .fxg-side .fxg-tabs button.is-on { background: var(--overlay-light); color: var(--text); }
1078
+ .fxg .fxg-pane { flex: 1 1 auto; min-height: 0; overflow: auto; padding: 12px 14px 16px; display: flex; flex-direction: column; gap: 8px; }
1079
+ .fxg .fxg-h { font-size: var(--ui-font-title); line-height: var(--ui-line-title); font-weight: 600; }
1080
+ .fxg .fxg-sub { margin-top: 8px; color: var(--text-muted); font-size: var(--ui-font-caption); line-height: var(--ui-line-caption); font-weight: 600; }
1081
+ .fxg .fxg-bar-track { height: 6px; border-radius: var(--radius-pill); background: var(--overlay-light); overflow: hidden; }
1082
+ .fxg .fxg-bar-track > i { display: block; height: 100%; border-radius: inherit; background: var(--accent); }
1083
+ .fxg .fxg-lines { display: grid; gap: 2px; }
1084
+ .fxg .fxg-line { display: flex; align-items: center; gap: 8px; width: 100%; min-height: 30px; padding: 2px 6px; border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--text); text-align: left; cursor: pointer; }
1085
+ .fxg .fxg-line > span:nth-child(2) { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
1086
+ .fxg .fxg-line:hover, .fxg .fxg-line.is-active { background: var(--overlay-subtle); }
1087
+ .fxg .fxg-line.is-locked { color: var(--text-muted); }
1088
+ .fxg .fxg-input { box-sizing: border-box; width: 100%; resize: vertical; min-height: 72px; padding: 8px 10px; border: var(--border-width) solid var(--border); border-radius: var(--radius-md); background: var(--input-bg, transparent); color: var(--text); font: inherit; }
1089
+ .fxg .fxg-pane > .btn { align-self: flex-start; }
1090
+ .fxg .fxg-chat { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
1091
+
1092
+ .fxg-companion .fxg-companion-head { display: flex; align-items: center; justify-content: space-between; }
1093
+ .fxg-companion .fxg-companion-head .fxg-sub { margin-top: 0; }
1094
+ .fxg-companion .fxg-back { align-self: flex-start; margin-top: 4px; }
1095
+
1096
+ .fxg-letter { height: auto; gap: 12px; }
1097
+ .fxg-letter .fxg-letter-chapter { display: grid; gap: 4px; }
1098
+ .fxg-letter .fxg-letter-title { padding: 0; border: 0; background: transparent; color: var(--text); font-weight: 600; text-align: left; cursor: pointer; }
1099
+ .fxg-letter > .btn { align-self: flex-start; }
1100
+ `;function Sr(e){let[,t]=T(0);X(()=>{let n=e.subscribe(()=>t(r=>r+1));return t(r=>r+1),n},[e])}function Cr(e){return o("div",{class:`fxg fxg-${e.kind}`,lang:e.g.locale()==="zh"?"zh-CN":"en",children:[o("style",{children:Sc}),e.children]})}var Tr=({on:e})=>o("span",{class:`fxg-check${e?" is-on":""}`,"aria-hidden":"true",children:e&&o("svg",{viewBox:"0 0 16 16",width:"10",height:"10",children:o("path",{d:"M3.5 8.5l3 3 6-7",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})})});function Ac({g:e,task:t,chapter:n}){let r=e.env(),a=Ht(t,r),i=!!t.desktopOnly&&!r.desktop;return o("li",{class:`fxg-task${a?" is-done":""}${!a&&e.spotTask()===t.id?" is-current":""}`,"data-task":t.id,children:[o(Tr,{on:a}),o("span",{class:"fxg-task-title",children:e.title(t)}),a?o("span",{class:"fxg-task-state",children:e.t("guide.taskDone")}):i?o("span",{class:"fxg-task-state",children:e.t("guide.desktopOnly")}):t.go?o("button",{type:"button",class:"btn ghost sm fxg-go",onClick:()=>void e.go(t,n),children:e.t("guide.go")}):null]})}function oi({g:e,chapter:t}){return o("ul",{class:"fxg-tasks",children:t.tasks.map(n=>o(Ac,{g:e,task:n,chapter:t},n.id))})}function Cc({g:e,value:t,label:n}){let r=J(null),a=J(null);return X(()=>{if(!(!r.current||!e.ctx.ui?.mountMarkdownEditor))return a.current=e.ctx.ui.mountMarkdownEditor(r.current,{value:t,label:n,readOnly:!0,modes:!1}),()=>{a.current?.dispose(),a.current=null}},[e]),X(()=>{a.current?.update({value:t})},[t]),o("div",{class:"fxg-doc",ref:r})}function Mm({g:e}){let[t,n]=T(!1),r=J(null);X(()=>{if(!t)return;let s=c=>{r.current?.contains(c.target)||n(!1)},l=c=>{c.key==="Escape"&&n(!1)};return document.addEventListener("pointerdown",s,!0),document.addEventListener("keydown",l),()=>{document.removeEventListener("pointerdown",s,!0),document.removeEventListener("keydown",l)}},[t]);let a=e.env(),i=(s,l,c)=>o("button",{type:"button",role:c===void 0?"menuitem":"menuitemcheckbox","aria-checked":c,class:"fxg-menu-item",onClick:()=>{n(!1),l()},children:[o("span",{children:s}),c&&o(Tr,{on:!0})]});return o("div",{class:"fxg-more",ref:r,children:[o("button",{type:"button",class:"fxg-icon-btn","aria-label":e.t("guide.more"),"aria-haspopup":"menu","aria-expanded":t,onClick:()=>n(!t),children:"\xB7\xB7\xB7"}),t&&o("div",{class:"fxg-menu",role:"menu",children:[i(a.unlockAll?e.t("guide.relock"):e.t("guide.unlockAll"),()=>e.setUnlockAll(!a.unlockAll)),i(e.t("guide.reminders"),()=>e.setReminders(!e.reminders()),e.reminders()),e.ctx.app?.spotlight&&i(e.t("guide.spotlight"),()=>e.setSpotlight(!e.spotlightOn()),e.spotlightOn()),e.ctx.app?.runCommand&&i(e.t("guide.openAchievements"),()=>{e.ctx.app?.runCommand?.("open-achievements")})]})]})}function Ec({g:e}){Sr(e),X(()=>{e.ctx.achievements?.track("guide.open")},[e]);let t=e.selected(),n=e.env(),r=Qn(t,n),{intro:a,body:i}=e.markdown(t),s=r!=="locked",l=pt[pt.findIndex(c=>c.id===t.level)-1];return o(Cr,{g:e,kind:"reader",children:[o("div",{class:"fxg-bar",children:[o("span",{class:"fx-tag fxg-ro",children:e.t("guide.readOnly")}),o(Mm,{g:e})]}),o("div",{class:"fxg-scroll",children:o("div",{class:"fxg-col",children:[o(Cc,{g:e,value:`# ${e.title(t)}
1101
+
1102
+ ${a}`,label:e.title(t)}),s&&t.figure&&o(_c,{g:e,figure:t.figure}),s&&i&&o(Cc,{g:e,value:i,label:e.title(t)}),r==="locked"&&l?o("div",{class:"fxg-lock","data-locked":!0,children:[o("div",{class:"fxg-lock-title",children:e.t("guide.locked.title")}),o("p",{children:e.t("guide.locked.body",{level:e.levelName(l.id)})}),o("p",{class:"fxg-muted",children:e.t("guide.locked.left")}),o("ul",{class:"fxg-tasks",children:Rt(l.id).flatMap(c=>Io(c.tasks,n).filter(d=>!Ht(d,n)).map(d=>o(Ac,{g:e,task:d,chapter:c},d.id)))}),o("p",{class:"fxg-muted",children:e.t("guide.locked.hint")})]}):o("section",{class:"fxg-section","data-guide-tasks":!0,children:[o("h2",{children:e.t("guide.tasks")}),o(oi,{g:e,chapter:t})]})]})})]})}function Im({done:e,total:t}){return o("div",{class:"fxg-bar-track",role:"progressbar","aria-valuemin":0,"aria-valuemax":t,"aria-valuenow":e,children:o("i",{style:{width:`${t?Math.round(e/t*100):0}%`}})})}function Tc({g:e,c:t}){let n=Qn(t,e.env());return o("button",{type:"button",class:`fxg-line is-${n}${e.selected().id===t.id?" is-active":""}`,onClick:()=>{e.select(t.id),e.ctx.openView?.(Lt.reader)},children:[o(Tr,{on:n==="done"}),o("span",{children:e.title(t)}),n==="locked"&&o("span",{class:"fxg-task-state",children:e.t("guide.lockedHint")})]})}function Rm({g:e}){let t=e.env(),n=Qa(t);if(!n)return o("div",{class:"fxg-pane",children:[o("div",{class:"fxg-h",children:e.t("guide.allDone")}),o("p",{class:"fxg-muted",children:e.t("guide.allDoneBody")}),o("div",{class:"fxg-sub",children:e.t("guide.review")}),_r(e).map(({level:s,chapters:l})=>o("button",{type:"button",class:"fxg-line",onClick:()=>{e.select(l[0].id),e.ctx.openView?.(Lt.reader)},children:[o(Tr,{on:!0}),o("span",{children:e.levelName(s)})]},s))]});let{done:r,total:a}=yc(n,t),i=pt[pt.findIndex(s=>s.id===n)+1];return o("div",{class:"fxg-pane",children:[o("div",{class:"fxg-h",children:e.levelName(n)}),o("div",{class:"fxg-muted",children:e.t("guide.levelProgress",{done:r,total:a})}),o(Im,{done:r,total:a}),o("div",{class:"fxg-lines",children:Rt(n).map(s=>o(Tc,{g:e,c:s},s.id))}),i&&o(R,{children:[o("div",{class:"fxg-sub",children:e.t("guide.next")}),o("div",{class:"fxg-lines",children:Rt(i.id).map(s=>o(Tc,{g:e,c:s},s.id))})]})]})}function Pc(e,t){let{intro:n,body:r}=e.markdown(t);return`# ${e.title(t)}
1103
+
1104
+ ${n}
1105
+
1106
+ ${r}`.trim()}function Lm({g:e}){let t=e.selected(),n=e.ctx.tangu?.mountChat;return n?o(Dm,{g:e,c:t,mount:n},`${t.id}:${e.locale()}`):o(Nm,{g:e,c:t})}function Dm({g:e,c:t,mount:n}){let r=J(null);return X(()=>{let a=n(r.current,{title:e.t("guide.ask.chatTitle")});return a.quote(Pc(e,t)),()=>a.dispose()},[]),o("div",{class:"fxg-chat",ref:r})}function Nm({g:e,c:t}){let[n,r]=T(""),[a,i]=T(""),s=e.ctx.tangu?.startChat,l=async()=>{if(!s)return;let c=`${e.t("guide.ask.prompt",{chapter:e.title(t),question:n.trim()})}
1107
+
1108
+ ---
1109
+ ${Pc(e,t)}`,d=await s({prompt:c,send:!1});d?.ok?r(""):i(d?.error||e.t("guide.ask.unavailable"))};return o("div",{class:"fxg-pane",children:[o("p",{class:"fxg-muted",children:e.t("guide.ask.hint",{chapter:e.title(t)})}),o("textarea",{class:"fxg-input",rows:4,value:n,placeholder:e.t("guide.ask.placeholder"),onInput:c=>r(c.target.value)}),o("button",{type:"button",class:"btn sm",disabled:!s,onClick:()=>void l(),children:e.t("guide.ask.send")}),(!s||a)&&o("p",{class:"fxg-muted",children:a||e.t("guide.ask.unavailable")})]})}function Mc({g:e}){Sr(e);let[t,n]=T("progress");return o(Cr,{g:e,kind:"side",children:[o("div",{class:"fxg-tabs",role:"tablist",children:["progress","ask"].map(r=>o("button",{type:"button",role:"tab","aria-selected":t===r,class:t===r?"is-on":"",onClick:()=>n(r),children:e.t(r==="progress"?"guide.progress":"guide.askTangu")},r))}),t==="progress"?o(Rm,{g:e}):o(Lm,{g:e})]})}function Ic({g:e}){Sr(e);let t=e.companionChapter(),n=Qn(t,e.env())==="done",r=J(n);return X(()=>{if(n&&!r.current){let a=window.setTimeout(()=>e.ctx.closeView?.(Lt.companion),1500);return()=>window.clearTimeout(a)}r.current=n},[n]),o(Cr,{g:e,kind:"companion",children:o("div",{class:"fxg-pane",children:[o("div",{class:"fxg-companion-head",children:[o("span",{class:"fxg-sub",children:e.t("guide.title")}),e.ctx.closeView&&o("button",{type:"button",class:"fxg-icon-btn","aria-label":e.t("guide.companion.close"),onClick:()=>e.ctx.closeView?.(Lt.companion),children:"\xD7"})]}),o("div",{class:"fxg-h",children:e.title(t)}),o("div",{class:"fxg-sub",children:e.t("guide.tasks")}),o(oi,{g:e,chapter:t}),o("button",{type:"button",class:"fx-link fxg-back",onClick:()=>void e.openGuide(t.id),children:e.t("guide.companion.back")})]})})}function Rc({g:e,letter:t}){Sr(e);let n=t?t.kind==="level"?t.level:"new":null,r=n&&(n==="new"||zr(n,e.env()))?Rt(n):[];return o(Cr,{g:e,kind:"letter",children:[r.map(a=>o("div",{class:"fxg-letter-chapter",children:[o("button",{type:"button",class:"fxg-letter-title",onClick:()=>void e.openGuide(a.id),children:e.title(a)}),o(oi,{g:e,chapter:a})]},a.id)),o("button",{type:"button",class:"btn sm",onClick:()=>void e.openGuide(r[0]?.id??hn("welcome")?.id),children:e.t("guide.letter.open")})]})}function Om(e){return!!e&&typeof e.registerView=="function"&&typeof e.registerListSource=="function"&&typeof e.openView=="function"&&typeof e.achievements?.count=="function"&&typeof e.achievements.subscribe=="function"&&typeof e.app?.openSpace=="function"&&typeof e.ui?.mountMarkdownEditor=="function"}function Lc(e,t=window){if(!Om(e)||t.tangu?.unitPage)return null;let n=t.tangu,r=wc(e,{desktop:typeof n?.appVersion=="function"&&!n.mobile,appVersion:typeof n?.appVersion=="function"?n.appVersion().catch(()=>null):Promise.resolve(null)}),a=i=>s=>(Be(o(i,{g:r}),s),()=>{Be(null,s)});return e.registerView({id:Lt.reader,title:r.t("guide.title"),icon:"page",workspaceSource:ni,mount:a(Ec)}),e.registerView({id:Lt.side,title:r.t("guide.progress"),icon:"list-view",mount:a(Mc)}),e.registerView({id:Lt.companion,title:r.t("guide.title"),icon:"todo",mount:a(Ic)}),e.registerListSource({id:ni,title:r.t("guide.title"),search:!0,items:i=>{let s=r.env(),l=i?.query?.trim().toLowerCase()??"",c=r.justUnlocked();return _r(r).flatMap(({level:d,chapters:f})=>f.map(p=>{let u=Qn(p,s);return{key:p.id,title:r.title(p),group:r.levelName(d),icon:u==="done"?"circle-check":u==="locked"?"lock":"circle",hint:d===c&&u!=="locked"?r.t("guide.justUnlocked"):void 0}})).filter(d=>!l||d.title.toLowerCase().includes(l))},subscribe:i=>r.subscribe(i),activeKey:()=>r.selected().id,open:i=>{r.select(i.key),e.openView(Lt.reader)}}),e.registerCommand?.({id:"open-guide",title:()=>r.t("guide.cmd.open"),keywords:"guide manual help tutorial levels \u4F7F\u7528\u6307\u5357 \u8BF4\u660E\u4E66 \u6559\u7A0B \u5E2E\u52A9 \u7B49\u7EA7 \u4EFB\u52A1",run:()=>{r.openGuide()}}),e.inbox?.registerCard({sender:()=>r.t("guide.title"),mount(i,s){return Be(o(Rc,{g:r,letter:r.letter(s.id)}),i),()=>{Be(null,i)}}}),r}var Xe=e=>Number.isFinite(Number(e))?Number(e):0,vt="penzor",Ar=e=>e?.apps?.apps.find(t=>t.appId===vt)?.bytes??0,Oc=500;async function Fm(e,t){let n=Math.min(20,Xe(t.totalPages));if(n<=1)return t.files;let r=await Promise.all(Array.from({length:n-1},(a,i)=>e(`/exports/list?pageSize=${Oc}&sortBy=date&sortOrder=desc&page=${i+2}`)));return[...t.files,...r.flatMap(a=>a.ok&&Array.isArray(a.data?.files)?a.data.files:[])]}async function Fc(e){let[t,n,r,a,i,s]=await Promise.all([e("/remotesync/vaults"),e("/amadeus/vaults"),e("/storage/quota"),e("/storage/files-by-app"),e(`/exports/list?pageSize=${Oc}&sortBy=date&sortOrder=desc`),e("/trash?all=1")]),c=[t,n,r,a,i,s].every(f=>!f.ok&&f.status===401);return{snap:{sync:t.ok&&Array.isArray(t.data?.vaults)?t.data:null,ama:n.ok&&Array.isArray(n.data?.vaults)?n.data.vaults.filter(f=>(f.role??"owner")==="owner").map(f=>({id:f.id,name:f.name,sizeBytes:Xe(f.sizeBytes)})):null,apps:r.ok&&a.ok&&Array.isArray(a.data?.apps)?{used:Xe(r.data?.used),quota:Xe(r.data?.quota),apps:a.data.apps,largest:a.data.largest??[]}:null,exports:i.ok&&Array.isArray(i.data?.files)?{files:await Fm(e,i.data),total:Xe(i.data.total),totalBytes:Xe(i.data.totalBytes)}:null,trash:s.ok&&Array.isArray(s.data)?s.data:null,at:Date.now()},signedOut:c}}var Dc=(e,t)=>t>0?{used:e,max:t,pct:Math.min(100,e/t*100),warn:e/t>=.9}:null;function ri(e){let t=e.sync?Xe(e.sync.usedBytes):0,n=e.ama?e.ama.reduce((d,f)=>d+f.sizeBytes,0):0,r=e.apps?Xe(e.apps.used):0,a=e.exports?Xe(e.exports.totalBytes):0,i=[["sync",t],["ama",n],["apps",r],["exports",a]].filter(([,d])=>d>0).map(([d,f])=>({ledger:d,bytes:f})),s=e.sync?.vaults.map(d=>d.updatedAt).filter(d=>!!d).sort().pop()??null,l=e.trash??[],c=!e.sync?.vaults.length&&!e.ama?.length&&!e.apps?.apps.length&&!e.exports?.files.length&&!l.length;return{total:t+n+r+a,segments:i,sync:e.sync?{bytes:t,vaults:e.sync.vaults.length,meter:Dc(t,Xe(e.sync.maxBytes)),updatedAt:s,maxFileBytes:Xe(e.sync.maxFileBytes)}:null,ama:e.ama?{bytes:n,vaults:e.ama.length}:null,apps:e.apps?{bytes:r,apps:e.apps.apps.filter(d=>d.files>0&&d.appId!==vt).map(d=>d.appId),meter:Dc(r,Xe(e.apps.quota)),trashCount:Pr(l).length,trashBytes:l.reduce((d,f)=>d+Xe(f.fileSize),0)}:null,exports:e.exports?{bytes:a,count:e.exports.total,latest:e.exports.files[0]??null}:null,empty:c}}var $m={"ai-studio":"AI Studio","photo-studio":"Photo Studio",notebase:"Notebase",chat:"Forsion Chat",connect:"Forsion Connect","video-studio":"Video Studio",bluebird:"Bluebird",cnti:"CNTI"},ai=e=>e?$m[e]??e.split(/[-_]/).filter(Boolean).map(t=>t[0].toUpperCase()+t.slice(1)).join(" "):"\u2014",no=e=>e.kind==="sync"?`sync:${e.vault}`:e.kind==="ama"?`ama:${e.vaultId}`:e.kind==="app"?`app:${e.appId}`:e.kind==="overview"?"ov":e.kind,On=e=>e.kind==="overview"||e.kind==="sync-home";function $c(e){if(e==="ov")return{kind:"overview"};if(e==="sync-home"||e==="exports"||e==="trash")return{kind:e};let t=e.indexOf(":"),n=t<0?e:e.slice(0,t),r=t<0?"":e.slice(t+1);return r?n==="sync"?{kind:"sync",vault:r}:n==="ama"?{kind:"ama",vaultId:r}:n==="app"?{kind:"app",appId:r}:null:null}function Bc(e,t,n){let r=[{key:"ov",title:t.overview,icon:"layout"}];if(!e)return r;let a=i=>Ro(i,n);if(e.apps&&r.push({key:`app:${vt}`,title:t.drive,icon:t.driveIcon,hint:a(Ar(e))}),e.sync){r.push({key:"sync",title:t.sync,kind:"folder",icon:"refresh",hint:a(Xe(e.sync.usedBytes))});for(let i of e.sync.vaults)r.push({key:`sync:${i.vault}`,parent:"sync",title:i.vault,icon:"database",hint:a(i.bytes)})}if(e.ama){r.push({key:"ama",title:t.ama,kind:"folder",icon:"cloud",hint:a(e.ama.reduce((i,s)=>i+s.sizeBytes,0))});for(let i of e.ama)r.push({key:`ama:${i.id}`,parent:"ama",title:i.name,icon:"page",hint:a(i.sizeBytes)})}if(e.apps){r.push({key:"apps",title:t.apps,kind:"folder",icon:"archive",hint:a(Math.max(0,Xe(e.apps.used)-Ar(e)))});for(let i of e.apps.apps.filter(s=>s.files>0&&s.appId!==vt))r.push({key:`app:${i.appId}`,parent:"apps",title:ai(i.appId),icon:"image",hint:a(i.bytes)})}return e.exports&&r.push({key:"exports",title:t.exports,icon:"attachment",hint:a(e.exports.totalBytes)}),e.trash&&r.push({key:"trash",title:t.trash,icon:"trash",hint:t.items(Pr(e.trash).length)}),r}function Pr(e){let t=new Map(e.map(a=>[a.id,a])),n=a=>{let i=a;for(let s=0;s<64&&i.parentId&&t.has(i.parentId);s++)i=t.get(i.parentId);return i},r=new Map;for(let a of e){let i=n(a),s=r.get(i.id)??{inner:0,innerBytes:0};i.id!==a.id&&s.inner++,s.innerBytes+=Xe(a.fileSize),r.set(i.id,s)}return e.filter(a=>!(a.parentId&&t.has(a.parentId))).map(a=>({...a,...r.get(a.id)}))}function Uc(e,t){let n=t?`${t}/`:"",r=new Map,a=[];for(let i of e){if(n&&!i.path.startsWith(n))continue;let s=i.path.slice(n.length),l=s.indexOf("/");if(l<0){a.push({key:i.path,name:s,dir:!1,size:i.size,mtime:i.mtime,col4:i.who??null,ref:i.ref});continue}let c=s.slice(0,l),d=n+c,f=r.get(d)??{key:d,name:c,dir:!0,size:0,mtime:null,count:0};f.size+=i.size,f.count=(f.count??0)+1,i.mtime!=null&&(f.mtime==null||i.mtime>f.mtime)&&(f.mtime=i.mtime),r.set(d,f)}return[...Er([...r.values()]),...Er(a)]}var Er=e=>e.sort((t,n)=>(n.mtime??-1)-(t.mtime??-1)||t.name.localeCompare(n.name)),qc=e=>[...Er(e.filter(t=>t.dir)),...Er(e.filter(t=>!t.dir))];function Ro(e,t){let n=Math.max(0,Xe(e));if(n<1024)return`${n} B`;if(n<1024*1024)return`${Math.round(n/1024)} KB`;if(n<1024**3){let r=n/1048576;return`${r<100?Number(r.toFixed(1)):Math.round(r)} MB`}return`${Number((n/1024**3).toFixed(2))} GB`}function ii(e,t,n){let r=Ro(e,n),a=Ro(t,n),i=a.slice(a.indexOf(" "));return`${r.endsWith(i)?r.slice(0,-i.length):r} / ${a}`}var Bm=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Nc=e=>String(e).padStart(2,"0");function Vt(e,t,n=Date.now()){if(e==null||!Number.isFinite(e))return"\u2014";let r=new Date(e),a=new Date(n);a.setHours(0,0,0,0);let i=new Date(r);i.setHours(0,0,0,0);let s=Math.round((a.getTime()-i.getTime())/864e5),l=`${Nc(r.getHours())}:${Nc(r.getMinutes())}`;if(s===0)return t==="zh"?`\u4ECA\u5929 ${l}`:`Today ${l}`;if(s===1)return t==="zh"?`\u6628\u5929 ${l}`:`Yesterday ${l}`;let c=r.getFullYear()===a.getFullYear();return t==="zh"?`${c?"":`${r.getFullYear()} \u5E74 `}${r.getMonth()+1} \u6708 ${r.getDate()} \u65E5`:`${Bm[r.getMonth()]} ${r.getDate()}${c?"":`, ${r.getFullYear()}`}`}function bn(e){if(e==null||e==="")return null;if(typeof e=="number")return e<1e12?e*1e3:e;let t=Number(e);if(Number.isFinite(t))return t<1e12?t*1e3:t;let n=Date.parse(String(e));return Number.isNaN(n)?null:n}var Hc=e=>[e.notes.on&&!e.notes.pending,e.agents.on,e.plugins.on].filter(Boolean).length,Vc=e=>!e.decided||!!e.notes.pending||!e.notes.on&&!e.agents.on&&!e.plugins.on;function si(e){let t=e.notes.last;return!!t&&t.ok===!1&&!(t.errors.length>0&&t.errors.every(n=>n.includes("already-running")))}var Mr=e=>!!e&&e.signedIn&&(!!e.notes.pending||e.notes.on&&si(e)),Um=e=>/"code"\s*:\s*"QUOTA"/.test(e),Wc=(e,t)=>e.notes.on&&!e.notes.pending&&e.notes.backend==="penzor"&&(t>0&&(e.notes.localBytes??0)>t||!!e.notes.last?.errors.some(Um));function Lo(e){if(!e?.notes.running)return null;let t=e.notes.progress;return t&&t.total>0?Math.min(1,Math.max(0,t.done/t.total)):0}function jc(e,t){if(!e||!e.signedIn)return;let n=Lo(e);if(n!=null)return n>0?Ce(t,"penzor.sync.running",{pct:Math.round(n*100)}):Ce(t,"penzor.sync.runningPlain");if(e.notes.pending)return Ce(t,"penzor.sync.waiting");let r=Hc(e);return r?Ce(t,"penzor.sync.onN",{n:r}):Ce(t,"penzor.sync.allOff")}function Gc(e,t){let n=Hc(e);return e.notes.pending?Ce(t,"penzor.sync.badgeWaiting",{n}):n?Ce(t,"penzor.sync.onN",{n}):Ce(t,"penzor.sync.allOff")}function li(e,t){let n=Math.max(0,Math.round(e.intervalMin)),r=n?n%60===0?Ce(t,"penzor.sync.everyHours",{n:n/60}):Ce(t,"penzor.sync.every",{n}):Ce(t,"penzor.sync.manual");return e.syncOnStart?`${r} \xB7 ${Ce(t,"penzor.sync.onStart")}`:r}function ci(e,t,n=Date.now()){if(e==null||!Number.isFinite(e))return"\u2014";let r=Math.max(0,n-e);return r<6e4?Ce(t,"penzor.justNow"):r<36e5?Ce(t,"penzor.sync.minAgo",{n:Math.floor(r/6e4)}):r<6*36e5?Ce(t,"penzor.sync.hoursAgo",{n:Math.floor(r/36e5)}):Vt(e,t,n)}function Do(e,t=!1){return t?"folder":/\.(png|jpe?g|gif|webp|heic|dng|svg|bmp|tiff?)$/i.test(e)?"image":/\.(md|txt|pdf|docx?|rtf)$/i.test(e)?"page":/\.db$/i.test(e)?"database":"attachment"}var on="forsion-penzor",rn={main:"penzor",info:"penzor-info"},pi="penzor-places",ui="forsion-extend.penzor.ready",Xc="forsion-extend.penzor.focus",Ir=e=>e.state==="active"||e.state==="queued",Rr=e=>e.ok?"":e.detail||e.code||e.transport||(e.status?`HTTP ${e.status}`:"offline"),di=e=>e.slice(e.lastIndexOf("/")+1);function Kc(e,t={}){let n=t.api??H,r=new Set,a=()=>{for(let b of[...r])try{b()}catch(z){console.error("[penzor] listener failed",z)}},i=()=>Qe(e.getLocale?.()),s=(b,z)=>Ce(i(),b,z),l=b=>Ro(b,i()),c=b=>e.app?.notify?.(b),d=b=>c(s("penzor.toast.failed",{reason:typeof b=="string"?b:Rr(b)})),f="unknown",p=!1,u=null,h=null,m={kind:"overview"},y="",_=[],C=null,x=null,k=null,A="mtime",O="",q=null,N={kind:"view"},B=!1,Y=null,se=null,V=0,ne=0,pe=0,Ee=t.device??null,v=[],E=new Map,I=new Set,Z=null,le=null,de=[],He=[],Pe="hidden",yt=0,be=!1,et=0,Wt=!1,vn=null,yn=!1,xn=null,oo=new Map,jt=null,Ye=typeof e.app?.sync?.get=="function"?e.app.sync:null,Gt=new Map,ge=new Set,Xt=!1,ve=!1,Kt=!1,tt=!1,kn=1e4,No=4e3,Dt=b=>{let z=A==="size"?(S,L)=>L.size-S.size:A==="name"?(S,L)=>S.name.localeCompare(L.name):null;return z?[...b.filter(S=>S.dir).sort(z),...b.filter(S=>!S.dir).sort(z)]:qc([...b])};async function Oo(){let b=++V,z=m;if(x=null,z.kind==="overview"||z.kind==="sync-home"){C=null;return}if(z.kind==="exports"){C=(h?.exports?.files??[]).map($=>({key:$.fileId,name:$.fileName,dir:!1,size:$.size,mtime:bn($.createdAt),col4:at($.appId),ref:$}));return}if(z.kind==="trash"){C=Pr(h?.trash??[]).map($=>({key:$.id,name:$.name,dir:$.fileType==="directory",size:$.fileType==="directory"?$.innerBytes:$.fileSize,mtime:bn($.deletedAt),col4:$.parentName?`${at($.appId)} / ${$.parentName}`:at($.appId),count:$.fileType==="directory"?$.inner:void 0,ref:$}));return}if(C=null,a(),z.kind==="sync"||z.kind==="ama"){let $=no(z),j=E.get($);if(!j){if(z.kind==="sync"){let ye=await n(`/remotesync/vaults/${encodeURIComponent(z.vault)}/manifest`);if(b!==V)return;if(!ye.ok){x=Rr(ye),a();return}j=ye.data.files.map(xe=>({path:xe.path,size:xe.size,mtime:bn(xe.mtimeMs),who:xe.device??null,ref:xe}))}else{let ye=await n(`/amadeus/vaults/${encodeURIComponent(z.vaultId)}/tree`);if(b!==V)return;if(!ye.ok){x=Rr(ye),a();return}j=(ye.data.entries??[]).map(xe=>({path:xe.path,size:xe.size,mtime:bn(xe.updatedAt),ref:xe}))}E.set($,j)}C=Uc(j,y);return}let S=_[_.length-1]?.id,L=await n(`/files${S?`?parentId=${encodeURIComponent(S)}`:""}`,{projectSource:z.appId});if(b===V){if(!L.ok){x=Rr(L),a();return}C=L.data.map($=>({key:$.id,name:$.name,dir:$.fileType==="directory",size:Number($.fileSize)||0,mtime:bn($.updatedAt),ref:$}))}}let Nt=()=>{if(!C)return null;let b=O.trim().toLowerCase(),z=b?C.filter(S=>S.name.toLowerCase().includes(b)):C;return Dt(z)},Fo=()=>{let b=Nt()??[],z=new Set(b.map(S=>S.key));if(I=new Set([...I].filter(S=>z.has(S))),k&&z.has(k)){I.add(k);return}k=(b.find(S=>!S.dir)??b[0])?.key??null,I=new Set(k?[k]:[]),Z=k,wt()},xt=()=>{k=null,I=new Set,Z=null,le=null},at=b=>b===vt?s("penzor.drive"):ai(b),nt=()=>m.kind==="app"&&m.appId===vt,ut=()=>m.kind==="app"||m.kind==="sync"||m.kind==="ama",Ot=()=>m.kind==="app"?_[_.length-1]?.id??"ROOT":"ROOT",$n=()=>(Nt()??[]).filter(b=>I.has(b.key)),kt=(b,z)=>{let S=ee().cloudInvoke;return S?S(b,z).catch(L=>({ok:!1,error:String(L?.message||L)})):Promise.resolve({ok:!1,error:"no_bridge"})};function Jt(b=500){vn||yn||(vn=setTimeout(()=>{vn=null,ft()},b))}async function ft(){let b=await kt("penzor:transfers");if(yn)return;let z=new Map(de.map(ye=>[ye.id,ye.state]));b?.ok&&Array.isArray(b.items)&&(de=b.items);let S=Date.now(),L=de.some(Ir);de.some(ye=>ye.kind==="up"&&ye.state==="done"&&z.get(ye.id)&&z.get(ye.id)!=="done"&&nt()&&(ye.parentId===Ot()||ye.targetId===Ot()))&&(jt&&clearTimeout(jt),jt=setTimeout(()=>{jt=null,$t()},300)),L?(xn==null&&(xn=S),et=0,Pe==="hidden"&&(Pe="open",yt=S),Pe==="open"&&!be&&S-yt>kn&&(Pe="pill")):xn!=null&&(Bn(xn),xn=null);let $=de.some(ye=>ye.state==="failed")||He.length>0,j=de.some(ye=>ye.state==="paused");!L&&!j&&de.length&&!$&&Pe!=="hidden"&&(et?S-et>No&&!be&&(Pe="hidden",et=0,zt.txClear("finished")):(et=S,Pe==="pill"&&(Pe="open"))),!L&&$&&Pe==="pill"&&(Pe="open"),!de.length&&!He.length&&(Pe="hidden"),wn(),a(),(L||Pe!=="hidden"&&et)&&Jt()}function Bn(b){let z=de.filter(j=>(j.finishedAt??0)>=b),S=z.filter(j=>j.kind==="up"&&j.state==="done"),L=z.filter(j=>j.kind==="down"&&j.state==="done"),$=z.filter(j=>j.state==="failed");S.length&&je(),!Wt&&($.length?c(s("penzor.toast.txFailed",{n:$.length})):S.length?c(S.length===1?s("penzor.toast.upDoneOne",{name:S[0].name}):s("penzor.toast.upDoneMany",{n:S.length})):L.length&&c(L.length===1?s("penzor.toast.downloaded",{name:L[0].name}):s("penzor.toast.downDoneMany",{n:L.length})))}function wn(){let b=de.filter(Ir),z=b.reduce((L,$)=>L+Math.max($.size,$.done),0),S=b.length?z>0?Math.min(1,b.reduce((L,$)=>L+$.done,0)/z):0:null;e.app?.setSpaceProgress?.(on,S??Lo(Ye?.get()??null))}function ro(){if(!Ye)return;let b=Mr(Ye.get());b!==tt&&(tt=b,e.app?.setSpaceDot?.(on,b))}function ao(){if(!ve||!Ye)return;let b=Ye.get();if(!b)return;ve=!1;let z=Vc(b);m.kind==="overview"&&z?(m={kind:"sync-home"},Kt=!0,a()):m.kind==="sync-home"&&Kt&&!z&&(m={kind:"overview"},Kt=!1,a())}function Un(){Ye?.get()?.notes.pending||(Xt=!1),ao(),wn(),ro(),a()}let io=()=>{let b=Ye?.get()??null;if(!b||!Gt.size)return b;let z=(S,L)=>Gt.has(S)?{...L,on:Gt.get(S)}:L;return{...b,notes:z("notes",b.notes),agents:z("agents",b.agents),plugins:z("plugins",b.plugins)}},qn=async b=>{try{return await b()??{ok:!1}}catch(z){return{ok:!1,error:String(z?.message||z)}}},Ft=()=>{Pe="open",yt=Date.now(),et=0};async function wt(){Y=null;let b=so();if(m.kind!=="app"||!b||b.dir){a();return}let z=b.key,S=await n(`/files/${encodeURIComponent(z)}/versions`);k===z&&(Y=S.ok&&Array.isArray(S.data)?S.data.map(L=>({versionNumber:L.versionNumber,fileSize:Number(L.fileSize)||0,createdAt:bn(L.createdAt)})):[],a())}let so=()=>k?(C??[]).find(b=>b.key===k)??null:null;async function $t(){await Oo(),Fo(),a()}async function je(){let b=++pe;p=!0,u=null,a();let z=await ee().authStatus?.().catch(()=>null);if(b!==pe)return;if(z&&!z.loggedIn){f="out",h=null,p=!1,a();return}let{snap:S,signedOut:L}=await Fc(n);if(b===pe){if(p=!1,L){f="out",h=null,a();return}f="in",h=S,E.clear(),u=!S.sync&&!S.ama&&!S.apps&&!S.exports&&!S.trash?s("penzor.unreachable"):null,!On(m)&&m.kind!=="exports"&&m.kind!=="trash"&&((m.kind==="sync"?S.sync?.vaults.some(j=>j.vault===m.vault):m.kind==="ama"?S.ama?.some(j=>j.id===m.vaultId):m.appId===vt?S.apps:S.apps?.apps.some(j=>j.appId===m.appId&&j.files>0))||(m={kind:"overview"},y="",_=[],xt())),await $t(),$o(S)}}async function $o(b){let z=[],S=(b.sync?.vaults??[]).slice(0,8),[L,$]=await Promise.all([Promise.all(S.map(j=>n(`/remotesync/vaults/${encodeURIComponent(j.vault)}/manifest`))),b.ama?n("/amadeus/attachments"):Promise.resolve(null)]);if(h===b){if(L.forEach((j,ye)=>{let xe=S[ye];if(!j.ok)return;let Nr=j.data.files.map(_t=>({path:_t.path,size:_t.size,mtime:bn(_t.mtimeMs),who:_t.device??null,ref:_t}));E.set(`sync:${xe.vault}`,Nr);for(let _t of[...j.data.files].sort((Me,sn)=>sn.size-Me.size).slice(0,6))z.push({key:`s:${xe.vault}:${_t.path}`,name:di(_t.path),where:`${s("penzor.ledger.sync")} \xB7 ${xe.vault}`,size:_t.size,go:`sync:${xe.vault}`})}),$?.ok)for(let j of[...$.data.attachments??[]].sort((ye,xe)=>xe.size-ye.size).slice(0,6))z.push({key:`m:${j.vaultId}:${j.path}`,name:di(j.path),where:`${s("penzor.ledger.ama")} \xB7 ${j.vaultName}`,size:j.size,go:`ama:${j.vaultId}`});v=z,a()}}async function lo(b,z={},S=m){let L=S.kind==="sync"?{path:`/remotesync/vaults/${encodeURIComponent(S.vault)}/file?path=${encodeURIComponent(b.key)}`,mode:"signed"}:S.kind==="ama"?b.ref.kind==="binary"?{path:`/amadeus/vaults/${encodeURIComponent(S.vaultId)}/asset?ref=${encodeURIComponent(b.key)}`,mode:"bytes"}:{path:`/amadeus/vaults/${encodeURIComponent(S.vaultId)}/file?path=${encodeURIComponent(b.key)}`,mode:"text"}:S.kind==="app"?{path:`/files/${encodeURIComponent(b.key)}/content`,mode:"bytes"}:S.kind==="exports"?{path:`/exports/${encodeURIComponent(b.key)}/url`,mode:"signed"}:null;if(!L)return;let $=await kt("penzor:download",{...L,name:di(b.name),size:b.size,...z});if(!$?.ok){d($?.error||"download");return}Ft(),Jt(0),a()}let zn=()=>{On(m)?e.closeView?.(rn.info,{collapse:!0}):e.openView?.(rn.info,{location:"right"})},zt={ctx:e,locale:i,t:s,b:l,subscribe(b){return r.add(b),()=>{r.delete(b)}},auth:()=>f,loading:()=>p,error:()=>u,snap:()=>h,loc:()=>m,path:()=>y,appStack:()=>_,rows:Nt,rowsError:()=>x,selected:so,sort:()=>A,query:()=>O,menu:()=>q,side:()=>N,confirmEmpty:()=>B,versions:()=>Y,moveFolders:()=>se,thisDevice:()=>Ee,setDevice(b){Ee=b,a()},largest:()=>v,appLabel:at,canWrite:nt,canMulti:ut,folderId:Ot,selection:$n,isSelected:b=>I.has(b),selectAll(){if(!ut())return;let b=Nt()??[];I=new Set(b.map(z=>z.key)),!k&&b[0]&&(k=b[0].key),q=null,a()},newFolder:()=>le,startNewFolder(){if(!nt())return;let b=s("penzor.newFolder.default"),z=new Set((C??[]).filter(L=>L.dir).map(L=>L.name)),S=b;for(let L=1;z.has(S)&&L<1e3;L++)S=`${b} (${L})`;le=S,q=null,a()},cancelNewFolder(){le!=null&&(le=null,a())},async createFolder(b){let z=b.trim();if(le=null,!z||!nt()){a();return}a();let S=await n("/files",{method:"POST",body:{type:"directory",parentId:Ot(),name:z},projectSource:vt});if(!S.ok){S.status===409?c(s("penzor.toast.folderExists",{name:z})):d(S);return}S.data?.id&&(k=S.data.id,I=new Set([S.data.id]),Z=S.data.id),await $t()},transfers:()=>de,notices:()=>He,txRows(){if(!nt())return[];let b=Ot();return de.filter(z=>z.kind==="up"&&z.projectSource===vt&&z.parentId===b&&(Ir(z)||z.state==="paused")).map(z=>({key:`tx:${z.id}`,id:z.id,name:z.name,size:z.size,done:z.done,state:z.state}))},card:()=>Pe,setCard(b){Pe=b,yt=Date.now(),b!=="hidden"&&Jt(0),a()},holdCard(b){be=b,yt=Date.now(),b||Jt()},async upload(b,z){if(!nt()||!b.length)return;let S=z?.id??Ot();oo.set(S,z?[..._,z]:[..._]);let L=await kt("penzor:upload",{paths:b,parentId:S,projectSource:vt});if(L?.ok){Ft(),Jt(0),a();return}if(L?.error==="quota"){He=[...He,{id:String(Date.now()),kind:"quota",short:Number(L.short)||0}],Ft(),a();return}if(L?.error==="too_many"){c(s("penzor.err.too_many",{n:Number(L.max)||2e3}));return}L?.error!=="no_files"&&d(L?.error==="account_changed"?s("penzor.err.account_changed"):L?.error==="not_signed_in"?s("penzor.err.not_signed_in"):L?.error||"upload")},async txOp(b,z){await kt("penzor:transfer",{id:b,op:z}),yt=Date.now(),await ft()},async txAll(b){let z=b==="pause"?S=>Ir(S):b==="resume"?S=>S.state==="paused":S=>S.state==="failed"||S.state==="canceled";for(let S of de.filter(z))await kt("penzor:transfer",{id:S.id,op:b});b==="retry"&&(He=[]),yt=Date.now(),await ft()},async txClear(b){await kt("penzor:transfers:clear",{which:b}),b==="all"&&(He=[]),await ft()},dismissNotice(b){He=He.filter(z=>z.id!==b),!de.length&&!He.length&&(Pe="hidden"),a()},locate(b){if(b.kind==="down"){b.localPath&&ee().revealHostPath?.(b.localPath);return}let z=oo.get(b.targetId??"")??[];m={kind:"app",appId:vt},_=z,y="",O="",N={kind:"view"},q=null,xt(),b.fileId&&b.parentId===b.targetId&&(k=b.fileId,I=new Set([b.fileId])),a(),e.app?.openSpace?.(on).then(()=>{e.openView?.(rn.main),zn()}),$t()},async downloadMany(b){let z=b.filter(xe=>!xe.dir);if(z.length<=1){z[0]&&await zt.download(z[0]);return}let S=new Date,L=s("penzor.download.folder",{date:`${S.getFullYear()}-${String(S.getMonth()+1).padStart(2,"0")}-${String(S.getDate()).padStart(2,"0")}`}),$=`${Date.now()}`,j=m,ye=ne;for(let xe of z){if(ne!==ye)break;await lo(xe,{subdir:L,batch:$},j)}},async trashMany(b){if(m.kind!=="app"||!b.length)return;if(b.length===1){await zt.trash(b[0]);return}let z=await n("/files/batch/delete",{method:"POST",body:{ids:b.map(L=>L.key)},projectSource:m.appId});if(!z.ok){d(z);return}let S=(z.data?.results??[]).filter(L=>L.success===!1).length;c(S?s("penzor.toast.batchPartial",{n:S}):s("penzor.toast.trashedN",{n:b.length})),xt(),await je()},async moveMany(b,z){if(m.kind!=="app"||!b.length)return;N={kind:"view"};let S=b.map(j=>j.key).filter(j=>j!==z.id),L=await n("/files/batch/move",{method:"POST",body:{ids:S,parentId:z.id},projectSource:m.appId});if(!L.ok){d(L),a();return}let $=(L.data?.results??[]).filter(j=>j.success===!1).length;c($?s("penzor.toast.batchPartial",{n:$}):s("penzor.toast.movedN",{n:S.length,name:z.name})),xt(),await je()},setVisible(b){Wt=b},picker:{},refresh:je,go(b){let z=$c(b);if(!z)return;let S=no(z)===no(m);m=z,ve=!1,Kt=!1,S||(y="",_=[],xt(),O="",N={kind:"view"},B=!1),q=null,a(),e.openView?.(rn.main),zn(),$t()},openDir(b){!b.dir||m.kind==="exports"||m.kind==="trash"||(m.kind==="app"?_=[..._,{id:b.key,name:b.name}]:y=b.key,xt(),O="",N={kind:"view"},$t())},up(b){if(m.kind==="app")_=_.slice(0,b??Math.max(0,_.length-1));else{let z=y?y.split("/"):[];y=z.slice(0,b??Math.max(0,z.length-1)).join("/")}xt(),N={kind:"view"},$t()},select(b,z){let S=Nt()??[];if(b&&z?.range&&ut()&&Z&&S.some(L=>L.key===Z)){let L=S.findIndex(j=>j.key===Z),$=S.findIndex(j=>j.key===b.key);I=new Set(S.slice(Math.min(L,$),Math.max(L,$)+1).map(j=>j.key)),k=b.key}else b&&z?.toggle&&ut()?(I.has(b.key)&&I.size>1?(I.delete(b.key),k===b.key&&(k=[...I].pop()??null)):(I.add(b.key),k=b.key),Z=b.key):(k=b?.key??null,I=new Set(k?[k]:[]),Z=k);le=null,N={kind:"view"},q=null,b&&!On(m)&&e.openView?.(rn.info,{location:"right"}),wt(),a()},setSort(b){A=b,a()},setQuery(b){O=b,a()},openMenu(b,z,S){S&&!I.has(S.key)&&(k=S.key,I=new Set([S.key]),Z=S.key,wt()),q={x:b,y:z,row:S},N={kind:"view"},a()},closeMenu(){q&&(q=null,a())},setSide(b){N=b,q=null,b.kind==="move"&&(se=null,zt.moveBrowse(b.at)),e.openView?.(rn.info,{location:"right"}),a()},setConfirmEmpty(b){B=b,a()},async download(b){b.dir||(q=null,await lo(b))},async trash(b){if(m.kind!=="app")return;let z=Nt()??[],S=z.findIndex(j=>j.key===b.key),L=await n(`/files/${encodeURIComponent(b.key)}`,{method:"DELETE",projectSource:m.appId});if(!L.ok){d(L);return}c(s("penzor.toast.trashed",{name:b.name}));let $=z[S+1]??z[S-1];k=$&&$.key!==b.key?$.key:null,q=null,await je()},async restore(b){if(!h)return;let z=await n(`/trash/${encodeURIComponent(b.key)}/restore`,{method:"POST",body:{}});if(!z.ok){d(z);return}c(s("penzor.toast.restored",{name:b.name})),k=null,await je()},async purge(b){if(!h)return;let z=await n(`/trash/${encodeURIComponent(b.key)}`,{method:"DELETE"});if(N={kind:"view"},!z.ok){d(z),a();return}c(s("penzor.toast.purged",{name:b.name})),k=null,await je()},async emptyTrash(){if(!h)return;let b=await n("/trash?all=1",{method:"DELETE"});if(B=!1,!b.ok){d(b),a();return}let z=(b.data?.results??[]).filter(S=>S.success===!1).length;c(z?s("penzor.toast.emptyPartial",{n:z}):s("penzor.toast.emptied")),k=null,await je()},async rename(b,z){let S=z.trim();if(N={kind:"view"},!S||S===b.name){a();return}let L=m.kind==="exports"?await n(`/exports/${encodeURIComponent(b.key)}/rename`,{method:"PUT",body:{newFileName:S}}):m.kind==="app"?await n(`/files/${encodeURIComponent(b.key)}/rename`,{method:"PATCH",body:{name:S},projectSource:m.appId}):null;if(L){if(!L.ok){d(L),a();return}c(s("penzor.toast.renamed",{name:S})),await je()}},moveBrowse(b){if(m.kind!=="app")return;N={kind:"move",at:b},se=null,a();let z=b[b.length-1]?.id,S=m.appId;n(`/files${z?`?parentId=${encodeURIComponent(z)}`:""}`,{projectSource:S}).then(L=>{N.kind!=="move"||N.at!==b||(se=L.ok?L.data.filter($=>$.fileType==="directory").map($=>({id:$.id,name:$.name})):[],a())})},async moveTo(b,z){if(m.kind!=="app")return;if(N={kind:"view"},z.id===b.key){a();return}let S=await n(`/files/${encodeURIComponent(b.key)}/move`,{method:"PATCH",body:{parentId:z.id},projectSource:m.appId});if(!S.ok){d(S),a();return}c(s("penzor.toast.moved",{name:z.name})),k=null,await je()},async restoreVersion(b,z){let S=await n(`/files/${encodeURIComponent(b.key)}/restore/${z.versionNumber}`,{method:"POST",body:{}});if(!S.ok){d(S);return}c(s("penzor.toast.versionRestored",{n:z.versionNumber})),await je(),wt()},async deleteExport(b){if(!h)return;let z=await n(`/exports/${encodeURIComponent(b.key)}`,{method:"DELETE"});if(N={kind:"view"},!z.ok){d(z),a();return}c(s("penzor.toast.purged",{name:b.name})),k=null,await je()},signIn(){ee().forsionLogin?.()},openSync(){e.app?.openSettings?.("sync/s-remote")},async focusVault(b){await e.app?.openSpace?.(on),h||await je(),zt.go(`sync:${b}`)},hasSync:()=>!!Ye,syncState:io,syncBusy:b=>ge.has(b),async setSync(b,z){if(!Ye||ge.has(b))return;ge.add(b),Gt.set(b,z),a();let S=await qn(()=>Ye.set(b,z));ge.delete(b),Gt.delete(b),!yn&&(S.ok||d(S.error||"sync"),Un())},async resolveNotes(b){if(!Ye||ge.has("resolve"))return;ge.add("resolve"),a();let z=await qn(()=>Ye.resolveNotes(b));ge.delete("resolve"),Xt=!1,!yn&&(z.ok||d(z.error||"sync"),Un())},confirmCloud:()=>Xt,setConfirmCloud(b){Xt=b,a()},enter(){ve=!0,ao()},dispose(){yn=!0,vn&&clearTimeout(vn),jt&&clearTimeout(jt),e.app?.setSpaceProgress?.(on,null),tt&&e.app?.setSpaceDot?.(on,!1),r.clear(),mt?.(),co?.(),an?.()}},mt=e.subscribeLocale?.(()=>a()),an=Ye?.subscribe(Un);ro(),ft();let co=ee().onAuthChanged?.(()=>{++V,++pe,++ne,h=null,C=null,x=null,v=[],E.clear(),xt(),q=null,N={kind:"view"},B=!1,Y=null,se=null,m={kind:"overview"},y="",_=[],O="",oo.clear(),He=[],Xt=!1,Gt.clear(),Kt=!1,ve=!0,a(),je()});return zt}var Jc=e=>e.kind==="sync"?"penzor.side.readonlySync":e.kind==="ama"?"penzor.side.readonlyAma":null;function Hm(e,t){for(var n in t)e[n]=t[n];return e}function Yc(e,t){for(var n in e)if(n!=="__source"&&!(n in t))return!0;for(var r in t)if(r!=="__source"&&e[r]!==t[r])return!0;return!1}function Zc(e,t){this.props=e,this.context=t}(Zc.prototype=new Tt).isPureReactComponent=!0,Zc.prototype.shouldComponentUpdate=function(e,t){return Yc(this.props,e)||Yc(this.state,t)};var Qc=te.__b;te.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Qc&&Qc(e)};var my=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;var Vm=te.__e;te.__e=function(e,t,n,r){if(e.then){for(var a,i=t;i=i.__;)if((a=i.__c)&&a.__c)return t.__e==null&&(t.__e=n.__e,t.__k=n.__k||[]),a.__c(e,t)}Vm(e,t,n,r)};var ed=te.unmount;function id(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(r){typeof r.__c=="function"&&r.__c()}),e.__c.__H=null),(e=Hm({},e)).__c!=null&&(e.__c.__P===n&&(e.__c.__P=t),e.__c.__e=!0,e.__c=null),e.__k=e.__k&&e.__k.map(function(r){return id(r,t,n)})),e}function sd(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(r){return sd(r,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function fi(){this.__u=0,this.o=null,this.__b=null}function ld(e){var t=e.__&&e.__.__c;return t&&t.__a&&t.__a(e)}function Lr(){this.i=null,this.l=null}te.unmount=function(e){var t=e.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),ed&&ed(e)},(fi.prototype=new Tt).__c=function(e,t){var n=t.__c,r=this;r.o==null&&(r.o=[]),r.o.push(n);var a=ld(r.__v),i=!1,s=function(){i||r.__z||(i=!0,n.__R=null,a?a(c):c())};n.__R=s;var l=n.__P;n.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var d=r.state.__a;r.__v.__k[0]=sd(d,d.__c.__P,d.__c.__O)}var f;for(r.setState({__a:r.__b=null});f=r.o.pop();)f.__P=l,f.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(s,s)},fi.prototype.componentWillUnmount=function(){this.o=[]},fi.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=id(this.__b,n,r.__O=r.__P)}this.__b=null}var a=t.__a&&Pn(R,null,e.fallback);return a&&(a.__u&=-33),[Pn(R,null,t.__a?null:e.children),a]};var td=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}};function Wm(e){return this.getChildContext=function(){return e.context},e.children}function jm(e){var t=this,n=e.h;if(t.componentWillUnmount=function(){Be(null,t.v),t.v=null,t.h=null},t.h&&t.h!==n&&t.componentWillUnmount(),!t.v){for(var r=t.__v;r!==null&&!r.__m&&r.__!==null;)r=r.__;t.h=n,t.v={nodeType:1,parentNode:n,childNodes:[],__k:{__m:r.__m},contains:function(){return!0},namespaceURI:n.namespaceURI,insertBefore:function(a,i){this.childNodes.push(a),t.h.insertBefore(a,i)},removeChild:function(a){this.childNodes.splice(this.childNodes.indexOf(a)>>>1,1),t.h.removeChild(a)}}}Be(Pn(Wm,{context:t.context},e.__v),t.v)}function cd(e,t){var n=Pn(jm,{__v:e,h:t});return n.containerInfo=t,n}(Lr.prototype=new Tt).__a=function(e){var t=this,n=ld(t.__v),r=t.l.get(e);return r[0]++,function(a){var i=function(){t.props.revealOrder?(r.push(a),td(t,e,r)):a()};n?n(i):i()}},Lr.prototype.render=function(e){this.i=null,this.l=new Map;var t=zo(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},Lr.prototype.componentDidUpdate=Lr.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){td(e,n,t)})};var Gm=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,Xm=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Km=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Jm=/[A-Z0-9]/g,Ym=typeof document<"u",Zm=function(e){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(e)};Tt.prototype.isReactComponent=!0,["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(Tt.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var nd=te.event;te.event=function(e){return nd&&(e=nd(e)),e.persist=function(){},e.isPropagationStopped=function(){return this.cancelBubble},e.isDefaultPrevented=function(){return this.defaultPrevented},e.nativeEvent=e};var dd,Qm={configurable:!0,get:function(){return this.class}},od=te.vnode;te.vnode=function(e){typeof e.type=="string"&&(function(t){var n=t.props,r=t.type,a={},i=r.indexOf("-")==-1;for(var s in n){var l=n[s];if(!(s==="value"&&"defaultValue"in n&&l==null||Ym&&s==="children"&&r==="noscript"||s==="class"||s==="className")){var c=s.toLowerCase();s==="defaultValue"&&"value"in n&&n.value==null?s="value":s==="download"&&l===!0?l="":c==="translate"&&l==="no"?l=!1:c[0]==="o"&&c[1]==="n"?c==="ondoubleclick"?s="ondblclick":c!=="onchange"||r!=="input"&&r!=="textarea"||Zm(n.type)?c==="onfocus"?s="onfocusin":c==="onblur"?s="onfocusout":Km.test(s)&&(s=c):c=s="oninput":i&&Xm.test(s)?s=s.replace(Jm,"-$&").toLowerCase():l===null&&(l=void 0),c==="oninput"&&a[s=c]&&(s="oninputCapture"),a[s]=l}}r=="select"&&(a.multiple&&Array.isArray(a.value)&&(a.value=zo(n.children).forEach(function(d){d.props.selected=a.value.indexOf(d.props.value)!=-1})),a.defaultValue!=null&&(a.value=zo(n.children).forEach(function(d){d.props.selected=a.multiple?a.defaultValue.indexOf(d.props.value)!=-1:a.defaultValue==d.props.value}))),n.class&&!n.className?(a.class=n.class,Object.defineProperty(a,"className",Qm)):n.className&&(a.class=a.className=n.className),t.props=a})(e),e.$$typeof=Gm,od&&od(e)};var rd=te.__r;te.__r=function(e){rd&&rd(e),dd=e.__c};var ad=te.diffed;te.diffed=function(e){ad&&ad(e);var t=e.props,n=e.__e;n!=null&&e.type==="textarea"&&"value"in t&&t.value!==n.value&&(n.value=t.value==null?"":t.value),dd=null};var pd=`
1110
+ .pz, .pz-side { color: var(--text); font-family: var(--font-ui); font-size: var(--ui-font-body); line-height: var(--ui-line-body); }
1111
+ .pz { height: 100%; min-height: 0; display: flex; flex-direction: column; }
1112
+ .pz-side { height: 100%; min-height: 0; overflow: auto; box-sizing: border-box; padding: 14px 16px; display: flex; flex-direction: column; gap: 12px; }
1113
+ .pz button, .pz-side button { font: inherit; color: inherit; background: none; border: var(--border-width) solid transparent; padding: 0; cursor: pointer; }
1114
+ .pz button:disabled, .pz-side button:disabled { opacity: .5; cursor: default; }
1115
+ .pz svg, .pz-side svg, .pz-menu svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; flex: none; }
1116
+ .pz-top { height: 40px; flex: none; display: flex; align-items: center; gap: 4px; padding: 0 12px 0 20px; }
1117
+ .pz-crumb { display: flex; align-items: center; gap: 6px; font-size: var(--ui-font-meta); color: var(--text-muted); min-width: 0; white-space: nowrap; overflow: hidden; }
1118
+ .pz-crumb i { font-style: normal; color: var(--text-faint); }
1119
+ .pz-crumb b { font-weight: 500; color: var(--text); overflow: hidden; text-overflow: ellipsis; }
1120
+ .pz-crumb button:hover { color: var(--text); }
1121
+ .pz-sp { flex: 1; }
1122
+ .pz .pz-ibtn { width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--radius-sm); color: var(--text-muted); }
1123
+ .pz .pz-ibtn:hover, .pz .pz-chip:hover { background: var(--overlay-light); color: var(--text); }
1124
+ .pz .pz-chip { height: 26px; padding: 0 10px; border-radius: var(--radius-pill); border-color: var(--border); display: inline-flex; align-items: center; gap: 5px; font-size: var(--ui-font-meta); color: var(--text-muted); }
1125
+ .pz-chip svg { width: 12px; height: 12px; }
1126
+ .pz-find { height: 26px; width: 200px; box-sizing: border-box; padding: 0 10px; border: var(--border-width) solid var(--border); border-radius: var(--radius-pill); background: transparent; color: var(--text); font: inherit; font-size: var(--ui-font-meta); outline: none; }
1127
+ .pz-find:focus { border-color: var(--accent-ink); }
1128
+ .pz-scroll { flex: 1; min-height: 0; overflow: auto; }
1129
+ .pz-col { width: min(820px, calc(100% - 72px)); margin: 0 auto; padding: 14px 0 80px; }
1130
+ .pz-title { display: flex; align-items: center; gap: 10px; min-width: 0; }
1131
+ .pz-h1 { margin: 0; font-size: var(--ui-font-display); line-height: var(--ui-line-display); font-weight: 600; letter-spacing: -.005em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
1132
+ .pz-badge { display: inline-flex; align-items: center; gap: 5px; height: 22px; padding: 0 9px; border-radius: var(--radius-pill); background: var(--overlay-light); color: var(--text-muted); font-size: var(--ui-font-caption); white-space: nowrap; }
1133
+ .pz-badge svg { width: 12px; height: 12px; }
1134
+ .pz-meta { display: flex; flex-wrap: wrap; gap: 4px 18px; margin: 6px 0 0; color: var(--text-muted); font-size: var(--ui-font-meta); }
1135
+ .pz-meter { display: flex; align-items: center; gap: 10px; margin: 14px 0 4px; font-size: var(--ui-font-meta); color: var(--text-muted); font-variant-numeric: tabular-nums; }
1136
+ .pz-meter .pz-bar { flex: 0 0 180px; }
1137
+ .pz-bar { height: 6px; overflow: hidden; border-radius: var(--radius-pill); background: var(--overlay-medium); }
1138
+ .pz-bar > span { display: block; height: 100%; border-radius: inherit; background: var(--accent-ink); }
1139
+ .pz-bar.is-low > span { background: var(--warning); }
1140
+ .pz-confirm { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 14px 0 0; padding: 10px 12px; border-radius: var(--radius-md); background: var(--danger-light); color: var(--text); font-size: var(--ui-font-meta); }
1141
+ .pz-confirm span { flex: 1 1 200px; }
1142
+ .pz-table { width: 100%; border-collapse: collapse; margin-top: 16px; font-size: var(--db-text-size, var(--ui-font-body)); }
1143
+ .pz-table th { height: 32px; padding: 0 10px; text-align: left; font-weight: 400; font-size: var(--db-meta-size, var(--ui-font-meta)); color: var(--text-faint); border-bottom: var(--border-width) solid var(--border); white-space: nowrap; }
1144
+ .pz-table td { height: var(--db-cell-height, 34px); padding: 0 10px; border-bottom: var(--border-width) solid var(--border); white-space: nowrap; color: var(--text-muted); }
1145
+ .pz-table td.n { color: var(--text); width: 100%; max-width: 0; overflow: hidden; text-overflow: ellipsis; }
1146
+ .pz-table td.n > span { display: inline-flex; align-items: center; gap: 9px; max-width: 100%; }
1147
+ .pz-table td.n > span > b { font-weight: inherit; overflow: hidden; text-overflow: ellipsis; }
1148
+ .pz-table td.n svg { color: var(--text-faint); }
1149
+ .pz-table .r { text-align: right; font-variant-numeric: tabular-nums; }
1150
+ .pz-table tbody tr { cursor: default; }
1151
+ .pz-table tbody tr:hover td { background: var(--overlay-light); }
1152
+ .pz-table tbody tr.sel td { background: var(--sel-fill); }
1153
+ .pz-table .dim { color: var(--text-faint); }
1154
+ .pz-table .cnt { color: var(--text-faint); margin-left: 6px; font-size: var(--db-meta-size, var(--ui-font-meta)); font-style: normal; }
1155
+ .pz-note { margin: 22px 0 0; color: var(--text-faint); font-size: var(--ui-font-meta); text-align: center; }
1156
+ .pz-ov-kick { margin-top: 30px; font-size: var(--ui-font-meta); color: var(--text-faint); }
1157
+ .pz-total { display: flex; align-items: baseline; gap: 12px; margin: 2px 0 14px; flex-wrap: wrap; }
1158
+ .pz-total b { font-size: calc(var(--ui-font-display) * 1.5); line-height: calc(var(--ui-line-display) * 1.36); font-weight: 600; letter-spacing: -.01em; font-variant-numeric: tabular-nums; }
1159
+ .pz-total span { color: var(--text-muted); font-size: var(--ui-font-meta); }
1160
+ .pz-seg { display: flex; gap: 2px; height: 8px; border-radius: var(--radius-pill); overflow: hidden; background: var(--overlay-medium); }
1161
+ .pz-seg i, .pz-legend i { background: var(--accent-ink); }
1162
+ .pz-legend { display: flex; flex-wrap: wrap; gap: 4px 20px; margin-top: 10px; font-size: var(--ui-font-meta); color: var(--text-muted); font-variant-numeric: tabular-nums; }
1163
+ .pz-legend i { display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 7px; }
1164
+ .pz-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 22px; }
1165
+ @media (max-width: 720px) { .pz-cards { grid-template-columns: minmax(0, 1fr); } .pz-col { width: calc(100% - 32px); } }
1166
+ .pz-card { text-align: left; background: var(--bg-card); border: var(--border-width) solid transparent; border-radius: var(--radius-md); box-shadow: var(--card-shadow); padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; min-height: 132px; }
1167
+ .pz button.pz-card { border: var(--border-width) solid transparent; }
1168
+ .pz button.pz-card:hover .go { color: var(--text); }
1169
+ .pz button.pz-card.warn { border-color: color-mix(in srgb, var(--warning) 50%, transparent); }
1170
+ .pz-card-h { display: flex; align-items: center; gap: 9px; font-size: var(--ui-font-heading); line-height: var(--ui-line-heading); font-weight: 600; width: 100%; }
1171
+ .pz-tile { width: 26px; height: 26px; border-radius: var(--radius-sm); background: var(--overlay-light); display: inline-flex; align-items: center; justify-content: center; color: var(--text-muted); flex: none; }
1172
+ .pz-card-h .go { margin-left: auto; color: var(--text-faint); }
1173
+ .pz-big { font-size: calc(var(--ui-font-display) - 2px); line-height: calc(var(--ui-line-display) - 4px); font-weight: 600; font-variant-numeric: tabular-nums; }
1174
+ .pz-big small { font-weight: 400; font-size: var(--ui-font-meta); color: var(--text-faint); margin-left: 5px; }
1175
+ .pz-sub { color: var(--text-muted); font-size: var(--ui-font-meta); }
1176
+ .pz-foot { margin-top: auto; color: var(--text-faint); font-size: var(--ui-font-meta); }
1177
+ .pz-foot.warn { color: var(--warning); }
1178
+ .pz-h3 { margin: 30px 0 4px; font-size: var(--ui-font-heading); line-height: var(--ui-line-heading); font-weight: 600; }
1179
+ .pz-rows .row { display: grid; grid-template-columns: 16px minmax(0, 1fr) 140px 70px; align-items: center; gap: 12px; height: 38px; border-bottom: var(--border-width) solid var(--border); width: 100%; text-align: left; }
1180
+ .pz-rows .row:hover { background: var(--overlay-subtle, var(--overlay-light)); }
1181
+ .pz-rows .row svg { color: var(--text-faint); }
1182
+ .pz-rows .row .t { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
1183
+ .pz-rows .row .t em { font-style: normal; color: var(--text-faint); font-size: var(--ui-font-meta); margin-left: 10px; }
1184
+ .pz-rows .row .s { text-align: right; color: var(--text-muted); font-variant-numeric: tabular-nums; }
1185
+ .pz-rows .pz-bar { height: 4px; }
1186
+ .pz-rows .pz-bar > span { background: var(--text-faint); }
1187
+ .pz-thumb { height: 150px; border-radius: var(--radius-md); background: var(--overlay-light); display: flex; align-items: center; justify-content: center; flex: none; color: var(--text-faint); }
1188
+ .pz-thumb svg { width: 40px; height: 40px; stroke-width: 1.2; }
1189
+ .pz-fname { font-size: var(--ui-font-heading); line-height: var(--ui-line-heading); font-weight: 600; word-break: break-all; }
1190
+ .pz-fsub { color: var(--text-faint); font-size: var(--ui-font-meta); margin-top: -9px; }
1191
+ .pz-acts { display: flex; gap: 6px; flex-wrap: wrap; }
1192
+ .pz-side .pz-btn, .pz .pz-btn { height: var(--ui-control-height, 28px); padding: 0 11px; border-radius: var(--radius-sm); border-color: var(--border); display: inline-flex; align-items: center; gap: 6px; font-size: var(--ui-font-body); color: var(--text); white-space: nowrap; }
1193
+ .pz-side .pz-btn:hover, .pz .pz-btn:hover { background: var(--overlay-light); }
1194
+ .pz-side .pz-btn.pri, .pz .pz-btn.pri { background: var(--action-fill, var(--accent)); border-color: transparent; color: var(--on-accent); }
1195
+ .pz-side .pz-btn.danger, .pz .pz-btn.danger { color: var(--danger); }
1196
+ .pz-side .pz-btn.danger.solid, .pz .pz-btn.danger.solid { background: var(--danger); border-color: transparent; color: var(--on-accent, #fff); }
1197
+ .pz-dl { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 7px 10px; margin: 2px 0 0; font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
1198
+ .pz-dl dt { color: var(--text-faint); } .pz-dl dd { margin: 0; color: var(--text-muted); overflow-wrap: anywhere; }
1199
+ .pz-tip { display: flex; gap: 8px; padding: 10px 12px; border-radius: var(--radius-md); background: var(--overlay-light); color: var(--text-muted); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
1200
+ .pz-tip svg { margin-top: 2px; color: var(--text-faint); }
1201
+ .pz-sh { font-size: var(--ui-font-meta); font-weight: 500; color: var(--text-muted); margin-top: 6px; }
1202
+ .pz-vers { display: flex; flex-direction: column; gap: 2px; }
1203
+ .pz-vers > div { display: flex; align-items: center; gap: 8px; min-height: 26px; font-size: var(--ui-font-meta); color: var(--text-muted); font-variant-numeric: tabular-nums; }
1204
+ .pz-vers > div > span { flex: 1; }
1205
+ .pz-side .pz-link { color: var(--accent-ink); font-size: var(--ui-font-meta); }
1206
+ .pz-side .pz-link:hover { text-decoration: underline; text-underline-offset: 2px; }
1207
+ .pz-input { width: 100%; box-sizing: border-box; height: var(--ui-control-height, 28px); padding: 0 8px; border: var(--border-width) solid var(--accent-ink); border-radius: var(--radius-sm); background: transparent; color: var(--text); font: inherit; outline: none; }
1208
+ .pz-pick { display: flex; flex-direction: column; gap: 2px; }
1209
+ .pz-pick button { display: flex; align-items: center; gap: 8px; height: 28px; padding: 0 8px; border-radius: var(--radius-sm); text-align: left; color: var(--text); }
1210
+ .pz-pick button:hover { background: var(--overlay-light); }
1211
+ .pz-empty { margin: 18vh auto 0; width: min(420px, calc(100% - 32px)); text-align: center; color: var(--text-muted); }
1212
+ .pz-empty .ic { width: 46px; height: 46px; border-radius: var(--radius-md); background: var(--overlay-light); display: inline-flex; align-items: center; justify-content: center; color: var(--text-muted); }
1213
+ .pz-empty .ic svg { width: 21px; height: 21px; }
1214
+ .pz-empty h2 { font-size: var(--ui-font-title); line-height: var(--ui-line-title); font-weight: 600; color: var(--text); margin: 14px 0 6px; }
1215
+ .pz-empty p { margin: 0 0 4px; }
1216
+ .pz-empty ul { text-align: left; margin: 14px auto 0; padding: 12px 16px 12px 30px; background: var(--overlay-light); border-radius: var(--radius-md); line-height: var(--ui-line-body); font-size: var(--ui-font-meta); }
1217
+ .pz-empty .pz-btn { margin-top: 18px; }
1218
+ .pz-side-none { margin: auto; color: var(--text-faint); font-size: var(--ui-font-meta); }
1219
+ /* \u2500\u2500 \u7F51\u76D8(0.10 \u65B9\u6848 D)\u2500\u2500 \u62D6\u5165\u63D0\u793A\u7167 DESIGN \xA76:\u6574\u5757\u6DE1\u67D3 + \u9876\u4E0A\u4E00\u6761\u63D0\u793A,\u4E0D\u753B\u865A\u7EBF\u6846;\u63A5\u4E0D\u4F4F\u7684\u5730\u65B9\u4E0D\u4EAE\u3002
1220
+ \u989C\u8272\u6309 DESIGN \xA71 \u7684\u89D2\u8272:\u6DE1\u67D3 = \u6C1B\u56F4 --accent-wash;\u843D\u70B9 / \u8F93\u5165\u6846 = \u6307\u793A --signal-line;\u8FDB\u5EA6\u3001\u52FE\u3001\u8FDB\u5EA6\u73AF = --signal-mark;\u60AC\u505C\u4E2D\u6027 */
1221
+ .pz { position: relative; }
1222
+ .pz.pz-drop { background: var(--accent-wash, color-mix(in srgb, var(--accent-ink) 5%, transparent)); }
1223
+ .pz-dropbar { position: absolute; top: 50px; left: 0; right: 0; z-index: 6; display: flex; justify-content: center; pointer-events: none; }
1224
+ .pz-dropbar span { display: inline-flex; align-items: center; gap: 7px; height: 28px; padding: 0 12px; border-radius: var(--radius-pill); background: var(--bg-card); border: var(--border-width) solid var(--signal-line, var(--border)); color: var(--text); font-size: var(--ui-font-meta); box-shadow: var(--card-shadow); }
1225
+ .pz-dropbar svg { color: var(--signal-mark, var(--accent-ink)); }
1226
+ .pz-table tbody tr.drop td { background: var(--accent-tint, var(--sel-fill)); box-shadow: inset 0 1px 0 var(--signal-line, var(--border)), inset 0 -1px 0 var(--signal-line, var(--border)); }
1227
+ .pz-scroll:focus { outline: none; }
1228
+ .pz-split { display: inline-flex; margin-right: 4px; }
1229
+ .pz .pz-split .pz-btn { height: 28px; }
1230
+ .pz .pz-split .pz-btn:first-child { border-top-right-radius: 0; border-bottom-right-radius: 0; }
1231
+ .pz .pz-split .pz-btn.more { padding: 0 6px; border-top-left-radius: 0; border-bottom-left-radius: 0; margin-left: 1px; }
1232
+ .pz .pz-split .pz-btn:hover { background: var(--action-fill-hover, var(--action-fill, var(--accent))); }
1233
+ .pz-selbar { font-size: var(--ui-font-meta); font-weight: 500; color: var(--text); margin-right: 8px; white-space: nowrap; font-variant-numeric: tabular-nums; }
1234
+ .pz-top .pz-btn { height: 28px; }
1235
+ .pz-inl { display: inline-flex; align-items: center; gap: 8px; color: var(--text-faint); font-size: var(--db-meta-size, var(--ui-font-meta)); font-variant-numeric: tabular-nums; }
1236
+ .pz-inl .pz-bar { width: 72px; height: 4px; }
1237
+ .pz-inl .pz-bar > span, .pz-txall .pz-bar > span, .pz-txrow2 .pz-bar > span { background: var(--signal-mark, var(--accent-ink)); }
1238
+ .pz-table tr.pz-txrow td.n b { color: var(--text-muted); }
1239
+ .pz-table tr.pz-txrow.queued td.n b, .pz-table tr.pz-txrow.queued td.n svg, .pz-table tr.pz-txrow.paused td.n b { color: var(--text-faint); }
1240
+ .pz-newname { height: 26px; width: min(260px, 100%); box-sizing: border-box; padding: 0 8px; border-radius: var(--radius-sm); border: var(--border-width) solid var(--signal-line, var(--accent-ink)); background: var(--bg); color: var(--text); font: inherit; outline: none; }
1241
+ .pz .pz-ib, .pz-side .pz-ib { width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--radius-sm); color: var(--text-faint); flex: none; }
1242
+ .pz .pz-ib:hover { background: var(--overlay-light); color: var(--text); }
1243
+ .pz .pz-link { color: var(--accent-ink); font-size: var(--ui-font-meta); padding: 0 4px; white-space: nowrap; }
1244
+ .pz .pz-link:hover { text-decoration: underline; text-underline-offset: 2px; }
1245
+ /* \u6D6E\u52A8\u5361:\u5BBF\u4E3B .ui-popover \u7684\u5E95\u3001\u63CF\u8FB9\u3001\u9634\u5F71;\u9489\u5728\u4E3B\u533A\u53F3\u4E0B\u89D2(\u4E0D\u662F\u7A97\u53E3\u53F3\u4E0B\u89D2),\u4E0D\u6321\u5DE6\u680F\u548C\u53F3\u680F */
1246
+ .pz .pz-txcard { position: absolute; right: 18px; bottom: 18px; width: min(340px, calc(100% - 36px)); z-index: 5; display: flex; flex-direction: column; max-height: min(460px, calc(100% - 80px)); }
1247
+ .pz-txhead { display: flex; align-items: center; gap: 8px; padding: 10px 10px 6px 12px; min-width: 0; }
1248
+ .pz-txhead b { font-weight: 600; font-size: var(--ui-font-body); white-space: nowrap; }
1249
+ .pz-txhead span { color: var(--text-faint); font-size: var(--ui-font-meta); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-variant-numeric: tabular-nums; }
1250
+ .pz-txhead .sp { flex: 1; }
1251
+ .pz-txall { padding: 0 12px 6px; }
1252
+ .pz-txall .pz-bar, .pz-txrow2 .pz-bar { height: 4px; }
1253
+ .pz-txlist { overflow: auto; min-height: 0; padding: 0 4px; }
1254
+ .pz-txrow2 { display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; gap: 4px 10px; align-items: center; padding: 8px; border-radius: var(--radius-sm); }
1255
+ .pz-txrow2:hover { background: var(--overlay-light); }
1256
+ .pz-txrow2 > svg { color: var(--text-faint); }
1257
+ .pz-txrow2.is-done > svg { color: var(--signal-mark, var(--accent-ink)); }
1258
+ .pz-txrow2.is-fail > svg { color: var(--danger); }
1259
+ .pz-txrow2 .nm { font-size: var(--ui-font-body); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
1260
+ .pz-txrow2 .acts { display: flex; align-items: center; gap: 2px; }
1261
+ .pz-txrow2 .pz-bar { grid-column: 2 / 4; }
1262
+ .pz-txrow2 .sub { grid-column: 2 / 4; display: flex; flex-wrap: wrap; gap: 2px 10px; color: var(--text-faint); font-size: var(--ui-font-meta); font-variant-numeric: tabular-nums; }
1263
+ .pz-txrow2 .sub .err { color: var(--danger); }
1264
+ .pz-txfoot { display: flex; gap: 14px; padding: 8px 12px 10px; border-top: var(--border-width) solid var(--border); margin-top: 4px; }
1265
+ .pz .pz-txfoot button { color: var(--text-muted); font-size: var(--ui-font-meta); }
1266
+ .pz .pz-txfoot button:hover { color: var(--text); }
1267
+ .pz .pz-txpill { position: absolute; right: 18px; bottom: 18px; z-index: 5; display: inline-flex; align-items: center; gap: 8px; height: 34px; padding: 0 12px 0 10px; border-radius: var(--radius-pill); font-size: var(--ui-font-meta); color: var(--text-muted); font-variant-numeric: tabular-nums; border: var(--border-width) solid var(--border); }
1268
+ .pz .pz-txpill:hover { color: var(--text); }
1269
+ /* \u2500\u2500 \u540C\u6B65\u9875(2026-10-20 \u4E91\u540C\u6B65\u5F00\u542F\u65B9\u6848 A)\u2500\u2500 \u4E00\u5F20\u5361\u91CC\u4E09\u884C\u5F00\u5173;\u72B6\u6001\u5706\u70B9 = \u6307\u793A\u8272 --signal-mark(\u5F00\u5173\u3001\u8FDB\u5EA6\u540C\u4E00\u8272),
1270
+ \u8D85\u989D / \u5931\u8D25 = --warning;\u8981\u4F60\u51B3\u5B9A\u7684\u5361\u7528\u63CF\u8FB9\u63D0\u9192(\u540C\u6982\u89C8\u5FEB\u6EE1\u7684\u5361)\u3002\u5F00\u5173\u7528\u5BBF\u4E3B .settings-switch \u539F\u6837 */
1271
+ .pz-sync-head { margin-top: 2px; }
1272
+ .pz-sync-card { margin-top: 18px; overflow: hidden; background: var(--bg-card); border-radius: var(--radius-md); box-shadow: var(--card-shadow); }
1273
+ .pz-sync-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px; padding-right: 16px; }
1274
+ .pz-sync-row + .pz-sync-row, .pz-sync-sub + .pz-sync-row { border-top: var(--border-width) solid var(--border); }
1275
+ .pz-sync-row.is-click:hover, .pz-sync-row.is-open { background: var(--overlay-subtle, var(--overlay-light)); }
1276
+ .pz .pz-sync-main { display: grid; grid-template-columns: 26px minmax(0, 1fr) auto; align-items: center; gap: 12px; width: 100%; min-width: 0; padding: 13px 0 13px 16px; text-align: left; }
1277
+ .pz-sync-txt { min-width: 0; }
1278
+ .pz-sync-txt b { display: block; font-weight: 600; font-size: var(--ui-font-body); line-height: var(--ui-line-body); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
1279
+ .pz-sync-txt small { display: block; margin-top: 2px; color: var(--text-muted); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
1280
+ .pz-sync-state { display: inline-flex; align-items: center; gap: 6px; color: var(--text-muted); font-size: var(--ui-font-meta); white-space: nowrap; font-variant-numeric: tabular-nums; }
1281
+ .pz-sync-state i { width: 6px; height: 6px; border-radius: 50%; background: var(--signal-mark, var(--accent-ink)); flex: none; }
1282
+ .pz-sync-state.is-warn { color: var(--warning); }
1283
+ .pz-sync-state.is-warn i { background: var(--warning); }
1284
+ .pz-sync-state.is-wait { color: var(--text); }
1285
+ /* .pz button \u628A\u6309\u94AE\u7684\u5E95\u548C\u63CF\u8FB9\u6E05\u6210\u900F\u660E:\u300C\u5173\u300D\u7684\u5F00\u5173\u4F1A\u53EA\u5269\u4E00\u4E2A\u65CB\u94AE,\u8FD9\u91CC\u8FD8\u7ED9\u5B83\u8F68\u9053(\u300C\u5F00\u300D\u7531\u5BBF\u4E3B .settings-switch.active \u7BA1) */
1286
+ .pz .settings-switch:not(.active) { background: var(--overlay-medium); border-color: var(--overlay-medium); }
1287
+ .pz-sync-sub { padding: 2px 16px 10px 54px; background: var(--overlay-subtle, var(--overlay-light)); }
1288
+ .pz-sync-sub .kv { display: grid; grid-template-columns: 96px minmax(0, 1fr) auto; align-items: center; gap: 10px; min-height: 32px; color: var(--text-muted); font-size: var(--ui-font-meta); }
1289
+ .pz-sync-sub .kv + .kv { border-top: var(--border-width) solid var(--border); }
1290
+ .pz-sync-sub .kv > span:nth-child(2) { color: var(--text); overflow-wrap: anywhere; }
1291
+ .pz-sync-ask { margin-top: 18px; padding: 16px 18px; border-radius: var(--radius-md); background: var(--bg-card); box-shadow: var(--card-shadow); border: var(--border-width) solid color-mix(in srgb, var(--signal-mark, var(--accent-ink)) 45%, transparent); }
1292
+ .pz-sync-ask.is-warn { border-color: color-mix(in srgb, var(--warning) 55%, transparent); }
1293
+ .pz-sync-ask h4 { margin: 0 0 4px; font-size: var(--ui-font-heading); line-height: var(--ui-line-heading); font-weight: 600; }
1294
+ .pz-sync-ask p { margin: 0; color: var(--text-muted); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
1295
+ .pz-sync-ask .pz-acts, .pz-sync-ask .pz-confirm { margin-top: 12px; }
1296
+ .pz-sync-ask .pz-sync-explain { margin-top: 10px; }
1297
+ .pz-sync-dev .row { grid-template-columns: 16px minmax(0, 1fr) auto; }
1298
+ .pz-sync-dev .row:hover { background: none; }
1299
+ .pz-sync-none { margin: 8px 0 0; color: var(--text-faint); font-size: var(--ui-font-meta); }
1300
+ @media (max-width: 720px) { .pz-sync-sub { padding-left: 16px; } .pz .pz-sync-main { grid-template-columns: 26px minmax(0, 1fr); } .pz-sync-main .pz-sync-state { grid-column: 2; } }
1301
+ .pz-ring { width: 18px; height: 18px; flex: none; border-radius: 50%; background: conic-gradient(var(--signal-mark, var(--accent-ink)) calc(var(--p) * 1%), var(--overlay-medium) 0); -webkit-mask: radial-gradient(circle, transparent 5.5px, #000 6px); mask: radial-gradient(circle, transparent 5.5px, #000 6px); }
1302
+ `;var ud={search:'<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>',down:'<path d="m6 9 6 6 6-6"/>',right:'<path d="m9 18 6-6-6-6"/>',folder:'<path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/>',page:'<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/><path d="M10 9H8"/><path d="M16 13H8"/><path d="M16 17H8"/>',image:'<rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"/>',database:'<ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M3 5V19A9 3 0 0 0 21 19V5"/><path d="M3 12A9 3 0 0 0 21 12"/>',attachment:'<path d="m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48"/>',download:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" x2="12" y1="15" y2="3"/>',trash:'<path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/><line x1="10" x2="10" y1="11" y2="17"/><line x1="14" x2="14" y1="11" y2="17"/>',refresh:'<path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"/><path d="M8 16H3v5"/>',cloud:'<path d="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z"/>',archive:'<rect width="20" height="5" x="2" y="3" rx="1"/><path d="M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8"/><path d="M10 12h4"/>',lock:'<rect width="18" height="11" x="3" y="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/>',undo:'<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/>',pen:'<path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"/>',move:'<path d="M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1"/><path d="M2 13h10"/><path d="m9 16 3-3-3-3"/>',book:'<path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20"/>',login:'<path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"/><polyline points="10 17 15 12 10 7"/><line x1="15" x2="3" y1="12" y2="12"/>',gear:'<circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/>',up:'<path d="m18 15-6-6-6 6"/>',upload:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" x2="12" y1="3" y2="15"/>',"folder-plus":'<path d="M12 10v6"/><path d="M9 13h6"/><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/>',"folder-open":'<path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"/>',pause:'<rect x="14" y="4" width="4" height="16" rx="1"/><rect x="6" y="4" width="4" height="16" rx="1"/>',play:'<polygon points="6 3 20 12 6 21 6 3"/>',x:'<path d="M18 6 6 18"/><path d="m6 6 12 12"/>',check:'<path d="M20 6 9 17l-5-5"/>',alert:'<circle cx="12" cy="12" r="10"/><line x1="12" x2="12" y1="8" y2="12"/><line x1="12" x2="12.01" y1="16" y2="16"/>',"tx-up":'<path d="m18 9-6-6-6 6"/><path d="M12 3v14"/><path d="M5 21h14"/>',"tx-down":'<path d="M12 17V3"/><path d="m6 11 6 6 6-6"/><path d="M19 21H5"/>',files:'<path d="M20 7h-3a2 2 0 0 1-2-2V2"/><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"/><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"/>',notebook:'<path d="M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4"/><path d="M2 6h4"/><path d="M2 10h4"/><path d="M2 14h4"/><path d="M2 18h4"/><path d="M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z"/>',bot:'<path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/>',puzzle:'<path d="M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z"/>',laptop:'<path d="M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z"/><path d="M20.054 15.987H3.946"/>',info:'<circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/>'},Q=({n:e})=>o("svg",{viewBox:"0 0 24 24","aria-hidden":"true",dangerouslySetInnerHTML:{__html:ud[e]??ud.attachment}});function hd(e){let[,t]=T(0);X(()=>{let n=e.subscribe(()=>t(r=>r+1));return t(r=>r+1),n},[e])}function Dr(e){return o("div",{ref:e.rootRef,class:`${e.side?"pz-side":"pz"}${e.extra?` ${e.extra}`:""}`,lang:e.p.locale()==="zh"?"zh-CN":"en",...e.on,children:[o("style",{children:pd}),e.children]})}var Fn=({pct:e,warn:t})=>o("div",{class:`pz-bar${t?" is-low":""}`,children:o("span",{style:{width:`${Math.max(0,Math.min(100,e)).toFixed(1)}%`}})}),fd={sync:1,ama:.62,apps:.38,exports:.2},md={sync:"penzor.ledger.sync",ama:"penzor.ledger.ama",apps:"penzor.ledger.apps",exports:"penzor.ledger.exports"};function bd({p:e}){hd(e);let t=J(null);X(()=>{e.enter(),e.refresh(),On(e.loc())&&e.ctx.closeView?.("penzor-info",{collapse:!0});let p=t.current;if(!p||typeof IntersectionObserver>"u")return;let u=!0;e.setVisible(!0);let h=new IntersectionObserver(m=>{let y=m.some(_=>_.isIntersecting);y&&!u&&(e.enter(),e.refresh()),u=y,e.setVisible(y)});return h.observe(p),()=>{h.disconnect(),e.setVisible(!1)}},[e]);let[n,r]=T(null),a=p=>Array.from(p.dataTransfer?.types??[]).includes("Files"),i=p=>{let u=p.target?.closest?.("tr[data-dir-id]");return u?{id:u.dataset.dirId,name:u.dataset.dirName??""}:null},s=()=>e.appStack()[e.appStack().length-1]?.name??e.t("penzor.drive"),l=e.canWrite()&&e.auth()==="in"?{onDragOver:p=>{if(!a(p))return;p.preventDefault(),p.stopPropagation(),p.dataTransfer&&(p.dataTransfer.dropEffect="copy");let u=i(p),h=u?.name||s();(n?.place!==h||n?.target?.id!==u?.id)&&r({place:h,target:u})},onDragLeave:p=>{t.current?.contains(p.relatedTarget)||r(null)},onDrop:p=>{if(!a(p))return;p.preventDefault(),p.stopPropagation();let u=i(p);r(null);let h=ee().getPathForFile,m=Array.from(p.dataTransfer?.files??[]).map(y=>{try{return h?.(y)??""}catch{return""}}).filter(Boolean);e.upload(m,u)}}:{};X(()=>{e.canWrite()||r(null)},[e.canWrite()]);let c=e.t,d=e.auth(),f;return d==="out"?f=o(vd,{p:e}):e.loc().kind==="sync-home"?f=o(tg,{p:e}):e.snap()?e.error()?f=o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:e.error()})}):e.loc().kind==="overview"?f=ri(e.snap()).empty?o(og,{p:e}):o(rg,{p:e}):f=o(ig,{p:e,dropDir:n?.target?.id??null}):f=o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:e.error()??c("penzor.loading")})}),o(Dr,{p:e,rootRef:t,extra:n?"pz-drop":"",on:l,children:[f,n&&o("div",{class:"pz-dropbar",children:o("span",{children:[o(Q,{n:"upload"}),c("penzor.drop.to",{place:n.place})]})}),e.menu()&&o(cg,{p:e}),o(gg,{p:e})]})}var eg={dropbox:"Dropbox",s3:"S3",webdav:"WebDAV"};function mi({on:e,disabled:t,label:n,title:r,onToggle:a}){return o("button",{type:"button",role:"switch",class:`settings-switch${e?" active":""}`,"aria-checked":e,"aria-label":n,title:r,disabled:t,onClick:i=>{i.stopPropagation(),a(!e)},children:o("span",{})})}var gi=({tone:e,text:t})=>o("span",{class:`pz-sync-state is-${e}`,children:[e!=="off"&&o("i",{}),t]});function tg({p:e}){let t=e.t,n=e.syncState(),[r,a]=T(!1);if(!n)return o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:t("penzor.loading")})});if(!n.signedIn)return o(vd,{p:e});let i=e.snap(),s=n.notes,l=t("penzor.ledger.sync"),c=s.maxBytes??i?.sync?.maxBytes??0,d=i?.sync?.maxFileBytes||50*1024*1024,f=s.vault?i?.sync?.vaults.find(N=>N.vault===s.vault)??null:null,p=Wc(n,c),u=s.on?s.last?.skippedLarge??0:0,h=s.rootName?t("penzor.sync.notesNamed",{name:s.rootName}):t("penzor.sync.notesPlain"),m=()=>e.openSync(),y=()=>{if(s.pending)return{tone:"wait",text:t("penzor.sync.waiting")};if(!s.on)return{tone:"off",text:t("penzor.sync.off")};let N=Lo(n);if(N!=null)return{tone:"ok",text:N>0?t("penzor.sync.running",{pct:Math.round(N*100)}):t("penzor.sync.runningPlain")};if(p)return{tone:"warn",text:t("penzor.sync.overQuota")};if(si(n))return{tone:"warn",text:t("penzor.sync.failed")};if(s.backend==="folder")return{tone:"ok",text:t("penzor.sync.toFolder")};let B=eg[s.backend];return B?{tone:"ok",text:t("penzor.sync.to",{name:B})}:s.last?{tone:"ok",text:s.localBytes!=null?t("penzor.sync.doneSize",{size:e.b(s.localBytes)}):t("penzor.sync.done")}:{tone:"ok",text:t("penzor.sync.firstPending")}},_=(N,B)=>N?{tone:"ok",text:B}:{tone:"off",text:t("penzor.sync.off")},C=N=>B=>{e.setSync(N,B)},x=s.available===!1&&!s.on&&(s.backend==="off"||s.backend==="penzor"),k=[e.thisDevice()?t("penzor.sync.metaDevice",{name:e.thisDevice()}):null,s.on?s.last?t("penzor.sync.metaLast",{time:ci(s.last.at,e.locale())}):t("penzor.sync.metaNever"):null,s.on&&s.backend!=="off"?li(s,e.locale()):null].filter(N=>!!N),A=y(),O=f?[...new Set([...f.devices,...f.device?[f.device]:[]])]:[],q=i?.ama?i.ama.reduce((N,B)=>N+B.sizeBytes,0):null;return o("div",{class:"pz-scroll",children:o("div",{class:"pz-col",children:[o("div",{class:"pz-ov-kick",children:t("penzor.kicker")}),o("div",{class:"pz-title pz-sync-head",children:[o("h1",{class:"pz-h1",children:t("penzor.sync.title")}),o("span",{class:"pz-badge",children:[o(Q,{n:"check"}),Gc(n,e.locale())]})]}),k.length>0&&o("div",{class:"pz-meta",children:k.map(N=>o("span",{children:N},N))}),s.pending&&o(ng,{p:e,s:n}),p&&o("div",{class:"pz-sync-ask is-warn",role:"region",children:[o("h4",{children:s.localBytes!=null&&c>0?t("penzor.sync.quotaTitle",{size:e.b(s.localBytes),ledger:l,max:e.b(c)}):t("penzor.sync.quotaTitlePlain",{ledger:l})}),o("p",{children:[t("penzor.sync.quotaBody"),u>0&&` ${t("penzor.sync.quotaLarge",{size:e.b(d),n:u})}`]}),o("div",{class:"pz-acts",children:[o("button",{class:"pz-btn pri",onClick:()=>void mn("membership").then(N=>{N||e.ctx.app?.notify?.(t("err.openFailed"))}),children:t("member.upgrade")}),f&&o("button",{class:"pz-btn",onClick:()=>e.go(`sync:${f.vault}`),children:t("penzor.sync.quotaSee")})]})]}),o("div",{class:"pz-sync-card",children:[o("div",{class:`pz-sync-row is-click${r?" is-open":""}`,children:[o("button",{type:"button",class:"pz-sync-main","aria-expanded":r,onClick:()=>a(!r),children:[o("span",{class:"pz-tile",children:o(Q,{n:"notebook"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:h}),o("small",{children:t("penzor.sync.notesDesc")})]}),o(gi,{...A})]}),o(mi,{on:s.on&&!s.pending,label:h,disabled:!!s.pending||x||e.syncBusy("notes"),title:s.pending?t("penzor.sync.decideAbove"):void 0,onToggle:C("notes")})]}),r&&o("div",{class:"pz-sync-sub",children:[o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvSchedule")}),o("span",{children:li(s,e.locale())}),o("button",{class:"pz-link",onClick:m,children:t("penzor.sync.change")})]}),o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvDirection")}),o("span",{children:t(`penzor.sync.dir.${s.direction}`)}),o("button",{class:"pz-link",onClick:m,children:t("penzor.sync.change")})]}),u>0&&o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvSkipped")}),o("span",{children:t("penzor.sync.skippedN",{n:u,size:e.b(d)})}),o("span",{})]}),s.backend==="penzor"&&s.vault&&o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvWhere")}),o("span",{children:i?.sync&&c>0?t("penzor.sync.whereUsed",{ledger:l,vault:s.vault,used:e.b(i.sync.usedBytes),max:e.b(c)}):t("penzor.sync.where",{ledger:l,vault:s.vault})}),f?o("button",{class:"pz-link",onClick:()=>e.go(`sync:${f.vault}`),children:t("penzor.sync.open")}):o("span",{})]})]}),o("div",{class:"pz-sync-row",children:[o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(Q,{n:"bot"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:t("penzor.sync.agents")}),o("small",{children:t("penzor.sync.agentsDesc")})]}),o(gi,{..._(n.agents.on,t("penzor.sync.agentsN",{n:n.agents.count}))})]}),o(mi,{on:n.agents.on,label:t("penzor.sync.agents"),disabled:e.syncBusy("agents"),onToggle:C("agents")})]}),o("div",{class:"pz-sync-row",children:[o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(Q,{n:"puzzle"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:t("penzor.sync.plugins")}),o("small",{children:t("penzor.sync.pluginsDesc")})]}),o(gi,{..._(n.plugins.on,t("penzor.sync.pluginsN",{n:n.plugins.count}))})]}),o(mi,{on:n.plugins.on,label:t("penzor.sync.plugins"),disabled:e.syncBusy("plugins"),onToggle:C("plugins")})]})]}),o("div",{class:"pz-h3",children:t("penzor.sync.devicesTitle")}),i?O.length===0?o("p",{class:"pz-sync-none",children:t("penzor.sync.noDevices")}):o("div",{class:"pz-rows pz-sync-dev",children:O.map(N=>o("div",{class:"row",children:[o(Q,{n:"laptop"}),o("span",{class:"t",children:[N,N===e.thisDevice()&&o("em",{children:t("penzor.sync.thisOne")})]}),o("span",{class:"s",children:f?.device===N&&f.updatedAt?t("penzor.sync.lastWrite",{time:ci(Date.parse(f.updatedAt),e.locale())}):""})]},N))}):o("p",{class:"pz-sync-none",children:t("penzor.loading")}),o("div",{class:"pz-h3",children:t("penzor.sync.phoneTitle")}),o("div",{class:"pz-tip",children:[o(Q,{n:"info"}),o("span",{children:q!=null?t("penzor.sync.phoneTip",{size:e.b(q)}):t("penzor.sync.phoneTipPlain")})]}),o("p",{class:"pz-note",children:[t("penzor.sync.foot"),o("button",{class:"pz-link",onClick:m,children:t("penzor.sync.footLink")})]})]})})}function ng({p:e,s:t}){let n=e.t,r=t.notes.pending,a=e.syncBusy("resolve"),i=new Date,s=n("penzor.sync.backupName",{name:t.notes.rootName??n("penzor.sync.notesPlain"),date:`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,"0")}-${String(i.getDate()).padStart(2,"0")}`}),l=r.cloudDevice?n("penzor.sync.askCloud",{device:r.cloudDevice,files:r.cloudFiles.toLocaleString(),size:e.b(r.cloudBytes)}):n("penzor.sync.askCloudNoDevice",{files:r.cloudFiles.toLocaleString(),size:e.b(r.cloudBytes)});return o("div",{class:"pz-sync-ask",role:"region","aria-label":n("penzor.sync.askTitle"),children:[o("h4",{children:n("penzor.sync.askTitle")}),o("p",{children:[l," ",n("penzor.sync.askLocal",{local:r.localOnly.toLocaleString(),conflicts:r.conflicts.toLocaleString()})]}),e.confirmCloud()?o("div",{class:"pz-confirm",children:[o("span",{children:n("penzor.sync.askConfirm",{backup:s})}),o("button",{class:"pz-btn pri",disabled:a,onClick:()=>void e.resolveNotes("cloud"),children:n("penzor.sync.askConfirmGo")}),o("button",{class:"pz-btn",disabled:a,onClick:()=>e.setConfirmCloud(!1),children:n("penzor.cancel")})]}):o("div",{class:"pz-acts",children:[o("button",{class:"pz-btn pri",disabled:a,onClick:()=>void e.resolveNotes("merge"),children:n("penzor.sync.askMerge")}),o("button",{class:"pz-btn",disabled:a,onClick:()=>e.setConfirmCloud(!0),children:n("penzor.sync.askCloudBtn")}),o("button",{class:"pz-btn",disabled:a,onClick:()=>void e.resolveNotes("skip"),children:n("penzor.sync.askSkip")})]}),o("p",{class:"pz-sync-explain",children:n("penzor.sync.askExplain",{backup:s})})]})}function vd({p:e}){let t=e.t;return o("div",{class:"pz-scroll",children:o("div",{class:"pz-empty",children:[o("span",{class:"ic",children:o(Q,{n:"cloud"})}),o("h2",{children:t("penzor.out.title")}),o("p",{children:t("penzor.out.lead")}),o("button",{class:"pz-btn pri",onClick:()=>e.signIn(),children:[o(Q,{n:"login"}),t("penzor.out.signIn")]})]})})}function og({p:e}){let t=e.t;return o("div",{class:"pz-scroll",children:o("div",{class:"pz-empty",children:[o("span",{class:"ic",children:o(Q,{n:"cloud"})}),o("h2",{children:t("penzor.empty.title")}),o("p",{children:t("penzor.empty.lead")}),o("ul",{children:[o("li",{children:t("penzor.empty.sync")}),o("li",{children:t("penzor.empty.ama")}),o("li",{children:t("penzor.empty.apps")})]}),o("button",{class:"pz-btn",onClick:()=>e.openSync(),children:[o(Q,{n:"gear"}),t("penzor.empty.openSync")]})]})})}function rg({p:e}){let t=e.t,n=e.snap(),r=ri(n),a=d=>Vt(d,e.locale()),i=d=>d==="sync"?n.sync?.vaults[0]?`sync:${n.sync.vaults[0].vault}`:"ov":d==="ama"?n.ama?.[0]?`ama:${n.ama[0].id}`:"ov":d==="apps"?r.apps?.apps[0]?`app:${r.apps.apps[0]}`:"trash":"exports",s=(d,f,p,u,h,m,y)=>o("button",{class:`pz-card${y?.warn?" warn":""}`,onClick:()=>e.go(i(d)),children:[o("div",{class:"pz-card-h",children:[o("span",{class:"pz-tile",children:o(Q,{n:f})}),t(md[d]),o("span",{class:"go",children:o(Q,{n:"right"})})]}),o("div",{class:"pz-big",children:[p,o("small",{children:u})]}),y&&o(Fn,{pct:y.pct,warn:y.warn}),o("div",{class:"pz-sub",children:h}),o("div",{class:`pz-foot${y?.warn?" warn":""}`,children:m})]}),l=ag(e),c=Math.max(1,...l.map(d=>d.size));return o("div",{class:"pz-scroll",children:o("div",{class:"pz-col",children:[o("div",{class:"pz-ov-kick",children:t("penzor.kicker")}),o("div",{class:"pz-total",children:[o("b",{children:e.b(r.total)}),o("span",{children:t("penzor.total.sub",{time:t("penzor.justNow")})})]}),o("div",{class:"pz-seg",children:r.segments.map(d=>o("i",{style:{width:`${r.total?d.bytes/r.total*100:0}%`,opacity:fd[d.ledger]}},d.ledger))}),o("div",{class:"pz-legend",children:r.segments.map(d=>o("span",{children:[o("i",{style:{opacity:fd[d.ledger]}}),t(md[d.ledger])," ",e.b(d.bytes)]},d.ledger))}),o("div",{class:"pz-cards",children:[r.sync&&s("sync","refresh",e.b(r.sync.bytes),r.sync.meter?t("penzor.ofMax",{max:e.b(r.sync.meter.max)}):"",r.sync.updatedAt?t("penzor.card.syncSub",{n:r.sync.vaults,time:a(Date.parse(r.sync.updatedAt))}):t("penzor.card.syncSubNone",{n:r.sync.vaults}),r.sync.meter?.warn?t("penzor.card.syncWarn",{max:e.b(r.sync.meter.max)}):t("penzor.card.syncFoot",{size:e.b(r.sync.maxFileBytes)}),r.sync.meter),r.ama&&s("ama","cloud",e.b(r.ama.bytes),t("penzor.card.amaSmall"),t("penzor.card.amaSub",{n:r.ama.vaults}),t("penzor.card.amaFoot")),r.apps&&s("apps","archive",e.b(r.apps.bytes),r.apps.meter?t("penzor.ofMax",{max:e.b(r.apps.meter.max)}):"",[...Ar(n)>0?[t("penzor.drive")]:[],...r.apps.apps.map(d=>e.appLabel(d))].join(" \xB7 ")||t("penzor.card.none"),r.apps.meter?.warn?t("penzor.card.appsWarn",{max:e.b(r.apps.meter.max)}):t("penzor.card.appsFoot",{n:r.apps.trashCount,size:e.b(r.apps.trashBytes)}),r.apps.meter),r.exports&&s("exports","attachment",e.b(r.exports.bytes),t("penzor.card.expSmall",{n:r.exports.count}),r.exports.latest?t("penzor.card.expSub",{name:r.exports.latest.fileName,time:a(Date.parse(r.exports.latest.createdAt))}):t("penzor.card.none"),t("penzor.card.expFoot"))]}),l.length>0&&o(R,{children:[o("div",{class:"pz-h3",children:t("penzor.largest")}),o("div",{class:"pz-rows",children:l.map(d=>o("button",{class:"row",onClick:()=>e.go(d.go),children:[o(Q,{n:Do(d.name)}),o("span",{class:"t",children:[d.name,o("em",{children:d.where})]}),o(Fn,{pct:d.size/c*100}),o("span",{class:"s",children:e.b(d.size)})]},d.key))})]})]})})}function ag(e){let t=e.snap(),n=e.t,r=[...e.largest()];for(let a of t.apps?.largest??[])r.push({key:`a:${a.id}`,name:a.name,where:`${n("penzor.ledger.apps")} \xB7 ${e.appLabel(a.appId)}`,size:a.size,go:`app:${a.appId}`});for(let a of t.exports?.files??[])r.push({key:`e:${a.fileId}`,name:a.fileName,where:`${n("penzor.ledger.exports")} \xB7 ${e.appLabel(a.appId)}`,size:a.size,go:"exports"});return r.sort((a,i)=>i.size-a.size).slice(0,6)}function ig({p:e,dropDir:t}){let n=e.t,r=e.loc(),a=e.snap(),i=e.rows(),[s,l]=T(!1),[c,d]=T(null),f=J(null),p=J(null),u=J(null),h=e.canWrite(),m=e.selection();X(()=>(e.picker.files=()=>f.current?.click(),e.picker.folder=()=>p.current?.click(),()=>{e.picker.files=void 0,e.picker.folder=void 0}),[e]);let y=(v,E)=>{let I=v.currentTarget,Z=ee().getPathForFile,le=Array.from(I.files??[]),de=le.map(Pe=>{try{return Z?.(Pe)??""}catch{return""}}),He=de.filter(Boolean);if(E){let Pe=new Set;le.forEach((yt,be)=>{let et=yt.webkitRelativePath??"",Wt=de[be];!et||!Wt||Wt.length<et.length||Pe.add(Wt.slice(0,Wt.length-et.length)+et.split("/")[0])}),He=[...Pe]}I.value="",e.upload(He)},_=(v,E)=>{e.select(E,{toggle:v.metaKey||v.ctrlKey,range:v.shiftKey}),u.current?.focus({preventScroll:!0})},C=v=>{if(v.target?.tagName!=="INPUT"){if((v.metaKey||v.ctrlKey)&&v.key.toLowerCase()==="a"&&e.canMulti())v.preventDefault(),e.selectAll();else if(v.key==="Escape"&&m.length>1){v.preventDefault();let E=e.selected();e.select(E)}}},x=r.kind==="sync"?n("penzor.ledger.sync"):r.kind==="ama"?n("penzor.ledger.ama"):r.kind==="app"&&!e.canWrite()?n("penzor.ledger.apps"):null,k=r.kind==="sync"?r.vault:r.kind==="ama"?a.ama?.find(v=>v.id===r.vaultId)?.name??"":r.kind==="app"?e.appLabel(r.appId):r.kind==="exports"?n("penzor.ledger.exports"):n("penzor.trash"),A=r.kind==="app"?e.appStack().map(v=>v.name):e.path()?e.path().split("/"):[],O=[...x?[{label:x,depth:null}]:[],{label:k,depth:0},...A.map((v,E)=>({label:v,depth:E+1}))],q=["mtime","size","name"],N=()=>e.setSort(q[(q.indexOf(e.sort())+1)%q.length]),B=r.kind==="sync"?n("penzor.col.device"):r.kind==="trash"?n("penzor.col.origin"):r.kind==="exports"?n("penzor.col.app"):null,Y=r.kind==="trash"?n("penzor.col.deleted"):n("penzor.col.mtime"),se=()=>{if(r.kind==="sync"){let E=a.sync?.vaults.find(le=>le.vault===r.vault);if(!E)return null;let I=!!e.thisDevice()&&E.devices.includes(e.thisDevice()),Z=a.sync;return o(R,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:E.vault}),I&&o("span",{class:"pz-badge",children:[o(Q,{n:"refresh"}),n("penzor.sync.thisDevice")]})]}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.meta.files",{size:e.b(E.bytes),n:E.files.toLocaleString()})}),E.updatedAt&&o("span",{children:E.device?n("penzor.sync.last",{time:Vt(Date.parse(E.updatedAt),e.locale()),device:E.device}):n("penzor.sync.lastNoDevice",{time:Vt(Date.parse(E.updatedAt),e.locale())})}),E.devices.length>0&&o("span",{children:n("penzor.sync.devices",{n:E.devices.length})})]}),Z.maxBytes>0&&o("div",{class:"pz-meter",children:[o(Fn,{pct:Z.usedBytes/Z.maxBytes*100,warn:Z.usedBytes/Z.maxBytes>=.9}),o("span",{children:n("penzor.sync.meter",{max:e.b(Z.maxBytes),used:e.b(Z.usedBytes)})})]})]})}if(r.kind==="ama"){let E=a.ama?.find(I=>I.id===r.vaultId);return o(R,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:E?.name}),o("span",{class:"pz-badge",children:[o(Q,{n:"cloud"}),"Amadeus Cloud"]})]}),o("div",{class:"pz-meta",children:[o("span",{children:e.b(E?.sizeBytes??0)}),o("span",{children:n("penzor.ama.notCounted")})]})]})}if(r.kind==="app"){let E=a.apps?.apps.find(Z=>Z.appId===r.appId),I=a.apps;return o(R,{children:[o("div",{class:"pz-title",children:o("h1",{class:"pz-h1",children:e.appLabel(r.appId)})}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.meta.files",{size:e.b(E?.bytes??0),n:(E?.files??0).toLocaleString()})}),o("span",{children:e.canWrite()?n("penzor.drive.meta",{max:e.b(I.quota)}):n("penzor.apps.by",{app:e.appLabel(r.appId)})})]}),I.quota>0&&o("div",{class:"pz-meter",children:[o(Fn,{pct:I.used/I.quota*100,warn:I.used/I.quota>=.9}),o("span",{children:n("penzor.apps.meter",{max:e.b(I.quota),used:e.b(I.used)})})]})]})}if(r.kind==="exports")return o(R,{children:[o("div",{class:"pz-title",children:o("h1",{class:"pz-h1",children:n("penzor.ledger.exports")})}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.meta.files",{size:e.b(a.exports?.totalBytes??0),n:(a.exports?.total??0).toLocaleString()})}),o("span",{children:n("penzor.card.expFoot")})]})]});let v=i??[];return o(R,{children:[o("div",{class:"pz-title",children:o("h1",{class:"pz-h1",children:n("penzor.trash")})}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.trash.meta",{n:v.length,size:e.b((a.trash??[]).reduce((E,I)=>E+(Number(I.fileSize)||0),0))})}),a.apps&&a.apps.quota>0&&o("span",{children:n("penzor.trash.note",{max:e.b(a.apps.quota)})})]}),e.confirmEmpty()&&o("div",{class:"pz-confirm",children:[o("span",{children:n("penzor.confirm.empty",{n:v.length})}),o("button",{class:"pz-btn danger solid",onClick:()=>void e.emptyTrash(),children:n("penzor.trash.emptyBtn")}),o("button",{class:"pz-btn",onClick:()=>e.setConfirmEmpty(!1),children:n("penzor.cancel")})]})]})},V=e.selected(),ne=m.length>1,pe=m.reduce((v,E)=>v+(E.dir?0:E.size),0),Ee=e.txRows();return o(R,{children:[o("div",{class:"pz-top",children:[o("nav",{class:"pz-crumb",children:O.map((v,E)=>{let I=E===O.length-1,Z=I?o("b",{children:v.label}):v.depth==null?o("span",{children:v.label}):o("button",{onClick:()=>e.up(v.depth),children:v.label});return o("span",{style:{display:"contents"},children:[Z,!I&&o("i",{children:"\u203A"})]},E)})}),o("span",{class:"pz-sp"}),ne?o(R,{children:[o("span",{class:"pz-selbar",children:n("penzor.sel.bar",{n:m.length,size:e.b(pe)})}),m.some(v=>!v.dir)&&o("button",{class:"pz-btn",onClick:()=>void e.downloadMany(m),children:[o(Q,{n:"download"}),n("penzor.act.download")]}),r.kind==="app"&&o("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"move",at:[]}),children:[o(Q,{n:"move"}),n("penzor.act.move")]}),r.kind==="app"&&o("button",{class:"pz-btn danger",onClick:()=>void e.trashMany(m),children:[o(Q,{n:"trash"}),n("penzor.act.trash")]}),o("button",{class:"pz-ibtn",title:n("penzor.act.clearSel"),onClick:()=>e.select(V),children:o(Q,{n:"x"})})]}):o(R,{children:[A.length>0&&o("button",{class:"pz-ibtn",title:n("penzor.act.up"),onClick:()=>e.up(),children:o(Q,{n:"up"})}),r.kind==="ama"&&o("button",{class:"pz-chip",onClick:()=>void e.ctx.app?.openSpace?.("amadeus"),children:[o(Q,{n:"book"}),n("penzor.ama.open")]}),r.kind==="trash"&&(i?.length??0)>0&&o("button",{class:"pz-btn danger",onClick:()=>e.setConfirmEmpty(!0),children:[o(Q,{n:"trash"}),n("penzor.trash.emptyBtn")]}),h&&o("span",{class:"pz-split",children:[o("button",{class:"pz-btn pri",onClick:()=>e.picker.files?.(),children:[o(Q,{n:"upload"}),n("penzor.act.upload")]}),o("button",{class:"pz-btn pri more",title:n("penzor.act.uploadMore"),"aria-label":n("penzor.act.uploadMore"),onClick:v=>{let E=v.currentTarget.getBoundingClientRect();d({x:E.right,y:E.bottom+4})},children:o(Q,{n:"down"})})]}),h&&o("button",{class:"pz-ibtn",title:n("penzor.act.newFolder"),onClick:()=>e.startNewFolder(),children:o(Q,{n:"folder-plus"})}),s||e.query()?o("input",{class:"pz-find",placeholder:n("penzor.search"),value:e.query(),autoFocus:!0,onInput:v=>e.setQuery(v.currentTarget.value),onKeyDown:v=>{v.key==="Escape"&&(e.setQuery(""),l(!1))},onBlur:()=>{e.query()||l(!1)}}):o("button",{class:"pz-ibtn",title:n("penzor.search"),onClick:()=>l(!0),children:o(Q,{n:"search"})}),o("button",{class:"pz-chip",onClick:N,children:[r.kind==="trash"&&e.sort()==="mtime"?n("penzor.sort.deleted"):n(`penzor.sort.${e.sort()}`),o(Q,{n:"down"})]})]})]}),h&&o(R,{children:[o("input",{ref:f,type:"file",multiple:!0,hidden:!0,onChange:v=>y(v,!1)}),o("input",{ref:p,type:"file",hidden:!0,webkitdirectory:!0,onChange:v=>y(v,!0)})]}),c&&o(kd,{x:c.x,y:c.y,alignRight:!0,onClose:()=>d(null),items:[{id:"files",label:n("penzor.act.uploadFiles"),icon:"upload",run:()=>e.picker.files?.()},{id:"folder",label:n("penzor.act.uploadFolder"),icon:"folder",run:()=>e.picker.folder?.()}]}),o("div",{class:"pz-scroll",ref:u,tabIndex:-1,onKeyDown:C,onContextMenu:v=>{!h||v.target.closest("tr")||(v.preventDefault(),e.openMenu(v.clientX,v.clientY,null))},children:o("div",{class:"pz-col",children:[se(),e.rowsError()?o("p",{class:"pz-note",children:n("penzor.err",{reason:e.rowsError()})}):i?i.length===0&&!Ee.length&&e.newFolder()==null?o("p",{class:"pz-note",children:e.query()?n("penzor.noMatch",{q:e.query()}):h&&!A.length?n("penzor.drive.empty"):n("penzor.folderEmpty")}):o("table",{class:"pz-table",children:[o("thead",{children:o("tr",{children:[o("th",{children:n("penzor.col.name")}),o("th",{class:"r",children:n("penzor.col.size")}),o("th",{children:Y}),B&&o("th",{children:B})]})}),o("tbody",{children:[e.newFolder()!=null&&o(sg,{p:e,cols:B?4:3}),i.map((v,E)=>o(R,{children:[!v.dir&&(E===0||i[E-1].dir)&&Ee.map(I=>o(gd,{p:e,x:I},I.key)),o("tr",{class:`${e.isSelected(v.key)?"sel":""}${t&&t===v.key?" drop":""}`,"data-dir-id":h&&v.dir?v.key:void 0,"data-dir-name":h&&v.dir?v.name:void 0,onMouseDown:I=>{I.shiftKey&&I.preventDefault()},onClick:I=>_(I,v),onDblClick:()=>{v.dir?e.openDir(v):e.download(v)},onContextMenu:I=>{I.preventDefault(),e.openMenu(I.clientX,I.clientY,v)},children:[o("td",{class:"n",children:o("span",{children:[o(Q,{n:Do(v.name,v.dir)}),o("b",{children:v.name}),v.count!=null&&v.count>0&&o("em",{class:"cnt",children:v.count.toLocaleString()})]})}),o("td",{class:"r",children:v.dir&&r.kind==="app"?"\u2014":e.b(v.size)}),o("td",{children:Vt(v.mtime,e.locale())}),B&&o("td",{class:v.col4?"":"dim",children:v.col4?v.col4===e.thisDevice()?n("penzor.side.thisDevice",{name:v.col4}):v.col4:"\u2014"})]})]},v.key)),(i.length===0||i[i.length-1].dir)&&Ee.map(v=>o(gd,{p:e,x:v},v.key))]})]}):o("p",{class:"pz-note",children:n("penzor.loading")})]})})]})}function sg({p:e,cols:t}){let[n,r]=T(e.newFolder()??""),a=J(null),i=J(!1);So(()=>{a.current?.focus(),a.current?.select()},[]);let s=()=>{i.current||(i.current=!0,e.createFolder(n))};return o("tr",{class:"sel",children:[o("td",{class:"n",children:o("span",{children:[o(Q,{n:"folder-open"}),o("input",{ref:a,class:"pz-newname",value:n,onInput:l=>r(l.currentTarget.value),onKeyDown:l=>{l.key==="Enter"?s():l.key==="Escape"&&(i.current=!0,e.cancelNewFolder())},onBlur:s})]})}),o("td",{class:"r",children:"\u2014"}),o("td",{children:e.t("penzor.justNow")}),t>3&&o("td",{})]})}function gd({p:e,x:t}){let n=t.size>0?Math.min(100,Math.round(t.done/t.size*100)):0;return o("tr",{class:`pz-txrow ${t.state}`,title:t.state==="paused"?e.t("penzor.tx.paused"):void 0,children:[o("td",{class:"n",children:o("span",{children:[o(Q,{n:Do(t.name)}),o("b",{children:t.name})]})}),o("td",{class:"r",children:t.state==="active"?ii(t.done,t.size,e.locale()):e.b(t.size)}),o("td",{children:t.state==="queued"?o("span",{class:"pz-inl",children:e.t("penzor.tx.queued")}):o("span",{class:"pz-inl",children:[o(Fn,{pct:n}),t.state==="paused"?e.t("penzor.tx.pause"):`${n}%`]})})]})}function yd(e,t){let n=e.t,r=e.loc().kind,a={id:"download",label:n("penzor.act.download"),icon:"download",run:()=>void e.download(t)};return r==="sync"||r==="ama"?t.dir?[]:[a]:r==="app"?[...t.dir?[]:[a],{id:"rename",label:n("penzor.act.rename"),icon:"pen",run:()=>{e.select(t),e.setSide({kind:"rename"})}},{id:"move",label:n("penzor.act.move"),icon:"move",run:()=>{e.select(t),e.setSide({kind:"move",at:[]})}},{id:"trash",label:n("penzor.act.trash"),icon:"trash",danger:!0,run:()=>void e.trash(t)}]:r==="exports"?[a,{id:"rename",label:n("penzor.act.rename"),icon:"pen",run:()=>{e.select(t),e.setSide({kind:"rename"})}},{id:"delete",label:n("penzor.act.delete"),icon:"trash",danger:!0,run:()=>{e.select(t),e.setSide({kind:"confirm",what:"deleteExport"})}}]:r==="trash"?[{id:"restore",label:n("penzor.act.restore"),icon:"undo",run:()=>void e.restore(t)},{id:"purge",label:n("penzor.act.purge"),icon:"trash",danger:!0,run:()=>{e.select(t),e.setSide({kind:"confirm",what:"purge"})}}]:[]}function lg(e,t){let n=e.t;if(!t)return e.canWrite()?[{id:"upload",label:n("penzor.act.uploadHere"),icon:"upload",run:()=>e.picker.files?.()},{id:"new-folder",label:n("penzor.act.newFolder"),icon:"folder-plus",run:()=>e.startNewFolder()}]:[];let r=e.selection();return r.length>1&&r.some(a=>a.key===t.key)?xd(e,r):yd(e,t)}function xd(e,t){let n=e.t,r=e.loc().kind,a=t.filter(i=>!i.dir).length;return[...a?[{id:"download",label:n("penzor.sel.download",{n:a}),icon:"download",run:()=>void e.downloadMany(t)}]:[],...r==="app"?[{id:"move",label:n("penzor.act.move"),icon:"move",run:()=>e.setSide({kind:"move",at:[]})},{id:"trash",label:n("penzor.act.trash"),icon:"trash",danger:!0,run:()=>void e.trashMany(t)}]:[]]}function kd({x:e,y:t,items:n,onClose:r,alignRight:a}){let i=J(null),[s,l]=T({x:e,y:t});return X(()=>{let c=i.current;if(c){let p=c.getBoundingClientRect(),u=a?e-p.width:e;l({x:Math.max(8,Math.min(u,window.innerWidth-p.width-8)),y:t+p.height>window.innerHeight-8?Math.max(8,t-p.height):t})}let d=p=>{p.target instanceof Node&&c?.contains(p.target)||r()},f=p=>{p.key==="Escape"&&r()};return window.addEventListener("pointerdown",d,!0),window.addEventListener("keydown",f,!0),window.addEventListener("blur",r),window.addEventListener("wheel",r,{passive:!0}),()=>{window.removeEventListener("pointerdown",d,!0),window.removeEventListener("keydown",f,!0),window.removeEventListener("blur",r),window.removeEventListener("wheel",r)}},[e,t]),n.length?cd(o("div",{ref:i,class:"ctx-menu pz-menu",role:"menu",style:{left:`${s.x}px`,top:`${s.y}px`},children:n.map((c,d)=>o(R,{children:[c.danger&&d>0&&o("div",{class:"ctx-separator"}),o("button",{role:"menuitem",class:c.danger?"danger":"",onClick:()=>{r(),c.run()},children:[o(Q,{n:c.icon}),c.label]})]},c.id))}),document.body):(queueMicrotask(r),null)}function cg({p:e}){let t=e.menu();return o(kd,{x:t.x,y:t.y,items:lg(e,t.row),onClose:e.closeMenu})}function wd({p:e}){hd(e);let t=e.t,n=e.loc(),r=e.selected();if(On(n)||!r)return o(Dr,{p:e,side:!0,children:o("p",{class:"pz-side-none",children:t("penzor.side.none")})});let a=e.snap(),i=e.side(),s=e.selection();if(s.length>1)return o(pg,{p:e,sel:s});let l=n.kind==="sync"?`${n.vault} / ${r.key}`:n.kind==="ama"?`${a?.ama?.find(m=>m.id===n.vaultId)?.name??""} / ${r.key}`:n.kind==="app"?[e.appLabel(n.appId),...e.appStack().map(m=>m.name),r.name].join(" / "):n.kind==="exports"?`${t("penzor.ledger.exports")} / ${r.name}`:r.col4??"",c=r.dir?"":(r.name.match(/\.([A-Za-z0-9]{1,8})$/)?.[1]??"").toUpperCase(),d=n.kind==="trash"?t("penzor.side.inTrash",{size:e.b(r.size)}):r.dir?r.count!=null?t("penzor.side.folder",{n:r.count.toLocaleString()}):t("penzor.side.folderPlain"):[c,e.b(r.size)].filter(Boolean).join(" \xB7 "),f=n.kind==="trash"?[[t("penzor.side.origin"),l],[t("penzor.side.deletedAt"),Vt(r.mtime,e.locale())]]:[[t("penzor.side.where"),l],[t("penzor.side.mtime"),Vt(r.mtime,e.locale())]];n.kind==="sync"&&!r.dir&&f.push([t("penzor.side.device"),r.col4?r.col4===e.thisDevice()?t("penzor.side.thisDevice",{name:r.col4}):r.col4:"\u2014"]),n.kind==="app"&&!r.dir&&!e.canWrite()&&f.push([t("penzor.side.from"),e.appLabel(n.appId)]),n.kind==="exports"&&f.push([t("penzor.side.from"),r.col4??"\u2014"]);let p=Jc(n),u=yd(e,r),h=e.versions();return o(Dr,{p:e,side:!0,children:[o("div",{class:"pz-thumb",children:o(Q,{n:Do(r.name,r.dir)})}),i.kind==="rename"?o(dg,{p:e,row:r}):o("div",{class:"pz-fname",children:r.name}),o("div",{class:"pz-fsub",children:d}),i.kind==="confirm"?o("div",{class:"pz-confirm",style:{margin:0},children:[o("span",{children:t(i.what==="purge"?"penzor.confirm.purge":"penzor.confirm.deleteExport",{name:r.name})}),o("button",{class:"pz-btn danger solid",onClick:()=>void(i.what==="purge"?e.purge(r):e.deleteExport(r)),children:t(i.what==="purge"?"penzor.act.purge":"penzor.act.delete")}),o("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"view"}),children:t("penzor.cancel")})]}):u.length>0&&o("div",{class:"pz-acts",children:u.filter(m=>m.id!=="move").map(m=>o("button",{class:`pz-btn${m.danger?" danger":""}${m.id==="restore"?" pri":""}`,onClick:()=>m.run(),children:[o(Q,{n:m.icon}),m.id==="trash"?t("penzor.act.delete"):m.label]},m.id))}),i.kind==="move"&&o(zd,{p:e,row:r,at:i.at}),o("dl",{class:"pz-dl",children:[f.map(([m,y])=>o(R,{children:[o("dt",{children:m}),o("dd",{children:y})]},m)),n.kind==="app"&&!r.dir&&o(R,{children:[o("dt",{children:t("penzor.side.versions")}),o("dd",{children:h==null?"\u2026":h.length?t("penzor.side.versionsN",{n:h.length}):t("penzor.side.versionsNone")})]})]}),n.kind==="app"&&!r.dir&&h&&h.length>0&&o("div",{class:"pz-vers",children:h.map(m=>o("div",{children:[o("span",{children:t("penzor.side.versionRow",{n:m.versionNumber,time:Vt(m.createdAt,e.locale()),size:e.b(m.fileSize)})}),o("button",{class:"pz-link",onClick:()=>void e.restoreVersion(r,m),children:t("penzor.side.restoreVersion")})]},m.versionNumber))}),n.kind==="trash"&&r.dir&&(r.count??0)>0&&o("div",{class:"pz-tip",children:[o(Q,{n:"undo"}),o("span",{children:t("penzor.side.inner",{n:r.count})})]}),n.kind==="exports"&&o("div",{class:"pz-tip",children:[o(Q,{n:"trash"}),o("span",{children:t("penzor.side.exportNote")})]}),p&&o("div",{class:"pz-tip",children:[o(Q,{n:"lock"}),o("span",{children:t(p,{vault:n.kind==="sync"?n.vault:""})})]})]})}function dg({p:e,row:t}){let[n,r]=T(t.name),a=J(null),i=J(!1),s=()=>{i.current||(i.current=!0,e.rename(t,n))};return X(()=>{let l=a.current;if(!l)return;l.focus();let c=t.dir?-1:t.name.lastIndexOf(".");l.setSelectionRange(0,c>0?c:t.name.length)},[t.key]),o("input",{ref:a,class:"pz-input",value:n,onInput:l=>r(l.currentTarget.value),onKeyDown:l=>{l.key==="Enter"?s():l.key==="Escape"&&(i.current=!0,e.setSide({kind:"view"}))},onBlur:s})}function zd({p:e,row:t,at:n}){let r=e.t,a=e.loc(),i=a.kind==="app"?e.appLabel(a.appId):"",s=e.selection(),l=s.length>1,c=new Set(l?s.map(p=>p.key):[t.key]),d=(e.moveFolders()??[]).filter(p=>!c.has(p.id)),f=n[n.length-1]??{id:"ROOT",name:r("penzor.move.root",{app:i})};return o("div",{class:"pz-tip",style:{flexDirection:"column"},children:[o("div",{class:"pz-sh",style:{margin:0},children:r("penzor.move.title")}),o("div",{class:"pz-pick",children:[n.length>0&&o("button",{onClick:()=>e.moveBrowse(n.slice(0,-1)),children:[o(Q,{n:"up"}),n.length>1?n[n.length-2].name:r("penzor.move.root",{app:i})]}),e.moveFolders()==null?o("span",{children:"\u2026"}):d.length===0?o("span",{children:r("penzor.move.noFolders")}):d.map(p=>o("button",{onClick:()=>e.moveBrowse([...n,p]),children:[o(Q,{n:"folder"}),p.name]},p.id))]}),o("div",{class:"pz-acts",children:[o("button",{class:"pz-btn pri",onClick:()=>void(l?e.moveMany(s,f):e.moveTo(t,f)),children:r("penzor.move.here")}),o("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"view"}),children:r("penzor.cancel")})]})]})}function pg({p:e,sel:t}){let n=e.t,r=e.loc(),a=t.filter(p=>!p.dir),i=t.length-a.length,s=a.reduce((p,u)=>p+u.size,0),l=new Date,c=n("penzor.download.folder",{date:`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`}),d=r.kind==="app"?[e.appLabel(r.appId),...e.appStack().map(p=>p.name)].join(" / "):r.kind==="sync"?[r.vault,...e.path()?e.path().split("/"):[]].join(" / "):r.kind==="ama"?[e.snap()?.ama?.find(p=>p.id===r.vaultId)?.name??"",...e.path()?e.path().split("/"):[]].join(" / "):"",f=e.side();return o(Dr,{p:e,side:!0,children:[o("div",{class:"pz-thumb",children:o(Q,{n:"files"})}),o("div",{class:"pz-fname",children:n("penzor.sel.title",{n:t.length})}),o("div",{class:"pz-fsub",children:i?n("penzor.sel.subDirs",{size:e.b(s),files:a.length,dirs:i}):n("penzor.sel.sub",{size:e.b(s),files:a.length})}),o("div",{class:"pz-acts",children:xd(e,t).map(p=>o("button",{class:`pz-btn${p.danger?" danger":""}`,onClick:()=>p.run(),children:[o(Q,{n:p.icon}),p.id==="trash"?n("penzor.act.delete"):p.label]},p.id))}),f.kind==="move"&&o(zd,{p:e,row:t[0],at:f.at}),o("dl",{class:"pz-dl",children:[o("dt",{children:n("penzor.side.where")}),o("dd",{children:d}),a.length>1&&o(R,{children:[o("dt",{children:n("penzor.sel.saveTo")}),o("dd",{children:n("penzor.sel.saveToValue",{folder:c})})]})]}),i>0&&a.length>0&&o("div",{class:"pz-tip",children:[o(Q,{n:"folder"}),o("span",{children:n("penzor.sel.noDirs")})]})]})}var _d=(e,t)=>t<60?e.t("penzor.tx.sec",{n:Math.max(1,Math.round(t))}):e.t("penzor.tx.min",{n:Math.ceil(t/60)}),ug=(e,t)=>t!=null&&Date.now()-t<6e4?e.t("penzor.justNow"):Vt(t,e.locale()),fg=(e,t)=>{let n=t.error??"";return n==="too_large"?e.t("penzor.err.too_large",{size:e.b(t.size)}):n==="network"?e.t("penzor.err.network",{pct:t.size?Math.round(t.done/t.size*100):0}):n==="quota"||n==="account_changed"||n==="not_signed_in"||n==="gone"||n==="changed"||n==="storage_unavailable"?e.t(`penzor.err.${n}`):e.t("penzor.err.other",{code:n||"?"})};function mg(e){let t=e.filter(l=>l.state==="active"||l.state==="queued"||l.state==="paused"),n=t.filter(l=>l.state!=="paused"),r=n.reduce((l,c)=>l+Math.max(c.size,c.done),0),a=n.reduce((l,c)=>l+c.done,0),i=n.reduce((l,c)=>l+c.speed,0),s=i>0?(r-a)/i:null;return{live:t,failed:e.filter(l=>l.state==="failed"),done:e.filter(l=>l.state==="done"),up:t.filter(l=>l.kind==="up").length,down:t.filter(l=>l.kind==="down").length,pct:r>0?Math.min(100,Math.round(a/r*100)):0,eta:s!=null&&s>=5?s:null}}function gg({p:e}){let t=e.t,n=e.card(),r=e.transfers(),a=e.notices();if(n==="hidden"||!r.length&&!a.length)return null;let i=mg(r),s=i.failed.length+a.length,l=t("penzor.tx.counts",{up:i.up,down:i.down}),c=i.live.length?t("penzor.tx.busy",{n:i.live.length}):s?t("penzor.tx.failedN",{n:s}):t("penzor.tx.allDone"),d=i.live.length?[l,i.eta!=null?t("penzor.tx.eta",{eta:_d(e,i.eta)}):""].filter(Boolean).join(" \xB7 "):s?i.done.length?t("penzor.tx.restDone",{n:i.done.length}):"":t("penzor.tx.doneN",{n:i.done.length}),f={onMouseEnter:()=>e.holdCard(!0),onMouseLeave:()=>e.holdCard(!1)};if(n==="pill")return o("button",{class:"ui-popover pz-txpill",...f,onClick:()=>e.setCard("open"),title:t("penzor.tx.expand"),"aria-label":t("penzor.tx.expand"),children:[i.live.length?o("span",{class:"pz-ring",style:{"--p":i.pct}}):o(Q,{n:s?"alert":"check"}),o("span",{children:i.live.length?t("penzor.tx.pill",{counts:l,pct:i.pct}):c}),o(Q,{n:"up"})]});let p=m=>m.state==="failed"?0:m.state==="active"?1:m.state==="queued"||m.state==="paused"?2:3,u=[...r].filter(m=>m.state!=="canceled").sort((m,y)=>p(m)-p(y)||(p(m)===3?(y.finishedAt??0)-(m.finishedAt??0):0)),h=i.live.length>0&&i.live.every(m=>m.state==="paused");return o("div",{class:"ui-popover pz-txcard",role:"region","aria-label":c,...f,children:[o("div",{class:"pz-txhead",children:[o("b",{children:c}),o("span",{children:d}),o("i",{class:"sp"}),o("button",{class:"pz-ib",title:t("penzor.tx.collapse"),"aria-label":t("penzor.tx.collapse"),onClick:()=>e.setCard(i.live.length||s?"pill":"hidden"),children:o(Q,{n:"down"})})]}),i.live.length>0&&o("div",{class:"pz-txall",children:o(Fn,{pct:i.pct})}),o("div",{class:"pz-txlist",children:[a.map(m=>o("div",{class:"pz-txrow2 is-fail",children:[o(Q,{n:"alert"}),o("span",{class:"nm",children:t("penzor.tx.quota",{size:e.b(m.short)})}),o("span",{class:"acts",children:o("button",{class:"pz-ib",title:t("penzor.tx.remove"),onClick:()=>e.dismissNotice(m.id),children:o(Q,{n:"x"})})}),o("span",{class:"sub",children:[o("span",{class:"err",children:t("penzor.tx.quotaSub")}),o("button",{class:"pz-link",onClick:()=>{e.dismissNotice(m.id),e.go("trash")},children:t("penzor.tx.freeSpace")})]})]},m.id)),u.map(m=>o(hg,{p:e,x:m},m.id))]}),o("div",{class:"pz-txfoot",children:[i.live.length>0&&o("button",{onClick:()=>void e.txAll(h?"resume":"pause"),children:t(h?"penzor.tx.resumeAll":"penzor.tx.pauseAll")}),i.failed.length>0&&!i.live.length&&o("button",{onClick:()=>void e.txAll("retry"),children:t("penzor.tx.retryAll")}),i.done.length>0&&i.live.length>0&&o("button",{onClick:()=>void e.txClear("finished"),children:t("penzor.tx.clearDone")}),!i.live.length&&o("button",{onClick:()=>void e.txClear(s?"all":"finished"),children:t(s?"penzor.tx.clear":"penzor.tx.clearDone")})]})]})}function hg({p:e,x:t}){let n=e.t,r=t.size>0?Math.min(100,t.done/t.size*100):0,a=t.state==="done"?"check":t.state==="failed"?"alert":t.kind==="up"?"tx-up":"tx-down",i=(l,c,d)=>o("button",{class:"pz-ib",title:c,"aria-label":c,onClick:d,children:o(Q,{n:l})}),s;if(t.state==="failed")s=o("span",{class:"err",children:fg(e,t)});else if(t.state==="done")s=o(R,{children:[o("span",{children:e.b(t.size)}),o("span",{children:n(t.kind==="up"?"penzor.tx.uploaded":"penzor.tx.downloaded",{time:ug(e,t.finishedAt)})})]});else if(t.state==="queued")s=o(R,{children:[o("span",{children:e.b(t.size)}),o("span",{children:n("penzor.tx.queued")})]});else if(t.state==="paused")s=o(R,{children:[o("span",{children:e.b(t.size)}),o("span",{children:n("penzor.tx.paused")})]});else{let l=t.speed>0?(t.size-t.done)/t.speed:null;s=o(R,{children:[o("span",{children:ii(t.done,t.size,e.locale())}),t.speed>0&&o("span",{children:[e.b(t.speed),"/s"]}),l!=null&&l>=5&&o("span",{children:n("penzor.tx.left",{eta:_d(e,l)})})]})}return o("div",{class:`pz-txrow2${t.state==="done"?" is-done":t.state==="failed"?" is-fail":""}`,children:[o(Q,{n:a}),o("span",{class:"nm",title:t.name,children:t.name}),o("span",{class:"acts",children:[(t.state==="active"||t.state==="queued")&&i("pause",n("penzor.tx.pause"),()=>void e.txOp(t.id,"pause")),t.state==="paused"&&i("play",n("penzor.tx.resume"),()=>void e.txOp(t.id,"resume")),(t.state==="active"||t.state==="queued"||t.state==="paused")&&i("x",n("penzor.tx.cancel"),()=>void e.txOp(t.id,"cancel")),t.state==="failed"&&t.error!=="too_large"&&o("button",{class:"pz-link",onClick:()=>void e.txOp(t.id,"retry"),children:n("penzor.tx.retry")}),t.state==="failed"&&i("x",n("penzor.tx.remove"),()=>void e.txOp(t.id,"dismiss")),t.state==="done"&&o("button",{class:"pz-link",onClick:()=>e.locate(t),children:n(t.kind==="down"?"penzor.tx.reveal":"penzor.tx.locate")})]}),(t.state==="active"||t.state==="paused"||t.state==="queued")&&o(Fn,{pct:r}),o("span",{class:"sub",children:s})]})}function bg(e,t){return!!e&&typeof e.registerView=="function"&&typeof e.registerListSource=="function"&&typeof e.openView=="function"&&typeof e.app?.openSpace=="function"&&typeof t.tangu?.cloudInvoke=="function"&&!t.tangu.mobile&&!t.tangu.unitPage}function Sd(e,t=window){if(!bg(e,t))return null;let n=Kc(e);t.tangu.cloudInvoke("penzor:device").then(p=>{let u=p?.name;typeof u=="string"&&u&&n.setDevice(u)}).catch(()=>{});let r=p=>u=>(Be(o(p,{p:n}),u),()=>{Be(null,u)});e.registerView({id:rn.main,title:n.t("penzor.title"),icon:"cloud",workspaceSource:pi,mount:r(bd)}),e.registerView({id:rn.info,title:n.t("penzor.details"),icon:"page",mount:r(wd)});let a=e.listCapabilities?.includes("tree")??!1,i=typeof e.app?.setSpaceProgress=="function"?"hard-drive":"archive",s=()=>({overview:n.t("penzor.overview"),drive:n.t("penzor.drive"),driveIcon:i,sync:n.t("penzor.ledger.sync"),ama:n.t("penzor.ledger.ama"),apps:n.t("penzor.ledger.apps"),exports:n.t("penzor.ledger.exports"),trash:n.t("penzor.trash"),items:p=>n.t("penzor.items",{n:p})}),l=()=>{if(!n.hasSync())return[];let p=n.syncState();return[{key:"sync-home",title:n.t("penzor.sync.title"),icon:"refresh",hint:jc(p,n.locale()),...Mr(p)?{unread:!0}:{}}]};e.registerListSource({id:pi,title:n.t("penzor.title"),search:!0,items:p=>{let u=[...l(),...Bc(n.snap(),s(),n.locale())],h=p?.query?.trim().toLowerCase()??"";if(h)return u.filter(y=>y.kind!=="folder"&&y.title.toLowerCase().includes(h)).map(({parent:y,..._})=>_);if(a)return u;let m=new Map(u.filter(y=>y.kind==="folder").map(y=>[y.key,y.title]));return u.filter(y=>y.kind!=="folder").map(({parent:y,..._})=>({..._,group:y?m.get(y):void 0}))},subscribe:p=>n.subscribe(p),activeKey:()=>no(n.loc()),open:p=>n.go(p.key),actions:[{id:"refresh",label:n.t("penzor.act.refresh"),icon:"refresh",primary:!0,run:()=>{n.refresh(),e.app?.sync?.refresh?.().catch(()=>{})}}],itemMenu:p=>{if(p.key.startsWith("sync:")){let u=p.key.slice(5);return[{id:"open-sync",label:n.t("penzor.act.openSync"),icon:"gear",run:()=>n.openSync()},{id:"copy-name",label:n.t("penzor.act.copyName"),icon:"copy",run:()=>{navigator.clipboard?.writeText(u).then(()=>e.app?.notify?.(n.t("penzor.toast.copied")))}}]}return p.key==="trash"&&(n.snap()?.trash?.length??0)>0?[{id:"empty-trash",label:n.t("penzor.trash.emptyBtn"),icon:"trash",danger:!0,run:()=>{n.go("trash"),n.setConfirmEmpty(!0)}}]:[]}}),e.registerCommand?.({id:"open-penzor",title:()=>n.t("penzor.cmd.open"),keywords:"penzor cloud storage quota sync files trash drive upload \u84EC\u6D32\u4E91 \u4E91\u7A7A\u95F4 \u4E91\u76D8 \u7F51\u76D8 \u4E0A\u4F20 \u989D\u5EA6 \u540C\u6B65 \u56DE\u6536\u7AD9",run:()=>{e.app?.openSpace?.(on)}});let c=p=>{if(!(p.key!==Xc||!p.newValue))try{let u=JSON.parse(p.newValue);u.page==="sync"&&n.hasSync()?e.app?.openSpace?.(on).then(()=>n.go("sync-home")):typeof u.vault=="string"&&u.vault&&n.focusVault(u.vault)}catch{}},d=(()=>{try{return!new URLSearchParams(t.location.search).get("window")}catch{return!1}})();if(d){t.addEventListener("storage",c);try{t.localStorage.setItem(ui,"1")}catch{}}let f=n.dispose;return n.dispose=()=>{if(d){t.removeEventListener("storage",c);try{t.localStorage.removeItem(ui)}catch{}}f()},n}var Cd;if(typeof ctx<"u"){gc(ctx),mc(ctx);let e=Ws(ctx),t=Lc(ctx),n=Sd(ctx);(e||t||n)&&(Cd=()=>{e?.dispose(),t?.dispose(),n?.dispose()})}return Vd(vg);})();
619
1303
  return __fxExtend.dispose;