From 63e9a6fb004f867fff6a138140840118385676be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E7=85=9C?= <2082529121@qq.com> Date: Sun, 7 Dec 2025 12:47:55 +0800 Subject: [PATCH] feat(importing): Add better FBX bone orientations operator and accessory bone deletion - Add new `apply_better_fbx_orientations` operator as standalone UI action for applying bone orientations - Add "Delete Accessory Bones" property and UI toggle in EXTRAS panel for optional bone cleanup - Move bone orientation logic from `modify_armature` execute method to new dedicated operator - Refactor accessory bone deletion into separate method callable from new operator - Update panel UI to show better FBX bones operator with delete accessory bones toggle option - Register new operator in `__init__.py` and export from modifyarmature module - Update interface dictionaries (English, Japanese, Chinese) with new UI strings - Enable better FBX orientations and accessory deletion only for Koikatsu armature (C) selection - Add detailed logging for bone operation counts and status tracking --- KKPanel.py | 19 +++ __init__.py | 5 +- .../triangles_to_quads.cpython-311.pyc | Bin 0 -> 14021 bytes .../modifyarmature.cpython-311.pyc | Bin 111234 -> 130051 bytes importing/modifyarmature.py | 125 +++++++++++++----- .../__pycache__/dictionary_en.cpython-311.pyc | Bin 13183 -> 14284 bytes .../__pycache__/dictionary_jp.cpython-311.pyc | Bin 15112 -> 16489 bytes .../__pycache__/dictionary_zh.cpython-311.pyc | Bin 11544 -> 12631 bytes interface/dictionary_en.py | 5 + interface/dictionary_jp.py | 5 + interface/dictionary_zh.py | 5 + 11 files changed, 127 insertions(+), 37 deletions(-) create mode 100644 extras/__pycache__/triangles_to_quads.cpython-311.pyc diff --git a/KKPanel.py b/KKPanel.py index bdceb55..bd18ac1 100644 --- a/KKPanel.py +++ b/KKPanel.py @@ -170,6 +170,11 @@ class PlaceholderProperties(PropertyGroup): description=t('animation_type_tt'), default = False) + delete_accessory_bones : BoolProperty( + name="Delete Accessory Bones", + description=t('delete_accessory_bones_tt'), + default = False) + image_dropdown : EnumProperty( items=( ("A", t('dark_C'), "Use Day LUT to saturate image"), @@ -378,6 +383,20 @@ class EXTRAS_PT_panel(bpy.types.Panel): split.label(text=t('rigify_convert')) split.operator('kkbp.rigifyconvert', text = '', icon='MOD_ARMATURE') + col = box.column(align=True) + row = col.row(align=True) + split = row.split(align=True, factor=splitfac) + split.label(text=t('better_fbx_bones')) + split.operator('kkbp.applybetterfbxorientations', text = '', icon='BONE_DATA') + row.enabled = scene.plugin_state in ['imported'] and scene.armature_dropdown == 'C' + row = col.row(align=True) + split = row.split(align=True, factor=splitfac) + split.label(text="") + split.prop(context.scene.kkbp, "delete_accessory_bones", toggle=True, text = t('delete_accessory_bones')) + row.enabled = scene.plugin_state in ['imported'] and scene.armature_dropdown == 'C' + + + col = box.column(align=True) row = col.row(align=True) split = row.split(align=True, factor=splitfac) diff --git a/__init__.py b/__init__.py index 9f8f517..13e3c3a 100644 --- a/__init__.py +++ b/__init__.py @@ -25,7 +25,7 @@ def reg_unreg(register_bool): from .importing.importbuttons import kkbp_import from .importing.modifymesh import modify_mesh - from .importing.modifyarmature import modify_armature + from .importing.modifyarmature import modify_armature, apply_better_fbx_orientations from .importing.modifymaterial import modify_material from .importing.postoperations import post_operations @@ -53,6 +53,7 @@ def reg_unreg(register_bool): from .extras.resetmaterials import reset_materials from .extras.linkhair import link_hair + from . KKPanel import PlaceholderProperties from . KKPanel import ( IMPORTINGHEADER_PT_panel, @@ -88,9 +89,11 @@ def reg_unreg(register_bool): reset_materials, link_hair, + kkbp_import, modify_mesh, modify_armature, + apply_better_fbx_orientations, modify_material, post_operations, diff --git a/extras/__pycache__/triangles_to_quads.cpython-311.pyc b/extras/__pycache__/triangles_to_quads.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..56fd8c51dbb7903c7d9891080dd702f5e30f1584 GIT binary patch literal 14021 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 X2HSJICWC8m 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 literal 0 HcmV?d00001 diff --git a/importing/__pycache__/modifyarmature.cpython-311.pyc b/importing/__pycache__/modifyarmature.cpython-311.pyc index 47bc4c742ee56ecf48c38899241f65fe11f09c88..e6d55131f272eb6226841dc5ebcaa9f84b844e01 100644 GIT binary patch delta 35780 zcmb`w2S60Z`!~LOaBwt1DWamDT`Y*bb0EbIh}g>s?6IIU_YMn!3mRK&=&ENI6Kjl7 zLlSE|qlxJW7!vVfqDB!-G@dc$YczWQ=b71s1O4Xxz5m~P@jlFF=9&J?%rmodn?+SF zi=VhQ*ze`#&cKK3-z)vs8|xYbs@~A7>)54JI>V_s7m4LuISrs2L3e^4oG18raSZ^y zInAb2wmI8a+HkO)Q)`Jeho`a~nskGp?pzPRo&ZaSw2K7(KqmkjO{ zjsrAssen9}2AIyx1f0cX0A_MofZ1FQ;A~C+G;$`16}en)4v@LrJiz%}9^e8lAFzO1 zC}$;dg}{plF5(u0`!#L};8JcG;BsyS;OpER=^**t8!L9aX$mU zM({d!1KhuGHvw;PRgy2u-6m11xjW!>7n7Glqx}sJf&IZf0{oME4EPuKAHXNv-+)iK zXL8d2aL<9iAZRaUIYwdu@v9;(CvZ6vml{(6<^o?=;?i*UC2MpCu>oN|;NOtA8iC7~ zxctE7Ph0`uYD`>#;A%p12Uk=0HY5H);A&1>Ex^^1xU}GEMO>}H)rPp*f~y^IwFg%R z&_MXp5x&91vlF;F6IT~-btSHl8do=Pg%ZE+;OaqKJ;BwBxO#)D4{`OaarFaN|C-_s z05*_F461QS5kp&hMH0^_@PvUWEgafz>`3A>8izjk#=;jyDquW(#}HQnxW*D!BDi4G z0*;68gqrLo0-HqqCxdH>^kQgpF^TYG;3>q#fy+Q#so>&?E3L+r4lWqOfV1EW;}|d# zzFEYT4K5hZfV1HXV;ay1UlVcVf(wQ=;9U5^@Wy!~6rA(n3*#Jc0eoSs0~Wv+#ycSP z2aI>XBI0^6thon_b8s(*?+PhocynuZQV8km{V`Hy|I`)=&Wual&u%C zvrWNHB#4Hu{pfSX=g~%;)g_ChVbx^Qw30}SnJ>kte(mZv;WzSL(^)+r#Vk>uW=QAL z>LyAv{exyYQ=gWeW3+mL^i2KSq;#Vxv^x}Yz^c$+*39o6#;>kiJpJkOLLJ|AM;B&T z{4q-%(H_B0eDSV;*o|ARgz=%jG_$+y{o!0~{Hj4ZeyYdkFYMc6At?|sVoFwb zlIE=JSxH$?&{5wc-Q2(9&%wO+<@o~+{K#6WH+4^DHvcH;P*8+Q$&x|@f# znY9Rwfsr=i^u}}{T|Wv+sQv2sfAsfabo}*@6TOZeZl|k$WAWF_jKv#tRxgq%N``hP zvP(`Sr~L8l`Lq0o%PPbzTMp{@#Sz_-AK5<*BdN}$sfw8F)^D=?LNVFAD_+e?zK+%j zO_j`za^{XDNq|}%JiM3jvBg;Up~HQSJvi1*j#8%-AV(W3a^9|%qy#s2-)_~I`N*LJ zV!9s1T4L1?8Vmpa_M2DaUL)amz0K1jH4+U-r zgg448Ruts)RFE`I^%sv~|8Ci5q>gX6$K{Vh&zN7%@&`)GnVg6XI_U$wwh5%w4vJLW z&H2WLunCN=I%CBICga{Zo%DlVD=MKYTNm^%eBVP?J#(a<`D|aYj^t#NbLy!dC97hF zftNdFYX0Rlqu3>9`2l{VKj_}>XyH4J)f8UX_Z8JzPCqNlV2C08x8v}Q!9VMdo#l@( z`obe~_gMIIfA?XS>*FmjW=VxG*&ZlcePu;+e;=q$^$PD+zuCXHo#j*RKVsV2SLleS zQC}mik7hMZluH$$9bL^UH>OqUFbEz%J-xJ)qS@>E0 zpR2#_T9kI$QhnEZ;0w>-g^Hvp+h8Q67=Wsg+ThzGC?yO8M(a;YK)dspl-BvK{bU#) zIM1ngS?N2v>Sy;pP!)DaQtFS*I)o$_hRH2mtqn&pK?jU<+Dy6ALQx(0A6svfrrP7e z_))h8EnbJZba|Rb_{Xv?i4MvH($!T1FL@O97-``z&ig&b`N@s5yjPc8rVHp&9ewDo zPpG4bJ&5KOR1OCY>5qxw@eQ=7ZpYR< zvwu=w-LT5-tVgnz*yo<*eS7!qN7QZOr2_WcwegO6L5f@*@cmvV+ghlw&=U&4Kb)*# zwV-NJW>OFijZs)M&{T$>>0507o~Vq2#yFOc)QJDQ_u#8r?8Y#j%U${6I%>_2rkUr? zrqtCMY-w6ZK8$}nug%eAs5R$TrWC$0utsY{qBdCV1T4VkKmPVDiV0(ZISd8p3P_FS zyEu%G@*kK(v?g`ZWTzSRwFXlgkEw->Jth*ZnNXV=U66V}11|kxUe$21pgfG%TXVdh zwfZiM|GxZBd&4a!$wW^_45}dC#Iw;kZtF=MKg?j=!w&m8j32kKBQw3OAmqw_zUQh~ zx#gsVw}l>m&1L6hNHMS*b8$1Ih%YsT#S+afg@q3~#98T~CZ+0`JvJt|!!$Pdy#+)aA!8K4ie#&s=P&I{w4u zU)%M}VZ{o_GNjCsv!!{*72UO8ezQagPctNO!6GeJ^*4!65(=NR)A1LWr3`a^3l%bg zv5~|P!^Eg}Opn9vH4WQl-_;mIY1`7qfTEGy1R}EO?qR!YrCDe7CKIqREju@ZGYF(t z<5cnPWnw{FUG?!xKc0H zx{fc8+G~%~^?E5175gf3k^KmYy%9J0*KTbTF(0VWOud+zEf{Lcdu9D)`=|F$>-dn* z6I5HznB>}{ET>mQX_0+H8nFlbjXD^#-I`pl>LcflqQ-inrSYz+c_@0L%bQmpbm{9* zP?6Km6~II#8X-0t^CIs3IXXUQSH8-2OG%P8YOUCeV`e6C=N26wf9NCm0t>c|8ZvQ#bYgicnMa7H1EnJ!sQI@9JMBa(CPZ?y^@w*~+ zND12FF#e2b?=wr-jC#^oC$x28f0Lf27W;zc((`j3+m8*_@qc-5>EJhSmxaziID^tulao?rVamdK%-iEq>%dwm%$w6E=fb8B z_NERqahtwR?4O>8nHU?(C`%CAZKwFj9i64%u%)_xSxejb5&NNaes9Huw@6hsNhCR9 z0`OgSEE=wj>tv~(wdCaAmsiK=st^1=#V($f6P`&Erm|ZNBbf8OaxK-X^ZMH77O%8a z&)cw^DXf@SC*2-;5ti=i^zT;wX|eURR3|i_<5N6$psxDTi(B@&7wRTV>?ywWu5wj- zC!+G9y6T^mu8a8`N_=oH!-v*RNJe2mc+zG!pG^R+jo zSojH7Zf&-=3D!y7<9xxch$BkU5?lk4TQ$iY_(~Y+9 zEqh*6<*QOG{Grb_`7v#~*CdRJhDNl5R*?#c!Y)uwp#-4%{uM7KN9jme^`J10ama3z z-$@lwCv3vFW&k21>oc7NWd+m;TTo`JB2%MyXfJ}|iKuxxVLJ-#P=w@!=qQ&JPDjcp z>{evtgy@_zU;X+U};Y~$OPK!(eysTt8VK3&l4?rX(mlLBxvU2H! z11NORAt9<%SaO$JyZl3q(K>!?*T3C2qf(WoCLFf64Av3j1=1sGfTv1iZu#@b_y5fI z2Xiv-@cSuXSIS*N^#&7{bxbE5#sa*f6hKK-o;ek@>`gK-#HYM? zr(=d4q+={% z1mZmEU|Ql(?$EunbG+9H3qN9Ln^w=~{QBQaOO(ABCb=E`V~mAwx-06}Z-f4uX(=^L z@WDC2QvCQ@QQHd^UhFq$vHv%DI-wYgUTezHQF&r*rOWjJ<1GBZPZp0Wb5&AxG$%20 z??;b3uJ;GAV+O`G^czPpYEIJ0WNpqOw)o3r(ZcH{uDR;HsE32WrI?eL+@>LITn>DZ zY~eGTKJ9kB$We?YM`y+1AHD8;v@G4iABb4-_mO$MUrLRNz1KBFU5sMcud&xe5EE&G zQ$tfR9%+3qEb(M+=bo|fQ@RJKCRKp~(=~DJS;y5A%Siq8Vf>`C3E`FRgVpzR#A265 z%z0(?tdnrHYGCPaD$Vn=eEj%ial*NdyDZh2o7WdSv0pq(6vSZ#h17*B&>4Kc!N7$?q9yJpy-6(#5XUm{Y8Dsx3?^KefrU|iiQSAE7mW(ZGpM}4gZ2IRH#hC`$L;7&!gK@%XhC{+Bx$e|I|! z7U%-f?c*%cgWiF)MkfkCUbfS|ZT4;p|KR-W2)kI_bHSVn$LOmyJ#fAN%Ni-5@YJh1XHP zWb0Iv4Nl0VdVhz%?LY3@VBu%yj@$LH#*TEfW62N`en)lP{&!koeIaE}f@R*+vN!YI z)?Kh@U-B)=?ge|2IR77Ch%M^wNxI91M@#Dj`!&r*3p@=lJ$H^1d1+6Q zAT3L5g;N?mIeGRWH7-4|PB;^f(8naD7!qoqcks3khF>sA^DI1lf+3%|Q@J5YMgyd^ z%jz}p)Wtzz{DZJ-7MHmt7JlRADpB}uEwx6d?6@4gX+AU)Ji!q05yn~mvn3|Y^C*}H z?{9y9VduFZja&N>`sgG96V?m!aq+4?+1=AAHW~EP-`H~3jazv-{`{`POiq|=CldKl z*>lN4$NZCRH%iMb{6fpV{KB6yVV>b%i2Ys67BX2A*>O1{k?rz^zVJpKY!Lcfcq|rW zF4pmT&kwM>d;>=zFO>s(L@tMg|7XuMR2HUk65xVMbSBsxoIz(Hl8FAu^$sL#KqzB_$pt{T`^nKwW&4BG%&%H04$F8>U z`*-hnzRXpmbIb^RWSYS+Yg`VsxNaPe{CocADbPaKeh~d0L6v5XAA0?Ir`>e#MY0D2 z+(3>3J)gh<6UHu<&-@KSjT$ zFsB}w%)MC97f$GDYoTyYS=i%^t{vah= zDK(a(k1X7D_;*a(nd{-Xz?TK~EsenbGB(dG3>>-MQMj)xEOZ$7Xs#8WP`oa^`=a#1 zN{h(R`hiQ(#`r|ZJVBpJ|fC+hyTke$qIhcn7n;&8VP!m>n_A0#bvL>MLyIISa z$WxMz-yhXQO!xpap=wN| zmox!|*W`@$KBtbc@F72)vs+HBwDjS7b?t9Y*!z+up!B7Jw1wTS!&yVs#Rl-enremVQc z+c3X8iVS8?92Im_l(rGBjkwg{1S|O9GXBHVRLjZ{TjB7s>{0&5Sqm-l+A%si*OW$9 zF|z2L{!qjR6~BGR?-W1(jUdc}#Ghc|IU&zpY~HfM;rJFB z9utmCnv;&{^7J}DwDPoji!4f~2_iZ=dk!qof-5{dWB76D;i{<}|`>@50*eK+g z-h=TW>Jv9$P-Mi-5{r+mQYOX7wDc^!Y>-gn=C{H8@G0V;&qOwVm(o9E zxgrUZYEKL^&N#bkt4>fseX2`*PPcUP-}wqz)R3irexn0f+A>1_S`8#6Fj5l-ES%`D z>OQ3dnefZ&EPU|-@uDUCZgFjr=~<|Aw7kL~Y{kI<{Av4@5+X-i9FuftO-D3FrF!>4u%uLffaz*>>EI}u$yeuydz$JHL&&93YuY>vG zU1rM`koR5pRslEv72;U`uJ2s4gSdq^j5b(^`2HojA~6NTsSd0yZ!B|QI_hx!8-e2Z!FPS8xg%F`3UJ8FDFBU`*i&FZ*k2ii!cnLT0LU* zrtGXNeJYIbV3pM^7H#!PNy zXw9{JjluJyLl{gxliPr=_9fr8TzjtdYwYB95ZdOY(DqzgNUsCeZY&erq4Ya;wyP?f zEsb$Ya&t?BLI*byGFa(oqj@S5D|PZ+rpjWaQs4Lviy%xeVXahY$wn{8U+ef0W@C6F zMDgpW;@Q$fzg^Bv#)DsMup1-@Ve=8@AQZ8ZXOk9fSAjcNC1k-Lt8;R8mcfV>*J^1} z7&k9i63YT4u8FT|4=c@YQm8Vs=IkkKV5x6YH&u^uAQBtwO_L`nlRS1~f@+c=%;MQu zMw5_~o@Fu$i&-f)XofGz*M;OOtOi+O7b|@f6zWQ9FpibF@AH#9o3~UQVoSR=Z^lBN zr6XGW#`Y58p?Ja=gnkJ90b;EUYOj1@mcj%`G1x;W#Due1X{EMJKT>_U=HR;xgYpot zBnN2=kdoACfC;P=zdS$+_j8rDx-?XM%t`^R*0E;koa86XXsj;%s1@&|%7X@P*T#bs z{X9UzJnyTYofZuN?Y3r;!*Imx(f`&N0T3ido%_ zh73cBNuQLFVRhlaZ8DJB2RqmHgVifXFc=NO90S~XgORVRw@9 zb1HDjcZy=BMPUN@tmN~lpUWIZ=mpO3@BGc*7qbB@@s-#HL2>ymoO2#DeSyoWXp^s! z7u=&)=eulUIF}tx^|PoW?Y>3 zoclf)U5Cijf^k`f^MDD!GZ$}jR4p&LyJgR<6RWGXAJ8TnOwc*{)Z}@j8}z26^bDi6 z>ae+L$%$Jh4p(n|?e1F#?!I;A!I@Q6Yu~zM*-^c5%k7dARhGrKPMx~-p+rN4Ezmv( zU5Oc$CZ?OnZ2_usk03{@CP@#M9N}q|)e~KKm%x|~kN;ajG@&5^7WFPR^5cd8Q$~&) z50t-OE>R+!7 zMcRnMa;(>4lu+luvrd!MDZ`L;(A8lGcxS>>6a6fMA%`@+(dtd+F<3_Q@~GK`(cREj zpOutpuzFE{PM?yU3zHl!W-wmxLxzks0K$jBaMLHHq!^6GY&icQN#?cB%;wTl=i?QE zBvYBm<<0aeOg}jX@AM5eaZZCpY9bt-OGHs zKe4$mO`0zEs%+BH#yGjPA+UUSrFY=wVcSPn1obNO7UA2g(kF0(SA|c<%Rb#M`E)y~ zdC#jNbl7K2DniGW`y^KQB$oLkR{AtAX;|*ly4dSUmBy>A!L*XD0Q6tEW_pEYdYNYW zPZ%!P%}AeCWH1ab6e&vHQdp@bauyF)(PeysbT9NbAxTHyOh1!!_9jZPDyZ8 zP1?~>+hDnSs*3Y@O;Z4q6Z~|*w^MiNi=W&ZH>y7maK12V{Uk%DNYxg$^sP=U)#5qm zp+o@_BV#7mmo7f%!JDpc7tmFN@QPWQtVC94(1A3oDkt6QWK7SpI;CVAg`E(?%FYwE zlfUz=&O&xZMz98!OGpXVFRMB!i_hp}u(C!nAgs>wvJ7*r&hr83dWI7(sv>*}K^-L_ zbb=~CRr+P<3$``R(!v@n^-6>l2oDhMBisWh?b@>)+o1^MYS&CG4Jq0|=h~7$Zqoc- z%~X)Zre5Pz160!eUKv9$hhR_P4@~bNf(_vgLN&r|gx?T;MYxMlg>VbuCO~QHJ|1k- zdzj^Ygx>+=C8>~9XlUO_aU-Fxg@+g{XNbEZVIe{R!V-kn5EdgWM_7gcx2YIm5ke6{ zA%K;Ql#Km~`e2r@HrCd?rrNN2lMW!3%L6PA_PmxBr&IqpQ4hs2hJfFbLZ-4$*n623 zePTZ|RrE=$=rgHoYI=E}^kNMeJO}(Ld_pRGdX|xYO5r0QrqBjqI6^lBV)zi7hgd&o z_y}bP*$7`FWFSm};)t=q?)9ffTwN852we5-2eg7Q4(zh(gwyDC2H~vif4%cM@VCgU zgs^ic@Daj!gbN5C17JEOoy{QsiOj-VA-gCuEn%O+^IS&wO!hl>WFts?F0<=nPgd%L zFJx9o%Cr%fuvrlRFN?5EW>{#8uv2EtL1b^pEWFD)V0&byC2T)1;VqK?A#}ctaHK}W z3=xjX3`=eij>)W$u=h~>eMS7}MiBTwW>|2GZ~_I=5N08uiesB-12ir=Aya1I0V2{Y zl)&MD5;FqNjkO3lGArzHbCFJ%jRJz=)ooUePB5aEN%mrzT!J{c=rspnF2X#7`3QLk z3ji>E_?$Z}dVPz4lLhhL zSRJPm%4Mb{>=Fumr+D?7I@=;tpx5^ZKOkI{14|bE{wz%R3B7(+ye>BUQw$TX$+Qq? zm~b7K)dhY#BP68=H{>8ji*5D`FuDvpL>E~aZla4!`Bms5t3oxp?jVp=fvgX|A-#ui zAK?MQWdL`f5}iK+NJqzhAPUJyQxFUYj}ZO@AT4lv?y4~1vCPg@A^QsjI&;=m`Koq(GVvG_JBNPL=BlJY*h0q(}KbY+o==vL6 zq;O9oE?9(T=>HGGbJ@Sdx9i6`;f2i35oSjL24k}bP6#dtqAMV#rrpxx3!R{m+4cFW z;SknMW`!gS9+xtL2ZASp7eWIBZv-C%+zODQof!FW!!LQ4cKLMs5wW`=9)A9O++nH8??0IaRd&cy@+YcI2s zt;jkkOx^kii_j5SIwW&$We1?aa-cRk7+5Eno!g8o5||K$5RDLnFce`pLMk>cmPhy; zC@I*pR&M8n8R#_~0f%X6+~hINqRenq!1WDjfl4B z-yWd@LMMdI2q6gF5JC~U17K9`s#R}%DD;w9N&N46ozPomg-?gU`0p#T@V}Au!?_M4 zUVs1HcRwU&GRVSLt^zg)T*6>kpk#H%X9I+AnS~P;fdWHhFQ%X*^OO*!Fypn^r-f(~ zh(Q>NFbrWh!U%+s03v3`JUh4HtS}n=Vgb;rWPiKVvqBtt#mipjCe7b>mK-3-arT@Q z66LV#PtO4xr$|23l${YKDq)08l3C&GV7Nj8UB};O9Rko_MI=N8**fa7u-TYmu=A=MgP&D#uzMMJacZ|vzROz=13Z453jUZbv z9E&h_V(b%xcL&m)2&7my(e(=gRtst)y){} zW3X)!Q~*Tl`XeRF%MEmm#eiINEdU_T^`W5jHjI!6fpxq_k$$r}<4>@tmQ8_tV6Rb# z*<~Y8BR3wM?;-rRR8$zTSk_Ov zZ}BX>zBmHUDQTMzTyl$TvH+wHs;sJzP+}X`o-9iJmc^>>J4wrzwdS#LV&o@XS+XKTqxw5816*_^t_Orn}dg}5J2=tO{=q( zl^QPZM^9I$;+bZM>aLSixcnp*IBYf?=8jzv;O42uTJOflaPFMD{=F8skAcI{B=pCO zYO4Sq$x^Egkt&U|v`PwbC4KCyl0K4#H^x}PT!2@IdpJv}8$vvY_*Ts6OE^r8YN3Wh zd81zVx0rs;Qp`pVPU^bxO*~vARM_8u9QI$EDQ^Mk76e!z~aQ8CEytu*OK+zL61R6hD1N(tLv;V9yIR zn}4f!-C#*;ZmJrgk_MSuCy-uhKzoS{?3q~HSqK>jnFv`3*$6oZvk`CuYITRRT$-iP zswS6=1e0{s+?e+CGgc{@x9rCw#xVt?Dr&J=;CJAucI&y@3=NL5OjdPY<-t6K@v^UYJO6O8oNqfmpN_cZ@(0YtF;$I>s zJ4+sW`nq6bIoi}ckuCN>j9~U(BW62Gu6w(Y3FWRE78y$>Oow!0;mD=l@Sck;;K*U5?DS|SS)FhTYuQv~*w)tk$P z?QbSLiiMvj;KBJC^lbo-a#P{FHCuq$D_sy$F)}>ixVJZq_RMtL1^0A~1pPGbQ{lN@ z+tRiB7OKT#5IxruYIbwc>6?p7Z!WUjTzrOXI&-nUw@$oXwfgltrw)-VXs)}XR}Zoy z&BgiZ?!HaL0H&nmFfoL4U5NDV>TT}`TcJRNR~_Gn94$QLB2%@t6g|)?Qv~iT*+{ll zl&>vC{w<_MN(2eqEPD55(PlDnQ?Iq9vKLP6HK{B*NVae_sQ}0QijvCh6)W%V6E~5m zUrC1eZ6ezT(kPJGoqccJUbXDOnPPHSRo{0VImfE+yPj;BYJ4}nO;T7#&VK6psvn$L zFD#SR9`4@!yQTB9n!Ba|qL!fm1^1Th5rL7)&XxgQM` z(?D@!;efPuE+Fd}8QWx7Ycez8w*hc;4{vyYvwQu_I);{aPUbwlU?3q}dWz{4#ul}; zFrPea{o{K1YW&zhBy&68>f?}JC3+4>XdfTgqQ1LxB3EvM9?QV57o=6V9ztG*D^T#h=ukv{=|tDJtp4 zdcV@IzY1{@(PT{&zQhD^Qi~y$Nu4LzMHsdX;UvN-1Y)F;#=(-o`7K!})y9;h40uoj zPdDeJXXk>c0p>I{@L&#RwDfEo8q*VgehM}gJQtJl%A!>^=hBbLCXwgQL6`hheMxDE zEiFQSCPHZ>oZE@Ep~c`}JlD3)PF6~*XxW;s*ePl08B_sj_G+3vJ)1vRk)V3+EIqGy z8iR`?=rN=YHWH?cZ2(I&0A_s`PY_iGTn(W%iW}WQO>1oFpa_~Wp zJIKKYISj$`5wc5y+XuKBJ#7#@-=K|z)f9UMOsJhuHL^v6Lv$V4n}d$Z28-19@<}ln zQV90{AFJ&}tQ9fIP|t)52&C_7m568!8C0MXDd;^_ZhQyCTi;-+0e4r|zVU8d9G&~tCG(Tx=SyR<*=hC)UZq*s0*e=3n zSWtWbNSitZdt8s@Y4|^`dJ)FPVPbW{r$RM@Lm+h}d$~Lm!D@C=c0k0u(SSUCREgRL z6`+$J=ARdAZs`JVjVrs>$h9vhqp^&Utd=mT!}X007bJeTp6JvIhd1336CEbix{7|J zGP@x$d6x>q&MD!a)pkPQyp-)T|r`9x#H@th9R7>=kgcZ*@+|&Y3T`Lc`Ua zE@TCoK@`Z`&4qP^o^Y1Z?|7?X)TMcMcCZe;(EV3WRcP(p4_)kvEnNfT)|PxGpwG?8 zf#Dagk}~g=MBr2hC41HUhAJaJ2(!9@p5!FKx+!Zs)s{kh+!%X5T$Qhuitp=)y)R6Y zzQ3>Sl7f+a{$~v?wffyZp0q6KVba>QI!wl`uD52ART(p)>SoHRa*Yn8kb&pU;=XtsXjTasqMr)kc{vr_V)sC zSzX{@29IvwUX}DbN?Th6M3{r|9PIEf*rxg7j5x@>FgK%Rj;c{-+nPnMO$h3 z#;0sM4?LKnmz}zqJF%?Rg&d~!KOWDrZq7OtWX^AedwN^8e6Fjr{drX>n_+X12E_6T zK~Cn)YPMaNgR;Us2;P)NwV9L}t&3n+p(DoZfY1)1JwhvlU99<;nr%Y2H0_-5(iUoB zOVx4p@pu<@E=%f?;)EN+<2PK{GmV>~KIM6hPBOyvmKf-&;UhzYH?TZj=Ho3{ZI|Ov zr#z3uZ1|yyDan*AgygvbiBHc85l&-UlbSWf%)eyKPFl97ShG;k1rQg=M7nbYDJEF! zpu408>nT!A{RMYSmCS=Rm8aRgiRG)?-2!RNAc&zCv>2}tWytDc0+&?-hM_?Z2Lp7S zsoiLvz)%lzbA+4}7zNxcTh%EU@RkQM8^8e;X>iik9h}U5t=L|jaB&fWAtS2`iPnS6 z6-L}BYHL3@-pp`}K2r6a`naVP`yWjZS`k*SsDy|K`U%5h^g7NHY-=iHr@>&>j%bSm=$x zwf)cs=}oxo(u0j|ffcv9;cxZla1A~V;4Df@1yYFGZ0>-?dHz?5tQfY6Dfc+Qj_uprx+G!uV+p3zIY4sEgoR9>U z$I~-m=6uy;aSXG47lBOpMOaX*JUL|wR(GbRMQ8LO{T_p^1OOwNc{8w!>B`Ho=GlGN zHm*x>=341QX0GF>`>ai1d#;>a#rmrI@cp zvjI)s#u^giM*|hW^23MdXM-3vO0~?zoEXF2rYFN0*b`X@{W0lmaLI<>9i4y$heM&6 z7&04WjJ3gKI{KIvPmB4MOMV-3qQ&<*`n)z2MadcS42+os04h&X!7D%HQH{_BpIgvp zB6{>B&qVMc2z}Z?Q>@a_%N2OyK`&ffLRSUCRfHP|KO>Om5oAN!0%-(7G{R5>d{9B2 zObBGx^&_-U3#b_>PD2bMj}T6wl3?e+!-V7Ghq3paJAHv&Gz!O=pwYXrOK>i;x^qH09CPZS z_l0-R!)*>+e@;ryfP>|l6;1dUvvsB2Y83XEJH@gQ!Ng*&9k65+pB!9@ECLF{&?Jj;F=3eojUId=^W=^^BUH?-zT423U~rv~rPenL39ox$0I`t%a6gAbV&XabW-0=PY(h(I4mI#{S9hAr zB#hc!Sb&+#2e7i;A-H=;Z}jg0X4Di6nTjwC0BV9g3j05@uw;+IzN>d-r*@vfSrs2ci?H=u~z?Db)j~7J>M6lu?|)@@+^et_;<+ZqANcjAtq1}%96$X1Z$p>%yt@& zlQXQv*%{e_)innW4B!@Su){5Ns|QV#p0uZ-v^({|10!Us)iqX;Jtc~f9f#~t#&Q-NhT@8!u!R@4hs^4o4w@l^{Lk=L#j!uykblE z3TMEl4HEE;rM12|7w2h+By2{=S#O>jl|fF_-JJxJg_(?yJP#^BeQsb1vJd&OJUQ0Q zqmifw9ytpd5tXDRI^EE<0!yw*B)`4Zk0OV;GKDutkW*Zl!mm-u@vYS>0j{XUkZWov zvJ4Y&@IyJgKI7=u6Z{sVpZDnWG5BVs+UT#z-nG7%z>=4IF^NLrJBqvlsy2lpbJlSlwyZ5V*B2Y%qVci1qD!8k@^Y_JMk2;{79~#mO`u+(P&Oi+UX41j12-V+ije97cEt z;Rr%0!g~nsBfN!h2;psnPY^C5e2QQ}IEMf?89KuiRdjxca2DY_!Ucqn5l$kULO5+6 zxP07fLo*yQo@ z>p)|JTmAd+vj(PT=D@MMK2^xhgome z?dIM~*(sjHXkCr@j!>DmFJ-lf4i*CnqNyYlqrf_Z^#~gfHUcOIzeMOB`rb$Q9pM3j z4FN1(pJi;z0Z%Zgn#K_}VVD`g1Ymr{Nw7Q*q_gJqWo&!ZN3O@$En`o)Qp4a&Xv>&b zID`4u*~#h;3;JAo4*-6G0>|g%_hV>8LTQZfW#n9Df;%s${!=SFiPX;}6O1t$_G`ug z3}gOcEjy^jR?!x-4OH;d${f0$?IhOiJ>@u-^aSYvQrLfQVltJIb|zCP>7m*dmv60L zi{q~c1%rIYfwp8r(v+|PX0-UhLyuqAv+=4C8uK8D{R;|>_qdOLV`kweGfOwJpA0l$ z2jFyVb*{a~p}{*d>F|3TtBY(E5`)fVE_r`D%?k8o=_Ym{9MPFCY+_rhrfJO8o7k@% zvY5_}dW;IM5uU;yt7lr0vG$hEKj0-iM|go?M_|At7gzwJ!_HXl9!`b3dq4BFO{|MY zO)@ze^NuZS8Dx4qdn?PTU9tUxwTZPuOpJ+1jIp}J4H*#~nJ5f|Y+_-PpWoM#P27wI3;T{@uf14Y>A@mXZE2+En&9HU%Dz^<{n zfI@MGEIO=UVDu?rThK$owJNxw7U)xR#7z#f3N^GT!(G`=>Y)>laO|VtU`+ z8>dyWN1lc*Jwg&fGC~Rhp5V~C_S?|473(w$U0)%P(*?4FC)dkrubko00sYy_N_4G3 z5SJpNB}s2yFGd$yhV)k?h3G0mScHH!9sQvRT5!Z-bGVy~HW~e8%WvqqjetfKz1Msb zUAGX>K2q*PLptU+tJ63~fc^oWMmkUStbK_Eoi8t`H3Ef-nnP*pD8G zk;bTPpf=<#f4yAk19r@z){Y`gcLV*-A)H6}7-2ucA%r6cczFrdQ8yOcjS$85|sh(3V)ug@P}y|%;g z%>UEH9ZN^<7H62J?PKpXz}2DlS*Cfye)ge=_qu{R3XR~8;EUjg;Exc1&;+3=LNkOQ zgyslZgjNWx5!xWMMd*Og5g{0%6GCT%5QJ_Bp$Od(#`Hk!jnD_7FG4?r{s@B*1|x(a z=n%pYA`zkxq7h;ch9b;12OeY(H<=FZVAkq93wF$o>(FZR&j(>T-K9CMdW-FbkJpd) zJjA}wlBLD!JOs{%l#86NSVydl$N@V1d^0oM1SeT!lV5MP+lH-{bQxh7mGIb{ewb~p@^v#WKg{O4iOh>?bBf=-xL`mpMM$jY7KuAI05b&r*NJZcg(h+8|aJyM} z1O=A0(0IcH9trkd=+xxl*+Tsc=j4X1&hR=Qc6!&S@-_>pYw z&!FiK&B$4%F|XyUS;;veL?&4zGVn`jM~PfKfUP>Up?bpsE&T8nj#acVLndnJ4~TDX zI$2e`E*B^Gs-sIC{cc&_xxL}!trMqiZ+q{~vbU;V`v87vO~oIaSzfj4)U8u%9DbXv zy}j}1?OChef!{UXEL?QQvgOv9t#{rzD5v;;8WcyCx zD)^oE?afE-F8=WL_8oAkPl&^wiN{7%8V*|zEd*50M{S{l&5WBA@lQMV0(jG_v1vY2 z0{=s-&H+Jb@PEd7>1X9mY3x`AE*TZA@C(UTanAJxOm3Jw{p71^e|bOCMJo3R2r6(g z;gTzV;0N(e+n61yeNenZtmN?%JUso(y-R^}9U+%|=UO2pD$C?M3-Kmzb9pEmBpr7O zG@^X*GXBEuYOg^S>7gZ>7&=1c7dPKyBD~?*R@VG4_e;ZqL>1p5sTNc zEhL?)K^J&Wz^JLv*aeybw|q_AMo{9Amj^)en2&j~zIsg)#h)o~&v&1RPs+&0)Ld~f zOuk#)Z1F@n-(6qRobc8GPx-9_L-So_x9h6Ww6olyv%F|$NtvqFBG&-A*PFbLz$f1o z-YC#;hx(t{YI!Jb zJbHK8+5y_!R*;PH5(DzO1;_Um+$~&jclSwTjy!4J`*~=*jIN)%Zs5xs37Dm3h?3vGADM?lB>h$M~mgyGW8M?VGgZHsab6?K@57~cH!xo zDi6>K2~eisMzuQ+tBYX3jXV97%XipUWG_Ni=SxUyPxi^;S&o%br<)9!M*2utO|0sj zC^`!v697zuEOe9Y3fUxjqCo)fA~xXLW|h}5=(BV1(HFHA;Jv!3_(~1>f(5u`0}D*L zL4IR{)yp_59S+cCO13iaI)g0s+(J@pBe{lSXkb;Lq+2b%ZF9^HnTA*uXdF_erAvL9-Aj@9$wZVOf2`& zRru)2d~}t8ZHf!ZeA-rddaW8(JaO}!a?kb^p6$y#+dp<;f?95#x4odEW#95<{VJOE zTR!S1&xU1h0mxm@~;Ym`j-3jtMKVp=F{(b zQ1j)ZD-o)&yo1U;2UmCwF7q4=Rcb%*a=Y+LV!LpfE*7W*fpVW##crGXRQd*$X!dwj zX#17<;=jsfZMF}tXx8)S@QP+(#Zi^owtL(T#~kf*F!t@(a_xZPs13s_{aTfbDfeq% zJi2)FbqBZ7r1Q!>J63phEc5Jm-P337$k#`14iGnM%39AkQ2>Ddrp=Tct)cnnR(Q@W z^PEc>F%uh+{7X!d9gQ-}J+mr2v&uZPh)CS~PDh8mH@c$NsPfR!6``Zc8pXlCa?kh* z&-gOW`0IWxiU*Z>wtVuFcOWQ&TPp&R#$(`^HZblMg$!-O9E<4=_-PyWVct%kc5OV& z-RU!D7Tlk?s{vnaJmA$8Gdxn~*f-b$6@BlH^f2Eq1eQSh<{g}Z$cMan2cKZcAICTE zNb7b4zWTj8s(SC;fwYzP?ts(0{}3CXf_Lyd%=ed64VvMLcbsZoyi>D?!s6vj7BBTH zUcBQd<>I)AnOtgKyaTI0dGQV`SeyoyNvQQ9_|gy92yS3my657V0G)*YpT24b%)?u! zm%vnc>y)@g8>zj0V0YD-wO|+upF$bP98YKMuaJI?@D0MZ2xS0xXT5f6BpVl;3u|9j zBarEmOraGJQ12!TNaFmN*DEPU{1?mlzr0^&0!~Y~L5FF{MR}_XdB4p6k5|ix|GRg~ z{I6dvBQ}`!zj?O|yk3U z>Wje$EwPF5sZ(Lif0aJn3*ogo-3o`n337m5RTx{@C}?wPS;KaPBW%v0Y8d}Dz_HEM z^WohWuSS|7W&=y3NRIb@h9X!Q0let#bgLV_T_)EA?~xMl=v1I9t!aJ^9Dr)#;NdY| zwH!MPGcW}%?WEEXWx=AEu;1;^AESRBCNF>)`l>KU|ZQwY)5E&Lc?qw2ukY)FZtG20ADQ(P3GFA-{)7#X*+9Yuk>-l9 z4JIs1W;(*cS-CAESi<4y6>aHA%A+U`vqe)*>rOF-go)7YLuueJCGv2}M*xQ|4Y!S? ze3ZgRQw~Q7m|2)Dj&j%)Q$B|B1mL7`#!{Y0`4HPU%Hd!}jaJJL+XU(X+DRi!q8!d< zD4#+(oX}7{jdD1rp98L%*pGG;%ij?aq2V0)ZG%S;b!O1$!JezVjL`JT&%~sLz4|WGC3n&K_ zFi}3(mP`2@%5}E6l+ObWLu-g_KIM4|UqE@j!V4&02ppPwh)twC+)3sUBAN4TLllol z%A*t>O?iyMhf+RF;lnA1n`Lyy9ZC5pg^#A(v2|jVus8@4K{MmQgVbgW6^8q?l#itx z?hQ~rj&itNKwE19Qg=ag^*<*7yvR>G%HE>2Yvm_|LOD-raR&rrgXC{G3+ zP!2;Wg>sJaNSlH3RN#T-PUrQrS5QpG)~X;El@zqipjj&vO=GXq3aySU^4UsX(-?fbxaFp|(*r zk@9dgNg&b|LF~haLlhoKc@%I`yJ*T|C=a&{rFa1Qx(oro~C9*nm{`BfCGNYXHlMmyeuHZHk)$T z5nyZduo)>g0fz$jwdGPihw_28xs=bt_~iiuZSyJ50}jd=Xyu*Fdx4;*Sg#5RWV1mL9k$5Nh1IoJ@CkEa~w0?H>+ z9&VdN`DEZCBrwD_g?da?5|~DK9p#y>gz2g549cPJDNhCtL#v}Lg>sJaD4T)uRNzFn zc*@f#7b9%x)MF-iKXD};uz>P>;G{+clrIDh{oBhX5?-fu!d>OAi6A@0heLovUx(QuDUSk9 zCZ1@@V<_)$6NgfdVKjkA+i=Q9&;)e0k(7_35h87)DUVfn9Odye{y^Ip$`gQtvWD5l zQl3b8FWWfE$J6*dMcV}GF%dkVx%=2AQ9c6Fg|4$axmHjDBM z8XjiLq&y2a6t=G|oAMms(A;6R*_6XCNRda{jFg)wA7aZDsmC1fAhnrG`8+Dn(>9;- zJm8Q)SK9*0^QnA@t$^}{z?+meg}H+Aa5yR;JVHa~3gBRZb+$zkF1JpUh7lWes%+ft z;ZR3!G98sM{4{|r=KBVCi?4TVqedP_OZ>N}l&JkrqYm^A z_71pSEE+_)rKjZ%_71$>vFJSSAnN73&f<~RBx@HqIyYY6Nlne9R$YDMV26IPa*Z~^ zp|?%?jW)!g|1@dNkO`D0M-Z4=Aw@6Z=i6%U$9-!4rKq5qi9Wq}r7P@~V164f5+cDRg@nkdkps_L!X zPu!6X%9F$*UacElI9S(UKmT?5_z3Z%zRVKH#6#&yH~iI zd=2HJ-L+;qrIt z2s<45b+wmiM;-c+S{e3Jn`ZJ9;-@aq%DlF?8-4zU#*iz)OyyBY8kKAT1J@GNnMu=Y z=1;Ay+b+x`PkqQAXpy-@uW{wZh}{|w)d`?tE8rTycmNNn4PTyBz|{n1LZCIs!!px? zz9wIN$n9xrGLyXY9rE$mUC!vFnVGH97xc+hJ|)KvY9i<)AU&L<^aWgX4AIxs4$=PT z(97%oDgL65m{%B;jp*0;)1n83{=wowsoB@3T$j|~@aE|0SC7(XUX)to&D|zwebGPl zCmh~hv`TvGS6_XpsMSC66?Ar8ot795Q+Az9Ae7KnS8p|$>p)=jT92=|aYu&DGiy4V zJ)uTZYxSE6L4S*xP#*}&1ys!xYversZ@cM~fu<%`3TZ1f2YoOTJuMAQ!+fR)vgA$Y znik(`)7eg_^dp5zkv#CXmSm!@s9&Ic=IA_9|C0zqqs=Uy;80^*^DK^Hexb&#F zG}Jz}ennh*l)KiIz#?Jz{GPkV|n4X;l3mUMl#*T8G}>J4k<{VImL4m0_{tZ}Ixp@TyeosdSV*l_vJgY#x5I-|KDi zafKcP)aXG#l}xoH{4HwTtK}ZpheAC%un5r(ECN;OyrMB(oO3S(aUbA* z0!y#g@*J-6FPzzzWFQ|zHfHg(f!p(F54>j@^B5hL{%w9<7*ic35vwQ@GZd&sOcKRo zlFfR_w&JREb&Sczv_%a#F)CM3tFj5O z63|S*CA@BrY$j2u@^-4)%q11^hTXx&KwFd7Cs{9;7E7v@y{MfUS7MCO523vZI6Pyf5x-zajuRph!c^BYa1E*IZ8&WcG% zea3y`uz@P&IPyzTr!T{em%W#fcjL4>>TaspP;(>w-(U1AS_+-eW4-K!g3k3VL$j~= z1*JZxfBdJmp6lqF_aAFhYV@}Tt$7Nz`ddh4d!#CQq(*SyPMa&tSuNSFJ}b~ zS_w;^tvs6Z2I{T*(fiFxOV7Cu^c-q$6^pI{&ZQ)3eKdTdRm&v9YShNdu4phE+xwU7$t@XT;PP zMK$b#5RS!i_fwmr4S;SBaqctkMH&X(YIki!U=g`0gQz5d{%cu8RPInu!7?2JSM-R4 zneNzb(=Ex7-9$T+&fnOxJncw4z6d=cY48!|nNy;!<)QVMGh7nV4iP~z|pbldM zS25P&ge0msx9VFXUCVTOL^rg(EvY<{<@!Ka?mOxJBjB1{?w^cayNY)KZ&nh z^rbwP{h$>i`7FL*L*+ie9wgc6dm70<0GXFO#17*jeTl93?c#%Gz7ATq_?YVaSI7zXv=Ccml8k@F?IB zz%~HR)bcUFcECM=y8(9*#7>?XY*abn3s{qvYR_J+p1yw10BhH3@zt-iH!z>a%b&y} zed^;&2ZVVBKU=+FBAbXA?kZ2cua@=!(7QkFNuS~g`nWSytU9pT9qNc91lO>{XSgqI z^!ZlKYvnqau?U6qOsz0b!d!?*%0B|h-{M9kFz^vGfGx_ZjV@9BG?F?FTh)V+e1A)w zzm=Qg=~emEh*e-#Alw#eL~rg;dxU0_q&<{b0U}-MS>+G4gR8B~6-?|5H)qWXtnyjy zbD9{0##*^FH0+303Z2JfmbA69bypId*9tx|JZ>C_J>H<->(jq2?X4#1#N;E&F3)gJ z^+-s4QG{1b@j+n-Kbi3AxkZpnn2JOV?peso0g_hTu_k8 ztk*pwNCv%_J1!^v-UiM?NGa%MJBUi;m$3If+DySh!+yt-IyoSAeQpcgPjv@xY!xyMpn30!3w*eU;3>nd1X?vT8|`jqT0Ufq*LpO zuKWkkt*PSDpb{eyYWKjQDV1glQE8KG@$h&Z=^|IX8_ftPHI5 zw3zr_;pT6yUOILA#8_T=E+%z<*K*Jvo#NFFJTfyXVR6PamUb6W71>R?$A-=8RwrO` zGW3(_CHj~QnkD6)s*KU(10F_c%#GK*vc>1CvMigIW1W^EDcP{$!2{O(AOvcWx6b*> zZM%LdGODc0iD|U=tLcs*Px_I_VLn-7&>ua$d-nl8T_ZK=mJPcPSQ8Km_(oG#S;( z=i+5#J2FZbs-u(LcOHyk8qpplRwV;2wDpm}%VP_TcGq&e0V3#L*uL!`Vh)RyYj?8y zp@Xp!;RZfB0cupX)>yi~O*yu|hiFvk7_zk_^rg4tg;@cEm|>DLlu>;vhJ)7X86|6p zE7_Z%hCid3^hsam>)9J}wTne(>4shfcF4cx!TYrV%+s}0jrnd}<>qiThYJw1 zu20ZQR^)Y-KHTV>(C~}AColhN$Mu!2wD=g)eDH>dtK#xDeBBDbC~0u|bK8q^5PY(k z<5=9++pD#^wa!Z(JFMcVtQRUu^bZQA@KR!pmggcl2=E;s0gy_-Q$$Sj8KqW!A5W^5 zAA{t?&4PRzwepAwSB8CIKm-+FuLhqSVgI>Fh~6PkFl`8m|A_W@P#jFNML4(LK)EuQNIepO`Fc@yjPa5q-u`L)$e|D=X)CQ}jwg5A3Yb_G$W| zouwR}tzy-k;hyhl@V9tmKGlm{1dXDEnH_ASXnwnUl~0CzYkWcbW{7xPjQmWM;ck$D zHo7Uem}p9y64hv?aU-hG0=~hR6S%bx~oLpedObkq(HxSSCO_y)4O&(Lt`@d^4a22kN;hem2SLe~#X4Hr;fu7a3_ii;XE!PDAmCX?ubxXnQr z(#)h4%Qq_=ZRF)*rqUtZ6KbP-7d0cjf>g$)xtl!gJ}IFOavcDQWoGxx))#c2qkSp# zV0Y;Rwgg$x8y!g(pbnV<$OL2ovH>}OTtF`XUDqA!F6f_6-@z>E1o6!1pOSKcn&`lR zBCT8N9Q)kcskp(+czKXER_GNkPtW-yrur~|nxW3DnY*xGZ*(yXAkYDFqf__8E7P>n z1pSg%&c`IIeC3*cV^H!-wDU8?M<(b~ULB{_OmF?RSEm(MQ5BasYo&`5^og&HwP+Ym0&Q|0?;NI0`)A|D)4{>STff4uH4w%Uqxd#6Q$UAMdWV*Pe`GPV^; z=f|}2*-f_`-`28)?Y`X%)3)%=z(N5t+aCLD!*9Oce+P$+;;9=Y!btJdO&nK>P`B*h z7B3;ScrGPNHK zW)sKH;tT6?pT6|n{4ip0cHSrZ_Hjd-I35>I)j2k&s5DOzQ6WYXPu<8tn|SIbj^ae9 z5EU5Q$WfmjWM=y@J?Fjr@b;MIZK-VJu#sKErf%XmQan}Xz>-ak%Ie9Oc5Uh=4ovkZ z3kG!#RoP@)N*m?FdiQ(zO$cqp=jj~lvR2hC)~Z?`tFU`I`D_qTdrHG??xFTulo#_H z(bXl`3VrhX<;4RiT|>9gQCr0OCfgP=@VCF8KaQ=4EtI^?48ZjF^(= zP#t=9@;_&WcMj$Vd?=0}x6`>m7agU|`qZxnBtJqXFu2*F=N_M^KmPS1`}VA`v*erS z6D=_KTL@Q>?cUsz@s&MNkAdc43HkN)Zas{pG3?5neUz#QGll2!l3k9|&e zfgk#@R(m#~^M@Z7!Y}Ncdoo`e$DOfXK7hKdqt3>ndsY=V7ctIvbo>h(`u+dvUy1_& zdGd|^Cb|T|0~u^T!9)UV@$7Yf^sid&Xo5cGrxR81pGXO*bw_lFlHE9TeH`_U!>G#~ znkKqzJ!45dbZS`G3l@C@+f&Zelw6JcH2^dv2jlBTw2XTN4&&<`(fxxG&|n^8ancY{aP6Q61$4ug4e9T~tR{DR}ur)s|-wYU|2T z{#*;%S*1BjXfA^*{W4Tf{sDzKtZ$lJi6tgO#tTA}74f7e``Ue&aWiSkoND+ZRSqLV z6Gh6C=<6_sYobismC$vSCO+x04j~#oT~H*EW3}?PV4S56zd#m&wcLMO3X#E@33y5q zSq92#@Ud_->oE`6I!r-N%@iunYO9_n*p4Imr8<5DySC?wdqwnR zSl80tB10>W+Il)Nzf85FzyVt;+Td<$ZKcKdtuTILQcDd6yR3IwV$?{dhStv@*?}z$1|DMQ=IfWv>nuQxt=onpQ z-L(TTt*a02=A|HP=_O+qOs3)_Yy2rCJ*pWqMvBqedS_R7q*#sJwd;p+@mAqE(65fnS)L$0 zi>#t)n?AElUIn(UH9nh0O0tle??|r;(A8nc6AH+(j$}&A@wb%8tI;zL@BqI0YDUF$ zF*+RC$E?FJ$)--7fnkDNB{5s~NOTmZR1q=AC(tUCT$xJtY0e~1mLd!F5Y=$YBdEvT z(>hchL13md2fRKvg&5>|rlANQV%w0Lj;%t)9D)*ua5J&K$>))594J1Q1)Gi_j-o7f1-$+qm?36r_c^=1nj!uxr5~IOGxM_A$qU>Irq{UV zE|@%rJp|g6mv@Oe@qSX6rODc<5|g#;#IAzHqFoz1bLIWKnTqZLm~K;B-E3w^ zpI3V54%^>Mrj$1%n=OqE!j%yQ*Uj@Wx93{6K|cD*P@*_CX1L##)Roj*OS!>jS`ZX!8Yp9m1E1 zuRjAm1pF1i$1b?n#WXTzXFtfF0~SLBm>l_q=(^z=@t@9NO_Va7*R**;X4)0=Cf7}^ zt(iW%#&k}eS2vr_3pBD^@Lyp3Zk1@5kMbSPQ6MD=)dzLj(a5S>L$>r!aSxqZFZZ{UL7L#4zCyc09N4MC%eJ!pu?4L0_y*hkcwg*|FJcM3uHBvCCK^@)DGydT1tC0OM!$Oup4)o8_kx1n73ndPRRr8zYAzi7;813ylNy0(l-0Iug<3SlJsTU|G1p1u_?(N$9#_ER#m5UKXP2 zC|Qh7`Vp976lISp8w+{`xm7=5Sf>CE%BGQEM(KE{j^)#c-LnS?=$JbMg>ultC;&^g zryEqvziJt(%}ng-d!1O9Og00*Kk3?Yy*Qd!$<8}#38bS=qBstBWKEx0QXe_E1?wbR zQMR#v2gm;j@EHeg7KLFpx-hWv7~oF?W^&!Msk5e*Uqn2fp(at!P^pG~zN5ze-ws_y zW5nymp)|%|rt)12blglJU9&b_>jH-NaJIs1@!A~5&9{hQ^I@E6FAg*Xq?z36p&xIA ze6E;Z+nDL9QGT2*Q&BoiQ4kzrw=OlHNZ=kJ;1kYDD zT}N&s)6H=i^*}i3Qu3*36G2SbbWWp(!V*z0Gii>mX_Y_7fn_ssF5Vq*K-o;BS2A?o ze4WalNS_B^zC=;VQO#LHkGA;mMUBxzAdc~#$gK7)50%(2@F>nJj9r^V@9@8HP@(Y9dG(NE zw9sy2(w!nNybCSF=AqepKvaXINB$iCwUTr#u3qoiBB83nO`{*v8cTZdUkUnfYy;;l*KS!n1wKP30aHwnLkD*ABC}9mbGyjI= zh^~H)0I@}gh8Z3vwX{sCncLPv5B5|9*a&YC$>*>;zMYELH|o|}FCp)2i#T7KlGOFu z7I828WOPG2Fqcl3#-_(bd6-R8`U1Qt3aNE^Ic)Vbz;psLP329Y2h$Q>shMdJ=$Uaa zR4vWZXtnZ7(6UvzxzU*_eq+sj7#m zbXEFG8oOP9P0WlK-q~tR1tCM#uxwXVf+HNMg~OlPIIxA-ZPQs#o}je+F{XoQK3|jk z0o4DBq0Xe!XLOH=ZXq^XczY@@BQ9h+s&)W=5e8lx(+XZF%Ik_yH>bD*^QYFTghfxD?<4ECVbDGyoa_R|A#++{TJ0 z#rb`+AhS$}DB<&0U%}r$E9H$SaHFy7NijUk;p7=8m4(6a{qy;htZ@xE`$9B}{LQTa z8FDX|fo8hLr5Dlk)^xd_qQiWC!V)zLX`fPYNq0Rh3Mv?E^t6(v%4f+54o9jL6-EMlDZiGfLdh7NLHZ0Xuuf21%Pn`b`%)ile`Vo+W~g~HUc&Q z$iJ=JDf*8;ic%2)$qSKp5g?x+m_xa61Y-Y`Q&7s!RE!-vMK5hbQdjp*u`hW6`(FVP zY*h^fU(Ra6%zTy##{%5suiz)A@VteJ3(zz;ER!_QVZ51c^0Blwcfcvsub;}-%Qxy50+Lgiwj3x z78S|J=(AtU(ejgxmHWm2weN@uy8hKI#tY-=gW``9k|1VSZPUpw09aX4@Px)+?+cnq zmZ!%~TGDEMQ=_JawBqSQVgdqi|L2e>)rKY;1>NG+9-S-^)pyfGkpF!j{m0B`^aP`C zd$vON9{@ZE_&wkuz{3Q=nDeeR1&JEY?0H63w@6BlG&3RDc;&D-hGYAEM}$b!vV`%# zQ86<70S&B%&TE5dY|(X~0?91exXBm}K|BcuXV~h4kJ1q9|6^8KX2jYBTPBQRHefle>1j zNRBP^>fp=byKp*n;F`+LEIYC6zDhpdz6yR`1HfD5ClKmh0Q($oY`l}HTZ5CJ;RS+< z4B$nBdU=N9m^yRg*sp$`0)LUcL>YbtpYR6NuUFvj@e2U;D;M}~e4DR+2-At=ZU9`e zxF1Wz|CHiU6oHqderN%gDCTDvaCgYPp@@R|l}0zx9053tujc^GfH=415C(A+fTNPy z(D?YoXQJqF=?&z*4#*%N^?*07f?aUiRd}MC`;Y6j3E3-p_Rpf@z{Lm1_z3VHfUg1H z0{#KO6DHajuS8!yz(T-sz#>2c;3_~PV6njX{rJ2ZumZ3IuoB<~Gy%?jsfagIu72un zu?oef1Ev9@SBq!ftrt=m-n0L|Y}e7CcX{lf;Lp%0RDar z_zmDjz)gS+fLj5#0d5D}0nh<=0yYD-01UuAfZqas2e=n-AK(GNgMi-y9s*qPFz`{p zcEDqR#{oM4PXTrUb^&$+IstnCU4XrSX8`*Ey^P6!5>NCwMc*!AI#<$ZH%Q<1jxy3n zev{1RisY{0Z;Fu|+h6>acv|o#VmhZ#Y{!1%d4?Us?8SzrRr;I#A&NqA5Gu~p)j{>x zAvYjebxCPv+V_+0=wX`-F18HbR0nWqzoUpk@BZcOk+*$icC`6~|XA2|Ff$kU%n!I2$QV0RxU59NUd;kg>rSu#LesmJ`HE_ktFrU9r33 zLk`|P^r?NQW;E^ip$~0mGMzs3q2u?y^rN&0bGw`rS~_S}0QX6kB& zGyD6W|2_BKbMH$0XZgEU@7G#d4k`Hg;M}nBjT4IUj)1+-f!&8kF9yHa`&HF56y~$< z)dTGN><1Ws$bN+J$LuE<-(o+-*kC`y_;dCPjK5^R!uU4(HOAktcQC%oev9#U?DrV| zz~007KKlUUAK9NU{+ay+Be1{L18)Y{-`FGeclHnVA^Yc-!fysLLH4iDJf&m~uz$}f zeIGsiP(5?li{!ZLayz@6+sfuFlRMR9x?C=9YZs)hjbB*ME}*Vmvkh*#x@%ab(}?}= zsI2Q&OEVTTmJRM`qL60o8=$$Cmg8ElWBU< zGFP;sQOY@*VLC3?nPx3(Wy>&K12dKKrf#!Fobe)ec~;Nox#L*&_U;Da7p1PH_jI`d zr_uF){2uODto_rs3*6MWsppEE4QRS(ftc#aoopJ#BCgP}G%BYRbi*Fd@dteAb-C~~dWF!MGqiCa{Z z^W%i8MN4P9Gqz9Tvo@yZ3y%dhzV&I`)6CWtrE>APJ&jX;dzuE z4)xRyv^UyHx|_{grCiq8G~9fl{;lNE`g(6i{k`Pk!A4UVkJs9)Po$E~ji(53=DLwu zdb)AQ<_>qWSiq@&C)Lx|Xn8CM)4Qo^q|sW^x3X@*#!H(uE2W2vF9bq?@WXHSPN?A; zeiwYD-gfl;k44mDd?zOFpNsMw#!@X^7uc$$?WKW~2#F@S&0 z)WQ1cfe|mGb~n8pYWAZ^2#aTEQo?PZD6ypw9FW2xCEV(F^g^?wrh*s1iPm>F3Hph)E%i@55mimhS86ENnBOoq!eD+O`noyVUq9)BDU=WOc75bcY>n!%mrYE zq#I-zhB@MSvIKfwg`1=-kmDrWA}tWO>-CWtRnegr0ouZZD( z{3uKj?{CmFd1qjTa#xYtY9?GGyp9+Zds_&?EJ^bywTiXhB)*00iI*ucuflE87RWOM zcZf5{cqMn>F7a!We+gbEUZngAWQlXgZMA!lCu9QsL_cuiW#U0tAuf2*?}0(QiWv11 zBd|tnBI6}L1{QG{xusTubwV34hI@7h_qWHz6du&eP@&wGtdu+r+r(AmgrD>{+#}%) z6yknz7EF_JE#)Zr)bgo($AUxf+c%gEvj zDwR=T5+x5`zbiuXlV@RyJk!WM!lQ>^hNP<~9r^MATqC@W_`Go7!OfC%1Er`aGDkd* zEbew{Q-zx(EeOd^z5;iMMZ3Hvpsr;wiHlf+yOewl8T&I1uM;mK%e~%EAxqK{O3(Vq zPk~OHL)OHUT!lPI45cnHB`01+e#TF7SRpQWD75>@Q(%y=ij4is!y0js@+YB0Y*Ky+ zEaEb9tDig%>%_M3i#3dfz#+*+2@f_672*wKd9Y>(Ha*g|P>cAvPzF#xl~^T^`$?wo9bnNd=TTYdc^NQjb_1e7O({RRA2;lEDu-|zqc delta 2145 zcmZA2%TF6u6bA6?u?;O?V{EX4X-Q&I!oxrwBqT}#b|DWENFb1uI0?ou20LJz*d{y@ zGOg5h(@M4EMYHIls#H~7R!HgpP<3(prtT|Jc3pi^cHOk+-jk|Pkr?LpoioRtd&lPM z+~12GpSfH$f_{uI>(aqKA)YGy`{RCo^6V?)i;ho>uqn-N%x}%_% z)5Ptfbc^SSlH&c1NiaK1}7`eAvp z_s^j>>8#>1(+kCPE}O`2#A)kLO|o?W z4O(8|+(YHPt9JNw;HPnqx)9LVBb;6tjG|fV6)IVe`tYh&D-D*x9_-cHC!CEkn8SXp zkgoNiP3wTJW$>C-yRIF^L9Gs5+eW8Wm#&4;trga_W%OtXeY6hIn<(AEVXY&o-`|6y zTK&{d_Y$~l;Fu1MKQ9kxolxWa8#t+TS~zP(Q*b!PF5)KNPj;v?5w&#`n!;0uksZl zVA^q)qr7SBKsFLrszXBiLj=AlIr_*=9c^HgX1J#pH`p;UJ(AnF$-c$)L%7YJ z<@yrh?0Is1={^>irlJgVA<153_h5;gvUI0x>L}K@wxK75PGFP0MGnZ2mBf7x9#G(yp?++$ACjACaoVB=ERG^} zeN6;WJMS(zs9NUi80Kh%qDC2_9cG_npTc?e1+w~rYKs{drO2X>-$j+l&}m%ao-uNZ z>Pa{-&e3IxT0ais3Uh+EUv<#NO>%UVBCi@U#hxasXS;3Pz%`C$R3t;kaf7Xv%c=se zT8xVHCYEuNi?_&b85+cG_AFUFD{T=6;vCIUL@O3Wf;~^xE0%R&fg_V5j|`nelD$aw zsVV0TEUAcI{|;qMG8n@$_pGo}$gs2O8X3$Y$IdI4W>H`kiGCW{yyn0fM;jD*O1;=* zZs`Gy*KwcyfZQYlVQky^`!C|)&q~v16`~H_T8iA#Gk{?>FVcuZG>_PJTQ;B6AKvw> z?)rLRh`^-rByeEY-@WT=BevYL(=nKGs?t^!;x7)+W2ErIbhvG;5bpBh0k7jd`hWNj DG!0g$ diff --git a/interface/__pycache__/dictionary_jp.cpython-311.pyc b/interface/__pycache__/dictionary_jp.cpython-311.pyc index 4a100105c2ea364d7ef0e41540e00e291433d965..116214e6ccb66ca6673b72cccc6aa4861f3a2deb 100644 GIT binary patch delta 3485 zcmai$c~n&Q702JaVIYAF%OHb*5*=DGL0jVj)m8(8Y_cc2$OGF$mqfZQB0R{?YsUUACiLIB?H=zIXZE zdw*|cxX?3u){=S4ZjYAm=O5cQx5?WiiE)_!iJE)y@xQ*AsmWTKq01&-zg03loCcetvp0K zqs*fHz48aNe^mZ7WVvZk{;WJwK>3UESLNdo+f7TYr2MVQDn0l2@ekzhuGHciRli^D z_B1#4dK$f*sxRQePTfLWRp>szf+H+A$%5n4Uw$uqDNQGcGV=VCMXthv(j5`kgslAJf7&`lpBAV)|94-(&hUcGg&ue`#uBfFG)V zp6R!k{w8KJ{W3eN&lsaq-x*^1*z~vVGyOW#Uz?hoVEQ;SF7lJ~m(j(8jR7hfaw=-O z>Q_AtO--uL=k4yB8&+G*J2pm{@g_6gXU5wscxSNzV=&x5FnjGrDCIw=^N~lf!1PFe zc;G#8<~81eej9sSD6_Bx+8m$KxH$XOVT_;E#<0nA(<3+_j`ljP?Ef~ycZJmr9ClQk zah@617Y^eU^!s>CQ}5OOw5vXk-|IOZXi$8CbV-w>sfqrXTZ6N& z;0^}E!^3m0^)Y@kmxn`1Pv-HlTXF2tQWnG(&a)sc`;Gry=h5T^>?nNqD@^|qGcGax zRc72~K`qFP31-~D2TT+~#Eamo48Qtqrr*Ttel*!1iuN`1s2){m!RIp_PoC8$rU$+z zhNC)Eh7XNLgzSsqyw`fnczF3OC!c03u5%wMUOb<7#)G* zgh#K2FT6aD*kil5L7D4u1D?o?yDW$ogN5H^L7Zgi+;jcTXm{@7b zyB3Q~y?-;@j}OP(u}@6=#NrnwX+t4?%u0Iuu>}qRo_nsK4TDLPM^fUo?UR~Gw zOenfr^{IXj=K6->*6)Z5*%t*KRKET}d?>b~q1WSY?N)Jfoq>+=^`EMVu-JyCH~v!# zVh0xd^JP9INno{DEFjm(sgVyNVob*xu<_RrDcRyck`i-m5G90Y$rfua+XgX$o{?+` z=uXPDf?Wvlk}b(h-vtSR9FlFhneK%|K~Ah?roI5lg0$t5&0(hQh7^G-xHDxdtQ3@v zb3 zWW#M{z;;19B%9rIY=IY%v`EOcNVa&>Q3QDw;dUe2udIQ5!ky%#T5`v~C`Ar4xLFei4EZrB(=# z)I(LW;RJCn4>6r?=p#Oj9Ai2w;U(fT$O%`Dfkv1si+d@BJn@i&TSFlp{rSW@5fe>k zDHISF3U?N0K&s;O?Cq6*_7vUgr?Y#dG@nQ0Bg*xIRJqeKRcq+F{=sfRo(y_JwtMTiaZ zN!p3hGSjsm3IuCVNJ1qPQ9v>Ba-QR}LJ3K`=A{Z5N=Yh1DUC z-h;fFhwPW3lBB&TIZRg*R1sHOasT*cl``@opoX*q7?WhWis2yf(w)_!PxMwM!y$4X zMhUl62zA6qkj2QoGI&U;M`@+$Du4#!M&woe&>|~nO{6KPrI;=^sKm|4D|k$~3@s$J zqLjcx+K7)L^AF^V0vV2x)J`GQ&_UeELrm8h@Dg_+$C|DdI8NNn=jUG?8C6#Bk>`qLg4JRzMr^QDlBo$$l#wBdHT5Y%Z$=yd==Vx+0|Htd9~iL6*|+O3>Cs Wa_fzPzNK*@+LWC1+pXh25dQ`|Cn&1` delta 2100 zcmYk-OH3PA6b9hy84oCcjj{0FqJf0#!5ADm6#ivmr4jddlysuCG`Q(c_TdTFcvA(swvtC)!`ri7%`qBEy`q}!$ z`qkR~xa3pUq_BP)6{q)J*6UxNc=`LOKZ}f9J8h8fY;1FHeVBWZZ>T?>k2OBaziRBx zS2t~Fx%T{vKt=vyv+3RX=wSQvgRQR)wzm(qpXdK>+JE^+^SIkzvR9g#$tLE~so6wk zeK9+CC+}-4zpz)ZvbeOAUf(;$&xveyuV^)yNoEt&p4s#Kf9{mLshN#L_ReZ@#!4*b zQu%1xzxD&VG#CA5f`vjrcez~9MzwIkzPniZYhgI&C=f;|ga~vPC{#g_Fubz-9Ez1n zgi%K2V22Km3Vgx{%IZOsDfxv_A*<5}D4DdE3^yU9WLF5oFT z!|&q_r8k99PJgB9u7;B;h^X>;)F_>LUB0H_Efv(NaxdzX>R*>*I!>$Lj4Ipb(4hD> z)n#}M?;1tV5Ghv$McFgBGQ;yk97;A*zB_Rc=9>(tFN!<}})sJ`e^?vj*pt zE(pUT{ZU*b*#+ou3BxD-edu(la*XWRsYMsFo6DoqQG0Gm}7FSh0>~W56a7!yD*pu9%JG)GA#53XJEVoB7$2E)FwW@g+k{m5j z%d(bIM zlV;C8I-()&eS}L~8z$4;REx{(D`Y>M|39f?gtIZqywYsLIQtrz?zwqfXW!uZMNF_K z59?Fxn_O?lE%t4$FCoF6C6~%j9p>1UW~*QbNePc>@l6@Pj6OH)9J=I zXE&%PC?oxtU>}{?B-PZl4QZI-@=c1oGO~bM?Av7L!?MvQ3Z0boYP*49ItgX<{ZPZMd1f~ns3TX=u;@5m;2hJ1NFLos?IwlE KKdbBXW%(bJGe%wj diff --git a/interface/__pycache__/dictionary_zh.cpython-311.pyc b/interface/__pycache__/dictionary_zh.cpython-311.pyc index c6024a0fb49d2efa39ee20a598914566390e782b..593bf3afbb9e3a1985567628179ff11b34abfdb2 100644 GIT binary patch delta 3132 zcmZvd`&Uy}7RPUHh)lr<1W6>QP^?x(Xe%8@*3ycgAmCd>jE_h-0aC(4l7Lj@QngjI zXxdnd4_eFARqCo8r?^~zQ2v0<tsble*Mq`qMUth0&(q+q&q`MsMe?2t);d@E{+r>Sy;*!|=>~{ej`#t*u z#y>I@;|J_Rj32R&F@D1Sgz;1M8OA@eAjZ$x7Z|@}f5G@y_7%pj+21hUWg(0j3uBD1 zD8?B3JH~&oZvwh&I`%F5C%eah{fm9azGwfwl6XyLOO)7uc1TP9JEF=ZW+m0(^m?5g z_6ElxyQ8hu>G93QcD3>Ik@LeP!pbQtsf}G9j$NM!Ul`N;F9y?pyu|MH`doa~&FAA2 zLsRdB&yR&h$HSLzMNeLjoVXpibb@N!?L8Kqx)_?cq(t9&YkJMQQ<1^m=&_;DWPp;i zJGVm$KO^*E>C)wvO)U=1shfQ&(db z--tceAG>ywY6mlaKHctByuJp$%R_P>5ts#i{FSZKX*MeH5hsMV)*K)Hg!BSK8^>PZo}m5aMiUox}6@ox6OXgSH~2O zF9Y`vjrK*~d?_|K6rFrqyL>tN-WYxkX8a@_*Li*AH0r9V@bK%}t7mYi@yo;gLpbsW zMea?U(q0=6ji1G)v>OAMjKw3jhO~*7?@jatl_XDHr_=6ajripG@F)$35gNTg$wA`} zDSZ1?w7oVN(E9r06R9c{&`#Y9UpN`MbDQr!^lI$nInw!_N$$2fHoc`yJh0POqmz@7 ziNJ#fgT^0n_@0mR&hDJ0lA1^ljh(^$e|joy>^3zul9u^Vf-#ufQs=eTx3xI1&PZrp zif&~v5hbqpGO;Y)OzrgWW8uCt_$zWJp!rXQ2mR4o!@-mXD?MEmu3@IQ<>CG}E3L!}{%u;9PL9(Ekk|7Q4 zj6E_Kg^(&4GSvCYAx)4;GR#3c+op$fA(*k;Kmk|~lo>EbGMH5BYRDAcT<*<>c>?BR zVb!_}vIXTxhS{pM5grzlE4%_&Am|a{*^H(30fr?lKqQewScE2 zgHbgtfHi`Ob&?@fH7x^WtxgCfC>SxhlyDvS%V9n72F^IL3c^Z6oLN3p5pP7!07=d& z*1;x{wo}Suu!FdoQgm4>VJ9iIJVQ~f1+be08>Q%Zl|3ZUJSaMNKK4*g7Ncyjr;{W% zN~wGrEyS&Sg=)@+HsW?#B3ZWU;UGy$2hZ_0frr@3Q&e*|_=r2H#8T)YK16;#bQ2#z zPUc%4CGJ5^!*U8?u`HfQ5v&!L8cL8;(Jm!iCo7U6T{RcMdJ@W}{c^$$h{CQQuH?3A zeiW*RHj=7kNx}EXoCiBesKFe(PCc-TxE2}x zeArEFBfkOm5bwS3?<3w%{w}Z+JCIZSN1>jO3G4wUVFRL)qFVByk%T4`Osb^_T*PkV znRxeG2-^|U{LOHXumcfqdpmfDJ2_)^7h(Kt4xwdK%}b!0yl0TpG4-&lh}(Yz8J}Vy z93{V4&r9dxW7E^yfoxH8cR(reI%Kn&TL|lk%aAj1whPK+C?{zHEm;K>#FfZap3)>k z6-gUWQgE9Uu!)4tC)u1&0Y60vbtVMiS z&Fz8R#5QD;n!5(}5KDA^n$=!3@hz4XFd6ode}GH;pmoF!WbBARJuySZ!4!j&xB*$5 za{$p&Co{Nj-1A893<{Q#z7qb z53%>Y?<4LczZ$xT48L9>Uo)Ygx=5PF5R|4!KX+KJ{)T|X?Cq7_9!K`ML zK^+MW4iAnV1IUP6&LqEGOr1ye1q~ MGShd*G5ojxe@WkO8~^|S delta 2013 zcmZA2$x|Cg6bA6tNP{bYkdVv>B!WRA>{4P#h^g3N-@!IJ2-^f0HnSRu)gb)~RO!MY zha8g1ImIF8oU?VD#YDNdDwiB`c$HM{dEFmQQBg@^e&2i3Gt<)}UM`%+Yd&|oa|OSQ zFZ0*_sTSgQh1W0d)yChS8ei0;j5_;k`y2aP`#bx4TiQR^FYF)fpX{IQU+kCmrTy#2 z1)n+M!p@F~+TSi3oE_FhSLqAaMWn*x$b1kk%RCLojJ^5He5F70Rd^&5j8tU?BY#}9 zR{rIjEy(6=&L`&KB&lF951hT6`0{!0@FYstmctnYt;>dx6&+t}DX$i9KUD$3nm zN-QPkxH)mrSQB)lkNHv@{7L+oBLq1e4hI<%Mlk1l-cW%Q;-84oOj4RlMZT$ndyaD^(g!nzith*qVp&Cy$0RadoYtr}gksaC5_*XpTW zE8U=rlN8ky`uiO|hqEoZtrEPczyNJN3lb#_;@2Z}&RZ74~)grAU+JpBoL>(Q#hp0#C2tHxw zsY9N^DRvGmeMefTT`y|tV0*dT33eH2Vfv-jLfr^@uIjyDA5)k6;Q>{aRy7U6 z*QaL)y#q9i+I_Z1o!JBUA={_cPN$Pb5RDrm&CiilPZJ0xxrdiiil*RcHrJyx1IJNc zrdjyW>-uB(3F=cc2QRQaXQ#9X+L|d^0+*R-j|@a<1;Hu@J{f4CHF$%a&uf1Z++h}; zt$KBNsOkzX=a5Cr)UO_vwbq$O0%%Q^<%Cc zagm>55wQ(=jQU3^QWrW8FR=NHY+8hEc7d9xC3u;weu^W#PFg{<$`Q{M-&FW1yF`XZ zXkD3qe>XVrs#(}X!xr1G#^^9;8__ODMKU-^2{;Kqp*?tC?IMHybO0YKpBK<`@Pujc zh$Sf(og!*;se=aU2dUkKTg-u92KK2F?qV0oK#aO!Oi`apl&-lhL(P|=p36|`6+gL# d2%I=CdF>dP!0qz#mFw+#Cn+qvcMtjh+`k3PFTnr+ diff --git a/interface/dictionary_en.py b/interface/dictionary_en.py index 5132070..7aca426 100644 --- a/interface/dictionary_en.py +++ b/interface/dictionary_en.py @@ -112,6 +112,11 @@ translation_dictionary = { 'rigify_convert' : "Convert for Rigify", 'rigify_convert_tt' : "Runs several scripts to convert a KKBP armature to be Rigify compatible", + 'better_fbx_bones' : "Apply Better FBX Bone Orientations", + 'better_fbx_bones_tt' : "Modifies bone orientations to be more natural. This makes bones extend along limbs instead of pointing upward", + 'delete_accessory_bones' : "Delete Accessory Bones", + 'delete_accessory_bones_tt' : "When enabled, applying bone orientations will also delete hair, clothing and other accessory bones, keeping only core body bones", + 'sep_eye' : "Separate Eyes and Eyebrows", 'sep_eye_tt' : "Separates the Eyes and Eyebrows from the Body object and links the shapekeys to the Body object. Useful for when you want to make eyes or eyebrows appear through the hair using the Cryptomatte features in the compositor", 'bone_visibility' : "Show bones for current outfit", diff --git a/interface/dictionary_jp.py b/interface/dictionary_jp.py index 4cc1de6..66d0960 100644 --- a/interface/dictionary_jp.py +++ b/interface/dictionary_jp.py @@ -108,6 +108,11 @@ translation_dictionary = { 'rigify_convert' : "Rigifyアーマチュアに変えて", 'rigify_convert_tt' : "このボタンをクリックしたら、KKBPアーマチュアをRigifyアーマチュアに変えて", + 'better_fbx_bones' : "Better FBXボーン方向を適用", + 'better_fbx_bones_tt' : "ボーンの方向をより自然な方向に変更します。ボーンが上向きではなく、肢体に沿って伸びるようになります", + 'delete_accessory_bones' : "アクセサリボーンを削除", + 'delete_accessory_bones_tt' : "有効にすると、ボーン方向を適用する際に髪や服などのアクセサリボーンを削除し、コアボディボーンのみを保持します", + 'sep_eye' : "EyesやEyebrowsやBodyのオブジェクトから別々になって", 'sep_eye_tt' : "BodyのオブジェクトからEyesやEyebrowsマテリアルを別のオブジェクトを別々にして、シェイプ キーをBodyオブジェクトにリンクされる", 'bone_visibility' : "現在の服のボーンを表示して", diff --git a/interface/dictionary_zh.py b/interface/dictionary_zh.py index aa6f101..953255f 100644 --- a/interface/dictionary_zh.py +++ b/interface/dictionary_zh.py @@ -112,6 +112,11 @@ translation_dictionary = { 'rigify_convert' : "转换为Rigify", 'rigify_convert_tt' : "运行几个脚本,将KKBP骨架转换为兼容Rigify的骨架", + 'better_fbx_bones' : "应用Better FBX骨骼方向", + 'better_fbx_bones_tt' : "将骨骼方向修改为更自然的方向。这会让骨骼沿着肢体方向延伸,而不是都朝上", + 'delete_accessory_bones' : "删除配饰骨骼", + 'delete_accessory_bones_tt' : "勾选后,应用骨骼方向时会删除头发、衣服等配饰骨骼,只保留核心人体骨骼", + 'sep_eye' : "分离眼睛和眉毛", 'sep_eye_tt' : "将眼睛和眉毛从身体对象中分离出来,并将形态键链接到身体对象。当您想让眼睛或眉毛通过头发透视时,该功能非常有用", 'bone_visibility' : "更新骨骼可见性",