From 0bf061a7456a4bb1a82918c0d845ca29e1cb87d6 Mon Sep 17 00:00:00 2001 From: Anso Date: Sat, 18 Apr 2026 16:17:24 -0400 Subject: [PATCH] =?UTF-8?q?feat(settings):=20group=20sections,=20add=20?= =?UTF-8?q?=E2=8C=98K=20search,=20scope=20breadcrumb=20(#680)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(settings): group sections, add ⌘K search, scope breadcrumb Restructures the Settings Hub sidebar into four labelled groups (Identity, System, Alerts, Advanced), adds a ⌘K command palette for section search, and surfaces the active scope (global vs node-scoped) in the content breadcrumb. - New `settings/registry.ts` centralises group/item metadata, tier gates, glyph assignments, visibility rules, and keyword hints consumed by both the sidebar and the command palette - Cyan 2px left rail + gradient on the active sidebar item; mono-uppercase group headers; tier chips inline for locked items - Scoped ⌘K handler via onKeyDownCapture on DialogContent so the hub no longer hijacks the global sidebar shortcut while open - ScrollArea gains an opt-in `block` prop so the Nodes management table can overflow horizontally without Radix's default `display: table` wrapper clipping action buttons - Docs reference updated with the grouped sidebar, scope breadcrumb, and ⌘K walkthrough plus refreshed screenshots * refactor(settings): drop duplicate section headers, redesign system limits, always-visible tier chips - Remove redundant section titles in every settings page; the dialog header now owns the title and description - Rework System Limits into a compact row panel with inline-edit chips (warn state, focus ring) and an ON/OFF toggle pill - Show tier chips on sidebar and command palette whether locked or unlocked, so Skipper/Admiral scope is always legible - Keep right-aligned action buttons on pages that had a title+button header (Users, Labels, Nodes, API Tokens, Registries) * fix(settings): seed NumberChip draft on edit instead of via effect ESLint rule react-hooks/set-state-in-effect flagged the sync effect that mirrored the external value into local draft state. Replace it with a startEdit handler that seeds draft from value at click time, so the button path always reads value directly and no cascading render is triggered on prop change. * fix(settings): restore heading role and clean sidebar accessible names - Wrap the settings dialog title in an h2 so screen readers and E2E locators see a heading again after the in-section headers were removed - Mark the sidebar glyph aria-hidden so the button's accessible name is just the item label (fixes anchored name matchers) - Align the MFA E2E helper with the renamed Account section heading --- docs/images/settings/settings-hub-grouped.png | Bin 0 -> 66048 bytes docs/images/settings/settings-node-scope.png | Bin 0 -> 78484 bytes docs/images/settings/settings-search.png | Bin 0 -> 9353 bytes docs/reference/settings.mdx | 31 +- e2e/mfa.spec.ts | 2 +- frontend/src/components/ApiTokensSection.tsx | 11 +- frontend/src/components/NodeManager.tsx | 15 +- frontend/src/components/RegistriesSection.tsx | 11 +- frontend/src/components/SSOSection.tsx | 13 +- frontend/src/components/SettingsModal.tsx | 441 +++++++++++------- .../src/components/settings/AboutSection.tsx | 5 - .../components/settings/AccountSection.tsx | 4 - .../components/settings/AppStoreSection.tsx | 5 - .../components/settings/DeveloperSection.tsx | 14 +- .../src/components/settings/LabelsSection.tsx | 6 +- .../components/settings/LicenseSection.tsx | 5 - .../settings/NotificationRoutingSection.tsx | 11 +- .../settings/NotificationsSection.tsx | 31 +- .../components/settings/SecuritySection.tsx | 25 +- .../components/settings/SupportSection.tsx | 5 - .../src/components/settings/SystemSection.tsx | 322 ++++++++----- .../src/components/settings/UsersSection.tsx | 12 +- .../components/settings/WebhooksSection.tsx | 11 +- frontend/src/components/settings/index.ts | 16 + frontend/src/components/settings/registry.ts | 233 +++++++++ frontend/src/components/ui/scroll-area.tsx | 16 +- 26 files changed, 796 insertions(+), 449 deletions(-) create mode 100644 docs/images/settings/settings-hub-grouped.png create mode 100644 docs/images/settings/settings-node-scope.png create mode 100644 docs/images/settings/settings-search.png create mode 100644 frontend/src/components/settings/registry.ts diff --git a/docs/images/settings/settings-hub-grouped.png b/docs/images/settings/settings-hub-grouped.png new file mode 100644 index 0000000000000000000000000000000000000000..236c3290940cba56b77a2c469d92f037ef9c87c2 GIT binary patch literal 66048 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¨3S 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 Lw6iEP+a2?7B;bLr literal 0 HcmV?d00001 diff --git a/docs/images/settings/settings-node-scope.png b/docs/images/settings/settings-node-scope.png new file mode 100644 index 0000000000000000000000000000000000000000..70f3dc70ec03c766de6347e0b95237e638ef9585 GIT binary patch literal 78484 zcmd4(Wl)vx7d8wlAtjA;HzHk|?hXM1=}xH)2-4EsCEW-pNNyUW8#W-4(y4Se&xybP z{o(m?&pYqTJM(^U#@Sx(eO>3d&b5wp9LKuC)YarM(Mi!CJ$i(xs34>H=n>)%@aHKi z0{8?!OB?agBb-NyGLo-9X6$657(J7{>phQyE2FjqE_iZ`Ye??sSJqWeRo_g$8ujt8 z{D#xP~&)PiQdOt(+zIaHWN|ebeucu%?miVx>~rpZU`@C{!SrB zMam$LPe_O$WE)s4D4>@|r3u853e8U!^*q~IXz`pX*S|SMK+O8Yu3bg{$NlY-jvwqHH%zadppMoW20Jfl4Do0JHzC z^X*-w*{jiu@#u$-0&!@$FW^nCyHXaEJrE3 zoU7>meNkZOW8Hd2Ct;-cWe|NF)+zyI$qBai*m zdUy3#K9ZQrtS=V2+B5u_Yc+_-fcaHXWP%~3=T7D2@n+lE?EC*c6mrrH#uk}<{c`Eo za*x~7sTlFQ3)2`;eo@gDt?vfr20GcUEJ&9V88WxB;wPB znv&8i%r5=EXO)p;xJMxU-E2KkG%9|du{)eD@bF*B_-%=KEK~|EPXA2KRhptuR(sq2 z`lfw(v`)lfup?W)3!4k=G-UE&Z@Y1FaytL*Cj8$jkgLRJ-k1bKlb*j(ANA6!G?AUD zGPe`9T@(87=i-^`M3E{8olzlxe#`P;JDIfu5}o8wX8 zl`TdbR00lz3{3k^W|o%1A(rR_Cz4K{gF{8* zU2>nMq@<=+rtdigv(sjM3qkW&E^=BQct2GhRY-!L`Zx3iltnO%QFDc`)op(vCqkg# zJSHN+YD>=X+ZqWPl(@g`)7?(>Xrt?H_;@A+y7Im4?rP$txHg2Q?zih4k)hXNjPK3r zX11@`#%I&Lw)?yBLS;keVLmFK3mWdJJX|VK?^)|FT+FQp9ThE^}EBMl0(>_c(+pz;pVfX#_7MS^9 z@{Ku1BJa^}TzP>)rKCUOg&0Q|etq)xpQfp`^5vq`GKFZ^XBJ>~WXp4P4weJ*)TT56 z_)VND(NyADZ%J9mAHuOW{2A-fvt{Sa5&a4yKL)jnP+YoSWxBoO4y!#;D#xfyq$yAH zS;#=xXLFf82`FE+>6)#5Z)t80%}M34)LBFH>)@tf(<&#IrBihpTt@xA$8A19084c( zcQh8}<4Z!&%!_AGj@M=EG<%_061LdjY-ul=`hpr+IreXzZk>Hs|Im=_R5^vb{4~Xq z*U}k?iK{yuYQIJBh9FJ01}p9W)EW zV<_g*@n47I<-Q=q%9oFUxpXA+R=&3XSv;jGaC5P>n(q9yrgS*%?0&FCnBU>~+tQPw zp`=C81Gv50_?vQ_$plJov;95&?t#Ra3VLsNe$4(zYGke8-yzfT%ZaV2d!Ex{j%F9N z``(1=C$|uXEsn8jN#O$ID?a9YiOJG8B|^`WH9jeUWS+2UGr*{t=BV*%Qx|5dU1Jp& z=2^~xm#a7@Yx7EG7Eug~X|`PQNzOA3S@E)H7b_9+?rccrBNPT)tby79U9)8u485OS zW;@C+Us|GK2r-ZKMXqP~eb=tGNXA!Ef(Yx-Mh0iN(K^dq;d6)+Ot3pfumnO*)(j5G-dbBC4?K)fbN{;j|v7zseW$ zzJlj+QgS|@fFA5_f5{$+RcZUd?xGuMhuwH^c)sY%)BzH7-@)h)Im!zKB+d7~8~IvF z-J_mrodhQ{KzTcVgemfPU%B+!Wz^uzmU_!#kOhone zcpaA{q;L*>p_1&?!v53yQ?$bYQr`%EKH{MY)M&l^I4k|#prwN{F~R?fJ()p{c{~=T zc*m>GJR*fW~!w-b3MK$ z4>GE5d^eQnMXeStPs{mHrdvlV6flC7|A>fSI3A7OB&D)*jfIn*#<=qJpPwb2^+u#A zj6$Agwj63MR(ONSY^(8TN*RM0GuCiPJ81s45fU#Eg;s(-?t)}P+rUjYq$u5bQZFD^ z3sVap`dJccnWV`xTIU!pG5E!aJ|_sGM-G3#quzgici#4Q@@q(AZEOTb>t~;+}lr=AKggGD(450kj2 z3m$dS4^P^+&AyA~ij3bNr4ecLD5_mm7Su3SVB|C7LeXz#jeKevy-T7q9P(>x!Q>r7FY8q>9zs zA{$rTej}Nsa2^fi>o4IK#5F`yMC1IUZ;1$PN!dk%+3+kgst}>-CzWpMa^!QcBuYlt z%Rzn`Ni;n1CA`5g#XvdAljL`-`E7UrFvcUcoEf;UKXXC5gBPY4gm=n^jOh9H#nQxx zo)NF|x)~j+5nmDyHbiwV*?Drk`f_cAYDQ)nCR1Og$YDxTx8T7lEp~>jzjkwZOhQfa zoY+1!XHKD?bDs@D#%c6u43f9H@M~@B_WGQO2NXmyoi0$CR2r>bL%Nu#Vr3@cYZ|AM2%BS02S)82xW4&)G zx9T{J$VjS*Rv^iUZwO3r$FHxa7@lE-ahLL!>sBkM_YOSKuHIiuu;{&@hr0ZG>n6Ga$1L!nu{R5Sb|9tF;=_!;fFx!>$*w zz@FIMh>)aSKOYA&F{zM&Ry73)L7ohA?)ZLtTWaZzi#)#vk zMsM_xIjmuA10-`d?>vgD7I?nk8DkKCVE?;OaHSZfHQ?G&gDdCFhd1x6~dG2i?-p4JJTq`at%l{L(m9 zj@%K`snBsTb+C7$M6dL(zDOD3)1kHGIkC2zBaAm)zb% zrA5`5#&#u|-*|ii2#2er$g{Gr^GQe%wsFT!*oWvrOb=dxB0ld9zA3$cR=2$P)KvG& z^^`g1aPTEYLXtLXvFSQ$d6FT|-1_T2jmRr@c06mp?NoQ>Mc4gR{=3pW;R_a`Y`7WQ zC@SXniCX1JMpawkGQ0FYY`S`f{qi^FbBZ`MT#YDqzU#U21 z$4$M8`H5$j&gufv>rj&|#cQ}E$;QqKriarMRn*_;x4pO7{RvFhWRHeF<2ZFJR($2& zQpA!IV35i6i^Hm8P+$+iR3QLcS*+`Uvrkvo-LTZ45v`ZwnTJsic0l}Ui%#VEL~W?4 z2j-2boTM#f0b7D+Q)=|>&~LL~ImY!sIO_~M@wm(0mbLEs5JVCsFzMo;6Wf$Czxy)W zI7w`MC4!?T5;}iMUq1#~7^BK=$dbM|!Bl)0-m@@Re1;Mjd|23pv`s6~xD14>9 zDBl?;C%&#x#&8`kNG2)qtY?U=oapThm#=QtSdJyO&TE@8oo9b1^>@V}f3Z2V%KmU^ z8EBMSVD^3}di8#a@?>lEUhvrVu1dedTT?_%B{>4JE3(U?Hg#_qF;-- z{tp-M)LZ$5N#+oFq?Q*dl)ht)P;onDuqX>{jdhb6=UhS2O+sMV?ekXB7T?Y-V)S31 znI}c4uk3m$vbMwOUk<3+ME;PAB8@{m^gP*;Wb&VphDeJgc=|x`a-IYOOJIUWN&4BSsBg*VZ7(PPq4`Q0+C|8;5m|G6Lk#a zFsUWbBHa!e-kB_CBm#V&NiKFaZL0P(!+j(5OO{9JYStk@>Jb(j|GRVJX=%C?J*P0D zm6jkx>E&tDnA$o=NEoa2okEGW=~A0v_3q(*t7Xh1HLv@C1WNadD(uCV&(oSe4o!FG z%jpK@IO-zmSNh!2_V>Tvyoc%^q}WL%Hw9>GR+@O*Hx-@_`-)V>UtaGo&U+eKJ+a!= z!>U<^e-Ye$8|j;r$kuEuWTSk4D`t;K6igG0?I0P-wp^hcMp9DO!TI8;1igJozPlr4 zuxN1|Wg2SWL`MT*GZS*YkutthnM42oPj0K(TjBUNkl+t77fn6 zX>;VjsMz(3-+OX}^iX zuF;Fjqd^Xho*VD`+jEjaViBBH)imDRny35#P*LF9@0E|2EVDjrg=J(fo&;g+2>wfv zcFq90pbnqw-MW4`fLWk9pcVD3;rmzqEH2#FleEa8NdAl!bz%(YJ)BPl5srdQi(GTR z2iKlU^Kdf3Usk=Ds`S+7-yEuA^EiO))vsP$ACHRn;-#tu3+uQL+|@D!#dqqCC;pjq zvt4KwmH8oyJ}U6}d*V+|JH0H&%KZ;eECha@r~S z%O>sq_0P5eb$pJg!c@cdCyE|b8Y)dv-BTSCYI73hq~`7t1R_-#I0qzEzAJi-L&62N6Bn<-LRR}xz_rp^y|tWGg(Q-WvqV$7`o^}qva+w z$Ff8*x#IWOory2lXJ=bu`7KjWBQ1x8X2GlUivQ@b<(~VWMq4~VXqyUnaL}r@ zVgFIT63+S=$qQ_7Rd&z=r53Fwwb%fy;5)&E1+I?z-W~t&Llm%^t+Ab{vY9O1ovGgZ z?Y4LeY5|2tC>#&#fpP0XmJ)Pnmz(~9h?46Rh-L-l{g0FjMHs||J^7Cy4DF2m|BQ>1 zoEKl;)oA_*z1y3vq+@P=2l%RRf*HV7W{G-c1V~WhEa6074|e{eG5--ostPlc)vH&)YMF2*PkX9 zcKs$Gnj_QVajMh&@o>JuIpFLRtNm;siB&NCKjtsm@rW)*l^~jwZvblk9uRga-n0xe zjO4nFVC@0zC#^fj9+)Erc5k-S_X=9<{gFOg=v;#}~i*K>DtkS%1zVAZFyT zDJB0~w=6E!*TofML72V}*@YVGSL!*;R`VZMqvlsGZqFAtN3+|&Y6Bp6378kxXdF<@ z-#Cr9K)1&W0SD50dp38w=(@j<*+e`4wE+;TnTT|LifACff|9@n-)QM3KY|Qo{ivNB zg{c}jIaQtG0)8n(^{?U|k@jbMi*3HyV%}h*_hwq|q^sNIHy;%nwuznbhd+i=HGUQ* zIJvS(QD2UhA36D9XyD6|^WpEWXowd8rJ@4AT_%{ay~b;-CxS7_d;oI_5@W-1Fj)rT z(t_vyEx27P@sak;#=qsBAa|zj+yXMFm)v=%dQ|N1Jq(af^T);m1BRPFP}6^we95{3 z94M91hkv&oeDh*iV#GrU7cGLZC-H+G-7no-zudp~TlJ$i-R2V`S)ycbbil@}jesz4 z+ns&pV#SYjAm5k5rrSf~+O$SOqUd*O(Bko-SO0QYzHMWn@dIm+c`!~*O0pvXl90>R z1KT&8DSQrUdQGfkz!M6CU~R9!Rn8ATH|w z-vTHvxFBZ-;|IX60_L9tWB!3&m$^ea0YU$Mvedk>!u@!oSQj7OHv{-bx)*SUBvvih zCc>?-$qCGAjJ8M1vO+i?GM+3GA0PjMyfZbWZWxF&4a8jFSAEn!4bSr zfHpg@5a=|6vOfp2bC!9W4`|VODq>NO8lsN*ur18UFr!8<(f)6LZFZ+|6{M)Z@F%d^$xNyQ~x(M23!ipB7 zhXzklIIkiM-)2JY@#Cm!-6}K1SB;V(!M6;GYJ1>Oqzv5scE4-t}sTF%C@~goU5@8n03|L-uKlHgCsf{TtqxNl`2w6?I4kq6TU12$g{>wWd<38 z5Q0KA@t3z*`ktNW#mBzi+>pj5a7TV3h z0yz=sxhI$s|B9Z^ODBKk=1TDdSsRU>kJo%GPd0T5>Hu^K8W76~t7NPm_=?FvgI@MTd0R3|ed(P^G+L?0XeY>p5>YL?{SNUv;t!sWbglOeX==A=B3 zd^4(n#U}F(XMkCJPhSu4+y>Nm2cT#4xmXSX>9x)4@`#kr=H&0xXsgtn6Gk4m0ZdX} zi5+(RMuMORJd^*~^Yo8-%%N(g(6d~30BDS5(>?6x>koAuTDqf&3_dPj@3)OEKWG>r zHv;A&2_$ajBb{0s+)WPO%R!LoDt`P0OcqU_-2L6Hp~rS1C>u^~w3@h~Lt`yOd7e3a z4Tt_1(Ga;S-KAlHMUcHMvBH@*b5aaESgNjTrwlq}H*iqbzhwKQg|V+pFDw%?l=vZ{ zVUHYL= zUI3()8b1^Bp4P51YAgj50$Q2BfiKhf?S40YfZ39Ihlw#tx->8Z;dR%ty(uNw zHhn&qUygc+!CwC;Rm=)b&CBe6eSf!qkJC=v0;5MmsRKu@Zw4G5uH(p~)l9I4pa|;1 zJ>DNJf;DNo-E{!OT_+8UPZnu~WHl~9KzA$<^&uOAQ*1w>w#Ikvcu>%fUA2Hk%Foj2 zGv4?7G3{j7!^50_dLNCx;J!(b@tPk58aKH%MwcU~vTRN>ffn82&)CQ@Te^`kqe@|p z-?RhkZym7>UhuQ&IPXkX!Z6P4fZPKJbW>esm4QAug|O@E63umhd!+AZOK`u@Ux2v9 zpM1!H-{vVrJyfzpE<>n%B;rz7wb;jBc@!ikC(GUBoc=<5^7I|3tw0M3&XXOU!!Jjo zwNb?1CmAFO$Y@~}Lt)c}y;$GHvzy5t7P7??kuZS*@ZP4n99Ln^1yM>5$hCFA}t}57U zHd(}b+c+O@yLToCrd8%kX)jqCXa%md?SSqF>-x;;}+)gj$Z0QTjR9g(= zv?j(mflgR!4aa;(l$01egZD=+W_r!c2XR#%`_dgF1V^5kqxFJT^O@kop}t?|@O{uS zUWi!j$~ZZ3+dO+uDC;>QxVePC=rqVyU#+G8AxRchXY!M`ZkbLkXsVwHp8=Jq6@bHo zq=(LIq6oH-FB66bP*+h!+`gBJs;Vp;zt`Cv+S+N6eqpt!?t2BBvtQlE6quJl-}>NL zRx6Iv5ZM;(Uni2_2ef9;xc%(s8uPusb@MFcw$+3eYtTsnVr)BTsVb!Gf2)sG0|}QX z^SQg+Bp%vodxA;&artxA9g`t$N*AyA#e+r&L?#`W?PVWb%yeCmTV-*}RO7Nl{+F?$ z&S1=@t-J`ai=}`E)#dtE!E-VoU2&6yljwbW#{~l#qP*A{=uQEU0u0E#ZSp02cRFQ-Ua3G0VQuS469%x`27F?MumOqs}{C*Oco`#S*WbU zuj-V#DnU)ng3jCkLhHa^|BmZxn#XMDJU}dzXugs@&>L&r(vO_X={qwbCp-cmTkLwL z`hl-InRv;x2Gm{>porSo*nsvgGvf^=P#fj<#SXjhL1&Ft&UVKYPFQJAd+`u00JE{p z0O)|tYGsiN)ymoWkY83v~{Lx~t1f;Px|I#ud*ZvS4Cn;F&=~c@2Wb zD7gZe)=N}*jxg$lE-cbXP%zl#?OVcz#?35GN>HaN6fX_=owf^8T7f_v_ebWT$d<-_ zA`D6evdrAz_RUgv9>wh-p8AmI`Ccv6i=D-`Ha3JF!Lwv{FOb3jMyoBTu(o>>P`0k{ z@+G!X8^F$>t7$iK)w?HtJlqQ6r`n;iuKx!BB8MFmQ!BD@bMM(5zwcUd+}41Y(Q9yG zef#YoSvRK|1d7!LSE@|(cktmrA}~t0R7z=6H%;T=_D*hvUH~mLtI6WRgo?f-S}N=eU`b3Mc{R_fc7-ht?0VK<;2hx^1F1I@Oh@@}f_ZnDMG z&C77Ku*YGc!Z@HrS9g;Wv~`0VZRG2>yLF2zr?XNRy>EuJ488f#(iV3vdlQ&m!V0Ea zK-;un>W=!#OV7)2egyz!&oL1xU#WF~WjDTe*KA_Mt)}R^l7zsfTs~q`c%+fFr6PFz z)r{RC9zWh3?N!5?9n2=+&a?{TWUv}9=m)z>_g}96FL<`vKt0xjc0W7ArTI9aDqwDA z7I?e84UkTT>#TJ>OhNbC`<-`YykyZ$dk9I9n*;nloKpDP?uXq(_W(SHf|lz`9t6#w45(U)3zNAuqGE>_5u>=@I*){v7ouTcMZqkv#B=#0k+e47~%!ND(A`a_qz_h z!XQNp7BhrO4;irO)YOB(^SxXrdNp(gry>3ATB$W#rd{2`D;n#I9-->9ndzpM&OdyH zu8MB{5>*zUl)LuCN6te3%a_ma;CYCd&+6HEz+?PKu$=%su(CG`46U8|c|QU%zmE z)Fos>Y~#{(nRItirm`@)Yft2qaS1X~LW#^hsws+t>QtTb&o zXL9uFrvN2nn<(@E;iI1;d{%Ki)(J&Gc*~48As9&gQllk;h@%zsH2yWU4{d&6w)ozR zkQDi;QIUnYxhRmYHAnwpYJ9e39C-==_(o!Br0v^oU9UgRn5XdB&tCxkwL**WpT|aq z$sVN*{cM#vhKB-zPL~uguYi^iV3G8=xJuvw`tpd=Weffo z@d>Zp?8!r@NIw)U4?MMpa#xApD;>BFQmAG@-`VaQ*nl?@iLuNVocqr~X$A1}3>Z0p zd*_|2;0ZP^I`|(_T?*vbxU`?tM?q3pk8Y-u8QOtLil#h&6aKafY3QHB2ofK5O4DJ| z9lq-V4Gg7vFH%GM&keJJ%JlZ}aMT6BC=jVNqFL;+zW=W82>XC0PmKd_w1iT_eNL82 z9@ZHBu?P15&87ss$1~3QS*9z%#x@KC4Ik{|p@}?sJOGiUZ@vNu%IjML+Bi^6ChpZuK~38=?;N3_$3b)+Yg$w6Vi zErj^zxUjIWfP4Z_whM3>@$m3m_C;C&o~71ia$sO!w#BpVA8i3mj8k|Vbsp)FCG1x2 zEhAI)yB=!VaeR_H*4i0@jeVPhX*&YUI@A14cAzr@Y|b{oxgI0?pZLMui;8;RUY(B6 zAko19`2xt5)4vKgvw&GCdso>(HDMS|7hy|O#2aeeE2?_u{5n@E2-rZ_4O=rxi?zN} zT57i?&_?U*@NIf%x8g{VW72C%d?_qk7DYj3e^;^e*)+PpR|*SB8$f~S9}Z`pb)Ndo z*=tt77_h;9R1T7I;3!yRun3nIsYvAg|?KJi3g(_PS^Hy zW&Ul)Wmg!!>P7rVfWsl^O`~ai5hsde0I*&R1MNyi0w14GF&K^J5TFNbSZ6Xq!{|<) z#c*1p2{-7Uopm*GPf4Rv_9v$$jSR;UDCc>3D_YCY&pD2>2uQRAaY#BowdiC&h ze)R{3mU=(3x~SXVU&Bq+%UqTtrAckhWx&HNjNH2XJcSYhZB3fAgGlpK+#Fv-n2o3MGN;C^WadTqx^fM~~ z9Mp+8Sl00Ms?%As6W6Tb*^z{g9CbIio=`09_S?05Jgg~(7c#l@?aC0T#b*?&bNM8J zTUfT~V?nH5aTo*7kV(vYt=Umk+YrI3+j-Og9SQ6AP^dpcMpDu#p!d1@xSj&{9j#J1 zyb1go1MpWRrSn>I8+QbP79JRxemr%0;?zZ3jX)b~+=e(z)5jTdAPhHF_LJ)^r4n+n zQc^-kE7z@y*2A>~ov~SD)%10IYOG@yFk7WLq%x^DO5f}9zt<TPY@YfjY`lgz=JV_@jb+lnNq$BO$%v4#3C!iX&Y-*lnFzlZ~g-3``8hF z;f@QI7ayn_k&#cuoC0H{MEFIb)i;k&H1j|;!(T0aA(pw{5rb} zcjAmKWaG$;@#WN7O1EB{)%&(jMasFl$F7kSuBoD){5+54$^FQamEVPSDETAv=Ih7u zM;-QVZmn<$+8S<5gsL&Maf&UY=bOY8M6>pel@#k|Qw5u$++zk_b8#yrRyPFM4jP&hhD^ zPIiJ?ElR2#@6$cRgJ&JHj7+EzpD^$O(GU%xXS*((WqEI=qX`w}(<>v#UPIU$I=W8=Iwa8wyt$)t52vwz z!IcDYJT+{bh*_{*^=b%Q8A*B=YQ0l!)zN3O3j0|Y8J8g`^c}f&kKau5Dn4%LX&ri6 zB7O8Dczs~SS@Y&H=5=Z^LCTYm4c&2iinG%rl@+r&_DwiGQ6d%*pWP&D^gY}*$6J(a zbesd2Hnp;I&A;R|A9s*!@~4zo_If*|UCetNv7@IYKTB2=L#B!I64z0EqpNwdo|7r` z!NlVIrayYF=!5gprQr4K(fZ)6Csh5<{Hvi~JNf5~l1stXzo9>AKR}G<+|}o(Yni9~@0&fXgY85#4s3$YR5}k9zhPj;I9XrkCKF>> z1)i`acD(n?MTz=}Z94~JD<+vB&Ciwu&RIN`oNY@k(`G*SlNP~c_q{>lfS`m}zDFmd zK9g#`Yuj1xB*-V4#u9+PGTA3QJ@@V>&I*e3i}56$>1mi?(WjjD?c9J)8z}*!qK!^2 zA&DI}a^n=o>55@PGtATzjz17uBbkB`5*UdZap^GQw?8IND8tc7WDZ&AqW*xynajn= zjhjt|z=&S?$eI&?LbrK*c}OSOHvD5f4qOolW-}SiYt3(kJM`LK8;LEBDMPpN=}-;3 zrV+PdC&mC93!Jh4NrMTqY|R*@Rq;+lxCyVhVbuVRGK8uDPcZ}`o~pIu6BBa$`ks6Y zr6?zNKO!R2xh1U8kt4`SLxOv#HL@yQ-^x=)`fD74PLyL8%5uR>v%7N|%Bcip-zdn! zCCsefgA$CJ-;wTul--B7TqG6xQY`G{9o?HENt;k9tbyE_9_hjz8M@9sgrlBa>Lzx7 zHN99~dNS99F4pK(n5B}XxK8!e*u#$2XB$ z79}a4_=G2`S{lr1RjR5w33A!)i{l9gWlXhpVxKxTTx66)G}8<4idAN@4WYECObA!; z;iTd|&G!q5WkIXD4vZv$eBwfu!p_BSrZP3VH;8*6T@fqhZTH5Fb*?P^DncAw*ZhFGKM%Tu&5 zSNopG<;e%2E>0^Je6pCfT5J{ljV~S75)?oaUhZczWKwnEen&1U2K6jPnaB0b0yyl>=D2Hr^_&kn!U6^X*C z&M=B1U-?3>TCbAE8)kFDv266T0*I;Q>1wA(Y@MGLPo7^a^{Vp*dj-Ec!I!O=7%1lP zx^NufgQ@E1kU~|2I2D&7IfKWDt^V+9$oRwi4lBv)4som|WaA5^P%XR6Yvd$n1sNoj zyRz}02==f&aY|$VFd{+B-&w=^x;4r%a=iw>M)7G#YawIV*qX5{mQE2ul zJ@&%$cOw+;MQk%`grnpAB%i|MAlI5^WVwP3p&gOfr98Pw2q2cmFh&FQ2|FU%xJHYwn?(RE$He7n z6rrs*$!5)t;dUito5cW|y-w5*-iVL)4IgdDPldWR`%GiD-u@phAja9)ARo;tO~}_e zPy@*&%P#(;go>WJo9Ph1HuaD!%u)6&ky$c6!e3Pkof#01$eC(OU7Jwra!8u|^hWPx z-u~$bk$ElyQla8$FwD8>V+#zoW^ZaKj9)d=@jSOG;_q#k|@K~RF3mpv+sKdI8UC=K49$FB?fZ6A46q_e|G4IIRB)6 z^#&}4WFF1SooxvZ!t&j_+iM=L@xs}FPcAqvv`;_M+n+u0-S(ZS2tmD!xa2bW@n{gS z+RigH7Hbx|NVu{~jCA{g0$*|24BlPMp@h2V-`7j!E8>msO|G9VyTRI+1^CEujtRC| z1-bi?Js1D8pGHYP zxZYl-3=nt~zvLMrR)z#Dct05_3FE9uTqU)3P09A>Aw7&+;em{0r5=29t#lA{TM(?` z>gUC0no8h?rTNR;U~pO`XSk4Ys6Lv>4al)?N!!dpbs4V|`VyrL38S7-?eavCZLoK$ zj8WF_Cfj zdPT1{?P@<~FcRn2NO7xS7bFXz(zuf%kaLrZD?#Yq&s@^A=dophkV?3u}1 zjAeqk9MjRf>AE}fJy*EMwI6jy7ARah^miez37amYx8$~I^HHrlBV^TcL@9^~E&!+t zQl;tazE+r$z~1s@;PEyo@D9jnx&eY&fWeF5zOD*Yw^gd#OMc#jlO5^cr(p)@_A7Hw ze*Xeya`JQgBGDKHs^Q=dGcH$af;$m~*q8*#Y9z;VJ__AXVUPWg*E>Fy-SnQ4bp#kF zXUWg*%N*5kqS}9naIR>|)_)nZBYWPf+}^g^>!2t%Ms7SIgEY;#Q_uE%$1c30m(Tkp z%MKlrz?mnX0*($sQ4U+`lEb^PeZ%q}2m5s*B`QwO9L%5SW9+PmdXaP72_424D$>2J zc$A9c)RHbsYQ9Z?EPtkPe+NnYdCbugf+~m<)$7|;!A2vr;HfawZujdO$pjCcJo~Hr z-%W1k@@H#l3Hb>9&%S(Kn7&VoR*-Q>P>}P|D>@hTILWE2nY4e424N(K(l1VBeiO3M zSy;qV8Pa_0#U}&5MA!9zc*2b_!-QLq^! zVwa74K|VN~Zg11*C`#0=&zI%UIQ6B1Me~PF;}mS<^~cNptSWainQaRZbqeBVgd@%VRnEHe z89ZhoXt*aCqV5*UsKV7}f;FO>M(&(*F+;1Q!EY@Ju8A36+=Qok3@##f+hAgy6AX z_tRgVvw=2}4jP1`q6~50O9*A_; zC}0v`hSY64irQMJ*$}jcslYF*-qSFvO}p+HYVOO}*BOs`!nx6~pHJ*hK?DsxOqZI@ zHGi&Hc5RgAu=C}qSoG}50#o6jDy=`1rW3K9Vn20vu)R_<>#54UtA)>#f1{ zJl&a@c-t%If5gq{S+|`@ZaQvYVFI=4`Kb$r!%{I_x5tBKt08NCq+d1igV!JXjaQi~ zcdVAG$S}G0F!D}ih`eHwd}-E$n!4s_AuyYMbP?+Kp+{#T5?3sTrb%IRyN88R5y9=W}M*;2^%iJV=!5wgd~4R7|OP#ei#Fu)BZyjAlT z_3+z(9m_UhPKE-AJzXai1e;UX6lLFWDiV!F@qCXTvUF6iaX8f(ta~QKVRs)mpLJ0A zIWgjRrB?boc32^mqm#gDg(YVXj499&D+-aVD-Ly)`7BcO?`nN(ny5?YGnog$h1_ka zJx}hVEa~0Yz_e4naO7>I!G-Tfk;p~*5iRB;z$rn$X0|^a>wl*}?P~iDpL8m=J&7yE zh1kT7h4Tm(8E~!w!SCW_YjN;SjNV&OUi3YQ6I2IMn;`qq80Bl!$xuqK2#7Fnu;ID` zlEot3+YVVUwQ`ZX8!>-;htCz26s!HCt@{rjMr=s_od>FJs+!r0QSYmh!z1#mp7?jv zqkt?~ho2P$x;d4Io`hs#e6`foT;cG9zjp!D<)Hjp%4Y5L@Dejl)a=&prn)kxN|Brl zE9J8)@n}kOH_z9&-O|Bz^&bsW5z60uO|CPTht6S#z4DZd@tsaT^~XxFOfQh)j1kP` zRp_0(m5i|3jT-yOIXks5CYSk<)w^F%D7^unh=_#RduI|b98px_Vz$Qpf}0Vh&{hZs z{km^iEpAEX^(v<|+MN9is^@}f*RP4WTI&>gMfa2f!QQxzOw<$@3Q3Vqv0`*btJh#) z!k`T>=@?MqDT^-!@~*;ph+$l)G#z*q+4Igv{wznv+QBsF_*^hrIqv($xK6d{Y%4Wa z8qOYbY>O&6D1+j#5B-a8*Xy?gdebh`xHPgxC!R#c=TUXkJ`iUAPD7p(rpVs42}0sn zyDnboT8cy*U1q0G?iEKH9HZ`p?a-9Jv7;3n6QO~-cr|cA!f!ige>DuKtMD|QZ6iCP zF^wR87RW=JHRB&wEyknF5(Z29KL%gmNW~ zEJE~ADIE&CKh}fWP%zkM<90d1;-VJ$XCbX?*#AkcpAM1*egDy) z8q|X7kM;9p!hkqAdj`63aPlqZo;`mpfw((e84%mzc^)hW{7@6%*=7`!lxQ6R$p_{S zfrk1UkltiKAO8vnL~0z=aPl+9JBfEd4hK~BOo~VaT?qpd6VSQsK@oT`yg~4m*8UsW zMaDL>F-dj=>~WpT_V`_FO%1Q+gB}G=KA7gT@hf4Mygsr6Bsvfr`+?uK_IA5Mb)b@b z1P{>ijpw*!krj-RFktdYijSxL->@!L2EEq`;Nk=?A0~0@n?JSy$?M0;X~$vA#KeSF zxn5W#J8%tN_5#OPxAst9pApfJbwrqGBq<}QE4RNeD=WtRM<5e+wKp<87|V`nLqs!> zSInwg0I@Bm1L>8LNFeR-Sndca*bb$8Y#|1Y1lUy#PRU~O6FxXIjZ5|U1M>}3GE+q4 z$Yz)X!3|i;xNbEmNktCB)@E>TfQLAzum7iD;GlHm`h+?Ht~NC_HTtXl?J{s0p*QKQ zK5C!rxnYF3bMeQcnvi}0*K%#gn1@)iJGB6Yo&FUfYQE65r5dP

3Jl>Y;V=kF&!m>2D0D^UdGeo39?KD6H6n)D@7J$J z17#kYjQ<;uWDJ&o@0bgOEsb>W!=b_OI-9XXy8$#Dm`mQH5B)gkN&SH}5GN1*iWw(VI9jk-FO`&>WOA2)V^5lW>bs#Yh{^{s1!!zaN&{eY=MK2w zC_{tA%n%-=l0*zLNy9NEKn1C?SXKUaw@rMf4y~6@hOdBmUI;q=(KOvbu20p3W=4sm-;_k0NKw;XfK6Uq0%#X0`$-6 zxndfPOqnj4;8+0;{AfgY9|UqWn6?G}qml$ebpIbfkR>Rzg6Fh@A??*Jw5AHWrUX=~ zhN~m3WGo7yMBso0SpaxW-uFgRSdL_XS_OY7i+WGqslp)DxOwgs+$uixPWoK}Rr!~0tg3wFeRj&9WV-PE8jDusi zpj8iO=1G&td9ZbWrElRKo9U8iH*4Ja-IVe}f?5I{Y}nw)hyjo&fTm2LwT=_Y1%s~2 zDaTg20|jP_iGMnX7kFWMwSZo^!7M{9CPt#Y!m%nETu2xF?jVfyO=%6#5z+7&hcbny z5FRE3>8{mnZ@j^H2;3Rqs8(PYXl}{!_`{+C2N(_a7?{|=DE_KqAip#^7}q*FSnhOa z+J(JR6GUECKonk$*Z4dOfldUlj0~-a338Le-8!)%WJ3@FWHT=kuA0OXs(5 z-&&D31_8&`nCwR^-Xs+Yr&}ime%om{f*?m?D8c7r$lg)@o%*!|5hxclGe zBl^g+vCc=4OE4us2i^jA1-x8eIFL{43P`&CrHO)_bTJ~DK)V4JFktt;zXm=7^W_3* z_mam#ehkXV>Kc-lo2+~MvF?o!4yJ{=DLrS*%}g@^+i6Z7YI< z^FVGgJ(gqybvF8l;G&8hb93W(c|^$z_5hxb_rJ0oo_t z@|Z!&E9QB}>t{2NjKaEjk zesW9k+;P#Idi0ff?|0SwX< zu6)Z+^Oz}LVc(d)mfOec(*nX6jT1n0Su+*{z3FSfAlJ>fY3uw#t~J}|Dl8@%(jgf_ z69#Vuo}63Ye5_=$)&bGkA-T3+VcdxmS2JfCE!eXHJlzO05i>+lk2jM9=fJ3j%-0{} zvV}A|U{EL&E>mcHNZajL^1bCu=d6%H95|GUzdDZyh7<+aw1J7tmZ1t^+Vr2ClGY1b zoCr|%!w&1Z8sEf1lCPJH3({V|0IS6B3bQl1Ztth&F)XOv`Kq*d9W=qm5dC zyUZV}w^p%?8@I6eVNle~hZ4BT)USUT=?tEH#z^43w4(hmTVvg)T2MBuxFvBh$PoFn zsB~LSp{)gj%uD3I zrh36QA~v3ZzgaIP@Fh|kC773lT8xnwAA1giENf!eB}o6XUM0s{0Zha;s4mdp7#?@>17>@9mahSY0(A2_P8_zsZB1uBGZi>5m@X zO94FYQWnd6wDx-qo0KP3eRN%_?)W1kQIk zV}6B>ZPm;juJ+~|UiR%^Q7BHx&ZR0L+TYUk&Rl?(GFY{2sS${9S>G^gc-eDX_t>;5 z_R;JZ3zxI73MahVKm%{Z=mxbmGgfnTWzIJB>m7JK$So+(v<%8>pA+LB|3P{)z?+T{ z+XcK7a&3NrwUgWz^*{Mb({=Tra#`6NsqaBM5kU{&% zgTImm*+D-OX|N@eZpK|=hnUK>D{jtnAzB`-)^F}T3^2^k7!bsgAirr(Ej+Fi90#v9 zQJ)5MosppsYsaF;UpD1Sz+-+nggg{@jxg>5z~P5fu?>B$N(mk?uw*5fRB* zuby-7oq6tjm}ln8_~AU~9KyZd{l4qJ*00uMw$_`ss0mCeWZC##%Izc58=M>`ZzbcJ zwA?10G%eq902yq}e zC9M}C20kO2F?L@5FOv>+S2<}P{)9H}$LPxYwPA=Oa9HU{JDAm`Eu+a@H)@wkE=`Vz zz0%{$>c-(k%RJc>D)pY2+n=uo#ZhZKZzeJeF%HlymoIY)t`mip-vz;?<{at$Ig1oS zOFEA!=P;d^H?vMI@2LxWGgw??wxyHn8E!W%VheAjJ?EG9@&2UCiF-q+fy!g1tgOrq z^{iUT2l@*i!q>ad1XB=`ElN$gdK1b--G8JV<*H;;T({=U>yRshAS}!{0{F7=S8rQ- zZ2$H;zFIF^5Fz2X)UXyj*+^sjNJ&_^V5LDeKqL8F|A>UxmhWT^k#kbOv1o575i81N zCyKwXW-f?8T@v@YLlZg910`4a%O(O7heX=bfH=oVgEHKxX0hK50Fpb1h#cZl9xIiF zVat-pU8&@_Yr7oq&vT23i~*6nkEx31wD1gKK^asJLN-azq0agpMMs24POzmIG;4>v zKJ}wE&@1=>Vy{+;Q2gBUGFmG)$jT|+`(dKQqL(MLN|x6BeIX`se&~9FDce$~0|eK#F%t z$j{v<^w`59oZ>Z_Y$mSlAdLob9QRfq86Eyqlli&H_-74~Em=V__O2w>55A>v4%K*KP?fq>Qw|n9 zvJ{SokHCF*?QW)!q^STZ|X6oMkpfkKHobnPRtB(R%6c3olR4TQhn}?sSAlp(%3moT93Cg z`et>oA40BL`nK~;!z5BqP1xcE@ysRxmaHM7T|5$U%B7LM5Li!o11+bbmv5NNZTRHC zSkH8$bxgsAU!8Y^>CohjJ-W%|I82P@O)EiZI+-tE#td;S3~6p>K;D=L04xnbo!5Q-b2icG9w%9TuWXb`pS|ILPCd}FV3+i_jsY{zq6h6t(eH%$@-wxjv zhC9`vrTM>@=3pKY-tPPc$8pEe$bAi&U(HK_8ya{X(+@}6xJkr!{>en5ukv;hI)6!t zm0;{A)2wuHrR02+=dOxA_!ud(cFo1xR_I-gx_ngee)AJL(&Ioo$zjeu#akeUgzoiYOcw@@{bQxQZT5y*U`S(Rd8? zFVwvCfo1vyCa-5iAv{45scPcivCa!dzk&pbsSYNLd(r6^tsRo~parnr4m^ccIr8_t zY6n9%)+g7%F9?rn#S93gJ%@`ltTLP*yZ+-eh1e)+*6-tPj@wq?^no@xK3#<}RYqMN zO0Pnc=Dx>_XV{g{Pj6t>G>|K@(Kj&J(ShN#0j;I?b>JfB(r#3R=@Z+yOYa)2rm-p( zML$oSV~VR&0hM&!;{94TcA5s7`P8Wl>D~6_hy#TJ7pj3NZ46gt8=CQGchEd>z94K< zxy#4L7akiYAH+{!YD)h6zzsza(y2lTo<+yEm-gQCT@KVz!E(4Ua6Z*^yuTwS>w)3E z+d8;9d$}`MIyTjcIA65^zNVq1TpFM%98Xbegg(Nv^}~^{<&3#J;NDpb;VF0`;fL>} z3QZXOkKdi8yheS-WlBQ-5}@KXSgW}ranW-r9*%?*x?k=dS+y6+>mV^{5Pf_!d)98Y zA}9|!E>L}{C;Oj#GdlUM@o?7X2a#Wa>&G0$hU!-rC@u%u9vXRXUSG;@I7YQ0re(*m z()nb4hbDKJ^tBj%-IPP)oGi^>d0Q_t-VXs{Hrz4#^0o%4&!?dI9XpfWj&?VAqtdHR zZ^>{cF-FW$+T&i%)#JI=+yIS|6@0DxeW*2~Nm`bzYNh`Axmg`UJ8r(mG`uz~Ja8-50xoqhfqXEytU}Q*KGrYt z@T19{;9pS`F%5hT$F1oXCgYX03!3>d=h!i+>OQb#Kt@N;GvO%$o_b@)YjWR_z%)Q3 z5gU!!b{jc-vZ+!Y&+9nxe2@gFl*M#N*-yYY0~ny{%`Pt7J|nCid*@)HR_>n)`Y znCoUK)0ls>6K}}?jZKUJ>1D6c1X6!v$KT6^^~2@i1hhSnknsa@J^;Nb0nKdDDp;rd zKz#pW| z`5)G&Tz6fddc}}ppEuuvV7$|g2TOo>xx?i>Kx`5h>IF7LhyO_!mEq&( zx9Uj^q>CnQ*CxQiP_p5&;gXW+!ESvB*vc^URNsFOkP}dGNl8&$(hN!U35{wGYj4?S z40n4~XB=5_uM+V>*yW6Z!BfcuAf=esAC#MV#GCP$Z(F`=<*)?g2>cTAb8uLKs+Hy* zmG~%3*v8)Zc4KVA21{2onHY8f{o(tOaDtQP2CC#dRhyAw<%^xnpZ}Rmal!VrmS`{=_t}hiu|JA>u^|_vBNY%(v`<%eo~!FPB2fZfBCxRM|i3O1`A^_*>9t>1C`< zIswVOd!SLjH3~?-2*?oOnF=2yBi5Kxnj<6LV|+r|wlR9nn#IAN1qa2*AnGP%;#vdW zp8x7M{-pr)1AvwQBqOckYy;wqIif~I3E#8nekZC?rk9lH?qdTchGD_=oNG#9)}6Sl z?4~Fk6OYMD)HC2WW&J)bpWEO=IoUtE4p(^u(JN3vxAd!I4aev#O0k)#lv6yBntLM->pge1wTA-DMr1*bea=0>OUZEpBMw6}I>o8qNI zeU`Af$B$F=pV-y@9OXByfTt-#>owKT3u2KM12IEg?quJ zA!`w=&Ce61I)>^e(b1_6l1+-&68J#s|d1VLRABU_)q_kPa7B(F|xHs?tYJ_S$iJWfWJcuroU7AKka` zsL{BzHg#E2*Xw-`G1dltPtoy5UaW2~Jr-xX6Q{f}Dr6xOd4251%X~ zGL0Ma1?;H$h{FcTnc%XJGWA*=_D{!q>)eRMDGP+E2=Q3Pa+ACQuKE_4Cw+A z^y?q-E(j0Zy(WzA%A@8`%i35fQa-x85or2SXlRMlM_#x?zSmW7oiq(Q`U3xXY&(vi z18J*h^3DD?>y~o0AF|S_n5|yoM1BS+J1_Toe5sEZIFL_WxC$hBdpn*#hFZ4OAEk>w zM=Egj9`5Z?)sj$M7rZxTIgg)wB(kRiUolye%~KYaCux_kHzQk2JMx|my=v&rB^%hP zz~ZB-;yd|GEfd}xhE*Z#B~6&dXvb(Tjd2)dPa)`@x%kRnFpfcENSY=-24uK~Y(b^K z?#iYX$=ivPa0|%Cn9n=;?6Kkok?1VdT*je{+%h)}h+nTA=9F*l!Zf;zJFbulnkixm z9$f2Bm=~C^-4a66x!tDlSuxtGu?gjvbeE!8(1USNMJ+nqcesbX+oXSOmU`aIl8N2_ zi%oj}C)Io@i_7fmmH|vpxwk@EB{5f)8Ak7|$Af5mF*-n#EVUHd5Qofms3 z9ED%V3f$tdaj_Hw&wQ;dfWy-$ibu-wW7k&Bgl0z>Z`*hV zT{F*b*HKh>ck3=VMc7jFDJR$GyW)r|y>~XttXpM`43cgL^^HF7)u|;}q^9^ z^S+>~`%Lt?u{n+_GAt@;YS}<#Me%g+*qWXVwv70%ZJA6esJ~f>_~0_uSb^odieqU3VUE=B`twKF)P46D8o;g*#@(XUsv3z0shF znLZw20C6_hs!LTSpT+&(z=0b6ir|RJ(t5eHN%4U-xI7~rDk7Q*^Xy@`qVaq9b@<(6 zH)j@f6JS80x6e#ViwFS5B~XGoJYZ)wGnT>OrP(?FAq2|9(C)*@?WMp_{j;{kfe+g- zbOm=h(>MN;IZGFIuSXAW$H8?{kzWFAzgc}hlrHKw-YYZ5vslu*(+*S?6%n-;*Am71 zYa36JIF00k@C)QrE*4`Tobhy7H1`JBXJn!Uei%rQEpw%IwnTN*wS7iTx5dUUbklZ6 z3XL3l`~Y*m$q>J6rkct=tKlY4j_8s(Jr4y-h%@I~@lX zeGv>m$-u=@+#r5|Y0pF7CY>hioF`ci-4#ri3}72&{d6;YOj?4;f|Lq?5jTUo!K*^9 zD=Hm7UvS)hCMWz1Z!q8{our@7jXTbz1omV1&B6+$%e+alb2SFI!Okt!kyGA+PpnNa zE_EXCU??QEvjcwj?`5V@Ty|Ta7;)t&77Fv-^eb(yL;2#8b!Wu{u0eKhZ*wvQ*N2rP zB;;ZwU*0-Qb#hVdIl4D+e3x7Qp%nJqHNQ;ya!H5jf$3qwq?Ve*7iVg5^~t5r{9>}? zc-~Y4Rz5&-3GwlpwG)Q80D_?&##y_!=k|KP6sNm<1}FzQK@K-z2u8@c(J#D6=pyq8 zPr@j-w(TEc8~(8d`e%u%$(-07_7J~={|FMbi}cvG|j9D38d zQO1Aih(qI=9ExfU&-)+Z6ymV{7#ot0YN!#4HVs9~}n5dOt|UTs;#`8jbn# zM)|(~qq19jghyRJxYPys3xb>T899@^ewek5Z!XY>Oihqwihm|)d!ig9J@T;NkOZwc z8D8y&etHXrgo~#K@i-jL1GS6vpQ+7WvzB^S>O9`tP2--~W*C!^<$tpA&dbZafG`=) z$T^?V*U=V%k0L%%<5qk%`RKZ7mKC$+b$9}}ey(tMX?^eXa9D5J^>DnZ z$!pf*R8WO-JfXiU*>EX@6el9&B<@Lr%a<9BHVIodo2<;TlLIQ*pkKk}=j&W~CjG*Y zF=0wY;9ID74$M!bom26vC7h^@U&J&$fK!&1h&}wO4SsyEj3+z_K2H=kZ0)cx_S)xy zB}D%ssMc=N#>OC4KLk(|3v!EI}IbO8ccu+1ebW|4rU(1O_*! zeDmjNOx-`ukQ8VKtZN~3-~0G_Nqb<5P#5vpfW8w-QrFe$3DjW-f9S^$1@ruA7%;x! zq9nuGPAFlhYt7{VzTh)835~r?f5fCHe(M@!nwt3xiF1YDi!$%e?(6K7qR-EIm%PbQ zx$(eFA0ynU`U}HM?4=ybjZ1z<^Sn#DkPv?DRTv2)fOR-SikkVI3?9r(gPK}en<8}o zDlwc`6{JAMF_mo3AI>);lw(Bt3)C8 z;xv%2FhA$M7#z?lRC!mhp_tl`TJT@!dtMyPx#&2)`-=rI%22v?Fb;tsS<5*kGpL$5CeB~QhfKw3G`7zCVo*~7x>@QH|!I_I6Ol>Sk9 z2zM(l*=`IB6!nkIV%lpveZK+0K$Da0+U*<;pcq^U^=tbN3xJU|BO_bn+NkGHfpW+% zh(vL|E;Ns8x=rm6tk>uxLQCsA1&m{4zs3d*wo@kDqapph9l#-b;_D;tMJBwI^&m`} zm@NMOG~?*D5e#`)`Jw`i)fjTOvI%f;7Q?jvjO1i8LH{x-k5&VkRW~!v8N+EKK95g|!?c>+1>SqNAo}0`l_1n?FI?0iun98}3vT=Nu%L zX{$pp2i!y3(6ocS)>e;e%-NrOLk#W@}(PR7Ul7Oz83ihdkjm1KZsnYYk5#m!pk1)N-F?b}+1ff|5e(NNTdxpDl-a%hH2yHdfssI|fLOTQk@T;D zx|5L-!&~Mj3@Ro~XRiZT6JYj(o(6d?y~8oTE@m6n*BURt78jjIs=rOGWg#}b`gcrrf7@^kx zhNK!d2s`YP&IfE0_{rQ8R^)-~Y5~5--stDI(QU||QB$4q=!GscF@uoth7VxxKE=9k zXAn}d9Wq<$AjU1yED)aF*aZ7-oj3QclX(IUSN{>}VkYo45O%VIa}lADZYQ$emT7?u zDGAV^13`$hEcwo94?=pdGDpNC?o*n)hU7E3Tt$p~;l=|mVE~ZVI($kM2=G((H4~Xe zY&ST_9N(`O!v8P=;>Uy~XQu=J_M{{Vo&u2lLA!qd@!6sf9{~>cEQr{gdHcBq2=#1m zgTDo;0F+sZSdf?&ft6sT)^*ny@HZ9&eFa6@WTAr@_m<=^-jKL??fJTmr=e{^NFa{hi zh?ROPMA5wS{9(DO1nSIiSzv{x71Q`En*Abg$~y0ELQzB12+%f|+QW*CXi#piY};2) zTMn*y-S=8&69g4$8#k2lgU{Kg0wA|LKG8gR*KtuF${-+JNSy(T?RTubK+@-_XUD6O zl1Cf-g3!4=1Qi-f*&8m{-jh2^`1%bH;PlQ;9$OGO2HAMO+o+8;YKDGCaAeJ`*g&o% zWNrY~%;>eo{8%K?2SUb?Ocu+F_Ty!t`h}41SGsslJXU-ccjOBkB+Ak8@gF0(--jP$ zL)IK*>2A{B0i9_l$<#RL;ywXf+_w)*-3&+>`WGZ1pAI2cK-lWiOMcKyz%%FN(voG?%J`H~O0Ho>%M_x8WrQT;7w=JPH-MxEBWt<~fjq4tMAC{DJ_Vsdr|INv12xz+)g9 z$N+-h%+7`65FG0;R>~YBMwV?aYG684o#l79zV{}XZ8tbb(dtNzXf^@&84arcr3p`h z1+A3tf@h*c0^1TK6&3ELt*VpmPt&V6; z`qd;Y)uzRrw}Ns9;G$mdWSnm zvakf-V5|;u#z_w*&NzCGBoX2_^N}=!%7$NaO2_lvZy@0|+@AdQ_QS=9eF#r-bN&q- zfQB|wI)2y{PH!ARNaB1!0*0<1403DisrHgPA2EAgQG-C%pk0{()`X-mna243c87-Q z)Q&WbP7eZtjK(N?RHiii^g7+RRgaA^2gq*&JJSj$48OTWxO>XCGc{w%&ZNy-TpbxiXtQYInf zjUM|F01$`Z0VQV4yekd201`v#$;_ZiM0u-*EvU@sohkNeXwWqg>1Fb4Crv5;#iSpU z-Vgx!4cE3xVsUm6k)9erqtLA?p`(aKI;j+R+c8^vF=AUg0^AcRjhPPP1oII#OVp%-$oUAgx1 zSbWnx)1Z*q1m5{)vQ#VXy4%K>GYm_Bs?4!?jF9G7D>esTe9UqWQan&St@3=TU_6g0 zhS*Z7bDxsMk0G6`?_4k`!gsQe7V2b_x6XNI$J&9Znv>H<+<~84C)^ykXVD7uXx!$urbFxUx_}${*NlB{T z0X*!jtj!heA1$vfJLGCz0|pLF2s5Y`RQEJxZ)V~Aa1KGz*3_8P;+m}eFQ7F7Rqw~@ zwK=sLze9fS!H-AD-{krDC8kgCE)}*HxhS>!3t4AV%*6{F2cS9sK62WQ{rMjiw~ABP z5(6t?KC)7a7Q--e9?zN`bI+plGm{7X`UARfzbD(Q7}~|UuVZX!SVCn#l#x4EMf(4O znlXRk0fAM}b8mk*yRnMPVFn2)?AV60bI;veT_U4ac4%qxDNdGqQB%96KUI=(C}EWD!c`z8{)4z`3Tk_ zN__g9$G(Ox5Czx$I8Zg?AvB1HHQsc_CQQlLGlotm#_!zts*y(|RqH?PL<|6T?oj}; zaa&EUM7W4ri5QQWe`%aCO%^hG2|2)u#aNt;IT<1VsZG}N+W@Pq&2@szkH69B0qiF$ z-0s*r_zw%Hl#uk$W4dKM0^@%e$ia$t2c>cUJoMRrUBc5DmlyGQdc7AIBsu+A2OL$J zL7L?;bPn~PPzFp)x)b`A@S7Jw#_jSOPDcpgT!!#l(^0{FeqskNulI?IMr5aO?cUz2 zyu4QZZO2#4Z7txzA?R+rVXKn$U2{gpbq_d<()IibFvXG$xf>5m<#wP$fuzBKms%W_ zzn289J$#(sGrKG|$PX2lR5iHAv8FGVe} zq4Ds7TR0b|;Xw|$(q#OVh<>am1e&MFW0=v!M(|h|BzC|blF{-6 z^3$Dzd%Gz6{AM=12FUYFXnX_06$4>#jM1+_1ZA)f12&TNTU zj330|&ZjRtO(?^LX>cDLIKChpGwq`EsO+S~Zv=53Rgi1cG0_Pg?18Ft{S@U{e|B4H zCCF?6tijl**xXwJ?`x4#4WAy9qmoLUk!9^63>GbxEO6a0MEpSo+)1cKT*!$#1^oeH zL(slnh&_Gf6?N>CbIRKtN=llOOhpPDf)I3h{$kekDPpl)iVh=6q(KAAR=4yf_H+7} zmoe1=NNFK;`#^|>q+xY9_h_cqL5*eMIGbj7vxel5-`KhWWR4b&H<9hVBb6)P$X&LB_d? zTgAxrJRSGsvYMTdgQNXe={fH&5#*mJ(HDPajLphbMh)68v*_aBv0vu&vl%;zplW%I zRlHaF;R0O*s5MMwph*)uEWhMF^@tqE&io4wlrBO%6&>zV*<}mKm*_l+pSf)Vdmj4@ z`{hMEZE99F;Lzw5pZu|SwZ_YsVpm*5Q~Uwc(8Ty50V@s zz_f_iw8bW>H){UZeU4;gBUrYk3Ab({5qVjXiW~9@Siq*xZi<<;M?wDzss?IBPcZ6) zKd1r}tKPUN2$D-IEG^;Ss|4sBj2#t5vyh~#|IW0nu&x*kg__TA0y}oM+9C6-8r_D% zw`bB=jV~-S>mdGv{VEC}7vO0p8+}(-7fm~4H{%|$+|OmI1nf0ED+>l2mnR{2V93`1 zm|{Z*F;8}OcR!Q#KZU;}z7vpN=DK}{X<*dyvLFz(6j~E^x%<%6;Afg|b36UHL?Ob~ ztSVCZS4;ccRw&Ki1>jgVX_gzhANW}YK%OIS1@P5qcjOaZLK~i#r@8Jo@9vF=j zL|+sZ!oxA5-#1^wLk!kNrW@$Ve@&)2@u_U|fl^3w3?mX?4y+2F;7U9M*iUJR(;HSI z;GEHnPXk#GCd{oWM?ex>N8<-!#%s4Lfo2{W7|nDnfEB*K;jPtub1ziy*9(P5(X`h= zv-HmQ$X$`X%Nj2X`IO0SnWi8hIg3B4MoDkD{G{~i{wz-3JgxG@9_Gji{kUJA#cb*zC? zALi^f?e^&Q^Qyp?s;R|pNwGYO|I{k2fLKQXTESZ2W{J6!+b|YG6tW9Qkop(ol+H90 zXQ_;csM>$=_yh@PC%)X|Rsf7JT=wu*O;Sd5>$UbnWOXB-2NYP4N*e+W-RHd5Kq>@K z0jM1!QgF}nlZjutghvS$yd${K&$5YN!9u6o4FD#{m0^*Z1@S6d=tR38dyt=w#vjy# zUYl&6RxHYV&lZj!SS%1=LLa%=;f!jkIu1VQ{0+}~LN;6!KKW9iaa6cubOFHscK|?w zJK5$`V3N~vi7%)Q@LCwcnO*`$iyB8M3jcMS#_N%NlfnURf_!a)z1EnlgN9MD7Mcc# z#4VkbHR%9C8a|rlMv!;iNSIKu-V=E510sz5ga>l`R1X0ay~-}1D*Di7z$|nDmo4za z9caSkw+s>Ce~9pV<(&6SFR=*Lj!hj#8#{TMx?Y<>@L(Q#V|@rf^0<7LeP+`3K+ zE|tF~WAr=LJ5r1**}H-Wcy#%_aLn}Ae{G=5th@jDMLGBWrzIKN^zZ!=LaG2LEqvI( zm)pLLge=k)z^*~v^$yU$7smgwB>4CMt{_e@_&Tgv(06n7OaV!j0fd|brb7!!!&?7v zk~+?lHpk91{{fpbAz`>wNpolvB(mS=_bB-eD?Y2u)>-v~MslrH&2+Xo_xb?xZb=t* zK#Az(x4Ky^`=xx5dui?pnzUDB>fhHI-l7685Pl)%4G z4!-9<*e>x60NN4Np+2hKN>YvnHg~|=BH6|aMQrofUw`LCawq)RMNE7F#5wSID}(#= zogBL*Fj<)`Pw1_gT>^h?{CP#{@tX-xpH@ElzM!{YCc{z#U;cOXh;Rl|j#+HRDqpN@ zK(Z5VJQzO?nvtixHTO9@0Q=>aJcj^BK+6-C2R((Bof>lZml2C0xUB!!u7z2#FpzY> zN{7$v$(@zohLHu5u6iK-Vh*YuLR7QxtI$`kf{RS8BP6C#CK%U#vceM*XyN>Z*N7A< z=hV9(e{04j7#JALN0|VN6ZVV2{lD!foVbMWf%I=pS5JA_j2JxVYxBxR%{*NMy0UZk5x2D;Rz9`H>eA%d#`j!a-TRpShpo1K`L z7~&O&z7(k%lRi4ogU+{vInFjtqqX1O&!mvix+vr@1#q5Bi>ww>C82$%BIC+QG!RG8 zvw(jVpt4J#kc5b8OUpuPRZ#!|#rz|IAc0>GK6;qp-GFk>y@UWO&_>$DVRX~Hw0}#* z{Ab+-{5EF@4dvkAV7Wh70}OrC$#NaEF(rR}t)K#oO4ui`*1mrFF0B=q69l4$+C7GQ zJ4873vmN+atN(f*_Y3%cGmnEBbkU^Tv1r)<9Ov-q#Qz4UEMXIx$YFq!RMPl-;BXmh z@D_50o|P0A>!1qoZyy8L2LlC-{@07iE_XNr$L`m$(Jvm!+mcplJ5kLiWk*f+fnI;fxJ_JdvY7bK#68`DFc~7gt z+SF$YMkl84S24a`kdW{{_2HYViInIhxyWBO<~-`kGSYSNa(3)eZ;}KXTlLz5GC3@C zqNReu`9klppW}aS%)Dy|?Xo1#ov(!uI^u?KQY-KgyJZmsITy!IUp3^y@_h0H;&JmA zOYGYBDs?_7eSMUDTj1F9BfkPseiXwmj~-y9U~lv3H&&l~SF^T9gjz6C3963E+@& zUfq^T+;FGnFe(+hmnEh?UK1p@X*-_B7;CQi8 zYX=Ol?+oAGml$f=xexT=Uv3Hi65bIrrM4vygA>$OMB6!VKh+s)^YjNY0M8fjN-*)@ zA87#|*vuhzA+ZKpRzR{87r;$&Z)RZG{1LobfP)b3XLiBq#~XW=I#lZ){-@Fh~*oX4xZ>0ynrNy3(b_aBB4GXV4@+@aIo zI-36CPs{?oP#~;pDt#M$Ma7sB3I>HQW4=TWJ(GyY1z-9_n-yrCm}|^pdGf%wu#kO+ z0T-cPySrWf)N{8)sfW^<*b6V}Nd(s>#{9?HoTGPY?wBrZuPgkm_^b(~|5ZqOqW^h} zll?tHWm=mw-oc?brmU=t08F?Vr6Tn_cnD@h?PdF?G0e+nqyKX;{?8Sb{F?Oj|FD4n zPlWV;%d7K$jl=&c%kPRIMGFCM1BnDr9}`~SgG_RNV`zntu@(qJF`PhPi&ha*;|6S2 zw*tfh`3i7?nQBcvj8|8iYnMbk!z$;1l3D}M5D|rKu>x65rDBGcQ(W( z@SY^`zCMG!JO{RF(D<6jBV?4i%wMQUhvom4jLMyLUmKVQ!ecKiXY3TlQe>0su5B4m z#>mFgwIiscJsBcDV2Moi4jf{63Bb<7Dy?3oP!F)AmEMX+%e%t{CFQ5Ed@WcQ-V+jV z00JB+ZI<((PY0e^OI@e66WR4+{4oIbG&R78f9mvge^^WHD$F-)+<%iD$bOQty~e?H zjYZ-Hh;CA(1XPhzTr#_Jw%8Gy0_}WwsQ@4;@La;wvj3Pyk}w`2-g!-1VeHFf0SN;$ zF^Xo)jnO1D9|z+knB<0WKJ-{cDsq#Qx(2+!5J#y+I)VS}PLa9^3@|_kwvhhBs!#-) zKuvU=l_#U+A-s>D8*ZBvAdb%xE|9VTIFyamy6hrrahD35@emzPCoii-We^B-(J6FL z2;c*Lgv`$4bv1vP9N4uMk9JBzV2qf41K@YW;LJe7wuo+L3A;QEl5opgffEO?n$Zqi zjr}XzK$PdU$Hz0PYlU4)gd5zLS&k2v0F;Hgy~zTV&x@0cJeK z-ArDyb`X6W?yU#ASF|8q-?KeIDj) zi#K%94DWUKOg zrHd0Hi+7%VgF_spk_Q%fMr@O`Fqo#~Xq=?t z6=#p;hJH38q|BfmP_4J9Qy_z!R@xnqvpm{C_doQLi4)LIHx6SRg2wkTNyI-EdqLL< zgGYNUy^w=J5}{KKSn5WXc45DfWuVH`x>%uFwyK%{z%HQh`;7DZ7pQ3%rlav}Z@4hE z3XHhywKW1;!_i+5ff+qq0!q8*xY6#g&mzOA8L#sY2-Iguj`iOaG8PeTiDwEuFplgL zGEeY!2QTCKNvz$J&W(ju%mo_xPcb9U4C?PXaEVcN ziwN^b#m#fK4C_U!=yy)5k!*=$M|OS{M_3SceTd^VFgxY)m*7$h{D4#nlj11|x5;Xk zKN?zAP2+1Ln2(tS`l6?}>4UM}g&RIKzVdJD0OS#Me?NloPo@L2rkU5`zNZZ0_v1#k zUit?PQPgADHo_#Eeki3ht{aY^9u^iBzOXwe-7u9i-ykB^8dQBaN2Z>6OQiOICz77O z%4;Uh{oX0}6F@cGHFFrl{Ev&SGSB4zrY2W(JM~&%>=c0+9iCE6bzMVU3;D?2bvIdP zS7g@}MA2DSwz%5fT_mdq(@fu-l*zK3Qkp8T0<_` zkAv}1s`+>wFaIb{1PgV5CSLxR(&|R&*on@T+K?oFu~Yfr_HNEo-qPP+v(Jt>Ob_8v zUfPF{>4t}}r=vGZ;t1TTPWb1`R6=kuiPzwB?pB!~XetGiPLxhb(|e{*>p4jG;mO0C zYxC_AyHdRL7?h_bq8Gl_ z70O)*r^9JUSSQeN_MZ!*@f;SSE=o*jo#nc1PF!bWvw)G`qh`!ksOMg>1>pmKl`E&? z+^0LxMvb38F_X!g@lSpJScFuki|hbnnwD%V{kj~}%ZT9meYMNiVqfOL zHSxzqmlJe(F?Sy3{1k*1h#1Su&f%YleaMuMdwY~gz{29Uk0|Dk#=QQpY&V=dgXtYTkh;CvNAW8??nRLvR}T$GFQk#Yqr{cMM`))AMliEaeUahJCt&!6B0A&N z>-57Gfs~uVbxvb*ZlTTr|3~drc`RHt!}5ks;|)?#fndkS!n4NjGrCDl(P-R+LA*-u zvLWXbOOn$3)YdlY`xY$!|wXQ&wm1eI%3x#5qA%S|52q{YLg@R!_U9yB;9RRu?dx+wFa~ zIGq`1WokaCd3=21FGqP3Ve;e?nGH|(M|xjaGWTuu zqaZV!WczPxKEBQpctCc7T0wH2R{ApOENaIdyvS_ty)Li@eZoB3(S+?=W;Xk$L6Uq6 z7ZWRCkPXHmIc*Nb$a*+(H%wkaOoSs3`U*RJzp)xPYBhSSmwhtAp{}m6(ZNjE)Y3k` zZ40on&8QF z%B&3qiT)B;+mV#1Q=CL%0=%{Fya72imjga|kXp;mV~o<+TP zO=dXSd$gXbe$_Bs^U${c1ONV{Pn$|1NOMHD>O(Z1_zvRGr#QK`5o0BonzMxo%1*q0 z`1)y(ofdxMvXjc=`p%kwB!c;c>30^2&q9f^eE>FLKUEMxKWt{Yjo-=A-;u|wflgR( zI+a1C*^wq5P&Ee%)AL?vPJ8cpDUR3m6K<|>azp6_DjbaRB|tD(hD+Xmy?pNmGe_1V z^ljXH>Zk6|Aj5gK3s&ZLwsdTY%OE!q6FJW@kHk^|I$-*nO22qmrl|iB0Yx=6OPRTdBNvMh}DL&+^&lEx5;Xr%~j~4 zgkjy_+NZU8Xp*SK4GS($(^LD6#q`+S%R_`c(vnW8r1j*^(4WD~7ANQrYZ)~)gcm@M zb>+RtP(&wx(*Xail-{(;g{g<5hLF;;4j@*T#V(W!)8DR4HbXFfqne=|_6NNUa}M$i zZ~~y-AUQhun47s24wOS0VB)THt13zY$r0}J4&$%UvHww9@{FbnPFnHYv@9(m#q>p( zx0Pw$BOwYiKON5TuW1UJGv>ufZDUtN?G;&F#!exa{gh2SF?dJMYwUF+gz)HvlXQf~ z6j(#$Ig_~byZ!!^_B57iYl=@-cazYh%|%h9-|t8zyUo`mwH5PpJe?@?H4~w~8hn#~ zHELovT>&90DMZiVN%U7&X4)d$P^Uz^0ZJ#l?U9mfbGF_(~4uHe~z zITmSEW0$@MfRW*`ckbh~OtGzCS`DmhZDBJa|8dTT1Svr)nf$?v`f`6<-O3=+*Xbxm6WVvzLcV7|_`TIu7+vzQ#%Q zbN#wW{mkTrv20dw7V{^egZQLr5#iKUa~D3p~Ud_AGWe^gxWKKt{**don!4vvQZx96-Hg5_|{W?87mUpp!^Z?z&Y28>biE< z$_$!ZJk-FNSuy)7O2;v*3Zub^cLNMsC#Hp47TsO_OwPXi(|zh!qpXj{2*t3|d%kNw{0|FYk%zJi*t`<+ zJB&lAQK@{RH0~TXh&B5RqAo5IwQT3tqxvUyb}+WJhNEDBbOc>;dGwlNy-WnUTbc3U znum@uR%HVSk4n`#j+!VHp0=0WY){6Wyh2P!OgqZ|6Rc>hC)clUTn$*E3Vzce)#CY~ zRpBlt_4VMY{GrbK13?dto?{4%ttM7=AY$BRyasf6Sn@krEE=g_Q^syz0RuR7Uxywo-68K zs`e-RmePa^9!&atQrvdpbcwREM4djvOAk}J@Rx1*y(q9M|SCimQ!a5$v~s`Om(3Y=RlnNSw52*%&d_Mas^(B z9#c=r=xIA9s2xgLeFR&Mz)qemkjMszea0~xo#Qx)GR7WJo+@R8YAd#Gfqq8 z&yfd9p29NW^oQgmp)_v-|0VtOY;%abm47sa`#chPbXl^Plf+wCKXv{ObQm5K=oj%P zm{%tJ|Krrr@Wm9|NLCK&D|ZtEh(ZhMoJTm>v72`da@pVW+YB-wTHceGI&-lTtID1V$yeN9R|silcrc zmpdNZ#G4SBdeAj4v^#jlse52U(DyV^%&|}72g?$2rG#n2b)@psBU7&0PKwal&AvE^ z-+#Fxd0Jx(^ed7-=Y9&uHf)B7gK2BeWD_>utT5UQy41J(lYd0J4>y4!2smtak zec(7}&-;Y_h@3c?J?y6JjESobP#gBD#n&(K?bsdlEO8Mzx|O80;k%BrP3Pn@QzbTt z*QIY=i&6X4Cp+m6uo|BBKNy~B&@%Z<{a@Ha($@jRtQ@PwsLsuf6(zoYL87095?$Y_ zueb2Tcg}DubEVOfyPj2#*D`DvD0bVgAM!2e#x!|*mp%L-+Izy$(>UIAv|=tG=25%P zIHg;|)H1=h`SgmI`D{kLh^kZD5xql4M74p)I*!Fic6A1MRsVb+abk7O=dD>GG155q zKR0nbA+d1dv_kDy&Z)l@@;RK}rSi>mc3;zstl3?8bc+YQMdx>0 zfk`eVtY5!#;mKIHg@)_Wql3?6z9$v(T`_T$J4Y*`pTC2Yqzq^R4iv2CZ@K}!oA}7IdbiQYuv!de3iaqvUl7nW`%Y8mZZT<*{|BXqv`bw z-^?7}OasqPF-by3@9*OU@AvAIY-D^L&wjw+QQN#^f5zDHx_%?$9`5Co*=v3Kiy@!V zb-5iGjUHmn3)fED8U?yuW?wbhs{hO5cn1FODBIRwv|^)Nr;BPI4QIX@2V}inPsvLR8tbuBuFTB}aabGqHPmDKh=pCzWzx;W3Hq@j_Ue}f6KQ9;LExN= zC(eHND%R>%kHLn-yi9=N#6XSX@KQ%*{`3TfX^k zDEBFO9~o_j`kwp1u!W_Y#&Z-uBDJdbp~-ujN3-fI`r?t{lHQ0rjwxqKVx7TEP~6z4 zl$GM8QB()WE|KNs$(MEhgpap2;dJeQCE){QllQ)C2m}IDLTA5oLp@auXJYlI7uD;; z#U|0fYd7}%2!uLnDzF%`d1-N1WpRRzCr%ze;C?$AxiC8l&twe8v&3p960sDc^dF8N zsxu~AX0{VnXGV<*rp7(MXB8M%@2PL%yB5B@>$7%Jqf=m zh2bVof~DQ1SX}jfYD2g9zecl8IIOloIX0BS6~V^G3nw;^?+YF|!B-8kyVkCLd?+rd zxgAJ+HA5HAi^NSDYkU09EuGtZu@aU$B3>b`@4UIFsXi078|N|?OAa487=MWC-uBMX zud>#7`+u$jfgj_bbe>yk|#2j-~9ytibg#EV={lijRrW{~GMudO6GEn9#r z+1lAQ*e*xU0#=Nz;Wl07a%4(3*4ytC?H9dQ88qj5u=ca;YPTbnNx@pfbo+CInhQ}^ zMNYJQmYY-0VMdbG>6$#PjN@4!_xr>9`i#loZu)8{GWPh_e)Jbe|6AUGASW zSFLm%&u9z2AhTy8=j(MzL%wq8NY?B5P_sVc(h)+k?zHHR%|C|UXC-4(M9`1*E^2OL z;Ish=8>A=kfcjCWvNSuoeXy)DgM)UP);$o9Ua`P<`0LO2*aF4Cfzj~4Af~lQhp+v{ zO5e8F$_%%24TA~Aw%1{ito`3N7$BXz>49AiS=z^~zK&P&Lr4S28Nx2Ff6Nm^P3ez9 zEe0$wl`13rp2uMmcE3YNxchnY7xx%RFIn()jP6f3)Gq(VTk6LBvGzwg_#*@F`Wg9Q zfmeS;e)BGe(lno4oN;d)@7~tgHr>!b!}+iJtA?Ln^m=s8_8ApQb>W!^UH$2KG@M;J z>3Ml^y8oN=?1=Y0z{nGMMdqW~n6)oc_zo&Ou1G%GG@Y!((t~MgARb|o!wfK~8m{L3 zflqik{83R`pN@tuoQVIhz+tvaEq)wU0&V*FOin|H%%JRtCk(vW6sLLLXwU}8x=v?0 zTe3GiAbj?#rzoj7&mJD_;bo(51Sa zN_z9knw4e0INRTPm!bP?qEp`EN>YEhJ152IFn{*vLo8R_=?$Gls^b{qNa{p*VnE)^2m6YjP zl93{h{&)lT-!t4Ef7Wsyzx~X!Q8gbfeBNmUOmk&^y9tiw0ilbK!gpU8209)8>~@5& zeb+lk_zAUegW=patj)=*l|F8lgVopRqBs8l)xW5>w|Ab(-DRiYENpGU4pu#D?YA5L zl=e(inqTCs7v^ac%{+pM$oD|HEzqS}uQY?%4RO?0QRCl!`T4K|#%(kew`0+GMIo-b zRb|~keQ1VLrVgV=0y2ZL44dvM?gmJPgGD*vQ@zd$^@1Y%k<4!P!0&0mD%P#$cGEg`)K%K z=Dq#&-1y`VvaF!*H^9HuJceJ;C0RcoZhwI@qSFzoQ)_W`Nt$7o_x9fRnB=}hu6H&q zn2PFd2jBI2z8jCY?iEy>rrLfVopleU-5P9o?@>_PI3|01FnoqrcX+zabTym`XiLId z_RT(EHyvL`Zn#_~!P^*1e_z$J%9?3WdtuMkRUgQ;Ihks8I371bBmLn4a!0CVGcvYN zwbd{!ExMMmrAIPqflio}SrxuLX1T@eMw(4rvQ6Q|dfc80a{VmYz_TB`qND%%&|-vc zc>YgS^Low=Z9^pH`VF?fEV0E&ufv(PUCGX0uXXIV$DDdOJxXavYwb7UPKW5q+>e{4 z=?pOU8}3+7A6~6zhS%*iUSSGs*U8@JD>s}$x*odgx{ZwOx_5D;sOD^xJW&z8Ii2(5 z;`Cmxn8%4;dv83<*u)Qnu7G!qMf7JdGd#anO)vMk3v2o;tXg_|a_t~}v9hGlU`}>dN zuZp|a-{ylNz>j?*_Ng1}S5n1Fth2*7}E5y7J${{1Ihx@J`?VsMpFYk$;?h@8EZ;>UGeb)&(4CtN?^KeN(z*58U-hk%bE z^ah6uof^V=1KLuqd^Q7&S|&^Cq+zJ#e6$sMq=xgOEc)A#2y-%z)pMB*jQ?T*D`l$A z)Al{&*tiWBTXh=#n=UL&e_YaPZGS73N%T40S{6QB#P@;4&!z3~s{)&jFv28{%S?~6 z$ujycR!EMN%l*D;9;w;zZ_Sx0D#E!)$xKq7K#1PQmmHZ)k%!%SG!H; z`EOp~0+-do{`~e^B5m%6Z7bmdhmr`E4iQ_eSdt^S1qod(^@w2%t*x7E|N^Q1bqZYnpqB4En zLf<-_GkZKS)>sCGFY+B&Fy~KXbLtMfc)98^wM#@q&t)-geL@ra)J17EjQe3~E@#w=$#o@$z2Kjz=w>6jj)qbo!=EW2kAe}y?*<-qr;Ixbb4{@t&TFuc z8KCGkT7T5Ad#F09=JfMw+6r~3(scTC*C4h2u$?5pPUBhK)v}7gM#02^uKooG4g%w~ zhoGrJ@V-r2vgd+Bnhj%j|9Bja(XT-b55e^ib~4vFuamu%S;rnmBTkdUt)J^k4sVOy zTl}zvPazmQ{f{-g_!E!?_)i1-j(?T^vcaaQ%?oYYYo;nb(M{;{OBsHOvnb7;yNr;; z!?}`KthATEDBLZPUg-}d=BnFz>7fFu0Z(H!{ICuWH;3~G?GMO>FX}bj7b}{@*OluW z197P&kB>0>)2l36pEgpM_#Rz_zA2nKTTXa!?CNwh=@&{|X*l8v{Ex=5mjgb1s+ND$ zyS)OKtjCT-I+O}Kf6fmi;TNp3X5qwt`0xRE6nuecFvkP-_CHYua|9psF)Q3Y<&Pvy zF7~eLR>+qGH_l9ZiGadmIqRqOXqt~~${u3n)+!2m77zgP#VFcw4 z5j&Xunw9vjY_2ZOP%^N7=;?Y_s3x@EaO{-t)gLCu1hE;!M8vgckdsXW%^x_9OMEyI zaUnCY4@fjwL$$82rkrz2JQFk(isc?{kd>OTE+W9%=s) z>_hWeWK6=|T#PD6!J57@E5^QGqV}JI(%M9$we3~;V&GX{WY^FPa=nL<=faK2!GC+s2aY8rgpA+MqLSTeZn;yG9#zbq^kY36a?!9ZuhT_~&)~*^*j4u1;e4T!*RBpN|x&{x8D-wZ2I^5FLW<_GUe3$y!`F`AA zuK{m({rx7#Z#RsUrZ zA1P|9I$vbWdYxffNz$9G)UIXk^;u*)7o`xTMFx&sE28^{gWMYOAF@2o|CR>0djU!o zzA2#E@E4-FnV6r?u(AU>zT!+++c!a0OEkbc{6G9uG+fmGp*VW|zrO1K{MZw3@ah6* zBA|9ai9r?93Hw3_{*Y2hhT9b28L$DQKac_ukC@J#7-%v7Llzg5OF~f84Gchgmwi7E z_}1XEV**7R5X z01O`t+3+aiLZP+iwGw?aW(7YjwOEWhxDKTPs8%&2=;)1l%%zAC$-SSAJdP~!U6ROX z(y(%6D~dpXBN3cXbelBXUkE+cryZQ{!8pt_nY1Si#tH8lTx-mL5ep3DGT0`7HmBko za^zonxVRRqEKO#7WK_MI+=t@Fn&JR*MQuk9aE#Pp^`=!GShwAAJTOXs`U@4w3w9sn z-a{;gWg`hoLi)EMmaPtBcLER#QZIczWoP5b8pEdqHu)0JYe*5_FEDT-@1cUq(f1VR zORAwP>MXhuYuis2SRAEeWj?Hdi1jJ`rzzS5N2^1~1tIaFY7z>Gnr-u2pn}rT%r23e z=?9Ey{~MCV(f&|yP(&hB3A;b5<56HCC2Rr#Ig;4A1`-4*vD-_I!!L?ODMtICN*_VQ zRm?cF3-UneXh1OkET4mQLP0_r3^FaGU*RDhFI^4H#CIsZCUf>EeR8++IT|_zy0X_b zEo^=!&$F4YZzhcojO!I9CrwnhRW0%w4vp8%D-H@qMhZqg8BZVGd`jt}q}SIF9dYg1 z1DrqZ`~#CtF9)7st@t3L@0?vm4kYoymSk^K{Py`WFMIhpY=+06J$(Kbu)Ihq@_V$f^R2Ca0$}W!-IKOxG?<~w(da9%c>;T05rKJ z8W41@-bA}9?KX@ab;rw$PMC#1Qs6zrhJ_ZTW7wgR>M$aZ*P54kD!4eJKe9M}k9QQk ze!b)$UpMSE64hWqK>@73RN#v)#5Oq0-_zIeduE@DDojh){vOnj0=yXcztfV01qbU0 z#A_QFW2_a{exY?|yh2pY5=kekE;I9eF73;d5DfgMXJg9a zy=~&7%iP|&17qxE(o#}sTHx@7+Y<*=X02wQn3xzU+fqWePB5qeO|7vDwVMf%ru$1h zu}2fp2&*^}^J*^_LZDF|2{!6U)&pr)tplM~ua=(P3?2f!p~+F!=@nRF%F zGuB=X{v95==2ie&naGE{FJE9?$Uk`}lAUH|<82v^zfZ6r7P;EA)1#J|1K?q?f0K1b z(4{9~BY8TGqh>7=I@+qni_nW%3{ry>Cw+5sCdFb33X0yy%KMj*!B@;o@B2I_6&WUg z;>dW0HGu8DgN&l|(55!9Spso)N!Km6x4J-VA-NDtxq9BNfIv)MTAHT~CT%4gX>hjb zThnqGe!=|?c&n_etTEFxaUlyZNiw)MTnoHM7Lh1s?i&nno^^Y za~i*a1uDHO8B6G;mTP`=qME7k ze3KiWQm!)=XEvPv&bz&H1gAiMqOPtE4CiimA)Hjk>3EH^I2&L57Ym5XEv#84-sfgz zjjW|Smpq5fwj)~&pJR{96^}t>`{~rn{hSnOAQjzKI|O3#!qr1gP69oI0m6lfddxaV zZqOw!{qbD3s?K_BL%Mh@6^(Fu0BUyYo6`37-cdEzKg_)u@vPas)m95=#Wiv?pB#Z} z-iv#v*mz3tvGHI;H9r)WN}{;7;q~_O9e?4hrgOsK6ogAez8tc@1y-$V zPiQGD>u z6Ud5V$L+A(Kq#J(s?>aZK6c)taT$foX?!%j?S2HY<>}8$P=~<_v6ctz3g)Moyss9z ztAXE}YzOK|mft*JHC|Lqtnr}0!s^%DhUNjM+oQoLHrl*xquVV37FJfQ>%rf~Y`=X| zd6P03(aq(2KveW_HWP*Vs%He{}mdOqoOj2V`Hm``1qAV$J6}n|Hm}9gXKKpfZT{&CX3)e=n`ZcSMuICIrdA6y1!vYm}Jm)?Mu)LJny>`50ZJtxf@Sj z=tlOKXM;eI!85sBuPaxE(3TsDlULx?*tgaF>3(UC8P0Hg6aSPQ>yfV7O8+9%hho=R zdHr7Z`uU-73>CPrq94_)r1U6~hOoRF=;jrTSC><}%cNR)dwdDyR`!;1)Y8+tT~>R0 zd&=tCiW55Ky}Wt1lsw1;}CaiRG&ug=#?OaEE&QnQ1y&Kqs4 z5z^L^vrWjI;BaVSWHkT9vq;J3>sLPcbk$qRA~DICI0wVB_P4QiW8iB^L?v_dv}r;F z2EMT1Giy@~FwS6aKW`7&opRwQnwVqCI0@Q&l#XpciZz!c*=bVED)pt_WR&T$KY?={ z3|6-eL+tn0G~V&JdJUh$-h}bYqkx6eKmC>z=Qr0ynWiNYJlw%{Rjd*=Yzf%?Zt0b( zcIyl%-5-t;%v2s@_v`S|gwo_~(dyy!A4h6`vgT2sRAz3FKEGUVybQihJ+_ASL`3?w zr=j(ync)(@o2=1^v+Y*op?OFWUoYPDGcYUEgUpvc%?@@zj&(pQ=L@2+5U2n{?8b@> zfvH%cm$Q8XTl_%Qvrm{m!@?Y&;uO-u6ejhb6{;o_hdiFjs9>90!BLCdK7(&W^CI3& zY%u(QAyO~KI1s1TV}kKx!fplz1%YaJ7vM^UV`XH4x+WHr`9S=AoqK0yUbEi>M^ZSJyup#HNlu` z0)W7w_ttNh-|OMG@Y1YbwcHPUP4qsBjagffn}Dk)xYK&J&rYDgy0xUFWC-KNxdy+< z&rVfN8huML#(@KL|4|UcL9FZASvPBr9I7P(4L+j9{KbntXvlz0ILog$m0;bI<rBJs+ZB`$q)2&USBIF8%l~}$hHG!Gr$J+ zUT~6d#MObn;Tz!YNZ-i{vGHBY5-x-(X8 zgx{f-@YQ^pZP@U1P@V$Ak zN-A&36Gm*lW(Nx+s;a8y=34{qhwQiGw0#Ee-@hNieUpbQzQ2jNZU>2QYxZpB2q=XM zrwQ0$k}|SN>!rqv2aD|tsFhopQ!-k&{^0&o4q{b9=ZJ*)p|g&^>CTj zO^Nx%<{C}F4%81x_7g^6UG%HE7lZD%CP4}D_}%_r#gBPT%RY`vz)sc-G_&IYYN@ZT zO8$&_0RQb2=LlF8@o4+t>-JaJuA8(3YIB~bJw|`!{Tnyd56YFOdY}2nImi+OrMA3ZZ%%HZxFrb5MIc< z4*xHcgsk?a3f>+q{nLOhJviOYIVsVye1STzjEo-1*Ti((-<6t5c>1kiNc=f$%#7+g zMLr!^I`D}*jD9IZaRDRv==g<5$EV~!XMmip+k0bR`L4Q-&H@BTeRm`t*W(>}Xa{6S z_C7ipa|XJ1z5Sg3m93JdURdz!sy+$J*unG<#jIGf@3SiKKiVGT237gMYw{C%cbi9cL<9aGH z!xGE&NUG=4_`5 zH8`TM?ne^gQanwjNhA!504P{a?(;GnFo@AeL0*4$ZPWV;^Xp5H<@UtCcPCDcXM8gN{;I1J zz(>YMx0tLfsHqu`MORf(DP93}VptV*ahLXm)u($LhBy@pZ{KdsHqH_WgK-3sg+#`j ztdk!;KE6LD3B)A$kCjl%R5=4cC;$3&iNm%!xEjDy*cS%T7<64|@U?YxP6BQ~*AF_| zSnFk{s1yN3I-lxkA3yFcS@C#7jMt1rmAkpQsh*7iRoKmn%F2OLH;@q(97PzeY!!tfXycE=9(4n- zlp!Fx9>4__;{nvv_#o)o#7%{p3|>N{O3aRC_V!%sokW4Y(YjR?6#(DNi%58bQhrcy zaA2O*5>UkP>7v!yg*f)fZ+TP74**!%d-J)wyAbEx5)@9LFO!x6z)Cma-Mhb5g;4(T zaB+UES^`rO#otE&QgT=h=VXM4j^|2>1KG{X)6qs1w-=hHBGHtH_EI)mTB`Tpdgbqh z#bef`NEJ#Dw^CA4vbE(nHNg{?`C3xKNiunkbVwyCXO(}a zuPx=-^hKY8iHS+Pk0;Tv-TiPJ{+2hg-$_Z&!?_&n?06U6)uw3HZ|M0XSVUU|h29uI?kE_}v?K^4rd<%qVBHr zi5@qQNxLE$ktWC9QXVOi?>5g!BMP?9>KNkCh9Abb=dSS#uUYi*{0 zox7dAZ@wmsO02qhU{RTnknklhFECf6SognJKxm)jn>eKe`VcTSv5jvG3=F)Jb_qWR zi3^A+>7ya!pz;~-lNFCCf)slCpl`7cnC_I(?ZqH(`urK)j70J~c2f${;uT0FYKIJn z_rcjI(F4@Mo^IDiGS4U#^IonI3RBvSfz-UUb!lb|h-cCAGCh2VhJm5o7X!n@ag$1@ zR)mCv=;`S}1qO^5)x76MLS`XKf^Go%At2`8BpXyf7N+@~f`YGDG+#K7%|hrNIc$geowkSi6%5{xb?dxy~>i~WEcjK6bhK80a9{KCSmdkP^o?9pDgF#W! z7Y#@C+lZpl%*^cH&tW`y@&plxG+xa~&zJA-gI<7&+w-g6ps4CG=fd^xhwg$49^$f4 zlpm21--&zmY6tKaRkxu31m>X*fSSx_D>3~K)kBa#l5JzsU`+YH|B)OaiNKFdTD|5k zyiv){LDjf7y)Ead{Z<1X4;Od-lvbGHG-+pN=kU;;9!Fe4;_$TTA9ubRRC0tUDCV=G zUrL~OdwWB3vAYcHR)RZs)U3N`V6*V*EL~k;4F7t0utzx~6H{SD#ZSD9SsZ-);juBp zn@E?4i2Ltc@`J8AII)2me2e&yp{@!Y}5}Q zb`})p^3u@wMpaZ)ynFZV@38=3g~)6BUSu4GgMhKY8Jg!~V`OB6v{Rs)6gt^i4A|O_ zH+!3)Hz6i=)i^9K28NI(^XX##`UVDyfd6bjDOvjOQS*Gg@xUuAFtEum@}1mbf4}Uu zF9`{WiLvpNL}gW#qJlysH`OoQ0aPr~2VV;d3ng*^={)X!)TKsDOe~d&a2#+ww$xZg zm_op=@-<#HFDxu92^*+pg&?bLjI0?B;e+HfkoR@2g%%bRa8i}%n)0x*;rY*0S)|5x z#bb13TY`X-lT*#cKc#$9JuJmE^bj2#oxMMQP_W6SzJIrt@+!>F&(F)#@r)baQysk| znJ$HyCybt6GYAU0!3+ir9Ad=~+*F7KUGs-tFtD&NG*kllNH}hIcz9@8^|9Nlt79e$ zj|a1FNrJeDqN1XbQe148jg8Il_wR8dtphW+{=NVjt|b{TeteCINuhjzthmL=q9{#2Y9bxUK0}&kcz9{+I?%!O;?53M=P5I1A!1e@DFK` ze)ji(Q-s}kvg~9t!g@1m+DIpGAu=v5uDxA?9>>xvXN3>(YbibLpD1)J2EUmiWBzvw zT3=IL8~9J1_N(>D|GffxuTzR$jwAUY^?Z?T*-kiSdfpudh#*R0J##i}(y$w90VRVD zj5}eqwA8MZ=e$M+^va(DI(Y;tClGs;u74^n-T|$ZuD(7!N6;RDcBdJ@M!f@zUJP_> z?4$FbdT#|=aqe|kb4QpOv(IfW?=;YnCf9>JUzj4)j@9fQm*+`Iq$^a-{x2G?F3%8l z&hv)*pajbd+w~#m0grp;2WY6M77$vmW@Z;K0Ai`sxcIFI_R4Nh8Kk%!DzEQUgYaWS5P??RiXzm{$}rKyoz7S5 zNd}{U+i`vKXFfAWKAC0Q7!<9$K{r$a%*Pr%gy$cQ+vw^pLYfAx1a|=QI@;Uap$o1E zbC9C(xZF!ELjeM2PY0BTkn?D0X;u7DpZx~4btr(^K6Qege|sD`h>0VbEW~I4#+r~_ zLyADaglNF?XDSPQYaQJIKn?T{AF`aGkS8W45;Cb7qC*eX1eNrVAk0P)xC@aZbQm(W zd|*0Zo^3-nU24-re!1g6HHCfa7Ckew$Db}bpupQ0Oqc*Z58n^R%XIy7P`y0^Pmb!J z;jxJ9j>czm0xRA>FgxdptrpnrTEAa zNYt>J5v+EE$%54PSlhllCXs;L{W!hrN9{WbLB`0k5^z_U85wEs^e1!fJP7N6=r=|R zG4<1@PauLDH+;}0?OPa;HVX|J2p?l&VKFf=aaq(r|1iW4hn19=lz6Gxe+T;p9~~WP z4Mi-BJDDk)884fgMRVwpD1FWC?d*0L+hbBwg+Um6qpw2L_;`H4y?quWK|u3EI)xzP zBji-_y-z6ZnJ?OJA^Z(y6JN9j6KB-C37%&q~a0n4J{2%E}(K{;8DDZi;Jt4;aG?>K=bR%27vuEo(NqOs40!D%^Qf> zbkRa}$f-5(?D3*MWKDdm?Vbg-Z9l?JILc62X3HixR$RQ!1g=sW>09Farz?+W^g zp{0J#&u=AMSXdysY{GW;)WKD!R6ibp1CCnmr&TIK`FmKFKU9Q}zB%z~bM`Xynl;4i zWd}`^tlyw@-5L=T6vRR;5QTA44T_C0?tD!l6g24ufWGbNw6@P;Y45%lD%nm+6P08b z^?|Nvf~4cKy&cA>Es)gVx@lRFkU(69)>_Cj3(gg4CQ3kTfC(&!4uz$Er@p%q+j#yd zR*zdgG8f^c(D4&7CLEoJTZHRSu~8ix@S(>KP`Jv5h7`-#qyvY>v-_Oe#aaS#{f>ov zuf(iZMH5FgJnn~Y*jFH2BLo>4e7h=@Q+3-p;+&N>8S-=%c)F zW63t*{_jEYT;0xcKNGtq==SXCNLBUEZ=A@A3>;A#vub%zRjl5J^3F8_+S)onGR`LV zYWZ+mZQc;4{UOOAlhy!NV*aL|Zwu8 zTm*Pw86nv@s2SrweuxhSyot|+q-ORt>==gr==z7-SC`x3;jZFDMvN2UH%u@r1x5Bv z?rK5bsl?`0c*IxFT>D5~QSk`SKZi3D>AOkyezp!!7gbGJ_eheviF;0LZtq#XD!eW; z8zsmEbNX3l6-M>DG0i}JHV~zrEY-1iY^%OwUP&0sWcsM*GMx-xLQ>MEPv@islC=y_ zdQCMiBDjYgs|d6~V3Wqwu#%r2xli-U+?-~q!G{DcODz!$S@{<<)!TrGnvM&r<`))b zQ`7gwD(HTzGs068r;T4`#;p8%IPE~ulV&UfzwXE`q-Bd{*H5;`M;LeA?<+R(b${X$62vMwkW*|W_)WoU z{ocySJ;8am@jj`L!5(&wnW~Zvra2hF5P6_0=PtsW^P}psEK+Q9Gcy`IE*%yN;$Gq{ zqYB&F;ybh^k}vxX!u5_cmotgDCf6xRM!%rIr10dusTYD^vwi}p)`1iQwk+XFz&?~mLH*aWG*c_S{3C@Ylwy^i#b`XL)SL*Jh1 zz`)sl9uHdtvsWacDJ)vv%zKn(n_VXL3=C{RZrVwak&)RfUK}mZ`iuxy5qj|{SDW~n z8qyEO(M*6kPf5KAq3&%L(9{IckaQx@+wTIUduwZJ$k+XpmU^P58}*{2tbzrU1Jk9A zg1^O~^kDn}t{!5ZNf-M$!hQYyv?~kh!lLrfA9?{_q3ezk*m8k*f~cPzSoxsuwpG5U zx^a0q>Txj&xbfxa)u~1{%guXY)d3E$FY)tpR4&dog}m!el*tCb(_iu~-N~ta`trx< zsK1ZTgQe_SY-K%=La$Hl8d%$6ysL!?HbUHq%7EiLpFkaR?U50b%K_2=->H?UPeu0N zRi%;;TXtt>XOE33NfrU8qbI7eyxg*B?(JAlvvzxVDB7XR>={`u3w@GZ&lj%Qgv~bR zODK$bySdYOHp`Jhl_?i?_0?mh`H6JeKOz!;xbS5hk{a%iA1K9#3brZ_s6XDAagX?3V-YRv$yxi(?7i!#&CS@ z?b9}-0XIIVN^mW_`Y#r+13iH=6d?!~AXuRfBNt9#LudjaCYa@IZEaJrjlhZslt!?j z60Rm2FA{Sj_Hoa~L7<+~hMQb@WkmRTL9BgLr8>9|y|IHd2?C^HxpD98><+*}sKw3I zT2jRwY^4%rlhT!M#6TUQU&D}^j`wR4f)p>PwSV~0Q>pokJf5kf*dCD9ziBT)?#^h0J?ku z&I!#}Z@gQ30RjaixjiQrXTj=mR$cBOztk9bec5%~cX;)&>&^>oF9j|%zEBQkk0(Sx z6mmk+Ny2+w=DG~^U3X89SVDYI9@?+Hl$eW%Df>w?wfI34ytnKqu{0q$O)>W^GK*JI zJ%md8tr;~M&Qn~rngSmow5U|=h36m}l}$R~^13K1RiZ7_d>8pp^Ys`AVv&yQ>Er6c zr$gZaRk3zASfpDO{8#Y6r^StWzkmH+pAZ6wNE8~Jq2I74uqx@8X)_l9;kzJ&*2pNl z^E)IX*ioSps?ZcVKgDr+X=0K`Bi=|sOPf8~7;n>3*WJpe9hY-uK2<$*PC7^+^AL=R z9}F`S?8&7&biR1TwEMbQb2PS+#Tr(<&yKboNIZ`BzvgB?%bG|j*u1+}9SA)xw0}<6 zezotEXg%Oq4X!qxFELlmy7TK)qf|qM3wRLo*Hy|KrR_?^?VVC_wVMy4(6V09Av!NS!=Y^+zZ)u~_!0ehyk#2kRiQrq{`gIJ-Cyg?AmX%I$!OkG zdB@{})4?0?2N6palj5tR51{ zNqP+q4#K?xBsaaje!6BL1vq04TT`Gr7MEBsjYmpqnqp_1;zdkIh)|P^BedH6=;ZSo z8aU7z<8<7a6B`-9M@GfEjgHPb@Ny}Ixol1+t=VJ#<_K4<4*?n_6;-mLJ_2?4SnW|X` z_!!Vg6_&B$|FHrGupjn-!+rlQr_z7#ce+BSphgYKB1$3tXF4vfnBGKR&Ru&zgUzT8 z^=V#tj&N~u*7S`EXpHO?Xu>;#Pp(9viF6+qHxgKEo*C)49|S)vV#cS;S5Q!pGO)9& zn2i4TYheMJ_}Z^uKO66_4gqIY!~Nt_SKMoZ4?rC9^(4xJ^wkWwHuUs3R(k{|`@r$7 zem|fHnQ3ixwX?79J~*9}WePBg7lEix5ar86u28AOa5UCv5YNYZWS}k+jI*+`l3Djd z02+uGEMfg~aHNa0JHIzTD|7`bp!c|#d37W{0Ba!QaeK6P<{YT{Qs2zMBW@{WNvY5c zyu?&|rG{3*UlOg9(b&A(RM+#$4MANdz^Cdfgu}hu3}433 z7EC8W-aaM#9+zCOuFYXv6sysV1YTJ%u=+-#)Bb~q)+JlC2dg>RZ%FnzlS(<-v}Ex^ zzo}uVo~@)l$_TRsbwFwLnb0`2U$i{@#!EI2BHg6fTk&DRm&lWmf~XeysDqzmh3UrH z)iy1wEw?10K*5m=bKkv#b?yjlrFh-Pk01M`Wc>j$t*$_i;o-!)O-D@~mx_IQtA^7+ zS?8z7#Pr~xrutQnlusN^LiZ4DQec$ePkdtH=Xr*K=si~2ris-F(r9H5vdd6^vYAFn zcWd^l-L`z!Bm=xLG3kAaG0YtndtT{%7pzPCu-m3Q_2h`l{Q3b4()7ec&{-HMFP9_R#Kg8<1(cyI=3z}PY9Q1Bl>b05W2l#9M`4O z(9Iz#x$IJjB1dk5EG+z4o?=}I>9iCV_c@WO@M(>6-Zsyb7j`O+R>wz2ID3xqGcjR3 zx`IXr;y@ciHu#Fkx#V`(R^P_Pc1W?5R2Z{-+3+-ZcXwA!+7+6B+d992IPl;T)1yZv z;*CD{zwL|Tb=+P45_k0iF|Z4udhvi;m$kEyBQtTw6KK$^X-@1>BK^L#H>8Aio-JlFC^3y+2cZe%N z4-wXX`;z%%!(~cg3jh1bN6UQ}#4A_o7QL&z+tnTzz67b{8F!(C7B)5%(T`j;;l zcKTaRPEJx>vW;Nrow6)l21viZ2pG5|eo7OlU=5@>rPntoYh^_vkqwuDMF^`qXp{k) zZ7vdFw8tF8q1RExO#-5M+rHjx&z{WF;NC+2+WDn#0LSeSxp9l!Lw6x+n1OjYFX)Jh zdQY;~xy9EuMh9HJ=Sqc#ZjPSz?v+BLBZj{NpIQF3p#qwtjNz<3c5!lEO&!Ez5Dm~F zJs|vN1oQtmla=LxPJsnL1;iY3m7wEWIGXQjDgqfp2tMptf#@!vAY(A*)(mu)fdcx; z6R#2ju5mbJl@_xzKYtPs6Z3%?2b4MTAPMURb4aKy?Oa@H2_7`Jv>+@aoDYndnFaeG z&Ivf~K&K5DTc6FBGGjstn7;)bhBJDC-0Ro7pdgmek?LS?@9acby^4+S z7Ck@SHMDYaI)V8tlvlJeahfTt78nm=9n18DGYkQcL^z0wg)e8)!N?6^y@Y65W&t-} zrOEmT9Rj#9WYC1&Y;JDu)T=U^TwZ0X43YtjJV2u3J9-^#ZQ}^pcVmz5*6Tl3^uj_% z4-5~7)`-vpI2=T2A`s_HO-*%ls1A6116?FT?%@&;{2Uzo79zkn<#L@pGbZM4H%vNU zWQ)+J2K`GZ4|(}$_RO@jwANPf_FM;&!0BT9bqIoTQl@D(X8qsAk?>(e9s6Q(6@_IHeUPu|hfOG*+ zxoW+hyXAHuiT%OI+`PZPUqT5o$a6D5uY7%d3%H;h27`6YIupT8)|+w0@b$cji;60R zje_4#d{ME*q}irROWDA-RZ^Al>}k$t zV>oVZZuPm>b3fhNYJfEWAuQ1Aj@J*X&Yuhc-+=&bsv`iO%27M?BsMG%OcpA<-twnU zpWc}NKo0f^9=~Ede@%X;~N^YpY~t-I7p4}UsY8lkG#vigurD{ zSd5l?WQejAKBO!3)AzkLK72`Oyn-4jSfN&12xVUY;w|n3hVDhyo;<`o>h5CJqqxA= z<>>W;u|5`qYGnxZJu{dMN6G6$s9P-}qUD7N{#}xCNH@|IP)6E+_0aq*;f+1v82^}y z%N}Sdy-0mebp>tAHAG?o6c_s)qR!39$?Cu`?)pp{e(D+P5Mp*7slm_@|B$Zdyq%7*%bdQ0Lup{WhE!2?^)VpcW#YowkR99@9zFy+pD%jCdFB8`IA+Of z!T?v_6BFqF{Z;BWCf)>mf#nQB3JF~pdTEo{KPe5yA4nBW9Z&CHA1$H_l`uHk7;o`? z`}*~30MYhD&Ej!lX+p{P?eiPAxhX`mBSGu>fssCwS|g~6KW1l-&aY2T_woZfQ)LcM z<5)&jeb;Ftk(Z31%Qb)N34{gOc$|z>k;lu^Dz5%#2mLQ|T~lkfqa$7cUnWs?u{!uf zIc`J-i$oA9knhpR}vRV;l+gqOz1RFhs6J{yO=n z$DF-n0B7dcF%_aofZeB6!9^zk{tIc+W@j`1iv@%|iU23FvQgWKW1$&O1=K7e_4DJ1 z#uxiDh7lU;w&3GNeFd`lF!~dJ8i$(l> zeJRM@1*gh$bB*AF#S}C`#OAQ*`rQ^?IJBE9p99lOnE88$LpO=A_Ec3(r123hUJ(}; z-+)~^c)8`|2Z-Zh<%6CjLW0a?k$o^NY^kOfZ~)VG8g9;t8*FA;TONhKn2z9zHaLhQ_dbeX_Ij)5A)@_u)Q*Z}%%+8;&Au znE0j(%(9g>GywB~EPb}tp@>HIP4#(8%h*vl38|{3((0P8D?DUzP4qYs{0SIve2j@9 zBG5DWOhNd!99WDriN_i)mt-3nd*E-;CVpyWIxd8eD z>GlyX1o4S7ptpYh{28{YpqsL^{^SJpVnAppO)7193YQu2VI6o0(Hbzt;a|6Z@gkH) zR#Qb)b=&|3vAubEGvyK9Z4V?hcv1F#9EiE)=5P_OZD7;t`{5|a&X z)2@%XuZgf{+oL60wt%f3JheA(d=9kRfkV>W)%A#pX{!>iJ8g70=cU6}%Q(Jw6y;pe zFjS4J=4;Z2L1yb@NJkwwrZHMIx9E{ny=pca3uR@O-d7w`QnRyh3F1eYkVDkfSZ*g& zqAe^W?7cNRz;dExhioijYikS0O$|lxGj1*}%G!`BXK6@JL?Wf{O`+u#zv#EP+f^VL zMrwqvrJT*~>1;(xA9rPlD6DuM-;hYFv3VX4>=q@M$V93;AY?x;qMEE0f6oP;v`m1Q zs(mE^{wjMMs80hFvGIy=32t(pE@Du#q_laYm3|#{riR1`+zho%! z(>oWiE|5SrmQfTC7`WD!X#3Synrf8J8`28SuU2YAta7`$gSBlt;TR??W5=}thUcKl z4n>nhG9!P4I(QELhdtn!-gs+2QXifJ@Zz+zw16{_!dvz4qnanJBAFeKS|eT+qHG{p z9)hw2Z}xv>HBRG@k|yab)SW|8iVBxpRp5u`1--vu68Fy|bYNziTQnNrwgaoh>R0P7 ztl`~bZFVAz+P+;@f<;n!XEL}z|33e|HutK1)y6cRK!!^-^zR0UDiWoa8RCPW;Ph+w zvQcSiX;1%HZx0T>y3IyQ+x~}$!wm+w9aD+Fm3g6`E7VZ}9+r=OB1DbeL~dp}x{g2o zh9v97TGA!;W5(0&J;xB%4)@J8<`>LGhzei!f{4H;c<$FS$Z;`-FqJf+wAJf*{_I)c zWYt5gU-zIC{{CHiMkRc2bG9+{c2QXwyMO?x3m7v|K8NGU5pJ(Vz0`;QkcdpcvG^p2 zO=farM1Nc;==STEVq))4wCI__{N()FhR|EsvSj>@|I)_no#4(XB*kS^(xkdROT zr8@;4Qlz8=K>-y|8bm}uMLFyAemImoYKw{4?y7pdYjCJjqy((}=bA zCn}fA*BZk_ouTQ@`(z=sTx+QRF#GeTqfo!r}(wv8BRdqwp)983O{^M$xUjnRE-akT~f{1$ms0UoF(s5*V4LN*ql8N%|c=G zPCKa4cyU)PN1~$%nhx&;ZeQtAzgAildQ&U7w;w8zhE5Irek)-0YR1 z3)b`Hzx1t5t+{su%(%sG3`ld)aW7&ST+7kty+H8fjpeiRc2@^k0(VL#^ft-yb>Gf)W|sw zXcFG)`w;xTRoJ`$o$JA|E+=0$8bQ5xHqB@_o}p9^mSxEot)bOJn=N>q3u%UTGA7U0 zH+ULLs5(-$@5ETjXQKrTdm6M6mfY(4OvMvnwc`Kjv7Ml_Zpkt|CS;5@QCX7hJMD>& zIC@_@aWasGkWuSjAop51<_9ai+h~yqCt`p|%0Bz%ZRv_w9dQ z*MWaeaLa|;#&oJM;eL`ektcl!30+8p3FYcf{GVcE2~cQ`(0^a0$oWK z@tkgrHSd?}J%vS-&@_sHruMz^8dtwwVNJD1SIhB5F&^iogL@?5J~P8d!J5OZKu(;` zinmC~bn`!bdj6b_uh~)4ob0GgjXp@LkYqm2#(J2^^^38Di16<*zKIQ6@w*g-{tp%kqdomF+J<+6H6E|I``MMfLB=$1jQ@I3;-#TT zb)lQams<{YEv44q-48;XrrT|fP_hrJ&RZ;Jw&H#qX7$M>v!Z)=k9?W63&xJsypfA< zX2dMZ2&@i!lC1QsP)R;00)h952PthNBN8(=?ue0YddCnA5_Xqe-ATrxW+Aj#ihk8q z@ZD-Jau>QFofv+lCZNBPh>cYs*c6!5l;HUmtYA?3+@dPl3x9+1#6Hxrqg1JxW^|8O zEdIp{70Y;Bt7n?wt}IgHay}t(P!>V-iKpG{ApOeyBTK_)F}D7*Fm;XI>*F490gGG4 zH4XJ!k=vQrgWtdL<;?I(MZUrwP1@uwG<5CkcEtWni*wPBbNZst9Nh!#{pxyC9vd?U zo^#LHH|8IrIgwxHe0?{y{TezI)$2K)1^jl2ykYerh823}Td)IbJrxTYWvDUJzPCQU z{Jz!GIBE2JU>yVA(@i_N^fmjJoA?+ zhKDfwYt*$n5499~iYLv?=pIm8*=edZs~bH+(JkA`aJPl()-1BP44aa{WEiFA@s;R@ z1O%jW{I(6J$9+0{Ge@!5hQhyu*xe){68l-A^xnGj>kNDY@5rc*o3$njq;35k9c#Dh z$dP;)-dMvMD1v(aSxHzH#gIk0?XTN$>mZ{vd^GORCupsiNzoK$9p=A{OBJPS=@CXk=uT!B;%cs7m;!dL;7a`>~ z=nv^=jUgbd6R9CK0sG|WYeB)8`FT5DeCaE7>1Gr;iQI3wC$gGw6WRp)@8HE->%lWo z&{QC4on=DusWT-=>F36F?m4~S`GhIGFfaF=HQmnA{Rf1t37C}k@?Lhlcrsg>Jsayo z8I=$lTc>99%TV(0F7P6gcNKc8L8so&7lH?B?Z?SemNqY862ePOCe5)h;Hp7aV{c^R z1%i3Zmp^ZppX2F&E?To8auOjYY@X6MOISi?xH|imw?myXU0I~nN|qq0fUeei!8n@M z-j>@dKBj*B+>fViNfkwg07F>__0euM+BG4it6dpt|CB7-#a^8;T7Or_ke{DK8#34V zw=3D}R-E_6|D3yQ-9sp?*r{i8)LHLLOqHO&U~;jzOr)~_C0DGCxU7afay~nkfqG-Q zku6g9`Iq8Hfmj}-c@z7uISR%T&qXe>1V@(3`tnVZMhde{yu4`jg>?Vh@Pm{~D?fNr zd_OuA#NYdxjrmM_(75J8tBv9y4?6Q;_BxMDW3vkpLvh_tf{j%c>Ga>9vc@=8N|P2{ zJX&4)2-2#B#`#kg<~QnZj4r@MuSTlyHIo|#>O0t8vw~gCs!}ci0_*;_7g6tby&6%8 zp9VYDd@oMUr0m=ezxTD7Sn|Vfj4ITtg(Ote-S_j=r)mQPKY!!YFm3q^?D;~6^E3~n znrHR)|AqHv=Z!*cc6J(c4Dj&q=B>TFc3{9Q=euRIEhHgPUR2};&Oq6!QgL`$fq-yj z&$eDq7`lbqsL%!$aq)W)qyn}7KLxQEI@K?DOF$WVXy5})@bvWbCkiA?GD(g&M0B=v z)?EM53$Tf%J&u8KRW#GMz*)6?ND>kNR#|C~_r}eDa0}#S%*6r5#`J-j&pO$mRoR#g z&r(*GXLbQ8At0ttsXu>BON$5}|6M@=3KTa#FLux<{>si~f5*+kGg=c=qbtuZXVr*{ zt#R#I`W`7Kj37a94lT;`tvvZ%P;1^KSw$Ym#!im2V0h{Eo7dhZKXd6c@57u9yw+8t zw~!adG$so>7%KFo{E2q6b8}x84cS16sJOV8iMr5bAbiV6U%#mZP(`zpu`1s1Q0wjA z-`|JJdYL?H6`v)abQ)x0rESvTtxpw@D5)SgOQRl{2mx2lGdnb zIQ=wiq8|FaBqh1}HJQOvB?l-p9bt$zL2~P{PW;W+t)L);$;r=8j`6lp9)W>@@Nj>N zu5uRal=c?9ua3>Y^5B(DMvyA3+C$Nz6f`q)kph%dl$0#`dEY@c*E2JkjzX-uXreg9u~&9o0E7+n0WI63i1iq;j; zUKne-2aW&zC~*pUisP(737!M~N5!_r^2Jdusb;j=;)Eu?@Yly|&atb0qm7*xlCtU8 znIv_?lS19ds-UL12a}?JRy^>LMD4QnItabUEY(z##cYPJPdQUdsNPx8 zL1rj`eWCePI$ftiB9X47`Q0epN4Cc?|D6-F~PXZ0QHbGk@0A#OR z&_aRf%piTw+9Z&3RY%D&7 zwdWA#n^ZuX2bdu#yvf3v^{TU@UJJGNKH3XAvx)C9ZYT>%l zNE{+dv5L#ogorYZoGN(}b1296>@b<$=Xmz?BU}2o-OOuQ z`s+HP=L>CXi~X-(_}nVQ;quK^)DN~cOueGvpENKgUCK?H-YLAW3Vj1Rk1dOn>CduV zkz-#Z5DENQ| zTx?6f3S`y37Cxoa94pr)tMsg0Im z>vfQ76TcP1|5d9)%}8ZPvsH^&7V@DGIYaTPFSG)pKb;*;jd%*Abaw)s2T$wb$jp0k z4x_ph7Pz=4M61y){oTuG=sj$@3{Iw za1g2s0+(~qoLSB9x{7$98!&WVyWkOM4i<43=d=gx z#<&Jp!{`v^TL`15YCzCqwiP%D|DAx9(1Tbz42xQR!ZcX+^D3AvUIjjUdjS47#H0VA zc4`pA15=P0Mik&%-vWJq82Wo1q16d!86YBUN^Cd?2TxPomE z>E_Nj*v%fCE~1;l9YR%I%NQrURz8EM7*LNu-8m2Hu^@rvMVZDS)$=J%-9TRhDM7*E&%i$}#dii>!77aUvX}#- zfTg7+;5d=}zC81m!f;_8@9Qx%OU?WiFIMmVECq0LcopLf?|R2v7tVAq@|mFB_vR1+ zya!^&>EeVSb#{MnJb>i>82J2FR#xThbMH^LgHE10oy!x0j_j%KV5#BWQ;Ib(xm3?h zEP!Q2bnz?a(SlWvonnDFs`_9a0Yi9qr;4w`AXKCaSsVxJc0S-iL;OCsKNyAE0Py!s z&Yu=!maGvt8>^o)c{ykiM)p2bkEV)y}lm(=Ny9# zaYYhxAU90mi#7*STqtbi=VZBQxm`|3Zmaz=Z4pEZc2cG^y-`qUTG`nX+E>Hv%GL#e zQ-f|Pj$Jxh)?B!>=@vzGMX6s3e z?}OQ>XbC7RZt%jJ$3Y7S-_LpT=0<9b%O6O!{?hPp3Zy74b#k5>rMYkxv@0uci%hy;M* z)1AfT2_clBM+6go%O60{CHn2CJ_(%|!zAptUXq`QaYqQaz#2X!;K?pq8gdz$m~^W3 zNDWINcAC`M^8iV(5i*nyha3SmjKAwjlWTcG!j%g<=={^bd{WCuPmZeIDswq{J@reQ zBSy<(c^+^Oa;tbmL`_#JNUI>$dEW>0yqQUPt8fBtSc`tDtQ`A{&R#rU_9)?a-7W{( zX}SB6;l^^opZgW(odS;(_G4ZZPx1y@TCz~HNXYUmAl{VacArxapLE<-{v%77!-UT^ zm#=Qr@d7(V+liLLdN04_v+Tel*^()I7c&s|(Cu}(2KF2F*a;b)WA6{hM%=2b3IPk! z69>x#0&c~~k*t#xhL@bCkso*!Eu-FjCzdFR4d>y~p?^P^d~ifKUWhVRT#x~4ifPA8 zqJ$8gy`TAHF#$DyC0Mn3Z^Z|1ot^@qBMh#Tr@9tB;X1xL)<6!e~)Ek}ZVlV7eU9D8EXtwb40MO>S<`9YJ2gNl&( z@o0err|SHCR_NxKlgHtMKEfy2c1faDxd};9Z|f?S=SuO2?S-H$-NCe{LZKN2hKf@B zMo#fDG11&^m@dSfN2z$^1wlS1UT)ydYi7e^G`JQ|6=B5J$2)Dy6n6B8Xy$ZA{$vIr znb`X-EEEw(VwgGoM=yXTbvvJ?gGzWoR<5z&NvQ59=;W2LD}gHk>{--k>1wY0@!L72 z(O&6=-@e%WrCVED1pMW-F687pkeAJ9Yzlr{&>gGiAeS85u>%N4%l+Y`id#>KkkUyO zo_k1-Dk6RWqiG0Y=+|a={-U9ebUg@Uji$_f{Xc(J!+lnkKYq<}8;yCeet!ql(U4)W zR3((7Jt)MRmjXo+H2~v3!Bl^SXt&O8Bj=(|Dxo%g;0K!OL;@B zx8+YZpTgDC#Im>mSjU5fmpztI0U+r4evLU!DRfMiCCE^LU#4gl2pSa4HFp}&Iy#D_ z3#spJ+)QG~diU;eVJnm76o}S5*%6!vNLZHM$mVo|!$j;ctS-Q zKFr8m+DYlRC!VCzS8zGngtl*KGD$?`Anv!E6=tLxyt~^X!d=Q+Ar2_V{dQWsi!>}T~rNO!5LB3 zOiwbPVL64}X2;KqTfs}a2akO9_P&15b%pH-1~*cmfm7XQ@%&U9RLlr;?|9;5b;1Ek zzQ?|=zJViGwcpSedKGFL02xwy;3!WkNsZRH+8KT!t+bCRbOWybKk)b2ySWd5QC1Fl zh&C}S+O5JI#mk@x1W2!B4rsD=6%M9Na464B`k5MlW zxJgjcPVYZ2vjt8?9|3jr$H!}M4kI2pxphLm5UTq0g$#cbh%b*4;lTp^BSUX-lb!SW zml^F5<|BD8@Vk%@0I1AKWHxGH%QTh&^;3vMWq$3&jhpy0T`)%nb`o*v;|fTj*a7lj zO!755JC1`*sA#+NfZcp`5ot%~us-7uL_}k|P!TRXQIK|-Ih2MJx=PtFN1;W;Q{A1~ zZ0d{f3R~LD5qOaX>vPDeC-?P)8{}H!v_-f|T`jhwZE8B>2ngw{jlO}Oc9yq# z`;Pk$60;}k(`yOGM!isN0OV=iCQ1K_hL$y;Yi+ja+yufQC|ihM(SXk+%wR7ZJ&{ND z`^<=p?m~Syf$TCojL8geosJH_XMVJwFlV?Xq-|`Y-1%>yj#(sxFZP)SyavP z(&gF2ZfhccbpC7QQSXrk+_S>Z^zwl+OzJ}0l~Jggi<)=+*(;L67krpUn}Y@V{aopP z($dq9_Lresf<(;3BXguWUwu8itN*PyYRrLrjjaz2Uf@+Tg#wjsbv1JD+Xpgo|r$dkOFhk+qaXes*Cq&5B z#yloo7=JAg7}*Z5#sBoh4T?Qvs%{bJGELCU7N_}JvBRFLlfAm<7cR>`f4(X`XGrN$ z_B~xJD%oc3vws0I7@m``awx$ok-Z*&JxLvE^n5v$e?ESU+AT^RUirF*FsWYl_r(`! zd;Egu!+-jpM_sGtt_hV9(dr4M53@bQj2IfMb(90qeRt zk>rpQmdv+%)!XSAk2fi?xc1;fJe?B=`goY~4Ad(CL@-v|p$EP2=;-JN1yWkt3P3&7 zaDY6@02oFEreA45e^dLb@3pj))ZW@SNW6xIU&2d#}& z03Vn^Mv@#G2M1cQNJm_``?l#_${ED5W{j$6TB1bysNX!1UJ3v;A}7F7JJI_}>EPw!59fV+%caE^BMcZ^(BVQIXo9~a2$WLk=scuh4dz*6L`}gB{*y2!y-`OR3t`HTdI>FJq?+(gkC8cwx)VTdn z3+*#E=N>R~(9JR@Ia$qu9sE&dO8u|PMDu7@MLpE!94_Wxot8REp_$b3Qv10 zD^@M5#WCnA3Ks6~`^;N?Llul4j1CR`A}mi>;8Hqg(s8atX?_2x9bp7hd#_@1Ke>o5 zem`2mlL}A4EE?Of`3@f#>NlLy01V_+u%V_1^-`{4v3^-auXc0NWthYgtc_Ukt0YMi zd>a|jIM$XOa4t~SlofsWwEL50D@Ue`i}%BZ`g#W@o|w6d#dr6p%1VW5rGzGKCOIZk zUu#r-*cF{N=kX(>FTFx@3f6D&=^qV6X=NnsNljVw*x z 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 Ugs0>S@ZX@Rt7t11C|ZR6H#Rb6x&QzG literal 0 HcmV?d00001 diff --git a/docs/images/settings/settings-search.png b/docs/images/settings/settings-search.png new file mode 100644 index 0000000000000000000000000000000000000000..763e8116d3986177b09e70cef1c6773a07dcadfd GIT binary patch literal 9353 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 - Settings Hub showing the Account tab and the full section sidebar + Settings Hub with the grouped sidebar: Identity, System, Alerts, Advanced + + +### Sidebar groups + +| Group | What it covers | +|-------|----------------| +| **Identity** | Account, License, Users, SSO, API Tokens | +| **System** (node-scoped) | System Limits, Registries, Nodes | +| **Alerts** | Notifications, Routing, Webhooks | +| **Advanced** | Labels, Security, Developer, App Store, Support, About | + +Sections that require a higher license tier show a tier chip (`SKIPPER` or `ADMIRAL`) next to their name. Admin-only sections stay hidden for non-admins. + +### Quick search + +Click **Filter settings** at the top of the sidebar, or press `Ctrl+K` / `⌘K` while the hub is open, to open the command palette. Type any section name, keyword, or synonym (for example, `saml` finds SSO and `trivy` finds Security) and press Enter to jump to it. + + + Settings command palette filtered to webhook + + +### Scope breadcrumb + +The content pane shows a breadcrumb such as `SETTINGS › SYSTEM › SYSTEM LIMITS`. For node-scoped sections the breadcrumb appends the active node name (for example, `LOCAL (NODE-SCOPED)`) so you always know which node you are editing. + + + System Limits section showing the node-scope indicator in the breadcrumb --- diff --git a/e2e/mfa.spec.ts b/e2e/mfa.spec.ts index ec20e13a..3e3488fd 100644 --- a/e2e/mfa.spec.ts +++ b/e2e/mfa.spec.ts @@ -26,7 +26,7 @@ async function logout(page: Page) { async function openAccountSettings(page: Page) { await page.getByRole('button', { name: /profile/i }).click(); await page.getByRole('button', { name: /settings/i }).click(); - await expect(page.getByRole('heading', { name: /Account & Security/i })).toBeVisible(); + await expect(page.getByRole('heading', { name: /^Account$/i })).toBeVisible(); } /** Fill a login form (no MFA branch). */ diff --git a/frontend/src/components/ApiTokensSection.tsx b/frontend/src/components/ApiTokensSection.tsx index 0a3a8ac2..9745d590 100644 --- a/frontend/src/components/ApiTokensSection.tsx +++ b/frontend/src/components/ApiTokensSection.tsx @@ -10,7 +10,6 @@ import { toast } from '@/components/ui/toast-store'; import { apiFetch } from '@/lib/api'; import { AdmiralGate } from './AdmiralGate'; import { CapabilityGate } from './CapabilityGate'; -import { TierBadge } from './TierBadge'; import { Zap, Plus, Copy, Trash2, CheckCircle, RefreshCw, Clock } from 'lucide-react'; interface ApiTokenListItem { @@ -132,15 +131,7 @@ export function ApiTokensSection() {

