From 2a7028b457ec1fe5c719d1e8e86aa11514530fc3 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 22 Feb 2026 23:57:05 +0000 Subject: [PATCH] feat: Add Blender-style Modifier Properties Panel - Implemented `ModifierPanelComponent` matching the design reference. - Created reusable components: `BuiCheckbox`, `BuiNumberInput`, `BuiSelect`, `BuiSection`. - Updated theme service with new variables for the panel. - Integrated the panel into the demo app. - Verified with Playwright tests. Co-authored-by: vis-iks <225935531+vis-iks@users.noreply.github.com> --- apps/demo-app/src/app/app.html | 12 +- apps/demo-app/src/app/app.scss | 36 +-- apps/demo-app/src/app/app.spec.ts | 18 +- apps/demo-app/src/app/app.ts | 4 +- demo-app.log | 28 +- libs/blender-ui/src/index.ts | 5 + .../checkbox/checkbox.component.html | 4 + .../checkbox/checkbox.component.scss | 58 ++++ .../components/checkbox/checkbox.component.ts | 21 ++ .../modifier-panel.component.html | 148 +++++++++ .../modifier-panel.component.scss | 289 ++++++++++++++++++ .../modifier-panel.component.ts | 50 +++ .../number-input/number-input.component.html | 16 + .../number-input/number-input.component.scss | 91 ++++++ .../number-input/number-input.component.ts | 31 ++ .../components/section/section.component.html | 7 + .../components/section/section.component.scss | 44 +++ .../components/section/section.component.ts | 18 ++ .../components/select/select.component.html | 6 + .../components/select/select.component.scss | 39 +++ .../lib/components/select/select.component.ts | 29 ++ libs/blender-ui/src/lib/services/themes.ts | 34 ++- .../blender-ui/src/lib/styles/_variables.scss | 4 + verification/modifier_panel.png | Bin 0 -> 32059 bytes verification/modifier_panel_expanded.png | Bin 0 -> 44485 bytes verification/verify_modifier_panel.py | 24 ++ 26 files changed, 965 insertions(+), 51 deletions(-) create mode 100644 libs/blender-ui/src/lib/components/checkbox/checkbox.component.html create mode 100644 libs/blender-ui/src/lib/components/checkbox/checkbox.component.scss create mode 100644 libs/blender-ui/src/lib/components/checkbox/checkbox.component.ts create mode 100644 libs/blender-ui/src/lib/components/modifier-panel/modifier-panel.component.html create mode 100644 libs/blender-ui/src/lib/components/modifier-panel/modifier-panel.component.scss create mode 100644 libs/blender-ui/src/lib/components/modifier-panel/modifier-panel.component.ts create mode 100644 libs/blender-ui/src/lib/components/number-input/number-input.component.html create mode 100644 libs/blender-ui/src/lib/components/number-input/number-input.component.scss create mode 100644 libs/blender-ui/src/lib/components/number-input/number-input.component.ts create mode 100644 libs/blender-ui/src/lib/components/section/section.component.html create mode 100644 libs/blender-ui/src/lib/components/section/section.component.scss create mode 100644 libs/blender-ui/src/lib/components/section/section.component.ts create mode 100644 libs/blender-ui/src/lib/components/select/select.component.html create mode 100644 libs/blender-ui/src/lib/components/select/select.component.scss create mode 100644 libs/blender-ui/src/lib/components/select/select.component.ts create mode 100644 verification/modifier_panel.png create mode 100644 verification/modifier_panel_expanded.png create mode 100644 verification/verify_modifier_panel.py diff --git a/apps/demo-app/src/app/app.html b/apps/demo-app/src/app/app.html index b459336..053bd17 100644 --- a/apps/demo-app/src/app/app.html +++ b/apps/demo-app/src/app/app.html @@ -1,9 +1,5 @@ -
Current Theme: {{ activeTheme().name }}
- +l>Ya>X5dNeB*w59;$NNApq@MO4^*C| zDl2k12kFh(V`f#wbU#+@+_Un3Jht#8`Oe=`)3bvnd@|2$AQ%<6!5>rU!2AHHGxH?; z7l)ZnT#An5N9SBKLFWJP#PRanDgC7+l0lG4CX&4+4@UoUvilmi;C2vpy9AST^h{0L zI#HnRLYOy#hr%Rzhi&Zaf0gATcxy-CaXSiGYBBAf1AQbjJ+c4U$854-7e^z;_Se^S$e= z^{jKgcdd7Q=a2XPi<#N%d+%%Sef9O*^|p<(j=_6kzRcDjqCms5<0Rfzy<&d5%3sTe z11H1**JUo0mB0|jrPdBLh?Qu%Ig~I<9HbegVJieH=?f=~>2FaSTGQ{wQu{8!pteNL z^%eu{P;<6Ix&~(>$5PxQuNQra5C4JnSh%euO95HR+`{(!HSaf+vQu`hQeTQfhU5 zFtjT6{66-EZ7|9jZzfxYT3|WbF{BmxixXHrPZ858pwNMMtPNJVPZu-T)KQ7ssb-%K zS0oK(k5iBw=9)7(uP4i^i87GEXsIGn us;m z6;h!+#FtTzQ*zXG(PvLq{l(rMe!SH)Au&ucVJXypUU>5z4{>5!e3b;0nl2#ArAjNR z@%X*CV+CIrr5y%ZhqFd?%3=gg6#hyNlcsOXhx&r?3a*7n9?gkz{0 -=pcB4 zjU5*b0{ QFe7=;ir05=!er=SSdI(d+|F11jM{=anwZg?^fU#3|Id~;?exH^ z4z7ym*~}1sEywVk{O!k?uTorfIKK%ylN6j{&E`~Tj_abI(ykxuYbqM2`1-sh*SUaq zMs5$N%8NwDcLp8?j4vN#QL;ahM5KQXPV;$R<#UalEP gy`1cQ)lb`r&v_K1gg|7JxYB7w%(abN4tGj) z^>MeIcz!Gg8-0yG)AmyDQTc}zZNM+A##c0mAE$||0!?fz?M^HS?Hiv`VAbyVood|d zkHkC9zI)i_SQz4kPGH`w#!l}7=2y2Uf-x_zNZ>l{0k=ie3(1nlE~ N zz;J*_$cCF>4Q*gotS`9|7>{(o2xt^=1ora~xziqJzqj-1M;NEgV$)H*af}IaE=7#@ z8{>ISl;kxMHSS0Zi^1s-(8ASQ98tXFV+eUN?2Pe^Xg;p7#e(#5%M4vZJF9U03?S-E zW{afO$_EWSo|@o}E8idBJDG4` v(WhvprERy 4RxrIfE(l6#r8ecnW6i_e2Mxs0GJ2PU6 zQnIl97?*pB6Hwc|!@)Fqcz7nsE|UYYL}jL$os-q#VFb;gaVH($94ytmmxLuc4Rc?< zh=~AY*bdjqhs~Ajzm0sr#BT9Izj+Zq7Ud9&-E)o>)_M5P>!Q8)f9Tbo!^Z_sUL@{? zh>B>|_Sw5P)0`Mzza|%SrkJTKIl<_}&JYR-^2>ELMY?o+J6g4dMks#xz$V~8u)_Tz za&G6RiJ6(WY9s*yED=o>g~UU_4;Rv_0>4WzH%P3<`JRM_lDU${|{}3b1^G*Tgl+&W1P!+ zE@oC|4h90n+}z3yoGKcuqbzV>DV>@3uwib{r8Ul6ta{73y`!?(z)qD@K-p!ljaATN zNlfwa{pSO =tBT6aSe5%?mws^2};$oMVf zvEp!f37fK7KH!+%;0?}fMmlljnWTKLNprABGqP Ur+e;X$zEJt2e*nNf|~( zcCt^pP9#friy+(5v^tNm+|Y2LEwSuW6AzZ3Q=`TqJS9_lp;gA)OW(Av%CJzc)EccS zgEB8v)ww8rB_~ntP(!RK2(^w?`i4bF@<9jO$M^01kEN~Dk=V7v!^3fmnU5uY!iFau zbZJ3x3^NPH@Xxd+bo+PoH0aEYEoz#-5v`4sTlJnbRB{Y2>Vjm0TO-twE@lb54h>^b z-b2kyG`hy;cD$AGo$AwNS^Y2O`YPycbF0i+b)Yt s7WP|1L4 z+U`>=2RVf;b$Gs1gjbdIaK`+S_*pc@Z<8WuiS^0uG&_7q{WSX!9fyfH5g=(tX5sJqw^Ye84tS&j6psKP`XYsmB+MYMG3vzqL@IvG7g=r?@ZOaUq zR+jXiAz01d<~4=hsqVs#ag*|MG7Ug6C&WhzXobkLd0~v}<}p5%fVDOJji{@`?pSGO z?iSy?2>+NK%4&2>*Q~HOr%YwqsM$!<;dzAI2cH)>-yLE1Cnfj}#O^8%AM?2S&Y?`% z;I*6tOJ$LyYffpWV&`qb9c{U(!-hF;%BHetvz7-l+Q0ef-)D-zN51jmIc-~)>R>6^ zj0!>WR{wnZwQulC^6d`_4D^6SjRpwBcvG|Z!V@&aNFT{hE^6NJz_0kYK}%;edd1B^ zbhFTRoTHp^I|11%Re>0(py3ki{o@PZczxDYYoDk_t&TUf#!{|Oej5sF%gxG2iTTEB zMPOaJDJFaVm4{ehv^FNR(G^FO0X{jbMrzCO!!^ltz;NpR(8eP*zC8ahPM(Rs% 23wnXbda zM8( d%*J8-DqysVHg8?S9tpE%d6;;@j2Y3PfZNC1CO%cdF6zQ{rK@4!xmORNox$0}S?G z$H$(Od-_gnNM>fb9Hwsvq^nrU%s8t*T7$o&KDhL)?pOfDz_D*1$LLFtlfI`G|CXB5 z7}YPGLD@Z*(&hZ(gg$mSN7EruQinz~1j{%XBzZjp(y1` T%Szn*GL) zFFAeO(hfOZd|Fsmk$imbdb2blQ1WdA0BW}}T70^^@z&-sq3?todPickv9_1s?tcIr zSh9jOXEm5cQ=YTf)KvZz>f3M-)Xm+dAfJ;}WA^KkH6@}sx3p?4gFf@eUuO9`fF%_;!->2rZysU zW9!mrNM@|OJzz-ZPiH@8&D=-keVx`+eLb&zwDbPwg+H^-XK|KNWwm6`S+O_TKPRSJ zA`v7_14OHBqEFqRd{;sB>qp#5s)PaR^jn?D-xVFII1QfYnk1ALw$HzBjv&2xA%R|f z`#phq$R;i}s-o>AtW3JPw)TB|ab;bqX`bhYHhMgD4IOqE>iXiuMD`ULzLcT?0XMKS zYIm&}iHD?#pP*Y5Snp8O>FzAmHF`H>uDy+YPnK6?JMc<`&6MC3)&q14l_yaMcahcb zp*nfW^aJ}Bx_9|ij5~JEXrsjTg3>Q!42GRfX(}i@YSXt`o{zbu dc}RAFj~(J_`y8P#m-85vHc^1~Pxe!-8w}0v~6?+ro@h z$#du(uf$wi?5P^+ WK$9^+$Y&8?}LObvb zN?Z|#vBmJ%g$%}+VTs!i zDbPK|%mH7HBYR*7a+MRneC=PMhW@j9@h|Z}|G mvsKwF0VH8Anojf!)!wa*n^l4@ID6m}3nf*-g zDhI?KNRn0{#kLdCD}$*Wt&9`oU*(VdTwwC7bY&Ig`BtyZk?457Z)l{dgTxlUBv$h? zoMjBzRSLV3jRB5~0S8Iy5J{QTgz*C-U&?eHTj2|^B< 8j=z;G2E}vL(_iLrjCJmUs$19 ~{%0o*JDxNW_~&se>%s8X02T-EFjiHO zU9T=tW4 >>RDxA}FqgRnSh+7hu$4YyLu+B0=|1`EnI8wwJx@r^n z#%q2W+|^%)?#A;L+cZYcnl56OPIcH&t)9(CCjhs0h0KxUa%lk95~rtwkh`hJrNGd( z=^TG{5um|fH2kxA|0*8xw|edWcn8+pH&m43r#|LnrrqO{(0?nQe!0KyFWBBHp!<|x zQRH~4DQ>a;nS7W>E9#q27@8&++B$7>JJy(Q+2OfZ_`YxJ$I>1(^Wt8nVPo81DY{wE z_}F;D`otky`9<}+sCXOYTp*GeeYpp2eLENWp7y5TEVwc%&zvu`{XrYdu&Fh;Dlz7X z(e+D4_Qn}on`uU2+SzC*fIv2*CBz8NmIK!bMF5}u(eMY2<3-Z79D>8tN=s;_h1;6uf4BFO=y4EeV{R5nRJhgl(qA#zXjFm3_MY2kzBw zzPV%lC`aSe_j*S+r(%vV7atE-m<(NeDya5MnfEfbRY&=H`fdT8RP`&`@;oNBp^@w~ zOwuCU;F|~J`ui6QP(=~QuP+L-fad8N%)jB_50|Ff7Pjs+s|iMDrJ|`O7X!gy*l}_L z$xF(t#Nr0uI;dIOSWmymUdIUR{?L0Z@`2DQGQ=?VIN?ssUe 2v{g9+ z$~Lgqou$Q%!iD82ul`S-+|oN$zo MJ+@7b+1^|NHKK{+%4GR*! zF`bpsm0xcPQeZ!e-iZ}GygJP~ZImARA?0T+!*5hYmi_g-CtGulO9>?cC>a8DR8~8= z>(Cu~-uhOKfgPzlG~r~nTGX;FERVuewsH@Ap+e0N+(7`x?4%c!v5)nAcJX$Vr$EA- zhumsWq *<@ir#~h7h>m*YD1Lb>#$2LFp8gFR2LelVTE~(HEV};QfP_%IDkocyc@^leE zbZd2yy(4~ikc0NttzkAU0hT97?nqJ!yo&*O`LIn3eWy{S%gPH3exQmnTNzbk9D^<& zZTCIOpbjG6{6gwN!_7l|IeKH~3al_{$#fm5ggFL=;QlcK$*f3W%wrhNI>Bn{MH}r$ z(FfdhzK@7ju)@RPdC=D!JQ`K0WfkeqI0S4LnwRHDk1o$O8-Tgvn+zcvshnHljhwRn zF;`Ib9E%LWS7qkPBXC77bfd6`g@v=qNp38PrA-?+O^tf9XO^0smj*ZCH@^5A=Izw; z-U(z^Vg-oMT)d!;QWWDt;rjQ1y#L!G`R{i0fBQ&$Z8mssd1?@QIVTaS^J^N<10l|X z#NxOYRAwYT!qy(B%AhSM%38-Bn$^B@MbsVAItGw|0VslqTzx5AnIUTN5Xh|t9_D`t zkPJ~Z FwJhB|4EDHjbK!_R1zI^Q?Mr )K_5Yj&_~$f*KVtbUkdVUB?MV%ywJoLOmS)un_($V9Yge=h zaoE)vc@LcMsD})bYfSD|ZeGgW`dz{kuSDK*hM2Vk#%{y%jEuF> }vr_rf`~BJ23`>wD*zWB}cJ3hF2o^9pSEiY($a0QF3ibNt0C5o|k|f zB@Zfqeb=Ea_1-l`KyO~kG|-qV;h5k^Hk=Ac~qAc z2f>g`8GRPh_j3yVqG*}BYc%#oC29XXG-4R=Fs7n8kF=-I@K^XN=8|CQdj`+!$QUmM z-Vn2?F^u2P*2;tah@qi`u6Z-}Lj^8a3_sL^nOHyi)6NRRNP63J>Fq6Zkd*`{57xJ5 zmnz$}MV;#(-mo6C&sWWBnkAzoAT8^!t}NFA&m}htL-93ucZU3^z{Wav0jQQ}a$SO? z*Pxgxovz}}g{h@I+jT(yi%>I+>!b9^A723W+B-fv4#Q?!&^|5nSE(siB73lLOCW5@ zAo})|bbk+kN=Yh-i8}m{ @(=JS7V0{G9_zd#DRYqi!hDb+BA)sn{9uQYU_QZm)l z;$bPYzB(%~Oa2QoVq64JK~?3J6Dzh^MU3UO$7-r3CN^??*_dF&2I3{-12tKNRVh9~ z5_0lkETN0(7rfbdb#4FXRI7YE_IRpF$9w(#JJEM$W{7}*fX+^d`}gj#sBwIgvG71b zo%sHUJz$Rvur 4Zw9tRwymr^fGK0I zQEs}p)mG5Dk(r;(z)YW&nK@cB4@Kr7w~ZItLaDBFw`=XX?&;WGd3jkb%j264Jes_T z(?sMXW|IXv_V#-xf`?vkgxk5>CJ9bRNQmgo3!>dO0+crKFg9sBs0IZG~&tdav5 zY@_C7`T4SP_?O-2MgVyU(st(NQWq@%z46&)&V TJK_C1j`=UI&-l+dH2*t= ze=d#rf4BwZf0yy^lN|qO5C3}>{*CK&{(o(x8HrcYyE!yr)cy>gFSVeBX(*I8&Vkts z7q1S@7(J_Eqz| egGC`8)E}rO^=`6_~#1qg?T3aS8HN>XMN& zPu`kyjAWe+>~YN{*y*pkG%sgx6F6;*YTw5bRX?Vktz!GrLGh>}au5KTI(7G;#V<-E z_C=#~_+a}9C9-jF5C%5qEb6KqBp$RaA5maSU%p^zDFwxgs`&o>>BBo*2|Yk$jNNSb z@Iy^QLxc7!<7#|=;g;6c`R&8A(-ZKA?PjUxdQ629D)BM(M`QrPS5WdFFq0y8jHl>X zVFdO=37n_)94aRdCLz-RScs{qX;ZU31hP3 ?)T2W<~HJynmkYv>! zMgu kpZ;Q2_FQU__yU)$?8DTSxMWs-VaNx U=b2 zw)ASJYjqlZowZPF4Ik^ZB_#uUm+|5+6XPp%dnDe6wC;w6d=S&H>|mu43_M9rcb60WV&OPS#MsoVTIM@3@z{GYE~+B`6lzq z^Un>AldXDbZ#D+&mq)WBymO`!7lXS${aH6f3yHAQEK_OeZu2S1m>BJ8LFX25_+F~M z{>1F$*=)w3epGZR48~&;Hbbd`-W{F{?Ff|RNP*5if>++nNAp}%+M#pIGj^k|iv6wQ zoq?}KHV7Kgtn(CgV?dRJYUq+*>JW7kDy%9Yt#*xAoL!D?;^Lnydt3sl+c(Y@@EXX5 z0|ICa8ba6harjkV9a{AqA|6k+9itF{Ho0Vny=5S%dKs$0;>zYrkXatg^=Ix8>vUlO zm1sFYT*>m=3aKdZ9)&eVjK;}ZItD}Tiu*@YZ=}R+pPXi8C6-DmV2bqOUY=1d;KqmC zfv9)~P?nweyD{FK93c``pHzY&=TgmvTB)Yz--fz)idrY%`bX9BGANrSs@c3A5JXPw zB}hNG;se|R4*X9ZXxX!i8a8p3X+jS1Wy^mxP_l5JCFl|ty|$z;EU}6}sfa!17J=W> zMhKx3=r2gu*$}ST*D>8+ ?xaYWHlZmLcfR4MkCtyO%$#B+Mr3>eZ zf3a%9@%)?2hxbAR<|zR3j^G+S+53bAUtfjBFb48lT7bl0eNE$luraAE?0?4v| z=EfZt9X(PB*#!6nGb}wvBqd^VU}A{w+(o=|&9D?n-%qwEVg8HVhLJ(58 ~(fBk|Do}ML@tE$?OlEK_l*CVAM@WMPz_d&ksY+jk~>!PC2+WtxtuUD|0bl zM73qD(pIdT$Y&1fh42&l3pY*tfbjgaID|p1^MYsFA h(AS zAjKZ{Oscm05hih~tRv <2LwY41Roa;-L9>_sQ?XcbDWdL{tgQ7_+&| z)Ol^XZMstC*PKjls>PLZxX;FscMJIc;a>6OuX=gNAWlw)N6Sg)Ys$6sI|~fpqkz(S zz%Fr4Jm4j}+C$z01TIS9YK6yhfiKVcC{FtZPXm}$xk%3%1%EeARziS$oP=`sm)zdH zHKE%ke+s)*!Iut1#^*-O^MeC+9?JM>MMXO;Bv!viS_J@3*Q}8$pGon12J>a@Z(HDA z2k7!?BIFKV#uLX&Um&wp3>lCY@E{(2r(lajw;kqBh5NGSmP~~Wr5PEmv2$tzGY3`6 z{D|S)?Ck8ym6i|+!5XXSnpO%AKH{L3d7Ia}@kcqbkL~JjUL2uU49jHKlTK##6l$j_ z9^59wZe1J7=CqtJ=4Xo6uVw>|n@G_RtXJ^-gR846M_iCFWuc1sS`aJQE??4i{*^6J z%-MN6@vN>xv3z{Po`;`2grHHOm4hKbSHy}Xrc0k?)qd>NmjMRwUcGZt&uzaq7amJP zM9z(5S;2&kz5zcWS+K6S3~Z~pu&27X?-tU*-UMDxc_|K}EM0JA1&N$oZU@@EYaN(& zpUQ}G%$WWIc4KFa94hExni?Qt?4g^DDRb^?eXPYr68PFPFd*Q d{jvpP>5|b~gSa-mx{JZIODyvV=U%@^FJtQ!!mN{|D)9 t6}ciPK9nl88mhxcdy(_3-uzbhqz^t;LFqZ)QZ_< zep lr^QSBh2I^g!hg9$rX0A`bq9PV)H1Hj0i9WCc#>b|ydb}O&l zgz&r9W+JkvX;{YglpPvJcKeZAUK|&OEr&H!2tI4gs9L12tE;=%5wYn4ugszG!=Vsx z+L}q1jvE^vKR`|bUIGZ{_Lj$q)w#v#F={vpJ~UKnzuM1>te794KHDFV6?9utv(+Az z&g};MBZG#u05Wdp*D%H%w=-lhrs(!zyazcbA~>WeublRPoI;97mxDCR?r02UnPeo= zmfz8T->>outH+FuvGz(3Mx+pY+OAhkmNA_{!f^ethX3SbZrMGUI4gVmQ^ 4(#}VTO~kGAz@K#OZ3S5{jK1`lQJN^rY%a>otp4H{zmPo>LgX+;@vNUQDfAE7ce2 zj0H(De5B<5RqfG>{9&{dUTHenf|B$OAV*9U+ih~AQX+F|myy0B_iINS?RRKOvry6u zzDcgg6==+S-e`rh$);Uz!soyvIeeNY57Gx#-_zOy2zly~!Q}idfcxX17AT(j@dE?` z&6&nyfPvyDv*DaVcc-nm>EG$a#k=M1h;j)D2@c?dbbIL)j*uXrX2ZEmA)AxO2s|4h ztni!5yiX(fX|S-)oDR%ya2*h~YdqR1%~R=T#Z}c(jYohLs99n{jrkHv9hbY3JoG6O zlp^>2e|2=n!Py;gHc7ZM;0eiTK?G`GFq^}w>(3xEib3_L$SiL+=tj1PWGAYg|3-ED zignmU?Yy~2h{Nep`^K^bkTq1i@z}zK=6$i_z_A0n_jr19c4d} zIT+R|J-OJ&z7_l5@T6te&wCbG(Igk+WPzrh(PSjlws9 zfur;`j>R}Dp$6n2&h)m&=|ZAd-*Gp*b*zjmfH}b9D|-7aOlN*(Nx9)h6@#1ouxV9F z$(#Kd1C_6WZzQ)sv`H?#eC0`c_vT YF4@i${GQp3xQdGV{d7y}yZDc>t=$&voDsH&^ zQ~Aahsa&R{lYaM71Gk7WD?~4BUJ1<5uD>wjIey+z#$SBCWClCiJi)GAUP6QbN{`3N zC!K};0>%|L1S~yxYL;k<8dK<++ro;91a_`Q?J&H0<8gk=N5oW#jay?|*}ivmasa%1 zW4&{+d~9-mVb%$m4Ko>tZ3(r=cPvku65=k )(nmg3ry>#$ATEz+wW@;Hb`4i& *_%!R7r*v~=Z#kZw`@60i> fPi}pi+~K|V&T(JQd$CT-B8^hMG$Qx%U;|b z>og-KQJ%Cv$V%%KJo>0aw(~f`yegyKMRnUL%$xj3AA_O37)(#QcM_IhQ4PIY^eDva z?fz#dJ>6C=SnD)y|3?6&QITr)FZhtMfx{11YTLx!+60jxtK&C6P;V%vDjlBE#4o1x z6!y$RsWw`9c=h5WynAX`r@rGeS(s$f-F5oyZt!apKh$LW9*E#b@-z;q%6^36qPmvB z_cP(xsO1UoRIZhV+8Q|?`?p=Nw3FenfRpgD_8^oJUy6{ lBIb1QE$Nc)58MT@5Ne@OmaqHU|f9NO>t%A_2y+GkJoG>}vnlDTtGl zBzK5kKA2mzZa}L?7 0P}q>%557oX z_RNkC?QpO#U069&mgt1v 57>=W^JJS`X30a1A$&VxEHUBD zLrZ(fJv*tHNcJyw&*x0PS5d!mRx2Q7q}yJ}R5UezinKD%+g_|O9(sHaD(it7<9-?Q z$V|L3YptE;TXRC6okxq^(XebPOC>gBD9UfjeLf3fQPFb@0&6Y2Um#h_zUQ_~K}(Xk z)pvS=nK1k!u5VWAXYzCE<>05rcb@xE5oxmG5Aj3q%gDa>$9fRl#4amt(btYBOPFeu za(b#dIHJLhLfw?Ojw}{ t#!|?bWhpjg8;PCx>$f6>nuYWXv&|8vnHJwEb?V>Mvkh!zKV;?~0w? z%;#zyq$@$o@gy!A%D8SGQmb`nL=$j1o>F&GVd7lADjdd5%M!rOM#200cbS)>#Jc6~ zbjcYKQc5cmB2eHuZa1qS_*2Xw>9ij)>3V=)npb(EnJW|W#C^8iqV+_JB2%^aD3?K0 zYZ7WyR(_vngq027Ulq#Bo>)^;_CZ{3E3GH7(7)-+raz<{!eOZ nevxhvde> z?kE`zzGCqUd8uB!nv2!f$O~R0)qrj%Lh=A0rQxVVgd7#O1 Cu1*i@U76l>qiCR`;=t{u?a@G~F~!RTG|WCZMSGGoHU|46U6EP@CAah2 zXXj7G9S_oMM=K58y0^hryhsgL9uy{~I32~CE8m1|bt*EhA~%1GI!?@Wy{+KpdJthX zak$@-IsOz?6DkTl8^Xj% 91h-dc^>&7r*gTRPr|mMdc%6;{cod9 xWz(7Xk@l!_3Ji?%^QZ32Xh+Izw4HJT!}Zi*x4!D50q_lmxQL8!-dpXD{|9MYrqcib literal 0 HcmV?d00001 diff --git a/verification/modifier_panel_expanded.png b/verification/modifier_panel_expanded.png new file mode 100644 index 0000000000000000000000000000000000000000..d9543f09830400785e53231f4473a0c2b128f430 GIT binary patch literal 44485 zcma&Nby!r<_cuC%f(nR$0urL6NF&{Xw15ahmvnazFeoK0-5??jL(U8xQqtWq^w8Zf z@DBL>zV~_V@4olm^Us;*?0xoLd(A#;ul4z?75qt28t*aLV*mhvCoA*eGXU@a{S#y0 zAqM&;MkRL-0C) X$U|X7$?GVYhiI7q09$7) zv{Y#6uwDT$Z+~!N+#|ic{~&nSbbI#=69Zt~{xH6e!G3#xMf246?v)n{b@!@ra-_oi z>+0&}=JfuJqosWB|Iqy_0QdI&zYp&l+}_2c{*N=-*JBy@HSgssd0UR;DM!=hGn!Em zMRtgu&HHg%jhT~E8)-Nlv@2%B#idNoI{xmh)(`f-)il63anN)2$~s1$tsWV9^rp;z zAb67(Kpx(Hb1r&gW@`)4E5XO|%lz~vN+#7?0|dGh+^u_81W0|i6sq6IaCUI2FY@f! zxX?Du0C{-M)=YHgyPQ7l%6(CN(W)=SRga5+8P^vip$M ~pW};Dl3MY$_VGSiYOdn%{#e!rdZ!RSqlWwvQSIwmd}h z^2Y4|W9!aZ1R9~uC=?1Q-$+(0Qbg&YR-vN<-t|81$s>!g3d8c$xt#M^f;LhdFfLx? zcw Ztcl*I3-BL>|@CZnnx52Q$Y<1UCZkb};?leM!eRU0t>OMu7%RNx7z8Xec zpXjTfjiIL9SUJkEbf@R8L;KUN*o%Qw)lP s522Mz@L_zn8-5 zkgHjOMV(Vu6dAuvb~N;^ZzukTBc&*2QNWx%Ur`*mEjy}P^kAiAPJ74m61sb1uOAex zBH|#03Jc~}n4YotXqG>POarQ&7pXr(G$3xS!gbYO*~(*iw-rr$Phk%s%(`9jEdLON zKayo*CG&;W5`Goa?~A=S;7y5+v$gU-eXwGG`ZR&{g|Dt(N;$Xm6W6Ml&Ws;JWt-bi z?)I9x9_?$-KV=*j--m|TNK6qN0<}=ltHu;i$r6Afv<(Xjt2O&=qQkf@a0d=PJ6wYH z&1c%!y_}+tHW>glUI(P|W}Kb#=yTE`&X3vpC(c@^uIW5}K+kCOuM*f4i~a&5Y`vG% z*>2k6EQ>Dw)}PL)h_b35QOul8b(d@lK -s|C!en{gL8@?j+(SCRa zc*~tlxMQ<3ALA-_lOa6%GQt+Lq+Vh(^0;-y%^Ot+e~{wE-}XQaq3?6mofDjKew3!t z9zG=Skm4$G_hwIlr0wqCM!u#aBr>*0?tD5Zf9W@ 0Zc?) zDVNYf%o6tP?G(?$-dc6QY#{P)D72*&3O@5(UkU2p% x}uS5HDZ}Y zgoA`5u9OM52PZb({_W0yt)(A^ LVEAB0P$4k!7wj~^FVno| z-BXdFV?8G&RRtZyy)(|gYK28-Ud{6P3~#+b2(Kl!AOV3VsFiTulp-Rt*l8To8MT$^ zlc`-eclE3SIk*I>n569GiE%{fdAaR3I1JjDK3;9ljOT1At|g1$H}yFhdp!LEEO(vW z=fZYlyrPuuwb@1mw?%vcvTv*k63-q4_iy}u?VRbnHI=K{o2VgF=JV@UoU_tQt`2*4 z!wh^o9AW2Fty}AJ(=Mg&fr`bD-w$Kthw$oyKzmN-sLY1U`jT(KaD``=J{ea+(7CxQ zl!!7=KV7b=Ics`u=6He6*-BB-@qYE96L&S_5?OKkaq7q}e4tKzy83}yp6$7D5_6z2 z#)0%wp>XC+Kb1!d`GuYmd-UHr7vDI8Pf<9I%f^*t7yKfp2KQCGY~4PMMQbX)SF~;G zXmE0LE{V5+ucq!d*_A)6+wPNvM+yu+6}~u`4r0wre6eFG;JlTS1k9??N 5KyFMqf!?D_rjhq1?gin2z2Tna6-ue(t59&yOH&4gGeU#2eM^+YVIYL(ITrZE) zc;52jN&F=0JP*Pvr( ;^SXO=Nnx=Z1g~tO+jd(mBumb}kH1C4F(RnMOWw*_uK! zHEhEQn)_F1h@66+`9k}y9c9w@*K2cdu}rP@TZ323d>kDWM_b=+TWVETXSEcMZax3Q zhE|X-&Jc3hCO@^jD|$Sa-t2w!@z5JTu8pI=f-{fpsb4$OtGr>~Yfj(RD(4I j0%r$w$Oe%oYbUpzg}&EOTtDS qjzg}^?i Xj5ovbg z-J;J k{QP!r<24&_s`n+@l$(GDN}-71ERqckKULcG ztKe22$ ?4Ok#FC_wZrl>xEzhAJ@rpHv=#L>ud%pa65UOQIS`yk=nbB( z?G)c?6JIM062p%^`mClXUNUZmRLtNWH{_sl;^Enzp=GVV5NLfpaQhZOCz`7mv#1>i z=7heTOQ#R@_`F?gl=~5`#S#Rw2@8}^_vGWc>qrt8X!1ib+hkVH%%~&EFY5beo_y1( zx`2}_WpU~IcTq%GDHqUJDU&ET3r|~tIF!p(XJNttD|BTqqIfO><}a{C=Y2O+mCibT z6E*)U0axc;#h6igsYnj9mH6=y%kcVb);njh>0veXJq@CRV<->LU;4t+M0v9T5;euG zO>6a~glfLK&<4;FyK3gE6t%W#xhv#2AmaH^&q0&f6R)TP=XRFA2I>VEMao8HMnR_! zyk1st*LIBdylc8`@+EM7fLSVIV!#%8eH-inAotXH0Q%{5bwd9Mi*!TpRl(uvw{3tQ zYU76gf~r^B|DRFT{|K9^`Y=irbD3CK$9(Vu#P4SF#VOZdp4#n*pp>U299IF1IqpuB z86o>Kz?;SJ_}JKgu^ww)eZBYQSn=j~iJh%&LpsJ@B8O4sQLXd(=YJ}CYCfvMA}JUB z`%MTfgi7myMj`4pmIVM Wg1^+A&we9TXkl+97 z3w}jNQqI!-^yQ}>etu+~3R?GqxM-o~LuB&G65qbS9kQ5I22zKxYlh3wQoO^X%hdB% z%vH&XN|Y3t15&@l>+o09aWsev(~P)k)((?=4(xL@PB|9%!hv3cE$MBr3i1CSL@1-C zw4I|;VXpItNx%puOFa11{$pJDP^S@QRN@cXdc6!8TCA2LG90`k>^T45gPVlNh6v*U zhS(Tgi*sJGaf?iC;T6_zgYE~$X>;ULy6Bzo4+}7cYAR@P@Dj-DqK&O<(fE^5E0WMB zv`kH|g=DxNM*JV1p*RX9Nw!4w?y1EMh`o9ye^U4^v7(&0JoZy`E-9|1YWI-W;- WjBY62W= ztY6VA>YIH0^Ze<2*=DjZ)9J8iHT=HLPR?|h$|)90Wu3SRCuqdh>W4h=D>ACO56rBZ zP83gu*Z}jMVh>0GzRq%Qnnm>4eY}*`T~4iTe%MsIhQ4R2lTxj3%Nw^C)yPr~@y~KF zD(5GY|2t+}p{B!~v~15l8CmeAfHnoUbGHCbYMWV-ANk<8T=N6gpTWdIW(yJ-(n^V} zsAVQgA;R#@7|h}r;cohv*UwZJ3zWm#ogHDRHR*%aL(+dpKq>|Cr2(l$7xZ@R#vB3I zl}EM%4474e)?9nu0%+CU!X2;DoXba*4HSrtB(ASVo~{wCe*#iRY3OX9dR{0|6iFGH z*8ip_toc2%9?ex1C6o8a#?D@v0(?B9&XpMU8T=u*`{Fw_t{O|WRHPf&lB83_S*t|L zXfgKMSz!GaJ}$$qB+fF*&%)=2UZITDJq;OEpL>9D{9AlQU2 D^=nKd@A&HRd^)uL49rF^I!kN|C<)k!Pv1Db$8ysp$kb5~WQa5nMi zC8)_h6MAa0#mZRbyyeaT2CGb}CZvjKF_AIkrpdL&e&X`Eepob2-iyUeID`RPkJZej ztMAN i1$KtN 42^JVnq-YdYEZw_;lD<6NJ^BBl1Od&R7&Cfw3qUqzHY yGIT62;)BiX7pDj~*czvv@}2seUPm&4RFgVDf&9oSI}s@4KcI@01Fx8|0* zysWRs)av5tELY=ekVza}SJ2e7d^La|k&DZQ>W1nSvZ8G|gz4_{7V0$U?uDm~T9za6 zAQe{KEPN}YODR|t!u?)q=tv&R%66_3QhxZ+%q2w*!f(d9Qpjy8_;J$A)y c4`pCn>18r`RAYka0*3sw=|Fg&c3^D6p!!mOdRTh-x`vZZL`|`C$+YNV!86e@i z=FdCp|Kdy4Jq@N#Eo)8m`J3sZ&sETBB*#pK-Y@7&$0(58_t+Eld+J4&{97zfVP#2W z>P&-1QQ}Yr{b4#1&Cg2?nZvU5OHrusN5ESL2>=N5U%)buwM%4osd)`qoveWB0)bF! zd)f3h>!+BRdtX=kawM>A_#+-cp)5g9+D7v3-ZG%Y E^|s!kJ}~?79e)}%gs7e zqvGP?K2e8H^H@p$JIJK|+GCa$6r`~zP*PF`e=xL<(kq!f@X6IS>n3de>X3Elhlx2m zJ1Z$E`4;~l9x4?<8z>!3o6?&jsc$oF%=sd`9rj%SS L&vV{ zVboK(4sW=3TNG^164qvVxfxqz%tXuH2p zRVV;I2T_-jfF*KPk?WGB_zC;&;Me&ezJ?1EXOTa7sgW;;_`aB&OvXX@&(H3+9p8CZ zyOC9 !TSo}-E6aP`&$OF|fjID>36 ztM{%?eTi(y(FUQz?TY88-Zj!!wOIteY0 tg`bFFo<6uE{*P5p; z^Q!<*09iOvAtVB2)j4i0azJ&lqx)H$VBI+XdW)AzS9QzE{dynide#q4^&Sh^716QU zc1Nx==x^uwtd+5iu2k^~AD+oyN+9`tF4`hGGY quvZ;c)%uxe^(>ly&R?L@4uwr^Xh+u1$|cK&=-TnwRx z=W=tU8a>mOF6_2l+rqv5=;l4my5mKT3B1{9pHSBJ;HJvZim2;YA9((1Hn5)Y&p%}j z<>Ilv78N}{E?gv({Py*pT}eSgfSxF+uS;3tv(Ow2dyPw7sz}Xkev-BKJjqgVv%jTi zgwwXsN19lMG_A( SaHh zBV^Gw-rE}P`h#3=`NVa)@VvXAc*=BO`-E| F{LrlNM7^=IUtwb@#@?%O%83 zO77{c>pvf801e(>a(3&Dw*if$NfRb;5Nio8h@~)1TkfkVnkRwHz!65PAF2%+7VtNz zubb#jh$AiH^fDtKS+JwGrI!51LC#V|rU!*2N+U$M<6}K2nIgpQ% rC>*|oR4x&*f>(L7ljO5VVj-1b5qlc?{Um`6?i5cOWi>|RwTd1Gs4RPkQK zAqhW-_r@GFdvnn>gJHATnQ(F$;C+BX2sPAx)^j}|Q}j6aWg@>i8cU)975N6)X43a` z@V4r+koXC;V$p1HwsmocC_2-@vjQJpkmZV+zR|i`Gm o2SvfHEfsFW?FlE?Zt^+VbVBtS0Kc zn(Qru^)|CS>hsZ?%j4h4X#ks)M5g`urKw}YHq$4$y{N8gANFVpa;I9>jhI?k>w#4) z2fVv@vj_xcCUh8$B~P-q`@Og{Bv#mY4t5E~x$*#tH~)Of|G-5)o@qtVtfHbie>em8 z4+-jHG0>?{w@)nrT2tpa*n)qa;pOQfz5grdrJgFCRWNkYC?CR<&@WQl=;4$F+PV6+ zQ6qPGJ^QO1QX}>~qP@4*N7?(}mHcS5iTq}Wci;A|^ZfwmPv+dew!+2a64yo8FTJZE zVs9w>+6{aZfU`r=-3J*S7eM6vrlW&R@c?I)j &KLL;|5+ng^m zq4HDu%s57Aa`N?Cpdz^(Tb7)hk!|D;ldRO9d*#9%uY$`0)GGAw0$VyR7Io9on(cqr znbyo&5~znxxw*GUq3WhLNP42icDG>TeHl@RMl)1jWv+g9?Lskv`}bxkPAvz9ebthE zD16bhgHho+zQqQ4-c0NKc}9 wn$Id!}uWepO(@cL5nw4pE{cAC~rt8X7SuhdoRwceTQfV!- z{lL379IrR67@`P%+kyn2dA{$xn)+tEaxuxE?-ICGp(b= pzF-ig=Xy)!s63{0%&t-ldB@%Ql&ZdDnhu1rIA= zud2g75P8P5sQgs&I*Aa9QTAN2fsTv*o~w*5`Q7fHOjg4Dxk4=Wn)gVXzs?Q5LB&_i zBr8zZHZ(^O;om}B$o({Ibv3fQeG#+1K6AjgDkOHtkDNCJIV-YRBJ%n}9jN~TFX(be z@ao*M_I>(2wK@gt>Gobm?w5#2R|=uUh5;q|^VyHo{MOVj2kCGcJsdmY|4z^?Y=CU0 zU&hp7$0 xDvR!oxGIbYpb FWgvj9;;X+d9s}C^)e&6hQzHr!Ul@e!1KGOv0v$m zCD}vvaW>1kcP*|Qtz>(=&<-MLZNJgc`1F@8b@|cbRMWG+uxJtzzv4IEWXu*wK)sB` z-%wZLZuJg_f^2(L42O2d@%W!w8^8K57J!L=z2s;HnL0 ;RaHH>7g41-m= 30 zEi$0HvA}R`Dklu0{&=$o`+C-SSu{4JZ6P`6_je`N`eKuLch>+`;(-7V+u3e7)Ozj! z?eu;BS=*AUffM2s?WE|!gL4#Gz1v>jYk@<5e27LF^m3~n0>;6qeKg8 zL*x`jZy%$>B3qGV3x4OTS0%PTOL)md>>NkLOIU%^qdxt;y_64w;yB_wi0DtLge`f@ zj$PqN7Xk-|hgpMpoyLUf;jzN5eOH><8-u-@uxj!66V1a7WKXD_9^%I;E*fu5ki@H` zv`$jhDR!f@*R|hgEpB3Rvx&TjXbmxC%CxOsi42@W6_`}A4lxCQvUpK0%;18VdKIb@ zojuRyRVWjJ(8 `ST(s27$E8=tN<|{8@F(mll_t+ q@%#JGcffnf<1YFhE z3e;UvK4h{BxXI;WH?l;-8rLOu GW{1q=M-54sQg}e$A@ScD zL9 J|m~) o|waUa&i)#nuEcZMIz*2 z)NB76OUrfZsf31wmRxHXCAmwPnDHM(`(rx-j~EwA=1g8%|Mv*D39mgmiPKxa6MZVM z#NY+@&t@wrG-Zv;V}&X}H3;_;^WKd1=W$IiFNj(b?#m}7$SJHvRQ28<>y@M2cRM!A zCFd}lu33z{%6^GUhZbI9FvQPtxh^gC!2?!Otxg&1Cz53O(peo1V`$BAF*`6U^QE=wN(ThkH*;ZBy?lsa-~)v+vOl7 z=F1$7<|BWb%I^Vq_1Jjn!ZqfNiaI4sg12773vssft`Nl?i?+FC&bny5XU}MJ6bIwt z$o@o4T+|0QWeed`D6K_!_TIq1jBrHp_I}dIAr&>>9F-;UJQy=Bo2$J76UWBNi|5XM z{s>f2qG33Sex{!LCd%HZErM6?<|fvBxlY)4I#j+Jn~F9*+AM##us#0bGVa5l= ff>+O)iG0h{Vp-#-@8^iKJ^JS>>aH z{1>aX6;;o)uv|S>;-(F?BX|BfQ9Sl1y#6{6p!g#kkE)VEhq7km{(z2Hw^$F(}G?UmCTn|J~o$S8iewAn`i1H=aV5g`Dz1))7`Ucpi(Q-;0}} zxuz`rUzXdv&d@n-De ria3Z|*(7o+c_NNG=y~ zM0U9D&P>j&65fp!mdbVCAas<+qwDC~uf->BcI{?uAoVBnK#Q0r~WOk zIjqsU{vWR-pMXY}V2Scwa;Ro|+JaPpg$h`4t6@~)XMUeQAVF9z9pLm7;oJQ$`47Ui zxrbRA?}#H6eu7OST<@)S Sh YrT7}H9~#$TA&z ;^9syWi%&fbYM;4>$AsRjBeWmR&>PD5!UV~aYY@8{BtLyWZ9oZ3o zJZnc5N8WfLKq#a@^DCt^;hm*=%oH|3fPQQ<=dMacqgIyf^)Q5r=OWAF+{skkdsXE) z3r{PSt`h?QVYK98e;W3}dXk^Mo_55YOXw*n>C?{ (}Ad)BY~X)SR^cTti46_$~y(VylN(j)Hv*BxpDY7 z3UTT8tJvMJbzjDB#zDkpS hgDsyMW%5pzThlWV z@119PqQU+GDKmEMilQ79bq0l2n&z(twCPX9b9uFFc!o{X;_m5SVCe&R$uyZD5d^)0 z0x5r}c;4#uC*#?G>Io$>CLrymBk^%u71vy znbn`Jka^^QP1F+^HC`L8LVp#W37pp3_f%5rosgtUI4w@fETRWjHkv66=RaT7IJ8Au zfm~yCKkva=A~SLU@L3l3DQfGJ)t5F*xS+N82k4JfGdI4|8x%gQ#DR*c&4!s76=d>! zkfm0p5xpOW*G*!WW5sU7-Vg$xv5aic*1s26+U*VgAjGP<{Y2Up#zBA=NMs7KO_!LC zxKC5|fwMcE?^S=4$tQ`g21l_BQL1zkqE81c*pU2=#nGGtRH~}?=H;?5aA)js%N5jW zE{u>A8e1+qpgrvlI5t`RoMu*6Io%-W;(g{ori7l|M@qic^#j40RBv4lpzSFvP-;c< zh? $niiji{|F5 zNt{PGr~wX%Ji-CU@D}S?^^aN|PuiD?rZW%9l}{Q%wU$-nD+SW#3`XR|6WB?Q1SC1h zXtz!3i^e6P807 Z4s&tjZ^a4xK>^ql2o#NVH_k0?lZ!W#s_Z(vE)+}J~@&O zbG0*Y9sCu{g6)<;@qh)`m+GF7y*WzRakIom65(;C^1R*64HZenkQ Yx_6MZ-3^||*hUM)2^9oK(h{9ykwm69=TZA#EFe_MNMQ2!bElZv=w{=JHlv2` zzY22XH{L`sKgi{Dpyp1g+-Y%VmW@{AK~As;o#E&J!^#1+d}UvccU`gH(t9H_8AA)K zpZFOwv7rw9-ifN4gh;In2GD1Z56@(zHd?NxQWrn57TOn1R35|6zBIq_RZo12qoBn- zp_VAhxGQwSOBm`=p9xtmk$FX5Cmqq?(Nk%ziQ**=OJ8IEi`Bgq*?+Z@+tuYyC`@3m zVhu`qZy_M?^ywdEj#bFp;wQ{$S*t~@^|P4RZd>3%M#N#hEZq3;#t7hhB=;s0owf11 z6`KjB_3DZAqCkC7W97{LcrNs;nZK! zP07OZ*gyre?Bv$tQ@!|CrI2l?c4+$0)ToU&9>KBR_f;(+cir50^;3f!&M7(#U%Spt z@nR;eBE6nzbn|e42%A=g6vUu36&Sw$06?>QR%#A@Ym{bFSf7utt72ac{KtPorZ- zVT*=2D&>+vgm0 _o z#W;i@5fZ_vY Sgews5_@ z`_B!~{=xsKypVa9X6>|$0~ja!Z-vM2*8uX5@zKG !e~vN8_h z+JS>a3vvufV64VfnYJ2T|xr#G~zB^^hew=2 TZn?rxk2?>3PSzLkwG~E-lK*(GoTre7ap0!2ad>qb99uRl_oS zE>Ep-E#Z@#{r4(dLk&z;R{BZ_#H}7r?@C+PIfsaRT?Eobt;-V?a=9N5QW06k3z&Wc zLv(XDhv@#}MbZf0(*Od&ubv5cmqOA0JB#KYy~~ckrkCT>zx8jYYkDZB1c;~YwB+mz ze7E{j&YgyZ6`YmzYdpF5$%p?8Lg(EN=rD>hcg&<=!P<1rH}iHWc 2Iu<(go_vb&oD)pJ2!k@BB zXZI10Kd*cO1TH83RwX~b%Ryj|M!Ty(x}k-c;a!*06HkSlchc`Sooh~VS_*#sOC6I^ ztf6m~!*zyJ?%3Yt1_E?qhInxP)Sk{&(Lz^>uh{TA>+l@^6#8O^%kKZDmJ4)zi8F zKBGftBg`|S(->}Jiz+Q^p6NX0tUn8-q*$^5Wag-kQCZ?Yg%CfyA1Epi_xLU;@BgYd z`X4zJ282cObSCO7XRUQ_r&oL&KVOdoP&F3M{PVBXhr=m-d+Cld&RVyk9;SRg@qge3 zu7mB3$aYz;z-LjxlSYPV3Vp {39hJviZ&4bo01(cVXAT5zhXu6ynl>tCN2 z3tnHp4niXvjvB>d=qx}qwq+xoH8?jnXTa`0Si#8wNI7H}=}T4JC~ZYiV!PQ2PEht{ z)R;#s?bYD1+yjDiSqt>JB(^l+#lp-c2}&v4HrAO6RF1VLw$p<{B|a08#1@6QV_{4z zrRxC?p*GsJ9(z~MxCbT|t39SByqwHH?tAkgI@zF5hICPvFZHOsnsA7H`6n;an~Psb zIF+F#lanvtz}f3EO<24OnnzrkBwFof6DgR@6tcapD|3i6gr$U+@4>gGV7zgq&~(!g zC30;8qI+)L={B`GQ)yG}b1;MGIm#c~Jo0t$7JHR^h3}0QJ-yUZW!p;Riq)EEPL4j? zW;~GRONwLYQ#5_wWKue5ZPXsdUu{*UAtxsnK`Ds-qglNS+aDM(y8TI=E?5e3gG^53 zvK1t0>Qi}}NyyhSsVeK4^C#m5tX_q9EljRF!f_fbnznMPJ+++~qwFnC<}m839H 6$O*5ga=kje*txFa7=JCTgdh9WHbL8bVQdB>soSY1z#}+Q)=~KIvXiE760Gkg z_VG=nY}&$%c*^%VJWCxVZAGi{Y*o|pd!dy-QAWflw%Vy3HD?Jd|H-x1Ye-#$rd zn-kuIIfwkpcQTz5p(&6we|=OgJiev_&tZHqW7E-tLx09wG(9bSaQnsDqa67tkk)nP zfWAs>aXQfX#Fh_|)eNNnYTm*^XbTQB=O3OPd|94ALT3h(TSd6L$#dQiM=(801D#Yl zV`F%4W0OyR_+oLrj{jD+d^V4y;8Tlty3b0ORY0wFjpX%&VX^vl`3lTFs2jAwf!q<@ z*nXl-an4gwKS1mXbzc?_YD?_-<2|=TH=TEyS0OR2hDq5+ybZ%)cJ%QmYXJ4n(MO)- zB%kc8kCCY1&RNVLd Yw%S9}6VU`W zu%wV~J}-%fNAS3h&dK&m1AlcsmcZ1X69?{?$BPV7Z?S8%1&*E%TRv97emEJgpXlB7 z&|G%9e^l>toNpuB@4UgYNi@=5OlKf{99Fj45a0KXAx%L4X5o6rS4StRunMJ&&H>mA zWuj2FLv#)wpOmRs$vN6g(s4tzI#}J_ELyBb2(-s7TjqA3uPjjvMiBQW(UePak&PLa z&)&gK^8%~Ko 6QE?u_0Dr%cq#+fQ0?j(3b#ftR(YeTR#NotPCP?k!i3t#>yY zMDgxFTdHleE$3ZMA-y2e5rj`aZpy=IZ8DzS^|85@7s~4Um6i8bd#lYRDQ;7f!)QIW zyhX1%bD318nSAy$n6O}1^SjqB5*Yx1fjP!kF?12A3A5jCblx=5EAzIR_5QZ7IowCe zh&uZpuFb-k94q+cdb^Ef6C&r;+t+t;iNfGZfI#l@%5@}{IwE&>cS#bgj=nK)I#3$i z9${iw)c?Dh_Uz)<38mg?N6Q_eW}iPKic@K!Y7rGT>U!H1Fdkp|z@WZ9?=NIUuYOcn z*?RnOx2N=I>|1QvJ8#8aK}H)8Ax(Y42qmHjbQdD!NZbO#XSK-I_dD(!1HicNkuWC3 z{>wSfs>LyMHIHqWW{=QOE&`&x8~#wI !6t6!q8M zs>tF|lf%tm;IVYfdw21+rphbkV#bNXuTIFppH0UssnoZV&0i$6oBTM67#ce3L)<`Y z#Pc(ec?dP3u91 W8M9v@xMP)|5iZu>n!`6m%2J|Mg8Vs9g( z{eW+%+RiLjhSiU&it6;`T&3)7%Wc!r)3x_#IlTKwX)^A74zxD04G1F7k}mHO{_Klo z!GQMgR%@Q_f7y2iA0$->gZ)XdFxdO# R zv{UA=G-%oQU(Lzj+{b94N|QrpFr%;km-1-#M`L&rtjXv5k^RiZy?2`6V|d#{)273D zX#`i-_&lu)mX=>imr~C_H&zW!w)-5-DY2z;WYsV;P1WqqA{zD%GPE(!7#~w4K*&** z+ur#w*~aFNo`8jvjd%US600?O3`}(Cwqv{kR|#r`yuUKIt1Sb(*Ie>wm)8eYh(;mV zoz)7t+1UEcxh$s#%`4$>UQ%4WBW8>}8I@7{jKX~}2a9@|X=WFu0%N9vBz_~EvRTq& zDw`SDVW~91=N zke^I3m3jNNd`V6@GW_;dbOydxsBrwWEmWr zQPbZLt=jKB`H^ir)pL=waICHK`ZaAuOQx;fDFX5%yUs_i_qVH(pR_(#u}^Z#bg8K~ zyuoXA%Yx@vrd*JPwZFPpz{ee#9PaJOqA)%#jhGzx-DW-+ZzWXjGb@D;?m$aPWGrow zZ}YQvvJIRB03 t-Z5l;bxd-b_Ice|@22Mejzei2~8%;u7z!lN}XN zjoEg$3bg0z2M`*nG?+%rRl)7wd-qPnyJ?9plr~C+wx#8wbj7-a$MXmC2zjS^JYQG( z(M?*%1c*)+`TzL}3*;u(%@tm@Vnq`WI^@ S6k*Tcw~LJA_tUP>q#TkQMPu ziKkFcUA{^AosIR00oCfvAFp?!=71)sIIHdzw8Z;ul268T(*ZWXw|oBXEW>)+G>!#r zM9G}?zAKbZBPZjvC0Ez3wO`*RCcrzp6nJ9ml(Ad8Z;wp3!8YwnJq;$y47{wH`{7es z(a=K9^X8ptpT3seu$A}OY+sr!zLN+h0P^Ty?S f z!^On~9Ypvt8C{+2qglsA$NzK8{{LWr{3{>K`zwZ|SaYP%*s_Ibmg8pn`ZN{eyB{yy zlMP1?jJ~8)Ju&QO3_`+QlH?^n?`Gj}gFR7I=&}?bO;*dK+M7sr)6gP6mXn$H%z6{j zZ1BD9?5>=t>0!lxjtw;3WXT@*HV3
H)$$*X{)ihy*{ zYY#v1W~R2+MN=cD6_b|G#{g2Y+FA4lLz~!Q5t3kBUezbO00#f>t8sWAFTPt=t}k+M z7aGj3M$+Nte3hkA2`6TJy||j% L<8Md|T%IKhh-Z#}{ma$!8UjWQpv8rfi>BPQ+*vExABu zSI`qBAnc6?okOT@83`?}RI^djt!jM^|M`@poY8+h{pJm?(77KcCPeig z+V->2F7g%hjrhHy3mC2ZzK-lo@?5i1JS?rp6UBkA;8hVyf>zI{Y<1dMo`RXrC^y=8hK>Kxyu6FB>ptz@<7?sT{5%I bZNJi;xr!Uz xP*pkdPEbqrw9ge0~ssJYADvm;D<3dR>9(u>#Yv zdoP;42kit`1;G(8l$3a>7>g}4dUdWZV76@*T~=#y=ZE=frL6!@YtR7|Fbw;kW7!OC zWOgaMdSd%l8sTgydmPB9+oW_lSgqYNHP8+U=^)hjK}!yP25$5~N~oH-&CA@P!=14I zXEZi#YoqIG%6rRdn`b61Iaz7A=NaXTgq=3e@QtMQgbwrl4pZ35q#Ez%^G=(?5lcqM zKhFNUO@`W{lnJI8c5o9Y@E+(muB|1_y^Gqm+k{L*xP;x?{i>GG7TJlds&X0{Eu>=N zI&HO-P~XdqeWddJ=9>t7$hOTkKdtx ^CfYxj?R+4%D|GL9?XHO!rQSP+*OOWNNzQG;#C3sE;X4~UuPGuy(@)bp z``fZW)OL0PdOg+?=HRF&XGR{`OUklbdN05sY+ml{XTK;0kqi4Is+=D>V`Xk@67_Zd zQS8@%u|8SIlt8o+X~`hhmS|-8*g<2^RM**Zf2kjtq(Yn&QSjQ=qx2V$l`^iI7?~3M zyf@ZdARCR{!r=1UvW;!-)MiqrR{VgW=_X{kO;-`(A7$TiC+#57eIdZd8f$gcb0A9O z;)w4baw~p0Xk FC%}BIqmAW&BuPbjzH+-hR3gHY;DZ?;u zQ2kW}7W2)^(kn~Ko{?s-Ry~z=8)R(P3~7;b1lx8E;!(4{R|b)iliS_Hjv_%&$`G k9I%kD#^sNG9etJM z*Ro(3srl6VgHM%Z`!2v=!{@(VU!BLuqyV(3=>uGKye<9cyRTKVQAI&8$}|dA>M~4_ zfUnM3-Pl}pn(fg6y?k(WcJ_DZwC>bY%!JgXmt~qcKKFkIJr5L6X>X9&=3vPM`u74Y zs0(~^GDYY6a`Lg$D${L#?eW67*@9gfO~y@*WtU%BvP80b+n!y$&0GG<3<7fDx2T%_ zz^h=zS|wS#*SMG@$3!sHm04j#geQCYJCuV&EH+zZFvJ$uYlH7Qx~~R#7O$Fv9ATk$ zm}#$kzWsyZ4#aTeqOz^zLK$H>*)VgrPcm>9`!)Fez4iXxJl3x9RXlzYrY%o$0yvh) zk8(I!M3D_$IX PwrI78pYdxH*n}2m+l+|0-i*a|qd=rEO0Q ?*4WTdw@>PZW-FZ_rRHYs osXI|chAsDQ`%nLkyeO${K2NujCBzkAc zGikK0upH6BZCtiO@2(-wio})23z@9^X>3*T(F!Cc+X}>kn56RXUOTO3l@;VzE&DiP zLZ|6!t1OZ|VN{gwqhQX>^E0-0k11%|>t`w1 O9G-%X`na#|3*5 z-14GG$dr JG=Fu57cd zp7iLOSufZ%TQ)(dkUz&EpO5>9OUKDX2f#jac|k3=8{4Lx&2P11zh;&} 2(2F` s4Z45+G4cAyF)dkE^$nLSfJS