From 05fc5fd2b5d92dc48f89cb696e1adedc522dad76 Mon Sep 17 00:00:00 2001 From: Rich Turner Date: Fri, 13 Nov 2015 13:45:39 -0800 Subject: [PATCH 1/2] Fixed instructions for configuring social logins --- aspnet/security/sociallogins.rst | 46 +++++++++++++++----------------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/aspnet/security/sociallogins.rst b/aspnet/security/sociallogins.rst index e29d8e922f..1d09da85c5 100644 --- a/aspnet/security/sociallogins.rst +++ b/aspnet/security/sociallogins.rst @@ -93,50 +93,48 @@ Follow these steps to add the Facebook AppId and AppSecret to the Secret Manager - Open a Command Prompt and navigate to the folder of project.json for your project. -- Use DNVM (.NET Version Manager) to set a runtime version by running **dnvm use 1.0.0-beta5** +- Use DNVM (.NET Version Manager) to set a runtime version by running **dnvm use 1.0.0-beta8** .. image:: sociallogins/_static/SM1.PNG -- Install the SecretManager tool using DNU (Microsoft .NET Development Utility) by running **dnu commands install SecretManager** +- Install the SecretManager tool using DNU (Microsoft .NET Development Utility) by running **dnu commands install Microsoft.Framework.SecretManager** - Set the Facebook AppId by running **user-secret set Authentication:Facebook:AppId 862373430475128** -- Set the Facebook AppSecret by running **user-secret set Authentication:Facebook:AppSecret 862373430475128** +- Set the Facebook AppSecret by running **user-secret set Authentication:Facebook:AppSecret ** - The following code in the template reads the configuration values from the SecretManager. To learn more about SecretManager see `Secret Manager `_ .. code-block:: c# - var configuration = new Configuration() - .AddJsonFile("config.json") - .AddJsonFile($"config.{env.EnvironmentName}.json", optional: true); - - if (env.IsEnvironment("Development")) - { - // This reads the configuration keys from the secret store. - // For more details on using the user secret store see http://go.microsoft.com/fwlink/?LinkID=532709 - configuration.AddUserSecrets(); - } + // Setup configuration sources. + var builder = new ConfigurationBuilder() + .SetBasePath(appEnv.ApplicationBasePath) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true); + + if (env.IsDevelopment()) + { + builder.AddUserSecrets(); + } + + builder.AddEnvironmentVariables(); + + // Build configuration from configuration sources and store in class member: + Configuration = builder.Build(); Enable Facebook middleware -------------------------- -- You can add the options for Facebook middleware such as Facebook AppId and AppSecret in the ConfigureServices method in Startup. +- Add the Facebook middleware in the Configure method in Startup. .. code-block:: c# - services.Configure(options => + app.UseFacebookAuthentication(options => { - options.AppId = Configuration["Authentication:Facebook:AppId"]; - options.AppSecret = Configuration["Authentication:Facebook:AppSecret"]; + options.AppId = Configuration["Authentication:Facebook:AppId"]; + options.AppSecret = Configuration["Authentication:Facebook:AppSecret"]; }); -- Add the Facebook middleware by adding it to the HTTP request pipeline by uncommenting the following line in the Configure method in Startup. - -.. code-block:: c# - - app.UseFacebookAuthentication(); - - Login with Facebook ------------------- From a7022e5b8200f844c05702dcc59ddc63ad72d08b Mon Sep 17 00:00:00 2001 From: danroth27 Date: Wed, 18 Nov 2015 00:42:19 -0800 Subject: [PATCH 2/2] Clean up formatting and code snippets --- aspnet/security/sociallogins.rst | 61 ++++++------------- aspnet/security/sociallogins/_static/SM1.PNG | Bin 47106 -> 0 bytes 2 files changed, 17 insertions(+), 44 deletions(-) delete mode 100644 aspnet/security/sociallogins/_static/SM1.PNG diff --git a/aspnet/security/sociallogins.rst b/aspnet/security/sociallogins.rst index 1d09da85c5..0109dc92f5 100644 --- a/aspnet/security/sociallogins.rst +++ b/aspnet/security/sociallogins.rst @@ -7,17 +7,9 @@ This tutorial shows you how to build an ASP.NET 5 Web application that enables u Enabling these credentials in your web sites provides a significant advantage because millions of users already have accounts with these external providers. These users may be more inclined to sign up for your site if they do not have to create and remember a new set of credentials. - -In this article: - - `Create a New ASP.NET 5 Project`_ - - `Running the Application`_ - - `Creating the app in Facebook`_ - - `Use SecretManager to store Facebook AppId and AppSecret`_ - - `Enable Facebook middleware`_ - - `Login with Facebook`_ - - `Optionally set password`_ - - `Next steps`_ - - `Summary`_ +.. contents:: In this article: + :local: + :depth: 1 Create a New ASP.NET 5 Project ------------------------------ @@ -29,7 +21,7 @@ To get started, open Visual Studio 2015. Next, create a New Project (from the St Next you should see another dialog, the New ASP.NET Project window: .. image:: sociallogins/_static/select-project.png - + Select the ASP.NET 5 Web site template from the set of ASP.NET 5 templates. Make sure you have Individual Authentication selected for this template. After selecting, click OK. At this point, the project is created. It may take a few moments to load, and you may notice Visual Studio's status bar indicates that Visual Studio is downloading some resources as part of this process. Visual Studio ensures some required files are pulled into the project when a solution is opened (or a new project is created), and other files may be pulled in at compile time. @@ -92,34 +84,18 @@ The project created has the following code in Startup which reads the configurat Follow these steps to add the Facebook AppId and AppSecret to the Secret Manager: - Open a Command Prompt and navigate to the folder of project.json for your project. - - Use DNVM (.NET Version Manager) to set a runtime version by running **dnvm use 1.0.0-beta8** - -.. image:: sociallogins/_static/SM1.PNG - - Install the SecretManager tool using DNU (Microsoft .NET Development Utility) by running **dnu commands install Microsoft.Framework.SecretManager** - Set the Facebook AppId by running **user-secret set Authentication:Facebook:AppId 862373430475128** - Set the Facebook AppSecret by running **user-secret set Authentication:Facebook:AppSecret ** - The following code in the template reads the configuration values from the SecretManager. To learn more about SecretManager see `Secret Manager `_ -.. code-block:: c# - - // Setup configuration sources. - var builder = new ConfigurationBuilder() - .SetBasePath(appEnv.ApplicationBasePath) - .AddJsonFile("appsettings.json") - .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true); - - if (env.IsDevelopment()) - { - builder.AddUserSecrets(); - } - - builder.AddEnvironmentVariables(); - - // Build configuration from configuration sources and store in class member: - Configuration = builder.Build(); - +.. literalinclude:: /../common/samples/WebApplication1/src/WebApplication1/Startup.cs + :linenos: + :language: c# + :lines: 29-40 + :emphasize-lines: 10 + :dedent: 12 Enable Facebook middleware -------------------------- @@ -127,12 +103,13 @@ Enable Facebook middleware - Add the Facebook middleware in the Configure method in Startup. .. code-block:: c# - - app.UseFacebookAuthentication(options => - { - options.AppId = Configuration["Authentication:Facebook:AppId"]; - options.AppSecret = Configuration["Authentication:Facebook:AppSecret"]; - }); + :linenos: + + app.UseFacebookAuthentication(options => + { + options.AppId = Configuration["Authentication:Facebook:AppId"]; + options.AppSecret = Configuration["Authentication:Facebook:AppSecret"]; + }); Login with Facebook @@ -174,8 +151,4 @@ Next steps - Once you publish your Web site to Azure Web App, you should reset the AppSecret in the Facebook developer portal. - Set the Facebook AppId and AppSecret as application setting in the Azure Web App portal. The configuration system is setup to read keys from environment variables. -Summary -------- - -ASP.NET Identity and Security middleware can be used to authenticate with external providers. diff --git a/aspnet/security/sociallogins/_static/SM1.PNG b/aspnet/security/sociallogins/_static/SM1.PNG deleted file mode 100644 index 723ac3b78f1b920f4b183876511f86582e76b47e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47106 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 z�k!r1bRNP%%6k+LypJP4SihE2rf=`06BS5hyl+Ys#JYCJ(KneH(|+Lt@tXs%yX1 z;6uop6U@~sq5=VeWYvYS&uYy4S-$CP!3WXyNBrc@2fUy}Q%gDhW6&5@jV~b+v`F=r z%bI|@J&(Q7Q`gIm9wwBRAp>J8Q(;;}{8&E7Iri;iRn^k<28Q&U79qP&P*jn`YW`N^+7<}T$|2k$d97`0J}OqrJF%_Z=~B$me9(C$hFml&Ebz>4lS1m zk;~e0ZB-#~0j4z68m-G|(Fjq0s;TMG>&Ku~%J33I=$xPzIMu4{;>kBUEdHgm36mm(imn-WWrK_|D%lC@u-ek?SFcz?;sgLBVKJMAq6qs~Vb2E`oVo3~T zY`-nv6dWHAGbNxpepNe+oT_ujB7I4{K>e~OEdl(kn$J&5b40Sk&$Kv*ic2T!<*-2K zAQ|tbFNkC2>l~KRvFGO}?(VfMb?8~|ZMEGQ`tADnMkK`bf4tw9Y{9v~KK5w5e(C9B zi25pxQruI$xvc%cLe6qtTIYK`O9_Wka9b3RS`NGXiRMqc$IH;Na_o{3*NDZ7UU%&J z8gq?O_pYAb4O&tPT>wFfe`71hlID~>YYR5Q$oSBmz9TG^k^0YYnrZutRDfbo^l~yP zpSTTfFP6qPFi1VrGyUvmu8VGDJ;KtYYT>B{W)xJ;@cBXji75)I#P;{qR?`;U zpj&TcAhwFCi4^hz`X0NONXsUhz>dbh^y4afy%~FX(4QxyFytS zqV+5_sA=Ud+MYk_q*W^`$dto0=%G=JyC|^Zl*wg}j_cZ*IeMRcit$^f>*O#9R>~bsE1Nfe9U)M{jqvcsP4x8?CH`n$VJy(R z{y_8I!k~7P@2w7Aq8DQ;>hat0Y$4(f5iiCR{ovRH%%Qh_pUvBqnKbkxROnB;TnZ>z zV+nq%PeJnnb&IoVHVy~jBG*>42e0MSe$2ZJmr95W94Vec;oKC$%tev{>eIr$9Z+rm zN`#Wnjag&nyXloC1(Y=2UtVOeg<2|`PndGQY2Tblf5Rh*yzU$k_4DVYO83TgmNKYH z-leGs*=Ntox8fujVMc9m(YdhId#~_@w!%0mup<=FmNmYNw&_-1Afr8K#Rc%;O=(7B zvuT;&8`F~L(eh~#{I;IoUaZH+ITR5stt(Q!wRoksb~RcrSPFu^H65qHy~fAD87Qle zsb;;(4onkT5SjhSIC>5Ui5fGZxMtE&u43?(Wa;mIk&?IKT&l zRmToj#>~75He7vY$DGru*S=dkJxl;~*We@>ost#ii|;k4K>>S5*O4s=Mc0byG@LtG z?=`DPMZvtKk`O88;mw?gxMy3|z}Wgs4TTTm``8*t+|o->WT~!BSnPqvHQWt^?fe>c zfsprf`KtB^iAys8{UQ`ku0%mf34?W7`BZ!EwMj=!h%G`-MB!v~xAn#+E1y?5`>pue zT%*@%d~LMZ?5)g;9*vhkQ1@du>+o7br7+= zz1dDrSU{WOBd;>8x!25Cwj})~9S`s6iHMt6jec6G?qq`_Zy{Fi%P87 zz2+&9cfj^;=w2FQ*Aq(}2$uKbIq;SHh3sPr?O5kP$H%P(`NPxTiW9YCEp!~yc5{cV zu%qEVOABpoF>TR;FzSi*WKW^K4?)OH`@rb-nRkeQY-|KbJm9;ROE+f}0yukf2`4EG)r*v8SItM5-|JAWY!6%*r9d*^i0nYwpb93sR9pu=_>+j3nOc~3}djWg$NB&bDXt>K(0e9_zE zq$pPX<>ePATjF_$HWmI~02(pcdu0&)LKe~FBL_MB!Q+MO-0zr3vv32=#jhuLUUo`+ zPX0Q9_}EmKJ^l8gu@n+b#`x5h($oZNZ__ z+Vk8Al(ggY8=5udiT6*pDAwo*eD21IC^(CrXOV*i%K(Bhq+Ca;H4H#tn=1E-4yI(- z1~oh!<8AEu7du%hUg;XVMFLN*xQ~ixkpr#m`qbYZ3Fr$aB?`t0GyL<1g2DLmIwXT$ z7gZy8nQnT|)Hm*+8zok+f-;!ur#-1qXQNHwr*FJzxrL~aD}}-3AZZvex`h}9f1ArO z%2h^MQyL=7qtMyC7<@>un5V|8^rE!xmu6|+gh*GR{y%)&e%%z~9vgNJIg6IC5yf`A z6bsk5SmX7kxJy$9`>8~%?xnaE)=A(0MUUhARG%a3D?;Z5;?x|mwKZ;h@tL!TSH4+~ zl`x4#&U>AXJ*}d)!%fakBkM-f86)PHsIl5O#D?N>zB3DQb2(pU#eGWT(o*VuCl8JG z%I-Vi)8}{qF2!szfAS`AtI~tfJ*Q%b~UGfH}isVqB zOVo9C@#ejq_yP6LRAZbnSEF#JnaK$rksGIFmAD%}E`6B_+t=Jsn5CzlbzuDut+0_k z@h=_w@6|YZv3$L~X}%#zx)Y`H`=DC9Mvm>}cGdJ#Z{jL0lB=|bOw%5RgMNF;fYo0x zPJ2H5i()K2-o{aBD){W+ghO1b?K;C;tM8Mt2=ls)pKVeekzJLckD0B(!Z;n8 zs|4TFg(O=VI0j%~!>QX2F^ad}jSFVBso$5ER#rXzmgXs0W)iJeTw~gBHNde66ka0; zUI2{NUimy~NUik1-(%kk?*ZLo0qeb4DBLccCo zgd`Aj74d6wN(9OOsVIBbi~PlsSm=A8f97()J07<_-6GAON%CVisNfl$0*2S=C*yIf za?LMRg~fwIl<1eI6yC}z*yQORnQn@sj$XU)nYww67-wBkZGtx}#fhB8B@?FCraUK= z$bIvE;DS2ku8wu-4U zR3W44MtQTdy+YSyKS+)_Vdix-gPDIHE-nx`rfVwP-Md1VnY`U}C9`9L&#Um+M@`gO ze3QpXt}?xfWd0R(b+^YsPxf2-KeT0yq9i&k=Z-#$s?$?Hew~}3UT~QSA138Yg)t@l zMy9kMQDO-T4+AamGNM^Y>k~^YAn*F;u}bAPr3})naE>Zd!E%Ec5j&67%ik(^IpUQ& zUj_3FR}}>*EJFD0$TeoaVtT3SoAFS>cASdL4r(I8HW4XBK$#((_#*Q%bXRVjCcw5# zx3$egin=(H&onHs{Z2=^Y;xvg89&9b-OHh6it0tT{pADrx$NB48**KbnVB9YHc9;C=}_dmOh3u)o#6(lnjtSQ zEqEsLij?B;I4ZTN+#VBm)dH-c)>+Zz22i~z&wvQvU@4w32B{Q|wkwJOaCi@hVkyJ;%7q>r}~rZx7ddhdx^%061-v6wB*W&z{IER zRtWyI1|9AX_=r*YOQEI(a+y&x*Kch3xn*Z4$n?bd$aj>}tj`ebYkeEnUET(0s!jD( zso>QJS??8G2`xjqRj4CPVV%t?<)v^LJD>3h0Y2uUv1wQh6f**i2{@t%p>+4oO-N1& zbU9V&07A&2OvG5uM5W`nDU} zaYN8_G1xnv+&;H3wvH_lB5e1Jg%!pHApLqfC0GNWZ0qF9f)q61#ytc%_w#Ta;D-Ie zgz4A@mq{huR`O=m^7z_xovI^WWO9k_%JH$p(}Z;8Tc&%(y5cV7J?x9Pwy6?ejoajp?wX#b6dukzw9xKJ;YqemF)vtp zP=5gyVBmRsT7lSJvGG+qqGh0Y|MH21d|F0#Z%IIQm|?+c??uAQE1N)EgyuajQ}R@>wIyap*}NSU#MMK7fm zwz9J8TJ7~&9j>2V^S+VLr+(aiq(5J*U>!AMr=`|aSZuy2`8diat8G0SyQ_8^lA4{jyTzH~NJeWI>q=!8Ov=CUH2?s>SdUFx2vpD=rP+2HPqCG5h6 z?_h-C+0*Ev+Bl+uVxTHEfZD#93yj8S`E8+5MKzHk9inV1cJ%EGNC%2I8`<_K3J~yq+Uhxb>Qm9%BJSErjL?}pD*Gbzna@k%>-d~cDI)w zvZJx%h4Og_`2x{M8XMB#ak*-p^-i#jN5>B9;k_MkBJ-A&B1ChxSuOR zq0@}VB51pF&-aYxE7ul&aI!TO(`218cqZt>M6uKSEo<|Zo_)TEgGN<*kg{)&&%IC!*F^7vifs2S#B>Mm72w2rkDL zfI9I36D+mQ{*#E?td$XMtupTwfJA27@agBW2vL(}^6RxG(VmAztgyYtGL^rT{xTAixz&)ASEg0k(3e`-HaV@G zR+_DLy>-Nni5j73B<;;L9DQ&MSXcQ}8OmxEwXt7ga|xYu_9)q7E%$5J98$2Htl-TcSTl}KA_J-y2|ewmVbQ|=Q(j}utK26$~xI^ zCue7AKUV3`S;$RCwl%NmXh?-9?AK1S!vigz>7oGzo;xRFf4B>HrpNO^XCRuvK&~GW zkd=g8n4`yCH-`BVkEx?wWjY|N(6!&8wO$4gKc0%Tv|(tAID^#YsoK;= z%|1iuR(^s;r`gx2?*Jq2(o~hn*ym4o(Gy1bKa*CEtXj^=CgnlvOhuwHWPC&ESx!(<^rT<76vwOt~rA z!Vkbg}pm9Rq3WAUA6n1JmC>dg7EYf ztxr&bsVmpujr-=Z-e@|}%^UPX)9~}?tZ!VY&0ngmj;9%P%u1=ieQ_4CZ@xGcm1p%= zHdn`D@_f9ys@yt)_b;3U5{f><)F=C|Z1`%zt0Ko*f5%$RwQG>voW_*sk7SZb9wcI4|wV|j>C^jlGfBQqCjwgwCfw=FoU0F>;9VRH` zkf0IwEM-sqik#bR5BP$l1nWfY$d)7;bE^%c>haHoi`Dv`6K`}Dfo z`kYLDdo>dJ07L8nr8ZDk7g^?r19a85UATlvMO5^5EX6TyWt^!wmUd#eBrsMLBOO2f zq@9^T3d9B5jfrxXixH2#O60&&=y`C9-&kW52R*GGynhQ`(%X9DIau`1 zF;3b)JfSOppc;X?oSLZ>^El`R^|06JZg5q>#RKHvCpPp_OG{d8Kb97ICH*8(NnsGD zL-ca@6KxBOReN|7NQxF><769^J#+i_-KWA-GQIjZkcK-}Z}tJd^wYc3B@FGMFz=Rc zJRp&%#-?>)u`lre9*Fc)LfNtCBxCOFeyd_^L^`+~lzzrxK&{xwgHa$boBZqudEQOO zuRoroZ`=?{PeiGdSHmx<2(U{2hBP|A?V!3`KN+#p?Za-e5Qaxn?=!0OL+sK0pqWhr zui}f)zjJ9ZSj8tP)A>ad+p z(QQcnaY}d6MTPURb(tHrF$yxyM|-i%+2`WORB^w@-TRS4m!-=-}UY$Mwp;gLfj(ng4sdlh?;h2JnvM7v<~pDw2F9+s&c6`Ik)M znHp&0K8r*E&cQrgom;bA`6W7!HQ-Ucc$^7e`ADJn?1M_mhatSexZ5>~Om*Jkaf_L! z5v9fEJGZ*uD)x!^#PZA+QCxM4Sb5i|a}Pl-w)vF;-TYp06bI(`(ausKL1~!k-IR#xx_w=(2ypIk(wu`R{e@Wv9{jU>BNN*9m?V9u+Xj$ zTbkE4#a;wJ67z=K|f3FIE3clk&wG;jIH2r2R6zd*Ssm2+kQ9Ib2%@vc5lN+vWk z=c$xhiiBbpR%t`4BGx6|;D7Fy5)sIV5qDmkw&!g7u{!@(jfGh^ExBW_X;gEgav2dq z3aKek=yhfaP3%toh<{7|#vOdPq4NnB0qoL73mBMhjq1qPilZvl!S3xxoU?zE3d6rz z^DJC0@fo*=!%N5$;F|&7cz?aA3k@)kSXE7afOlh2;rMQPsqb}M6X0&$hU;Ph-s(;B z^4gT1bI&}e0ea~`3Cldg8XC?M`?2(!WlkyY%w#{QsQS|F76;he zqh3H)5PlOjZoU&vm{=9^1{<$WDo$}-v^pr?$)f50ct)&w5G&SPv2hH&G}&+~m< zpSSb?30r;Ne{1i-`!2B&GxVHj@aLm<5$W0w;K`Pd{CV(UUZQ$5Q7dlJ?X~nO&a(K8 zqS~IUFs@tixk$?cfw*kFi|fIeOu!XY8!_Qu?BN{#R=%`97>7%mtBt7o-=Zk5=>Hf+ z_0V?pYD)VjvYM6Al%jg-7Or<>svaTlasI%HpS(lV8Y(K%zry+;bwDa?WmzI03mu|sAnQR_8T8aysqSdrfW+KcCe*Q{i^ zaXsUBxbpb>w64r`%Q=e}9wYa3UsZIG`frjw#M^`UDL(f!e;&>hZ%a*e8;Dz6oBmskpOIO3L%mMilrpx$ec>r^R*D!4oG zYmrkeo{rzO8(><7g=x~Tw=mz@b*tPVE!klY6zdd&43AcH`JKI|(K0uW^U?+BYP~|f zUau(x2co-WI$kv)@$16Jyuv{j50vZUQrE{sn#J3tk}Zu=c~l9H+!|ZMHf$NMazkRL zE@PxCo{)LL2vOadOCjOvi|%c%BQHB0I*f8^7)IUM%z#{-(Oy%W&ff zP@#5<*5bKiuQJipuG8~o*p05V9Qn?g+@;~5-^g{jyI!}mV$w=8slf)~wHPd<(A!kd zqw#HzaH9&Tb?kXlkJmwH(~6RfFrg{z%D5lGV>X_3|Evhc>|D-!G_5+{$NOl&rPAmW zrWN(HXnXkizO=Sicl_ihuC2&y!H$oecvK@c2x8LelFg1X7%(w_O@g{Sf1Vz>8JbTc zSIh9sFmH=mN4J=rWl(& zzMa0a9SRN?*yize5}$YD_6gGg<(Tdv03Y?z+76YiK;0RQCFiY+5=D=G;5`R9JiQ{4 zn3oW_802t59Y}k2!}q2@6u(WtTeaag(6&MiN1`KwDz*YT0tll@S$|Nn!27l}07l4A zJr)(R9o>Df&wwx6zHhE`V6EuM5#Bs+aZ+1+-TJ`#IYpGiYZRc$Oved%Up_*fopA1q z#Rll^N`CIJV{H1wwlEaR<)_6pCNcCyx-{6y&z_E!V*y?&v_VBOv^Vj@$3xr$7JQP4 zO?PVQUuSjm_F7AW(+m%G77fM{shAG+A9{_jca`CuW|*(Vr>Z$?>%_dI)Y^5eaBnpG zq3hyTDwaA719PdTeFs(<3vZ2)!miN)(8h-+UI9ZH==xG{|%^;{pD-*1RJ-)%A8RM0=goren z|Fbb=hvc`qHV(&IgDDr7iR;)S=~%{nQT#KK$BOz9oaeHLb3EWn?_jyBM8Q{#OLh<* zmN?-7M~s2n#5|(nLecZaB{;57ZoT0Y^z|)_qH46ykiE%WPi>=>(VLFhe33R@=)mZu z#!%$8ry`FgQ#zvbJ~~E)L;XIZ=&BzG((2oV*4a@|Q=nnk18->I?(T>fG5slSdv$oE zxvA_8f@_z96z+9=l)1#}TRg6@yEBf@DFRUP(bui+OSi*iRl{*k*UlQySpg3E~YA|8-T+v*EDD>m@6n#ba-zAF)zbmnNn!v^29dUO8QaPK==tZ)+2jC@A@?Uy5L5!rqOk z?#3;D3oe`YJ0+c0~;Qb9{Y?MVpr&tE-VXqT&NJzS%6jX>|KP1BzbW zf(N#kG=`nT1h7I0m`OmRQs8J*V$XLW(Nh}i3cug9T%S;u4HK7TqpJz$1+egBn_qo-1i96|d>ZV-+ES@SzFZ z$(6pwN^0W3FsOIM@LjBrM_8Z;*-{?!T>-k#UaWL#*K$xZTf`eSCQQ!syS#j4lzOh3 zw}f zuI{Jcn*?uVcnrHPuyOr9RzZt^=DOG1@fW<+(D zHxB`b$7|s`;<2iO|I%I&MjO=g2(twQuEP3W^x{R>)&!Y?dqSCq0_6cpOWiyau@hL& z2=-N+_!p4gJLCoLooSUCmoH4RVudguJ(dO(`HfiAka=%(Qo~6B@V{d6vy*yK8VPb)?5L>16h|LQxfu#6PAp|9b z3VE^8qDnACo#xT$vAPQ$#rnEuGYXwHCG)H-DRe zMXWj5rd2QR)%n|vDab_jvE4mPC$sDv@%3Ya7w_*CX8G(&&NlsuS&AVU0)jrj!f&;T^Wa%}@OCas|gRy)~lM*r4UO9Jq1xyX>$v&oYH@?+5=L zu5m|$FLH3rVN!NZ9OXv)nZSinCC9K<`kRqQ6+rpR$N7x+u|QRrBUqekEsP_H)wi0m z)Asl8lVoPwylyOPSpiHo2kQ3E-(@L9)n@=O<~dpa&TAGfR8m1y0~#{deJjn??lAQx zqUCrc3f!d++q1yr!}}c2vT;i(o*trUL%{~sMgJrt#XqXE$Zm5w*crRL*%_LG^{1e| z(Cnv$E1)g5pRsavfx0JYgUz(dt3ZhDD&@Y}WmA!FUV69fBnqDJ?0eksPUkWE=#|Vr zztlh(Fp4h5>Y1L?UNQ9e6vF5zpOW7LN6OIY7S;B%;h<+wuL^(K=#@Z|stECi))GJ+ z%bFa@kSlHNdV1~2B%NK)`9B4@KH$!B-Y^bDD$)p&L@5ZP=!d-Ym?JL*L0Eofg}Jl9 z<%S=ZA90FhS^#B&i;J6sYQEBwI7coHC<1=|^ChmIf|x*o$j&s0_h9alOL`~`C>C)Ld>jDOl)7FgYKpV@zH!P& zYTq{h2dKs6J8HQi@o!Me00*_uvFf|CQkS$$2Rci&zNZ05u} zIe>NKA4{@7e`Qn)`h1yLwcM!Sc-boax?XG7=li2)(wKBmJy9%8?I4KM&G zEkB^VcP+6oD?aVv$E7>t^M$^%`&Ys?*3=DBe-#t7KBYMA^U6UiRba#L&vxhV*wK$^ zZ(PRt+`QV(4Wl}2YOBu+Yz_%}FQ9Ea!dy}mS3OLN7S5$N-I42(!GkcUM<7tJ{rU#B zS}y6q#0kp&6rw_MU5foNrYX(k^!%5?RUNVkQ#q|PI`VHT8uXmU*>W_kDnG=#_?=xL zqGaw-c~Z>qcJnn+`Dne|deep!?0D~M9S7E6IqsS*hosEWap)ZA67KlzBtE1n{D!;eH^y6%5SL>dplKYAiaXDHDt-Udoq&6kCa!4*%f2(BCXw48vj10= zM=h+b(NG+2o%XOin_H@ScBEu1Eavvim#i4ObMoE#EPu#nDzNfh#=vrvuq!KzC#pH7 zG{p1zGuQyTgzPqD=XlZEPVDFI#rat0l;CE3smDxu9O8UWB;Iwg7F06dTGCXY(&AmR z1koQOpDKtQZ!|sSb~4d=as^T?89{I{Int*NIbO6fD1STK zn!<~g!|K8I+Hk|Ges7*|^2hZ_?vAhUj&!7K5P5Qtna?=7>SdII7H@!R^REj{Hwlkp z=mAx{51kDEvT)^1Ylxi#q@8h1|KVD|jpwg!ELNzWUWqH@`B)c2yUj8SHZ6<*>_dT2 zWHC>b`_BF~eIJerIr1=vlU|A}p{=>hk`D&z|b)rqxRUI#6@KUQcElm9tIwhRu^Y$>LT2xe3mn6%ekedlg3TK8@O*{=1UX+o>>g$ zi**qhvFtLXq=qAhRwNTvl%dQh!)lTZ6Ta9mje!-UN77_yC@%e_tm$}|d{Y1p8-7D|)WO~q( zV8ZE)21b6J&Y=`VxEC(sEKP0BN5IMKO8DJ%d;1GS+y+!$O<=p>tzrnvO?~;-osfEs z8?6~xHVSyMX+&R1OJ+?LD3jWKuV8#Ea6*;PZ{$*l;YieVaFOVDslM<;x0G(c33ln^ z4=0!?Z42kX(p9q-_&YTJEV)P^i$3t3W3Ov0oepg>1ZVT&ae-AwzUNp!EQPIKBr?w! zo~GSjk%6(6C4P-5VMxgbh4DNrVO2O-ZK2HURC!zDGMIIouxcF5>i-cG9NMJX6(>LW zL)Dr4tfcYDNv&kCuH5f!iBAI%PWb0ifda(6CVBr7%YJ}IHE@_Ts{y(xUWzuDiK2OS zz{?3I$fsN?rqCJPb>K#YWHjUmpo;*`fWQkFNq%x4TL_qHhg3MmR}^je*+&mau=pn} zXaImXIjMoP=6Q&)c*MZp5>Bi8UlNXtWEmg#;J+w1uS+7?Uth)eJMC4~NIP$STK^Kh zIObOG86N&c()=+W5I?;&1wJ<@g6wT9@h7}4y%$8{6K5#&K?YA|`;j~9XHN3^>XJ@IB09<{>sfEZvsTaxe~?I$j1pR5D3hhcW1wIFy&4l*E61vosm7CcO(rm# zz`$(sHq8fYaMW~{%H_yfR#E*mD4Y$sj7n4Nj&rJw!S-WWRp!vzxkldRSm@m>rLDvx37l40WS1q}O8HSD4Pd;MI zO%ZOHeCscr*<5RBLOmND1UzGha3_|6l*i9=kJexJ^JDadHy7+Dy-c62)l%Gtcfx7_X!PuC& z8Ywlcx)k6o$67AJM3LRWH_}S7014+;@>2Iju);D|ryTtcv>U+m1qMLeuvmmI;4u4t4&wldjni5U7IN{FbgYV_`Q2kv z8RwnlsZ!rsZE&2Tes_EN>LD*2wdAZ8t?04mgc5Vi!5OsTVM?45T(Yv~zeLzs(oui5 zb3F@KWj@Z^*T#&QFW}Bp$sF|3dW)p3_{ro6Zc%ZXz@pjFcIK=yH;HPpLhvvb{X~DG zj+X+%&~o1en|;C8erPl4KR-C+og8haINFN)VSf|-{zfic0E%=_;wUf~-xU~hjsg>& zHVl%^yZQf$FvGz_|3mlr`Pcgd{7>5B=)ZUDr{`D5#Fo8gU=t=HS&mbOg-t~|QP3F0 zjqjSEM&omioQP3b-(-=UmVh0!xJ)D=p|6k>wA0?Pvh_|K*p14bUUZDp>_gDapX zKSQqv#(4!?(@;RmIk*EZ8Q^ZfBhdv(l#RRG7B~I% z#aC@9LrDnZQZHW~=Ftemu#QuvRqe|FSDfeb{U`hkn}u+;m)V8@TQ>=__};0V)pT4f zMDYqNtsMC}1=RWLp*CT4>+%=E{&nxGfZTfU$5>+qN9r0i)CoulnQXwDC`&}v{B8+Yo zOYj}mS%FA?J!KV8@^7)`aa?xX&p3VeXPsJpfk@PG6oCgyA+CgF z09(`em6Fn%uB3M~w~XZXLVu$G2-;_jE$b%|tzHA}^V8C8_SWheDl+k5`#L)M zwhOB~)OmP@Z{+)aQO)5`{@O39@aCsvevhKRDv)MfuN0bI5lcl=tE3f@ z?mXoeD|&RrwBiEYXvX0&XX~a*x6etZ3Cg5q8(IXk*Q>w*D}qo?DN##_>S4KnF%#D$<)$r34HeLWnb104Yk9mJA|IdMKeY zhy&tr!e6=!*KyDtklKPmDu0erc=Ul$XrIV>|kx8&w^?+j0>C(JY-48o>N3 zuGB75CRa*l%0-Wqe5T2NeJPL`Bl?_j;EBK`b|*^IByj3o+$bkOk$Ai&8~K`TbWh>E{7`N?Yg;LneF5d5%X#(!&)ntj1y` z__zC9N$VkME@hd?ojzhA#)q2fj~CU>k-8%S9gR6KA%mSA7Ic7Tdr%F+nY!^k1nJG8 zvcS3Ggz|mdUBl^0eymnjs&MJ9B+8jLTN7{oQLG9e#1k=cvc5CntCJK_YN7V#=Bqho zV&Nrc`Wn?LN&*^ccJc@6Paru-eivcJK_y*pftq6d49M2z&U0d-z0wy?9xoUaLB`_gY z!Db$Cjg4r$ZIn@Cr5$QojOaLk{aoh(tp@KP80K^e4=cqJItM&3-M`*^j4Bx7#7JCWQ+ z%w5ZErMYhBe9=w0J(4sr6L(9ZN<6zHu&fkf!zd9dQ0BB`W^qCy){8$^t?_^WT0%gV zR2-TuHSDqye-Ww&C)vYzYwP$*z$U=7<$Xx8gf7k z^=4A&U6lei2xSplmvXM^K+L(?y$(_~*xk3OQSu_kTo*O7a=V1(1LCrb)RY$Q>&fXBw<<3LRv3U@a!L6nUruk7;0oMemLd~MD2wtX_(Q?Hv|>OM+}r8MG-xXbKs?((<4xhFPq5j!DEId&By!;tq`~8?Gx^|Mh;{_iq*n! zdhTJWTg{(xso3I7J-(SbkGw=);s&qH{$0C%9}~PDH+ng~KCC+`-DY6gff(|%FK&_>HU6H0hRtYAC1RO;f{hYRoLcr%(9rriD9i{kA-xhT@GUAxMI90$)NIr zJ*SXa-9D#)d`OXZw;8t7Wmrq|*Bj##83mA#FMkw=*>L%WPqbZ@84F$#mMMq#WalMk z2VV5u{AkQ_9>xZ(14y~zu!}qlv!V!e#Za}YRcf&Yx69KX1A{ZHLA#4Hb~O2=Qb%CfQ)acvah1=opPV4AGv`f8~$NqTOx zk~v7l1YrX1*0g~k!!uqyyPP>Q1wO$)Hs1~u+|J1V1FVbrg#Un?38gZFDs=^n&GoGm zyK4G;0yc8UXAd*|&WYx#Mj(dAm&ZWDWqS^4eUb-sPH^@<8)Fd<5D_cykc~0HjFK=^fWME`ty9+#t7ZU$rGUe2Bx6BhZ?$tCJWh ztlcmcI6v@SS1XR)lH{gIFxF$H-vvrET-5(UyHw~Idr(NU1uzEn;|D2G1m)b+IT#|O z=1Zprp@&+H6I(oep40(4m+lN652-VruJEMiJsb3W*sLgi zk9Im!D&xq8ruOhEe=SxIiK9{d34`gRay7ac{OkSd<0&s5y}Gvgv!x;R7f!2S?g*{8 zjwsMN@vtY1qac~3VBYH{&d#AJXXWukd24~N4v8`Ws|rOVUF9S7SU83kG(&r0WTGS< ze?)7=MewZ+p>#|!CAQuNuS?8hw{8ZFU!RfMcVy%GrQucK+EP8_dm7b!`xV4W06N?c zuh>X45}Y`H_b?o5PBhJ3LOll7N8_3tzY81PM=Y@!^u47NFG|lJ;nrZzhn4k5#ZhRB z)jPr3nVO&-9UTI!3?E|#6I9*eKxan z7DJ2GSa{AUSPnks^B=DKu5jY$_^p+IsiwJ~$fG~2_v#J!K)$m0q#jR!)h) z&Qsf@T=>Su3>OHLQrRtIw`q~DzG-6X?WbS%%VG{-wZz3Nom_{tE&beLl9qU6WMKDg! zPuEJ6WLD_GJtF`H#JWN;Tt@Nryb{*y_&ljlYL?7MfQ4%}LPJUOb$9CCBu~^9nl~uW zTp+bv6pPy8<4R3Y-@ycLN`>B)E~jL6l+)i+?z%CS^U0;kHeZ7&cOv~}wJ9X1-nxgu zlEaDfPs*qnD2F$a#J6vay)kGMX_-E7psuor3kMKpjTKlLtsxIdGskM3r%7HWf3|fz+aE``hd%xF-*$9#WK!638!720 zKrc@}V5MHBoDDkqvQ_NAm`-y`L-Zn!_ChHmLF=Oa`F>$#!K8Q>{dY~kJ*TSl`b#pg;N2V+q}WFwet;X|AJHB3HmYWgkr>&f2WQQYuJS}UGtj?}Ac?%% zg3swvrgip7gYimS$2sr(i}|BUQd%HNPwF_X-5~;apP4-<0Cxqa_t)Havt`%m&TW_!PER*s?U@q5?D{5 z1|Ujd=+MPaSlX%PF5-`BNp1IvbR@hRo6&w?Yn2Xb$O62$XFm4PQZ?9&Hu2Q($5%=< zj9+R$Tj_EtzCLB~74(+GUGJ>%Ja&(=<2S%QPAqRENcM`RvbW;>2cxm)^I1wgQvbI5 zU^4*kI&dTQLA_PGji^4JZ0Tl(a+fK(kdpHIF?Dr$xmKDq?ARZzUG!phjUG6yEZu`_bFeKTPE z2*o#6`^cKT1@`k0Xa^w)RW8}vBPLD^rTjjTLI~(+`}~HdXDZBVbtx$kk&1=bD3v;! z+}9&)uui-t8kmCB6dx*{uOb>JLE@E2Lhs<(GfPRnzZ?=Ku@`&>Y`2D2wZ_37Y*+k# z(3HLm!RMB^Y&2f+x}`f^bKcI7mE}>iLTtiagX=UUW|rY>#muG$~Bq5Iovez)hC4<6FeNeP`uE)wXW z;!9jhMzs^YaFtN2DR4pcolj9;Fg1mDp!?o($$sH8C8q?j?u=jdJ&mH+ zzaTd;15ZiaU_{1rrmTz~yXed3atxE$q~UAT^$Kd?@j3g?9bCQEmF*tVQwZHdAx~^* zE~2;bZ>!aqI_&bx+p09Yk%yl}9mPL7PC1|e4Jp$@Zu0CWYip{S<(j3p!@hQ^a?hI% z7SGmQ8&*?yi!WV6A09I6M$M~1XVD2X*a55B2GxZ2@HWe%NaQ)(DF~6u3LSKUKl|1= zlz&Q&X>u7rxwE4(L*%;rC2wf2I9{temn?>1jcFHm2ZklE z@*|hnO*n>%%)&?=6`kfC7UPK2jkbH6Q9MFD#~zx-GKUMvriUf^a^n;Q-1nN#Fngw+ z=Al6{-W6WQi=^`>7b^pY2umjfSH5<9lyUCG3#Mh4v4qHmdgXv@ia;Xqt%WxHtq+<~ z9$ETX1%J6OZJ79SqwLFd8^$}Qri(9avOywj=;+GlCF|iz=Jl{o#-gUQRI9R z7UzYRi`Dq$Hin@7PQ~D9B@FRiNhvI)#^z99VZUD7RhG^u-=e+GF120+aK>0zy{bO} z-NG=JqOu4SHtnBPIno}!AM0OV5PB_`SXrIeE^1dC*t_VZJ*b@J5`e18I*%1i%p^I; z5-J^}{srx#tEBeZWTW5-sr@Y7p??mWx{qCFov^n#GRlvr{oV(Ru*eA<;TegUN;6C% zd`k6`^7M^a2%exb5Rq%e;aC~&8PmZa=fUC}J$O%K&;g=3pFY~HqaveN`&nD^fTN4e zWKD(Km7JUwu}G|^(t6*ACxMQt`e9yqcXAn5&HcyA7EkpD4Q^(iUeBr+;U%4YIzxRt zN-ZIKtWV-^pGH3C%Q*wVA987rjk)g{A7g!otEpY)zzpp2u}@F^*FYum?%)BP{6eg+zq|BLKF1FRenUWBIc&=6BW>x z=KWF4VpP3B9ui12KUuR3U7zGRonQR*C@8fgmLJG}M85p2zI-o^?On<5>JsvAQ4VoV zN5;lq9c@X9*H=5s?>IWz^J9RSZ!w$4p@#hZStY+d!E;g)*@Ig*{XpbQ^NWpgc&2SN znOSkc1SZq?Zl%`qv{6`cm(dzC?kin$h?LCGNLe9!&p zI>$e?DhYnF?Kx@eJ^wOyR-}+W9{a`$Pow(kiFah?8U$I%T~z=N?FCm*gT4^uU7^)lM#l}w)smoNyNF40I3h_+}p(+l2#l}}@56)q6F58k|q@gln zZD6Ha@}zB$tF*XKV5_v@dnT5vSJL3=x{8NQb?Rot!ol#;nTnegacz&>wMbt2!$+KE zVkC(oFHh}2@p+`2h_!>{CgZ(PyFjetSa^vz>wVyX1> zBALe1{m9h)=}Rq>JbOJhf))SZpbR#5bzSA>=H@wW&8(O?!-od{Sk6` zM{BuPi32$~r}sR28Bs%~D5hu@Z%jXG#Z4OatF)6A%X2nEc!0``JWa$50IH_X&*yjM z`>BF-vn;y}f{kJ-mfLRuTdyZw%&kQ3a|o>>^QS#Uy_jE|a~vY>XYz(Mib@bmM?hEG<8BTWik zhd;(@P8JsSa;Kuw8>?(R7WDdZJXc#?;*$6-4SA%FB-wanU|pRD%46Au9xrtDquvGh z#=S^ZPw_~tNKQCC$p-@k>YvZEq?*9RCz1E{Z<>!Ku8TUs7ZQ@Xl2c-=0ojzq^TTu+5aCNoKWYu$2V z-fbUDQ%7RSx%2U`z;vQZJO91n+?%);3l9Y+w}6w3D};Jg?8|Vr8CI4jtq>0VBlBQX z_Pp!(h7cH)tv-p^_f^HXpf1Hj^@2ikSG)o}&zS1=1XtG%e{4G)QMaE?h=O^%r}cs` zpzjshp-(=AmPk3G??cdUmX@Z8?rsiWT*KBDl)QLi)nZ8JlDwK-u4GGh{p+#gw~t+S z{MemP@EJ`%)^>sonOjkqly9r{wrF!w<3v1iJdQd8S2(X+#F_|->;%eXK zhEGRJq<%QqGOWe<`0^F``U6piaw@NB zCdHbc1m&4)bXW8QN(a)v1zXh7#H={{cK*bRm{~`>_z&2^H_lf^ZqGSOiiV|_=i*i* z$H8PjDAx7A-92VuL7-s2f*0vhsZ5}QkT&0B_SPCA--8fm zL&0G-))YzD+e~?0PSn8l&L=|GoH6I(_rgnjQf5O5&vj9GtuGPObB$*iwbaTh;skke z^c52uYX=KMAGjejWUQ2j>v5%yW)p=;Lrl6}moQj-%nUSfMYLKDub&r3Qfj`Mh?pGh z*=j1@Uf6CbeoYBq7;$p3602p4#fL$SDJ01~>E6jbhG30WPk_F*Ctez*aXU-+GtD<6 z`Q~0SR3{Du+75A^?qz-TRE#(7G%2f65_l|hqtazxomvhYsM`{IQ56&ppp3<+Y!BP3q5_9OxQUp`9QP&L?BlGe# zx5a$3>sh%`iqY+lu8914h=Iw=u=u=QVe2-(WZtzP75&^fZ%FIPu)7^dsZBZRjb8mx zdJTnoZTe^KOjct6z?qw-ii%vp)UQ(cQ7Z`D^h61{%_@$4@Y~WC=wO!5o%l6M&-Br2 z9cRq4y_V|FYhM~^RgSG+KK!{oY=1op8mxX2k5+^w2m2EKsB#t~ikKKygaK04bM3BJ zQmmuCTW-?$k-q2mRr7KESL>+zD5@t+{JRzOgqe*1Unn3=@7D|)mhS5?*eo@_GA=G; z=dM|wg#bJi+mu6^Dxh|L(+C@rR~{Q}8)P6$O3j3T-IP$cGMDe)0sDCMU!5D<)Q(Em zfx$-rnj#CHyPW&&lh_!Ye(RNJ(gW37G70)G%3Asu}S z9K+fy<9Ac*_@Nli*jp!kOg3MtnhFaG%xMZ&Er#TUKkBUsCzX|oYQsUhFVt)*y0_|8 zt!_;BFscZ71aW{eG*j#{;wr0IigG_0>AfFa2WgcOY6K%&U@|}>W&R&JYKNoKBWcw3 z?kqjb81o7{M&c0Cc8k-DFa6dayR<0okka|lRa^F;yz{k|%E0!J($Pxc!{cQGah_do zY9P0wlt{t5Ew3pRwY;8b2fe3|nLF#PQ^V%v5XS0ku<^Aw6qpx_P%|mGZ7m-?`*9=PXvkwOq%>)?GS7}+ zs1+x$meW#oS$4(*SHxP4bGLuBowpf=%=9FxvQgOHE;ZqlvqH@7uLBj0+pDrBC!(W0 zdl^-M`OD5B&zR7lDAw@7%e(cM!5Uleue&<0VU|xK>ZVTd{>>%hAKR-wvOQ_Gs#)eRk{#7uCeukC z4lWdqg7@WnRx5Dl{U^aJ)56FhV2Ob=cX6r8zhXk?rt#5lC+PVLCLNi`DOYbb6ofLlH2*M59t*G?9ZX_mPb9A2uuN=GK9lZY^t_ zxDGsYFR+nTgSfF_^#XAeo=rU?a&z4OxqIW_&|NnGZthd36Fvo~SGaQTg?BNb23F0L zKYfLJqF&&>WLm}jnEcsISQ{Px3XjJ(F=}Ezk`@)DQH)VRnUTSO1`&kr?3&qlgI$Z> z%OIrc!NcYls=VTHlfg;R$RKsKtKiDFstcg|%pN&q^A2YDMHZhFhns_C3}Z^zZn#i; z&ihxw^?Rz493h|aEMuDrMBGOEd1tqun!DbAlhdTl%K@arAK9BXG0T2_~n zg))%VY9^}OQf7zMMqd&45Y(T(YvL%2hI`_I+SO*FVA7~7wWR3)h|aM z8J{aCjMN&G+vhIM`6IZ(gH~+Yx+z8!B*Zi`QQuM zKm+y};0iMPcuMlqb|LFMB=?i7dg z9fI@ePgs=*s6s}0W36U`YAYb5v|hLy-VTud<%sg@qJ6ReACP%|Pa1$;u1od6=_sn& zT-e3PLPLqBJBH`T?q1rBm^9?Pjm)ir?Bt(lp4m?3KJSjZGRBqGk9{?Q^tIiuk(e)L zGaykkCgdRN`0}^{RMi}efBoPe3V?#&MXV1jTlgaFtw6AU{_%86e&uVSQS{K=XMAK& zF$+dzcJFe2@0j9bRCS715=hk6$k{!1s2no+puQIL_EJ`Zgc<>^kDuewla_vG|3T2^ z)j1jV9Nf^!Z@P|Zl{ft#sW&ZO=@`f;T0_eH`e25JA{~10NpH$`i$sIs)GT_ECoCd= zhz4nAx={8{7~%4q!y`AVYmgvbkejL(FOCEETc7sgOWn%)V}Us0Fo~jtmy=tgDCg3f zk_CUL9UHqIXD@Z>^B;9uS+mOJXt-uYvjxt5t{GcAzjTBk>;!9u<}LLRD^^AxD@x6r z?SpofzHkGg5#d@DnNOS*Mpq0u%qkNVDKht2xrC}+m9xh)E0iI<{SDczb zqW~`+ci&;ybbYx+W-v}7FW5l*Dx4QWeOjS`YubZCJ?OrKpZw=UVm&8?g|GLhs3w(vweVj!Mmka>?NS!vOYM_{|B)rz z3%d=w|8Z6@{=KvCq_=0Gb_5ai&4Ht_js%34TXnb8Tmb>`qdM<5Lr-K70K13OXWa|i zTEqgrw4mN(v25lGOraO^KQ)H{(!HaHIr?Bw3owPqzBL{6zM42-Uce=eo*qNGYS3-= zd+lC50VYUIH_VEfH@XZ4|0qlL(@c zxM|LXUN1(#x;E&{SkH3~h(Yw47UDxqzUy#a(GNFwwe|(&mtq}UGn+1cIOyS8jI^c@ zelI{OTc35}NlSq_&vm!rrgZc%CDtxNWBni0KWvyZ&Hc?RbcMKW7P_<4mQQyOo4pqF zg~svKgE=?4?uJ9zv-y79>o4UD+(OoP_jw9CrCl|?x;o{4UqraCXWv}8?ey>R^M}Xy zn#?ee1lZwG66e6_usl2D4VL2G4awzu^39ds)hz9qm+4Zb9JIbsR7FaHk?{8No)2R# zZ*YB9sw-s4p>sIXXx=2;&MR+$pDu@6YRXfgDm|?62cIDw;`7W<2kM+UD}=Ip^#^A8 z_PR*!BXXOxdv~K-Vda5g`OsmN%x4;~AZ^Ft8v=ZDg(fu+bgLybLtcdBDZTQ3ze{L+ zQ&ZoSk^GbKJHPIh=1AuCN2(+cl zRkSHru}z&q?gB^`@%9&9QEgJ!3y^o3?tYvI8{rE2dIO`DTFd9b{z-Tl{lea1*&*X0x-2tpwTm9@*KK*OWWdX znGxtvz@pMOO0A%GmRR~wreBaK!*B9Z=pLJ>UK!*bFhfe^*}o6U0dy^TP`bX{XsykN zUm^Yn&l$B-l-zy?NU?cAriYI%se=7eRgEX6g!Y@fr8s9ipeW~!UqDw(@xwF|F7xRx z{)mYgc>e|kJ?D&UPcO@JwTLHAQpr>3I}BnAEM)c&O;oNH=T{RkBI|gN_H}{yj4b#; zJu{c7Bx3)RPAlzr>JRT5t*xNPgn7K0vp`h()Ck-O4+8NTC!0c`CCXUiLe$mh;rY_i zV82YxSrTk?=+QhL_==Qglp6-_VY+cf&(}IID(>R2 zYU}T3I;3}9f5EJz{GX~^4g!`;fb`m2V^*`$0|ILpNi2bYd1JxOKm`C zbpVT||MEu;2KUp3ZB#naUT($@h-WNTe!=_Yt7*KGl{jVrrbhb`bB-T1e-GV{rQ z#+B6qsMmv1=3rgv2G zNpp4kZ|>`EjDmOHTz*+H><0Ht@>+*5aHlO#>t-*+<=Ox#1lfb*-%hxViq215L#EPP z%*^q_rWh$VmHBLC*Sxe{)$Abo=&6f2cg!*>zI%c5tTDgK5NLV@{EpBQ5MXJRef1Ne z<>aIadr3~iqK2Agp<-C1jLNF}9haf2CcvSy%_dX#4y${z9qA_=0nWy&Qh??Z27|T= z9aCsrzc8W52E^J%4V%$5FP|!vyn#2=77`MGLgIVS;$Je!LLK7k|5c*D7_al!ME|U! z*%O#@yxBE0bn~0wl5Rr$u*jbddrnG1IqdR1k7amh8wN7F6FZWb9m&j&WM)S)vm=?= zk<9E!W_Bbq|5r(7{Nu2Z-?KQYzgROy>(m(QpbNlk*k|LFdWM<~kj$zb)M`gL$A11u zo+C9VcV7gkFTJVmtst{Bs4zv^vZKq*e$ZdpXjfuNjkd}{cq%>csPJo(Kn*1oGBv8Z(-{iC2 z_l{cG+XS8MCYlz~(*0r3>HB)Eqd;!;cX98Y&P~uIBS6V`}8~ zG}r32&JW3bvtc%jSbzP;{R*V3s9ZBVX;|(s;q-F9lZ3-^uA3w>LHysqWj0N#&cRYqtqUsDfs?L{oA2{PKjRsLv=&RkV4S9+ zYv{_aEeqUWv?KosT@?PA&Evko$`i!BCOL$&wcdz;6G5KZ+*F8uLU9oLdt})myj0Kv z;+Z0t!n^K;_C6DiO}YXH$RZo`vl1qCSOabvWt1oL5mxrgf0dnCzJDw&2`^DsN7;OD zy&;dE1FZc+qc8Yan6P~gFu^k-zX^lYO0P0MjGmk<%l${>rvc$?ZNE=x(KkZ#Spjy` zIPC8l3Rv$DREC})6ZX$S@zsw++gXS{)z%j zvm(oFrdhDMPDVx2(WeIEluU1nZ7#Dw$u^f+aGT2v*Tge-x8JzTXR6Ti_y034vp1UW zKjAWK-WqXgy6*uWFNYde7x=lZ0IyLy?7$FszW`waYNGZNgYxqR5WLVk9G3((H}dR? z+d(+wizwyq12}RikDa7t+AWk|*fuGE1d?wb)W~hU1{|-27kNo0MV-v)U{nska z6nL{@r2e-IijK2?L*P-mA11KfIl$g6Y^KaI-k&-#EEf)60vsRXteI|sMw&gR0_e{= zpxOR0gEB7xhO>LmfWZ;z4;gQGatXZFBUOe519DgShUE6y8HTl1-%$Uj^F2Y|KHnXo z&5qD!M`*JnwAm5b>inFD04H_Su4sB8Dz`* z;a8a5!6kl{!QOj*C(uI1$8b$A`2&>1%XU0AJ06=IkIjz9X2)Z*lJlj>l%#S*CsT|Jdl(|Mo}~6T|Z#@Xr6ASh|1q*f2wVf8dXQ zch%4V2MT~2z7SuB@G;j%y5}Jl6C8-$?9gChwsBjX27`J zv|N$0_LFPK+MW?qCx=`D+2`+5Q^o;|!n)wC*EWE%ot8aeN^@y-Z0?dV>0KwaogOe< zXV}0`dz{fc#Az_s+_lW0&RmlEwRf{E#<&%dEYn&7t=tdb}Jnk9v zhgPN!_M7VRs8kq-lg-|Jj^f$9Ff1k7)I2URa0TxK)d1GPkmZVm!?w(DHVWsiHFR z?|7x_8GquHG&mpJ>Q^+W)H-XA5^I6z`x>RzNr%*H#RTWk*;v4Dc<9!dBvGRze#_tE zHV_ke(4u`tG{(gio>kwKD|)GEsZ)0|*V$+_P--A)T{Ygbx>e|lDXHxCL9F|t&vU

