From b15327efd02f6377c295b560aa1fb4b053bbedae Mon Sep 17 00:00:00 2001 From: AnnZhimol Date: Thu, 18 May 2023 22:07:09 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=87=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=BF=D0=BE=D1=87=D1=82=D0=B0=20(=D0=BF=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7?= =?UTF-8?q?=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20SendMemberMessage)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessLogics/MemberLogic.cs | 38 ++++++++++- .../HotelBusinessLogic.csproj | 1 + .../MailWorker/AbstractMailWorker.cs | 64 ++++++++++++++++++ .../MailWorker/MailKitWorker.cs | 47 +++++++++++++ .../BindingModels/MailConfigBindingModel.cs | 18 +++++ .../BindingModels/MailSendInfoBindingModel.cs | 15 ++++ Hotel/HotelDataBaseImplement/HotelDataBase.cs | 2 +- Hotel/HotelRestApi/Program.cs | 24 +++---- Hotel/HotelRestApi/appsettings.json | 9 ++- Hotel/HotelRestApi/Отчет PDF.pdf | Bin 41509 -> 0 bytes 10 files changed, 201 insertions(+), 17 deletions(-) create mode 100644 Hotel/HotelBusinessLogic/MailWorker/AbstractMailWorker.cs create mode 100644 Hotel/HotelBusinessLogic/MailWorker/MailKitWorker.cs create mode 100644 Hotel/HotelContracts/BindingModels/MailConfigBindingModel.cs create mode 100644 Hotel/HotelContracts/BindingModels/MailSendInfoBindingModel.cs delete mode 100644 Hotel/HotelRestApi/Отчет PDF.pdf diff --git a/Hotel/HotelBusinessLogic/BusinessLogics/MemberLogic.cs b/Hotel/HotelBusinessLogic/BusinessLogics/MemberLogic.cs index e536367..4823ed5 100644 --- a/Hotel/HotelBusinessLogic/BusinessLogics/MemberLogic.cs +++ b/Hotel/HotelBusinessLogic/BusinessLogics/MemberLogic.cs @@ -4,6 +4,7 @@ using HotelContracts.SearchModels; using HotelContracts.StoragesContracts; using HotelContracts.ViewModels; using Microsoft.Extensions.Logging; +using HotelBusinessLogic.MailWorker; namespace HotelBusinessLogic.BusinessLogics { @@ -11,23 +12,31 @@ namespace HotelBusinessLogic.BusinessLogics { private readonly ILogger _logger; private readonly IMemberStorage _memberStorage; + private readonly AbstractMailWorker _mailWorker; + private readonly IOrganiserLogic _organiserLogic; - public MemberLogic(ILogger logger, IMemberStorage memberStorage) + public MemberLogic(ILogger logger, IMemberStorage memberStorage, AbstractMailWorker mailWorker, IOrganiserLogic organiserLogic) { _logger = logger; _memberStorage = memberStorage; + _mailWorker = mailWorker; + _organiserLogic = organiserLogic; } public bool Create(MemberBindingModel model) { CheckModel(model); - if (_memberStorage.Insert(model) == null) + var result = _memberStorage.Insert(model); + + if (result == null) { _logger.LogWarning("Insert operation failed"); return false; } + SendMemberMessage(result.OrganiserId, $"Гостиница \"Развитие\", Участник №{result.Id}", $"Участник №{result.Id} по имени {result.MemberFIO} и с гражданством {result.Citizenship} добавлен"); + return true; } @@ -37,12 +46,16 @@ namespace HotelBusinessLogic.BusinessLogics _logger.LogInformation("Delete. Id:{Id}", model.Id); - if (_memberStorage.Delete(model) == null) + var result = _memberStorage.Delete(model); + + if (result == null) { _logger.LogWarning("Delete operation failed"); return false; } + SendMemberMessage(result.OrganiserId, $"Гостиница \"Развитие\", Участник №{result.Id}", $"Участник №{result.Id} по имени {result.MemberFIO} и с гражданством {result.Citizenship} удален"); + return true; } @@ -121,5 +134,24 @@ namespace HotelBusinessLogic.BusinessLogics _logger.LogInformation("Member. MemberFIO:{MemberFIO}.Citizenship:{ Citizenship}. Id: { Id}", model.MemberFIO, model.Citizenship, model.Id); } + + private bool SendMemberMessage(int organiserId, string subject, string text) + { + var organiser = _organiserLogic.ReadElement(new() { Id = organiserId }); + + if (organiser == null) + { + return false; + } + + _mailWorker.MailSendAsync(new() + { + MailAddress = organiser.OrganiserEmail, + Subject = subject, + Text = text + }); + + return true; + } } } diff --git a/Hotel/HotelBusinessLogic/HotelBusinessLogic.csproj b/Hotel/HotelBusinessLogic/HotelBusinessLogic.csproj index 37edc34..7bacb0b 100644 --- a/Hotel/HotelBusinessLogic/HotelBusinessLogic.csproj +++ b/Hotel/HotelBusinessLogic/HotelBusinessLogic.csproj @@ -8,6 +8,7 @@ + diff --git a/Hotel/HotelBusinessLogic/MailWorker/AbstractMailWorker.cs b/Hotel/HotelBusinessLogic/MailWorker/AbstractMailWorker.cs new file mode 100644 index 0000000..96f9f1c --- /dev/null +++ b/Hotel/HotelBusinessLogic/MailWorker/AbstractMailWorker.cs @@ -0,0 +1,64 @@ +using HotelContracts.BindingModels; +using HotelContracts.BusinessLogicsContracts; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HotelBusinessLogic.MailWorker +{ + public abstract class AbstractMailWorker + { + protected string _mailLogin = string.Empty; + protected string _mailPassword = string.Empty; + protected string _smtpClientHost = string.Empty; + protected int _smtpClientPort; + protected string _popHost = string.Empty; + protected int _popPort; + private readonly IOrganiserLogic _organiserLogic; + private readonly ILogger _logger; + + public AbstractMailWorker(ILogger logger, IOrganiserLogic organiserLogic) + { + _logger = logger; + _organiserLogic = organiserLogic; + } + + public void MailConfig(MailConfigBindingModel config) + { + _mailLogin = config.MailLogin; + _mailPassword = config.MailPassword; + _smtpClientHost = config.SmtpClientHost; + _smtpClientPort = config.SmtpClientPort; + _popHost = config.PopHost; + _popPort = config.PopPort; + _logger.LogDebug("Config: {login}, {password}, {clientHost}, {clientPOrt}, {popHost}, {popPort}", _mailLogin, _mailPassword, _smtpClientHost, _smtpClientPort, _popHost, _popPort); + } + + public async void MailSendAsync(MailSendInfoBindingModel info) + { + if (string.IsNullOrEmpty(_mailLogin) || string.IsNullOrEmpty(_mailPassword)) + { + return; + } + + if (string.IsNullOrEmpty(_smtpClientHost) || _smtpClientPort == 0) + { + return; + } + + if (string.IsNullOrEmpty(info.MailAddress) || string.IsNullOrEmpty(info.Subject) || string.IsNullOrEmpty(info.Text)) + { + return; + } + + _logger.LogDebug("Send Mail: {To}, {Subject}", info.MailAddress, info.Subject); + + await SendMailAsync(info); + } + + protected abstract Task SendMailAsync(MailSendInfoBindingModel info); + } +} diff --git a/Hotel/HotelBusinessLogic/MailWorker/MailKitWorker.cs b/Hotel/HotelBusinessLogic/MailWorker/MailKitWorker.cs new file mode 100644 index 0000000..137c8aa --- /dev/null +++ b/Hotel/HotelBusinessLogic/MailWorker/MailKitWorker.cs @@ -0,0 +1,47 @@ +using HotelContracts.BindingModels; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Mail; +using System.Net; +using System.Security.Authentication; +using System.Text; +using System.Threading.Tasks; +using HotelContracts.BusinessLogicsContracts; + +namespace HotelBusinessLogic.MailWorker +{ + public class MailKitWorker : AbstractMailWorker + { + public MailKitWorker(ILogger logger, IOrganiserLogic organiserLogic) : base(logger, organiserLogic) { } + + protected override async Task SendMailAsync(MailSendInfoBindingModel info) + { + using var objMailMessage = new MailMessage(); + using var objSmtpClient = new SmtpClient(_smtpClientHost, _smtpClientPort); + + try + { + objMailMessage.From = new MailAddress(_mailLogin); + objMailMessage.To.Add(new MailAddress(info.MailAddress)); + objMailMessage.Subject = info.Subject; + objMailMessage.Body = info.Text; + objMailMessage.SubjectEncoding = Encoding.UTF8; + objMailMessage.BodyEncoding = Encoding.UTF8; + objSmtpClient.UseDefaultCredentials = false; + objSmtpClient.EnableSsl = true; + objSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; + objSmtpClient.Credentials = new NetworkCredential(_mailLogin, _mailPassword); + + await Task.Run(() => objSmtpClient.Send(objMailMessage)); + } + catch (Exception) + { + throw; + } + } + + + } +} diff --git a/Hotel/HotelContracts/BindingModels/MailConfigBindingModel.cs b/Hotel/HotelContracts/BindingModels/MailConfigBindingModel.cs new file mode 100644 index 0000000..680e25e --- /dev/null +++ b/Hotel/HotelContracts/BindingModels/MailConfigBindingModel.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HotelContracts.BindingModels +{ + public class MailConfigBindingModel + { + public string MailLogin { get; set; } = string.Empty; + public string MailPassword { get; set; } = string.Empty; + public string SmtpClientHost { get; set; } = string.Empty; + public int SmtpClientPort { get; set; } + public string PopHost { get; set; } = string.Empty; + public int PopPort { get; set; } + } +} diff --git a/Hotel/HotelContracts/BindingModels/MailSendInfoBindingModel.cs b/Hotel/HotelContracts/BindingModels/MailSendInfoBindingModel.cs new file mode 100644 index 0000000..f4ab8d9 --- /dev/null +++ b/Hotel/HotelContracts/BindingModels/MailSendInfoBindingModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HotelContracts.BindingModels +{ + public class MailSendInfoBindingModel + { + public string MailAddress { get; set; } = string.Empty; + public string Subject { get; set; } = string.Empty; + public string Text { get; set; } = string.Empty; + } +} diff --git a/Hotel/HotelDataBaseImplement/HotelDataBase.cs b/Hotel/HotelDataBaseImplement/HotelDataBase.cs index 5f56ccf..6d7ccea 100644 --- a/Hotel/HotelDataBaseImplement/HotelDataBase.cs +++ b/Hotel/HotelDataBaseImplement/HotelDataBase.cs @@ -9,7 +9,7 @@ namespace HotelDataBaseImplement { if (optionsBuilder.IsConfigured == false) { - optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-V0ON61E\SQLEXPRESS;Initial Catalog=HotelDataBaseFu;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); + optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-VG5USAH\SQLEXPRESS;Initial Catalog=HotelDataBaseFull;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); } base.OnConfiguring(optionsBuilder); } diff --git a/Hotel/HotelRestApi/Program.cs b/Hotel/HotelRestApi/Program.cs index a67a1bc..2211ad1 100644 --- a/Hotel/HotelRestApi/Program.cs +++ b/Hotel/HotelRestApi/Program.cs @@ -3,7 +3,7 @@ using HotelContracts.BusinessLogicsContracts; using HotelContracts.StoragesContracts; using HotelDataBaseImplement.Implemets; using Microsoft.OpenApi.Models; -//using HotelBusinessLogic.MailWorker; +using HotelBusinessLogic.MailWorker; using HotelContracts.BindingModels; using HotelBusinessLogic.OfficePackage; using HotelBusinessLogic.OfficePackage.Implements; @@ -44,7 +44,7 @@ builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); -//builder.Services.AddSingleton(); +builder.Services.AddSingleton(); builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle @@ -60,17 +60,17 @@ builder.Services.AddSwaggerGen(c => var app = builder.Build(); -//var mailSender = app.Services.GetService(); +var mailSender = app.Services.GetService(); -//mailSender?.MailConfig(new MailConfigBindingModel -//{ - // MailLogin = builder.Configuration?.GetSection("MailLogin")?.Value?.ToString() ?? string.Empty, - // MailPassword = builder.Configuration?.GetSection("MailPassword")?.Value?.ToString() ?? string.Empty, - // SmtpClientHost = builder.Configuration?.GetSection("SmtpClientHost")?.Value?.ToString() ?? string.Empty, - // SmtpClientPort = Convert.ToInt32(builder.Configuration?.GetSection("SmtpClientPort")?.Value?.ToString()), - // PopHost = builder.Configuration?.GetSection("PopHost")?.Value?.ToString() ?? string.Empty, - // PopPort = Convert.ToInt32(builder.Configuration?.GetSection("PopPort")?.Value?.ToString()) -//}); +mailSender?.MailConfig(new MailConfigBindingModel +{ + MailLogin = builder.Configuration?.GetSection("MailLogin")?.Value?.ToString() ?? string.Empty, + MailPassword = builder.Configuration?.GetSection("MailPassword")?.Value?.ToString() ?? string.Empty, + SmtpClientHost = builder.Configuration?.GetSection("SmtpClientHost")?.Value?.ToString() ?? string.Empty, + SmtpClientPort = Convert.ToInt32(builder.Configuration?.GetSection("SmtpClientPort")?.Value?.ToString()), + PopHost = builder.Configuration?.GetSection("PopHost")?.Value?.ToString() ?? string.Empty, + PopPort = Convert.ToInt32(builder.Configuration?.GetSection("PopPort")?.Value?.ToString()) +}); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) diff --git a/Hotel/HotelRestApi/appsettings.json b/Hotel/HotelRestApi/appsettings.json index 10f68b8..d2cd417 100644 --- a/Hotel/HotelRestApi/appsettings.json +++ b/Hotel/HotelRestApi/appsettings.json @@ -5,5 +5,12 @@ "Microsoft.AspNetCore": "Warning" } }, - "AllowedHosts": "*" + "AllowedHosts": "*", + + "SmtpClientHost": "smtp.gmail.com", + "SmtpClientPort": "587", + "PopHost": "pop.gmail.com", + "PopPort": "995", + "MailLogin": "labwork7zhimol@gmail.com", + "MailPassword": "nnsz pcnf xezb gxtc" } diff --git a/Hotel/HotelRestApi/Отчет PDF.pdf b/Hotel/HotelRestApi/Отчет PDF.pdf deleted file mode 100644 index f75cc5a66d51a6da453c53622291e2efb1842cff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41509 zcma&M19YTo&^0=-Z6_1koYtIMG$iYCzz(~hT z&qmMA$jrb-NykJ=M@LHj?>1{YGDAxnQ#)OJDN|!RT|sMoe0mz@uLm0oz6P1Ivonq5 z*MfnyK8?P$r3U$@p^Tlifup{m9oeS~_9nV^HvehD{I7|Pfzdw;|6#(-4QXg)@Z}%F zfAdqp)y9xkK-WRn!rJ(gRoB?i9-r}ZT@I2~%FsdA;By6^{_n(p5qypRBhY^c{;~Uv z#@f-!0iPa{R>IW4UY+TSMicVC%)Tc6FSD=LF)-ETw{}sd`&?&cXQp9bWx;1-qNibF z*ZgwH&hV4;U!Mf5tsFjw_V~oi!Uta6G{=56%ynp%pAMr~X zS{XZ-;4{$Ef2K>=)WX5gj#k*>(;-1aeQN{5FGG8W&og8R>5{&lIug0Y0v~wshV15( z*h0$-uj7{Ztpy}gJz72-oo>f3!%v$>D5P9yUS%E~He3ha0j`bg>SN?tRQ%cD$)SZy zdtTw4yQ{1HX}=;okdE@|^aX0GizkA^4p_~{1o>h*AcA}+N)E%T!l z9n1JMHzha9{vH)_Q;LUt*J{)sI>;x_L)xY}tLP98E$J{>KhV4?XPYmjIN{2f`4%@) zrL47~v`f3Rv;d(1WGULHA|a!4a$?eT{il;U;5Op#9pd;#8yB|QgEr%jpaLWCx}ri9 z5L5Ccd|E7lA}U1}5u!dQ$B==sXP!#in}Hc-}l+-63pQeuLl!3vpJ?|MX(d%TQDU>PzpF zYeF62EzU$#F!re^22SK_j%3##|D!M~4?g`m>$niFf`YdHaObXgmW4W?Y-xlA{aDgh zZU;G0&Eb%EIfMwC<$Q-Unp=8+VVWLLsAB&8!EdxNFkDsR_X_=gGP-vt=$=I1`ge?%Cqf_nqNubhn0SLyXov$OMPTdn`{!NKt@n z9V6YD#WMO2i8~!=)&^h--Fk2$X>yxQ`690TZ^7I=_yiU5k+B4s-)AB# zUB_pCTF*m|Pppwpto~-wYiI2yY)D6Vqw+~rrve(0hF)u$^UI(szjF$16|PlK40`TJ z97@QR`GMYMz7Sa#4WqTMjD?l-EQTItI9okKLv}|%i`djC=%(8gPGn7PXHN4o2q72? zaJlRcG^&WvMX6&(u#S~I6E!BBAG(gAUO#-YlO7WjP;2a&G<92=yeNAX_P8zw-N@hDu(xQoz1g{>h=RihBHPOog_YB|?)>4SkGYg^X=ZS@-F+B4+TJOArz;+Bx80@SE%lwOQmGi5o6hg`f=fIT>K(|BN z=wVqRDUXLj2|FpAD*ae9J2#$gdzkru2^90 zBX-SJ34S!|@pJfR#7Q=PC-W@5}b}P1x97?>+W4g4@%&TzT9m9|Bj-GD*=py;b%b5 zAc$J&l&l!O?` z3?1(d`yRzR(td_P!0WoK8O*Z?6U;LMw=24z?O%d*FGuc;M3xd7$pRQ3G|2Q$-!ROR zGXMv=c0QD1J7hSXYir!RG+S?nmV*% zE?X)wJ#&w)U_th2AUutQqtD#&EbcFkwp-{=5>teac?EdjPpfGaM-4=|9;!{P> zyw4!X^s?&RV#%M5ipEg+#!oW`bAd9ZZA(DDQjc9cNB58%vBK5u4`pB<8tD1plmpv} z>&Tev2*ILe=%JI~v^iv@`~D0vgXbtu5XG4pw~e;t9XWR=&Q1=cnVZCz8}6I`?&kkn zH_=wqa+S?NBuX|zI+0U{6<|b>Wq%|K$v^MM}mR*YPqC=vDQP~CxvI-b>iPEprVK# zF&wo?C1G&QoX;@t?;v*l$^~Dd?_VYHuMGK8I{zU<{!wrLC5CAAKh@rs_V{<}mlFE_ z+A6^JKen>{Kev8qCqYAdeLGVd2WvY>T0VRIFCoXq{wa6_bZtZpO^r<)@L5r-l>z6s@NEd{)L5 zhWK=!%FDsfQt9i7%D>c1Oss!7e(G8p(uyleiz+ElDwtXt+7mL+{WNs`{4Zy1scZFj z)29YAWWcBY(#HRYyni#m{@=p-f01dl|LQnqmVeUrpOQ^8e!^;p7vBFu)HR5mBnUjJ z$N~(aK@dNN?N3zVIvD;vysBEbVLFg?SK%605Z9$xd>bbt^O=^_L!0MPq}7vs^L!9n ztNbdnK)Y6FAV+J|=+TEoqQXBLLh5aQv)ae0R%o5NM zoK6gJLgS6E3OQ&)p3=+;hyt@QiRev0U62UviU(gsT_)hhL;aV^yX~Vd z-6CUKqQMi#+RzaoD|TCnvQHDoqkx&ZD3AzcCe^Z&{8_CDg#DH8D*M4ztmE|rm(6gP z5oId2*hTj~P2C9)9B5G(@c|~j{UJcya0|wW{$(Un6A4^jxwRq++y-~R|GkOZB|-4) zYP^bQ<{s>xCS=Vm=|KX}tqbLb5MZJTT2D~r7!ymZ{sqLIWSjZW_cV6;eGJOWkEs5G zL0c?0ll4YjY~Jyv`@+w^sna_~@U*PET-0UEj5Or6u*fy;VAS(o5@@zyM9CYbk7=Gw zh<)PRzWhuNv;M8XIqvlR1x#dD#P9zuQu?oE=zo;nKfMU8yrZ7OKP{V>;Mc@g{eD)8 zfS91XtNmvIh*=p~|I?L7+Zhi5YxWovDNCXU`~SXl(joHua%{YuTIaZ z&cIBkNzbm%Oh>25K=&8u{{q8bVEhYAe}VZgu>1wqzrgkv*wqC{;n7(S6f zorQ(v6PeUm*uKVWf9Kig{?4;8{yS#+7n%RXPjco@J2uvT_pz(9(y?hWvw!lk(|sbN zItvrKCJP;dIujG)Cw_Uz_K8gDOsou_$gIvpPxpymPJYd^{=1J&o#oS>g^pdFk)2tS zh5j>K#xMMg_aFS^WBVF2sxz^F^3#9%&G^Yj{~7Z?>wkl0`Apj1@!zmnKC}0aAD`)C zVr121VfdRr7KYFGnZCwB#?bcV=W_ zr(^veE%l#vcMs%+H&(C7l+_LAd#}xm74ulBT7otRi(mtMVDKd}e27{^8bJPdqVJHQ zf*?NG{1r>T0UI~&)MIVbyOmD-DweA18j%`$p9|jP$`TB`vl!Fx?_W5(mToR? z+#E?54;hS&COv2_rVi~VSMbB(XLE7;@oiV09p!Y`pP1)8&C@xjBxy~eW z(egbZ`KOlsSfo+^?oiz>^xf!T%BiVcA_ph$=K~aLW|B4gcK)(oPqa%XdQ{OosItK7)_g1oRoF zvDZFThSV5{)ciTJ9FP6U95!U_R2R7NfDL8Z<&AXu9eWdU%2# ztJ%3BNCs@}4(LxWDP$28ULIZ@x+aixE0ARnE?hQJeyr)18dX6P7Nw=CAgq@!5?0^KXUaVr8va!(0h)bj$5y& zMN-c9#HEvgUqobsn4s8fv1H$SUUo?5CC!vA`|LIYb{^q0f7ml*N(R1x?NML*!u*_Aq*!>eEJXi}@zUf^uX-=!RN+sl5#0Nj6Y+1@jm+eY3uYudgRa(mPLwl;SFh zRhQ9{6vAIkZ3anArV-G_wK4ItP3>_NQnEKz`IZ8H|YCX{>@Yk=~_An)?>p<00%w@s{!y;2E0jS2eU}C+db5j_A6Q2koDzt-~wn%dtnr zSNB);busjNL^%meQNk2{rPzw?gV2ie6iSS~M`k2GGP*??eqIP26KULFqL+NV!ChaIzTMu$Q z!g`Qy_+IqD6~FXdT1syjU+OMLZRuBkKxPf%ZS!n*A;9bP{$d&u_01PW?W~WHB(@($ zsjeb2*S#QGH{h~4BDed6O?*MeLNcg8Cy`8ZfN&5rE-}73o=^vo`kXtL`&JkLZQ>z_7$%4#}fa7)_hp@F;%$ z9hQ-xGE&v&To~jP`-zKPn%fA+1@{R#sd}?lWLT{*=JJ+!jaC)RofIq?T18ugWgBVF z@ZjgcWN(xVP7_$x!F_ZVVF;Ii#SxRq9m_TR+HKaJS}jsTEyg*e1NHP9#<@}U18^-) z61{bu`*e_`|0^qZ5FYTn3zD>P-kw?Pz!bm^>^44Tzh*HK&o5*TZ0}z;;JZaBMVFF# z->mKs2yvl|j--SKtrF z5r3IV{UYh=Ul@+S1#IWxc?A@*IM=iy9bVCwWN!sj%)xfWS@5y)0C%Tsg;LDZ$M;*6 zMR7%6S3Bw%19&h7@Is6qDwBmg1)$cPZko`cO(%j@X-4082HE;B|MkpxsXZ;F0yx3p zBd+4MZ`BA9U4nDzO!{X`7FK*y=;11;Sv!|~IRKs#<^q8HgSr*dViIrrO-ljpO+6S_ ze=KJS5#Jtd?P`77RMh8<=9YuR1nJfl@W>VF2Tb%sPp{cyuX&H~1aR6TMQh_FyczI@ zrfhRvH4-%qr;>`lQf^B?5rFp+8mJ8Q@4O#*QtSiy8OXfH1|NKCHY00qV9v(1E4fQ_ea%oQk zL~Dfj$R*#MmJH#wh`oH+%Z;a3&Jx^?=F=4qG-X2HUp>|Xr4A9Z)KFaoKx<9?D0I4T zbU|_%WCave4yKp!qg&uNs5`A--2?yH2fm9ioXx zH^B%j?Lg68Q)?tS>kmFdGXPms8wws1};e0?x{Z zzfY@9RqCF9D^eV3@sTBMO0LbUq;4#Y}O{C*)S zPQ9LB@sw-(E%|ID0issozG_ZD39f}( zIlm6CjYNl8Ktsy$4cIh%x`f->z)n7klp*ClJ1T^kT6JT|&eeR*Ad9L=G5%qD&@iUJ zlZ>HcDqSHhTlkLI(?dTiyHmI|(F^7``CU@hQO6J3+=4T)zU$#@;xM(BWMa!(oJ68_ zXS*!(UDbyrA(!Tc8pqWFWlu@#xEHk$RCo6#G0zto>yFz}$tg?A%W!VQwAqaxAX*-* z(Kdq`5F0{`jSctP6_@-WUSMy9J4>2Krn$^#Wd+=p266_97bi|S;Z03&nl*g5mu?Ap z0gS_|M0bL_a@Khkb2slwMulpj_nZ z5WTqA)zcF^dHVtQE&|H)Vl)vOgULI3aU}63yB=>K8Vi0vIQbXX@hsPu)>Hb4BTC-{eQu*b;KpR5DhI?NhH(NlBBZ zeQ^CCX4G_8*YY9`Fn#x?X>2_O5ed_aKZi#n#_S?3R*B|>*PrdAJNvR&5 ztHZ2!3&dTjxE~SMtgXgJhS_}<>Ep>w)lJF|5$5vW%H7Hzo`3W$zE6hMbuU-BE@$u!Kl zCQ7fppv>C_TQ2RLdTbDN*P zgCI2bqE?aRRj3xvA)mU1R!9h|nQw)PR$&Y1Fh{%9G~Ws6YL(?;mCcjyCP3u-d=oNR z_%@I2*SJg1K?lI9qs_y41KGe4<^DWG*_n3|SBY-A0z_@9IW@p>#BS*{;Rg?4|?gdst>{LLXvF z8bm1JnN73+Mdy@IqS&_{xvL1I8Zwr+!+u)}INaps4&s*zWugXB&dIt6hI+miLR#TN zPD_R7@X{*Q@mb&Wz%sH4bX3&C)s<0dx3)1u?H=YyV0pIIFtZR8#JXaMK-PhI=&JrviK+(W(R*KmLtgTg$6Cr&J|AM))bAzbT04G-@Hr`o zzqj}X0)L}hfDW zn*ax{&i7{Q`vz|71xo-5QJiOOUfYnhwYxVIECT3i`_0xO^Yszm&jD}(yLUKmy9I5V zgAbZUNUa@IJ7P`j>gGA;d1dG6SykY!7~pybge{`v`i_u=_Vt+;tQRo<4F|nNeng?x zOftXG>|MYDy={SNF3Zg9XTVSWDP6#NcoY${iY$kfl4p$4May8meO55E2)!mmJ;~k4N z{xYdB07c_xHTB3ZOg6Qlkp;tfe)5PclG27J zvPw>ERatS@y;-nMHt91lXxunQbeKM{BcS3I>Vq7OEShI_YJY&iV}qkmG$$P#&z99B zND!p^33Yu)=PtCGs^8i^Kl^-3lF)8_YmJjysr>EOGg@lWSZ`%FQ4hUx1CePz(BDA| zckyBIcnO5}zK7SBb<0zo|Kghdwl{-Sx;J(J>z#Ccjt!0k$K;p`kl^ezuztRA$h~V6 zqi!2_2TzAECy3RFDh>R!64Z+?##H6w0gQVI!mw)|gJcH(o~GAp#5jXEZpsYWo2~zd zH{GsUlPYO6ASZ9QVXzJsKKcZ!_jCH>dK?dwqaIYe_~i3X<+q+QhbC-`5nxG9e@;DnP|;Z9vru2YXSzIT ze|wGCpDElIGxdjN{Ez`ropIso)t9k+9q`Uh?9O-g$7g&m-nZu;z)jqzb}zJJ%_wZH zM(9J{j0<&r4HAfJxcnMgQ9XTF7;xJz!7tcOJ%gAx zE(y5{6ixyHQK;rOl4|t9>CQ=D7k7Ui;HT(GV2C;nzmWv$;BMxjBYXt0Hx4v5G)}NA zCJy=P*Eu_L6-`Ow86$R=+MEI2kSFtTU<;q+(%j z9zKLx?*J?Eo(z3s$}o zPn-q_sxMs0S4;wAu^%8xO$JhcNDI$bSy_QI#@Y1PivfGQJS!npq~ zn@^dJL1)nL)C*Ct5uH(NIV&|Y1zu-uYHNDjEJr+-=}Ku&as!v~i@_z=$=*PJziuXP zMn9oSDKj!X@~!Y%dRtmQ&`8P@chfUFUr^B1?!LQ(LL6a( z6c$|Y;B4%!3rZ~^^;2H1H9%y{I>peh3$SPC<>;ZdoX*@L-#?Yh%6t^r@6&p^jPUr< z+zJljpciB5!_m;AyAUGCt6?m9H~HlCo^~-A6trOWnuo{7RN36WH0-L|bm>^Z9cXej zEe$Eqmr_)@sYLdQvEx)T!%}u^ak^DPD^x=LjD|;^`{l~#l&%#eY=_aan@JYYe5h5O zepr-NI^|Uw%sTUq#mD=0;+}ltr&Dx|IMV@(#*apO=bk3Oq`k&~Egf#4*Z{E3pzt$X zfSjf%3iV*7I3FNHC_Plb^jCCzQ}?RYnXQrH%6NeJa2=|R|8u2gC6v80aioio=Y;(HmAzQ|yJkTncTeXUm9`}?tXx-~a zyihFG;uG`1vtRMXvxIeLW;wd z31UuhF0n=vMvOY9&aj8At)4;9<$>r=?SlnJ9Kabf!?RWZ(wM&pj~!}%=h}h%_?{Rn zRM}%HN@st2i6lT9gH`3N#}+!Z`QsI*JvXRjw|9N7CTBn)Ezy_7a?9vD#+01t(j!|~ zg=LSqUs}t=>p}PWA1;8L!1>{ul&4uh*9dQ}rk<{dTQ~PN9-Yj^^RV=gWLe-ep|FJm zn^q<#LS1xmr7)sZ;=lxhs;Mb(t3I2#iLl_&H^?lIxZ_- z8fuUF4gPuyt@s46G35IOia9SVeCN?FygZO@zg*#kD4&`C zsGVNxkS<|t*;%q3o*L)33vX>gLE0k7?rTi)+P(_v$UPEO}0(TIqn$t%)LfhpL1$UYFyYU z&%P|IVk!O-8|fC!m?D zrFfp=Lr+dw2v`-R^C;5_0PksO7m0E7C{w~;O1akLu~N}tCp!`~n-tVSx<~!fyf;gBk>#z<3oZ+0B*%{f)y|Itzu)0PtfaV19 z8ee!h%>ZDtg%`mz!AfngG`&5<$wl$JuJI6;>N7$ar;zdv-5yEK=+y);f?0GzXmr{L zi}4TU^(A;>bc>g0%XaclL4M==B7RnDYbS6q7wFE!?ge zfJN$HXlN2#W$i8X-DN!bY-eaH-pm468NFul7-`=tHl6|qS%Vy(fgImuvx)BxDL!#6 z2G+3Ph$j&*7P1Dq-*N@wT1Q<(sz|r9zJ!DS8f}{4V{z<(9}IwIO#SRtfWNm^ZU)GLO5vOg6%$H+7W(Rj z#VxSuF`)TG3xiV)?BCZG6wg97a*z97!OcdK9G9zv$|Z*8?u47bHoPJqZB?y0_nY%V zEDrkhdbm{k9a^BcZa)CwG|EocmIM-W`|5o&^PN)+e?hFLQTma~q!3`iDJ4A4vvH+z z9$}2@U9j8I`Dgs$#e3FvAC&XJ$nY%`g^O9=?67goUULZNs${Q)`lWL1dWZL6oXfm% zN^7R!^bSVCN@e-u=TIU0(nh`4Pa{RM$6a#i`px&FL6EuHGJqEvun0HI{GkBEX7r9i zYq9pBH;z{=U(ErlEf!N2Gi!!5i#44#vEL;vbA@weP6@GBm^9moNLG;$gDONeLzfJD zgQGoyP|Ie#fG=I|AP*v0VtMHc{zs#%=Kk>wIg6UUZl`>%U>U>(7IAy8`IF{Jpw zHNZF|*I28k73I~o_8pgq&>$sj$XK0kJ_-Cj@Sy63AM`h1d%gm{1cqMu zY)ylChLf4SjK2kN*us&Zn~w|n$syz0TW7j4CgirGf`NTpWBf#6wVi8>BNbvBRCq$p z8Z=l+ z`z0V1A0((gXtLPXS9frHK(1$R6S-!jg+JNU1ge~-99rgkI)LkxR<`$Jt!+O0RR6PU>~J2wr^r_25BJanUmaNpUl)%B!dc=^s6zX~LQYr3n&|9|XdSXk zV1A+A{VRfjY=nvMzT9Yb@f{4J9G?>Git?#f4){H1`-Ina~1wUF~^w#sSLi|)XuXv_b`=v-v z1Kb|var*X-0^95@I|=#h@w1tOc*j6d1VqSyb$zyK8Bel@d|-=|1cF9lE6qmV@`WOz zOMZ>|LMFhr6gpX)siY4MY{Nt5L2&72Vmx06ZC^lbC0ZS@PCto2bzO@HsKq5jq%^VIFf?m#X0 zG_!I@7j@vCW9YH!dO72I1NbmvR6nQ(dt#-@RSN^JmL7{j<2-~(-D#jY(StN%HKvP^ z#g1Rzkp}g^Z2%9kbyK8qcXgnA=Ye*bBO1ztE;0Jaq0*ja49lPdo?Hp%=X{E6ZDAy! zuoU)wCpuAO=vu9{4j!=KNiR9$<92c`xnjuD@BBbfyKp%i!WBmMm{4rdR+w6^gC9j@Rs-(Ba zil4g`PAhREoBL*yahHRI>sV{008i(2fhLlg=bnzuY;MI8b_QNqgaac^)5t!(^X;${ zB`zZre;-brmD}&91+`5$t4#Y%&O{&{Z@2A-bc{d34*jGl`7nhxq4~)QM|?MgJ$T99 zI$RdqdJE>hmjLkT>pRUWu5fdwuedka53UDndCYVqiNJ;Qme5JF!HLCi8gA$CSGpe1 z`zaVf1s68NUZ95~#{!84S-}IGj91e%yIO?w2PyHfwdNx?;QAWW++CZ#0*RndH7+Rd zCYBw0gGSE7QfsBnEou5=NhMZd3`-S}dEOiAAd^ODy!$dsPis$6n4mmA;4Veprj!+J zW3ah5@cY|sJ=ZXHJ%2+Q*mR5SZc|iG8kT2gf_Kit9S0Ue|5CjU%guss;~9Nq*ZI=} z%cIX)3MB4iIfG$J2Dp24ltZ1%5XSaL$?+~{myGi;m=%cai)bu5%=)?6- z@2ShimFds4Do8d|0ErJS-VqXyKjuHY4NCb<{q>%D4}*$x2N|AvK?cO@FlamCWtmy^ z{Xjz_lvZt)dFQId*KIm4L-gQ<)CytxHbTBXf&s9NZj1KFhCtga_Rf40;c|g}9+P2G zbHymRJq0%tEqU)v+amF}PjTxd7hgfLCNX{HyY5de&6hqtNpH12DJd~7tZgiDe-*cc zG6-Sbn;YA<89q$vONp+MgJliyK-!~&cyh4oN4g_C%s- zldM{b84ZQ(+AOO1-75&OJEuz(P}ZBV?YS+#&8W+rP8z#|Qq(BTMV}B;xKkokVRiVM?FiuSviIa+tK$vL}L?J=_lCVruU?g@0sTMmDl7O{>cpZK@YN3gH_TPCp+F;7uSmGNk4P1Izt>uzK7h)xMF_n*pcCjh&juy(nV zDn4AmKb0c#09#bph-nAhx?RDU;K{D>{n4N=Wa!hDw9;Yw5CNfR=WdqO(4v=fe+H>i z>wW(TS_8Vt-fsK((~d0Y&8Jng58KCQoChuEtpQqR4LFWAr^mDHr6A>PcUvwikGw9| z)ww=eXgtnpoTTj#ml^w2AE)^?u~}`HT)Q=GZ21ykIghqV5=GZM_YCWdkHy%@QLxuu z(1)0#n%K=puU&7RQFlZ=LorUQF_OU~1w|T3jkKfkKPB@Y$huWs^E`bY=2O-lYjebp z4M*;k4|x|paJPqK7s}s#5F^O<=7x2#uOaM!H6Vkq`2b4Vsbps1Q;-N^g15*h0agW= zdGmHqDK>rcsiIkuc3?i#tkWxr1G9>J)+yPWW!m9+pV6&tt%+r-5 zkf4}Jx>HcxJQf07#~Kn^eR~8DIKjvrvC=uEI)UmB>*P&;20ZcCn7N)C@hxXg!=`_F zHz^srh)n30(A3$>^I{|BG&IG&5t_}r^n5uhcHICKf)3o5G2q0472ovj;Z=Vf%-6YAM3sU zsD6!Yj-w>l#02{C;~x2(LdJPb=3ZCeWX;%9v%uq9IdDu#d9pA`{sW4aSW!` zTk)sOI_G3OXE1wopOhnExnZhQc$2WkS;waKGM>f<;s8WU5{Z(ng&QBG-c2ww4zesV zYd7+C$#p5V2{j2>XCAiCiSfgPVTrbpL@?YX6riN+E`z}vk)^YhPhg7Qs``bBIWp(w z4DceeHDIBONiAZj2z30=c2Oo@Fg|QXYg=kfiFapwBx(xiPV%9xELA>%@Ngo{;3z8w zXx&dC4-HsQ&MfXmIirtf!GunMhJOdN`IVK$9jTm47COV4T1$o+de`qXq(baOBkZQf zMlvg0vzw0qF$^&2L3TR4n;<@&G#ZJ3EU$#9=8p>i2W!Cdf8nIq%ZU2ek20VyS~+mM8yICX#jD&0X}<-;&__J_Q|Y zX15%VL)p{h7ssHJJ%S-rHPuS&xd;-JCEli-wE#dllsK&bRst(Wo&TFk+{@lvVBV{3 z-C{a=1S$*rgbuyb_xm2K(>ET88_eCFND40XtR)jL4wbjyz9ejzpkv6`8Hm`Lh6epG z?jIL6E3`jTW!lcNp+FUerg8xN1JHzpF-GRya~qPVJBd}EpN*joSo(K}P@)Q+@2%3g zHmny~#&dgQH(T^1alDE>Cif_ZCf4jS2JDAU2I=FhI~iK_h1fK-lvOiIn(drTP2}uO zFUy=Go1g}tZQ*{tvrI0ykFM6u&8yau2h@!_bi=0jFQ8CiqDJL{U0qX{+uCw?9X95nPHO9Seo%hEWV1#%uN!vMTU&7X6#4 zboz>KSr6yGxFnDa)0v_0N|H9gF)p$DXn^SR1r-92=Oa00tmcD$W;2RPP=dSNgI;84 z&F&1icPyt3feyGu4h5sRhE(mKWbR`1MTm?vh31tosf{=~!#M6wIyuTWfdcmT^w22U zPN|6;&^p)yjRCR(CtHKjY2JNvW3yUg;61r^9^{{Z`F&f(8FUoH%gF%s_W17kP}q~7mFVn&a-wh&l?TPSt^S30M4mE z&#?ra`)k?YD9n81%u0TXBwnomuk9t`52ak&-#Ej(U zY6&Lx6)*y~i0%#`C9o zEML?CQ3+@hcNfX(W3ggBJvq6Pfp3b{T{akLy{U;x{!}w$2=E=a{8qjL!TfMg!kSan z64!#wMsQN>PV+#5V|J&4)@GmSG;ie{w9Ofd_iZ}Mk>cG#6sO)aJ#)st_<3f>CpI=* zjjO4gVRx77x6d09K4QGI*%0y>)rW0&9Bgf-)Bs5%f2{!|Ox$_B|r$|l-W z+=r3HqEn9M9E5h0zzfng$_+b!j3AvALHIqo2{s%XXNS^{0Lg_(hzY`*dI>Ss72VZs z*Z%wFds|H{d(qXR7mTOmbo%tA73Lz~aDREg<6QEBbt`;c945+^i{*|r z`gQtMyY+sKY#v?tyV3#j+38du-dIu_iiN6m@q=L=$##M+0=raKh7&*A7h6_Z#zxqt zR?oOFH40WL2ozH_Q|B;+=gBZ15v8&Y!ULB$&F!j9z!E46HENVnjzp>aBy+_W=no~A z1>JK&)KW41A{ayUVRbZ&VH_92bU2RHg88bmPqMvOQA!M0ixC?1%yD!EVjXgJpRkJ^ z69dCc*4X9~`XVa8T>T-A&EzL&))my9ks&TwJc-O@C~Ae-m=w|^YWeB6O?N00JqFAP zi8X8TDHH3>#OO`yU}xg)L=(#qU>5}51K-TefmTVu-NJyrFTnL2Iv!DTJBIgtKT>sc zQutuz2*>2ay1>L(BHQs#*b$UeN*eWldbqmYUq!X50B6^7e+=RIxVv=r;;4t=nFz@= zY_Pu|+TB!XvRawA$LSh+?BLPgzB4{m%iE1#C8uEmpuq;gG86`ovxT5}JOjV*`69#&X#}xTxt;)%xlzj`H8_x(VgKk zGqK65yl<{vY7!)};?e31_Qsu?AYWmrx>WBRW;=^R>kg6FKaDxBqo!1#Qtb09Ti7rZ z)U4b?)W(c61LrzVswpqwqGU|uJ}o*CG{aaocZJbd#%J+^$s_X?58W<;_C+n2ZBr<9JI0kIe%X zNiyHuiT}*=Pg3(v8X*(^(cjveZX?>;-nxxYNfTb(+VshH)}?p}-50ha?2>Josh@GH zyAghf@RF*uG#Ck8q*bfsX8Q&(d3UM^Bs@@$7gD;y?>kr!c!K%1l;d_cY-482f|l!e zqM<5MXam9FxSD!rZRuscJ1S*8UZKipdVwQh)#gM|=RMW<)}(Rds(0wUcE2x$gmu66 zJbHO?|5kP5+(an%Xy?LV4{bp2Q)_TeT&u#N6;WI2Xvj2kr7-Vcl?EmzSt2DsJV#Q( zhnl?Ujhk;6^88$%A{a0(YN)6u9;>w2?;eFhx{2Jex?35ZVz%l+0Dw@GD}vp^?$ z0VcL3XhxTS2o@H1Sc>cy!9nnToA1I-pU(iV2ghXJ@;gjhTmeEA?EA zZo(B?fv&iC1xpFjQ46I7B}^+4LVWZgk*^6u4T%JLqg?qwJ*i-}=XJBxf&6~ z>CD*@eJhVdzp%jfETRS(=LV6%`3cHar}Q( zzuMx;iX#ht855mkp9iq3ab*hDgpj(DPqpoK>~ND2t)(5X`= z)KgJbsdQ|!HtFy#<1W)K%eMHo%scvbT<<5|PixJUfGGN?p<8#O{-bKaUsq{fSj$#6 za1COEWn8?WB%7(KYu3*Z=UAo$o8vP}W@MDQD?L}nTIy~THtRQwn=PB2n_UkGd&Rw$ zr`*TmK@(>d%@%WcNDNs*<)yk(SE^1Y*3H*0tZk`dM^HZs{oVjxH2skEDV(Z|XWTj# zRnl(=Rt5su%F4Rz2*9IMiVoI-oP3a@AEut^H{Bk0yFI{}L?%i(T_{T-8#mQ5o-L@MwDx{ljfWK*dGF( zq$(*xg2-yIU#Q<=zP%>k6g>Eq-l^e56})&cp=9qwfE^BkR98A|4oU4!RG zr>Jwuk%4khwtDp>*5{HGHbB|bRf}}$nl91Wrp{bL2D`1Lb%TFQ*V3Ub)sfN{&Vf6m&lkQp zq6Nn|Xl;P}CkG&P(CH1W-_l?N=xcD(S}4#|vAIkQ9JQ{38&0(}M<Ete%+_pNqK5_QEcCv22lVuwGXvIQVo?+DI>ntW#bs0p~OJUvS$ku8c*^(-IwiFJF#z|L?!^51} zQpEy?BU?=mc(aSX9S(YXza@*4|J&_f2SxBVE&#SE2Aw;eVJnGfV-VGPMb}|Le0j*v zRHoFW0>Mh%=u!cCDz3P)$&TU@9G7dXI-OY~J9zN%1zT~wKoQpx-&jmAmb#HXyuVbA z=$#X1Obf?x?U?A8`J2wpo0c7Jsqom8yS_cSqGI@0QD1!Fi62hC{4(bLnBV2D7Q?Gn zE%Q18u^8hHcRw|p-!O)WM(rk-D|hnbRTg)GM5CNNa8uzz$5_xh!|)X5Jm6e4nSTk+ z*|pka8G~+4;6%X6+uhV)(*fbb7By?3S)yhM%~q?~YRL9e2pmifCO?C{A@yc%6aYtX zC#X%LfZakiR^w`91+a;1r0+1>?P-KE=~2XK_#k((p`nO0#j&?OamGCG;CzKIkf(4C zdBH8xiQ}jj=Tn~3iXfV%*rND$>F{aYIcm~7b^iq>eN%&Wj&`w@(QeWJQYnGt zJ7x)+rM(i7b}cT)sq%($QtnA-o{^v2tWGK9x@Voub)6kLpQCZs(CnsbCVzw)W(}Q9 zj!fE(EZe24r%iO#427PN1?vCDWix`P0c4>e8}6d8Qq+Q^HUPYpqB@>1;O86_74qpfErKST z#AUG(x7IVfvv&XG<7bYolCvec;MC~E;Ui|*Bf8Qc_K85EX}B8yv$Vvj)f;0m)-9VF zE?mEL`{eSnw9`DHZ7(?xs*D&!15*E|9pb*P&N{uV&etuMWK0LZNT<9{CQezMf~93g z$Y+tmAv)C>*3&touruWI$`KOs@p8lv@`-W;;fO^f0?+$=UX8;UMi9hEq0=Fql`(|(4ueG6a5}Z{G86Kf-m+j6Re{Xt0U8@xh~%!&hKFajXEFW z1N^7Uln!)QMYHNtiA43Ok}BX7=TYsW%aFi-N~q*^d|k%|hjun?9?IV~Wy)>bCVCz^ zx@ihWzWV!J(^#P0w7ZzAM{^gxU(8M2Rw#_Frz1`jMF`3xYm=ZHqrZ#H_bJvMa3z8qAC8}nVJTJ>BeA1ILM3$E5a^dq zi+HlSDD6dJr!A365|QaIr!2KrE1d;Pa76v-RE_1Y?Bd&|RPP7}w?4Ce z_{l&1$`O9-wb|88Yw#4$-Rtq^chzt+DfNde@2?!5fB&J&KHrU>GvO6P`_%HQ-E3@V z|8RIm>ULIhsWg}2luGluRrXbm?e^^scA9;fqt)K(VCm^*`^^s4WA`{p?WGR(RQZ{5 z(pkQ*oao9`ai?YbaV7_hEMszt*P#vhI5}(!`OKplP#W^ZwKvM>rPbB}#l=ui0$UXmw#5vfC9KK5fJMY^Q8zYz+OuL8pzesTxsUT2|%= zOD!QB+LIj7h>?M!B6Gg6?qJj&Lm)UfsvfATE0^;rT6>u<&hSh$QZ&nKlz2oV2yua%M5F07`B$F$*}2a!9l94eNRA-4G34%dIOn? zifCy$q@|_Ns1p;7(?RqG4gIG!>OaEK_R!ysczr&=6`w- z^-6fXAejx=aIe<9!mG5jLP^4- zu1D|=<-G1euSXp6x`)oH5el4&WeT~d0i-3JYN!XO1xXqd2SOWvJ)8-C`& z*~3HE-1b0A)8gu6SzW?DXX&s#lbZSmNv^m~fIi>3I=vDEnDle~U zkFJTYscf%05!fg;CQ5Y|{N z#A>riNR}<&O%p7aIZI0evLTrSBrYq{ERNw=eaM^g61ps9pZA=XrE63qZ@ZWEHcJ_t zX@Nk#Uerh$GDovZL(H0xra{AKn$x3;h`PFG4R+5GbD!tvGNNv($n~nOtEgKvi05fR zReP$1gCk2&l9Y*~`-qauR3*ns2&f-TSCXP)3hMd~BtvMED6Za&M;MDb6zO!bvxkn{ zFoz8PaQIjKn0nRVmK-`;=2y8ZW^c=YM6tp{VI?kep6 z)xJM0m{;qdVA^o?)$c#{*6{BZjwipL^~$$mDZFtl`@8aH&7N}E(Gvvf!_uG5@1s4*ZssWmb!F!EOqAGV|_L`Y#i&ef*~6V zhAxuu#nBTUkFTmqsUlTXKA#nwym&lDY*tMiB{~!P5==r)N}*&Z+*7{4{6slZUT!dk z-58t}&uKTVa$`63O46!VGU97c*Q99SiX1Utq!2vWYt5QT{z49mb(}EQ3-aa9BNsh zThH7mY}B%=gbv+$%v_zg24BN4ljRwSD`X}kk53RpH16&bBHk_T6Z=F)6z#S^3=vF( zNKB)*rR;VNi5e?EA4&RnzVO$BMiW0jevGL`T;Wrtk`C~OxD>aTV|H=)6o)&x-QdSE z3OK9n9K&&v#!N?kt@JjD-li{nQ5+4{D|K}lQ7`FR^vr+h@qYbV;JG)Jil29>|3xDS z5SLSD8wTm55SYf4x->60n4*l%QN^LE0vpcx4kHb*Arer>?}?y^V^luP2}DqpVtA$k#=biNY%lKqF1udy}RNYs|FOBKu~flp)q3^4Bo{>*&h zWbTUfCZ5KO%jUEb&c@lbP6nY;mnT^ol47DKR$3~8cEvc3*I7g!`NzEFzzzqXe6>K4>hgv6)rCTk`S2jUq7LgD)uDSGuF{>+ z5uG|eX|ZRJ?i7?#xuiO!IG7w=??V}qq+!8Oby4$%s#Qk@l#>45$OCzIaf|{2TzzR! zoF37Y2KnjXWU>vINWDyod2|K5t5jVp=W_9)q%M6|Be8=WBG1d}+BrU=R`Y_YoxJX1 zl<@V+cj~stHPs_S+#{>zxY6IOMl2V9!77lgU;X^}aD7|KQ85KSx$&VT!_IQ;j*Yi& z&r~%!O0STOs-u(;}qMN0|wFhaoP@xWyl zD*lQ@9FL}>P7k9+UQ~t{Ow^w}Xbl-cI6j74yurvr5QINd>=^TcRUnk`g31yh3gO(J z4pOzT(D|I=EWSmw?6xo#ApHp0K^=O8Z=CgBvm5Q zwWtRPaT)b0-Haxcsz#lQSIOyes?{#O2zDwpDJ@-ep?PF<;$URfAW_3OW99K#x4z^| zO&P9TI?g$E7IXhUZ@p}2%j(h)z*hDq{LzxJZXBnPYk@Ey0&O62#ZARE|5C{g4^c|C zo3_~)zv2mG^ag{&;dF-OnAM_-2V)rVvR&in=VLNmFr@Sl%nFVa0If@wgD4R2C(fx1Y;P6Obr3S*_o~w~?Ekwcz zmqRSZ!9QY3CRcdJER3_wcWnOb`djB}V^`d@;?WNV@VrHS=Ki>^`h9qt{cPuo#5d;R2F8gH4*%$ofFwf83QQB`OE_;Z)J zGnr&ElbOt9k|8shnM{(&B$<#9LLea%ND#sjlwD;9t%?c)wzVo)E7i6NF0WPF3bkr2 zXbAxnm%gHH^`{oG?W^VGNq6o~XoRO$b z;i9@ym548>QUy0Src9mM?Q}R;RKPk0CH zJ{F60T;U!Lt~QD*si4tstjBziI08m}_sy1qR9hWPkl3p*%iU!8d4Wm9s{8B^BZIPt5ubdHQwjCAM4JHAt*&fIxvmn9}mSrU9^V_R+vGsK^M zP5zs*9nwx;Gs?H*SnTpBZK5WhWaq<0@9tL1C5NMwMVG%l*b|h4L7Us__xb!4N&f7n zENSJOSY@;No7}m<(lX}g_R^kGxwMp=jGR*Ipj@xWv|!Cie#5mk(7wJ)GOp4 z*W+}CrJk@9zAiU6z(zqy$hpobr=0tp@?Ph=e6`XkyPRcC*{Pda(BKDFT~NRxPq>w= z)?d@tBoHGGY%sshZxxKHv!ht6Xc@&?94b7}=Lo_Gdn1*<0uSZ$p%rdPvy~%i*9x1} z?HA`N+@@VN@J^FZ+@69)u@9|(cS1D|x;N|EI@Vl)^F|jr{wOv>%5;X zDY^annJfC!Uq5&L)V|U3S}Ejm1uk0tg9$DF>#QI5EGSub!D)}@jlQhAV@Vp_Qb(kg zKp)jg*XUou$?;1s_}}y&^edD6H~XLPD>?pRf84M1s6CeH$wkTaNlRr#cNo%m(XJjz zLN6&R6;Q$g8th5aS<1TA|MXR0V#8xK}>N5b)7 zX?G+q9xUjN`r<)1(so7sJ;7o3EBO>Pk8~vuz|)eT|BTxDDuR_zbHd7Ci+mMyauJor zRjX22p)VO)Dz$*erIZH6lA*iQevBnUY0z&n4Gvah#*4p$=A6hOEs(w^j~pj$9bZ?% zR!G;3QT=P=no0fh<~8{0PLdu(yi_7RIkgqlvaTx;rb*jcX?uUutQ35yj#bhd=TwG7 zD(n=&7nYOBOXHAEeaPP)RfA@_y4H|q}8StixpT=ztsl2cb)7YFecd#k;py*(v8 zf$3d~y4H6ca@!s5V((eri@d7KRYO$gsBuO})pjuR;tgP8o^Ky-{ zv1W5kZ_WN1wWemg&sQfnsZMZGU3s&~NzEoFH4k!9v$Vc>Q}dSQz0E2$yPDTEE6x86 zP6E#i>y8xl1OqxJjgJS%c1N1y!N%@LBp$5nj@E#;1Si$?1RIXcNo0IrEwH0Ccwk;T z`x387x?(gwHpFbT%b|EYwmsHYQ+X>qZNA#Z_L5SityO2SK$|u^UZFIO5G+>Jn9X9Y z$4vXl_yCvq@Sv$;Dm-6`{a&gJj%zHPT;8439Xa7E ziL$BR`r4uMzA%3ZxurZ0%WJH3r{K<%twK6jE}b*-8zWby4k~JkJV~Bce%eU2tfVYZ zSrKni`D64sO^ViBIjVfL5|m10-)Qd`Z>wc2QS0c@Y&#V&AB-+nq(ViJMvbzSMOg97 z+M@Mp@^o#Hwo+5{E`6+2s%(Xl2=v9rSs?kfgMZj*V)v zI%}kKjkK^vstM&3<_NDQryM5Kdx8^jaX=W~xOhJ$P9#tFNbALClJgwAr7*KK|&1yX3BwXLlz@R7Z#BIeSiP zs>$j8`FFczKB16)SNScpVcf7*9L~hF5;>U4%O4R8M%WCmgnt$}t2j5$VfPfWXXdcy zCmoX05pu|mN_R3K1p*bZLU>Z2>?#Qhm+Fm_Bc~Ww_1+>La4(Wl!+69~-o0Kq>D|m` zi)Qs$b9BGVEl!+pR(FK6ZFWm#?pNHhJ30S?K{srb>H0z}@h%p`kts9sS!M`NteqXT zggMwA-2>L*L8&`Z(Gd?)ce&{f2Xx1!iET7)NdgcoKE zuKo%w@4F9fyYpgT<*iC1JTaCD6;sDV`uA6^?p_}cM}w7xwei~dhAXB|e^=Xb`QrXd z|F~n;+2wVm72p5GlRxaVl3}&HigBuvZDO1*^||t0BZNofq!1-Zv3iTVmELCWN#0q7 zTD4aScw>cd+q{Jpq-ce?-Z&}6)Iu#@rM`L+P4f0st5rU)x16d9iK-+|VWF$Qr_Cz# z=V2TQ>q$bi?r^Ycc$970u_j5p&7oQz`?_Jl#6FcZD~<)LzMF zKl;uQ=F`pON#{;o2LQh@+&L-oBS{Pm5u(* z{$Brnzv}l74^#xiT4g{~5a9KjSIqUB56tx&)0l}#{9@yl*xr~*F;{F|Oo&-C)*X@KK`UD{1<~R0U=8F)JecT?`s2Yu5gUocgW>K-emv;ujt1hv zvP{Fq6fsl+kpkO}siqw!!!AJjZC^u_UDusg~O zkTIzGknYyXN)_?e_U;uSo82u5o#EE^iro6nky|sC>@rUc9c#ogqUC?|uMuXWn3Kv| zgI1(6!&p|$GzbUG#dO+ylK>+%L+pPWZ(<@mL5y4;EXNBlawYV4F>+xG*(EQPNEMWj zM$i~(0!@-q!)DQG()3~ZYz^&^%2Qrp9aToGHXDS0jNrx;7niVXcR;q6l)w^zJ0U5& z_#n$URLm=EB_$;`n0#W^4j6v2VeB0;*0N#X^?DS~k!#rn0}I-`oNesr>E}}PepgCL z$mtOMYZzcoyN$fM%GNSopKlb(xk#*xn!9tXob_eW2E|`hn>T9Woax1*mi6Z^YCdH) zrbVrC!zYtZDLMSDGn(DJ?>72E`C@O+4DLIsM)0A1v2UoJLT)v|04% zsaM#)GweHMN>9h4j+Gr(Xlk)zL{oKpRI!Bvp2Gaf_}Y-ZutROrEY_N7Ve6=Axw#F~ z0=Y<4+M68t(drS!{y0&&oL`=A5mHlhU;YEqMDoM55~7n$XdylKqz~RFmJ0mAF?-S< zi`{}ToXU}7c%RLdJ}hFPY(GqmzXlD6}0>ulR?>K2={(zf0v^LuKt%QoF6 z+iXcI*Pj%wW|9|;ii0ZOI+!mO*j0}22}<>R+}sqdVx!JnGEeBQ;p+p-3+DQ358_9E zE#knyI?{ob_SOt5K4oX&xPc(3gP* zT<%i)HzU^0;ISmJ1EGyENl|07B85;=FVEUaMrYOKPa4CId$nhlO|hA zR~_Crv;VaxAM5|i-2T^>H5bKVEnk-cbEUHV4@%)hpRAuyaQM>;Uw-M)$4@I5G3wE$ zrCld8pBe8&fX`0TY_KeE+{91?ZHJsWo2+v@a3SgF}OL{8{E$uCBCBEA|ZN@B6eUp8QeXm_5yUV`LuGslt^T~62EmzO`93k9b91=9tE?oRUjawZL z#=0YL&B|E}dwA`spgVHpPT_zEzE9TN(F#Ru4DMc0?$Wf9V{8cu;p=*g4W$C!#5$Jn zZEQR`PA!Qk*FSQ2)1cQLnt9v&64*;3P#5d})7qEB-=_|`!__Q0kxAA5+oJ$C)%gI1BOY_F6n@%ViSO{~c!Br5jjIV6Xs zZ*cfa#N_i!E`N_-_WKhxWi=wHraWX${gCNf^F_+bLpVJoJrj~PhI&IXgunwL4PA!xhzaC+pD-k;-6&C8)WKQx^01OnRVx zkM+G{oUhQb&R5uvK3{Px%V(_I)HHa&B6`FD3;8b3m{#dQ!^BNaA0E2?C-at+xJETg z+c9RIuJ&`KgTERWAKlJXoMV@~GP!olxS!4&RVETvjjIdkmX75!j9a^OftYz^EY!Dj z^meEB z{w0cQTv4HzmYO71ZFsq6lcs3;L^SnlrXkGZDK2=l&A~R0M`yS@JL}`YCT7HFbWA)r zvOD5tPbMuk@~TlV@+P4<+D#4XN)puZe;O_RFwmEl(co^2v=n8*A}@&5*Wof zGA35r1}!SO81;X8%z7OI8DR<|hv1h0rAH<R;$ZgRPpL>*lI3_?05QB zxQ6LxJamcRI`S}w`7XFI(;JPCAL;zThrgx4gB*?WtmX0WoZI^r{^G^{(@q)nwKD^? z(!S;qYtQ}Kxn&cT8!CL|U%h|iMKe}k!~X5XU8@i8bgb^4ae)Slt`_sXL7d)5Qj4@z zjOc_9OFkJUzcK8!5&s;iJT>y!5ig8XHjKD(p{Z2Mi-Gz^i4Y z;`mKqd*GFT5(p&y{+5>d@_I4O_2p4hJ4elN#>GE$<2n_c9$g<*qWXy)?+6la1oDZU ztU>0GIJRR%AK?$1=XY8fO~F4*U&eq-kiUV4TiOuS7devgU^Tl7j!1bt7}s4XLt78> zLtux$MR$b#{!oGxC0->2gA~{D?IGxicl%a^8U!nZ^2EYN$f=Vu!5ATfF~Ax}>WQON z1j_@dxh(qxke*FvmvF?YESL7RjqG22qC+b@N<)wAOrlw_= z^nX|sSI(=bC>go9zhpsksjf7nHx`d7>fb0IT6^`N9Z(cod-%HivrpbD>3d1aR|H3e zrLg{8*$?GURQV0{wPF7ZDo+KU9ri*{*)Z(N;3LD7_NWvlDHaM9Sp6k2_$YRFfmUkr zMk(`#l0Im#gtA?EMZv!!qHx%s=hyTN!(4Of=kgI3W(iyz5H3P0SHkt)d-?blE|0|u z2NFk|+8P-3okhF_C>&$|0XGhx^FKQ%#%=3i%}8 z?gUL192i#P>*n`_{W9x7!zv@_ves$~66mligQTqSSbu4qZzBE9DgHTZLYwG>ki= z=h7dGQFE1BG;Upt2UV-&T$<4Hn>A^pwpo++YiUj1u05>rXK9&7O4IMAoSggN(*30} zmA+FdmkQ%fXn(QNX?&lnfWL3+7Ox)|YQI5j!adeE?^_X%m)RY@B4PRE`Rrw2 zmACs=l<7zK$|S)MWrM3F4Ps`CC6l98y{wT+DT=FRk2o+=H0Z7=>&K39yV}O`Vo5xw zsQ;zc8Y-Kfd*hDB&#a6tUv|xk+>37V(YD(_1 zuDNSu^BYz(mF-j}Ma7s$=4oeXUkQ9eQ=Mhbf)Rn5ocs|v{*94W3*ReLuPpkGUoPeE zo1R{(7Q@-{*sM9$nB89NDGP+8kQOSYkd&0#B}J0dSg|!f=E=3?RY7Zm8?~* z2gI2S{h)?^Or!mRRxzawUtB+_AwJPf^8=~eK(Wgek|a;aYR8D&2Sx1(X~nA0(ZyCz zzWDoXo{ZBP3G*|w;v4e%M`*2KZ&)9QqCuaUgN=%}BJbh_%dhlE@&0FSy>Q#A$af$A z)hGS8j-5Zs<@Hv`Up?!ZNABnt{`fsVE__Og?fac%EiLen@O~jph-Tas8n@8d`k}4Z zCjQL!ZLgL-%JjK!{bA8(YYuGF8XZE!QZ(S81V!D+*7m` z{#%25VA{Y|dQIu1D^#KwutM8P6SWqaEUluGkv0>kL;SVs!|uFRjaEhjO&RU z#{C+VQmV#v1Zi<=De^v^ex1{iFCy~IM!D6r9_eEd&IR1ot0@5L1U!f@K|ObIn?WZl zkMOgm-@)~TXvZX6e+D`MZS4e|g7_X>w*d~6X_Z^jOL1L*>o)XF0j~3aE|fdSWsu*2 zHZDVYA;L1}#eE&10nUp$5$ZN`ESUgG#j+orLE_e^VveK96}1 zyiksOGer4i6jWcQ5?rSk;QBX2AL*Egv7Zb&9{v8djnW5D$9M+nxgU50<%@9tB=-T2 zyEMCh8}h!1w66lI!6U^$5z@aacz7#4#pQ9I4!(yz4&)L%2r%yf4JM57F_CLR^#4`? zA5a7|1AN~bfd_$UKq==zy*}g*q8*nq&oFN?e=u(d{s%t^p5<{|jlN+X)91_`@)>j` zPzcm$L>mlLBd?e*JdWIEo(o(z^A_`rNs(S*@cmo-oXk@hG-|04_ZD-Ic`Jj)nfIA0 zDe(+(c`vmw&+2_`QqhJko{u~yOlr1==ckw>pvpPq;lAT>H>ued19S_;kT%8g0-dA| zr#Z^6!T+b@dOBz``sY?L2j5ZugI<%bAlbT?YA}{OcW=(3H!-ZwN@t_Kz39sdbsya< z=(BP}eO9tqwx!>+Y?Ck5VP0p_Y)E_cG^UKqv@aX~-+}y`WgDG=>wj3DO{djo={nXD z)_+R%K$%Gq-v_J*s%;7BCfhmE9_uV}fp0zl&R0`3+LEGXbuYE6UNP@th@XYJ8`X0# z*3Xh6?WL=fS#+DWjYcTXVjOWV`8m3r!S#c#9N?pDo;#YC1U32f7?kIL!=z$PwWR+n z=2c7jWicmP()~K6R@MzHpM`!PA)5^iH`ly<$pFYbyAYWx+&* zF;=Er=CRj4B?nMxd7DP!nPZl%;#p%tj^9M(+z+DcTIdzjWlfMMc7w}9XF zQ;2n<^)~dOogDOq{-y8HsRY%Uep-HkW`mBAXVNQ}GTU)|4%>msi?mR=9pks1!pf=8 z-@k@#90MKRjlOz@<|bMQ*j14IB66nvV zO?i^eQue|=_$%886js-Q&IdYaymU96BOj!5w2{!sV~qM4Ytr)sZiBr0t5Mc~Xsd~1 zwfXC??T*o2(bmj%avP7)KG6=;E6O2{s*)4^^b!!$Y5&Rc)wB)RBEN{dQ|ar{UFiqV z$rG|LF*B?-Nf!fkY7^ZDT!!l!(EkLs>tVVD_#fQ^wQzKr8l}H{3eg;L{t-wvd zQ)XHw_&&#q&x9qAe&C4kZs;07`XK!PBRju(8I8pKMyhS;2N=qm&>?`fjtZ?8QlV0b z_#nz@oY(94EwIFXFSt54=L$=h^Yu;p}leQCQwd3o~Kz z!2my8M`IakJMshBVcQclmZAL`X}>-?tp4-_I2AU^E!-yXVCB(at%oWZayi;s!eub$ zfPwIS$W?&zit-NVOMvGtL*4~l3=E_^M`F94k-O+^9cZo&PTZbLUCmap1B4zwadxcolE~!bTkfAG`@R z=WJf8Is6--{|nbkfCR4ZL)=ZESAs&+9O_4W8hS(ly;UuN{Z4cx zfI9kD>SYgq1bkJmxsehze^j9JgM2(JSDCBi4^ zbsfU>;lBXi1||dF*Xg0}0GytKdpytf$T9rTe=9wn|M5ks>1UYqC?Dd>&@o?#9^q@4 z<9{M*`Vz;Wq92U*YZ>kNTp!1z;GdjKz?P1(P04mN+p=swv;89UDsK= zY&*04YH1YfjqC#@GW@|VQ*UI-R_Oz}6>tFogPwyt2jS~H4cX&_O#KkgcRK@N59>8h zwmwmZIbILj_E z!`V10J)8GTd!__Fu!*dB_hrGpg}Qst_BY#*J&y&B5N;o(420S5cqE)~>2s;sW z@}7tW4bSTukjpn3l*B%bxyA=suU#SXbc(%`UyJp=q$<-ab#?k&V=cw4#mOOC#hP8z zT&IIBs^zsI?MjYIUu3QyThBoKS3(aoqF!G6<~8uube>WQ{csnR$$LpP){x0uOXl?{ z)>m4)Xh+__`tfv10PV)U$#i3%s#^ITjZhZxUQPNSue;0b^kb=??7SagM;miyQq+1i zb;5{>TZf^Z3#iTZTKaX^X0K~4Vn1h!saIJin%5a?e-lMt4X$ZMj6I&NCA>G9S(2Wa;Cd-gj0Wi(ld)69W2S=QPA zWwhPss=#*~d2b+ycyByaow65~$+!V6lg>S?uBE7$^V_)Qh%!s_&aw>;SJj zo-6M2{vgCUtwZ16Nx!fB4Kj_v>uP8ZL%Ae<1L&*VcLRHY%jgW{(IfT*^OS#)D)t0F z1~C3WD=^>S)A`2Snkd!|@x0<0VN+pD*P*>1C@Uc^^!^cfwR5ObdldLR`s518|DRK# zWjGaTQ>jP&HlFz+pcL^hz>d9+f}m2)w-7Lm&9{qkFYv9G4D zPt(T?=@7~Q8GE@i81hyrZ0r+WXk3@-*NAJOdj*U-fIBmQeCc@fF!Xe8s<^9mlITnhnH9Kc{_@vw`@@U!ony>*w-pAin%_+A%E~h@Y0-4#=lB zfQR9iz6}arI(>s4muBA<+NJ+>UdIN`Fv71G`K}yryy>?9_#)|( z2hsls@EyI3d7tzKV7Xx{Jgt}Qe^9@-XrFOUQPynhBUxb|uv@>MxHq@|0njLLi;?F( z{SjD9SxL2wpcxpMvxdD9Wdw0{9IpE8qoq-QXawAJ@g8e+GCx zq8i~Qy@NfO2ywX#G#Bw46h=$V2KLBHMVh;clumec_yK z(BI#HO)pap^d?#UhIroFGM-8MCXH6_r52OgehGUA`bI0EYRKuXoLw|go6YNK{mldS zHf$~VZhoJl|4!f`gKvOC31EuYui||n*l5ZxL3tk!wvEMs_z;D7zl-;r3?DtDO@jWo zk@B>sF`o}nooyV&wCTc!pPaRKJC^sKv_;7Od)Oa_?{2lC4;PZ%q-<|wt_R?rb-br0 z_O%Ar19WQE!TW9cp4Us+c8zIAW!MyAjljHz`8*6y)@IF)y@N|fph2#%N;aR{XTU0W}0d3fK97X9@}TovEqKLqb=9M&VPo_ z$ERVFr|W@p^?k84#x%|A5vwtN&jb7}-O|B$nr_Uc9)!mlc`pXe(yuu!{WT+gtWp12 zdLAx&_)oZAYuw9NtLgu%j`T(#oN1?uJyF>A$Djjty-LPekk6rCcr6Wcn9o#Y*uzKc z@gI+(4D7h{Ka902Im3=Vf@YpiLH;)l`Zpuq$-Kt0BAXt4e&smlS&l=^c{VWLvhC~R zor5_xU39E-GJ_O8oe}<`Yj^B>8T};aG0q?8YjT6sbA*msCLT(=ehJAk&EQcUN0c-1#;4=oF2MrpNVJkZ}gkK<#-fkdm;P(v3P-0k= zV?#am`MNIid90rpsMjIRIeZR8TdN1b{>SG5zCSUnpBXs+NSOU@_M_P^=5w3vHScfM z`#&AW|LM5=yPo^=+MWr_$v*;rFesnh^Bt?*%!8T-_zUo{uvvIMR~qnvXZ{8J7I@#l zGXnZK6`%4e@W6}WtnEOVqxgWyY;(a+y_tdQi^M%?pzT%Kj2kcSr@vw!xXeMtZo zoz{Rd`nespz5b}aqw95sDf?{Ci1mhmML%0Rme)JL7xn5RbcSK?J!RN__X&SmKL_j7 zo%7wrN_`x>=2XVa>@t>f7Pr)^OW98cb z>`}QF_$jVW0(}E?3-Z7=mg^B_T#mR9=taOKfJ2A$jt==Npgo|tm+~fP2QUrDGw3wE zoOC7VX5a!N->GDguLj29Is}>ky$2Xa7Oqcv&d7giMxF(Od90Vv1p67Vxi1Gzf-gJL z4@hrPt9mLGU`!pl|Iq)m?zi+m!TUG>+eWt{{Nz#R0?d7KgIY9NsBVC-|1bD`e6D8; zIW1$LSKp%XmKqB4x<%&6B|c9q)}CgO)m-~Fq0J>v&aWXukQvsQpP!dz>2cy3 z-WF}s>*RT6+PIpJWNkR?$U0#=xx~3LK6m}9(5+)x=L`MXMe~jGQ{(WQ>_75ccnbVt zN12n1`Fj$dXJfuH?7*Kh(86LpvPReakd-XEmO&1}<~Qo=Q6CesJnJ2Y^g;9824%Te zC*}Bnka4``n;clD9ay6^-$@Yj>09s*!IEN)`*O&DJVUljHDu5>M*2=UEY>7h7I~$$ zpeGBINZ-Y5=rLqeHJ;@^4EeJ;eY=n^*BdhGT7At>x<7rLA*({rNkRD*V1^-whJ!NB z1ImCZ;ZI+$L-=J63B6Qr$VsmE6qLiYv5(<`u4&~t$nU_M$X0^>-)GnaCiWS2f}kg| z2{X$5>sa}XeVcCR8IL&Y%kLuWqhY4cHE=HaRv~LTGuHggwfFJHdh>Xp$BljcY@dMl za-h$~nf^Tb=`mxS$D|8&h&3OfqpkTclc7t+x~%Sl)q>iMGqq8}Z^+N^_e?)d_!-J$ z)M1%`tz8FDQ`^?2s3@R-1*Ay`iUK!;k^~Y+=!hUllU@uV6omju=uHqr(F=%x0+%iV zO0UvUl&W+I9qAw?^j`j;_j>Qs_s^Su{&(hNX76=Y`Sx0CuRU`nXYWF;>1JbhFfX#s z;A#Q8k64cLpl}Oj_krMh_$1Ggc{$7aJLxuGf5h+3u=PMDDxOhg!YcbGe zWq5F=x@GyuD9^nd;sct#jSo`L%H&ysY3E**}0bAFrUXRq@T zJ{Tz%G?52(1M3=nU#vu2wfzIn4!u&Hf}fCr(AW|ptI^lv(+Zrt^ZVqjn?k2O^>VFW z`b8yWx|PtQ7r-lnf~XW8(gnJOcNH@ClKbKkS@MN$yo*Pk*rnJ&e#h&H>d8oU=K1!d#-Y`IE8`HF623DFDYGaVHy7NE z^}X}SU@8XT0=u5{nyn_CSZKC$9JU%wpAxUxi$Ae6 zz%O!&R+eY+`2$Z*>6)?ZIlfRgtCrfwEz14skQk!C zf8I4~qwtL-6N$-JuGCKTe@GU_%mN8sw664mI+PO(d#6Ni>} zttCyhg#?*=uVt13u3Td9{Lc+HXjT8^zMElbJ)X$28iPhAtPrP7<$Qx_w*%u{|rx{T(I z_hgfo!(v130{$&(>7<7%w0rMJfz=;(YUMA_l0Qe~#y3W*S@-sLc;d;I@<}?ho0%)e zeP`g|spaqC%O^azn&KE`s5}JtaLICG$Dm`aXI9e-d~)Sxr*At=lC5F@GK@0Rvi-qO zDX+~te)k~ksHj0aZMLuKaLFcGMp{wp4wtu%V!>~ZGHCJ1wPmbJtsNO*aILk;RWfL2 zCN}DZ<^oF@*BED!9TktXe9T0DVO>7k$n4CWzB4nSzezo*Vnx4CYMqa|*aTwTx}gL1 z^B&YllaC6UAQLa_J`!(lG0I5LQxoqzcoDkwhxa!7jOpr>kswLgFQ`K|y~Tg1>by!# z%ko<@GX~FoTA3oQk(HzkwMK!xhkqCey{omQ3HmG;vBI0hJz+G1Z>W?vyp}-Y?)>WX z%i96Q6DKU&!^d^AQ=-FsvtIFFch7dYakH=04%^(M2_t+ut}m}#*UqEgrmIE^56rrU zDlt2Ul?CCR`rd4)C$)F5Nv7 zUoP_&zH_GOlbL@ML>B)8I6x1si$&zAG?(3yRDPChvS6q?5!`6$z^a3DH@o(CMmkpn7$Xc2W6W}1M!K2izBzCrx;dv%fA!9tc zSH8_(IE0%?HPO31RV-%yFf#`B^mK>zqA2Zc_U%P$J<^w=)i*<)#b;y*os%iuLit2C za!#{#*wq-NiNvEd=K;7xg|@+5C~*^D&2blP!oM=O2sZ3K*5lOre3^N!SiC_n;R)*E zUbGR*vwHIGZMM$i({TdDBa1R-snL22yXT^<__9ACPC5n7cz3&~8XYJzB;F8gcc6)C z{vw{h5Nj_4YG2)OIRXSJNkVhJa)Cksy1Ydx$hc zjk)p_HAKoghcU!IiW)ecx6J@dKm zh2fPkwzsbJ5gn>6i9A&iYJPliXX~i48>3~@v84t3lTafvb#?rup<3sD)~EgZ`gp0R zQIEg}gubY-&V9jg$gb5&?D@>JzyuOiX`HOgE-lH#m*rfKiSDh|x6TIdkJeaI8)r)% zbX&!zj;(P?zU_P?Eawhdy41C&zNC@!KtT#w=LM&4a-Y6YH^csh$lQlRtu#%Z9V;kY zr3Z~cwbsaCIlgqCt2dnJM_HS9xleoq_s9$~R#`nKKx2(ii6S^pqLK9{oU? zi`^<3R=)N5{)osNIpu*6mxPlCSsZ(?XI@bvb-ofellCq0eB2_dU`LT8TZ=DSUb;!y z@`ik&A0F`k7&jMUz9yz@5v-V}FKXqcWKJP+ZWE$NvXtPwaYF^FeK zrz7%oSS{`h%%nX@*ywW467$VPRhe(|MICL!bQX!%)b9>$o`JOEOC>p(+er(ZWW!bR z8^uke+Z~3llY4JU+Q1b#%K^ESJt3@9c#&sY#=zg<$myw(8QLi5qE^2RZ=a9s;FU?a zP=lv~RGxEsi<%;YEVjM2kfqyf>twO!PRNi!>{(2UrrC#;C8Jv9)v00X%XOB5+n$16 zUrOA3)icL}9cmU0t+X~IUznfddG3VU<~&ZP`_=avH=X9ehb9iE^&-Q}_Vu^-r|;b; zi@vyMQG-vFWGXT+zK?hsR=^p+$mYGGv~l7rcs0SbZA!X{P3pdg$^&_gai3vwfYeUIkP49SIth9T<-U0$!!nUK8Q!kbeh}UX;6r#rk$ztrQLRJ zNPCcTDGbYz8F@69`BqVn^%-zZcuH8q!&REX>coxBD<%rMM`nz?n%mD$N}*J>Ty1I( zxZ1Be>t65F@~&f3_~fbBSR%v27teQl-(2DRJLdZ$0ld2jk65>T8HH)F2xZEdfJT?U zo{xP--D7~cb64*cy<=I(I@1FLj`RKIeehi;5#IwU(yYuw4UZ=_9qKiviaPNDu^zDY zRfp4`9@Hr9aI|w3It;}rrkT^LK zVmlMJ2WhA8F%^Q%NIKL$F^HB4;AKP~{|nfEt9h^%_FzC~Vz5iK`jSxNc=B0$Kz>EW z{?p$sy7t(F9(BtS!sVLIPI92587D=*svdnL5STQig@E}5F z<9AMLlgC`C=5v|Zls~G~X75H1QCm*5HZ|*}KI=2QNm|4O(Xxc&1>lz+$`>kaomrz1 zOO0T2jnaqM`50`S>`2g!PsAqoobe9vKc>6+2G3KvWsO~azZJjV?*_*Y25%BJ z^-I;@vA`=k$cbai{yzGpW^Mg)YO)RrUd*fY$HfQj0(_~OW=hU4N$}0lRyHOMU-hC| zRSt;W4`Qj(G!$ye5}jtnI-84(e?1PYWK5?!YchEEHD{Z%1VC{!GNL*1+^B|>ET?Si zXMwWW@G3{$$L*J-9tCq2C#r$vNap_W&$|mN$5Y-dTCA#8 z=5uTqfAY;fS}mN&sM$t--A?8jel%QJBM#g*-W)t)Hxjmda}~ptRi+9r&k;PrFGa9c zdzG{&H^E4BR)u4%oos9C-fD)#v9myi6E#}OOD$eY?m`@QI!r}CKJ*|>XTO|Up&W39+dwPc}n`dKhz2Ir%6j=56(J|M69G`#wJ6^*T{pt&(a;3A*V5Ap?zF=jOn0=ngN;#quoBEeH{fTNc^Ri62%(;p0k@=z;u{)~ zwO2aJA2fHan&UwA;B0m0dk6JbB6E`GT`G87c7^6PwR-Xd=WG}VrRe9Zr%E+!p8E#Fd7Z*TzI173*$=zadi)e6E{yT=By40Tcvb)(4T?&?NS{1N<{oHf0$8#_ihOvsDe5dp-HgmiK%-=VXf6bm@Z{24hyQ*zJ2B|$a z)YjQfr%)|C%=c-5VLq!Dqwua4>S<}~O4;|hl+7JGGt{;oBd)NasPvUv>xD(SL`nC3 zA7&(!NMIbPYQsXAC@0^UNH5u4Y<kdnd{V8o2P9SX6X zDsEd`Mh--Hbmh$tX+jqaSd?^J0%NQ`-S&~i0bduwZemO^rWSGb$X-NUpG{U#l%ZNy zZDt^>ySv_n@;oLTl%|!q7RUb{FwDs zkBG+QarUtnW*e3<(gYI+g2nQMJKGUMS`Qm5i)Ye44f0+ieN;%-ufm5aick3~!M_H} z=6LQ7>|6^E*Eiw5<*{^5zcu!<`ods&1V30{cF*Qm{Cl6}jLN8KNtrESyN#0ade*}0 z)6#XVz%dEY&DMm5-6=3P$#ZO+ov;&Aj015?(jo&m)bF3h0O;z~WoqeJYbtYD<_vbKg9*ZhE-TDeurU>>BXqQJrFwv#^5X{sX5HJejr>w%{!)G=piHbkoz zk!>eEJloP(uM+>U(RI0!f93FAxIQSb0Nsjk>KLCPxc1l#R4k><64U;;Q(tIs_INAj z6d{XCXtLpX?m2#c{T#zjGIvP)i{(~X=8D;G$4|CCACMXu*O^)`UN3f8d&%nD z^3+W_%n5gU{N41so_DVTUDKzowuZ);JMVMfzEOC&Tjw(&sPBS(Xpw%=a1wt?qd~r) zdk{zPeT$@5ZQNgtmK=sQO9e=^Sv$rPE5@WEoZa9+S>@;CtK~c)bD<3kd{bAum0*+& zEsL*0G$g$jDl@u2J#hs#8962w9y=&QC=p2hqrRuI4V#(rIkJSzBMQW>VC-)SOhqI>EkK5fcKUhmA8=hOz%&o=jv zi-L=&#Eyy0$_tw(a-U)%j8co6ef2JHysbE*rd{2UTTqpO?z+(S!Frllmw}j%dD+<= za!kg?+%u)J_JodUGTq|N#YNyE(-)nZWXP41$;(CCTz{0r=v}@j&B~j5pQ5T;<%EgK zN2xn{mruX{GDGhp-yJ|4|BatAG^5Ix8dE^SMGJjGUeWbWzAAtx2M4t87(rX~Sezw+ zh{vMs4_givx9LU20V06IhO{*0P;YlfELa^&L|dYXXnL@Yvjy>xVxWGV9()~(vnJXA zM4{qPdK8NOPc70iZjNZo9V`)Gfwi{9A%W!bY9PSY5((6Ys*9*QDqwAFRXp%m9S;p% zjK>`e+!82*q6bheX*YzMy`w$F7{JZm4o5(^A%SQLBrJl`J|u&ID8M&P3NPN$3Zbp2 z{3j=+hXmRXiH-;`*wxil*i~HE0dEZ!g~Q=s5izis7>L3FBDmv-Xg3g!zz6(p@tf5{ zO^R3o25;*~v~|D%4*O^e2WKJ@2>c6(y`#GN4+A)Y@Hbe(7zcZ>8`=>pDl7uFx2K@{ z6WsT~9LgZB;Rr-D4uid>h;nwewM4*0;4mx%BMyRyV=O@s5fO0^8U~jDL9N6j(J-`_ zq@{$2G??Osf0g}Jv7!UU*&d4{{-sz<0&9h_gj<2Il5i*pA}MJJLW@|UK`<)}Oau$D zfI~$^|5E%9*&m9f!9V%o@4wpPclk z7{U>aC!#3${-yul!bb7t4_yB?cE1D;p+K1sM64p^hY}MJ69S-sU$gxG1oY3!@J;52 z!vB9R{rh-PvV$_$#DC2pgeKm>(iwxrqcjzj2{vfF;}2gzzx#qB`i=glFDTu=W&T^Z zEipe}J5n~S`Ih>Y7%QB0)!N1!5Uqkl&0j1J@S4>Hxzlt=9{_j#x zSvrtF{9z&gWjS%fW3A{#0HP3jkslWT2Bj<-04u-`nkW?T?I{5FgC;6TS%?m=f6&Ar zlE2WzMSkUjLg7F2iAg}jex*tNVpmL3>=zs2B9LEfh{Gg)k%fqhO8jgC0)hR^Ck}_e zME~X^;?cHtSp2v3_L`!xv>Y5RA|WCPQ&fUeiVs8yE-4}kgG1$&A<9s=B1{SOpE*qF z!PjtB4giW3fHpl?+rfbdpp5>otz+wfJ&eY;6`N9azr_b4Dk1@+zjR6IhBE#C0ALK+ Aw*UYD