-
-
-

- API Tokens -

-

- Generate scoped tokens for CI/CD pipelines, scripts, and automation. -

-
+
diff --git a/frontend/src/components/NodeManager.tsx b/frontend/src/components/NodeManager.tsx index 0091edcb..9bafd9c0 100644 --- a/frontend/src/components/NodeManager.tsx +++ b/frontend/src/components/NodeManager.tsx @@ -14,7 +14,7 @@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '. import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './ui/tooltip'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './ui/select'; import { Combobox } from './ui/combobox'; -import { Plus, Trash2, Wifi, WifiOff, Star, Pencil, Server, Monitor, Globe, Copy, KeyRound, Check, AlertTriangle, Calendar, RefreshCw, Terminal } from 'lucide-react'; +import { Plus, Trash2, Wifi, WifiOff, Star, Pencil, Monitor, Globe, Copy, KeyRound, Check, AlertTriangle, Calendar, RefreshCw, Terminal } from 'lucide-react'; interface NodeSchedulingSummary { active_tasks: number; @@ -430,17 +430,8 @@ export function NodeManager() { return (
- {/* Header */} -
-
-

- - Nodes -

-

- Manage connections to local and remote Sencho instances -

-
+ {/* Actions */} +
{ diff --git a/frontend/src/components/RegistriesSection.tsx b/frontend/src/components/RegistriesSection.tsx index d6dd5e7f..558feff2 100644 --- a/frontend/src/components/RegistriesSection.tsx +++ b/frontend/src/components/RegistriesSection.tsx @@ -10,7 +10,6 @@ import { toast } from '@/components/ui/toast-store'; import { apiFetch } from '@/lib/api'; import { AdmiralGate } from './AdmiralGate'; import { CapabilityGate } from './CapabilityGate'; -import { TierBadge } from './TierBadge'; import { Database, Plus, Trash2, Pencil, RefreshCw, CheckCircle, XCircle, Clock, Zap } from 'lucide-react'; type RegistryType = 'dockerhub' | 'ghcr' | 'ecr' | 'custom'; @@ -275,15 +274,7 @@ export function RegistriesSection() {
-
-
-

- Private Registries -

-

- Store credentials for private Docker registries. Sencho injects them automatically during deploy and pull operations. -

-
+
diff --git a/frontend/src/components/SSOSection.tsx b/frontend/src/components/SSOSection.tsx index 62a16397..c43f1896 100644 --- a/frontend/src/components/SSOSection.tsx +++ b/frontend/src/components/SSOSection.tsx @@ -8,7 +8,7 @@ import { Badge } from '@/components/ui/badge'; import { toast } from '@/components/ui/toast-store'; import { apiFetch } from '@/lib/api'; import { CapabilityGate } from './CapabilityGate'; -import { Shield, Loader2, CheckCircle, XCircle } from 'lucide-react'; +import { Loader2, CheckCircle, XCircle } from 'lucide-react'; const ROLE_OPTIONS = [ { value: 'viewer', label: 'Viewer' }, @@ -397,17 +397,6 @@ export function SSOSection() { return (
-
-

- - SSO Authentication -

-

- Connect your identity provider so team members can sign in with their existing credentials. - SSO works alongside password authentication - it does not replace it. -

-
-
{PROVIDERS.map(p => ( = new Set([ - 'account', 'license', 'users', 'sso', 'api-tokens', 'registries', - 'labels', 'notifications', 'notification-routing', 'webhooks', 'security', - 'nodes', 'appstore', -]); interface SettingsModalProps { isOpen: boolean; @@ -60,17 +69,38 @@ export function SettingsModal({ isOpen, onClose, initialSection }: SettingsModal const { isAdmin } = useAuth(); const { license, isPaid } = useLicense(); const isRemote = activeNode?.type === 'remote'; + const isAdmiral = isPaid && license?.variant === 'admiral'; const [activeSection, setActiveSection] = useState(initialSection || 'account'); + const [commandOpen, setCommandOpen] = useState(false); + + const visibility: VisibilityContext = useMemo( + () => ({ isRemote, isAdmin, isPaid, isAdmiral }), + [isRemote, isAdmin, isPaid, isAdmiral], + ); + + const visibleItems = useMemo( + () => SETTINGS_ITEMS.filter(item => isItemVisible(item, visibility)), + [visibility], + ); + + const visibleGroups = useMemo(() => { + return SETTINGS_GROUPS + .map(group => ({ + ...group, + items: visibleItems.filter(item => item.group === group.id), + })) + .filter(group => group.items.length > 0); + }, [visibleItems]); const contentViewportRef = useRef(null); const scrollPositionsRef = useRef>>({}); - const switchSection = (next: SectionId) => { + const switchSection = useCallback((next: SectionId) => { if (contentViewportRef.current) { scrollPositionsRef.current[activeSection] = contentViewportRef.current.scrollTop; } setActiveSection(next); - }; + }, [activeSection]); useLayoutEffect(() => { if (contentViewportRef.current) { @@ -82,25 +112,31 @@ export function SettingsModal({ isOpen, onClose, initialSection }: SettingsModal if (isOpen && initialSection) setActiveSection(initialSection); }, [isOpen, initialSection]); - // Remote nodes don't expose global-only sections, so bounce to a node-scoped one. useEffect(() => { - if (isRemote && GLOBAL_ONLY_SECTIONS.has(activeSection)) { - switchSection('system'); + const current = getSettingsItem(activeSection); + if (!current) return; + if (!isItemVisible(current, visibility) && visibleItems.length > 0) { + setActiveSection(visibleItems[0].id); } - }, [isRemote]); // eslint-disable-line react-hooks/exhaustive-deps + }, [visibility, visibleItems, activeSection]); + + const handleDialogKeyDown = useCallback((event: React.KeyboardEvent) => { + if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'k') { + event.preventDefault(); + event.stopPropagation(); + setCommandOpen(open => !open); + } + }, []); - // Auth State const [authData, setAuthData] = useState({ oldPassword: '', newPassword: '', confirmPassword: '' }); const [isSavingPassword, setIsSavingPassword] = useState(false); - // Settings state const [settings, setSettings] = useState({ ...DEFAULT_SETTINGS }); const serverSettingsRef = useRef({ ...DEFAULT_SETTINGS }); const [isSettingsLoading, setIsSettingsLoading] = useState(false); const [isSavingSystem, setIsSavingSystem] = useState(false); const [isSavingDeveloper, setIsSavingDeveloper] = useState(false); - // Unsaved changes indicators const hasSystemChanges = settings.host_cpu_limit !== serverSettingsRef.current.host_cpu_limit || settings.host_ram_limit !== serverSettingsRef.current.host_ram_limit || @@ -115,6 +151,11 @@ export function SettingsModal({ isOpen, onClose, initialSection }: SettingsModal settings.log_retention_days !== serverSettingsRef.current.log_retention_days || settings.audit_retention_days !== serverSettingsRef.current.audit_retention_days; + const sectionDirtyFlags: Partial> = { + system: hasSystemChanges, + developer: hasDeveloperChanges, + }; + useEffect(() => { if (isOpen) fetchSettings(); }, [isOpen, activeNode?.id]); // eslint-disable-line react-hooks/exhaustive-deps @@ -243,29 +284,9 @@ export function SettingsModal({ isOpen, onClose, initialSection }: SettingsModal serverSettingsRef.current = { ...serverSettingsRef.current, [key]: value }; }; - // --- Nav items --- - const NavButton = ({ section, icon, label, showDot, locked }: { - section: SectionId; - icon: React.ReactNode; - label: string; - showDot?: boolean; - locked?: boolean; - }) => ( - - ); + const activeItem = getSettingsItem(activeSection); + const activeGroup = activeItem ? getSettingsGroup(activeItem.group) : undefined; - // --- Section rendering --- const renderSection = () => { switch (activeSection) { case 'account': @@ -277,18 +298,12 @@ export function SettingsModal({ isOpen, onClose, initialSection }: SettingsModal isSaving={isSavingPassword} /> ); - case 'license': - return ; - case 'users': - return ; - case 'sso': - return ; - case 'api-tokens': - return ; - case 'registries': - return ; - case 'labels': - return ; + case 'license': return ; + case 'users': return ; + case 'sso': return ; + case 'api-tokens': return ; + case 'registries': return ; + case 'labels': return ; case 'system': return ( ); - case 'notifications': - return ; - case 'notification-routing': - return ; - case 'webhooks': - return ; - case 'security': - return ; + case 'notifications': return ; + case 'notification-routing': return ; + case 'webhooks': return ; + case 'security': return ; case 'developer': return ( ); - case 'nodes': - return ; + case 'nodes': return ; case 'appstore': return ( ); - case 'support': - return ; - case 'about': - return ; + case 'support': return ; + case 'about': return ; + default: return null; } }; - const isAdmiral = isPaid && license?.variant === 'admiral'; - return ( - !open && onClose()}> - - Settings Hub - Configure Sencho settings + <> + !open && onClose()}> + + Settings Hub + Configure Sencho settings - {/* Sidebar */} -
-
Settings Hub
- {isRemote ? ( -
{activeNode!.name}
- ) : ( -
- )} - - - -
- - {/* Main Content Area */} -
-
- - - Close - -
- -
- {renderSection()} +
- -
+ + + + + + + + +
+
+
+
+ Settings + {`\u203A`} + {activeGroup?.label ?? ''} + {`\u203A`} + {activeItem?.label ?? ''} + {activeItem?.scope === 'node' ? ( + + · + {activeNode?.name ?? 'local'} + (node-scoped) + + ) : null} +
+

+ {activeItem?.label ?? 'Settings'} +

+ {activeItem?.description ? ( +
+ {activeItem.description} +
+ ) : null} +
+ + + Close + +
+ +
+ {renderSection()} +
+
+
+
+
+ + + + + No matching settings. + {visibleGroups.map(group => ( + + {group.items.map(item => ( + { + setCommandOpen(false); + switchSection(item.id); + }} + /> + ))} + + ))} + + + + ); +} + +function CommandSearchItem({ + item, + glyph, + visibility, + onSelect, +}: { + item: SettingsItemMeta; + glyph: string; + visibility: VisibilityContext; + onSelect: () => void; +}) { + const locked = isItemLocked(item, visibility); + const searchValue = [item.label, item.description, ...item.keywords].join(' ').toLowerCase(); + return ( + + {glyph} +
+ {item.label} + {item.description} +
+ {item.tier ? : null} +
+ ); +} + +function TierChip({ tier, locked }: { tier: NonNullable; locked: boolean }) { + const label = tier === 'admiral' ? 'ADMIRAL' : 'SKIPPER'; + if (locked) { + return ( + + + {label} + + ); + } + return ( + + {label} + ); } diff --git a/frontend/src/components/settings/AboutSection.tsx b/frontend/src/components/settings/AboutSection.tsx index ded9b187..77b419e4 100644 --- a/frontend/src/components/settings/AboutSection.tsx +++ b/frontend/src/components/settings/AboutSection.tsx @@ -7,11 +7,6 @@ export function AboutSection() { return (
-
-

About Sencho

-

Version and instance information.

-
-
Version diff --git a/frontend/src/components/settings/AccountSection.tsx b/frontend/src/components/settings/AccountSection.tsx index 476a01ed..e9fffa54 100644 --- a/frontend/src/components/settings/AccountSection.tsx +++ b/frontend/src/components/settings/AccountSection.tsx @@ -83,10 +83,6 @@ export function AccountSection({ authData, onAuthDataChange, onPasswordChange, i return (
-
-

Account & Security

-

Manage your credentials and authentication.

-
diff --git a/frontend/src/components/settings/AppStoreSection.tsx b/frontend/src/components/settings/AppStoreSection.tsx index bf078823..867b9f17 100644 --- a/frontend/src/components/settings/AppStoreSection.tsx +++ b/frontend/src/components/settings/AppStoreSection.tsx @@ -57,11 +57,6 @@ export function AppStoreSection({ settings, onSettingChange, isLoading, onSaved return (
-
-

App Store Registry

-

Configure the template source used by the App Store.

-
- {isLoading ? : ( <>
diff --git a/frontend/src/components/settings/DeveloperSection.tsx b/frontend/src/components/settings/DeveloperSection.tsx index f55aef13..31106667 100644 --- a/frontend/src/components/settings/DeveloperSection.tsx +++ b/frontend/src/components/settings/DeveloperSection.tsx @@ -38,16 +38,12 @@ export function DeveloperSection({ settings, onSettingChange, onSave, isSaving, return (
-
-
-

Developer

-

Power user settings for real-time observability and data retention.

-
- {isRemote && ( + {isRemote && ( +
- + Always Local @@ -57,8 +53,8 @@ export function DeveloperSection({ settings, onSettingChange, onSave, isSaving, - )} -
+
+ )} {isLoading ? : ( <> diff --git a/frontend/src/components/settings/LabelsSection.tsx b/frontend/src/components/settings/LabelsSection.tsx index 164cb965..6d1adfd2 100644 --- a/frontend/src/components/settings/LabelsSection.tsx +++ b/frontend/src/components/settings/LabelsSection.tsx @@ -125,11 +125,7 @@ export function LabelsSection() {
-
-
-

Stack Labels

-

Organize stacks with colored labels for filtering and bulk actions.

-
+
diff --git a/frontend/src/components/settings/NotificationsSection.tsx b/frontend/src/components/settings/NotificationsSection.tsx index febff745..d7fc23e0 100644 --- a/frontend/src/components/settings/NotificationsSection.tsx +++ b/frontend/src/components/settings/NotificationsSection.tsx @@ -5,17 +5,14 @@ import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Switch } from '@/components/ui/switch'; -import { Badge } from '@/components/ui/badge'; -import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; import { toast } from '@/components/ui/toast-store'; import { apiFetch } from '@/lib/api'; import { useNodes } from '@/context/NodeContext'; -import { RefreshCw, Info } from 'lucide-react'; +import { RefreshCw } from 'lucide-react'; import type { Agent } from './types'; export function NotificationsSection() { const { activeNode } = useNodes(); - const isRemote = activeNode?.type === 'remote'; const [notifTab, setNotifTab] = useState<'discord' | 'slack' | 'webhook'>('discord'); const [agents, setAgents] = useState>({ @@ -127,32 +124,6 @@ export function NotificationsSection() { return (
-
-
-

Notifications & Alerts

-

- {isRemote - ? <>Configuring notification channels on {activeNode!.name}. Alerts from this remote node will dispatch via these channels. - : 'Configure external integrations for crash alerts.' - } -

-
- {isRemote && ( - - - - - - Remote - - - - These channels are saved on the remote Sencho instance and used when it dispatches alerts. - - - - )} -
setNotifTab(v as 'discord' | 'slack' | 'webhook')} className="w-full"> diff --git a/frontend/src/components/settings/SecuritySection.tsx b/frontend/src/components/settings/SecuritySection.tsx index 6505c6ce..31213d15 100644 --- a/frontend/src/components/settings/SecuritySection.tsx +++ b/frontend/src/components/settings/SecuritySection.tsx @@ -27,7 +27,6 @@ import { import { toast } from '@/components/ui/toast-store'; import { apiFetch } from '@/lib/api'; import { PaidGate } from '@/components/PaidGate'; -import { TierBadge } from '@/components/TierBadge'; import { ShieldCheck, Plus, Trash2, Pencil, Download, RefreshCw, Loader2, Info } from 'lucide-react'; import type { FleetRole, ScanPolicy, VulnSeverity } from '@/types/security'; import { useLicense } from '@/context/LicenseContext'; @@ -256,14 +255,6 @@ export function SecuritySection({ isPaid }: { isPaid: boolean }) { if (!isPaid) { return (
-
-

- Security -

-

- Define vulnerability scan policies that gate or warn on deploys. -

-
@@ -276,22 +267,14 @@ export function SecuritySection({ isPaid }: { isPaid: boolean }) { return (
-
-
-

- Security -

-

- Policies evaluate every post-deploy scan and alert (or block) when severity exceeds the threshold. -

-
- {!isReplica && ( + {!isReplica && ( +
- )} -
+
+ )} {isReplica && (
-
-

Help & Support

-

Get help with Sencho based on your plan.

-
- {/* Self-serve channels (all tiers) */}

Resources

diff --git a/frontend/src/components/settings/SystemSection.tsx b/frontend/src/components/settings/SystemSection.tsx index 044c9035..fff33e34 100644 --- a/frontend/src/components/settings/SystemSection.tsx +++ b/frontend/src/components/settings/SystemSection.tsx @@ -1,11 +1,8 @@ +import { useState, useRef, useEffect } from 'react'; import { Button } from '@/components/ui/button'; -import { Input } from '@/components/ui/input'; -import { Label } from '@/components/ui/label'; -import { Switch } from '@/components/ui/switch'; -import { Slider } from '@/components/ui/slider'; import { Skeleton } from '@/components/ui/skeleton'; -import { Badge } from '@/components/ui/badge'; -import { RefreshCw, Info } from 'lucide-react'; +import { RefreshCw } from 'lucide-react'; +import { cn } from '@/lib/utils'; import type { PatchableSettings } from './types'; interface SystemSectionProps { @@ -14,118 +11,231 @@ interface SystemSectionProps { onSave: () => Promise; isSaving: boolean; isLoading: boolean; - isRemote: boolean; - activeNodeName?: string; +} + +interface NumberChipProps { + value: string; + onChange: (v: string) => void; + suffix: string; + min?: number; + max?: number; + step?: number; + warnOver?: number; +} + +function NumberChip({ value, onChange, suffix, min, max, step = 1, warnOver }: NumberChipProps) { + const [editing, setEditing] = useState(false); + const [draft, setDraft] = useState(value); + const inputRef = useRef(null); + + useEffect(() => { + if (editing) inputRef.current?.select(); + }, [editing]); + + const startEdit = () => { + setDraft(value); + setEditing(true); + }; + + const commit = () => { + const trimmed = draft.trim(); + const parsed = Number(trimmed); + if (trimmed !== '' && Number.isFinite(parsed)) { + let next = parsed; + if (typeof min === 'number') next = Math.max(min, next); + if (typeof max === 'number') next = Math.min(max, next); + onChange(String(next)); + } + setEditing(false); + }; + + const numeric = Number(value); + const warn = typeof warnOver === 'number' && Number.isFinite(numeric) && numeric > warnOver; + + const chipClass = cn( + 'inline-flex items-baseline gap-1 rounded-md border px-2.5 py-1 font-mono text-sm tabular-nums tracking-tight transition-colors min-w-[78px] justify-end focus-within:ring-2 focus-within:ring-brand/50 focus-within:outline-none', + warn + ? 'border-warning/40 bg-warning/10 text-warning' + : 'border-card-border bg-card text-stat-value hover:border-brand/50', + ); + + if (editing) { + return ( + + setDraft(e.target.value)} + onBlur={commit} + onKeyDown={(e) => { + if (e.key === 'Enter') commit(); + if (e.key === 'Escape') setEditing(false); + }} + className="w-12 bg-transparent text-right outline-none [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none" + /> + {suffix} + + ); + } + + return ( + + ); +} + +interface TogglePillProps { + checked: boolean; + onChange: (next: boolean) => void; +} + +function TogglePill({ checked, onChange }: TogglePillProps) { + return ( + + ); +} + +interface RowProps { + label: string; + desc: string; + control: React.ReactNode; + last?: boolean; +} + +function Row({ label, desc, control, last }: RowProps) { + return ( +
+
+
{label}
+
{desc}
+
+
{control}
+
+ ); } function SettingsSkeleton() { return ( -
- - -
- - - -
+
+ + + +
); } -export function SystemSection({ settings, onSettingChange, onSave, isSaving, isLoading, isRemote, activeNodeName }: SystemSectionProps) { +export function SystemSection({ settings, onSettingChange, onSave, isSaving, isLoading }: SystemSectionProps) { + if (isLoading) return ; + return (
-
-
-

System Limits & Watchdog

-

Configure alert thresholds and crash detection.

-
- {isRemote && ( - - - Configuring: {activeNodeName} - - )} +
+ onSettingChange('host_cpu_limit', v)} + suffix="%" + min={1} + max={100} + warnOver={95} + /> + } + /> + onSettingChange('host_ram_limit', v)} + suffix="%" + min={1} + max={100} + warnOver={95} + /> + } + /> + onSettingChange('host_disk_limit', v)} + suffix="%" + min={1} + max={100} + warnOver={95} + /> + } + /> + onSettingChange('docker_janitor_gb', v)} + suffix="GiB" + min={0} + step={0.5} + warnOver={10} + /> + } + /> + onSettingChange('global_crash', next ? '1' : '0')} + /> + } + />
- {isLoading ? : ( - <> -
-
-
- - {settings.host_cpu_limit}% -
- onSettingChange('host_cpu_limit', v[0].toString())} - /> -
- -
-
- - {settings.host_ram_limit}% -
- onSettingChange('host_ram_limit', v[0].toString())} - /> -
- -
-
- - {settings.host_disk_limit}% -
- onSettingChange('host_disk_limit', v[0].toString())} - /> -
- -
- -
- onSettingChange('docker_janitor_gb', e.target.value)} - className="max-w-[150px]" - /> - GB reclaimable -
-

Alert when unused Docker data exceeds this size.

-
- -
-
- -

Watch all containers for unexpected exits

-
- onSettingChange('global_crash', c ? '1' : '0')} - /> -
-
- -
- -
- - )} +
+ +
); } diff --git a/frontend/src/components/settings/UsersSection.tsx b/frontend/src/components/settings/UsersSection.tsx index 15642494..f03e79e3 100644 --- a/frontend/src/components/settings/UsersSection.tsx +++ b/frontend/src/components/settings/UsersSection.tsx @@ -251,17 +251,13 @@ export function UsersSection() {
-
-
-

User Management

-

Create and manage user accounts with role-based access control.

-
- {!showForm && ( + {!showForm && ( +
- )} -
+
+ )} {/* Add/Edit Form */} {showForm && ( diff --git a/frontend/src/components/settings/WebhooksSection.tsx b/frontend/src/components/settings/WebhooksSection.tsx index ff7ada66..7646d995 100644 --- a/frontend/src/components/settings/WebhooksSection.tsx +++ b/frontend/src/components/settings/WebhooksSection.tsx @@ -10,7 +10,6 @@ import { toast } from '@/components/ui/toast-store'; import { apiFetch } from '@/lib/api'; import { PaidGate } from '@/components/PaidGate'; import { CapabilityGate } from '@/components/CapabilityGate'; -import { TierBadge } from '@/components/TierBadge'; import { RefreshCw, CheckCircle, XCircle, Webhook, Copy, Trash2, Plus, ChevronDown, ChevronRight, History, @@ -137,10 +136,6 @@ export function WebhooksSection({ isPaid }: { isPaid: boolean }) { if (!isPaid) { return (
-
-

Webhooks

-

Trigger stack actions from CI/CD pipelines via HTTP.

-
@@ -155,11 +150,7 @@ export function WebhooksSection({ isPaid }: { isPaid: boolean }) { return (
-
-
-

Webhooks

-

Trigger stack actions from CI/CD pipelines via HTTP.

-
+
diff --git a/frontend/src/components/settings/index.ts b/frontend/src/components/settings/index.ts index 95c9210a..6363087d 100644 --- a/frontend/src/components/settings/index.ts +++ b/frontend/src/components/settings/index.ts @@ -13,3 +13,19 @@ export { LabelsSection } from './LabelsSection'; export { NotificationRoutingSection } from './NotificationRoutingSection'; export { DEFAULT_SETTINGS } from './types'; export type { PatchableSettings, SectionId, Agent } from './types'; +export { + SETTINGS_GROUPS, + SETTINGS_ITEMS, + getSettingsItem, + getSettingsGroup, + isItemVisible, + isItemLocked, +} from './registry'; +export type { + SettingsGroupId, + SettingsGroupMeta, + SettingsItemMeta, + TierGate, + Scope, + VisibilityContext, +} from './registry'; diff --git a/frontend/src/components/settings/registry.ts b/frontend/src/components/settings/registry.ts new file mode 100644 index 00000000..870a424b --- /dev/null +++ b/frontend/src/components/settings/registry.ts @@ -0,0 +1,233 @@ +import type { SectionId } from './types'; + +export type SettingsGroupId = 'identity' | 'system' | 'alerts' | 'advanced'; + +export interface SettingsGroupMeta { + id: SettingsGroupId; + label: string; + kicker?: string; + glyph: string; +} + +export const SETTINGS_GROUPS: readonly SettingsGroupMeta[] = [ + { id: 'identity', label: 'Identity', glyph: '\u25C8' }, + { id: 'system', label: 'System', kicker: 'node-scoped', glyph: '\u25C6' }, + { id: 'alerts', label: 'Alerts', glyph: '\u25C7' }, + { id: 'advanced', label: 'Advanced', glyph: '\u25C7' }, +]; + +export type TierGate = 'skipper' | 'admiral' | null; +export type Scope = 'global' | 'node'; + +export interface SettingsItemMeta { + id: SectionId; + group: SettingsGroupId; + label: string; + description: string; + keywords: string[]; + tier: TierGate; + scope: Scope; + adminOnly?: boolean; + hiddenOnRemote?: boolean; +} + +export const SETTINGS_ITEMS: readonly SettingsItemMeta[] = [ + { + id: 'account', + group: 'identity', + label: 'Account', + description: 'Password, MFA, and session controls for the signed-in operator.', + keywords: ['password', 'mfa', 'two-factor', 'session', 'profile'], + tier: null, + scope: 'global', + hiddenOnRemote: true, + }, + { + id: 'license', + group: 'identity', + label: 'License', + description: 'Activation key, plan tier, and seat allocation.', + keywords: ['key', 'activation', 'tier', 'plan', 'seats', 'billing'], + tier: null, + scope: 'global', + hiddenOnRemote: true, + }, + { + id: 'users', + group: 'identity', + label: 'Users', + description: 'Operators, role assignments, and access scopes.', + keywords: ['operators', 'team', 'rbac', 'roles', 'permissions'], + tier: 'skipper', + scope: 'global', + adminOnly: true, + hiddenOnRemote: true, + }, + { + id: 'sso', + group: 'identity', + label: 'SSO', + description: 'Single sign-on via SAML or OIDC identity providers.', + keywords: ['saml', 'oidc', 'okta', 'entra', 'azure', 'login'], + tier: null, + scope: 'global', + adminOnly: true, + hiddenOnRemote: true, + }, + { + id: 'api-tokens', + group: 'identity', + label: 'API Tokens', + description: 'Long-lived bearer tokens for CI, scripts, and remote nodes.', + keywords: ['bearer', 'automation', 'ci', 'scripts', 'scopes'], + tier: 'admiral', + scope: 'global', + adminOnly: true, + hiddenOnRemote: true, + }, + { + id: 'system', + group: 'system', + label: 'System Limits', + description: 'Threshold percentages for host CPU, RAM, disk, and crash-loop alerts.', + keywords: ['cpu', 'ram', 'disk', 'limits', 'thresholds', 'alerts'], + tier: null, + scope: 'node', + }, + { + id: 'registries', + group: 'system', + label: 'Registries', + description: 'Private Docker registries and pull credentials.', + keywords: ['docker', 'ghcr', 'ecr', 'private', 'pull', 'auth'], + tier: 'admiral', + scope: 'global', + adminOnly: true, + hiddenOnRemote: true, + }, + { + id: 'nodes', + group: 'system', + label: 'Nodes', + description: 'Remote Sencho instances proxied through this control plane.', + keywords: ['fleet', 'remote', 'proxy', 'node', 'cluster'], + tier: null, + scope: 'global', + hiddenOnRemote: true, + }, + { + id: 'notifications', + group: 'alerts', + label: 'Notifications', + description: 'In-app toasts and browser push for stack, container, and system events.', + keywords: ['toasts', 'push', 'events', 'alerts', 'inbox'], + tier: null, + scope: 'global', + }, + { + id: 'notification-routing', + group: 'alerts', + label: 'Routing', + description: 'Rules that steer alerts to the right channel based on severity or label.', + keywords: ['rules', 'routing', 'channels', 'severity', 'labels'], + tier: 'admiral', + scope: 'global', + adminOnly: true, + hiddenOnRemote: true, + }, + { + id: 'webhooks', + group: 'alerts', + label: 'Webhooks', + description: 'Outbound HTTP hooks to Slack, Discord, Teams, or custom endpoints.', + keywords: ['slack', 'discord', 'teams', 'webhook', 'outbound'], + tier: 'skipper', + scope: 'global', + hiddenOnRemote: true, + }, + { + id: 'labels', + group: 'advanced', + label: 'Labels', + description: 'Shared labels for stacks, containers, and nodes.', + keywords: ['labels', 'tags', 'palette', 'organisation'], + tier: 'skipper', + scope: 'global', + hiddenOnRemote: true, + }, + { + id: 'security', + group: 'advanced', + label: 'Security', + description: 'Image scanning, suppressions, and posture defaults.', + keywords: ['scan', 'cve', 'trivy', 'suppressions', 'hardening'], + tier: 'skipper', + scope: 'global', + adminOnly: true, + hiddenOnRemote: true, + }, + { + id: 'developer', + group: 'advanced', + label: 'Developer', + description: 'Retention windows, log refresh cadence, and debug modes.', + keywords: ['retention', 'logs', 'metrics', 'debug', 'developer'], + tier: null, + scope: 'node', + }, + { + id: 'appstore', + group: 'advanced', + label: 'App Store', + description: 'Template registry URL and featured-catalog source.', + keywords: ['templates', 'registry', 'catalog', 'featured'], + tier: null, + scope: 'global', + hiddenOnRemote: true, + }, + { + id: 'support', + group: 'advanced', + label: 'Support', + description: 'Diagnostics bundle, docs links, and contact channels.', + keywords: ['help', 'diagnostics', 'bundle', 'docs', 'contact'], + tier: null, + scope: 'global', + }, + { + id: 'about', + group: 'advanced', + label: 'About', + description: 'Build metadata, release notes, and licence attributions.', + keywords: ['version', 'build', 'release', 'attributions'], + tier: null, + scope: 'global', + }, +]; + +export function getSettingsItem(id: SectionId): SettingsItemMeta | undefined { + return SETTINGS_ITEMS.find(item => item.id === id); +} + +export function getSettingsGroup(id: SettingsGroupId): SettingsGroupMeta | undefined { + return SETTINGS_GROUPS.find(group => group.id === id); +} + +export interface VisibilityContext { + isRemote: boolean; + isAdmin: boolean; + isPaid: boolean; + isAdmiral: boolean; +} + +export function isItemVisible(item: SettingsItemMeta, ctx: VisibilityContext): boolean { + if (ctx.isRemote && item.hiddenOnRemote) return false; + if (item.adminOnly && !ctx.isAdmin) return false; + return true; +} + +export function isItemLocked(item: SettingsItemMeta, ctx: VisibilityContext): boolean { + if (item.tier === 'skipper') return !ctx.isPaid; + if (item.tier === 'admiral') return !ctx.isAdmiral; + return false; +} diff --git a/frontend/src/components/ui/scroll-area.tsx b/frontend/src/components/ui/scroll-area.tsx index 15261915..92ea5d70 100644 --- a/frontend/src/components/ui/scroll-area.tsx +++ b/frontend/src/components/ui/scroll-area.tsx @@ -7,8 +7,14 @@ const ScrollArea = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef & { viewportRef?: React.Ref; + // Opt in when the viewport wraps content that manages its own horizontal + // overflow (e.g., a child `overflow-x-auto` table). Overrides Radix's + // default `display: table` wrapper so the child can be constrained to the + // viewport width and trigger its own scroll. Also renders a horizontal + // ScrollBar for viewports that overflow directly. + block?: boolean; } ->(({ className, children, viewportRef, ...props }, ref) => ( +>(({ className, children, viewportRef, block, ...props }, ref) => ( div]:!block [&>div]:!min-w-0" + )} > {children} - + + {block && } ))