9UE7PHQq_{#~Sehc`~ z33yHHeuNeW@=AJ{4MhwAzSolRUb41n2~-bL@+VmLV*R|WGC0~FApmgVMitR=16qJ5 z?`}=Tdx{Rxt`P0V-#nK+XXf5vvE;ByX z95`P;)LAc%x+NO~Qo_H(cjl>)fTk#x%df5GUVM5U8_^ajUbgNN+Rx|*wi>O*r9s6GIe2IX!Y ztJ#~RZT*0&H=7p!0UT}D*lZ+Vme^~iHye(h7JBI)t@ha{c7Pa75f`?X(`;_Hf|f!0 zQN~r%c|)f1uIaYZFY4Y@YYVZV?Nmp7E@PH6ivGkj`a~+1#{R@yj+$++Mzjt;YeStR z7uH&Xlli-7*W)Z-lerN>K=i$D*9LNKq-g)cv%g&aKo_-sa^vUzPGJqPFk9b7vp*){ zb@%Lg_@ni-*?e}*H3hi657(B2ku1I6%f8m86ieduaZLx~>1*bEQzH4E6>ycfZ zA9DTjRdL%KBlQDYPu!)k{e8W+h)F!!b$t7o55GN#gIQkSh1o6IrCeY>s(D5Ca=ymh G-~Jou<@Hhk