From b68e7fcd116c483bc39108f7c6715f629bfaa3ab Mon Sep 17 00:00:00 2001 From: Hans Nowak <143102038+hansnowak@users.noreply.github.com> Date: Mon, 2 Oct 2023 13:46:51 +0200 Subject: [PATCH] feat(lab): new component ConfirmationDialog (#286) Commonly used to confirm actions such as deleting rows/objects from databases etc. --- solara/lab/components/__init__.py | 1 + solara/lab/components/confirmation_dialog.py | 165 ++++++++++++++++++ solara/website/pages/api/__init__.py | 1 + .../website/pages/api/confirmation_dialog.py | 55 ++++++ .../public/api/confirmation_dialog.gif | Bin 0 -> 107373 bytes tests/unit/confirmation_dialog_test.py | 97 ++++++++++ 6 files changed, 319 insertions(+) create mode 100644 solara/lab/components/confirmation_dialog.py create mode 100644 solara/website/pages/api/confirmation_dialog.py create mode 100644 solara/website/public/api/confirmation_dialog.gif create mode 100644 tests/unit/confirmation_dialog_test.py diff --git a/solara/lab/components/__init__.py b/solara/lab/components/__init__.py index 5e27f5c48..426522d11 100644 --- a/solara/lab/components/__init__.py +++ b/solara/lab/components/__init__.py @@ -1 +1,2 @@ +from .confirmation_dialog import ConfirmationDialog # noqa: F401 from .tabs import Tab, Tabs # noqa: F401 diff --git a/solara/lab/components/confirmation_dialog.py b/solara/lab/components/confirmation_dialog.py new file mode 100644 index 000000000..d0b3d5b3b --- /dev/null +++ b/solara/lab/components/confirmation_dialog.py @@ -0,0 +1,165 @@ +from typing import Callable, List, Union, overload + +import reacton.ipyvuetify as v + +import solara + + +@overload +def ConfirmationDialog( + open: solara.Reactive[bool], + *, + on_close: Union[None, Callable[[], None]] = None, + content: Union[str, solara.Element] = "", + title: str = "Confirm action", + ok: Union[str, solara.Element] = "OK", + on_ok: Callable[[], None] = lambda: None, + cancel: Union[str, solara.Element] = "Cancel", + on_cancel: Callable[[], None] = lambda: None, + children: List[solara.Element] = [], + max_width: Union[int, str] = 500, + persistent: bool = False, +): + ... + + +# when open is a boolean, on_close should be given, otherwise a dialog can never be closed +# TODO: copy this pattern to many other components +@overload +def ConfirmationDialog( + open: bool, + *, + on_close: Callable[[], None], + content: Union[str, solara.Element] = "", + title: str = "Confirm action", + ok: Union[str, solara.Element] = "OK", + on_ok: Callable[[], None] = lambda: None, + cancel: Union[str, solara.Element] = "Cancel", + on_cancel: Callable[[], None] = lambda: None, + children: List[solara.Element] = [], + max_width: Union[int, str] = 500, + persistent: bool = False, +): + ... + + +@solara.component +def ConfirmationDialog( + open: Union[solara.Reactive[bool], bool], + *, + on_close: Union[None, Callable[[], None]] = None, + content: Union[str, solara.Element] = "", + title: str = "Confirm action", + ok: Union[str, solara.Element] = "OK", + on_ok: Callable[[], None] = lambda: None, + cancel: Union[str, solara.Element] = "Cancel", + on_cancel: Callable[[], None] = lambda: None, + children: List[solara.Element] = [], + max_width: Union[int, str] = 500, + persistent: bool = False, +): + """A dialog used to confirm a user action. + + (*Note: [This component is experimental and its API may change in the future](/docs/lab).*) + + By default, has a title, a text explaining the + decision to be made, and two buttons "OK" and "Cancel". + + ## Basic examples + + ```solara + import solara + + open_delete_confirmation = solara.reactive(False) + + def delete_user(): + # put your code to perform the action here + print("User being deleted...") + + @solara.component + def Page(): + solara.Button(label="Delete user", on_click=lambda: open_delete_confirmation.set(True)) + solara.lab.ConfirmationDialog(open_delete_confirmation, ok="Ok, Delete", on_ok=delete_user, content="Are you sure you want to delete this user?") + ``` + + ## Arguments + + * `open`: Indicates whether the dialog is being shown or not. + * `on_open`: Callback to call when the dialog opens of closes. + * `content`: Message that is displayed. + * `title`: Title of the dialog. + * `ok`: If a string, this text will be displayed on the confirmation button (default is "OK"). If a Button, it will be used instead of the default button. + * `on_ok`: Callback to be called when the OK button is clicked. + * `cancel`: If a string, this text will be displayed on the cancellation button (default is "Cancel"). If a Button, it will be used instead of the default + button. + * `on_cancel`: Callback to be called when the Cancel button is clicked. When persistent is False, clicking outside of the element or pressing esc key will + also trigger cancel. + * `children`: Additional components that will be shown under the dialog message, but before the buttons. + * `max_width`: Maximum width of the dialog window. + * `persistent`: When False (the default), clicking outside of the element or pressing esc key will trigger cancel. + + """ + + def on_open(open_value): + if not open_value: + if on_close: + on_close() + + open_reactive = solara.use_reactive(open, on_open) + del open + + def close(): + open_reactive.set(False) + + user_on_click_ok = None + user_on_click_cancel = None + + def perform_ok(): + if user_on_click_ok: + user_on_click_ok() + on_ok() + close() + + def perform_cancel(): + if user_on_click_cancel: + user_on_click_cancel() + on_cancel() + close() + + def on_v_model(value): + if not value: + on_cancel() + open_reactive.set(value) + + with v.Dialog( + v_model=open_reactive.value, + on_v_model=on_v_model, + persistent=persistent, + max_width=max_width, + ): + with solara.v.Card(): + solara.v.CardTitle(children=[title]) + with solara.v.CardText(style_="min-height: 64px"): + if isinstance(content, str): + solara.Text(content) + else: + solara.display(content) + if children: + solara.display(*children) + with solara.v.CardActions(class_="justify-end"): + if isinstance(cancel, str): + solara.Button(label=cancel, on_click=perform_cancel, text=True, classes=["grey--text", "text--darken-2"]) + else: + # the user may have passed in on_click already + user_on_click_cancel = cancel.kwargs.get("on_click") + # override or add our own on_click handler + cancel.kwargs = {**cancel.kwargs, "on_click": perform_cancel} + solara.display(cancel) + + # similar as cancel + if isinstance(ok, str): + solara.Button(label=ok, on_click=perform_ok, dark=True, color="primary", elevation=0) + else: + user_on_click_ok = ok.kwargs.get("on_click") + ok.kwargs = {**ok.kwargs, "on_click": perform_ok} + solara.display(ok) diff --git a/solara/website/pages/api/__init__.py b/solara/website/pages/api/__init__.py index 63ac2bb9d..6e6a152b9 100644 --- a/solara/website/pages/api/__init__.py +++ b/solara/website/pages/api/__init__.py @@ -118,6 +118,7 @@ "pages": [ "tab", "tabs", + "confirmation_dialog", ], }, ] diff --git a/solara/website/pages/api/confirmation_dialog.py b/solara/website/pages/api/confirmation_dialog.py new file mode 100644 index 000000000..3d9c67fc4 --- /dev/null +++ b/solara/website/pages/api/confirmation_dialog.py @@ -0,0 +1,55 @@ +""" +# ConfirmationDialog + +""" + +from typing import Union + +import solara +from solara.lab.components.confirmation_dialog import ConfirmationDialog +from solara.website.utils import apidoc + +title = "ConfirmationDialog" +users = solara.reactive("Alice Bob Cindy Dirk Eve Fred".split()) +user_to_be_deleted: solara.Reactive[Union[str, None]] = solara.reactive(None) + + +def ask_to_delete_user(user): + user_to_be_deleted.value = user + + +def clear_user_to_be_deleted(): + user_to_be_deleted.value = None + + +def delete_user(): + users.set([u for u in users.value if u != user_to_be_deleted.value]) + clear_user_to_be_deleted() + + +@solara.component +def Page(): + """Create a list of users with a button to delete them. + + A confirmation dialog will pop up first before deletion.""" + solara.Markdown("#### Users:") + with solara.Column(style={"max-width": "300px"}): + for user in users.value: + with solara.Row(style={"align-items": "center"}): + solara.Text(user) + solara.v.Spacer() + solara.Button(icon_name="mdi-delete", on_click=lambda user=user: ask_to_delete_user(user), icon=True) + if not users.value: + solara.Text("(no users left)") + + with ConfirmationDialog( + user_to_be_deleted.value is not None, + on_ok=delete_user, + on_close=clear_user_to_be_deleted, + ok="Ok, Delete", + title="Delete user", + ): + solara.Markdown(f"Are you sure you want to delete user **{user_to_be_deleted.value}**?") + + +__doc__ += apidoc(solara.lab.components.confirmation_dialog.ConfirmationDialog.f) # type: ignore diff --git a/solara/website/public/api/confirmation_dialog.gif b/solara/website/public/api/confirmation_dialog.gif new file mode 100644 index 0000000000000000000000000000000000000000..acd5d9890b6a3a0c27459e750a51ceafef24e519 GIT binary patch literal 107373 zcmd422T)Vp-afi_5<&t2LJv&>(nLT+1f*yvN=H;c`WpcS=?K!%gx-4xG4zh~u7=(b z0cnB)iWEVSYUdyIocBBDD|hC8bLZZh8D>uyhFL2s``J(XscT-6J9lFRWCgtdfbWP_ z@1nsqRb~B)QWBC-5TN|(3k*0$xr$MKfM0(WOu1sQSW!_?X=!N%1qD@ARV^(o0|Nt7 zQ&VeeYez>%cXxL`Kfl1hz^JIGSf-#>8`d*htG#t3vYxHg`;Iubz20v2*L(ExX!XqN1qGMv?;u8{+l2cOC(lau%vLEC;B<1Gi7Zes1mz0*3S5#I#s;;T6t8Zv* zYHn$5Yk&O2g{z~ptGlPSuYX{0Xn17w+1T^(!KaxM(=)SkFXtDYzes(x{O0Y-yZOb$ z)%TlQAKt7deB9mJKj`@s%f)&4XeT!QZmLxc8XEq+Ag7S0 zZ@9mIMHh-A5J2h!&WXVn?pZHXZgfo{Atazh4#7AI}Uk!;@X9Phd0L;4K@)y7HXV=^}vi0*;U0W63i;FdSzV+0eD75+xvwAe}P~1*7>e2-mrD zd+_m6+LvF+9ecgKIkc|v0Uv>i4lx+O%SQ;L-sat|i!t*eJmOe9lmYImNRD;t_5m=n zbJ$^s3sKBp)waeC-J$RM{hX#8zLQ7p8H~k=&>$<~fbAF9E~6sqjmZr<})L*>&hpGX;L2 zs>3?aDt*p$eP)g(LunBD25=BVP(JNSDjhRgWh?QA7 zD%hezJ6ugazrI}7!ChS}*{xhXn+HRaI!Z?6?Cg&*NI+=HXZbyb&7RvAXM_l?nm zL1SC!{qn^NO0kTJ+qa^YzU<>*E>=VHJGY6GuON&Cr{2S#XaoMe9i*S)8l2J(xhz6k zf0T_k4EeV$l$c)Xfz@%t4HtD?mR`X_g^%S>1<4t3rmh_j3#F0oAP8>Y{rS`mI_DK} zcsj`nZCshJNEW}n{QPHgC+j7rMS?kz_Vn8{nI#*7gv)c*A-r(3?DHz2pWk>tK>F$U zQ@e=WV+6*-nr_b5gf-k zX7QJ#Tc7jVo9A=ReeRVXKOTEW4a&3CukN{cI_}ntH7~Vh>;*_7Do~(+AF7g|I>?t0 z6+=o1=% zCqbCw2@+ldLzZ86(#WVH$uP}fE6&~Yew`wzv~xN%=Gc^aSSZtJSE9Y?ZsyEzkxbLT zh_ml*)*`A{u1|CHPUb`w2GEplYL1I&-hHqgU97mO`OJ52H|O(k@%h7nXZODD=5!br zFW@!xtr2@9gl>rn``}op{9Z0PrbJCx>v^Q*^H|@by?iWPsfN1Ncw**W zfrxIY*7d>h)YiR1$(T|dTdj%AxxFH}ky1Uc!HJx&d&M}qGW{^E$vn>e5)Iw5t7(Ii zMe_Tl`Y~k&#ab`QO!v!-N6L(v247V9?w8}~%8mQ9rfM_yE9`X3O{WK^8e8`(U1Q44 zSGA^F=k}|-N6IY^2dAHW-G4-&tH4uh&vbGgREO(USg{Yy^vWO9#K%!H)g*^zI$=<53_xw~V5Z^- zGy!AcE`ACrw5|Zqu~4ZQo)u1qVQ(4Wk#PUAIR8fFdh^lHgDRJYv_*)jVb^r6aX+)<6uIr#Lt85mc1`3?&g+uc23)m^S=YNa4$Xer#=WvCfL9 z*_T1%(c09e;S~wLFGG0xy7WGscT!njhVAs~GN*^%$+UeLagD9ZUe#HZfB9w9d$ca+ zaCr6nw=d5K^z|fa-8B`iuVdkQ^?B?gYnK$hK97&(tS=DOUDq=EI-WjSUnD!SuIKl4 zf<%9oN#ze6fm3LLSTv9dumb!*5ao@mtZZRnVOd#OQ&UrOb8}Bm4~1b&O-)f4#+x^9 zC=6q7Z|`r00Sm7lIALO)y0MUK&e3#QlUbT1mrBkkV-AwWMTM5>OiPTepM6CKN6lG2 z&A1Xi$&&W?tpq+_te_Hh*AOAVu+^%kRxpQ#K>9LD`IF235$Tho9`Uoe9H5k7`jfBD8|y@zwP75D33Q<^!?} zRONI^yg(okDQPTs)+Mkb9#fC85&g3rce-Qeu$W+`5Vb%1AttiZhI(aUGXF1GQ}dtg zQT;lrEWiX{0!058+l#8!9N;WJ^S+R0CQq+inu>T;rssFNk z5}*ap104U0<-1m&K9}|Q`mABiP0D?feHcPE_C<{YCuRdAxF78~lv|X4tj(q~-l2;? zS&N1)O+q37{I7G+yOPg&2Fo&_uPTYwW$!_E;5ATJqc6e}^hHqbLf>_1j*H(F;`+7n zJArPVauH_&|8VqwTeJpc(QN;VMLYe!xMBz zCN}?yBEQ1$;&U4lnFswPr>n1Btp}-^&WZ?#;b!q(8e$UM>SZu2DlNNniG=MI(4s}s z(8_rn(_+E|@dR61q9ou5<~V&+h+%4kX4bzTRMwxJ{Jwv4040DCU;%zfKU!K^CMG6s zZf+qVAqfcyiUw3tQc_b>)7I8DG&D3fH>YSo2M33{cklZ8`UVFFQ#4>wQc`wyc3xf{ zW%D&PHGeeV$jHd^=gdg$kx#Ve9`uE z5z+L~Tg<3f`S2KFNsJ^tkyd^03yd|9fiw=z1JGq#CO{6u3%$6>=z>a*TMWweJhI^8 zMX(;D4#WUF1WOBA_G4&7R1`0omw}hs0>Qz{Mdx~7UOtN##%;lYV9)0*bU@zaJ;p?x zlitz ze=aMv=^IZEY0EJTx>kIXU^~fwsB1xxKwjIg3B9f9mBojk%8R?{K#DtbKoS zP+8upb4bQI;w3H65aJCfUz8aCAW$RkL=$Wuql`ddF3=0{Ay@WWQm)}bE<`8?zq+P&NFb4h9~E?*llCSIEfC9ioDs^ZqQVG*`tdLr12Yn|<7NP} z{b9i(ETl3K4LW8zNHjku3_{OHU7Ans?B+*+XojwP!cU+KjBwBkb}IhN=_>LnI_TCj!-4xwWlWH^qptU-ex<-v3KMcN1&aL;W<5=%rFu}ZUGTysMp z5Gr&vuAeT4U|jLe5o;(|5T0O?c!ZQI#o;b8(*Xyaa*&rfP7CooI^MN>5hxIo9L_$J z)k#MU8(U;2Og|++T+EFd@q|>AmSj31{4Kq-A3e-YsY7eB6JJ>SJBHpPu`^{Me7vFsuqy2hr9D#09b$b#XU- zwgI8fm?O{H7+VxRLJV@7yAxv6wwsutd(yWBJNGA_-a;WBHJIRR#rf$OoQ9RfBTQ1{ zw!8F6WcW;qS@dMHl5UU$+^%|upTHairBWlQ=X&#q?AG4sOB=}bd{oqY_d>x(E@5gH zq%@Y~!;jy#0G58ROdj2-k&}gZ#PpxhhR)m+j^aQHY-`^zblgT-RfrKl?i=xvtRM#) zISct7mq4UCopCsY5HD*=MVy^#N=&@J88txq;y^Bn)-*k8Pw) zj3$3Z2-{X30aBvKoMh6w)fXX4OG00Rm^B&{ArWW4#QD63d0f=u?)G6~Gn}EmDI(nM z&7?UnFQ*Koe=lY>^N&OqIq7zG%?m$YZ#J;zK zK9k97KroU(17*?Bj}du}!xE)JI&oy6aakV1#DpX1sE0m&Uat2_1pQv^B9&lA9aFcf za!LMFk3e6L@QXKOSoCbqWwD22X}6Ja3DvPatXM{Zl3*o9_s0Efp-$nJ#A*kFEB;okIS2$Cl3cBa;yhgI4$vOkNTAKN+vTdkNeb6zt`u=BR($12y&kR^I#u zUIUs64iTiJYpNY{?HLjJxQLU7u2OeY=CgN36%X6%sDN)`dt++sPJ7Qage&*Pb!4~p zCiKuYA56-{IW^8y=2Uu4mlZxfc!2=W>(jzvf5`1` zz~uzEfaid~Z|pdB?3jRnz{!&*rKF@N*rB4LLV?0+`;hhA2du?$g|K_z7 z&iX#Z8_4QN{MGlazBR(K?e$X`f4#VY_n*J7A6q?s#+)F^8K@Yn!g_`Ym#VA}=T`Tkm0;SG4$(~a4Sb&OJkPSj7 zz?3=+!3ZR$rjLyb(+JRx3Ubg?!x-#PkU9Z0gyl@E7#aj0yoAB%nGoP(dT@;m3VSBX zywzV?(uY$C0;V-=uvjt}3ndWCe#4j$B(f78@`@6urNBXHdVXlR%^>Bz*+VBPbL^YAoi*=Mn%~ zF&4B40pDW)7xetvHLb1Me%ev9S^Q#N&O8hx=gF0@FfGstUM{Nlwz7XwZlaAxpkD-= zGKuo`D`9c*SAtg{A`RENR0!0xa28X?MMz}jzD#jH!18dNr6EM%Oy-O5Rqt$X(v$QFpO+m6s_ z53~rOH88{kT;fu7Vj^mLt29A}Xa*s@CJB#H<>Er_XAW|TH&>^C~hu-v@ zlqYy0I(?A?yjlDCEt2|fpfVMz+t?iGlejI6Bsy=uhIhJoKu+|opH0PU%L`9q_~7Js z@sk#-43;6)`48?cU<&7GZ{%!iWgt-(OBC)P^>wn=N(2^>0eO+viv)EpJ|JG+5xfpI zSC&nRba09mz!e5=sXV+qdef|i30BSL9-N_Has;o+)W3Q6r<#n(O*3bLvS?<2Fcc1{ zUabg(uwX%|fIIc9NN?n|PD7+6;=?hRE}E$EQB0Z)Wt=>-<;ctExP6gP2^a4HMR9{_ z4DfiuQ{KBn#xQPmp#SuT&Nl8MRx4R8Ri@1Xk=V)9wn-Fx&TlM53Mm=amkJe1oqL$0M3tz2C&& z|K$BP+4{84O8R9tpLf|W7rv|}21)oHXUmFn_GKu1SmnD^-ZXk?qpB}Qg+FviF9ePN z06m^yfC=)ioaTSTB}xpSqoZ^6>eYY6B?<+k;8JvSG=&0EVgL%K`5TuyJ3IfzrN2e` zzvGhWzhwYjX2P$2X8_fW9CW`jfG=+(e`Np~ng4SJaBo;=OYFPW>o?FJG6V|@6n^3l z775WqSOh6p6evgqOBLjx{RKw;f51p2zpz-ifC5G_V&UbrX`#QMNRTn|DFo9J5mn1d zeu@;N?GVDy6v7yUQ4q8c8p3>)0z?Ty95CoFBr4&gf6YmOqRx}duhvhlqL@(Npdbd; zhDMRx4<1o`dBIU7S63`>iZvJ}=Zzg>1I@R%4`@h>#6D`z?u0Y4=%7A0NPpy=T!_Uf z(!pVp1lLhw1l7Z3B}BD&BnXAFWs}h4qEHm{b7ejumq4HqXQH4Gf$9oe$h6l?SeqME z2V0pwXG#(xU?8aoH_Lp&gpOU;c&vmE(wTcvR#3@}k1)n;D$5x%s{_@G74$stmpUW{ zg1(Y4Nmss}@z6%>p!s!^9{C3K(~F>%xD#?*Xs=YsHgHXqg$kZczMZQ!Z|<=*cU8@+QoZHMzZXbJn?n2H`pSA!h99sFAJn_5nW`(4eBu#e88FNgW?MB3d+TkqR zU#U$H))2jl_dW`5RNL6^PbKLsFu1bx@L_?H$Z)z+4E2?BozWQxvl=$u^e1W?2V3ngQ*L@4>d<+P zQPK4oO|UnYvg*D^60Y%0xAioH@vWJK0z~YkV-?{`2Jsr58ez&I*nTXgOnbBbWj?1q z77s`*eR6ENY_Cu9S_t=p2p5Xga`C@HFS;qL+N`?`@;Bj?RbR1?`=B{G@Jx$WZxxHX z`NAO8uBUF`28CY#GjUe>fi9>WWdxl(Bdyyvb=tsH>NlsEu}O0} zn6)deJeYHA+B$gY+9!TE?=kIkxL{@$bI6PU#>%-kY^s$Jzro};$q}QFoU(tA9EzSi ze*CzYnAqO}>2EOkqbEH)JpN>gf53!7awwVNe*%-Su`!B3T3TBAr!x9mAd!Ur4is}t zLPtDw`)133ksMsi@FlTPs}4$__?9k4-?~b((lp>%Nu%6j->0uPJ#{t%pRGMiAFe8V z?K;(}d!hH^XP?K;z26@D`uW`tHln18A(5JtR52=Efs!f`0&bkp5XqEqXJ=2Ad1#Y% z93w$N93cwgP&m$U3gYlHL#PW?V9+-H--tt7e4HKms77#LsP=dj1#rgr)mSJ#4-9=4 z2A5`mpw6HnYwN6MW?xdh!Zfe1BhJu3`ZzI%^9%yC5Nxt{^~h8>>M^$(4h>`m0gYlP zEalz}cACd z+y%6j32=115*e>tq7GF#KCFRWG=?Xku#z5vW7L)h7Wf;&}0G?GlQ^Q5(xrrd5U*aRrJ0Q34#KOgD+eaeF!Tk z_4Eau0y3fh8+H^^?SAPQM`}d7#A2hy+Vis|f#OPmSQk3WFM8;uPn|u{s}OF&*h;Qu zyeQhB!@(|N(eNV1|7!LT;%>s?u^=ir4B79w#qJeGNU$pO#>>0x3^y0uu93sje$n0hQQYYgv*3C|$?4fm#Hc5jm( z1b@_>eHARmck2cOV=o5{OZ1`6i=Y<67s1ZzV^LyklVmGjiFfGZNa-pzLI5ZkpJ9PO zF;g4`{a&`44;bSwBXb!kK%~rR(D_#*1&GwI#9r+DYsf@?#@$3qwutUAe$~)tUe}1j zQ7t-gQFX0S#5Bsuo}7aqKJg;K4@Hv5Rj8f3`=!1><=`3?I@S)C6Xl%1MV5Y~T%VxtD0SM5) zn8=Di55X+I%o#PFOo%6n3UnLOsM2bnJ9OcN{A4KYk`2uhmNNqSsc1z~%w;tL!YNIm z6b&?lQE_ZYUPyGCJj75RF{Hq>ZAfqTVH{_eh0##B3N!d(f2xwoVf%XWY`e-R3-tZ& z)+N#|!_Nw22^6@_QWk_}E=%Q7Bm!X0im zPmz|hWJcu zS=s(uDdJRVlK1aYgx$+e@|n^9C`H^<`PWj!=g0_|vs_6vU8gCf2-HoTU!{oe1x(kA z6y$|81A^T!zQ0NlmMkIM_JWQf$u8HTDWwR{n*sNa3pu6aUv|%;lp>7Sf;r;}xp@V3 z9ARZm&C#&|Rra}D_4Vv6-926`4_vF_k3H?EW9=QE_=~-r>yaZj`B{F^S+g`3^% z%byi|;R2%=>0t;QsUsy@!O!%ZK2yOn zaYhtONh<_L6h*^CNaLgeLy(CNgC_6VO_mEX=<{h_feZjpHe*dJL75c};f{{#du08P zTF~o62aZ4pLO5Qz<%-3tgwj9}=IzUP;R!J> zzAMzIf}2u&A1oorWOR;eE?G;0nu%*>2a5|7?G=RB%43C6zEo~q);GN<94tm=Ofz$U zwX<sJMv1s!r0+>y<6Q7pk*VxFjg>O<8j+IXkz3-Ub#vH7{nxTQtat!7Fr<* zcNy$uKz1S7-UHUF^f}|(Hjwkaq?H6&lLF`oF$S%ZyQ_} zgkec)Ib(t&zCG@6YHJy*`=rw7dIbt}t*X+2C@RJ8`&qRM&3Vw@%UL7Z~A zMj5sP^Q~ojMBj2 zHNghv>Tkhqx0pJO8jQlBORp&hOT<=7k3P5JF;>lw3MmKoW4@Z6#l@Y0+3}eN@sGs zYq9l$-HI^-TF2yXa*KA8ja<~sS0(pG>vT2F#K87L{? zG7=0eH5n^uq)FG@JC3! zdF!XlZSRPRY;u|XRvTl&%_8q;px;#>ecKnJOKAAMTtgg*-U*|2j0-fKc|9~3tbokS zy^lfV@=LG5zWa{mP0ToEi`kcZCFxG1hz6S6uJ%JKkLEb5yeArd~zc4qA2(J9d}sA@rP zx}$L1t#*fK+SA9O7xjr$TKTGt3gKKma+l6Uf{ST6bBuc!2$4xFC3?30mr}%521x7AoUSonjHBj!X2UPVwDFdpLib-v5o|BW zR6mi!o>m_yrHFtMmCMzk#v=c<6!CSO&XEP6lp?T6nv_z6L7|9bpg=f|Qi?EybCUse zx7GU_5j2VSKdDZg^y=U{auRS zoN9oNL&Jcgv*YCHKcxsq(;pi|q&IWbal=2Qh-Fq}P&=7Q8VBmvcGUhZMZ5>`q>dsY z40l^|Xl|FTPpn{;>0_zxZMM z>EXBUKYkv5@&3W3QB6{I0^M(Sk*jmN!qCUHvNdY*dZI9A?C1Myj;jSDoeaD19V#J7 zBG-)Kf!xBOG)e2hY|Xl&kt{j)jroDPRlOq`Rx$Guw%RF;B+(?J@Wr~)iDLbHtp}p+ zkip!^$kDP;gHo*`gRV#(?M5+O*YqTHT54Ca83{QC?Tw$x`Vy|xw(GP?-yTtB*WMkb@mNbK zvK~6-c(-oDuHwSwF5t`l{46=>+C_&p_Yc>qRFBw3+s|EIE{)+mm7-X?`+mlaKX%l+ zwRFSvgbnZIpDUiD3y+f^9}WF?saHOA7W@A6gzvxhI*i@?xk7P|y5Hg`%1x3Ckq|`V zpyH>|IPfeTmaI#S&|d_18>I0>>dyM3Tq2@X4G%!j=w%&V&$V#?*8CO+AnNOJL}|F> zUy*z=`p0A7^&W&62_-y^2ocyGkE3ZWzyT<`wDf?_SBhUdBz4rk4g87Je+z+ymf(|4 z(Zt`-p@+NX>A;Rv0}ya;X8gXSC=Lf`KDo^Yxifyk3P55dZKI_+B36N0tuT_dJVZVp zL`vHWz>b_|1q)(oHF5cT^chRp)FQaWeDrsbTiSogo0$7v3GB?dYWPGA$fa(7i!FiR z5FKd@=s~P59Iz|bq3@kbEE2Er$xD^sa99f#XKY@rlB}7v(eA&>h1ZT4ED_eJ@Sxskp5W9CSxROej*hi`eI=wO*E_KD>su;;_U(85?i|T#9gNE1Kq_OA9c^uz@3x;j8POZ`vl*^w7rT8ythfk|vsxeM+@k zxyO$sUw|OT1Uts(>yuw3Zq16_M7v^NgeFUV5PxKPyF90HLppzZp8=9_l569gbyY~N zQ-G^!j_$I0+ZU(2d#rXTY&BALpbW9@YDY-E}Od?aOu zOA1mLsK9L**Ay4?HD;!mss2kFkK=^IqVu`e)%*Gn3$DEQi(x%#QP6Ifw03bktN7DY|9lC0Qq4rFRG@pmnS04@f|P(NKhJH{v7CySl!aq zRxbaG(U{aDN538QJjyH-n^Gh&P!qp&atWM}fgJJFCJwZjB6dUTmn>?Nv)T;UiaiI7 zd#kkSDE-A(oMpDYtBw1Jqw}sT3ArlgH#t(y687L_q%He~ z&$F1%yWd}dcD*$6w^l{!a~U3#sh!L$4!-13z#D*2A1ZH8z62}ca$476x0<*DX(&FT z=Cj{V_MIfi?RywJK=vg1R_<;{-!pa!PE3YDeFzO`kAUF5yrtf&SWQiDao8&jK4_zm zXW`AQ2Of&bB8!HoV+38;?UNnTw)%}sfvCV#{*IX|Xssr3SKC{>eY1MiGMb(Xt7*5BW3H;j+?B9T-5DEqo|3bXQcq70nLKg0^KI_!2R(U4Uy0<@2x6-N51Qtw*(Z3VJ_GYz}v(iX%$fB)!k{(jYt9reA+#r;OK-e{~505@4y_c|^c*MD%AEq>VieV=u&1O$Py{%*D=uK(R(0g~;oepdrw^#j5gnfU!4OoTWGqrU% zTA6ls5ca$)Yr5ri?|h%@+v~0`?K}mds9T5ZgLxC_hIh$ zx3>*kFAjXZ>Vnm9D(E5BP2YLf%ek=)qsw(Dy$cJbwp33uRcF8R?Va1=*^u2{x3(g- zi-eHfqLBO79l85LbiCca-h%0Qha3wFF-8!2-Wl8UhnUIf*vp03rMtv5-C3X}=3EK> zYuhzJpI}b7+7d?V>+Q>gp=!@{3YQGESTw$D$Kt|H3<K)-1 zAJMWDk=;*CN)L;}MCKVss)a`ur8|^;zEjy8=_wgmWfxK153gPGd}JJzo*rfD7IoAr zLj7bWs{M163p)DZjp*(fcz-&&AEO>)Ocmbj<+f<=ClaH+9lg&Qb7dxcve_##-Kh)1 zG$i8Z+U#%W&S2uo=LCL}#7&VfPmNfNNg^H-FK|Lv@OGlPaab>mV4RTnEgg>fVzw0Srh41; z2;qBJ6pAS3fiJ}2Zm4TXJflylMSm(y zMC!C$s&~sBkAcMGh{X7e46Ad=2M6iax5Khe_#Mu$rQkC@Rx{SUKgF~^IP5Tk-6VvyG}DD6#WFlp$Ry;YU4l}EThDrO|9Xhixuiy9 z_CaHIt!$RrKyXcIcH%4=JAfAG%d}X`T*2k&jm137pq{~Gcva`Dp2+dW=Zs<>>JW0A zKi}StfPYz!`LIsCH-I|Ih_*tL-i@U}${xbMW+Ht_H*uul1`L{Y+~dHV5rWOAP9986+^_Vm|0h-TC?$$aUrvHUb7 zh0J^-LVg=iaK6<`$&@4`UvM2;Ky#%)gOf^2G+bw{;PQ4s6Rz;QePOJ3!BzXbE19_# zt%cfz!g_4cDXpSfe34*e(fv<__)M7nR~i@lT(=F3<6M!tWO3z{Vo%>#-^jdx)?)3J zh~|<)g6YHib9rH{#olFH!KNi=MN1rOO1j3tWYf}A-_rEV(#+P zOe8O-YgtKVSy^jY#avm{*RpEP^0GnD-?WUuzI@_2Sle2D)IL}KWTUJ>zN|03gfF-J zsc%JpW-Ci=Nn<@{V_iGAf=qljms>Mu7c--%W( z&e<-{RV*7+t$wX~npx$3%YN1u;fD-Agoh^}3C)Z-9!Q6!FCmvB%ut6hm-MT6$si{g zZ2bz-e*=rZR#(n}^ySr@0EE7+k~_YpxV45CUx99`Zq=&cT?BcCYPbkB$a0V`t88b3 zuFmLDC?Vxjs_Rd?x|@C3SDNd_sa>L4>V}$P$FIXyT5H(3YS_xbc8$)4r??`PM}DvZi&gfvdWf#i1s^q2k*6S~dH| zX~DWP@7;_)d8uY)TVs;xW$UjNyO@^T`D?mGZLB`&TTM_@84tF(oTizN7DDi=Ev0GH z=Bh^@GhsmE}g(Fut!g%qn}-R=c85ex!o0sMl)yaI(f^=yB^t4TmBug7#_t z?e-8}hp%%<}McNdxS>5^8sgpQ7+SeLv`3$K4==33WI za+gAT*GUwUII4R?pj%a}>tZ%tHoUVTzgs)IQ&)#RSEw`RbdTwLjiEo?W&f^I-%G6& zdu_~n(?!cPvLo@EC4KOo;k8~z#}WsfvfJE!vvPf1G<}}_#m4?E?@49^?*2f<{$TU| z&`r}Vec3J7{^P_XW)jk-3MB90xnihkJE8W&DQ+ z{fB%ShesWUM!pY^i{0v$9+?`x>ESst*KRZ0KJqHs+T~zm8Fgb>di34*8!P^!8^bpC zjiVnbZtm=j?&#b^oPBmMZ)WEC?CW<1!^USn9T}qbpFu_jbY;fi7JXm*$7r^?{Tj#U zALuzAjL|FEGyQm0Zv6a%KMC`Af!XS+7%hc;i2Z7xl2 zzWp_7v-xgubM4ni@BieYQ9Q7?|6h1uzh-#z3Eqyj%P{|4b0g*^4X`5A0ZqgkVSw-(R|_|m_1<`;|y52Q!rLC zjZpIuK)IfB9+p3J>7^RxK;WB*4j^JoJdVc%R3QhdGB&cC+_42A^a94iUkP6D#h|)! zZtOv851c9evh!%QGYmRs3l9LE-gA%Qb0u4~E%ZFRU&G_6=S+2AL@~Pf(P_7q6T+0C z=uCAWc8EG&F z_DVGv%)~u+mKCk|tFtYv=t;-quSrbtSx99z6(?VjA(PE-iw;=ly?cwm1GJtQqX0yM zIybHH)`v%q=Rcx)-7Kt`MW4Z35VG z(jFZPoq2+EsHinnIjI;5nz-0g6J*Hd??R>|6dHRjp0K@WHRjSbYBlCqMAPI@l|Gqi zEpCIbZ9M^h%!nuV-nSy-p2Q@`2+32W(XO9MDWo-zsT|xD_55Tn^-&>(jxy~{+Co~{ zsAk#{(z9xkvH;njshYf`)79iVJoM4^=k#O;^IO<2bJpKcl=pLUd0^SR+n*DwCD2kN zlf6+`bUJ3N?etLg6{R9ptXBklcZP8Ds@W=5p=^-nP+sNg{8F-xrEYWDb?x`&$*EUc zKIFUadkRf&$ocZUS`F8hYDsu7OSZDNj67zozS`yaGJSY{bOCSAcHKGlM723FENkkh z;RY(GYIIdfG#+;^$tU82_u25F%0-rb8gMg*R(f{y#I(9w;x%$b^{jxyY-@%@^v9sSq^>rc-vqjYW@jZC@qnXQye~c$pmKAr^2}tA6{|%7&y>>NuCl{Ddr!4Wf!ORJFc>!Vdogo^W8}z z+2r$Qsxatg?j)BOylqn%7&L0#NeRQ=RJ{5tt{M+tH(NRRYlat+h_3aZw!|$DS#eIJ zA2SANQwN6so4D%N3~w!-Du94|%sB?Kr|)L3=@iRP4~+h&xawU&2i?K%8QzBgT?vj_ zYb=oSKW2CjlBoR9#gbgr6sr6846nz=MDE`sydJrW!_Z4}UTLk#b@@lXW_U+tA>3mm zsxu?&=Pvk;|6_(%gRkr=y(3w4eeJdOUCIpaU=o!anMmupF&R5fC|3D1!<$%34!H|N z>zNKdEi|Ic@H%zSP$u?Eud-IMJr*@;`!mD)?YpS)I*@dKW~{=M&QZ^78{`H^mEzvz z`1KPMXN)q#yH#qr#7bS`jD!A~;XS(zw)~eFUUQ3TBY@keOhUiX(bi$E|5sdfan0rg zZ5Z2~#U?VH1hrB8%VoA?c*WTYhnJbpS~w3|#$u|hy@p=OrYBI1k9?rB8#A4LBGWkf zg5rT`TZUb2YMtUaI_^1SX8u8Ry3OgasNbsg>#vZ#_O+X;9McYe^|wy9Z8zNZ{-(VM zS!H|5NOk-^o#XTo#JdG@t2$WtyYcsTO>|b~k|9kScu2cU*_FE;q3SwTxu%~x?e$$E z&dr-bn#o;VR0A|tZOfc5F$KbxK5_JyEO9-YeC%WaQd?#Xv!Q1CH1wn{xK~(9ZC)Qx zDg+JOs)=;ftiUNHspKYeYav+^l+9aQT+62Zi8mxD?`Irss1AW^EPdGZ$!S^-j{aAn zKErNCYq}{J#th~h)R#u!0@61dE!rdY;^M)d`B=5|s=?9U@|_VSRl z=?v{A6QrDv*+=Wjq zsHWeKvJJX}RiTVqTyzrqi@<;V1=R{Uy5K#?l$s3Z)Bu8+NTB$~T`1g`(8L(&^7M)z9 zvI@A?;)*`#I@~=)2!W+Dve~*pjY3 zCw)$_MWFk!@?&e~PxooQG=*Ar^`3jBAGbR}wSNFyxIiYr#Bfm7Ra;v6iw+EuSm-xL z5YB=>;`w=t0G_i|cKxmijeBkirE_h8V+ac3v4!H|dn zoc2^^*8ys8(a&(QJk)(3*X%P$ge&I2x$M5bagp3@FFLmCd_I|4sO}lPG=95YPwaxr z=x)y8?kbKqzpV>1pM7R>?fWpf-i1trZd#nD4gc!7(&hfl5x)Rg_PrlIQ0D7w|qzmVe-u@N%lxt6~7?zx>n7xtrCEVt_681xy$@9UqWmdIRK}EmS_=TmE$Ur;#sT z_#H6e?y)F^}A8jvWrz3K-@3L8ch~G`Ps=CK? zQ$Ww*nJ_QlmWZ#P?DYp4P~K`U=Xc@X-bTUkHa=^ypKL=`FGapyg$R2^Tz>(1trp^a zJwzI-@cw3;zj4U8P{bvw4B6n6@=p%jNAEgo7*ad(H}E`j1+ zTC6~Ex8NGw9g16l7HffQ-tYU?+Gn4=?#|W8$YpLaGRGWq{PTOB=Y6rp2T$-hTd;jv zfMr_ZovDj>ksqWVgg)zh{bCPzToit{r+%>$jkoT=;20<&=DlO?fWsMyX9bYhMIiJ- z7yH9_0z%U`f|xA*UR+DfeQ=-$MBh0{gPcDx76Vii;{7ZDoY>KvO`wYuTk3UZe$G#8 zmqO0*da3bP*Kd;@`&h(7#1$j#idEZ`5*N2?@8li6ykIvlevcg5644PP$&kc>T^6S0SN5?zolj{4FGx8fmVC!=k)+cy5kNDgYqs&tjN_e!^QfW`iptM z+V3Ej?R**}sBGU4HP4VU8+1GCgBZ$i4@zp@kHgM0FYpAQ`a#qPhc@!KP4PJ6l;RzZ zFm+1@?8?A=c81jk8ZeukNo2UXr$dqj`zkww!@l|py%1gOufta%M4SHQ)WsFv;9ubx z3RqRj4Iq$nKfj9%+*_`-DM(adD;Q9nn7ChwfBF84MatT5~NS-zvhN zLQD+(61Kx)4D*xs^>~pfO9g&TLv;(=t=bC}_fMOQwtHMac+USR{{)a?VFhG zJ^QBH*A?z=fw<%Kt2Wgd2D)`6c6SQxr-tzJ==|T3?eW{78FA#*fDO(O5{-Y`_V#b< zdt>>xPmsh}ozzFKF>R4#@Q%xtP9~`?mV%0Rc=cLDZIdcp+{;~rW?iJWm|Xa9%A<#K zqVDy*I(A>A$=7a?m~Ple7e8&gAb!_#+8)KSPFblAhNB9`tR4;SE|sHBV?dWWZLi)4 zlI^xm3Sa)IZ?8UWAH1dab z+;aD`to{I7Cm&jQqubDrv;z@kR>5#&oMjk3WhN1JGy4v*o=BCxm9eTC(*L)ub8pGKBHl&l-kR& zlmn!L&e)QhjRmC}PrNWJj<++_4wKQr|rM>{3=&-9GE`J2C9p6FW3H{6WgH(nKCO8{C8 zrx#%}sTU3FX|n?1=1ZYo4r()3-x|~8JTJZV1$IFd&Tr_A-;_nqrfQ>FiykTTI()pF zTB{GF5BT^5F+0BvVql+_GMl5w&PY<5J50${(2i|gYM`o`%g&s?>p{6k8+m8DuvF#F z&(5qy_*nNl&?9DV-Rr|GX5A=9Q|pX7GTn6L2vb>2wp%?@wZpfN`UO7vEXs`ss{MA$ z{k>B41ahRcdQAftjZ{d7>6is}RIO{Yoj^aypAceQ%rP=2&uvs|dULDX3FbKOE9lDIe0;*tsL5sRd16AJ zkR`j%CEw@~<^;yCTzn?KDaYibjAAQf4yvwO%>sY7nF171mwz-{QMEZKp0a-6HM-4; zfgQ63Pj!0lk0+0`E|&@vQ1`zZKcUpY*>0sR>FECX;$ho2R$Uuf*k+)G zqxG``Tl%qiZ+{*;g7A@-u*^X`H_umL z@i_Yg(EWu>q8E7`CHf&5qhSlY-hYi9LyxCsI5v-Yn^xo-LsA<6YX^TqcF%MC=E+EE z?<06%n)|j%Sh)?dd6WD(XY=G+ORT1xMq4n3-7>paQQ;&m7 zRpX;WzO+nxNp{ZI^}T|h$a(m5(7QbE*g?Bs9-ZRvBJY6^h26}#$=VWE?|a`D3+|{B z^G9Qs(SC&%emhHb_7X)$k>N8ld#6Ml`&XVVA3siLwyD4V7++c%;U>O`Jr{C(QhcpI zIAw6Pta{D$=m&Rh#*F{|^3i6R(fEm90ssB4XW1^FQrp(t{aaV|mt(!=&Hc=Fohb+? zW1nmnjQOdfJztLjTT~V zt3F?uO)+PomK3*y3qCE>u@sCE7jBLaloIXxb5d-7!u!kqtGyIdf?B8f8MG)7TT-e! z&Rz#MGg15-eGUIhhiCS59$r3v9|P%h5#mv?l88^qucb4xb3cD6C`c`htq^k!_R$|m zGLU-KXm9yU%7DnKcFpYtmPGPrrS6kY{4gffiBexY=X3@22Xw)55E|H{uxHAvY7Jq3k6yhqocfj1l(Wr(i@(S;GWB)0wf?j*)>gl!Ji_RQ zhTVd2gTqR-c456ZWD#edH%DRUq-&R~YQ_N<>RYvHSR2H@6 z#G&_<^Ide``PLYZWcWS&>E^*yRqkE6sJPS5@gRn=XF0xJzjh~z_&V+ku73XPo}w$y z@%Q_Cb+)^Ux~JT`I*tAGNa7Bgd;Ece7LM;QS^gW}cs-rL*NMYfHr|C7tglgnqWw+y z!WPn_(L=1neI`Xfb5vRLC^i8--b3*|MzgP5$H!|1>>xr zIYHIA2f9t2IDqPTtu@41(i*Q+pA{0_+w5L8In39|ay(>R?Q1hE(Tx8ZC9<$=K2krF zwWCV0R5mp#IWffDE1sJ!q$UL<5FQju-l!4hz$AS$Ay>d6OeOo}?9+r2C#GQerESPG zmC}>r>DTyl+p1G)(Y6n#fSPI|Z5p98$*;BF$7)OKD6o=g(wU*O=gut4XTEARJ=_o9 zTO8KS>PD*R=p$p?$n=C$V|5H_GG<5@tg28txhj7jpU+$DPwT+VN<)7yI!&AY7;WP(Fet!*h%G&c%?W2Q!E8ueKQjEd%o@D_w|)#00$AlolKq?q1P5RqGY?d z@3U@NQUiGxmF=mP7YrQLMHa1YLoN~fMI{d+Ost~s28W;u`nbLF&R5@UXnhDpk81X5 z{wg))zm!y^;_^fWHtm03I%zo@HT>CjbF%ca16Txryq%sEv}x$b0)miK4$Ei#j2^c@ zDtFH1k#6FO$&dkwpUc0-uGl_1e-*QxoU0JxOTZY{cUW;l%29;Oq$Ub+6keC21D-L{>6{4zYZ+HZ(m)^?N;4go&EH4-BCl=|8*>Jr~55j#0_%oxuZP=G)<@l zy1ZToQ=}mwe~ts)g4Z#A>U84Ej|UQGK{3PzI`Mdkg145|ZZaBb(IN!KuRXDBoAZHG zLkRqC{%(7D0m}K-ZeHHK0TRRpCc*D7k7{6pkXQK_k61QvUCvHq$ulym_g!EZ0%HucO{1Fo6corW02S=kN=_y<5f<0X<}0z zP-z)SZqNyk9oT|!TLQ3j#sf93H^EkW7~pf5vZk*Lh2R!8%~Ju00)hlzc^w8xsRZH+ zgTYAQDDI!oI6lSCNoF#}7^VnNQ+6JN#1VjL?+7A}sfm7^2BcBZ0KeQh28k-lU~6dv zqJ zWU_oT6I1=h0g*;fHm>;nc>Q|klIKQUs*UTz+&gL*B545_qJIWx-XQIvl|W1q%ODcl zM0;;i4ytV(b%jke3{l6g*jxtz-p<AN~{%eqCT;Rr2Po6 zCCNU(PBjp6xRnaTAuZA-)(8N_*%sq+jVrXtNwmQ52C1oNInLYVSs#4U(S z$ha#(e3dfzY$Xji^TyfQ$0pLU_~R|<6b_sS;7Vmv)6vtshZSO{H?SFoTa1Lz8$lC3 z#3+(hUfDht_j=!Tau9%_B{ zS&$znLvf76NkT$ci8%3D#+Na3pqQ*~e1&Jh*rFG|SCsYho1 zAX)KGf9pjwi?JK3htP>jum8^c1tr>}8gux_^hoj}F1`qA6mED}zW7PL!F`#EFD^ee?r|y3S z=1!jYb@-DR_}^@x8-G3bsscE08_loX( zbDVOWpHRqx5PZ7!?UdkxpXejjUE|M3!)%W*&up(Nfp_BsjN^qQXSk^mglZahgaRZ# z9En97!7?Rav-g-V0aBSNsA3hV+8L>)0GYNEnSK?S(HYr$0dg}Za;qwGyEAep0SY%K z3NI%zIZaab1R}f%B547!eB&sDW|$z_m@2)BD*KG;vjBC06Lm=yb@>@}l>kkh6HQYU zP1_kwrvPoQ6K#h8Rl)?NQV~XY0%i0BCF+cBP=J2hiGII|{`idkOn~7cfqHF%cA{!6 z=*xqxjB3=Ba6IAUj{qZ?Gb2?sBi%V8qaYKjGZSYu6VEx5fFQGoGc)r!bcz_Va7M_y z1(m2~Q9EbR6lB$QX4S7|HA-ZZu3np-z{aXp$DM>qpR>9-vwKyu`<=4~lCVk(;+hIV zZ3MM)3gp7hDTAvyv(Gs{3vv~ZFr_APL~CKmYOyF(b4@sLwVgld6y)wbXKXr$nmMys zopack%_LQGublI22=Z<_^X{Xod5_O|&jk4{ocV65`R>kn$4GceGVvx%lS`5e>LVFVsk{{F2@f zdbaKIOi4((;Fpwu5Om+=`AyC9yI;?N!m!Y(XP6|0&UJ^fvIy=xU?e=DxID9#BeK9Wi;$+i#UlVb$Jgj`C@nzTc`7!fG?FY74b$D@n4$Z>(2cU+vevI{y9Y ztXAzulKFY9`rU7JpoqqqtGb-L2El~}v4|#FG7N{zg#1F2QACT??G+8#JGKig0g=}t zWG|mwV2EA3mJxYFQ1^O9>y6sQ8%;MgC2hIab=pQ3+Ei}ZW*5%Jbvkx+uPj7#-Q0A& z>U8}sbOS~7Lf!Nt>-1tT^b(3i^poB6)9duJFZ4f)7!%07}mKNHq{xn zT^M$XzaZ{{tQ=)QHu60wPcT;J2Q~Tkj!Sbfj_NK+Gy9Tz`rF)pFe;8?>W{@ckoSb>VG)MvV|JU3g_cJGJ1tCR_Gr?*(wdZ`b09n4pxR6*aYI-!Fcql;>U~a z5s#m|2(qwRB&wV9*?7TZ)!+uGs<$dvUz2fcM zt9B_3HRiVPcVq3G`;$9AhIQ>Czk1i;Q99{xMe9LNG_^>A zFmd?-9~F5XphO@(0-%M3k%!d8!GHlml?9*y02bcfhsuMoB_NXAgaZIl?xjS=C>eP& z18JU`eF;+{;0I{oVi*G=DA}lxXpq9){D%Z(6FsCRCI*ZVti9?92!&w4erRH2j5BNh z6tLV$XO}Y}!DcWeD-2gk=Rg8+;MZp147`rapVUJ4wqH|FBVeho>CH?4SWtdsZdiTV zUj92#$Bl=Hmp9An@Mm0XS|lV^ENMVe7-zwsL8YQ>0)Bq$u%t^p)?9qODCAc~ZB9Tg zU7Un=y5;3TsX}~KkGal^u#9*9a`x%D0OoH88=rA$pBz_VD$XC(-h^J8_*d-AF@pMY zJdYYS^3&Err=LaJrQ#&foP-Qer@u>Ef0b$5I478A0i1FlhNTVlS+h21c|T#R$5t6W ztiZn-QdI7~Pj#%;RxaH|1MrM94?~aHvT_sX%wza-$QfFSYmMZe@DCm2)BLQTA~d%5 zH;UrksFJf+;j5>J9;vCC{Bu}QL#L~6*3#sib=pNBW@paCB?r%+e8Nj*()P zc>dUA7^i1A=AMKQx?awFZSyC$LQ4SXD23N&hKoVnWw`n233!s7 zlKh;-#nHl5Vr#%fs(TbS({W$m5PY*pvG5YYPaaifh-XO*;wyqdo}EUZs9vhFDauH1 ztAxoNEajcoi%K#cx#0&a)q;`%awSh9A~KRw<1qVP>I=AIi^CwqcN#BdM&}ED$Vi%K)++MK#CUy#plg(!eW{yZsfB`6@Z zIffNSIDJ^S18pmiQ;)C;=e);|Mv(? zKS($d%F49fNpv}=4!!>MKaId1LJp6%i~g^W!+$ys)|&LoQ>E99UP;QsHBgV>*$ z$drGD98~B28G&h++9emm{|PzJ|Nj0@$iXgS&i~IvWyH#%@joF4gWAf!st?YBCp!HP zA%~!C9PA+Fhmb=`aoR)3VQLY{YA^aNSM6BlVh~JUtdsX8w%j%wS2{yHuBHOT1M|w8 zWIRIFHD{MQhPO<;9101fm??J-LEI+NYK-?hpb2<9Eld zQkr0YcQj_ee}B`g(+wpQc*VzEh8f-Xo%WrBPhv>Al;1A~hmDC^% z6;e>B1Q5;Z7s2vma)xbRzf5eD#JdNi*-!_qUc|`@T-Su@;_Kk}cwh&4@&e>5!Q4w; zSeTSBoR@e9AaRc(A@?@EZ?2QHV2nMk& z>@1Fy!l1rgSo*?N*9&Y5Xdle0W5vE`7g)46iYLWRwuTjb@B^65Wq!HpYlwL)eSS!o zw|z@13VbDv0Udy1Fi>{(adLq*%&D-MDLYF7iNK;x&ABDC9{BRm-AHn2NJ93XW)Fa} z;Lkh^Y_7l@3;rO=Q@{~p@h_q%dTWT3Q9cWiI522*na+5LL$Bg`{3`Oy&%|&q;m(V5 z4mF0Z;nO&}nmY?B z0^GvaclL7ci$9>mKwH_lQC(t~>jr{E0fHX@jE-g$6xLtl!BP44(iDEaE&#Lw7zZgv z`O6v>;EzLO{h}JsDTeV~4C64|1vUA7=NZ5A~HwaS%@R zg}Q~_x(4EnyFArZu6hAT*bRnIfd0CEgsdBI=mDTei}_vnmWShQh(7^LQwV82TIWY8 z^l-YwNH*sl#qMm!!Gc{$3`qsZ@`G83tO;NsZE*}W51H(KcybWn>OpgE?1aZ*E#(-P zJMVI(0H~jK!p>8N!J>jRIO)e-Zu$Wk!j5DjL9E5 z`@1?(g4W#-U)hIQv;_D|l38$C{M+8>wmN@Igc-!b|7C-tc0=^Qyo-P*B5}u#W!wqk zXf4T~Xs^RLdg-HCuPy)sUN(tJWwj6OMI!;mMAH}XLgpA|ZuHwiFLfb{-k>s`_ zm|=fOpVY7=OEjr>u-lVf_zX0H``9cFEdU`6(WRc@EG6jh25|(9I8(mpr@~ovL4c=Nd6@6pYfVr61j^TT^FrQtPyDkG1?G3=5D$C2ZO2LJ zb;$mif`#Sa+K-WiWi#Br`6g*yQS)V_i$h_E!X(;IB{J&|=ey54wltiY6I5@ch`@An zahDPSw_hFq?0ZX{0`WZZ>A2pVuxqmNKOynXRq~ek+K@wqnd^c>-XHFJ5#i!XVQtHi ztoZGdR8zr1ngCsM?B#&^TzDFWxBnvvP2q9L;4~YEBOtiZ^2rSlEgF$=lWQ7Qm=_tI z-}IU8DqnsOP(o#GI3?E3&JsrM&hF`gtz*G^@VZ|@Q%Ko7kQ{_ZWc|i6tGoEi(83p4 zep_t7*U_|$RZ|O4dc5T~3rYR-?_#zPs4F35!RG#J$Sx4={?V%09j6lDFj(+-yWoVX z(0$OsY0)KEFI~t{2JP_?Ydtf?Q|7adThkEQr78tbUcg~%Sp+%I>9@2_w|1l|D%Xcp zgjs)%^!`q5;6~Hr6LlW5N)8f6IP-9@XwSKvJuS!Z$>8($!yxjdNjGc4#z^`aC}`|B zn)2nQ>D!3c*TXR9s;8O+8Ga-pnXRGax3$qre=_e~1Ec#sZ%7pUeG_yDN%UqjAHj`3 zvxFNjhE6=yx?=;^v2%`!8^gw(a1a*TVHxJ+0ij&)aMLXWj0=nOKS~lsdOX#4VfCG%Wt7d==UWw1+Pu$%1|k$?($@aG+1 zN3yj)8v^UpNsPmWtS(w|4o)%eyqSi!jaRHH9!jD#tlFQqVm6LuG~mSL2bYUf$!@B@ zw5hF3iv^Y-l5A|ND9iYw{milK^bX8tb!uoZb5o;go)tQnc&AS72D*s3Lo5J+FH0yy z5@6)cVipDa>CIwA@_i}aAJ=`NYsngFR)=`moJtw-DkHsovM3JC%c4Tg z$UoB^Rvkv$i+Nbv4MukuMsY-2Vfp6cMK+UJ*ax!sd5abu;I!Pbw1i*goGR(Xv2oDn zC6ma3pJ)Lf>%bqEp8fR&f=ILk?=4UW4^(On=r9GGHGxM&E5FGns?G)S34$Uw;Y`MW z{?hg$11DUhHCmwn3(7@pX;T&k;MUWWBk->N9 zah+XpnPxRyt1K(?e0!+$wzJ;X`Fp6DP?>w?4sx6+rVf`UB!OeN)L zyD|~%Hjy7Qy5}}Q{{TV~=s~4Xct%6)4RpL4>~A5uTBvoh~Ou#i&zA#r6U$!}qpcH(w>VW$_)owDF{Ebd|S zT9C-<*|wJvrjkgns{s71a6mUfpOU2r`1P%(>{AeHrAJ^1s=3@Vj>7P3+bp*8A`2^+ zVB8RP3jCd=%{tykrEO*}=XMpEu>4fdY**(^y{1cqjvTv|8ntW2*F`ci4<<~Ej;~4> z3d`C?i~VhL`>_<@%jm;;I|a5yX)JhmneF$`wS<{9`&n~(9nVVJ_2oV=3&Qqe%G!Xf z`J+*|zPl-@|2p_tETKg`$^AOOem!qR-EX)d;bPsp*SE!D;}6fq-S78YyzgEtZSWGV z6H=gEg<8NdAWB=BDG(2>)PCXi>w=*v7zx7cEMBrG=v^uO1wo37A zqr4#Snl6MPPpgD{DNTDhTurN_u&H3nqvoYYilT#BhJ~kq8VM_QziBvp1DHS#Hv7J) z)R1ZR)~yDms+h_Jg?S#tx=A^ze)O-e`K>g92^x$T2!3k;Y#=kZ*_#sf&*>riBfP}K zuhQy$B-D5e7#abXT_#{RJIrU^|KZ*bw6U&PObgnk;%H}6?KJOn0Y@XFHMCp9S01f9HsPyll_<3E_dFsZN*({wgP8G?332r zxbvA)vLa`6d$TFru4vouhy1w>dp}vKt>h_?LE-D4S~Bnu8M3_>`0VF>Epf;8hmWG+ zqV2uRr@OlG2tmiw^b;36WA`EH%J!My@+bt}s@0krC{qsXd>gFTvF_Dpp^c69%d@W+ z&O0w*v)H>c*Y8+gw`U`?<*cF*tY0>!-OX z_Zfp#MNgm=HkP|~P8WBU8IeUKAMW{=LS=>Twj`scUv{n()AlWPE&ShY6Y!r}sf?tJ zb)mG6QO8MtPh7}4eyu#&og8iujr-!cq<*#an@GhmAj`&o%!5z8z@H7ooELYorQVHy zJz8)#Q*Zg9hDpW>MkaSibs~h&i7-ZJM%91F z-D!r!B?jo~D&y$d59sn@#QZ)JJuI>DST<|#@#kE4j4TU?@oe&aktIiJ?=R>POHFo_Ilpo5SZ<4VBOIsprR;V%9hd$+6C+7a zklA0B2^H!4>4fk2o17g%+$s|7*A zERhYtM3kXG$?tU#hBtGtRTm2Ruu!SQ(sRKffy6%l>!ywKA+*GKEg%J;`NFjDy5OyG z>t5JgC`YLIh#JM}muW%)Wbjhbo43C*B(_H6GsWt)sbcL@@tLBZv%jSbw(7Y6zmR0j z`npU+uDk;j7!_e6QVfk41Y_U6+10^8)pB%Yz&o)*&~K=CUTR4()qw}IStHIn1)mN& zCgioxUwv{oO6z%~Nbzm{i_m039XMn%cHA(Yd3v)r;_CEqV!B2zQ&+y{h3FGSD*O4* z+S2u1L)aw{3mo_|mfc*8_Q;IsFD^(DZ@2k_lek zu$fet4coEGYL^iyk}>-}@|L#8((QHO=||cS&|aKyP|$_yfgd^eMs$w#bfY*jHv8k^ zb)S8C9B3>fg-ftBKrzhOYi7$|mFSn}Se~N#R|P%vC+2@rw)2 zbOnWorBIa-2uOu!oN=+IOaZ#8YNMRljkJ%B8YIYTgBS50D^_*>O*-i8Ry}mToWUpU zS@y(LxLs@ftMkmPW9hbqHFd{Sw}4{;TNW%_J;MJdv=iZfgxv+djy@cTAdGjZ$mA_J z8aZVtFqJsN@QIg-1Vx*rWG#L;JjM9X!g{g&SW>EQc(eKZ3s#BuevzSA@UKZ#`KK3J zv#D)zl?w4~92qYk{oxzFYLt4^>9OV`c{+y3FuRoW*80nE^S%A&?+;WQya|t|M1o*- z!wTn)>}^pncSPCI{P+iWdi&TAFDbqiUHhg;@}a)#-Zhn4 zSN2bR7v)nZn0t#~42#?!vy5_isPFD^;SEUya6Qy_FRZ%fnX+Wxqu``wiq2UE>=QeUQoN|%}Fr_c936-6h- z`jwgTP%R7^xF;mHm6;QyFQB|HGlY+~pZon;m^2rz6)oVfQX5`;?p|M4iDI#qYhIjR z6pgEBE9d=a48jrrhur<{82%udrM`Nw*L`?0NF`r8dK)zE`b#Y8Bq8rNLG)sjc68klz1*yY3B`C&~6tQ*qzfEM9d02u~ef zBi26CyENY(^NC=NtV709k&~VkK}!4UxQ1yhL~&su?A$|mKG)p?C`Zl{t1-1%K-vH79$_9=H_L^=#NERV>an&sF2UmVFVPiQO0)o z?pQ2ocuA=n%p`gXL*s~9Y(?V|n*o4^_5Qh3()pLIXA{Cq5A<&kOlxDFMfe(H3A<~E{@XxPB2vSf(VW0n%FgfSWHB4LfStVZLB9? zK|~O#rSW)YFAVq1snxptItCfQ9wN@ahn0pLXBz+%sI>vf($+ypw~GRG*#7IH=0+vL zY8lj-Xnlk^xqj{-`yYM zxvno^-$J*Z^mkUU@}JYJuVb-am!o9gI?@`af@HCuRu+BUdb;U35Jab3ueQOZ&y6Gx zg+b~m1d=c#e5eKV0@Mx!ar14>mS%|~SytuBd?;;}aW#;dCIKgP@7jo1^#T@f&v;2l znY80zkxkkkma#~)COLk3dh!7R`-1;qK0}I(xd9F~wbrrt(*PL4>%kNNT`VyK><3VK z*)Mk;_()uah~zkc0OLI-aX`R9^8I<5r16djyB7u%IuDqL=X>!e05I^{?iYDa``LY1 zlT)yrG273%!C*39A?t!8N;x$k{e}$wcTeFK#er3AD}dDaJ+zJ;f5;>k(say2)cksZ zRo|U@-@FpQxOvD_%GBy)v=)f-8~F<)hS5O|=Nkvd>i`SP;p|Whx?KQt*O0;koU8yB z%>#d>0P+#J@Q;IQb^sEN-~b&TWT+3JhHu9OAn(eMg9zh%`=Lh-Y}@haVgfq{hu-5{ zj9n3jljMPcVsK(uL}xGPS%6WDr%#-?t3-ekKOm5h9|)zu5IePzopW@#HY7O((?X*r z$6a4u_-YF4xw6~M=n_nBqJe{!1YQcH7Zc*hwCH7Xe{>b#hJwJ$f)h^&U1WUjI;`HKK zEM3GMABK5x%7Z{@1h`2ow$lw!rT`z=xdg0L~@Zr zy~U0Pm0+-zu-^~I!PD>kZ%Imov2$T48UPmXbR-6N2e>l2Lz@btz~Y#iL;1-!9D;84P=O2AYaKuM~M zZH~bH86O@PkQCs|;|Y9j45oMpR1SKplz=IqKw9I-7wo~_X$ZnRP#(v_XTWn85&VGM zQylA-62t@&fwhB(lFJ%-O~IeRxPMMG5=3ITz&xvD?o5HV;FY?pPry2ePrsfzY2rZ8 zDLkb2k=#jKP=X+$Btp!~Ma%;X(GQSDIB)F%$c8ep#hk_ZL0>5Xvn1ebjs?%h!J>_5 zV6tbS@?3$%kTX$Q=FhzhLICi=iZ8tmw)Fli11)$SVDlJh$U%+Ab>M4ygV5BKMt;f~ zXo3kr!Q0GyQ$*0&&&7!_aODT8px}}j!1J%*=Pj=p5Y{p&PSS~;ex?y{daj4-Gyg2z zhV(R?E&?P@R9I#Wq=ZI5zQIXO!{J;&iU1&d@mtf=Kr&=J$-_(*tL!l~{JTMZhc>W& zG4l&Y$`kKmTsGoDE>(PUu${Ll!%n6oM%D|qteLuJl5EC9xZgS1zN_d&6-E@lgs2`F zR2;B=uVpmYep=CET5MzMYs8Pu0v(OK{d}3 zm_M^ZurydCT193&P5iL(ImEQ%hEF=P`niqDa|CGeX)PKTNO209fkm-r8Ys8a8f50r zaw#fhelVn|Pcg0&xu`4Rs5ellr-`n%h^~LWRQGncUih${3$Gz_y5<{ewyR2&iO_ec z=!X01avv2_ACm^%=(-&kNB|ZSv(y;pV}YP)N|bC$GHgomX-dm%%4liIT58Jq+muJs zoG;n@)v&qHr#a`a@!N2tfFqHqVST`o1gg*WLZ_uJlcF)RrMac0bqU?l{ z@A$O8YHX`hX)`pf_Gqa>OjqsZwH*w%?fG9}3$xX*0AXlb7|EdGesarU&M zh6ah-io{<=65b+-Xgf)yI!WQ321_)b!+UJ7n23q`RH|w3Dm# zA8?oV_JPjr7L@9yi|LxNX`3_bBJ}FwQ0;zp+YO`bc_G#F65exQ(=8U$&GH~?f6}Fx zg_Ni5)spIc1Mk%t=~7>|Wuon{S?Zm)q0zVP*8P{f&fFK>$3@#G%H8EpQ}Z^a;XJd= zTB_d_{@|_a_sr_|ZteG7?)Sg#|Bt<{tj|`eOJ%wDjHbWZ@L%>i+QCGr!6f)U_Bs#W z0lT9<2mJnw<$<&Zd!5wKSNKq&@6hMl!LZEkx2*$DuLp~1hpVNAYvIH7_=DeChZL6v z9dC!4;KB{GBVAG>J@Apn+hL4WiPo}#?;`^Pwmr<)( zC=`Cn@JQA6AJmTT=w8<7LF?$z^61I!=oszjkL95a{IN^lvFog{Kdoc8%VQP8gTKnU zQAcAKM&l5_aqR5zL)y_u+VQQ{Zd^L_1c~$nsnNvg$T-3A_#?Y6@|6ktyNL&TokH}) zX4%Au>f|=}f9!R8F_SH}lMeU~fs)C8+w0IV6N1vC!l?15|FYNJ-%gz`PYv7t&-Oau z*oQIw|6#8)^_wv$pD_D>$m>4%&9V{vZ+YE2o;m6Af643U=7ZGce0k=A{pKUG=cC%@ z6^!QNQ1b}7g+%EETci1djd>xpg^ad^td#|p*o6%QQ66eI$7r$8Z!ubW(I%59wS4he z>|!O|QZ>Qschqp1(NdW7Qga)6sTDQUC_P%Xve+TL++(!d=eInNy*$*mJhHOPMz`E` zygVtrGHtXn>$ftWz0yOlGEu&=dbhGpx4J34x^+Ch%(J+iy?W5LdbF~75<9(1xBOFj z?YGg|rQaHgZf!hv?RI7D{%#F$()-7675H`?;=hg^w*r2)jc)w0GI*0dcV})*m z+<$}8ex0;^V=sGy{(b}6zDoOS^Do^doBt+9`!Y-W=AZ0M-uq2{!Zq$^KOWQn5cU7T z_v**fSDWIiKc1beOVV#i-v4;{cI%jDOEG8biT#%9>Xvl*mInQ{*0b$5Z?|>)xAk(i z4cfQitJ`nyw~gs{OrGtSzSY_>_usM1*|Bclv0dG<|6kO-Wmwby!?*ug03)3eBIRfl zP*6$)oRlL)x*gIf-7&hQJDk$p9ZtGbluk#3sDJ_jg1hJMd;PAskL$tz;s4%qj$=Gv zy!ZN?@ALe#>CCp}DzoKoy5$+T<(cs#NmnT; zDPn5lzmu+xj*kBn`7W|JF7o&*KePrJ{T_W~A{$j3f^J}o4;E(?c z=Bn{9?1WF7?GaIR_%F=WpaLP~8UE<7a-qeUh`F+Mq^-?+J>B|?xz@}zvhG#yGWOK0 z^hVKMC!uPrTN_Mtxx!i5TE8)B*`&BU*4D6@>M zw8E%rF;6I{G=Lx)5hM;^WSYW(ATS{u==jDEg4jK_d=`3xO$P@EG3=wY_$8z0Krp6$ z901dRttGI0X+?+L{SM=bBV{DvAOuh|;t&a_;Mvy@aw;KCofVSOjr14NA)3Lu+&FyL zBT;}8Od&AK0S2quSVU3?No;6RvSD!`FxQS*6pRar0kpDjAYTTlm+^opk6Tl-q|R>O z(#Y8QF#s7OcQLV~l@0jEy)Ltg$f`F$7T=Y;@iHQnCvp3UH>uJ_fv)B7MrGso!YE~S zIuH66oE%L!tRDlKE{D>F@0AuQ3!i}28(q896e=o8`v{?t!Ogh1krr&EdU6(B{;aOO zcA=uE{SB=0MR{q~=ogf&W^sPU_m@BJWo@iTu5&g0|jDucZkCupOp#i2ZEbmsNRK0qxxO^ z(FB=hK-GlV18E{SEhAk9GR#rJ%qApXG*7&f6xL>#osPk$?^Cr30h4@r($%T6^j4{wPmyC2_N)FnMBU@Hp z5J{)E>%z0-*){^``OQBS;mf~Gj|QlPYJt`Qt#{pZKZ0oPFQqo;9ZdZEoFDWZp@+sn=T)Uknm;IfaH{>KdUm(-=|&)e5;HaWTzK4CAyh zUPB4>&}C!7jIObh%W8zsjwOckHol_h4V9x!M?j@>&8Q#aWv|2_ptrd=uEe+Y(Xu3k z$&Q&_esm&#GXfL#pl{_;q<+thd_)A7$U~UeY(I};UAUUSYsTK*ewKFOFz5ep9nK&8 z*J65*fT7}Ikwy(M!G(Fa;j)(*{zG;6f0en0|EdlN|4gPzBbwQ+sj_?^6-Dfj7SVP1 z-_u;VMesYNS7_IN{4<#IHdp+sMVX?&D z#WZ^&Yf5|g&WHbS9Zp(EYSq8@p8uJDGPWhQ6`kz+J1d`KeqsWoGj?xhHTc^srXY4}Ck7r$fsgp2}HBzctaNa3bg>e*zFSW~$^An2mV)lt44aWX9{>p3oUE;VPh)}I)ee(aQ1abMovsI6_fZJs{mIms}M9Ac(Jofg0x zRiOD#bqBwt)r1OKo6wHVDlmAK`+c)Fzc&YAUc{xvQkTLV(2yK;-SmWSb{29w5ZcUX zsL1wL3pou83EDIL#^GCj$HXz}V<1J04+Fa8r_4T%fpQ3eo-;GgbFwkiVGG|TS*)u> zp8;X{j_Yo=@FkTHG(hg{DB!pMdNW-UhCodx!0{%^(|DwqMA4-~SMA|g@uD(yCmi(hGj28ok##s#axpD-PYC*Qh-47sa>)*5ktxc9CYZVCk}o&oYy zwT0oraU(a6T4ADm07!pKpUI}EazOfPl$`AO1O^K~tmP$c`g4Ju_u3iWd zAw+werv}8(7D9%=jwV+Mzj`Rdu52XfbN7~P(eHJD0LB!`NZ4w*Icy5gxIt|_@20_P zG1<3VyC^jdGwt^`kRN8r*oWv~&13jS%V@a`)`u~Mgd5N+SOch;;vL^>JJv|b>?CQN zA+9weR)MuUiBGcugw5wE&RDkExYMuY+-^F=*6^cD0N*c znNB@C?#ej&a$MBBa>RBhJr?D93HZ#zn8cy7&#}Z-I;McXmEbK3Ko0REx9bx@ul+EI zd+JF%-bq~w8cQ6L`mmeD`y7ukpQ-6_9XAGZ!ZQ~kWU$?Au2ylbfPIepw_P74D7w~r zdLiI^nri|)X9MC~dkV)`S+aWguZYnhR-@=$S(~CuwQR1?L!WsC#KZoB*yqd$a>Z_{ zw-Hp>9}mToi5p`(dV<>0Q|ojoe)3mztaB*gswl30h8tN*PW>7#@Cgq)X^o*qEYb?> z9FRS=NG1oKY%n03xiLv#2A?HTc=n+9_Gy$w#Q`K2PfB+kndOHDv*h7>XR9yXJzszz zjC8-NL~sR%BYuGyF9soKjHM3CX&m!c(&w8=9JJR%m?yEaY=MQ7@utv1e%D8otq;rF zywplxcCYokYg>y&JA)JPq#~u7pu_GVtk)ulH|m(HQu`=f!UByj6E zDEf|Wkk25B{)$C{Jem{3c^mb-!^8e|&$9!ukg#7I#P4JK%B(1Es{Vhv|mIxr23np~~pk$wB~5xRnetH~_|(L61RZ2E90X1{(@!^a59f zd68m+#1aLlutEDI;H$0l9L>RpqTZ9u?2~Dcx~)O8Iwr!p5NULb0{U66WuS;nD4ZL5 zp99>bcLSmU7Mu-p5|cA0<=iQ9c^4k(8)b3(_$i3T>dGh7K?IPy?P@s4E>`r63<(?7 zw7Q=hKb<1rS!^3iM_@nOKrIZSmi3@a=~m^I9vQVPZUZADws$9y|}dI1aFP78yeL*nQnCcG^# zUG@E>554>d_&6O>KNy%5X+ch=biiW+b2Syp3W?PQZxkD?>clPeqkL?9M__SdjNuC7 zDe-i^b6cnxQPb;IToRvBp>Xg}l(@Qq=BhrFzcivN>V+epHM@pWJP&%4EI|RylaOvC zzO8@Erz8%5nLnBH9GeZ5JOyl17+ir9%f!A}6bII#L(ApkCZzVnK>axSNwZ$Qeo}(A zWxNFsXB&Z2rYwf@6m=;bxL+S8^uuhRG+DINN6^-R^EG>_O~#CeMYuRH&SU43l@%+W z`d}yQ#Z;UE_F45*lGL4erD1?{LV3(fHlvA?JW-y@-9YCWJN>q~{cM1dtraiaREsfv zP$^wjC?Ryy=Wt7&3vbZ90})TmFwIN`*`$}W`FP(07&jxKi73WXADK-N__d^$#K6n8 zQp{--q&D!9Cty~br1T4Qp5}q}$qm#Gvz>9NYV<*P020Xo!ek+$_c*8(!zAwk%l+A^ z+u3!noCD8Pxzjj3K9?r1e9hT#t7&BpMn|(pzOx%v_^8kuH>{UuAk4x}{9kencH$B? z36MU6grC1qq%8$;VIeZkQJ3@*La$;jd!s_^$Itgpa*gH+cxsD(JPIl*14PCljlVcpPSK=^L82PmBG)h;%3v>Fgz^ZA z!`m<2n!WWAc!s1vFZ&9&f=S|q_X0q;q2>@@e-0zE%bg^jwFp zTG?$?8D)7(_#ie;P~I~x;%#XW^HR5;m5Gc5jAyxgpO?06vr?IhlBL1mo5-(tQhU6ztKEG=9;_b8) zbQYE1Ya7xGP@rGwl>og*){IvZUk(5c*+4@HK(6sP=(twInb$l!(<>P;Q-sLb^A3MW z&iNFX)nj3#*a&mZo}6wb$GP&w0NjZH8NNx7*LsAZ^;#;h%M0b*C&&a>#I}$&&!mQt z3)#HgbT{;~rG`J3IYWuH>| zr>spFxmhHU!!H@DB0HYHJ;Is14hdy0EI#bWJM0MMx9;0T4KXW^P!_)%MP-wA=Gt`) z{8p+D?=)-e9EwiV+>jxz@u(=p9}cLi>_54Uen z)K6Eq!LR>uR~1qDcD?WIV0gEu_20#`sWG>G;Vu8y9uZ?gZxOUtJf}xfvR91gBJ5O> z7<<#X8!dI-tLWdCMAt{%*^652Q_p?Az3>*H(f8Q6UyP-1C$?M5q2Jh{PrtHPb+P}M zaqm;rB6+C+o5dc>#Y(f>0jJzI_MLKus{PN62fgSAZ;A|hb`Hjc4}PiW@n;zd+!(xA z7zptnGFKRq^B;&>9C}(boWgkA{uTl|Jm6 zv!5%k`6&^P#KgOc-zFdSHjbpOL#{tk5=RcETa4CHsTEd^rcJi>Hl-ixsYnCh#;@i< zcA7W`b#Xi}Dxmi9n#qKN5@%x5o5{AWu`=#`3q?wT(&&!TJD#MEooa8Wl-)cduhFS~ zEK?djL`f%(tsjnUP^smOM)x@oS5}p8i%Lrl5E>YGk*xoRft|RJ;)eTsY-(ACj_n@> zKW+_3l{|!N^jWtDq-P2xiVon0H(m_@pX-7v%5$sa{jND$iHv`YDbzaIGGKP};DLXf znu72mCSH@K?-sT?>rY&X|0L?3Ed1^1)x1wv;y-c**h_VFifPC#Orv>Ntz($2q~VQ< z@n&^)9uNKO*&K_ry$obEAjMPYY3oTc6qp)MG{J(Y_XF?pe>(JfcXwd|X)}@iYr^E6 zy+OQV=<%nptCPCcAM0Xf#uO*T;C3SNjv6-z);IE|Rs^gYJtno(jOr~XJ2x^l z$mh2jaMn)uI!tpVnu?$o`&sRryBufamp?hWHwc1HOc-~l-=K~&dmJJ5j?)6omS)7q z%g*l()mjIt<}Voqsg0IBYE-PBBFrwaEVn4kS4&R~1mN#BtNdP6%f3)5UYaM_nmd!8 zFIocN+~AXAD{;V7@z>ZNZbe!2d<*v?*G~FLm+2^%V)Bj(54ugP_JarlZT6?5UzcuF z8_Z4r`E_&j4IVV-xPiW@?J61go#nLYyCxz17YoNp`pfw1dRsI&53_Dm!|&z0qv+!* zpA*4K^m~bq(PL%qM)>|`Rnl|*5sN3r+hN82cL$SL+wgeZlt7wy(l{Xf#nzW77sPuH zqXATpw4BG%3b&K{gGPg#_kn`yHk@#?RPVW%!tE8~9oK;`MgvAX_@^NnsWgZWAL!O! zYJ;iJ?y)?RZ#P`sjpp;e6Ht{G1*xsUfz!%|4jZu%a$Ng1L-QVddbz*1R6fKN!Lvro z<#+r&#)swoXP}C_SpN=@e)WshI@{tu0p0Cws%Q(a59x<9HSh7^%CXlPImenTyEsIC~>5$#I8o zEPi`j_vbsSDfk;|Rfrd@UfeocuAB(P2>oPEkVG4aj%qZLFnk7089+d9{` z{PlIK=KX}LFBbA$3~yI1iuYd$nwuR!>wbq&Ilmk7&2x^g{$Bm!oq``@poV&cA;k?N z9wD&s5@br;wvJrhWsfi=s<9M~`Y@RjMDp}7itT$uLgnb9n{ULIRY$8Lf9v9+r*R3} zlT8Px<89DA;wK4Mr1qg}^JNyU@c^1gMB*2A)pwM4 zXmvRus71^>vfQJxJ~PRzG2j<@tvBH9J&|PYcP#Tk1Vi!6h*gm@GSwf`SM_MnRkg zA*R5=$sW$Z9j+j&AS0G3O)VmW5Dk~15yQTYKx8V=@G7vUg;%5(yb2eikuEHij&D@p zrC}FQkS;2q77rnWDTqcjh9pLCAjD&+qHEH)IWn;?TBYB_PK!~`Z8j)yF0pgT%BH4g zic)`>FBnYU2}gv9t%fB6AII|HWTiCZWh-cU^2?3>Vb0o75s>Sgiuz0s!HjR!r&o1c z(@`*p_9em7q2r4Gh%_5)L!)xU<+c~gXt&h#M68!>5Y<)%Y~1dvvW&4mXBg4(iffU=sj{$ z5m{6Xt*LZ;*TUMXL@jz9dOJ(lt70!yP!d`|*5MO#e8 zVR%9xPCkK_TGI9B=BPfk2i69+dnP(P@FLduqm5AOzd{xX~(I zt=#g)J*X);SX?3=Da_t#84dGXT1QEh(#gd`xScuD;oL$TA=>X3`$pB6Uf?NW0@Ork z!Z(67=*U^=wc@!WTfHg6xt_@uKscaW;G3dR#}vY{a2rawH|RbTIeTg3OBX_5c~ zN7lPAdaF|v)44dbu@H?#VG?<`<+C+O8VAeh@M?77%>C?sSt9iu3<(!E|g_srq(=179b|9b3um+@AWiF;vXnvGTpsO+k@4 zr;2YzVG@)HEh5)WVU^>F72n%Cns=+Yn<#wkJ=(hM_ae66hiS|GI^L~OZEo`G^&l{u z-_|E}vkal;=1SS`g%hssbsnx3+V>H%(AFBfRG|lhh&P9c+UyxDTI9@EX30nPwIPpJDNd9nlwz4P4gem*_2cr&)-SvqMdOV6#TX5&i_rUnqj8u*Rubwi~S{f z!ul_K*j1<2agq^-79e{1zxmVDRt>wCva2jSNFekj@F^Mj#5NB7Tj{NhMjFX7^NF|;z^7d~=t@7HR^^T5jWmqdsmYE9mK^XuSk!tI?8&)=LLeXa@m zb-K6r=IG-0OCaYe4#bq`O(KN_`(@xrB!xVw{jpH3t8d8-h1}^ov7~|-gtyeb<1Vb{ zSQzEip3B*Z&$*>uQEa96(6?(i3i`jI>SgG?HV?NK?R-U3lHSXDHty6I%5)xxl5Zql za7P^)!&}7qxFiqk9{Infd%)0t!?4a>MIh%}^^gLBM?K2u>ubhP-G1R}Y8Xo*4l+G7 zAl7~m|35}sa}s@Ig+O;zv{fMsoG0<0J`E9bT{#KPNEJ@B{*B}K7v@@@c+Yv5ll__) zh4Ej^b%RR}tMp*?n|p3!F5h3wb>s<2(K!cgZ|2Bg+mG~CI&J}@dLp_hNZf2UIlPn} zXpz46=q}6^$`~HIe(}u#&b!&WMx|Ev2k-l#@5f^JDZ?vS)q-WIxAafn@^8}tmI%Iov?^bO<06s z4}X`djhvAuIWtw`1HdxI=)K%W>`)z;0Ru2|JA*`J@nAj$ThycMV5-uC7jPVo^d?@B zqL8jAEQ}K>P#a7cH5pGkj!{|g{*)nu2J;7CNVFw`U)Bp3GY#!9Dfv!Nsx}qY#BJPv z%lP5)JO=diW(YY$Z5pWnzS7!qfMeXQICCh1mJ*df%>bm5qKe_{5`&Tq2zt$JdM0-4 zt|9~O3X>4Nl8Wz%@c4+n63mPMwTY+2)ZZKyeUE_YHsNkZVS`0I5wLWdV6BZP5Su;+ z>1DJzRp1I(LLE(-J{wFj-wNiSe4_cXmvl>M9)kQlMaQB9R!zzUqis zH4je*^+MUuKA!&YU`EnOyS z&qGHcY!)~$8vzy)nqat2r3#S9B|39HabCgOVPPyoH*c5usb3yw;oNPSFsk5U);oyS z^*4z$s4`o2XuVn!#0`4d@Pq1izNmVl8ZG2(KEuGBqcTe%V1UhlkRQUrsj&1d5^)C+J#E;;$k?3TC20uAj8Nz1IX>M%OALelxV%JM62N zXh5@d(XiW@?v#p4L#izdf5dOFn z&o~g_a$F2pphmc#AraGa&30c&4_QcuJJ9l~wa}xyHr-=#2Wo-aAwvOV50RjPIf)I* zlH);zSxkDY(pU2zPGQn$Bm`|v-XMnGoO>Up#i$`@QP)AMX7~gWXZ|y1A(y+xry(HP zl{OA8CU);SrQgibcNN6_#k;S}$%t3y5h$GoIUr<~yGxO39r5+7m=o#@grz*dx22f~ z_InA1J|;r7@CzCWR=a_tSD zrpl{Y?HsO-%qh)R2XE6>Mnwn%yKhQqoc!Tby%D7#k1Jhw|1dGjzLAF?!<@;-2x=7V znTku)mR>5GBXPh-VQ|*DPLM`#2HDwz2JQ%HWuUZS7=^lmaK;arKb%H=X^rRb07+>CnzUMi^a&=W&0KGAG);V9BX+0=oSdbN zVmD1ds-8j&0VY=j$LPR1N@$#WBC0tIz#w1ZXR_pFRviw`UU9HcmWSb02&b3!9iddY z;drfZurLN91o&J+KsHOYSn;X1@#gla;M-_z*FuoeH3*B4pMzy)-^ap{$47F4#+mchptVhVNyrS{gNlU=!3OeuSE>iOZ}%? zPz4)`@jIE3hnZ0#4uQjJdDe>Hk53}qROp=3j-cwPZ9YLhSwG|@UixIWugC1mXBX{= zm!4*4&}BcB$TpkJ_J!oM-czbSjltOF_@xkXaQCvx$safEkDi=9Tg~qkU&?h#QyYt)2pc_$v=NvW++LJ`an9OXPpN7q&U) zT2h$5+a^}Ioj-I6zU`9Vkd=QlCw^x?04#}x8e&O(v9N3`MLU*i9!qnE{oDfXrGJ@5 zu6TI*a>gfr%vSws%&UR2SImaOtY2O=lfP!Bh~+xV)x7eWKIQg}vpl8X{5|uC+h=(p zh-}Y;m}H%T52yNpSq1wdFkYcTdBZ{;=R#C=p>lg6vCgc1R;a;Lq$ydXZCIr1Tcn>| zWY}J0JYQsbR)l6MewJORU|7tHPO0xBuy;n&27D~0LAyKqx={(0xEm7l%q8C0CBE$? z{_`b)XC)Y>(h$i~VwgF?w=^odG^V{YZoV{vsl@q9aX>Iaf}${Y=0-9_S@xIGzmev% zGAvX1YsvCL!}4O~l5C2yWXUoE?O1zX+KRK{GRcZY!wN;O^49E%_V$Xujpmzf%}kX& zzHW8OWfwc;HB1!&!j)t5mG93g$C;{#jpj+is%hV<+3c$M_Nv93l_Mjtz_7{+@`{o9 zs!iYO?d<9=?bToBtG}OBzdNfM@a12XtX@B>s;8(qYp*$%fZx?8Bju@*x0!uj z4@lNlFx65m)YAN}g)`U9mJ@1|?J6(YXvvK77*y(57V572u0t@_bNsGlHL8c$*Ilik zy;f1jY+rxtcfAmE!=3vLB1R2jehm^i4U!!VQVR{NvGq49>iK_{r+#Tr^lL=r5UazD zstb+kzZ)wk8t;tIGTWBP8#QX=G#Pd@853F7-%V=#Oc7p2N|_S__apmw8nI_{>5B>xBeIA z8e1RC-x{jYn(=>Ot_!VJv3x}Q73SAo{ky%Exr2BGz0s)SXLfseN4s52hqe8G!(3mF zcC=M=bl7+H{Tp+|*>}puc2-t&j{9}Z=5)<>bY=2)k;-;i?sgrIbp3<5zU1$AqwJQe z=w6HM-e-REgZa((j#pp#TaW$|bN&4WV8MZQxE*f(VV6LSUU;wDx88|HeB zWAJ}-o!F-_?&0z8;q%9_v-I5fH|EOPNgQok?)djg>G&f(=hH*{}<*eN$k^9w&`~E8!z^=<@U3@PC}1$n;H-N#ax%~547i8 zwp$!2~I{y`E_V0@r8%X#!=9(GTpHw-R zwK$yruSj!n=WwCGU(EGyq`9)KaB;+`{%@q2h`EM+9cexvY0MpMCpMbTdt1&&a~DVd zVy?NPIRCK-v9Y*eBIcU3IQAEF9UC0?e^+GuFU<98@9g=zH;eC9rQR=4z27AM zdm&=3l_OjK!d&-RKKzjSaA^ELFxNll9{|>Iu=MzUVy+Zj<5WxIG#BG=R>l9oTp0pB zGUk0`>iX*@_y=?S{~l@PX8i|kBq4HtM6{8Hh&Gb_8*OA|W#!=D;OFQ6UnQOn4i3bE zvY($HA?rFJn}d*dlYqTNczu^pbe~ZAfKVn&s8S)+Xb|dj2#rRBW;CJIg3w`4=yoOG zJP5shVPRp!vT|x_>VKyjiDhNNKqz4-f-w4m@IHm`F`F<|K$s~d%vBN=8wks71bi1! z<@rxpnTR$L)_Mq=!-VbkgfA0>@AHKH<$vf#!jDzL@h;(Hk4QHXPJjOS^XLB^tnu$V zC8CX7|A96}aK^^Pzeq?-N=`{lOV7y6%FfBn%YTV|^}3+2h%>shth}PUxVomcuD+qM zskx;!v$CTzrtRMb&$_PRsKK#!@BbP+vqw57W@hK+7Z!`Ax|de|8azLaZ0>y7{rYXW z>ige}^N+}*zXs3Q(DT0r&q{6^?A!lg@bu?<{klJv@$SDe&i`rfR7#@Ninu>q|IbP$ zQdZB?oF(D*WpVg!@w=BFd?{F!8%x!(sQ4_ZxBt`N*h-ueB;@)aDy^l}q)Wdmz(}wHK^iBB#|_k9I%5c;@9HgaIZ= zNue-AE!H*!M3s4qQ3G=`7^HiN3QoLZ}sEE~x#%9n2tZwUN3Zp>IOex?LhN7H}Z(xnx)h>%8!IWHHreLtV z-gQvty(Ww+rD7Tjm=b|NVpQ)rvw|t;5V(*#o_cHX+vJHzuowp-E#kratSPKtbP7WN zWbY8AoDcq>n3Gt4Y~vDcG3=ZBk-;!Vi41vYUwW7^zhjOJC3YPR5IDkx| zACn+V18_!Btw+7m-We93%2SINFUkTpW)!$Z4|tm-NQ=SKVqV(@oyJW z?{(gx4^7g$CF%SuhT*In)85^!Pye!AxyTVlBZ94U%C&fKr6Sw|mMe0by!5vOVM?>;GEGzIiS4Mj=DUdEyXYihu%S2#kB(Bm~9@Rqy#Mf<;KI#BwhG zTJwI1?pgJos2y6)-I8u!E}E!qT@Dss{~*E=(AU6pWn9J zvZda;7R4Osx844;%ID|!quUpUlX}FJY}UHw;&|pIGK7bZj{OheWIf~gpVRFU;vwj3 z%if>g`^1^-{BY(u;o@YghVbY7*WQ~GK3o|2pGP<_(>?~KiUnUC!jVeu2Zc9;QL~}m zQW)-sFpgnK#cduk8~2d0P`!dZ`inO1hn@a>%dIig!_dATE)@5Qpv%|GM7#_xF=ht4 zVRo7IY(El7^%}mhm7{2E5rtBHeIy$B=CM9u#!{ zEu3n2=*Q*yq(qVH)BrLRrT8N$eT)mZL$0LidWDdjb6&{)@Cx{e;+@oDs&zdn%@OT8 zSJJ9;*KQ79QIYGZPj}AUP|OS&MS}4eU2&XRL!U;_?+?-k1lELzap!aDm8@7*o>PZf zfOHWVky9BAio`>hG4Mbx4GfHGJCykxnZ0gLaW~fX0UaYgk5mE!R(4juBcm1YEB89} z`rWsTPW8ab&zG0voq>DTkf1d8rvY^EcYpE#5UB@Fyr@jQO@up$S3d!?Imzl6Q%CC5 zv3cr*#X!A90)Go2ADFc&LAX+bWV~rWG{DEzT;wYVx|E>m%nCVi04Qxrg|EBS#ID{h zfFR#e+i8RxvY=lZ7lJ%=4P}_=1hIUC4QncU0K+ud5X4ctb14EHN-EtHKuKTzC%*u= zevX0m-`mmPk7=-4zEs8`7(&gaBU3DUR!HjV7m($24cNiaM*Zy7+kydeX zMP+vQHNG$;UVl6hQ_JZX0sS}}QWf%D_V zl%F{HiI>VulkxBcTMYl28;PkQZORkSQsbAApWiNCt;jW^_X5wpKZXV=R6E5Ah3!B+ z{6(GTRATXZOfb=^<_&?3>)DX+@9*B9E9*PDabqAc7555(`M<@VRh%psFks z%~~)ITrBcxJR&%+Ag}+Dq(C?O-aHMxoKS*W6ZsrnAhn^nYYXK;0oT2lLsC9nd#L-q z`O>BZCd}nHfG{~r|7;5~0dHG zg28`Oa|zHz1L-$3=lBAHlOHBaKnUAmue7<%89P(w4EfU)W+q*ze;4V*t&qw75>`*K zsDAFNpNBtOT`rkNltA~Tw(rRpI4$Ey&A4$KEz$=%a0&x*=fQ*#@-Yz{WdsF;^@m9{G5F0$JwR3zBc_4zT}4g07@i(EYg~3ASi0ni zvTBLT{ICL&c|2!VAoDI-4-(l>Vlwd=zOS#^y&wwaie0&D0YMlmz8@gjxYJ+fr?E+J zUnlc_Anp$+@=g@8^%gnoCh1WyJSNl7aQ~zRB!?;M15QP(%Uk|eAIWrX1-}u0Mur1o z8UrDK$#-#?32|LbR8VHIj5r!h4c0yo2Y!mncv}GoE^Co-b_EE6j8EI6^~p_Lpih){ zEkYgO34Z)Ac)h@t#957z@j1J-%tTA@mPm;8P*D0n;EgEvO*b=6EC9trym`P^bweuB zwYZ(ZeM$a$`hoW)bfg*GMQ2za!rbbPo*8AJ&5D86sMssVzLLqYcdv%u6F2$-3SJdA zSmKeH8;s^}Mm@jxEQn+`WxWAJj6PX@q0OfOLB}YqqNOBxG&hOP#HY8)^!U5$TGMdMZ zC!1au(EtwytlDBOvJ;Sd>YB3&xa-D)#W~r9z=A1Sx@5VRDa@i1Ks3c;x&!wleb z252_0`0@%U8q6E9DKdpch|aMdg@HK-Sg^J-Jo{Rb*?KbAm!!v<+d7sfW`M4zns-EM zhoz;jYw21+%1Y$xRBOFsIipYoNYaRj=>EOKW|^IbaSxoOg6Okbb<{J`WI~!WUsxKa z6iLP^80?7aKMgnb5rrX{7zs4B>`t(r3rqz4vi4z*eGsCncgr zp(3hCvP(fG^hhl&MNizh{M)wlc1apvG`QN50Pbxvco_<=r8kHw(icY>Y{?tFD5?Ic zEaSr&wN~)-$rIUY^r?rEXv?98ytSI%$BDmVw>clOP|KWJt2hm4DA(Pxs5|GD<%NR}x$2t@!C7_>aiS7}{PlwJ^@`ko zS26~9?I*%@5(^D7e#q9O*HXV5h*Q`pZDUG|kRov5!9tUMN0Yislj;3t8RkYg*=8G~Mk~rD+l6L{j%MB6W>@|O=g}rNzm`M87PHtE ze||OJ9QFX_)~>@AVUE^_UFEQf#>fsrYi?@mv(eVX*hepz+fwaODMoFXevdM8+Hyw~ zbBrE5z#7S*bI8|qPbVsnBKkUqkT+Hj*hjm@V`XTts0WE& z5~*EHPrCNpAk?+i=M{RNC(3y7Pnv(Lwz-MxMv0dsI`BG!LDrDVENb&-kZ`w-!6sN( zT0oE0oA3Q5AQA94W|Pla20!fxwk9XKvFp+JW7A|eP4Rtc9*xIow8-%p!z5a@W?za0 zBXE)%MasroF1UYHxFLuh$pyFM5i&DrHEJI*F`z=ur|K7&r>&kzr@2GMJSCbv?2ktC zE<2bAQOM@=Y3jxqsIv4yc&b&$$_K-rawE-e8ynbe_lx1*5^sp(o69zS5`Uya$-jSS zwrl-pU^V4F(cZ;)~$O5{iq-lT5=mIC0VMWF5O(?~fisJ|~K=FP@WNaDo%wPR^fbd0MGE>>|& z!TJ7s7MUM84(#Llc>gpD1E&Bku!u958e7=nFExE=uxVT|$=qMuIl9f zeskYyY=Na~N8tSit%TAwHyZrdLf?vv8z!>e72(?7k);W#q5a?@ZrH^PI>m?zPQV|+H2?iJ<*`13j> zxS;D2O{729ij(e2|HT;Q1-iO_u2DK1A(L~*)FsEna?^b^Cq8aNSGj1&_=zOAeYfup zo0>@e+zwYr^5P?F8KVZPB@rBuW~xMk8O5*#CRN758U&n*#u1$ zqNR}wFZz1b-iBH3opn`u$!>80$<>^-$h&PI}?ze|X5&w0kXKx8oq3RB>Gr69w_!6_1-%)uiUF3QfGA;%H-Ag8`Kf_P-&;^S;o;Nc^LKj4fD z7mMahFR$d_9TJU>4d>;J4-FS-E$6P{lapi5&*c!+cj_zu8$fXyd?Q)e{C<%j+X z8c0cD$NZWrVXqG=plZ)V6}V(^aYJQ&cYSly->n^UmR6W3puUdMMfY_TUpM?j8>&9K6J_4_y|M<-)dB<$1H0!UvcSbj8N7Id#um^-&*i3Ly5I`iA{;8@sh{e zYYD3du=PZFhPmuSMV_+tf8yl%8b=!?Jq;B*^y754%Wd=Ip+G@tLblc5P zi~O?9?2Dq|%^c_MEvsDj>1)fmo||R7&fed5wqE8Pk#A$ernzkhucCOAU#2W}m2MX# zn!4H)rh+AHi!wKTY>RVy+H6a(`KPv}g(3Is%1TXr?8+l27bw`V}lP9qPx#S{)k3ubenEPJS16Y?>YMa%^5~ZgFhEC;xJ6 zT@Ms@YTM@Va%%s&NqnZcpMC7qd8jM)yzAtO=kspTRa_4RKqjz{gI;yme+%QS-0z_h z|GG~hxIaGCeSY=`N_NSj@?e0)>njm$j1>4W#FgRjW0+YE2iBw08+%E?Hz+{dY-b!A z1|$T|xKeNZW_u+_FU!Is8 z#TiBldQKQGY#q(0BoNU?kqlP+oK3^f@uGXm*W(ZuBNHOpXz%Y8?(=!}7v6*LjeRk= z0Cloz&-~qN^-c&C2zujj{=s^tQMK?UubZjQW~xf{y}|tFY-bxKq2FD0E@5QOwv8g2 zey)uj|I`$hpm%|gcm8ss@Zf}TEt%;GYk}{p)tQI5M6R2%3W+2-FL8_RYY*LQdDs_o zBz*M!;%=1j#G)>u1P>-*@&bBEE~x^&zxUqY{y;8!!+WU&#%|w%UTwuds8}VINKAnT zjIC%eTPy(kJ_x2P6oC8*eM_o72x7$EHs?nNLk+hGA-~$tB-dv3p)xq+g&7vJCx;*b z81I~osox!!d<*{W0wImUGEh1Lyb|nJF3&ncshu%T_l3jikmew9sXp*5dwNJB78FFnA!QHyKh)jzTa*poF8XT%7<%X$U}!|7q{|_sL0U>hKqM8A4xJg0?(XiA zZeb`%0g(m;RFD!u3__hX-uLr7@4fc>uDyQUoBx1=;~2hkU7zzj(d3bZp@jJr7&DzE zAp{x5a)6F6T1Cqq_W(%JcbozoQloaMALVC9}k7yWs#?{DXT? zio&O)jEOI~Q_-Mlr(&-BQwkcCIKRzYG)0BKdf90q2$K~-UGedyLm(x=3SFRZ!_A5s7U2_5u>@#S8|IjW@&^u|(W^;PnBbc=**{zD3 zYOe7&^C-}cRw9=n$d*DF`^*xDAH3nTt)57|P!y%fIIFIV2BY3M(cCV?fbEU#>9_hv zEKp&~${S!6bib3m{Oi~6&|tbz0PbJ7@?#H0bU|570hYF2t4Fody>l z=8xxk4bVgU ztCud3G{WLz?!)C2!`;9a2{Zym+G;Zto$;&D7s9q$a`)PcYs~aTMBETi@Ybr9Tr(Ox zn!fWwa3wUM%(#R)-lO2E`CSVzhNxFVXhZ~OW&7HKE=dQ;~DJ@nf6C*4yc}Wf7O)7-yj5p#ZgS zp<9Bs?xT6&+I z_axHr7~9GYAiBWc~KU41P`>m6aV=kQ4AH9!r%#r9c>9yvAP!i z`)KQ0432-)fO6R?}3*D>5D)*9;+4r)Z*0$bb=qC<$g`1ZjVT z#@>Z2hqAhHVIo1;a3lu%3N2^|8RWs9dO!@?Z*xBaAq+ifWFM${u+}LrCGJHUs0GQR#^V1;c5-#-8BM?Vn*f=o=kq9cX2VM7BM2_wJ4uc~ndf zQS5*$x8Tj#YG#lKj-k&#W z0AMZr4{hAIRB)nQ@Ga^OZG^KH(aIOmTNN<|7J<%H$yrlGP4k)0i;%3v-15b|R>k~Q z+3a0Kh?OD+uVRt&Vlmbd3HcI+@nUFIvGlpLWLJseN{RA$32%1E@5*8dq0%d4|E7(s z`5N-2>RoC#R*Llhrj0^{Ce=ko^7+<((?BI zKWL*%g-3Kr&_8J7lj`EAnTqhgXk+|&Wny-PI;&!cRcTUSRc3Zoc2`ySN?CtOWtvM> z?%%XAu=<^4RRLLbkx+Hzd36J8O;dG6-8g|IR=4WpH~&o=s|!0<$l9Z8`m1aD0&7RJ zYcs5Bt>kJ8#%oWiYX8tip{g07ys570MFMSHse5}~x4~Nf$1hsdZ?DuX2iAQ2H*Gv( zefCBESv~O4Em{x@yhtNWf^hnH`FS~m~}HNax(K{@rL|E7(nUHAs_%Z-ddjm$ZX ztldTQtBpflf6+#TrZ0Pq{1=V9IZZ;{O~N(R0vAn!t4)7sBYBfpQ1i6aU$il&LH43~ zaHUyQp+!BY9u?HWVf`0vRLIx5XfbqsrmxUy8q{DE)N1h$+GxwxW~b0bsMK@}YIFJz zZMlCR?RoQG zw6Ui3E!`j5*tXyJ_H|b~p}|v^xx4eC`#GV(lf0|Xx~Ey;PlIQobq@vrxXz#eF@Z?^ z4_J+hi;IBOBqSsh6cp6e)%EoBjE#-0t*!rFoF-tk;NakYU^UUdu$nx+N)2E8w^TFz zhg5U9|BhUzxD8iaucvxdBq>BR$KQE ztk&7p-P2ao7yf);aA^3&$mrPk#AF99_2s{oOO__5qn6*iUEd&JwJzL;zvre$vp*gE z!D^pU{=#ZMN8*0{JvU8XjQuk=9T^WFjDYj#=<&P!h1Hr^i~gFMzW0>*zvia@h1GJk zPwtK8{B$8;wZD4!oZlhjMJxa6;rpfCvfEW=SfY~`Jy&JsW%>uJefu!~Y`yDG51-Id z^TK%bt%)|i$RsEHdjs<0wz@an_x8u%OvH*1uv+upmhNfhI*!o8SI1V|V1Ji~-uN=Gpq?(;_^i~>!?-hTvwT;CV-gV}j`}BeQHy#M9RG|FE zfAQY}lY5X5#G0T0C+NIt1m$IOR!6^-18M1$8zNwFD3*oM0iw8l3#b3C#o zsa!9$vN(buGab2rqjUvp6ooAE7KE0A@cT?vjg~&VU9M#p7{L)y>XKCbBJbfEjn$jd zZkoi>hm^v5ycNB5OZSVb<&Z)pcjQMa9{M-Qm(;keoLT2~Y?CobS2a4i27?7rw*Ety zOP3(rI$FG7Ue*h?!p(m9yoVAlte0ECPJz4mj)AguF7w9K4wd@K%kKh*t1DbmYRi`@ zAF}z%*+;p|UhLO(ZRhOURK4lm$hh3qUIY;9kz&)K?VWcaMZOoS-TQKYV_7{`(-Z%E z!#$=xzwh{a?Q>}C<-HUxrUt&AHw+YSx~5fv-9!4RGTlpE&-ZhBWk0Xp?34bSURls5 zg$6*o9BXepT2*hNEAC2AzUk)ms$2mK>=k|HkFA8zm}b?F$Bpl>@)G^9)LS((>P)u6 z6V&aj+wCRNOFPl_E3S{G{ND@dkxG31^kW@OBGR$WA10 z%#FEsg#DTq64}SG()9K^Gk+qTMq#1>C5Vq&nu1-WfA#QvW*SjCC-m@1-rzAN%1#4}}0_BC*K_T)bDu#=edLcmQ<3OMQ)J+_;z;C|}!jGfo*d zkETwmuiX^lfnY7VXw%zLH^U5yvu(<0GkV=NMf7JUZ1+At;XdLP`|Jm%NyTLnAl;i1ebMv?M)pC4pr5qc7q{CEPPdhJ*Z&C>G-IR3y%eH6w?yhM9P zvBdG0{Pk`UN@V0M1V-kiANB+}7ebb{Nx?z(>bO<%n$%7|Da;g|kx!lfE9C~r0T&9- z9VxDd?n++Q>3c(u3f5o;j0c&ZtihjyRq&(Lr%mUx9Fw-W?_Ud<4YMv}B&XH9J8_{5 z7FuAPv#sGSWVNhv!JZu9D$Kv_p4!PT93R^fAM&o>A+$?2e%YwDklMG2FodweePQ>9 zOK)sFyNboK&EZEJ1fbGOsE^I0MUGHD}aN+~6Kx=h07 zu>pI52P;xpD31ghn6{&1A7p$qk1OqwQ#n;sK(}KPP=X8v6gFhN4;;N=-?;?slXL;J zki-rCM1x1dD~3Oj$XXy!=u{o|>Vsih*JVnq55cpIki0WIXp9MIDOXyCR))}ZAvDY&sWk4ja$`^|;7Ot8!q zjGAt6K3&E$l7hH0q(JMh&aaSV@H;&k4 zYiCKz!o;Hlw!Q;5h;g$4jy1DD)>l9y{#8J%S})NWQ_jZz$IQ}4=#4MmRERttP?p-G z;YKg>9zBT9Bi%5Fe-Kro%W)^Az)#^q0^G1F<9^~-BwQw9KMk2t z)VvuiuJp>3GZmOr&U$kwBALHJY58HNqxqw_M^Rnq>=)vheq%lnu$VS7fmJ@W=(RUr z2xTvRQZr{Z?)X`#5_I-9TktaRx;{hUN(`s<>Q1?=yWbgtt%j+8E^Rtsa3q%~RkVJO z!Jy?{_X_jX)n$$sJ8&x(_P4%tAKsf(1wOrf0tz!O+YnjT7k8dZAzxeyDzh?ust9GK zM(=t4YMgIW<~-VT#;G5+;Jvyo*C?S z{v-!@Q#AfjE4LOJG^Fr#26pSDBLRBi{n8$T5DIzD6Yr_Y%3 z%I$ynHj_W!J&OctT{Ww{-^Q~ak$zl@3VwKhJsmOjQD8Aaz?0gz@BF0lM|l`~-=5{Q z-uw&Wsu}Ulijxl^<>S4hN0i`d7x?5plR!%>GbNU0a>^)AP~X_Q=U-8 zLZqSG5y~n@cuvM|Pvl4*l)OMwo%-*zTcIlX>q(R^m;2MvK56$2Q$n)O4Izj#9KQl?JvEZ z{v4RJD7qc*Y+voqnyz{~{sM~-YE{7YsW*lXk(yzC3JM|0z^p?&is+&KwBZ}C-64RL zl|P4x6XzoVn>xQ}>(QGYm6-M)Pe;XLx!PTmiM?i30!(G%-l_RCV#D9@E4Nu#bdFk( zcmOjIc!3{ZvC+)RS7o6&49WnL6QslTbRlMaA$t9OAPZmYW~i$gO!-vnDWM?s=%$zc z(k<>80Igv*fC2bDz*U02@7~)l%HEYgf&IO1`C|bAL+}qD>+3Q=<_DJ*e;0|F8ygGZ zH``fOhY>@1y03lT<= zI7ruhqwOW%7+56pJuq*g!=Yfx$0C4W_jr*Aq6Yos@rKFssueBpD~+EICw*-T5yD5>gB?lNNPsX%Ht`-(s&5h^o$>2{yl-5BYR9gC17 zAI@!~G+4Rqwv3sdwvp+N(AcWj3kx6rD0XMkGzyZ8SgwrkC#Vubu(-Avp^%9Z30@hA zA6&L1+69KkTyb1^Q6%ASEcXov{cc4v@+;C(HzYGzWiX z0aJC_?6W9OR25K|fc?!9DS<+p9bcYhfERAF`KWO15}0}(!aDu%F%sZlQdUD46Yqw)f&ha8qTf_ z@~+)4s-3dZoIH=7man@{UpE(6=j2eg)Kzz)K{R{xC$V(DBjyO4XR2H~>>zphe!D}PM_2Vlx%>3PA}$k16iWhDZv%GTItRYkO5 zh^&=A>8Ox)H*C{E&yBzYVfbLhyWaR5^EItTK2U|-D_M`SeIa~ zGCr0xi8z4i!wqCs0M2e@B-)g6ra{o5>5CeK*Hu{};VEq4fkVMh^@qnGlyH^z6)hp!`3~fmUPmx+9kOz-eLN}R z^DTM#Bq!N+&p#)_}1Cx8EyR>fZVX)SODV9z!Y#5d+YkNMFYb2P^vZLOH6%_6g2NOgfvG> z(YBeP4H#K9Xv@h9e+_XVw-P|U;}V91E*W(XS6ncqVG?9 znrAi)d=11&*tSssR!X?`%Lsf5qPv&YtW6OBXHM9*3!uMTxRM{~iSGk|6+}i4LSCq^ zF_8+(9VnKC;Df-tmz6(Nw>4IjD~dJ8e(Phk@w}VU&@R6dqB*%q+C{Z9C+I_e+MozPLkgx!hRK^}*(}vT;@cV~j9Pa31o| z2S)?#{QchR0MY&7+92`2o;4~ee5U%OxC?83$e=XDLeJA;YghywgX)ao-WB$(W+M3)4yaUYo)*TlQ^K zaCPqI6ATe}Q`reIikBXexFXtdk0oa{x+~XYC*pXh#)O^R-U(OY7y~2bnrjmpC z5`CSSpg$4j!fzH2n41Efhq_^gtZd+nvRCxME0uAEQVop{?=|lnyt=Nmss@*+#st;=4isDr02lu{5u_Hp6rYb)8ep2L|7$Wili4lN_k z^~*!nXdD)o=A9kZJg5V~#@#EFc}=lWPp7UZ-+8(mA@x*&ahh?fXEkiScL9x54n zIS+&io^|(!jVH8woKdlmJ2rTqM(*pFSA!2&$a+`6V>d-8O*?*Q8xMx^a)H@FvMm7j6pq@}Ap-=*!*A6kCS89jBGgSz0A=Q@QaY!d5=Z zlKrmi_;ro+1=HMTHnn@TzY88)r;#axr-BB*>+ej5ZIC~Yfpj%`JaF(NlV2|N6c^r| z*B!pO3MjA5kku=2u{xb zuqKjE54X7XEQE5#`PAiPGxS8NFj@ZF+-W&4oJJ2X$NO;&Is7TGxeo=|vCzLh-`|?%GebJ%YDDzUQ>C4|Ml(}YV+Ff?K`NgC%^Zm zukH5zK74ZR6aM!X(QC)o@ZZ;!zdga9Cn%rw;eS)Z)Ua48WH?uNR1{U{|1n@(UXlDX zB04&@^1lMcozJR~k+tFVUH^V&JB07)?du;WB#d9r%`X&9_Td)S{(5LzvAi<c<4M-7m426)*Xv1CpuvLUku2v&b9eyT6NEjQf z4ac&pMI)9)jIIXrnpE2a%#=#U3fqt8UfSb%nIrqC+{@B{FrFgm4rbReEuAUWN|9Hr zZmBYPqF11kMC z)0pg4v+MfQ8yTX#helSKtIvDRPGVpA)d!d-L^uzR~ZNTl?z|^M8+_PveFO zSWWq3K?sPRxiPKXbv#U?lDif;GHPa zyroD|2}$lyQtXlKK%A_!sv0TZjG;E1|5PxNR0;-mNKzYxzeir3kyTGop)iIdB`igL zfNM(A4w3R^&I}?YHw5{qv0rUfNp)R{SBVAnP&q_`7Gi8<-V2vLy3rTnR7oD3Gh#@x z%?wweJ`1EO_y-KN+bYnuUo1}U428%YH#d%RG>MPbjDUN8#u(GQ`0PJ9QB< z?g6j^RsSHE3&uSNCKt243^Af=6oOFUvTJxLhUB4?jB4nIz25GJmrW55!ef;U#d@*+DC<78 zpKN0J6z^9X;nJC8+CB--#}8q(<6Wq1TaB9Ll;kiR8p$`OUv4Y+3+2jQXc2abTKyV_9jDz&l}LC<;r@C}8t zD8lSz16oNc=l5_Hou>^5w433NIqSJUi%yWI}eWGq8r3vYn^#y zCe@*dzxH6EljB!g1Sn{E`S?G?CVkSe&+D!y|2laE)}e}ZUoz9w7oHgfE2)37lfhnH zNk7>BPDXw3+3)m;kGzRtUFdsi>X_ppN$Q+c`Gc`no1fs*!$8^UU~yv=KoqW zd-T>j^vCkp~3a%t=9b zta6kI^HD>B>PqM3t(Iw=lq}}Kh=u`e^%#o)`u-Zbc3}n9CYs%9hOc{qp&!aTY~I8o3sIs<1>hv!>a! zlM`m9>%>>t==G#EdG8Gwj5TRM4ddM0pdd~3`HsyNjlbLsJ7(xYEcN6rCX41?2v*5C3`ioKYM)V4d$g{^^M?XOFLmXK+8nkLV zEzMxjpU2T49l7wr1MIU-YoEpTReuk3xuL(PL5HnQx$q8M2#WrSPv2gnyR=cBifs@U=={en(Lo5}K(LVU&JTgIPirD2Xqmtb>& z{3pnwv7Jk4RR(;wEF<8dYAPFd%Ja}>_m@p!Zl)e;8$u5li9^-QP%w*N!1dReReIWj zT}PR|HPbe@BYB~vvTWa-+t#dOt5q5PZvU`w3~&_R*Ufyx)7rxiQ&%5A-=~94r7qqy zlOn7md%Qsg`n0n8*W7#(vdI&+5cO8LwTh7yyCs~_Q1*L+m_&DJAQ(1}{dKvmMV#}Y zxoyM3&y5-eu?9F?kBt~_>#myVVm&V(rhUeQQ`1`V3v0N;>3u*_{5)>=5K>H++pJ;N z_3D|UA(&R{k(Eer80nN8p9fX{aGX;zPr3TE#u6-78oyVPrC|u>B*%^>6!!1$jj>Tw z78X&TQeZA0VHma2q*-@79&pcWi9XUHI<1o+w?bndCofN!=pT_S9W+pHTs5*5IWgrq z%2EihP3y93)X}|*@^n_ecEzJCT99`~C1F61{nd?J##==i3SE~{r@RA%Lv~A@&R?%= zdRN4N_l((gI`P`OmD=um=H!}$ukX<{_kXeBOV7O<`N``1@+QA!e^@|{O4S7DAN*8S zrQrhF8ltdUcCXJB5>ahU8I-C1ayg5yqrN}8qxz``I9X}tH{dM|*?&OIcePr(y=(F1 zq3^RCspX$OoiFtt`XpMjeVh6rcle7u98#@J8qO&8aWx-9NX)5;`aE8=PdX z{@j+G?wstA~o(_IVg zQ{U=?e(l>*cQ55V_TFcFzN7N-R9DQ)mn1dM(mtVk?W4huuGL?M{?pxWe~5f*FKGC* z0zY3_e(c+4o$)#HM$bE@>C+bqzmLsj6q{G3V&cf(DyL>B&T>tkO$GfvDWnd0C-u;G zyia`xM@+o+#^8LR`|(L}!t;asH!ha@et)mK6S8#$|0H1YKF1Fnb?;Hcji2w>@Ta3U zdcR~$|J+ueNh^)4#uW z<9{6`^!*&X^SFh&_uS>ilV5Sl_}>?JJiv?wp9WuOdhafhpJqG>y@{sK@`jwE;mjCX zSalhGifrJ!3KFl*Ux2a9k=|8Onl@Y|>Or?!>hy%FIa%n@F)5e_@yyCdN&P7#3} z5y49lk541e%#m2x$S{k@aR11V$Oxmz$k?UG_|wQl=BQ-ZsMMXvX#c3R%&6>+sNAKf z{L`qE$OvwaD0f(NxqozJW^{E&bVOw&w^($kY*?*qOp8TKn}1B6R`fIG81cxM-qRQy zbL@a%XwPYM_h?L+Z0vYP?Br5xT4d~)W9$elu4yNB!9Q*(GtNXS4j~ZtdNgjnGVYyh z{0CU@Qw=QBc4gBnveK-w zlFXOWE_MEe)h;F6CSWzo1pBOX7wxqB%jtha8cT+kT!!~QvD$LRGt4rR zu&D7LtQLQknaGlrESHsPnUx-pm6?^5{co&R$dX+wmtAU^T^^8KnU!7rf5vJ(%Q?Mg zk~uh*+<|{%wQM=?=pU?>3oFfi$&xp_oHKov`>)-eex=kI!`+1Xh_J=EW2 zP=pSszYCy<@V3114$k>b)%9-sy&l5T-tO!E6rX}W<8g%^TEeUeqorPBVIT4htsm*s zSv^~-6(9eU-Llc(uh$zmJ<}BU@oyC>1Cm#BJ12XeXQ+HUxpyQxSu~&=IAzw;M`>kf}|T_v?FbC{BSALaIQ% za|)sQGB~_>ayG-hV=g40Yj>g^ABQj**E#6J~ z2&v>EN2S3w(SSDf18&0^eW#nCbB^d-i&u78U?SpC2Y!^G5kx^%Vxv-g6y)r0B(b&m z&0*Bz6%6^_Qs3$ZD2(Xqy^c03Z4T`%%J2rXXF{rPUeqeW()fO}CtpBZRr+Px=m(#K z&Cnhxp>_g6JHH|cNv<_z)$bu2C}S56F)0oK!2nH}G9S!PS*`fhurhtQpl#1?;ONyd zPl50x#9sEi#1*roT>AD(`oyh*};I)#NvY$FK+N8+1=uQmQfzQjmdz96a@Cmz4jr-C?b z-dUe_8JFT(?Sig!F%J>Bwe4=_xLW}jD7_&Z1oddT1cK5vXk+LYCbI-`yk@og^BF(L zfuK=V9)eJYhD+F-CmMnMrS9g{0{LNIvINTAM6!3vXohxoi7;03J48X>ovUlyqq{DZ zC5Dd+*3dY0?bY{u-`jtNBUY#+8DexjXdLCQIUodn_79q8G%kN?nKO6&gl}DPtohWo z=DYu?eIxwxVaJDb*Tc@8azdH;LEHXe_tBr4rmqXGpP!#@*L?2%`F;O$-~W*K8H8&J z9}m&rbUPkqzW?77KY|stU&e*o557!@{VVZv@>2Fm4hAMC;Hpyp#sEGKrqsfzOivpa zCik;58{&xH+2H`NnW~3m%ZcF36(bNOynmEQas$`Ia=NI}szYbnK)hoE7g;=mqd^N0 zr?ys1V;jxhI@zSVwB7iH1gEU`6NeV02je))k1@7=HtWz0+AoBJP+$KoChD`8ZG?&4iDkP9DKNXzM1}kxg6>&0#3W`d! zP#B7!j$z1v*+AG&bkiYE1pDo@abXY(+^%$@oE?h?_y>xFq`*)88CMv1%thlYmJfs{ zRey*!q_AyVSyUk!e+gj_38O)Hlnnbx0&O9l;>4=N zfCja2qlLbD9*8dE`oQp03?ecHglK3djf8WOEUkj5&SA=zLSSJI zbuvJOlKDt^5Q&?2%Zj(TeI?u~>Ml>hw^0~J;^T6P7@H}LVUW{Q7@3?VPmX!&bqNW} z-k5jP3G*Y_^!MU?PV)KXqNv1f0|1l%2$23%(|-3sUYI&(qnP2816NomFAE=Mo~Kmu z&TP_-?K|-VqNHa&xUgN_&E;8*4o84CYw;^U1U}bpC7Qyrt82mnAz^edS+aPb}^>W;dc8cBh^WitR9H3ryPuB9lkXa~7a}albEp zDjGe{A>Yz5FEIDEjNw6S+l=aT@?Lh&WWyot1xD?5sS*)_2jsgdwH-^1iK|dil*B{+o@JT^hHpWt zZ3pv=|MF9259A!$wU$4dp-$9{O;pYm7k=c2fpAU!*tSvCsFflg!L`Fka3X zG+8l>D>H@iZuBJTx=>H&pb0N^8h!NFbSYU(?Czy-&{TfXuaiYjJBC^e?o^tFRuh`n zuX1a(1?&-|R^MoeqRVH6YRppDJq9RCNj1$}R|$w4sDicyt{C-&l# z+mn$W>pu*#TA;VhNdSpZA>XY`Gp#oB|7n9na2VYiyE}hNuLW z$M3K;qT{3z9KTNcA+IoQQ=mFnrkT4#Tf}dR>(F-uqI#ZO$CIS!cy-Ymw_2o|GbUe^ zN9#gTdsE*$GQQa96bwoqx6;?hX;jpkwRCP+%DZ#*ts<&Vez7}L#M`Yz9wfP#{S1MI zfeh~3Z&8M}A5Lhx`;FUsr*^ql=fpRm< zNG#{Kp&VW9Z(6ko)sHI_cd2#cuZPSo;6PM{s~!Hcb2q;O+ATW0c2dpr>Td3kEz1Kt z_SM$6^S)27kf5VSsGjiAs6fJ;d+s6&!HjTUhq!N={;tPhx=3B(_gFyl*kgWFM_5Ba z?lb6Xlq;iB%OpwGOJgE0fSTDsmuFt{Wx!mq4rP%)o*i8sr021#f1|2YwCuY6{lP5& zdSohteA@|H>$B1?0t<;@u5HuxzQZMc;f}L@z_1Pw|&KdX^ z;U6K@gx(t?sxb_>_Ip^&cIxhD<#WGMNU-#br)1t`#`PT!XU}5{PNcZxXcX*cD>dSG z|7XKjVzjMIZ5Ab&KraweaG&D1aqn44mqk=Yc~kz9YRP@n7bvq^Cf}2x68%ieQd$sE zYA zyl<2RKvB#w;G+oKC|k#GCNO0r%?2kuT(KCm1VA!9XgxqHG9a+2Fj+^)8%=q-8GzPP zgB=O3-~ns=xLTNDx_DR8Px{GJI}=HV+*EtW(f22P;9QHb|ptc zbmO&K3xlZ9un02>L>v|(1-l|6C>rSvgm8m|m_(TYU@}5PJXJ+aD-0wf%AR;#)ztbE zt)>iD*vA2F8f2(Rrtthm$O#s-2)d*wc&PneWguKL`YQp}qQMU2_2Z^1a^XTWv_6 zCIuL#Nw)nBoKG<@w0`t`n^?0p&&$?!2@Tb*?(1AzGWkU)l9X^%JrM2@bItgbJ!yR+_mUZ4ne0D!uhwqT=;-hp!ehR91}I z5nDkj^imynTpn71Bvte|#i7t9($u^=f?xY5f+!#!Wnj{$`Xa3|_BHb64P@Uv1e&*T(n(96`*=^L$SR9B2^rGfQZ-H@_*ojVC^xoQes3!< zko4-Ol}qmHa9eKO~fS2W$4c;+5&HK zI0diNq6M76LurzNN@q29Pn`P#zU?)2C!s)5*sW2V2coPFnT$IHIAqfA%S%rvNU92ApS439i&?q7?Idp}p zDtSR&+7)?pUoHFdX%!osh@uGFt2x{_mYq^Y)AQ}J;63Ncf*_YY$C4OFvi=!mOgtNG|hMo8SOK0)N+LI~89|tGXe+A*0 z?2+JC?54QO{j{hu07B!2ZfT}XY!M?Nf*1C8G6{PC>C{@ct|*e`cB@Dc@ggzp&rf*( zsGv0x*}^PFXne3!sgj>3*`V>A}O+=#X} z^6K7F+&S{=%p{*d;fdKy3ExVxb#>c1kKnc#V(Lt_)3)dE2Dbz7WW6v6vn~7z2~Lze zc#qx9qkmzNxUc)m7~S;GqY2gm&@sDUfeP_}8jAL$+r&1WcvDF$0T>h6lF<54}4EHOJoq40B7l% z&r>ae0ws}_EKZxiMtbcy3mVMoOuTvSm;m9O=4{htgwhM3iM|pR$={=;$dJ+$$U+X1 z%)3oJFb%x;I1zY3Op`c|K}~$Y(2_>07@$WhQjUsPvXw^2J+2g{EIoE7%0f418sY9; zM}m(PiV(V$wZu&g9BQWKJNz5%n%O+bQ!4K;uzQ14K6UE(z_& z81ihjM0Tf=rni}jalr-&*(np`GRO?DB+?5}yLOHHKH98n2=UW79o#EB0?(g8*u9Db z=~*Z{zzNk6Goz2g#DT_pCx|uroOdn7vKA7$>5{27G)cQar{1G9zXKF4wK0{2U7R3M zKv{E-jHbARZmK-jy(ZSt3CEwa2n59~C1FFuJK)!rjr;rpN*%(VNRgIRdbT7Yh0~4< z_^`(=FRAdj@547`1><3=5e@`uAeN*z^a9 z*c|mL9ZKhpQbK};y)yewj#;OmFJlw<)aFJJgZ#^3gNAAP-8(D<%%9%`S!u4~CpubL z;@1^%RljGR!?#>FW%P&@;8YwGx&iv&%lr7chFu!blA{r_Aj_FoI{oPq#(cpNU(i|$ zBu3nd)-kShJ9*ILks<7QWEB0*jFC-%$A-7UMhAv;!XS_CYv$ahmreq0)4!a?+2)mJ4+(Go|V?)>LRE@NPV>IB`FRu`X z@atlSYZ&EByztE)tlh2?yw2W<`TctlVMKB3!sXx&aCL%p%FQM)i^~{exKQ!(UG;Yg zwn24Y+~}8(bQ>{vY0~XNWb-Ooj10%*T5r+-xh;^KW47Y(YOvN{N)yj&L;Xl-jx#8z zdELz49OO?0@7~bSurLqo`sxYSHIYX=*(R4%PN*H#}}47OTOJg z#?s0*6A3x6x=u5-WvTJ=9jlzjefhyF<5O6YtExLnr9zi|iDqnko2`2kn3gQ>J>GV_ z>Pl6eWv|Ms!a!DFxRVH?Ky-FBDZkZT0Evqx-$>v0OlE)j;kdjjDH_yK@E+}zUuFX0 zO`H=oXH-hRm;^%4rnUxKI~VglQUxb%YJB>pBvV5Z+}HMgBCyV7DrDnZk=e%HBpO74 zyVY5HWrd#u8BMyR$@rS(y||w3^E98&9ytN=<5<7aCsQ8&855q|wkSEgpFk|cun_#^ z`$rw3z0brJD6rRNkqs4a$<4HuZs+lS)}29PvpD%<|6`|?<8AJd^lA9br;<>(uBxZ^KJGXSGi|NAG>GY zEE;zFjaQ(fe{J52?q%M0g_0hYX{-nwA31aXI>N7+JXekksqsn1KK#(_9Yeq^YB2no zB~u~yy9jH$Q9sm|aoWd9DpxcS`&5t)fiYLM=fNN?_nqOCC(fnHc)e1iH+DkYVjyn; zMcNsFf{-e^`RMnEH5`c~t`v6sfo4Msv@vvbuR$SGiaA0;GsUH7U6!ze%pS5`U=9d)!}5d?qG^L_ zCXg#*>7sNW9yXCkGKqm$Ju!Ye!U6uGQTD(ST99RgWVC%ms8-}*geam=({?Tbb)pLw zi%8I-WcL?kDr8Uo5?L%8U25@PuNG>TqVe^o(GAQoP5*wk(2*I_)e+OP6w^B@4l0f6 z+ld)%1`Wu@c8!9T>=j-_#!l@hFF}Aw|JZ4*n4Z@l02w!|7B|lvvzQsTvK0GfG-e$Z z|5`S_+ai9uBW~IYMFsltQt#IJ7`Z1*wrY zwD*4Y{k*fk{q1>Y=MOW?FmrKUN7k_pIoA?P%v%BU;tO)t3GZnD*68Fs;2D7w4~SX- z#H)Z${=nt^Sa}zCY8ybdPMIPjPPGG|Um;B@a+}VEm2|+8JR_TY0OGy4?=lpYWNnBTDT{Ahuy6h0#!WIc$!VJ?F1;AVMK&mJJmCv2$IKTvW zhAVZhlZz*j$n8K^CsJs!&j{c`3`i6OGc*HQWb-g)WU8nX&_f@c9qOdEJ%ZH%g$o7t z6Jcv+MKPv4jObhfIQBSVLb7?!a7#R-_3x}mJTnAV3KbiTtcws#Rx8;wkame2bycz6xIR-LQ4TTrQfJ?>CGZEzXTGW!m!om$0ucDaWKsU zATz&FAvJKVC*(slP{s8w5!oH4`Kq#!;t0+P*`;tdv+Bb-fL%M#?R(?{N?<>JHIayN z%0=1zf)Zw*?1q=9ZMyu?3ILNrS&g5PH$%;{c0i4a%(qV4ID#5i8D&(C_yHJrUSKRq zl@whrQ0NA)8I!WCkS2DkA(XTZx>tP%p4YG&?oL^c*$MQ4_6pnyQ^LChtW*R1Dh&4d zBm-iqgZ6F{XE;6%t4#fhz4>rwCAQ{)nH&QcILet#Ap*onv|J)kiDC#44k)V?uZA7g z-s9BRSd)0UcRTJ~6vU48v0>8?W#ipmEzJatqs3Sm`cT?=ti4lJh;lQetz2RaK-nU} zv)0r%Rc#l`Q>dErjWD(zyW`UlD={U&KLw=7P^3Byf&IhO zcN~ILK2{+Np|AL>ow}O(X_Gdl>igeU^SpeF83fB~KE3_EsFOhfn4r}rt*XNO0|4kK z{^Hs>m@7lCk6!tb#XjAH^H2c9$ZOI7G#P0Mt@rQefz8?la;z0!DXY`mwzmGBSSZo@ z>`N60ukEo@`TOsYH7f0@aV>;ot;=KRz?%}*rrjYNPvmy*!fxv`8p|jqHZnK@Aqx2f zr?6Xv^$UI-(|*-s9TKgCPfMrGDuT*3zE{afH^qhK+!xo^Tg6^vZ<4H4W|vC*R1p)n zqeEG4Fpyl*;Gj%s-g$*v?XzC(3Wk;P_xA)@Em;5+)ry}UL>;c8L-urRrVR1F^_|(X zy7Ei1@OQHRc-*38^MvcE^c0XJs^EyR7E^c@IKlChSW7m-Lhd^QuzjcWsHm|u2e4iT zpb}B05J{i5dwSRnpd83!phi=P}Q-v?3mC4X(!_bUy*ual?Ch^OdR;sp^uTdj-Ko?V4eU4Jz@TcZlQn22^ zI}9Vr#n$o@c`IE&VX4;d{LdH>y-V*01o^wi1^{;C(F&E}mN$U`uR^IafHf+>U$`~2 zP#`s0`nXd-=_W8yrC`Z^(k+}P+peQ4;8przFweMgdQLGA&jl#9JM|%Uite&;(m9lo zW@?JCzSlnxTNC&f$x?{`=>RjeIU_scfU7uQFnjp3Vj#1r%+zOv*UD1?X0n}3cN&Ym z8IR@jUS%CEt0odoKdqQf)_OcQ)JhpOIl(cTqccY*q0Fd1O$NwEz7q-w7nDx9Rr_5q z(EnCRvJfqqf;8Pf`alSv6Mz!H@*m?-Mn*a2`$tDdCnqPd!_d{$)vc|q_wV2TYZ!`c{QO@Za0Qh6ALCIb_0xFH z(^wlkr9>LlkI@{`J~U&b*`}ua3CeYLrZ(JQohlo0RcH+XGV2kYS_dFH+LjE5{qyB9 z_znnnaEIc#6|o)NjeB(D0CI8xiU>NQ zq;lR^A_9C%_FO(1ifE1wVL+c~@6%g<2@MHQ04RimLmvtN+&w|LY`^c`JF0po>TWNZ9xs~FAiCLb z`WKP(uc8^SDoI-?#@$55_bE(YvzWiwAG}{vlw4n&GE*PB(H?u)8}nwi=lwwH*+}BmblS;u`RQ`ct5>hE zZ|!Pt9CI+ezrTNSa`N+Z=j`k&=EueV@C{-g9`CtA;lF15|7d1r0^#AYv3m1% zrQINg5E2vNjol)ykGnxSNs44sVtboIcH`uj1Rn&(e|Z!~!Nkc(J{d=OPGvO_vQ?#A zL40mHG7nH3BBZB-I70pa#P2Uc0I&i3j#vOl?7vBXkKLe!P>>Qb(U8*9P%_g~L78ZU zp`_9R%<>|v+}zy4d~7gbZZT0od3kvq7>fyv!u&Rknk2ib^i8GPV)pVBW{Mncie!Om zq^c^)cePcuw6qMg6pi(@5D0|3nTj34$k7%N?(ZHR5{PX$$LmwXTHGwQWx&S6Qy4y6G^w`TO*b6D``)>^9;UH<64x2~5YSOrJBEfBX)NUnPQ9b}mtX09Z8DqMvb~+=EIs;>3V$xDmb8~YZ78O>Mm)FO z^=);>Z9mI89ZCN=8jICnxmsz&cDd)~<`!nJ@eUg>mpfCZ`zyP-*REX|uz$LCXfhQ&s(sa8#YxN46E(@%vl%ttbgKH%?( zRb7u`+D>48pUQHYi3KsKvmEGU9`ve^4O4P$ad%ZNj#J8Dz>6e)$zhpd?bFlGa+%^FEHC04gK$&S9&v zjg(QwH?QD*D>{vy(liCIHE2IMUBE8qSf^ZrHSuD}90=ui;jS^hE0b6^?8C34_|S#0 zx3K+33H$h#@MeumK)9_^&Yt)u?HS0l*S>ZJDrCrWWp@8xXRo`2p;to zznHhhQPC)p(QIDUByw;!kvc2B)%P%1n2a5}U66%KZ;TL9;7qP$Oqwgw(`!tV`OJ-* zD+6fm1KNxc18@nn?hkIfoA!iiypJ&Bu@rNDUc4E#|1$o`+5t^dxiJaawZi^knAK^vfW`Bk?xnLU8fxyA^`ZcC5A z!$oF>GXfRb2))CcM|AB1NXnSPl)XtBUlH&+?;SFIe0p4}3_EV;m%t(Fn2w7{hJb_@ zNt7icgUCRtpffrQgJJwAL9$R}z)t9DyrMQ;;Gv`mgJM7;lt+(O>JhIjZw3cFpwG9W zC@?1qmr@75JLy=CeX!UMs#0t`D?lJVvu%n2Gp{YFOiBKEt73_O#Y?u*@TR~R5N)CF z_A;-0i+*&Ghn@k7Fi-(H0p3e#L#QGYx>gG2N$M%69`UXu2Iai~&Q#{&_`Y+ki*Exv zw~Bv1L}dC=Fy|_4d?n|V_Q+65Vt+~AR2v9I?QqF87{>XeOhRRosoAl(YyifS%^4asEEqA! zgi9_Amb~J*F}_8^{N%+{VhqK}x_6$_g0C=>>!`sozqZfTLUy8TkqV8q{+cFb;KU@s z4IwFgBorM(s7Oydu^G#!9q>t&Mk#_FG%NYw#pf5Aj%DkWx0D~blO@6V!I>{2d>weD z0{{ch3um^}AUBU~=GMy`GLLxf?4p5ym>D1d5Ox5#cw6_=1{c6tY@-OGI6i@GrsNMP z6EUlhDibrcYzFNVB)7$q7XR3cCCzsh`hHlMk2Pbet@$uBUGJ&Q2be>{H=(l0c^!$Eyr)HB_blExIxTBbAySVijk24%1kfJc7q#A zFD=L-%*PHBWP{xjl$W?EA|i4Pv?8>s;;cGiG$zv2=5h>blAKDi;#jya}QA&m9ROyGa$z%>!LN0Vksn`ut>*n_#%i@C>-Wi$*rd7rH) zC1Ng$eLk9f1nMx+Qy%YG0q@nn3`47BPa3VSW!RduPwP#tJwscr8RAu! z?NyJ%Ri6junJ?Be^lCUFCOWz_JN`EvDELDMo<2tR^*tS~P59e3bTaAFbO~lQ8#AAe zSt!0*s=PK2U1|7j9@>N1e2V1=v$M1RLe{Hm^Uzt$`xlrG>zLEGeRBPjxUai8Ux93kP=_XZ1 zNb-~%H_(1N)v3dhh7f97m+ILfXj(|EZ#%LqM@f+mYrp$^J_pJ8YIAX7fkO_aLKx_q z?Nyf97RHt0UIlWE{s|1NRTUPCViZiAaieGpAik%hi<{3Uo^Fu- zmk3Ue=;_`j$>Y?Po^J-c+Vo5?7F=$s<*(1B;;CN9R%`UCsckUXei|g9Q&+Yrw`*oR8_O+J=-=>p-GS z@w%g-Y1%UV6wJO>>mjnA-iZB{ax|j|yA*JkM81Wsl<^zAUk>{Z`Zm1#un_eGH~&H| zHT89JJJ!f=OuWWyZXSaKv|bSo8ivx9F0VpI6MX8*VA~dQ1t7>_UICzgEHXlN zi8xRTntG&xwD8eQ$j2~vdVI3;jPJNCcZ~Eb+xB%z=+UJ1Y8+=~-`DXUj!B7A1(Q(n zZs7rRD}ewy8-U0FFxh2GP1Ymn-{O5O7WRJp)qp-kKdO4<=9<)np>j^7D1sJ zb|~3u=R4H#ome?RkZ;Alk7pU68i1Scp0beH&PISr0CYaKJsvV<%Mp#E%kdtU1Z*&f+B*vOztMj^Ld*adAY%jo z211CD>ZG^;Xo?RIL?JGuyo-G0gM*K5Xc@wb^Y@Y>5v#O{B@v_Y`p)-wd~TSl_2Gv# zXeXl;R@(epbn1_*%Vn=omI#ZoziTaO4k(i_8=15q>u-o<7ZVl2a#?Jlr7B9V zBTlO;L1!+{q$+{svcJJqQN~?`+D(NnNSiiPhc;Y~E>fS)UX%YHD64IzuZjg)6C*=A zgt4QoWuUFbHP*uE)65w&5lp4-f{(q}TfEuZec7J`aKr?=k3?`!KH!;);hm4=T~FfQ zO1pWKBlx9I=zEFCRhcNJ>W|o^)^CV4ylTIOSWM3!wt5Y*n4$3BY&Ey2F#o#Zs;IzL zTv&Xa>}xt5PQ{GHV6dEZF6SCt=L;}P<$r_gdMoBF)|t8QPXYD^Tu(OVF}ovI`&0kG z*EfIg_0#D`%>N3+dN~;VJH%!q9b&u;ZvWFE8B1p$8F(4h{SlpfXe8g!gB6{u>hAjw zhvYw^lmDc%Schb^>OHxKiuV+Y?(HA!7Rlc;R^P0WH83_*D3&`okVPvP8XJ5s-kxp1 z?!Z!6-|q8F@|&A@s(Z91w;TO@Bi&EkirUxSF`LUeW-Y;kLp7UR(P^zwlV=LW0CNZB zzU1WGoj?^=_PBoWBT>p1aTE%$cUYu>0j!g#awa*oa^FR)P?@P1GK#iLbO6=kcDP}t za!m%f&Eux`>^I0(2RS@@iwrSpU|&i#)(lBo$tuhBW!+vQRS9O@dbQWuQTEd%uh}G~ zdHPzAEo-7qN3U8Qt!1oM>Qj-yOou{W1A}v@VW40ezKVDLF1r4=KL9+a>bNE1B_8S3 z6n>c*D_!1=r>>qI>#?4uGLv^$bQM(tq{+l+W`h7)L(3g6DxL=D*=gvbswt{^uQ9s}`n)%Ewu;h^_LA!sU9n;b^N#%L`a*9{R$S4-z#dHeN1@tP8@|Z_w zL3!LEwQopcUn5QEM02}wqw$oewtP-p*`^J|?n~g^5Q(hOB)5%{e8fmU35a3T8A0Q^ zdO0YLWI%kgmP4fc{H!oxDoc5AM)Q}K<~-tS6Q&uWTFyxOR-G+1e=R#>eQE)t!@^V; z?xhT18rd>G*6 z!=?ZvC;S}GNYeojf~{&~n)66=o{G@|(Bx%{UMYa#c@>j>O;SGnP4Sl+J<&0Yq!7D7 zVz`B6C#j?j^b;3r&qB}&$s3#VjiN(^VUS+SiR6lx0J$P*z~ZA}LXrTsiC5OQ=SOjb z04zPLF8+Y1t^5{WBtBok_sb0zYd{p#0{~Dsl+5XuUXXbSP=Ij3PXVCvb)PWdrCsz8 z9;3@C4l%uh{10AvCJho&7*(k$gMlhPQVjBX(8q z8j(4%f?W6bk+CKv^96FHknolr~ep^#_^*wP^kc z&1$MD|3qgjH2=nB#J_>EGuOX?vbWiP2g+zsOtmbgUKP`t#=J!TZXvY)6NNu+zqrQVqnB4F zYk!m5uZP#n_Q(1EdNT}5dL8v;<76Ez#P4yd7UCBO&9AiXj3EOH)pE!aTW5ewaX~N916UwVcFfY4H_*T*!Z#B! z>$rpx#nOr!zPSWIovTG{RBF-24HbBRf-wL9dZzZIS`v^WWeZe_tAiyhA+`pU@##dR z1gI@|@zc6x$O1Med;^nSKQ;LLel|Q<>%XH7*dQflprv4Dpy6g?5N4;k4o`kgm=LG5 z&~MrxC2~z0#F%v?nRKOCRIdv%Nma$$=8Ejt=9ihKq`L--n+DWgME&Lw)@4!^Q zF3z-7j16=U#`<=aCRoC79hhcZY1X`%w!EdDw;l(Iwgic`hunG+E*9f!H5vySj+L53 zNzElm&nL^QXUlEo$!{0j`K^n6`{p2q~6|6rpA9Nvn12B>lSTxc1m78wlYgJb&Bye zfL&K+)ipIz*eiO!wW@2|J370%s|~zOd-|*ETL*`Ro{f%;naYhn8=jqOnqGKOHMQ9J zd}UT@87q4-u)5XqW_NFF`|$Dl{_)9Q?@k*(eEIMR`^eumHqYOE$1DbYO-9{74_e_8 zupkm{+R7r2lk~Sl2_e+b@=E>H9`cG>7I=pS@N*-IO3*Z}1E;)JU4YHBL*G}E5T8l_ z9+~l7ade!Q9j>Oh$~&sjX#j0iDB~r>S5K4irjj#uc*T2n3G`(3y;>44N6d1cuX3ds zS*r&~7on8vHlme&#jV)Xfi(~UR3I8Bf+b;x~4jo9(tlwidg zcioR2KS=lPD)tj|D$IZxd*wWlP5R;|)`&Lsr9b{gV_f*x7nfwmmAtjauHx16oz%P} z@3zCeBifc)i2+sH(4B?U!qQOb>S8_*@$MNqhkkN+pflMPnylj38INj%gkzNPUduLJ z(9RS55tRIZl0|%j2d=U0l0ne0*V(V2B}SbS6E$+Mv>Gy2B_v>&!BPb`4(dVmH4*BZ zp%l+(&m~5Tq4pLSRR#k%eaGCC^Dd_7^PjZM#;arusb$`L!IR{DA*!xs&YR@7Yr4P& ztBk(w$2MynT9q*T2rS_Q^4tdd+akpvr+7Gejmz=m33xyvWAisY?0nv}6WaynCx>dZ z_C3LbD2N1ymOZhV*s+SeLK)L=$G6UyHd6Yl~0 zdH9axB$P0Zyuv|-FtWUlf2v-_9LZFt#?F{pS7loBp3%PX#V~_c&r4jgmgbl}G6~L8 zJUZGA5nOUl9Z?+%`yS4?2PRJpXh{phb_=5AHp8tW-^fjS8k*`o)G8UZA$rGnxz%k$ z?cHLlhA}s8GzJMMRdT7}+jd|}Sg;G0+=%Q#XCkfB0{L5AqZ^=nerA2SX){SmV~hp{ zGivm%U@4Q4<+jXv|MlE^s_eoT=qQb8Z5N?w($ME&N)ywl5k`PW86LnU3J3t=LzLra zEOtk7cx8)6>iHB+*Q&sqj{4O+o**pvlB zlSRT{0|3Oh;9|3YB7=u_bhnh&?KRpIW~_!T8yyhL0*EFs_jy3qp?V`k@doLb5s*PJI zV<4dakI@MPpM;o@f{cWomYRv4nuU>`o1Iyhi{UzN+~gJ$5s((;fr*RAON(FU4H%EA zw1AE*uadm9s*;?!x`>(X9eV>=H+|7SQ;9GOSfrISc3h&Zr3u$nHNK~ZFg3KZGIzAI zaJOco{FWRIx#^`k7Mt)#NBO28azod9LYAD%(s{;vYaorTCcRn)T>~c zbgrvO>`1rWe5=m!U9;rqIL1D4HPJ@flrT>cq_+^hs_(y)v1&=o_Mm7^sU zeveN6P8!XU71*Sq>jCeskZ=24YgWtkjd#Og6X=n-=ktRzi|FZ@ss(JVDe>~n1Z;hK zXL$MTLB*ZjqvK}z!_%^pFJG(gd^#0B`*AFOd9Za!u%UKT+KuhY%ZoW@6bi?aq3GSE zbS+1c|9WGv+X+e{N!D$a5)G`XoXo7wLrmUtOcY=3$4pdn)NwW!PB@1KR@E;h>g5es42>m?ig^?hnkxs*QX9fSWwz~jRX4fa zF|QzPep8bxZSsbe2Gh%YWIY}SC2i$LR6M1=w-;2WVYB`8un$>FGWMwjA$H5VaYOsl ze3JIYO^Vt6lP;zXD+)k%hZG*epw_-A32vSf!#b1hNRl`a>R}JE3e6|W2ZzN<^Tl;z z`$mdZ}k*tON%Q3|I0_$2p6(*#17 zFTaefeJ=KBRovuNrOJ3Ssl z<@rN$sSpD{ifYG*udb$wVOo zYB*X2_(&twI-G5OzcdZCMAJ7g2#-$*Mcl(#(R?sT#&_lF!pq}58f3kAbi9R)L2Y(~ zP{_a-IbXp6=gs#7U=QocIrDn6|{4w7g=eSMnrs=ABMYBe3+72$~ZLS8s(|2vz0^?iOVoP2y;#2`3bhtScY1CHbhM@$Dtuygo z8TTRUyNkAq^qIZCf&42@wCNcZwkqnZtEIM$DMcO2_?_?9v&T^xgeZU*0Z>~!0Kx~T z0EF~xtI*sEoiLxp#cd5(tTpv5t5!>5T%?wG5jAPA3;Fb1c|IcZEk7>=pn%8T(mFt{ z&;SgeCFzM;;Aij*AYOew^KuH{;lc(0$_2duGg8(1bn_Fx^CVI_J{}m@G6&eGZRNKE zm57pSUi9o#*esIX;L`C4-B)f=#9_PvQ5qzARPlo3u=`LsotQ3V-X7oM^oBU}tV9?&#j(iG2cutxf_HhOTH>J%kFN%3h#CimQC}&Itci9{CR%`i z_26fnKp%00>nGE2FDs92g0QTS2?tiK3dG7yj$vLcZ< zt{{!XtkYAJLWBw_s(?VRg^lb#bHg<-?E$HQNbFAnd_01Gqz6W9dSGFJGBa|qGYfGs za&T}6-Q>pl;$V}6%q>0%2?;rAajZd(vb2DvS zWo2z`ZG9c}>l=n9hS<#yM?33CTZITWIMzxByJdx4I>Rb(MBB-yxGCob=oSU*)kPV! zp^Q2bP5Lt|hI1^Z3T-D#JzthNtya05*Xo=%7@jwqpSM`d89)D{6bN@O&`#d^GudJmY*a z=X|F4e6H+lq56EW{(QOhe5Lbzt@n@e$Kv85R{7)n&EWaw*!lMK`QGCB;qv*rYb_A$ z)cpKp=ltX0`KP1*t#uG=ZqWM2&c}Zvq*(jkj(Yw!zxluVkbiU(w|92;_WzjQoP7BB zTSxKi{NnQ4wT|Ky=8yRedNB6d{AQx1?ArWhSzD>~xA_fLNAb7$4OU0-pXN6j?m}1{ zMa}l=YaPY+8?LSN&r20z37NGzY8Udy()cZ>I_ef{^iYbAv^wjtI*QWgQ@>4rZ9Lx- zYIk9E6kW1c*pn)o*1LT$J5!IeyRkxwAz$9Vo`!j^{pDb9t5V+fcxyO;@}||yity&R zrG+b}KwInHbb*+=9`O?~6C*~x;0>K?A;mnohG${*JDHQU*si7S?GNwQjnwZ)c(!(7 zbrdCbSmdc+s&n?m-n5>J_?X!>QUN;yQG|XuT50dTFJ#_(QC_TM{z~szgy)C1i?QS4 zetq9APGJ=$cdZYr&Np^m%?jr~Kwwb7+JdME@}8B5Gp?R&F3u+=Hn17#NK;`0gwygoh(DO?kYDw!nW(yz#Tap-B|+0bM|KqIeLQJFj%K2Zf} zO8k6P8i%e*1X(PrZ!5S8pzqR16gG{?@#CU)fvg3a^#sqCLY+&(*$>=GDSF(vDOj1H zyc86bAu%N-pQozO+)OPER_f5&{dO@;yR3&{nq(T}1tq|9w7_Zz+K*5l9o+GS-v%$arsI&)y5M`}K_ z$N7=QGhd1?x~e=|y%Q(CJj0>XY#A)*t!e`aOkbW_kaJ{yd^|a};{Mpl4S{ZlqMEWe zcrznt3)IL6ISW}!GFY2a)^Y{NYbkU)A5YMi!Gblra{~teKkoa?Ye>zUTF^Y(lc2a? zQO{4|qvRr3?cu*Ei6FHP??&H#>L}9PPXh#k)CJ}QR_toLC^+~EJx$VpHR1J%_zJI$ zOA-7Q`5?d-d6SWzqq&exjh}LT+p(;h0UN$tC1t0nl*ByvZ1BH)$vf7c_3a;TpR^yW zTNMXk>Z|={O5YzoF43^%tS18EGZpuIv``SIQQN>PZ5?Bp{2 zM!pFYT&4j#X@x3r&>>WE21?F!Ez)BR7rTZZeb;TWWu>yVXg-&1+G#l@FqQ62>TAj&v!rDXQu?`mWJg$&3w2ww>|{GZh|%bO4ZM=bC2(0Z7KUNh<4I}rE$;?DN=1X$rS z=AOM>4*LnGn(?E}oc!q>mLI%>L-8Uh>-4lGpF1b(2MMC~{VRmlHK(flojU#03z*OZ8JTK|mb2Dk z(b~&$707{Z@YG^a*Vmfw3j{jT$YM?pTVfZD`g{3PFRNwF>hx3V;Wb)I_2y^Th1S`6 zt3-OD>8Dh2^f^vnHR^2E>8ZtKPM<=DS?66iRu<(=Pl-YF*@I6nz~x3TQgD{9eA`?r_}O@lbJyVnKr9)Vdw2=k|vjj??v-m zjMIvlo7_yM*Oq%F8@+rdUDrDvy;?i(>X|)pv%k6CFG(ZaOVaFv(nj<>tLpv>?B$z3 zy|FLzs@}&n5$f_I@4)<`cSW$-Q)eCB<8bkGljNhz-q7pw5R*CwjmKfHrr(_RUi6=) zK8`rhe*1mx;@Rcwe3;=BzMQYcG~rk&Zudyp$6TbGQ9<JRy29|YVk0gMG_D5837M1)s4Z;} z!iL_$Pw?5V%d!nHhaS=Boko)i$jme4?PpqicH#;SBu zl1Ryq`>9Ay)1y~mTrq`Xsa7c;WC+w&BpGnzeX3Y`=Qa0~+Q<699Gr@ET2e~rn~|R? zo!C6pF3;#n#E_h1(GWt6)JM`Ocp?gb!zMD+ryc3X*~75YWF<9pI}Mq1gKbxb8J7a7 zA9tH4mw0v?hb8(0JniPvJ91VTlt@!t9M96G87~g1uQ9%ZP4S(&{ueT+O-xnWAt-&c zap12st0100q7Y6ciVj3iJB95V^B!k%sx+hklOh56$0$&w=N87zt7tW#uG*w**85f; z;?IhripyBID_#B|wrv@j5FZqe{L!n(e6&@*n)THY|{U?8Xa)X&`#QimXm zfTZ1EuSvQIN~bmpv(Li*#v;aNduG^2RtzhLP!q)f~7r@&MQOV|X**TmTG^))|!R3|D~yS)<_f`2KDN z?raJX)#@^F-9F~}?mTF)y#ih`6^>R0IQc8ktt&#wS+I*XB0LyW1M?OR#xX;KhVtxI z)#J4E-8aYJZ)qc+j2S1#;h3Yr(jl=f=txb8DD@2RsLF#89uMvo6Jh)WL0FV>2DrI8 zhE2*tW63>p4BTT3GKWT0xA`nN;{-d0k>dno#^8H3pDQ>H21tWyHlnnLUqrOCbTGgm+;vfcvu47 zGSc4O#&ey9lXc#u!Z`sw!KYNt&X}KE(4z-9bk966)m-vi35xoNA1r&}*T(G}9_KMB z8GT-DOcN6Q9S`^uiPvI+!($p+z%9eG38&D+8w&E>p^MW3hx4o^v(Uy?8f9|L14nbf z6+Bt$CV`IJsogMdi&Ob%?o_?e49%)^ZHb_j>eOXB4_6rSq(lAOBy{d;Y*bguUy|wC zqiHVCNDpv0lL$yt#OsTTC$l=Pe7zHyDJ&;{gka zk{yo&iM!yvOMMdLPhG7~rD4g)htW;WkJjqc;HgVDKfkXx8p{oc;7Gtz#EH}zjaBE( zzOSB*o&d6B;f)44eo}=lQGoX zeMeZ(sH-4HZSJNjdE;EB@ZAaGZ0k0g7b%q5Jka$~XtQ3QWm0DoFw4+#uOS!Mm17%e}QA3x#WauIDV67=?4 zG4WcoTtSnr76xyu8f?5%tHXsRmC1q^!qs>o(vWgR>GE(0$K*v;ZVgCd$rD}+W)JZ< zPr#F10Y0dzqYwd^lf?{t_xrKN@jed;cZuJHB=u$c$WfrgCR`9AL9(HhYxJI(JRS}O zpm@^FBK{ZZk)@F$!7GI$Ru;H=O7;t z)(bD8EjA-G$~r90goRdQcW5p}46cSn_rd{T0X>qAMKYZ|V`iVGDk%uVD=M4@U^2x< z5q)AZ%=(YfMgARXK_1}y{mwXy7k-0Jx+=drYcLitNOcT3#c0`h1}D2Qxi_$^d-qg# z>8@emloZ7k=cejEIv!7Wd9Q~*ST7-U?*7Q(q5C8h6<+F`RQ;T==>=7?g@j+&BByqO zud0u}PaRx%yi04oS6#tJg+G{sHt23Hh@l1!F>ym=NHU;&*7KhJ$QR4i47i&M=7D(^ zs6KV%_jRZC4O?`fKsow%!`*`QqmgMLDv1UX0pa+8nZb7rQNG3(xoR!$@$K%^<7_zQ zoyOsJ?{xRJAN4vpgQC^&wj03Iu>QcB{tHfjOWJ}y_e@H)d)#@5N{imCsycYD!;Gt` z#i@Jw7oaYU8Q)%`{KJp~hu(N2-yy8LiR56M1l}kTM=c5mQ81X%IVcy-bmyr~1{X%i z=iwl?j;SWpBLpHzd80s8cFe7B>~8M86R}>=VFM4@@qptorsGkUpLaQR z#v@Wj!zp{$1II`j$L}L1%zuv4xsEXxk56}uBY#dPBPY(PCyaDPs*WZyiYLXmCo6e- zb7v;#;wOt_r})Pv<tI87H18W1DH%n0bk?dCoN4Qa1e*F}opP^=bn%%49pb zzA?L-V)-^@YOry38ZmeL6LD}n$-*{wv@y5#qqn!}!6>!U@Y!5T%J`J*3?k5_K+RL< z*w`V=$Sr7oD9{mn-!x=-UX|7qwLGsU@pSKAHP2xb|FzzOLmj#1()7m z3G0tjwkcJe_eChIpucA{{#vp)DT_Su&DRArXq*0IvTSXv=HQw#0+0C}_~KUuYE&Us z*HR+jAak0Stsy^q5s>M!qw2hl17G@srPp*zi}c}dvMfP#+m1XUukp|P5wx$Bp-v;Z z5j>|R#JYG5p?970TEk*-_I~-RE1=|1IP1)B?CaYX3&oUAGf7c6su_|oCn$C3>xKez zE$;jWS&qd7z80HX<@liy^qsW%ASXXRk9fx|!A**qp`UqyC$pHhvvD}ao)4l>>f;65 zWCy5_IHc)VzOG=Ht|p$-dG04m7kb8c)2>a7ZUCsG(jfV@PHq#e9w>+)6eJ!{oa7kY z^v3x1E-G+iJa@zQ=irR4k$n_f%-yXzIg;bqS9SK& zI6LZnOQG>w-4$2eHL%K zdN}T|ph{$6c+Z;#SxM#=8s{`;jWiXI9Hg&y_zqUa9t-I1NqyKia9>|HKA}@0r%XH6 zrasm-I=F!6>5e~5XW2eCc^&>Lng-=#7Ua0)6%`yDP}v0zaoJ5hf8U@SdDyNF!#2W`?FqE0RN05yVdJE%=r`1K^v3a&VhI9NDs19 z_xo~ZrtVMLEY*K6xp?{dUFzGw z;K$DTl@K36XdRXT`_Nw)(e$*4<<(azw$%}DxZ(5fZKk{GZ~PI>XF6B=?tyRdSprD& z6NE~ag?}x+P6bgno@-++Z)F7IqZnJYV3DBGhn)H}_2RVo`CQ0fmcB`)SF6A9@m$ttS3_DPR?q|Z+v`VY#-*AOXby!Iai8I%ZTxnj$Zi3}B_B(>o? zS#*jOBM2dNo{Tcy6~VV`E?r8$o3>mW>i6n(5-Y2w^EI+2uA8;)ymz?;IHH);!jd(gExNVCDIUIO<-Dx0kN{z znWYs&)C_L+P-1TZCa%@mne@kf%?s~-Um?Sh8e%E;0-{;3+|Wz0;ON7f>6?WtXcwn? zThFPK$SYon7Et>q~4&dwMa#<(ok=dm9y_fM-%C3Ge|i*N^CO(f8i7Yvd} zZ=b1D?s)_fa4L(u6`5=%6lE2$$t;+9AvrZb;Xcdci zzOPBdRQ<}4orS%i(}+?*Qt(l$OmKP3W;3$K^6e0DwEISb?B-XNbhOf4Gtoin1I~m} z6wH}SQnW#5q)7?T=v5j%K420N zl}VN`6OM8atwQZPI`6~_MS`3$iWZ!46e({;mDQ4*pAFSS<=iuW`{37;jgl z1C9CX?^>z4QiN4h*T1jd)Twa0&C|wz)Yu78aTm0w`ue)5?_BFe)p;PpV)b`|AFj2} zjLqvK5LCA2ZS!qfYK=JDswN#PbIuKq5pcs1$5rGse~S!(wnytDmi6o&Zr$6g^kxI& zANnS}%Hr$3&OO!ccz z2vhL!r*SB1EE!hyS|K^QMb85w{T+Ya`pgg5Ji_dWEz-aCZBmOWz=Sxs{m*?axb-I{=2$s7^AQg^>eEkj!ZmVGaZC zm-7L_JmDDYhnpV-CNPTcY%@F=j?oZd$er3r@93|K8xWJ8{u_8gaRMo2pAi#$bW^9u zo{FtVQ`9g^uO8}9%l0HfW8?+!lZ~W6IR#hnNYSZJqP{qSQj}Zet?H+w_=oIMSqY;; zW4g&H4cnJ}8frb!HedUk*E3Tk6#QR|I^%iMm4#%Yr9DZp=0Qw8V~^~ z8Z2}%AiXG}6zL$nH|b#L9YXI-IsziS6M9FacOtzAqS8Uxak|#K=9=&NzCCsuWAle! zWQ6A#kn295<2p`dwjb7N2ONUa{Ua`oKQd;T+Xa(S{O=J)BxfzKGJlk>W#Rn+IUp@U z5-5zCojYX;U^*TWxk$cZ84J4%NE38Y8O4RRZzm6dk~YY|K=QI2dNEU}j~l}*28VfE zd|TH9MDU|s$nscijDfOR0(QUP`9i}MqU*vR6X!ZSl1Orufb!2Pi=P+DDVIEOKUdD; z7>!FL*%1%7ta-zY3vFL>kVAJ~JOikeu;rIbC5HN!rqUD>*pw(v(oPX>dN=B8X_`;2=m*%OG=%N!a$CtDXB>f&Uk+m zj5_*0@YrlWYDwg(3HBhAf~I4HFU59PR(45<*g58r>Nc+3^In)cbkr8m^F=Fj* z#KD0qiwWorD_$4DT?w>O<&cF-Jn`1U$LanDmYg$@~H6OMmd=!+bp#ZRL-C>oyH+n#IB~Pgv+MkZS%~Nt<&2bq<^gdZj zTBzMmpC4>`dZrjhAx)_SxGwq5?*YyxbUzUA)q0$PY}%&)Iso6l*EF5_jO*myxR?%y zXL~B2@)=zSbAaWY2GS~lv)Y`DjcuPC($1SFHMs`+uXA-$^-+${HE*+^DNmFqN6EE} z$`x+1Q$o43XSxf%+ENC13Z=J>P`%F#N8!@9MrS~Ja2pbW_osR^cZRLkK(Uck0-Yvx zfqnVg8$9VbBp<(+)9DH8@?--^_j))QnwSFmspz&2$!hPvM?nT2JN2yNKdk*Yx}M`Y zPb4YiI2dgW;VrEjHrH(CiDU_Kn?EadYi(q$x>{Ohd15qPMPK3joRpPKu33RCCBT7P z9GoJy`yh>_l}PFp6jXKG@yh<-Ve$t%G(t<1>B{2q%Dq$b*oA)SDF^zgEFTBchNkf~ zuk%lEeU5O@)TbBbm0A7Y_d7ff^LuS1;7V;Wrtv3WJ%gtP_IkE1klkQs!zst-uAX`c z`c31S>tGF`czg;DV!REz8b|P38A@3dmdpd@j8V4O9{VT*(6p-S7(bnRFyy8XO|#c#~_UngC_y1jn%elsW3ngp@4~FN!+R?%A*%n+O&ernggMa21$}k>F^e>Dv$-bnIf+GX1#iG$=qWB#j^PPQu`Z zA0!n@IT6F$v+2#F8Hq}^cpGERn&=(iMqN`8a(-YI)u%K;9lE7S!nX;w*f18`v?90g z=~y$?K9%DA)bJp{l41>nzitP^m|7fvaXPc0HmiFv6vZldr0z^=R6)3sRE zr5ayaCHWQp6V99Xlp$Bo5LlpvJ@|%!=0|YaV4eo2L=s(c5C&xznwQq}QXQt2!l{Nw ziiT*Tfp_3|5*2u&1{!V&>6Jv!tG6{-=`|H!sr58G5m5ogzySmXxN!pj1mKC-s|&-E z22;XcpT*D@z251+|7A9Ft_x2D1(ZfZ04i{RJ&t?AnfKJSrG1^Yvxc|Rd+%mzIK6;` zDf1!#fC?ZR8bWRlCJlp-4&XxpcrUwOd^mf~oRR}53F7X|al9FS-BKBe1X!T)@l*g7 zh&-uOhz=UUGzz*ikOkq-?WTGm`8p}vFIV}ws;H&1*a1K`6(7fENvA^eQXz0GNK?&> zR*QIO`$|lOSm3Qx{_R!e3HSW*F1%X?Ks|@`PP=BkHE6_+)P;y@t{xl%JQp>S5VB99rph6yY z6v#db-qCu0%w67gA79-dVb!=O*dsGkB!4LksjUJ6Ao9#{z!kb;$W8v&d7es`%$o;S z6@=6;0SCaF7$DOqka)g=GOlcz>ccaSBx>ysJ)92w4j^0LT{ww21&P4e%gRM6sLtrM z@w-tJk0E?Kl{XkG9N4OC6*zNB!dn$eXsD`?iVD${Rbo86GEI~|9XC})Yo0T@sC(9E zrqyUQ)#%LE=v~wpFxDE0)*5TqntIlnr`1|E)mqQjzEZ5QAH1mr;Jo&(><*8(SWI0; zMcuL_*yo}Sby26lUmu`dALLmdl2#wqR39;4A9YcWW^9NRZHU)yNc3z-PHRXFZ}6RO zcr#d+fv&rEFU<;PA17(dz&4aLHTpF*lwUMfFg8_+HdSjk)$TTyrZr`RH%h~=8V^>h z#hRquJR6(m>l!_q`_h^Rnwp2^n@291M;TkjL|Z1bTc$i)K4~|%@HF!6Rw}=f@OalU zBig#A-MZn~x|PK$+Sp#oDRUo5{V}&#W+6Mv^TI%}?IlhD5ZpiFL5+bZ~fe zaHV%}H+S$Zblkq|K%{p-E*~x_wp}OfU}fqQY3>wT=oG)~L^5?rUUuBOyw9}I&axmt zqSN(wq3g+ImkLw2s#y13ovv>@Z9f#-ItG!3ue$FkbsOL^Td^Kvot}f;tM1mOcG-w7 z`O>ad{~mj$UPoMLtJCY^)$5kt>(Sinwb1Kx*^6T8^C;~(G|d$7>I~rR3v2F+Sm=wo z>_ap4$BOkkDfI;o^#n)sg(~%@;~qX-_GdEkVJy?girC1S&d5fyCPr~Mn|*k5VPyYuEbB)&rvAz)u;T@(X)urUF%WG zj868W?l#>|a{rQgj;rM;sae>8Q{*3P1 z562K0<9EHsk<1g48Dru<-%HTAuxU^9icKgjPCW4*QLyQg{W&JjJgNS3{AtFdR?8<1 z@5yfKnxchCqlZ(*x>Kg!Q|1{{mMv4(86#R=H7N^Ijt{4ub*Ejtr`|D;o>&_;6&nEAU6PDG`>b9l)oXuvQ zds{Z0F8B04YOKZAIUw$qfFfV_9xV#Wqd+5D^~a zy287(5+1kGw6}6seDyZ@s=nf?Q06MV?dr#}Rqk z*4ReYR9M#Y_tsu4VO4$BHOm*(TGyE}*Y$kXbyzm$f36!pdAMTavtgdOVcEK2y|iKb zYr~#p(@}iWS#Q(DXVWcn)1!6MYiZNx*CvW(%TIhOKyNF^XDcLgE39=ZfaP!U65RjQ zzlhe~ra9bJ12;D}uImD)ImE%JN=izqsyP3p_P@F=yu7?{yl8lMI8J$pGyUNf)yvAt zs;a7RroWxZW*i8LlYIOEL3gGxJ2Ra-3xhjLpLVblJFD}*J%}4CJ6jvu+uK*TcE$g< zzaUpg^#5d@hdfM#s@$1F!+6@1Ie{8hJ|J@#z z^Jg{f|1wExNk9K@BKKz`+A|^8%-~o>$yi4qSBbhmhQzs`YigUe9}9Ev4#Hetl=wCAt&4L z*{Y&XZjby+#@ulzsiSd6YYPP+Wuhj;{_6O7 zdC{PuiAM@U=?nduEzk#4kRbtrRNxAXz%?)$i3bxHjd`;i*n6c9p)=6T1i~s4nV!ME z;FdN57i*Orn{9FzowvW3WN^+TJVydS?4yxj0#lSPfWZ2BCYTNi$ADMiSc90)0O8N! zK&Tpv70gX=EP=_QLD`TA$9~5x56Qkt#Is+82T-b><_IDih1lcgHK8cbQu-E$ljOea z3&+EL7$9;zP)7*3s+5;6(gZ)dj&Qv|`OqpmGLH#86I0oSUnkuK8V1e#_39mN77sQ)($u(av(xP0l zU)~rQUtZ8pwoqwmZbdr27?#) z;Lf9;9h*Oqcn}V8Ez2MGRNA&yTY-cIsx+z?Jla!KvfDMUm0g+dusShPDBuwkIv&p+ zjOM$il-QXBTAn)GdfgN#kKA_O@3kW2hlt93H>Pp{R znY|!rsD6y9)CCx*+*;LH3yFq$T=7#H@P%u085 z4apWu5oVmn{`GU8EH_(h+)$nvw}rfvfofd#3tANs;n1f+-{Vz;*>AB5Q@>~&K=xNC>BlgUHPU4w#{B6)qR?RuG_pvF6GxJY9D-oOMKXc|pQ1btbKzvgaG}sju>{@|}y7+JNJhLx=DOHQUM;G0#Ky4hxC4E$C1R6Dfo>MAFKZ zPopfs`6922mAp${;2tdVc+J`IB?u~moT^McDm7Prr!_tBPmocQ3ENIAY~e`K-i+H$;o*z>9@DjR(&56bic8;9kMmc`uFBn~2lYM&Y4EJt;80Sl z*%R({CP&>bT=R@2!?%yi&+*%}B;Y(v5LnYDA&JkbC6Gu7(+=z7BfJeasPfw?qpHW4 zZd*)49=U;NWOxYKp@xm71|TlTx7Sp>G|qjKHj?J{q3!d@ReH#7o8gK#k9jpn(VB!y zb3CED#H&;vVU1hn-~2xB)K*T#mBNq?zJr!)6ewixvtxBgshBSz)oI^8Q+sHg7m!#p z1;jOVK*)uBYUc|dfZpDXWac%fQ^tVASbU@GnoUTv-3KJczY|_sZ{CQ`)-k@Bl&}}E zNfGZpO8?~EOFZSL4>%ipjBbC6T(n+irP3S=E-1vmV*0ts7kxAkEpAcVSERzs3BGaE83l{i+kFLf&33i{+mf=^tduhr(J7m`XYNX*Bvf?1h^S#Y*@$Krc}$pdQxec?{+pu4dFrW+Kp^_h|-{P?De z6qH%Xa}_-f&Kk_rbobmqj*yeceoMQmB^a2=$E}cm)ao{#=s;Ehvh!?bm5`uerZTE7 zouYj6nQL0_QtDB@@LT)+wYgr9ZGBuZ^SA5KM+;bScL+k+x=Ql0ok9OzjVn3z(>t}R za5EtrxhJ+U*V4O%T3#kXb(@IQvNZwL0jNt!a&D`dT9A<>W2Yq2UkB z6_f6Z%|PkM5hBdhu>gL!&N6 z3>;pFI@{N-4okEq^#XQJYrR%wtw*LEUUHaSJvnin5Tw{ayk3$te4%d1CSV-5;cFCR zbZBhOS>UY%GO;LlH4<#zyJ>4KW6GXvX6RyN6lAJP>o+iE}8UfPO_$c-z$9~1GYp@Vc8&8 zeCo3`CagE#|>WTHxnEKFcxzG%`;AB`>!AwYQ(X}kMu+l!g z;#2Z>Ghvmdy6=<8J_v=^o9otukkuuJU$rLdG`W$roQ8K1>a?4ab!tWoxM}wmJ@>1R z7){n5mLuzjMNYZtZKDGN9V5+ddcW@u33(8Noe4sBD^}5jz^OGPK_)cG8g@PEOQ%sq zHBs^Fkw&!|`Gp$aXVj^Jp6Mk=+a^C-PmbIoq;Zrsq!O_BR*P2W@b;o{x~kEH3R}={ z#Q694l3AEo7HL{)#?V{D7}46n`!!hQO>~O%^=f0T(>pN>$6P;);VTYudu9mlh^^hQ z5-3J1Y&zdBjP& zCNSZbFoaXu=r=^^5+za##Kp-tT1COXkmiBBg` z&{8?3n5P^kn#`Jg>q&H*dSE|G;bxj>w2@%ZZ*Orc*?&U?Dx2h(Xl^Hyg14pOBro$K zD2D1dk!U-Kf|fg{I7uCX4mgU>QA4j`f~*6dp;8iSX25PlDDlGIM`dBZYl_d?^T64A0JnN4Rh$-?O5%}~|isMOkY*gk+EC6IhH|Lv}FCDKjjg-93@p-SWOX zr6pG!D{V$3-E z?eP-zNn&lHP>pyGoskmN2rXf>Nwlq|p7Qp~&7Gia53S_^%~9_11=#!Y$?}P{tWVtU zPv>495%=J?R<%K2@WBInw2bi`d zjba5|+6NXAO~#9I=8F&PyYbgZ$SAZcxfL~7wev`tDiLYweDm+`Fjff+MuGc3K-{au z!qx9th5wqXk_@lgwqpw<(vFb&51TLE7Nvj!g ztJZl}sizpJ%~*TIE?PSdtufWEH0L41Ws}$EYoXe;_Te8K!z-P&>nJ_z+(>FYL_b`V zMB=hZGRFGyTa*F2AA;Uh+(@erOsk^3NR6_pL%*vE5pD3)ZeZhSNWQ3--mQ$BZ@6l# zkMV4H%cIGh4aB9ArSpydl}d^>F+xGXg$>zFRfQy)tSU_y#^w&u=8i#N!$pJ4U{gz) z1`G19P*S^z#=co9wK=`1**&50Q&Y-f%w&2;OKHI8z(OPP5MQRppw-qB^sCl`Cxq_x+ zzHO=hdIw~zXryZfGI+I@ylbx=Y-Aj2hx2wYlXk!s+S#q!*_b+RE;NFa8WY2n+6W!y z3Ju35^r4$doWhp(z0CQ0?CT3mcRszjIc2^k+$C7bBFhx~s|m*x+<>uy#Iuw=KJ71_a@-OYRnR446WIOwM31=(2lFrd3xE4rV5=`J4ZDZS|U zyxW??6Yl0PSVm!Mv|CAznv4N767#$51gO6*<&ZzT5SzwDI}@kSV)oT4|tM6vXsp_{k8E zrMZzA-p$?IGw0Q7urTo6t0~iKaK3bS!MbfCtu3FYvrA5fMn)z;$YQOd6y7o9xIM`0 z8$1%AzWVl~IH?s4WEi!eP9xS`Al99<&|IS3^Xjs3sk9Nx3!3I_n;dG)upZvAZZBUL zV1;-D@GIz+#e?}S48`=$x%hl82T{niUWVk$*3p5fiDT%}JjKc`s$Jpp?iN7njjgSz*49aB;=dUi&QdSVrlJURM9@4t-6JfE7@ zQm1GE<_!Uv?dL6rfGNy9w@T;pnrGj8&hvZ$e&3yEE^V1DZR}z0t+SbYH9X5$GN^SC zkxQaO!Pm@KF$Pd-16@{o&s$!KYD~8*u8}n_w)EnYE`4U!Sk+zHXKvc$TO4QB-{o8S z>b<<-t-hr^o~^t5C2|>XyXl+F)QOnZFFuV8CM+>|$2s5f)sHegf?w)XEm)F$Aes31 z%Aghni$>7HL0l>cXIWtr|0|XBS>gBvOy9!llYD0U6@HPibo-)QGCPM0?3X8xd6)#9?&JR?7S7%YyCqAhr7Y04%r67Cx4zi#bUyjwETOCaVDJ9t zFCTq&0grViTKBjN_onr}T$b!Ei0{Kb?=An@YL?#LA*a~z+5dcdf0yMeq2V4L@=IFl z_CTKT_tvj{x4&4Zex)z~l0$(9iMwMXUkTsSRcG#elKk@K^8R~)$%tdDG=75ox)(3D(of8o9|mHru!2Hu&1CnKRK@JKi(55`M3a2e|<;X`62R% zT#yzBzD|`_{X_DKZ0)WxB0S(aaXT{?Vn=c`g6`1zxKwJWg3Bej>y zM|xLB2G@_@8a+BT);~6Vb8MbnA#PQLIv;K+8n-jOJ6OXnNujLb; zs}t1qQ@=;20s5ywZ%#w9PQ%(xBbHC2u1?X{&te~)#p|CXzBx@~iWT>lc-eE~@n}YTsPcXI(V5T{JIWv|e3cu3vUM zy6n=w?0Iw9mvuSNb~yw6n`GyA`ukg?5PC|un1T8HsBO{}K zNe==70&ubOpNi!_1v9wV8RzuJ>B|NN1|}vZaPoma1v5uqw~r2Xe%ojM3Yqb*3^@PR zuEYD$*=E`8UoFeL4AK8+S^ob#F1BI#cc1@AThjRS3{Fb3usA*$zx0=QU=bU;x%*{r ze{DPZ>+iU@=UWs5{RvJyuyAV8*K2+qgA)&M3}T|OY-BKMg>*OcXJl|FTy>$(AyYbn z{)P*ayyJo_I{5w-PD}HBPCh>HMQytL^I64Yf8(izekc9M=>g6jR5MXUxQEVYg({&J zX=A8IzQmL}r2Z&SH!l+*G#d#vBnPVy3P@ml3)=}vk&L{Zez;9;UW5k_r~%Rso@_}I zgn@t{2-B9;kl!M}EtmoUAM!&%+Sve^yvRKDay@^wY%yVp3jBmXLlw+xjK5(vE1@Uc z092i(dZl7>jM~*Sq=%5&L)&eaAiy3G7JFa{xI7@-#sums0r=RCz}Ot%%AQ-t@KoxS zTzCB;Q>=_}zfL85cRL^klT0XywasfQkFZIeu6Bp86+A(xz9eFd&BUGs@0#_^Oh{f} zfy9+f`9nNyYww|+2p~RTHU>cr#v-*ra44xgwE+?Zpka^00KiPBA@Cj%9yWMuFEjm_jHRmoZ_y7e0K?5Z;XsPiQz}i6fp;S_UMmj%y#l;s1Aw)ztJv=_+jBa0pDFqRb zKgR%y@J9=L<>~oFz0Ri%JQRVL2@MOd9{HAwDbTMp(>JXeB zL28c<71uW*Bass7$bfX9*MXNJW6EhQ5#28CrH~-WE)#wb0-_Ee;}G4x@&r?7+vtB7 z35zdy4uQvJcQCm!_(f47k&ptB9|k4vr5;MQ+>%;$uShX!C^<|wjm}+s!eU<_i0-kL z!%x+4-k5Aqigjlo#Qv6Zmy~D(9`R#^wVDJr45pV1@=Bsr*SiE*-x{@R)?oVUgeM$q z`sH@XL64Q=y0jE7>AYMh$l-1Mc#C z%aNt5GS7Xe^5VKH^nP zbycMZC&Dkxb^N@xCBPms5P>no@>4zUdW1~rtEpf!uU9!1t%X`w`6gF<5!j~%8IB0` z%y%`3cG}&OxP=-UL1s6qDvol7qQOiJDk(m_OndFQsZN3by$D?rIcU3kT}vbW1DUt&uc!K2BP0&cRn^`O|5-VON?Ls4QFqiZ5VIwee8VMFv4cpK7 z@OJU8wX3M`nk}q`btsLzhNgVT#Qsx5=0`t=bh4DEp0c3~ri4!Pc@0mD$?gv$7+_^P zGzGpP{Pb4!Mkp4wFdl>#HNMIzW@0f~0Xq9khw?RoiNDO{J`a39q9>9l^M+<$AAn-M zQi?zqqX4d_hs^kq-jKlyU4v&sm+di`^|>I9LnBK6`tB{STpW zL+meZ8_5g8q~fyg%ik1z8RTtnH@?VOLrSh+`sV&E9K_mFA=E!000{?;grjb|_7Ccv ze^0`Y79fJ%Ygv;7$Cu!pcI`fvg7+ zg<_lXAO9H_Pnsd-EHIi3@$_KjB1yV|(IAokii>d!>%ZdStH0&NIEYobSV3c8EV1!0 z9}!us^p|Psh$Jgf309bR%WzbLgIHCQh$$_6+KZKF{GZAY;TOfC zN`zosq+Uj9rFsdh&l3F9TeQGsQE)sS_%1~cv04rJM5&>TpZWjkyXu5dJu{8K+ACkb6BK%8D`53A7`ffoE_vo=B$2LYP-!nGZyPoUZ!Sk|MOh!$y?f5 zFYhw@xcT|UIofJPsEvKnyZKK($MshlYS#LX{B-LDPAY4qzi{G9>KSrr)KvcrweTld zqH?CKF;~0eDtj<8DLGB#l)(2IUweMHgtn@1xXiwZM;R!1Qq%SGt8*^s<++w?Ro_E| z)2!#>I5%ArLG6xrB!cv`7T3Hefv}nXJ`;pZ>>BpA@--pRpt@04xxs8_(J#6{Pz4ig zmHrS;Q2J`qr@ovq@tynjuI?gbN?a#^9}V=PVCNBPOHtcH7p56QubmAjn%<6biZI63 zP7Uh2IHDU=jPJ%bK)6|);3K5+WaIEI%c!dKO{Gnd`LhwXk*ds-p-u6NvyUk9>g>p! z4Jq~4Wp+JIIj$93mE<|^_t&o~$Qa0U>qQy{`(N)7-_O{V!)y3dPIJ#&)Z0RpM|h$@ z{3zhr@Q&J>#_IR9M+Kr8>mq`}gXyhDv1vLcR9k{mDpS?v8V}c>UGwayIWGI~3~qhv zUHz<9W_e(MOM-?WyP%Nsw8s(ocE zs=h~XIv~s-edmw3@_2C*0jkTn4Rrw&jWwwGjyG8D zD{5RC?bgGi`z`d1$l8rJ&Rtf_Tce4Bjk6hNpDmZ>I1$Y&tdGv>(taHzJpH+<_UQam zmH1HvXUiJ@wT(A+;^XH>``VALosK?Q`j&s^=g!kRm*cs5$6XpN-|s}9we@<|6Q9(5 zc+F=e$hdUc;d*%>pXFW5d9^o3aP|G#^~0Sg>=h~N-bUy0mB6c%!0U4%%4O5*nZ37%hOa7}uNKmm zw%!*U;;VtHNv`*0Nydl6{Ah&yG!6W?XMDMY@OkR}_}uXC!2I|%{RQ0og_8aC>{Z0v z$V5*4k+1+sp#Uk(02#Lcx#R$a`T(VwfG4K`DzHFRp}-fKf$DC7n#qA$^?^DwfqJKb z2CyKb5F!RF&_^)H0zkon1zH9M8QR}vK>(~n9Bk|T>99ZmJlIAv*w_^4mK^NV7aY14 z3{VO2kPG(HbO_K4LDdI`YT`3gghaT7L~APGLStXeP}SF=$!jHvV06+?8FaQpW>Iy%79ZZD; zQrqLoUxS-XB8-E8v=vWaNMOenu!%6TSWa)eJ_v@!wJe9jRDe_nAPqeHa}oXpLUEf* zEo3I@02cjSDEd${`q(Y{G&%abKKgPd`qybRfF2DJ#u**Z5O*|T3Yxe9O*)GvKSM+5 zV$97 zc<};HOAdKCVg6aGlbMn^~goD*;i%J=WzFD@>Azy4oe z_*d}%ADt5n8UM43=D!4Gz0Db;fAxON&W((v%r9dXk`x&M7*WUo1JBNL z{2(L>1tjRBZNem>jP${zmzD5r-#bJ>_ee0~do+P8Zd7wK#34>|?zQqVl&q1j4a5t1erOC9k(oxPTDC9F00zro`&;W8W zyC&6j!?0^j*GS@4A>bhC`2wtM1!K^dEvW^dHRIM$EvD$yCVmxnY#5-sP(5h(h?y%d zZpB=LH|OJ{+C#{;-jSyLT>56pKl1z7;1WtaWc!7s4&?||!BsA3UA-a5hv8u!o`53V<{sBXEVbXE!fruN!jM)r~UcycVa{-pWhU`W?NR@|T zh}g;1JxuK?tiqO-lJ*djtmxC2ID&g@P2+c)jnVeZhr(ClId81jvg7aZvd4tl!X*F| z%Jc?PMHk;s@9ZXejM@Ik)GZj9CWfkG`vJ;A%t0h^zJ2J2Oq-h2O39i1?jOmOqUo>O z&mj!>5E9_8N3~0M6ll68c|1a7>zS0x3BX;D+~3!5SNn}VXt}d{!J9-1`vy$vo(XW(R{ z(f8yUFvXsbl0~4I)Z+*5lxmXR)_VN1DO3w_H@o{PMduT}9(6x9Pm_QfBF#+W_L(v5 zu7to`d!*A)uJ~K?UIFa0Xw*<2!-bGE3FJHa5_^Mn@<3Kf#_j3aMPWYRVoMc#Jkn~?z$^XN1!oM5J{vjw!CD!Js z0-L?=kQrmZtBp+{ww3mKsR5m4pGbhXdcUJyXjG>-d<}ks^O*@BOgB)vRG=P~8j-vM z^>Da+@PF{-)kg-+mRQy@!ggMxmj*KZPRHt0w*XlQ(9%1KkX613CdiDa5B5oUL<)XI#_9qjq$8c?nz~A($E@* z=vlu?RAqdj(mFQ|Owt^wOspGPzwLQ8Xh2?-+^e*4H|=c5{7F^n^w5St)7h~7|MHwb zpu8o?cs?5Pr1~x0@Rp3|`6qPLm+CxDH@*x?I)h+P#d)Hws8}Dv~tJQX@ZBTuMxsjt6-p zr1jvfFUe>s-e6dL)jb1WqQ11Hc7guNyXD_{e!czYIYENqZ#Cz1xH9h?;3eR{1+l+9 zwSNV%xB&|n#QxnriyN^1@V|e2vACx1Km0Flz#1AF!j(|r1}vNj99RDP57q1cV!&!{ z{)x%{JGZN1Y^PAB^}fF754X$dqI5gW>GN-H_sz$HdZzvI`LAwAULU{a{`k%9O8Vd` zB{&%w0&oUc{fN-Gc&~6Y&JHdcn~<6HDk&{D56!@kU0fo@NT2_{0#*2~y5?TlhlWP0 zLdM!Q%&q#Su5PWC_Wps+p5YO>zJamYp^sD3;Thxe#gm2+ZdmCRskL5<4VCSfxrP1s zB_(K9jJ^+Jyjl9nbgCYTVjxfr#8<;zCU7<8@;5eZh#y3K0 ze|?@V00o58fv@hLvijyK0?P$LCNw^EC?*m4@S=#={r$Y~SipvGI0#Az;t~oyF2D8G zO%c9^mu!y#5KtbdIYR*k3LySar9J{jLU9Ns1Gw+(MkgQvN(x5I9ozWVJNaTgvB-S| zHd}llOqv6-09{UB0W_S~038n+)mnfkIVN!_ zzD?;KUl=6T%|VZ~&dF-Vh99{H9}z^*oCnR{qxR#buRSjWa`#8BL z8v+X;B9AziK3y?1@sTysJ|knr$o~XqGo-8!!%*^-lYN?i=c&1?p2PUiaUc_jpB5}q zBZnJosQbZI@-mkAFXY`0*&MkZV9-E*he;I;Sr`)OolE(R%0F|!-4u!}_lQqnES*(I zlWeB%!Yi>w7Dhb74L0vfe%kvM5O*ANM*B@^Y+VcH2=jGxT|eK7iB)gHyULf1kOqJV z5zaYK)t25#5R4F@P7z9m;RB8Z5keuf6-5joNVg*EkQ=5a{-IKNLh&JwpeWOfXOi+# z^?Sg%mz9jCrwVvaLJYv_ zgmO4Uf}uMNw2P4Lt{D)8)RT3HnIc-?{Ub4Eb0vnE$OI`)875raozC-%qwU)U+Te0{ zalRHlR6yz!Voh+&R|T&0$b=HF=fdUay2LRP9mG$?#L4IlDxmEbBU@#pxB3>hTI=fV zzK|2;oOKwQz@I(Vv4x9F=5c;{u(S0p`<&MBy@Tl2J*&}QxiExFc_d-zFn+Ride*P2 zo0``JK+k|HWTS+?@UlVpZWxFqn=kR@bv$M{30Wk?>SqJIJ(?EoEC$HA21a;3rkajXF*$pmYrgN2`q8Zj}KTbN?Hb&_rb+Rub z`lRmg@`s8I0U#kWUEEL1!{h?qg4SA2P9WbW$?zQ=qLjymAL^St6B9fu6v)mg->;zc zJvMnLk3+D(|B1)S$AIo*Z*KSh#US?obih*h-*dZqCj-;1=STmI+f^<#q8ps)5&2JUcXmMQ zxH5V8Ke*jL23XlY+-{Nbe;8nK+-_ue7_;Jhv>4T6=JZfDP{Z!?r#EWAYWutpX&K!?c8>Y$3Nt`$%74 zx|s;SdUvU;bT-(C)CP_Vq3K(7cdEKLpUpgB!2KyVt!yza zdF%-?LsSFJVt6899U`Rg3Os+5{S2D}--mMCIKcK-1oT(;=LaAm@EU;Z|Hd1VLVtKr z+?;%~*gBD<1FUr7%Z5x{c0{1GaH@)4o`)^`;;(8mqidRooZy-EazrJ@FzIK3ga8Nx z_!(XkQ(4);`XS_RSybhJe#cD^NNz zAP&o0J)jCRq4w_!b1!i_`^5VM&PR@2i`}xkMnSv`HywLuB%9$Q2SB94Antq$$x$m7TizrHUcStga9xA S^{0&vgdY%H9F7kV{XYQL^^0`? literal 0 HcmV?d00001 diff --git a/tests/unit/confirmation_dialog_test.py b/tests/unit/confirmation_dialog_test.py new file mode 100644 index 000000000..13fd869e1 --- /dev/null +++ b/tests/unit/confirmation_dialog_test.py @@ -0,0 +1,97 @@ +from unittest.mock import MagicMock + +import ipyvuetify as vw + +import solara +from solara.lab.components.confirmation_dialog import ConfirmationDialog + + +def test_confirmation_dialog_ok(): + is_open = solara.reactive(True) + on_ok = MagicMock() + on_close = MagicMock() + el = ConfirmationDialog(is_open, on_ok=on_ok, on_close=on_close, content="Hello") + _, rc = solara.render(el, handle_error=False) + buttons = rc.find(vw.Btn) + assert len(buttons) == 2 + buttons[1].widget.click() + assert on_ok.call_count == 1 # was OK button clicked? + assert on_close.call_count == 1 # always triggered + assert not is_open.value # is dialog closed? + + +def test_confirmation_dialog_cancel(): + is_open = solara.reactive(True) + on_ok = MagicMock() + on_close = MagicMock() + el = ConfirmationDialog(is_open, on_ok=on_ok, on_close=on_close, content="Hello") + _, rc = solara.render(el, handle_error=False) + buttons = rc.find(vw.Btn) + assert len(buttons) == 2 + buttons[0].widget.click() + assert on_ok.call_count == 0 # on_ok action should not have been executed + assert on_close.call_count == 1 # always triggered + assert not is_open.value # is dialog closed? + + +def test_confirm_external_close(): + # e.g. when persistent=False, clicking away from the dialog closes it + is_open = solara.reactive(True) + on_ok = MagicMock() + on_cancel = MagicMock() + on_close = MagicMock() + el = ConfirmationDialog(is_open, on_ok=on_ok, on_cancel=on_cancel, on_close=on_close, content="Hello") + _, rc = solara.render(el, handle_error=False) + dialog = rc.find(vw.Dialog)[0].widget + assert dialog.v_model + dialog.v_model = False # trigger an external close, like escape or clicking away + assert not is_open.value # is dialog closed? + assert on_ok.call_count == 0 # on_ok action should not have been executed + assert on_cancel.call_count == 1 # on_cancel action should not have been executed + assert on_close.call_count == 1 # always triggered + + +def test_confirmation_dialog_custom_button_no_onclick(): + is_open = solara.reactive(True) + on_ok = MagicMock() + my_button = solara.Button(label="Not OK") # no on_click + el = ConfirmationDialog(is_open, on_ok=on_ok, ok=my_button, content="Are you sure?") + _, rc = solara.render(el, handle_error=False) + buttons = rc.find(vw.Btn) + assert len(buttons) == 2 + assert buttons[0].widget.children == ["Cancel"] + assert buttons[1].widget.children == ["Not OK"] + buttons[1].widget.click() + assert on_ok.call_count == 1 # should still be called + + +def test_confirmation_dialog_custom_button_with_onclick(): + is_open = solara.reactive(True) + values = [] + + def on_ok(): + values.append("on_ok") + + def on_cancel(): + values.append("on_cancel") + + def on_click_ok(): + values.append("on_click_ok") + + def on_click_cancel(): + values.append("on_click_cancel") + + ok = solara.Button(label="Not OK", on_click=on_click_ok) + cancel = solara.Button(label="Not Cancel", on_click=on_click_cancel) + el = ConfirmationDialog(is_open, on_ok=on_ok, on_cancel=on_cancel, ok=ok, cancel=cancel, content="Are you sure?") + _, rc = solara.render(el, handle_error=False) + buttons = rc.find(vw.Btn) + assert len(buttons) == 2 + assert buttons[1].widget.children == ["Not OK"] + assert buttons[0].widget.children == ["Not Cancel"] + buttons[1].widget.click() + assert values == ["on_click_ok", "on_ok"] # assert on_ok and on_click were both called, in that order + values.clear() + # now the same for cancel + buttons[0].widget.click() + assert values == ["on_click_cancel", "on_cancel"]