From 702f54ae53646155e9b339a4905a38b89558c4e6 Mon Sep 17 00:00:00 2001 From: Zwitschi Date: Sun, 1 Nov 2026 17:58:47 +0100 Subject: [PATCH] Move the shoulder bag clear of coat and dress skirts Narrow the bag to 0.06 m and move it outboard to centre x=0.292. The body inner face is now 0.262 m, clearing the coat skirt (0.225) and dress (0.260); the strap lower points start on the same line. The fit report measures the bag body separately from the torso strap and uses a signed inner-face clearance. Run Blender build/bake and Godot import. Python tooling 87/87. --- TODO.md | 8 ++-- assets/models/blender/manifest.json | 4 +- .../models/blender/npc_gear/shoulder_bag.glb | Bin 9148 -> 9068 bytes .../blender/npc_gear/shoulder_bag_ao.png | Bin 29584 -> 30529 bytes tools/blender_assets.py | 40 ++++++++++++++++-- tools/test_blender_assets.py | 2 + 6 files changed, 44 insertions(+), 10 deletions(-) diff --git a/TODO.md b/TODO.md index 4cdb859..1cf9303 100644 --- a/TODO.md +++ b/TODO.md @@ -21,10 +21,10 @@ live in `tools/blender_assets.py` (`_build_gear()`), the contract in `docs/blend Rebuilt GLB/AO: measured width **0.202 m** (0.64x head), still inside the head band. Also fixed `capture_realism.gd` so `--portrait-type=N` is actually parsed (it was documented but ignored). -- [ ] Fix `shoulder_bag` clipping through `npc_coat`/`npc_dress`: the bag body spans `|x|` - 0.17–0.25 at the hip while the skirt flares to 0.225–0.26, so its inner half is inside the - cloth. Move it outboard (or up onto the belt line) until the inner face clears the flare, - and keep the strap tube outside the same radius. +- [x] Fix `shoulder_bag` clipping through `npc_coat`/`npc_dress`: narrowed the bag to 0.06 m and + moved it outboard (centre x=0.292); the body's inner face is now 0.262 m, clearing the coat + (0.225) by 0.037 m and the dress (0.260) by 0.002 m. The strap's lower attach points sit on + the same outboard line. `fit` now measures the bag body separately from the torso strap. - [ ] Same pass for `cap`/`beanie`/`hood`/`firefighter_helmet`: they must not clip the new brow/ear geometry, and `hood` must still leave the face readable for hoodie avatars. - [ ] Rebuild the gear (`build`) and re-bake AO (`tools/bake_ao.py`), then diff --git a/assets/models/blender/manifest.json b/assets/models/blender/manifest.json index e975096..0b3e278 100644 --- a/assets/models/blender/manifest.json +++ b/assets/models/blender/manifest.json @@ -1001,7 +1001,7 @@ "attach": "back", "bounds_godot": { "max": [ - 0.25, + 0.322, 0.348, 0.139 ], @@ -1017,7 +1017,7 @@ ], "path": "assets/models/blender/npc_gear/shoulder_bag.glb", "triangles": 188, - "vertices": 212 + "vertices": 209 }, "stanchion": { "bounds_godot": { diff --git a/assets/models/blender/npc_gear/shoulder_bag.glb b/assets/models/blender/npc_gear/shoulder_bag.glb index 720dfd6e81e16f335c4d144a63c7ecb2d6d0e5b5..490afc2f7272f8aa680fb5b8017c7c3677c156d0 100644 GIT binary patch literal 9068 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 wo(BOHPT~9K_&fps19Lh{RsaA1 literal 9148 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 literal 29584 zcmX_n1yEc~u=QQs-JRg>PH+wG8dy98hv2rj26s=e;1V=J7Iz5*cXx;2@c7Z$Y=rp=&cC?kYL`bX)JNB|9Wnk@=~w@11ef? z9XK0F6-fZ7i${GjgMaH&Stw|#0DuoY06;9TqJ(oU0X z*SMv7i$1spc3nPTTfXU2)`{!Vcd$*purX`x9LTw4en(j-9tYKLK;yfOyh=9W2m@|p zduX{aXzihDE$e8m<6om^$5n3N^IYJH?ffc1GQmR7-uVHq(3J-Vn=>9fw3yw!Y{c~C za)8Wjbcfxub;RUf{o2dP8ijP=RrZ=a?D|s2$+ZEtCV&*u`S`oD0vtJ=|N68?D1Ozv ze%E&DUgLXWXDULj;VX1*^UwVg>p2urEWyH|Vx3>>>+h8l$5&5{mn-qttN-SN(Dl4N zO}svJ@}RVw!}L@oA$gyE*FN!qX39774A@N!V(g%uo4($du05};wIi0B+z;yo-1Sh7 zTU9yJdac$>pFNGADbH~x7SX5~8{@+7AT#9Dw*J8Mo$u**ee8TaPz!t@>^Kh_Yb7@$ z+ht`^+Ht62!?Xg9zuxjJJfC`sucA569CZHo=s@7pfWf$HTHHXo3n+y84^Abzkx2U{ ze$5Y{lJen-PZlv85=Hq2jdc*F$ zc#Qe;)!VO{=mrw(0Ow9+?VG4Qi`9Qk&5b>Nua9e{^5!@%U6=vqH`Si)P5(YY&RpVs zN1IoP=;)6Y4%NqjBgMAQETn6dW-o7sEor{`cI^2^hb%~xsMTX$n!fCq2CO3nP@S`@ zsMmOp*?j;cEMbxUqJG?$+Ps>#h<|@jl)U;jb)%&`v;D%=5Bc|>-A*{~*Ad0-zYaN$NjvT-mSd!h(E#ZdF(tK!*BgU3Vr?DLo>+zqsqA}8;JK^-dfy6 z21aR$&^#|634850d+eZm>Z1H&_qjXYzWN_SddGEf=UpEM z!2&kg(_+o@qHcqQKz2o`=nhj_3JaI$Wx50mR7h<(hH~Wg!pj;5!H->``CL>Cv`!+( zwf?J$c>Q6n^W}crvtuIQ-_H_yrPut2vix^Rr`InvuMaiCI5^{FqTZa}S-$R=$=g2{ z+RGl3kb};X#qX2jy?SXx+cSIa2QdL%EP!d}f(!jDJ{=ak`EYTERm4w37QB2uTqV2J zI_}QCQF8VC+`uXEJG)s>Fn`3 zs0V_(s#-)EJ@GpVjxFYGmlHw%qvvwX-yer2{#(S`wmm+nJ;4E?fa8IHQPG0wUVyrD zOQb`($p7p%z)7~x!*@+@x#^Cbrf^|bk+OPyD^6q_&!@s@<#Snwd>IXA zz&vtOLRgnZn9b{4g-=fDi(j&!A)GXp$5l72zx^nEU|QVW4e8!aYrpYI2R5pU=CdZR zfHUnAg9)G6{|bZn{SccKqL`sIBnRdq;NiDx4YV!a4KXhLH^RRDXQSq|n~!Vwx@}MP zHX_+zXC;cD^smulkokFCPkCxediNhxw3h7*?++BG2?Q@;A$m-8Fl(AgTdiWvF*VZG z6raB0b7!3N!#bwDZ=!nFW4=1G3}v2^q4xSPg3w0BhyOcz4w~cx z0L}>6upGmv{EwTb)d^%DgDlISpkQQChh7~!_&h)XEu)g}by%-MifB4TpU%10DD^}` zbs{M|9vcR(V*}ku&>^kR91~hhBy0UuZJ^zYnu^o!xKCfIJ5+rYbGmza*0^j|6kO8e z6hrhdMiEDANz?OTd7Rdf4P4ll!B^s-gD7@s1N{6pM#sROzG+g4b%ci|p;e3|{BQAT zmV%0+Mm`x>=+>H3{D>SiCL+8jsQ>Wun;BmW$rt1>cyP&ya|0aE%wlvdUhB0U9OO2l zsrWigzf{ZrCsMJy;9swtDqx9o_qJ`t70ig`5{A!g(>bqP&fnqf#Mc& zv?E6FKa@&cZ2aoFtRIX-{ld(5=rwnt4&l)Q4BYOyiEei8+E+8-E9CFTeqLA!s1a4M zSwKDD5LH~Z5rK%G$m8+g49M>*QIDu4I&=o+b!_OIuj{uU8Ok#<-c6E0=YFl(nqA%M zUBob2?2__vxHLm5#9_H%EFSy*FWwc!co8C!FcN6BN?#Nm8B60UTDxh@yd;)>b?CbP zZsjApSudekVd_;<-eh%>UF4a5CGoKS)o@vvo5)icFd#g3I4BNpP8ipR;vxb>!2Z7E zVJCtG8FK6uxM%-J$S742`pF-~+^wMP_`XVcX%qqBY!uOq=j%dJT^{ei+4JlK*vbvx zuGy0OZqO9QrM_2U4DicUV;HGVpCX|LlSA&7CIhgY8-d; z2A7gNUayAG5)^f4vF6oRU;Z`cr#%f~LiRauwc{qx))#OAO+~aX#^MCZR{=8(2I;fm zX4b&z>Ff;FVns_dN+*86+yB$;>0*Gx%AH=)4rCh!Lf;>y7J1v<$y^BlIIAUK`F#N9 z76BPelP;_sjwnQ{DSQha~8H=gb*$&ms4 znD(0`fReOrYC6N(9?4$Z+HWc5Z)Po_l777B%68QsbS+8 z?1&7^9;z6RL?0~enI0*O-fHXLEH|X28x3o(da0352k%tl<=PtGi(N#i<@7v#Dlz-T z&E%^qm)$g!NC^x*cY_n3U$>sm0>xt>;x8BRzpc}@k5buys-rnt^*9lS$>K&)5sTz% zcVVPtN7N7of`826-DV2*-=?9wU+R1| z%6JPK#GB7j*oa~_hB;Q!)|$^7m~3V}(lmE2d>BktJX+pgWlkJ}XFG0^4c4rS8mDZe zAbao6yl*>h+naCPZUP8@ht|!G{m4AA#lDjh`1R+Dr~C^A)x#cB)J=RZrdx!_GWDI^ z$0NhHllgt%Kbt^)A}3)qc`?<6=RXv$L1~K1(!ht(4zrD`5PoVk|3fW-10T%ADY|w} z5{nOvVVV2SgZUsYwwh>*ivV$jTjaX>NT(>`^%e`VTn=WW;L$3(oI;Xnbit(Zg?@D= zGrIH0a=g8A=23dcnMLR0${E4^y$1K$ZNm?pLxF%TfoSnLjp{d-+?|2q=QNN`8n|l{ zP=fT28f%)Xa4$+oVGv0*#s|7Q{UySQZ7v-xr&{5)ZA~w%-Ok`JTuQT1?6kqe&RP< zn#puKe~Xs4mr((+DU#QX#oU*gLh)(9`dGAV)502q;0SxLq}(+&MN`OeW#BL&>W^?c z*hXZ>E3Jo0|D530y7a4#ryY);NPA7kiL^M#<8qm-Y4y_JF6hql z1?=o`B_hJJ1x6BQMqw{5Ruh=$J9A&C{eJVg5o$Sk@U#I+l24%j zg8zzve_jO%~3FU#U%)k6pOdKVrKPFfIb3J6?YdIP19ItUNT8D2)2MTmwX$6`Y|Kxra4$}rZ`YtU!)X-UX zQ$GKpY#+5^|EXQpN9MfV_KE2^4||dYo8p9+pA%`(OP(iX_mm$Sx)DEBUrZIE?;{KLFB=mW1`)RJ z%Rc|4r>xA=l}EedP@CrUHCFNpH<#Ay$z{c*QB!i=o&c_EMnB)N1sJnMxPBd)d<%w1 z&nDRHRI{B<7G00L{Cd~3u=(tHqK7^oxzj#hq0t?&f3QNWPCrC)K6T4~oO`=0)%c&- zEs?h$eLNGs`Kwj>d#O2DqMxOFM}TWO`p0`_7zm;|U#1Rl&ObuUA?by`nWCk7Kb78* zVyIM58NB>mGN0bD*~B?cgro|MR9VQ%eZU1b!Hz7%`X=6HUXF0#4~F1)9n#m=Mv+Tp ziDM>f+QH_|=aVz90g(^klF&!IkUQxxT0gum#fgHY)>fIwW&eDEULkrseZ#(pSb@UO zR8zwX(FqxU-ub#_h9{?htL%32loZo|Gmook21~n4n{6;sroM`F$gro@?|!a*Sc-E< z*wvXIA0_V7iBGGb=S1jwd31@;SJ|A#?`yP!sMD|0OXX$w?o!iH%(&w+Cm(c>FGthD zjlP}b47qh8N`wc}8GVWTs$~wHD|y=NrI0vnF1;3ye0dA#ur7ue@{cE}SOVxR1nIm9 z6QB~|iV;^n&C7<;KFIuAc&2|7t52eM68eOiKcn*C{^-fiK`xPBooK!I`x|F>?XF*7 za^H}no*p`pI7H9XFcEI^?>EkZ$E##`^;bjtzQN;6$sB@%!8N!?oX*}7FNuBaKa)Ne zK^m8n40>xxw^E_**v*mc09SEF5Xk06)L~4hu`PjF43!p zK%)av)YX#`x6Xr(6+e}-WkP%vW-k24=R>^-*!s82 z)5QlkUROA6Ci`C}0r{Yk;(VTn2Z6GBLpoUEj}_xd4zHKE(Ejxhu13F-Ce%O{tQ9V=q3y zQcyG>9RNQq{?uyx=U^v%V44>6%^iJ*Xs<^ENE`nq@OxoQ^niD2)GRiYsN47~_wGqg zrAAial@&kOc*Mj{)+M`GX=4t-Rm{P@mJYuOyu7T-8QKbuGc>oqe;aUiJC#5g%2Qg( zEx2-^Vfw;QCj?SSQ)C4vQ&Es5x%&6Tgy_aj!~E6eQPFM8v-cv5Nkl$>^P&^K8p`=W z`t<}Av})F7nz%2#OFbOGX561)vP08D)lY-NWU3p={ZmBQJNSx&MhW9DFS|}J;Wp6P zl=m*NL}y>Bj6QN+$jIAi_o0p)tavQ1NR*FZd6ZN}osvEI-bW0laoMNhF#`GpGn*U) zJE*32!K%__x_~oz^L-nADhSuV`11=bSaPS7@cX#_3oDkHmo@P$b|_c_9?Vb_68jr{$-B&JUns>wPc&H-;g4~b!4 z=6BzW28YMj>}jF9-(bV z{YKD=Pqb%_>evj&_R4i*lm#_-PA6xc`n&^+`(Z)?j|T#=lu$*UzySBQMR+o+hCZ~z zX(j#6CC+bK``w&J?RRWJ$pdSYyJ(w%)&DCao)GBA@R!RZSU9|v|JmdAX4gS^JB_KM z-Tb1VqXVJUsPbv-r_Iw+mJx#i64h&7OVoJLkFe*yt%wMSO$ zF$|`ZcThyucPBp%Q-^fxpsu1MF6IrxKQo6Ee90BiLSyS-8mbAFW^_u9uS_w2^03;Z z^x`K{JuJsoFmEo@-`a@~9jqZx4LTRrr)INnqL**Jo8cVaGi6! z`8fZb0|NGIc5Elx7(4t$4!cc*TXUUrT2!knXmNdY5%t+V3?z6o6IUOyjIqzD-_Fln zlkR-m`B2fxy{0h(wzq23dv_0#@4|(Y3JvKf_h7cPz|4ksedd0z z9;kX=62piKC#ETT&sx4=T!Hr0m22ybu9YZ{ZSiM>bbw;>`LAQhn>11IO@Sbv5gQQ;g=0EM{P;m3E_Li z9R6hot{sjcDM=AutODuNedFi0@Q;*)dFm=uPwM=xBB;qig}kvs$#QMBcC);DID6&b zP*)wmyX;8GTM2$E-}%c!&XMTR~ux>+gg*I;aWqQD_aj z1^o)ra&|*dw+&ef#W8vhpH zct{=hp3HMp3qJyFwJRlIP(~fjqWkLx{4Yu7mE$iQ&OxY15K9iB2~eOWy%AN%d>=c( z#1DGbuvSJCKsRhYTb$OjLgzcY330Nev|sk+G)IhVM%tAosAx6Jlw6^@%@kYX{+6c$ zOYjai&5L$;7K5N7)U00@;k<|9A16a8x#gaR56)z65`CIP65$1XcSn!kL)xgE3doY# z=(7M?GbNx38%jfSdEAogcRV?FP?L@k3L1<0gnl)o7LbIxh+q|y^CMSx3KnlV29w`A zLg+M(BG3s-Yw#ygYHy!WffYV5tg;Tz5 zfiqH8S&*(1(JOu#Q@y3&xy~@9NG4VS+IxMFQqy^rdv?9g+ziw2@R%fgbz$GQ8F3rI zs@ME(64!i%-1oRn@`J6*7d`((5I9J?61VB)iae>I<*`GPBu;@NmEn|x2b zs>UC@6AclTZ9;~M**ZeebbLo-p2OrL2Y6K;~W9MQ!%;VE=L-ptuv=lzkv#G!MA5ljji zNjE8yL!X%#nqdmOCC-l}Nw7Twq*e5tP>GIDEP(BvutY}Nv;nR0N;Hb&E#2UUh1_x+ zx4L~RKjr!D9Sfsg=^Q7tn_;wasGB#A^A`qz+tp?}$(KIwcwD1QdTTBoJN)QK)?ry# zq93SahJ({uM@Bd}oaIv%9-V8c%7injCcpqoR0<5bo#QDy+-}+!Gh6o#7#rfoEY&F+ zx9>O5AYdqKxDr@_EJT9d0caH0vXU!(O+Fy$@A2@47%W{bx3%~H0_q;gKCyrT?;-J0dwO3}?WM%N)~QVx!KU<)Amw=V#Pth#8Xs!CyO;8FJT`<&B#KAGh& z{`^?Bpld-J9A|>f=g7FHhfUa$^rvyvs#E%RRnvZ(`~;B%L?r67KTPOJ9NB>XZcyrK zYch3kFgA}zSw!lxMh~R4KYwx#UNJRZh-;GYH;P#@)u|x0%cZXV95gEgG9W_!(MI$% zieZSQp&I78CiQZiO4(SfN&9gwQu!36OCMe-o(bCNX$QXg2I1={O^cJLWPCjPViV0; z9GWow6B(4&pV|}xf^uosl~l+l&3wXwZajyjg_4^Dt&NiSfPK0N z+e7iw@H1GtVm7sa>4Ha2Pf5`=1mi))%dtp+S|2y`Ca=Z+>2bOON7}EEpswx5?TnL5q`a6W2th zCNBT(qP`=P3|-#~nIad7s45j8zF1DPDxVfBDL16jwSrSX!#A76iS1fK1}2bN`9u!& z(YDe4E=oV>iFyaE zwU7cy@a@iZ7kyX`?#En3Xyn#$IgOw3kT|*R%nBJ~Gd$_>AefK4Wg5L17pTV;In=?K zdOw#w=dPSZd-vmH4u3TiwYXwFp>8tehL2jnyqKV68ilpW%ADo{8cV*HT%~E|ssoB{ z8y1=~+kop*w~}uTJ(ZdimnE+|>5K9PK?faUeHvTHRpJF3fde;^ z-FGu%&gh?=lC;ok93+8c=oFD11Bik0(!ZB;QwH8fXIa%a#8s7sE^biS-VkCC{@KSs z*!gVe(&1}(HXdwbPeJsd+631`X#B0^kL z9%_uf3;*gE9``bU7(ifG)SyMSE0UwO;mi^OA&%4 zQV||-B}8N$ivslbs<{5Q3+?A)im!i%&x$NdIpMM--#MKXJClSWJ@<}N^&oLN>2Ds+k9H4p+-9oq&m0Q(uXGd>&)caY&)Pbj^At_l zj#Au?^&=p6xIYCd3xL@N!G5mYq@QrrCTaFmEA9373-nMJ8=}uP4+^v%;`i=vbocb! zaKt71klnJ$u0BX1NG#DJ2#?-_ZyTO=$tsxWt(RL2Wo?a3OF7}UtQ7{6rFm7jtN+r@ zd@*(Ve2}dnpYts`>RmSb@WIS?YVW#6+}gI$PA~I4?ne692|Mg93oCA$=a4D}-Ah6U z8a5Ei=IApa@^j{qX#I6>=+vSyj1Ul9GHE8MlPf#WA#|QY^8Y_BfMh^*pLmEX5(|sB z28^W3`MXTYOyl!l!qBc>C@~)c`!O*|?66|!oGVE5a1Zs8LYavF@SJvpxp|fE6D0TY=;q8ggi|eB`-qDaNGh6@uei6RVs8E@k zWUJS|u$ea=CJ)~eFB?kVI~eYkuSfyCeVNKp^w-)@nV`Q0ulZ{4pEfXWNm1c03B)BP z;BgW5dl0E)9f*L8+H{uuT@PUtps)o!;Q}bMy=Z0gmTDW~>kj=^U>@Wg@<)%<8a0MO z;dKy;#ZLjBN|~UAoc=t=_MpFkrfrw=mn!?Zj=fZDogTID*a`_%@z)^6seTW`KP&of zL=cl}#@Lml}J{CwQ&2dFB z(pp`QvVgHn#SwGVVX|=29mC52XnAMMN%eM@KV-p9m9fB>BVy`8t3Mela{nAi9gIwm z8|*jEZF>HpL`$Qqkd2qjTja2YErK@SI8*?ROx>7NdP&?R@<+^9EJ(Ox3?b;rpI$Oe z%pWVuIo%%nj8Qwi^K1?D%je|Z=)VxlH}>*ieu~UCOtC#G*m=7+nzX;nbCZS4VM6Tl z1lh^q-i6(CMdG;?XEWywj6C;*b)7!%3XA`a!;iK4m%9Op(oNXawMytAD>8%TbEain z_~!J8a!V&svNZQ%aL-Y>(GBICrcHhEThvb@f?R91dq%Fj<2)28b8<082p=u`Uacqm zWGg#U*v&d5Q@+a))LlyHYe7K6DUxg|efgWDP!toLMX&QbW$q-SwZq&2Eqw1*gA6RS z&fG*0spEaK;z=le+d6@tEChW3QE`!qqR6OyKQF2b1VYCztX9iKy@I3B zHBXbM3{Sb1HcqJ1sHO=XJVJ9*&57#0jhgW;1NjSmP@V1_p<8v%a_C(suIi`krzwtS zoPh!oa&!alz*)lBggu0A=o~p)GV9Nir2mK$##dQ$_V=t|b7X(LXjPuVX`~g1RcYcD zG-_yd{WQZZaix%eFnsQR{n@A_2y|82Osijwd>JI#!j_KP{1S%jkkr>-Yg3 zkhdV&GRtiqQiUk+^$Wi%va@7qGjje=j-u6^4a>?i7&#{;hCC87{}+<&}+=ZT1E(|WEHC#nKHZ#wb3xg2#>`^!F)p!x{9bhHGUKp%*~z{ ztzM=z&5$?`LH}mW>3ZqtzHLiHY;T@%%mDzAn%3#NdB5+yv06eW@sYknvy9OUg!(Yd~}GzY*)0HdkZ!< z4}@E*?wv&<91t!urcg>iwt*T&uLH+u`ANUci$MJsp*0g!Y{n^434vyjvhxi;kfG|T zM<~#~Lt1%by|pSm=F(HaI!04NGsV#lMaF0wy-8+D?eVGIl*hv05N6^;PFtFgY59<8 z_>l^W(n2E*6r)B7WIxO*AOkvV6}Dbr^-|L9_AIo1so3ex5sGxH-&B;B2@%Ry2Y*oj z(FMk=(zGV>dOms(#{@Xo&Cl@5N$gdy8|u%Jq*It}l1;Aca5eeCgC#*-K3e^*i{pT+ zj1lml;oWM&88 zF>j<~t-jrF{<87;gQKDpq*6zisdax3(3PB(vPhB3^x#_vuRLKt8=Mq&Orsu= z_yk|3E^c8th!u*E^i3Bfdw&&;VZ>rfSN^P{mr9$aUp3KE&K;rm8P%cqN{^ z`?k?cTY$O%4ZVJ_jF|b*Y_ECk#q0>LPd$eq{Cgt}b7CkYhN`TvAt?i-U5Bu;5M4s> zkcdtpXTNPUk`RjpL!bnBy=8+ONle&)O+VVnWDx36w74+iwh0Gt40ovvEaf<)kN?4? z2wZ~b1Tt=!k&UAsc=TsuCJMQIdde0~f%#d|x;J^;;<&q%$xAi-MT>H>TYBHUUfB87{&B@DmE!Cv|)6P~2 zucg0{84zYc54`aGqqu9V+J(}pb%kyx@^fzOva#Il7r!ND(f7V^MbN*u{vu6T`~z)a zQ>(&G=aVbTP*-g%Q8?E&#q%5AlB;axJX%OZ9;dQ8@cGDTaFQVbQAoY3mOc+#U0$f_ z{tu6TA@^4DhX;8lb-Zih!VFa6%sQz81-h7$HIIc66OY;>G1oA_YaNy{l_^++g7PCx2~n~1gTgjC@3@PJ{s4LM{i(G zxgI;h+;0qyjR~3Imep^K#_df&+I526MUZ%3S}TEPv;8B^g714q<(SWEfL5aiHf*@) zFROn89|*s&Q)OsY&xY@mDTj{le=Q+(TV6T=0uKxSOpW zZnKQ*#e(80V=S!F<*&vty(j}hB#ld+==KKBvkBE7eJkzMTD?uzwtO#R)9u>u7TL7L z%c0LLcp0RCH9&5Zb(Fd?ZPju#U_Ekg8pBk&kYJaSHRBQf4@J3N|5{sr%63|DUT*ne5KH-zzgQ5b1c;{%(aAK@h1 zNsA!pJJkZ72?plS!Y~(AR26?BmHl7q8D9Ap0}xf#bn&yf@GRY_kGl#h%x>o+CtD_< z{w3vm%@;!SiW8YQrYsuRb*$w-jXDFE{W~;yC``0DxodBPSSMuNFmFvhu4VWdkg_if zB^~F)c^^?R9XOo?ukCLl0J_Na zkqQj)0Y=4h;D{4Z=rc_x%g+{O)~$y(dhdo_z>eOmE^VQ0icoQ!p+N4$G^?dNMLLmv z-^!RFZMxbGW8QT7Y0lq;$$^8$v29&t#*9`N5U{Fg?6wwL(1B;5CHdWR7tuWpQ9_6q z`5n5%pL{8p?;`gL!-t&>@Y|BHbY(N&G$PDuQr;Pjg7m7EXh;Xor~d#9gy-6r-Sf23 zkLl|4AaM%QB@BHl38CV8gnWD1a)%+^N*wSLgHXzqHdpDNKl;Z#AP?oB0oW!Kph!@ z3~SMahtSQapje6byNVDP;@B}0Xz4;PkuTL+T6>hM#URcfVp9L5HB!ZP%hQY8*`%oH z5W|!KKZz^o0Y;%~Ofb@ip?gL(2=jA!KFs@L>v~vL>Ug)`OoRdRhTdNhN1AI(K|gmF zNPBCmz#LOC^^%O5s}sp!lhO})L4fnZ;<(hb)hspVB}Mm``l%6T|Fb#r=C~Y(ITue% z&^u-r_G;6P-m%T;^EEOgI_dNethn_UZhXX(_{;y$&+QoR4X?8*kfGH81H;O zzon1onl&BC1D2LnovKr4CFtT0Pxmw79R0RP1K%ig-vocwDvA)uMMr60z*Z#w z$G>NP9EEf4NmlxnFaDKvR_r!o8om<`aNt()2#KGQW76|7Bg!kL;og*drw*896jRjz zaL8w2lS(F+NgJFlq#=IViDQtU4NF=RhEJsLRv1QU@OGD$e~1tMUdFhe%=`D zsQzFLf%_3*8t{bwboz0u@A^V61eU`)7&xeq89pI7Q#i{T{oS?jnbUp@h+9GHe1|}F z@+ufj42hEJvG|Y2S9i-LJ>AL86sSogy0uz*0Jf$8d>l`*9TFF)F7>v4^v>NNDS+HQ zt=8}p=W0g>c+wh;`f7+KLNuj&KN)-0Z*8VWG49#JhQk)9y!KjQAkax#6KCk#TXk#j@xcgZ7AbgEDrE z_k_~}huV_lls`LjnVHNLJE*joJQ{r1jls-|Te*nyY_Q;sL(yn-ogu&FEAeBct7QrH z@M~oD-+HJ{_%1u-*@p`oYRasMjfN;u9H>jBJ0xlDEWG+OwufWR1jd=PMF=0ajHE?Y z(h;n@j=P?sxFwZ*h4qDj1}-P=31W@ZM&VGF+x%$mxT(sG9-o6p?7dLPN#|!3&n$V9 zvpC)5?1}Dub@D4*vx!KGA3hD|Xir$HEgAlF8PJSms8?bbiLI@e{3KjysqkgygqITw zaCn%jAX2GLeF25iMAZA1=KDv%Ls+|&;W&|7!mYXXOFLiTc-%xEo^HkI*P8YR58An4 zyYyl;jNmOOkow)~?kB>D`2(y|!X!t2VsiNJ@Te&0J3KSQ$PiNQs7C2G!tu8(3q$DP zBp|U0OeFMeM&XOr!%`vh%KL_9JbSs5K|my_ELE;q73tguOqq*qJ3Te=5li^UpjZ|j zZ(L4I4L*rMgbC?AR=A4v9*jXk8uVl-ui15Bzu?sGsAr}J3>FuUMf0|HqXy5O9dk+w zPs!bPo_FaDiQeCa)lS%#6jei_$8^k;y>fk+%59(2fpfVi%Zzd}Hw7a58jw%+ceg(3yNe z@ABOxCvK$1>GjO&xX?Y9?X9Ug9qC*zb7#@Y!VKF#_ier6Nm;fm%>lLrZCMD%8xD0- z!|P?cud_qQ5117QJqR&;TOlqWW89F9B*$e($&ayZ`v!)^vi*0-j9|{OB(jMeJ)WxY zE=sXrOgSLcvzId7FvhyJg*Dr95Q@N}0iwa>c#g6liwkp^o?PgeUmq8}JM%li5>OrD z>&wuXCXXMEF^LNLB5&{bmHQW!QdHb0lQ-N{eeX?ha!~q4#5w;P+A%Bc5?<72c`lSJ z@vzeRu#g^ye+=_?=J0D}^iD*4D&?o2&67%|51JkqFStwI=Zc~bO;?zV7FF@pH_c6x zP6UTB&s9NtA5b%VuZCvcHjh}Z9k9GbG3ONHfZYI)GW$P(4TrhB)WP}qynb}l&=6D; zRK>sR_Y{;pvkn=sR9cJ2|3o^kL?pu%v*uE3E|ZH#Izy}>AJT@dd!xGn4Xb-D@K>I7N^VCh6_Y9 zC{>-@xy4)vOo7;Q!InY^v3@K{eNiYs+(5=Dh1diff#I2-v0_Sk=(eTIF3ld-0GUPg z{Clo{)O&sn@m4K*QG5J_2wRkj4Xawb@SI?K!Hs7(0`WXe4tE@K;*QG2Vjk}Olm@xU zRNS5d(D7iy9S&OXi-EJT@zeI}wrv=L4@4mk7ZwqwKuY(CO?aghEQ8b)O&GWIuprW8 zN63|6-{pK`frK2NV{hnD8C&lmAE77BAvTXby{KTdJ~%-lH>NeeznLk)hVi(_RnVK6 zVXNh;B*gH16~Hyw#GE0@jhA>0e~@*$SsALZ5&gKTh zFgP~72=66j1BmoU%_%Borg)&!Zy8;AvlTrX;WRD$SmkpNr&$H! z8-q;=7BISW)~%KmT~2yC!i!mAv1QcB=~S0Xn$Cf(Y#4gc&NapPnA`76;}}_g5%m_s z;m%RN@#fb7(ns|8zRW^FwWL-dm2%NoCTF=&f4&bpaRy=BvpX zUf$U>+vD0U2H0T5uZMC=+&abkE+9@Wm!D zV&Q-KHXQNlj&jOi8NzUVcb{Wt!TrvwIzo+TsWr1PEPnm4H3oWxM28FoW$;n+MQ0@=VyqcT+XH<1OY<+3@gs{ z7D9pmh3g`5IqeUT{z!LKAB(sf^6uxFT|RYTRT?Yx_%l8^#%v!+T%h$wDP5q^jGVN| zc8d*V`E$V`a2K1-m{)#f!!jJzB%0vQEiD8aC)aKUk?TJ5Ok#0P$>qb>6nLXNal zxUTVfJvKF<5-hQBlGlv^3pPNZq~lOfLMXz-K5KB z(gL4ato`j|H4~%u_l|>EOxAD0j18qS+SFg~m4nhdpLXoBuixY_c1_YYLYymM-v$-nlbuCS7-D$j9zlw)z5 zw)r(LMyYv^%X`*op6>4~nH4Z3dKl6E;!wubo;7$|9xxwRx9!=Pky!*)Vr|RX!7}l% zgmw{wnXWPsU#I=V-tf5)&asE5hE zc+_$#>4fZYLhR0o6s0LzV9WJQFgDG1L{LaD+;Q7;YZ~gfK;Pz4f+w2ij)hkr)lBVi zT@z`WIUd!T_A=RRrAxzHmVr2ME!^PhIPZ&Iv?Kpm6Pi|kqYo8@ihCK|FHh-)z_E}& z-3k$v$$U&op^LtTI~b0qSuK$MXMi7WqWGFsT15w0Yys^m@prKX|C&YH5FvM)xfKH? z!9H}?4(jXV-<@~g*^YduaE^y(4I6m{n8>R#?YhmaDNI`p57s+(YTiiqb6c)1>dn#R zhlVE~xC*G7id7r&5xPVW$VHIfbHdVp`mp?gKWt$F8pi&Gx+9O6^MU6(&d*bup}DlL zw~z6LEPS^yX)MMYC?+spYtBhoGBE@1dirSDiFgR=;r&*sik&KUp;cPM`$ilx}$YDXw|0o$Ph|Zb2wvK$PUMCR50@w(ay|vo3e%Cn0i<}D9gwZc3G5>>Y z1W_^kK4!6PW{lP2)60VUa$?aRu)DeOW1{k^30GCHYpL+!@iO3!tI**thEWMS$L?E_ ztUL}ukpqB9Z@Kn3KmpU6k%D5Bw1g&V)yOHirDd{fhZl$}2?nWBvZYk-G`Nm&x*Lv4o_dVzAy`MAj zD6`iH4xU(n)X>xH)3dRHD&lY>5+lCN)bg3NaCo-(8a zT@62P_uufy)M+*s4Z>0d%|VMuxi^IjIw4k*I1OZRbb{!DoBXH0-*+~lDFuC&A$Qbq z)vQ$n5{hfA8aG{&xSdP>!BlV&F&xIYCSpeWfoXo|Zg~RG5ZqcAC}@xh9~N#&VJLk6 zloX1Z@l5otzZDB%O*-T%CPXY;%Xhpu*zh(L%ewEjqCK@gY=b@YStsK?zP|MMkR1A- zUrQKw+MQGU@dJc-6t)BW0Er?eyY(ZJQ{#)kyzWAgiSpfkln6wfz;X45mqU>}C8f3; zp1<2a3shp!NQHY>irChY>gEoQ>Y?J{{oB9cg((5bnn&NQ5e6Uhk1Q884Qu z)L+(Rp_0T@ie#SN@YB{2Sv7_Dv%-3xy@|gu+}r?0aIm{CDH$p*x8aCNXaS2gezz5F zkpeO4Y%|+GN7A!#wHH9aM@)G>de2t%XKweouM7Z2+$r~Y_OBttX;riuev}IQ4lEn0 zOO<`fP4|dKM1>!=^;)~^W{q8@DYl$$-e$v{%bs8!-^eo?ka|-%H#U?A%>r4>#7KnY z&yOZLjFah$Rr+$FmbAN(jx;+6@{UNDCY`wH&!*t1*^obl&WkMEY=ngUsEQKFAW>~-g+jMu%@K(T{+v}teun=J2VPw+1&1{VFylQb2Z96OnO1EP zBO5US(t6k`1ztQZNE(-vkzKXPg1u3TvD5DxtTmz4A9$%_%ht<%w0oix)``o|Z43{5 zNddQ;f@Pu)_(z+6rr~DC>1%;ul{NppWUJ*{!fcc;1}Gr->|539I0jy#>kxRQpe8Y0 zQk2>yjVI1CmKbiVoC0??+@EOt8A{7qa5Zf5ZXDG``oC;AkWYtY@+bYJIhOT;`izb#)S&n6xxnTfN+1 zjw^k|X(p-DlZ_!7QJ45;N>_O^i09dD>#fs)yYi~+zzevTt#1=y1sq2{+xe~l!n9&* z!Qgk?AU7$?ZZ@4F|004!LzmAqxFwb4_TO=Mjk0w?;r^sruO8yCzH30>3qYVDA5c0? za33ChVLQUV{r-(1l9lSCD<1bVmwTt)9Om z7nK+($DID(Bwc~$ZP(X!r#V|etW!Mdd#RY+I1#@*GUSX{fg=&ZtxYd;`*AAU_Pn&8 ztzGlUUis_l>Gn6=5JDo9fGDB~%;?WRx9b$r%Zc0N`_kLDmfyn5sEbFIh24D6QEp7m*J19?!y;Mhi$28=DJvZ{I9?)wB!2Yx2knZa6uNp zJyCu`+f5Wf81H(zYT1&<5ym5%V)Ht)j#Y!C^Kz3%g)FbVm>2r8hTSmF7Y z>`Ft~@>y;Y#kz=Okyn7pciVV6+;09RuXcvVcWWAFztvp zI$2KVq{7vyvDts2DOiz4-=>-7ITvrA>#=gLvCf__nu8MFQcMU8UG|gB?us+j5hEH1 zbwlySUfBnSwe8=Y*EuHTE^}`37{Bg6@n?_56SGg2qjP>KtVzlF7l?)YQLU^@J{Hg) zu*xBraH51H2AiBon6XM8K6J{v5`nrCKQ@ruv77kbbYKJ&E(urIzpB?ydBM>P8tgM` zZLdj62*r-v(zvF+v%$z#kpQU;kW>Ab6;oV$;&mT=T{>u0whtPOFQ4SeCk515#466I zRg8by3@>EnAvh5Rr>0C%78h{gzJzy$5)U{jqEAc05-&eDxwc^aA*3t)qvCnF(`Vb?E$y_v z8Na?1Pr6eH0t0eYiCZ*yd)q9M#(5O8>lvjj@X_J&9jhGx1FDfLD0O*xp^|;$g|u;f zk=r59OSoJ%6jF;_EPE_8Zd0cIese08=Z5i+htVU3yjZkW=8g`F^8a9Xl0CcNRvMls zqXj|u{Tzd0j`)ja+xb7emx%GM&-&|k2 zH-_$g$W@}FBDG{0MMCvNssEO}!T@;pR0t8AIb} zw_unba`NvUnqt25LIhoNIe&i-pCd^<#Wlw>_>G6|`0GIVI&YyE<+iH<|A;vb-;HE7 z5VfaHvO{cgOLywESrjCrUst22uIxxyH7roT1u1N3k@XrxLrpIj>kS7BVN`1o=LsO zaf>GVbyw^z*C(Fq^LKGz1Uyibe6Qt-Wjiu@nxtz5JYOGyiy@GnlM{xhQH}GQ;c-EY z@uj4nfWc<)Yj~K)(amv*`6n4a7PzhGkDjU=a~m==|Ftivh>THf)?S?s;pws=i)B zKG1QMQX>Q-`?MeoV}q6-aHWLu7jb+}2w+nql1743;>KX&)2r!s%V`%0)Uvo)xlG}j z5N>Zu*PS;GD-M`vd#)KwZq(e|M<{Z}0dgz|-J#vUN@Kizf$&)2V-rFU8Wp7BP^r-mkWj2 zubK_xtLLWNhHq(tPi;T7Ov42GgMX+4@-p{xO~b{ug(d@7q;|OO5s*+BcRP5HrHLRo8mH-xWju1K_g!W6VoH;^;#z~ z+-&!3+E@z_c>$G@@6%k~U%bZj$P0&2%^+WT{)!rRk57exhqfiT-poIze^{ZJIjr(K z(DA#+rAJz)E9EV8lUhS1-77|nF`lvB&sppRMFZC|`iDQP7j2?`qcN@h{7c2q4}wt7 z!i}i#3kpk+I>&=v-1;MRW5odN7grb?KZRf|rK8>%E14k-^+aok`?HEGp%=Mf$gjh^ zNzMruz3L+Ejre0lzW(uF<+_|)pma)=lg~&gldp;g4dD2OE7z1_p=M+EHQ|RpYye)R zpWNJ(NQc638UAQF0IErWB*uD4nI zhOayUOf=2KamIR^Zu1yv`;6=xHT`{ib@C4PPGpMt%kGXz{!ouB)r!<9b|r0YSnyqD zf8h$@G{h!>ZEdy^Xvy*=a|oYY_+Q#yFdf5jbxuiz0oa-tcvMg1%2>vFw*QaYLo~6H zB%1LqR*a_|$5niLZdVLA&HoMq(L9;s5tCq}TG6b56UaH2;jXipqNR}#h~1*Ep=i<9 zZCaTjUv3Yy?+JbUw|y6y_}Va?CTfJjGbxz%Q2Rbx2@W*!|}w zG0MyZ0g3>rRdNsQ?1=Why_G|44{Lw-s5oKIyC>v93N7CuUfHkBZ2)e)=iv4&% z%GEcgbo}Be*GiiMS0X**qAAFr-AQxbY8>B3% zT(z&`9K-Q}j!s7%bgd0Bj|V*-nu=HfFX6;*$xH=L5waI26Q2fQZJv4Q@M4l^LU2&kM`=h+KvRKHtos6G7)O6?`w ze;1ewQ0vu%Gn)P;Ff?i(&WZUk!p^tTJXBj{l`uWT`T5CVwHzx8C^SD4h4_1Cp=9}` zx$o-}@j(J{_9+tpJqo$f71B*-pa2)TjBpW{Ol)e4V}s$Zm(=EtB0ce_Ax;Z9 z<%^>(mlf-h3{Fnl!s<=C1Iwt-=_GmY)^xNn7&co|u~LkYnVwpPWJ z^#t0ovBn3K9!bKbdFC?t2X z0GL?PqDy@rCP{2Q9%k2*=a5fXg%dD?o!J)x@+Q)vOGg|POFwp?--^^0oE>bf(3kBvQE6a2~ywYvX@84J6-60keLzOlxuaC8?f27>!Ct#l%Q@M?o9itL4s@B zm{t*=Mk>*8wO%m*_3*&yO(Zw(@{FS3&F9rWyRH#!2OM+&Z2;r-$6|W}A5FNO_IX+g zGDtaqJm@F7@M3)6>MA%=VBUs)i!~xe^#iCvaaDs7W$z|QsMyeDXS8zw(4F>X@6W%s zVhP2JjUhQ8r`GCh5}^(Y(wh}g={5Diyh+QO<03XkD$~-B!r)v+P4phmnWH$SdmRqf z+@}n;)x&riqvEVmZ)zecMgU1I;NEOcr=eS`1`jhNM^aaYu^DxqDELa~d@F?TT$Fbc zOj=?!*@un>OFJa_`z0`xzjmdXTv2xEPReDW_3K9b&+ENe&)U$zaP<_31 zc5PV5)I$98`pfmU$)H@{KCx{Bg<#;j=zp%@*H{aaq1@1_#+zE>EmGOyvb_Y9S~C#- zJ2tts*;??kB`#ITKn-@iNkDek8cI>}QWgNIeX}DTG5;tFt(cB6lWNtri7miJvO8A* z(&zVUT7jl4l=YpL-{)XdkjEDhj8edSVu$HK8SvXAkBYhpD0pwL{h!2`Dl8&gci&1~OJb zTtseM=wwCYTO)?LtSJo|c+Q9JwO&JhwdH(UYGwf@q-N`3qg246htwv!yEM~vg)J5U zeWmkv+b^a;66L3?IetT1bo|Rpn>Bu+2%CH`TUOeYPL|Odt<$jJh6?))ooXa1SNhvF z7D7*mQ&HDq`Cb&u}nkZ*RmZGi8|` z8PuhS0?Ht-ZP6G?XT411)HxCvvYNWsFdfa#a-Metf#?~0#&RPI3p|}}r3@s5PZseFV1+#{9q)`BZ-cE z3WI~nca5$Yw;$WnXDA*Rq=3Bt=4M2Ne43CoUO-n~4X87)ocv@u(HvA_Fe@_EGwq45 zSDyO#Nqk!iQI{RGHY|T(7b!tlVyzE$D$$e}tW8mMU=YaEF=yyeSjK4HS%c&VV@=F$ z`Y9T3k1PIzlR;9jy6xY<=|Kr|++(SvF$(O+UZd6}ISVU@Yjuk+ozme`3yw_m3^-FC zw6tur0F}Q@ho^L_;G2oE1#igFcajOQ@Dc!-;Svc=P1cA>WmH({3v(NPrHxssa-wl0*EBgZ3=ed5EfyU2AnZ~D<#>8ap zFlEhhvOeSk7*C06X9Ir|B~@+hQ^*c|w>y71#aOjkozjr|#tKF2|1zwbvKU4+F!*Dx zJowyclFAxxQ_2Ng3@2@4F?-^a>u-Cy_{Iw-1HJqzzVNf}eNxWoR@yns>y@pz9rR<5 zR%0JTf`{RH1!(ETYK}dBoN&2|9$eE~6g>|on#KRqt#I=%8+%C#_2ro$2}vUNg9lk1 z-+*VK?3pUVBsh z{g^3}foeJCiUT%(!>Bx`ezNO-(|4q1d8G2BJq{{kPu6HicAlvCntm*6T_pIERUun% z@PWN){>mh9q+nxf_p9wT%sd4LUZ{BLi?mR5(0H{)Iax-G4D6J~tSz%*zlMy8I=_B< z<3!A(QLYO+@)1?)3PiDPcaPvnjv=;z>isq69ZcW(J{m=kLb=hg=EBsLIZuQXd6?~5 zCV~lJvF$#SrXTZBuhTl*N}7Mr;xr8+nBHW|TIrjvTsObZKlEYD=;?WC57vBo`&H^t^B1{J7xs0bnD&_an%8w9P4I z-C;LJ2F)so&i-N`s(f<35=AQLD)|!cce$1mLSt$vUbSyijy-=x3)}uYn%*mAX zpa@h`;}bzKJki>}mL}$u*Wv27MyyMGq7+%R zStez6JTM52@K&T}c#A_jaJo7usuaFf5xIf483v%et%0TR>D!-0ws-_C)33^D0h*;y zF~Ntox%V=piwyFEq6ok2hZkuiR1P3kTWTqxjNg+d2CJ{9D=CnPH%={h8}z^ge-b{@ z%~Ea14MRDv5*WuF*-#a`a3uKZVfU-VbN}{PxhDdg&IFl ztQfwV<3F!g1&(?#;yEWAo5w4$N#4XJdWHanx@+`dmcOq^vAmM+obZB$MRXn5;i;d@*$%zuiN6T0?jq$S!XP@Na(ZC|1%*i!%) z+eWy3n?#VXEWYbBnG?~Q&#ko)Vo((of!0h`!Y(oq@TkaiA=d5dbl7i@KEeUA(Dr2M zV9}irqXZxZ`tvpOrjNmS+IcYf*Lc(2rkk74nj{74TBj7XdP-?p5AU*7Aj>!iaCYyB zdtpn{=IlFV7-PsZ4SXT$2+qg_3J#pvpA78Ru!*5Hc+NDwk<m#WbXNG$K+L%`F# zs(z<2=i!a7CzIOe4kxJwhhGd>K%$|Nc!@OK7pb54LXTgO5>R(pKcX_EowG}JNCjrm zDa7HU9Qc0pvwco^R%VA@r9xOH?n%vhT9b<>W~7jFVL% z0vRP6@&iNB$8;Y1990 zL5xIu*;X-yr17RA)PGk@U-tnrQb000m!bVt$skCWefA_ zcZ}Z-lV-ng`tL4#3ooHQH}%>6J^4qjuCNNfN3Wl0ektL-*?fL$u({fU_ZbIqMVXYpLi^1!_(an65JJbkVP-|kNw151R zYc!U%j-;3bF-8lw6lWwWWm>n1wp&q<=$^d|#PZpy8>aY`Yg(nQ@l^6(_h%5E;B|RB zEN0Q%HeWTA=@{X$(!jN}yMuAXtHit}8WnT2ri-Y+TH0p``v5{X{U*%}fiHkWljH=y zhY)IK1!~cSv40%1v|^}O|29{IV?yu;ax90VRc5CW{y>R*85;>@>OG!cLI_)x=6Y{g zJq8aMNe!NH)uwvwv$TG|9`;^(Gs_7=iY#f)1$R3{2VlBz^jT`^}qT-kebzI!=+Tm!1E*`IgL1RYbQ} z!vTCK0k@Wbvx$^o7q|F!UeMCBtRya0JA6m@(j|DqF~sir^{RNvc90Ql#vb6ug@qzHXlF!~7=s?}Lkr-6T5|b*9p5|T zpYnS0Os`YRugt{8jv18JYxRHn7}0BhDb7i3AQ#>I8Pf(*L@K3Z?7iVXv_83sJ1T!@ z`3;YJ(gOzh0040P{_O}*|3TzH&S;G`ExCm`bSAvK-ipNbU75 zk@q_qeU=7lLP)q>Cn?88jHQqSyG}n~h4Xymjf9r385dI7euldI;tgL)Xl zVs@Au7T?1#f`iZs!&jTN*#8oTnHdcb-%E}obwFW~_7Ti0s)o@F_h6j5fvkg}2l60~dFONzW+^nRG!J1MZW;Bl&_O(eyMYPB|<^I@jvCVE22s(Yoqj zQTLT5)?_C9e$fG)Uahuh(K}q^n(jz>NDP#(uF-p`|6p_skpLMgtdwKc+Z(jz|2c%0 zf=w14q84Dp|DHm2uTeRQ%ZSexestTPArWa{l*BxoUBYNi!`z}|7A9LoQKj6*sCXD% zo19vk0ub?}!?WH#;T10h9FV1NteyyLeTw`Q1R~l*Q)eG2{_C*K4=9q#qG_~P$f6O<%__CVHW+#4>#%bY{C}i-Uk+j8Ua=)VJg`#<6mBP z3mRXvLJJ&yn&;f7@!9IP0AHh(dbdv@XYaBC6+-g5Z|-Fh@9yJgRCc&-5VqveDXhJS zdSgPltSV?mrBjgW&h-9}%#9S?{*g(2fjD^#*mXs_Czm~5*{h?mm#tq2G5bQyVWsI^*N6|0QW3_WD>K2 zznM!*SlcU}^C6aj=G$XN6M+t;d9jIBeJ`VUAL`!2ZrtX=?snw3{^vK9O%~B%at|^* zrZ03yl%f=Q%b9*?RWU^CQYCX=4M)4|2HPRX^J$L$Urgs+ux&U9)P4Eg(etx_%M-G( z9zVft@&s~_fbaf7_ls4|ELQFa6@E_OK|YyIw&ioTcDy2z`7sr5Ho}dGl&P(*7d*%K zE^4*guS6q1_Aezg+b^p(f_Z*H_1Xl})R#?Blu-T|A0y1+4}`EzjuCMt-Y6Bx_E}T;L>0U0 zJ;0%t%qF&K=n;wbTJO8h{OO^#cD7~e|E$5WX57dq2B*{l$x6?x*!T>WrT~c9o`z{Fx#(A+UpT? z$1UEC?);gNtVpHOFead%=`6Aq%nY0GkUt6Y&a-IJMC>Da=CUll)55F)8xU z?ei?KX}BlHg~P7GV9Q;y-89KR9&p4Ri4ap6_s!3%(*Dv?@Zm9G$qGF7#ol7LjLIg& zrLRC5_^0k6W!Xh#Fa2P+a?v+s*gB#?tWT@IXiB#w9;ye^ccr*l-2>SAK}*_-zun6Z z@cuIoxYHGiE(R0&jmbAxYsv+(7HHL*ML_?=y)l|5Z&k)hJ5W2wF{7&!_bR+uf_kjO+2RTup~d%X2#S zTikIY&G$Q)VCgUDXw&74XjTbq=4cH4Uj@iJe18{Ea7UcebY2wPT)Kk&SlUrWa~OJ? ze$s&dyK!&B8KBJq#v$@}aRv~4ro=D9!+i(T>7dhar3ehY9s}lQgzjdSxmwIdk!f}8 z5PWx|U_mk^HtNMTWC~r}cndpRYPuca$Xs9=wn8;TM=LD{NL8q%tP&F6mrF{9OB^nI zvV5Hr!`vWgZ}Jxj`Qaaa86Pf0OVhWTL6^#5VAI;AzMn~T891Y`L7=d3Vyp6oEeaTL zFq7^AW8LUsm@I$-s+8bTH7Je};)LWfF={c*z@-SEXevEJ#U5)x2AdU zKC{hXdf^otCEL`7*tr+9g@#VGG+~W)|1!`hnEzuburO;0S3L4hOWG@zH_6`xI_P*6g&S7UyYBt| z);;%_UU$IO71~d1fllnBCx`=Z#g~tps}X9H%7XWxXl|Mf@+z6Z?+ly2Ug6IDCH#7% zRP*OJPIC6=dwiv!TkV|V8GoMifo@jJlWpZp2}@@wxg z3OUS&UQBD#{JP1#=yi+AQ2>Yx{7seR%%bZMxJGGRbY{L{{a*|h*;*7x?dhVZa>8T( zc^NaoDVN&$0Y-+=2K)u~(v9Y8#(pnqAxM=lS@j8-dDD(MkO$mJ?j;9beT|>%I_VX6 z!-lUsIBH{&|7B*4e{0SnKP)Mby=tKA8DodO2|-kf$Iuij#?On&FhYXQPYSNEr`&qw zGW23>pFrq%htuq8|6CLclYDe@tuwJ%Gc2yqbu0j}8}%6Iqqk})8p@Sv)|SsTy$U0~ zurQ|-3EV9rhDD#RdFb3{zf0uKZfiuNxx&CB>`ZJW4FJkxaXKsvJ^cO?=mpMW*D$D%AR;Z~{;K%C}oYCM8@NqWmr%&gj7_!r@ zXz?=n?JX%V(u3GjvTgTodWo7l+HBJ)DeJHrudI~lydp!R}c+Cy?_Qm$K(p|QI)m)zoi?x0k zn$<0ur@cjY(%?nVX?A&P-PjCXP&R(0FSH@^L>5%KwZMZg&IM{_Xf+x^^GY#bSAVE|}E`+ju$PO(RO=@d>psF3oB1 ze`>TBtXha~A*k73J1VVOL7*@bjQA~g@w!52$R%pw?m%5OmF(1hm^(MroJnU4k_xpl zHUnmmRmS%CRq|bjn-1Ee_b97G+hgLAM?PuaG?uQ`ussgkYoj;n89xa=AHEJ~n4zFD z4l;#siTB$4zGtss0s+Cap4UXuM)b z3?EiP>+8uZe?8sYJwb@pmi~1C8F-jWZ_*#l3Ip+TR&r88K$vf2aG92}&o}+8T;uFH zs4PLU^{PYeo6MK`rfjXy$QGL<{u^V#As=*+aIVacdM}L*99H&GztN{8>IpNi4S8H} zR~FN1OcMvG4`i(d`tfovLNs$bgP&C~O?*sx9KCQW#U;y_Dt}A&R~16J;qqyu45Nj` zD3dfzA9j{;5ga%qAxJ$q_YS96f30_%Qr)AXG$6%ymAdInr2ob-IEWa>wy4Ff>9CW-^WH7BA-kx_ z7%t#&oI_>CjtyX;o9!c8xi$6xb6L`79z^BwW>+;!#ftyGb%ctlc&0X z`<@exi_|l!HTS@PBa7HUs^*CVxctPlA2Cu(vm^7VQ*!5UqEFZQDx2IoHJ|0j0l8ce z6&;b}C7GVy;H8-bIKaIssr+^C+ZI7W&L9>GSXn-pg43q466x_2qkdOUV8RLVK(eJ- zC{74of@FqNMgV2KjpLUJBLo3seV)-R(7@*MbuLkae;Pc`v^T8}nR-3^!*caZTDJyu z%WO*Zhimml0)zTPW_%?$b4GN6>_Z>iPV**n&*Ap}ioQIe4;=Y7JkZq1Q@OiJrFOC} zF#%H`6~VoKM!?Wi@O30I6YpL=zuZ__WMJ=ms^ui5{N=H_UWiYSkgQp;v|jxeXS&uJ zvY1z^1DKQjB!5iXncy(Dx(T?Yd!1LG61$oW1Xr;$TKMKUFzUPlOBE_!T>op$YLC#_9abWX#P1iPf0p7DoE-Et-v)rpmP`~8ZgzSmi<2IIu1R#_vF z5&@qYEZ@zFysmSKy(8+8N1gj}teUp+Q#5NFfYahnXHTh<{+m$Y5HeB>teORv`Nk}j zmK;NQJ&?7c`oTm2n;T_DQTf2wWGN=MPl#)L(*u5vZ~7lac05Ng4Ti$0%;X@fqwdK| z88>yQj?Cin^pMGZxu1ZWzh!K4Mp$XT%fBo>`X z1U_YD^b&p!E`_0hpx9KFC#g7GzCT-SC_2%0TcT5J5BL1K{ktZf2Fmy!w7HFl@Vs+7 z*!Ty5L&7~zUQXWB48#e6B856?j{X|IQAMyU+6@<)4v2K=eoari|7t1QD8Cwlwv4yC ze0)^l{%n47nqpO_g=B=|=qJ}-y=dDUx>jIUz!m@|C!$RQ*kJ&vy*lBIo{HcvfJ`K_mIrf&WiEs6%@dZoX z(n@N5&kA(rivY-2zz4_}8KAFXf?hV$8LgF{`8-7VYKD1Oo z7UEj6KUaUErYvY*Eq05-rSG5Dg&Z9<)B0EAcOP~suc6NkUx#lr%Q^xV&&Hquh0J5_ zXA9huXNmYOwhSGeJ{5>Tq;H|@k3Ek*2DVvj7<7(6D?E_-t1vSeB_A24tvu4h=Jn!k VyTDrahkv^)Wh50pRf`)1{SP57=Gp)N diff --git a/tools/blender_assets.py b/tools/blender_assets.py index 9f168eb..1ba60d3 100644 --- a/tools/blender_assets.py +++ b/tools/blender_assets.py @@ -113,6 +113,9 @@ FIT_HEAD_MATERIALS = ("skin",) FIT_CLOTHING_MATERIAL = "cloth" FIT_CLOTHING_BAND = (0.30, 0.52) # hip/skirt band; captures coat/dress flare FIT_HIP_BAND = (0.55, 0.95) # fallback body radius for trousers/vests +# Side bags include a strap that crosses the torso, so the full gear bbox cannot +# tell where the bag body starts. Measure the body-only y band for this fit. +FIT_BODY_BANDS = {"shoulder_bag": (-0.34, -0.16)} GEAR = { "cap": "head", "beanie": "head", "hood": "head", "sunglasses": "head", "firefighter_helmet": "head", @@ -1005,11 +1008,13 @@ def build_gear(name): (0.11 * s, -0.13, 0.18), (0.12 * s, -0.12, -0.08)], 0.012, M("plastic_black"), seg=6)) elif name == "shoulder_bag": - p.append(box("Bag", (0.08, 0.26, 0.20), (0.21, 0.0, -0.22), M("leather"), + # Keep the bag's inner face outside the widest skirt flare (dress = 0.26): + # 0.292 - 0.06/2 = 0.262. The strap starts/ends on that same outboard line. + p.append(box("Bag", (0.06, 0.26, 0.20), (0.292, 0.0, -0.22), M("leather"), bevel=0.025, segs=2)) - p.append(tube("Strap", [(0.20, 0.0, -0.12), (0.15, -0.12, 0.10), (0.0, -0.13, 0.26), + p.append(tube("Strap", [(0.262, 0.0, -0.12), (0.15, -0.12, 0.10), (0.0, -0.13, 0.26), (-0.15, -0.05, 0.34), (-0.16, 0.10, 0.28), (0.0, 0.14, 0.05), - (0.20, 0.03, -0.12)], 0.009, M("leather"), seg=6)) + (0.262, 0.03, -0.12)], 0.009, M("leather"), seg=6)) elif name == "scba_tank": p.append(cyl("Tank", 0.085, 0.085, 0.56, (0, 0.21, 0.02), M("steel"), seg=18)) p.append(sphere("TopCap", 0.085, (0, 0.21, 0.30), M("steel"), seg=18, rings=8, @@ -1741,6 +1746,23 @@ def character_fit_reference(name): } +def _gear_local_positions(name): + path = asset_path("npc_gear", name) + if not path.is_file(): + return [] + try: + _magic, _version, _length, _size, gltf, binary = _read_glb(path) + except (struct.error, ValueError, KeyError): + return [] + out = [] + for mesh in gltf.get("meshes", []): + for prim in mesh.get("primitives", []): + attrs = prim.get("attributes", {}) + if "POSITION" in attrs: + out.extend(_accessor(gltf, binary, attrs["POSITION"])) + return out + + def _gear_fit(name, reference): attach = GEAR.get(name) if attach not in ("head", "back", "chest"): @@ -1768,12 +1790,21 @@ def _gear_fit(name, reference): else: # Compare the widest point (|x|) and the corner radial extent with the # skirt flare. The radial value catches bags that sit diagonally out. + inner_x = min(abs(lo[0]), abs(hi[0])) + if name in FIT_BODY_BANDS: + band = FIT_BODY_BANDS[name] + body_x = [abs(p[0]) for p in _gear_local_positions(name) + if band[0] <= p[1] <= band[1]] + if body_x: + inner_x = min(body_x) x_extent = max(abs(lo[0]), abs(hi[0])) radial = max(math.hypot(x, z) for x in (lo[0], hi[0]) for z in (lo[2], hi[2])) result.update({ + "inner_x": round(inner_x, 3), "x_extent": round(x_extent, 3), "radial": round(radial, 3), - "x_clearance": round(reference["clothing_radius"] - x_extent, 3), + # Positive clearance means the bag's inner face is outside the body. + "x_clearance": round(inner_x - reference["clothing_radius"], 3), "radial_clearance": round(reference["clothing_radius"] - radial, 3), }) return result @@ -1917,6 +1948,7 @@ def main(argv=None): else: clip = "CLIP" if row["x_clearance"] < 0 else "clear" print(f" {row['name']:20s} {row['attach']:5s} {box} " + f"inner_x={row['inner_x']:.3f} " f"clearance x={row['x_clearance']:+.3f} " f"r={row['radial_clearance']:+.3f} {clip}") return 0 diff --git a/tools/test_blender_assets.py b/tools/test_blender_assets.py index 7e94abf..e87499f 100644 --- a/tools/test_blender_assets.py +++ b/tools/test_blender_assets.py @@ -57,6 +57,8 @@ class BuiltAssetTests(unittest.TestCase): bag = next(row for row in coat["gear"] if row["name"] == "shoulder_bag") self.assertEqual(bag["attach"], "back") self.assertGreaterEqual(bag["x_extent"], 0.2) + self.assertGreater(bag["x_clearance"], 0) + self.assertGreater(bag["inner_x"], coat["reference"]["clothing_radius"]) for character in report.values(): for row in character["gear"]: self.assertEqual(len(row["min"]), 3)