From 22887b05e93ad0e663dfe8f4b4e21faea1ff604d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuzhan=20A=C4=9F=C4=B1r?= <90545225+oguzhanagir@users.noreply.github.com> Date: Wed, 17 Dec 2025 20:59:22 +0300 Subject: [PATCH 1/6] Add React Tutorial Documents --- ...act-Adding-AddPhone-DeletePhone-Methods.md | 114 ++++++ ...Step-By-Step-React-Adding-New-Menu-Item.md | 74 ++++ ...Step-By-Step-React-Adding-Phone-Numbers.md | 8 + ...p-By-Step-React-Authorization-PhoneBook.md | 155 ++++++++ ...By-Step-React-Changing-GetPeople-Method.md | 64 +++ ...eveloping-Step-By-Step-React-Conclusion.md | 26 ++ ...-Step-By-Step-React-Creating-New-Person.md | 76 ++++ ...act-Creating-Person-Application-Service.md | 102 +++++ ...ep-By-Step-React-Creating-Person-Entity.md | 60 +++ ...tep-By-Step-React-Creating-Phone-Entity.md | 60 +++ ...Step-React-Creating-PhoneBook-Component.md | 44 +++ ...-By-Step-React-Creating-Running-Project.md | 27 ++ ...t-Creating-Testing-Create-Person-Method.md | 71 ++++ ...ating-Testing-Creating-Modal-New-Person.md | 365 +++++++++++++++++ ...it-Tests-for-Person-Application-Service.md | 106 +++++ ...React-Database-Migrations-Person-Entity.md | 138 +++++++ ...ping-Step-By-Step-React-Deleting-Person.md | 233 +++++++++++ ...ing-Step-By-Step-React-Edit-Mode-People.md | 371 ++++++++++++++++++ ...p-By-Step-React-Edit-Mode-Phone-Numbers.md | 234 +++++++++++ ...ing-Step-By-Step-React-Filtering-People.md | 63 +++ ...eloping-Step-By-Step-React-Introduction.md | 14 + ...p-By-Step-React-Migrations-Phone-Entity.md | 112 ++++++ ...loping-Step-By-Step-React-Multi-Tenancy.md | 68 ++++ ...-Step-By-Step-React-Running-Application.md | 34 ++ ...React-Using-GetPeople-Method-from-React.md | 157 ++++++++ .../confirmation-delete-person-react.png | Bin 0 -> 16920 bytes docs/en/images/create-tenant-react.png | Bin 0 -> 48632 bytes docs/en/images/edit-person-core-react.png | Bin 0 -> 25826 bytes docs/en/images/localization-files-6.png | Bin 0 -> 51993 bytes docs/en/images/login-as-host-react.png | Bin 0 -> 32272 bytes docs/en/images/phone-book-add-phone-react.png | Bin 0 -> 43293 bytes docs/en/images/phonebook-empty-react.png | Bin 0 -> 20988 bytes .../phonebook-people-delete-button-react.png | Bin 0 -> 28095 bytes .../en/images/phonebook-people-view-react.png | Bin 0 -> 23244 bytes ...phonebook-persons-table-initial-data-2.png | Bin 0 -> 12773 bytes .../role-permissions-with-phonebook-react.png | Bin 0 -> 22113 bytes docs/en/images/search-people-react.png | Bin 0 -> 22190 bytes .../user-permissions-phonebook-react.png | Bin 0 -> 35170 bytes 38 files changed, 2776 insertions(+) create mode 100644 docs/en/Developing-Step-By-Step-React-Adding-AddPhone-DeletePhone-Methods.md create mode 100644 docs/en/Developing-Step-By-Step-React-Adding-New-Menu-Item.md create mode 100644 docs/en/Developing-Step-By-Step-React-Adding-Phone-Numbers.md create mode 100644 docs/en/Developing-Step-By-Step-React-Authorization-PhoneBook.md create mode 100644 docs/en/Developing-Step-By-Step-React-Changing-GetPeople-Method.md create mode 100644 docs/en/Developing-Step-By-Step-React-Conclusion.md create mode 100644 docs/en/Developing-Step-By-Step-React-Creating-New-Person.md create mode 100644 docs/en/Developing-Step-By-Step-React-Creating-Person-Application-Service.md create mode 100644 docs/en/Developing-Step-By-Step-React-Creating-Person-Entity.md create mode 100644 docs/en/Developing-Step-By-Step-React-Creating-Phone-Entity.md create mode 100644 docs/en/Developing-Step-By-Step-React-Creating-PhoneBook-Component.md create mode 100644 docs/en/Developing-Step-By-Step-React-Creating-Running-Project.md create mode 100644 docs/en/Developing-Step-By-Step-React-Creating-Testing-Create-Person-Method.md create mode 100644 docs/en/Developing-Step-By-Step-React-Creating-Testing-Creating-Modal-New-Person.md create mode 100644 docs/en/Developing-Step-By-Step-React-Creating-Unit-Tests-for-Person-Application-Service.md create mode 100644 docs/en/Developing-Step-By-Step-React-Database-Migrations-Person-Entity.md create mode 100644 docs/en/Developing-Step-By-Step-React-Deleting-Person.md create mode 100644 docs/en/Developing-Step-By-Step-React-Edit-Mode-People.md create mode 100644 docs/en/Developing-Step-By-Step-React-Edit-Mode-Phone-Numbers.md create mode 100644 docs/en/Developing-Step-By-Step-React-Filtering-People.md create mode 100644 docs/en/Developing-Step-By-Step-React-Introduction.md create mode 100644 docs/en/Developing-Step-By-Step-React-Migrations-Phone-Entity.md create mode 100644 docs/en/Developing-Step-By-Step-React-Multi-Tenancy.md create mode 100644 docs/en/Developing-Step-By-Step-React-Running-Application.md create mode 100644 docs/en/Developing-Step-By-Step-React-Using-GetPeople-Method-from-React.md create mode 100644 docs/en/images/confirmation-delete-person-react.png create mode 100644 docs/en/images/create-tenant-react.png create mode 100644 docs/en/images/edit-person-core-react.png create mode 100644 docs/en/images/localization-files-6.png create mode 100644 docs/en/images/login-as-host-react.png create mode 100644 docs/en/images/phone-book-add-phone-react.png create mode 100644 docs/en/images/phonebook-empty-react.png create mode 100644 docs/en/images/phonebook-people-delete-button-react.png create mode 100644 docs/en/images/phonebook-people-view-react.png create mode 100644 docs/en/images/phonebook-persons-table-initial-data-2.png create mode 100644 docs/en/images/role-permissions-with-phonebook-react.png create mode 100644 docs/en/images/search-people-react.png create mode 100644 docs/en/images/user-permissions-phonebook-react.png diff --git a/docs/en/Developing-Step-By-Step-React-Adding-AddPhone-DeletePhone-Methods.md b/docs/en/Developing-Step-By-Step-React-Adding-AddPhone-DeletePhone-Methods.md new file mode 100644 index 00000000..522b347f --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Adding-AddPhone-DeletePhone-Methods.md @@ -0,0 +1,114 @@ +# Adding AddPhone and DeletePhone Methods + +We are adding two more methods to IPersonAppService interface as shown +below: + +```csharp +Task DeletePhone(EntityDto input); +Task AddPhone(AddPhoneInput input); +``` + +We could create a new, separated IPhoneAppService. It's your choice. +But, we can consider Person as an aggregate and add phone related +methods here. AddPhoneInput DTO is shown below: + +```csharp +public class AddPhoneInput +{ + [Range(1, int.MaxValue)] + public int PersonId { get; set; } + + [Required] + public PhoneType Type { get; set; } + + [Required] + [MaxLength(PhoneConsts.MaxNumberLength)] + public string Number { get; set; } +} +``` + +We used PhoneConsts.MaxNumberLength for Number field. You should create +this consts in **.Core.Shared**. + +```csharp +public class PhoneConsts +{ + public const int MaxNumberLength = 16; +} +``` + +Now, we can implement these methods: + +```csharp +private readonly IRepository _personRepository; +private readonly IRepository _phoneRepository; + +public PersonAppService(IRepository personRepository, IRepository phoneRepository) +{ + _personRepository = personRepository; + _phoneRepository = phoneRepository; +} + +[AbpAuthorize(AppPermissions.Pages_Administration_PhoneBook_DeletePhone)] +public async Task DeletePhone(EntityDto input) +{ + await _phoneRepository.DeleteAsync(input.Id); +} + +[AbpAuthorize(AppPermissions.Pages_Administration_PhoneBook_AddPhone)] +public async Task AddPhone(AddPhoneInput input) +{ + var person = _personRepository.Get(input.PersonId); + await _personRepository.EnsureCollectionLoadedAsync(person, p => p.Phones); + + var phone = ObjectMapper.Map(input); + person.Phones.Add(phone); + + //Get auto increment Id of the new Phone by saving to database + await CurrentUnitOfWork.SaveChangesAsync(); + + return ObjectMapper.Map(phone); +} +``` + +Then we add configuration for AutoMapper into CustomDtoMapper.cs like below: + +```csharp +configuration.CreateMap(); +``` + +A permission should have a unique name. We define permission names as constant strings in **AppPermissions** class. It's a simple constant string: + +```csharp +public const string Pages_Administration_PhoneBook_DeletePhone = "Pages.Administration.DeletePhone"; +public const string Pages_Administration_PhoneBook_AddPhone = "Pages.Administration.AddPhone"; +``` + +Go to **AppAuthorizationProvider** class in the server side and add a new permission as shown below (you can add just below the dashboard permission): + +```csharp +phoneBook.CreateChildPermission(AppPermissions.Pages_Administration_PhoneBook_DeletePhone, L("DeletePhone")); +phoneBook.CreateChildPermission(AppPermissions.Pages_Administration_PhoneBook_AddPhone, L("AddPhone")); +``` + +**DeletePhone** method is simple. It only deletes phone with given id. + +**AddPhone** method **gets** the person from database and add new phone +to person.Phones collection. Then is **save changes**. Saving changes +causes inserting new added phone to database and get its **Id**. +Because, we are returning a DTO that contains newly created phone +informations including Id. So, it should be assigned before mapping in +the last line. (Notice that; normally it's not needed to call +CurrentUnitOfWork.SaveChangesAsync. It's automatically called at the end +of the method. We called it in the method since we need to save entity +and get its Id immediately. See [UOW +document](https://aspnetboilerplate.com/Pages/Documents/Unit-Of-Work#DocAutoSaveChanges) +for more.) + +There may be different approaches for AddPhone method. You can directly +work with a **phone repository** to insert new phone. They all have +different pros and cons. It's your choice. + +## Next + +- [Edit Mode for Phone Numbers](Developing-Step-By-Step-React-Edit-Mode-Phone-Numbers) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Adding-New-Menu-Item.md b/docs/en/Developing-Step-By-Step-React-Adding-New-Menu-Item.md new file mode 100644 index 00000000..aaf05def --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Adding-New-Menu-Item.md @@ -0,0 +1,74 @@ +# Adding a New Menu Item + +Let's begin from UI and create a new page named "**Phone book**". + +## Defining a Menu Item + +Open **src\\lib\\navigation\\appNavigation.tsx** in the client side which defines menu items in the application. Create new menu item as shown below (You can add it right after the dashboard menu item). + +```typescript +export const buildRawMenu = (): AppMenuItem[] => [ + { + id: "PhoneBook", + title: L("PhoneBook"), + icon: "book", + route: "/app/admin/phonebook", + }, +]; +``` + +**PhoneBook** is the menu name , permisson(will set it later), **book** is just an arbitrary icon class (from [this set](http://keenthemes.com/metronic/preview/?page=components/icons/flaticon&demo=default)) and **/phonebook** is the React route. + +If you run the application, you can see a new menu item on the left menu, but it won't work (it redirects to default route) if you click to the menu item, since we haven't defined the React route yet. + +## Localize Menu Item Display Name + +Localization strings are defined in **XML** files in **.Core** project in server side as shown below: + +Localization files + +Open PhoneBookDemo.xml (the **default**, **English** localization dictionary) and add the following line: + +```xml +Phone Book +Phone Book Details +``` + +If we don't define "PhoneBook"s value for other localization dictionaries, default value is shown in all languages. For example, we can define it also for Turkish in `PhoneBookDmo-tr.xml` file: + +```xml +Telefon Rehberi +Telefon Rehberi Detayları +``` + +Note: Any change in server side (including change localization texts) requires recycle of the server application. We suggest to use Ctrl+F5 if you don't need to debugging for a faster startup. In that case, it's +enough to make a re-build to recycle the application. + +## React Route + +React has a powerful URL routing system. ASP.NET Zero has defined routes in a few places (for modularity, see [main menu & layout](Features-React-Main-Menu-Layout.md)). We want to add phone book page to the admin component. So, open **src\\routes\\AppRouter.tsx** in the client side and add a new route just below to the dashboard: + +```typescript +const AppRouter = () => { + return ( + }> + + + }> + }> + {/* Other Routes */} + } /> + + + + + + ); +}; +``` + +We get an error since we haven't defined PhonebookPage yet. Also, we ignored permission for now (will implement later). + +## Next + +- [Creating the PhoneBook Component](Developing-Step-By-Step-React-Creating-PhoneBook-Component) diff --git a/docs/en/Developing-Step-By-Step-React-Adding-Phone-Numbers.md b/docs/en/Developing-Step-By-Step-React-Adding-Phone-Numbers.md new file mode 100644 index 00000000..dd46a00f --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Adding-Phone-Numbers.md @@ -0,0 +1,8 @@ +# Adding Phone Numbers + +Until now, we have not even mentioned phone numbers. It's time to +extend our domain to support **multiple phone numbers** for a person. + +## Next + +- [Creating Phone Entity](Developing-Step-By-Step-React-Creating-Phone-Entity) diff --git a/docs/en/Developing-Step-By-Step-React-Authorization-PhoneBook.md b/docs/en/Developing-Step-By-Step-React-Authorization-PhoneBook.md new file mode 100644 index 00000000..7c6d855c --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Authorization-PhoneBook.md @@ -0,0 +1,155 @@ +# Authorization For Phone Book + +At this point, anyone can enter phone book page since no authorization +defined. We will define two permission: + +- A permission to **enter phone book page**. +- A permission to **create new person** (which is a child permission + of first one, as naturally). + +## Permission for Entering Phone Book Page + +### Define the permission + +A permission should have a unique name. We define permission names as constant strings in **AppPermissions** class. It's a simple constant string: + +```csharp +public const string Pages_Administration_PhoneBook = "Pages.Administration.PhoneBook"; +``` + +Go to **AppAuthorizationProvider** class in the server side and add a new permission as shown below (you can add just below the dashboard permission): + +```csharp +pages.CreateChildPermission(AppPermissions.Pages_Administration_PhoneBook, L("PhoneBook")); +``` + +Unique name of this permission is "**Pages.Administration.PhoneBook**". While you can set any string (as long as it's unique), it's suggested to use that convention. A permission can have a localizable display name: "**PhoneBook**" here. (See "Adding a New Page" section for more about localization, since it's very similar). Lastly, we set this as a **administration** level permission. + +### Add AbpAuthorize attribute + +**AbpAuthorize** attribute can be used as **class level** or **method level** to protect an application service or service method from unauthorized users. Since all server side code is located in `PersonAppService` class, we can declare a class level attribute as shown below: + +```csharp +[AbpAuthorize(AppPermissions.Pages_Administration_PhoneBook)] +public class PersonAppService : PhoneBookAppServiceBase, IPersonAppService +{ + //... +} +``` + +Admin role has every static permission by default but those permissions can be reversible on user interface for this role. Go to Roles page, edit role named "admin", go to Permissions tab and revoke "Phone Book" permission and save. + +Now, let's try to enter Phone Book page by clicking the menu item without required permission: + +Permission error + +We get an error message. This exception is thrown when any method of `PersonAppService` is called without required permission. + +### Hide Unauthorized Menu Item + +While user can not enter to the page, the menu item still there! We should also **hide** the Phone book **menu item**. It's easy, open **src/lib/navigation/appNavigation.tsx** and add change PhoneBook menu definition as shown below: + +```typescript +{ + id: "PhoneBook", + title: L("PhoneBook"), + permissionName: "Pages.Administration.PhoneBook", + icon: "book", + route: "/app/admin/phonebook", +}, +``` + +### Grant permission + +So, how we can enter the page now? Simple, go to **Role Management** page and edit **admin** role: + +Role permissions + +We see that a **new permission** named "**Phone book**" added to **permissions** tab. So, we can check it and save the role. After saving, we need to **refresh** the whole page to refresh permissions for the current user. We could also grant this permission to a specific user. Now, we can enter the Phone book page again. + +## Permission for Create New Person + +While a permission for a page is useful and probably always needed, we may want to define additional permissions to perform some **specific actions** on a page, like creating a new person. + +### Define the Permission + +First permission was defined before. In the second line, we are creating a child permission of first one. Remember to create a constant in `AppPermissions` class: + +```csharp +public const string Pages_Administration_PhoneBook_CreatePerson = "Pages.Administration.PhoneBook.CreatePerson"; +``` + +Defining a permission is similar (in the `AppAuthorizationProvider` class): + +```csharp +var phoneBook = pages.CreateChildPermission(AppPermissions.Pages_Administration_PhoneBook, L("PhoneBook")); +phoneBook.CreateChildPermission(AppPermissions.Pages_Administration_PhoneBook_CreatePerson, L("CreateNewPerson")); +``` + +### Add AbpAuthorize Attribute + +This time, we're declaring **AbpAuthorize** attribute just for **CreatePerson** method: + +```csharp +[AbpAuthorize(AppPermissions.Pages_Administration_PhoneBook_CreatePerson)] +public async Task CreatePerson(CreatePersonInput input) +{ + //... +} +``` + +### Hide Unauthorized Button + +If we run the application and try to create a person, we get an authorization error after clicking the save button. But, it's good to **completely hide Create New Person button** if we don't have the permission. It's very simple: + +Open the **index.tsx** view and add the permission **Pages.Administration.PhoneBook.CreatePerson** condition as shown below: + +```typescript +import { usePermissions } from "@/hooks/usePermissions"; +import { + PersonListDto, + PersonServiceProxy, + useServiceProxy, +} from "@/api/service-proxy-factory"; +import CreatePersonModal from "./CreatePersonModal"; + +const PhoneBookPage: React.FC = () => { + const { isGranted } = usePermissions(); + // Other codes + + return ( + <> + {/* Other Codes */} +
+ {isGranted("Pages.Administration.PhoneBook.CreatePerson") && ( + + )} +
+ {/* Other Codes */} + + ); +}; + +export default PhoneBookPage; +``` + + +In this way, the "Create New Person" button is not rendered in server and user can not see this button. + +### Grant permission + +To see the button again, we can go to role or user manager and grant related permission as shown below: + +Role specific permissions + +As shown above, **Create new person** permission is a child permission of the **Phone book**. Remember to refresh page to get permissions updated. + +## Next + +- [Deleting a Person](Developing-Step-By-Step-React-Deleting-Person) diff --git a/docs/en/Developing-Step-By-Step-React-Changing-GetPeople-Method.md b/docs/en/Developing-Step-By-Step-React-Changing-GetPeople-Method.md new file mode 100644 index 00000000..f517d4a7 --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Changing-GetPeople-Method.md @@ -0,0 +1,64 @@ +# Changing GetPeople Method + +We're changing **PersonAppService.GetPeople** method to **include** +phone numbers of people into return value. + +First, we're changing **PersonListDto** to contain a list of phones: + +```csharp +public class PersonListDto : FullAuditedEntityDto +{ + public string Name { get; set; } + + public string Surname { get; set; } + + public string EmailAddress { get; set; } + + public Collection Phones { get; set; } +} + +public class PhoneInPersonListDto : CreationAuditedEntityDto +{ + public PhoneType Type { get; set; } + + public string Number { get; set; } +} +``` + +Then we add configuration for AutoMapper into CustomDtoMapper.cs like below: + +```csharp +configuration.CreateMap(); +``` + +So, added also a DTO to transfer phone numbers and mapped from Phone +entity. Now, we can change GetPeople method to get Phones from database: + +```csharp +public ListResultDto GetPeople(GetPeopleInput input) +{ + var persons = _personRepository + .GetAll() + .Include(p => p.Phones) + .WhereIf( + !input.Filter.IsNullOrEmpty(), + p => p.Name.Contains(input.Filter) || + p.Surname.Contains(input.Filter) || + p.EmailAddress.Contains(input.Filter) + ) + .OrderBy(p => p.Name) + .ThenBy(p => p.Surname) + .ToList(); + + return new ListResultDto(ObjectMapper.Map>(persons)); +} +``` + +We only added **Include** extension method to the query. Rest of the +codes remains same. Furthermore, it would work without adding this, but +much slower (since it will lazy load phone numbers for every person +separately). + +## Next + +- [Adding AddPhone and DeletePhone Methods](Developing-Step-By-Step-Angular-Adding-AddPhone-DeletePhone-Methods) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Conclusion.md b/docs/en/Developing-Step-By-Step-React-Conclusion.md new file mode 100644 index 00000000..c7fc9e67 --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Conclusion.md @@ -0,0 +1,26 @@ +# Conclusion + +In this document, we built a complete example that covers most parts of +the ASP.NET Zero system. We hope that it will help you to build your own +application. + +We intentionally used different approaches for similar tasks to show you +different styles of development. ASP.NET Zero provides an architecture +but does not restrict you. You can make your own style development. + + + +## Code Generation + +Using new **ASP.NET Zero Power Tools**, you can speed up your development. + +See [documentation](https://aspnetzero.com/Documents/Development-Guide-Rad-Tool) to learn how to use it. + + + +### Source Code + +You should [purchase](https://aspnetzero.com/Pricing) ASP.NET Zero in order to get **source +code**. After purchasing, you can get the sample project from private +Github repository: + diff --git a/docs/en/Developing-Step-By-Step-React-Creating-New-Person.md b/docs/en/Developing-Step-By-Step-React-Creating-New-Person.md new file mode 100644 index 00000000..ec5d1f44 --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Creating-New-Person.md @@ -0,0 +1,76 @@ +# Creating a New Person + +Next step is to create a modal to add a new item to phone book. + +## Add a CreatePerson Method to PersonAppService + +We first define **CreatePerson** method in **IPersonAppService** +interface: + +```csharp +Task CreatePerson(CreatePersonInput input); +``` + +Then we create **CreatePersonInput** DTO that defines parameters of the +method: + +```csharp +public class CreatePersonInput +{ + [Required] + [MaxLength(PersonConsts.MaxNameLength)] + public string Name { get; set; } + + [Required] + [MaxLength(PersonConsts.MaxSurnameLength)] + public string Surname { get; set; } + + [EmailAddress] + [MaxLength(PersonConsts.MaxEmailAddressLength)] + public string EmailAddress { get; set; } +} +``` + +Then we add configuration for AutoMapper into CustomDtoMapper.cs like below: + +```csharp +configuration.CreateMap(); +``` + +**CreatePersonInput** is mapped to **Person** entity (comment out +related line in CustomDtoMapper.cs and we will use mapping below). +All properties are decorated with **data annotation attributes** +to provide automatic +**[validation](https://aspnetboilerplate.com/Pages/Documents/Validating-Data-Transfer-Objects)**. +Notice that we use same consts defined in **PersonConsts.cs** in +**.Core.Shared** project for **MaxLength** properties. After adding this +class, you can remove consts from **Person** entity and use this new +consts class. + +```csharp +public class PersonConsts +{ + public const int MaxNameLength = 32; + public const int MaxSurnameLength = 32; + public const int MaxEmailAddressLength = 255; +} +``` + +Here, the implementation of CreatePerson method: + +```csharp +public async Task CreatePerson(CreatePersonInput input) +{ + var person = ObjectMapper.Map(input); + await _personRepository.InsertAsync(person); +} +``` + +A Person entity is created by mapping given input, then inserted to +database. We used **async/await** pattern here. All methods in ASP.NET +Zero startup project is **async**. It's advised to use async/await +wherever possible. + +## Next + +- [Testing CreatePerson Method](Developing-Step-By-Step-React-Creating-Testing-Create-Person-Method) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Creating-Person-Application-Service.md b/docs/en/Developing-Step-By-Step-React-Creating-Person-Application-Service.md new file mode 100644 index 00000000..8760ed35 --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Creating-Person-Application-Service.md @@ -0,0 +1,102 @@ +# Creating Person Application Service + +An Application Service is used from client (presentation layer) to perform operations (use cases) of the application. + +Application service interface and DTOs are located in **.Application.Shared** project. We are creating an application service to get people from the server. So, we're first creating an **interface** to define the person application service (while this interface is optional, we suggest you to create it): + +```csharp +using Abp.Application.Services; +using Abp.Application.Services.Dto; + +namespace Acme.PhoneBookDemo.PhoneBook; + +public interface IPersonAppService : IApplicationService +{ + ListResultDto GetPeople(GetPeopleInput input); +} +``` + +An application service method gets/returns **DTO**s. **ListResultDto** is a pre-build helper DTO to return a list of another DTO. **GetPeopleInput** is a DTO to pass request parameters to **GetPeople** method. So, GetPeopleIntput and PersonListDto are defined as shown below: + +```csharp +public class GetPeopleInput +{ + public string Filter { get; set; } +} + +public class PersonListDto : FullAuditedEntityDto +{ + public string Name { get; set; } + + public string Surname { get; set; } + + public string EmailAddress { get; set; } +} +``` + +**CustomDtoMapper.cs** is used to create mapping from **Person** to **PersonListDto**. **FullAuditedEntityDto** is inherited to implement audit properties automatically. See [application service](https://aspnetboilerplate.com/Pages/Documents/Application-Services) and [DTO](https://aspnetboilerplate.com/Pages/Documents/Data-Transfer-Objects) documentations for more information. We are adding the following mappings. + +```csharp +... +// PhoneBook (we will comment out other lines when the new DTOs are added) +configuration.CreateMap(); +//configuration.CreateMap(); +//configuration.CreateMap(); +//configuration.CreateMap(); +//configuration.CreateMap(); +``` + +After defining interface, we can implement it as shown below: (in **.Application** project) + +```csharp +using Abp.Application.Services.Dto; +using Abp.Collections.Extensions; +using Abp.Domain.Repositories; +using System.Collections.Generic; +using System.Linq; + +namespace Acme.PhoneBookDemo.PhoneBook; + +public class PersonAppService : PhoneBookDemoAppServiceBase, IPersonAppService +{ + private readonly IRepository _personRepository; + + public PersonAppService(IRepository personRepository) + { + _personRepository = personRepository; + } + + public ListResultDto GetPeople(GetPeopleInput input) + { + var people = _personRepository + .GetAll() + .WhereIf( + !input.Filter.IsNullOrEmpty(), + p => p.Name.Contains(input.Filter) || + p.Surname.Contains(input.Filter) || + p.EmailAddress.Contains(input.Filter) + ) + .OrderBy(p => p.Name) + .ThenBy(p => p.Surname) + .ToList(); + + return new ListResultDto(ObjectMapper.Map>(people)); + } +} +``` + +We're injecting **person repository** (it's automatically created by ABP) and using it to filter and get people from database. + +**WhereIf** is an extension method here (defined in Abp.Linq.Extensions namespace). It performs Where condition, only if filter is not null or empty. **IsNullOrEmpty** is also an extension method (defined in Abp.Extensions namespace). ABP has many similar shortcut extension methods. **ObjectMapper.Map** method automatically converts list of Person entities to list of PersonListDto objects with using configurations in **CustomDtoMapper.cs** in **.Application** project. + +### Connection & Transaction Management + +We don't manually open database connection or start/commit transactions manually. It's automatically done with ABP framework's Unit Of Work system. See [UOW documentation](https://aspnetboilerplate.com/Pages/Documents/Unit-Of-Work) for more. + +### Exception Handling + +We don't handle exceptions manually (using a try-catch block). Because ABP framework automatically handles all exceptions on the web layer and returns appropriate error messages to the client. It then handles errors on the client and shows needed error information to the user. See [exception handling document](https://aspnetboilerplate.com/Pages/Documents/Handling-Exceptions) for more. + +## Next + +- [Using GetPeople Method From React Component](Developing-Step-By-Step-React-Using-GetPeople-Method-from-React) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Creating-Person-Entity.md b/docs/en/Developing-Step-By-Step-React-Creating-Person-Entity.md new file mode 100644 index 00000000..4e1d89d4 --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Creating-Person-Entity.md @@ -0,0 +1,60 @@ +# Creating Person Entity + +We define entities in **.Core** (domain) project (in server side). We +can define a **Person** entity (mapped to **PbPersons** table in +database) to represent a person in phone book as shown below (I created +in a new folder/namespace named PhoneBook): + +```csharp +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using Abp.Domain.Entities.Auditing; + +namespace Acme.PhoneBookDemo.PhoneBook; + +[Table("PbPersons")] +public class Person : FullAuditedEntity +{ + public const int MaxNameLength = 32; + public const int MaxSurnameLength = 32; + public const int MaxEmailAddressLength = 255; + + [Required] + [MaxLength(MaxNameLength)] + public virtual string Name { get; set; } + + [Required] + [MaxLength(MaxSurnameLength)] + public virtual string Surname { get; set; } + + [MaxLength(MaxEmailAddressLength)] + public virtual string EmailAddress { get; set; } +} +``` + +Person's **primary key** type is **int** (as default). It inherits +**FullAuditedEntity** that contains **creation**, **modification** and +**deletion** audit properties. It's also **soft-delete**. When we delete +a person, it's not deleted by database but marked as deleted (see +[entity](https://aspnetboilerplate.com/Pages/Documents/Entities) and +[data +filters](https://aspnetboilerplate.com/Pages/Documents/Data-Filters) +documentations for more information). We created consts for +**MaxLength** properties. This is a good practice since we will use same +values later. + +We add a DbSet property for Person entity to **PhoneBookDemoDbContext** +class defined in **.EntityFrameworkCore** project. + +```csharp +public class PhoneBookDemoDbContext : AbpZeroDbContext +{ + public virtual DbSet Persons { get; set; } + + //...other code +} +``` + +## Next + +- [Database Migrations for Person](Developing-Step-By-Step-React-Database-Migrations-Person-Entity) diff --git a/docs/en/Developing-Step-By-Step-React-Creating-Phone-Entity.md b/docs/en/Developing-Step-By-Step-React-Creating-Phone-Entity.md new file mode 100644 index 00000000..fa0f2fbb --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Creating-Phone-Entity.md @@ -0,0 +1,60 @@ +# Creating Phone Entity + +Let's start by creating a new Entity, **Phone** in **.Core** project: + +```csharp +[Table("PbPhones")] +public class Phone : CreationAuditedEntity +{ + public const int MaxNumberLength = 16; + + [ForeignKey("PersonId")] + public virtual Person Person { get; set; } + public virtual int PersonId { get; set; } + + [Required] + public virtual PhoneType Type { get; set; } + + [Required] + [MaxLength(MaxNumberLength)] + public virtual string Number { get; set; } +} +``` + +Phone entities are stored in **PbPhones** table. Its primary key is +**long** and it inherits creation auditing properties. It has a reference +to **Person** entity which owns the phone number. + +We added a **Phones** collection to the People: + +```csharp +[Table("PbPersons")] +public class Person : FullAuditedEntity +{ + //...other properties + + public virtual ICollection Phones { get; set; } +} +``` + +We have a **PhoneType** enum as shown below: (in **.Core.Shared** +project) + +```csharp +public enum PhoneType : byte +{ + Mobile, + Home, + Business +} +``` + +Lastly, we're also adding a DbSet property for Phone to our DbContext: + +```csharp +public virtual DbSet Phones { get; set; } +``` + +## Next + +- [Database Migration of Phone Entity](Developing-Step-By-Step-React-Migrations-Phone-Entity) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Creating-PhoneBook-Component.md b/docs/en/Developing-Step-By-Step-React-Creating-PhoneBook-Component.md new file mode 100644 index 00000000..a44cb1a6 --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Creating-PhoneBook-Component.md @@ -0,0 +1,44 @@ +# Creating the PhoneBook Component + +Create a **phonebook** folder inside **src/pages/admin** folder and add a new typescript file (**index.tsx**) in the phonebook folder as shown below: + +```typescript +import L from "@/lib/L"; +import React from "react"; +import PageHeader from "../components/common/PageHeader"; +import { useTheme } from "@/hooks/useTheme"; + +const PhoneBookPage: React.FC = () => { + const { containerClass } = useTheme(); + + return ( + <> + +
+
+
+

PHONE BOOK CONTENT COMES HERE!

