diff --git a/.gitignore b/.gitignore
index cf7856f..8a4d575 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,7 +27,4 @@ iib.db-wal
CLAUDE.md
.claude/*
-videos/启动&添加文件夹构建索引.mp4
-videos/图像搜索和链接跳转.mp4
-videos/ai智能文件整理.mp4
-videos/skills安装&启动.mp4
+videos/*
diff --git a/change.log.md b/change.log.md
index 6e53808..d96740f 100644
--- a/change.log.md
+++ b/change.log.md
@@ -1,6 +1,29 @@
[跳到中文](#中文)
# English
+## 2026-03-15
+### 📝 Editable Generation Information
+Added the ability to edit image generation prompts and metadata directly in the UI.
+
+**Features:**
+- **Prompt Editor Modal**: Edit positive/negative prompts and generation parameters with a user-friendly interface
+- **Key-Value Editor**: Add custom metadata fields with support for both string and JSON value modes
+- **Smart Caching**: EXIF data is now cached in the database for faster subsequent retrieval
+- **Edit Tracking**: Manually edited prompts are marked and preserved separately from original file metadata
+- **Validation**: Built-in validation for required fields and unique key constraints
+- **Multi-language Support**: Full internationalization for all editing features (English, Chinese, German)
+
+**How to use:**
+1. Click the "Edit" button on any image's generation info panel
+2. Modify positive/negative prompts and other parameters in the modal
+3. Add custom metadata using the key-value editor if needed
+4. Click "Save Prompt" to update the database
+5. Edited prompts are marked and will override original file metadata
+
+**Note:** Edited prompts are stored in the database and won't modify the original image files.
+
+
+
## 2026-02-23
### 🎬 Inline Video Playback
Added inline video playback feature for video items wider than 400px.
@@ -727,6 +750,29 @@ Triggered under the same circumstances as above, there will be a button to updat
# 中文
+## 2026-03-15
+### 📝 可编辑的生成信息
+新增了在界面中直接编辑图片生成提示词和元数据的功能。
+
+**功能特性:**
+- **提示词编辑器模态框**:通过友好的界面编辑正负向提示词和生成参数
+- **键值对编辑器**:添加自定义元数据字段,支持字符串和JSON值模式
+- **智能缓存**:EXIF数据现在会被缓存到数据库中,以便更快地后续检索
+- **编辑标记**:手动编辑的提示词会被标记,并与原始文件元数据分开保存
+- **数据验证**:对必填字段和唯一键约束进行内置验证
+- **多语言支持**:所有编辑功能都完全国际化(英文、中文、德语)
+
+**使用方法:**
+1. 点击任意图片生成信息面板上的"编辑"按钮
+2. 在模态框中修改正负向提示词和其他参数
+3. 如需要,使用键值对编辑器添加自定义元数据
+4. 点击"保存提示词"更新数据库
+5. 编辑过的提示词会被标记,并将覆盖原始文件元数据
+
+**注意:**编辑过的提示词存储在数据库中,不会修改原始图片文件。
+
+
+
## 2026-02-23
### 🎬 视频原地播放功能
为宽度超过 400px 的视频 item 添加了原地播放功能。
diff --git a/docs/imgs/prompt-edit.png b/docs/imgs/prompt-edit.png
new file mode 100644
index 0000000..2cef257
Binary files /dev/null and b/docs/imgs/prompt-edit.png differ
diff --git a/javascript/index.js b/javascript/index.js
index 07b3271..4151686 100644
--- a/javascript/index.js
+++ b/javascript/index.js
@@ -13,8 +13,8 @@ Promise.resolve().then(async () => {
MFrGXJqNrOUPCPqPrQ|]@`+`2h1lBlZnXp*r;rWrkz9{4{B}x-#c-#y-$;-$l-$y-%Q-%n-(i-(x-)i-/!-3*-5B-9V",wan:"#=$0&o.]0F4@5X5b6*628u9p -+b-+(-(_-(.-&h-#%{@wGuWs}s|rJrDlaWTV}V+NAMvKfIgGKFX9a7c,7&]&+%~",bie:"-/A-/;fGe2`#M'M!$!#I",pao:"-/>-+i-'^~o|2w=hA]$[P?.4J4H3d06.M'^%A!S",geng:"-/7-&A{TzHlrh=ZIOlK4IX=X2p&M",shua:"-//-%j",cuo:"-.y-.p-*5wukWkSh!ZKY&WuV4(o$j$'",kei:"-.woU",la:"-.v-%3-$n~L|8[RXFXEWnUEU2R`MOI6DT:T0['o$A",pou:"-.l-'_-&[{]twtO]+]&Z+YGJS/<",tuan:"-.I~!}~}K}HyPy&f7`>[}XIVmGLE;;.:m8t2[,F%v%p",zuan:"-.)XOTt",keng:"-,x-([|t|kvIZCXlVgBF/C",gao:"-,Z-(I-(>wRlpWjNHGxGwGdG>E~E3Dm,)!y!t",lang:"-,V-&J-$~{Jy[r{llgiSeOIOHO;KRHHG4Cp=[3Y,z*%(s",weng:"-,@-#oyxv{kfU!Pd9o'N'&",tao:"-+m-)E-'+-%DwPwMw*r}i/fl`j[oYBWXL,JkGtE?><=) ${x} MFrGXJqNrOUPCPqPrQ|]@`+`2h1lBlZnXp*r;rWrkz9{4{B}x-#c-#y-$;-$l-$y-%Q-%n-(i-(x-)i-/!-3*-5B-9V",wan:"#=$0&o.]0F4@5X5b6*628u9p -+b-+(-(_-(.-&h-#%{@wGuWs}s|rJrDlaWTV}V+NAMvKfIgGKFX9a7c,7&]&+%~",bie:"-/A-/;fGe2`#M'M!$!#I",pao:"-/>-+i-'^~o|2w=hA]$[P?.4J4H3d06.M'^%A!S",geng:"-/7-&A{TzHlrh=ZIOlK4IX=X2p&M",shua:"-//-%j",cuo:"-.y-.p-*5wukWkSh!ZKY&WuV4(o$j$'",kei:"-.woU",la:"-.v-%3-$n~L|8[RXFXEWnUEU2R`MOI6DT:T0['o$A",pou:"-.l-'_-&[{]twtO]+]&Z+YGJS/<",tuan:"-.I~!}~}K}HyPy&f7`>[}XIVmGLE;;.:m8t2[,F%v%p",zuan:"-.)XOTt",keng:"-,x-([|t|kvIZCXlVgBF/C",gao:"-,Z-(I-(>wRlpWjNHGxGwGdG>E~E3Dm,)!y!t",lang:"-,V-&J-$~{Jy[r{llgiSeOIOHO;KRHHG4Cp=[3Y,z*%(s",weng:"-,@-#oyxv{kfU!Pd9o'N'&",tao:"-+m-)E-'+-%DwPwMw*r}i/fl`j[oYBWXL,JkGtE?><=) ${A}ZYZZ]U_6_9d9fYj6j~lWm)mep)rQrbrctvwkxc{y|U}6~?~C~`~m-!Z-*'-+R-/j-0j-3i-4/-4@-5,-5f-6j-6s-7)-9G-9W-9X",tuo:"%U%V&z0L2J4v?{@$F_H6MUTbT~Y'Yc^QdHdQnVq+r`x1{{|;|<-&d-(.-(z-({-)1-)J-)K-*:-*e-*p-+$-+3-.b-/%-/[-0b-3O-4,-6_-8}-9$-9?",zhe:"#'%+%E'P2f2|
}I-*S-+S-0~-2b-5X-8{",cou:"@ThJiK",chuang:"'_,H,L,q{+{E",piao:"$+).1D7a:;
lMi@i$fDf@b1`Y_4XyW6TMMzJ$I:GOD{=#
{let t=0,n=1;for(let i=e.length;i--;)t+=n*ba.indexOf(e.charAt(i)),n*=91;return t},on=(e,t)=>{let n,i,l,p,o;for(n in e)if(e.hasOwnProperty(n))for(i=e[n].match($a),l=0;l
');continue}const J=X[x];T||(T=J.includes("("));const oe=["tag"];T&&oe.push("has-parentheses"),J.length<32&&oe.push("short-tag"),I.push(`${J}`),T&&(T=!J.includes(")"))}return I.join(i.showCommaInInfoPanel?",":" ")}Mt("load",a=>{const g=a.target;g.className==="ant-image-preview-img"&&(r.value=`${g.naturalWidth} x ${g.naturalHeight}`)},{capture:!0});const h=re(()=>{const a=[{name:ie("fileSize"),val:n.file.size}];return r.value&&a.push({name:ie("resolution"),val:r.value}),a}),L=()=>{const a="Negative prompt:",g=C.value.includes(a)?C.value.split(a)[0]:Z.value[0]??"";ze(nt(g.trim()))},j=()=>document.body.requestFullscreen(),U=a=>{ze(typeof a=="object"?JSON.stringify(a,null,4):a)},ae=a=>{a.key.startsWith("Arrow")?(a.stopPropagation(),a.preventDefault(),document.dispatchEvent(new KeyboardEvent("keydown",a))):a.key==="Escape"&&document.fullscreenElement&&document.exitFullscreen()};Mt("dblclick",a=>{var g;((g=a.target)==null?void 0:g.className)==="ant-image-preview-img"&&wt()});const se=re(()=>ee.value||A.value.expanded),ve=De(ot+"contextShowFullPath",!1),V=re(()=>ve.value?n.file.fullpath:n.file.name),te=De(ot+"tagA2ZClassify",!1),Pe=re(()=>{var X;const a=(X=i.conf)==null?void 0:X.all_custom_tags.map(I=>{var x,J;return{char:((x=I.display_name)==null?void 0:x[0])||((J=I.name)==null?void 0:J[0]),...I}}).reduce((I,T)=>{var J;let x="#";if(/[a-z]/i.test(T.char))x=T.char.toUpperCase();else if(/[\u4e00-\u9fa5]/.test(T.char))try{x=((J=/^\[?(\w)/.exec(xa(T.char)+""))==null?void 0:J[1])??"#"}catch(oe){console.log("err",oe)}return x=x.toUpperCase(),I[x]||(I[x]=[]),I[x].push(T),I},{});return Object.entries(a??{}).sort((I,T)=>I[0].charCodeAt(0)-T[0].charCodeAt(0))}),Oe=()=>{wt(),t("contextMenuClick",{key:"tiktokView"},n.file,n.idx)},ke=ue(!1),Ze=async()=>{var a,g;if(!S.value.prompt){be.warning(ie("aiAnalyzeTagsNoPrompt"));return}if(!((g=(a=i.conf)==null?void 0:a.all_custom_tags)!=null&&g.length)){be.warning(ie("aiAnalyzeTagsNoCustomTags"));return}ke.value=!0;try{const X=S.value.prompt,T=`You are a professional AI assistant responsible for analyzing Stable Diffusion prompts and categorizing them into appropriate tags.
+*/let ln=19968,$a=(40896-ln)/2,ct="",Fe=",",Ea=(()=>{let e=[];for(let t=33;t<127;t++)t!=34&&t!=92&&t!=45&&e.push(String.fromCharCode(t));return e.join(ct)})(),Et={a:{yi:"!]#R$!$q(3(p)[*2*g+6+d.C.q0[0w1L2<717l8B8E9?:8;V;[;e;{<)<+.>4??@~A`BbC:CGC^CiDMDjDkF!H/H;JaL?M.M2MoNCN|OgO|P$P)PBPyQ~R%R.S.T;TZYZZ]U_6_9d9fYj6j~lWm)mep)rQrbrctvwkxc{y|U}6~?~C~`~m-!Z-*'-+R-/j-0j-3i-4/-4@-5,-5f-6j-6s-7)-9G-9W-9X",tuo:"%U%V&z0L2J4v?{@$F_H6MUTbT~Y'Yc^QdHdQnVq+r`x1{{|;|<-&d-(.-(z-({-)1-)J-)K-*:-*e-*p-+$-+3-.b-/%-/[-0b-3O-4,-6_-8}-9$-9?",zhe:"#'%+%E'P2f2|
}I-*S-+S-0~-2b-5X-8{",cou:"@ThJiK",chuang:"'_,H,L,q{+{E",piao:"$+).1D7a:;
lMi@i$fDf@b1`Y_4XyW6TMMzJ$I:GOD{=#
{let t=0,n=1;for(let i=e.length;i--;)t+=n*Ea.indexOf(e.charAt(i)),n*=91;return t},cn=(e,t)=>{let n,i,l,m,o;for(n in e)if(e.hasOwnProperty(n))for(i=e[n].match(wa),l=0;l
');continue}const J=R[A];E||(E=J.includes("("));const b=["tag"];E&&b.push("has-parentheses"),J.length<32&&b.push("short-tag"),j.push(`${J}`),E&&(E=!J.includes(")"))}return j.join(i.showCommaInInfoPanel?",":" ")}Ct("load",a=>{const d=a.target;d.className==="ant-image-preview-img"&&(r.value=`${d.naturalWidth} x ${d.naturalHeight}`)},{capture:!0});const v=le(()=>{const a=[{name:se("fileSize"),val:n.file.size}];return r.value&&a.push({name:se("resolution"),val:r.value}),a}),T=()=>{const a="Negative prompt:",d=S.value.includes(a)?S.value.split(a)[0]:Q.value[0]??"";De(at(d.trim()))},P=()=>document.body.requestFullscreen(),W=a=>{De(typeof a=="object"?JSON.stringify(a,null,4):a)},oe=a=>{a.key.startsWith("Arrow")?(a.stopPropagation(),a.preventDefault(),document.dispatchEvent(new KeyboardEvent("keydown",a))):a.key==="Escape"&&document.fullscreenElement&&document.exitFullscreen()};Ct("dblclick",a=>{var d;((d=a.target)==null?void 0:d.className)==="ant-image-preview-img"&&Mt()});const re=le(()=>te.value||C.value.expanded),ve=Ie(lt+"contextShowFullPath",!1),Y=le(()=>ve.value?n.file.fullpath:n.file.name),ne=Ie(lt+"tagA2ZClassify",!1),Re=le(()=>{var R;const a=(R=i.conf)==null?void 0:R.all_custom_tags.map(j=>{var A,J;return{char:((A=j.display_name)==null?void 0:A[0])||((J=j.name)==null?void 0:J[0]),...j}}).reduce((j,E)=>{var J;let A="#";if(/[a-z]/i.test(E.char))A=E.char.toUpperCase();else if(/[\u4e00-\u9fa5]/.test(E.char))try{A=((J=/^\[?(\w)/.exec(Sa(E.char)+""))==null?void 0:J[1])??"#"}catch(b){console.log("err",b)}return A=A.toUpperCase(),j[A]||(j[A]=[]),j[A].push(E),j},{});return Object.entries(a??{}).sort((j,E)=>j[0].charCodeAt(0)-E[0].charCodeAt(0))}),Oe=()=>{Mt(),t("contextMenuClick",{key:"tiktokView"},n.file,n.idx)},Me=de(!1),et=async()=>{var a,d;if(!x.value.prompt){$e.warning(se("aiAnalyzeTagsNoPrompt"));return}if(!((d=(a=i.conf)==null?void 0:a.all_custom_tags)!=null&&d.length)){$e.warning(se("aiAnalyzeTagsNoCustomTags"));return}Me.value=!0;try{const R=x.value.prompt,E=`You are a professional AI assistant responsible for analyzing Stable Diffusion prompts and categorizing them into appropriate tags.
Your task is:
1. Analyze the given prompt
@@ -14,6 +14,6 @@ Your task is:
4. If no tags match, return an empty string
5. Tag matching should be based on semantic similarity and thematic relevance
-Available tags: ${i.conf.all_custom_tags.map(E=>E.name).join(", ")}
+Available tags: ${i.conf.all_custom_tags.map(H=>H.name).join(", ")}
-Please return only tag names, do not include any other content.`,J=(await kn({messages:[{role:"system",content:T},{role:"user",content:`Please analyze this prompt and return matching tags: ${X}`}],temperature:.3,max_tokens:200})).choices[0].message.content.trim();if(!J){be.info(ie("aiAnalyzeTagsNoMatchedTags"));return}const oe=J.split(",").map(E=>E.trim()).filter(E=>E),b=i.conf.all_custom_tags.filter(E=>oe.some(le=>E.name.toLowerCase()===le.toLowerCase()||E.name.toLowerCase().includes(le.toLowerCase())||le.toLowerCase().includes(E.name.toLowerCase()))),ye=new Set(o.value.map(E=>E.id)),R=b.filter(E=>!ye.has(E.id));if(R.length===0){b.length>0?be.info(ie("aiAnalyzeTagsAllTagsAlreadyAdded")):be.info(ie("aiAnalyzeTagsNoValidTags"));return}for(const E of R)t("contextMenuClick",{key:`toggle-tag-${E.id}`},n.file,n.idx);be.success(ie("aiAnalyzeTagsSuccess",[R.length.toString(),R.map(E=>E.name).join(", ")]))}catch(X){console.error("AI分析标签失败:",X),be.error(ie("aiAnalyzeTagsFailed"))}finally{ke.value=!1}};return(a,g)=>{var u,f,M;const X=jn,I=We,T=xn,x=Mn,J=Sn,oe=Tn,b=We,ye=Cn,R=Ln,E=An,le=zn,he=Dn,Le=Nn,Ae=In;return _(),O("div",{ref_key:"el",ref:p,class:tt(["full-screen-menu",{"unset-size":!v(A).expanded,lr:v(ee),"always-on":v(fe),"mouse-in":Ce.value}]),onWheelCapture:g[13]||(g[13]=kt(()=>{},["stop"])),onKeydownCapture:ae},[v(ee)?(_(),O("div",Ma)):H("",!0),$("div",Sa,[$("div",Ta,[v(ee)?H("",!0):(_(),O("div",{key:0,ref_key:"dragHandle",ref:y,class:"icon",style:{cursor:"grab"},title:v(ie)("dragToMovePanel")},[m(v(Yn))],8,Ca)),v(ee)?H("",!0):(_(),O("div",{key:1,class:"icon",style:{cursor:"pointer"},onClick:g[0]||(g[0]=c=>v(A).expanded=!v(A).expanded),title:v(ie)("clickToToggleMaximizeMinimize")},[se.value?(_(),de(v($n),{key:0})):(_(),de(v(En),{key:1}))],8,La)),$("div",{style:{display:"flex","flex-direction":"column","align-items":"center",cursor:"grab"},class:"icon",title:v(ie)("fullscreenview"),onClick:j},[$("img",{src:v(ri),style:{width:"21px",height:"21px","padding-bottom":"2px"},alt:""},null,8,za)],8,Aa),m(X,{"get-popup-container":je},{overlay:k(()=>[m(Pn,{file:a.file,idx:a.idx,"selected-tag":o.value,onContextMenuClick:g[1]||(g[1]=(c,z,F)=>t("contextMenuClick",c,z,F))},null,8,["file","idx","selected-tag"])]),default:k(()=>[v(A).expanded?H("",!0):(_(),O("div",Da,[m(v(Ot))]))]),_:1}),se.value?(_(),O("div",Na)):H("",!0),se.value?(_(),O("div",Ia,[m(X,{trigger:["hover"],"get-popup-container":je},{overlay:k(()=>[m(oe,{onClick:g[2]||(g[2]=c=>t("contextMenuClick",c,a.file,a.idx))},{default:k(()=>{var c;return[((c=v(i).conf)==null?void 0:c.launch_mode)!=="server"?(_(),O(Y,{key:0},[m(T,{key:"send2txt2img"},{default:k(()=>[N(w(a.$t("sendToTxt2img")),1)]),_:1}),m(T,{key:"send2img2img"},{default:k(()=>[N(w(a.$t("sendToImg2img")),1)]),_:1}),m(T,{key:"send2inpaint"},{default:k(()=>[N(w(a.$t("sendToInpaint")),1)]),_:1}),m(T,{key:"send2extras"},{default:k(()=>[N(w(a.$t("sendToExtraFeatures")),1)]),_:1}),m(x,{key:"sendToThirdPartyExtension",title:a.$t("sendToThirdPartyExtension")},{default:k(()=>[m(T,{key:"send2controlnet-txt2img"},{default:k(()=>[N("ControlNet - "+w(a.$t("t2i")),1)]),_:1}),m(T,{key:"send2controlnet-img2img"},{default:k(()=>[N("ControlNet - "+w(a.$t("i2i")),1)]),_:1}),m(T,{key:"send2outpaint"},{default:k(()=>[N("openOutpaint")]),_:1})]),_:1},8,["title"])],64)):H("",!0),m(T,{key:"send2BatchDownload"},{default:k(()=>[N(w(a.$t("sendToBatchDownload")),1)]),_:1}),m(x,{key:"copy2target",title:a.$t("copyTo")},{default:k(()=>[(_(!0),O(Y,null,ge(v(i).quickMovePaths,z=>(_(),de(T,{key:`copy-to-${z.dir}`},{default:k(()=>[N(w(z.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),m(x,{key:"move2target",title:a.$t("moveTo")},{default:k(()=>[(_(!0),O(Y,null,ge(v(i).quickMovePaths,z=>(_(),de(T,{key:`move-to-${z.dir}`},{default:k(()=>[N(w(z.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),m(J),m(T,{key:"deleteFiles"},{default:k(()=>[N(w(a.$t("deleteSelected")),1)]),_:1}),m(T,{key:"openWithDefaultApp"},{default:k(()=>[N(w(a.$t("openWithDefaultApp")),1)]),_:1}),m(T,{key:"previewInNewWindow"},{default:k(()=>[N(w(a.$t("previewInNewWindow")),1)]),_:1}),m(T,{key:"copyPreviewUrl"},{default:k(()=>[N(w(a.$t("copySourceFilePreviewLink")),1)]),_:1}),m(T,{key:"copyFilePath"},{default:k(()=>[N(w(a.$t("copyFilePath")),1)]),_:1}),m(J),m(T,{key:"tiktokView",onClick:Oe},{default:k(()=>[N(w(a.$t("tiktokView")),1)]),_:1})]}),_:1})]),default:k(()=>[m(I,null,{default:k(()=>[N(w(v(ie)("openContextMenu")),1)]),_:1})]),_:1}),m(b,{onClick:g[3]||(g[3]=c=>t("contextMenuClick",{key:"download"},n.file,n.idx))},{default:k(()=>[N(w(a.$t("download")),1)]),_:1}),C.value?(_(),de(I,{key:0,onClick:g[4]||(g[4]=c=>v(ze)(C.value))},{default:k(()=>[N(w(a.$t("copyPrompt")),1)]),_:1})):H("",!0),C.value?(_(),de(I,{key:1,onClick:L},{default:k(()=>[N(w(a.$t("copyPositivePrompt")),1)]),_:1})):H("",!0),C.value&&((f=(u=v(i).conf)==null?void 0:u.all_custom_tags)!=null&&f.length)?(_(),de(I,{key:2,onClick:Ze,type:"primary",loading:ke.value},{default:k(()=>[N(w(a.$t("aiAnalyzeTags")),1)]),_:1},8,["loading"])):H("",!0),m(I,{onClick:Oe,onTouchstart:kt(Oe,["prevent"]),type:"default"},{default:k(()=>[N(w(a.$t("tiktokView")),1)]),_:1},8,["onTouchstart"])])):H("",!0)]),se.value?(_(),O("div",ja,[$("div",Pa,[$("span",Ba,[$("span",Ra,w(a.$t("fileName")),1),$("span",{class:"value",title:V.value,onDblclick:g[5]||(g[5]=c=>v(ze)(V.value))},w(V.value),41,Ua),$("span",{style:{margin:"0 8px",cursor:"pointer"},title:"Click to expand full path",onClick:g[6]||(g[6]=c=>ve.value=!v(ve))},[m(v(Ot))])]),(_(!0),O(Y,null,ge(h.value,c=>(_(),O("span",{class:"info-tag",key:c.name},[$("span",Ha,w(c.name),1),$("span",{class:"value",title:c.val,onDblclick:z=>v(ze)(c.val)},w(c.val),41,Wa)]))),128))]),(M=v(i).conf)!=null&&M.all_custom_tags?(_(),O("div",Fa,[$("div",{class:"sort-tag-switch",onClick:g[7]||(g[7]=c=>te.value=!v(te))},[v(te)?(_(),de(v(wn),{key:1})):(_(),de(v(oi),{key:0}))]),$("div",{class:"tag",onClick:g[8]||(g[8]=(...c)=>v(xt)&&v(xt)(...c)),style:et({"--tag-color":"var(--zp-luminous)"})},"+ "+w(a.$t("add")),5),v(te)?(_(!0),O(Y,{key:0},ge(Pe.value,([c,z])=>(_(),O("div",{key:c,class:"tag-alpha-item"},[$("h4",Xa,w(c)+" : ",1),$("div",null,[(_(!0),O(Y,null,ge(z,F=>(_(),O("div",{class:tt(["tag",{selected:o.value.some(Be=>Be.id===F.id)}]),onClick:Be=>t("contextMenuClick",{key:`toggle-tag-${F.id}`},a.file,a.idx),key:F.id,style:et({"--tag-color":v(l).getColor(F)})},w(F.name),15,qa))),128))])]))),128)):(_(!0),O(Y,{key:1},ge(v(i).conf.all_custom_tags,c=>(_(),O("div",{class:tt(["tag",{selected:o.value.some(z=>z.id===c.id)}]),onClick:z=>t("contextMenuClick",{key:`toggle-tag-${c.id}`},a.file,a.idx),key:c.id,style:et({"--tag-color":v(l).getColor(c)})},w(c.name),15,Ja))),128))])):H("",!0),$("div",Ga,[$("div",Va,[N(w(a.$t("experimentalLRLayout"))+": ",1),m(ye,{checked:v(ee),"onUpdate:checked":g[9]||(g[9]=c=>Re(ee)?ee.value=c:null),size:"small"},null,8,["checked"])]),v(ee)?(_(),O(Y,{key:0},[$("div",Ya,[N(w(a.$t("width"))+": ",1),m(R,{value:v(ne),"onUpdate:value":g[10]||(g[10]=c=>Re(ne)?ne.value=c:null),style:{width:"64px"},step:16,min:128,max:1024},null,8,["value"])]),m(E,{title:a.$t("alwaysOnTooltipInfo")},{default:k(()=>[$("div",Ka,[N(w(a.$t("alwaysOn"))+": ",1),m(ye,{checked:v(fe),"onUpdate:checked":g[11]||(g[11]=c=>Re(fe)?fe.value=c:null),size:"small"},null,8,["checked"])])]),_:1},8,["title"])],64)):H("",!0)]),m(Ae,{activeKey:v(q),"onUpdate:activeKey":g[12]||(g[12]=c=>Re(q)?q.value=c:null)},{default:k(()=>[m(le,{key:"structedData",tab:a.$t("structuredData")},{default:k(()=>[$("div",null,[S.value.prompt?(_(),O(Y,{key:0},[Za,Qa,$("code",{innerHTML:s(S.value.prompt??"")},null,8,es)],64)):H("",!0),S.value.negativePrompt?(_(),O(Y,{key:1},[ts,ns,$("code",{innerHTML:s(S.value.negativePrompt??"")},null,8,is)],64)):H("",!0)]),Object.keys(P.value).length?(_(),O(Y,{key:0},[as,ss,$("table",null,[(_(!0),O(Y,null,ge(P.value,(c,z)=>(_(),O("tr",{key:z,class:"gen-info-frag"},[$("td",os,w(z),1),typeof c=="object"?(_(),O("td",{key:0,style:{cursor:"pointer"},onDblclick:F=>U(c)},[$("code",null,w(c),1)],40,rs)):(_(),O("td",{key:1,style:{cursor:"pointer"},onDblclick:F=>U(v(nt)(c))},w(v(nt)(c)),41,ls))]))),128))])],64)):H("",!0),W.value&&Object.keys(W.value).length?(_(),O(Y,{key:1},[cs,us,$("table",ds,[(_(!0),O(Y,null,ge(W.value,(c,z)=>(_(),O("tr",{key:z,class:"gen-info-frag"},[$("td",gs,w(z),1),$("td",{style:{cursor:"pointer"},onDblclick:F=>U(c)},[$("code",hs,w(typeof c=="string"?c:JSON.stringify(c,null,2)),1)],40,fs)]))),128))])],64)):H("",!0)]),_:1},8,["tab"]),m(le,{key:"sourceText",tab:a.$t("sourceText")},{default:k(()=>[$("code",null,w(C.value),1)]),_:1},8,["tab"]),m(le,{key:"exif",tab:"EXIF"},{default:k(()=>[m(Le,{spinning:K.value},{default:k(()=>[D.value&&Object.keys(D.value).length?(_(),O("div",ps,[m(pa,{data:D.value},null,8,["data"])])):K.value?H("",!0):(_(),O("div",vs,[m(he,{description:"No EXIF data available"})]))]),_:1},8,["spinning"])]),_:1})]),_:1},8,["activeKey"])])):H("",!0)]),v(A).expanded&&!v(ee)?(_(),O("div",{key:1,class:"mouse-sensor",ref_key:"resizeHandle",ref:ce,title:v(ie)("dragToResizePanel")},[m(v(qn))],8,_s)):H("",!0)],34)}}});const Cs=ct(ms,[["__scopeId","data-v-006d4d7c"]]),ys={key:0,class:"float-panel"},bs={key:0,class:"select-actions"},$s={key:1},Es=lt({__name:"MultiSelectKeep",props:{show:{type:Boolean}},emits:["selectAll","reverseSelect","clearAllSelected"],setup(e,{emit:t}){const n=Je(),i=()=>{t("clearAllSelected"),n.keepMultiSelect=!1},l=()=>{n.keepMultiSelect=!0};return(p,o)=>{const r=We;return p.show?(_(),O("div",ys,[v(n).keepMultiSelect?(_(),O("div",bs,[m(r,{size:"small",onClick:o[0]||(o[0]=d=>t("selectAll"))},{default:k(()=>[N(w(p.$t("select-all")),1)]),_:1}),m(r,{size:"small",onClick:o[1]||(o[1]=d=>t("reverseSelect"))},{default:k(()=>[N(w(p.$t("rerverse-select")),1)]),_:1}),m(r,{size:"small",onClick:o[2]||(o[2]=d=>t("clearAllSelected"))},{default:k(()=>[N(w(p.$t("clear-all-selected")),1)]),_:1}),m(r,{size:"small",onClick:i},{default:k(()=>[N(w(p.$t("exit")),1)]),_:1})])):(_(),O("div",$s,[m(r,{size:"small",type:"primary",onClick:l},{default:k(()=>[N(w(p.$t("keep-multi-selected")),1)]),_:1})]))])):H("",!0)}}});const Ls=ct(Es,[["__scopeId","data-v-b04c3508"]]);export{Ss as L,Ls as M,Ts as R,Cs as f};
+Please return only tag names, do not include any other content.`,J=(await Mn({messages:[{role:"system",content:E},{role:"user",content:`Please analyze this prompt and return matching tags: ${R}`}],temperature:.3,max_tokens:200})).choices[0].message.content.trim();if(!J){$e.info(se("aiAnalyzeTagsNoMatchedTags"));return}const b=J.split(",").map(H=>H.trim()).filter(H=>H),be=i.conf.all_custom_tags.filter(H=>b.some(ie=>H.name.toLowerCase()===ie.toLowerCase()||H.name.toLowerCase().includes(ie.toLowerCase())||ie.toLowerCase().includes(H.name.toLowerCase()))),F=new Set(o.value.map(H=>H.id)),z=be.filter(H=>!F.has(H.id));if(z.length===0){be.length>0?$e.info(se("aiAnalyzeTagsAllTagsAlreadyAdded")):$e.info(se("aiAnalyzeTagsNoValidTags"));return}for(const H of z)t("contextMenuClick",{key:`toggle-tag-${H.id}`},n.file,n.idx);$e.success(se("aiAnalyzeTagsSuccess",[z.length.toString(),z.map(H=>H.name).join(", ")]))}catch(R){console.error("AI分析标签失败:",R),$e.error(se("aiAnalyzeTagsFailed"))}finally{Me.value=!1}},ye=async()=>{var d;await xn(n.file);const a=(d=n.file)==null?void 0:d.fullpath;a&&(u.tasks.forEach(R=>R.cancel()),u.pushAction(()=>Ot(a)).res.then(R=>{S.value=R}))};return(a,d)=>{var f,M,N;const R=Bn,j=Xe,E=Sn,A=Tn,J=Cn,b=Ln,be=Xe,F=An,z=zn,H=Dn,ie=Nn,Ae=In,ze=Pn,c=jn;return y(),O("div",{ref_key:"el",ref:m,class:it(["full-screen-menu",{"unset-size":!p(C).expanded,lr:p(te),"always-on":p(he),"mouse-in":Le.value}]),onWheelCapture:d[13]||(d[13]=St(()=>{},["stop"])),onKeydownCapture:oe},[p(te)?(y(),O("div",Ta)):X("",!0),_("div",Ca,[_("div",La,[p(te)?X("",!0):(y(),O("div",{key:0,ref_key:"dragHandle",ref:$,class:"icon",style:{cursor:"grab"},title:p(se)("dragToMovePanel")},[h(p(Zn))],8,Aa)),p(te)?X("",!0):(y(),O("div",{key:1,class:"icon",style:{cursor:"pointer"},onClick:d[0]||(d[0]=g=>p(C).expanded=!p(C).expanded),title:p(se)("clickToToggleMaximizeMinimize")},[re.value?(y(),ge(p(En),{key:0})):(y(),ge(p(wn),{key:1}))],8,za)),_("div",{style:{display:"flex","flex-direction":"column","align-items":"center",cursor:"grab"},class:"icon",title:p(se)("fullscreenview"),onClick:P},[_("img",{src:p(ci),style:{width:"21px",height:"21px","padding-bottom":"2px"},alt:""},null,8,Na)],8,Da),h(R,{"get-popup-container":Be},{overlay:k(()=>[h(Rn,{file:a.file,idx:a.idx,"selected-tag":o.value,onContextMenuClick:d[1]||(d[1]=(g,I,ce)=>t("contextMenuClick",g,I,ce))},null,8,["file","idx","selected-tag"])]),default:k(()=>[p(C).expanded?X("",!0):(y(),O("div",Ia,[h(p(xt))]))]),_:1}),re.value?(y(),O("div",Pa)):X("",!0),re.value?(y(),O("div",ja,[h(R,{trigger:["hover"],"get-popup-container":Be},{overlay:k(()=>[h(b,{onClick:d[2]||(d[2]=g=>t("contextMenuClick",g,a.file,a.idx))},{default:k(()=>{var g;return[((g=p(i).conf)==null?void 0:g.launch_mode)!=="server"?(y(),O(K,{key:0},[h(E,{key:"send2txt2img"},{default:k(()=>[D(w(a.$t("sendToTxt2img")),1)]),_:1}),h(E,{key:"send2img2img"},{default:k(()=>[D(w(a.$t("sendToImg2img")),1)]),_:1}),h(E,{key:"send2inpaint"},{default:k(()=>[D(w(a.$t("sendToInpaint")),1)]),_:1}),h(E,{key:"send2extras"},{default:k(()=>[D(w(a.$t("sendToExtraFeatures")),1)]),_:1}),h(A,{key:"sendToThirdPartyExtension",title:a.$t("sendToThirdPartyExtension")},{default:k(()=>[h(E,{key:"send2controlnet-txt2img"},{default:k(()=>[D("ControlNet - "+w(a.$t("t2i")),1)]),_:1}),h(E,{key:"send2controlnet-img2img"},{default:k(()=>[D("ControlNet - "+w(a.$t("i2i")),1)]),_:1}),h(E,{key:"send2outpaint"},{default:k(()=>[D("openOutpaint")]),_:1})]),_:1},8,["title"])],64)):X("",!0),h(E,{key:"send2BatchDownload"},{default:k(()=>[D(w(a.$t("sendToBatchDownload")),1)]),_:1}),h(A,{key:"copy2target",title:a.$t("copyTo")},{default:k(()=>[(y(!0),O(K,null,fe(p(i).quickMovePaths,I=>(y(),ge(E,{key:`copy-to-${I.dir}`},{default:k(()=>[D(w(I.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),h(A,{key:"move2target",title:a.$t("moveTo")},{default:k(()=>[(y(!0),O(K,null,fe(p(i).quickMovePaths,I=>(y(),ge(E,{key:`move-to-${I.dir}`},{default:k(()=>[D(w(I.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),h(J),h(E,{key:"deleteFiles"},{default:k(()=>[D(w(a.$t("deleteSelected")),1)]),_:1}),h(E,{key:"openWithDefaultApp"},{default:k(()=>[D(w(a.$t("openWithDefaultApp")),1)]),_:1}),h(E,{key:"previewInNewWindow"},{default:k(()=>[D(w(a.$t("previewInNewWindow")),1)]),_:1}),h(E,{key:"copyPreviewUrl"},{default:k(()=>[D(w(a.$t("copySourceFilePreviewLink")),1)]),_:1}),h(E,{key:"copyFilePath"},{default:k(()=>[D(w(a.$t("copyFilePath")),1)]),_:1}),h(J),h(E,{key:"tiktokView",onClick:Oe},{default:k(()=>[D(w(a.$t("tiktokView")),1)]),_:1})]}),_:1})]),default:k(()=>[h(j,null,{default:k(()=>[D(w(p(se)("openContextMenu")),1)]),_:1})]),_:1}),h(be,{onClick:d[3]||(d[3]=g=>t("contextMenuClick",{key:"download"},n.file,n.idx))},{default:k(()=>[D(w(a.$t("download")),1)]),_:1}),S.value?(y(),ge(j,{key:0,onClick:d[4]||(d[4]=g=>p(De)(S.value))},{default:k(()=>[D(w(a.$t("copyPrompt")),1)]),_:1})):X("",!0),S.value?(y(),ge(j,{key:1,onClick:T},{default:k(()=>[D(w(a.$t("copyPositivePrompt")),1)]),_:1})):X("",!0),S.value&&((M=(f=p(i).conf)==null?void 0:f.all_custom_tags)!=null&&M.length)?(y(),ge(j,{key:2,onClick:et,loading:Me.value},{default:k(()=>[D(w(a.$t("aiAnalyzeTags")),1)]),_:1},8,["loading"])):X("",!0),h(j,{onClick:Oe,onTouchstart:St(Oe,["prevent"]),type:"default"},{default:k(()=>[D(w(a.$t("tiktokView")),1)]),_:1},8,["onTouchstart"]),D(),h(j,{onClick:ye},{icon:k(()=>[h(p(Ne))]),default:k(()=>[D(" "+w(a.$t("editPrompt")),1)]),_:1})])):X("",!0)]),re.value?(y(),O("div",Ba,[_("div",Ra,[_("span",Ua,[_("span",Ha,w(a.$t("fileName")),1),_("span",{class:"value",title:Y.value,onDblclick:d[5]||(d[5]=g=>p(De)(Y.value))},w(Y.value),41,Wa),_("span",{style:{margin:"0 8px",cursor:"pointer"},title:"Click to expand full path",onClick:d[6]||(d[6]=g=>ve.value=!p(ve))},[h(p(xt))])]),(y(!0),O(K,null,fe(v.value,g=>(y(),O("span",{class:"info-tag",key:g.name},[_("span",Fa,w(g.name),1),_("span",{class:"value",title:g.val,onDblclick:I=>p(De)(g.val)},w(g.val),41,Xa)]))),128))]),(N=p(i).conf)!=null&&N.all_custom_tags?(y(),O("div",qa,[_("div",{class:"sort-tag-switch",onClick:d[7]||(d[7]=g=>ne.value=!p(ne))},[p(ne)?(y(),ge(p(kn),{key:1})):(y(),ge(p(li),{key:0}))]),_("div",{class:"tag",onClick:d[8]||(d[8]=(...g)=>p(Tt)&&p(Tt)(...g)),style:nt({"--tag-color":"var(--zp-luminous)"})},"+ "+w(a.$t("add")),5),p(ne)?(y(!0),O(K,{key:0},fe(Re.value,([g,I])=>(y(),O("div",{key:g,class:"tag-alpha-item"},[_("h4",Ja,w(g)+" : ",1),_("div",null,[(y(!0),O(K,null,fe(I,ce=>(y(),O("div",{class:it(["tag",{selected:o.value.some(Ue=>Ue.id===ce.id)}]),onClick:Ue=>t("contextMenuClick",{key:`toggle-tag-${ce.id}`},a.file,a.idx),key:ce.id,style:nt({"--tag-color":p(l).getColor(ce)})},w(ce.name),15,Ga))),128))])]))),128)):(y(!0),O(K,{key:1},fe(p(i).conf.all_custom_tags,g=>(y(),O("div",{class:it(["tag",{selected:o.value.some(I=>I.id===g.id)}]),onClick:I=>t("contextMenuClick",{key:`toggle-tag-${g.id}`},a.file,a.idx),key:g.id,style:nt({"--tag-color":p(l).getColor(g)})},w(g.name),15,Va))),128))])):X("",!0),_("div",Ya,[_("div",Ka,[D(w(a.$t("experimentalLRLayout"))+": ",1),h(F,{checked:p(te),"onUpdate:checked":d[9]||(d[9]=g=>He(te)?te.value=g:null),size:"small"},null,8,["checked"])]),p(te)?(y(),O(K,{key:0},[_("div",Za,[D(w(a.$t("width"))+": ",1),h(z,{value:p(ae),"onUpdate:value":d[10]||(d[10]=g=>He(ae)?ae.value=g:null),style:{width:"64px"},step:16,min:128,max:1024},null,8,["value"])]),h(H,{title:a.$t("alwaysOnTooltipInfo")},{default:k(()=>[_("div",Qa,[D(w(a.$t("alwaysOn"))+": ",1),h(F,{checked:p(he),"onUpdate:checked":d[11]||(d[11]=g=>He(he)?he.value=g:null),size:"small"},null,8,["checked"])])]),_:1},8,["title"])],64)):X("",!0)]),h(c,{activeKey:p(G),"onUpdate:activeKey":d[12]||(d[12]=g=>He(G)?G.value=g:null)},{default:k(()=>[h(ie,{key:"structedData",tab:a.$t("structuredData")},{default:k(()=>[_("div",null,[x.value.prompt?(y(),O(K,{key:0},[es,_("div",ts,[ns,_("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[h(p(Ne))],8,is)]),_("code",{innerHTML:s(x.value.prompt??"")},null,8,as)],64)):X("",!0),x.value.negativePrompt?(y(),O(K,{key:1},[ss,_("div",os,[rs,_("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[h(p(Ne))],8,ls)]),_("code",{innerHTML:s(x.value.negativePrompt??"")},null,8,cs)],64)):X("",!0)]),Object.keys(B.value).length?(y(),O(K,{key:0},[us,_("div",ds,[gs,_("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[h(p(Ne))],8,fs)]),_("table",null,[(y(!0),O(K,null,fe(B.value,(g,I)=>(y(),O("tr",{key:I,class:"gen-info-frag"},[_("td",hs,w(I),1),typeof g=="object"?(y(),O("td",{key:0,style:{cursor:"pointer"},onDblclick:ce=>W(g)},[_("code",null,w(g),1)],40,ps)):(y(),O("td",{key:1,style:{cursor:"pointer"},onDblclick:ce=>W(p(at)(g))},w(p(at)(g)),41,vs))]))),128))])],64)):X("",!0),q.value&&Object.keys(q.value).length?(y(),O(K,{key:1},[_s,_("div",ms,[ys,_("button",{class:"edit-section-btn",onClick:ye,title:a.$t("editPrompt")},[h(p(Ne))],8,bs)]),_("table",$s,[(y(!0),O(K,null,fe(q.value,(g,I)=>(y(),O("tr",{key:I,class:"gen-info-frag"},[_("td",Es,w(I),1),_("td",{style:{cursor:"pointer"},onDblclick:ce=>W(g)},[_("code",ks,w(typeof g=="string"?g:JSON.stringify(g,null,2)),1)],40,ws)]))),128))])],64)):X("",!0)]),_:1},8,["tab"]),h(ie,{key:"sourceText",tab:a.$t("sourceText")},{default:k(()=>[_("code",null,w(S.value),1)]),_:1},8,["tab"]),h(ie,{key:"exif",tab:"EXIF"},{default:k(()=>[h(ze,{spinning:Z.value},{default:k(()=>[L.value&&Object.keys(L.value).length?(y(),O("div",Os,[h(_a,{data:L.value},null,8,["data"])])):Z.value?X("",!0):(y(),O("div",Ms,[h(Ae,{description:"No EXIF data available"})]))]),_:1},8,["spinning"])]),_:1})]),_:1},8,["activeKey"])])):X("",!0)]),p(C).expanded&&!p(te)?(y(),O("div",{key:1,class:"mouse-sensor",ref_key:"resizeHandle",ref:ue,title:p(se)("dragToResizePanel")},[h(p(Gn))],8,xs)):X("",!0)],34)}}});const Bs=dt(Ss,[["__scopeId","data-v-77ce3e37"]]),Ts={key:0,class:"float-panel"},Cs={key:0,class:"select-actions"},Ls={key:1},As=ut({__name:"MultiSelectKeep",props:{show:{type:Boolean}},emits:["selectAll","reverseSelect","clearAllSelected"],setup(e,{emit:t}){const n=Ve(),i=()=>{t("clearAllSelected"),n.keepMultiSelect=!1},l=()=>{n.keepMultiSelect=!0};return(m,o)=>{const r=Xe;return m.show?(y(),O("div",Ts,[p(n).keepMultiSelect?(y(),O("div",Cs,[h(r,{size:"small",onClick:o[0]||(o[0]=u=>t("selectAll"))},{default:k(()=>[D(w(m.$t("select-all")),1)]),_:1}),h(r,{size:"small",onClick:o[1]||(o[1]=u=>t("reverseSelect"))},{default:k(()=>[D(w(m.$t("rerverse-select")),1)]),_:1}),h(r,{size:"small",onClick:o[2]||(o[2]=u=>t("clearAllSelected"))},{default:k(()=>[D(w(m.$t("clear-all-selected")),1)]),_:1}),h(r,{size:"small",onClick:i},{default:k(()=>[D(w(m.$t("exit")),1)]),_:1})])):(y(),O("div",Ls,[h(r,{size:"small",type:"primary",onClick:l},{default:k(()=>[D(w(m.$t("keep-multi-selected")),1)]),_:1})]))])):X("",!0)}}});const Rs=dt(As,[["__scopeId","data-v-b04c3508"]]);export{Ps as L,Rs as M,js as R,Bs as f};
diff --git a/vue/dist/assets/SubstrSearch-7b723b85.js b/vue/dist/assets/SubstrSearch-7b723b85.js
deleted file mode 100644
index 792df2d..0000000
--- a/vue/dist/assets/SubstrSearch-7b723b85.js
+++ /dev/null
@@ -1 +0,0 @@
-import{c as a,A as Ee,d as Pe,bm as He,aC as Ge,r as w,v as Ke,bq as se,s as Le,bs as je,bt as qe,x as Ne,W as Je,X as We,br as ne,bu as Qe,p as Xe,o as p,j as z,C as t,E as e,k as d,l as o,t as i,B as _,m as g,G,bC as Ze,V as U,F as ie,H as oe,I as Ye,U as et,Z as re,a3 as ue,av as tt,a2 as at,bD as lt,a0 as st,by as nt,a1 as it,a8 as ot,aw as rt,ax as ut,bE as dt,n as pt}from"./index-f2db319b.js";/* empty css *//* empty css */import{s as ct,F as ft}from"./FileItem-72718f68.js";import{M as vt,L as gt,R as mt,f as _t}from"./MultiSelectKeep-a11efe88.js";import{c as ht,u as yt}from"./hook-ed129d88.js";import{g as bt,o as kt}from"./index-0d856f16.js";import{f as F,H as de,T as wt,_ as St,a as Ct}from"./TipsCarousel-ef6a594c.js";import"./index-29e38a15.js";import"./shortcut-869fab50.js";import"./_isIterateeCall-dd643bcf.js";var xt={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M952 474H829.8C812.5 327.6 696.4 211.5 550 194.2V72c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v122.2C327.6 211.5 211.5 327.6 194.2 474H72c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h122.2C211.5 696.4 327.6 812.5 474 829.8V952c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V829.8C696.4 812.5 812.5 696.4 829.8 550H952c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM512 756c-134.8 0-244-109.2-244-244s109.2-244 244-244 244 109.2 244 244-109.2 244-244 244z"}},{tag:"path",attrs:{d:"M512 392c-32.1 0-62.1 12.4-84.8 35.2-22.7 22.7-35.2 52.7-35.2 84.8s12.5 62.1 35.2 84.8C449.9 619.4 480 632 512 632s62.1-12.5 84.8-35.2C619.4 574.1 632 544 632 512s-12.5-62.1-35.2-84.8A118.57 118.57 0 00512 392z"}}]},name:"aim",theme:"outlined"};const It=xt;function pe(c){for(var r=1;r