+
+
+
+ + ); +}; + +export default PhoneBookPage; +``` + +**L** (upper case 'L') function comes from **lib/L.tsx** and used to easily localize texts. + +Now, we can refresh the page to see the new added page: + +Phonebook empty + +Note: React automatically re-compiles and refreshes the page when any changes made to any file in the application. + +## Next + +- [Creating Person Entity](Developing-Step-By-Step-React-Creating-Person-Entity) diff --git a/docs/en/Developing-Step-By-Step-React-Creating-Running-Project.md b/docs/en/Developing-Step-By-Step-React-Creating-Running-Project.md new file mode 100644 index 00000000..ea18e75b --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Creating-Running-Project.md @@ -0,0 +1,27 @@ +## Creating & Running The Project + +We're creating and downloading the solution named "**Acme.PhoneBookDemo**" as described in [Getting Started](Getting-Started-React) document. Please follow the getting started document, run the application, login as default tenant +admin (select `Default` as tenancy name, use `admin` as username and `123qwe` as the password) and see the dashboard below: + +Dashboard + +Logout from the application for now. We will make our application **single-tenant** (we will convert it to multi-tenant later). So, we open **PhoneBookDemoConsts** class in the **Acme.PhoneBookDemo.Core.Shared** project and disable multi-tenancy as shown below: + +```c# +public class PhoneBookDemoConsts +{ + public const string LocalizationSourceName = "PhoneBookDemo"; + + public const string ConnectionStringName = "Default"; + + public const bool MultiTenancyEnabled = false; + + public const int PaymentCacheDurationInMinutes = 30; +} +``` + +**Note:** If you log in before changing **MultiTenancyEnabled** to false, you might be get login error. To overcome this, you should remove cookies. + +## Next + +- [Adding a New Menu Item](Developing-Step-By-Step-React-Adding-New-Menu-Item) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Creating-Testing-Create-Person-Method.md b/docs/en/Developing-Step-By-Step-React-Creating-Testing-Create-Person-Method.md new file mode 100644 index 00000000..6f168080 --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Creating-Testing-Create-Person-Method.md @@ -0,0 +1,71 @@ +# Testing CreatePerson Method + +You can skip this section if you don't interest in **automated +testing**. + +We can create a unit test method to test CreatePerson method as shown +below: + +```csharp +[Fact] +public async Task Should_Create_Person_With_Valid_Arguments() +{ + //Act + await _personAppService.CreatePerson( + new CreatePersonInput + { + Name = "John", + Surname = "Nash", + EmailAddress = "john.nash@abeautifulmind.com" + }); + + //Assert + UsingDbContext( + context => + { + var john = context.Persons.FirstOrDefault(p => p.EmailAddress == "john.nash@abeautifulmind.com"); + john.ShouldNotBe(null); + john.Name.ShouldBe("John"); + }); +} +``` + +Test method also written using **async/await** pattern since calling +method is async. We called CreatePerson method, then checked if given +person is in the database. **UsingDbContext** method is a helper method +of **AppTestBase** class (which we inherited this unit test class from). +It's used to easily get a reference to DbContext and use it directly to +perform database operations. + +This method successfully works since all required fields are supplied. +Let's try to create a test for **invalid arguments**: + +```csharp +[Fact] +public async Task Should_Not_Create_Person_With_Invalid_Arguments() +{ + //Act and Assert + await Assert.ThrowsAsync( + async () => + { + await _personAppService.CreatePerson( + new CreatePersonInput + { + Name = "John" + }); + }); +} +``` + +We did not set **Surname** property of CreatePersonInput despite it being +**required**. So, it throws **AbpValidationException** automatically. +Also, we can not send null to CreatePerson method since validation +system also checks it. This test calls CreatePerson with invalid +arguments and asserts that it throws AbpValidationException. See +[validation +document](https://aspnetboilerplate.com/Pages/Documents/Validating-Data-Transfer-Objects) +for more information. + +## Next + +- [Creating Modal for New Person](Developing-Step-By-Step-React-Creating-Testing-Creating-Modal-New-Person) diff --git a/docs/en/Developing-Step-By-Step-React-Creating-Testing-Creating-Modal-New-Person.md b/docs/en/Developing-Step-By-Step-React-Creating-Testing-Creating-Modal-New-Person.md new file mode 100644 index 00000000..8cad3678 --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Creating-Testing-Creating-Modal-New-Person.md @@ -0,0 +1,365 @@ +# Creating Modal for New Person + +We will create an Ant Design Modal to create a new person. ASP.NET Zero React version uses [Ant Design](https://ant.design/) library to create modals. Final modal will be like below: + +![Create Person Dialog](images/phonebook-create-person-dialog-2.png) + +First of all, we should use **nswag/refresh.bat** to re-generate service-proxies. This will generate the code that is needed to call PersonAppService.**CreatePerson** method from client side. Notice that you should rebuild & run the server side application before re-generating the proxy scripts. + +We are starting from creating a new component, named **CreatePersonModal.tsx** into client side phonebook folder: + +```typescript +import React, { useState, useEffect } from "react"; +import { Modal } from "antd"; +import { useForm } from "react-hook-form"; +import { + PersonServiceProxy, + CreatePersonInput, +} from "@/api/service-proxy-factory"; +import { useServiceProxy } from "@/api/service-proxy-factory"; +import L from "@/lib/L"; + +interface Props { + isVisible: boolean; + onClose: () => void; + onSave: () => void; +} + +type FormValues = { + name: string; + surname: string; + emailAddress?: string; +}; + +const CreatePersonModal: React.FC = ({ isVisible, onClose, onSave }) => { + const { + register, + handleSubmit, + reset, + setFocus, + formState: { errors, isValid }, + } = useForm({ mode: "onChange" }); + const [saving, setSaving] = useState(false); + const personService = useServiceProxy(PersonServiceProxy, []); + + useEffect(() => { + if (isVisible) { + reset({ name: "", surname: "", emailAddress: "" }); + } + }, [isVisible, reset]); + + const onSubmit = async (values: FormValues) => { + setSaving(true); + try { + const input = new CreatePersonInput({ + name: values.name, + surname: values.surname, + emailAddress: values.emailAddress, + }); + await personService.createPerson(input); + abp.notify.success(L("SavedSuccessfully")); + onSave(); + onClose(); + } finally { + setSaving(false); + } + }; + + return ( + { + if (opened) { + setTimeout(() => setFocus("name"), 0); + } + }} + footer={[ + , + , + ]} + > +
+
+ + + {errors.name && ( +
{L("ThisFieldIsRequired")}
+ )} +
+ +
+ + + {errors.surname && ( +
{L("ThisFieldIsRequired")}
+ )} +
+ +
+ + + {errors.emailAddress && ( +
+ {errors.emailAddress.message || L("InvalidEmailAddress")} +
+ )} +
+
+
+ ); +}; + +export default CreatePersonModal; +``` + +Let me explain some parts of this component: + +- It accepts three **props**: `isVisible` to control modal visibility, `onClose` to handle modal close, and `onSave` to notify parent component when person is saved. +- Uses **react-hook-form** for form management with real-time validation (`mode: "onChange"`). +- Uses **useServiceProxy** hook to get an instance of **PersonServiceProxy** to call server side methods. +- Uses **useState** hook for managing the `saving` state during API calls. +- Uses **useEffect** to reset form values when modal becomes visible. +- **Auto-focuses** the name input field when modal opens using `setFocus` from react-hook-form. +- Implements **form validation** with required fields and maxLength constraints. +- Uses **ABP notification** system (`abp.notify.success`) to show success messages. + +Open PhoneBookDemo.xml (the **default**, **English** localization dictionary) and add the following line: + +```xml +Create New Person +``` + +Now we need to integrate this modal into the phonebook page. Update **index.tsx** as shown below: + +```typescript +import L from "@/lib/L"; +import React, { useEffect, useState } from "react"; +import { Table } from "antd"; +import type { ColumnsType } from "antd/es/table"; +import PageHeader from "../components/common/PageHeader"; +import { useTheme } from "@/hooks/useTheme"; +import { + PersonListDto, + PersonServiceProxy, + useServiceProxy, +} from "@/api/service-proxy-factory"; +import CreatePersonModal from "./CreatePersonModal"; + +const PhoneBookPage: React.FC = () => { + const { containerClass } = useTheme(); + const personService = useServiceProxy(PersonServiceProxy); + + const [people, setPeople] = useState([]); + const [loading, setLoading] = useState(false); + const [filter, setFilter] = useState(""); + const [isCreateModalVisible, setIsCreateModalVisible] = + useState(false); + + useEffect(() => { + getPeople(); + }, []); + + const getPeople = async (): Promise => { + setLoading(true); + try { + const result = await personService.getPeople(filter); + setPeople(result.items || []); + } finally { + setLoading(false); + } + }; + + const handleSearch = (e: React.FormEvent) => { + e.preventDefault(); + getPeople(); + }; + + const handleCreatePerson = () => { + setIsCreateModalVisible(true); + }; + + const handleModalClose = () => { + setIsCreateModalVisible(false); + }; + + const handleModalSave = () => { + getPeople(); + }; + + const columns: ColumnsType = [ + { + title: L("Name"), + dataIndex: "name", + key: "name", + sorter: true, + width: 150, + }, + { + title: L("Surname"), + dataIndex: "surname", + key: "surname", + sorter: true, + width: 150, + }, + { + title: L("EmailAddress"), + dataIndex: "emailAddress", + key: "emailAddress", + sorter: true, + width: 250, + }, + ]; + + return ( + <> + +
+
+
+
+
+ +
+
+
+
+
+
+
+
+ setFilter(e.target.value)} + /> + +
+
+
+
+
+ + record.id!} + size="small" + bordered + columns={columns} + loading={loading} + dataSource={people} + pagination={false} + scroll={{ x: true }} + /> + + + + + + + + ); +}; + +export default PhoneBookPage; +``` + +Key changes made in the phonebook page: + +- **Imported** the `CreatePersonModal` component +- Added **state** for modal visibility using `useState` hook: `isCreateModalVisible` +- Created handler functions: + - `handleCreatePerson` - opens the modal + - `handleModalClose` - closes the modal + - `handleModalSave` - refreshes the people list after successful save +- Added a **"Create New Person"** button in the card header that triggers `handleCreatePerson` +- Placed the **CreatePersonModal** component at the bottom of the JSX, passing the required props + +The modal is now fully integrated! When you click the "Create New Person" button, the modal will open. After successfully creating a person, the modal closes and the people list automatically refreshes to show the new entry. + +## Next + +- [Authorization For Phone Book](Developing-Step-By-Step-React-Authorization-PhoneBook) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Creating-Unit-Tests-for-Person-Application-Service.md b/docs/en/Developing-Step-By-Step-React-Creating-Unit-Tests-for-Person-Application-Service.md new file mode 100644 index 00000000..5bb5b92e --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Creating-Unit-Tests-for-Person-Application-Service.md @@ -0,0 +1,106 @@ +# Creating Unit Tests for Person Application Service + +You can skip this section if you are not interested in **automated +testing**. + +By writing unit test, we can test **PersonAppService.GetPeople** method +without creating a user interface. We write unit test in .**Tests** +project in the solution. + +## Multi Tenancy In Tests + +Since we disabled multitenancy, we should disable it for unit tests too. +Open **PhoneBookDemoConsts** class in the Acme.PhoneBook.Core project +and set "**MultiTenancyEnabled**" to false. After a rebuild and run unit +tests, you will see that some tests are skipped (those are related to +multitenancy). + +Let's create first test to verify getting people without any filter: + +```csharp +using Acme.PhoneBookDemo.People; +using Acme.PhoneBookDemo.People.Dtos; +using Shouldly; +using Xunit; + +namespace Acme.PhoneBookDemo.Tests.People; + +public class PersonAppService_Tests : AppTestBase + { + private readonly IPersonAppService _personAppService; + + public PersonAppService_Tests() + { + _personAppService = Resolve(); + } + + [Fact] + public void Should_Get_All_People_Without_Any_Filter() + { + //Act + var persons = _personAppService.GetPeople(new GetPeopleInput()); + + //Assert + persons.Items.Count.ShouldBe(2); + } + } +``` + +We derived test class from **AppTestBase**. AppTestBase class +initializes all system, creates an in-memory fake database, seeds +initial data (that we created before) to database and logins to +application as admin. So, this is actually an **integration test** since +it tests all server-side code from entity framework mapping to +application services, validation and authorization. + +In constructor, we get (resolve) an **IPersonAppService** from +**dependency injection** container. It creates the **PersonAppService** +class with all dependencies. Then we can use it in test methods. + +Since we're using [xUnit](https://xunit.net/), we add **Fact** +attribute to each test method. In the test method, we called +**GetPeople** method and checked if there are **two people** in the +returned list as we know that there were 2 people in **initial** +database. + +Let's run the **all unit tests** in Test Explorer and see if it works: + +xUnit unit test success + +As you see, it worked **successfully**. Now, we know that +PersonAppService works properly without any filter. Let's add a new unit +test to get filtered people: + +```csharp +[Fact] +public void Should_Get_People_With_Filter() +{ + //Act + var persons = _personAppService.GetPeople( + new GetPeopleInput + { + Filter = "adams" + }); + + //Assert + persons.Items.Count.ShouldBe(1); + persons.Items[0].Name.ShouldBe("Douglas"); + persons.Items[0].Surname.ShouldBe("Adams"); +} +``` + +Again, since we know initial database, we can check returned results +easily. Here, initial test data is important. When we change initial +data, our test may fail even if our services are correct. So, it's +better to write unit tests independent of initial data as much as +possible. We could check incoming data to see if every people contains +"adams" in his/her name, surname or email. Thus, if we add new people to +initial data, our tests remain working. + +There are many techniques on unit testing, I kept it simple here. But +ASP.NET Zero template makes very easy to write unit and integration +tests by base classes and pre-build test codes.  + +## Next + +- [Creating Person Application Service](Developing-Step-By-Step-React-Creating-Person-Application-Service) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Database-Migrations-Person-Entity.md b/docs/en/Developing-Step-By-Step-React-Database-Migrations-Person-Entity.md new file mode 100644 index 00000000..0b3805bc --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Database-Migrations-Person-Entity.md @@ -0,0 +1,138 @@ +# Database Migrations for Person + +We use **EntityFramework Code-First migrations** to migrate database +schema. Since we added **Person entity**, our DbContext model is +changed. So, we should create a **new migration** to create the new +table in the database. + +Open **Package Manager Console**, run the **Add-Migration +"Added\_Persons\_Table"** command as shown below: + +Entity Framework Code First Migration + +This command will add a **migration class** named +"**Added\_Persons\_Table**" as shown below: + +```csharp +public partial class Added_Persons_Table : Migration +{ + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "PbPersons", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false), + Surname = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false), + EmailAddress = table.Column(type: "nvarchar(255)", maxLength: 255, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorUserId = table.Column(type: "bigint", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierUserId = table.Column(type: "bigint", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false), + DeleterUserId = table.Column(type: "bigint", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_PbPersons", x => x.Id); + }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "PbPersons"); + } +} +``` + +We don't have to know so much about format and rules of this file. But, +it's suggested to have a basic understanding of migrations. In the same +Package Manager Console, we write **Update-Database** command in order +to apply the new migration to database. After updating, we can see that +**PbPersons table** is added to database. + +Phonebook tables + +But this new table is empty. In ASP.NET Zero, there are some classes to +fill initial data for users and settings: + +Seed folders + +So, we can add a separated class to fill some people to database as +shown below: + +```csharp +namespace Acme.PhoneBookDemo.Migrations.Seed.Host; + +public class InitialPeopleCreator +{ + private readonly PhoneBookDemoDbContext _context; + + public InitialPeopleCreator(PhoneBookDemoDbContext context) + { + _context = context; + } + + public void Create() + { + var douglas = _context.Persons.FirstOrDefault(p => p.EmailAddress == "douglas.adams@fortytwo.com"); + if (douglas == null) + { + _context.Persons.Add( + new Person + { + Name = "Douglas", + Surname = "Adams", + EmailAddress = "douglas.adams@fortytwo.com" + }); + } + + var asimov = _context.Persons.FirstOrDefault(p => p.EmailAddress == "isaac.asimov@foundation.org"); + if (asimov == null) + { + _context.Persons.Add( + new Person + { + Name = "Isaac", + Surname = "Asimov", + EmailAddress = "isaac.asimov@foundation.org" + }); + } + } +} +``` + +These type of default data is good since we can also use these data in +**unit tests**. Surely, we should be careful about seed data since this +code will always be executed in each **PostInitialize** of your +PhoneBookEntityFrameworkCoreModule. This class (InitialPeopleCreator) is +created and called in **InitialHostDbBuilder** class. This is not so +important, just for a good code organization (see source codes). + +```csharp +public class InitialHostDbBuilder +{ + //existing codes... + + public void Create() + { + //existing code... + new InitialPeopleCreator(_context).Create(); + + _context.SaveChanges(); + } +} +``` + +We run our project again, it runs seed and adds two people to PbPersons +table: + +Persons initial data + +## Next + +- [Creating Unit Tests for Person Application Service](Developing-Step-By-Step-React-Creating-Unit-Tests-for-Person-Application-Service) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Deleting-Person.md b/docs/en/Developing-Step-By-Step-React-Deleting-Person.md new file mode 100644 index 00000000..25bbbdf4 --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Deleting-Person.md @@ -0,0 +1,233 @@ +# Deleting a Person + +Let's add a delete button in people list as shown below: + +![Delete person](images/phonebook-people-delete-button-react.png) + +We're starting from UI in this case. + +## View + +We're changing **index.tsx** to add a delete button in the Actions column. First, we need to add the Ant Design `App` hook for modal confirmations and update the columns definition: + +```typescript +import L from "@/lib/L"; +import React, { useEffect, useState } from "react"; +import { Table, App } from "antd"; +import type { ColumnsType } from "antd/es/table"; +import PageHeader from "../components/common/PageHeader"; +import { useTheme } from "@/hooks/useTheme"; +import { usePermissions } from "@/hooks/usePermissions"; +import { + PersonListDto, + PersonServiceProxy, + useServiceProxy, +} from "@/api/service-proxy-factory"; +import CreatePersonModal from "./CreatePersonModal"; + +const PhoneBookPage: React.FC = () => { + const { modal } = App.useApp(); // Add this line for modal.confirm + const personService = useServiceProxy(PersonServiceProxy); + + // Other Code + + const deletePerson = (person: PersonListDto) => { + modal.confirm({ + title: L("AreYouSure"), + content: L("PersonDeleteWarningMessage", person.name), + okText: L("Yes"), + cancelText: L("Cancel"), + onOk: async () => { + await personService.deletePerson(person.id); + abp.notify.success(L("SuccessfullyDeleted")); + setPeople((prevPeople) => prevPeople.filter((p) => p.id !== person.id)); + }, + }); + }; + + const columns: ColumnsType = [ + { + title: L("Name"), + dataIndex: "name", + key: "name", + sorter: true, + width: 150, + }, + { + title: L("Surname"), + dataIndex: "surname", + key: "surname", + sorter: true, + width: 150, + }, + { + title: L("EmailAddress"), + dataIndex: "emailAddress", + key: "emailAddress", + sorter: true, + width: 250, + }, + { + title: L("Actions"), + key: "actions", + width: 150, + render: (_text: string, record: PersonListDto) => ( + <> + {isGranted("Pages.Administration.PhoneBook.DeletePerson") && ( + + )} + + ), + }, + ]; + + // Rest of The Component +}; + +export default PhoneBookPage; +``` + +We simply added an Actions column with a delete button that calls **deletePerson** method when clicked. The button is conditionally rendered based on the delete permission. + +## Style + +React components in this project use inline styles or CSS classes from Bootstrap and Metronic theme. No separate CSS file is needed for this feature. + +If you need custom styles, you can create a **styles.css** file in the phonebook folder: + +```css +/* Custom styles for phonebook */ +.phonebook-actions { + display: flex; + gap: 8px; +} +``` + +And import it in your component: + +```typescript +import "./styles.css"; +``` + +## Application Service + +Let's leave the client side and add a DeletePerson method to the server side. We are adding it to the service interface, **IPersonAppService**: + +```csharp +Task DeletePerson(EntityDto input); +``` + +**EntityDto** is a shortcut of ABP if we only get an id value. Implementation (in **PersonAppService**) is very simple: + +```csharp +[AbpAuthorize(AppPermissions.Pages_Administration_PhoneBook_DeletePerson)] +public async Task DeletePerson(EntityDto input) +{ + await _personRepository.DeleteAsync(input.Id); +} +``` + +### Define the Delete Permission + +In this example, we are creating a child permission under an existing phoneBook permission. This allows for more granular control, such as managing delete operations separately. + +A permission should have a unique name. We define permission names as constant strings in **AppPermissions** class. It's a simple constant string: + +```csharp +public const string Pages_Administration_PhoneBook_DeletePerson = "Pages.Administration.PhoneBook.DeletePerson"; +``` + +To define delete permission, use the `AppAuthorizationProvider` class as shown below: + +```csharp +phoneBook.CreateChildPermission(AppPermissions.Pages_Administration_PhoneBook_DeletePerson, L("DeletePerson")); +``` + +## Service Proxy Generation + +Since we changed server side services, we should re-generate the client side service proxies via NSwag. Make server side running and use **refresh.bat** (located in `nswag/` folder) as we did before. + +```bash +cd nswag +refresh.bat +``` + +This will update the `src/api/generated/service-proxies.ts` file with the new `deletePerson` method. + +## React Component Implementation + +The key parts of the React implementation: + +### Using Ant Design Modal for Confirmation + +```typescript +const { modal } = App.useApp(); +``` + +We use Ant Design's `App.useApp()` hook to access the modal context, which provides a cleaner way to show confirmation dialogs. + +### Delete Function + +```typescript +const deletePerson = (person: PersonListDto) => { + modal.confirm({ + title: L("AreYouSure"), + content: L("PersonDeleteWarningMessage", person.name), + okText: L("Yes"), + cancelText: L("Cancel"), + onOk: async () => { + try { + await personService.deletePerson(person.id); + abp.notify.success(L("SuccessfullyDeleted")); + setPeople((prevPeople) => prevPeople.filter((p) => p.id !== person.id)); + } catch (error) { + console.error("Error deleting person:", error); + } + }, + }); +}; +``` + +This function: +- Shows a confirmation modal with the person's name +- If confirmed, calls the backend `deletePerson` method +- On success, shows a notification and removes the person from the state +- Handles errors gracefully + +### State Update + +We use React's functional state update: + +```typescript +setPeople((prevPeople) => prevPeople.filter((p) => p.id !== person.id)); +``` + +This ensures the state update is based on the latest state value. + +## Localization + +Open **PhoneBookDemo.xml** (the **default**, **English** localization dictionary) in your server-side project and add the following line: + +```xml +Are you sure you want to delete {0}? This action cannot be undone. +``` + +The `{0}` placeholder will be replaced with the person's name when calling `L("PersonDeleteWarningMessage", person.name)`. + +## Confirmation Dialog + +When you click the delete button, it shows a confirmation message: + +![Confirmation message](images/confirmation-delete-person-react.png) + +If you click OK, it calls the **deletePerson** method of **PersonServiceProxy** and shows a success notification. The person is also removed from the table immediately without requiring a page refresh. + +## Next + +- [Filtering People](Developing-Step-By-Step-React-Filtering-People) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Edit-Mode-People.md b/docs/en/Developing-Step-By-Step-React-Edit-Mode-People.md new file mode 100644 index 00000000..f181782e --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Edit-Mode-People.md @@ -0,0 +1,371 @@ +# Edit Mode For People + +Now we want to edit name, surname and e-mail of people: + +Edit Person + +First of all, we create the necessary DTOs to transfer people's id, name, +surname and e-mail. We can optionally configure auto-mapper, but this is not necessary because all properties match automatically. Then we create the functions in PersonAppService for +editing people: + +```csharp +Task GetPersonForEdit(EntityDto input); +Task EditPerson(EditPersonInput input); +``` + +```csharp +[AbpAuthorize(AppPermissions.Pages_Administration_PhoneBook_EditPerson)] +public async Task GetPersonForEdit( EntityDto input) +{ + var person = await _personRepository.GetAsync(input.Id); + return ObjectMapper.Map(person); +} + +[AbpAuthorize(AppPermissions.Pages_Administration_PhoneBook_EditPerson)] +public async Task EditPerson(EditPersonInput input) +{ + var person = await _personRepository.FirstOrDefaultAsync(input.Id); + ObjectMapper.Map(input, person); +} + +public class GetPersonForEditOutput : EntityDto +{ + public string Name { get; set; } + public string Surname { get; set; } + public string EmailAddress { get; set; } +} + +public class EditPersonInput : EntityDto +{ + public string Name { get; set; } + public string Surname { get; set; } + public string EmailAddress { get; set; } +} +``` + +The previous documents showed how to add `Pages_Administration_PhoneBook_EditPerson`. You can add it in the same way. + +Then we add configuration for AutoMapper into `CustomDtoMapper.cs` like below: + +```csharp +configuration.CreateMap(); +configuration.CreateMap().ReverseMap(); +``` + +## Edit Modal Implementation + +### `EditPersonModal.tsx` + +Create the edit person modal component: + +```typescript +import React, { useEffect, useState } from "react"; +import { Modal, Spin } from "antd"; +import { useForm } from "react-hook-form"; +import L from "@/lib/L"; +import { + EditPersonInput, + GetPersonForEditOutput, + PersonServiceProxy, + useServiceProxy, +} from "@/api/service-proxy-factory"; + +interface EditPersonModalProps { + personId: number | null; + isVisible: boolean; + onClose: () => void; + onSave: () => void; +} + +interface EditPersonFormData { + name: string; + surname: string; + emailAddress: string; +} + +const EditPersonModal: React.FC = ({ + personId, + isVisible, + onClose, + onSave, +}) => { + const personService = useServiceProxy(PersonServiceProxy); + const [loading, setLoading] = useState(false); + const [saving, setSaving] = useState(false); + + const { + register, + handleSubmit, + formState: { errors, isValid }, + reset, + setValue, + setFocus, + } = useForm({ + mode: "onChange", + }); + + useEffect(() => { + if (isVisible && personId) { + loadPerson(); + } + }, [isVisible, personId]); + + const loadPerson = async () => { + if (!personId) return; + + setLoading(true); + try { + const result = await personService.getPersonForEdit(personId); + setValue("name", result.name || ""); + setValue("surname", result.surname || ""); + setValue("emailAddress", result.emailAddress || ""); + setTimeout(() => setFocus("name"), 100); + } catch (error) { + console.error("Error loading person:", error); + } finally { + setLoading(false); + } + }; + + const onSubmit = async (data: EditPersonFormData) => { + if (!personId) return; + + setSaving(true); + try { + const input = new EditPersonInput({ + id: personId, + name: data.name, + surname: data.surname, + emailAddress: data.emailAddress, + }); + + await personService.editPerson(input); + abp.notify.success(L("SavedSuccessfully")); + handleClose(); + onSave(); + } catch (error) { + console.error("Error editing person:", error); + } finally { + setSaving(false); + } + }; + + const handleClose = () => { + reset(); + onClose(); + }; + + return ( + + {L("Cancel")} + , + , + ]} + destroyOnClose + > + {loading ? ( +
+ +
+ ) : ( +
+
+ + + {errors.name && ( +
+ {errors.name.message} +
+ )} +
+ +
+ + + {errors.surname && ( +
+ {errors.surname.message} +
+ )} +
+ +
+ + + {errors.emailAddress && ( +
+ {errors.emailAddress.message} +
+ )} +
+ + )} +
+ ); +}; + +export default EditPersonModal; +``` + +### `index.tsx` Integration + +Update the phonebook `index.tsx` file to include edit functionality: + +#### Import EditPersonModal + +```typescript +import EditPersonModal from "./EditPersonModal"; +``` + +#### Add State for Edit Modal + +```typescript +const [isEditModalVisible, setIsEditModalVisible] = useState(false); +const [editingPersonId, setEditingPersonId] = useState(null); +``` + +#### Add Edit Person Handlers + +```typescript +const handleEditPerson = (personId: number) => { + setEditingPersonId(personId); + setIsEditModalVisible(true); +}; + +const handleEditModalClose = () => { + setIsEditModalVisible(false); + setEditingPersonId(null); +}; + +const handleEditModalSave = () => { + getPeople(); +}; +``` + +#### Add Edit Button to Actions Column + +```typescript +{ + title: L("Actions"), + key: "actions", + width: 150, + render: (_text: string, record: PersonListDto) => ( + <> + {isGranted("Pages.Administration.PhoneBook.EditPerson") && ( + + )} + {isGranted("Pages.Administration.PhoneBook.DeletePerson") && ( + + )} + {/* ... phone button ... */} + + ), +} +``` + +#### Add EditPersonModal Component + +```typescript + +``` + +## Localization + +Add these localization strings to your PhoneBookDemo.xml file: + +```xml +Edit Person +Field should not exceed max length: {0} +``` + +## Next + +- [Multi Tenancy](Developing-Step-By-Step-React-Multi-Tenancy) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Edit-Mode-Phone-Numbers.md b/docs/en/Developing-Step-By-Step-React-Edit-Mode-Phone-Numbers.md new file mode 100644 index 00000000..2c66d610 --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Edit-Mode-Phone-Numbers.md @@ -0,0 +1,234 @@ +# Edit Mode For Phone Numbers + +Final UI is shown below: + +Phone book edit mode + +When we click the **phone icon** for a person, its row is expanded and all phone numbers are shown. Then we can delete any phone by clicking the delete icon. We can add a new phone from the inputs at the bottom of the expanded area. + +## PhoneBook Component + +The main changes are in the `index.tsx` file. We added expandable rows to the Ant Design Table component to show phone numbers for each person. + +### State Management + +```typescript +const [expandedRowKeys, setExpandedRowKeys] = useState([]); +const [newPhoneNumber, setNewPhoneNumber] = useState(""); +const [newPhoneType, setNewPhoneType] = useState(PhoneType.Mobile); +``` + +### Actions Column + +The Actions column includes the phone button that toggles row expansion: + +```typescript +{ + title: L("Actions"), + key: "actions", + width: 150, + render: (_text: string, record: PersonListDto) => ( + <> + {isGranted("Pages.Administration.PhoneBook.DeletePerson") && ( + + )} + + + ), +} +``` + +### Expanded Row Render + +The expanded row displays the phone list and add phone form: + +```typescript +const expandedRowRender = (record: PersonListDto) => { + return ( +
+
+ {L("PhoneNumbers")}: +
    + {record.phones && record.phones.length > 0 ? ( + record.phones.map((phone: PhoneInPersonListDto) => ( +
  • + + {getPhoneTypeLabel(phone.type!)} + + {phone.number} + +
  • + )) + ) : ( +
  • {L("NoPhoneNumbersFound")}
  • + )} +
+
+ +
+
+ setNewPhoneNumber(e.target.value)} + placeholder={L("PhoneNumber")!} + className="form-control" + /> +
+
+ +
+
+ +
+
+
+ ); +}; +``` + +### Table Configuration + +The Table component is configured with the expandable prop: + +```typescript +
record.id!} + size="small" + bordered + columns={columns} + loading={loading} + dataSource={people} + pagination={false} + scroll={{ x: true }} + expandable={{ + expandedRowKeys: expandedRowKeys, + expandedRowRender: expandedRowRender, + showExpandColumn: false, + onExpand: (expanded, record) => { + const keys = expanded + ? [...expandedRowKeys, record.id!] + : expandedRowKeys.filter((k) => k !== record.id); + setExpandedRowKeys(keys); + }, + }} +/> +``` + +### Phone Management Functions + +Functions to add and delete phone numbers: + +```typescript +const addPhone = async (personId: number) => { + if (!newPhoneNumber.trim()) { + abp.notify.warn(L("PhoneNumberRequired")); + return; + } + + const input = new AddPhoneInput({ + personId: personId, + number: newPhoneNumber, + type: newPhoneType, + }); + await personService.addPhone(input); + abp.notify.success(L("PhoneSuccessfullyAdded")); + setNewPhoneNumber(""); + setNewPhoneType(PhoneType.Mobile); + setExpandedRowKeys([]); + getPeople(); +}; + +const deletePhone = (phoneId: number, personId: number) => { + modal.confirm({ + title: L("AreYouSure"), + content: L("PhoneDeleteWarningMessage"), + okText: L("Yes"), + cancelText: L("Cancel"), + onOk: async () => { + await personService.deletePhone(phoneId); + abp.notify.success(L("SuccessfullyDeleted")); + setPeople((prevPeople) => + prevPeople.map((p) => { + if (p.id === personId && p.phones) { + p.phones = p.phones.filter((phone) => phone.id !== phoneId); + } + return p; + }) + ); + }, + }); +}; + +const getPhoneTypeLabel = (type: PhoneType): string => { + switch (type) { + case PhoneType.Mobile: + return L("PhoneType_Mobile"); + case PhoneType.Home: + return L("PhoneType_Home"); + case PhoneType.Business: + return L("PhoneType_Business"); + default: + return ""; + } +}; +``` + + +## Localization + +Add these localization strings to your PhoneBookDemo.xml file: + +```xml +Add Phone +Phone Numbers +This person has no phone numbers. +Are you sure you want to delete this phone number? +Phone number successfully added +Phone number is required +Mobile +Home +Business +``` + + +## Next + +- [Edit Mode For People](Developing-Step-By-Step-React-Edit-Mode-People) diff --git a/docs/en/Developing-Step-By-Step-React-Filtering-People.md b/docs/en/Developing-Step-By-Step-React-Filtering-People.md new file mode 100644 index 00000000..76bf8dcc --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Filtering-People.md @@ -0,0 +1,63 @@ +# Filtering People + +Now, we will implement **search** functionality of **GetPeople** method. UI is shown below: + +![Searching people](images/search-people-react.png) + +First, add filter state to manage the search input: + +```typescript +const [filter, setFilter] = useState(""); +``` + +Then, update getPeople method to use the filter parameter: + +```typescript +const getPeople = async (): Promise => { + setLoading(true); + try { + const result = await personService.getPeople(filter); + setPeople(result.items || []); + } finally { + setLoading(false); + } +}; +``` + +Finally, add search form with input and submit handler: + +```typescript +const handleSearch = (e: React.FormEvent) => { + e.preventDefault(); + getPeople(); +}; + +
+
+
+
+
+ setFilter(e.target.value)} + /> + +
+
+
+
+ +``` + +Since we have already defined and used the filter property and the server-side implementation is ready, this code immediately works! + +## Next + +- [Adding Phone Numbers](Developing-Step-By-Step-React-Adding-Phone-Numbers) diff --git a/docs/en/Developing-Step-By-Step-React-Introduction.md b/docs/en/Developing-Step-By-Step-React-Introduction.md new file mode 100644 index 00000000..d1fb796d --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Introduction.md @@ -0,0 +1,14 @@ +# Development with ASP.NET Zero & React + +The document is a step-by-step guide to develop a sample application with ASP.NET Zero (ASP.NET Core & React version). + +## Introduction + +In this guide, we will walk through the creation of a **Phonebook Application** using ASP.NET Zero (ASP.NET Core & React version) step by step. By the end, you'll have a fully functional, multi-tenant, localized, authorized, configurable, and testable application. + +Throughout the process, we'll focus on simplifying each development stage, making it easy and efficient to build, so you can develop powerful applications with minimal effort. + + +## Next + +- [Creating & Running the Project](Developing-Step-By-Step-React-Creating-Running-Project) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Migrations-Phone-Entity.md b/docs/en/Developing-Step-By-Step-React-Migrations-Phone-Entity.md new file mode 100644 index 00000000..677292f5 --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Migrations-Phone-Entity.md @@ -0,0 +1,112 @@ +# Database Migration of Phone Entity + +Our entity model has changed, so we need to add a new migration. Run +this command in the .EntityFramework project's directory: + +Entity Framework Migration + +This will create a new code based migration file to create **PbPhones** +table: + +```csharp +public partial class Added_Phone : Migration +{ + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "PbPhones", + columns: table => new + { + Id = table.Column(type: "bigint", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + PersonId = table.Column(type: "int", nullable: false), + Type = table.Column(type: "tinyint", nullable: false), + Number = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: false), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorUserId = table.Column(type: "bigint", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_PbPhones", x => x.Id); + table.ForeignKey( + name: "FK_PbPhones_PbPersons_PersonId", + column: x => x.PersonId, + principalTable: "PbPersons", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_PbPhones_PersonId", + table: "PbPhones", + column: "PersonId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "PbPhones"); + } +} +``` + +Before updating database, we can go to database +**InitialPeopleCreator**, rename it to **InitialPeopleAndPhoneCreator** +and add example **phone numbers** for example people (We renamed +InitialPeopleCreator.cs to InitialPeopleAndPhoneCreator.cs): + +```csharp +public class InitialPeopleAndPhoneCreator +{ + //... + + public void Create() + { + var douglas = _context.Persons.FirstOrDefault(p => p.EmailAddress == "douglas.adams@fortytwo.com"); + if (douglas == null) + { + _context.Persons.Add( + new Person + { + Name = "Douglas", + Surname = "Adams", + EmailAddress = "douglas.adams@fortytwo.com", + Phones = new List + { + new Phone {Type = PhoneType.Home, Number = "1112242"}, + new Phone {Type = PhoneType.Mobile, Number = "2223342"} + } + }); + } + + var asimov = _context.Persons.FirstOrDefault(p => p.EmailAddress == "isaac.asimov@foundation.org"); + if (asimov == null) + { + _context.Persons.Add( + new Person + { + Name = "Isaac", + Surname = "Asimov", + EmailAddress = "isaac.asimov@foundation.org", + Phones = new List + { + new Phone {Type = PhoneType.Home, Number = "8889977"} + } + }); + } + } +} +``` + +We added two phone numbers to Douglas, one phone number to Isaac. But if +we run our application now, phones are not inserted since this seed code +checks if person exists, and does not insert if it already exists. +Since we haven't deployed yet, we can delete database +(or remove entries from people table) and re-create it. + +Now, we are running our application to re-create database and seed it. +You can check database to see **PbPhones** table and rows. + +## Next + +- [Changing GetPeople Method](Developing-Step-By-Step-Angular-Changing-GetPeople-Method) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Multi-Tenancy.md b/docs/en/Developing-Step-By-Step-React-Multi-Tenancy.md new file mode 100644 index 00000000..2eea9aca --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Multi-Tenancy.md @@ -0,0 +1,68 @@ +# Multi Tenancy + +We have built a fully functional application until here. Now, we will +see how to convert it to a multi-tenant application easily. Logout from +the application before any change. + +## Enable Multi Tenancy + +We disabled multi-tenancy at the beginning of this document. Now, +re-enabling it in **PhoneBookDemoConsts** class: + +```csharp +public const bool MultiTenancyEnabled = true; +``` + +## Make Entities Multi Tenant + +In a multi-tenant application, a tenant's entities should be isolated by +other tenants. For this example project, every tenant should have own +phone book with isolated people and phone numbers. + +When we implement IMustHaveTenant interface, ABP automatically [filters +data](https://aspnetboilerplate.com/Pages/Documents/Data-Filters) based +on current Tenant, while retrieving entities from database. So, we +should declare that Person entity must have a tenant using +**IMustHaveTenant** interface: + +```csharp +public class Person : FullAuditedEntity, IMustHaveTenant +{ + public virtual int TenantId { get; set; } + + //...other properties +} +``` + +We may want to add IMustHaveTenant interface to also Phone entity. This +is needed if we directly use phone repository to get phones. In this +sample project, it's not needed. + +Since entities have changed, we should create a new database migration: + +``` +Add-Migration "Implemented_IMustHaveTenant_For_Person" +``` + +This command creates a new code-first database migration. The migration +class adds an annotation this is needed for automatic filtering. We +don't have to know what it is since it's done automatically. It also +adds a **TenantId** column to PbPersons table as shown below: + +```csharp +migrationBuilder.AddColumn(name: "TenantId",table: "PbPersons",nullable: false,defaultValue: 1); +``` + +I added **defaultValue as 1** to AddColumn options. Thus, current people +are automatically assigned to **default tenant** (default tenant's id is +always 1). + +Now, we can update the database again: + +``` +Update-Database +``` + +## Next + +- [Running the Application](Developing-Step-By-Step-React-Running-Application) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Running-Application.md b/docs/en/Developing-Step-By-Step-React-Running-Application.md new file mode 100644 index 00000000..b01bfc09 --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Running-Application.md @@ -0,0 +1,34 @@ +# Running the Application + +**It's finished**! We can test the application. Run the project, +**login** as the **host admin** (click Change link and clear tenancy +name) shown below: + +Login as host + +After login, we see the **tenant list** which only contains a +**default** tenant. We can create a new tenant: + +Creating tenant + +I created a new tenant named **trio**. Now, tenant list has two tenants: + +Tenant management page + + I can **logout** and login as **trio** tenant **admin** (Change current +tenant to trio): + +Login as tenant admin + +After login, we see that phone book is empty: + +Empty phonebook of new tenant + +It's empty because trio tenant has a completely isolated people list. +You can add people here, logout and login as different tenants (you can +login as default tenant for example). You will see that each tenant has +an isolated phone book and can not see other's people. + +## Next + +- [Conclusion](Developing-Step-By-Step-React-Conclusion) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Using-GetPeople-Method-from-React.md b/docs/en/Developing-Step-By-Step-React-Using-GetPeople-Method-from-React.md new file mode 100644 index 00000000..9fc62724 --- /dev/null +++ b/docs/en/Developing-Step-By-Step-React-Using-GetPeople-Method-from-React.md @@ -0,0 +1,157 @@ +# Using GetPeople Method From React Component + +Now, we can switch to the client side and use GetPeople method to show a +list of people on the UI. + +## Service Proxy Generation + +First, run (prefer Ctrl+F5 to be faster) the server side application +(.Web.Host project). Then run **nswag/refresh.bat** file on the client +side to re-generate service proxy classes (they are used to call server +side service methods). + + +## PhoneBookPage Typescript File + +Change **index.tsx** as like below: + +```typescript +import L from "@/lib/L"; +import React, { useEffect, useState } from "react"; +import { Table } from "antd"; +import type { ColumnsType } from "antd/es/table"; +import PageHeader from "../components/common/PageHeader"; +import { useTheme } from "@/hooks/useTheme"; +import { + PersonListDto, + PersonServiceProxy, + useServiceProxy, +} from "@/api/service-proxy-factory"; + +const PhoneBookPage: React.FC = () => { + const { containerClass } = useTheme(); + const personService = useServiceProxy(PersonServiceProxy); + + const [people, setPeople] = useState([]); + const [loading, setLoading] = useState(false); + const [filter, setFilter] = useState(""); + + useEffect(() => { + getPeople(); + }, []); + + const getPeople = async (): Promise => { + setLoading(true); + try { + const result = await personService.getPeople(filter); + setPeople(result.items || []); + } finally { + setLoading(false); + } + }; + + const handleSearch = (e: React.FormEvent) => { + e.preventDefault(); + getPeople(); + }; + + const columns: ColumnsType = [ + { + title: L("Name"), + dataIndex: "name", + key: "name", + sorter: true, + width: 150, + }, + { + title: L("Surname"), + dataIndex: "surname", + key: "surname", + sorter: true, + width: 150, + }, + { + title: L("EmailAddress"), + dataIndex: "emailAddress", + key: "emailAddress", + sorter: true, + width: 250, + }, + ]; + + return ( + <> + +
+
+
+
+
+
+
+
+
+ setFilter(e.target.value)} + /> + +
+
+
+
+ + +
record.id!} + size="small" + bordered + columns={columns} + loading={loading} + dataSource={people} + pagination={false} + scroll={{ x: true }} + /> + + + + + + ); +}; + +export default PhoneBookPage; +``` + +We inject **PersonServiceProxy**, call its **getPeople** method and +**subscribe** to get the result. We do this in **ngOnInit** function +(defined in React's **OnInit** interface). Assigned returned items to +the **people** class member. + + +Phonebook peoples + +We successfully retrieved list of people from database to the page. + +## About Showing Tabular Data + +We normally use a javascript based rich table/grid library to show tabular data, instead of manually rendering data like that. For example, we used [Ant Design Table library](https://ant.design/components/table/) to show users on the Users page of ASP.NET Zero. Always use such components since they make things much easier and provide a much better user experience. + +We did not use a table component here, because we want to show basics of React instead of going into details of a 3rd party library. + +## Next + +- [Creating a New Person](Developing-Step-By-Step-React-Creating-New-Person) diff --git a/docs/en/images/confirmation-delete-person-react.png b/docs/en/images/confirmation-delete-person-react.png new file mode 100644 index 0000000000000000000000000000000000000000..42d68d27a203bd59546c247c03447c91b43fd31b GIT binary patch literal 16920 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 BY(oG5 literal 0 HcmV?d00001 diff --git a/docs/en/images/create-tenant-react.png b/docs/en/images/create-tenant-react.png new file mode 100644 index 0000000000000000000000000000000000000000..370f45cbfe1a418a4baaca10137a5458fc1f42ba GIT binary patch literal 48632 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

BL%voM`_105{WD$c`8bwR_#LbJZx`!dPx0lqX3@ zCRzC*2Vz~h<)Tlgz8JnbWa-?ts6f%iU$2|q$A_!Q{+t*y5$*LmHJKydNxMEoYMN8G za-sh{MuQ}p>54oS&7o)xo-QSM>;`pWTi0i;l}+0-9_+-gHSD2`7Xu0@n*v6s%hIE3 zS&j~}jbd(j?w`s7*k+qrgR`%nt=H0OledfOCKG3J5S<+^uy0mv>+;;X$&Tnu8&~(! zw|IJ{nAkX~>F-LrFbUb^8K%T^%t@S+qtmIe`k>tByNtN8Cr-ukBA<(HQ(&f|9A%ri z1wV68z+29pUPv!k8p@wb{9&Fl?HOsb!jyQ}f>pf_Fd*%z*K~S1@-Mmg3HlGO#1&x; ztJBX=Un*HlXpZ-BVNB*8jB%7kwjd17zI&TWJZiDs%?r4Erqs@@JCL_=f?{_;f=XwD zBLc#6*)ckF_RGtU9#w=ChQ;XQUy2Cd4^sILwFm#JHeop_n(SYI63E57G8LH zidMC4TU0kkdY)f|$>ZMkmUY8x}_>AwO@5vObUuc0e70y9m<#9soIv(_)p^uVw-)xwi?h zr0@{HlI{P2WCai)=>F(y3K>AxaZho^*Wu{R%stx2h;XlG5RF2VjoBA? zsdaX9fp<6i^|W6A8}ZEXZO9GdR`_E`&KsO)FJ9+7qG_pqse=U~&>rP>-B14?a)Dj` zvX6THhfl|jY#v#iumqQ$YR{+)oP+ zYN1z&QsjV?#2fGPqLq`CE*2Mxe|&Nq&eQ;i+H_5PEdB1>_J2XIYfd_za`WW>bi zl$e7YA^FqCC--$c1WDs>dBcBx`z|Yp+W9Rc4zaQ>cvL)bsnGaN58e>ljPv2F0lYDxVN_yI7e$>>BlPJLZ)%jU?OYF&br@hW&GIB zgy&4QY~o67AVS%(-l^`S{V=|@b}eO4FYk|Ud`76Eg~<@?fQ1)1iPEq5I2tBr{2 zS%S-fXeqa7n8TL)3bD$IqJPl!8(Iwf{I_`PX)#;0iEsknnRnno4!QxY+CT@GvMO5l zQ(3y#pLmZMXO*fWi3MqHxpwGRL9_YTQu#$m!Ro?=_%1(=o5A~!(I2`K3VseSY2FCe zjkv#9*uyH(IdWrJoMisJc40@Dp%Ti$$Mbo|4CqVMrS8DR2P?gcowL-M8L2;ory$at{AK*3__PO^83Oj8NpO+(L4D~IC z|FUDggAD>=$XlmXsWah^rGpKt>SfDn4>vnC#jY6eu(B6_DtJ*5zBiZ%hRm7X!e7X$ z*Jo79&*?3as>JIIScpn4vzYIk{beUQQDj(%D8SW%L1!!{MxE9iy$$r?HGaTFxJ}r) z`DMY`MNwS?wr-f7iLWCt5Ba%w%!p-kP%DDH)D3jk2O}4lhC6>LIN&xkTqEAh&#P?^ z-8*J7?j%)JEr92Q*X){bqAl=8M<*Y)@rtsB6!pmbQMfJT_cZEj2Ea8J@}mllZiw25 zdWjT@Xd5)pK@-wqo8QFVmpm7k+@)t}K#Y6CrB4W)B9i0TcL?dwsT~PBS9Rtk)5-uh zeW5-lZ-IefypsoPOP6}<_%f9IdEN`Q#nD-dk5N&nW9>{q!M0rAI-A0eZwtY;B=`>VbmE>s&Drc}G~btlq`jVD*CgIlQgJm_gyQVYV_2-3=cwI+GnIVZjkF zi_e1A?<|`C(<~O;C?cZSj-kIbsOd1P#10zZU+yr`lZWO`yAG*AuBceu literal 0 HcmV?d00001 diff --git a/docs/en/images/localization-files-6.png b/docs/en/images/localization-files-6.png new file mode 100644 index 0000000000000000000000000000000000000000..7153b353345a530a5efa5c317db3fa3fd2d3c5ee GIT binary patch literal 51993 zcmeFZby!qw8}>VhgmibKv~)@dA{|P1N=ZvfcZWzyHzGN-w4{K5fONNX!vF*9HTvXR z&-1?DUwiNGIP@45XRV2~?(4jM=Xu>>&lIK5QAkigAP~BYw1hGU1UCW#!3QEE0{?=~ zP;m-8z&R>QiG#`p$u@z%+%*?d5Ceh0F{n@@1mN%Y?4`9FK_H9{*l)NVyZ0|ZpuRF0 z2{BbS{hezcU7d3ywwqSYt3;jI3bTPZ&y8;c?Qks4ne`6AsnuG~b#+)vWP+sa_A3XA zz;G(Kf`K785^*(hemy78)9)g8@h(2FO0}Z^moyH3{TxkO>aZi`FFLq;-@6`1mcX@l z$0jC%&vlSz@ElVHDZMWGu~Y~p($%S_(8>3X{d1iV;8zCW#TUJ0vvB6Vnd3@o}a5V{u`0*x$&7-ycCGT}DYq0ikg)62| z2xf$W)7tddZKo)iH}b8}@~7Q#%AEJm*FFuoOgZ!2#LZY=vt+m5|_j^BPkb#7=|;5wjvy zFVhX%zr9d_tg-np@@hR>b}9v*FcR%~k!3<{HubIHx+dr%aM(yMM;(3@m!N?F^MBI=H_v03B0o;<^G$}WMkr;nbn zk@{?!FfJgc(}R5^V0g!HJG#!Y=5q|klg5z&7pm{=Vh(fM?swqD+SD_-dE_OW;5FY+ zHM^fOorx&Ntn@@LO+{mP9?BWuq|Uy%gQSc6j-2QX!aIbAhoDqmzZOJ7@w020n2uEw zk7n|NYE;(>GwwY(6fQX)k^$fI`eaWnS;waDVcvmXFm~hzUeM%hPd6bI5#<yfbiiQl2Iw!08wKmBGZ=!{~psBXurGI~MZ z>D8eWShs_ErDfhH`yk&`+rBgAJLnAT@Yy%GMJi=CCPxF3!3qp2nn}9yU4>$bO(@Q| zT?t%$(XX#Y+?!FZZSZe4zo6E49hiE$4WN@Z4JkRY$? zJBiiGB?I5}m{zp!~mT*Xt41;GjJoa#u@%*^-<|VabK_~QrYM0pYt5+v;ZW`X{TC)88l za=mQz-avp}T2s>9IuKDRUDJc8Hr8h=TIk z4yoPT<+~n#rFAVD<95)mL17GA<-37Z{`ypq&2ZI6Z3)vVIJWKx155%s5IZoviz#}a zK+abC%;2zSfy-o#5_(TW=O{g%U7zXBp!m0_N9^`5kkE`DU}Kx^1W#L^WZs^!g7VOZ zW6Jfqf)=qsZ8olBRJZ*~`Ay@qRY)qg=c4w5=S1Q@Di0`VN-fIK3v%f0cB1J0VO@5# zrS>7f9)>n%`#aH1l-rA zYJGaED1;{iwP0nEs4`%or)lv1V);f%RVlBSz@)_k~55ZA|bb zsz+yC9>iKk7_@i`U0H}wlY1soOGzwcQC9dm*C;Z~^!T(YG?bt>4bjrHYvPc80ZIvp zxrJbYWnZ0csqK`_1U*b;F&^{BF0?vsC2JgQG9R*#q(%W{LcYm@+G>iJjq$Ou=N_+f zOH+E4V0YNHM(xhr$aBb->o| z+2`Pv)o)>ES(TqrTo1jA^en7Jtw*vk46|nG%a6akpx_NA=TG|<@--PV$_!+NG^=(2 z=BjEfo8*M=Uf7H)yukYhI5ifsh*~=n}!au zE|&OBq+RmMS{7qQty9e+z1=&*sK??IWT!%W*?O8ralv$gHuCsKSCXG}Kad2Xo*cQNXH*&Rxb`T)koe&`P? z=#b^4mOwV|O*!Mk97t#Q0{rsA$KtWEm>Y7C{iuTDA-*41DVyTr=?xXE4uIIL#ouk6 zw%vO_m>$g1&W?LDxYGF|~UmX!eUs)EQ z^rpYWf>KqrQKy3k}!pe~S z9pB!ij=c)Cvj?ZkN#pdlf?M*f4xd*Kx(Xb*AjBY$53YR8VZe{2U*=+p<6V^AMe}BV zSm^o;I$<8AL1TEBLG|*4`KA5Z$d$3PWTMZJI`oDdlX~IE>!xr#6j;dlbYYTtAfNPQ z6tHkxl>Iv${TIvhKMU`F`-It()R;1F76N56@9RNS$mx`b{LKoxNXDfS=<(n{ozYnE zOV6`CsR}4=CeDJmgv10fqGe)xIUnt1x509&=gSA`Uf!g(m!)K&wgey17=z5$aIMW| zwBxr!-ocF6!_LuSDM9_Wm&|ERy(LLb#9s-I2!4yTTa#VVnwE))ZP`5_sRbGG@gM|^1b^?DC|edkKn5+= zHokmwyH=>IZ?!iSP;`4m$-m)&mfc!}gBhFAdaod-Jzm3fKX6ic0k6mCiGiwheQ1vG zd-=^3oa?4Ai+OhGjmetg+b|z~DAo<|%4bSNC7xd#vnPrq95L0GBe+gn!=s&xL}T8Z zD;?Mkx8h>*z;ls!tsqBr8HgY)R<^I6M4&qlMwfLGb$1V&Vz%3iX(fkeo=)|Zmx}f5 zrOI%?dwcn=Q}M$M^%KK!(mD$w6Hs{Mg|UL`~gvv9<+}oM>XxhE&rnzpd1R3 ztbdkBhh?V8IVO{7 z-wTJ};tCNH@OhIQPHkiK%nDIL~-HmiWRoc8P%F(qW*Yt&3%77PzxlVZ7IUw@~vhQg9v!}+!x}y z_tN<^*9QqS>ohv+{nXIRxKS}~Vxd6cXGx<02uXXzJ=01a6=!3yH_7v=qoO=EahlV4 z=qg+7+$|I@UE0z$F~|7NzPu0sK3_gLI_cBZQ7dCV@0(J}Ftra}2ZKr=Q0ArAS~+Q& zUH%wGvOjD5y%>wTY3lU>E>1NcnxkZ`%ZjjDPJ3e3rzrfw>{2)dKIFsR3XhE`iw%)| zG8g9P&vx|*z#WWsm|h42CnAK7T(Sh+)S}!vts~4DLpVj6*ZYCO!g@W*&YE$&%!H%-bR!nw$sWKM)Yy#DCj*%$|G-@>wF} z1elO%nCstZUqo(lo+PpAwZB_3N+YGjEk0;$J@=Rd^rh!AZYEYSP+76rrJdL3Ebtmz zt56AVE;75AdI$Ix&^BB%1J_y2&yW;Ma{KPRi1As87Brdd`r>#~@)O%&d(?I4Gpt zp!3@|yql$@R=ia6ETU7XU=D~2)cFPGfi42?O&6*0lk`SPQTfQFT_fnh&2uN!?=13N zLzlZoXf4+)<02YlqPsRw~G6&9_P!wbs>ixSAMxMTMr>&3@T{KZ?&#XnZr54?=_o$b-s@cCHLu? zQO?N^6_b6nuV|>s643t0AZ2qQ&WE}T-kXv>VH&y_;ikl2u=CT{!9BThH$os4T3aN^`Zf^Bvm@nizaC+6)`4M}ed@1cg#I>%& zqet^0kfG$_7VL)zXv*Z5`>nTE#>4)v*&bmmdTYL=G$HrGzDo@f(P~tQwIDQSs3L$^41|4McQG`6|47-Cr0kM zXav1!%<_lL%#_+!^tZrpu+fLbpk<7{QX9~PqYqr|! z%_ozZ9DeD>9}^u3>MnIe!xW_UGcnHMe87ZK5$B5ug>OZj9(vJgKLW0{<1V(jh$GP( zl6j#EMDOF&h0w9%?Wp~gPaBelJws4|mixsFl3v@HM$XHb=OU4p#)eMDm$J-y(mrY5 zFxrwb9{FDy|0p~Zr@s`Q(odP=v*i`RS6o7Lb91U$Ce=iznEkC^#T9OWkN9lfKok#i zICD`cZXp@$Ah8h82PVwDksi6wzBZqHEz14~W$o3%LVj>&p92jCx$q^Kz8fvUC6W(a zn$lyHh0sJC#G=93+qQ{ATkh~4in)jhr6xM{Auw>6-B&0VeiVI4+tHp*=4;G+BkdBT z3;%@L_b?0+w2uz)LB!K(Wzm&3vAO-Mo%YB^V1{GiN|1~a;YQQN3e8ZVrJbbAb7F51 zn>kwJz7pY&&wO%uP@JN z4r9?CQoosh`NW!RivRL`g}26G+7XE@XF_Al*ohK&_q(Ip&d29erjG<1_Z1@VbX`wmf9DB+Nn<8ezS$^s>hHpa|Q=ZI2pY6ec1<2o-80sBY*iYQ~sx8TWj)5>LTe>}jK zTTy`wVt2dbPN8u9qLMt=I@w_5aszp{nw9B2K%hyCAeNSL!&v)pK0pIj3s2@F_}|;R zChtye_%HK6wezHmxh^5<3ROD9nad)|i&(urUkEvNK)SiwzjYP5oHVIy;Oekj8AK<| z^AT-oMsb}5Q}`S$A#fIY1p9Qj))a`OOb15eC;-3EdkCalB>8}gfhEF5K8l*EWvPmhuPOx=v z_c0G=TCXjOpuie^d&G9@KeQk~o|g&fr2l%E#Ok@Vo;o~zRIOS@Z{Y5R87`IC5ztOc zLVufchdlRuC8TmL?VYrB*;MLfa+h^XTPL3a{{CxClsi9E+xom{53@%&P*KnIJ8K)6 zzQQ?l!~}zj-(2u7bj94N-arO=TPGuO!-{r1C?&lPhYmFRqK$J%;RBpvS2s3RM)Kv{ zHqxsqk2)_cj>s87K!xdOz3Fc?93TlOAp@1^HPR70YyuWNLYx?j`=#4m6s1_MaOMo& zN%RKHv#8%f8=u6v?%K9>OZfzgdP}-NC1Cdue#yTs^yJ>fiYWfyE6>vRlXd3yx_RxQ>t2v|I*0j_xwJGn6;Z*Q)0_9b&6l$g`tx+MLZH61@LyeDQ09s2MvB_CxHSz_MNv<{bU! z2KLniE8spPx=H=V|N0YpF0QaW;ua7H%gz>yjE)Rd)BO1AL5s^R{O8_Y>|dn;9nL+V zqp^V;bYONe$>{4-WY}7E5p1i2!vV}jROsToPFzQt#Hz3?g@j@J0;*9t;krc$2P$d4 zcH!Qc3ovQX=&HlT9=>DpX6wt>uT*T0#YSTs_e}WPWdH zpKAaKaTBM~v=|?B&|H`yVJ;F!Z+bL@Htl;Po$`PH4^hAufAMMXcM8P{0OONA^1 z-OIf}8NhPyMtUAxzQ%oy0vy1Yo4{~r9~5E@F!5aGE;jc zWB==>k+?qUG<(?l- z(tw*o+GB$NRO&15>dzEiYA{{D27}VCjkmKyij@O|$e;LW>AyLg6n@YAD0m>u`;v_P z^~+~kMghGf-L_!eegU~29}xUnn0NQMw+*8xv-e<(U096(Kt5hSL{poeRRx+1u)05c6u#OxVAzOFehlVFlHJU3ZUjdR! z?Glm>tuo&E{uaUb!^rq`1%e*`_n2#r;Z1CBC6Iy%T?!_eaynQPf-XU0wDV#9-a@e` zVey70maWwYx8^PbfKvb!0D}2hdc8+KFle+v7L;s4yH8uD() z8*TBLUTVx24AK@yau6~=Sz-|$&bhb=rhJ`UyhC<{Co;rsBB#L`_0GbZU7B!eQ>73K zS^jp-K)Dk8Nk9O|ciEW^)b?&^>321d@kx_~!1Rj_vu;}{>l)AO3no{};>}FsnJiT2 zGO9P6>1iJ=_>*zCwW7SDKli+g*_C?hqtuN}lG<_{Q3}>J9c|P*%d0CkwS1xhM$+eB zROb*@tkwjI_V+Ib>@H(Foo&Op%38oOHBUk!4m^yP>L7vmUmv0G6fFoV89ll+-Y%O0 zJ4X;6Oj^~pDWf%Ue*>gQ>69N_m-7nRQ;)AjzX^kc&MVt(^*TBsS|8jkA+uzx%;g6o z0*IS5ulJi>!5gu2nl)Rz{Hd+X#iS%85;DD#n+rTOjrJSC=oap?v1^2EU+SE!j6v*v z6ITJgUJ(_0k5D`4;(N#C$HEZAj6W#-(2K^FalG9*-Tc%ZDM zsECnawck0wx3Sb~RtRW<-#TobA02j;9j8pfq^?TbC4XRhE-vSxf(o5f4c^_CmxTqT zk@@KG7>?^kB)ej!vG}&3q~6?-dO;;U@4mn|^ApiCZ>?hPWPzq}%ACz@qI2 zvn1RkXf5^F&MboJQTd-7HVR#68=*gA+gp~OuhBtPDW!M*@cf4sAo|dxoZOe0fXC~C zkKg`cSL&V8#q&2`ddmEQ9Tcmw9^53$EMKQ1w3LiX=Szj;kxyJqw#39#yt$eCh31Yx zQ&Upf%Tm($PuElVCq0l|7aTD`i(skq}2_8!aE7 z#s@*48!uH2H8{|v!Kus|P?y==q#C3XAL;~~&j=cE6D)QSV#us5UowE2pd(7Ljm8KV zCnrlI`7*OtU5(%}`-kKBWnCI9`TW3fgqExmn?rzliMS8kB?-(LdABVV_i-dI)R{Bv zc}-?I7Sye|zWU(BN=tmuiA{}ANaZs*-QrOu26}HY#G>fP$jHSdJK;c$XgA_W2?@Eo z0YALVveQyHb4UP6)U@;1l zXrFAcAr*lhz=LJqCMAUw>S%+z8q`XFlnX+4kzV@i?%nQuxj4wMUjPyDZNkoJ`lS>I zWM$V%j_z^3n7prcxC?xYZNO5@#myahMG1K%EBDYiVbyS-dKT<0{3{>e0tCs>tb4I0 zOI&JdKVXQC+=CT&FSwr}55Ws@^RoMizz02Ga6CU-1+W@Hcmybq6M`eW8}#8uA} zL-8Bh7aT^y#To*wr(Pm}Jok&}ho^?4TjnWBZlUQQ-;Inp`s$3JpQJl!p3R*R#y z%EAHDyx_zk%zIuU-XC~6Q53>tRUKS;vkTdfYxT-Sw9CmU84M203wWqoXTbeWR690M ztfBMU_}J3PqE2|@Yo5PFtU0@=9uWTv@SI44$k?m!pEUx`#coa472eD@+8Vhu(!*<#!Kod(uNtwQk;HoyUETxsiY6v_g)J*9Q8DIa zB1k#b9MaAfV;|H2BoHPk2{#EAxZoHE%qnzWL2&Ja4U!O#__Iz{V^|E}^Ek8cdzFUw zOk`ZEm3?fT*pKaZZx^(xFL>GAqFt5%S%3%DKnb4jfXAoBhQ&=~F zWOb7W<;#(OWY3qZSZ?8%~9}21bIJ-;4n)aa9BjAt(T1%|+nbkK}$nE1K zZVA(7++{>h68Lye=Qzk~;mpyS01T=fr&N(RM5TzN zEK)l$gFkLB{621vzXaxYmL&RQ2mOgc!#KcmiJWHwF2Lm?v(aAx-?;mj0eS5R2!8nG zy-Lezg9AbspUlJ}hTv3`!x|hEm;qU+^ED{oMia}`J#c~i@#x0mJp2Gv^BqiYcwo72 z{NUPtzBSafB|s23lfu2GCKxWcP;XC<)CO}!HA+2+BH$u}R|siEqdh<>7j#R@1Xdmf z9|fGJU)7pODj8BCPrj(@1|6Z|joYs^x;$xlg{B!-cmNbag&E6XeI01b8|x={pl~DZ z_v9W>VHsoBI?KL*sWdK!=~{NnOV{8PB9v$GP&>61Su-)YI`a8wI&QvtP>)E^5dVPN zXo6fOe5?!F$Ws?UvERKj>T{74Z{7KIkqVUMrnj?y!PU`me6suWAHa9LuZ~`yRei7O zo`^b(TZ<8H>5Bbe1H<-M?1Z1&8H&L}*cbfA;A`ol{a(N;S}u9IUP+RakFM86;kM+f z(-ki;EN%#J0^kIbYE`)KQZcfouV24*v$8-29yIH0$w7;&y?hmg-seI=o6v~TMzfyr zhx%(EIZC^OEv=m1Kt%|p>PDUGtM++x(smNkMRA)I?FKKU4p52qjqS{I)`BeUu^`FiF)SH}QNl)@}vrJ#T7Vzgm$B_h%;e)($DPNd-ytSNnL_wpr5<4c$2Z>e_6 zuo~nwBn=Mn z2|#DtzDT}Fqg887oME#cIIQVQXuyB}2P-%@k`sNp7mm;Wbu>gSiOyl4aKF2uy+%`` zp1=SczYHAbFtAGNi~^{yL`}4MFEq+@V*yeC+~8|ErEcw0kv5nJwf@38Ve} z>dc@;4<+HSL0Bn2GrZo|zY7vN-x0|^Wq~TN6e7SJ150T%)*7Yy<^<6W$oh=$1n7&d6h2uKDLr=a;z_yCuoWUd`q zHW<>s0n$}ZPV3dk&2Rgo@jZi}0x9VM`kR>;nj{_`kOiVQHz9t`7c~~ajcl+(V8iYK z1)=EY{DVd@IdZ^EC@L-P*!)z7=X(6oY!a@n1I=wZ=_IJ2+F8^Z*?2KdG1*6fMw~f&&OMu|kzxWq)<3d6^H* z?|G>?58_`qe8s=JqocepF_ygK3NK?-epGY@*&w}zu5UROZX*S#hNzcnKOlIRZ1Dom zmpnD@_WMuII&M4%U=FPQ;0W2d_wewQJdBuI@w{#fKShS&KZ%Ud-$aJXN)D`D??Xrn zdVkzG{sdEl(V!&ZuSLeYGoCod3`HT3O{IZ+&B(Q_JeTTg6O~=^Q6J>HKWW38xqDU@ zvzzW6RAcXyBM@p)1n=$C0L~OF@um-egZ46 z)Z1w|2Ak9D;Sz3}BF`_I12m(A&6|(=dd}P%0c?-tJVNdZWPpG;=n-@N-&PlJ*{{-G zF_8j;&;&*|Fe%~s^~Cp#(t_Gz3d zLiDdcY6|!G+v~)!ir3@<*sJiS#+J3mtFl;HB(e)6*>M;VK-nYgTjUvM4-TtoE}#8r zIONi^W2x4|_p&|H>`2)Ef_BlzVW^OytOBDvg-<*%P>MP~=l?#aOe;Mx)>H!&43qI%^7ylDiMBIo+Q34> z7&a8eIKX03zg7bLncf$F)l7(V_MMRc;K~LRonIG^-EL1nv0`C!dUHYwZl9I1t(gFT1`zI;|tg(w`N3 z*ThwYRRB|6?JM*@2ua(swS;!nmH^esNi|jExEe~+7KgyVpSDDnQ5q-e@Wfp?ot?v! zVUi2;cayQHm5sas3sLt+R^&zo=RK_#dZaWh%=oU?bBie>g1B!B3JNNU&FB@IFX%AN zDB9=FXW>C^JHyTV7u{^^kTc?<-H(nN2LnjEnpI}#-q4Z$&jSMqTZ5TClw)dYAm1Ae zFJ%D$5unY-vc5I#2l75=ia^Wib{OVImN4r^ zI0soB;>$6@j-$k%YPwHNlN0nw5YX#uefXQLY$RcU&s)aA>C*-#&kpMFXV6Y4pWerb z-BMp&Hy&Ld&}?>(Qk4YkjS#U90Nnw`LUb^f5@_`iX|acKKK-0LNeQ&2lD#>o22OeI9H$cdFdd5zwV_ukl-9yb&5SDTP`a(2x z^yM3*mgo`X2+aoqFj`b%01IW0zyUv$S5#c)s+(sb=m#tyPGE$_2?hyR3~I?h>^wXP zI0c1D={TuFVL$-BAe=&?3*`<-!ovpYnMie`KdNi|hLu{URvQkq;ISp+O&7&{AhlDuhe|W&cEnA`w4NaC`s{s5ZbqDwNIQsbbw zbUKVpQ-}KDy0^|$Wtm!&>AAG&6xS`%=g4zN%XC*1kr_HiD*mj;<@tarS_$0Q!mc09<;-4d@G=T~`^0?%D zY@-^>Rx4Hydx}a&LX2S8v%cD+8NeFP1KR7H)~_Q!_=YTo-Iz57!PcP6->NLyN((<{i41iD(^-bD!#k~+2c0ePH&XJEA zk=c*80n2v4+oznU8`V8(y;AzI_`-L_&5Kgjdc52O31f92%`7 z42yYTanJ7rt=kyPU^1`0bjQ}2v3!Y6<>Qs6!Y$qmqTYK)1i$#r)h|!~r7l2@>NS68 zwr90-4eoine9EZu4TZ(#JJVSkD$*=dL2noVNq`e}Ix$5zfS!r?-Bp?T`};d|o;>*s zJTy3OgFy63Eq=nMjT?;e8wS>MJc6~hhj%DEfVe`qUs5nEuD~P6o>gy~mTiIg2!9Ww ziu_9V8QBIJ=cbjVRg+MQSy45$O!pt41i(B0ODKW<@)sxp3oZPCO5kPwnM&|TI*#Zi z{iG7%m7B#tyY4#UXDF(#biL%@%{}36xP7*4-%LI~&EkTC`w;7Yb}3wme~G$tS+hJ( zoUBleyCjl8bmatY3;F1mjL0xTr9&)7ib%Hpr2{Y)`)HVFvG|}CM2#p~F)DO%EtkVA z@@t6E9&g8cSF9>zu95kz78T?Zbb!0)EQ>X6(=g|0+kb0R>`+^lvYdSm_|>Sm)Iq13 zxxQyKVM{F!^Jjv3lzzM}zwAEdpd!yL<$og%-kpr8(2{!0y@&L4aBpJMSZ+9r)b6j) zvg8^3Uq$fK(D?t2B4DtB-cFqQ{XK``4_SP`qmcg%NkmXPL~|jh`Es3op{0Gj(hEj-XtMIX5`JF08KHGP*@zQQ2>@y_r!U{P|8))0N)f5D5&OB(B$x-F2P5)#E|@Mlj* z%9Sn=hcS7-EYzql##zW*aW5Ei2Hn_$#`zzT6P+YuC&l;R@_B)|Vw4_L-9j86Tg2@b zp+9NHBfTVfn-np!le!Hxomfi@eAixGM$_D9i1^OEP-gu*AHsNojC}&QIU5lOdOA_ zHNFN_A_7tBneAF&-iMmOnDA}Gb0owU+X)mvYUJiQzZo!uYfuf0WmGqSLfE{8C`p#Y zry>b+Ax}qOv3z1dn7RL3EdPVq+`u!#M8X$BE|^>4(MFCrnIcH?86>LelZKVSU>%l; zSA!$(YRYlH7i0MhdQS#+d>Qml$KVn#gBSm*lvUmVKUtThs?JJ3ccD}IW2~zVo@*|W z&)8GX4fm4US%RMp(CZDuH z5*K4gI?t3wM@U$S@6RiL9vI+TDsr)*`IQDW_e*CYh0vRa34r7qZ42b7UruoJ)& zq4%&Mdy}1m3XT*|e3mv=T3$JBRj*n1L}s)-#;WMGje=VxWGGqcbKMR0TqCNWQ_3xZ zrCmpJnrk7H)KkF>AiNHXXM$%CkGGwBwxjV#RRZQI0e_{pj-NLjB^)L>1AZ_xik7UQ+v?^z7+bqEm6-q@Up z=#=8D4t(s6Xad%Z=ddfa_pA9ELkC9=>n2yRs|#_!y0KbCz;(`Zb~9-rbLc*Wce>M~ zq^`Z|%QzV`ksH=15k#eg-Rc-j-WanJG3UUSSGK}bS)E-x3D0JxuaZwn_&-P^(tjn5 zIx&=&_Sk2@LkL|CgH&-XiM8GRD^@|Wq;ENmCj%=X-yC;h36Wd|kKRdmkS=1-v{=W+ z>|T+vKiFSR4{N>WOu;3eye6RDU<6R4UXT6e2;rEW?hk5ppQfOCT5~{LO;(my_O`5O zE=Z8i`tj&WG)t?SQA?LgI#c|ho^;oj1SWQHw*v<4=e3rbvt==uH0$&+s-a!s3eJKig{z)pQkC77johpl7S4I z){7w0jM+$@olk4QQ9xjj^0Ys{sU_ddZ6|; zLE5Q{bag2ae3J|=8DD9XwE1O-=r(YNd9=Fm!J;9669fs*$AcXQAT5>WSid+)jjz_i zPZkKHB-$AkUUuOQnpt~5X2NX{FJowM!la#yikxd5!1lTUJ_eMtx6~hKLB!CfX6(AI8i~tA9Y3B77 zaRB;w`KLkb_&n59>a01P`|QJ>0QdL{Bol6MvRd9Ze-E7B!Wi8VEF%0s=T{=*N;0fZ zx+Ub|6a|Dr$Agu@aKp|(a{GS>jj%ev#WXkUh}D-qLRC4eq96sf;Sdc6{GxD_;ihjQ zuigOwmlCi^h_alX02JxJL^T>is)kq*p|;4tKnaI6QwXpX#%YGwM6AR?BPPoxKx{|} z0^(Qc+L6OdpJ{H$aa{{GFWot~AD{&?CO=FZh9_IJ;Ul-yQWu$ms{f>1Lw*SgciYOUJ0C*vP932BnqV&={uB}*~@wa^TPqY!&I1Gu2gvwQG>G~Z|9+g>}cH&E85gH)nH6Z--%ZJ98U zU+Jm2@P{GGvmf@^ABQXz8*qP4kPNy02#JsGzWwi;WWV{4+2!@{Vjw84GyBDYcx5ylDJi-i25K%ivS>dTLw9FuMzW zB}F0K;puo@CNY3HQkFak4;<;FU+~lLwyVhjMyWj(0IbhT| zYz^=^RGee&wQNv;+Du~hx_bG%{XW$VN!tvi3x?Q7Wt!ujlOIrjR+1tLZ)8`(>7-fKEdxz#sA?SzA7Lu5 zUH8_QRURi06yXPk@ra3uKXoj)BbSpMauS7wCL;gDCc3o0Z!Y$~=0JZQ2|D6Vo&p4U z0sSi}CE3YTqWclYpz#)Nb#*lqR?d-uH5(ULO1x%xJt0d-#tHY?*f5pqs*NL@i(z^I zHBzPV(Q)KV6p(s3%!Nnd;Jjg;+7>*G0fENny#-0m_C9ee6fe&JlQw?9%47!I4do{G_Mi z-LxQfH6WLujs>Ecwp!W9Re{ds2LY*M@mlMeJD`^HZ*kvuETjzVFvopv6hUo{LwmT| zL+uN9Rh}F50sFFu{}>Xj$W~I)7y`zNRW9o#MECK4e%R1(I0}&A|3g{->m3e;fNhz! zZRI64Ii!=4ryCxnQFzKZ@RgedliLe^@h#Ldr_NJ^ad@oGwtLMByINm4d81hc7fZ)< z4$PS-XJR60oq&CO!g7Fdk0VKm2_7H|O2nJc5lGeUK9sdBO#_)jazmA>#sjPxTbjr> znutNpE!?B6aE0|4lYzdT5AlIbiAQa9r zX^pffKqq>`ViE&Dd9QGV{NH07ajOc#Fjb{aC=P0>+4Qk3*fmTgEi2n&+kpw%tvSwSpJj^s}`n1xr`?TL-M4zRcrs{eB3L z&jtjh>_dV{rXA$F(0b2{N=@Nbr~-o{g3-3^lcJLL$ZjtgE5kp)i@R|XeSZ}UmH#Ce zYS08sJu1xnf-ojCpxu#C{|;iXCICxVe(9AFYJ>e(%BzlSz=Kf)JQ%6!XaClNDFXl5 zgK7BHgR%I{gZcC~JeaY+;lWTk46|PsfBAa2hl^QdpNh<;8`)}qyV#lWf|FViB{h^Bc|MykA zknX_U2dl#Fxhs;%WFY5MO3@=Qm9+fr5Bej+V)N@bC=dNytRx;QSdh}fs|Zz!ut0~yc7$0qWtxPw)z!t1XNt3) zjuaWzF0yOx$}kM`UHsiasAQXE5U?*=Qv2Y*y9c}zK;VLgV}_RfZ_RuNkp7IjycG@j zR*r-A!$t}Dwb9q$jJ*MX$$uB`9G2Fei10-RF&~DTJrFBpe<*)IT8RR;nNiw zSig64aeB}VY{bUufn{4f*scowEysxuONp}8#H5AZ2VPo1Z5c)((t`5rK=C^xq*)BE zMav0b_Xm~f21?$$9QNYC-VX%Tkx{w*7;aXl1W<{1#(!1Db!7iu86Th-X72{!5g&J@ zL|!Ik0SSQ4E4-fE&;A20pbV3vl_AbEAQCW7FPaiJ^I$Lv;*GvxP4{8YoCFLGRhd0> z==y)yd+V?$*S76@P!R=@25AAMOHw)nK~g~J?gr@wMU)1m8A55K8zeajDD|+aWkx`0&?u%b|zV8H|Zf#;)H$KPv=#l55XvyA_ld66|lK6MA&X6XUgsb%!@M zZWBotLa*2T#&8+y{mpR6Pq?#I%7FQJ=^ z0OKq}rlCp-Oc6C7j26z{+n+VA9{ z=5OSo()s$q(Z3}R{e7a-^nxo^fy7z69WS%?@1h$_ZKYjd;^4dI`&D$K=tp!T_A10u z-@zfSs#4VD);;knNd}DAe!{q0y@)uL8RCw}>`~1ljlgu$&o(a@OLHYjg2I3v@A`$= z3rcBvth*ef#0CJ=_~4WWuo@*|iXzFv*=(?!$Gt9^W64bk`S}RE_Xfrc9fdZjYXm&h zVKczSmGzbcxVf}O-rGVvLMX;+;tof)FjKY|idUlvRZ1LyXr_-uTVEr759ZeZY2Syc z?ClQ$z7Ns<F9NftoI`yh5WpJTE+j){v*TtW{Aj-jeubs(jU0q z(k>R!oP?(Qy&=L{s;*Bh#Lcco>7s?U(=Y(O79iMCm52IlzXS*LQw~Y*`(5wVmpgrF z`?_HU$)Z}AL9!{T;?Gt3)8W+Iyo@wdaudF0m#HgP%k|+{b^7=}-kpoy?hh^;;v^p0 z+d#us#xp-`6H(y%25!&-Uww?zmLyE@Enh1`fUNf?IzQPA(9m38VU``To@<|g0)T>k z8{YALa>Oerl;%q;-x=?_jCT;oNzP%C)wdkQt(I`QkAVIFBNI&`y-c!t;))4TcUwsP zq?UI9!RgQvI008rCP!d7j3varNt$rk81OzIh}klF?>n^tDBNA{8Z78n6J0W}fJriM zWx|4{7)g1!loO4Li1<<$zVR6&3Vq{{s{ilkzn}E}( zn=Y$gdxTmZ4G#5i-xtA)Q9vCqFt2<}8{X8`rU#SeFL~NrRjM-O zfM^;UQ{R@5j_1717LNhj9m2TXSeGE)yMy}&pELK*5|{A7{~gHxf(Y3km6J{=03OCl z9>uc*E;vXBPr0-q4-%k93VTugMt4`s`vpOWb1!91F^}+~|12?hqdRy=xds*&)ty)F z#;qB`T#@rj9Ny{aR29~{nf=@sfm#aU6@Jw&*K72=nig>I7h?$3eD1&&T%zYg?=0V{ zJ*xeqCsJuEkt1V6-zl)ZW8fu#-pTho_vjBb3B4W9EQ8i)>z#_q_ii>$%$VJ?qK%HS3wrohCPUBf+vY zxP`hpQrP*SkuBWyc$Z3(2EU$PA{f8Rd8TryCc8|?Yg00|ATbe@BiITz=5lmO$6q9u zMy94QWmNjuPZw^&VZglkCOZwTpWQVE?j`Q%;DQIWS-{>!k1VdyY}S*lu7zZ-MnrIu zWbQzAMRG@O$~SGeMyvAc=++{*FHrziIzN4t&b$mSCo_(!|?e2sTtlDz#39}np5T=DNh zK6X_s(Zn9c=WV6#odD2i+eN5;3e-ZiFI*GOJ9FAQ1Q_(3-!d9u7O;#4jo7!029nqJ zjK;+8G8&gm^Hp>p2k?j{rJIDYBpMu-Gn=|iV2;t1LQo!_iij2iCUQL^UQZy;Y22;6 z@*$R)52o!(i=k$V+c}JWXcT8r3%Yj4Q5{bNH?v1haz6m;J)79C{0P8|X-U-WlCscj zK*+Af@GC(eNd1Q+;a7AB892a-`bvk8P!bFKGsMp!ww(GpOxL8)oQiq8PtJGAlnnAvQUDcVwyov)wnvE;jiiax8 zt_IWQtpva`e030*gtrl;qeD&Vj5vUW!1)q+l~MC_S~&gqc_8AikP+#WfQLiG>)Ut- z^Nk^W+`^-~jYhZG&PuO;>T?NcAUtmpM8lc{F$;s#Xr4BmH;{U@fzk`?DS9(LJDsls zG=jr|0QF$99_bT1p56?^a%GS;&u{|QZajC}*0g)cDNlq(UujK@;+!Rw3Ab23657PY z3D`g&sY1u?b{_IVy!Kd~N@AwN6%oJO7f~yJH?fsHFgVu)`ysO(GK)WR7@=C#1sihW zMja7_<|o=q;cxd9$WqL)#V93p5dDVcqnCIB6p6%j^2%3*j z(tE73vi?FxX89a-vM@BdTcfYK0s?;@lX|qDD6wnp5`PL_K?ayfaPll zm-?7tsSTK20XS6lTeC`h>zT^R%3uttSXjKGC4vqCA|WZ6{CokhZ0csMNyllQrzarD z9#XRx=Y$>$D>+s^9CnOdg*dDZxC$;Q?L#%GsU;l2 zG!AdN9myvIY}*S9)F5o2Cq^7GKPM?f1>V3LWQBR0@z)1U8e#5CP`rp}bO?Z7J`r1B zP(O>ynApi4_*wCI#u`FTBOz7Y|8Q=3Ud&$$WH5Gb4$H@SrSB^R0qa3Au`qaD*vnAe zn3x0Y0eEK#Gc`gfl&WMvoMirZy_8VDraQX;RW|j{Qlh`GCVy`YST7DWq|y$4Jq*f% zylaR{E=DQt7p0yM=Kjhv$$;r@P7W1H(DH|)WSaG3#ob{L00Otq9#x>oD|qM%gu8LN zF6}zQZLXlD480bF$|JU>%l+hfxd7I@&tusqd$z{HlR1K$1n_AK3zm z{=^o*{|8$@!+&TCD2M`Ne6Fh7cK&2sny5?6x@nsYDet*b&J1Dpa$pAd9PJ`lBIkkYfW zX?jNQ{6mKD1Tw^NHs~No!p`2mNO4f*{nYS?G`?;VZ{fA4VISm=*R zac_f1Y-|eu9a5^BWeSFrf*P)Z)$6~Al)C>XCBtmw4?h4VN2m6Gl^*e(wyY|8O5Wqx z%1FXnFP@|WDv?dVj?nHPE6+3jVrI$at{~42_H-bk(p7C@Y(D`olb^Rs$yylHBQ5gO zQk$0^VmMUtUFk1LEBCwu<_Va#J&ILCy_IrsZn?M>&Svy6^gUxh&dcbK)e4q#w;{96 z$3M6V_0wz$2t`ftE=-zav932O*Y|0J9Kw2U&`9#{W&v|O(i89n{1?mu zmVap$fFUKn`3E(k8->Ak<1$`D)T@1B>~5W0Qq{G4iR($yObZ(%Mt$GY85aMW&iMaX zI-~3J(psSUk+3-MDgV4saT_c^-)1FH!vE(2MFArg-x44}H0&mR((_7BLu~_O>4=R) z$EKjCl+HijU!Vp?K8zM`^P7KS2V4&i{HJUFq`jzcgG(NH;_2-)K-}Npt>2)`*DN6P zn2UsQrFj5?e~*f-i26HEN{RD_Q^3eg>cxo%3;C1iyS!EVN3+JmLe^gY1TZP{CxA)# zKL94R{!_rD+`~aUJ~oJo{qc>g2gDV%j#4KhQTo4M^@CkhC8x-vRsPxnSdN^WkN79J z2fN?m9wgQ_gvuBAW3DH`#=FpDPB=ZJ7&@{m$vECL!_IIGi;$d)JZ%hcg0 zI(IxeEsrOszfM%UrMj$bwnoFADy7nH*E)ao+9f#Xa_M6rIV{a`dA>G0dACS%Lsn12G#{G(E?R=Z_ufhRFY zO}|QK!kErKhm0cpp3eL&GK%F#^WhvB1#3RUehX*PU-_~BziwgnqWhDOAB}CUY{cMeSB1IJfvxlJ;gME9;E{vJiC-HEZ$MZH)=lwX91Fr8NGv^N92fVBS87gS zSG{zpV)(y?M~eOhJhHy-)2F}M=huLJzU}V`(r_?>G&=+qPOt!#$)6LXLw`q*{_>q5 zo%stv`tCm}Fu#G4)LAqVW*|fUZy8Pok^0;V&B;&D+xP%5fXj6e z^TJawN=etY{;7xN9j`UL+6OXfZbEMu!#-Uo!duho1iihX#3v zi4BbNfRAR{rkEDByZI030`E+tAQLfcTTg{EM2qR`KJqqt?rw6USCU%qceCLCG9drb zW$?$X{{IbTL4&K~Yj@fxU>xb69TK7a%a8~IJ#aI-#`N9|xb=UM`{;?ZK2hfrH%iwX4&FF*sv*rGudIxQbe|m02xYVH}_oi*<_6qtGYHG=p zj_;mhc7qrT@jueFSZJ3d06yU*)13n8Iar`?0R;Nq zd<*me4IjP8Kg{qH6eoYH;S2mq!>^^t^bGsgi~Ie*SlkW7QH1|$FaHtj<@IFSRV22B z_yqM4>{8Cu(V}3R`r8*c2EkFt+7&|Blo+7pX4+R{1>iHiloV^0R-t$~&3> zit(4^iWg9cnN=NduQ$cFdE1V4Nj4>f83!2w&iW~>Lq6US!K)zVswK9Aps>6JuA2VK ztSCuP*|R$iT8+R~I0S)+?gW)!|T>p55O~i7)3HH zuTZN-tDPHm-O}dQB7d78wR1O25m1+|Yrjb(ejB=DA+xA(88(!KJf(pSjQ4bY7?FQ3 zN;Dq$LVk`H@P{!{nQ*d1>7rk!M*Pddpo(Q|KV$<&3uu1?KC`!)jEN%ZuO9?mdtjgU zy)bz4zbS(Mf29Zvu#X9&osT7UfJgVAOpEv}i;3|Ei>ZE$Wy>+Zy`jx5@0lS;$NX%C zAiiR(E25x%4TeTSm?&{P@2wJ-4w#5;-48N4Bj26NgTv>sA#XkU^iFJ^FGn81>R2%2{ugV1U zZ|EbJKcJ7o{?jtyHf%1<_UPwGFl!j1k1*UcrEqsFz51SY>-oH?4j9P$B$w($!mFyu z9Y^OW?ODw3M{+*jI+#q*2f~CC7@(o~74jG%+fqix^KU>N@BRVu_=j=FIre`(d1`l> zUEdV*73HJA5&!!dT?b6dHRfEXh=OGmXF`khYBP5Y&{xd7T~C|lutlA#Lfl{K<2)at z9>yY9msePn@C9S3bja=I;*W9bDEG_`?eF+nqUL^~2x@wUtwh-z1^`}k^R)u*%RvcJ z($O743j}(WtD-P`!ykx{cP45d{dOdU$G4FbXN|jGu>$Dyn0du}VNkhLIs-2K?Ms)R zc}RjOl{c&TwU8C6OxUMs8a-GYIVE5#Of1avaCW7MO$hGIjr*R1d5vQsx9sepDcq55 z9CDGQkE2h)j_FRi`@JNqy*wDD z5uC1bh!?23o1*;wU`?!BM>n9GwC|h@HE&=#z+J5CWy#847@;rkr^d*uswc|ujrR+s zvV;HHix4i3zel~1zdU{V6T1lH>G zS5t!A0~axcp~79kNRQ@flu+R0vjl_DcBgiFP#D^OJ>7yvO0Ik7-)~!JEc^nIY<(Dh zKJ4m-z-9Xj{}3WMLcbua4|*5V?*4TRw@t!G_@e6@^+770)Kg5m8090GS$q-EepaM3 z+;hXiO|OvD`@F?09oqB+NXqDPxf`c8*!%gaWRip$Fu-I708COE%{hDpO!gK0Z)4+Y z8sm@Z#-D(v0qrOXz$vaFpYqVFy}w1H0b&iSCy9K|4y@xtU=u$k!KUle+0vmnm5c;NC5c{7c0Rju6z6&!a2ow$ACEP_rWKNZ8=Un@5knFu;VLjh zo|BIN-hdP~kqiK}-~=OA-wjZ)-3G(B>cG>PD%HNH)h8-2&@@O`OifMg4-+550XqIh z1A`k0TYT*K_^TcTz(|TJrZX1gH${T1CptDbL10A<0mJUQ+`b-8ir zT`l9+X&SYFE=fsEMN@JyZkGja8SHLRQ#P$IeE6tKUE>66Bit9d0b*dPqixLC{B z{!kMDaWp?jz3l4nm*n_ZrT2ohqcyBJkZjtz=2A^Bp@y_s(Rn{ZoI=tF;oEe~B1-US zgtJ{vzm6Mle>pAt0~p;Z9G$gjO~kBVTOtnp)+BMd7?Lf7;mB!v(5Z^Y5}!i#BO!Lx~0PZe{9amE2;akg3)* zdKPRERQ!IBX?CdS`T{a0MM?c&HoP5id`-EJ3nL_tw_-(fET`QOn1X zHA{KD>X`@29jD9j18WDzc(uHXaf+{xtw>05@Zh^hx1&0SYwpn~%&77n4Rl09k)OGS z8soD*S9-;2se7Z-_|ovItClG1Qi{W@3~LSK%`kPOyy2xy+6VaaJ(XlarZv&KHFJ@~ zd{AXi8`Ghhh9Z(QcWsXo-%pAu{L0Vory8+uY*MIleKNvD+x5cemVQUD#dwiLr0EWX zvfM!$(?!qoUDIRwj7BKld}z$3taYE}v&owW(0+Ba6i=sU9F**8C837P;6PcdB+D%N^EIMhq(^ z_v&2CjjfYum7^jN8sLFE-KFj1O9=0@if396j_G7hF1LAcXGP)DpCK({BY3rbE>Sac=Ml%u^+De~cMg zeWA?x%*=E%H3fp}+M!g8@hb1Z(?U@R(bKU6kjzvcl`JQAKh9HX4Ho?(rf}D-gzcku z@3c$PDj|vXr6xR)1r+0UV#QAn^)*o*t2O$RAtz``dNnD_Nrg-}bj>~=ynPs^(-hAl z(T1UhRvdI)>QwnrY40w6ZTpIlu4%XXvf3>-=XumU*O`{#vj7AK2Q|W}h5+V*yDrBY zjoe2kXHteO`pR)GzV8;#x?2G}kBt9mp?9YG0jhKPsRc7fDo4pk19SN)SA?2fR2i7B zeBa}O(W`@lj=d+_JAG}_{wb2s`{RCF49{-jY3Vr95$apLE~)Yx$v)y27P>6*^pTKI z9Xv7{7~1$m;Ojr&Wzo>ka4lU%H15P9te!c^z;{blJI1^$Cr;XvV8Ftt1T$q&G_Dxqr9m))0W*gQTB}YkB%=-CT6$TjjHXSB95C;4qn8@ z#S$hKg-el&ZGQK~B+_-O&D3?VNd_gQ`d}+(forUBF=~mjtniY@61hvXGtDa5;VK%9 z#=It(++cRf%x8T_N}-w=9fa;B8*}oCu|6-mC$m9^;?PWL#IBiE#TV)Ihp3#z0kb7L zve=alG5vnx>ya75-g}m<68PD!$v(Mx72$!J_<1^#kMK-r@VOMHcOgu18faUzZ_7pz zCbGy>@rl!&>6z~8kOp6HnSFt;SmuPxY|w_cqj{LRH+D(0fi>Pbi6Jg8rg7FZpSL5* z1%FAOr`Akv_Cl_CFIn#e%c0P+Oz6%PKYd#L+8K<@l}+?9X@ee-FBP)XYlwn2C=3Df zEi1LyV?|-tpP5>0Lo?`&;~c*@_;fMj(N&NN8@FDPg#54$*a1mpom4#21oP-C`JSQVoh2TQa|P`pXE;}%!Keb$ zNM~xqsJ*Ef{#a9OrmK5pMIi;^hw^UYgoW30uX=~0=y*tu4)liTc}6%R9=WHSMBkW; z=-Uw+GPqpHQ)fzSO>{5C^~T<j9h;+3g3x;mm}qfVg*W6o#Mx}atPF~R6b(g`$3?FcB)HIVcaDvH zQCdsXaZG_IiH;IXaw#biy(vp*>n-WOFKO(mixB%ot=)D)ndZ%7HuA&i3VulwCh6Wm zt%RH>^_@5;3HfO?U=q6I}0oC_`8Ug%39pgq5?@eoL?JCUfu9NFulDd z(AG@bR)!m&^LYD`@xrH2_PHI=W(T4d{zsB(II>v@0N ziQ^hsa{1fv>)`c5N%7MVh0~2#kNn$oD97V;%XWRRBb>tZIg&Cv6gFEP zRJ&x0h#fjc=C77?^6f8C>x@QTP0~k=<*ROPWzr@Oh`)5}{@UQm-L8fczVg1qw9duYUR^S8WhV>z~R9pvs-eZS{L@+A{G871=g1&-`98Bfv8(1V+U zI+wBqH}x^JH2PiM>Q0)Hs-Us;&5`BhoDP<$C8S6>y(B&nby@P2Z-P)mR_~gzE<(S<4 zvJ-3dJ~FBmZi$OLeFy3aWuN_h_?0CDFvr82tRaT3E9LTo2<}H7IO^`uvYfEE$tDgpW z`0#knacvlvs3c%eGRpE`zwm?5lz4;n!0iZ*u1&1~@}eCsB~TZsGof%&Q*Xp_6H09( zb3*N3swYV2JoL2Cr^lAB&dBRG2?+}*o+DS~s)0b?hS*7SixbF|f-h@}U_K0-1C0-H zvzDk6Q|B)(a9LEhwIE!_lth(0h+r_C`2Z!FZQC2uZ8RCv>Drgx_;|oK5xCTSc3eHH zCS=ei9$4s}alirU_C-O+2~wxkEgt3@A$v4r5n=;^ek=z^@KPucG(IY)nr zP;b8>1V^sQOJde;R9}Z*W<2~junpOxpW0TYfE$#0qTFUN{{IxEh|@AJdk3m7v|I+@Tz1ZmR8l=u5iwp zC;y4m2i)~CqNhvL_385$)3=vK(MZGf7=!EG*;ymW9($UuQBN7E5O?}o2Cv|{<)!9U zaO^`fspw8z<%(`y=jC|cRlK^8pMA|W$&D@fnNs#Cc?Y^(Y6?q#(2*fetQS#9Y<0T( zyXTeeSuUJ3wOA73l>{e}y_j$74k0`=Zl3fEO=CittcKf2z0X{O{imvK zUAS(U6i}efP@O+q?7)KgcakKD&_a?d^@UNOoS}vHs83eDGiEN?+b! zFe}^F{aswgTTg_x$BC;Vjd62v@$GZFIQscEYwQkFd_hnp$UG=r(ox22L5;Mo2FgH= zuKVKlA8jg-?9ka2RQc&&SYy8G1m)Luh=O|4K25_`&4~uXJI(hC>_JZz_-faScuZ_5V~D`W%XjVF2Nm8CMPozamQK=ql0A+( z`}|xNPJFUiM6~nw|F4vH;ni30TT|lS3D!H`)lc#97QO#ptH!K+ z)&|881d7=Y+a8mWG9fld+=O3u;C4yP^Jxm9*jlmRX`cAFaPlfKefymeZFFAip-baV zSSGYGj-&7P#f9aa-V2O#??HuE8TZoMssG);Y;TLWa{_7wR~C76cEm1x_XbTfERo?7Pj2Ik`Rdc*!*Jsn-=76 z^;F|9tez@Elh~r;>*j#|s-haXkE{r12P>PpdwoRn@Z_Er=HvviX2|DTtf|Kh76%N? zksCYJPp(v-dbzqU=kpRf&N0#W)hg*fYnS23cmCGQ3$m64ZkF zTh`~>M@+Bve;SI1RXN&h_QpEI4vwWT-U5jgJdQp!^n1*${E`}m*)!MkSuGn zU^9CMhuZfF$Hk3}_3-Ik9+@;HBb3^7TTIvK1gBY$owj3g4D&qOYrc`OFa;VnK5a}qC1RhWVh#t&xr26DCm|hm+Leb-$SB%p+ z4D!Z|y@Mv|N9BECn91=vBrC_YPwZ&if_S}lsY8}G?~Jv2CJ39_~2i;Uq=5-Rta&dq`@a8>P2M z6SMyL+TGag)>iJ_9vwkobSA%LO%$2e^C~>3S#QT7kz~;h`4J7Bo-({8%Ycy4gYA#7 z)j7`b(ZL&?G1R_X)iCE!3?sDW8@Ma)T<*Qqa}3WdXT8$NQxR$xLn=!P?z`&DM(EYf zE0!|wG9ItR#rqvv5(&!Akiq9jzL^}sd|AfhYJ{{X)LQw@#{FzO`!F&(hNcJ;TFg(1 zatr43YZ@69G*>!NI~3PefPm7|rPUHI6HY!Y5P?t($63^{{rU<%bBxI8a43EFE(E+={%P*XBfQ}6!MmA*=bYgNXpt;6Zmq{45&QmZ>|u^9hM z%imZHEn8E0F?q=%KgIf1FT%XifN*RFB||{GWV)u=S}MMcOAcH>s3wN z;1bNQ%|^+3w}q2)QyW3_n z4X%5=15xSOk}#G8NRB=sT6GH^Wv+ZAvE8-vlE>xF^4uq`mu;Ec_$CIkDEfE1s@A7e zj9hJ@;0yrO5p8^XgLfI}?TxPWaEmuXs;mi4MjDK=0@}Cs!cfN^dzQGo&+GZjD~rI0 zM~crBvtXmQZ7`@mFO?e?bp}}{7XlfDGZ%$@xLVRtq-~L z)@IkB?C<5A5_wphYKKL|b`!_W4j%*&0LjNGqJS8v1IRw##gPcs{y;q+2E>7C(Q74j zrx}7+rhIlWk!Ax#EL+zb4CBZ6U3zQ>+RHPD1mP->g`I0iKW6_=EUzDyl3i79SnObM zV?GZwOFS^E3>9V|qS&28=boizpX4E6?tWpSVf4pExQxfce@>x}Tih^vPrza6N?(J> zVw~SKQ;AEm9v#D$7iko7v}QAv5{V?vwojpu*3wz)!0meG@U8wB$=*4R5DT4=Op#Kv zW>rXUn^T=K#2m^LVOv0?)#+a^QR?!nXyi>jkU)22SaU*~%b%f+d=w`;v?|a2rqtq} z%)axBHc)2;cV++kNI9ZtH<+Jd)=X`z$2O3YOUJdARPRu}L`mHf2~6qANXav7U|QND z>{G}$-*uW*jkuOn(5He_6SFi6dxGfwf>wt9(tVdRB5iOfZ$nP?dJYn7R;As`Zy)Zl zeU4o;$ltM#lJxbOX4NAS4N;eJFVM`kZQ8s*qRroEHFwy0B$mQ;xZQOWm}M4n(ve=# zURABGK8WEpK4Qe$Y16bNYO>lI9v6IaoNpEpXC5p5j<4HI(toRE$tih-*>jXgyEup= zh@_j>-}&{5dh|&`)K*l-!$7wsxa>y$xe47>_K&Vj`BDv4cd$g^8UpYelT31EmIn$d z?DZ+5|8JH@xc*~#M8I!3*;A;%Tr8o9?&wWow7fxloWT=>p@Qu!?APp2nDku*RG<$Z zI#PNJ+%d{=_K5lR%V@6T@f>Z9ihvtG9U*ugn|+MS}2|53pdFR3&qgbApO>Bqzs-qb5+9}r@Dh~+EWZM=&MZG2e6(`2=RK}Wws z+h!%I6rVF45#n~B8Wg&{#i%!8k?6kO_qZYS4u)vkO-^^WuqeGc2|T{5qW(Wow|Fg% z;=FiNVD4)`^cYuN^y+uNogzS9NGIXXg{m zIZ@dj{oZkf@_bbu+oB<@Vw!VIHMW|Sq@^p^F>|8a5@_7KR%H8+3@kU8Hemb~_x^f|3fi7?HPC=bY8_Xz?+g7Dhg!tf32;gM2<5 zw9hI;Io*Y0s5qsa!8ocuGA~Q?f(auZgegp1AP{G`KToIp%9Za7L9O?6u;&In7ttL8PslnzDLQA{HuD3gkA9qC}8 zCu)`;m_6+>oqfK&z|i+ z95wmqr-+v7TI)Q!+3NYZJO#Ycor8|8(K2RkbNnJG)5PY6k*7~Xg#TQ=I6b(dhqFfa z^sedBsqHv4anGlv)!A>_-0ftaHytH(^5Lx%M6QY|Q&a?1m3EG#JlkL#)N%!K(e#DX zAkPNv6Nw4%Wwl$sQ8?W!Bf59H+cpeIq!Xdbe$)*bfkHqTeKUHKL8HIflbxp(x>ns3 z*jLq8WlJNhAWIPt&|fhkMm(kscgdIQ-Rs(1gLLd@)8{?4A_Yfs89b#IyIi?fBEkhV?< zPa4>%Y0M~+)mez8rE{;&n6s!l82u<$@Aesa@1xHdV$iOK^G}9uX*|n&cvD9*tDL0o zQ#YvHbZ_t&H^X!W6oS4{j%Lo<`%B!f_dby8RF@;ckA?JLW}6iosVODLS?f%jxlkZQ zKnYjC}tyxC!}SEP`XK-c+& z#xfPH#r0Ei6ESi3u}5@1p3;HYg;~z;GimM-r^Bkb@QmuFg6AXYRLHwiyvouBK**T` zMIg1-ng&gLyRRjDw=9FRdkCvAWgahoM>GAR%Y8?q{Ft#fE#jN(XeP*bC(nvBiEmAn zGBlZlnKd_R0%hm5Txmilfv2PCvE+$lYWilMpmoXuIXHHg8JFw=4RGM9n-gVK)leTR zEx)yQ4^HJxQz9bdNF0TQ={o>j#R{ydw4@26m($sIP)!F&y6QrBVa4oG|h~S;)|RRJ*o||NZ$Ek z7Fg&~XaB|jBtl2`-sJ6g5r`E0^8hsKHpBU3R{^)i6)|v*sKr>jC?M0+3KSD_Nx@VH z{mW>$vY<63E+%H^wn?>m{gPt2KI_Ctc^fTR_Fn7NLG_XQwhKJRyYWG}H0u{nPco_z z#-Y`UdirzQBB>nqr(`07=|Q72%Z+mcMmVvC-Ue3ie*56!g8IBxVPIJC5nMNifA|Vb zcKa!&=3-BJrgG(r0rs)h-qbh(&|HG@okfF&VP;%eAlU0bO3iCi%StAB6V{0GHodO1 zF@a{6@^!Pznm|YCz3|z}kQwyD^k=P^?^^Hr7md_^c-eFwSUS}2O4v;zA|#n z2{=I*&QGoqSwDWY5sr0)=Bs+QLFgv@ek(G2uGJ2netR@4P;R8xs;}1goAAzwYH;gt z1hoz5y2ddduz`Z@`A|wLye6pNGU3OIsjQXQm(Z}=6kDISP$&+m(Y|};mLq-M_yMm85<}0wS!EqCzj2W3~Z%#M49H|6Z?OQszPa9HK8smYsSOM?Y6W7~I z`Z)&ewoUw;&Xq-w)-rQ?@Wk9(C{eL-@x5gC+$Mfcsn;iNyA{ak%G%ks9Jh}4GtKgM zsM^b+c%W!oW9{SDWgxudX!s1(UzEM4fP`*(;5|`HynuI_A+JLbXLZgtby-5U^Fwk72~aX^N(#Qzbp z-^3joA}%S~GE$lG)Dd6`&OZ%=V4-MAv) zYFtjgcts{`qkhrAs1kIuUT!e0finEAGoQw2BbL7KfwDuw8K+I}5zr8bZX&gqc)v(f zMruo+GD1d2f{z)3{R+^md~>3llR)uM{3V@=)Wwy?vCz^{-u0Ah_e8$3e2=->&@GM! zmlO@kiVZ}kNf}cv7-?t_o5*MBj*V7w7n$LgbV&AW`_>P+pCBEb_UpOwf>tuN~dat)Tl}|NZYOKtqs9TO2S5Ih) zBG_2Gt!zc&80*r*qg6f%DskMCYNZ@o1y?xNnu}``P{BAPxn3QM?Tb&G5*`+Gsb{a? zqL*FqkK#AJ+7I!v$-3yEH=|K&2LJW3m z1v#xZJJ+x*SrW}rqRYB$Y1t23z%E6f9D1(2I6F{{^3B|)yD@ZaxAYcsqqP>^I>!Tl z-BBX{E`o<=X{s^bj^iN^PO4N-vEuxSn9qdyf-1XevO3)3_S$17o(!dpgkFsZlE#-{ zsnX?+P_v36Gb^o^CSVQ87l$wGox0DwSYxbwbTq!)l46?I$sF`fcS~ElS)50_V8-@| z>T4x|4q@!DfTpA2$3g6>e)b=vnEgJ%XZ&+%>1CtKAL^c2_1&u4LZ3sRBFzj`_vS>z ztPKl<`6Ln-nM<>XW9ZTk1TKMo5xr0`F)e7tyhU$|$6XWGwK(+*xSRzpmPhkEJG5H% zCa4L{t*oRtnZSS1ClOt@rp~4MNC5NAbQe0?=q9Des=FtwdFQe)<1c`z3A*@QvoZ1# z6|XWH)MiBS5q{h7w+#z%{yErxTueZE=QBU#L&&r z#ai27DyJ!X?32!zXBhm_>I(}JXErFV=e7g4mx5(QM+I-^i1*y6Bmgbv8C)*=m#U{7 zUI)zH7r7~Vt4}~%?SsOKC`MT@7N}n&YBMcc;R`GGxyAcqqph@6;v?fUk5}JSH$`)H zX~@(0$gnq|B^TRDN7y0{<1AQ^_TsS|J}@C!(hLi&dlZ?;N+wRyh^6bSfGa(ebMG!t zpExmN>`_7K(H58Pn&~zBDwJ$rHJQRs&2(Y1+_=l#kt!c$;vUePMW!$PjY}TsS2|S zS!0*@&&k|#zEi0M)|N;+f1M?#M*A5}m5;NnY>SwqOUiYd-hdC(2QBeI@3X<%-j2w2x&pt>Ce-RLOuy3@ zr&x@T$b#_VOjz#5l=68wg+KEaGP=27N?;OkoPeq|l{N}Jm%qRm^$mZh<4fgl1rc@I zVSAnZdVjLHX_f4x+2{29JWt_| z&Jc)0%Q6>kx^=ZffDb?7dKA97=FB2%YYeMNkLN=Cs5^!SZXYm3RXH?R5kU)@4!I3B z&0rp&63Hl}n)gaUibyrUAe0aML7<})2}JAMV*G0z6~9%hpy>fjHz{ir7aFYEDSs^QMU zpb3ZbF6~@}xHsgBHp9gk-9yxKdJv_LY#9$RPx!hAozNMQ*h;6w#y|LT~ zL{C=eV{6>WlOt%R$*d%g`#?KSRfv~7hK=!9#{5;#t(c_~ViEdMRgN)}9Q}Ih1p28k zi)xNJ@=9*|l94m-%g#u|Bv)70Or@gNuFiX#J;i3jyzDaFG}snrI}FQ5IuSbuKqEKe zDD?tHA_&Y$)O!Kep#u#%uel&z6EkMYSICdN5_$@wU73KrH1@Wh=}uRhS)1dwc}ZF5feiiRQB>mT~Im%YUYEiiUt|h z%VI4|+Y_83D-G}8EnMq|Y9n$~32yGfHtlX#aZOR-(=?+~KU+(i>x86@=syU0UuvL) zB`Z&wvvoVnr(nPgrqiYFODzh@RP0FWmNMMSgZ=SFZw#t$CYGHM9PNh6n5SUXD$LRr z1Xo|R9%8x3;|bhMiOdkoZwvx1)XLjqg?hc8qE^z@z^;;7o;&xaE zBT~~i(itlwE$Ou1(g~rzS03~f(`GgN13NSHa>>~w>uYxmaA9tSOd(mJsN&&)o&T8Q zk(oNLacY1Spi}}-5Ynn&? zWn1$~OaheGlJ5`Li%_(QANH5wys=W^88!5N4;P<2G2rfoF8Ky`k8r@`8e4O(OU!%_ z!RI$|P+CN~79c`p33#tgBo|^3Dud(BiDK~?tF$Xkdq&CMlziK?Vn!x#`0O%FU_Iz+ z!S$r90Xz1jHjb=F2Qr0#^5$1;c(U&MkBvTd0#iN0>albLp6El9<9vzd0T*4FC9X$r z_A(Tx-}EBTAaNu-mIOQ0O_Y@MSDuj1nyvfV=wZJtkxS7+`dt*xbH8*IbV7 z7@wEF+f{XQth3Vml)N>bjbI$N@Vwm`^VY&~9#-{g%_`Nd_E_4e5Z~9nQpSOJSGq|# zu0SIRyX*4RevuWa#&YhMQB#Fa8(3gBrZlVtFE@wu`9}X^UP23)!(Hjc{G2PyMHSaz zOJ7nMgGkjfrYp(*BxXqM^b{@ryjsTUaW{e&7CG>_y#Y@#=DI%+il{%saoB{&u_u_6 z^7h7zQ%h&M!(Cr6x~vMwmnufvMfiTJrXU zb-4g=<8k2n&x-w6KwWBEql{>ZpNk-f^DP#HP16$aSO<%Fr8;_gg!LA-XerTuP&a|P zX+pux1 zy(`?=`W=>DbDc!`;|%<8V!@HT@^A>|^~Iz7XmRByFOAAiQ*unMyVCkGDe_y;=jJ=W zGA`eM^~TR@<(XktKxSd|-p>N>eVW2`c^E0viQ$$Zb~(7QC@7%s{0a z7_DXi?!`FX+~HGkZ5uU%#iWB~9$odP#GHDl>%qhaAz>pJG@kLI;E|QWKyhVgL|^ix zi_x{mwHeWb+a%H^dZ2O+Ogr_;#P{Z==ci9J%8DH=CiD+l32kwV>hRUV z&>2x~lF?o11(w-{&()1DE~Ln5F3g;2))O)MO|Med6x_BYF=eP--g)9rQPQFWZvq9e z%1@aZJl`Sp1vL?pjXK{kSN{7TyJ=VX9g1u*OV$hkk;zW~md#PaLNbX)7o&sjfA;FdO!3)KH&IV8Xeap9xxf%v)>nx<9 z`qqLXx7&oQ_hshcPnn}ONLu+2Ya~Beo3PMh)sB7q}I!PsxV-?|s z(mByk!6{yKf(VCtY2S(}(byfRQ_aSId87DXX2d() z2Z4rw){+7sW08BUZCfrC9y=QGHs`342%$fH>&}4Tq0|OobO~uqQI?PvWLqB$C5&Hl zd3bB>uANUC&oDBAmx7OOeYe-l4`Lhk%kpHB(?F70nlUNFyQWC{G<3hARhn0yv!)OT z5|`!PInjr|uS)P*l``D>(FWzMjZASkH@)k)eR9L_X|W9t-vR(4MZB)(2G$c)s_~MU ze%+MA7i4*Jn<9)qP>%#`^-a}e)ioP(BC;MW{5+w_MW0krNkXMH&dl-Zidmd~f6*D;|Xz>Kk|pwBEjTwy{d^x+jv@8-|uC}^&~YkOm#T3h0M2o+tHAYT!2 zoueofb1p_o@fab$uHT269ShhIT4JP-=$M(6!V9@zPZ?}jB z-m|?>QQUpo5~{d-*A=Qq0;j_xXZLb^CMv|9@MY(yjbNlA*Jwr2}JcMACypUOBp1QLQn0txQ!5G1&}I|O&PK!Otp?h-WU!4FQ5;O_2zaQE{y&%JkQ z-m3e@RLxi4ytit)>QvLVd+oK>Uixdol@uf~(TLDsU|=w%rNmWWVBjo)-v$a2a3*8a z$s5?gx~NEs!c>fq>;ne~mY?K5!N63-pg$TT0>`M1Qra#sFj!qLKiFP}-)1l{eg)Fv zpVT}Jj-I@H)wVmJ&~_@+d6Ynu_i*z+D`_I(ROabQBPQsa7b*OYRqn0IpM}8FOc7x9 z$4lMX6(&1}i9-1BEEDA5p$@eiCI9?GufYws7_j$VlB9>gO^R zjBm+~>HWz&>sHUpzSZKQKg+v$?%j$+0c;y6IM;AEz}D#dW<(s=NW|CWfL-^e|Nrp+ zIXCnSK(m$j5mLQ%>q9t6SxX%u6O<(7v~`+>YN=JyWu$k0Y^L#t>Hxco9H}P4eFIjZ zr@gtP*Bi1F>|Ej870>uoS9=a1TpS#9H=77o+;)L#g$_CK4;a6<(i=%~ufB;g@JJU z-qZe*BXvfdO9=Pfq~UCQ>P$NJ%CowXzL6hHFIr?Ohd+fWW;<$Ghr+`KzT?{82#-)K1HWfgVcr;?V4LcsbTa8e22s_G^xT<6C%$4;4UG)kjrXG;VeD>P21;jAG9;qNbS#;998><%XVcL zm)OqeJ|w1*CeW8UnQI_REER*8LTmeG_CC5aWZul@0sQ(+by|Fw46DK-o} zmgPH1L_X`BXz0!Xq6}aISjjDL2&*WbFX;N|s}%Lv3ObzV)5!3(ujEdvuvgVD`tgc# zbU2}fmUKW<<%om@Xp~6l8H|CE%nGk|dd|A;fOm7*vUaI|ww4)tWGts#(*pPhZK^jO zdj?2@A<~&iqequp)K0dtX{MlXN3*2J6!GbrCy#VLee#2vGGpNm_zjhfP-ldPxl$d> zyoq(UabS6k6FUZ|yi_wyN_d!_9&maefk_R#bB9oKu|FfAqdHKP#(ur=6Y=`ScgECj z*v=160Aoj6+pK6>Sz}DpIyphVFCM8@wX`nFmc<-lC$(V z;jSV8w&al`YkJNI(w5!q9kCqJ*3}_GwjibdjBYxj z!-vFZWv`o>Q<58s4 zt;%3(7)LDOZq(ZvB@XGyviWNpdv$&nTF@stO%n$Lw zZ;pxQn=0|Vj-`TI_F{CBVd2+NU9e>tjFLyQ&a@t89VO(-;GNj$S~;I4i;qhq6NB8p z<(x#jUKT1hoWBD`8J=MlEC!6dGR=!}@O(^x^@T?6Adj~@x$QAp1eVh3dNT;dye)Ro z=1MrT8xF2~i9}Zx&sH1@3@|3aDL<{>t~n&U4N#Sa8$s z)A=aZKyYJE^Bt)u-aDzVJUq8So%C1+7tTeyDCu^cs_R?EY>m)rqc}As!x)VuOVbTC z#QBhd*>O^U0p>?6Z{_h1hf&IX?r6Gm#@H3%A(m z48d&1EC@Z4koQ%a;Yi^EGvS~rHYJ7tD{$h7Xu*d#{KDzIeZlxbV(KqF7{@C60-T7Q z`boW6TN+S7qXzGTotXFs-{KcPW@CRCr&{M~Zb4(bPy&deN zbHM6{6xg9=w%ZwE3fwk8nHT@^)5JC8Xa=^rphl~_|+F)8~PW| z%uQT>SdVY`iritoD`a>W)LfoavxD>p+*@GJo0s^uYKIBq5AKSn-FuACDt8KJ`{==QV_o%tXx20|Hm9M zfo5&y(D~WB#@1iq;5eZr51KO{obuW6sG_{a0hEE1x7Mx6UcQUv%@7bQcIrtAWqXu3 z&M2>nQ zz~>-4Sf@sY#b?H2!z86WxKM%*#PXI_Oty7+6M#2ECS}Ut#IJ@kzvg>zl{E)A@9f2a zU#Wv;ZZ}NK#HR*4rNudGVv#*6L^`I@_(F>SBO;xTmr+w5Vl5Wwhz`0%`S4<||pmPp`k zI=YCyzP=DI2_PGp_Z1>H043kw-{%-vK&=8+mTFbq_8d^Y6kjonnG_lUI)!Thx9b4B zJ%9c0J$pv5ACJvw`l}S~G3yt7Tc-v_3k$oJOu04-87zJR4Xq#cH#TNlv%bjDAvQL4 zIBPTgfzX~$j|V*%u)$$cp6D5aU7TO*3RS&w}N% zLAYH3b3$@Vj#K2>Vr&JI$&b}m)gX~a;#tFi$#lTr_;+UnM%nxE{b zjBT~DKxR(B$>6f*V(r^G#AK=^t# zR>+=0_|cG?9h#MXw|>+m1!7zyw~4N&l+vTyCK=-Iu6X@lG?JLwtf0yqZQGqSXve!e z|0=rd!>K>^Sd1ivs2rVibgJwn$~6_(KBb>Zah7?*U_D_tlLxof;~k-2xzjScYpLO;0dOqOqD zh5vdUv!AgQlu;jbz5fVf8C~Nx$t3iAiE{ThvD;ugGG7ZH2G6T;i{wX+!J~<S=GD?N0RMfvwrAsC+1IcIq~qQ4k+`cH|XLkdC1w?bJ^g zQ7$MqZSJeBa_oRulHah!k!?3n)L?@~i9{8Tl90vMwJz8^=gJoy2(K!wh|spwRo#BF zEpEmfg0(Men4QiUusXm5l{ze$w4~vwPd;pQ%fD1K{}Pw%m+d!@_H-peLaRwN!HB!j ze3kFutf|YAm*^#M`0y?i4_V;yAbTLJmS@Db>W4Y`{X>4q;B9q&3MQ{)@zHcL&eQ8+ zx}{zyN3B+-@nSQvwyKgO=o35v|8IIcWM}QV`PJ&lo^#ga_`O9&GzwFx#%gL>)EyIK z@YeZwQl_n4c_0l_yaUFMA|p#CFUB8QAU>Jv#l<=G_`aWk#Tbp9T@{?XX1iW6VJFk^ z2@O(V(Rn9{(jPdJ5qZ1nZ|bY|T`|NyW1EVu@?qJ}4-{@be^R$=@#t9KSqZ#n9*Ijy z8VGyVFRq;8Zg00MuSsjc=DLUxBfB?992sk?4Cu40qNIcO3H-fBQRVqP%?WbN z<4LUgIR}rw@CV%i17C6(72^(1DPB0!RfLP*UDc~yq&{o+tfx~1eXDS*&pA%>@}X;u z+m&tf0$Yau1L?1BdA2OOZe!j(5otLxZna`#p9FeDJh7{FP%?Mr(xn8z4;{e@8^Vo} zS}!4KUgh9h(rU~WN)_cgzO9fcEslW5FxNP33ryn(8!>qJ`k_!(NK>7L2H4pOTa30O z#m<_?;Tn#1w7kB($F#iOdLPwb|IXAQt9vRz#@!A(!w$xfg3>bDY|9Ovkk?DVG#)}r zBY^cG&R-u*I`&nz0LvHtA37<$nWGi)XHkuI45lFBzA%U++e4vRE_!rjDP5(lU~2{8 z=#SY4Na)QUO}(K{FimW(mvz3I^;J=%X$muAHjQqMaCp=acO}M)jLhVjY5iea1Yw6V zPzX}o%A_8J&61RTi!p&|ndO5;cMRF^_v3BbWzVpXU1buj6FB`1iJ-w!USAk4fG5F!*N*mHw)i;{mERL5_pY;+&@2^bndM<4U=K0}J z&RWsGKs=i-=H1vraJc0;VrJcDoqO|P^QV&PS^z0u%n3O!*WZta-!2@cpNO`648zL` z32ZIDDo^)8XGlQ-ufU83z~jbrPz5Xx>Au^2Uo1&0#2iROWcJ_B_!`)iUO47XiGk@KUhTOdg`ET- z3JPrddM&8Tm1O0+UR0jsVV2E1Cj`Y$yF%hceK~%$d-&Utp1hEm=Xav7+uOXPiX4kG>?#XB zT$&-2P%Axg5I7qr8(`G5GP??SjGsxOj?{5Xu2-_u#0EWKA+?}^NCV?4Shxp;RO#tD zNSAqp7~fH`9KNEdKvLu_6E^Xh`m^-MlLKeJ_RUD=bRunjuX?qE4?BDo)``hq;cLgS zNGO6uDR*TpL2wE2@&+V)pFNI{y$4B{%ABjQcPe3Juk7t74 zv|y_D%^QnRg25>#cI0tgRj80AlvEkWae!9o!8S|gg)GYUg1@mslX zkj41jNn=qwUyIg{a)P$iOHHOmioe@%v)Y^YO|`o8rq!lJ6Z};pUFq(b$?M}%St_te z`py6LB4!jL{@xsF%PgBapsI$7eC~$V`vgLu5vooGS$BApe7(wk%gKLT>?TM!FB}NE z-i`C1>G`K{JX2`waKhIk1xY6 zCCYIogpG&y{8Yg+(nD!?BKEp%A!nwq#INy@(#Mehm=?e5XL`t3`~4flq_J2xbwv{e zl8rpm=i}7{6QPCmo>?%n7?I^S9c(;CJIG+>;~g_G1B9k1_w9!1#sYMu&aI_JWuM$F z!Y&>DYMSKEk$q4|;EivxKjgW-Zsfh+{t4gTdXZL8Tni>*5^LaaxY1f7s+!-n{gS<~ zryqyF&D)lwU5AgQ!SeH`M*>HLt8DbZ{eX$MYI#hX?CD zgx9Xxeg8llww-zSGK)7C2yj;4rN)YRE44XLf}rN<0hMj~>=)wK#s>+oA2Nrwe-x0P z_GAkgX&Z3v=YhIm<`L2|5s)xlLzRAY@9#<1I7q3l4fOQbM85DxY?6Lj|nLYL*v@s|B5 z@Rol{)=v+bS=Owi{K$5EVX=op9wy3U!MWrDoCIWEh)4q1#mr(i&)2Cs+*ga09GGv* zzosYuiT-tJW79_jQ(D-??;v_m^Yb1TO+`XalXq3~i!tAG-Y!|bXQl0a%Uyb381P*2=-|nT zSM7ks#LSGiarm%rJS*(XGvR>d5oLQbBf%FuFd#!gF$DcWx-Vq;lJ??v#A&XVx1AOd z{v<&>)@z_7wpfNo7qtrJZ;LliZ;@-T;n=^PqNT`j+>rzB-_Wwxy2NVPIdT3W{q=z= zojV^d7F}$8C=jR~0#yZ2G|`AC@zi^uWI>Vq{iT=zR1knNG_d0d`?opNdxz)SaB9F- z(V85vs$~p%0~9P?(Pjjf4-YAl$=aT4nLzDoTF)o=&prGf59}ip4|jwE+Ea;qT7h|d z2fEZuQP1&rXG3k>J!WhH$DSrfSHOI6af8_#Mef-G`q4&60wOgX_AUNvWVg3P9v27g z%d($K=J6Ix_gaSn%-JOc>+f2Mv>H!gL-M0Pa@|pd3C!1ZaF`}gbX+ABWh$-g2VvczZv2C_Q*}he{10X zIJ^Ajp-W4?-+tvD>Ob%k)cz;bJdjYa%Ir9E>FL1oc}$~Y{Kmj!LLXFBw}$YST0zM- zx8AAslQpkbr|_s1R3Js?M&{rmW&gCK8yy)9@hW&Ue7EpO0lnT|W2{I*rLcSPW*)4zk zgEsmXcE!6U>2CB1*`f7}<>CQ(KzIv0IOPkJ%S;L!XU6RUlA#PN*@cg{sQ#=~%(Sf! zYPdek3$>a{%g_e)s<^Q^Z6eS$&bi4hO@~DrPLP(1EGx_)dMb0UF^`mrK{;f zWs4^p)9p*6uLACNo6}D|;NjrxmjPUA$ZKpSvbSN~_71Qig!x9m&wBcZ@_?r3G(o;$ zBoN=rHH6|P$x;9|zbCm=gv|4>I=-6KrU&X@`GG(wXSWWYL*~G`wPd0zb)ctsjz$)5 zyxSeD0F({;{^mN)beJ2E?umRKy(r&oRyg~MAIN`qQ=oX#hS5l+1Ww0(!qkyA-H zkmLbHWO|!C3*kHrUhn)@6Dd08oGC3oPdgy+YO)s+mY z45xSV?qOz0%wi1p#ef)?n}5W?vEYv%+_v`ADuN#^Kb%y^OR7d-u0W&wWCkwD) zVl)}NKmV!F?oKOrrS|;0*)>3N|AyA~|20(&Ee0TCW(@ogoEAu+RToQ|09XhY7dI#g z-Q()&>ejc7suwVT2!FPnaR>>e#l?HA!QxNm)hfWcdJNTk*oqP$vHsLF!?#nZUH_zstL0eFPs`+M(TRva8F z?k<+!AP^Wo67Xih#Uh%8aA|-mpmQ8S$q?&K1rmn@QNY<{&}WKe$OA*|3nv4`_~a4N z5dd`qjQH>0gZg1TqN1(yW7Hrz`CtN#&gS3<4|jx4vC^)~{V7klAIQ(03|?K8ZEFqM^u2uMs&xl_z ztA4OgC&fYcVY&SLzb=QiZyy#YAx-5h>+has>7nEVw+XpR)rhjnj^)VABw_EA0hqo_j{xHs5>}2Ri z9do{a{bajr(ASa6?z!nR!QattS`ciz>>s77e?L*g@9TDp(hI>Q;K=9JC!TpnL8@+M zmfuQq_#eg0_V#}%W&(!rK^?EsU7n18X^c9Lxj5E*%Wm=W$R}t@?Lb}&)ShWk!FxX` zPF&G}mY>VN^TDTd_&yCSV#$2VuRcC=Tlws%ppwy7hf8}sy5c{ z_W82`w1H;T$$4eid@@B;?K<`jbj_AHM5aikn^gV33xZfHIA$wFm zc6E_3#ZX+8d}vb7G+7MQo!8j{-H?-e1PABpjBIW%~3oeM4W9&uebXOAZ?gtk3(}Z^%(e_7ZJY!3{ z6ZxH_%|0(nrqD9wSC#0@Yf)Q-X&>x(@B@oibBqcpAv`B10+Abx_oZBwT-`gaKq1uU z-B{Lc?ew|a_=bZtHE*>yKfyla*9#f z_Nkiecc^zxeMoNHL{BJp+SHc4D;NavRUntmL{JQMX$-!ib9V z)J(N=ew3<+s~)(gI^{!%LQ7!tvpL&Ed#toGpx@VTVWcnj(8N6~hib>=um#%u87GS{ zb7S0Ecl%o(czRox30!u~j+@*#CaJM$MQ5J<6pzV}Gq%-!6`Urd#}VzVv|8Pm zUjX#fXPWE=vRTKo-HqsP4joS^2WoHwcmcLxcB`L`^1>>4EhNvj#Odz%E={!wo6Q~< z$JeS;pWSv3KJ65@y3cYYl`Rb|=;Ph~E~?K>(jgcBED4W;v7arzH6L#~=bTYZ#9UVt zeW83U$#D137V_yFKZuY@FoU)Pu_b|YZkP;WRO8Mc>PMa-`Z*!_aVe8TNL}77HC;bD zGe4>VgTMr}rkpSIsGc@$k0$4yL4xy2Nw;Ht_}N|_ppgTh@lE!~rF3fkXU+KR>U8p6^MQo-fhAtsxHjRE#+;r$z zry~O~o-V_%SOA2o^T#))FJPU{zE2p^r*ZA(l(H-LVIJ3#V-LREV=I0!a^?g1uJ==! z8+n|%T5aCk{B#=xe8wDd^Oq$z9OSd{41 zqL!?&83~aQJ^cH?{|9iQb<82(kB5)Dd99&s4|MdusiMDsr}0teuMKD}ZytlZj*ZTx zT)L>Ku8s>sx$w}HY#L4N)J|#Idx5m@0UX<%06JB`_HU17F&@}%D2F+*Vh-@p`j@mc)40#u>UgE~q=LW1*AQdJ57I3{V0 z;wdXDUt2p71lO?Oc zW^~uaSpY~+VDy;q0ThV1xN8|#>cGH2$n2JLBN5rm{vQ|mhuTTkGLPcdfbIdIs!tVw zvUrs}8afN9!;gdq;!{@8Eb$Zt4ZuJWNTVq1@IOrU^J{$xMr&o)T9ge90cz?Jfz?+ z{FNFRfA@^yO^w@)QyYVjY;r#R9uDy>eYXnq&Izk|6xXI4#P|_932%G<2m`eL9h<1K zrV@B4es9keWnauIGq+AQzs7Vtpdq*8?LJ$u&%cR)&H2*nF2t)O7Blo=17<*>@+iL5 zcHTeXNdiy&ui>ZB?|)WF?A^;2d)E(`2zsxp+-=@-wyNw;;`vfz*PLzo*)DhlO)S`d zm`(a=I1@Z&?6<#ds3X1=bc%N|e*cYxiOC}14o@yU;j_3hs|21Uuj?8?_KDEYu1|Dj zb52N96(xb1ThL<&J@NsszTT&aHTr$0z;sm#%C3M{l6H1>@kwkCu4|2nehXGir@D-! z3T6n(Uq>N`IkvrAD=R7@vCM&`Y`AAxLZ3#`^v+9%=521a&qtErBBZtsN^!#l{DLw# z`FRiFdH&8E>T&sLOMvNB8%xrYO?_OvZfe-xrDfsNkuWoCR0ilLN=EP;GEuglCInb2 zI5p%%Q5bS)!uY24E|%WJYN82xcjFjtTTF%$_wy3m(qAyxdk}`+?8IIaB$El6gv0VQ zrGte928{j{8%A2C6fzCW)KrJaZ&^tt5 z#&|Uw`x5@Yg+Hhn5GTfIGo_9dU7AuzOHR(u&0g-k1s%jst`RP1|RgTaF&y;HU&yguxBiD2b z9j&p5Vv|c!Zr+s$W9agq#J_08JGLaymy<+DjVmi)S$?ZDi%F!|XI)VDi3DWH%4VH7vj z7f)4E93JO`Sw4HMp^|(44%&{edz9(XN$hmU4_B*zHJtP<&l<7wQKCl!jM6QR@md9 zvJWHGqEI}w}dSdX73QF+#k^{Fs?iJfth-2T8Rpeb1R$&@=C z>#eF9;}5B#iwK`lc!+f2yM58qsxJ^Ydr7`q@s~?bp5EYpW)x ztjZ#!>WQEJz8z+!rf^p7HvBuwW*hLBnCx7(zG6}TbtfXvasoAaQKujG-pug|ufu%8 z3HWqDo})F?@bB2VCabF_U$J0$yBgY@Q$t$A)VlBPh|?0=kxoxxFLxuema7aE_X=OM z&vDv7#;@ft0iPh!2lzVu{@aBw#~GZdC%zCJq@Ed<$3MnP&kIwv$KtcSo*%-k(*y4p>4*L~at^3=#iw>VUOG+M}GgfjyYUr!DJYH7%GWp}X)^7n-Ywe1p zxO4OX8{mtmuUjDf;h&y1(un-r_}mIQ@M+3Dh3d#W_I4j5kNQ)_{TKyd{#hmb;y9$J zb?W8`(`lxZ?nkW6obq*Bt469;2gc%EGklU)! zN-*Cw$!;=d4rN`2m;Lo?N;>YR6^HNlYr@gj4qU{S&khMB5Nzb*#F9bRiiZ?7Ri{lN zyVvC9XEo42IIDLF&EGY%3`W;b&B~iwAxbpz&ud#}D~fNyg&+3MjTh?~TUCOd* zrvbgEDiGH0kG*WGMlX<5tn`4g3a#pj_*)5TnqgY@RC?}Z$;tdkf21@#zgwX^ZC9E zP{=XkNn%?3y5D5yyT7<3Ovd_HmWs8HUO%VRkAQmjqs7dy4O}d|EVGkeuSrVw|E9E& zMT74bB*aI=OcaqkKzVE8yn)OnX9-zmv-pN8juZ0hu@upX)NJm0!WUe`oJgb z+732qQ};E9MhYBIfO&5c!-?(ya#<2Ho3-z*OK{PB;`_inT`+yS(G>T}2bRdeuTCv# z7AJEqaj%frMtfMBPEcQJZ)GC#6;9(Hz%#jBz+NYE20Uan_=}~o3(Z{XXNc{sWUbo0 zKS066BfTPq0|MSDb4;Me=1g`_EU*LJxTu+)LOR}hjVB>G`=Nr&i&HFq)Zp@Kq2rDo z5LUL14ar8xaSHv#G2EWuB@@oXK-ljpIT!A`7B*>R8-VYgFww*>h`4;yq8;d zLouJNJ71Lf`Tr|k{Rg7IE7%y}#M@|rC5mdaJm&lN?>XC@sm26T(|4zLzMic>EjynR z;D@+)Ls&#au57ZD9#gX4Ti{G@Nm!yT^XbbgaYV`H=<20xKOV@?wXnKEX8sybPV9Tp{c0I8u$DQ*Vl}>AZDmJo z@nCiONdRFk3q2Q|Q$wA#6mh=Ih9h>JLVsBBRKI4d!-aP!>!bv+Wof<^*jKRf| zk`wLe<(rK4>EWvif1fE?tGF7Q~nlLUkzja@PgkhtU#14UzcT{EF;$ zPN;}SdMjR0=nmb-SQ4L<)Q%aApG*+bi+OI%O-;bf1{ciB63f^i}PdZ{e5;0UM5jBU8JRqcM`q~L?QpRL!` zCZApNJSleQF&n!CrapU?$cY9ydsO*DgoKtgyEQq_@^8X#pl-@T^@qN6xVgM%{aiD) z!ad>VH1~yW9Z&OQGq%gU$EKFyC({5l`2ti>gD5#~xR_b0Ppt)hA5$(rL%6|Z>PNDa zF&OHlen}b^_0;0F@ej~B50Y$n8uR0!pI$)LSH{64;^youM1bo^P+DCLTg68w`Yv_T zcDXh(Mp#hP-|1tOCdVE6EnDdC@4LYQ|P`o_2SJ|r)=qZFL_s%iBvnT z_e1mewe8nkaAz?APaCX%15(H;j331K!TYvfcjmnk*JOL?NKjwmHZaZrWc^+( z3~gw4HQBJ76YTOECFJtP0XgTbMmuukOb0V~{yOi+y*%`LGPtYwPaA2V5&f_w}^CEdFUt^1fmB%t481Gt(Uhz%xsiDqx|z{{~=))fzz_cXN9c3vND?MqdIq=nRqr^f!8l^+;CIE#hU06`=?Y^ z`*#39wPCKU-DXkig%D)6 zjeAzPBXY4|2%3GGz;~Qk%=I4P`-$?Vpx2le@YDJPY+cnORsFZoTj>xCr}Q)U9_QZK zP?n7}GaYM(vLDjx#FIl$4OX_~8>R2;Hl#iSZ;FivSxB{nZp4%2WPS6ZKD{CyIqVmE znLy8qKzK22;^6|>8+r+*@W-Q{_qE$+mTR)N+(!HhO zJx>eULQ{}YUQgQMJU^+)*T>AtYBZXVxGa_%>pm|8XYxSA<)NdNI^sD@S?j>>J@*A& z#`cOlS_|$^m9Wo8nH=A?EPIJ>tR_EQ5ZIr?ow58PFEhj}wRz79e=UR-`iwmk5p-^P zy5T>FUIH`fc;Q)*hCx5uk>wpG{jD{o;|$rz8vO>Bc@>K?02|WEa<6lHrS(9v@d3@! zSwUgT0)Xz>8U(z2kTX=oV+;dj`$&4~*sU+`>neyWJZhN?RaU}OOG-CJ|B7N_LX`a) z_KfxU8TTuhlWS>t9^7w6p03menwC(aSujKvTWMJH2mJ@WCgb43IRc^z#Rj%$`zhsZ zXer)Td(EHbtzXwm%v31oX_50L2cmD}?R@=PWnurYAx?Kx>_$sVa@aK`kr9P1IDX^HwlVtACx}y!+2PzneXN@AW zl=O8FIeZtxg@drkvm6gypxOfVMb-~jv}xa*L3C_9|{k6u8)j-}*~pCJ#iKM%pV z&{xT4jDS-^Q}rXn31d+NB~*5U@5mY=cQBp@i!7Y9-|wGUU@tsvOG4%CFWh2~G|1sc zSuY5B@>4+pt?isP&pbnKZ;x3P1IGV)Ls?O^9Mio7UYo9eh2G3BjsGNAHyjDDJxa1e z^bj0MgDq`aUybHT>P*du4?%}}p5?rZ3EImy^A?9wQ&C4ZP~@dn$g=jG>iM}sS>ev^2dE3nwR7+ZvT zOr;V9aBoDin12+gBo-6_LLEE3!uC*VWGZl2-?t>oaE1+eQ*C zOgT~{@Dr`Ertb@s|Hx)V!nKD)-q5)H7?@pYW5mN}Vi zSn>`~qKA^q=_0F2- z8D;D7m3<9Y(CpVD?x8djcYLxY@|~XaZTdEpUt}pi?Vo+!Lg(weAk!@GhY!>AT>Hw> z{p$h@pid%P+B*G0{N~ScHU;7IgNES!FQ)TU&<5dVLtz9TXg~*J;s%g3Ij?Mhh($D} z2%W)c?Gm9FGE@h*LPC5y?YUE$(klnpo|F$?PKRy8I6r)2NKTh0$A3r$6>VIUx11%H zAM$7K6noQ!O3*P zGyS1Dgv4AAL>If)itEwBUGSjJT#=GGx?nHnF3$E~^O;|y8(IMGo+%z!&eF&{qsfiZ zi5sjxtP;eEbVx!xpP0!{?*VY_m8~L`eBV}vH^K`pcK{|%VduPO0^1V+-&Qh!(k{nm z+42RS=-m5Lqj;L*xt}j#9Ujdo)9HNJ-0nFq*8pB(p5;lpsHPJ1v9tovpgR-gPd;AU=uxMkat^f7;}Un|#!iHNXVlk2b+i z5-||}vGYxwl$f{B^(CVl5D=&OfE$3* zvl^!NigT?Zq&xprPxiE!7vYxplXOm)3(=W_VOT8XVkj{W!V&TUOM>`xyL z6j=bLkhiF{GLKFxdgxHQ*~`^Y4Pv#BmdGZ1kh>!tGe@yYN`v{v~;D4g-#GF zNDI9eLBLl)P!tKhCelmjT}nV{B1ngb2#9n-C-mN>g(^iLNDoA6fXu;nW_{nR_06wY zvu5TGF65k(efHUBXYc#DpX(`W%e%D-UJkIiFoxRLS}7*G-ZUB?HMyQCV=JXw4Nczj zy0Arl^>=L&8{!0&G^nLNUgXzw5YV|G${h5ajmU*ZzyY-&e@J^$1L$n!?0ss0Oq4PDb0Y@zuGib6ShL>yi<34=2T45yRW0unZKtl%5Y>uGI?)$ij44h4tKRv1* zk0~(M5sHWm{`GXyP0VYqz_%@`<-^BI4|>g=u0*XUVL{S2 z{Nk>nq5XXYUJ~MDVmS!cqCPE&gL*4RP09PP-Gwdxgb2Yb=eAf8t&G^XYnx6n& zU6-;J=jo86mpNI&xRRADQ7I-SSiS={O9^KeWd8FH+RbwD!e#!refQ*^vK4uH{#$M8 ze&lgp^J}N7kH#sNUbm+`>h))GrEeL2A>~JHpUpM>aw7yC4`u${GK!S|M5cRxo4^v7 z^tBrF^x;-zu2Qvi#y!n(uSLJ|SH2+`5#3=I*nk+%@>bfXKff&2H9{e-uOplvWiWhS zUnoF9y@$Nurx48>f119W{Y(WM!fAjTS4vIuZhtMk$&uR9lHr|OB`m%2P-d)g+hU$% zYo&j`bxdMwW_;;99SAACy*XFXQsOASW0{K)V!R@Gk*n8fK=V&Uam573OChqQr%T=0wU-&1)zt&s_4TnNpJ}7;E=Q9Xh~Ltw8>VW$IL1dql=)s z9fJ2_&g(wbsm_J}m4N@ZiFvIr{VE!O7yYi-f460ym2ps>qit95uaooL@U06dNo?ETdZpQ@Ob?7k?3OovIzQdjqTXLntmEY3Q9|( zNUvEBIS(m8-I7e%wN#5wydmcaTad0u*)(?ab@`x!wduo}Mw#~uNz6nFU6m|A)*%Uj zs8sw+pU!0U%Hl%T)bdRTRJt)?$`XqD^96ARt>W8y**#K=nWtKXjXq_m9r0^Cv-DaZ zn{-6xOaF_Uh}g+-m%Tmmt-~2A67jh+uqB8z6*aD7LaN(H0DJalw)`kQIEg8-+KQiT zvWjhxdcuP@GU@3*9(^8jZbRR5@SSF`vFMs>W*u?@zlk@tPqM4O_I?<(cytFmZNhz< zS&JRG(JwKVzdN(K1O0j1lfFdmK#VW8HAYdPH#=4!Z_T^-!zK)5y;i*N;&7VT%dLl= zw1InNCUNf%15^Ziu(SK;BWHqP9cnL8zBjwC(9R-}j(194)Jid7YywQ#SMvX$jeJ7#N^hhYC{dAXBm z=P{rCTeu2h{t8!n!yKky& z*@n2`^LFzKCMIo5s(QC>i+bKSHE-TQuJ!E@V&9*~@6aaG$mMEq)u%4k4cPCT^o7Lw z7sP|Efo0#O9>?-COpNIUGEJh&Zc#dQfF{;IHf0IA*Pt3XHT!f!bFN(7dqqWZ`_S~w zk(|I!=tiT%7M{{sCU&Li7$n+tJpX#*KrU<osGa$KJ$UtAG9IS?vvt>Pwe=41)^C5_BXW=zXD*t4 z$X~f_Cl+gON~LY3!k4jHQ{94|PuVcMCM8Hxv<2fu|6$s6X@e8#?z|2yje5dznKwO! z_O=n|_P1A(d86%l!nVJ>%CB)Br}Ap1NJY&Zct6RmhTYR9j!$!Xeo#FBb+fmaa?}@)G~Y6Cbg7s()%aMMv14 zDoF^DZ>E6Rb=(bsl07IN^jC82k`GofyOA&lPeblNWFK`aF z{OIZyakhH@Slai)r#_R#b0S_Qvj=zpoMh|@x}wBBhht6o_TJI+{qQf;AaB-y^PBw* zB-ld)Qt0g}{S+*8-9q1k_WRlB#(eNDJNLiL2d7Y0VyVD#5>dOxlFQHY;XqSKvT>H8 z6ggbIO~rq)wtBHr=*<26%;+Tr-YKY7-kt!V*x?A~I;WFk#T6`a^WV8fPwSLF+}OpM zJ!fcsga);3?3-ZJjg5_eWLH&Tz7-XT%YkB_>*`vLjg7I4kB_UpdiBZWU=xyEUOw{e z+c&TbV!tzlm9;a(j&ziwb3@WFFRcvky>t>q6}|6%zUDu~eqD51R8Nl$@w|G@3vBtJ z%o$~UUMJs)zb+C*&>Lq#n6qpIel)i_wQ8_NV5%Xgb%i@i*okP;wx)9u1~!Isp0;EH z^qn~i;`tud=*|*>FPg0l9974bZM6!@zFX>qFyHh(@VT>OPCSS~J8JgT%z4?WTQ-zo zAKkJ1p=?&xfk6moat1^ zkLoYo@wT-1;mgebTPhq^7xJ=LY`ZTRiVkQ`HzLNA4Be`X=N-Dn%~ArAj3V1f>GQ|*mdyS=F_NzBS1TyL3;!flffBy{x_s_GR zZ=Ja!iyAAfzpCT|PkJy@-Y#9<7xV4=caiS}1?+=FP;4GI^CUi4UR!EwI3^Jl)GQ!r z>-@aHanM=Bf(icOb=jT@d~dVBR4=A_4mtoh_?Vha2&v$UOD^DQ2dUI(ksr5q`j ziUue{oK|8y=y>e9HnwF#4D-0|!Xnux9}W8ICZBY_gxdE&@etg_&l=V!r-|gpGY8k} zN9A#+=onL3H!bMzAQo!Rl@ART!rF=lqy@7&qsoVZmzLB-#lE|UxJ>is9?d67C_3e5 zvm$HW6P&ywI`|~uII+77PwwBRHe*@p;#>}^hvEMq;oY((&n%!!?}V{mvI4hf&QFtr zV*^phe8w$;rh^RSb;|1%KmU~B#vW@t5|tyE`-=2$+VE~t(KOMK38>b?&3Ya6PmNhJ z%<|tnvv)2quy9+#Yjv5K$=RQf>k+t+uabYJ94A`)7*;W^i`;(ZLBB{Fc&p$+u)%HI zQ4>TdT_{p|zQf1y{ldSiI>ai!BBn5zMZ(Xr1bBOK<*B~IYLJfZjq)RDG}Ua3EKDcu3Cl9 zAFSp{Gyf8OWke@@4xR#ad{TPJXPgkQVP~dHj;QU*HYjSLcsqOP=XcfMvrW zYV9_I!s!&`jgZewNd=XP<{i8vj>xWWhp*!stnc;7ABsHq@k`k4#u9@=)oCUD0=HAw zBLuy;wn0Nl1#(2*VV3wXCBHiM!D?F)IXcn#hu9+!E z`DdzWkU+++rn}lrA-i@H_`T`zuUa5&5#cBxm1bNzvd3E}(va-!k@Drmqe>#&auvGI z-uDloL!wH+Hx9-;*T)%;im-7Am0nPA277%zDc+*n(RhNa?iTALZnU9m>;>u%iWcUU zwDHUHq(WkGS)w~DyYo$5RcG~H9=~0;iCPQrtLv+cTSMCL5lY&S*lH@%KX8fIt*s+X zV|04I$HV?d(=39TF1GNww_&<@Nckryn5sfrcT}jUfh0w|Qm!bt~Re(w`PJ zwCO3>7a=v^jSyw4lQu>ipQQr})*6Ls5txw#&5ohw<}8GkF5$s^Z~9uA_eshof^VyL z-n6;3aw)|#?KsIF^I;e__ac#NKd5T}yUK)9W`7X6?4sLkunR!CTaGk?tU9%~2lcl9KQUjB^c#L?at_y+*sA>H_Rq{~1B2BoK;J{hHhtF`thh@y4|i%- zZdBtp^)Pgad3`l^W$XTEJwr_-H9Kh#;b#(L8q;ODrObrh zG0ofZw*eL!5W>}zY|w34aCaj*^rI`$Ro&Fw2cy~NYZ6?4dE`V4@k2-P&>2vohM{rWiG0j8sVRl@Iw!P@IG2LND>zB<= zaFzc(BNRHNKzMXvf4J0DzR>B;pGvEBmWV#oCQQEYT$I)ewZiv!$eNWgulCX+ZJ$(y z3{id<*e@CN^ry;(?d^$S2db)Q@40q4>EW_RX;|Yv{R7pze+R^GH78pl(luXq6F$=> zC+o-%`wXOsT@Xh9z=zApO_smMS`C^Fnnk2YS8`v@jZS+c(laakv;3?_@z+%0r+!d+ zPXuF%)m&rBFnq?gmO4@5&;`3J-y2cbB3CJA9nVb`WF4F{({Qmp7R z2f0utRzI(2pNf8U*_p@ec}=YJ6EP062S0P%0{6rN#?+K#6m9yGGbn_sMchN1c;IrP zAGwbY3~i3TtfA~qQ6COVr_3ioTUIuLKEPRc2kgb2AkP)rm_8cd? z4}8A``o2wnsF5;$NniZRIqv>f1+sjh*7w^u0@L*@Q*!DBV6h_)J9r!@-4byxGN z?;bJJ@@KmUk+xl)+y4*inM1VB)}-9d+|Ytz6l_KopL!P7JLNi?$?~zJhPJ7<)nf)b z!4a1{3kIX#PH^On^29QC_P3v%KF`ds7hr&|x}Pd9NpE#tkJq$dXBJyN6^q~5rHVO+ zQfInKW_B|r+SnoGS8DnI?#FPTa8THUink5Tj(2_K-m#5pWY^LUKFy}0(A5LtM?DLW zna4jP;$F7`c;r4o?I3&iPTUPlsM{Y|6gK2q19uae^e+*_<30c|#g#sz%DgbiVM!~~ zA&}0jtTc?w)7rGwr8Muwrt*~C2EA>idGWH9`0);=s+kyW;o6kz1u#+V81|O4K-o7j zsJ(>v!_HBDk0G;DmKpToHn13YV^RF(enbWL{jyKi)6=WTk3YtzU4bUQ_LCrFBIDtP zuYneuDNwfcpSD@ssrj;XFhf zFEnuDpFKzK_*F-zRfy7{R=*c0;LP0O930^Of=9gb4e{x$HQ(@_@RPBD3x4p( zdyT7un$b%?(9~}(1R8-FtBY4!%-_2Xh&(*O3))DDruuHdKjCn4Yv>9{O46s}uqLdhg81VPCS&nOi zZ;qz(F59|g1p%kK8PHS1j>uBAnE^QxpwFz7IwJ%=uPKvU9BjnFGN>uI?jml)^O+q3 zeA<)Mg-K^M6{UhZ!7@gF8#{7EN+vypRI;#WG>r6-TtfZN1mDe-qmABOw>@*;%uxYO zByO3v_s(jY9JTC7B;eG%-+C*3SW{_qOTtW)rYp+4y{YKStVsuyDJErLWa(fp(VHGv zHa3PlKJ=^4d2qD}(6q>RWO4RsVWVv%b6EC+F5Ola#Rp!tqaZuu$yr-&N zetJ6Z0b~k(22;cCGn)h|;U9h`@$5%-Wp-gvN8cJcv47|j1y2Bh0T3x76U&#}EMHwH z5k9ZD{pykd%_}TD@!3hHa(N)0=RY(RM;kTgz$5Bd!M<$2nHQkCzgi3Fl&aD&lu6Np zVbqBT5<GA6y!r_fN`te!fPc!uk|g3p(K6MLY?=>aiGw*jX;r zRU%71(nvf*x@HDA3sV`gS$eqfqM9U-o5iT3;p>VPdK328*wm@3zkL`oT8|1J{}xT) zy{;a|+0PMjn8wZ1Dt)TJ;w`1qA<}04LyT8K^N-e)nHGN#sV8Z>l#!x+19RZ2c zs3iiJ*t3O)7WW627M%{E<4szymg(j_kSi#ydjjbxdSc3jU3AKcJB%z5#Y=ia_oqS% zjjEC<6#Y4eD!9ttKxs90(grqb56ix9+`yi>(KpODAlG77$SE4pNm$e^Cmwvj2^cQo zS!%Xt&%{MNhA1C+T|*?IV_n2)Wn3(cpS&mPz|<~XMAo-h)}v_+yG#X6M>+HZP$e2Lp_`=k~fSO@H& z)jG8?R0G$)7I*SY)pqgZ+wo81H}};#+XjSmaqD7tmQGfq<=+O^jRSH(NK_b7Vi0w{ zNV{|bJA0509~P!pla?+puu*_fv2 zZw~*}e$=2L=-~bKUCK=Lj!QOQAqKucrlvEJpQITj5Y9>FqlW}l#Ly+O7w+ZOZ>HwAVWa0b zOQr$?+ZiPK7sK^_36f}Y%SvEBjN*7;3$yuODLM@@LYDdL{R0yx{IjY6uO7$tWK+Tl zp#|kAK6MA?V#gJ9?dj8IxL>&Sne=i3gVmrLfqkT^RmB?&XA({514eHJ{nf$CCnJ9b zIewIH`+n*w@d~SLDvhaU>-^?IHFau(dji*<^PrDmQTw*rdp2j0n0Nls!EkQ50|r{1 zo6_xme?@w_lGmXbjEl0E6CK(s+!9`8Bg|&aphasOew@?^O-f|vf>%v7^!MlJ%jXB6 zy@yycwN|lmN|gbew-$!DDGFz?HPvPxId`X+31FNheR%ser#96Un3&%K*ed-Sn_0p% zik5(XQO@4`vDSV2hJ+&i#?)IrF>M%X;T=ckP==}wVPNfAuVKx%Thh|3vtiM%RhWu? zttd)*+5lRzR4kQ+iFwNoy##sR-XWJo`+|Cp&3S6bhZrK$+l{SaQ>vAJb(FQb*^ba{Gj>f!T>?K>vND zzcE-!QSt1=UE3dvTi4JHet*p=FzzN%Z?N@wiWSuQqx3pA^=iq&cx|+CfDN1r_G~UY zs++ApekPbnQtO;?2wG%yu%M|H)qNL#Fc6i=Zd-47`3qtXH*aD+Nz{ZnW6daG)*`=J zLi!P@^J`m1q~;fKG>{c6UGQHe8pynn5(U$OBfic> ze3^>?=gIm?#YZ-)ct4lE$0cZn4WwIXh-L_vivh9;2DR1cV4Q`9qWVkKSAK6~E?Y=< zkL=8M&RV~dJ5;9t0(jDaK)C_h{={;hJHbBL8Y(oY1{e6aR;0mTYjUKI|Ic_}wG$c! zpy->={nIZNU4vsbt*mq;K++y?TzY|SnCR(6r15ckzKpR{{NO+XUmE(hZ$5AuoG1OC zymDC285(rzo(7y6^B;8|%nQ*sdhNDya`#@~+(t^69T>D(Yc$dn3}lK|2k7`bPmmL) zzYg<35)R~t9n*6iCQT7f9%KO^^MG^N8tjmcV+n3Tp!Tt4fm~Rr%)E)u@zycxHQ>pqPQ_(`l&O4M|`=kx8k7dn=cZ&jiChQ}@5lAjLvK}Jl zZA#fT*JZwFrZMHM-^6GlZ_8WLyutjJY}Ptk*i!1thd#(@=**=}EDU083iIYO^MzQB zuiq>kDM!mPgCHan(W-?;Bz&QlgcuNvOJU8g=rO|L?MY$hvdOPE-!)o!+gI8GUs zp5G`8m}t`8Q4YwlM)*uN4wj#GE-{Ed%Wf>h(IryM^kmoxnw|rWHreFe z`O;~J#<_{PVBRLXlW93s+^k`AmrwjmRbyaK&NpiZ4l?ke-Ed%9k$)uSQEih(+0u;{?d5b>xAiRPF<#%QX4&XBi6yUF+Jg^7C1aFKSN4dQmr3-g# zw{?3NllP#OZy*Q0HI@uUijPPWqe}NX z0&g~0ZWM;t=_z|tp4y6)auq{tDQlqfNe{hNKQt9cGFkL4b_@xy7X~v|D{DH5vMB7{ zJ}o4NY6pjfEMx?>-Z{sKp%txERa~8tQz_q_udrjdCYu74`ftIB7BS7@#1i2@k{mNy z;6($kZ$juJ1~28;qwk+Q$aBV!&=M&5F9ldhyBIo5lW%90p0Yb{(1D4L`U;ma2|o&v zA1IE)Pah2U=o`|aM$FDgP;>s5_6W^IyO_$z7pZx_5s z`GgE{VJ@!VABzfBfo^=GVud zj7H+rDOvo+ea%p2L~0hN*(4oUj%{RQ0b|#K>|q~ogCko{Sxe2n)H2YVOUnHYQ#BO8 zkGHDe%`tS~4R+j9wI#sNBEuJkin&D!LUVS9B~fpEf;xA<4;n{`DeT#0eQw{3iDV_w z9Rd;w7HIS{NQs_T?PV-5PBNs|PbA@_j&EU#_B+($-iZz%G3`kz{*d|WOZ+tZAz4bb zis*Y#r8)))e^QOPFeJp#>(s!oQT|$eT9F1u{k=QlO<>>EXrkqakC+~8|B~nDCSfMT zen_yNegh*@0|lSm=M#=b@xpOSXYx6+Z4O7?$Z*0o;tHMYOkFagvz@mk&Dy#@*oTF- z-7lkujJuO=L-Fl|UNc<%*0PhLENNO$KISYk$mY!K%tZqtcGoa~#(JMrJ37bY@z?7w zq&9d)7FObLv(%H88*^?GN2H)wRWy z9nKpO3+`39HP>)0^nC{yuD6fKZV4o48_A;&WLasn{|37X8$VojiZG5Y`) z$MH#Tbz8S-8>e(>BRPTrVOT%CO8v;N>+`kQ;VddFw4-fS?8vfs>fW&l zvA7ZbexVfUAH>v|eP4C%wOQi2M_GVBbyZgJj!*#fH~IooP*njW*u zI=X64ff+$_DNrFjt}e3J>Gh(AD}D&Y?E( zA(izPH3306pk!Gl4<`vl-M5jiilF}NpzjW|O?H^J(HWVUAgXhR!{tQZ10*}mmcIo-uqO|xuR+Z zZn!LGz3}dByS}fMY?v#pZS$6Nm*s3CP1!b089ieh^j{*$x$63V2E=?@DHMGN*4|5c zcp;pncl{&H_R)~$9zE0O87aA_vK(dEs!P<2D>ufU8^e8jTT}W>F0?w%w|(Pf&-OAdiZBA5 zMe^5)#z?hRv)GSmohoCKyFkR=Tbvu1a%qF0S_uOHK_D)sqzxh30VF&F6_Yq6(#2gV z9*E~i0Dquwnf7PhHcrvYxRuVE_BT=a_vgjJu*(=_fbtU&p&RNcMU!;}<-)`)*u3(- z8N40>ySQMf1q-5q=WFo*P||0%RW@DR9OP_w3nfZRmOW=D1SAT_fnS(9NmNwas4{rS zKxNK3xEbEiLojm?hl`*8IkpXkUZnBje&LVVNcHWQDJS#(7K^G9vr)nm|BR0>01_L} zn$SBX6B>ZCK?fp*C{1)*aKWd=i94+;+ zFh)X8JV88E1Rm3g#H_X`vadR&S5ZH-G1$_lj2pXdx3vtA zd|g6yLSDcvdpAi2OrWO4wKjRw1VCks5|`v0^TB*or85Mh_?hKcF|>6$+7*9conctz zml`Akp!U?Xk{p}7brwKRa~s#k*k3|XilNYD)24GrV_*JxlD749-Chc8ICIfRM|NC{94>iFGpn6 zkYx!_1MNXNV?uGiNS~XXaccBvi}gUFSP}ho!N5Z(^Oz4{<$K0x`=)#d#$YiJR*{&S zQQQ_PYHwaxTaFEeER8N$r}3^|G8(%c{V3t$7Nqnv%zI5hPr-Ki{XH^zQg^;xDJ(;$ z=wN2uEFomuYL;f!C zZeIhX(m*(clZP4GSh*?1;HeU15EX|FRM^ds%d~Z7KRQeRv$rdx;=z;3o4s#xchL;fJ#MT#)19SFRvnsBJ4U)@$CUHz=xkIWk=TywuC*ZD4qj=Q>CK@ zN47#M2SjX)XOFqi%LpIlIaOgI-cbERUaSYd+xc1zt9Rgp#-Ky6wTO)>lWz@^Os?M#*1tmSF5|bzZWcF?f z3zmhVE*vJU$XbA06riy5s>(BtO+^9|z_Jmrw$E7LID)GQ zEs8LLOO35E=mRj+?VZi48T;3+05gLPL))bilD8zpE%c-gK&7EII&!Z4J32-L5ltKA zSu`mBEPkMUzdO}rgPl&X%Pifc?I0k1FnmANK5K2>a!VGT(L$>xJE|dfzq4; zuFu0YiY}&bE#pufCg8}TZ(Y`7-}iwH^xfuZ1CO^VkRSk+*t{-P9bieGv`7Az?Q5HEa=TcqazjnA-P5K;`2vZfMl}ghJjPhys2T=$}iiVF;f9g-3^SukKvh3}>@bXIl8<3g#t)U%oXs9&u?Q_G}#d<&E@g5?E zLpOjLcz5l`3H4zAeXN5p$BlmABjM(hqQ)G+Ty1{;YA^b{{#5plST2xt+uR(cU5x=+ zhcml0=Y!u!TtAbHbAJN{p7`J=)V&sMWdIX;I#uOgKs3wwwuT)KjV_Q~Wzvrk zjRr0p*LU}a0fyw?v-6rir2#HmU<`Etqia7AQ%mc{QpR8GH4 bWEe^N#3>^n&k0m8GFWU;nx%^qry<_9K!<_wL=pmXQ`$xpxm0 z^WMD&z8Gl85dl0_HRQkhjw({3_sT}ec8~{unY~qbd+%OlH0F&VD)RWDowTOoy?Z!a zzqb2*wm*#T-TP4`BmVZitKR;So9Fwf4#bJlJz@glMSoI^#1{n5P?JcyNxHM%mihvG zwRAc*>@D-uP_-pkvZD!_=%Y!!o|&_(Jh;RNR0}1wr}{!vMD&a%jDykitH}#PZy$Nu z6rHCS(gZ6I@0LSMhtUR?QD*4!0MFK9nwpBrQ>j>L8RXwMdAV}Mn?L)R0~PP?cApXv z$lmSAaxlmLzB2Z&;Gnyq*jOw~nqN1^Qu`TxzdM;r-6eWABx9gKf49f*|EtFpdUtg; zxcof*7FVouA##gDu6gW*Z+-NF&WW_iUnw(N3LjXx@s@6)>NZb@f7L52U~k`es82uD zwYj7~gS_OAl6QrenP=js(J4Cper?~y2ZEtn9BccS_1Afk9lcEeQ|rOZtq#}(){ENs z!aBWy6tK$@M)~IvlIapf-RY`IKoR%e!)G()!P zkaF#vnP!0_7CoI~r#axljLYxI0$5tUFf=4UG})0*u%-9*WwnmZ(?A_f1bl5>Pe;w1 zb7JhI>|ha9TMc%!pl2J$(T-3wgRvIiscFR(>sr^9?JFm>U5+dnglEi7xzFgetTh3| z&|t~^d@5wPZ1RXFnctBdFMrsqV@rUYjL9Q??h1tVTc9fvr5hu1VDl-1Wi2Py&0(A< zK^v3?gvwL|IcH4tRvtbDs-0jjfc{y`cJGvkCU8VILZlzO@xkwU4SF?X(zgD!7O7op zZlQ9IV4k|J_MC&400mixq`l>p=^oXo!a3d#aE7e$I@u&UQYvHy z{=0cyuuL|5`6h1NXZl?;cg-3m++i*uBE2Sk?di954*~_!K8pa=@*b!V-^{IlS(1o^ z%_{U~ELfS*NP#)ccC)!!a9g_-#YV1nRdlpm+$rL;5HM0)j1ji#mO~ z4l2yc3Rk0SM9=QrTUQcc=T(#n>?~{A2L-!uP(II2O!8)c0 zv$aK5rE z?-98JA*lXr!Xm$v_}lrOXLke#ZM-DO*zt7zGy-F`5{kVsDX*@j4@oK$$+ikIb8}E$ zYa`u+$6)4rq3i=!+BPa`&B-mp9WML6-QuaHm3zeVpj=6g0ycE6hUHtYPMun>pf$!p z_gYtD2HZ?o)J~IDajP)Qg|=;4=?7QAP=`xe=%c9nt=C%`hqIf4YiyTWOHjM>$k2^( z`0e&p659*#)(!Y1%kjlM(t)cb^Lzr7Qs4@OoSxE|&%hFv4R(oprW~SazvgP4VYJPW z;a*?FwE)PIFSBkNxNQ&;e4+iy_CTuNl4^Ka~TFylo;aZbey{qYE;k)>9Yd&n+dfCkE zs|$Hpou%Eb%`~k-@~8t^tZ{tpnct?0W%Y5y#Zt5S;kQ7p9?L8D1KMxNsBFV#7wE;8 zsgKcLhgEvIy`0e35dC=XNJ~v3O!Gt`FR*p-I>`3b`3O+6745=$>5CIn+xk?}@(Z_6 zv48X1tAx!rH$%g&a1&EO1RLC8i4E^1$xruLV1L=<1#j;%gpO0VCMuFe_VI%L9A zeiEKUC&}!6EEw&1&yLZjaqGQSQlzJq^Loz>@H~WCv_ECQx0)YRy?wRi=HT!#<$9B+ zeVJ^cMF^cHuBL_!(hum~?uA1mauMDp8?cN)A)e=`Z%zUcROlLKlhvV?_iCGx5iPA^ zYrzb!^B_|*4kj1|_oIig@`Fe+jq)Wou9iiDGQ%vi9*XTeacVAemQ(NCQ{{$YwxlY(}dF8vDKJlHQ1Qx3fl6hXO zDGG_uGg&YP!r$!h=vPykke2d)-imef;4pY&i}u+HXAG!$tUO5T-+GlSGqK5TF&{4P zx~kfWSqC0&m8!z!+L<9CV7`pyLJC{hLcCZ`NSN-$YfWOi8QvqOK|thJzk6QSud68v zM&aPyT1R12w~-sl2i%k8p@}^-vGo}yq*2&OpGxa6gBl;RMS-^yj};7G4$Ve`M|Va- zVJLvj?zb((cAef8Hh85tR$?JkO^$|balF-_LgPc+lJJWC;uRE|owyH{e)*sI8VJoY z$Ko&*t(B4@0%i+JlzziAi<#*+ot@At$VN{6%BixB-IckdqMUq|wb!on=28qsKjS{| zt+k4`)l;&Rb8LO@#7q4xa5O#U&p|RzGOr>3N*>`KWZ5+$fK&W=ts_+e4qC6;Dyvk; z1DlkMdd@}TNsM` zwWp2($CH_#(N@HSZ~ki4(R8M1jEiDrVw+g!RTN@60ZAO8=TrI|(-X!=N?LhsNcU!t zxn>GjQORxIhClQ{5aPl4vYN|z#J2BwJ9zGzcw~cpQ++|gnUAq^>3-2SV18EVk zX$*%uf>xH+he*@4bc0Z|codpv%A1GJ+``>lmW0U`gaV?_lk|D+@c2O|iL{0*hNc*B zb**Ycy)M#p+7fd4aS*uOtjhW2@rd*8#o)dR20FPX2Kpf(7HdFi)sZ*M(IBmAqhHelD1kOmc7#iTU)n@DrB0SQ2DI01$B%+pZcN(tIgMSx17(bTiwQMa$Id# z+L_IEASEe)H)EHk{(Sb$7!P0lVquz_WQ>|+qmOokkGh2`WWQ-6ciUlOhFQ>mcwcqf zQ5sJJ#&@LVvbV_y`=AMVhiAZ98K2f0-z!V6fRfGR<|1`i+w3l6>6<^I^0Bv_ob1zF znDY*-!pBKwJyj_gb~Yr)>BE32%xa3wGFLb50dTTbpq+Do4;<^TkK- zmc&iq)bn?|Qwf+rT6Io69Ij2IU%TjajsQr0e6ihanW+j~{1S;C*{79-=oeb1Qyr3{M^&E+eb7 zwL^JmDSVlZPg8-2X{k4U$A*?}|N4LlyKSj)oNLcwezgya=x3T7>vq>lS*bahJ}}mQ z-HGaViZ@%zlTBjJOt<|w_w_f_SCOopA3@EyKq#koJcu`H!p zaN!M{+(SFbIc!_^x9HeIu@M`P6u#NYxhX7(evY$DF>gG6#Or(Hwmw>L`HFZwfq9F~ zCo}C5p{Z%i?;8F=WdQ4NAgO4YE*da#ldFzSp z9DT^hE|=%Yp+Iv}0_HiQhBe{51INEVO+&+rW-TtvVLA#1-aRGo;|6CG&sm^ zrH6`1a`b#Ke@g=T>iBHGD$Tu}y-v4dWfEpHDIN!|zpdmn$7XJXB<=fL)0efL;EW!6 z<0L7<{L9t2H*&#sTw3-FRGdor8*feI7M9O0&xb<49VS~6dnl?J_>|p1YRFJ3w%@vc zZjSfkiOM$X)8}w_652!<&Cm7ZX{M*d)$_~(z0Wuz*H_PVt|4#99L99Q{H6mWkN2oh zbfx((&2GRxPeUzE0An}qY7(;=Y+8V=2)zUI2|yrzker*-YEnrUPhQsvU96^ad5X2H zP0pB>u&2utRegr_F0M#($8Pqs9Y8|#b#G0{muGZ|N8F;2#Ls*?yio$*Om9Cqj)xjQ zAAgoz>}t8HLQt|OJ>fNPuaxabcv@WJcphrJ=D6E7Or(UlL#IRfnnTy9LZ0m93>ovhdZayYMGQ?h0n_eczvOKUK6 z8Awt4_iRmt0AgcfT`MX^hg$*?2}e*zSLWDkaTm{dzs=XW>A3%llt)EV^2|U8<&^N& zrc1&1>LQX8IFfii|3xU`$^#zdtGALpk%h;eV@i78%dquGy(wnuY~28}h}*zo8Q+RsRs?QSfr!5zf=%?Z6~w8=k2GD9{b zerVVFa)p>x0P)teq=d+0djCfjq^_?l53$M+t$HfN=c3z(8qKV*c%S6kz{@iVCjo?G zkMf3#b=mcmr_!hs;VZj&o_6~P4;Y({X7yXonxbDcL_)B6jS^S68TNjJ^-?&n*He287Spk6BgHrpax=EM_MZx-%S{xl%6GGdYD@HoQn4RDs#`4E z+5D}zLc?NEMFnfTRqo{imzDW=5gN~n!UpUf&^xjKQx<5!`9+ktaU$-hsPVEwz-LYx8XBub4beE-Nb~v6Qh9J=5~p9qs@-XG zCnT&7T%u2b^5R($sNF7!D7DVsh?3rFEIZ}xABxbK$-=?{U_OSW;!trtzS7m%Z8tpf z+Lrv$pGU|vMQ)CW#m8Ia13o)e6pg;#u6RWrt*W9TJCUzIrhG>#<}PVzX^|+TaevRv zjdyMKE+d;Y=;~a@ta5{xBISQta+eavItwVIzBYtxcK3H)V_=b5X-Ll@uW?*#BA2`K zpV2?-?WwqJqh{pZNsHnB&1X(!pb-<$#!XzyzWZZ6*YEYOGy}iXQRpAgy+M5@S-$%3Gwlhx9eNhU;6OsLZbS>R6tn^Cn=Yau{>$96GkBV9wi5yFdX)Ctz@$tc=#*crVU(48dzs#LL?}}Q3 z>LAnGomWusap#CXms5^#muSJu-yfD+%0WMwxtXB!Gz%sa^GC*_X%HdFvroXYLAp>N zBD41o%llz(4jMo+o@u0Xb3=N^_vU_TspHU~Jm9u@cN}m0FLXrwH^=<<;Mn_)KCiIc77 zpIJsy4+i&epKbi2HW$@mz1M>$h!R851V*J#_557F+CVRM%G_FcCJBz44sIw=Ng*;hU%JF+l0-QUCtl6x>=gP#6~v&^5S z&Ce~VU2{s#c&f&q7FKz_x*yr$q$8pbsnsi7oagczzIfY z^ABqC3sUbeYGEv5-67oWYkhU{C^_lr88$D|*e3LVanPT;#BV1YZ|Epfx;b&jTE&03 z^z8mhC6hrfa0R+Wqqi4IM?E;CKLqN$nVhMTzw$UCP3C#V%Ez0>aYcTi=(f+a0?kmF z-$rNuVA zi>=}&wI`VPtzNbHqI03scN{ONA8X?ALf$7stHsap_MQT(l{oAKaTMi36c1Jh ztFk8q-V|)UtEX%jBl+~#!K^dIJ&y6!`kd84vDM;_Umnn9q5ABjW{`C34LyCknIKZ^ zT2^?}V`gcPg_MvmubIH)Xw`zQ)57r5#+ov>rAoiYaRS%q&uZ8mrU<5$1SGKai6x7R zvcIZnwtBCn5GdBJY=YrWqp0RU}@h~ z=YDjg%|9T0IgO<#%&(j{Mv@I`S1lx64x6}c9~*f=5Hw>s9+JytH%5V1K2&4dm16x8 z@PwQkH%SCj$gEQ}+>rgvoW~QG;E5L08?fJE{s5&~mFJP?hv`kj`Wvxtnv`!Qan1f# zihKbI9#z+1Qv8_XPT|Im-TQ^Aoi2enGyQ_V5D~?Qk1!n93jMip^68{@KNxkYybm$F z8LMm?JsLa6O{5Tmx7cyO@G<3+pEPwIs^Q(+jojA$r6|JwApAG<&*ASR4BSuQ?fkP_ z@nP0S)qGEqY1q>0UAY3GO3mJV2e>gxtGAI~#~$)>Jvs9NL@Ec-L4!@&f=s9k*JK{U z$>Ff8sz#Et`!B9_H%POGS^YIsFQ>{4dfn_MmXBvNUwJw8c$~oL7>9?sax*OZDezo0SoPrv7(ZvRqH`0Y{i1NY&Q{Qh9&6$P{L}pL z+m$m6-e_Wc$g475Z@>Mv_ZDByip%rNI{R=C(_qw~J{Qjz;QIkYozG^g@WZMpB+sha zlJt`CK@bR4+jb`}<#>|kXCc#Kl6#2R;PoQF!KaDaFPie}Fe1PF!9{SjQXo}o$N0wa z=qKJ1Y@InA(X`bJ#(e97>uuHK+n2+vzI2;!K_Uf3k~H@;4myYYw$KPKi0W19ds_}aGF>-o$)U%zE~h! zrCPapBYQD7-wjxkQoZ&#f!NtQJbE2U+U$w;S%`d`r_;Y~Wq=K@e4q!0^2D|3)U>W* z7aZ2~5@93UoTZ{3C;XnSN|4>U0o-CYwkH0=ZFvCyNTNwhh2$tLnPY^+l`>DGrteSW zIvCf>!YMBg=!y!yBJ5D0Ygf2^>M}1>^sqTItA123VcFlMH6$l07~P{&8NKVg&6hZ- zBc1c9!pF3i%{=LzugIp!$@i4GvH2vdI0K=6d(pu;zCgVYsNBkWRwqRxo#fc_PErn;-De z(-~1gE8ENMp}`sZMLn)vF?{l7lKgaZT=F=K2Ld(H@qN?k&4eLN!F}$X78y^==aeH2 zI;1*S3Tyuqa&vW;ztS1F|Ak|TK9d!Lae%XcHL=zCmB+u7smYvxncnYyi{Yq=ovPX8 zC*nn39%Te5{N*&sVH4ISZcrI0Ng+e=WKk-Vo98?rElTmP&+0d%!j@=B>8OsuoiylO zFw7N~@CQt`J$uzpd2nRT=h{}w5O3C#K;a-XVxtw;P;qS~MXjklUdo=oQ?RktpZVPf8G zTvk?gt)ugrAi8fT37eGr2~Hgrcg$}<<@D_!*Y>da4Tr8>`0b>eujXCjEZ_q59yhk2Ad} zmbD-5@t|7f>1sn-p3cydxxT-RrjL-E884aB%gxJ6U~}sE8~lBGv&;GamNx!7<^ICl z-2p-8EacHiY^2;)kJRq4zD!e%>Bt2o3rneIAybpM2GPHnO{}xr*!H|TCT2!3^IanI zPZ<6`;nV+mvi>{q{`WmDS4gkqueB3{olH8U5#)BXVEr?Uj^kI=YD_uG-qWZv#3SWN z{Fy65#cj=q%^mmK)aQ+iZ(9^9%j_zYwU*JqnXZ$-vjD=a3oomdgFBv8y zCzm4uX_>8ax;+#7ok$hFv=E@xsPZ8GiC=d4@H5h?Re63Jj{}#iT-@82WbQwO(f+iY zczoGGJ>Hrzn1XhsE@c@Sa9pCu)=QW9Rb$%*YsE8pL zNkt34%i{ncu5OwY#!xd2jYtJjIiwij29z*%9Jwcw1!3CSo`;I0Wv!YK`VJcRj~$1vY!nCC_b^7Dr(S2 zroh$nBiww%HzVFx8Vq-75sG!+UvkcwurhxL6gRPR58?mP7FEttf2_14cAhY@EKjq# zMOsddNq;wt3e&Q~#kRFaF3WbUowd(?fDPu*<0iycdZ6cdyDADlSFWhJ(;+?Pqi8nS zz?hC8RfECM4lY17F~PJyuuT_t1b00bJYg|UWKKd0o}}7Yrj<800%WiD+Pbp22&)#1 zAj{#HnwN9elOyfDwwEhYsDiNla6v8zww~4{cHTyU{>eo;kLyND`6cxccINe#W%I3x z=9G&>^U0c};5pDuKBM{zu9^*_K2zc64XNhW5R**Ti<)-lyLsR306u+dc!a=IqsF?T z`iWA8rDk5h!CZn0;|5_)`}B|=iO(j>uaZydFsc zhZE_K-;7aard|mjd13xKq_tE#9c*-4zwwua`p(%`OaQ812 zgfZJt*YXnbvFhese6->bfLONHAc7FGUc<ST(h zC)NF-Wu#F*QM#T`puZmK!&a{2dEC0cKs0Twfx8bB_CQg9uI9GVjqx<3JCk|AoL3*O z6uXFkt7Bi$VeV||5>_&zqUHgXpt(A}5(YS{iL8A@d7@{x2Svf6hQytc{jLsF zcx}xq09BBS;9twNhLf1!@H4tYzi^(_%|`~{CM!7HHmBsufyQ?D$`>e0YJa&JazAqW zI_K8n=9aMeY}d@Q&Kr-ED(hr?n9%KP4tj-SJ_dO57~BLjYNu_58N595!t*To_PLRK znymFUaPG*nC)GB`^JMe^{3yf3^RY}r$AFrIt5I*beCF+wP&rhqJ+nW_%nHjTT}5tc zyWMi>@n~0v%7ImIkbo`~hkI840Qy1CE>L(40k;)a8qw|c03G%iE-9`foLD^u1StA| zO~Ik8`kj*&Y^UA(G|ze`u68VRXVJ}_JP8|X=eyC%N5NyEY#dH9R5*)tmm1phTXb}% z2pr6l^VlH4b05f68;!DPi1VtMNMXm|y>5+aXS}^^P<5H4$X)0^Ad8j{7D17yvuSAN zM2l*}Kg2A{&0zdbkms12ZMtp(pH*K%GK9j_BV(M%GR){Fy?C)#QJPqDs1vBH0C2So z_|$6RtldaE*f?HVsvlX^XVdJGOrQ{ua2Ff|%8(dTW+??qdbvfh8e<^A!qCX2p#sYu zt9fl%ONeAYH{^8ZI5NgZCwRq+Z#x$-t}n8CyjK|mM16ZpYiqo@2FVw`-F09dD7v>j zYP%k(wGGaGuIeOu=gp|O#BJXusjsT5qcQcse;xQywtVURlP4I_G#T~Oi7z`W&D=J7> zQV)6>k&I@~okr%x(&yPVs$j@x^$M>Nbc5}M5e`oO7O?lJR?;cZz|5iUJoh1zsL!(p_jc^^|9fO%Xoy{+-E3U&{)T7f6H?Y}iJ;{o|kyU$U@7_C}H>MKebrixS#(tg}|ph8p$wdo$$)$l^z! z=u4ElX60O=H*vHIgQiV37-|PkkfyDyr8StZkcJT?s+V)O5G`f#6(G?GRQQ4JWAuS zEt?P+xrRit46g^wrzyjWGQ$c9LA=u>x38n^)?t>*cWZa;MxEowc!y-e zD{*O+l(CIR`8NueA`?UjDz(Og^pZ>bku>_7ubj>GIgUm#_aR^+ZyVa%axy7J1B&H& zd#Y21kBu@m%1`)Q^rb=jn8fG993Q&}Yv+>| zNMenbv#7+oJ1f7E`dkB#iE>LR=a=+eAyEd4oN`}mHUwg+r$Vmzj=EjpJ1K9_)b-P_ z*Et<+@QpB4eSl4dWD|*r8J2L)NM)b&fky^C5FAMn`~TL`}o_lEsGx7auUIH&=E0pYhs09ebxq!@ja;vXOLGsH!>oN6YJQ&w?20)TflAw>3n9iRMloyDH$PrGBBnfi9j(yio6 z9_N0RTZEwStf~d{-TU`|Da(P+yORtW@AI7Yrma0FqUFJz!!heYoWy+IWMWFPbkD3* zYmXcpSshu~NEy$@F*wSSWh6B<*LcUGoUPR>C{q+Cc2VPt!52pdA96z|#k1cm6b}qMe=B7$ zXLLKzT6Yg;l)BjKiJNW7i$viFi}J`^5AaG{+^$;2A&6n?IEHQ1Py=RQ-2-nC+S=@o z#~f(p!o?ZQ1)Y555r~$SQI~Ax4KO^2i=K<_!|aQZV5Q;+=H$H6{T_=k5p2qFiY+Zt zNRhJ64vEAd6N+8j3LZ-&YN#{jxY?l(9G3yHN#@#H&f}LF^gN*&$oSC3%>ZOq0fe2M zm0=;a-dAnf+-g*=N4M-iMVK(02C{wn=pmUvx~HvQEo?!GE{U(oltg+7gSO`jM4pFl zu|qO2R>SjSe6*qMkoeqd)tRm5_ojt_TuU}Dw!Xxy3oiv%4j_Oel2_j#>ql;Z(jvU_ z%uioxsa!m-7~tiwO;5jECX%J|YV(fpaH2jS-;0>T`9)7lRB0#>?rkWbtC(E{Z$8JBPd94Zz@r#mTVrL&5x41rb8wYaS3>4-}8O0~Z8?Spso(EA$QeQyT zAp;as86OH4e#oS8#1I7ZGtj?avt{hkvf9&77GDl$^7R&c4Y5D;Helq7lj1zBRedPo zmo2zSaDPjpp~=V6b=_olaD4q$DM<^{Z$sA#%7 zZX8|(g7h17FFrWc8=*p!qW4n{PWG8T<#VHULy)~i`+BlxvEITTJ3NT1>_%FBn!@h( z6mm+QtxrEVyhr|m%_P_593)X^Uy}3-$uC-TraOYf&M-?2Zk)gxPm@2zd7trNwQ!T_ z0S!;HB-uYsQa`%?;DBSaKi}Hun?1kv1?skF5(Uj}CoEW1i{L91?J?`xhKCgU?zD15 zqa!QRxF63cy|e{`MV}MdDX-hn#;YB843=;q_E--mu>f=UFlf_ei>+nOI4h*roRyof#HPlh1BdQdvi-a52g~Q#@=G z$aoHuoBX-oEDMlx0SX?)*o)e_BVL>AXk4-Naf$GRY`dPmD{CmBV%ii21~y5t-$ZlX z|B{gVx;T{J`2d*%c9%fe3$yFLdYAdr(M?ghpZ59ET&<%=y%|@Oa(B+jj^Rg z4Sb(i5LC;ZsMID(9ynHIHSW%$jRSF{ecv)3Gtqz1LM7DM?$|Xz#_w;B=r1@Y7USCj zuv)o2i_aC3iD*D1VH&^Mj;MX}g>!TmP3`!mWPPe)$Qvl|@$v28C|4kG^`uku5go3q z4y{od@;3+Ex1;wzx-rXK!9M)+1f_J&MZhgZIwiow?%FnaMJ5P=s)Uq+x@X(QsPkZ%9u)V8v&`-vZ+|lPT`R*3;5ZICD49Ef59&R48GYoxY z?U3YpMgvWhZ@k#;JJvoj-7NT-ryXsOlN!3oQKYWU0en8%FEVOOth?=CRWUXl{c^*( zLgBnG?6IbiLyGf)0f+XpSjdWba8{bkj9yNEn>FvPyAus0 z@!*y!oO-Hk#f`Rp|8q==yw{U&Un{*h`uqF8?P2rXD@o?aF`cQty+5B@fYS4Mv zzw|xClDk6Px*)Y(Nz_KK%xT+{Zu0N!>|{(T)pazLdUk8;!@R<8Y>?#%Cr> z8V4^ks=d%?00=bdrE=k1LmbRnM^jbPz2bVH3EhlC>>`~kr~iI{DoOkSFbI=SO^0B0 z!X&|GtVAZQXmUm4NqDchz=|{N#=7!5jW?s^oG&;M&@&nQ$BD*bYtNdjpE{mCqG#@x z(E*<9peNU6R9Dgz)}jJ=YTTAXhchL~e;zK537*Y_3?>yT$?CA0j(+sz1}LBlvwW1e zvWlh5Z1Z@QLq1%(x{;4G!N40H$~R~SI7N$%{Mtg(a`UCX$Rxw6L!!PFS%}rR#RB;k z)*L&{Kxt)iyhBex8u`U1OT^Ab>hvVQW9|IP+#g?PfDze84^z(SJ1q%5L8of1wQ+>b zej2dD4(ce7@duLt@xmHNCQJL(!;w4SC{uoPe=Fs9p;hM+N)(7bQ7-UxIXLRg{?W{< z%fkWrR*zR*hyqI9Mf)1NMP6?rs;FRmTpY7WPC0r;txkY8Y@DhZy{pCaJBe@OVjEM5 z!6wBJ>y~mW^&xY^(uJH-1YB2B`mJ(c|2UcCQd)9wbIbSy9{5Z6BTV`*aSd*dXHdbc z@s-Q(SeBT>Eg7pm?wRRxal}qNvx9wKQUQg7+|l@$#4~hp!{h@+b&I@%nTv55`Nk5a;!JXxwi4#+CBcLby20!go(knAFAv;Pd2AJt!FblTEiC-x z0GZ_6tka1UPTCaknm@)B5{lgqpjt;*zn;-?K{3i=qMkH)g*(F7gsBtmNCew97*7)) zKrEO`wk>8X*p}{w87vfYN0C|+U#wFHJ8AYzromzorlMn%%Cq-O;#|$YNMTR4@h`Ov z_0T7CB^0WvBsDYIKB!WNtgbheC)kmrvolnqO}QoiHr3PBk5OA3s#j8*66G9pzK9d4v-Jt10pWVz6S3<4 z;oZLNq%LESU<#??gQ({N0QR|Dgqa|rsY$HUp}7Ne$aEcK`=YvNh+SGmsBi)@n#4D( zgYo%D%Gu5sRCv3M-km>8T@F}-HqTmu8&(@FiEhsxjRT2>z%x$r09%1Cq`|pjWAc*v zJc)}e6P>aP^`^6SHpv=qu8ECOxM`W#-96K4e@9t4CI*I3bj&?%L2@>IZmU^w-bIet z+-ZD5!ij8&aDx-vXH+DiqP!V)BT+xOR7t3=ty!$pKebPn>jRP5=fgK@YCTIqmY^nNsI82O?rAesA-~5*jqTUQGEF6$BWXuJ3HfEPvtV`9g{*GNF}aWa z$BSln#9r*bYC634FWUqPoqBqDIw*hhQ`85BT6H$hnTwppwzX2Z7Qz7lz-e9?5wZYS zUtg~$j1{{Z466sg9R6mY4oh1vPOh>3XR5^ig?s=c{q>8+SrukIXkBchk#Vx{7!^2i zO-D9@o`PH~wUNEANFM67&0;cAWP@|(!lBlqVQ)E+$%}okfa>eUL}a0x5k#@;pl@e< z$A;BdAqg|9c|hn$8qbXTY~r)%J|>~VsG_~rqY`hqdG>9_i$`XWgFz66SlmSGWlJrQ#LUM4p$G`Zefjbu0t#u6zhAcG#oa~SWcG82k<&_wHK0gARVOun?G zeEI5VJCRIWKVp#FB3gKDk)#)*^@|%qZ?J&$smS3BU!3<+8oKuFi-iSS3$wxjVLj4+ zS2M6TUd07`Jbk0cyBZjlCuPQOoZkK+dL0j&yUYY4mDT<*XA3=?<^ZdKXY3%*CS8Q@ zX-VOHaobiPgszHGgB96CzvoqFPKlyK)ZZPOvAw`Ilq++~jO& zb_wmjf~X}AY4+5;JI2}k&(HIcZx+M8JziOeP8xrwXdPRdWw<)}^GZ!mw>5pkWGIA> zr&A1Nhl^iiR%M)(p*O;U(|m?K;HDsd2EsNL3m}C#lh>IznXc6114zBult$8fN>Zv_ zFR#J$-XC8qT}K#t=e6|`R5PY_NX+PngZzXnlC)}C9+7Vpi3}TksPMFOHhwNs)VnO? z-AS{Rq1LrgkbV<@<1R3^TYh;4do!1hEHMYXNy*g>HZ)|xa3bsM0xn4-e@58eoxp$( z+T=Vblj9SBSh2QPQeJ`bCnYvdR{GIXlK9On2A4ewf~y}WnirHV?Smdf}%-|*;8 z$40cC6bP4&W24Ie2(A9;Aox&cqe zh!;;r^pEKL+_GYQ&J%)PD5n0ADH-}}gs!qB6tm7%T!yP+#4Cx2Nv}RjKf{N=APd2C z==1$_yVk$JW^=RPk&0}sAWvT+P$nW)PFV8zhWxRY2c^;AJmS;hvq!1|H5o9tTHS}Z zE&ZgvvRF@>p~iUBEks&f!P4MYn*(VjB|0IY4Cke52QZ#3q;us;=hazdH-&Yg{OV>* zbPVuOKFGx}Z|3#&g?KNP(wW6D-j%p&D_GotVjcPJFYAlIyjw+s;bIdLrOmF>od{yh z3wY0I3h$}+W}bHv$|G9Pa5ACV`vyg;RdJiluUV(W3R)mVX?Cd(e{wbEBx~F z=~fCgnqQjs?m_iZ-16T;PQqz>eQ&81+tp%@tmA;}Ax=n2oc2YH)0H?{rt3pTEu57`kZzxE zqGNq--<)7=bII+zXub$nM(3mvoDh<7D*7^XY*Bf0X)@eTNqom^Ls!RzK%UI~Ayg@~ z^QI^`D{0+v;bDQ@MCWI;h#StjOnjs3Ag_A9y8S)SLfzP233{mU(x57stzfA$ZQF68 znZ-xutGMyzv(3*G?J3V;oW?7UOq<_nG;~z;5hb59ZRX*w_C6sTt68CCy^@o4tth>< zw|+U14b`}E}^!5vXwGoT#QMKIB zIcrzFadD3CL(2df4Kb3ds9;-Jf@pf1V_JAOS~2>tTVhB<$fed>Re4wI2E3lAwFm_< z*cL=FExcL9WZ2p?iDrMbM|&!eE7;2totF+`3Kw*`zl0_vdDcDD0KrXioD4DI6(WwZ z-fC?-x1L(LnmMUt;<&<<7d!z9I+;kW;pRr`BqRqfZZRHG_=wEGQby2v5ZW6 z4L~{DOT|n(fdjnXd0Lw4sIW?0kqbU}pQOyM0&ckIXkO?F1hm0zguh2Pe<;J7=jrut z$~5-oNcXhmhKg_nu`7Mhp*4l88oBPkrUMH*pk3c;AoUG13^(u=XDniSDncigb!b7> z$n87eUWUz_orz@p8Hc5Z`p4sDFrzbo(HeC^xid*?Uq=d5P zd4Sx&$h6v)5~evaof`Ol6Pq=oE?V}(os8(s{T%H)0@-}$ov*T($iGBZtH6~S z%z8REUd_Uu&?T3SY(}pOyDV22CwZg~LCKdsFx%2k;pMGW@ew&5Ks1H@-d@5ksI5-D z`4)cyOuBaBdJ`uF_L_%=id@Uc2KeaeS03OVhC@I3$auQj%if|xdpv4vDca!rp%nU! z-@Te|vDs+6X8|u;KaIgoKBO_Gw)q^LoLunG?uvNSD>dIbRWmWR>Ek1|!?E#2Ur~27#D_v;?F*=nFn-4Ni&9&*SMyBEk$TBfwkRcv>DG^krCxaQ zEFwA@RQDs>`@-n}EVZb2LVx1M)3ZR~qc33J3!;P1bcXGI$nt!~=1iElc0zIl z;+l04aeKX7aNBS~*CuVvA>=Is(>s9)OW$bhERsg|flq*I(U~!VJnH8}p;d#?%Jy*3 zyBp=3TU-^z3y@N@{y4nkGKXnxq2m2^vnd|TRbG|0sPcA3EWlx@-s z7aCe80>?c;WdJgf<9Z%3RvY%xBn)y7*K;hx*I{cEG^AFQqf#d@#WGj&ETKiZ<*nd7 zu-71v6mzXjBzui(VH4Wr`vKu$(|qeo2R1RwbrmF!_TdKOo`6K+w#RB~lUxr6pj711 zwy7DeEz3pbi1Ek+aG(0Mj`VzDYP!qEN{z_G>_tLwv>=}cshr}?TwUAp$E8%(1*UrM z4@0Mfh!2H6Y|MIX5@{5T(&u@!Fjs4OR=6;Ec+VOsk4=Q_JisD+zl57mieNhQ0YUR4 z6vZRWLV)Gba-aj@SN`Dd{FS(v8ZmQ8nXB=gqh{kGLK|D}6-0AghF+YR+=u8T{~z++ zG9Zrc+ZOB?Bsjr61b2508Z5Yba0u>Bf(32d-QC?KxO?#6?yfxr`Tg&ES7z?Ku`kn~ zx=(dgojSVr+H0?B*K=GPe5m|LTpBT7A}ZbSw9p`f8Hh^5$anN{?*&U>Xb*B?q>WZP zmf&`jYbujRV+kd7U9>7b5fW_pZ!b2Q^^5D?UhZk0tg&A9_)J%QnQax6N?UBF;BxYZ zWBf?fUlL@G%EJU(4{7=y9M28@kwLzKfaOGFXX5(JbvdM&Ew#hKX#DQaBq`5MV*QW% z`(0Ax+=5*OfpZ?NjcX(%7^Bf@8r01p-Qo4Sdgt{>>JLyP->#n4B*m%PTW*JDX%8(Z zQ3KGRUO!5Y^-LY1epYVelJi?Ot!UYnKA9kT)Zzjc?5l`3gGQicCi(sZyN#*|!NCFP zo9=3DoN+U&s~wrt7v~RFFt#zTe#M=2;JU!I#sx0DHn1{mwcBipK@^HhRhL|rD9Ni&>aU+>y8)dBdpfV#8_eVL(C;}XIp!L4?KHqu^?6Ph6MZ@X4Hccg(R&_L_*00{ z7^4Yv;9+izL6yTUqY?C ztvb~2EAU~m_mk%52x`?i1xcHGU^7R27Vhe^q}e!At(eZ5LcOZ+YMPHq0*ihi9K2*3 z`kZUeSrn+m62NXe4@OpC*ZqLkkkVF4I;gi)zJ($0$Z7Ie+FAfE3Zj>6^ zp;5g>u~02H%(L!-ykM`B%5E!Ks73yW=Y53bGhao7Ufjo4;uZ6N#aI>=FoGVV-Ri*a z5DnHSF*{;f@r@<_+4Kw8c{z&Jp^PrQ?|;0dI^9IVn~cRTd$o+HTyBcyqo#CqGrM#k zX8Kc&ZJA1?%Ir6n_aFgF@pZjEOX;A7q%0$Su-hON9qsBtwpl^lKxLL+cUf7C5X7C& z^PvoAKp(Hn?QqrJ`&vo}JhxJrSBHft$s=d-l3@^CO}^-u!(u4W`R+^ftR)})4L7ZV zLr!5j?(V1>$5V$TzU#B!>h*3qmW%??t)zZ)m+KkGo|^=8Ej_1Ov_@T;wG7$)d=nC` z1%T1f_+v>=djo)NN>oTSzuZ>J$Caah@D8>>K82+`;(ilESt6|%`CxtLyW?`Xv2c40 z+w`#Fx-f4Kqa1REurD`c?z(I~bHFaZahBg?gm&zKk2}L*J#AqtL(d+FOvR^6APgRS zd-f_5X{(hpcYFlxH2!+|jmG(;f79`G^8(lE$6E(8l)70VsjCNbbF=x8RtvCZu}Lx< zZD(@t+hQHz{t)4eE;KNXI)<-~Q`}@VG*9f1(WmTOw9F5!VI`W5)Z6-L}tzzF-iT%@nB?tSDRUA0z+Pq^7y zon~_~M;>nc4Z4ObpU`x!3aT^Z-IxnRNA*F1@303q{?s4;EAr#RLSj?%xt@)d)^Ja_ zC3&xBqL{oE5gFfCV{#T9fQ=?E7Hq8l=8T{|innuX?2OKFtd)eH(WbW>{@M3^q{XDqR z`M9$JzFP@d6)WzR%mfFRS>x_+V{@g~uhw7(1ZpsS*DP1te+$FyL>os~uUj8?2<1?N zKT&twLs|mv1|VUv!$9Jk4EybSivb$q_W?5O2b30xszZH=c60VW%QMJ16zIht1;G)x zJxxRIp0jWkEsq|XqGn~q*xZl?9*62oGqAvBE5<7qdVLk2`I4p(XM&P6ow=a}W%BxcOFPI3JlcH|ga0g>x^i|GRFV8q8^IC8PbQgc}i6Ec&rH%PVc- zDS!u_ywb^#G@kwnkCAiYz-QuS3Rbry@e&)6tkfFH=k6iis5Id84j*qjZ0tJ%k4IOa zM9Rj>S)@5*-D=B#ZU=vZfnC~}^9@{mzUR&DXy`!hL!!F+mz9W5M%L3^C?@XnL>e=M z*F zdJH2uAlw{@6ZrNgtYVZ;5$Y9GjovWi3*pPGR0ur;Q=v_fhjX;v7Mc@Lv)vw`1TPmK zg1OQ6bI#r^ZjavBrEp(s;p1<&jm`1UsXvsf6a^(ca@Zqq~KVlz@gjK!-s}FHD zkL)6zXIUDm-jVWf(7>`kNZ#fo$=6&wl%2Z5*foY5K_c2CjU2yJ9kGV(XhH^w1W^uZ zt9is4z1$Pa9m}ZmtRrb4R%0^EOR15=oS~65_PW1Gi;WwL*DA7HBL5T3eplFR_p`M% zLov{+=nyLshKxczpG$a@x$YBNSQ7qhdzdpg({@@QOO)S2&t=ZlF&?CeoHcGNW-CFdf|uO6F=-PxR5h$U}B z_rHBVbNsfMZRgQMRyy3&lrW~nkP(2O*lcMz)6yDZF6+Ietql0)0{A#ioG7mMbaeM6 zY%2#3DX3K_cbe>nsKbw!TD#hE_uGBT_F#> z+EA};eu#01N!VYjCj3wE@Qi=DTKUbw^d6nCEo&=s%o(qD#?(EVif5Nbi#Od%`wdyqJq5?c>2BB?kQ10Q-M5DA zIF0WRH~$Cx1_%2JU<0CSvWG7(bNXRPyr0Q`=eRdgeD%O4$fT1O`gMx!n|Z#ot?zz~5d}(snhhfCflvwLIKfAQ-%Yl zE{fPdC=5vz4|W8OOd^rQ z7uYzP)jM7TRihOjP0G;9kTjl5-=>Evy72T+oI7@`RGD@;UyA_nnmst;{mv`?_R|3^ z9PFNKqn0-ow?4i1oj!;G=Fx$0Ml#@aA`8DPsirkFEY5hI=-+pD<7 z`nzzB^~LE|UQM3EMck$(%>5k!nRWDybQnvV@xB4+{sv!Bo4LQ2D_@c^-3f@?n_x=- zk`WLi>`V*1t~?5fpR~!{byRl~j@xg$hl+7Ock>PzbS!r6c#3P&HtFJWq)zK3SlYes zv>3|XjX|~{!0pOY7iBo$>#HDNtG3tjm+Lf zybLzl8nWfLPlP&_;F`7wzKfh??|=p?%nVttlHepRZ(Y8ZTG*eu(U{U*N#kM9da0H_ z$F-xJ*4<4axp9AgGz!iJz0LLy5YFI_^8jx$9#&a(t-W;P{NCc;E%!Ojid~#ptvq>Q z*^vIee%-cUmt&LhqaHg`pUyfEx)zzO;WUiE>LV)UetjUmDdxN0EQ>7YN0%V-Xue35 zBJBc&H6{QfAJIR^;4Fz9fgsfPV2<9I8YB=&zY~%v^tEk_sL$C26E7$NJnxM!e6!y3 zVQo`mGbysiw^<|t+Gl*?ohT8&zkKXkTVIUqifDAD-?o(9W{J5cgF<#Pcpk>%7EfHf z=a`#sW#?hM$>ytiw6^6IfwY z7IuIC(#9kC1uFgJu!#b;SuMTz=Ghxm^!1ZA4#E%plaPT|A0=Cyso(hQTp9DealSzv z#uHP{7;HMTj>)#jjG*r3bs^NvkZjf^u8$VsvdA?M*1u;-?f8K!g8M>--{Y43l#iMi zvP2EakTb+Yf`4`N04OcMR;ohwzC!*>-ragdDscQHhks5{_{sCaIbdhDeyU zZD3PtgAqP@Qp|v6N4WVT9?E-&O5a{0bY8 z5d7cOdetmSi~D$0mJmM8y<0P0^O45y^F44Gux((d6PaN+kraJ}e*|K*fpvx=>C0{V zj@DI@f#H&ZUkxH_ff}_M`iQT(A`C`tzF0qGMtDG=1r4={5$s$F;3ZTyMRRmx zrRL_f1EmB;zmSpKE!c@tVW+1vy3+$&s*M#{$LXN5WtvDCTpZAC zmM4|_)NojTu97L<*?e_Yi3B}_Kek2VtVaU|29_d@i}7TRIw>jcQYzS(SiC4OvG{*1 z?~aO#{x(C%{Q56Dhj9jcdPGJcwHzS*$J>ryle6aiU$;H0UjeNBLl()nM{bmoBWXi` zgW`>!n`d3-j^@D}Y|RF})=_iLPQegJceN>bi`X1Ch$0$U8~xpVo-7up0-9-cdgYwQ z@+I;II}5%FY{B_dvK$goe4Oq-jbxE$;BvUbNHHZt(oAgxi(CP_%eRb`w+!1Domgx< z{`E`)InEQ|tUG1<((XIqKz73nkMMSi3cyz6itLE6 ztFTDv78Ink2(O^g^x*OCq1zMR1~~ppPOtQgia$&mV1oJBeuTDnPi;Hh2nKUE*r;A< z^9`4U0^8dXdDb4@T3wExd{OPr&q6G&5B-A_^{6rY+t-Eh_jg6VJ`Wsoa5I}R&q9kn zaeGSY&0pT^jrXPhfF>#~_-_*!(MvRf7t;2uYqy^+d-UM{ay{*PvDUU8XKV`myv9xY#*YeIq>@3iOX3rn}A7&))sYJnLf z(KyT&;1#)boQeuKh7^G{XA@9Hh7iGci~Sfn8I^7ReuZ)+PQsESk4 zUH~gH+j*UqHlu+wU@KB^X`H+~YRrRcqF|(DeF7jQgs;*7DV5_PLJ=3KrR!@`?NEQ| zLW;Kfx-7c}`YTQ0cDJRoKEs|-SC)L`8BOOjhrLZd`o@@?_r1&YvrACIT+hlihP~bF zEKB)^wj{5+W)~uPW8Od}0>?zP1|pVQ+LCnrq2|oz9kOS$k!>s*!_0C}JLe(?FY!Tq-WP*p?y&6OA$lIJL>Zy_{cjIw6Ms$0 z#uGPo^q^q6O{>6MN|8xM_3k>rxqhW2lBTq5ub}9}axtSV_nvrH9D?-DfZ_58%(N}K zAys2im-jr^J$7;7#y%@lBhMY}>#w}PE_N89HK%5NK2h5sUxa&%u zA71VP4i+a#&}9Bnm~`m6VSlSMo^?mK0~$AM+z{URDyc_S6P!H}-ZQ?FWWAp47eGQl zzY@zQHfaDRVH5wVzv9fdk|$f5%}jlEVyh9UIsF({iFG1yTJD*KslOB{z2uW__wLQE z_1<@+KSkYp;%o^Se|-3^3|vJ z3DGv3)CbC#4z~t89HK3G9)Oc79bjUYFISaBYTesjLF}O=Tppv}yg91)^Jvj@pSVna zGoaImH_Dp$DOZUp^rXkT?rx5HTt4trYnaeZ4sq@!QpSPUto|c8i9zrt<5?Gd{2~g? zhvXu&Bg0WJRl>0WEr$eCA9q7hSH80CRTwP={KxfS8sf9-5(7T}9UC=PO$2e1Q)>h! zzG31@w`y8AY+Dx9{ABkv0~>+(bK}%&hDqMY{YWlS3(A)PJ0q30?_&8!7j>$E6Zo9;m+s%An6z5`sKlpDlkC>)MTWzeMLq^?U2iljwR_=k2QX;71?S3z06< zJqT=J{$cjGTN5cc}2`i0g z>0jV>^zuD~ujFT5n9ld0)Ex(ERNxnLrb+ObU}lPjY^DrwMO@9dFPw-dVps)7xDI^i zW{fbIdTlorD?-1mg?V#+U?=^>{7bm?u(1djdte)ap}T-KLw~TQ6I8)}y1KG{>73;6 z_YI4^LYuTxB*gGMPS?)u0167+mszm%DC5dz_WmEOmD_e;c4i@MCGox1ij%S!AcVU$ z*_az#a{u$7I(SbGRW2RJdO>r&6F^Kh&A7$T4IvZxb`iwQe4@AQ{4pQJnu=pzr2^qP zfh4tNH48H1FVE#M9Bg7KtAPDYMM7zdeiZ|8?D9J<;J{u)ZH$5$`*@iWZ9N{?nMAXh zc7{z1W>_Qx%lB7cv9#EuOr#MC>$-JKgR1I8wL20Qm_A&CXjrtQP!LO^4IYWxnRvL^eCokJ|Mc{VdpF{e(<(w7KB*(b_vW z-aTv1(9~Z)^dIbV1npex*Nq&V|WB zLO*+#R#Rp0M!4GA|F05fmRi_;XYg|5tnaE%t{*ZSc^Zz~PM6g#KmYgM+k-!t9enp5NrQ^2Oi^s;-M;c&1Z z;+H}2K)<0)Z26#@4wAVb(w!YP5#U6hZ*r5ui_ziKv&Zen&#rSjvf$P3QHW^@+e<8o=w|n-Fzej#x2R;HI@^mJLgM|DTnL-#WJjcpfqV2y zx!tK?MD*idjq`6|JI!ypR7J}&uh?e+6Yeim6acK2x+=fRrZ%8apUg5#AUpzVX*;=w z`2L@mN7v_`grMS3B-m_}rSD+rAwB}L>p#`ms3d1YG|cH2;Ltxlor%y?rbWZcfAvJL zF*`e;zB(en&X(}!t>h0NZl&ZAy0f~KK3mtWPiFo(6xl@@?ed>w6Xk>2zl)nG5S>ri zH*KFUnb!VmDw_k*KbI)ZsH$|jzt-Ozpz!pMRMdY94NrP8MeTnhyHg zfDSYOB%v?;cH+`!>n})A#U=LaSp43;185Zsz&a8q&EidN_^YufXO8HZFc7Sx$)Udb zJ?OYxvT`@xFO}e@K0*3=)Q43RU#eEH)^oHX75S-~FZ~U&lViG$r*^OieKxlh0qLXK0sK z8ff`jR|2HCf@R_62SWkS{D!{T>io_4N>MhVhZFot0(cGJ?z*a&U_XV@4}5Yzas(xT6V{4wYzJq@JAf zSR+kvA{eRkOa>-5Aq-$T&Z>NE?Mwea2X1P5c?uc#?d!zX(NzuleMW@E%NE(Q+)oC; zLZ`4cbygdnMfmVcbmo5t@M`?xOK~=sA6O8WhMxKBkv75s6F8Tm7=hjE{1pO8C1l6$ zH8~BAz05(D4UTV6()sGCt&0f_cx|={Aq0xMNK=t05!a#a@uXjI^!DLC=HKh2u6*0|q9GskU-ZB$@J(3FMvgQFj3y zq{^3Ctd@+@!*txb}nl32_r|kq)V0beVoVc)B;bIgt+(H zdRy2&Zr~+VBk%?|T(WzH`*_ra0&C3)um8^YaausFtDVD(md7=G>MU2E0E6@>osY5d z8?&zcIM+km@r?ZS5E_xQ&X=G2;WJj<>Fr7&veD9`^eh4^V$D!chS|>(*0W81mpt(GdkU}Yg$M5!^bFSadSi+GWazWxotf^WrsK& zt$O*}N`$U447v5Q)TJDAl=-Bu%mlV?;Pb+kugggN%?be!&vIwaJc@_ATU*p{Z~NHI zclN1FmLxrOY4~0h%y^o+1H?OsA6%1%c!GWu*U&!nkVQ;YVyNX z?hZiK%V80WrtYEZw~JB%nPhEc?UqIg&2FC{|H%0*YkX`udk}`Z$!qUJ-*D;WFINR3 zl&n$a_cFzT%=s(RUPyY7a7<&O`-^OO|j)!9r!{OR_H zK4GZ*`saY*ylTbM7^tKF=$hEYRBRFkEk(jsM!)nyh$f0y~(UW28D#2 zkWaL&hUn?vXBaK+Rs8T^d{aF%&2KESnZ<``yq&iHK=;;@1+5#rknf5K-RdZe1>T4u z26rc0R`bGK&&YTzOT=+~$@QqARq(HF|D5yF0L8!>+p}}Ix__&^9; zvFcC+Z4uT01**vZZK}254K^P5P&l#6akO!-+^)aL`^QqPt;BMI5ElrVe)~}rtHu5`&A$)=z6V;sE}saU8t{_B*+Y=RCi8$ zgs{0F+=W0|=U5dyVSP_5f~&6RGb2+&_;(K3{x=#KkL{}`bFTGzW2FJU2p=>ilIV>W zu`@!{&FdcBAphE-sw&CF7RwP^TdYuN zI~@R6@a_5|gQQ#ag*%vTG$6q6&lq`&8QD|ER0y+;-OpN6yqVf#>7;l2k@q(ewe-}_ zb3p0Pp;oCq5PSA;V*F; znB5-`2@^(LbvBvl*%VxI8dziFj_|X z5Kv1!&0skv+IVU*)hPVgc>ad~@Jd<`=nr0;>hB*V?3JU5&WtZa_mYRMG7pYD%z2HK zipx7m=+*l8@X~rWVTyLd}#8SDmrKGr1V2nVZP zUWRng7wK8Ql)?2F|Kj;T!^e(}FQdsFm51j>Pw&D7fwp(w!g7f@z8!1mOhtY!`Qs*_ z@;hK*COH)h|6Bmlgw-Yd`wbLOhV=KF*S{;+%Et{QK?C|1)I~`W5pBU-Zf= z0WOxGlBQ zy6NA$4-sUY`itaA&{ZjmZP=Ykp}j&k*YxC!Kc~3}`BRpN)|EF3HYrEtM|UMgn{#AQ z`cM51VSRh~PC;%Pw1~_k?${N|=J3j^M?p!6l96#-<TjP! z{d^Jp<%PS@<0a)3gns_;e!0H3R^Ms|+AhIG$So)^r=%&3nxN?F_Hp=qXK7w6SnnUS zzNR-W%#(?Vj83hsO?v){U$n5;KCdZ5oD4>M!-_rnH(gEVlIMUKO@j5YfjRZE`Mv-b zHV%VA5Y(`ePw5sP#!G%+jBssgOC>4EmJ5IS?y>8xTO}a)l55|a5|lQMK4PRvpckQ0<{y1%MqC=f7SPzxsb^5PziJ|5`w)PfP1) zrdVL^Ajx!L(MPCmQa`wftp^QqqDh=BiWsMy4aTFLGK`K&Fvw?hND{fgx}?b08K7)V z38w-?9_9=vSOz-g$v{catIQ2OBNqaza1W0iX3U(uzY#(F@;<(rpW83Z)oMrwip@t? zv*T~C`Gox#mML@lViu<;%+V`4An6Edyp3tP?aw}5oDnXbHBpH6P>anGR+jrEMs~3ba0_T+YS4- z-wvh;MqYDAXR~kxcU>aoa;3Pc4M2Dmm2nzDpe3SPE%%fr$vfJI`tn??wTq=TRQL-D zh3@cNmis;JZ9i|b>P6(-latno$nF&oXp)F}-^L9U2_^kF?yYan`D8TPm9jL4f>njJ zLppK(d0b7=Vwxl0@3d-dg2?*527UiQ=*#W1DV+0RXq+mCiBAuIE(0c;9Al?T9!f*e z@ke8^LhkbHmVI}@;WyDS4`$v<`W}Tz0{+%Q-fQZ$#s_|#l)c4#hk>Q%8*JGYL@-t6 z2k7Pt>Psq=yhR~qwZ`+|4Rnb~GrRCEjvMIaeZ>*qa-*7C9=WFpWOl&QI$Ziocg0FY zy^|GFTvZ$VUEn*-(jMSqH#wbBm$HtB(DwIj_{FN>`DhT1jTQz_RpaQfj!6%jnx%@V z+i@lJhR-cUm5FME=9@%ilgCKU$tcm~(eXhd%9}CQ^sI3nwMT)59PV2`t&v_6#?3zs zh*eG-_|bJ>M`iiEi-E@y4n&Bo?PG;_Dqaa=D9EewGPkv*l#aEEJLG0G9OZUGdwC|E zh%8uhQO5mxYpe7Fggu1S0n$q%ejM9BXvXqzZGjhE)p$(9qf#ahU0{ZawTF$7J9)iq zGK6MnqJ649$8499(v;@0sXKzDW_u%XTed7y`w%)76x*C7#b^ESgW^m6!{*MJE@U)( zedhco`^pqsBKbv{1kjJWZtm+;eOh{sRBBawXRkO*_%)GqX2xE*oR`JqYqw!NBn1ui{CW&%tOz-ZZ?^3=3>NRCXjX?dZdbMF~wTF-|42(py z_WrG!oMQYbtc0RWDgkTKjNe)T+_5shVtz$sjq&U*-kjNqyxmVhK3twWF!p27g?P)1 zsOuoiyLXCd)t_gzjZB6tX8bj-W{3nZdTw|8n{b<3Pu0;TTk-9;JY-V8QAE%XE69F7 ze!!qV_N zS7v_T6cv+Mk_l>fA}Blp1}3|W7aQ-PvfGN$A-DwbDD(4%S>r16+Bn}{b&wy$r<*y$ z@_ZwwKrPJMEJGyBm;AB9D!;Qi6dE3UV2Fi9dzg22?5C>5rLfYY=0(hef)(xr!$Za8 zHa?l(EERmBn5l&L?nq?{lUk-HgBk?|QPk}KvN(+G zw$t!q1H(nB=wufW^UX9Bi|OFchMCM$pPGjmn(HF?v9kFd3Kjz&4+mky+T>UK(8qWM z@7R2(wjx6~RkSP2m-0ran^{h}TcmpM9~FYwly`QuAzC{SF2zd2!O7KSZ3;-US#?#P zJE9r0=_ZPcN4LU|%lVZWcXcgwBHvVk+ZDqQSDj19G*`*wS?SPpQR;FQ1(+v&t7pde z;SML-2p0}ijEaYrqrJeHGut+bhKjK58h)7QVjFqTkm;kvbUxoJBZhwPs2h)OZjD{n z2tNN44%zl%`hs%Hn_o;6W3pU!qlU|uL&zSrs-Rgfh(#8=?U#IJH}jaw!tGhx?{-UG zFS^LfNJ%X>`e6}EwN}^^{31|3-vJUvA)I5Prk@8RfnhQ_?0nnh=~pIg(uR6HLdDgd}ko7mT3ZR@DIiBi}IE(AUHThNMhd~Jucp)ZnkFXeU18URYXpr zg-NccdM;?bwuih*T>!Dgm2vPWe)&Lbn?G-(cV!C=Ld0}h`wUMzR}lPdY6yQJf=cs3 zUW)#{CF28^@*DBVUgY+Wt}H4R+Q}00#=WDp4`SkzQ(__7!rCkGDOQ4N7J*l{Qzq`Fc(w6=8w{ab9f; z@rdkpQ|%Ji*-%QDIb82_N3EEiHsXlYU^f!;`Ld`UqLqx2=VwhWsKCHmxRiG0SqV!} zIuJ~}R4>jNe`#Q}#ay$?zUZWx;erkQs!f#<%I~%Bq2Er|qn>>^SikyUQo>(prWl=* zYMF`&LbF)CRVzMso0dXbNlvd{^jHhtjb&@i9)Zp^Q9GB>T%|)(K<_>1=9gO`Jtzr( z-{FxnR<6f9sm-Z&Vz9_)97%jbMVr^^=hvWCRW#LOm)4*-LGS{k^|P#O;GMz<6|K@Z z8V1!)pojQRo&kO;Qk9j8U4MaEf)}P>ic*EskigM5hkEL$>DxMD$nL-zmXW@ATv-@p zW6qa6@VbfgYOS<_?cq~)i0Qz^x_W@o2P&!AYTaj?Y2V%Dt!&x`==#cK7&@71l=q?C6@{_TAN zqWx(uWYoVIJN78FbzN%_YoCro{G#jRMor)8c*=xiaHeHt;QR)3wbAC=pGO(BUfK&1 zyRAPA4wj2|j`y={RMu;GNcNCb%gFJc%@W@5m6P!ts?+gWwUY!g^h)*$sAc1`GPBQE zHs_b8Yhy3|v@e^krb|g(J`KaSu#JgJ?$MaEXl}KFjiE~U<8I>hI0(DO#jUr9+j_W* zKUCnw01@K8S89!g{LwYoiuglg35ZP9*OiqJO`~M|h7Xbj_a0#0Wz94KgoCl3`Jjau z;Z*OywcFD@6h@5Lz3Yw>#G6v(k|&*4!Ka zYLHj%>tO6c9Ko|{k4jZ{F-muJ1(F~R?NpkjJltiWMfPr*x93AM zfxhwm6fA}7$4c3)9;#NSII1v>(^9hE;^axeEqVYsx@meaA`c;Qb>7IW=|&~ zU;Lr2f7yA6fhsrqHn3m?JO@+1HGuI)FU=F zm$n(yy+%GTOlfpec!T%oI9g^fdPw>*Omk6pmPIo=vwV8htLuy&81>n-(e@`~FUGF( z$oncp>FURSp=g`9hA^N1aCRxaqKAja$yr9YO`e8(kV(DTO7R7aDk7shaLJ0dJTk%~ zl#JF~;G7@!o8K~O?|M$L+^Tl+z>HAuCag3NwoBhMI_@lb8tg7!_$$7j7G=|(acW$z zM9D_(M6vsxsKI{wC+jx$#^kap$au5c^Bvih4;%=A8ObjEvT>!dyIJ#Da; zjk#*;ryxl6C$mTO^z9(J8F+7Xhzp3{{}`_b*fb?}i)D!tczX-JAL;NMcN{bfS15uX zHpQeGt_+%O=)X*CLB!b_O1TbMl$c6>XFCI44}~q?w^zo`2R(G?u%) z&Bijz!=bbI!_acHER%-x5LT)2nhJ;?XMZwtmTu2HNLVha8}Yi5_ej$-RX`%=(Fy&E z;+ssf&;+98_zTgflEe6%nfFF}zDu1^f7o--{2@iTg(M~ck1BSO(`^hc*4zGbE+z?n z)41~S*4hRG=ZcDpkVDo+I^W?*O=xAa#!9dp3SbzgpPk>u8KXtfPIN9~uv#F3w&f%p z8W&Bd9awWGW=9JO%}|lY)@dd1WuHNi%htQ4@cZ{9muC^n6^e?z-!7D$CRJ$-9F)zX z>jx>9%YHW8;k%Tp+167&bfDrd2)tEMB(#k#75MsNDq&<8G>lm94?9)scqgKz-pWxV z+lPTOfH!Q&Fp!}m?B9TY54;qdGFst|iu0aXPfb5IyGk4eM%g&hmH4HX<9ySBm!J07 zhzc*+$^1lcwgbH+9r4g~)#&XA-{pgg$rbm*$+s8+HX_1PY)w3*4~6EbjQt7kPJZ~A z3OGd-6tYrOcKn{@wC~9q`<{_ppq;fqcv_-mNd1D}zo4i{K|jlS*uIB~u9lpura6NRK>TER#rC~Dxev>G-tI3$NbKmfY(d9x9Ri53aL0;@)k9A> z&5r`p#Fww!LN;vCvES#N22$!_fkxl;Qx%|Mk3SO117MckJG|f-ToAW+*=VPL_bUZ8 zEfeZjAkI%F&e_1v;0@bpB2EPWehPWIBfG3j0sdHe_bEpskzrK14??#Y0x0E^%C;_m zso8L569f)*(}KL9A7sA8OsHP9EG(_M_zbLA?e><-KOey3a1aL`#hRxhM00Du?(yyIwrp>qEOolIRXb?e0#=FujAu%v80NgZ&n0ZA2+LDNt08Ag{B~ zK7BbIuTr2%IQ2zzZDFM2?F)W&(D{Sf1l`;uVc_2>fVW2x;$?p)T?H~$S2$Hx(D*BC z0E~k%sCM4(;xKq=Twg^PGLiUmpGUBMR{6q8{{RgPkXhTOZ)%(ZptCQfeSCpCO=N<3 zDG3M&z>nStAmfyYov6;0QCPYro&A@fKf!Ndn_mOCZ5oy9etFNi#SQ9Hhl-JkQcs%f{cx4wr?y})}5;B)=}MjuB3)Y@>%X%oCQax(-Tm(MfY^oCJ`UQMYK|1 z#PjJh8Xx;g&sk;I+>5ayVm)aImu*BNOwW;C%tb~9X!+Y{Me) z@@8gTuRawXqmiaE(PsSqDW-0Or+X|SJUxR}PT4|<&nFD>AsGU9vpU*B>weR`LQ6!N zB-?-%=My>ivq^p$+?hc}!)1ImcB3#Gtri7!{DWLRVrXW&MF!_I*1?@ju7q!+25lzC$?etkl!Qh4{;akP`39DUpN1{TxfCPoJIfp2#hV#Q`dU1w z`A5KSmDj^R)|%U1ICywjaIDolwH^>Jct!c z(7y!DbeQl&|2b07u`3h7@qYqMw@;s+OawwZt-SF9n}t^`@F07vIeD&p&uN0B7e+xS zO+n4VLT)NuO>rQr%`dvQnv%whQ(rV%@RW(A^}OzT>&KVbc|UbD(U*U}$7RJM&sT&+ z{00SFdej#g9heW%;^(#QtX-P8nS2Y_B?FX{=OdmtJxSv!?4e zXp@|q-vU}A?4J2mBBgBk*oygS0+d5sC1$C!%T?I~6XI)DPi>=#|2(pG3#SYZP7udl z^}XP1IPxcz2+>^XD*+ly?PysJ@_N0++66L)L@`nnyVy-ad@85T2)bUMSz3d>`6|%WVjXg+z?m#ndo%NCNBU9&Mb05es-llS{G1yYIz) zEeVk~o7T-9y;!ab=;*-UVCEPu4d;5{|0$OC7S!gPE*=lzkPlPN z9)wg80()x)%)?#q9W+q0(J6+?vNr|>emx>DL8IblTO&t4@xbaABN^bP3}`Ac0gJS8 z^dW0ySlQFx43bZWKy6HQ-DBaK!^slB2CJnnzTT)-rt`fVt_s$p)flgrg{qXP+CE3iDAiSc1c!hA zd4LOlGpwYZ>MqDqYoyLLoHY%>1A*G+r>0$c`2Lu4fNQ=@EH$m*dL8;a-Ktdf8N%nl z^6f_0(a+gjXqBOo#^wTQP1eN#nT1_Y%)Qa*PEByLncYWnN>rIT8-ix7K{1M zl(UKXGunAL5Eqe9ag~dwWx$T=srBrHZ{iak5)J0??cxvX%!)*yHjE#=chuswmo590 zr*Elg)Z$3ykINH0LaH|DU|H_sv(*TgRZu)VvO8+r@>GKy`jlG5v_u+mAS9ycojs&Q=u}fWfCt6q{p~mw-seC@J2+TXxS8n3MYo1kt!=k~K zGc@_XRd?M{O>JKq?13Q83dLTCX2DIpZ;H82-^Gi%oTX4d>SYt8;E>)d-z_CEKVz0ddUeUsf2P>bD> zzVM$$g~s;>2?|cV?$&-g1V!X?b8#M5Qu>LH0AyZ5Utg0q_l%Y>ig)&^Sk9ILzfpof zTB&Paw^vN8Q&tLK=X{m_Jb1t>LWf>M?0fSQeSM+f3eIR_jgK!bZ_D1*Z*+D~m_KS0 zm*12AY#X07PAJi+Vr{%{Xks`)P($REz$kjC967My7KT;&Nk@&I;n*-NPHqI~ygn{^VPN%2Qho=baHZblVz8fg&E+hh+U zkSmARdUyd3W!D^TosHZZ{c17L>TFW)!IhDdqj6X2R3#eH-gd2*#aj?q)$Y15)b5AR zks@#MGdf@y6uD#Js&U012V$Jwl(OBtn?(g1Z+Ag0R=;1?&rmVq5wXfmmV6cW+i?(NP?h&X{0wURtz&Y)p|N z*i-}HJN^ataXX(QjkUM8^9l+&$?WTmjN++p&L&jQ$veDqpgxsitMxAKn@ zL(6xl%+6_>oGxiUhQ>!)%`UI9;|npXfoyt-mp5^mvm&L>YT|rW{qVcDe}tqO=7mp5 zcFMSz>R1GS73kWNfa+BKWRe`K5aT?dx}pHHe{Og*V`y6>E+*8K%B z*yMt4?Xc=ydmu+i544;zxRv(6+qa9 zV$vN|_!&+6h3YOGCYSEmZHzInJ^8+;I7B5StiJsQxNUzc6FvCe+FG374kOF~jR*8Za?o>NiCZ7@U*Yy%RW&D72<*FGGB!{i^=1G;0LT>udlrHK> zZZzT5X=rSN)&)Wn9_#!8lJJODp;Z(A$QHYbU3Z=x-7C0N;6r7mSEbOETD~&2C@{%& zUvRAxHo3@`ssEv{QV@O?6Igd9?E>HfSf=A*V~Jf-a}xa4-wdLZG(Bd_)~jx>PKZ~q z%v?Hta)@Ftv_-bc-ET5c-CwvpuL{Gz2!0uvZ+lNbAP%Uj&KV|9o#*T5=$#q$3N2W{ z9=#Adzwef;_U#I74^s6p>@*oAx2t=ZmMqEU=n!G*)Q0y!d&8NUqd$1TB+ugQT8}UG zZI_dFunM_qb=r)w6_X1*1Z`^A{^htx@4Clq%$&_vLVVl?%ri-5iC9h0_Tp)Kx^I+M z(*iSm#({dwnbzG9e+S#kCbn#E_fol;l^IdQLmLx=2b+?m)Z$>|-ZX?SddC=T4hfB|dn{ zc46FPO*p=2;1$)$+Ah5{msS+#YKb8>RqN?+b3020v-Di^G?g*N_c^V{2G3Fnm~GLK z0#O()Ij970XXrAhp2S>q@G0+;L~XC>3ndoS*j9W@938)Omh&~CPNXpHMYX?q2k?^3 zlPW_JVkg;gORWvP1)_P*G#Q&r$@%gzSXoe!?MEqe5=0g)R!!SmUvk4 z7jiZK4W}U@A__rAMOv3yiPWh+mmQDirEPo~YVRi+4TLlrb~xlInHLU=0mJVu8ph(L<(TyvrdU84MNfzy0gEAN6`Hlk& z3l?8rq_l1$ci4Wa0UMD16IZL|@zjQ9DzapL66)Pt`RPyC60@jXc?yj%!DpNtjU5`! zA#Z#hDFRU!O|~)A!uq`^;>@#Si7L0Pm8~AKR1gpbt5c=Cv|xDsgNF}=hu(nDy$;1{ zZ58_MWSr6(`MHuO<0A^kVe|vU9RI3X@v6Z*0sob>BBx-pF^N%oC*CMfP*A1Nt#mG6 z=*rnfub9luOSv933V;caIe-vI5O2%>*(h-mwRw0_$`9!GW`Cld9;P;Aim)`L^+y43BbGc>ks$ zle>1l20^HC$5(8@fQrsX_j8KshF)L=}s(m%;*(w)sP;S3mRN4q4%#Z zCPMm_8}g2fpHcLkp~v{$W@UBdy5tnrhe3LsD@)2Cl`_SB@`uH?*b5fl-l^SeF2^i+ z{`bM|dDzvNBDbR~nI9CRqd!I5XZa~xFPD9}a%#HW>*Vktbs*ez#B;#`Iii7d>QWrx zzI|QB#r597c^HsT*Z-Xm4fQKc?UIu8fhQ+p!u!Q^kgEeqEv-@q-4F4We}ZOl(6%|a zX0({;oOwT_T-%&)qMz7izVgH-V9j7s06;bx5lcTHhDO+{)8CR2gK0|XY&{vjA20*< zz!#Hv{&1mF57D8jfwX+1XSjoiUSz@LM}kj6U+Hl%Vs<={jMd^$!)~_ zw1(e7ePXE63McgoH!7ET*GDhjTU+o|vcyEm&>NtNrq(h0^bOuQss8N(n}FpQ^zw{w zpz38){L7c3%6&6Q_DGXUltp+H5hDfbD^pU~`QWWuDPwSqvs}Pn{qgJ?KZ&uClpSxe zF_Ii33KESdt5^;51_x}~ci95?2~1>Xd5iqHwx*bTTj#%mviG=wq;e(O+ADY1u7Fy$ zU6~h9rZYD_#S@CwYNYb_%O1^Zf`32({I=Z098e#Idw!47f){eYj5zrL9}K>3}y8tn|+7XJNkZA<+UJ{uF?v> z)C>M95OxsHT5nNlq|QnREkFrQ_r1Qhcz7v0$fjuF4tF}EU{mVCj2N%>FsV|vrocVXrC1BD_e z*QMvSZQ?n&O^4_mkva6MOX3KMde z+48v{bKdOD{^YN008Y$+Cuaf*9XWF3cKz1QPSsGSicuyK3Cvpg-Ghafa>78MkfF;- zfKRxQ>bH0l-B-}z13?aFGUP1{Fllceo$n>BrYO)C#FH8;WrvleMJJ_}itpR_Mwba& zG&YCZELVX?n0g@T{+7HdE{zZKOqHA*Wqzm6tKnuaNz zQl^z2d2oyoU12N9Y{6EJ)9s{!7q#pYZ@2(15}4S-P1xcxrHR_vi?HyLH#QXq-A_Nd zoHDr^!Yj5U-OZ=6(dwl5JHv%mR3q&8;bGQ?xKb)6@ zErl~fU6ku}%f+$qfW~fjnYuEYR4nMEaMjgYP}wxM>UY9kx(AlogdeaVatRy3wPN=I zwRyx<-}NGGNxRl#XtjOQT3NmLr#{w$+M*Y1vgrvT# z&kg`Lz7}O+v9RCU-IDQRW08~hTd)HD(BvzSKza+U9g=@^Ko<`RZnPd@S!~_`ig9uD z&XQRBF9%Z&$d$v(wg^OV>2EAE+Vyg5EIolTT0rNFuJl`w4<9}(10Ky6s01z|5@Ap% z)S}uwtMnv5S5ZtS`!}0tL*(K06@j z9?EpaphX0b_-QTs?2j^Ylm`KsSYWyirCZsz&N{EVgQG!RW)%QVU5``9bOpfvUp+Yi z-Y~68)^@b})!gmHFAjef#{2~qOE45GC~S8=cjVVy=}Lu#Me?cWsRx-;Np^PRw>`j* zK#ANscNz+VT?f)(zlJ)CB^R`}I|I#ITU!c`9?U*}-*b@Il1F*n&QN#ut<$=Pg|M>j z0sfiME1CMM*ZZ1-yrFAV$77t+n?I*HIB03&0X}9k+XST7%~>>g;O0Me%s5+Bjjk+R zYx|7dij6Jl0UJEY!u?}~b?UW0<~ra0HFAM(_SBP$zees!64Yw$KE**f+pMX`BOnC- z)vRIq;1qkqMF|tr6DKK#H}&*>y%Z3N?-uyo_wir(cwWB3)X<(y#eYVD3Ou_rLCwfA z2n$;{4y0WVq=yoqr7?r=2tQcB2QruvQ~K)@5HbJb?SelJIMYLMKj1MB<^NIJ);_C* WG1ku*+tPBNI!Nc9HeU1Zr~d{bU#rOg literal 0 HcmV?d00001 diff --git a/docs/en/images/phonebook-empty-react.png b/docs/en/images/phonebook-empty-react.png new file mode 100644 index 0000000000000000000000000000000000000000..1b93c80d9f539b9861aa7b329b50af60543016b2 GIT binary patch literal 20988 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 literal 0 HcmV?d00001 diff --git a/docs/en/images/phonebook-people-delete-button-react.png b/docs/en/images/phonebook-people-delete-button-react.png new file mode 100644 index 0000000000000000000000000000000000000000..672bcc47467f055679341a56c7f7d4d8c5bdd1d9 GIT binary patch literal 28095 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 AcmMzZ literal 0 HcmV?d00001 diff --git a/docs/en/images/phonebook-people-view-react.png b/docs/en/images/phonebook-people-view-react.png new file mode 100644 index 0000000000000000000000000000000000000000..ac4a9efbb95986298e49fe2a5f94d5dc6e4fafc7 GIT binary patch literal 23244 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 literal 0 HcmV?d00001 diff --git a/docs/en/images/phonebook-persons-table-initial-data-2.png b/docs/en/images/phonebook-persons-table-initial-data-2.png new file mode 100644 index 0000000000000000000000000000000000000000..50d3a3505845f8fdfb10295e6320ca8e4554bcd6 GIT binary patch literal 12773 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 literal 0 HcmV?d00001 diff --git a/docs/en/images/role-permissions-with-phonebook-react.png b/docs/en/images/role-permissions-with-phonebook-react.png new file mode 100644 index 0000000000000000000000000000000000000000..e9028dd3d6eb26b35fd50d5fdca72092aa52398c GIT binary patch literal 22113 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%0DGk2tI8+!sYmU%~t)C!a6x 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 E2bAYuHvj+t literal 0 HcmV?d00001 From f9ff6b21f26e66bb0575f431df3f5f75ae22ca19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuzhan=20A=C4=9F=C4=B1r?= <90545225+oguzhanagir@users.noreply.github.com> Date: Thu, 18 Dec 2025 09:32:35 +0300 Subject: [PATCH 2/6] Refactor functions to remove error --- docs/en/Developing-Step-By-Step-React-Deleting-Person.md | 4 ---- docs/en/Developing-Step-By-Step-React-Edit-Mode-People.md | 4 ---- 2 files changed, 8 deletions(-) diff --git a/docs/en/Developing-Step-By-Step-React-Deleting-Person.md b/docs/en/Developing-Step-By-Step-React-Deleting-Person.md index 25bbbdf4..582e7e16 100644 --- a/docs/en/Developing-Step-By-Step-React-Deleting-Person.md +++ b/docs/en/Developing-Step-By-Step-React-Deleting-Person.md @@ -182,13 +182,9 @@ const deletePerson = (person: PersonListDto) => { okText: L("Yes"), cancelText: L("Cancel"), onOk: async () => { - try { await personService.deletePerson(person.id); abp.notify.success(L("SuccessfullyDeleted")); setPeople((prevPeople) => prevPeople.filter((p) => p.id !== person.id)); - } catch (error) { - console.error("Error deleting person:", error); - } }, }); }; diff --git a/docs/en/Developing-Step-By-Step-React-Edit-Mode-People.md b/docs/en/Developing-Step-By-Step-React-Edit-Mode-People.md index f181782e..b231ab8d 100644 --- a/docs/en/Developing-Step-By-Step-React-Edit-Mode-People.md +++ b/docs/en/Developing-Step-By-Step-React-Edit-Mode-People.md @@ -120,8 +120,6 @@ const EditPersonModal: React.FC = ({ setValue("surname", result.surname || ""); setValue("emailAddress", result.emailAddress || ""); setTimeout(() => setFocus("name"), 100); - } catch (error) { - console.error("Error loading person:", error); } finally { setLoading(false); } @@ -143,8 +141,6 @@ const EditPersonModal: React.FC = ({ abp.notify.success(L("SavedSuccessfully")); handleClose(); onSave(); - } catch (error) { - console.error("Error editing person:", error); } finally { setSaving(false); } From b970f7c36e314a25e1afb2bfbed4f149bffc03f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20=C3=87A=C4=9EDA=C5=9E?= Date: Fri, 2 Jan 2026 15:36:49 +0300 Subject: [PATCH 3/6] minor grammer changes --- ...g-Step-By-Step-React-Adding-New-Menu-Item.md | 7 +++---- ...Step-By-Step-React-Creating-Person-Entity.md | 15 ++++----------- ...ep-By-Step-React-Creating-Running-Project.md | 2 +- ...p-React-Database-Migrations-Person-Entity.md | 17 ++++------------- 4 files changed, 12 insertions(+), 29 deletions(-) diff --git a/docs/en/Developing-Step-By-Step-React-Adding-New-Menu-Item.md b/docs/en/Developing-Step-By-Step-React-Adding-New-Menu-Item.md index aaf05def..178bbd7c 100644 --- a/docs/en/Developing-Step-By-Step-React-Adding-New-Menu-Item.md +++ b/docs/en/Developing-Step-By-Step-React-Adding-New-Menu-Item.md @@ -17,9 +17,9 @@ export const buildRawMenu = (): AppMenuItem[] => [ ]; ``` -**PhoneBook** is the menu name , permisson(will set it later), **book** is just an arbitrary icon class (from [this set](http://keenthemes.com/metronic/preview/?page=components/icons/flaticon&demo=default)) and **/phonebook** is the React route. +**PhoneBook** is the menu name, **book** is just an arbitrary icon class (from [this set](http://keenthemes.com/metronic/preview/?page=components/icons/flaticon&demo=default)) and **/phonebook** is the React route. -If you run the application, you can see a new menu item on the left menu, but it won't work (it redirects to default route) if you click to the menu item, since we haven't defined the React route yet. +If you run the application, you will see a new menu item on the left menu, but it won't work (it redirects to default route) If you click to the menu item, since we haven't defined the React route yet. ## Localize Menu Item Display Name @@ -41,8 +41,7 @@ If we don't define "PhoneBook"s value for other localization dictionaries, defau Telefon Rehberi Detayları ``` -Note: Any change in server side (including change localization texts) requires recycle of the server application. We suggest to use Ctrl+F5 if you don't need to debugging for a faster startup. In that case, it's -enough to make a re-build to recycle the application. +Note: Any change in server side (including change localization texts) requires recycle of the server application. We suggest to use Ctrl+F5 if you don't need to debugging for a faster startup. In that case, it's enough to make a re-build to recycle the application. ## React Route diff --git a/docs/en/Developing-Step-By-Step-React-Creating-Person-Entity.md b/docs/en/Developing-Step-By-Step-React-Creating-Person-Entity.md index 4e1d89d4..501d33e0 100644 --- a/docs/en/Developing-Step-By-Step-React-Creating-Person-Entity.md +++ b/docs/en/Developing-Step-By-Step-React-Creating-Person-Entity.md @@ -34,17 +34,10 @@ public class Person : FullAuditedEntity Person's **primary key** type is **int** (as default). It inherits **FullAuditedEntity** that contains **creation**, **modification** and -**deletion** audit properties. It's also **soft-delete**. When we delete -a person, it's not deleted by database but marked as deleted (see -[entity](https://aspnetboilerplate.com/Pages/Documents/Entities) and -[data -filters](https://aspnetboilerplate.com/Pages/Documents/Data-Filters) -documentations for more information). We created consts for -**MaxLength** properties. This is a good practice since we will use same -values later. - -We add a DbSet property for Person entity to **PhoneBookDemoDbContext** -class defined in **.EntityFrameworkCore** project. +**deletion** audit properties. It's also a **soft-delete** entity. When we delete a person, it's not deleted from database but marked as deleted (see [entity](https://aspnetboilerplate.com/Pages/Documents/Entities) and [data filters](https://aspnetboilerplate.com/Pages/Documents/Data-Filters) +documentations for more information). We created consts for **MaxLength** properties. This is a good practice since we will use same values later. + +We add a DbSet property for Person entity to **PhoneBookDemoDbContext** class defined in **.EntityFrameworkCore** project. ```csharp public class PhoneBookDemoDbContext : AbpZeroDbContext diff --git a/docs/en/Developing-Step-By-Step-React-Creating-Running-Project.md b/docs/en/Developing-Step-By-Step-React-Creating-Running-Project.md index ea18e75b..bfea8dec 100644 --- a/docs/en/Developing-Step-By-Step-React-Creating-Running-Project.md +++ b/docs/en/Developing-Step-By-Step-React-Creating-Running-Project.md @@ -20,7 +20,7 @@ public class PhoneBookDemoConsts } ``` -**Note:** If you log in before changing **MultiTenancyEnabled** to false, you might be get login error. To overcome this, you should remove cookies. +**Note:** If you log in before changing **MultiTenancyEnabled** to false, you might get a login error. If you face this problem, you need to remove cookies. ## Next diff --git a/docs/en/Developing-Step-By-Step-React-Database-Migrations-Person-Entity.md b/docs/en/Developing-Step-By-Step-React-Database-Migrations-Person-Entity.md index 0b3805bc..12cca3f9 100644 --- a/docs/en/Developing-Step-By-Step-React-Database-Migrations-Person-Entity.md +++ b/docs/en/Developing-Step-By-Step-React-Database-Migrations-Person-Entity.md @@ -1,17 +1,12 @@ # Database Migrations for Person -We use **EntityFramework Code-First migrations** to migrate database -schema. Since we added **Person entity**, our DbContext model is -changed. So, we should create a **new migration** to create the new -table in the database. +We use **EntityFramework Code-First migrations** to migrate database schema. Since we added **Person entity**, our DbContext model is changed. So, we should create a **new migration** to create the new table in the database. -Open **Package Manager Console**, run the **Add-Migration -"Added\_Persons\_Table"** command as shown below: +Open **Package Manager Console**, run the **Add-Migration "Added\_Persons\_Table"** command as shown below: Entity Framework Code First Migration -This command will add a **migration class** named -"**Added\_Persons\_Table**" as shown below: +This command will add a **migration class** named "**Added\_Persons\_Table**" as shown below: ```csharp public partial class Added_Persons_Table : Migration @@ -49,11 +44,7 @@ public partial class Added_Persons_Table : Migration } ``` -We don't have to know so much about format and rules of this file. But, -it's suggested to have a basic understanding of migrations. In the same -Package Manager Console, we write **Update-Database** command in order -to apply the new migration to database. After updating, we can see that -**PbPersons table** is added to database. +We don't have to know so much about format and rules of this file. But, it's suggested to have a basic understanding of migrations. In the same Package Manager Console, we write **Update-Database** command in order to apply the new migration to database. After updating, we can see that **PbPersons table** is added to database. Phonebook tables From 9b4f68d258370d1b9e8667ae4da8f8a893233cdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20=C3=87A=C4=9EDA=C5=9E?= Date: Fri, 2 Jan 2026 15:58:45 +0300 Subject: [PATCH 4/6] fix wrong redirection to angular docs --- .../Developing-Step-By-Step-React-Changing-GetPeople-Method.md | 2 +- ...eveloping-Step-By-Step-React-Creating-PhoneBook-Component.md | 2 +- .../en/Developing-Step-By-Step-React-Migrations-Phone-Entity.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/en/Developing-Step-By-Step-React-Changing-GetPeople-Method.md b/docs/en/Developing-Step-By-Step-React-Changing-GetPeople-Method.md index f517d4a7..3f324802 100644 --- a/docs/en/Developing-Step-By-Step-React-Changing-GetPeople-Method.md +++ b/docs/en/Developing-Step-By-Step-React-Changing-GetPeople-Method.md @@ -61,4 +61,4 @@ separately). ## Next -- [Adding AddPhone and DeletePhone Methods](Developing-Step-By-Step-Angular-Adding-AddPhone-DeletePhone-Methods) \ No newline at end of file +- [Adding AddPhone and DeletePhone Methods](Developing-Step-By-Step-React-Adding-AddPhone-DeletePhone-Methods) \ No newline at end of file diff --git a/docs/en/Developing-Step-By-Step-React-Creating-PhoneBook-Component.md b/docs/en/Developing-Step-By-Step-React-Creating-PhoneBook-Component.md index a44cb1a6..14f5f766 100644 --- a/docs/en/Developing-Step-By-Step-React-Creating-PhoneBook-Component.md +++ b/docs/en/Developing-Step-By-Step-React-Creating-PhoneBook-Component.md @@ -15,7 +15,7 @@ const PhoneBookPage: React.FC = () => { <>

diff --git a/docs/en/Developing-Step-By-Step-React-Migrations-Phone-Entity.md b/docs/en/Developing-Step-By-Step-React-Migrations-Phone-Entity.md index 677292f5..5eb688df 100644 --- a/docs/en/Developing-Step-By-Step-React-Migrations-Phone-Entity.md +++ b/docs/en/Developing-Step-By-Step-React-Migrations-Phone-Entity.md @@ -109,4 +109,4 @@ You can check database to see **PbPhones** table and rows. ## Next -- [Changing GetPeople Method](Developing-Step-By-Step-Angular-Changing-GetPeople-Method) \ No newline at end of file +- [Changing GetPeople Method](Developing-Step-By-Step-React-Changing-GetPeople-Method) \ No newline at end of file From a9bf5de7fd6948a44e9cbd3ee0601654da4ac136 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20=C3=87A=C4=9EDA=C5=9E?= Date: Fri, 2 Jan 2026 16:03:25 +0300 Subject: [PATCH 5/6] removed wrong section in Developing-Step-By-Step-React-Using-GetPeople-Method-from-React.md --- ...ping-Step-By-Step-React-Using-GetPeople-Method-from-React.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/en/Developing-Step-By-Step-React-Using-GetPeople-Method-from-React.md b/docs/en/Developing-Step-By-Step-React-Using-GetPeople-Method-from-React.md index 9fc62724..1428d9bc 100644 --- a/docs/en/Developing-Step-By-Step-React-Using-GetPeople-Method-from-React.md +++ b/docs/en/Developing-Step-By-Step-React-Using-GetPeople-Method-from-React.md @@ -150,8 +150,6 @@ We successfully retrieved list of people from database to the page. We normally use a javascript based rich table/grid library to show tabular data, instead of manually rendering data like that. For example, we used [Ant Design Table library](https://ant.design/components/table/) to show users on the Users page of ASP.NET Zero. Always use such components since they make things much easier and provide a much better user experience. -We did not use a table component here, because we want to show basics of React instead of going into details of a 3rd party library. - ## Next - [Creating a New Person](Developing-Step-By-Step-React-Creating-New-Person) From a67a0b80281be9d05ef52dcb5c7b1b2057f228fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20=C3=87A=C4=9EDA=C5=9E?= Date: Fri, 2 Jan 2026 16:05:03 +0300 Subject: [PATCH 6/6] replace angular terms in Developing-Step-By-Step-React-Using-GetPeople-Method-from-React.md with react terms --- ...g-Step-By-Step-React-Using-GetPeople-Method-from-React.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/en/Developing-Step-By-Step-React-Using-GetPeople-Method-from-React.md b/docs/en/Developing-Step-By-Step-React-Using-GetPeople-Method-from-React.md index 1428d9bc..416310d1 100644 --- a/docs/en/Developing-Step-By-Step-React-Using-GetPeople-Method-from-React.md +++ b/docs/en/Developing-Step-By-Step-React-Using-GetPeople-Method-from-React.md @@ -136,10 +136,7 @@ const PhoneBookPage: React.FC = () => { export default PhoneBookPage; ``` -We inject **PersonServiceProxy**, call its **getPeople** method and -**subscribe** to get the result. We do this in **ngOnInit** function -(defined in React's **OnInit** interface). Assigned returned items to -the **people** class member. +We use **useServiceProxy** hook to get an instance of **PersonServiceProxy**, then call its **getPeople** method using async/await. We do this inside the **useEffect** hook which runs when the component mounts. The returned items are stored in the **people** state variable using the **setPeople** function. Phonebook peoples