From 32860e7c201f3bcfa02134e5c8c74a3bf79ebaea Mon Sep 17 00:00:00 2001 From: MAP English Services Date: Mon, 30 Mar 2026 16:17:38 -0300 Subject: [PATCH 1/4] Feature ETP-3185: Rewrite Accounting Templates page as user guide Co-Authored-By: Claude Opus 4.6 (1M context) --- .../accounting/setup/accounting-templates.md | 78 ++++++------------- 1 file changed, 23 insertions(+), 55 deletions(-) diff --git a/docs/user-guide/etendo-classic/basic-features/financial-management/accounting/setup/accounting-templates.md b/docs/user-guide/etendo-classic/basic-features/financial-management/accounting/setup/accounting-templates.md index 936de6fb02..fe25de7f20 100644 --- a/docs/user-guide/etendo-classic/basic-features/financial-management/accounting/setup/accounting-templates.md +++ b/docs/user-guide/etendo-classic/basic-features/financial-management/accounting/setup/accounting-templates.md @@ -5,77 +5,45 @@ tags: - Templates - Financial Management - Setup - - Accounting --- -# Accounting Templates +# Accounting Templates :material-menu: `Application` > `Financial Management` > `Accounting` > `Setup` > `Accounting Templates` -## Overview - -Accounting templates in Etendo overwrite default accounting behavior. Each template is related to a specific table. - -The accounting entries generated by Etendo usually need to be generated in a different way to fulfill the legal requirements for a concrete country. To support this kind of requirements, Etendo allows overriding the code that generates the accounting entries through what is called Accounting Templates. Each time a document is posted, the accounting engine checks whether any Accounting Template is defined for the associated table or for the concrete document and executes it instead of the default Core's code. - -!!! warning - This is a powerful feature that must be used with caution. The code that generates the accounting entries must be deeply tested before deploying it in a real instance. - -## Creating the Accounting Template Configuration - -The Java class that implements the generation of the new accounting entries is defined into the Accounting Templates window. The definition is quite simple and only requires a name, the Java class name, which must be inside the java package of the module, and the table for which the user wants to override its accounting entries (for example, C_Invoice for Invoices, M_InOut for goods shipments/receipts, etc.). - -![](../../../../../../assets/drive/1QFEgaMk9QRkcpsjLLGOZJNKRJo75LvKr.png) - -This Accounting Template will be later on associated with the Active Tables or a Document. So in this step it is important to define as many Java classes as Active Tables or Document to override their accounting behavior. -For example, we can define an unique java class for overriding the accounting behavior of all the invoices (sales invoices, purchase invoices, purchase/sales credit memo, etc.), or alternatively define a class for overriding only the accounting entries for Purchase Invoices (AP Invoice) and keep the default behavior to the rest of the invoices. +## Overview -### Dataset Definition +Accounting Templates allow organizations to **replace Etendo's default accounting entries with custom posting rules** for specific document types. When a document is posted, the accounting engine checks whether a template is defined for that document type and, if so, executes the custom logic instead of the standard posting behavior. -Dataset definition is a key step in this process. A wrong dataset definition can waste all previous work, so it is important to follow all these considerations: +This is typically needed when: -- The dataset must belong to the accounting template module -- Try avoiding strange characters in the dataset's name. This string is used for generating the XML file name that stores the dataset. -- The Data Access Level must be set to System/Client, which means we allow users to apply the configuration only at Client level (Organization *). -- The Export allowed flag must be set. -- Inside the Table tab, include the AD_CreateFact_template table, which is the one that stores the Accounting Template configuration. -- The HQL/SQL Where clause is an important field, because it allows filtering the records the user wants to include into the dataset. In the example all the records that are inside the module java package name have been filtered. +- **Country-specific legal requirements** demand a different accounting treatment for certain transactions (for example, invoices, goods shipments, or payments). +- **Special posting rules** must be applied to a subset of documents, such as generating additional ledger lines or distributing amounts differently. -![](../../../../../../assets/drive/1stuKmJOwNnsth6RG3HX9tj5_6v3OY83U.png) +!!!info + Setting up an Accounting Template is a collaborative task. A **developer** writes the custom posting logic (a Java class), and a **finance administrator** configures the template in this window to activate it. If your organization needs a custom template, coordinate with your development team before making changes. -The dataset definition is ready, so the user just needs to export it to a file pressing the Export Reference Data button. This process queries the previous tables and gets all the records that fulfill the HQL/SQL Where clause, generating a XML file inside the module's referencedata/standard directory. As a fast check, this file can be opened using any plain text editor and the user can verify that it contains several lines. -In case the file is empty, the user should double check the dataset definition, specially the HQL/SQL Where clause used for each table. +You can define a single template that covers all documents of a given type (for example, all invoices), or create separate templates that target only specific document categories (for example, only purchase invoices), while leaving the default behavior for the rest. -#### Testing the Dataset +## Header -The real test to ensure the taxes dataset is OK can be done inside the development instance. The test consists on creating a new client running the Initial Client Setup and selecting the new dummy accounting template dataset. - -![](../../../../../../assets/drive/14yYG4b3onJefyFiz6sV8KlImkfi5ijCf.png) - -!!! info - If the data inside the dataset are consistent, the Initial Client Setup Process should be completed successfully, otherwise it will fail giving a description about the error. - - -After a successful Initial Client Setup, login into the new client, go to the Accounting Templates window and check the record is there. - -## Functional Specification - -### Overview - -Nowadays, Etendo builds entries associated with documents following a hard-coded behavior. In order to modify the generated entry, code must be modified. The current code has become a module called core. If a module wants to modify accounting entries generated by documents, core must be modified, and this is not desired at all. -With this new development in core, modules will be able to easily modify the entries generated by each document. +![](../../../../../../assets/drive/1QFEgaMk9QRkcpsjLLGOZJNKRJo75LvKr.png) -### Scope -The aim of this project is to allow modules to modify the way entries are generated when posting documents. +Fields to note: -### Design Considerations -A new layer will be included between the document, and the logic that posts that document. In a new window each document is mapped to the servlet that implements the logic to post it. This way, just modifying the values on this window, accounting behavior is changed. If a new module wants to change the entry generated when posting an invoice, a new servlet is developed following the desired behavior. At the same time, the mapping of the invoices to the servlet that posts will be changed to the servlet developed in the module. This way, the whole application behavior is changed. +- **Name**: A descriptive identifier for the accounting template. Use a clear name that reflects the posting rule or the document type it affects. +- **Java Class Name**: The fully qualified name of the class that implements the custom posting logic. This value is provided by the developer who created the template module. +- **Table**: The document type this template overrides. Select the table corresponding to the transactions you want to customize (for example, invoices, goods shipments, or payments). +- **Description**: Optional additional information about the purpose or behavior of this template. +- **Active**: A flag indicating whether this template is currently in use. Deactivating a template restores the default posting behavior for the associated document type. -### Functional Requirements +!!!warning + Accounting Templates override the standard posting logic for the selected document type. Before activating a template in a production environment: -!!! info - Application is not affected by these developments, because all changes to the way the documents are posted are transparent to the user. Only a new window is necessary, that is configured automatically for the user when updating. + - **Test thoroughly** in a development or staging instance by posting sample documents and reviewing the generated accounting entries. + - **Involve your development team** to confirm the custom logic handles all expected scenarios. + - **Have an auditor or accounting manager review** the resulting ledger entries to ensure they meet legal and organizational requirements. --- -This work is a derivative of [Accounting Templates](https://wiki.openbravo.com/wiki/Projects:Accounting_Templates){target="\_blank"} by [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, used under [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. This work is licensed under [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} by [Etendo](https://etendo.software){target="\_blank"}. \ No newline at end of file +This work is a derivative of [Accounting Templates](https://wiki.openbravo.com/wiki/Projects:Accounting_Templates){target="\_blank"} by [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, used under [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. This work is licensed under [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} by [Etendo](https://etendo.software){target="\_blank"}. From a3e7955cf1c26a24a5882c5b0f5f7ff19f7b6590 Mon Sep 17 00:00:00 2001 From: MAP English Services Date: Wed, 1 Apr 2026 11:08:45 -0300 Subject: [PATCH 2/4] Feature ETP-2107: Expand Accounting Templates page with dataset and technical sections Co-Authored-By: Claude Opus 4.6 (1M context) --- .../accounting/setup/accounting-templates.md | 71 +++++++++++++++++-- 1 file changed, 66 insertions(+), 5 deletions(-) diff --git a/docs/user-guide/etendo-classic/basic-features/financial-management/accounting/setup/accounting-templates.md b/docs/user-guide/etendo-classic/basic-features/financial-management/accounting/setup/accounting-templates.md index fe25de7f20..61c3a2dd00 100644 --- a/docs/user-guide/etendo-classic/basic-features/financial-management/accounting/setup/accounting-templates.md +++ b/docs/user-guide/etendo-classic/basic-features/financial-management/accounting/setup/accounting-templates.md @@ -23,18 +23,18 @@ This is typically needed when: !!!info Setting up an Accounting Template is a collaborative task. A **developer** writes the custom posting logic (a Java class), and a **finance administrator** configures the template in this window to activate it. If your organization needs a custom template, coordinate with your development team before making changes. -You can define a single template that covers all documents of a given type (for example, all invoices), or create separate templates that target only specific document categories (for example, only purchase invoices), while leaving the default behavior for the rest. +You can define a single template that covers all documents of a given type (for example, all invoices), or create separate templates that target only specific [document categories](document-type.md) (for example, only purchase invoices), while leaving the default behavior for the rest. ## Header -![](../../../../../../assets/drive/1QFEgaMk9QRkcpsjLLGOZJNKRJo75LvKr.png) +![Accounting Templates grid view](../../../../../../assets/drive/1QFEgaMk9QRkcpsjLLGOZJNKRJo75LvKr.png) Fields to note: - **Name**: A descriptive identifier for the accounting template. Use a clear name that reflects the posting rule or the document type it affects. -- **Java Class Name**: The fully qualified name of the class that implements the custom posting logic. This value is provided by the developer who created the template module. -- **Table**: The document type this template overrides. Select the table corresponding to the transactions you want to customize (for example, invoices, goods shipments, or payments). -- **Description**: Optional additional information about the purpose or behavior of this template. +- **Java Class Name**: The technical identifier for the custom posting logic. Your developer will provide this value — paste it exactly as given. +- **Table**: The document type this template overrides. Select the table corresponding to the transactions you want to customize. In the dropdown, look for names like `C_Invoice` (invoices) or `M_InOut` (goods shipments) — these are internal table names Etendo uses to identify each document type. +- **Description**: Optional additional information about the purpose or behavior of this template (not shown in the grid view above). - **Active**: A flag indicating whether this template is currently in use. Deactivating a template restores the default posting behavior for the associated document type. !!!warning @@ -44,6 +44,67 @@ Fields to note: - **Involve your development team** to confirm the custom logic handles all expected scenarios. - **Have an auditor or accounting manager review** the resulting ledger entries to ensure they meet legal and organizational requirements. +Once the template is configured, it is associated with the corresponding active tables or documents. The entries it generates will appear in the [General Ledger Configuration](general-ledger-configuration.md) reports alongside standard postings, following the rules defined in the [Account Tree](account-tree.md). + +## Dataset Definition + +!!!info + This section is intended for development teams that need to package a custom accounting template as a distributable module. If you are only configuring an existing template, you can skip this section. + +The dataset definition determines which records are exported with the accounting template module so that the template can be installed in other environments. A correct dataset definition is essential — an incorrect one can render the entire template unusable after installation. For background on how organizations and datasets interact during setup, see [Initial Organization Setup](../../../general-setup/enterprise-model/initial-organization-setup.md). + +Follow these guidelines when defining the dataset: + +- The dataset **must belong to the accounting template module**. +- **Avoid special characters** in the dataset name. This string is used to generate the XML filename that stores the dataset. +- **Data Access Level** must be set to `System/Client`, which means users can apply the configuration only at Client level (Organization `*`). Note: the screenshot below may show a different value depending on the Etendo version. +- The **Export Allowed** flag must be checked. +- In the **Table** tab, include the `AD_CreateFact_template` table, which stores the Accounting Template configuration. +- The **HQL/SQL Where Clause** is critical for filtering which records are included in the dataset. Typically, the clause filters all records whose Java class name falls within the module's Java package. + +![Dataset definition window](../../../../../../assets/drive/1stuKmJOwNnsth6RG3HX9tj5_6v3OY83U.png) + +Once the dataset definition is complete, export it by pressing the **Export Reference Data** button. This process queries the configured tables, retrieves all records matching the HQL/SQL Where Clause, and generates an XML file in the `referencedata/standard` directory of the module. + +!!!info + As a quick check, open the generated XML file with a text editor and verify it contains data. If the file is empty, review the dataset definition — especially the HQL/SQL Where Clause for each table. + +## Dataset Testing + +The recommended way to verify that the dataset is correct is to create a new client within the development instance using the [Initial Client Setup](../../../general-setup/getting-started.md#initial-client-setup) process, selecting the new accounting template dataset during setup. + +![Initial Client Setup reference data selection](../../../../../../assets/drive/14yYG4b3onJefyFiz6sV8KlImkfi5ijCf.png) + +!!!info + If the data within the dataset is consistent, the Initial Client Setup process should complete successfully. Otherwise, it will fail with an error description indicating what went wrong. + +After a successful setup, log in to the new client, navigate to the **Accounting Templates** window, and confirm that the template record is present. You can then proceed to test posting by creating sample documents and verifying that the custom accounting entries are generated correctly. + +## How Accounting Templates Work + +This section explains the technical design behind Accounting Templates. It is provided for reference and is not required for day-to-day configuration. + +### Overview + +By default, Etendo generates journal entries for documents using built-in posting logic. Accounting Templates introduce a mechanism that allows **modules to override this default behavior** without modifying the core application code. This means organizations can adapt how accounting entries are generated to meet specific legal or business requirements through independent, installable modules. + +### Scope + +The goal of Accounting Templates is to allow modules to **modify how journal entries are generated** when documents are posted. Rather than requiring changes to core code, a module can provide its own posting logic that the accounting engine will use in place of the default. + +### Design Considerations + +Accounting Templates work by inserting a **new layer between the document and the posting logic**. In the Accounting Templates window, each document type is mapped to the class that implements its posting behavior. To change how a document is posted: + +1. A developer creates a new class that implements the desired posting logic. +2. The template is configured in this window to map the relevant document type to the new class. +3. From that point on, all documents of that type use the custom logic. + +This approach is transparent to end users — the posting process looks and works the same from the application interface. The only difference is in the accounting entries generated, which follow the rules defined by the custom template rather than the built-in defaults. + +!!!info + The application interface is not affected by these changes. All modifications to posting behavior happen behind the scenes. The Accounting Templates window is the only additional configuration needed, and it is set up automatically when the template module is installed. + --- This work is a derivative of [Accounting Templates](https://wiki.openbravo.com/wiki/Projects:Accounting_Templates){target="\_blank"} by [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, used under [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. This work is licensed under [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} by [Etendo](https://etendo.software){target="\_blank"}. From 025cb6f921c2e9e9c651f7bd22c34238ae8110c6 Mon Sep 17 00:00:00 2001 From: MAP English Services Date: Wed, 1 Apr 2026 15:35:42 -0300 Subject: [PATCH 3/4] Feature ETP-2124: Split Warehouse Analysis Tools into sub-pages Co-Authored-By: Claude Opus 4.6 (1M context) --- .../1DpBnQAG8Xyk9rM5xKhQvdKNt8p-bm4tj.png | Bin 49328 -> 0 bytes .../analysis-tools/pareto-product-report.png | Bin 0 -> 92755 bytes .../getting-started.md | 2 +- .../warehouse-management/analysis-tools.md | 238 ------------------ .../material-transaction-report.md | 21 ++ .../analysis-tools/pareto-product-report.md | 88 +++++++ .../product-movements-report.md | 28 +++ .../analysis-tools/product-operations.md | 19 ++ .../analysis-tools/stock-history.md | 40 +++ .../analysis-tools/stock-report.md | 25 ++ .../analysis-tools/valued-stock-report.md | 65 +++++ .../warehouse-management/getting-started.md | 10 +- .../bundles/warehouse-extensions/overview.md | 4 +- mkdocs.yml | 18 +- 14 files changed, 310 insertions(+), 248 deletions(-) delete mode 100644 docs/assets/drive/1DpBnQAG8Xyk9rM5xKhQvdKNt8p-bm4tj.png create mode 100644 docs/assets/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/pareto-product-report.png delete mode 100644 docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md create mode 100644 docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/material-transaction-report.md create mode 100644 docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/pareto-product-report.md create mode 100644 docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-movements-report.md create mode 100644 docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-operations.md create mode 100644 docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-history.md create mode 100644 docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-report.md create mode 100644 docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/valued-stock-report.md diff --git a/docs/assets/drive/1DpBnQAG8Xyk9rM5xKhQvdKNt8p-bm4tj.png b/docs/assets/drive/1DpBnQAG8Xyk9rM5xKhQvdKNt8p-bm4tj.png deleted file mode 100644 index 031eaf89358ced81a35f0d8ba743ec4c660bc11c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49328 zcmc$`WmFx_wy@i{ySuv+0>Rx0?(XjH5+D#fxVyUrmk`|DJ-EBuUGKN|KKI;l&iDKF z=(V~=*Q%;nT{h>_v(^tqc}XOAe0Tr=kff!=lmP(32^8Le1qXc>D#A~IE^v-gS}p*9 z-1pB1EQtY`002k2PoMG zX)XdOE&>Oi4)`WNZIXom!99koxQNifPmo<7E8zbM_ZW70Im-X|PmJpSUt!$OAH$=g zFWS!kB^F$p`#vlhYDd%tL5swPxYnw{MVZ+fq){NRiNG z@^gG%av7BtbtCo4s#-nj+Lq2Z707e4dgV~bX>ce}@WOsw? zK3mz%hX7DGd5|{Kt6Qr5O6)rc_bYYTX9`zPe=!4q;k_P4z?kg8PCvsJexKVm#*J@Z z-^V&D3T^IV&!_s}t$*~LP8GfUKC1A~xmBU4C_BMF3ZAl3G4a=}wV6Fcp-Z}KFB;4- z!$z3sALB3u3hnlI`%!p_E*!45)f@hbkev7+aamq$QL#DdVGJ3^6UC!zdBXC&xJI#;Z-uFU%Uc0Oi(vS*6D6|hPs0RS7mXVaGu@0TBQK%Zlyf$hcoOmpgqT2PO0fJbbh_`Adr5Pwj?)5FoW< z*{B=IBIx$%>8pSH8|N*d=TzMYG8T^9I)7}`??7CMp@zUV-35P{gkA|0DyEeAHFx!ZyG&DwA z@^9g#L@=Kor2=Ig7%2EF{7n`S5T@_MUkzeAebG3FE&u+QS#8(#=7pgq6Z?r01KF~q ziFc%RhtFwq@Jm@NZ%{`sYRuQ;`xw6ILhqXSO4ll7zT!rZw1juUA7>kSSU{-u&d&CE zY3a7E?#QaVB8oO-#q}_klBvtX-@#QqCCB^NHx^axC$`%Z+kSewix)p44_jU@O8LlV zyHFrEn5;&@%?^JgoW2v|FGKCAQK7}WgV^u77s~j|9FrwcR-d;_G{14A7x>qS-A?gC zyZ7Zl>9;X&Ts#zKEm!IbCXx6X1dALxe`o*A>>CgGhz9#Y92Hk;zko8j_~4hu95>RB z;cgZ*?<`_YA6vm4VhL>KS&zbGWmqhIWLE-Hd&|$3$LD+Y{87}|v{l>qx2M;|!zwt? zXZl|T%zS^R4Wg^&g^oJFr0}A!v!60t@*3!t=uxTo`21C#3gSf%p;hJPo%&MIMu7x> zNy29zkbJu)$B+`|i%;eRYI28;4w~h{VLCd>K`0zuZH3_pZ$`6gTc1WHLL)~zANM#x zuh*K6=y>+T^_Je$E?!ID1KCyZSV6W-ocD*AjsC^iA{kh+r|y89E{e16W9=D(grrHR zbDkF&dAeUvhmI1dc>2rOMZI;JzCmj85Y%i zI`k!piFu6Moaw~=-giP)e;gWfj9{ z0$z!=IebkX$>q0iK4>XRfFKSdv`Mj=h9CMY-7aU6kYmS-#l=+sSX^PHx|-@$Ypxv} z&yB)nr-$(oaJzMHGW>w49B8|D@o2a9bxiVscMONrJ2E?)x^u z@S(J+0$Yeuv%74IgpyO9;O4uy4FhWT?iYG7@{feL59#d9AF{si+Jq2pPj94~pNF$j zs0-Kl*8~GrXL3!S&h#oCHm6e^55-E`A18?DXz5f+M?Q-WVn0I(?pH?$2KY;U%v=Vx zz7WqwXw23EBgxs_E0`a@jx?E}U;(mR4|O-m74DaZP6VbjxiBKQfbpqvmfb}X+f-?f`p$5 zZ!tsNXd>7064Y7p*}5mrp>%#^NqPCo+~AP8V=nmixjkZ>&pPKFwA6dBK%j_JjOzSn zeQ}l*kB31xGFj+mQFf+J5Q(^)i&waqDbm{?5mOIDsX*?WgjQKTJrHL>wKnuETi;~t zvwz_9MCanW3)fYbE(w|9@e%8Q)J_*XCCB)wkxc`;`q4|aWF5yh4Hj(n&p~XUku~taAFb7FJY7TJ zX6)xRW~~#%;T4*+3@>ih8PM%(C_)pHH?azF(n(`*WVam9l9KV0eFP$qne)x_Y?rk* zCr$Z!2gYl}e!%=}a`3Tzkags`s0K-28Z|x`{q>6wtEvVOwB{==;mcpFEa`a$os=$S zABf+8Ijy%Mk@*5#MSYSN5h?mDPd|Fr~Pk?jS0BEkqY1W{t zdD4h{+7Q&h%=}#;rPBOXZ2)3ur0&;aE4@@N0X$&Tlb#OJ* zzXPfK=HHo}6d?fMd-+7HbHudYw1Ff{X1hDZ-hL~RN{p_ilYNbK=sqS@m$4 zm-xy7uj1MAk$88`p&{Q~K9P75X-Mk63WdT~HbvdX<4FYAK#|1EcskDVGV8@SSYVho zblD7;`YzvLZ4@X1z>Yr`uP0OZGIiu`7qJt6J(=b`VM6q-I7odmqe z(n1oupmIxRZikjQ0K4nx4*KX^RMidR5>3Q{xLx6)i&bR~K9NkG6l|P?@{vMSc-Xv; z>j`lKe=tSrpSdKcJ9b()j897Wo~BEbaz<~^3URJxMUIf(0h$_ zB^gkD0t=-1=*uRUJa>Jzj?i^WeuVktx}o%#`}!{w5>KjFV9+nga6;H?{x@MbS&a(BZ6KI`d8k28?CQIQ^SoH z*ITU+s#6Kp%b2l*6!1wK{2q=hmQl{fWy)oQP*P+HZd=EXH*23gxa-{aTdRWeL=+ak?h^6;g+k(d{w?q}lD@3=Mt=?We z$Lk4%C`|{5k8bCv$j4isCn?N&g;^#;gnPe6C+5(SnSt~?!Imn$tZv^ynV_AM`>ZM& zDCV5Xu(;A{&r(73$f|Nm2k)Q19B$h4J zfw%~I(pTeVvGeBo8rX`i+(HNs0gYsA7JJFJJD_sSpVJSE&CM8f>7c0jD6ITdw$zFi<8iXL#Dc)GwRG=aS0} zF6dw|0B~z^?#au=gGu=)SzGqC{7sKzH@BNY_g;=z=rv#eW0a-?XD@V4|IKi0 zZUI&)FT10ox;=gZtwC(%Ec5$8#TWr3!tXo)s72Gx zf~w_VidN4Rp?dU}!LNk^mA0h_086k{6X2Rz$r22TdGN1mTu4jcATdB${#Tv_Sfz?k z{(@BhmzZ}VqW?>79rDr;O#tW-6M_f_LEgL;P%%662(9+m1xG_m=^!%P-m>8m^6RJc zK{Yl18J~v40q5BcQgVFw74>uVi?h{aypzf;_d>T`0cdXiSYO?qI9u7IsrO2^uZMDc zYJ$h(63>}UJHflsl_%rAJI}9a{V|)pf85;Cm^~AfC*;d(d-T}DfA{tF&Ig6C;dSaP zUZLh@bIGp`?^-+Wdj2e&VlhIy9Bsp(n)z&9E5QDgx4*mD|724uK!Q=)=juT1sX;sU za7DmCLtMcTmjw6cl>vsp2H^;27*8nL&R3oXqz<*CN*@Afj|C6G+m7?3k8{WQ#T+!f zcdAYmPs=E2i?8ya^I(E{O}|=zthqm@$_;*)>Op}x;-m0rr<0hj)x-1&vVCK%n)-P^ zc<}N2Iy#r*-T?`$o2fnQO6SFcUoNK^TLt#%Sgp?6p!w>(!eq5xo7a`L=xUZpfUPSO z61gM*V218;!13jy0;CZlA7-KB*)3F??&Dq21&!(CPcN3$-mFYNBPMPFQi7WdJoFvL z#W2BzE`yxDJ#7|xdG{9ttE_YJu@Zi^SS1(rq+e_IOM4M@nyXtj&rvL4{A_%-@Cvm< z6t&8Gfw?lO%1h>@DxQEYDF<5B1%xh8pI_8l4=G7vRh1y<UQ*Q=kI7SMnK zv%c@h=_fDT_UeYx2kyG%(kkRo;J4%4z+H@;k=%~@Dx09f&WsJr!nvV+ z8mrieinY}c#nbl9AhY}#`v|Y&53o;yMi&d4G}z5Q5D4arHj>8Yx$wVce3zf9R3V4| z+?I%qB^|WfBV@1{$ZNO|)Z$YnY{G$>FH>`oN>zJkWV)uo`Z5VqgXWzPz-g!~*gz~X z5Uh)xHS7}^xBE)iOUxYE^!38-Gk?0+@&Uvk{Mem$>Z+VJaaL?;M4Ynkf`ctfFLCEu zlU{&UgB}3Hda(#G!{26-eDHvlgGS*d8gC%LE^u!^uEUUm795bg3pJ!9?d<6Hp z2#v`8Pg6yFC~3BDh6mQZP?o32k{*jMEfGr)um0I@Ro$ap#JLLKzrPk=qAd79BZKfi zaE{%3Sp=l{|4V#S4dS8suQ}hA@*u5Zhj}?Yd60;=wpw2u5BGtGY$94!?bSKAX9@n{ zVVE#KD0BWOZv}YWlT`%;R8Io32wz9a-~9t4Qj_J2wOYJ2N#yYSOUK5hoD7#-Df+>S zFdx=t9G zm<5~>dz-VP*kXw>e6A1Mc$*|UDIdgTr>8t|Y2NoD%%Ks?*$PlP8Z_$)THymlSeWo& zuC+NF(_c(Bn`VviLQ#Qum7*Vm?-Pq@zL)1!^Bqy)pYu>K^*FRn8!aXo6G{&JHyzjA zbsqm_7vUg>Qq6+KL=_J6xNbTfCMN%ccMnHnt+@vAk*S%=ujShokD<}84pE-qZ z%baFvqKZ@B@W6$(`E{6Rns0wnQB~n*s2+~ivD7BBQ5IB$#ogreG+js&7ZN(Yn5%4U_BVl9?TA8t@Mw9mTl`od3+ESBPjQ|4hLBtwMG56iN6cN*)7y zz)g3te>JN8b#gqBcQ^&*9s6l8bkjt{zbz}B#n0VzAWjO11LyM$&x{^l$%(!4h&4*w zlQkgdh$p3lp?aL&*ux>9@We>*lw2|U_FG<(X#ZRx3jwI10851q?i@%Zkb$`ZH<^u; zK`YnQmv9DX8H6C#pJ~L;wVY}%a3% zh3e$GDshWZ-1q#+&RA+K;3isWTbF9bV82yNejS6)A6wNo$-ctOJP^HipNBa3FFW0< z!O#5273BH_HW6(6xcS*0;nA%hp~#deUC%5hO6&6SLxlKJvr_dwacw0As?S*yI&w0`2^rO;l3--zX|K!%U4HX%2#fW z%WNiH4Y>T_yiQav*3rR5&}FV53*fTEtSwuBu8u+4iv;syqp0FM*#Gm3itR z_8yHo(w?BKfqu9dC<%Il0Lzqt64nJ21FsYd&X!9vBy+cWB^L)d?m13J5|0g)S-GJCl5w#%Xbszf%8Jt`6CY zdI(a@A0pHEyitCxs#LikBVG^ll*>+ObX#H>WZA^NiDPH2QrBJMZoB6ES%@VVw#K&X z?bNUn2{94#f)=lW844t>{wks6Rs?B~>=F69fJ2c3km?+Q+UQUqH(YkH!ipCd*P+cC zAp-DJ-!xb5>L*9%v>9C`6C2%ljR=te^LfG_wnUY>R0XbMm+}eK1B5DHtri`Ky7f#N zZN5RVZW4mZ0He~Vdoip3dfIeWmy8H0#mwFA(f`vzKCD1viBDV5at2O}uC0_kIDdBp zHgLHZiK>JaJ`q&}Q>`WeLfqqmWnZV5TO_Ehtc;UT9$O&W${6$lNx^~AOolg_^H`1_ zMrfCpTYR{PG9Fwc@%6d-*KMBie<3Pb5HSkOOR^`>s7q@VKAoGV+~8sB}tNLkLDb7wG=l_;f6bgd^*7+NDFa?NY=-ZgYRV>Aw2KaObbab zrv^fg6;bj^&Y;OgCP+F#wqrsRHr34;9i9x5wB#RPcN(Rk<9Obux&LGNo?)b%hbDg) zQ*HX2apS^IN}Be-4GOzkM8w3Mi$Veamjo~fV5?scM#M$VAMd`t>!0rH9dDp#P(*ZB z{av!$tm3i6xU%g3VA0yoX`F@2d&J8JcF))58nCY?7{KAWb;L0%0so;Cc=ba%od z(JluwBSNAEB}9WWnv&VrBw5T8-SrbTD;EJc3CifXNK_2+QEktv$Yu_ds(T);@WW;9 z>s3Cqf}Qw2blr~=F=c{U<2>;OJ9t^g^Vj9YbO1mVA#w&?smZU!#XIM5R;1xPGMBly z?Pfg|I#^S03|{zE+C|sGmm4zGg7~@H}-bwZFK3x z_6>-g8nAlVD7SZQbia%JdJ!&oTcwfKAjYu}A6QESC#C!lDy@uqPekvB^t|Gbl~WIs zfgG8sFY)R}FF$g+a3RK(r%JX zt26xkT%yDtNZX*LY{nH_(LUPeyl|6z?{cQ2whel?XqVq)5~&p6q>g)6*iCx`=pH^M z1*jV+20Jp~nk$;x&_j1IjURU1lHYwk@0&Y0{q@f=NES06t_VXfA0sqo;bWfQVfVXK zVD=%wo!v!u<%WY`+epUZ8)smmC~^R!E$858=R^{c>H6t1cFQv~D=%4ez#qZy_k;(C zxW;pw{;V$WKPyS^+O#mz91CSQK(4yc!gc;@Ef8ucr?<{^Y#|ISQ9QON9q{q?MX-~8 z!twcmJ+356AYEHGlNirWWu58k4X12bIsqPpI60cAR=PF6id zZ8x+!uj~$%l5t=nQb~d%vog<%w@M8)=`WKP6|a-W%K@F$$N3S&;fi|=5FA;rHYcI7 zpHj>bpjPBF$T__qJpKF!>ATG&vvIx7qLvO9u<|%N`OH^6+FJeAO3%zX{CQ-QpUNs$giy%&Z;xxC$* z9(z`9v@fZrm4|;w<@wLM@HNsmU)l?i^|QLrFI0yjlrRZgi`k6ri;jl5ialqK zE<~Ngv0A7a4B9Ekbq1?*yV({j4rZp+Pxp>2xj!ygKwx{fTXBK9Yl(aYSnmrRjvx&0 zJAf6^81|L8pKfF4==#NFFwnrei+hj2@vHVx`ve6|dqy|ngY!f5Jn?T8Xu2P?Ob=?K z{HiriNY0tAyKa+8z1~e$)NaS-2(U`wye@awc{3OZgikKaG!(MG_|*!e*5uW;3^IR&kD^M zrx&GJUA-=+e|5@>SAg6oOG>X;NuC&8q9&uLiJc)e0hc!sd$zEbFgudFCsxM+#3t_bB1?|>_ZJrKu}eOT^Xl1f1-{Xj?g>4D z2WuD*X7{$bSG;_FjX-NaccX@RjGdZgo1ay*9%!?fy=_@U{X*Qtj$r84Mfg7mZ7xw% zjvmz04a4?9PU&h4x+VYe?v9tP&o9Tf$zzh|xqzB%^8py|3oo`~p~M`etc3r3^Q+?u~>1BEUMa-Xt*p1BhBe(W?q)sQ6Db5Beh*{%^n*3*=`s<*mFQ3!wvY z#sZL`fWYXfW5&RFE2~Cutnyqh37V_@xBrfyjaOF*@js#_T9haR+QpbsJ39EZWkI<5 zgYN&!it~)$eqyI@PXEUR$}k;rf{yK97@9Q){=bDs!klH;SH9l0U#!g0+TFb|g8^|K zq83P>=VxYSjth$%_L@#@jrJ`1@~V?Z?IBFXC;y(Ano>!gMFE zT`WHu5}^>Dz}c$huB5RzL&8C$O<6JhJZc%sY$tij5>oS>*0j`{2n_xqR*?kX*=&{c zE$vTic>}AdWBH~?u}0&gNCe0Ac^_L=I?M+2l1xix`lP`n#zx#-%3IRN(nt!5*EH3 zHUH915Z3tdID^mS!sO=0q*7w`Ck1N}VKJ(X`ouucSom~r{d+7~xrh$@c~B<}JzpiJH0AgDC1s1BD17(b+p!ylv6rTqD9!uV@$ ze!d+k-AzRGz`3n8ej@e4hHWmoz@A6t@hlo&HF)j+9O;sAlp{&~DA;*z9kRD)6HbDu z%)+o_((a8YDNJ7!15rf|-4cB~aw0G4gTovlbyO%}vHG4a<$RfCP`%Oisx2@ae?jKO z_w8|J!YNU~N{0xnoeR`K!Aj2r6LEjjTTZe|?33SfLR|jl2X&YJ5j9sQ)FTWwD)6O! zAZUxswx-dBFuZO)YtvnLwYv}CCb?wF2ajwH*KNZL24(vRo(dLpJ!m_ZNg+*q3rmT%@B|ZC zZhy3W`Q3-}PZDDNX>~j4XQ*OXR1qj8j4vHjNK)7D%VE_yvgGSpI|av+90q@QIYi~q zPlmU>CCp?MhpWb4y)l^Ab)`+l;4Rf?m#DUC;O~$3uwH&z4IG40YgF!KT!N^#kpat$=ajQ2N%Wfol-LJMRLL@EJ-gB^s z{coB;ze47+BU^?(qD|qbgYin`wTZt;8K6dsMLC@^s!SP83$~CVFETBlMyKh>yIj-8B zQM5|kkJJC>lYemAQO33H`U0FRrrPYBI#d;lWn7W{J5#@15)Omz^wXf`!F~$r7T=#H5GC; zzW(rHarLhh=8BD5ABE%r=ykayRg{v$3m=>dX!+_G6FY6w_`$TMx1p;2Razkdi$6hq z!RNMtO?)|1qy_{?09LhOOBroR?!JY%7P%XPKnegf*#%V7hUv$nj0w2DWnxCot7$f7 zy*8)>gbyo+N;58|RTF}1cKZ6B%@#~9Xmb^%F&srLv*ur76dHDlBL$CRE?~X z=~AdhJn6Cb5*-n_u?EBK37e!S*M;1)a_?Ek;`zb z_5PA@Aj37@R=bRj>P*GlQ%A*h{sE~q!#>Gm_ZE8eFsmXDtBf-S@3-RkW}4?{kQi<; zOaTywdNN_P<_ybEO5w;eXzg@Ti6-NB$PBG#WoP}&@(1-kby{$#l`mAG2Ni~(`>$cZUM6-H-aM44PJ!T ze1ixn@$)j^&ko3#daA=$XVF;H$Exd4^prMT&XJt*X+?{Z?$Hq^metb&OeG?u5R~^3 z>raavMl>pAYOD01)z3l&5IcW)2d1ysfP2 za}X&k>8Pv}9Gu!X*f_#!d?6&M+iHDbUWVV-u8GC?71Y-&a3@pGazvqI zG$K7(+{qdyY@?&Y0V9C*%Nnz(Fd1BI$RFpRb_xOj76V1YKA*Kr9)^6U*s9D!S>vK` zLp|vvr5}a=a1@NT13$%RXFCrD_zjw8%-}*p8JX_B^$i^s62>1MxfrJK!u&Qj@g7kJ zLjYWDy?CIYLV?(L^q`BC94H`jnz#uPu(SI-z?8*uT*fSmv`*!mMNx|TYD<9f?wE7< z0+o;8e~d;fAlY429n;f@-iPzbcV7pw*yiuJm@B3m=PhkYkQkp$c1t0`pA0VzY`ij6 zbpwm} z0`21*xG_p1;YI`bzB+oR1Ura`6{0^Bcc z>g6&^FLq54E<2W1R%y%_K9DgbDTPW63TOTs3vn0b7j37u-og@zl26IdjF&}*myd7# z)9v}f&9~c6Hgn<(Lhu@|JQ);O@@W~#?{$D!Ly9HW<3BwyZxfrp zEUk@d2~jmtJ6~>?QxjsWPVh$qX$4d)GBWV!5HA?oy%un{03f3;1FODwEzqM(Lut%5 zco1ueqLofXEnaUfp*9qx4;m>ZF`a5r_`6SEd*o3m2)BE;R(GkU_CJ{ZQlrEp@wyva75AI z2cTEo(gUT?&4=JAioK|~;Sk{K5#U3JJxV-@=pmseEi`ItD8dW@pGS6*io}+R==TBI ziua?awx6i8a-gw2K^5wR0IA=s+e_is0trlcJ@sNr5J}hL)jU>Cf~T)TQfy-B`yp)JZm(Yxt)x8r13w!%pD!rru^Re zrO#;#uF01JRoyq=QsYemMW*TVyMWITbusZHW5^j+BU0^#nm@g@-pFJj81sA15bCqb zJa1Wr4V(xu9EE`O=9bM>ozJF1LOzS?v2?9h0Yv9BPT>Ylf<`Dgfj}&n;m{u6*GWa+ zCsZ@Og}?45PKey`j6eUxv&?=P;npQeF3U?k{FzUG?bH_DtA;*6B>?YsR$MeMK57^6 zeJaP|NoS^n_Nk23mQOdlMaoFol%vIS$(L2Pe(uNhpAj?_MP=m5@Ajgmj(*84KNgrP zG(nTEB2C4NLVazB?dS|(xcUewP89*KylCD3RR>!myUpu3IUa8MhxCshDI)6(3%hEt z>aCj7#$HClKGqc>6F6=~ve6jdI&-fli0Td{tnX%m5d){u)qk?3evrXW$~hsBgHL{M zC*ZWcb!u}ONik6$6>c34=X zMvJa?fR-Ocs2o{!cSUc64;D>glZ8XW!IqRc7Ayt?ocHUDl=_!s-y(!#=Bap~d6 z_;}eas-I{`9h!Mm*LB=`vPN5CDBTSaOUj-Ulzh^o-v{M85=TxPK%)4BFtE^>2GGMP zdOFK`w*IcdLA|$sjhfoBF$U@!Z7c^+QM%wSb)o)-$F+zAUeCp?OD7jd-e&vN?Sgut z|3BxPDszB|^$2~2`RrrCR;y3#M75TC^4|7F_`C{6kdQd8Q!y$q1T#I2=j;Cg{UXR_ zn#RKAzPz9cYS0@dhfv8q00@^CD@uob6kDszQz6d=2YU9M=Y_!)$(b#j+Ume^FXb%P zX3^^)e@`taQ%7~tLz9Y2_F|X`8R$gY!D}1DY5fUrz)La_&UDu3`&`q8*Fox?_uE7z z9yf68#|FC6P>mlA5@>5u2d2d1BhDis61MN*LQ8qjn3Ls+2^EN7B zb)J+a+n5>oHWgafXwdbNkYqon)OOK$URl$(cO+k=ru)mOaP1~~c~xW~Y-+mmuT^rA02i^=2D%M9& zc5G>Ui*~;UbFyATGa{RMxQP<%c$^hs9|0TrBodqt_ky-o(}tbhIOjg)AWa$gIJ3W{ z+O_D2Eo3zFWBc*;YMulf?*xUQl@@&7ur$02OU@^WY1Gl4wm>6@^<}a%~SpJo@PuIFj_Qd z__hWueA{Z-t$v&cPUUZFUObH08KVZcI*KnzJU9m~-RJEg^ux%+BB-L}2K0%YNt0Jy z;c=AKe6o(Uf4{=c2guq(wd=UFuD7mbgKy4~cz;Y(0mM3vLLsQ}g&*6!7ZZEwj;;3s z+j!_9lt(WewsKzxMUhK*H)+TT$fRZB7&Kyg8}{2_sPuL1dpVs@aPm&2NC@~jOL!;U z=FM3!-uDL^f6eE2vB)69YxZK*gos?sK=?TMhRiR@vj6e>?x@L#EgO5##a1VlhoIEp zFz59P68h%s+RcDG;Y*GzDr65}hzcp}xNpGtBr3!jZmszZ0t!~Vy+IZB8(;_sqlUN{ zKDTQ_aP!WjI1HIvfhJEb4MgqXHwb}y-59bIlc7BYe#I-1mT$9Q-_C8ZBm2+kV8bhr zwKyb(Vvz_PdZ$TYu`>=13H-asYp2Bjc+~0hyc(j3Ky9B>GrD_hMvmVNG_puVdZwUe zks#c|Y4)Ndl470=e@iDSFfjCn(3iMSlSDt7z(?10X^USI+%g+Cs?#L2sevd%4?(4u zhP!Xvwyf0zHIa#st$@g9nwa>$EjUhHQRc(aN&$tT9LYUNO}Z#sx{c_2P7?nOs8SW6K-Acn)Wl_faT7v$3D#bO&&P}J4c<*(t_@P5uPiKFIU z%wgMcHi8*Q!-nuZ8kgPK-ADZOKTeL+e`XH#wq zCxHSYFf(_XXw{>#&sF$aWwxO~cxGqJN_AL-H8DNUZuwcu!-{;+az_Y=gIU&?4Biv* zy3d_1DXHje4!G?d5dwhLA8?hPjWvaoR-;2cWiNWE-1R#AUoqJwU?UXkpDW&S&+tUS z3#*#uKcxCWI#2@XCkmV;_p?KWX{P;d7jVd*xzEb@DQQavf*!S=U&qsKaYp}I z;KSYTgU6+@Od`>o{#!C8^@-B zn7ZW(%n!LcZ+a%;wLV$(hNfD)psR`Jis7u7M~OsNk7=G;JTJ8~J?YYCJDW8FpXXp! zc>Fe}ajf=d0In&SpK;u?={y7DI6aSpduUeOpuM1}tLWr7ggiG#ZgbT*wY{uquOr04 zevZR9OL^G-q?5}*hGDcK>;xJBiQ#R>i08t=&&$ip!tYMTYyQ1Ce>KUVE7Od>R&rv) zOV$Mv?Z|5~LA^fqt3jF&ct?a5A4`w13JcohZ?*=WZ?g(Y$xlBp8QH${*@8&SupAQSf$qe> z9$z+gk2ardr3OxObz<6x%;WkLBO}m@h5@oK?apfg7!xP6gUib;=2$hx`{SK!pD6FV z^k;a2cRPQk0dY<1E(Na2r`?k|Iay@O`*^M>0;q%n_}_aM3JVfk!DeFZzBp;D5URb$ ziX05mTkb0Y*CWc4u=j1UlR2A$UoM9?h7unZCJ!6_s+$SYw>7v2h9>;}*3_LOG4T*J zujh0(UlA}VProT3NL!`OUvz~aQO(FvZ>XWLT*Ma1zvH$@wbwb)#TxrGIEEw=&xui5 zW?OI_!U7$wZ2IRot%Rqh-IZl;d(W+H(1MxUz~y%w90N6pdOFRRf0Cb7-O7(Nf)G;` zn%VqA+^asU1&|CDkay5{e_FI|!V3-v$%v$f>g8x$ zU8T9tmT02_>7oZwv*EF=aHfCCARDA_Z0CWw=dnyvMn1Pz!gz(j2EJlmOK{YI1imx& zoxhPF@Iy1V!j%$}6H+|e5|lQmAXxVLF?^L8=Dw53;c_3_td|VhDJMVWvDx9#7;`$W#R>o9}{Oojv7(znsBHkGaSvWlo$ne2}Jf&)PuPMM{mc zu^N$$V%;1*K;aq(chZz1ue-g5w)K^6SwH#?O}*EUH3!jVs;wbxU#nD= zh?EgKJ4)ZUO4{cxp_a?U474;{a zRV(n)yDLGogU$9jJ1p@U#97@&Pe6Ec6LHXfwQeczQ((lERFJg1yL^=ciOj(4N7M$7 zNV5bsymvwKnf_t!Fd(vM)gmrE@rllkT2Z{BLO#?*<;SH9ulqso#Jss81*w)o7onYB~h;+Me6624O|{$1^ht(^?uES zOh{Kf^Cc*GKk+V(Pxg!0x}QzcA+IPX8-L!23~3h00~mQfHJn*|%TbOn%@KKL$iUl=pYSH@r(XSS46_ z@6vs5NB}cBuukzJe_xfMC-|u{f|0Df&@%hS+N>TC;GiKwCw4X~CQcLVkhFLMEyfBO zz6Qh6EyMUr8W>V#iKO&5-rqELV;N`iU^ zNaW-KvKt4!7;TJoDr}tyFGV}iM)M?7L&TX4^kH&G)m5x_r}9Hl+~ERps@s*o6g<|{WGVZlm=lPS*y;?h@cvLMIPQfE3>D>x2{YpC4)P#M*&_CQJ2O}n z3Rq=r8BY2yzH#1c@E}a_Soci1PDqa-t8Y$SXjT0s;reohXZ>a)l7b*9Epg!N$6N;6 z@L?|wwZpwGOLjw*@!fWC2fWLoZOxgdrrmv$w1iL!oT|aX!*F`G@6OL24A&$O)E@#Hv|F%f)iYVy9WsF?(P!Y z-Q9w_ySux4aCdk2;12Kn&U4PGdft1hE;WBpyQXGl_wL=hzpFoMHTiaJvkbl`;5SS> zJd({HODtAgj8Yn)sNOIt5lcL+ER;bY3Zu5nwGmAmCq_?QXuZiUk}X2dYk#zJ%(EUL z^O~B%&Y)W!M}46BrMpAFNVKTt)5!)jpW@x!m(gGevvRw#k}_UXQ{1N%c#gWPLoRRa z+mrbMp=!&3hhr@CA-i9VuCQlMuirg-TCtUUTfC@tN|iAna;|fnjydI3=C1>GZQb;> z?odClKn~dD&1J=}7-pVE;|)~eqL1ZKh@h3$D8ie)EB>Gwr#q`@LTJbJ9Q_POFpSiR zINapnBqmHV$}b2Ir22(|z9=nepIy+OcQ;2EUEz^}zIQ6t*QtOFIIXREp$q zfIb-$3b@OPRzt&`*8O{$&FiVvJWEW}`ioa04$+w0tCWd)bLC@$wcbjf{PpvGI`=0U z4B#`V+ax0%MW@G}5w{*TcJcAasd(ldxy8qc+yS;PfizIUruAyFn_v{x*5o+ zi_dFe5fAwkyE+df1x*{LqafjDMB|`+lHPs(AI*qWC_z8BIv;0l4httg!1soj`=+qk ztve}GmHp$3^EzhEUq5=Q5J&&gx;ZuL&@WW)i3tas6oi|bv>75N3$9Gue9qZg`@f*n z;!|F&m6XN75hXd5K(^h;^ilM%@~3ZiGDlcP;yOyw{fvOHhF{L${J5)P%S~KdN}h4< zV)2%&@8>kF_&ALY;rO@|iP|5_<3+H)KV$JIXXU2}z;IRK1^0&@(F6_{J{7=RIaB{$ z{4kS$$=yTSRp|r;7#Oq$j=0k)il)WcFmu=806z3KkB$LGy$Nj&DZF0|u~W!A`iDiG z9_+x)lfweBfMQj)uk-D;9Zn49-PX5zR zy__Q1*lT^!spq@DmsXHz=g%g+ z_?>-0A(h6U0yU1?w<+|Z$?*Oq+w#Y+RFicB5d|=7jtq7-CRsL|mC(S@?JPseC#ZW% zoA}t4E4@Ql$8m?U$oSy??3|(^aM{$xO9QNE;y2p(PX7$`-kKvqfYH8-Z1Ym{_@BWJ zn%7j_LDFttrF_iYxo3&L>V(LYgET4?Jw*aMzVLiGEt|t8n-&CoBtoXR?&eems@>_5 zWf2QzP7;INLQJ&w;=WwO5R8U!Vjy_F95IGxh*V2o!jFFU^+0YUiu^G)-0Zu>D{^VO z%buy;Ld#u*<3laJ(V}a8F(f9ygPMiO8_$Y3NFU)d5yktCjZZQ5-PZ~p@&^?9Y5m)3 zoDLW&2@bdR+-l=tP?~G>kioX7eBp^P!6Ge*32b$m%V*LGBc7G@?tgP5}cS=v+Hj3{&3*REhsUW5J0;4Rc zUN&4J)R-mTOJ(NL5cF3SLCCxXr;N7(T^&#Tq{4*)@~3J^&@&KI58Z)s%tW#c~BQl9w6tao3YRqT(za`H9gJIhcP z`QkJC!;{)}H3;6RT&{lW#x6RT3}Us#r-O~jU;Y5J>xQqh#gje1KvB`F`E%t=J|eVQ zO&eRIejPP4v*Nv;$Sse!3MUUgCO*3Y%7$A`L&A%4?+~^Wpel!-SYdk+88;C>q97x3 zzTEMv`gyZL!acKZ+lHU5_vtAS66(J2?@Q!W!ey7?aFWE{+=xKjM<@5aQ;gZF>p@$5 zxi1|>j%>N&O%qxrH0E}vB+X8%-O;R6kf%SvD2+K{)5kRPubzbt>&fiwv)4L77zus>_Y>J}iEiX+o5z`R7E=I@C*`bdm zIlX~sYY_$Jh2V9zx&den?_J`X?KNE5W82V%r=75qFPB<1>3Y%^y9v!E65K!RcX!=q z|0=*MaIn8?HQtXNw1sn{5|}JsbXeCHjl+FSs5q59TPehG)&8tTov3T|fo)%oCU95L zav(d{a(;d2IjJ(XIlWzFJ*dDhz?L2;glqX^2Rf6wygsydtL4Vv1LooUDOu3`Y{;@r zPZlEWy|wr$;$$7-z^43Jqr92-n3 zy7Ir!@3}QxxN>b<2*!8*NuNv>UbKXoJrL1CUS)%$P5y!ktC#+mA-0vHX#9G6?)8LQ zKQXHscyVC`Br}8N=>m_d;odgU`q#M-II_R!yU5DvHPFJkWPMx(bv^qYyC*eYd%ou) z<2{=5f)a~D4D8Mb+wU-MhPt1BU-=&XmwwWR9Q?1gRMY!69RAp_5QA|= zS>_bmnW%G`WRMWBdL8Aw7tCb)o^-FRx9F8g?in+F0CQL&hYfNa-q&%&8DB3=*0|=n z{uGHo$l1yJqgv~O`;pMkGkmSY>CQLo+;#{vd;BsvrJaemm9WRe9m9>T^Zs!lPSVn< z$E|5(TAFJeL1=A2?kz%_K4b*DN7cm$_xM~Yk@jN83yMtlPz^Dvu<{i(0pTmxCtv+#>rHEeuK&LH8^Cxo(nh=m56n zSwSC{$w+q-tl}IlVs{X-1U6X{Xs--PUQqoZj7i4H-rA5w0^P9=_4}qsfFY55>8xoU z06LUHChs^j8pXNzosVc`P^4doj~yZ4e6#EMd4&orTOC)X7VZFHKv(~9X!=rKG|_6pB}1`<3+7;i zIAkZ!f^x~&;)Nbneip*7`Ydtt_vqO2eN6aDu5(*P(F{baW08eb)2b7tdn$p_u0vbO zSi|Z$9wkIWs7J@tBwp*Oimjo>ZQsV7aT=(3vNoyJYCn+FudeoL%6wPPofe9R@>jMw z1D?zwALh>#jGA5!6_)EDOR>^cEz6{K#24n%yzMz65-2+fb~P^N`;-R7jDtB-mejv| zlZRAqT2+E`0JZgm=NBtUJ+i#6`#$A@y-w|H=hk&A`*S;A1O2qs^Ku!aV0kl8 zJFGtOhsvN~uUqLe^cQ@oXK7kpxQ6*L)fdSw-E8bQfTH0!P^LHlCEjxe{#ob})FJ4- z^Wp69tz zH`vM>aiu^S*!}wN{KF?caL6T4N_EJYgJ#b+tZ2il8rlLdHYe1 zG~rr~xn;(z=oJe^nW9!YP~Zq_REf{=qugvTnFnJSxs-T;ze*_*vga@d!=FZD*6ggT ztl+?WEIPmpwvzWi@dkLvXHS6+N|Adloe=!BVhSHM=^T%O`oqua)6a0zT-;$!6`Y3w z9ygmpfK%U(H1gksU_SAqBrJKu@ZUb$duGwA@h6cg#HxD9Wwf*lF5Y4$RNFTfV2pL} zIdO1A;~eY;6<3rUW5qS_^4*{yJwaryq7EnH8U zv;!VpJ3c65nfXbB<7)j;CFHtDe9G;(R%}-=Z z%~8f7Nu;1PSJvV)z)nryNIX}O0%@u0Jea8#`}Rnmvf1oY37&X0u8{fbybRA_18F{Y zynBS?fB*4P+|`JA*91YBl?|Z)aZn~%Lp}5Dl9ANz< zXC{mbW~844lEgx@zyHJmiT*$L*Vg==_ND~5qm4vhT1bPwKt$Co;wouq0_)74VuHiX z-3FDHP4#ezQ+*%u->l`L?OA3A>qs8;yAcA$t?ac|FzJx4UHG3?NmjrjmK;7H!hE*qO!&-#lVnm#kmlrPU^>qeLJ-^l-P;>m~_!fRdNcSk8TP!}+UXD7=2 zHXENsQ;Z}mbeR50*j4d~?$AsN=$5K5E726M#~sQqtafEWv5&$+0(@e)M+*;ZdO~D@ zZF49;0^n{X8ih{>3lYLMy@MqH`UB+?qMh42PfaXtccRxXnT?DaRT?Bd5{k1QpjBC) z(QIW6RI#~iFG8(ka$T@$h+OoTWxuU2QV*1huq^C1~h8Wc~P-uWofYEG^E)*M(rKXZZ|vZ>%Kskl7j!qc6#v)Xa0P+5VdY(T<7okByF(zT1O)47nsh?w}M0%oMTRs zxZ(+N&3B0|uUJ5uY$_PhEnD{gPVwrIgm+GSSM zM#YY_QmO3m1L?XH>CS4#JD=yN9VL^N36Q_1gCoC4g&RvXFp6-obP)*LO#u-YEmmu*k^S1y;J1CL-cHoWCS0d(NoH_))2;N3#!>w;6~S zo8*PZRs+3)ej0B6hc$HcSe4g;3Zi_;-LB(JthE}}M`*#?1pRuPyJ*(RN2MF&h%l`U zN+O(fFA%Jx0wiX64N*T9^oC=T5L2<#HS&Iw4A&x!lMIu((R6a_HQs@XZMd)N#Yc0_ z7@gj~SASUOzZj1q2R{k>(>=0ag@ecF+I)6Wx7SAAL`Qj0ci6;!!GURh{Tu|USB3}Y zb4}^%En@#_?_Cl9ylp`4kKZf3;3LC4j{ElH5po&J(i);joe&KmlFJR)YE0BKq?#Xa zNbg-y3+sPSr%dbebJAM3Q~k#Dc?(_GLPsH7;8hskp>&!%jmUUrN*K+r?xFaFhEthT#}mb3l^o4o`1)L$!@?Pw-x4| z%*$hqw!M%JTh^d^%%Ho9<P&vzSPU}I9ibv#Poi^-=(B$`F`_NB zQ^xy;SpN6*&PUCsrDLuA-%rDe1fua@+?7HGz^BTnDCWhJ2JHECT1fM@@*#n#s01@y z8DgxY@FKX)4&3Pb^ zO)TuS%g|&vWEjQt?^%PQ7OI&x>NI89WKMGoR8;+aU{*khG4-RhwC90^!N8=2IJ$j} z)t?+O5Yu#0E-A)}@rxk1u>JVh+1}pP%9;%GfHq(-eKA4JKw3BuVZf@&dz%ZTDmCar z?-3{7q4Dbo^5{oAdPzvK3li)Un$)})5qNc$Duom|1A&jm$yx_XfjB&M{%Tt4Q^5i} z;8gLPFGr2MegmKXt31Tm1T_s74LH&=l4xD&Mbn1hpy{vdvp>}j(sN%^ElD|#mpvy z+mB05o$^!~WGR#oBl6m)G|X%4TiTqPG!iD3rniCQv^vYMaBOPXi*tt$k5b(bLDcWa zLZa~+(qFw;gA}^F6C@EOV?ERcSTh$nTTT^3LoTK8C$P|db}e-=8%3py#c~MLsOjIY zIq`;}tc6=&N_b(6T?P!kA!B;>oI>y+LcoF;Z9hd%tx^J*$!A8;fs!Tf*-M8TFQI@3 zE&fJOIhcOwC~)vARPnhhXu#FfTR2=4krX)~q*&>tBhhbIvkf!QrmmAfj1-y_I+jW; zS<7|Uo-ywHxq|x+vUKUlDUC`AiP%}4Ww%W+(*~~zt9jk3=_RRg2Q`Htnb;q)R_SHc z3#9Q_-Ec!%BC>r{P{{MRvG;4Uf|W7BygwCeHX+3 zheWJW^h&N{Iqo_{9{D?>5VT+wC2Z#%IjVox#UiVQ#FbqNxg_xy6w#ep^9WFVb>69# zhD$`?FV+KRxQz)a+ZsLd2vh}m@_%(LpLZ$}z$nkVG2&>Y+f1H>+9if8IU0m0Tz!fCTXLV46I6nZfAOeLwkTeWgSpn1 zql9pqU|y<6gt)g$9AP%CuA_szq_FREo)aD(u2?)rUUU-&M%p9P+INpoAou+&s1*AW zO=`?VNiHAh$uz1!9bmiTOzImXpK&$Y^s?_f#V(_dc7a5-W6ktFQNva+EMdbN((@Wq z?el60xq%z;KgyNM*{UW30=m^$2R=-{E`1lrox4;1qiRD)YZVl5n8kKJ)|0f0ge`{Gp{qe=pXxC?Td|uw^LlK)`Kz10K8f*c7jx3uP z#!r!ikBWKch&)12Lhomr4q7T&c{U0~as{*udzVPHu5pzKRFIM^o^-(KUS(5%Avav~ z`}Y?jw4aWo=-qdOLgYnR1kxi{LGn*>whTHGS7q;YlXi)VIYFKxYF=&T`LjpVdeQXz z&3SY=j{b^rW>{TzY-X|iNWR%U_i<+e;}jbyDbXfQ^w#~np8)AV`t{2(F}$&SzK5Y)SyAP}!7FhIeLM=gQsv5l9HIGg?=&i!zpI(aWZeB~H{w%d z*jBOf(`vu*&yg=w%tl|J^2e8_83?co-vikxH}VKUs(5J0?I+w$D}Q#g+Pyeo#zv5| zdWfF#ij2h+sHg{ZGwdl0IL?)<+J4}ma8+<53d5V~AV^l6nb3&GzzY1#;V-$KHKOWM z`h-zx4HW0GOE56WQ-;J37|y>20Kzk@!eQtAijBm~4u%=t$j?@J%z~W)Jk9i^cfx_h z@hHexKY2R%qs%@%Nc@Kd007N}0nP$N3@plcN*+s`8ur~W#BHXK(Wo4)@+M)lYl}^^ z910>KBrY^c+hPaH8-+!4VFsC}q9ZMI@3;Bwm(!N^yRU$Xxz`E&YOR^4vGL(o&o`*G z)`uBNPEhX1^KHYjeNo!Tf)yi0=`HJp$xTa;@*yjcPiE^^^R&Fqsr8l|s*H{F&Xx%< zpUzR4vb}?h7JHE@?YRbuQy&;@^}LqZT_K%RdM>>y9lTnMi=Nx|L_D2!j(Ms=;f^-5 z3zX{~AD_cd6P~RVcX||Bvb{WT1u%IfrvX9*P44AfTno}}TC(FSuk26&l~YoqTmK$X zrGbejk0jL0V#6fO{N3%*JeAvhIh7fd&77sEX?nYodtTAa-U`fSzI9Pnt8`FLc=+35 z+w|(KHj{~^8V{~tZ0YmaufrHLxw+gU#9*3>+k*AN#fj7g6S-y`((t!3PnnU(HmVcv zR{NrDuEUG?+%N#Z)hU&ih8Ty>qR(_ZVgi2_SdG$b=Ezk0=&@loqM2xtjM!oHEC?t` zkh9<5_;{UFZ>=k;GZmPMi8nvsUdQ^Dv}%V~!)O4DYb`*7(@QWz7Z?9nWdtIKiQ5v zuoN$0lgGd&w=jM{9jG<(tV*kAoFf@Of7imq6$7s{Qa!8jTBAp~Gom6&T z&kkhM=-|aQ=ofI>iKW2E4)!>RBU5DHQACWEo`M6_iIn-5XlNZpx8L5`0k+64GI5Sb zpW|0Of=8Gz9RcMq-0t~g5{c3yaGMk?R;qpE5=FuS`OguWm+Q}nhz+d{hpB2fKHYzp zAdw1bVS&F%7qo8#ECG;z_5zy8(~eo3l#(~UJGI3@fBD6IV77U49N3RvvGqcxUA0u4 za<}dNPMcZc-NKG_D%V?z<^isIUHkAYS3eaVAUL$NWUFSO{Oda!W|j!66lka>Cf<)z z!dX&|`xM?C<)~I-cs|atllU#7{nbxzPiDL9L!yJqi&1}Q(nP2Q_S)%?ZWo1DQd;#j zbbRgyKjJ{PwHB_{Lq$;d=j!Lt?S0Uc6&JSjg#y9R!`~rb zf$XCnwFj^p4A59Rfw{TMVCU{zE?CS~KNofv%!qmG+Khv4<-SD_EYK}i_r1XD`hqEG zb%M2A7?f4U;4n>eG#<4Ow`oz{%tg@P=$I<;38f3!eK-59e|l6z z<)$Kt)rzI#ZZm0>_Pv_p`nGiv8wse+KIOoDAZlp!rF|P+w%n|Lo=-paFp?dN(Lax| zKjgloYmzcOG)gjCU2%}Y|NO>eS@vP@&ZU7*u-70|^9vl9IzRa0sB-3q3Gm5<3dwgXDHfCAh+k z=^#~|arNgp&)zz|p*e=@&eAJCzQ>1?Oh8g=%&P8VrPVV;ksMWcz|a-_Hb_9nKD>c^ zn}kpubKN%o>i7$#2$I6P_juZ?6TFSlK~pP0V9*ct>|^J5vDMmqJPCVPd>xgB2--yC z3Fqen-FKgh4H9S_O&LUpY;9~i!sMw%76?89QDc{&b17rUdA5#f54WC^6Z?#3 z6!YOeic>QWt+jdWn#p={E~jqQ(z2Z}?@6r=2idjmxvmTLi`HO3M;(zbyDic-^*V)K zpeA_|TvrO-8%(X-1#ElTMusYsopNSDOZGyWDdTB}8{;;jj@;T)wBIAgrc_p2ytB(o zu4{zhG%cv-8@6YYrTbzi&8Wa@dQr)*o0{NP1mksk?KM7YkHgdG_76=|2zny7`-IY3 zBPw2*)6SEFHs~q+j2pa0cTgLh{K_YG>RD@QWOaPce{tJLc%3_cNUpQy@d#I>J^0jZ z9;R=N%kJd9#FWJ=%wX}VaGPkKIxoOFfb@E#q>-m$329)tc(&ZEoPxhrdslEUd#{H7 z1+0}!l6S~h5s^O_+5p8lq%E;i7xKGc^`~W!CJPOQ2moD#%suFi_bm7ee>cr`qFN&L z2j=DK8=+@T7K26DXH}fQgJHa{-|@S_$$UDXkofpI`-sH|f0HctxNsQ=f)Ov zt8`2`aXL(z)(VE4vTPlVy8Cvb=J!(<@4(~3Y|v|2tsxu$96GFKH+N=LX`oOu1)R^F z2*fs7QoFMWg2pF(zivLi1yuc9t{a$^yU~la6A+cqV+I4#(Uca@j@000#KpMY$Jud8q2$kWFBe?9i{^j)YJ@U+DcL16 zOREw6711M}*3ZQyPFJhj4ze?R$YM_!b+xT$txwoLfUQdBbl)lR-%rFrg787k)c)m8 zf)G!Z$Rt@LQ&pW7trgz@9~ezgdU3?QN=JIlVrt3aA{c|5eZ`2{0*43*+ z!{sn}Es4^s6!W@ltHlsJ&R~qxX(x&$7vC(I>G;4h(Zz6A)lEp!w~B1i^gOypWYTDy z>Q&1P9j73o;Pa*;gU1CZfERaDnOXZG9i#K?T-Aho-B)saJ_5HR)4l(lhCBbM4c4dU zb;BlkqCw*YE)2H2>2+~q3C{Wt{8Int!r7wox{~7WDfD-Aesrl8t#<3qhCv|Us4L12 z(!NDmL8Yso$Z}Y|Pd&!_M8` zoedV6J~7ss%_tQJZq$4l)jq*42>9bwXf>;2#o@YDK|mECa&@U7xjRw~>JvWwQ~l8m zd3QyfEs_wtk{G0k(=I+nalbD%~1+uo)FO*KZdau40^dE8CVcmOf&C1 z=jB~W>k=KMIX!~3QA>+rT_qCq*s*%)tatn{aRhww8ZP1~2su4W80eFWa7M4jCFK8^ zmdmQFqX$(?cY;zAXj2IZp-wnY*xX(16b-smZte&M-qAYAGdZ=@_4s`%RXlROZ%Q_2 z;oYw2e2n}|>}r^vgY_w|&@oDIq|vU?&Cd>m6ug9X`fT5oorPs?GD}|(zQQBJf!fkW zX&G>?{?B9PMIPdHYH1A=PH6Je6O6Ezi`!h)Q@?hJ=|brE#l?)r{(Xh8XoQx*;74||pJtS|?YnSF^-cEs-U)>qH_ z0K>WgnP>z+|DnFI^i;h92-hlq3v+&-TuG&c*fRMLQM=h|u}{$n-7zUQJ)qh+t9rg= z%{w22*D~OI5;IVIp{Of->B@~2I6w9|J}nE~toOj9%S6Ru7ZWwi`bt;)F1zCO4E282 z<#Hx56xvH8w^6<$(GU4NOi8^!vAd#5jt5OH8lxl*;5AN)enja10mM)16j@Z>0V%~o(Ck&KJ$ z;QXfpm#(Ajh3I|zgD62fe}vLXd${cr+><%B6J3K( z6EmwLCNDtkh%h^;6VnymtOp{Z#?`N!z1F=2NAyv#t-2Z<(LQvRDSkM=N-K4KB$DXR z#wbuBNWH&2FRcodT2}P!bF|)EE);N0ZriYZ$Ju`M81?()uJGtN$e(yY>v?XGDoL5} z$75UFQ+F58=w5nu*638#a9aSQH-Ga*@Q0`B&&lCmZau9jSWSfFdu%gYB}|Y%Mnbf<3>^n5jZCIneq)I@uKp7LVCP|kxw}ABFRD=X7X$}(k3HUdf#+ZrO5e?GtrwH+34{zs4rxBdK-MOYjnYD z*(0eYLF+td?)+SbBI|(*>ifD49noa5bpYWdZ?56)2MR@k;DE)2`fF6X>g4_4_8n+s zj7nXNc*1|bDTl?m%^8?DDDNy{<4-_ShR)s487~P=!=g<8fXq)i7{=e${|47c%56N?={uWn$3mEm(?@?4nk`ogJIrbAd$8&x z3pQS}a^8%>X0-yk6&`-xTb0Vm-)h??u|!3hd!j%>1Q5 z@5OaQ@vWEbiX*ODpk!jVZmG+E!4<1)YJL4H5JxJ7wiv7l(EaJN0yca59fTM{Dj^nvp4frGu^OBR7yU=2qA zX`UF{RopWz&$j5GT`@rWUX0CxYrlYYYxv{+W>7A!twe!HU zTCF|$OZ*e8#sUgf3;f#_2UJeP4SrQ~?ihH2ei)-$!5K9_adXuo_tyeoNW+_tv%BR?{7$CKPP(JMF&uEub#KcB-{^@J_wEC5x|x~p=@kf zpN?XmF5b^0ezEIO3%zgaNxE#+^4x*Ae{nR}j18Znpn_wIxS-MEiBz&o3`BZ4a!>anr|M6?ZgT|gjF~YcP%Z9P%_b2( zdvDj8{4e&-f5dd!A{6~*$s&{OT|YtwJ?LbWiz|jT%eDP*XY>VuVetxSy5fzR4}<=u z&Pzz-_qFq0Z-_-BZ|5~tAARdNoumO<^3O}d993deg%l-~-m|VTRNC^lCwpx6A zLinFJNTRqln(07t=WuRlRqJ}!(|dYGAOk>ad2u~yA=V&VxBOanHAkBHoS|ra^DuL( z^z%obYHX&yrmFeta^Y%kndEQ*5^obbM@C{imIV*?i18HFV%a%ROu>4Gt=;3AHm+L5 zyl>!T2m$n6{MpOP=iCuXy%I+&Tm1U=Ad`)(+MvFRw32Hi z4!z^2gBXt{$*Xb3D7r@O-*vCi?};!=)Lr)rq~Da-p_~e>roXmx{bZ>#Is@Y$u(BO>@M)3c~-+-Y7Y~Ih21Ysk08^RblhfW6lEOg9h5=ms}R_X(6l`$q|ub>F@cKY^0 zBhjY>jGT`G$zBG9vM4+E;7 zE)2qSBh#CWm^%sn{s5ODu)&gY0`Ywul9F!rh+(36+llKYwJ^Qy`V_xHeat}wV0Q*7 zVOF@zYxd1bBRVn~l9!k-vf-D0L*EW|j;H4AJ&&Sy4< z9Vg>(QgsqmG>xgj>_703NR)8!6vD`#D_LC<1&4EFU5@DC3wNO6>HhzXg^)8 zE8XBBj%TzOfuCW~B(Iay8-=B1ZcBFlurcp@QmspvUwT~%cP5Q1WBIcJlyjpzLj*`` z2&1iHpxnv#f=clu_kR!f0dYoP;+rM6fp+2V{I~3o#%9M>KvKh+Gsk4cx&5da2k zVylO;Gt;+_uv%p`3ZGJ6#EelH3c@CkAa8H%Dimq zzw#$*OMYtF5Tf!vu7D!Vcsp431gDZd|62&`{rCd}r0;4DGWedcFvsjMF!Pw1X7`uE zVZwCpP{xsuimiY)!-d|7kL3mYaM8i4IjAh?!K}8$|(5 zKoBk-E_c9kH2!;KZzE$k&BWVYuP)6|O4wB{ZG-m^aUXPOua=|jYkj1Kjr?W_4JvcK zk;*EVODswJFIU5~>B80Txw9&Xn(jWiNHc*U;NJiV0ym@-8W&miP7J3B7-&RdGeJm5 zi8q1DtE-&ilI-qy_2l038^rK;zu;kt^b#@Dzb>4%m0T?Zrrj&8%)*r)g#nF#gSiC! z3^W)&+%t~_FqCNA7LZtIE9%EPbWwF75D3#V;wQCs{gZPejMEe;r9(^%KC9zq zFatGeJaY)%g`qPvDF)L%%07!txFM_dKeV0h|BJSh7l!^$7%jyqLSW$kE=WiaErnS8 z@ke`)IM~OwayOYkltqsv4KtU@pm9~hX$-|pxpMY2qig9LR9-hagQa9A$_{*9*{L;= z#z2$UgIGFSABZi;Ot8}1;j3G}i1}UPF>c)GEMBWa0$OGjzKfi5Wo+??On=Tdtk!$4 zDU~my3fHS6t6i@3ON32G*nGgRcU+ZKXmn=qG_ryv&}h=p!q~e^vJWV&HmS42f}xgg zq)n@xsyBu61Kr06V9W3wH|TZ3hGS~UW%gjsVtiMLikL}&d~8es@r221kRL?Pw?8CQ zPXKl0wH9Pf!B<*v=vehk$}bSmg^YphS-ED!G#w~rVol3Y5=$L6842d{+KH;k+h~ZyTO-P(bpJY_id7~jVRzj&{#|73b;!5aX>B@B z<{8%kp;B8<;25dqJRCVOC5%a;2Nnj(ORm$6UVYT z$ugPc1tp_ZaLzFTZ-in?@?5r|kvx8f`TB02vUjOM6UOIW@WE&21MG;ILH`3>zWKG5 z4uf1iHY5}!u^Q^n-ZNTE?WZ5aMVcRC+t>4`N!0_!F$fe2-jL4bA!%@88p zI%*WW3mH@Dc>@Hy^Q|B51tmH4Y{4Z64zRy=ws_?AkRv`pMoac`x)yG*DU|Ge0&LJJ z_t$A?1Tq74TahRv#1dacnK-dN@~^WQ3|Y1QI@wA4FE*-9Br2M@GQu@ibkpMo} zRq-YgoipEo(dmqYj?h0UzQJPoaQpoq`cT!gZ6jZA;!1d<$==A50K{{Qc+cX2dcfhn3yEat3t!CgS7n*2rMCh^@+Ve zOeInX-9=9|{u_!=p3Yp5&kF(GRv|7UvyA0CV8E$fLIOcZi_s}outCFc3x10=5;i9& z*&YmegrzmF3wo9WiuVj>kf0+rhbz4>(~FSm#)KBwt#9yKvibzlR@Dw2i01qY7xc9G zH!f(Lyx+JyJlxaJl4TO!0Sx7?XQ=&>l#IYOwTy%mtjfaeTf-0NFf~4TMi!v+8RaiC zO%tWo1#8VMVK)_|$K$@8_iM}=KS(pWk*ageifzkpSBT^C@6n0&qtDFY)3*f!W`0bw z_=;{7S>K~j6~K^uhOm*yXj?2)90mg^Ys)Chj;a2A1Ja#Gvgx`#4uq6up}+#>RJ+2;xAr9Xjmfu%NRAn3nYHv ze_zdUZd=b7gjKA9Z3Y2%V`%NAW0f-;-sY>XrMZuVm+JbK_Z~>B$$Oopl-!rM`O8P( z{mitW_t8+W-PJwdSqf1O!x9gp$>Gm|Y(Q=6&wh(AexM{SP@oq?i9E-8RA>*f4G2ur z7~O#Dhoi+5jn-q_7in;_wjC?tmKX1Z068kiY1`fl|8W|T#)MW`daAI`Q_@OA^Krb` zQA);!{PPy11mzOv)>ZBpM2O*iSO^baA39m3<+X$7vt@9;0KrE3w)-(JrDWb~u`pIv zsnRV_Yj3`e7Sbith;mt#X^K;prCT+%)sd#9k|GAcK!6Z8lQee%xNBC_5mBXc>wnx) zW?}Nz;9{Tcg>LGos@VU*>sH|^y-%Sisk|}E0zm6A;G_zFk4)6au2*=!fzrx!*D0(K z_Tz}f?jJ66RzejF{6OsEw;|z95I!)U2PHPrlO1Onz5p!GBvlR?n)(oO@^fdW2- zpl0k|C@TKEyEGI2W_j`e$-nu+3#!llh*k^e#KRCh5PWtduys^)uHk82$2V^u8lESx ziZ#>cEGnghq8IgN3SD0(&V~=KN`28abg1lwU|AP8K^Ck3@_$TEvchk+Z6XS|4WVuA z3+}5q@4XB1?V6-tP(TeD+kB>;w|ZV>E&cY63In>h*M=o8D;`!+e47|{{{!*8A2_8w zP>J@|MS-rSpW<29u;!qglJQxwk^uo9B0vo~n5>ok0m3y;9;#wt{KR7EMjwSQLBFA^ z!5|2xb`q|0flTtIL?%8K+LxT4z)eZ*@A+S?Gf<-*3PbQg#O5Z??cDgkJ^p{iomEs^ zU6-ymZUI7Y5AN;`Awclpfx-#y?h+(8B*8tnyIbK9+}(n^yA+)I{=fUCyU*xxuFf9o zqDIwTYmZvn=9=@F^EC>jCxd40+&2vebQ$(zfxEA`0mLi%|JSV4HyC~q`XSseF7EEH zT{O_4fHYX3^TYkBETFX~yJcDS!QK7NA@u(*+6OJoqm?%v`v!d@SPqAHw&0@j4zgjv zqNp{3 z?dT8f-NiEK_q@-lX<&I=&k4wA~KH`m~ZP8_^ik5}$zU68)_b)DU znU0*?n25WgKeE}`#*7g00mD@@oR^c9Xtex)4$YijWP86RZjKU^x#Pf}{uatEQs3w= zZbk8(W~q#*y)byq_Zj%R-oJRU+WW$F&ZcIy^fZ*|KtqL|k_N9Zji>G0l_^IezK=`C z&C`me)_f^A8jr;8bq_0&rB`WK;>xSv>qk`#_D@$P5|r$f)^+y)@%5cT4X3NImF8S6 zw!@`(*G~9~+mm9UV>#EtdYMM95&?5H#c@fzo_6taPe*z1w?^>9TEp7ua|dW|ZLNA+ zY)B!t`eQ5rJ%a-~;_WJ)=3Z_4?owOsdnW8#iUUa{@z@fzJ#_c)%6Li>5vxB>E&9jNI z;16(xuU&CPA(SqhtToqDc?#$eakX9-6UqJPzW3ejNWR>ZhZHChILq*Vv1D0YoL;P> z*#GqC=B3VJRlcU~n6a94QuKWD`S}K&#Fbc;h|Yd?ZT~>H*{z%JVA&F0>_mRq$Mn>% zCxiGpRN__P$>nzo2dR`BovNSja%q$MOzDSHwP2IZ$>e(ebxxj$qrKgwyS(G3)|{6@ zA$OuR=TjwymVJMi+;c_Klm|VO*+(JweI6KSEx!(#&m`~ll|kNKP@u7;a{YKnnTgbF zqWCFIBw&JgXPSztP)1q_-zhLy zn;ZBY6Lb(yttu#@N|dC*m&zbJPVeURHIM(7j`jvAw_c@eYBc~ zVRS^w&!6v#eKw?(#|l(KuG^o>l0O|z`w8_esQSGJv0+^wC!0og8Ga8-tLFQYQM_j zip`nkC)V?wg@JT}=Q+rt0*Yqyh2}>#0r>9&tYPe~+Rw3q+@a%;9SBb)0t^$iTUr4l z3klHlU&*_O!3rn{>rGb%d9u!|WR6)fz%;G`U;GzP@K#Ue=zz)pVL5d^Frd$%Zr6Uh z(Y4$!qRZpDqNmF*(MLGT|5@$+@KyCJB5Oq~-r1FVE;m?%=^nmw+w_d(;{Z2YwA0AU0L?B=8zQrP&nROg6I;>H|Q@YK= zGJ1X+Hwgc{pJxG8L;wzyvmnz^+T9!)PRzf_b=ZVE_}xkjR1Ifxb|xv99cFAk6=$_Q zjqEgBp_fj^)cLyro$!fUHpJf6!#iv*VEU!U%Kjq&aA?0U5Sffz3)od&f7q)f=hd~b z7RnfSp|xEW0IaNs`-YR)^ebKs5w%*3Lr6NkJhsfHL9f2eC!3h9RLYf4ZH~P#v{T!a zPj_W-d#na_rCwK${m;1=fXt}BUDG?zO;ANX)JOfJAI3iw&@(+CURq~<-KeQ3XUsNH zQwqU-AApc}CYW<;P#_j@IQ*kH|JmNcouApYIo`#p$f3Y#%W*onFRIHB5t|YNlc);z zEejV6UE?kh$HGnq5p zIMO@h9{{Q*RKxN4z4oGzcV+$U(rf$NlD8TR@R*e2l^yB@`Ekh0Jo}XcWKa4d6v3(a z+Z3kU_t+OPDN&ou*B=&|>wa0J?5h_@-iXT%GH1UIX|Jjaq{f5i6jJ!T1NJre zEUwm!fzuPIKZNsC!N6T|6>gB0|Kj`Ls``Ooj!Wq=%=Wj3C!~Ll$4ahw>a)FTsK-xF zuG{grGC!EMSfV;^(P(sD@=&M)s8n9fy&m~Wm{4g$eFEHLxB%)&dtx^IDY$@_DXH9R zJrpV5iwLdj5(h-!GYtyb&yu-Co(1hh@NjySyBa&JAvOIHj&%VXfa=Kwtn)<)ngv6n zzIuO9r2%?=>VrZ=p*pFoelq4J+R*xL-J0*3f2^9Q>k|*p{u4nMK4sv~*Fw>Me-vR`K<^@hR39j5vN%-pU+vL1}%_ zICJxWQX4?T$@cqTInWHvF!%6p@!V_Qf+>rgT6^;^8haUg!Kd7Y{O45zG{loFdrXj* z?VsfoboF3|%D&OtrmudL`SVkGoPT2H)}JqWot#foMX0V9LCdI=P0VxLc)p2kfz7*A zgXcYW4?G1A@j_{>NY6iTr|=Ca8ou6C*8q?M2*Q*$Gx~ z{42YREr(*?91}MywOX81f3X1oZk=@>9P032F8Zp3w*5<~W9LP0;mzdT%?Ayhq+8&& zln9s;!7CFUzul|O|rh0fy(*)~(d zj6VD$KpTew7#{N8mGBCEU)nR{gXMLF#_I5kC2JP+WSgng0_Ts{lNe2?P}%Y9^sl_E zZ6SH7QVMT7u*sH{0ibH;lz*bt&Al#-m2qnkn{Q1QZ-@VUm1o{$6@Iz1l2;)#BG+a3 zZ-I!=jQnkxQESDm4R!)^Y|IB__RDT@85XOj)~@K^6QXKZB-{88_p zyGLGrj!8pdLrX~+Z@b0C(e-OZhmM{i$DPO!a=cWkW>e7dqJHALT3}#~`LMB_qw4-T z=Y<0N5o0wNB=_=tP zNaLGB5Z<$IhUiy)b_7E&;K|QBG}pOQ%{gf>P3dOu5p*WFC++5L;dirFT?8|olF>-& zjChgZCL#na)zbuOU@W$}{l@k5wPQnF*L~uMqBdHCPVa20TM;2mKGmx&*~RJ)-cEU1 zqupwoYpG&sJ5)vB4~CbJj#J~U@p9jiL3eH+a)5OH)s)hj6SEV@n@JfKc(k8#9z}Vu z?D9>Ra`HO*ZvCvcmoPLul**E=&(5gZYH}jGRKTV6&sR`>Z^a_D60?DyQY3DJ0tjHs z*u~9!g<8aj7WEN4zCi>%N&xg$r)eH2vYQifh7UrYAZYmYJ}i7U8**%7UDiG`nT*?? z(YN#6R>cyN1zpZ%<;+55_Jx3CQViIxXm)!IQcG6I1v~#1n6Vb*i0g8BH8nOi9L?t( z;AUjBfAHS;UE+++`CRyP=OzRvLJaf~!vLE2&pgd4Zt52Y1TD==taDa^x35A;LXpFI z?qeRJ0uGj4uf$IeOBd6phiNL6f-0p4P*JJrp7q$TMHTh1@AZ$tsfnOQzaoMAL=CZo z0b*{Ub*RvYTU z=$`gc=jAOe<{t8cCSFs?HK6*vAPo?!04&;8v?N_xGDTNZf%T!`g$+CqB{kW_Cl^z~ z5pc2cEly-Z{$l{OJauYKjry-Fd-C~@H2`>|prkpTC1miUm3U1~Afx}=Pf7QY1 zgOqG=#E|sBQSN*+IW?G?xVqCIn*}GWgtVrTZ7^F8QV46j3**p?2oS(C(2z$??B<*p zOZ_|=Q^KZvKr=~!9PqAfpVX&87n;|cR?TQ_E5Y@>mFB=875moijT;#yZ7pFz)uJeX zcazO!)#)*#LLb@Jdwo|3`*+!N-OrvA#PJz6(38|Pi5oC%)^xkoWCK30V`M?Liq+gX zfG??NQ+!&UB}I1fs9xOlbn0Hf{mo|PtAnt}kcX{*iXiuM`QGn5tGF`y#z(~1*W|hclg9qO z1?urmEGS`m1jsN?llnqvG+kf~eHW8(>CL3r5jt}!M6x+yn-ov@GfAo|K2F0;$ zy&PGgzyW&;hoY`i-4kNsdE6A3d(xOzj?2Z(HnPYn{IsQI;Ga(6U_&5 zIAB3^a5&CrLO*G6tf(H$z^`fRiPkJ=nK~Kxv7fY=CTzbvV1WBdf%~kNLd`ZZ0v!66 zrk@N~x}~cLIKoA%aTn!Fh@GGQu)UeLK{KiTVwA@Ht1=S102cVN?9}J7_nl*t(Mz~I z<9(Qlr4#!gXb`!4+@5vNNoFd1XNl2+a4{a~->$UiaJkr;`h z@)EpJOJ<$!g}$5YR08>4v@UYIy(tk~1o>=wc=YG|&(O$kg73V7dw;NG)JpMqem~D- zq9Bg7%gOwO_J!GQ;d|>wUu%*Y4D)(Yo^SpkLcoDF#_l=mi$>?B+}$16piL^!<}ePm z{*m}Web4u8&ZuJU%g|>NVS`xJbr15yV~o!6@A9ot*?YQMlf zF!Ya69eDu2opmjr@3IA4V=+Y*$?8Wj8vLp+u%3jjTazcb(YwmOox_>smV4FsLItAaCqbn5XF&uh<}|FKhr8P2Xz)6-F>WgbQnHsS^zo~^5(%MW-Qt3 zh0TFAu`4sq({5x)?APP8e>x)v60p5fd-w0| zTT;ey{~8k6xJ^2ep_+0xA7B5TFUfyxWuz1Un(AFvKYYu|%39BYG&vhL7_jpvaU=~% zEx#f<$W$v0-8|J+X0e;u=QgvAIv9CxTl<0iZ?QkxYTdG3RBc4kSKOtuErmWmN=iL5 zt^Hgl_)BQD%6jRx2*KAs*RSYQe!>q~21)ydFYdVdz1{}8XC*zuqs=F{8v+wM9X)!b z@BsUK8TRADAQF8YO7!+dX0TXwB#hTU?u9YlR+s0*lDHPdA5x1o@Ex+LS@_} znyI9>_fAfZ=pvSvC$zkp+FcTopUe#mV(x?Nmj-@4NFJs=e2F@PQa0LF=bv-aR|-Yd z{i=1h_l}N)t}b@sPciVgi8YoIkqs=T|p3*!^daX~ z=Fm)YH~fr$Z53GyFSzB9Oau&&Bpc1uiAtI7|U*}UmMd7#n89P%D5L#+|*o$h^OL}x6>!m z8zef6O7vN_M+}EBT+yE%3N0)!njXzvRRh>1ExlSm6E%wb-k_`8Nw6D3$nG4ke}X#u1uXn8xm1SWxQmQgZIbK4hgg_c?U!NXG^QyJb5$Vv z3TM)s+=2zqrKNAgj&J?zaaqk!#cZKNjAo$;REO4Uw(7YH+kIy*?7J|HZQUvc-#~iv zaW*!4mL#%n=II+B)yikXN&JlS=dAc3Kj=*5(Oh#gte393lc&-V;~+m9oOrT2ULt1g z8X48@D+|=!7f`a-g1ub^z5|3SA__E^JrbefH=_o|Da;jU@zF{eg%FbA-kPceQck;k*L!Rm$ z82}s;cNvJ~wx0C0AA)M6=yAo$iY=20sL`+hE=nptx#%32^I5qaYuOb4Y?z5|)wug4 zrUVfH$8YH1u$zAD2cOVJsenL7uYKe>sdBGy_M3=n*HQUMr`>5_Bwq!5QTW8llm2SI z%8CkVbhq}&Q>RY8l6aWC9NGDKhK!I?j|vyCwRFT&5y19#1oFGi^^a+Ub~BY~=SD;~ zCD-_!K^#H6knu;ZW?1mw3`}{MmZ?1U`~%rdjQmTA{Roqf#0kJ}k8w6LnMpy$hQ;^r0sIWJX0YXA17brCt(g;g@P|CX#889 zx^DRkwv<;%GtNjD$YB6A;iSsxqm@Q%cR8-{$j0(LIDoF9$fYz&7N$2*234`e0J?VN zo{vRIV!Ml6+_7-@c$tIu#;{bIE{dVOxDl1y0O~{rWIsx%e`%~K+Bw9ZDr*0#u!Z8u zFE2O}#m2bC>P^@gN?!ZrcWZ7>!)>bb7cg&l5U}8Ql(;!`MfUjX$+O5F%ElzNji;K3 zDsMLV?W^Xl>?_yT(-T`<);nRqE)g>jUM=I`zoE*q9zh?vZI&g>=Kk%leIQ$h7U4xa zlU1DEovYMk3uT_e_zo5I|qr{k}C-@#sbj1U!6{eil%g#9V5~if6cw z%&U~P!Lb1XbQ{rOH1$K{FAtf-)ag<#FIi34Nyb--BE>3gpPI|hHB5)bh~}qbpQZ>6 zIn!Eki2DMyd?5OfBf?yX)h>bWGjYthW&QImBAxw|)3Us)RlA?~ae5u-_q zQ$&RzDCw1oZG|CsbhSV@iNeQj=}NZ$M0+ay_Pg$Bn82H%Qo%`G3Rt~mHj>$j#?%-;h_3009Z3t#UuTRxs{Xu_%owwoJ5Wp~ zj7i2D-DY=fF&BBZt$1KYs$6Aq$0km7#GE6I#2>%D+Tt%r`g?1ZLC#$Wrb->e{S@lX zh;GrmwkcvD3JueJmBk`srOOmE31hGwQUDK=gwHqdEdT*2>iYgZgjS+0N`lk#_DUnS zT)y)If~L8ZF09yP1m1U{{KyoYBD6MrtVWn0kU`!n5K3|Rm)q|lo`f*tio9zKa*r$N zm!rIm=(j)t_a!=fz_Z!oLx^k$GT_Lsrce-S*rY#AhDSb*2pFcvn>N(R{} zMMa?i+>4yWPw0zb1M@5O8K2A|s03!z0h#~;C+@Xzz$dUCUomQRd8F8fcog(#>ePCJJ?n4MS5$a6tQ4)buk zxJH81w8uKWP(9+a;CvZ>(S%W_KO0N?glYHO&vBkQc7~2@m$UVe0Q8~2tx?{nY7~=g z9m#f%2GPY+g||LDbTV1-Nq=03vDkYy^RXBrvRYh{xO|7V)RdB|3Dbz<^@d~kURN{; ztsf~l2Gp|J53<8~cOD2ceQluUlwqpP?I)ykg2bzX$Hg z7~C1#cAD1&y_)i3R)oxT_*3`|E-%dZQ6EhTD);w zd9h0Jsop46K^&u@uI{Kll8-QEy|?iKqdfEEt#m=}!|2TT6SW^NZ_^)w#*AAw?-eBF zAY!d8EiEw}Dx`5bT+dZDV!mxml=_D)EAe?l{)^=-o__06v>EJ8wiN>{+6~{d%zwYs ziXOy1mlIk|naYa&iPg$G#{zOFP#Xm0XQDVh)X^PhKP+Et#V6lOWW=9Z#Sf@cFMINX z>Gnv$;*TjxbpdBG#4PWSKQWB%Flj|JId2X_DDy?R4ag0G&&APCy5_z)FV{|p#T<&J z&_eRq?c3wSfzhzxFMY)wy0LG6YnlAo<$`(ZZ~ALy;`5o&`I>u#eNq>~LHuPOX zhVg33cQmJ0QG7<90DS^@_p$A!x$Q`2@7E4wu5vj#3@6D-i7ungW0r`m0Sj0gM#A4O z?=m(cN5|OT5i2aD@%GWo4iMk*Yh5Wz;sd~C+6QcZ%}R)NDYVVHy7Jf%b2@E94jUf* zwaYb2Zw&Noc|4tN>6Z;ff2KHT{BUmuzj(D@a$WpDG>V@(;HY~p_bksb4f?2M zt-bW|eM+HzVe<2<{B)%Qy2Nvs*JJ0?wcBNm-lGCg6^Ur1#ORkpZ~gbHVZU zMjN9ifdS2*lE_WfAMyKOUW{AlSjDp&@OsQ`|0Uv?shVM!vc(-qU&^W=$+VtrAK81FfaiL4A&vO~_qtNBb)L1;*3_Xj?^3tJat@u?@iWPg z4TX1FyMigBW!5%?`vr|KpWkkt3y2iF=x1XIYKJ)YIW+4Ycv&u}q&AyOtvo{VICdmW z$Gk66@JVbVv#a+#f((*>X#3Yo@oNPG0fY?ryg0tofiQ2(Z^_Pn_O-!S_(j#V*PZ*1 z0A@Sjsau2#J986zkU-3-2pOPq2c-U*WZ)L zpWJ1T0EfaFvp33vhGR()e*F5y&`5Gdg$>G&<`^}uJ!A+GqxBnrH)ykN$_5Ugj`?w@ zlq7goKB(*NQYSl?%aJmAZjLd4)VZSS(t@DNiVGtgucYif%8`!&c$GNg31t$PHl=DU zQ6`RNaMylEF}}?0({M>?c_flH-L)~=HMKQ@kLK#BgnWqZLIj$2N~U@@oaqD3=!e<( z?GJlSZp0jeD{t=JZzcxG9)Ydc;R2c^9JT5GUaj)ZpN8}gC>O81ct%$s0mMX?^SB4b zzbK`xQRxG`&atBku&Fvpd3KUq2>^q&Oc#;M`)vLs_DHta90pW5SAz45skW=SKlx;K z1%x5Z%^Cy#w&yjHRya{#)&Zi1i1mju7`WuhUEGFGag-LP<2<{GsU~u8z_Th5RTSGi zoT1*qm{Xmw{wJ7hT{Bj;5)R*IkSwK*%x?A+J$t_cU7 zNkbrjwU4gmo{e|}_)@t5vil(&X6P0brJCuk5DL>s&SK@^dH#_HpPrJ++00aR1)qo1 z%%-R1l_A2Qp}lY5O#AfAgmCA@!8(5hDPZ#vGX%;bp17Sfr#E#tB&%7}F(`}?Uq)T> z9_8-Z+W$d)-O$z4N~sPQPyb*7#?rbE+LHE&ecpZm zaKw?b!AP6@dW)U@4dd@h^jG;9zWyaQrq%QO+Sq_IWPTNLWqP^Yoo=e&**yEA7IQvp zdlL&SpWc3Q#r{HfSG5dXuAHgnRbD>8_`E#FZ=FbHzARt8(Gw_OSQc0J{bqXFgKv zvED3UHi=RIyN#pt&P|Ua7k~Ho5t421`IO~28uW4!tyw;~t#DrcTFGh2P2}7FEm*0w z&daWM^gZ_ZK2D@R?0u%#_$>#`4e>oP#YdRm?}I1)(zVs?1PhWMo0hQY682|x?T!CM zrs8CD{bxo5DRZUxGf&LU7~`k56If58>meRPu%gbW(f!-<^WKWHH&_#8lJ83N1Zw`aeCQg(rp<7*H`9G`L zHAg?9@EjMuHfqsLJu-&(7&t9KC$j$J{E&SNhbWpf@lp@uAMUk8dUtc80vaPu$JzN? ziBYOTHP81X#>lnnY@ue6zIfSo6jO-UEHM8ZPnAC9UQx|^7I&56dsC}=RKzv68_2&g z%uN)>2FYs~*8Z94dqBUL>^uI>OFfGtD9&-!&Yi@V1X{t`1Z~Udh*YLeIW+Er05?%I zcB)I0X|LqSjL$uG^AANyQSLF~nkcH#@nz>GX^+GSH0T)@10Q>{-RF5{JoKhUvAOuC zj_g=FCnI>Oa!N$p2c`5X!c+{dggK*bZ)Ih1hI1JOK94#5Ej}LWooyVr5u(o+Y(k^z zjo4m|>J4+iXQ2#-kB8?-ArODgj8gER^`puIV<}O8c`qG&U(+}4MT{Ki!ECcwZ$Jnqjo$c2%h z3bRvClYB6ET@T~Os^^+QzaI3L>_TeJTg89(jKU9R_=j5!d>?i}#8S|!;TVN)kk|5@ zi)7b~2n5(C=Ck2BHtU{p+x>+WhnJV$<4mmi;^@ZJxmt1^CVt9|$H!dp_j^9us0RZ` zG;}z%AD3lV^M-A5HNKVkhbW)cbVmd+Lb!7?Gh!rDysbcC)*lf+UB22rm!wty3#rGU zlENpyyR^m4Dw~^$q+5(!g*{b+ygMTYsmN(2JLO(CBgI9TsZLAgMDdo}BC|h4v)Yti zV&D1iXaNFwyxL7h+B2pzludyU`$Xz7BLq85bjb4(9+o8ZVtw}h@^mod#KLEXk<_;t zk!V`lqNjFEBd=YCSwiC9Y+bR+pY%uP^KbWu-)^K@se89cFgEqp=7VyAFjWO|*|fI3 zO;PGY(zB=h97#&%j(y<>iepn(>i)unm%hW{{Bz>Y%KkrD*|=gFXn1{R%~C9gGDKNE zKYw$UXI4ZAH)f3-+l<&2LR5NUZ==OrB%4=Ht9DD%CBdObeJ3kMuW}dVn3dVkg`^^u z%P6GTYdWc2+w0i+04JKP70m!Y(WYHHm<6mL1+%yF&u zB3pB|TiKzL{@P-H;zis!7oQPtt>c%YSUS6AUHTHNeWOy7+kG=LyNZ&5pT{PfYwzs`eu@)FDXW|as?jYZv`9RZiI2O{; zA7ygavXYn6KKnj(1)-5^Uty!!VaV~kE-@{x&aDo7>EN(v6O(xx?9EqWN?y9yb)22G zRUo2W-|k{g#oY#Rnbk|UbzD8pNkqCMa#OTtEG9sPi=t~tT)lC9*{NtI6O+3Kf5%37 z0c`2+((O(%!ZcnaqQ49!Mxck!zG%<4w%Qwf+F$I*7DxZv{NllR{4}$0i4@ZS26+oo zd?8{nimIV`%(dn#+QV&hac^XJ*YeZ=Us|K-`&7uC-vIJ<<+{0E5|J}sB~pzGB}lhY zvH1kX^1ALX-%Z08{T{f@Hfyq4S!j7KF*B}OFHk+_uhr9Tce2A>c{X>dV%+3Q?+F@c z>p8(ZW#CikP+Z%1K(4h!eQDvoduh|#TRvOwsAP`#er9aquAC}g19eKh)Yo2#+OK^e zgQjg97iHjA;C09&0Rd(Sf?wWE>48drmT8kl0R(7jS_;MGEihkPHF1-F&=$acmYkzK zk2gQ^0$zGSR|XNjKVS4AOpP2pueBa`PQ0*&pK>J`5FyT3`NXBX`Hj*$=Ix3IRq-q) zG>ngOix02R+wS22K|A~sx!U4%DZ&~Tq&Z}2MCqtA+i5zKF8=c~wN4cjkNH7lta6eV z3IA>L;gW?1;%%*d5`&F|5D`qd*iw`2`@MqxjjYuNsQOgJ@`-AbF%2Ip69^9{xdNWO zq$VjGF6iSoiOnWRP-T)$>XH>nz2LWK;5o^^jv%WXnrdpr3&Khetk9)KHfAPZiWn!? z#bUpXDrFtfl;vYH=YJ(z^J}S^NpHEB8z{C{{nm}VuBVnc;!N$LWh=U$(D0%-uoP{V zdNdHsr0KMEDK}-ZQ`1c8XcJBZw_r8hV?6w#pOC4Zqq!r^%tYXOAL3x$tNNYrY?pk2 zL=?9(wDBX}@A*Rxk1{c`=yTsRuh*D4nk?EXndNt9e|h@6)g<=;(YEstm`5czfF0j# z$DGZaO8iAdUZ3wkh;%PKo5!(-wHigF0t- zx_(K@b97k#SSqteNc7Y~%z~SST?)CXT(^4J=q5@}d#(?KDG=p_W+C>d>f^|p)Sgv5 zf}Zjw;yW6wtTZ8`yP!SnbMSFZYlZb>a zzo0u5MLNCpQek#omptT<8lATp-YPffa^gZU zxm5M?$ zcQK5yL+v^-wqeMrLm9+Lz7=OJ5|u3yX?J*V4)$yx#^ecu-~J`TZZJMS9EW~vh+${S zF=L4wdv{h-wh(uF49aPx8EhS~j^K?^{Ym&siV{8`nJanZhi4ZuP`&6045i$UG7JRr~Ctr!~DRlQU;_YdDlRgIL2hC4-6#|Zu%Wk64 zZj6pSwdwKVZ~eI+Yi!NoYWPB;1T@*x(5(_gxhuiV58VU$>lH()Mu3m)UFKMD1`{D% zbV}>);|1Tib%PB`8m#!mUV9X}H0KV+9dM?t{?Ga-NN_8c#0tqr zNtdKP4*jnzFNrOpVn%qMC3g|HeL)j8FgEI>!n2PZ1m61=Jnm`5E=$u(r-k-V5Wt<+ z9rK=oDUYpN(q`~bPiCCYT4;I9=GbIBL#gm7)V7K6 z*Q+bz@|7xgs>xDlezT2rnYy3>WAvwreUg<^suFwzP=@PjAjf4+3kjFH>=IaS@Esy7 zx9`IM%CWTRmW9BFx4pgWnF~6+u4;43v6DvMepJ48yXQh+=%e;EHuM!;Q#1b)?81D^ zOxyJ;>o6kr7~ybgFghjkfhuM8FOAB_`A3O**`V7Sd)K8ZXXY_$Ul6G6c@`(N`nS9D zj5dJ4ivrdYQ&1!FcBbr^E9?93NvoP=bqHTLD9XCR&8lAKL}jwCX=KTKG3(nZ=|{dGh z9__mfdz~HFgbTwU#txS4n(M) z(S!wn7=RzAgua+lrhQ@rMhR#%+)6pp4ia))WevH3yw(@r72+g|szBp>odsi=Y5W$; z3^w2n@D?io2Z&cr*23xDE#-7%-(jG->836M^l|xOneSK8#+6X zh```_`;AY-_sVx?v;4$(|4>==24%A@1TPt_jEIy~jwF8nFo#XYm4cJ(5rm?{ZqEOXyNU#~QFA6kWUcZvaW9ejQOsIOh# zb-VlP7FNp!+8zdW(DDt%F#dY#e~_*iv{O5hOejAt!WM=H)MfK}ner=o@W?L9SoM}x zNI#mZk~V*xE>(gGm-cvy1{8#LkPn76&7ltWcve4I8N&d7%^I502fQaCEkWz3AtP#x zkzaqC-@7g1Aqd&l_L|V23wusI#IKf!ke4kv4RR>Yd2CG#(wco@&pk*L{2~lR&`eZZ z&ZB?jTD>t8cK`cT`TiZ&`@whN1;&tWg}4 zUl2RIG+9E@DZg#d^nUuF^VwnP^@iZ{W@|}=JkguZM5!kxOp=!Hu7XN_RW$pM`|-h& zj`_xS25lh9)5Yra<() zL;Q~^?e!npuJ1j)!wZl)&D1m0QsC}wP&NHid^p)Vgq!_0lS5N&ROT~36RsAjLYfsu z^L293fvU&Up%DxZR3RZVN_QkIg0x4a_;~%B>}_-dK5d|LO5Ih8ymPAyQqxq`8=(Z0 zu|3tm_LZG;=VG!v^V>cyZr?du+k>jmkB;QuZPm`QanebNqnM;Cr;u$whRL64z9E47ywi#q0gCJU_D!O4fbqSqV1ad?N@7khb(y&qgy*xcLBqpKYpZ50 zn;EsH3r6169Iky{qSTnNBYqM`BTnHMY?W*JO7%@VBH%%ecY<;6hnv;6DScesPrgV# zt2NiIQF;KGm2BH;_85YbP_R-=lX4N%Ys-~2U@n|KAcI!$Z-dlH*h9Y6ZAzm73I@*X zq3#!zuy|T69e0pTmUoy`Xs4;xjr3i_ucaQ7?IJ&61v7{nHi+1cI_^TIMSPmqkFefJ zHn@!8;WnQ=4K^{E4&TvO8WelMsN>S{@ZE+L3Z8j>`B6&f4Xt1D>YLVOac;_~XVnvS z!}4`&QgKGj2_~`+ec6Gp4Z4siQS?>K*7T=3TNj+%rM&|=bntplH%60LefrbCIV0vv zO7Si{P+$2)lv<2!qdBtL=CSs*`Q}&;`0M+nMo2t?IlbQ)CGH5;eXr82XU3hc@8&df z+!$rMkU%K5?8=9?@Lcuv=tJUf9&Z#VOJ}!TpksEJf_*eFr}j+Z(Ph_o_v(1ICi4F5 zDKnUD-Dm0AAV167e0_gf7G=}@>pMP#Cbwa?^aOm7mu7}Ier(!5XUs^ML#GP5zTUbW zK~pJFtrK_PGt21$bY;pjGivD&mX}Et>fh91gWbs4jvHTVxGsqQ<>G1F!^-{8rSi+X z9UWdGD#hQU?zMIeaWgjPA71MEe*%JtL(Mbuebg3rm3O8QPHCZ z4jd3Lx_0IEfdhxH95`^${)c}6J=!L}wjB7*Rn+LpZ+8PT*QZgwiD6GDC~g9FXUeCA ziCZPOm2{+^7IIL(<$P*#)9~QLm6%)Ur!IUq`NrdetCjQjdHITo8uxmthQ@v$JN>}z zS^3YZBB26z zxsNnnv|8$Q=33O(g-39yN!KExtwnGApLi^mmBVN`b0P&+KHX5V zMh^)%eCErj$Mhs3tZY_jH9(@#$UCW_fteK&hs~**8PyHgZD5a0caRn88X0AD^3**` zON<|$;1FPI8M1EYzsvoRqn~PrvV!61S9RmSrKyrRW3u8p&y?NT#`u;@(`wJU&#miL zo!_Z%dl8+`hu4y>>Ae9~p6=VIC3J`4lfz%odd7K@+6aCa_ZC(mjo?`4}W@ZN3zPUKS$iXYg{lL|O zu(z9aVRr1#4CR&S&S;eLX4Iy&D?TcYkWRRB6=}^d-0bawn2XuDS#I2E<>S|%n47TG zbvt9G?;kZOql64{Vhm>YQ~Z=LODX008jy`Ls5onW(@}|@iS{2c*Gosabyf<3xo->Y zqKU3|MZ}2ft zx;*M3^ToWRkKr2aP!^_NOxI&$X(<=1Pk7QVG~2#LBIv}bjh27v{UPG*PxHxqg6a(p zdlFfVR)n#xTD~09`Jpbu@RLLHK2HrN=kItDs%o`POnDC_*6^{A;SzkKH}q&PGr7a& z;0-Yjs%19C<#y{Zl(t*<}cu zKWY||mEG{=Oh>`6HFM8Ej%|%&YghLt#LjqRPo$IacGpK5x@=QfPKsC5a|RY#`Pka} zxAm>a0d2WJ@A|As%atfww^0H!a%>ttWk+3}a}?^$4z5018y|!6-5o7gb_;dsh&mYb z&>~bgk_^*!8%#7zR(wA(Oc)#_fP)_P+16KtxTa0`WVuY&y$hUpC$c?SJ{h2v=~ZB| z`Y0$z3f+_9u01sPD9_U+h}8O9?)4>iy%Qj}QS;K&?VX8LiAwDPPT8S)aNP4qoSLDA zWujS7Ug**gUNpDWr1lhQvl0o~mdM@mOt&~0(qu^Uu)#hgY@IWooIiNeXXIVRP%v?F zSba^jUE*THd{|TT>sag7-07h`=MslF|LNGVKStOS(Vw0(;;lQjMY$;PiGhmpB6@c6}pl1&4ILUWF zI?eTVT&F?h&c_{zqZh9=F;|^(f?da>pkfXV7Ib_2&GwI;N->}aA=H~JL-!6zPsWcH z5p)QAtE#~kte-o!3=m35Kxb!ZG~02vP}iO#G@oU0&;cLAdiKMLJ{if%#1tlH)_717@?4 zUz(xQoE_-wd2=XoxbkwuoN9mTs!OF?66(!+d~=7SRcrB*_u+JP4q8SW%_Y|k7&gw0<(g#ZoNKbDX8P(+{50Rz z{)P!AuiVHk=R%029LCC$H+@2Xd+aA4ZM=z%Sgb|=TH(VTR7uiFnH~B$oZxxdh zNE2j1??DB@yVE3onf}SGtMh!I(4D9eY_l%?k;7O0ZnUYtbYv!=c}!hoBT~TvqkmUa zaxGCz(nM%7?kQx#8Y>^FIk(`5IPN}iZ}X;m;;ML=Cn9h>N(sxJTXoEzjkm_6wA7)u zHzGu4GY)tm-iO>>)%$c&iazLA0xMtB=UBu^p`SJu*@)}MQeTuw3T_WZ_6&K4MhV)r zPDh-fAt&u|U3k`~(uszw!e&(5$)|{OpSz2@D7CgWhj_IJxnpy(a?tb52mDHm*a`m_crLFbvFE z{#2q*>eJ~~=P{K_NG?gV=F^aWIA0lk=T|lxsCLfnHp%8hOVLK%Yp{Xf7X@4I;Z2z* zuH`E_{T4aOZp=&tL)~|*lm*k}?Q5ske^4ZLt}CJC1eR@2v02<6T-bY>gEcbP?Dx^kf7xE%8jT6!{g^z2X2N9P2Kgi+HrF{k?3wAzUH`xa+AqI z0nt76zIWF%tp^7@O3=4jpB>YW=NOxY4wN=n4@1Nt$2?#rg!co22>K9bkQ&$G*DIAJ zSlX2v!*i*78UyC|z_XYutGsOqWlxvDfzqYjJF)$t+EQH#aWJdT^O@FC^N`jLe!bBS zuzpoZ^qf;DajSDO;y4Go;f3OHu&}|Y(3vWOp4-mSnkvZ=U?Ki};i9WF28m`!QII>)l2b-_oV~ zXZLYv5jimuF1y~0me!|^yD^+N>#Vq?F~M`8l~tu~25U^0aEDGaMO&L&mF}CluiNLF zhE$KXp?h=sbKrqfsX{O(9a^&nDV~9wfU2QgQR|F?aZM1^Ugykv=Xw61T&AS!Db{AF zjF!h8yqT&yvC?sIXi=3^Rz`SymhFPz@YLF0M_UKkLPuKtW{rrA$aMRiUu{Pw4s9nZ zS=BTv(;RqAu39^FHc829QhWnAjxEUqGGqlkN%*i@M#Vi9R938D4PMP47MH&OPe@c6 zicO;zo*V(^l;6oZz)dv6e+0BouZ%D7l2J^tW%DJc(a5BlkhTc?TA@g%XVPiC5xxgG zl&5O|Kl-hC45xtU8G`zZWzCU{7H?Mj3LfRRRGN<(BW^9xrUiv~&C16644fATLiMdO zmBTBaWd+-Q-j==-63|i?__#vVVOnRe=u7}DP}iPhraA>ZGuhcTd~dfQloXY}sf$=$ zv~6_F*$9Gdf?n5Q0LhIE5IF<}U1#4cn<{LhE0Bvz0@XBgyMBhw%cPih65oxHGOa72 znM>(@%M}vnIYY_a;P#0Zk9svDwnr!4b%luERs-}t-w%>S8Rm~2a$f%`A?C=OyrUwS zb8<2vR${ltt2dL68LL$&iB`ll%GUnqw;q-APR?t+x+Vh}q8}|aDR;USzsW>d0!$eWm|1|^NUh7aZB}|e9X!?j-ru7v3bgQLJJDhqL$QgZ zkxTi#Y_UFGl-_yEHJyMFLRKZQqZ~i)-%P2)cAd6U4HfS49NYcrncJ>ti4Np<%y-%< zYgDd8yJiTYvD|5GEu}caL*N+zT_ec4fYD-C>`3n>-e9B^uN6&0A ze!Gf@?dxguoLZkDkcE@*q};f^U_IpPr&B9k&DxdQ10hqmBa%K7dAjEnmv^0?8A~p2 z3pY^8ShM}jx+RqPmqdSe^1K5J`H|7zZV09R+HH~>iyisWC=+hh_F~>s{g-*bkUbgN zVjGj5t*Pw4IO78v*?zLyWWMeeur8HN?S|aSVcaE~=bqmQGMrV%3)uv;e>6kUkbhf2 z++yV@{o`4!spkX&|6M@i|MH*&;X?ynL+;5r1ol;fF%!o3ErLS$kcYx5d~Hi-!8_%@ zweoNLTkD_-Jf_}{@JI5FlgU>tY-Hr}rnB@($j86t1z%=l_?jg1i`O%e+O~ z5RPTn)Yj)So+t)Q39(kIiw){M)AEQD^Ln^Ec;>Yfc~6dF^KGxoRnpPcmZ3}BLF+pd zlsC;GAHoHk63fz1N0SjIin)lD46_%g7uTV6;I{r9V9UZY z(Y!4OvjIf;s-+l#ftYVWpj?BnWi`8>pB&^PhEUqGcp;RD6g$*TrPEbJIrU^t4>(sh z<*R!$^op_`W1V9A2)CESNtA&6h9Qmeu67ux3nw8g9cb>k4g}4G|r$ZR;H*$ICm6|N$kTD0+KwzXim~iNyO8MW*Y&9wlKQY+xwWufvH9;w^UVpJVf!8}PDsF8uls z+FLopr2xEYoTwjtD>=fEbGX`po`u zUlZ8?ocqPWj)1oC6T@I?C0#xBsetADI;usCh>rdi^VvVNL!YQm?`23Zd>6pn1mNFj zIs9Cee6o9FG~tW1v8x)IqOeO%o22ULmRuu>98x z`3`9O;V=p;+Xn0{F#x)Nk$KUw%qrG9f^DKxaxz&{Qs<()T6V<%hS;s2b+ml$Fk0=U$9V?g-dQa6n*`${GVJ``<*ztB@}lO$EgnPiUos^3=)>T$m5bw;e1vS zTHe$$438?vV?3bQ#?e^F_Ff2rVva{H`iQ)KnxVv7nOIsnh$S|-bz*u|ubLTQxg|OE z%7z~M4!?|cH%79KEsWaijwIQHjuhJQr1`HFTEn}e&6f>WGnp$fL&-attOd1$>k7p zQOrAQ6|gBQEf+!|B!t&ZnFa6)1Q$w))Flv?T1Y~1w^BNBTHJxZ&{wWL1L^k$h^*iS zhfrZx>gGNLViN(hUEC<(;^%tY{Z00`*w zwo~Q-yMfvcp^R0M(m)mUbS_qx>+$m6i0Ciz%81jNswr8Srt1e%ngyTnCU?lJ-%yOp zft_^XT`y)Mh20Kt2@~9!{7+aY9B~+3%xR$m;(Kq|0mpv0QZd@H!vrD{6r$JkZezb! zS;_Pk8wbl~eKF%dKLGG~KCY49Z2K=fsy#Oz&_?U~Eh2LDEg1m2v;fo%kcRH=8Zk#@ zHw1_z29X#d`?w42tqd4{c1`8QmDwn*qIZT0^fKz$*Hn`>l?j)oBg7i^{nG^(boI_dB+@1 z@BhoTryc_Se(kvg{|@+nrSiY=@Zr!tok3fHfx~mMhk>)6y%lZUDGxOMNVM-$`Fecd zR>{iz`(uv6fbs$w`xkWV+fV;p6X}%ydguMSilFz$Zig%Pe!c$wwg2Z=MYpQK^G$N< zH?L8kno2?U=cbM6hPubg(==QbKBh0l#v+8!h6N@)8JL!G|BmV0Z`+Yx{iX$%7`JOg zE*7VMh+I5mebO`d{@zxkP)B?d5Jl~rN}8=075%#Xfb27`J|M#VDg!^i)zo4L=Y$So z@RI9IbimtIIX|`eX`%sPsG}2GtKkV#@nF8_m02j$`8@c@n-#l6TYj=?SP=USZO4uP zZ(4opxAAT*7KFaIG{ydNt6_8|4%3%r@pwKZ#mkf8Osqt#M3LYrqek z8I@11Stds}4Wo`739;KJ0O14Ay!&)+g1rV4UHG4F?PsHKsUzDS;Xw|dNdjT*pk!$_ zEoLm$?`&PSNT}~ufd2VLlhIjvr=|Zxj`G^_QqVamMVv^Q`D4R}xABw5GA#8kwSI;2 zrNq3YRCQNc4?;qsY%)bpgI?Q2^$3?J3$f5|eiuv}j2%@_)gi*inx?+ZuLkBPX%xMg zD;sqVoG6_uJ>pPUHa#T{`Hr1@Zn(f7l=cm^!VeA)r>g%T`l3)6xWXS-l>amM{V$SA zC!n+TY39|1uY|HsJNtyTPkZ~+wNG&S!~0aW|NkEhUrSAaA+=Au1Z<-{2#@d8-Bwup zjFN+iiAfbq=voW?nsql9cl^MgGmd?~DBA@sCOt&)j_=fXPB%QnYP@<_Y4R}Rwju!V zKaGUZ*P^dUp9m${+`L523MfwCg8%T1J;PQ%##K3tI`<5l+Ku!$+Z}B!n+_au2GB6l zogHUj;-Mt>?u5fet+39SiiP|XyYzMZ;e@`_q<8!5VA_^y@ZckHIB|!!t5nojj!nuO z{?|8zD;tZti=dY;!SmgLJO1(d5)TF9^zC#$D2Pmni;|>-*Z~!)1 zfR_4Gr>QX*dCOE<75pm6*6Q9Z;t7+TF6R=ZUQ?WWvCede{?uLchrGOZv)+c)MOBwn z!6Dq*b`&RfSr=XdhMhK|NMYyjgH$t3jC-ne0?HV^q_B6+Yy{&@ZZa|sy0ug(=L9!6 z+S@|(uEX(Kh)s>`^3t|Kf5SN2v08gqX_cY^1@`Xj^rE9dfWQ81eB?uOY;B5x;*tZ7)s>qed7<}FGqePGIQxBT}h!?Y(= z{f~DhBj;w{yiT*VvblH9MmWQ&DzYT~M5B`dbXBfb&ecC>>6a0oR-LJvwzqC2y?RoX zqb$ctPDoEjatqnBJ$u@iQe}*bdbogD(!;m`SRK>5 zA|q#KvaB6jenDJ9mTj?Hn=&zBS6sogupeD+i#+LN-YK6CcN>*IYIlR&utuw`wVY4+ z9{U4Q%!W|{Qy{mbE4!Vo{*nlfa4^mLARTCni!-@r@DgclmN(y3TFSOldTX2I+7~%> zyW#CN#A~n?=Jh@`F)L{O#5tOhSHwQODW$x^hCajj1U6{CQE*?7n8tpwf z+rH}wK+&v9>`GJA!xIV>;a&kS_af&5g{Bf)ItTI80_pQgn97ks9 z*F7pT7E=;W!JWb_?dpE6qm)ab(`nD;MwH`+1iFYu(91!l^qh)m!u+RFvRk-i>C~wI zJHdc|IH|zF5Qxm}+qNgcO%3ms2ZqRNJHqG(mMlMmS%okmU_6ZOO{xr89-F#rYoo&Z z*mYc746UJQF0^n;NJ+k41|pM?g)nn5Cv}0FSTg*^{Rx@a2eRPyI zxxRi4kNJodh(xK1^E~JyKqOpVS6_*Cn-r4+mfH(@=n^OT}3J^zw*rV0LtycMcIMwqjpg~ z*Goj(EJ@D2;adsRABlbIZ9`iECWGy}+vwrp?cR1sOzmAhUdIX9BJIIh`-95xuns$j z&uNQbbMY70CW)^cs{$9uoY9T$Bk&%8cvsJ%>vXshrc@IXBLhDZPIdt`B!1`GAiF2B zs*OtAL-#)Q@+mg<`6Z0MMDuRS89sc!UEPLvsO?c~+{9>gV}n|gFOoA$#)#BnHay2_ z%UTMWE;Pll!*)Fe=P3)Eg7m#s%$@jz9%eyYgWymkx%`-CV%nYCcGlY13q$p-yR2DL z>Uef*>PTf-KHSycLK;FEnA;-7DVQ`9fsk;A#SUlMX-A`d*?8m}=E_!-oLe@rmNjw* zxj0x$5#G*8^!E@OWJCpBv3%<1Q&hay0u zomf6eO>*rU{jT7TKs}A!`mP4e>;!_h@X^5nZ;ZGT!UmoE#el!WbybWI8*{U@qNL>X z;fjX%nbld8;d4u+GQxCqS<@vh@$5!xuMeF1SlFiWG16XIu28;?7{0}(+N+5l=fz8_ zas|)IT)N~ix|A$H?CBP_wXvQ5H2Q?mJGrkYv}6Hc_>$wZXVg{7Wqs-K54A|h)Div3J2|Q)RF+94C4Qo|Up_K=U;wKsw^kmuTX8kF zqPDstHs4iNX`ms$Zm!;A^5U~qP5Fzx*mEfEwnrgv!-6`wT+*l+in4b>ng-Uj1Anxr%sbAx)Z`oSU?!UaO*9^cwqeTUAyU1;+<9YGBs6es_qEOs?Mpg?>=vW_hzS zW@mI4^ery|ux6*e_cqWWn+3;NTZ21G2U3`^&hCAydcw731=Vz;_rGkf&GY{JQI?-K za#mDwG9wK(`1uPl%F8!^JrZ*Ha-Hw4X1Sm4t~OeQzZhDZ72LPV@g7E#jkzX$0)`LD;81Lp?qkR$ZK(w43 z`%=ZKpOHjwHJ&e?UjxG(15jtqgiar@KjrMi{Ap`A7`V$c0bgbDX9aMWa1rTWsJQFE>cn48J7-b>=gSA7P z-CSIBr#KqzW5$oxd(!p*LF8az1eniLLth?iaRtxJc36iQXs4yMg0mMAZ8_p;N#GjS z%Op7;t9Ii`P~xK@OFZ>c>7c>ltZ^`6w{LEJP&;L5a|9l?h4rQjON= z>x+BN2M)u=jNVNloM@4%((`{>4Cp0+J5ttrBh7+kN6(b68>x4lE;kWa3~=m-&2cSB zOP>xIi6kS7FD1aneV;xo)|hNYZ!j|OjfHQ3fjv9l@3J|=i%&)rt)d$@99eN|mLFw4!ln{MV9vnGiJN(Y+2a{T8f&aA73^lN;xHc_!pU6>THZK zaA6zP6*@VRQY?JA3x5)bv(F3ZwpORIr!@=fO4T4ON;MuO@-dt@fC^5S^DZmaYi;b+sj4w zw!N-0gkF?0egK(M4srDxUb1tr*cmBc8aQg_N}cPBL zA`jC?sdsOgB7x+gv&m(|BDsa{snIhoc5S1O&2>v&;eq@6#qnR8Ceqv(iX5%t}i z_kvDGs*q%yIqX(~&-(XN2@WVtXhZM2Pz#D6emA*m;F*)z`c7Br>*fZ@fPXNO(~IK! zuB{v~jed{S|I08w{A33DCM-XHySGI13*PI!d~D_xXo4?y81h|c_2S;voUQ{gB}Orm z_qrf?#5|v#c$cd)LI0kLIn@vQ@|g(tty`&&9AamF5@-cKB%SH2SbubSuXY6R-pU*6 ze{NhTV%AbWlsXU7`O&{P?l#Aj=!~QaAxit_IQCv^x35TxJxTyPkDHL`oU{hHCP zEN?LvmzsaK``c>y6AmBZtUYikI3CxtP;Rt7@!#3xr(Zr=$xk^<)WB|=nh#;Wdv)p* z+wmCp`eBsvYtF>42_op*YX1*s!xNVcJI4t*up&+Y+>WQ%=vG+wj1s&GCU#B5!6Nc6 zbN}?q%^tZ5w&49&MP+3sG`E9B@V@JV`~Iu@=ax)6W!k{wNDa2VDI+ly) zHEh&Qj+Q}F)-4YuP{6k>s(9#w2QCGE^VI(rZq@&b*Y!UQM|}(w6i!UwOaT3_?sv+c zkYZ%-De*A2LvMQaoz7!mpsyWBO||Wx_s`D`fG-wpJ#@D3|MOs}^a~C1)9?bPq%YNn zu-Z+HdJym{7~w|&qv_NKvb`wp`6I}ml{65PlMy(q+EbS-hf zN=J~;P43Bdf_?W@I5^tc=uw>ydIC{bRD3}dEC-Q6YFUIX_E?Wm zZw&*cX4`t-&Q9Moq>E$wY^-zW0lAAkxSpOg7_eax-2Ra_dIzvXtBPli0`-32!iPvB zq=h%St!lNPy;88YG1&eQQkrq8Rb38KW1y=up^5 z2v|+Ggl*7(q;9Axy(Fiqn~8bgU=eI#?;TTIl{t{HQ7#X7B7L&56{VT5Q$~UiXX9$D z@*2mZ@?hiX(S50s3A-%{EuXWL&xBdqnoH^>l)fuIDWM7n01h{ykYfa`#+5mW)+pt# zh>BO1)1IR!Mkn?u#pW6IXjH3(754Nf%E}#;DNpxy0MuhyLsh7~wbrkWr!6s8;+oZ! zn}Py=wKUsX6!6%TLO&o8B0)@Zn~@z01EhCJSS8f2`pc;gJr-5YP#zd?H0!n6m@^q58D;2F_Eu&Q*zbO_t;Z_>V=Fwp*fj&;*G z&hH}neN|C&k>4oJO!ZqYm`e|*-ZwpN1d)#vK!_I}^wGbc?Riz>-@7txM6RbY7i zqUM*o;S`5sU8MnQXO;|q=`e2;G@M-Rt(q@<>oxhKeh(E9ZqDyel8zC%{;Z@K73jok z)dW3vZJWYrY07V4ZTaa$u5942RAbH1Wn5T3SvJ;bFx9_D2u|5nYGkdDu zWirgAI+6r7hr2X)w7v^%KKZAyY|`IsDZL+WdA=|G{&?F3L}q}f%5SOvKMZz;{P`vk zi2DHV{r)R6{ddQFzeR0}h==FgjsZgV(nBDmVtH^=eLsXN48&cZl{{gH9t0kai2xdJ zNVuaAh}d^&eplK>LrM+f&u+L|;@W0}p?`vhNeM5%`GT zkNe&KbO|m{{vU6182Bnd(|?pki;Z0}_o;}2C1@a)I;C0<;UH{xKQ}|5Kv8!{pL{K` z=4@Sr!#l%tF^qhgmfuI1rd~{@)$r6{WyJ&9r)s01?NR(ld0j~2J|+&_KOg{n0O52c zFVxn}&~Te6E3!#coSq{5{_L>%rN6B$l1xte#GEQ2k8|H>A zEtuxq5>ve1Izo<>zlWa~Y^h`ykfrLGP5qaAKX}@8e;ROH{j(u*(dS~VnqeHdBsFCF zXV<0!Vi?&%vT2GXrF0cV-H;maIK|-819yzn!qIv(#7>UNLp1 z{CCxYvN7N=6#{%kKp8tbrJX-y0^>@H5&W_qB{|;Y8|1e==p0gqQb?uW^VzvJ4b%}! zoDc$`?_uNv-B)@#b0s7UYn8IZT3jA|SzlxYPus8O$_u0vEw?TqSQz|hU+DcI*;v3u z)oA}|J{DX5l~T?sA0AKj+k4*Rt)bK4)%C==t98||jlR4qg1$G;kAJ@s5S^i;qCgt* zzNRDU;prJ8X@jXQP!7%uf-xl9)21oPO-(>7UAL?Z z#n6whF8NC!M-b;34qmFEp+36mX$)btW`&f3yR=X1G zeBE*A4!Vw$1!2q@+U8Iw`iy9L(aP`a)PO52_0Fb6NY`Lzq&5azg@mzM`^_Rqgrm4w zfcVb_JYaus$0|<7rD9r?^&BlJ%5Hbre^hN4OJ?No7@L|o_rEg1wHLo>!fn$}>q0FU zr`zhKlqg_${$jMaWeeO8a0vQCib;Ol&~`>z?K^04oP}9Y zM?LU;NnXY8MTGsbg{1WUZteph+41KA6?l9orI|hpWZPf2d@m65)M*PyTwkN5oC5Yf z9H|_&5W;{)y>9tVAiqU>KBAkOu)pkAWnh^D)+%%7JLe02hBQn9=NxdiKb}13`(^KH zp7wmmFJeLc&mW?U_RsJJ$a1vgRX{FR{JRdb|8fVqZfjv$?a^Mk0t*ThMvpG_yTMXV zq+R+IPn1|pkfb*TVlkv$osE(71$#jd9#D-UYx5O*( zw|wEj)>MP7to)ZU9?ZTNKB%UmM8;@P_ls+L4Wqd%i+)L$eO&!<3h;LJ1_-G&i`RT% zCcj;!hXrXa4)lv@x?EutzTR4D9vur-3)I_S)hgv^Ag+W`ds3V4Z)7jgs9V&mmqJl( z3i1x*9t5A58%DD>;7SHeE_NYC9OE41;ax-3SxZ)|lU2}%OO%!bdxZFSPv!zII`;Wz zz^MU{Fd*A0pFnXp(F@WvDRGJR_pR3ODlfC%8k^Fs+G^lBw*lGAE4s%=fzorsyu3Of z!$w<58a{6uyqEXXynk?+tBzhGD0|YP%|j+~`9{A_aq6=jpBfx&LG=$CJLzk%3Y2{; z$+{CQ4jzxlJB^?c7k5b2{>K}Ah@WYdv{LH^-=(G+zkb6>jJWQFuin!EP#i!Qx=;s; zu}_bpPTy@F5syJF8-l-dE5iH9?$HUo)ZmrnNM2 zd_3UlLj|iUe+1>ErO6LOgRv&=+s59tdw}-3cTdlwHL?8Y&X;-N!?Y~eGCCoaaI4jrmrdl@Ja!iD^qqG1c|FFw4Bt<7=dm`7-ndeXYGA@DjNrc=7UvoOX2V}{25BnZ`7;D7Td(TaY zb)7;y{s=b8d49WOMua~bGc)dUW51f?a`snB`7h+8fkpq3uJ})8wEs_8y`Q_M06L{m z?qeQxIb`nSVb;aDsaQ=viR^Zm##${cVtIjX)Xd z28y+-NjuN8&--1#%YCu|^$DqEL<$Dvww4r79O}B~jg>xE7{GJvPQ(>*HuhTO#y;>X zw$RG0-9!l@e+ce$ZZ#^3`?r$Lc!8%g)~(bxCwjdCw=k{Gf}DEe^ii!J_$g(9Qs2cr z#1#V`NNLKfW+9n(Fo-PJ^+b zThn2AoL`b!Of~iA&{jgc*b4^j&oZ)6<1yoA|RG;59a9m0+`W9nBl&1`ht#|-dhTrP2%m9`xYV>z1)Z{n3Qy|-oBUEZ_I zbXn6rv#BF{&KZ!v#sZ%{rmfE%6YHg*$|LT5jK{Nrac~I{Ow~$X`Eu z?wt&>ZmEBm8%^^}&v?}O!I%skBApLGVFTIcHkCHQQfz$f+#|%$@9_~_t*qsCqoF^6 zvXpOBLMITVjGVAwH>bQq6*ei;*!7rjY67Q%Hzzh*n?#F&X{@t1>!QMKy*J9NbF_I+ zaZ@~WmH<@F>7lJZm&&gnznjETRTTB_MnDKmZg#i{ByhRBMCpiTdepFI#%5GjB}*J> zH-R`rw+Y##&XQoK?S!ZH)_U8d(4F#AJ9G0nD?!JG_N=2|0uXX03$5=nOSLE2`i}1k zDh4g?o(r)15)>9iDGKH6b~q>s`_Fbno^t`cyh#UJ+Co?0DbgIk`uXs z@zl+Uz0Kv8V<9w#Qa#V9*;A6W9uDJVO^gjQknIrE{BZkIKASyeNM+$8Mvdw`y|(7@ zb!nfzyfK*}Qf*uSp_X(R@n{zBY0|jRWZ#a%E==f>@SXzY>?m#6K;3#9^<{t4_GV5? zl@qU$q|+mJ_<^Cf?PH26l-{hzTiTAW_1*=)=9g^RIN2VNm9zVd zNG?)5!dJy#j-+;1b#Vk%qkToq=XXKT$Gb{N8qJNIw2-z8Tdmbv zsH))9-bs(xr8;T#6x!KEL)dPtD+PB+;DMVju%-DueJna^eyhG*ya&Ewi0 zxiSj7Ot|-`mn50N-E8%YIaIYD@NrH2jg%>7)~Y76nVS~^3FxNsqqFsB(H)Tp|Mm** zKttB13@ryMDTcOi4-O#q@_RL2qNx$UMLRE@Mw_NS(@TDA-1x965wPd^zy$Hjv)t%zJ*N>%FXTnhExTgoK_`yHexsThI>U zh8S<6EzWQ~^jf=OcayrxMRte5JeC#gfP(c5^Sl$(UI8()ndr=XWjB;hu5{LJ zEq3RlIY~g5w;kmgXUkZEEQGgrBT80#(CxM>awUZ074!N;st)QCRbx<~RB?kg5=R)l4qYd~<2Z{3I7XMlFGlxKo(R zJQ&%hCQC3^K2(^6qSI%kZe+0ACdE*vrh-UG4j^X+X~|=Zz;ojGcYN#(&dOQssi+8+ z34Kr8n>$CcP4yq?n0>X)F!nl}gYOJrHX^AXDl&gW`h&?D+~4K}&(c03Ig$3Q2kk1A zY2Bmc7aP~o$x{8DC{jKquF=EGQh)Pz##_4Qamn@pjAqNux@Gwh&+t{!K5 zGS=GIU#)^?L`oH!np`u7fkY(zgyFUWiKTgef0WPoD~*S{@Clv zXBM;O6t0YUQfmD`&n7w|N?B9v{QZbO$E;Id7@zoU?&S~XEgn2gdi7g+uWJo9iWh9K z;>aawPb<{qd5%kz8tV|vvWm5Cm#{Jm%^)OgqR&dcW(%7;8L)`n++D$tt?~D*f;c6H zg2xujkTWA0V}iWd_)m$Ci_DrH>zW*FT!}eZC1^(Z*(AbLeUE&+%4q(&#rr5v_Vkmd z^JXB1w;6FmY>ZC(oNYAj5*DRH4uaJ!C#K?vl@0|DBIu!y6R&TsuqxOESw{zsZ56F! z9;UIqwp}!~e4Sr6D`U@Y$D5g&wQ#5-a(QOS9?PNg7j)Nu!vyLsbWDldbGsy8A3XD6 zr+W}X7&{5q)S)$ISiG`3Kef}XIiUnsnBEAXr4V|?u?mdG*MMKrjUT^OLz>(*>eJ!i z9rpW1%w&%1eL%i!{h&kbA+^aw_!E0al7HpR;#ep^L@aN-4DHZ|oCwq3<@ge3%@$6d381DX1SX1D4~)Sh2XFkIH-qCll1FFD*4Ha+Bz{F!xA zYor0TZXd>RZR+Y3lGgEA*);TjT`rUU`}GKaug0%=&~;6mOfawuIwXEWq3nJlzT`4Hnn3Vonj6z$Dr;6%bBtL zW>YTz{`>F6_n&@s@SNXWe=u5v6*t)LGhhZ<(jD23AsV=)WVcbI z_pb6O9a2;i#$vOC?6+Q)5hyVF=TC`EpHweHjWQ>;n9=L)cPK+5%a5U+RJ*CO{Ra1H zf-3?kG1SQNG{Rsg6ON)PhXB)=!8m&rYAbOz#sEzsynVU2%Ncn zJ{e{ZK>IS;oL8gZ=h@=7w$v*s5bl@}u%2_bF6niJOP%qEU2-Y{q94}Kiv)@SD~p`F<<&0`zm zJgqb6@HTmwE;^Vn@_0P5GrUtMWtvK= ze8;?+W z;K#7sH8=b{s%4K32KqaNJivJ7>H` zR{H{9$_2xZ_Nc1XSz6IC>q9XCN5{458v}YB^Ze^|JNXB0q_k{b7qd+xjyus!miR*= zQivvNOkK%oGDH81E70uz?!bB|;lOSb& z<@=+r1|q)y>YIPQlJv1u39BFd{Q2{{I2Y#s;O#BL;@H}>Q6fNq1QOgyf zm7((=-^X)|!2gAbIqnwu`j>l&kW>(rz;QYyMDgz+k6*=F%GYS2ghV{-dJv zhx^utu$%;e;Js2eQuvu?sVgSB#A;i7fEAdctyj!5{a=bkMo>`@@K-t4rz$s=uiw1c zdDk}b<6Xs|o7#`l{FQ5(SASP_KcYz}$x`{OWXtWnu<*ExZ~7NI-Ne(1&)f2C=bzqw z`(;*rrYfQ^zB_z~7gmq~JTCqpYo>$OeCP9k^}o7i?!%!@BsNya5A!r+c&B?&UlHIV z$8lqzx!z-Il2QJnw|wr>1<7ftaKB9PVZfKgYq{;1bZ(pnPgd<~m`;9p$~&iJqQKll z@^pF1BKy+D8kx1ujmQaiM%`RRejLqBw{p86TxwPIfAq4#L+WUf@#WoC9+_s+CQ&WbLr!m(`PGg zc@GwlmXozo*vJ;{e#90twHjO&E|S}h1p3H%dYP`|9cr%;y>perH)(O)zxjl`uXRR#=SQ-)}+iPu%TspXsVgnSf;xtE` z;@(2NEy^3yw)-7sD*t20Xvr>Hxx-4(?J&MMtvJ(x?m$4{;64W^*JN*{37&63gC>h5{z zNTB@P%;54(s@OVRxy@Za$}zdYqd>+CA9Ij61Oa4I0VE}}>Nj`H3eYVN0Z{$k;F zcvFmLA^T9S@6>j;<3@7ugumvYV_6pPj-zbuqC4k|0lem95zmevS2BAvGO{mULA?9} z9k@^l#lGQeftmm?)tj9F0zQ(!r+IVlB-~}-Lx$De9be*ew(`6dLl?>qaXs(7c7($&y9m%^}7|>KwaGWtVW0b!vc@ z!uR2s>H=@$-I@iJN`cHvi1W~qyfONPb>6`ZhdgoO{DaMJ>}tcN!^1Xr2-H`@ecj5> z2J2pe%kS##w?9vmm&3QIu=3@aJucM^I_8t>6q-3W%PyAqoh|M6YH`-izEjTdIY_uZ zJxIGUy+JaY?@e0pwtHbg$Z4Iw?Q1XGD0Ugh=46oKpVNoekZ}GzVL!2%#Nzqj#}cpA z(($OUI?L1YSL(Te%dtRv)A}3m_+DbzB3p{|RKWOT@#M#{CK&CTQ#Kn&gEg$GrVb9+ zbfV%lhUZPEiv()Y>(VwlJuOtK0z5X8Wb3TR1f9)yVbHh`PPJFA2D=(t`ETpApE0Ot zU%tKUh#mos*qsPfPS&e>X{sn{5Sm2u`bw0(V$W-gZO`<2BVttHbHj9v@z7G-`W z#Un+sb}V&gXD2E@&t9=1EuE)L`WdxUi8huEf#0<>9=rlQ!3KWY1?1)LCzS zDhR34Ga_&88bp!7;XCZXZhCsNI!WXLQmpJ9@>pOXiUakFBm%6K`XT+SI5v4#E!dk< zm6XcEu?i${$ zhW!?g^tn6uHe9DnIt#V6Z54(?c~GC~FX#Kf%bj%tHn3lglorn7^t~WZNr-MdzUN|j zJ4em1!C^vHBmHV+^h!%^nn=CsB3M?nRNtq>+Q({ZV1{OmoxKd~4XsVq+;frkl$Yy2 zvEB9a02WjlE^#bRdA1CCwF**tJ6S#`0{A#e7O%2D+q~%V+_RiuLQ)|Ng*IN?2i;YK zboo05A;!df&`k>S%jxOdB`W6Z-W*W7)AYWJj-Dw0BxthKeDmOFc`Kme5pPv*2CYrk z7J3Df9g(@)!JsfEAe>%yJj~u_Tn2+pC$ui__vkJr*{$8p)7PREPFdeh(J|zu!=lXd z^k5O%DZ^f_h9#*Rr9&h8ORY;r?3$B}H_uL^qvf@PyiVdV?%l2l2vgK+CZH0GiS62yyVKV)Cc(d^}GPXH#0!#YD(+{d1aIDa&JEvHMV-(^=06)J5ig zXC;J7tJ9)4T7J=KXm=COt?t2lYn@sn(S+Q`_0VF>20B6K0QK)#eOm;3a62MsoGA-j zCh<9=Q?W_?a#30;fcur*9g&GaWyK&E10C^=^z43%{^_}DiE(L1w~fZs6e{CWhJkV) zWx-D;m}G}XoL6NT1lPi+`IC*Y&9R$w+I?Pgyub~Asj}P@`b{29 z-7@jC7K754J_`7>4dOuWzcF6y)k1vI#100;bM~Qm@%7$0MzhP>fPu|YQ~T(O_f_f@ zq=oN-_rhhpM&3K&YT+!hgN&5>6@UHq7z6v;T`~clyX9t|5gt`l0oWT}Ry+MG^b6Sh z!ZLT8+)ZEdhyc&gbl@?TCsxT+U9+1okM7cg`=O)2ljBS9QiB!+ez6Uy0G;t(|IQoKYiEu56^wyzQ^z3Fn#3X*MmGv=2M@v?n_R`OuBaugqw9ibyF z@}T75kG$b=+2SAylPvUNi8PPGofsj$vl_7Pa|kAr^AVLRZ);vp6&xkQyZhP%IcuYS zs2rgL4xYtcig;F@Jkd%&TNx=%rkK)SVhc4z~`-i+v;^L(mF)&>b_dH`SPHOC?V7P zQc~DFc6qfczjdaz)rH5V&voO?CFYpvwpz_9BH3*9q;ACnG;JrVTn$k-&1x>M2P18( zlD*hC!E(SM@p>QO@VEyCKxslRat_*lF1crNCC6 zZuq8F<{PY%M)^V~dJlSKdeYeDvzA`_Tx^Gy{Dfk^ey4Zp_#rKl=C~pF5#CqHvVhRr zF*I>B)+c`xr1A&OY!=xr^h4OjPwboZiAx=rEI9j1t*xu~?OZVt8hP2_(#`ZP)tN!*rww|TO zjp+U7xl12-=*XQpaNV48#!Vq$Y=*|--`Sd&T78=BDSLOiGcW^s-*a~~fl>9^*a=ER zjjN=9`^Ah4JqjJG*oMNm=J3{0o?5vnHe5PBfNgO4JU!-o+j!+%&AR+r}AMq%~;$0#45^wu-waeBoO1l zZ^JcTU_)z~NJrr49D?4|yiRr5k5tI2?RldS4f5b&+Qbo{Quf|jHOPmoElC^*!u$!R zomxEHw)PwT_R-XBb%k;QPonF!2kq9{xl5smNb}vq_4atRY3-4yxq{J)}}r z&n=Ws!)D+na{C?vl=pETRwj~)Ei0a`+VI= zI=71bXp~a5BR_^TplTy4sbx1n2RG#&GFCJO7 zq$_gi9ZZYyK31&&!eYaG+83=FO?qc}W$}Be&DLCHx0QF1-qO2ms)jxpSeBX!zN}gE zirn1A^0(Oc6sJ`sqn%lO>~K7?kCe@Sc0yh?Dza%^XzLTkN)&dE9pc`xZI); z@0#^)kmrX7{#PwMX6)?NyKXM3pZx>kYcHCrpqr}NyE|@GKHFp%2dkCs5iU*MS0T+2 zZbZPRu>NiFt3bTEeI8Nj+qF$j!ZquqyROO!oiM@LA(!>$5t94cO%0mxrfo0hASUex zyj{*kA!G?RT|BK3CMmZogNF#S1waoIHF_o6*=SBeF`4VmW-2%h3ORoN00pCi3slsNDUQEgi3eYh z-lgp7W!F)kbX`56FhRw1=h4FBd_NwNm15xh0 z`v#)Z@2WxP`qQ|AFSVZrs#I$Dm~L~bz=%`;Hq3xb-)Gv5dRov^WOO^Gr4>)tnIO*> zf>~!PdrKldnx5<7+s+5>Fc>wN>)u>EPp6T0G~h!6D%Q-iy$dv2;Hm^ZFNHkMl$0-%N5YDM)2WT{dO zm`0(>@mn9IMkfCTx-f1W2OJdo=~X|(%7RI;ay1i^>8oSuo8S|azXPM94|fs6P!n9D zB+RhT1RpmJLGrE2p5wWadU+Tdn?lv610U|E#p@vZMwRVGE)hQO#=L+}ZfgIfybi1V zQeK@Bd|Z#GDt-KDRz)!-LVfgK5+;LTDpQA^b{n||Vb#$omo0a2vLUZO9T%?_ zmg>I7g9)lVd>9xjtkh7g++DiM8;`CUlu^~R*zr$wyj$QPtFc0D** zSa+y1qsu&Bw%`mY>&qRbUARHSN*k?X89Md5`)7 zRGQqvExgfmtR4?*B^1M#xv z^Yg^6KJ8C!CKvZ9@VJhxOqcr$X6}7ivVGL>_%IL33BWnXTPt^cT5}dKBk+z=pcPN^ zbP$|xIC4{5PU9BTw_h!^b24CUy3{_@-ocPNZI$+Gs$w5XN8-^n#Mzf&Lyrox)MC<( zOPlPrBhBpu-uzp4bYkVs&MX{!BS1Twapog?|GfCRb zk|G7ZJ*;Vge4fye2h0 z1lGN4J-pw$B(carWqP-O^Gkbo)4iRUiOSaA+F!aERIwj}3ko~-8grCtOD*gEBR_XB zw1kFJ8m{|z*oPl0T%GIafW_2XtM@z@7JNpM={8l&>>t)OpS=V$_&2V-ux1_LhKJ46 z#k&oX_;T}{ZpT>gX3H3VmIY4>=n}o$0VpDp?Q};Halp^00$RCbTw(d)Kg^&dtmt7{ zy^d;r%tYZgsrRUB?P#IrG1Ay2DgF&dSRlc_41}cClFc!Z9-ZE)qv&7^IeYtupUrLb zrDq*D%QxOWx|LO`N=NHHKW!D_NClNV4b70KLVSzY)0;<~O2Y<3URZdaT-`_ax6a=j zHlat1GAumQ$9I-M4!Ge|=d$_JE@e1K@x@ZRh5vq1dNnh+bXNEmh2Lt8?Z=VdY3X%v zGF2%27l&u$!~?HET}H#U@aTpq{?>%y;{0$Rw#RlEM|BW%BAxMy`j_fk8~ICbraLfM z^9Vd>SY772R4x?lNz2!YXIkQM-_v9s=1z9BAy~pY(qwYoTbYQs--^tY zK>5n?b(BG(Xd|%-JXg!)M1;?MF6E!B=R$=4t(HRv$}ymPL*WAVD?@@=EQSMCHl7tn zWL3{fE)vDz;;6PDYjR;JpFT``}+&( zx9Z-#Z!6|aNKsHEXC%eFjW2DI%$DX9Mp_S20_^Div~iK?>iz-WviW-aK?u4>1W*l3 zbA1?arx_D=P>#8;2Tu+AtogWKZc8D*|9AT=wu=2Eg5eRKW8?`YW>gE-?Q=K;O9@2e z^Fb|(!2H`bfL^JR{Rg%Ch>aN?;6RFdbW2+=AoUMZ!XW?c|LTgrjEE?G{a0#3r=P!m z%{hE3_+$cvbk#t{Zw&*{MXLozD|5ZW4r90C9+S*W|tSZCMB}RCk`z4+BNoaP! z0Ymo9R6^Qili$YtD^*Q2RXonM~A)4|`K!)xOy ze0*etk7g?-{Rry?nH~c_TRxlrEdS+SJT`_Gd5`rHWDf5^gaY;>HlxpWlcT@p!F!G~ z)n87?BQ|)E43uv`4y5i!2ug%kiL5`~ng3j7ZDh(IyrzeDe(1 z9Xr-yQX?Uxc>F+#*Ru=DriK*XnEzjQJ}EZXFDmR@Z1axxhK73&G%phQ{DFsOcB>{i zY|mZ{w6w&DFS{K+(2ac8a$ve8!^yq8?^5L#s^U_?6&2S)x_>s7Pep&nNUqJqgMTtF zi@{(~koRH7=sb$8Xpqyu26|?-y0JxaTl<13%alEwbANheeZOsFzx;S2f{qZ$&A5 zI^E1I#~ZkuMmbloqF}AmTcxV{@q>sk+(atk8+u@qO0-Y`J7OI-7W9(atD!qaQT>Od z=ewV07h*WpPMicgCO9E8Tt#Y#sw1L}&BM2;Bi+|a-JY&`bXMYQN^kb5$Z>K@bxM}| zom%!3$v0$Z6KLZD>6Yg#Q~b?u-3%kl#Z?$V@2~^!nzP3Yc?i%z)cX_6d^o!D$%d6ays7RPt6d8Q?IXTm(OkBC>6uY0gIj~C%;{?EB8)~SV1|>^K3U|$ujXH8aq5LTgzWI#3Ss>ObNd4|E(lE(uuP&+i?zlv1 z;`K>s7hsEaeGK2N|HEnXxsaC<5sEj~PC!1}&a5dB80Oy}^N~{RF1Yf^+Is3~}Tjeac%l^`2+ZVTHFJ&nbgrM&NbaFFA6VV=hn z{qxu^=oyCCPswi;CCAi44a4zn<|msfsK))9ndUBWgWYLOc60oZ8=LmiDrgJu2%P1N zt)ar5fU3f!edQxECzL-+#W}Tcq^{zqmF^d5=2?d4VpSE4KaE&4;>2qd)RKr_%+t0E zd=+t?j(jOMu*t}S;bjr;E-`1ybjRHHR+PtoVjD|L$j^V>e=2+S-5|Rht%NbRi#r&Z zcgeZ+BMokf`qI+abExIq{{8Uxh={3quO+@bENTT3!q{$8H@Mo;eV@S`xBvV?9L)o` zXfOO+rj;}46tBwTM(|FFb82AcaPJJ9DhF2Plu3G(|Gq+|;@NEqKJ4iVUye49#GDN4 z5Wf{C!NJ9R^U~s>@lz9GRJYQoVk)1QLm$-TCh!kQdR}Kcb0q~nn&{B3wM4dlSwBZA z27MLxrlB2csO4!xA5QRuVNN2D8qMplLB3guC`g7U@s%-iSAd_~oEPp&+Y<|cLP{y| z#%BFkJ(kZ9YbRu0Nm2zoP`&5c^8mHzEtPt&9a|S>3faRxDJzy%nh>oft2fSJDWQ@$ z!+U3Lv`rO_A|F8Y!_TZ5rbYxuM0cKM+N#$K(+hG`+0!Gj8J&I{N(Am0TF(Q&eZclx z)71xB6o0k4WgpW{=j|PA{+Uw|{%IV3BaRISe`%S5EYkQ0HSWB~J>+9+WHKMxzjyVldhw5jK3uUaROyz+%q}U=JiedX?Y(T zKV;-U4B3EY`VNVSz*`!X=mMnJnYU(2LyRwYP-400TThjAWQ=XT<%Lh2ku#>*G~ri<*iLt)E5?8JuO{RF6rL= z50PtRsEojmF1LPi7xLaY0*flxPf!SU9g|K4OW)>pXD;IpNCl{%+bYwO2Ur1u9e5Ed z&G^V9(I~Sba5@33)eWzCYH`bAGnr=(h(bXEx}*CRr`)hkrbc@kc6!KHdO>}F6AJ5? zZ!DMDW^M$+=XpgJk{lV&rWq4Xyb|B25TLKZ#&Z;qWqYceUz_G@~_WY9$&OoZJzIut!nEqjWd zNGDNs5Hmq_uz&n1c`+Eo9Nb$3al@@sGg4OWHM4xTVFShJiBghnF4;HCPc9#(7vSik zL1yc6D`-m{%7Z;IW5nlFs;oVkNZnf49TULvea)Yq(1i@`JO+m{gNt#=S2! zSE&Y>wxZ4NF7E9C66c~N#eg|ISzHPVx^l z41XKnq>mU!s`e8wv3(~6_W5QI=~<=nZXD`_nrZdLR#cBHVi&s;fJ@t7>yHyqj26p> zdbEGv)@z!)03jnl=kdCWJbpP-jp`iZvMm-010dtl=XY35XE`K$ei#ryKsbNT@BF=h zfaa$Y-Z$VRWSiG8dcywNPXL^;A#I35;*rGHz)h_bYehI|Vq94Us(By(a!dCdO+Rk& z5|!T^j%z-PRikb`H#4OYY|*b7*d5IJ227lNZPh^aOwPXl8&DIKAtv4wCl$;amrO?^ z$+ZdP6Rf=|q-{vjXI4xJBwPaCo5GCN6N=bC*l7nC;UH#zX`l%%g)xrRXC@ho;?ueH zKd=xEc`&sBQIWre4s zZuw;$aimUI9Ou{DGpS5=C#0s#3=OqywYSD7f-k!OdR)u5X91zrY)A+h!vzuOn3s(W z2Mx0f5rx4(w+P|ln7t3^>O+-*hRsHLayzg>D@2UN9V%N1457qjCA+ba~N|~j;JTpW$vkrKqf>x3w;{z zADzb;njzb<6YIaDRxfDEmDEWS!->QJ^lE-3R2v-O;!%p7Ij)V;fU=utT0S$V1EjQ` z>5RuZVwQ95$+YyNL0um_;~}|MCoZnA0AN_k41d285Y2B8yP>5)Wb`EbJeLBQ`p{d# zjh8<{Zj5px`we%M={T!-4rF#wSEy8#eGosUyCL)jV(fRALb;Dp&S-2T=?LOk=v*?m z_A*vXobh^uU@o5O`28xwKiO@`krT_nyK@h!s%0!8onz*c0XWrcKJyiBgPBZJngVEt z)EMmc^vQofK1GH_Aa$v{Z!mjF%YqJZ@7u71l11cB^v$}~MI1(Vsrtm?fec$zF(xHz zUaiVv_{`~0B^&Db0zXozg?$svagl5UN(&H=JR|ynSG#LMZM+HhU41F^C;AD2fhDYohBC9ylx7JgM_e4&ZBx7WPqPuS)P`;|>;V3e~K{erf&E zvuhM#7J%9%MM4~xSTQ;e*9y-ZP1uf2MGaF1*P$d4RJp9N!{yI65iK9Z;j~Owg=b^` zNpUi#Fiu@P-2wY)uX1=e+f+Ebd&uG!KuFSPH^$^VHnJ-kVL}t7Wj;BDT_Jhcs_niq zie66@m^UBLjqy*d7WAL#za%?%-bUJD{d7T_+Ggrh7u#Z8z(YeAs6W4$jEJJ{Z^pWb zi!w-Vd^~fP&{ek>oeJNr%WObXr>>nIc@AZE>gi_a14Hw%J1Gk^bk8bau*!PcXHpUm z9U=7-7YW5dNLO8jb2uI<)SnHc#`a?g-{tuJUP4`cbB{w>dN7v6gOea{AL8GgElc?D z(VFm`R0qS(Puu)-qnK8tX`($+9HMV-oh6SU9tVnCQ(|AOtwx9Zkhsv$a?Cyo6;G;< zuf*$E9t~9Zj{X9K5m3lrpVi z@)sfIWkIw3O%ul=)BD73L_&DaCB?gehK@Fgh}gEDpc?i~AP^&G+$1D*N<8Q#^RMkL zl0GLW8~p2}h;&JDIEuk@AuaU|1kTcgVPjqB0a`)8{XayAM=ZtNKi(mHmU<$n z7|_KbXYS6!Qul4Un6j~)^WOyeFCD_FvqY(W$=HlEDb|afcha)5CQ$Jf+WWq^XWGy( zo{e)(v-C-%=s|tM&X>5YGKt;fhPlczTx8x}Q#(ZWc9b1xWVrG5q+uo`w-fpSX`Y`m zy3Mr8ZC*UjKdoC+Ka2W(`gkRbO({`-eQ*e!U9rspKN(OKhq!HR-8do=H{_DHRd2-G zo<-Xt8TvHoIg+@lq1<)X=brX^A|kX|Vpsoka4p5>d>2A^{-qiyLp1V>(P2Xbo{je=5?s4X5l@XQ<*-o+ggNt;pet)fVzb zD5jSU5GK}AdSwj!-~tTAcBsCP9V|*?WEnd!Jvo!zo;UEn9ieRZDkTl+lOS^ri^WZ* z%aFunufKLxRz?q0Le-WmP+}M)=m}ygoE3YV@QaBk4t%@j zFChO5=8Le<;~dx~02uhmBj-9T9rZJ&jLgkRqu{)F#*3fbnh9-zc!RuesQ`vWtt+SQ!m#Mn`KCu%KgVaVx{Qgm6(wSKS6@xO(*RR22o4G)Z$`Sk~NyV{V?hv;M~?TR{hG+>e<&I12Zl zm2%4G^v(3zP?g*BsN`o75?+NAOIJQhH`r(4P5p!kia8bJ#jL21FO(ARY2?GzkOX34 zm4-**3vm-G09=jUa0eL~0{RaY&eQ^>pNnHZ0j;Ie@vRIxuxs?1qG5u1Q90uS{rOPy z%LV`HaY2@l>Udvk5xRN2XO1ZA&=NN6ql)jA;cz+(=+NgUIuBOB+UNXDhi}*&Nw4F& zz6#@W;q7FSMa{CsC&}h~jh1tCvrH?KAPENEl1~fj?F;KL;x9|wm?oEl6{es>6UFXY5LRYGxICoW5qu%?jsi0?+Dd&-V> znxmexBS-A^D7Hv(b!UL|M^R-6#}bx;m#w1&L1rxno^P*irDSn&q8xQicQ9;QUbKuS zYT1aE?p^s=xN*|gF5l0enNKC*13>4xnJ7JoDkd)*0f+8i)0}I5$cPoTCHAR(T}O3% zN*sq61O!YwzMJoPo0FA}hBfk+lL8+DjCBqmAITGgRf*#*a=`uZsG5;Jg>IjC;N*nv zmyhgH$Ley?Ss}BJ4eWxWPV_MD6gW{VoC~@-^EX|l##lQZvxIDA&4mij(6xCOvI{3C zY>`(3lv1&T&wspkb#`{oD(`An9mP%v^KWIe+a*N%O0tgyiX@E)bGcG@wL_nnfK!1F ztmb1FWV7WshCL6CFN+F8K!AidDp2;jX)XI$^|>)8?TD^@r)18lKs5`eCqkKS9STAV zmhEs1zOyhtIqG9zpXyLzZupR#kh?;9I`Eu@t$3|K6-5Arnwgz*^q?|91`vRsj6?Yr zEl3UibdFV`Cq15wo?t~oE%=yjrb{IbeV-6(TaZdsiy@nz7u%kx*;R6%iW7G;h6)krpVXZDA#*KT z*aj2#Y=prjpeW=9eYr<6JE67LPyVC<^I(HoGS!$_$0uGL&8qDgR5d*I(oYZk;6xfM zzI8SKZmu0O*z#K7zMhF|^(T>@Fc#Xbz|ut9ecubiJX0zK=vTfxN!f_=(IkZP4-`0t z%lx3{-Bf)D*oQ#-V^g{I=y>(3ig%WI=x_aN8a8n~A3cV${XhvXbx0pZhcQ#~195ttkCJJysHG?f=GvSYhB&kIXVQ<>s| zq!!6LOX#vSDb+Of^j`T@bjPSnb8O~wZ+c6*j7LtmVxy{w4JrugGI9w}Xy-;Cc?LWU zD(W%F`e5gOnw#y#Q1-e0?e8!$0%qOL!avZ0eU3o%?u<8*Omd`0qV z`jtF&`zfL^x73T4_beey7PyB}boO#j8U7*&5`)2x*!wO*3*Wgmw>P&VQo=$VU6Ybr zeJJ3o!>ha@w2ni)+(cjlO$5F1mq^#PDy-N?@B6=7VolR!y<-~~ALqhF52Oy@NdofG zhmV{flzrUJDz${%y(h&w`B|E)Hn_GP4ZuggtS9z;`{7Y}sS^d?=-SJOxDX)BPFEmp zf#;QKQ#B**ID#$d$A}`)%$ZycRnBNxJEXXZ8i?<8W3a5q7;Qtw8;46ueO#!T1}ZkK z9=b~UYvb5@@o&JIjB2SPNog3jOwg-bm!xM>xo4mcm>^dV^@@uK8@Gdu=2h9+t?9Td z8_5;>XVJ-Moq*We39-kI@R~7uOpl*F-uysN6bgvDUct(>EeK!(QCv+-v0`gT=u&yP zIP0s7Nt1o;%ix%k)nEM!I1;f)s}WFRu)*j!QRTkwd!W7jXcql#QZ$hIwe_87M<^mu z_Gmw5CB|C_h3|*=AaVxWx#{QnPh(MC+%)$UB!8=?PYicl32H|ajfyM7si9|(T}G2P<{lm&}X{tbk)JhC+1`zUFNP6)++&w z599l-uWH2|H*XpTzi==}3@VrrcF$|2HAyi~tJfOnG%oRSycM2!%u;MTs6qL4B~!Xq z8K>s9=jV{iqe9t@lRWxM^QNv>psSyn(rrqoi;SPvo<&RFa|)Q{<`65MegqW7_{{s! z$4YEyi_3U4;}r?qR?^KX6$d4nsjv`7c`FX_4x|eJE7cj!f{{0W$Q)n7Y1FZDa#bY1 zK*!K@*`DYwoTb7M=w~W(IPs{+3aYKlP{pOn!t#2QJVp_~T1_= zKbXcgUM=r&zO3Mg^#Ku)ShI4g-*jgMJ#7{$OFWF`;N>b$pxk?^R8_yPnJZTm_Dw2Q zm*Xw*)?ri(?#3AIVUTUS_`At%4U`KLqlRz?Gv<> zvs5kFxgWPrc@5(NM0OF&@jV4u<{tx+lBBt*!wZ^<^DNl zdro}l$bU@8u+9>jpH8CWT94ctV%la6PoMIrJ&0YK!_nbp<%Sr*zwR{Wt=14j)ldJd zELA~nV9stkNPx7kPy5T-jCd_k5yxr#2@$JIP z#u9H5BtsW+RZ*)R&#PZ|Ub0fYeWHX(PA}n6EUlNA$^6=iy|1ISQzD~JjrqBz+@J!O z9UgaANH}*nUW5lK< z7wF#h-rPMW8~BZb_=`Zp_`C9in$Oo%dzVV=_0d@k0s2x;s@r zqA{Y2;_dMqTo|iYa9zsH*&i@#XX5W7TF67fNt`M;_7f6CWbJde4$J%$&NL?DQ zRL+}yH@A@yftuD~THAQnaH8xllQUsvLsY&+`3M0g=blF*QKD{!fH>A8@yxY%AKl*} zt-b^@94#A;w6F4Ds&H$=GY;9RNeV4_@yt1*$A7}e;LbYHfTJ%tU4K2N$4|xL%ag%w z_a$Q&8yQM8pm|Hv83*sE1ruPZLFP`GNN$WIJ~HS9+9QMz;-*Z!z-K#+uqNkieVol(det3Yz>6E1 zs*JX!kz(^iKBb3YT>hmw3i{}U{&Z`dZCja4nO$T<{X2ntn~EQl1+m}wVcOYkg9kJJ z!Fwuecp?zl`AhaKox&q4cRaPGVWA><%mE=!|B=tR?GW zumgLXq1|_gxxMo^%EapTiCyT6p6FxS@)^sMi-Bv39SQ1lyIrY4Ry5ewgRHnX*h@jO z=mQl&NG#GIoXx~s@4kkA-8EHv8fMHdBYC0MeDyurP2ZvntTAn~ttaaX8I+IRc#scA zDm8ZbmJ|S&BWLLPPx|y)mx{B*yewEkU^}ktV(O19d{bV6=%kNHMmnA#6tV8e@Nmv| z7h&v>>>P9EFG0v8jamDCW50XV?O#SoWs8OZgp?4pcqJC|3b;R4cpNH{aOIV zb&gs9k`(R7|75O?bbVxhF~CI=HkR9ws%@jutD(aN8uZtrr7wvFe#MK!Se*BVnU0%U za|$dkbO*Y^bjz;vc*e=F#avU{?oIXf23}BU`nj8l(K2t7wA`zyrzCy=Jx{qGmTO(u zsn#%xCht!pM)+tm`3X75&28Ux*q8^acli2o^H^*3NnX#E1uf~WOK&{~eJnelYrCo}Ko79WSd zq@6ZReyWM2X;?=z9PfM1#b-h5C&xnAYdmgtPs^d{jZ6P^M17FX!6|8ND9L(tv4oZq z7*a$KU%yvn5o{tw?VqTScxBpab@>9-p%D9|Tp@RJ8#9e8Y5aq16+V8b5aZ6w~+WpJNFjnVw;>ZGTi;BRGZj&9wrVnRa|=2273C3?Y{OV-egdLeH?gy*?cFC?Lzdg$mRc`<0l~yMyvAhBo4cWygQ|_z&4cFv_ z8KSVrYQ;Kz+@TL3BL6ZRo#hoMX$0lOv8~`8e{UC0akEuSfU7}=Co@-K?$MYf2D;eV z&O86Z>2?AbHqrc2a|!rERQjAQcDtrAk$~HqXgtuOSTFDGX*~B!`Yrz_nZG z7c=zHho3&ZgThlZI9kyW3Uq2srN-JnZ%91MUapcE?7xxU>ffVsu>o{wCid-ZMr*wF z6Y^LUeQBkyGHPCp)KE6U|Hf_bmQ`eMun2(aqPd!2O^p&fy;4!4Cl$C*qG|j*^^UcJ zRdoba#5_t1$HcpU%8Y|64{DcJZP{rjjt2)@8gdici88*1jn^FPmmMDQk2w7`=S?PckZCpOZhFCB&&R>OkT^2Zor^}1L3twsH@h!& zFI0qxGtAgaxDEl%@+Bmd{aw#W^;OCg2OV%w^WPXNBX{wZNpO;oSUV)49mya`0>PBw(;NW?Ps8s|^Q z*nOP)6{qP!fWV}9W2fRIaoA_XV4&xuToXNkp1nzP1o*EkGIAFB`5izgJv;=L&&>g| zXpEvh;RYlQX(~ttifHS3H#4)*XR))<<89h?g_3Ajy!}MDD&K>AC)b)WF`1fRRC|5X zLmnyNT0ddJ0p{(BG!)Y4*9a>Y$XNNfc%DYDbFrceNG3f`e(s;JAmu9r_F-n7-@3RI zhi58g~1k!W%Go_$+1GE%#%ONQhNFTVSPzKZN7n<7YR*c3+r$ zohNQYLRD;-3r77m$CbQivy}!>>*h+~-vRt>d8&9PJx{+|Kw>H8DOk3{k$6If``$kY z0^9OlMFe;_EgSYv-;c2~xVQiW6Q$ff8Qw3Jw8H{J(0kz@VWneWdQ%*VElt9d9N730 z#9ApdKVPj|rnzdPgszs5pnNut+`{Hv`ncKu@gF#D)d^q>o!#WcAEmHmL!@pWK0r(+ zl1LUcY)@UzcwPE2KGSvtpy1RgAi?VM0=MxQbp6Dm+%cpvenu^)7vG$<)f7%G4ekU$ zeM73x4AG3skIBulRCowNP!y|JJ-^Km5(^Tb^y!Ev3{iB2y)&H2tb=c*>78H4m6YeE zzWi}?AGb^c0QWqjqogBs`bSLAfdrZqrJHc!OqzSxC_kGzg0 zcA2@-i@Ys+WB^=$)M&j4bl|~HUsY*z1A0CByYuw8kfXI+jr4fLZUhNr^|8g7Dp~)S zofA-x0D!PEH0KC0D)m9OYWS_29`#3eH4>)!V+`qu zBQgoHpjO$fs7%dWCxRDZjI;{dL!B_P%+p6Nf{2 zE)YHFc66lsJ)AhKo6WZs+nK1pQye(4g3YHXcpl=9w=_P6xK2sgo!KEvWuo!m3P{c4 z>V;hi0Q>fu^y4a~;`?zWw@ICpt&|SlO?{L2TDRO3S#|BvaV*2xxAu%Jp3y#;j|x;G zHHvXM;ef0CzNR?+)mAKC3qXGMYGTAif20#B*M)f8!`DCTJq%Yvg{gRnVEUT^v&gz* zKTNf3+> zc3(J01Vd}K;L-`{s__w#)pCY|r%8nWn8EFY)@=J)fF z1`N+}Tl!8)P}Q0SzuTnZ0v0tjd!Lmzl@JEwFp|r@-<}J9Uh4*v{+4>bYsP*~1%(ivz{G+#MFG2OT%4gH! ztG9?%2F-sx5Br^fAHTgeF>!AyqJ0d8gGp)<0+YzGW}_ml9~-VF+k6^c%Ee|@a zxum$O4V_h8^Glko@HJeyNEF}z{&b-|c8~nx95H0boMf4H5oxw-M$!HFx9vB!dntrX zUeO?0&$LpN5Ne1JNIl9z5u4*oL8WdL_d`N>6UyEAB`pn9{kr%ix&~BqtZ$CLikqjM zgNX-Wo9BFdB3WAI>}fAvbYL88e=dl$FS*V!Y{;G~Di|GQIHl%s+C}D$f_TQtEUXWA z`Bx@y2XRE#I1iPBxWgE!YP9rJ^JX&{@2G*IOY}A&+_AK$fgJlj37F@{#o|aA+8?)) zlX!)A!>-!=E(x_j;SI-3-D6Cw{ctLIG8}*N#7brwGxJp^Np}IYO06%xkH6s=yb__O zuZ>JADr2EFK^apAV5Cidsc2G}z8EfwSMnY`Q&R;E8OCUK5r<&$Sbq4FoU4WUQc6n6 zvAR#e@$mm}_f}zTe(TyVRA|u_FYa!|o#GPQ0>L%7yS6~l;2zxFgA{EG1P$&|v{0Pl z1u9?qmpRv(-&%9+eO+sx>>P3B;3cn(F@Dc|KleDq`)fQp&_GzwMD3G5I}R|uv(T?1lFz;M6rBdb3PQa(7uA>FG4#lkc`tNh1jx;TDePo-ZGk;K7oT^4|1W zxqHp&&q5Ut7Mquz^!}~9c&YFj7p=c!${voZLI6@}ZdrV{qE@PZvuf$~l=Icd_oldj zi#`2}$lI+X&_`&>idqTYR1$Ev_el(SbCc!5G+$Jp12^00k3}zXBv!(^RD~%%oCKxL zLH8SRyaxklJ&wFvMI1ST%&R<;LWm$;Br_V4X&8P)R~!@MquFC-FEK2D9|d9T3#xTE z_5@#wg2r$IIyjZuxD5yhUoK=g&zFT>1H1uy#sw?%HAJ$s+|q ziD^nhL7mmZ^CrG1;h{v3awaBxWU(i{Y!}r8eElY3pZ&AJfx-CS@gqO`YufiE)TP>J z2#+xzb-dM-L;4VX_4S1Yw*i$NebT~z3YG+4(93tY8FM3htV0r?pCjb__ae`I8Q~K4 z?gWuqb480n?42CxWxKu9xwIzuZAzgr%XnY)W9eOj#v{BDWZ^udFSOsSmYms(Ts+cM^1wU@cmqIq4jQdPSu6!uJ zp!hugMqhus%Gr`PCnSkyd74*~Ts=9{+RoXfJm*EWQHaD(x+O%-Y%|}tPoJM&hI_$c zpS-Ek;0ju3pLGlsecQei&6zMJlj2x8vp?jc+x}MdnJ+7Mc5<2RV{+jM&cdU`7C!80 z=pSJE^2svbWX=NLW=nC6OJLeDx$IW{a-;a5bonV_Arl+UxF1xfFI@{B5v^Mp;CWynv6v{E$JGSeGU}dgStEs6xor zL&LhB>1|nsh7XLBBGkrdRCG&f4j{35;y>EvWrh0Z6NoV63Z7-LnQr|0E+%9(WykO_^mms4!EFdBC z%s@tD$w7V2w9n6UA?4NAhn%QFJ{8$LY#+&q?Ih%hsfwu|_s*{h3d~M9@)usZj!Hpm2?MQ^9DXdzS;Z|dvs1#O?~&rOWtaWiq*4F8U3$jBV0yg ziE-nJwEflt*Dw>XB7xoztkPwxaYhDJ58~>Wl$pk=G4vJ)WKC=I+=$c3`aa8rfuaIm zCUN<7=n4k9DedI1Jdm+`*bJWS--_VYpW2xCB9;m3&y@8Xa>f&RAitRnL>79Ip~!e=V_S>ct2 zQz7Y$VIOJmVMwXLHn5^)L*dHJ2BMr5CijSl=sWtTpj{zYJ2;EzS)}7DrOo{GySQUnbaB22E61Bwve)?GKDILmiQZ~mgQuo z9XgH4f%XmMEoPTSvLn*vg$xF_*v~na!{^KnH9(XwNp3b>Uj{V*Iev!Az_O8;8VQ16>{_Fe{}+fpnmb=k23%+cKWfTh`INY?gbu!txNN=ZVnhbe?6E*5v58D_0w3 zK$gPuB6k|8kUcprkjC@UU1Kn_; zGWWhddb_DAb&}|!BgOjzE)f-2j6w9y)sOl8RD>AiZjr&L28VUhv^dN+(TJyV4ZMZ= z&PcIHzk67wo^!-WhV58Vn;krM9_N+@1`iL)eZhlm9?CV&x+TK<)pmxoMa6qAQ8RI@Ka0v`B7_~v;pzsth z;g>O(mO@O=?U1f6I0gZ&ej2oid{7sdkai0#qfIhhYILw8E#XZQ+DtxP3!huR3_uFm z#VXo$mr3tbb#f*`lF?p0;;xqI%;YaOqM0b`*_mf0ia(9wpy#iAjG`*yD(4c3cm0ymp$!_-dbs7HRAiWxxf|f_ zW?1@-uQA@$BHm?d)v6g;LxZ=$Y>DdmCbzzNo{7V3pP61 zwX}nj$K-G23p|e28{XYHMdgl6Ne~bTKHZ^H4R?;PVql5tugL1$}HaR;b>ozR|5v6b<=hE3-?bYI!(XT1F+4#vw4(&Mg zYxOh!E@09jr-GmE-F0sie5G>7@b}DqknLBuKXM|^BWv`0v=`^gPV3~HbS1fqx0y#o zwth56^kRggAe-XQwyd@lOMXedzH(2aGt#8g=4B(N_K8T~OkDC~jybt0A$Hp1A+mzu zIg#h-ttrV|XWJdm1(V>Lc6Mh^Ps#O&VDFk{0hqXZE#b#w(>hVBD_BtY-qntrcA5U{ z+RWBQCqHaWlCP~R>FVSg1idpNLd2*pKDmv=`|Ax}7CDFURyL-G3$N8H52Uh6jFyVL zy^*8yvsR6Z?p$W6S7iIi-*sazL;LfRcwCGhp`>a&3DQG7f!t2p8hQ-sJL}O*S-aj) ztJ2ea>03~n!c=?Ge;vZ5m@)6g^82PfRIq!;fJ<^hIq_CIAX!4YX$swy7_BzzS64xZ+??mCVR*c7@Wc zdsX}1dwYk6025|a+A!`2#;Ev&-#Ve%@{Q6sl2G&4W5C{Ljj$tQrT`3S>wq(p3u(hF z_zeg`mdO8%!>kT;hW3>`nLQ}U{XgM)WxCrgxOgfjw4~v&D2n9!y&?1oxw~azAOG<9 zSlAHKXgtTcaip)HVC;x2Ifz#OqjUGSW~wtR{R;9B^9n`CWikO@?QMVv z8j+8E*Qr74%Wwn1tYS z{%a%c|Ef;>KRb`3ktBg6edOm2j}Gnp6XYMBO2|}JfR!=T-$vno1@?cnZ2$jXCw{j$ zGt}R2c}vneoaHHr^bf~fb&Q>?>9_EtM0+k{`>6oS-v@LFl%b&LM2Q?yTho3rv2oQo zKU@;>*mbT>3b1Wor^NBAMYv?=_Gp}F-`WvS+(Y>sB)=^!o{B`unf|9X-CLlIL|abj z?x?aU>|ytH;Ky;VgPP@+G75J~wL3mJ&Q5k|&v78np5(5r*`9cp(*2NX(@4Qs5mbGw z)9#OKeJs^@8+3pJuql7G#1Pjde?zQ5tYfYc@gR0h3K+uMXwJ>d4PzB2pD>nYS!NL` zoJO@fyEXI569+ziRehXW`ej&OKNx0ui)_PC2=lIf&ByZd^=8|7POQ`4>o6H^NI11x z%G|mrscKnD<5>Is^e-R<|5?o20`7MzC4sCS6QlS!3QZNgDXcz`XVxpT`M;Hm{fY%BF|wt;C1R} zXHEOQRzjZzv_I>Ap`k*NeCRbRHPSyQ+RX?$|3&wH%&6;V z#TZsQV{ z2r~r)>d6WGVp;4|# z?rd@#e~=*kXjqSw=4KJf;Bas@dL(lyf!gS{sK~QtucggtQW5e2`;o(r0s@OfM`;gK zFaoT?Uh7&FTBHk6+LfTn`!tx6Ta`l5B|4+gVq|iI%V%Xqqj>SL7-PEqzNRyh-G-S| zPw70@8+|AdoO>n!?mPQTl6H}Uixv{Zx9ZUBFVp*#kGFc^1p6+Bv6x?oy#CM@_svBD zvQ3@)W}LjcjpK8hp*1gTTFKnngi(UjeI+Q2Z!ntl!8{vN8!`yiq`I@y)j2)O@{4wH z@|G0Tik)a8N7EU(cC*8UWrlfn{GlV4f3hdG`G_<>tHlE@oZJB;?W)Lr+z`)qqA!yB zpMpJJE9E|aq-OJSR{k!@74z*1$ERmN{G6JQl#|+s2USMm6hD701^n7;jS)RHeGU3G zJ1=aCci4Oez}`=?{lL~MAwSGn)kG%9Ivc%A%i7AS3E4Ocy%7^R^j?^}Mm^xHIC)T) zK~=|6i~ZQKV79Eeq69s3BW|dpF_etG%dYgN*4&Rxh1WZK6ML z>Mw+u8a=&E5v%RI`F;~NyAet+OFbub$aD|c>z~zCQ4 zowb@|sH$mgD;AQ&_F*Q$j2PT87#H=HBQ@9^Pqxug>muDPz5Vp_XTedWsWZi^Y$h0)h3}ok^}VSh zbX(eb@_-bex4;B`d<+gqthXzXBxS4RWar|QwE~6}_;HlWTLBxXcbzMUo=$~*a?0qY zcL6d(iJ?+Ea~Ef>m6-gUzHc@z-%0lF*W=&7I1j5oMP}>hY5;DTgZj$&!~rh#$srawMO>f{cF5oIPTaptx9S z_W*qnyPg)(xX#ApYw#45!+wNPqXfZDyy)K-RCOJEaqhAI z=knQeiXOR1yH{m*3@urh{;1pS4pN8OuUKFeXdW57@3t^dQ;}nAriB5{G4&9On+KKe zV}@!1#Q^urvGdDH-ZP;5Ou73vvOhT4IF3F1K6zut70lu{@YyNFQ;?Z1&CMh+LR>`H zx&{u!Q`uzB5yQs9K=ZK@z=1@Tal~d9vRqHp4!{DwK`@TzKVjcy;E=?pYSDm;! zJl-+Jg_gd{))Gpn`Mx)9wlil}o2^Vi2-nsAsrK-oQI)8i>&S;Cy@xefn9RH5&Oyn& zL{sy4`qI0K4%YmP8C-6MUt0zLRqJZA-{=OcCD=){+$CZteh$0*G?LY$%2o~fa{@5t zQ$TE)L}?4t3=-E*W#KlaRod6ZtACui^cOq8j?u)xCYjBa)ky8;LmN)7m-@-By3W!H zWJ!2qtA|lON8)@yseXtDd#AU1kiTn)l|e+P(K@P-P6uO-+^Gl)U5t-_fJmK zBj)eD`^E=58H|miFt_(>zzfv*cE|FWbqvAJxT~QA7iTnCE2PuDh52};nQ*$aR5A`> z!rtVbHWGUyV{uV=(N-mk^e*h2s2q1-ch5$sP9>rFR8fh za|JSJL4n`%J@6eYt257S(YPuHzzYh4fsEUl%3Nk@prcoRh5yKT^s}F=f$a3${H@I; z2&u3|#)yW=ia$}Xdz-S;Sh4kR^Z{Eg4 zdcK|lX%mpPPg%DEYYs6W3#NK~SZ7*XQA-teXSB0}mm*O$ZnP|*MXy*3L3@^bb!F1? z)iXVx#)Owy{bsK6e0mt)ud?S1MWRP>U1_k%UrdcEhO;|SHBIor&b?ga7PK8Wtjgm zf+|_eKaPQ9QDXQT17X9CUjAWI!&ZKw$&8Z9_#Q-!(Oehb1B2mD-$sZBGp$oElH{nQ zF-qAK|L(oD0=~-)pS60wFz!QqjT1e2b+F^UTXs}dzyQ`Q85PfBEny1ll4SSJSow03 z=GoD2n;0{>b$J6L2X>Do{`fE!;T7JI1gcWi0@-D(8&*h^cTiFCDPH7i^&h+MiuVn!KiIWiEQWf1Xu!5Rprj95>jH!8MiS0@CEOPkxSWg%_ksdly^`Uuk1u+xNOM0PIr1&zrAQ2P z!Ul$L$^QslLiV+1As7ha^^=&dPYbLg_*?T)P`cK+)#!56`-`^8?t5{z3C86uza`r_ zqCxhD_a+@%L-cB*&rWK%-5*8%5xMlZzlPC6DO^U`p#MOoToAEvkBTBmX#4i?O>brR zrt-j7lA7={9_Lu{kLJJ4$eu{B9xiZ2LCMBmhKdxp+M9n%<_<)2Fz<>bqf>DGBT>p& z5@FB7Opfva9Ohky!<=J)JOQlyj|MNew*S*l$HI7m(y&yJTlo;9oG5~eq|c^-Xkhf+ zKYp5A*gv{=DFpf!eseCCQdob@MFHA>d-Ole*1s>ze}D8p?J>VkJggTL#Zkc4=HOpX z_D|>5zdzZ(?%{trSu#VRb~qeyfR;Y|J@wCv1je0?8*0obA*|xpy-g}Av)F| z@A-oE!|uyUxcvK3r3K|!IWZi_u%nwVtu~}8NuE<;Zy!g+dR#ElfO7F%mP)zarX*)^ zuHP)7*u@y#I^2#s&CGg_CF3#5Mvww#!X=bF{yqwDIA$y<9Wt#9!>`cTi!J~I_|7|j|7Pdu%! zA{jn2e`U$}=D?=b-GAjISS*2TMs za=cOK&gWJAioxk6QJP!7&x-zN+wI5;ZDQzSOWW9$llfGb9p|KZ7cWe_H7}&{GtY(J zy<_?bst8Sc3eu|B4&Q;do2!?@d1(`r+#$RVDR&RN>eT6$v6_QM=HN*t3T=_r;0C^f zX(sUS$cDYMFgNe&mj=&g(&G;{f&kUA#tXFgR7d-sZ_5@lQ$#|?^PaZsMn^xr=i@22 z|6b8j9v@12{Y}4M1*y}D8;A8XKtNygcp=gBRL)Fjoit!4yy{_G_42S!XY`-WG}=5} z(iGU^eaVCH?cub%_y^vXas3${HN519uqA>U1sgOy-kP!`>D~_QebP~FRI=(ao%Lki zFv@Hm)#{^ZoD_epDpI-J3=i(9h2c+lC$zPk>X*X4abOZN&e&Q}y!yRSUXMa&-L&*^ z3)mG-%oE#!a+o&gWv$!qOI|QAQ+vk}01)qEXp>h)9Go0cZ2N(q+2)YqCXX5Xt!wWU zUG=lOE9mw`7`f9we?b6?LDXXUW=_cW#@FiQ4VScwpP#yW;65Q!jG8&;#{Mm9Z&Poc z*DyxxM~+rYzibi~D^$$yo3}^;wfDc2gD?!CbF~iuxY^o-2+tO62j(_OGOOHE)6AW} z+$tip&+nKW3o{rU#st($_*!b+q`gx*D7sO-Yv8z0?vXvLH#c;(+}_5Rg{INzti1Sp zCoI^y%J!P*(-|XlMpLWL7(KnP&nqu~TcR)DqDgm)f5OR@!AMD>gK25I2daRM7N?tm zEyDbNaH;k!2`x^x`q?Eo<|(4y zeq&EjL>t!KQOja&sMVQBFP9eY_Vg6zRt9~6Pb6Cgi3cS~w$bviwdExFpSDXS^l1xo z!`Xs-T!}q(ez1?PTi=>l zT6OUqD|&M+Z&D}O=ZCgEapgpB#&aAXCojEq`OGv0DTIrYiHVkAQ9{#As;;jEXazjZ z$*aHh95vPU25dF=8;oL+7@7fb{(^NP0@!#;aaJZNU?uceUkmn=6h6zyE{@g-|2E@qL6m<_e8S;ZiIWgTlL%)& zX|G!S;=J=AR-bX9-o=WMGm{MB2{TosHCtlRiM`}g8*AVHTjnA>!bg<-B_52KspDTF-*y_l{szR={A&dSBc*3}LvvxdQDP2(V{X=vW_PX=u zMOhZ<9pexRu>e|LlIsAD=tu$i7bnL@m$N2cSs&9^daoGek$qk4kg0m?J=Ozr*ws1Q z=X83_v`Xvcn^l%+y&tbKrsO<1>snt+-n>-wA1IQ0vi6!aGhl1~h_YgNo~11(ll1G$ z)3^uYydJm-nQ{0tr*5_TH_6$9@XQZ71}#UjBv6JQ@8JD4x^@qM{P~I@Xvpk7hIbbD zIvxqjpgMgpbKLk{nUxjaRzQ-sZ(hHU>7g{!HICoxXbK`MT z;*c0{={K@W-Ws{vzu|%kczNGE_P?D#UbhxH*se68@`N1LeAIK;2>K?C2@Mh%88XO= zRVR>J!|$l-R#=RyV0`Cvq4pcLNZ0Rtu~&FAm+6!z`Q~6HyZ$WbLHZ8Is(mzw&`W|> zaB_z3XAR9+4)M75Rs8t~d2*EAd8ut}ao^Tcod|pWoAElPasze2U!gA98XSPyc7%rF zG{-;mUC3?}$fEDz&g5IJ*TwKR7WXD|6>@8lw1R>g=u!Kgq&yXZ@-!b6NW+)~<;~+q z&vo)u8*S17%OdOU7U={4jXYn5*BLed5~#Jd%2*w^=oalVTn?bP(g-16oS5^%=H-OZlMp+`zl(_;eCQ2 zzC~!Vl^=xhPf$G$s)49;?<3E_@u`ci+%t#@Yw;D)>(VCn~?suL)?coSq3 zO-!QEA;OVk9deY7m9DPDOB-5wnEonh!3Dk)CD12-cs~E88frz`&OYlsU-zu(RFBuq zK#Jb~335W0_3~vW<1%FbRG0*{VwB;kJlwgrI%813g0ugOz@2E&Tq9pGn2QidIjX@K zw&16w>a;YF{c9{nnw4Zuc zk4Co(1x-*9VyPAgiSl(sE@pZ4X(pOeGv&BG9n@eIWDu=(U0cFeuu`;f6Nb9l zMfuWe;t^VPI-gHD*t>~Tg0pGvbJp}Y#T?@Bk+FRrn48mCHRE0s0y*e%o}cRTLmj)% zF`ewBIxedc5v#5)<;?~iv#I-sq(TNW9MJxLNvdwbge&z=c^@`XXNT%&z-Laipe)B2 z;z1{KgR12r!*^`N!`gBM72Rrfh06!$t1nG2Y|7es+5w-5%F*tJ78;mMH&&hBw<==F0@g{w4+{Fe=U;p!A|5 z7o-|1EAXGFa0eQKTASNI8viHL{VUoG*xB%$ZH83o&nou`g~O(Pqh$8SIe2u)M<{Tz z3Cq{!pKL-6<|iS*K{10#iE2L~P~*Td<%yUuwiAXT*RhbW7VljF0f z;o6ve8L^wZ`k33+t1pEAG&AlYjm;@inQQAHeb7 zqTT;K$0C4iInn~T90H=aC@98`E#75?dz?8I61g0XY6b?FeR^d77ukCB*GLzw+uf*w z38}1^g1l{BhbBD77(Q!Qu;Yh~LTlB0e8r$#6nZKN_dznlz2O$#-b1GrPoT#qX6#8B z@AKmC_Ov0n!Axl6a7PQiqgF!|Fl2@}SEVwNCfo|)>kK99uU@5`nqsN|iObk?F;s-4O3M~ru-<6T?x+A}V|C|0S z`ufpVc|$}POR};2M_qIUni39M+PBgY;$+s?0pb3d#pVlB{6jU$2v)&{CA;^Z#F5r0 z7J`fDGwNvVn$bG1Cz%-=ZCNTnq)Zx!-@MY@sO3`68%CUgc7`M3ess(9NVP zT|FntmtADAI8n8xVeOSXJ{au81GVOc9CUpmhLpqheGv{VQF;2E0Jibo0Jpn5amgc} zE!3hfVGNGIGnCT#?*OV;9>~59&4b>yHlM-(rscOG$Loq~0#AKFS+6$n?ffhp! zEdlp~HtoE^q9X?A)%6iRGo*jdAIOC@;7P;UBU=P6KJGBW@Bv`&bsM0R>!cumCvSqR;o?A!bto$N0|{ zOKU?Yuv)B$qcSm3ZTCUmwFPnB&E>35Vr-%|_ODitWEJ=DGXnU#1I}Mm$nK(w=&$2CJQm!Y) z3J(PK3u&1id*2NhB5n0{BQ}_{Zk59Y)t9dG;*w(R?o+VHtRN%*4^{56lqm)+y9o}j z(-dX_|GY2hnXYXC#oMrGE0OwZkxaTTr6Fp;BDP!skn$x01gv-ro6GyLUo1|%Qlt9>ntKEjvS&Z1 z-aS31)testK5o%7*Ux^H2V#VX0<@!JtRtpl9U2o=#|OT9v)#T&u3x_x=EP&r=(h_b z#SP>T9Hu2i8XL`RguILSHHETAxU~gPkolmZkSZxZOT?%g z4u0*+$C>I@KLcOclXmAjI;B!Cxv(frw{XiOweAbnH131PfM!>hl#BG0tT#Soo6dDR z=^8XI&!(neMAOuFz7{ZLFJpzXAHZ_f^uy`>xk+l=t^#RyJw$$peUIik^8jF|@a(os zwx+UjLntAfialN!-4wLbXqarKy#_fUoq{=%O`%5o4Ty>oGfrtxqrfO3fk`_cR z$8JiBc?R5M#z})bk(hyYUE2TosEML=JO;9>tZjA8`|ldN5&|I4CZLq~Fqu_>&0>a` zZ9Os+4E(KKB6Jy>%hr|0F{!jtJ#(b(bG!lj`Dtwtq&J=4d+8j7xkv4v#Sh}=SXEul z*ED77Dyk3mnsjR1b#Ydg0uZd|fH{e7PuzSqA!v!Joh(a?S*|+MLM5( z)rTYSPa&?6gU+WYwyd>cl11U#CxxlfB;{!aCE}^~PcfWvr}7DP_>PFD_>Gz~<;Kk6 z{b9o-szh)R=eTBP@!yv+Ib}<;%}^(~Dn4QEQSA>(K>(si+3*-q%C<|tok43QNidL;^_N0Dj0GK;fiYmJse`1ms*$|%#W0M09 z3l@!}jl|#A=q7NFO}Dte`)k(`;xSxU{~F;4iffNa9~=C;4twl&G1=}n!Yxe~4V7|; zDk7~D88atwvoK3m?3$6%Iz}s1LmpI*`^$=l-x|;5SR4jeSF`|fi|@mhgNogHNVt8R zu3|uZ97i5cB72=Pj-<}VV7)(9`+79C@eYRA;XD{f=w{vzKT33Uo$3eh+yr%KTgZ-(8b8vF4WS+m>7rx zHJ7KP0C(6XOqS~b%lXDvccIc(R*Az~*@&J&`*e#5_I>opy6KVF3tztWUL^}4tLVz< zb$Z*ATa0h9dw8+Kvp5ph@!MqC4{LSSx_h(?ZB_Ix}=g~{=YuKX7oz_RrplNb z%P9ETJq6se(9=g-Iy$; z>WHm?VuRZG^8xNazj!$7aa3tgG-lIuX2x{|I)KbW73~;Yr;4PZ0z$hT)Z|5msaNCK zuFFzGYR6(OMT#`ciY^Q(r2O_BeqB}IzPf6M#3>fA5~LC)ce~?(-qYjOx^A}#!9muT z1?+{R=b~go{ZFM^XDbH>!_=xpMRHS3zOn&JbO*6an=<8G)U19+`^&KQ+^5Ycd8N!* z0%G_sw1>*R$rr#Khkr$>Uw7KBw>%0`%c@OVlN?$H+h&xI9pftAMfXdG1c#+fP)Ga-@(M5L2QmsNB{xfJ&gL?ou3E ze!GHI%NgENdn?daG3w|RsbHhsHK}wD##Uu}A5ZdEv5qksIiSw+h!b2+-=8CZ<$^D) z<1>*^>Wa+DGBA=N-EC-$Q{RtBe7);)jvbo&aahL=&r{%_xVBXVY?qmm5Xn~Vz&5~A z+lFYU%Vdb~4lLKJp4mb6YKx_t`cb?qJ zmX(ztL?MI153L`~cM-_7K>EYUG!_mn-p`RGjQ6*9!6|T2ohlgv-7MNNj;87luXjJ6 z5?#yLD4)efyY+zHEFGK=Zh0LB_Tf&5-TYcb^riU7ajXNz9x5)8Jv-mYt})WZD+0&w z(Fd2mlOgI972-2K702U1`Kz=%_B){I4+zAX9VbXB{?T$B`d$c2M~EzTQ@L!41TijO zOzNQ=H|Xm#kEFuB-|epdfeN>qd2eOeMS2=H2?tnm;s(Al%q(IN&7@2fE;&A|*T>)f z1VZvA&L3OG{CnQ~*CYQIyt(m5Qt`j%O`$*bxZ(V_`1|M2fuQ}vcq`%;#op!5+SO#^6MX%n@?La^FID029&Evm_ zxA|OOj^@9w4T%fR&^9vna-*F*CQ%#Oj-5l6UOsF$WbQ4VlaQ)dZ#I1QW8Sv@UHker zkPy$~K@-XGQkQK33Vl-?K%G~8#*bo#Ib}iDZ4@{;Q)?S^(7aMpnvWsm7^FQqXQQMR zW!mW6ix1UDC=IG#8jKv5x7*OS8~nmc3-2R+mCeCdY)ht>(kGrP-ZxA-_R@HIx3GRG zgi_%c8Ot$cF&A-t5c(8>qtM9W&54h3=E})S!^0!8S=G9G&vf{;4Hoo-R2xUSX>=MS_3j_@WDbdieQ?9x~}xue;9!0ySb3COl}p zia#?6ZE^ghD-zhPY}Ann7s-UnCWFZry*iLH1rh!CuZBHcLw84N5Sx;%_{59JCH%sb zoXn_8PZ3&=DnqHCVPm@_oOaNRJSp!Hlk8d-`kox~=mVIWdCd2eakYt!*wp8S69r`f zjag81?)Uxd(V%5retWc(y&UONe-jHMf3%^z==hu+vJQt%51-U`c8%Vy#c z=*u03CTR$IFtV|!D*x5tFLxLXs)o=}&Na|vkfT3BgIm#i96q2Fzyj^4t!I92m_mr( z`n0!4g<;e8+qJJUjQ1IDoJi8kN>~g3R^NuBQ^v9V$@4zSB9HUvW+L1p%P=R#*OBkl z;a9Aondu!N0S_CW^$n~sRGSLfy9bonOIm#pP6()Gwu7Rnx|1~lPLKqucKkM2XU1*l zNXfmxVcZg_?jv#+aflFoh?1p_8EY(D<7b22%|x)zro7*>>~zN_JijnQjPB{60Jcu| zDB=gGJ?bdc{@PR6nbB*gANJxox4svr8*=VRGk+rTJi4J} zV2`eCnmt`XyvdXUBBoJ67)8gNF|f z;U1+{X*0FokI!`~$}_$vH+?J7EnPU*<(qLenI7l}phMVIbOg?v*0k!Cc~L(Gr{{=A zU#$X0dXTty_8oVVu7&xp0i-!E6D|hB%~Be#ISTy?Mr~9TX2}v-2xLs&YkGt&==5NRwID0;lwR<&o(I2F~f z6=CBRto~+T?vzmu9)%1lz|M?a(__YDs7hIcY?}!;B#uO^HE&2ZP#Bi;Vjrf7Mcygb zoy!-NgU~P|SC;fhl|=c_VSBfz3+7jdJFB97qhzaWaO};=y}E**1(?n>Qbue=!g$Yi zJ8DkEfeO=w&+Ir> zIMLN5dRr+ySZPT^*X|a;A4E9D_f`38WL)a%2{MKAz}Fh!Ugf6@MP6zNj)O&eLx#Vh zJk(;|@BA^ocHcwPgfNAlmyhJ>PdRw;&nI7mZJjvnw7Z-eWQu+pAp1_WbX<6bM>doy zK4jpm?d%55oPRWHBHI*Q(`}PJJT0RpOjVLrPNLM0x7}z2hSI;ELs$gHgdVgL$XS^F zD2+ZOfc1Zqye8FyZ}q*kAH!~4cu)Yh`?;ta4nP3x+g6(Ef$CO_u#T)6WQb|Lm7-Rg zE&D)vuR+RHCt9}!u+na zCmnfZugb05fb?%!BG_^vSD!}69Rv+jXQsW_15UIKqbjAvL@n}F!BSk} zlb{gaw{^6%uq}fm5W|;nHt>kK97S6+-YjTGL*T*K5WAt7Bj>nM>UFI_TA2f3W`KT- zM|AYZH;cD(Q`>I(R@|e7npuE(7H~8np1nnpzf)YXUmYOhD=a#vEZy8u7d0Xy*7=UW;nZa zCqVC>m4Al%m&IrdD3w=1ckxEVW#`~r-^Hf%)IFFVmNVSa(DV3DJ>a*yvT-xSy@#Xk zd###*6t%ZERfVf&=hCEw@Na4HX+m5C)`2)oF+OR4dL&LW)g*bu32)|SQ!%q}lxk+b zVZcPqIq^suW-kjq?!)*G`bGp0F~x1?z?R70ZXR?jNK>g4N&b!Xs{_t(($omI(jj)u zZ|9@58D9n%ceU!L3W~@Vso@c*C0Kyyn8-_?nGNmi4iRwv8kqdy5$E9?LVk zrJ?sJ@;|%Gx!|y`L+sv@?w{%k|4<-<{Hi7xf4futCXF@5J9X+_;g9zfSX8rScRdW0 z`(_%gJWhS;asQdwgOmO&EwOq>Ey-nLtvJxqw9X$qVzr;ESc+U@`}Y89`G!ngK-`ee zV%QuGxoycf%@q%4Z`E!c`fCJ{d;cI;bZ>r}wA^m$Qd)7!^@za99(1UYOIrRUgifB* zqU`&;5TuEQOt=>M?M=B$QS;$#LwU;k9);!RXfCD=nT%=Lun}XKIcNNg34dDrXoP*d zbVt@@a<&%)6!>-5_0a(HyS(?qgGVo-xOnT|X*(8uyoqSZWdA(-dzQX%YOAp2J$i(* zi3h1=kZw-qmdUn&>LM`{)=Ot>&N{1V!ha04KEzSFABes5HfS~Cdxdh!WMF;7T8IbZ zTRC2Jr{&}p99XVG`j;N9&-wGG5S&#Rbu?UIPfSIu)XY53etOQZmwpm;S+sJZwlCLq z)q!?w-cTya$CHAXG@L{W@PiGl*CGuWc=saMWY(A;iK+!IPhKt4@C+kCE~V}J1pT&K z&y48%+txK)e`WO7DaQLw5hY=Ea8^@)G`X=Dl`~s*zk2s7w4<%r%3VC2pi;YvRrh3< zM;#+S(;RMO-v+wwVrt%U%;X*V|L#G+H{ z<<~F1y1t4Chnkpudxn3$;$C^)e3_)bb;sK~A$7Ai$Q|?as!4V|Q+IbbEM#VkEE@Fo zBWl1~eL*-sPnZ?VXhB(za!K||k&L%{q6k-ZVEux!Upq(n&jU?8nQ+0{Q$DC8DOdeU zXtRDxl8DpVslHg4$2l+y)v(;?RX=K1Li1I6E8t6KiLTSf;9yH0W|29y&6>9*x2@!= zSW39z-C@)B!5;1?9p?*G))6gL%@Os|xcWp(x|1ql-?wY&z?IGn>zFO}St{$bpLe#N zcP1J*itl`Rr~7wPg`Wk{#vg{yxR7P&T)(1~rA+=mVb3U!0knAL%u}z0evM z)i>IldPGJ+sLkD`ZEPDy{ffe~X?luZgpEGZ$a~$lV?N;=c9b(E>j5Btb3?@;A;}8f z=5FV|c{T=?8`V@)yAC)en#X(>_+xvH!;=Qri`4)S;0yG8=rDbI%HpQ=_(^ z0TQYSYRXV!3`UTeR*R-rO%)MV-k(n|97)#m3gs?HIFC-b&qds#{V-vw#v>|k`#g%8VdUs)&GvUZsPSj3S~SAYHnG^b+YcLC#ICq;~>@nuzq?dkMXV z0D(XtTL5#CQ3rZ!Js^3j~4y?mYy`>%Q zgMS`y_KMPx%Dln;IzF2I21kUgl#UwHu)UZBXNSq|(pWmOYm3G6DNL=1{x-)gFFEh> z!*ljP1Gf16h%X6-UYX+~>51ve2J~A(_Url4l)!lk*toIL3~09*DM3?;qg<80m(x#B3?-EgDyfyD2B*0I)`v$K2Hb_iy%kz{M77wi~ZQbS6 zc#XA}{tP#1$}YZLI3;y8QOKsEMlSuC_RKR4PKw+0uflgf0m7YezY=DQT^qYmQGYb~ zCEVXCXFiZhJc$A@#Oq3|Kwp&1XHGH7@eze?D>J#v6leLEk@g?eJn!VO>`mS*lU4ST z-l?q5-VZ3DIL2kAw%oPr%Hz0`^X@u)!C6(ivLf{y{H+NlC3*4#m)o9RY?j!9&oD)$ zJdQk|01IQgXin&A|H_WtWLsKSx7vu#KO;>674i29Un$>~x~A6{UL<65jcYgN*f{zw z%X--6{ z*q1mcvp2zjA{x)NA60`)xxI?DZBHWd9Lf!3qd00smkzXf9~18YE-fDg9W4!47a#?5 zO!|AiqFj!(bU00(M8;wn488J4(cK)86x1;`D)i~%Qlh3-rN!{jbktb8HG#eW9sd;N zs5r;+F(d$SOa5+P-W|x8+@13#CB|4EQlRGtJiM*`&m>e*dJf_=t$2aLsQl?Smel|}P@@+Bqp=S0B*{R>;roSZ9a>l5~s zAF#}mQ#&FB`5{RvrI}-_H!0wj{lVSscjhIAy;)M(PH)7zHIucp#qI7S%vr4^VXuE2 zt?F#hUb=bCj$T;d&!yYf5kpf?jXkU@8qRX=nQr|qw7P1rT=0=O<%UoAoJ_0nM-PRy zxU7=O#&~G@T2GPM(!+X#iEl$ciIU^yxhmHaX4HykdU|NDC0F~t!FQW%d3OGh|IxP4 z(DsRv_J@aQ6ty<0xw7_qu|;n#&l!JyfVdgo7`5vw1KVOH&**DK;(?C#g6CC=uWRQg z6_4Z(I~?r4v45H|#U0}QOG>HdzBlB_Bzn+1X;}W~3Td)_|8Q#7p@H?E{X(%TFS;GZ zQmP3KZm(!Rc2l?p5I=TXe4i`TEL`cwgI*Z<$6KTG+Fmm|4!yh1k=D z`?lw+`Hekz{e!~7HRD$BzCN^Iec6ip;PS9j2!&27# z+G|2q0k=&-G}NW7N#r#{_JjCV{p7m_=R6ZH!Fm4ivHnCLaeA@;Adp4zjxu;3q~Wt- z3S06WCH}a}ckyGg+lx$(R6d^0RhGY=_fQ19{~Lvj1+E?w^@3KRJR!mTB&s#Vp163m zYrP$&^AsA?mbZ~cFRRxNR%Mj!G7Xb@uv9%)M62D|J#VAOOK~l6Q^k}N+QTqC({DFQ zuSryEifzkC$`(8?v`aH`Wrg`Os$V%@%SajFN9g1>a|iVo4H~DO1|=TuR|?EO@wCNP z;mwXM)P#^G!SfIgIYo+{uysi+aUTLJkJ@){ie&=_cKOJ}2+D z=3LTII8Udm@yg6Hf#6}Q&v|g2RJm@js%G5*Hn3IMm=Cd35*+8R`N!i#;a1Z78}d#T#7xkUpnhu{b-DUC{0`%El;??icFnD|p48Hdfd|d6k=gmM7wbH?Dv`&c_jx ztWOCU?v0IFw@fHj>_Q6OgO>2|d^97D1b~(fmY&7mEbz4yYz}8 z=0-D}PxUJ97MZ5KAFt;hl&uUJE2BOKMFSI+-r>M{Y=Jhi;p^qgVuHr%z4VTn>07_6f8;ZS zj9UJ)_iu`+J6(S;^La#&23v4qH)vn;#GDW9^s3^_@{ijlIe34cN$;PW%fxo=4MaQ= zr8<2}fT!u*j5QNRc64&=DN}O17B>U^i1Hm~fw4WAi{_KEVnr`j8caiSnoJ*4c$L_A zds@}=7cW*6)%Q3p=~fSC7#*a>5;S+`!xUky-)RLb_AligWElNHQo1+&0+D1(hQAQ} zn0WZa+e12iV0g{cvi&pQ!e%KGO%;EFM_iA;&3<~_$+#KiwALuPYZnE{lj!u8U&LgH zgX)|`&)NNmq2ltwv1R4vL|dYhC%;EwhFCJbHkIN{y1t6>NzEyk$9vpW-<Q z@W%-k-&ge+y9xA-s?g?NEX_Rlmn%Oq2?tp0pHd9(iGumRI)zoj_1Vm|UvRb@YadMK z*zp?NrT+tO7MtSv*yGWS7!+H%E%T-jvmx@((mJu0OP{JJuEs-vdE@9W1N*?-XpOLl zKim4h1R{v>`PfR(-SOk173RMYQF{c6APG^mx+BVdi~5>_f&p8?{*^3CEcI&1s878* zo3~B)#SHC`t-QZcPwaZ_ld~wg{fD5{KSBTaE4XaTZUHED6E~PJ?e0G)n+G%dAAKnX zF>{|$Yh+$;#6JIAv?Yb%E|2e)v3(=1PqBw1PVI_>&+|o@I$i zZI#qZ3a!?$o*SC>>2y=y;c(Xg^xWa@1S8Du#QUO?r&i)1t}0(qY#qn~GNjVqMeF5~ric&!tL?1y~6m#b1;=NBqmwcXije z6l*CKs2^Qx5Wm*r&TSY}!|;0#I2UHRUd>Sy(L;f{aowNcI%k_AU-R0o)ZB}DrL)Oq zxAuW0P505_$ab3gfNRk|3^Xhy>#)7rV*W}weL(UnLDdDSb0Tz9Qs3KF?8xo!m00uN zNMCPBe3mVdlpgVT45RBr|9?|FX(`t4Hyf+8$Fk55Dl(Kf=6@r3DR$U>$yDbBCP&Lg zdB^`o()_W@Dcr{Y&xxE@{;RHy=OnEKC&k{m$Mx&rqhvW&N?rU}b@l!0k+#1pu~HtO z1P5RKxpsg4O$qGn`9%Z&`zIw|)IXuWlq+wAseW4jf8Q*({uRUd_s<&IfBO1y;akG_ zpFrE+Hz&n^iMqdknq2z-JEaW8|2@1dx#330zq3dex7nPWQl5Ex`c{x9`Rb;=*A6qJYsbQO z2Xa0m&3x?_)Z#V=Tmo#u`mt*tW}F1bzK2DIsn2HUv@(oAw~HA{@6n{oi=E<$6Z4V>2X#jrz(#n>=+RV%);1Y^!-!N9YF*`svb_T# zBQacO2UG*xlgU~Ta@>qYt{IegKn3@&Nv&Zgk)B2@gUBl!UeWe58VB&%{sXJ&CY0s} zt$u`u1PjbuArVMCKtVpMc{Xf+A;5_G6IXUH*f3RKMFc81 zY97zvMMDn&XU&beqN#ZMOC=ohI*gdRyQ0yDJr;H2y#ozRj-j<(4Is$cPENwgCX34} ze($+6>=6%uvI<1n{&5vYCmqcIOTSURU0ImuVVBtT+G}pV1kur(IlT0{gDOPrXz6O8p~6hzVeynV>l{XC8O|2`QOb zh{qxvk_Kr-_KmLA9Wf7-MoPOU3QFFGA9lpYXIo5LNu%r0n-iSKR}JF*_7gG5hr|VtVPa^F8W3f*HyZ0Ee?_# z0f8a5k4VDY^P_=p4o|w1G4Ce_?$;!@;oIiw4scV4-Q8iKpgDLj7(wi2+w~3M{S;3S z=HO7Rv5LZU-c@BW(42)&2r*6X2Cb`inaD9=y^?wjIeb6nEy8yM3~N9r@3Utqd4#F5 z-(Ga3;*-_KzASmYmK1?MM?}eA7!Z*}inqMH*YdaQ08nH{AU0HzA|a%P4b0hQt)xA7 zklrN2gHYt@&>%-#*Q`64Ezi7ZhC76D&SRx{Vm>9z^ufMKLz#RnM%nbW+Z=YfV5-5) zW~8P`hQ00xJK>r9%uGhHaxau2>Spd6-l(${o`|96L!-j963l61 zlbDjt7ysD(;wFE!-hGe6o7baaR!;*&ILpYNV6}RYJ~J-vXY-v4&1gNL4vPlIvSg-B z26c>*r(lm>2NN~G0tqkbt0I022Bj?-&eq7dVeVGk^>3K=W)FNB=z2!Zj=%u;Ga4K7K zv+USN`%hcG`EqK1-QMdzospz`X>Jf*c+@GW>^@q90LOMf}lpAn8vnwlh3c z*;m2vzfkOfWfFv5Jys>4>*H-NJ2Mgd>^hJOwXtSsbDh@4C;0Es)d!a2Wf0_Vl!GFo zY89$dcj2g7W}u5R!+(*JUwj(^zAHxVHk)(K1rX6R*hBm#2olRY5q5VS8WAx0dY3dk zz?{H<+68V1*(;*wL5;q=z|0 zcm~c*Ku*4C?3PO7B{@moX|O$EWv*h|GoYT$uc!yui5-tvdy|6nOs zY8k+-DMRKoFB>)*l%lv63(!`8#>V24dq)p9+}u;o=2>*|ILY5#3@#)NWg(i#9*1dL zC!<{~2ndE(L?*e0{id(3XFqby(!exL;wZR9-fp?bb`siSyR53!uZ{#S?5*0w*&mkx z6^fn=*PXx{(YbW%9bWKMuerk=d-H=eK;5x<`(->Qq-Jj|8)BB3YX+X6=~*`?jV}Uv zRK~qLS7wTz&F3n@`B)1H2hi}=JuT))1feNg=se}2_Ic?MoYp7k8Wc*nNI&`hT8T=tM1uuU2Z;EOE6C-pb1hr8Cns z5eYFTtQI6vYJ9vo@gqc zovg%A1pYvDUcl^dXWOEwrlsocJ--8QTSnw+*T&@l49iYvo;l(eQk^{Q&zXKUMFpXx z4;ty1oT4{1+yWnt8P{nlw9>g?74G@h5EcudLj@vdE8bE2hkFlSLJs2eILP6kgNP+x z?M_=+yrghRqr%~27b>29+zZ_VvxV$W+S=h)7ds%Xxu&1YLXpQb*0K5dA!=3VtE+~Z z=Ni-&k}Y)bJNK%=l9Gg`btqxpJ2aH@26zpnnSK@pr!PaMoWS!qkuqUY4Rv)cjbG;_DfVAz`PBWbG(=e^|9WB^RB-y zb&vp`boR0lI%P5tW6g*e-@W!!fSF3r!?hxW__0p!*?Amv2AXubJE(-4k;cq*7@GSh zwHAW`12Bsw+}t;6jWuK~=A(`9w1s9XrU-@8tT zXVV&q;M0PM7drUJZBE&}PC>z)g)@NpcGG?ZKCWAc6Y_>LO!t`l=IQ?8cOkRC%yvgI zgG+}m9kCnEDPeB_Gc5KakxlqPB^H3u^fkZN=KI(jJT={(h4T!IdLEZYF;^i|v@RjIOt&&gQac9|Q+hVgR!4@LR7 zl7@0=+{b@g)qC#E5jFl{4PfWZ@!WCt1b!V0BYWtlb_KpZ^`um;$f!G8#^GwDy`Jq^ zB_>ao)}Q5JK^mcETydr~BTbm;o|$KfkhM+kCBTuHjRWd<&}7GOA2WaQKzBy!m^~G; zo=3IQnQjr_LkRa8i>1>EyK1|Dk73zm|4vq53Y@m1&@wlw_lN6Qr; zl0Y?lTfX!UQg{IA*gW76s!c^<6c;3t=6DJTm8>3Wj=(IM3mRqEL$LEPssGQud#}qu;`PuMrJS!r`OF&9Up3f?4PP zRqw0Q}@QW#E@$b)M}hQl>A0HaiTK&9xQ%&6RjGYEGGU> zpjb<5F|b)O!vAHT)+O3Y{?O~wHyJ7Hb6?3M*1Nj@8qcR?V+zkklBmc3Uz(yAo@4^_ z=Kta`An};#(xz~(uoB!$o>ZQTS~^I>$EshMF|C^>FvdlfSH-FNn$V}*iCZ_~`iGpXGQog4o)=LYHCsL4s(#ac8u`loh{))4RR znmo=>Cq5=W-I^-sAkI8v=kyQAY(Fn3dd1XUoH(_fVU!7k5Xa$kWLCkq?4ccjr0odx zOW1GHlDg%>E`kGdxNC7;0Y`H{#TKC4QPV=CUp3>U5qq}zHGS6!7Biuw-O zIC-&CQgzrh?A;l1(#c|BTA-Aa0>(;_eLRBG(>&M2h`7m)e1hCsBzpt-p#3b+!-0yJ zc4@Xj3N%~B!h<2Ts=`x^=w`f$M=YvQ>GppX9{$G&210>(Bbvx(bWL4VbDo3bt|m@< ztA66*{yP$Ov?4BQIQkoQ134kP(8Pjy-ETM12lT$vrlbR<=>L==M%K`};`)0VL){7qN+=;~@yJVTyn1 zo4+BsJwBBmD_xMhwWr|mP(JudVDabw*y<>fs|wWmhq<2a%Ld3WwuF?X`N>w1r-Lng z{ldWU8UA}Pk+q|g2Gh(Txzm*>b?iXk<{%=SedQ|VkWN7wYGib}7-N=OGl!t^uYqF@ zfC^9}S<*=##pFvCg!z+WR3k+QxF~GY-t9*lHEdoW5QD9WcJ6H=f!(y%Z>trnd^TR!S@LfzFb=skj>`tyE;#eLJ|~A6#P;;y@_sx}q>s+@_QWd#yjf6L z$9sZdd0w{FM3BF^(E@LAp!rLTLzik60>Njov$q~v?oaApY6zBD6aAHsXIPI+hKH`qS! z$*l4Y{tTCrqg7VBO1}AWED!}QzPQGJd)0AcL#Kza|GqQnk9mf_`Y;~_}0&DP9r}H^Q^0ET(sWMb~_|~`TAQL)|{YN@e89pcD zVEK(Fetc^a^{zA$@F5A$z0}x_ldTEG8F?>`8#zixqW=x0wbuHvG#&h4MBem^^kuPzn%)pI)85VL*T7IYjmm>zr# zlv5-N?&HIFT~4pMtKm+RJnaUg<2IFpc(n*N`!UK+Phe-KCU<{&YqXmkZ4=BDzDorG z(29ft`3wbVa`1x4we{8QSIWZJjAlcK=Tc0|%mxe$t(S5ma-<{@Ms>qKN;b-aso6d{ zW8|tpY*C-<3^iMlmjN)b&jpUCqw^@H9q)#_TEfCg*EZ<$G|C#KpR`Eh7Vo=tE8HW7 zP)U?FoiT(*J`-(v;^{L%S}2LpLeKS&4SNst&ih`}?+2^y z)``}JiZV`l`s`&4jKD@bM;K^Q2GmEezdIH>zfQedxQ*L}^1;*cZ0>M@*!?I;=b}KA z5+?neC4>h<0uE9WfR+E&h?pWl9^KhTyQLvFZJKs zI3yC@mJ(HWAviqsR3{XC(#{$~KXd`Ewpcu&`Fz|*ZVx!n=*PdM&74RN4@$II+mFZ*H*G*fdT1gmUkaC6Oh%rdoCrNyIu`0O&I1M~Wyz}=3WVd20gD9@H@ zP-jduC~sOyl*r@hef3v+WK_18;AGvqiLA`MQ^ zh(JCs!?zjR>6t7R`tuFG5p*I=dnsR73>TN`?o5XzYZG1NC5P*Byl<4u>$*3}(g zqVi8+AxiGj;$94D3=|H89B`g?D&Cp)I_sbhPaYvp!{5>TRB14;wqug=?uuWLQbbPGm+gZ-$w}H&;IWs0 zSTVI|=E@`+S_$HfQb_@U_d&T2oJ?YJsmmokc$`SFUlKhpay5FnAh`D_b~*Y|^U8f& z>(%(9_E}h|?M3o^OdzhbP>(x4tyI}N@aP!kAS^o;UpTFW_S>355qFx(&J-N$A$yh7 ztBIV1ZhJ||{SMLLf(&Gw)FzsR@A*PZfZak`pob9D2NsZb{?+cr=bi>ceH0%|f2f z7@a^@&UNs(`0cc*F6Y7S6RK6E0Zj;e>%>6SjAnQl!fCBkhLd=@>180-Wd^&uNfv#j z+I?)1g?C=eGCB$*w#@+DW1R5iA<~ zJgj?(hdNN7p#i8UyJ=I>^s$BSyJSNGnRVX+F(%nYiD+fO=Hoi|g#GB0Q zBKL}B`sZ34hK@P1sp~NYg*LXW6C4?-EDa69OXI8ch zs&Gq==y(h}Mf&dHEzofmN_&%A)q3p`$m7nnX8m0plGFpwFuo6oLKC6J_xI{c`(aq0 z4UNp--vyAahf5w-bo&cum)8U-t_Khkse2!$Q)$i7&t_lJ+;L8q*9E()Q}0^TqsPYx z?l#_nk zmDJ!Z+g*j1wXDDF0B%1n8{+O@kpXpf!*Vh?pKkJ$0r%P7++T1)A`&0+No`gS;Fv7Z!8do3Y;Z}&Ma&dkf~%PtJ>f>~7@s=@U*2_-3;nc{->*0QBiw@4v4t+&Y;& zq4Yv;mb7C9TCGhw>f-jxtfFo@w%t*=_a~?i7r&pgUYF#lwueESR`=K?Gf9|fYP#V+poqHzn5Vj2XqBxmvy5S`mNi-6r+|Klc{ z?AYVNWKpF<03$0IjBA4jp82Rv73j4oHiOn7&IgE_JN~Q{N1ihV(3U1X?@!c$VC=fm zA&af*o%1)cuoWQS*;4b4HJ7$ops4$MYK|}6y*HQLZFWyz;-IZD#cmwE;AN)<^yf(} z0AZcxxJ~KHDLN0cuzR{@fo#O!o{sy`&bF)X&vbxnBFM+S0eO)T=|@^oB(E=@U~TA- zP!U`7JOj|X!QhU~Fn|EYU0l0@`07Ws>hIBR4QLvdY-_eff~6fjRhf^kSoAH)pNQdGCs6>%=-S?vAt-sA!<{I(eatg-rTufJ`(4 zC^)&nMU`AfAQW%jJO!OPFzpprk{?Xy3G0Xuy{ae4Dt<#p&BE4(>Y^v=o(%Bi5QqW^5`j{Yt~Ew_ckH5fusZEw3YnrH_I*l5*DOeG;|^-YfZ`9qF-4bYm#)<>JshNlR zL;N4dq-_<+f$lTl!Bi(IAiDmqvVH`91;Fn>H~}12Qe`xTYn~ZS0AXdmfU;cs(HgSnsURg>3yn`imT|qP{Bew!!Q#3B$4M7ORZyVJFWP^Bb5^?H z?Bfx5XJI>-cT)2T>S#Df#^SUqgv$nuO_tG^Pc%F;f9wRFtC?7DJUkiuYChGj$iv{oJfqcsqy3_~q@%dR zK=Lfr*Mqc$hJ_+v0HFfv=BHywd`&uy-;J$fm4nJFpo>~v< z8Rrd<^$A>{b!h>ZJrX@A60{g@3_9UR-yfqk2kS_*rTUlU>2D|-Cn za_z~KW9aNJEEQ*#T4g9WeM;syhjTDX0OJmk#;wu}ypoo?y*GC@)vV{+kKD>5p9XJ> zo}BXr4>(iSdc&u)N))k33``8zq^>G$4i!0FJne?}1CudGvVI%dA|4#q;4$-utwkUa zfb>@i*KZBZO)Nt;17@_WW>aU!afGKWUYM(oh@nxB+uAqpB{yaA`YQJWca=pr7@ zS}K1s_p_(_wrS*?>nbkNfpLfN3Rb;dTNY-1%SVRPT2)g(x1&?{InLQ4f6(bpLAM}o z%3U*;_hH2>BC&Ti2Ju+Y%ElMl;D=rGjm^|LG}~KM7d`3ZxK@d9ketB8YbgL+JmtrJ z#VWlF;|MbXeYU7-F|be|6$%hcsfXGLTnp08ZVN|CvW${xv+C|i-#9fV`D zqVCZ|X>g5ulg8$6FE^Ga5Oy|s-6z&aht@KsMHT~w83-v>QYXKEJ1*@YhK7u{MP{ZC z*dQ1f@r9JZ*cS{WTm_@xW53Uky%fOcDZQE~E^=r-wD@;P>w4#?p5w46m;*%Tq@9J4 zQY(6((EIREjKes9-#13xcW||7pxBI!_%1xqM{O@P%g@P#^;pSWFw6)7-p($o;+SRL zYTVyYIHQQpd9=eMwi~qjEMq-)VpbaWYL#Im5bn=OwiU6-ao^z`n7zRzw%rl61)ZZB zsG{gE!$q!r9YzZ^>s3*zq9paxv63jaA`vh)3;Fe}ORwi*iQbh+{DQgftIdyEwOU!# zziHw^7~tVA2YT6?Ec3N<6J(HrxaxGI(1yIdlT+08PLE3ffr-Jr;_@4eHRID^cTmIA ze|2jnbwDjsEA0bdFZq>oZYk-3VdL{{Xm%Uq|nzFCYu3QZuND&?h4y(^U3-DToM)4EYOoC+2y%US^RsJf%@E%&$m1Km zB0bDJP$KGo^PKd&4|D2f`<-$Gib~pP(re%nlxq1KW#~RQXKVBQy9(HSmhGK#*(l>4 z2>3DXifjRNpQx6e}(c9l=fQQmwbWx9%n!Q1vjbx*}ElikM7);#Bb{!=i4{GyWFGe zmi_wazy1$OE@9i3H_!bk8Z@wZ;nPUS+>Zfz!unqWNhw$}@S`fK`3306#p`)AKi5jM z_>GWX`HEjqQYt}N?=S0J4$&z=$(%nYYyQ4}{g8gUy?~LX&1~tKw{qVD*3i%Y4mj}| zOrWlIhSivV%ZthIp{BQj;Uc78wC#dRXu4Vd?wd0!b$qOsX-PRF9XB@qZnY&3E3Ptl zM-##oFIWK4Wg_m^l*`{cf7hxmN!gMw~l?4H~@ z^!&uP%6zBMShn$1N##`&eyfsl`u$5fzDI^kzT6yc>R!y@?^4gd_x)gLa3SvZuSfI* z0h-&O(E7*TSFctpe7UH^WEA%Pujui0>5_c=R7xfH8nBCOH%G`<{ z@+a=iIM+1O!>Sfa4ft0Kmdv{}x#iv`d4AQ2UR`2V)9!Ac-Th!mRT(+6?d|w@QJS_a z$-(GQRg{7izE3_M$Cac7kav<+t=0IG7liSsWNsRk7JW^BK8$l}H^`we2inan5N{dC zzr^fP7>woRT_1y7N^#QYy{{w4bl_Id?&5lT;a$?0%o7^dVJlJQ%7VAbmxZd7_%+qp zm%9_>8>0o8SD*cL@%m119%<)=b#c5~vEP(W?{i&Dkjkx?oSVq7@|msy8;-1`&tDWT z*du>S^m?e7+Q)IP$T8dPH*@F7qevhVBR3D}T$1OIp2I z<3XAG&tq8b#C+YDC}uLebDkM7`owi8Q~Hyva1{5ZLXML-y_O^KQ1F%6 z3*By>3qdaw?!8PlYR~AVtn06KCcHLM?h`5OJ;pZ7G*_EQFYYiO_|Iv=pF-d8m#n^t ziJ#46bX=>DNR0e24vnMkRhy7%c)xO}$~^h><7PCMIIB;zS@zw}O2eHO1~QiOu%Ru1 zp>so-M(59M2vTuB9bL&O2i}bGNiU()4_H_k2q_)7k)tW&KK`nk%{lR++SGNaiLQva zOSxQ$De@54wLhP%fZrtt@1&uIq$IWz0qr*(aM$H*4tjRJ_FBijZ5QoHcb27pGtE83 z!D(};aP6w;XB~MThtH=B#txj=DdUbuPG2so5E^a_ea_vrURg?(p^w5>GemzI-XUe4 zKI9zyX#c^|4N>#^S0a72Wy+WzgsWNY5ADOVB`DxCU%n)SbAAMY``$xeO%le!1oESjo#(Quc>&570On2rpOsT z*X=ETArPO)KX~(nSdqb#j@ejXe3`u^GbZDZS3E=~N2imAiVk7OYon6pHJ*^I`}_&| z_bSP@eC_o$V+Kc@_H`i%b-n{;GQ-oiPJpvlrOyjKUrw$y^uTS2!%mWYy*&z|O@0rL z31>7=_wr7gGcJ%^xgvA!aoqV>t`{Z}D^WSt8FUVeFf~&vyWJvv0Vy$oX$6_j^qOO@ zg1ta@X1tz^;NwD9+;oHJ-T9!r+}_<7*|mGh!V=+bEjK@Nb0zYzsJbTa=&qK_-4#6G z^JzU_D0frDLTZ)$GR-u1Htv4=Ln@FvSJOC}o8he2N0g$XWHw~ zF5Czdt+M>gzX^6fZLqbeuw6cmy`0OF1_&Vkg2KPiQ}NlbXFlhFYI5H>FN0ZTwtw)5 zpMmE2XlKKuC;y2;r-{#Q-9@k}yOcleqIyYmu7_t%a*I{L;9sT%@s~7v9nvLuT3d9% zHU9~PbMYEIndQwXE z%U&6J&W5D@YpG)uv9g*aCT)`8JXKNS3Eg(jQ|yv5?|zHx;GgPz>gyM^D?_7ATfK4p z+J{B@`naSIM)peY#G_xvL%m((K2;j=Ctj|bTg+J-^T*%p3pa{m`A+KmxIuPcfjxR( zD_?oXZ$;;P%8?q>-7qGRPeV9IBIRjj%HpTB=aYJK7H9iJso!?@Xmh_I(`8gh4Lj{ZIGptoe7YgfF=5wF-5y zn{=&FVvZ$WXowZXT09+|%?}79yftxPfTc(@V+mC+92p|%50i!Si$(|5lb9+E1QIn) zR4jNkW@3K#H;Q)h9{$7-+xf>xO03Y^1Y=1VRiOrZj^qpHF1m!PcBS$w=&lkwu zXy3f_OdQs`og^mtTpXr1)k#UuM|#>qviB+IyY}JHg~Plnu&Zs?_dTNi6#8KF*)E^o zS~$$+_4&{^vnLSTyrL@BQXrW8QEJsogZHiI-X?Za$}QCL6*z&1IQzhN`I5{ahuVGt z>WW9IyT`p>gsT@>K+A+A*dyq-yZ2?{gB&!iTmYCr>zHTUslPvZByu%Op#2YiKDA6b z!#vl1Ar9K%DkDY$SM@?@m4v@~Ps_Mc4+t>%Jz$0}?%kq&&(%C@RCHqH z&e!t2tru()_%$xcdQ{8n*MuM!Z!i4|!PM=;*!Z z=DzSsN@yAEu8FuAla%ppJypfTM2<4sTyI)3 zhjh^)#S4R~N4ZiTjSLvm!&*O1(#=KxsidF0^4x~?u37Z(VrPDc$E+iKfA*r7YM7-X z!i}rX%~Y_0oM`8y{G%Q{#!0d!O0|?y*eR2;k>;Kk>2ZHVvV<9ojm<8I)8V zw^zqbw0vtOu%P#dALl!;y5T>c8L5r9I>sz!e`73qjpac0J!`K0W8Tvj!!Hbx%4T9C zLXU1%f@bjg)>hWDbQC?k}+hmRO0GSW<^^^esOm*n}*@5)Hm zlRt&tuhTuE7xWeWb1{9>II3_ZLMW`RL;01NosQtD&MTRLJ9+msY4*g!u4+_U!vr;w zbj~&aaM#GmW;UBiv)-(Sv5l{nvuTwVqZ4Inio=XNJ}VmqtJmFgFw~mUV-PU~}BoH73 z4G9q3oyI-E-Q9yV0fM_HA-Fq@yL;pA1ZW_*LvSZ(kRYc>zHhI!&R%=pd&W6;+<#7u zjFEI#rHgvIsP}#5@0oKZhw%(YTXTqPa@`)YOF3XbofCtbv0jSYH;v zXlMEA*k|o)XKDJRWt)S-NPQ1G)J{+hH#VFCw?Bt0l*SOa@~x}d^VL09EnCO3Hm^Xs z{X1a%283$+TZ!S(rmMgxu;zK}-{*uv7xxj@_FeJnntF+l$gf^Y{AXns8aYz+mk%9L(D1XE^a-fzMVlO=08P;VAQ#-fb%tOH9pQRn3 zrGe1*!=^VAr1_A``br8QjtAYP5s3d*gJS%yFC710YEaU54^2}U{!0xi-2PA<`L_oB zw-@I3@u5lUe{*5*4|S5?{mX@YfZE|t4%vJ0Da>d%|A%;e^w2T39SabzyH|J-mi9Fz z^J@C3j&9%+{=@RY!EvFHdO*Dj9zqiJK~UT0ZOX5VHGafgLnA?wg%v8iYG zxv1+U<4;?EOzWC}8CgSbneflHKc5m19!3nTfdnn#-rm1T>5XnME3+vXmUXA#JKa|q z7~XYvZ0@1H-qhBW&rV6sXMV&tE$V2!_??9yxmd}-R$u)>Z8~4C(ZLOTx+{@6$sKlb zvR+?)<ADw_~`xo`)h<|jIi2R_ka zw(~KP$Vyl9Q{rAP6^FgXbV6vTPLWKQg|(n`omiA4o8V}wpBHEDX8AsLNTY>Oy{HVl zD=GLy+;3u)etdjurUPepPa1wfb#QN>kPbcmmVvwFL-ji^W4ke~h7YcDRyJjz=xE*6 zen?H2kVgC;vs3)5x1f-uN70rR-f~PDg9Hs5JILmq_G-vFGy|x^8+*XmOC{L2t1%@2 z4ay@Z=AJvbS$A@PnrfB6VL7x3-SZ@2VLjjL%`61#l$K!33cq5Fue?5#jUZ}OvkP)) z8cki2uzxJFRAHKS3@6A_T8y0r`>r{In`#SU?&_5e9NPd5{fY)Lx6B*^8AD=((8*yv?rS zc2*qr-vwVIdT0|7wOf^pJeeITjYE4guWP!}xBj}v{$zK*`?6l0O1Xndk26`o^#e#I zEXNg&jcW%Vohj+84-M<@m_b^iSVz7Ptk8x*Jli45I9yD8lq3X>AV=Gr&|#ydAV4^W zH)KbXKs+UWP|q>V!kUQ}n)gJwc%nH&Gg2>5kCj`X>vJ3YAdK}TRP(XmO33iAto$WE zQG$)~!H~)54_G*i3wcAig2rUq$?TmPwIw zaYV)n`TDRi>yLi7Ce3tOo^<$*v$;XV)82Hf(66 z6qp8lmv~UxY1nAOC{;#o+D>51a)rx?Cqzsl*)>dT_uI)sHN5*4)=5c4ozQae{``cV zJG}J4m#L7n3}~?)+2Hy$bw9auTH#f*d~h958)hE$IuC4?PgOst!s;6fE2%00Pn=ak zO+4^old^@r_``f{4U6XXIRSI!~93Z?iN$36-DI3c$aW^YY-h6dZ_rS8eucNu4 zxVy^P`ei3g7O@Tv`zrj?CzETKp*GP~Uw5)gsG^efv#!X!OSiQ{LbdB|2F^Iy2D@<_ z2V3zD!grGi2ue@pJssV(!ambN?KB`)V5w1V zX1I0YuD|p_>e8^%GE$f%Sh41n`WKs+LFP8ulQ>+CF){wpS|SzP8@k1UF!z>@Z0U3} z&2EN>RE{i8RmyO#$^v88l#2m%uG5elT&4QnRrmBoK~Ms{1|GkmmH64`VTJGzr4Xl7 z63Jsv%L}KbM5ovZ;h;`$@V#9!ePg4LnMMHK$tP^*pPJk36I!wn^_hWM1Sco4eQY)S zN9K2Mq1?VRnq&M94xvQLa!ZO_Pb)}yndWjzvUP{X#Eoa2zojglw8lWtFSeEuw1}TS+t8;P{?KRsGcHON`EjDMNn>nJ^hLt`Eje{>r0q)wD4(1(Dx!ou=>x-k-<; zdV13=TPR`?oQd;(C`g!-5q7c41w9fof!6!nXSD{zsnUtGdKo)d`HPd{>j?YO zfNNx(3}dKhKXW*?pNv(`Q>lbovRQC&YKZaTN1Vi&bGw$zzjhRPv;GEy6+59-a?m0y zTCSVny0ja*C@HJTA=Hw%F*b){iWxrb_TeDuC~RI1Ne!6S2irN~pQS-ej*c^m&_^9b zhwwhTcJAbu+lys43-Y~4HCX;0d>h+mCi@PghSZJTFLYHchyg56We8{UI4VfN=P1Wg z6N0+u3)OvWR(Xyn+o&AY+!?Kvvb2KNh8}%PYw>$nZJku-#9=OJs>-zfc5o^El#=%+ z+p(;-Xj)zXx_F(OS6~CX+UINv5OX$4dkWQ+5d!8XG@w|vC8NW4D>+y+|M*}-^E)rl zt~o&_kL{ld6bz%(ph1@Iuy;|~kx$sIK8d%$wk+_s&=7H4^jD@;i@ zGRizIG)66ESUMM*9_%Fm4Z_GaLWLy-VTx|r;vgB+xhvA(L@{y_fwkzt91T3UZ#sy@ zl@q|zzZxzuWa|DEx;XF^$6FPDJu!ts*TL@>qVGa%8Jyn!8h2OS+MWv)A*3b}X+)uc8=OVhIG~@Fby?FlJg58^x3MrRI0l z2&BRz`~^(zfR?C-NM1H|+d3v4L5Z_1rQ|7&k?z)ejDCQ z(Lyv2`7x&(CNEnQ)5(?8X_DQ{$p$)1vPkb3O-eM?PnhXr;?4})SHXGh#gV}gOPz!| z8mQW4JxA}v-@uDvq;3Eq66|X%q#fX|;mfD@`PH1O=4Lm*AqcXp`nF;htd)b;2or_E zKl;bW@fW?$hfuxm@7xu)2JKeLNV7{|Q%IKeUo}UTa$ae3>7qfI-25-s{b4m3p+n55;9-^kPr-b-tolnS#UhMTSwAx3~bEj);iaQ7K zKrgilZaEIKe!fkH4>eNvGWH4wzs5w;#(~Bne>aCnL+Rn+-1{=v<6#19{mN@GAp}l> z_O?dNJ13k8zGYLBySp1`X?4cAAV1!+H!@6=N+{mw2!g20t5o4IglM5*no4h;9-v|T zwZu3Bl1HR>zs~8h)8MY0KF)>~SK*o*-MJ@l8pdkw1&HOwT<5;WpS-z=4M49v71fxu z4g1_6m1Hpp*3g!!9#9+P=I_dg62gIMZ^5c&CDnkH#uv&<3xCH2iU@Qxh?c}v4m(sR zp<7k}B*3>Z%IGB;Q%iuB)w#N3w^*&mwA{VEKbI#|SVaat_G-{t=3ZxjyYBzU9?$Ex z*-K>^DKj8?I6lW~VmQ(p*05Sr=jDCB;HTBskdkRrCVp)mSqi1z_N`unz%3m@l62-@@8d!L z$a&nI^u#CJEiCfcjSZQlsI*k0-&S>!EWwZ1pa>O~uV@2w_0v-qhYK&o2e{{ltXYPK z01)}KdJoFW`uZdV`v5NZm$brwUdt+kj?d^OA1evBc`a~p)KU4fAJuq$ zP_FPo(S>W@eiX3qF9h=ckotSDr~u*)*gi7ti0_lO6ptr<SRlA=?uo5aiFxkzIyh*$opk0opaC=CEmT@Ne%td zEDwGZ6r4bN6g{yXyKDtG!IcKeDahch4f+WK8P^*j`LW^kE&ZMb&z`~oWTpDrqGv%E z_9OOd{}(L!s-x)|tmVN}SMDfvPXpTI;KvKmtC$YCwGI$s#eT|#TB>19|2xHj?v%!s zLs9u#)oT2FbzKym=ApI_6?ekS+;F0(yTi?C!vwouDkopLdpjP)R5eC^pZs#6YvZ?$ zDJz3}Ak2dvnDmlG6s1o`92Zi7K^4!T4wDw#aB+{h;uMO}uy;mqE-IDUKv=%9jPg=W zU8z1+vGEQXMoR3HlmHem^bIEM1X7kE3(b_MqA5tbUe&R9X z&ZxLZe)4m+O!mB$GId0Zo)s?qYLPa-VlyDur_qa2JcwnUi2-Eq&7JjA~9dGe4U4iv^bdIfj-YDXaU__7d(6}gc^olMR65U0reP1Nj~ zV;?&LvS~z!=i!lX_)jWLlLC(#Alw%~Mma6*=gEs_&-)0KFgvjW?yqUR0~=a!zVht? z48>r?k_xsKn=%P{tU05Str&>Uvs#yvTd}NOWjB`7ZSF=xJ=}$$Z$m+3yrROEGSo{` zok! ze{=Rp)9nfi-vs96R#PjsEfN`NxrvLu>*C}VZ!%(@_`CK<{&v`g^Q%+jL_e%!oQSBx zHg@6ZDySu`KsGN(W`|2nc>s3~n+6Wf%T$pfNSPBaC_k>3rch};jUEQ?PIxC;rixwE zxVmK-XC#&L{smNO6E=4Se~OT3Y0rC``7v4f-J_t;O@h?Jw}B0y6C>Kj_+Uz)&*=I` zt`x~HxBBJtga?(W1!X=%FlP8M@4-V)naTaqYJJ3S(^(P4Hle zhzf5D?L!OM-nI&<)Nv>h@J|)40UE|hHQSZu#C>KM|J56zYRv77Rn9l2lsO)vwM(12 zLiw+{^&mV~mdStyj~pF0`Uy>ECRH$Q*GYk&pH&qDS*r9YnRJ0l@zZ|FeQRJL2R2_* z*k2OeTDT?5Wqd@=II=h=S9lloV!~RZk$yZ@K#VivH5<~o{2=A-=ks7|aPTjRCcZS< zSn1s54Hf;S#dH|%>>D~9-6DZ_-9gqfFqCA5-U**TB%A8>(u{Ihds&>k;-fFFuZ3Y* zuNE;SH&EiF3*YYOdB?!x0!Wb6Ho6;gR4$YK2Yo}%bQv04Xs*-h<5P9421}nRU+E=x zIIqVPW;Bp^S_kSJlaH~inA8cksIkjJSNybB_5OG$0Srv)+3XDZp8+sy0zP2SZAE#1 z{n+nGDXjgZ8^nhm6XQNY zEQo6NICdgO)LLJA#=w8^`aWW6dEhg3zW2u}{(36>^}LE(A*DO^R#iT|S)r*JqY<40;+_6@{ABlQpwFc&JQSR>FRdGmsXU@x)W z1OqzeiDN(#MHLZ^a46arU9WPk8w!ZB*Iv<&zc6A#Y1vA4C{^Z(w`2JfYn^LN-~$Ln8#@oYg6YaGPDaN@uPUn)a3-C zJ5}(R&G$c6OJzDn(W_fTNy4%q#?>JuEGjuClxw!A8xf4NSB-q%rL~}S8lZXQ%mSeQ zD4!JBzG-H|;ttwnYV_edxONg2&1g}-nvK+Gt}@t$?3|~=U8lAo<%FPgNGq|PS=){+ zoM}7v{O0Q%{?biRQLA23rS|PesY4fg8w^~LZ9&6T^}5b^`S!=@|T44DGxfKr*s$Bl)QB(g)sBbcQIwsBXMLwPmzmh{0; PM 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 G=l=m;-G!(C literal 0 HcmV?d00001 diff --git a/docs/user-guide/etendo-classic/basic-features/material-requirement-planning/getting-started.md b/docs/user-guide/etendo-classic/basic-features/material-requirement-planning/getting-started.md index 9c16c22af1..191f8dd232 100644 --- a/docs/user-guide/etendo-classic/basic-features/material-requirement-planning/getting-started.md +++ b/docs/user-guide/etendo-classic/basic-features/material-requirement-planning/getting-started.md @@ -85,7 +85,7 @@ The MRP interacts with the following modules: - [Sales Management](../sales-management/getting-started.md): - [Sales Orders](../sales-management/transactions.md#sales-order) are optionally taken into account in the calculations of both plans - [Warehouse Management](../warehouse-management/getting-started.md): - - [Stock levels](../warehouse-management/analysis-tools.md#stock-report) are automatically taken into account in the calculations of both plans + - [Stock levels](../warehouse-management/analysis-tools/stock-report.md) are automatically taken into account in the calculations of both plans - [Production Management](../production-management/getting-started.md): - the [Process Plan](../production-management/setup.md#process-plan) is used for the calculation of the Manufacturing Plan - [Work Requirements](../production-management/transactions.md#work-requirement) are created from the Manufacturing Plan diff --git a/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md b/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md deleted file mode 100644 index 03d976e17a..0000000000 --- a/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md +++ /dev/null @@ -1,238 +0,0 @@ ---- -title: Warehouse Reports ---- -## Overview - -This section describes the windows related to warehouse reports in Etendo. These are: - - -[:material-file-document-outline: Pareto Product Report](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#pareto-product-report){ .md-button .md-button--primary }
- -[:material-file-document-outline: Material Transaction Report](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#material-transaction-report){ .md-button .md-button--primary }
- -[:material-file-document-outline: Stock Report](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#stock-report){ .md-button .md-button--primary }
- -[:material-file-document-outline: Stock History](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#stock-history){ .md-button .md-button--primary }
- -[:material-file-document-outline: Valued Stock Report](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#valued-stock-report){ .md-button .md-button--primary }
- -[:material-file-document-outline: Product Movements Report](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#product-movements-report){ .md-button .md-button--primary }
- -[:material-file-document-outline: Product Operations](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#product-operations){ .md-button .md-button--primary }
- -## Pareto Product Report - -:material-menu: `Application` > `Warehouse Management` > `Analysis Tools` > `Pareto Product Report` - -### **Overview** - -**Pareto Product Report** distributes products into three classes (A, B or C) according to the cost value that each product inventory has in the warehouse. Based on this classification the frequency of counting cycle can be decided (e.g. A products are counted weekly, B products monthly and C products yearly). - -Following distribution is used: A products represent 80% value of the warehouse, B - 15% and C- 5%. -> -!!! info - The classification is based on the cost of the product. That is why it is needed to have a Costing Rule validated and the Material Transaction costs of the product calculated up to date. - - -### **Parameters window** - -**Currency** field defines currency in which all monetary values (like **Cost**, **Value**) of the report are shown. Field is defaulted to the system currency. - -!!! warning - Please note that **Conversion Rate** to the report **Currency** should be specified for the report to work. - -**Update ABC** button fills in **ABC** field (updates value if the record exists or creates new record otherwise) of Org. Specific tab of the **Product** window for the organizations of the report output. - -### **Sample Report Output** - -![Material Transaction Report](../../../../assets/drive/1DpBnQAG8Xyk9rM5xKhQvdKNt8p-bm4tj.png) - - -Columns to note: - -- **Quantity:** is the current stock of the product (Quantity on Hand) in the warehouse selected. -- **Value:** that is the sum of all the material transaction costs of the product. -- **Cost:** this cost is calculated as the ratio between the product value and the product quantity above -- **Percentage:** that percentage is the ratio between the product value and the Total Value of the warehouse (which is the sum of all report lines). - -### **Persisted information** - -Aggregated information calculated for the Valued Stock can be used. Please refer to the  Valued Stock Report documentation for more details about how to generate the aggregated information. - -!!! note - Exactly as for the Valued Stock Report, the Pareto Product Report can also be launched without aggregated data. However, this feature is specially useful in high volume environments when you experience performance issues launching the report. - - -## Material Transaction Report - -:material-menu: `Application` > `Warehouse Management` > `Analysis Tools` > `Material Transaction Report` - -Material Transaction Report lists all documents (outgoing shipments and incoming receipts) grouped by Business Partner and document. For each document number data, product, warehouse, bin and quantity are shown. - -### Window Parameters - -Information on this report can be filtered using movement date, business partner, warehouse and project. Reports can be generated on HTML and PDF format. - -![Material Transaction Report](../../../../assets/drive/1B8aETuwl82fGlqe_SQLX3VAFz_2x6Tv2.png) - -### Sample Report Output - -![Material Transaction Report](../../../../assets/drive/1DxL6-LHWr4QxeYT1F1y0SbAT3-szlkGW.png) - - -## Stock Report - -:material-menu: `Application` > `Warehouse Management` > `Analysis Tools` > `Stock Report` - -Stock Report shows a stock level of all products (that have quantity on hand different from zero) and their location (warehouse and storage bin) grouped by product category. For each row product, quantity, unit, attribute, shelves, column, height and warehouse. - -### **Parameters window** - -The outcome of this report can be filtered by using movement date, product category, product and warehouse locators. - -![Material Transaction Report](../../../../assets/drive/1OgkmMsGjuADw-Sbqn1tfJ5WkCbq_AGx5.png) - -The outcome of this report can be viewed in HTML and PDF format. - -**Shelves (x)**, **Column (y)**, **Height (z)** fields correspond to **Row (X)**, **Stack (Y)** and **Level (Z)** of the Storage Bin. - -**Sample Report output** - -![Material Transaction Report](../../../../assets/drive/1jjN-TjQjeY-38odbT6xBRYCpACEmMUxz.png) - - -## Stock History - -:material-menu: `Application` > `Warehouse Management` > `Analysis Tools` > `Stock History` - -!!! info - To be able to include this functionality, the Warehouse Extensions Bundle must be installed. To do that, follow the instructions from the marketplace: [Warehouse Extensions Bundle](https://marketplace.etendo.cloud/#/product-details?module=EFDA39668E2E4DF2824FFF0A905E6A95){target="_blank"}. For more information about the available versions, core compatibility and new features, visit [Warehouse Extensions - Release notes](../../../../whats-new/release-notes/etendo-classic/bundles/warehouse-extensions/release-notes.md). - - -This is a read-only window in which the user is able to consult the daily stock. This functionality updates the daily information collected by the process in Background which was previously created for this purpose. - -The Stock History window is filled only by the background process "Create Stock History". It can be programmed from the 'Request Processing' window, where it can be assigned for which role and organization it is executed, and the periodicity with which it is executed. - -!!! info - Check the Technical documentation about Stock History to extend the process to calculate the registers for the daily stock history. - - -No data will be displayed in the window until search filters are applied to the window. Once the filters are applied, click the button on the right to complete the process. - -![](../../../../assets/drive/10C8VIJpu2FJkojmrZ8aKCZMZo0D0OpMJ.png) - -The window shows the following fields from which the user is able to filter and get the needed data: -- Stock date -- Product -- Attribute set value -- Warehouse -- Storage Bin -- Quantity on hand -- Reserved QtY -- Allocated Quantity -- Quantity in draft transaction - -![](../../../../assets/drive/1MhFI0Ii9bhm8EBBK-UalKWK90_-Gkm_G.png) - -This functionality includes a process to close the stock and save the historical information. - -## Valued Stock Report - -:material-menu: `Application` > `Warehouse Management` > `Analysis Tools` > `Valued Stock Report` - -### **Overview** - -Valued Stock Report shows the stock for a particular warehouse as well as the value of the stock. - -The cost is calculated as a sum of the cost of each material transaction of the product in the warehouse. The cost of the product transactions is calculated by the Costing Server process. - -### **Parameters Window** - -![Material Transaction Report](../../../../assets/drive/1HGDsUBdSrfe3_Nzk_ojKq3Ck-aGvIAdx.png) - - - -- **Organization**: This field allows the user to select among  Organizations of type "Legal with Accounting" and "Generic". -- **Warehouse**: If the selected organization is "Generic", then lists all warehouses that belong to it, else if the organization is "Legal with accounting" then no warehouse is displayed to be selected. -- **Date**: The report is going to show information up to the selected date. -- **Consolidated Warehouse**: If checked the information of the stock will be consolidated at Organization Level, otherwise, the information will be broken down by Warehouse. -- **Product Category**: Allows to show information of only the Product Category selected. -- **Currency**: Defines currency in which all monetary values (like Cost, Valuation) of the report are shown. - -!!! warning - Please note that Conversion Rate to the report Currency should be specified for the report to work. - -### **Output Window** - -![Material Transaction Report](../../../../assets/drive/1btCDeLvHaczMWt9lE05E0J8RFjePTZFM.png) - - -- **Product**: Name of the Product. -- **Quantity**: Stock of the Product on the selected date. -- **Unit** : Unit in which the stock is measured. -- **Unit Cost**: Cost of each particular unit. Ii is the result of dividing the Valuation between the Stock. -- **Valuation**: Valuation of the Stock. It is calculated by adding up all the valuations of each transaction that has happened in the Warehouse. -- **Actual Average/Standard Algorithm Cost**: Current Average/Standard Cost, the latest calculation of it's value. -- **Actual Average/Standard Algorithm Valuation**: Valuation of the Stock based on the Actual Average/Standard Cost. Ii is the result of multiplying the Stock by the Actual Cost. - -### **Persisted Information** - -This step is not necessary in order to launch the Report. However, if there are performance problems, this can help to greatly improve the performance of the Report. - -It is possible to aggregate information that allows for faster queries. This information is aggregated for each Closed Accounting Period, that means that accounting periods must be defined and, at least some of them, must be in a *Closed* or *Permanently Closed* Status. - -The information will persist until the first not closed Period. By doing so, it is possible to avoid looping through many records. However, no information will be aggregated after the first closed period and this can result in a non optimal performance of the report if it needs to retrieve plenty of information. - -!!! info - In order to use this functionality it is necessary to schedule the Background Process named *Generate Aggregated Data Background*. This can be done through the *Process Request* Window. - -![Material Transaction Report](../../../../assets/drive/1_mjP-Y6k-QGbCLm8FeIQI08YLJghMAfM.png) - -!!! info - It is recommended to schedule it daily, at a moment when the System does not have plenty of activity. It will aggregate data only when a new Period is Closed or Permanently Closed. - - -### **Limitations** - -By aggregating the information per each Closed Period, it is not possible to keep the date of each Transaction. So, when the Report is launched for a different Currency, all that information will be converted at the Period's Closing Date. This can result in minor discrepancies with the previous version due to conversions between currencies at different dates. - -## Product Movements Report - -:material-menu: `Application` > `Warehouse Management` > `Analysis Tools` > `Product Movements Report` - -Product Movements Report shows all receipts, shipments, moves and physical inventories grouped by Transaction Type and Business Partner. For each row, document number, date, description, locators and quantity are shown. - -### Parameters Window - -The outcome of this report can be filtered using movement date, product, attribute and business partner. - -Additionally, the user can include or exclude these documents: - -- Shipment/Receipt -- Physical Inventory -- Inventory Movements -- and Production. - -![Product Movements Report](../../../../assets/drive/1KCTc1ueZ2Z-w-saDYnPVYx-BUDlYq4Gl.png) - -### Sample Report Output - -![Product Movements Report](../../../../assets/drive/1Vc4maTIIThjJpROn9ES_qlzWXXupl7DU.png) - -## Product Operations - -:material-menu: `Application` > `Warehouse Management` > `Analysis Tools` > `Product Operations` - -!!! info - To be able to include this functionality, the Warehouse Extensions Bundle must be installed. To do that, follow the instructions from the marketplace: [Warehouse Extensions Bundle](https://marketplace.etendo.cloud/#/product-details?module=EFDA39668E2E4DF2824FFF0A905E6A95){target="_blank"}. For more information about the available versions, core compatibility and new features, visit [Warehouse Extensions - Release notes](../../../../whats-new/release-notes/etendo-classic/bundles/warehouse-extensions/release-notes.md). - - -This functionality **centralizes of all the transactions** associated with the product selected allowing the visualization of every movement and actions such as goods shipment/receip line, tax original cost, unit cost, storage bin and many other related actions to the products. - -This centralization facilitates the analysis and a complete understanding of the product operation performance. - -![alt text](../../../../assets/user-guide/etendo-classic/basic-features/warehouse-management/product-operations-0.png) - ---- - -This work is a derivative of [Warehouse Management](http://wiki.openbravo.com/wiki/Warehouse_Management){target="\_blank"} by [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, used under [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. This work is licensed under [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} by [Etendo](https://etendo.software){target="\_blank"}. \ No newline at end of file diff --git a/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/material-transaction-report.md b/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/material-transaction-report.md new file mode 100644 index 0000000000..3af7fe2255 --- /dev/null +++ b/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/material-transaction-report.md @@ -0,0 +1,21 @@ +--- +title: Material Transaction Report +--- + +:material-menu: `Application` > `Warehouse Management` > `Analysis Tools` > `Material Transaction Report` + +Material Transaction Report lists all documents (outgoing shipments and incoming receipts) grouped by Business Partner and document. For each document number data, product, warehouse, bin and quantity are shown. + +## Window Parameters + +Information on this report can be filtered using movement date, business partner, warehouse and project. Reports can be generated on HTML and PDF format. + +![Material Transaction Report](../../../../../assets/drive/1B8aETuwl82fGlqe_SQLX3VAFz_2x6Tv2.png) + +## Sample Report Output + +![Material Transaction Report](../../../../../assets/drive/1DxL6-LHWr4QxeYT1F1y0SbAT3-szlkGW.png) + +--- + +This work is a derivative of [Warehouse Management](http://wiki.openbravo.com/wiki/Warehouse_Management){target="\_blank"} by [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, used under [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. This work is licensed under [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} by [Etendo](https://etendo.software){target="\_blank"}. diff --git a/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/pareto-product-report.md b/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/pareto-product-report.md new file mode 100644 index 0000000000..a0c221f7ba --- /dev/null +++ b/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/pareto-product-report.md @@ -0,0 +1,88 @@ +--- +title: Pareto Product Report +--- + +:material-menu: `Application` > `Warehouse Management` > `Analysis Tools` > `Pareto Product Report` + +## Overview + +The Pareto Product Report classifies products into three categories — A, B and C — based on the proportion of total warehouse value each product represents. This technique is commonly known as **ABC analysis**, and it helps organizations focus inventory management efforts where they matter most. + +For example: + +| Category | Share of warehouse value | Typical action | +|----------|--------------------------|----------------| +| **A** | ~80 % | Cycle-count weekly, negotiate supplier terms, keep safety stock tight | +| **B** | ~15 % | Cycle-count monthly, standard reorder rules | +| **C** | ~5 % | Cycle-count yearly, consider consolidation or discontinuation | + +!!! info "Prerequisites" + The classification is based on the cost of each product. Before running the report, make sure the following are in place: + + - A validated [Costing Rule](../setup.md#costing-rules) for the organization. + - Up-to-date **Material Transaction** costs (found under `Warehouse Management` > `Transactions` > `Material Transaction`) — these are the cost entries recorded each time stock moves in or out. + + If either is missing, the report may return zero values or incomplete results. + +## Parameters + +Before generating the report, configure the following filters: + +| Field | Description | +|-------|-------------| +| **Organization** | Filters the report by the selected organization. | +| **Currency** | Defines the currency in which all monetary values (Cost, Value) are displayed. Defaults to the system currency. | +| **Warehouse** | Restricts the report to a specific warehouse within the selected organization. | + +!!! warning + A **Conversion Rate** to the selected currency must be defined for the report to work correctly. Verify this under `General Setup` > `Application` > `Conversion Rates` before running the report. + +After setting the filters, choose one of the two actions: + +- **Search** — Displays the results in the same window. +- **View Results** — Opens the report in a separate view, which can be useful for printing or side-by-side comparison. + +## Report Output + +The report lists every product in the selected warehouse, sorted by descending value, and assigns each product its ABC category. + +![Pareto Product Report output](../../../../../assets/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/pareto-product-report.png) + +### Column Reference + +| Column | Description | +|--------|-------------| +| **Search Key** | The unique identifier code of the product. | +| **Name** | The descriptive name of the product. | +| **Quantity** | The current stock (quantity on hand) of the product in the selected warehouse. | +| **Unit** | The unit of measure for the product. | +| **Cost** | The unit cost of the product (total Value divided by Quantity). | +| **Value** | The total inventory value of the product, calculated as the sum of all its material transaction costs. | +| **Percentage** | The ratio between the product Value and the total value of the warehouse (the sum of all report lines). | +| **Category** | The ABC classification assigned to the product (A, B or C). Products whose cumulative value reaches up to 80 % of the total are classified as A, those between 80 % and 95 % as B, and the remainder as C. | + +!!! tip "Reading the results" + Products at the top of the list (Category A) have the highest individual impact on warehouse value. Focus review and control efforts on these items first. + +## Update ABC + +The **Update ABC** button at the bottom of the window writes each product's classification back to the **ABC** field in the **Org. Specific** tab of the Product window. + +- If a record already exists for that organization, the value is **updated**. +- If no record exists, a **new record is created**. + +Once persisted, the ABC category becomes available for filtering and reporting in other areas of the application — for instance, when defining reorder rules or generating purchasing reports. + +!!! tip "When to update" + Run the report and click **Update ABC** periodically — for example, after each inventory valuation cycle or whenever significant stock movements have occurred. This keeps the classification aligned with current warehouse conditions. + +## Using Pre-Aggregated Data + +For faster performance in high-volume environments, this report can reuse aggregated data previously generated by the [Valued Stock Report](valued-stock-report.md). + +!!! note + The Pareto Product Report can also run without aggregated data. However, using aggregated data is especially useful in high-volume environments where you experience performance issues when launching the report. + +--- + +This work is a derivative of [Warehouse Management](http://wiki.openbravo.com/wiki/Warehouse_Management){target="\_blank"} by [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, used under [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. This work is licensed under [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} by [Etendo](https://etendo.software){target="\_blank"}. diff --git a/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-movements-report.md b/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-movements-report.md new file mode 100644 index 0000000000..4139f79ecc --- /dev/null +++ b/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-movements-report.md @@ -0,0 +1,28 @@ +--- +title: Product Movements Report +--- + +:material-menu: `Application` > `Warehouse Management` > `Analysis Tools` > `Product Movements Report` + +Product Movements Report shows all receipts, shipments, moves and physical inventories grouped by Transaction Type and Business Partner. For each row, document number, date, description, locators and quantity are shown. + +## Parameters Window + +The outcome of this report can be filtered using movement date, product, attribute and business partner. + +Additionally, the user can include or exclude these documents: + +- Shipment/Receipt +- Physical Inventory +- Inventory Movements +- and Production. + +![Product Movements Report](../../../../../assets/drive/1KCTc1ueZ2Z-w-saDYnPVYx-BUDlYq4Gl.png) + +## Sample Report Output + +![Product Movements Report](../../../../../assets/drive/1Vc4maTIIThjJpROn9ES_qlzWXXupl7DU.png) + +--- + +This work is a derivative of [Warehouse Management](http://wiki.openbravo.com/wiki/Warehouse_Management){target="\_blank"} by [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, used under [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. This work is licensed under [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} by [Etendo](https://etendo.software){target="\_blank"}. diff --git a/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-operations.md b/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-operations.md new file mode 100644 index 0000000000..c7b6384bac --- /dev/null +++ b/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-operations.md @@ -0,0 +1,19 @@ +--- +title: Product Operations +--- + +:material-menu: `Application` > `Warehouse Management` > `Analysis Tools` > `Product Operations` + +!!! info + To be able to include this functionality, the Warehouse Extensions Bundle must be installed. To do that, follow the instructions from the marketplace: [Warehouse Extensions Bundle](https://marketplace.etendo.cloud/#/product-details?module=EFDA39668E2E4DF2824FFF0A905E6A95){target="_blank"}. For more information about the available versions, core compatibility and new features, visit [Warehouse Extensions - Release notes](../../../../../whats-new/release-notes/etendo-classic/bundles/warehouse-extensions/release-notes.md). + + +This functionality **centralizes of all the transactions** associated with the product selected allowing the visualization of every movement and actions such as goods shipment/receip line, tax original cost, unit cost, storage bin and many other related actions to the products. + +This centralization facilitates the analysis and a complete understanding of the product operation performance. + +![alt text](../../../../../assets/user-guide/etendo-classic/basic-features/warehouse-management/product-operations-0.png) + +--- + +This work is a derivative of [Warehouse Management](http://wiki.openbravo.com/wiki/Warehouse_Management){target="\_blank"} by [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, used under [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. This work is licensed under [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} by [Etendo](https://etendo.software){target="\_blank"}. diff --git a/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-history.md b/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-history.md new file mode 100644 index 0000000000..14fa319249 --- /dev/null +++ b/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-history.md @@ -0,0 +1,40 @@ +--- +title: Stock History +--- + +:material-menu: `Application` > `Warehouse Management` > `Analysis Tools` > `Stock History` + +!!! info + To be able to include this functionality, the Warehouse Extensions Bundle must be installed. To do that, follow the instructions from the marketplace: [Warehouse Extensions Bundle](https://marketplace.etendo.cloud/#/product-details?module=EFDA39668E2E4DF2824FFF0A905E6A95){target="_blank"}. For more information about the available versions, core compatibility and new features, visit [Warehouse Extensions - Release notes](../../../../../whats-new/release-notes/etendo-classic/bundles/warehouse-extensions/release-notes.md). + + +This is a read-only window in which the user is able to consult the daily stock. This functionality updates the daily information collected by the process in Background which was previously created for this purpose. + +The Stock History window is filled only by the background process "Create Stock History". It can be programmed from the 'Request Processing' window, where it can be assigned for which role and organization it is executed, and the periodicity with which it is executed. + +!!! info + Check the Technical documentation about Stock History to extend the process to calculate the registers for the daily stock history. + + +No data will be displayed in the window until search filters are applied to the window. Once the filters are applied, click the button on the right to complete the process. + +![](../../../../../assets/drive/10C8VIJpu2FJkojmrZ8aKCZMZo0D0OpMJ.png) + +The window shows the following fields from which the user is able to filter and get the needed data: +- Stock date +- Product +- Attribute set value +- Warehouse +- Storage Bin +- Quantity on hand +- Reserved QtY +- Allocated Quantity +- Quantity in draft transaction + +![](../../../../../assets/drive/1MhFI0Ii9bhm8EBBK-UalKWK90_-Gkm_G.png) + +This functionality includes a process to close the stock and save the historical information. + +--- + +This work is a derivative of [Warehouse Management](http://wiki.openbravo.com/wiki/Warehouse_Management){target="\_blank"} by [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, used under [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. This work is licensed under [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} by [Etendo](https://etendo.software){target="\_blank"}. diff --git a/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-report.md b/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-report.md new file mode 100644 index 0000000000..0151a7304a --- /dev/null +++ b/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-report.md @@ -0,0 +1,25 @@ +--- +title: Stock Report +--- + +:material-menu: `Application` > `Warehouse Management` > `Analysis Tools` > `Stock Report` + +Stock Report shows a stock level of all products (that have quantity on hand different from zero) and their location (warehouse and storage bin) grouped by product category. For each row product, quantity, unit, attribute, shelves, column, height and warehouse. + +## Parameters window + +The outcome of this report can be filtered by using movement date, product category, product and warehouse locators. + +![Material Transaction Report](../../../../../assets/drive/1OgkmMsGjuADw-Sbqn1tfJ5WkCbq_AGx5.png) + +The outcome of this report can be viewed in HTML and PDF format. + +**Shelves (x)**, **Column (y)**, **Height (z)** fields correspond to **Row (X)**, **Stack (Y)** and **Level (Z)** of the Storage Bin. + +**Sample Report output** + +![Material Transaction Report](../../../../../assets/drive/1jjN-TjQjeY-38odbT6xBRYCpACEmMUxz.png) + +--- + +This work is a derivative of [Warehouse Management](http://wiki.openbravo.com/wiki/Warehouse_Management){target="\_blank"} by [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, used under [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. This work is licensed under [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} by [Etendo](https://etendo.software){target="\_blank"}. diff --git a/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/valued-stock-report.md b/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/valued-stock-report.md new file mode 100644 index 0000000000..ed972c6433 --- /dev/null +++ b/docs/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/valued-stock-report.md @@ -0,0 +1,65 @@ +--- +title: Valued Stock Report +--- + +:material-menu: `Application` > `Warehouse Management` > `Analysis Tools` > `Valued Stock Report` + +## Overview + +Valued Stock Report shows the stock for a particular warehouse as well as the value of the stock. + +The cost is calculated as a sum of the cost of each material transaction of the product in the warehouse. The cost of the product transactions is calculated by the Costing Server process. + +## Parameters Window + +![Material Transaction Report](../../../../../assets/drive/1HGDsUBdSrfe3_Nzk_ojKq3Ck-aGvIAdx.png) + + + +- **Organization**: This field allows the user to select among Organizations of type "Legal with Accounting" and "Generic". +- **Warehouse**: If the selected organization is "Generic", then lists all warehouses that belong to it, else if the organization is "Legal with accounting" then no warehouse is displayed to be selected. +- **Date**: The report is going to show information up to the selected date. +- **Consolidated Warehouse**: If checked the information of the stock will be consolidated at Organization Level, otherwise, the information will be broken down by Warehouse. +- **Product Category**: Allows to show information of only the Product Category selected. +- **Currency**: Defines currency in which all monetary values (like Cost, Valuation) of the report are shown. + +!!! warning + Please note that Conversion Rate to the report Currency should be specified for the report to work. + +## Output Window + +![Material Transaction Report](../../../../../assets/drive/1btCDeLvHaczMWt9lE05E0J8RFjePTZFM.png) + + +- **Product**: Name of the Product. +- **Quantity**: Stock of the Product on the selected date. +- **Unit** : Unit in which the stock is measured. +- **Unit Cost**: Cost of each particular unit. Ii is the result of dividing the Valuation between the Stock. +- **Valuation**: Valuation of the Stock. It is calculated by adding up all the valuations of each transaction that has happened in the Warehouse. +- **Actual Average/Standard Algorithm Cost**: Current Average/Standard Cost, the latest calculation of it's value. +- **Actual Average/Standard Algorithm Valuation**: Valuation of the Stock based on the Actual Average/Standard Cost. Ii is the result of multiplying the Stock by the Actual Cost. + +## Persisted Information + +This step is not necessary in order to launch the Report. However, if there are performance problems, this can help to greatly improve the performance of the Report. + +It is possible to aggregate information that allows for faster queries. This information is aggregated for each Closed Accounting Period, that means that accounting periods must be defined and, at least some of them, must be in a *Closed* or *Permanently Closed* Status. + +The information will persist until the first not closed Period. By doing so, it is possible to avoid looping through many records. However, no information will be aggregated after the first closed period and this can result in a non optimal performance of the report if it needs to retrieve plenty of information. + +!!! info + In order to use this functionality it is necessary to schedule the Background Process named *Generate Aggregated Data Background*. This can be done through the *Process Request* Window. + +![Material Transaction Report](../../../../../assets/drive/1_mjP-Y6k-QGbCLm8FeIQI08YLJghMAfM.png) + +!!! info + It is recommended to schedule it daily, at a moment when the System does not have plenty of activity. It will aggregate data only when a new Period is Closed or Permanently Closed. + + +## Limitations + +By aggregating the information per each Closed Period, it is not possible to keep the date of each Transaction. So, when the Report is launched for a different Currency, all that information will be converted at the Period's Closing Date. This can result in minor discrepancies with the previous version due to conversions between currencies at different dates. + +--- + +This work is a derivative of [Warehouse Management](http://wiki.openbravo.com/wiki/Warehouse_Management){target="\_blank"} by [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, used under [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. This work is licensed under [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} by [Etendo](https://etendo.software){target="\_blank"}. diff --git a/docs/user-guide/etendo-classic/basic-features/warehouse-management/getting-started.md b/docs/user-guide/etendo-classic/basic-features/warehouse-management/getting-started.md index 6f1034d43b..5c5418da00 100644 --- a/docs/user-guide/etendo-classic/basic-features/warehouse-management/getting-started.md +++ b/docs/user-guide/etendo-classic/basic-features/warehouse-management/getting-started.md @@ -55,7 +55,7 @@ In Warehouse Management, main Inventory Accuracy operations are executed as foll To get the *Physical Inventory*, Warehouse Staff: -- Starts with the products classifications and runs [Pareto Product Report](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#pareto-product-report) which distributes products into three classes (A, B or C) according to their cost percentage in the warehouse. +- Starts with the products classifications and runs [Pareto Product Report](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/pareto-product-report.md) which distributes products into three classes (A, B or C) according to their cost percentage in the warehouse. Based on the classification, the frequency of counting cycle can be decided (e.g. A products are counted weekly, B products monthly and C products yearly). The ABC classification is then populated to the [Manufacturing](../../../../user-guide/etendo-classic/basic-features/master-data-management/master-data.md#manufacturing) tab of the Product window by clicking the Update ABC button. - Note that the ABC classification is based on the cost of the product's transactions. That is why a [Costing Rule](../../../../user-guide/etendo-classic/basic-features/warehouse-management/setup.md#costing-rules) for the legal entity must be configured and validated and the [Costing Background Process](../../../../user-guide/etendo-classic/basic-features/general-setup/process-scheduling/process-request.md#costing) process has to be scheduled. @@ -68,12 +68,12 @@ To execute *Goods Movement* Warehouse Staff: For *Goods Tracking* Warehouse Staff uses: -- [Stock Report](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#stock-report) that gives a stock level of all products (that have inventory different from zero) and their location (warehouse and storage bin) grouped by product category. +- [Stock Report](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-report.md) that gives a stock level of all products (that have inventory different from zero) and their location (warehouse and storage bin) grouped by product category. - [Goods Transaction](../../../../user-guide/etendo-classic/basic-features/warehouse-management/transactions.md#goods-transaction) window that offers a read-only view with extensive filtering capabilities that shows all inventory transactions. -- [Product Movements Report](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#product-movements-report) shows all receipts, shipments, moves and physical inventories grouped by Transaction Type and Business Partner. -- [Material Transaction Report](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#material-transaction-report) lists all documents (shipments or receipts) grouped by Business Partner. +- [Product Movements Report](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-movements-report.md) shows all receipts, shipments, moves and physical inventories grouped by Transaction Type and Business Partner. +- [Material Transaction Report](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/material-transaction-report.md) lists all documents (shipments or receipts) grouped by Business Partner. -*Inventory Valuation* is done with the help of the [Valued Stock Report](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#valued-stock-report). +*Inventory Valuation* is done with the help of the [Valued Stock Report](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/valued-stock-report.md). This report shows the cost of the stock calculated by the Costing Server process. *Inventory Update* is done with the help of the [Inventory Amount Update](../../../../user-guide/etendo-classic/basic-features/warehouse-management/transactions.md#inventory-amount-update) window. diff --git a/docs/user-guide/etendo-classic/optional-features/bundles/warehouse-extensions/overview.md b/docs/user-guide/etendo-classic/optional-features/bundles/warehouse-extensions/overview.md index 861e81af61..305132a44d 100644 --- a/docs/user-guide/etendo-classic/optional-features/bundles/warehouse-extensions/overview.md +++ b/docs/user-guide/etendo-classic/optional-features/bundles/warehouse-extensions/overview.md @@ -71,7 +71,7 @@ In Etendo, the Picking functionality is designed to help warehouse staff manage This module allows you to observe and analyze in detail all transactions associated with the selected product. !!! info - For more information, visit [Product Operations user guide](../../../basic-features/warehouse-management/analysis-tools.md/#product-operations). + For more information, visit [Product Operations user guide](../../../basic-features/warehouse-management/analysis-tools/product-operations.md). ### Reactivate Warehouse Documents @@ -99,7 +99,7 @@ This functionality is part of the Warehouse Extensions Bundle and it is useful w This module provides updated information about the daily history stock of the products. !!! info - For more information, visit [Stock History user guide](../../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#stock-history) and [Stock History developer guide](../../../../../developer-guide/etendo-classic/bundles/warehouse-extensions-bundle.md#stock-history). + For more information, visit [Stock History user guide](../../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-history.md) and [Stock History developer guide](../../../../../developer-guide/etendo-classic/bundles/warehouse-extensions-bundle.md#stock-history). ### Stock Logistic Unit diff --git a/mkdocs.yml b/mkdocs.yml index 48196dbd25..b2f9d97104 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -178,7 +178,14 @@ plugins: - Warehouse Management: - ✨ Getting Started: user-guide/etendo-classic/basic-features/warehouse-management/getting-started.md - Transactions: user-guide/etendo-classic/basic-features/warehouse-management/transactions.md - - Analysis Tools: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md + - Analysis Tools: + - Pareto Product Report: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/pareto-product-report.md + - Material Transaction Report: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/material-transaction-report.md + - Stock Report: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-report.md + - Stock History: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-history.md + - Valued Stock Report: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/valued-stock-report.md + - Product Movements Report: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-movements-report.md + - Product Operations: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-operations.md - Setup: user-guide/etendo-classic/basic-features/warehouse-management/setup.md - Production Management: - ✨Getting Started: user-guide/etendo-classic/basic-features/production-management/getting-started.md @@ -1084,7 +1091,14 @@ nav: - Warehouse Management: - ✨ Getting Started: user-guide/etendo-classic/basic-features/warehouse-management/getting-started.md - Transactions: user-guide/etendo-classic/basic-features/warehouse-management/transactions.md - - Analysis Tools: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md + - Analysis Tools: + - Pareto Product Report: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/pareto-product-report.md + - Material Transaction Report: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/material-transaction-report.md + - Stock Report: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-report.md + - Stock History: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-history.md + - Valued Stock Report: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/valued-stock-report.md + - Product Movements Report: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-movements-report.md + - Product Operations: user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-operations.md - Setup: user-guide/etendo-classic/basic-features/warehouse-management/setup.md - Production Management: - ✨Getting Started: user-guide/etendo-classic/basic-features/production-management/getting-started.md From 94c12618bc774ba314a0363ed1e61e8f523108d5 Mon Sep 17 00:00:00 2001 From: etendobot <108091082+etendobot@users.noreply.github.com> Date: Wed, 1 Apr 2026 15:39:33 -0300 Subject: [PATCH 4/4] Feature ETP-2124: Update ES translation --- .../accounting/setup/accounting-templates.md | 109 +++++++++++------- .../getting-started.md | 6 +- .../material-transaction-report.md | 21 ++++ .../analysis-tools/pareto-product-report.md | 88 ++++++++++++++ .../product-movements-report.md | 28 +++++ .../analysis-tools/product-operations.md | 19 +++ .../analysis-tools/stock-history.md | 40 +++++++ .../analysis-tools/stock-report.md | 25 ++++ .../analysis-tools/valued-stock-report.md | 65 +++++++++++ .../warehouse-management/getting-started.md | 10 +- .../bundles/warehouse-extensions/overview.md | 4 +- 11 files changed, 366 insertions(+), 49 deletions(-) create mode 100644 docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/material-transaction-report.md create mode 100644 docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/pareto-product-report.md create mode 100644 docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-movements-report.md create mode 100644 docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-operations.md create mode 100644 docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-history.md create mode 100644 docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-report.md create mode 100644 docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/valued-stock-report.md diff --git a/docs/es/user-guide/etendo-classic/basic-features/financial-management/accounting/setup/accounting-templates.md b/docs/es/user-guide/etendo-classic/basic-features/financial-management/accounting/setup/accounting-templates.md index 01c5ba7b63..42e4265079 100644 --- a/docs/es/user-guide/etendo-classic/basic-features/financial-management/accounting/setup/accounting-templates.md +++ b/docs/es/user-guide/etendo-classic/basic-features/financial-management/accounting/setup/accounting-templates.md @@ -5,76 +5,105 @@ tags: - Plantillas - Gestión Financiera - Configuración - - Contabilidad --- -# Plantillas de Contabilidad +# Plantillas de Contabilidad :material-menu: `Aplicación` > `Gestión Financiera` > `Contabilidad` > `Configuración` > `Plantillas de Contabilidad` -## Visión general - -Las plantillas de contabilidad en Etendo sobrescriben el comportamiento contable predeterminado. Cada plantilla está relacionada con una tabla específica. +## Visión general + +Las Plantillas de Contabilidad permiten a las organizaciones **reemplazar los asientos contables predeterminados de Etendo con reglas de contabilización personalizadas** para tipos de documento específicos. Cuando se contabiliza un documento, el motor contable comprueba si existe una plantilla definida para ese tipo de documento y, si es así, ejecuta la lógica personalizada en lugar del comportamiento de contabilización estándar. + +Esto suele ser necesario cuando: + +- **Country-specific legal requirements** exigen un tratamiento contable diferente para ciertas transacciones (por ejemplo, facturas, albaranes de entrada/salida de mercancías o pagos). +- Deben aplicarse **Special posting rules** a un subconjunto de documentos, como generar líneas de libro mayor adicionales o distribuir importes de forma diferente. + +!!!info + Configurar una Plantilla de Contabilidad es una tarea colaborativa. Un **developer** escribe la lógica de contabilización personalizada (una clase Java) y un **finance administrator** configura la plantilla en esta ventana para activarla. Si su organización necesita una plantilla personalizada, coordínese con su equipo de desarrollo antes de realizar cambios. + +Puede definir una única plantilla que cubra todos los documentos de un tipo dado (por ejemplo, todas las facturas), o crear plantillas separadas que se dirijan solo a categorías de documento específicas [document categories](document-type.md) (por ejemplo, solo facturas de compra), dejando el comportamiento predeterminado para el resto. + +## Cabecera + +![Vista de cuadrícula de Plantillas de Contabilidad](../../../../../../assets/drive/1QFEgaMk9QRkcpsjLLGOZJNKRJo75LvKr.png) -Los asientos contables generados por Etendo normalmente necesitan generarse de una forma diferente para cumplir los requisitos legales de un país concreto. Para dar soporte a este tipo de requisitos, Etendo permite sobrescribir el código que genera los asientos contables mediante lo que se denomina Plantillas de Contabilidad. Cada vez que se contabiliza un documento, el motor contable comprueba si existe alguna Plantilla de Contabilidad definida para la tabla asociada o para el documento concreto y la ejecuta en lugar del código predeterminado del Core. - -!!! warning - Esta es una funcionalidad potente que debe utilizarse con precaución. El código que genera los asientos contables debe probarse en profundidad antes de desplegarlo en una instancia real. +Campos a tener en cuenta: -## Creación de la configuración de la Plantilla de Contabilidad +- **Nombre**: Un identificador descriptivo para la plantilla de contabilidad. Use un nombre claro que refleje la regla de contabilización o el tipo de documento al que afecta. +- **Nombre de la clase Java**: El identificador técnico de la lógica de contabilización personalizada. Su desarrollador le proporcionará este valor; péguelo exactamente tal como se indique. +- **Tabla**: El tipo de documento que esta plantilla sobrescribe. Seleccione la tabla correspondiente a las transacciones que desea personalizar. En el desplegable, busque nombres como `C_Invoice` (facturas) o `M_InOut` (albaranes de mercancías); estos son nombres internos de tabla que Etendo usa para identificar cada tipo de documento. +- **Descripción**: Información adicional opcional sobre el propósito o comportamiento de esta plantilla (no se muestra en la vista de cuadrícula anterior). +- **Activo**: Un indicador que señala si esta plantilla está actualmente en uso. Desactivar una plantilla restaura el comportamiento de contabilización predeterminado para el tipo de documento asociado. -La clase Java que implementa la generación de los nuevos asientos contables se define en la ventana Plantillas de Contabilidad. La definición es bastante sencilla y solo requiere un nombre, el nombre de la clase Java (que debe estar dentro del paquete Java del módulo) y la tabla para la que el usuario desea sobrescribir sus asientos contables (por ejemplo, C_Invoice para facturas, M_InOut para albaranes de entrada/salida de mercancías, etc.). +!!!warning + Las Plantillas de Contabilidad sobrescriben la lógica de contabilización estándar para el tipo de documento seleccionado. Antes de activar una plantilla en un entorno de producción: -![](../../../../../../assets/drive/1QFEgaMk9QRkcpsjLLGOZJNKRJo75LvKr.png) + - **Test thoroughly** en una instancia de desarrollo o preproducción contabilizando documentos de ejemplo y revisando los asientos contables generados. + - **Involve your development team** para confirmar que la lógica personalizada gestiona todos los escenarios esperados. + - **Have an auditor or accounting manager review** los asientos resultantes para asegurarse de que cumplen los requisitos legales y organizativos. -Esta Plantilla de Contabilidad se asociará posteriormente a las Tablas Activas o a un Documento. Por ello, en este paso es importante definir tantas clases Java como Tablas Activas o Documentos para los que se desee sobrescribir su comportamiento contable. -Por ejemplo, se puede definir una única clase Java para sobrescribir el comportamiento contable de todas las facturas (facturas de venta, facturas de compra, abonos de compra/venta, etc.) o, alternativamente, definir una clase para sobrescribir únicamente los asientos contables de las facturas de compra (factura AP) y mantener el comportamiento predeterminado para el resto de facturas. +Una vez configurada la plantilla, queda asociada a las tablas activas o documentos correspondientes. Los asientos que genere aparecerán en los informes de [General Ledger Configuration](general-ledger-configuration.md) junto con las contabilizaciones estándar, siguiendo las reglas definidas en [Account Tree](account-tree.md). -### Definición del conjunto de datos +## Definición del conjunto de datos -La definición del conjunto de datos es un paso clave en este proceso. Una definición incorrecta del conjunto de datos puede echar a perder todo el trabajo previo, por lo que es importante seguir todas estas consideraciones: +!!!info + Esta sección está destinada a equipos de desarrollo que necesitan empaquetar una plantilla de contabilidad personalizada como un módulo distribuible. Si solo está configurando una plantilla existente, puede omitir esta sección. -- El conjunto de datos debe pertenecer al módulo de la plantilla de contabilidad. -- Intente evitar caracteres extraños en el nombre del conjunto de datos. Esta cadena se utiliza para generar el nombre del archivo XML que almacena el conjunto de datos. -- El Nivel de Acceso a Datos debe establecerse en Sistema/Cliente, lo que significa que permitimos a los usuarios aplicar la configuración solo a nivel de Cliente (Organización *). -- El indicador Permitir exportación debe estar marcado. -- Dentro de la pestaña Tabla, incluya la tabla AD_CreateFact_template, que es la que almacena la configuración de la Plantilla de Contabilidad. -- La cláusula Where HQL/SQL es un campo importante, ya que permite filtrar los registros que el usuario desea incluir en el conjunto de datos. En el ejemplo se han filtrado todos los registros que están dentro del nombre del paquete Java del módulo. +La definición del conjunto de datos determina qué registros se exportan con el módulo de la plantilla de contabilidad para que la plantilla pueda instalarse en otros entornos. Una definición correcta del conjunto de datos es esencial: una incorrecta puede dejar toda la plantilla inutilizable después de la instalación. Para obtener información general sobre cómo interactúan las organizaciones y los conjuntos de datos durante la configuración, consulte [Initial Organization Setup](../../../general-setup/enterprise-model/initial-organization-setup.md). -![](../../../../../../assets/drive/1stuKmJOwNnsth6RG3HX9tj5_6v3OY83U.png) +Siga estas directrices al definir el conjunto de datos: -La definición del conjunto de datos está lista, por lo que el usuario solo necesita exportarla a un archivo pulsando el botón Exportar datos de referencia. Este proceso consulta las tablas anteriores y obtiene todos los registros que cumplen la cláusula Where HQL/SQL, generando un archivo XML dentro del directorio referencedata/standard del módulo. Como comprobación rápida, este archivo puede abrirse con cualquier editor de texto plano y el usuario puede verificar que contiene varias líneas. -En caso de que el archivo esté vacío, el usuario debe revisar de nuevo la definición del conjunto de datos, especialmente la cláusula Where HQL/SQL utilizada para cada tabla. +- El conjunto de datos **debe pertenecer al módulo de la plantilla de contabilidad**. +- **Evite caracteres especiales** en el nombre del conjunto de datos. Esta cadena se utiliza para generar el nombre del archivo XML que almacena el conjunto de datos. +- **Nivel de Acceso a Datos** debe establecerse en `Sistema/Cliente`, lo que significa que los usuarios pueden aplicar la configuración solo a nivel de Cliente (Organización `*`). Nota: la captura de pantalla siguiente puede mostrar un valor diferente según la versión de Etendo. +- El indicador **Permitir exportar** debe estar marcado. +- Dentro de la pestaña **Tabla**, incluya la tabla `AD_CreateFact_template`, que almacena la configuración de la Plantilla de Contabilidad. +- La **Cláusula Where HQL/SQL** es fundamental para filtrar qué registros se incluyen en el conjunto de datos. Normalmente, la cláusula filtra todos los registros cuyo nombre de clase Java se encuentra dentro del paquete Java del módulo. -#### Prueba del conjunto de datos +![Ventana de definición del conjunto de datos](../../../../../../assets/drive/1stuKmJOwNnsth6RG3HX9tj5_6v3OY83U.png) -La prueba real para asegurar que el conjunto de datos de impuestos es correcto puede realizarse dentro de la instancia de desarrollo. La prueba consiste en crear un nuevo cliente ejecutando la Configuración Inicial del Cliente y seleccionando el nuevo conjunto de datos de plantilla de contabilidad de prueba. +Una vez completada la definición del conjunto de datos, expórtelo pulsando el botón **Exportar Datos de Referencia**. Este proceso consulta las tablas configuradas, recupera todos los registros que coinciden con la Cláusula Where HQL/SQL y genera un archivo XML en el directorio `referencedata/standard` del módulo. -![](../../../../../../assets/drive/14yYG4b3onJefyFiz6sV8KlImkfi5ijCf.png) +!!!info + Como comprobación rápida, abra el archivo XML generado con un editor de texto y verifique que contiene datos. Si el archivo está vacío, revise la definición del conjunto de datos, especialmente la Cláusula Where HQL/SQL de cada tabla. -!!! info - Si los datos dentro del conjunto de datos son consistentes, el Proceso de Configuración Inicial del Cliente debería completarse correctamente; de lo contrario, fallará mostrando una descripción del error. +## Prueba del conjunto de datos - -Tras una Configuración Inicial del Cliente correcta, inicie sesión en el nuevo cliente, vaya a la ventana Plantillas de Contabilidad y compruebe que el registro está ahí. +La forma recomendada de verificar que el conjunto de datos es correcto es crear un nuevo cliente dentro de la instancia de desarrollo usando el proceso [Crear entidad](../../../general-setup/getting-started.md#initial-client-setup), seleccionando durante la configuración el nuevo conjunto de datos de plantilla de contabilidad. -## Especificación funcional +![Selección de datos de referencia de Crear entidad](../../../../../../assets/drive/14yYG4b3onJefyFiz6sV8KlImkfi5ijCf.png) + +!!!info + Si los datos dentro del conjunto de datos son consistentes, el proceso de Crear entidad debería completarse correctamente. En caso contrario, fallará mostrando una descripción del error que indique qué ha ocurrido. + +Tras una configuración correcta de Crear entidad, inicie sesión en el nuevo cliente, vaya a la ventana **Plantillas de Contabilidad** y confirme que el registro de la plantilla está presente. A continuación, puede proceder a probar la contabilización creando documentos de ejemplo y verificando que se generan correctamente los asientos contables personalizados. + +## Cómo funcionan las Plantillas de Contabilidad + +Esta sección explica el diseño técnico que hay detrás de las Plantillas de Contabilidad. Se proporciona como referencia y no es necesaria para la configuración diaria. ### Visión general -Actualmente, Etendo construye asientos asociados a documentos siguiendo un comportamiento codificado de forma rígida. Para modificar el asiento generado, debe modificarse el código. El código actual se ha convertido en un módulo llamado core. Si un módulo quiere modificar los asientos contables generados por documentos, debe modificarse core, y esto no es deseable en absoluto. -Con este nuevo desarrollo en core, los módulos podrán modificar fácilmente los asientos generados por cada documento. +De forma predeterminada, Etendo genera asientos contables para los documentos mediante una lógica de contabilización integrada. Las Plantillas de Contabilidad introducen un mecanismo que permite a los **módulos sobrescribir este comportamiento predeterminado** sin modificar el código de la aplicación core. Esto significa que las organizaciones pueden adaptar cómo se generan los asientos contables para cumplir requisitos legales o de negocio específicos mediante módulos independientes e instalables. ### Alcance -El objetivo de este proyecto es permitir que los módulos modifiquen la forma en que se generan los asientos al contabilizar documentos. + +El objetivo de las Plantillas de Contabilidad es permitir que los módulos **modifiquen cómo se generan los asientos contables** cuando se contabilizan documentos. En lugar de requerir cambios en el código core, un módulo puede proporcionar su propia lógica de contabilización, que el motor contable utilizará en lugar de la predeterminada. ### Consideraciones de diseño -Se incluirá una nueva capa entre el documento y la lógica que contabiliza dicho documento. En una nueva ventana, cada documento se asigna al servlet que implementa la lógica para contabilizarlo. De este modo, con solo modificar los valores en esta ventana, se cambia el comportamiento contable. Si un nuevo módulo quiere cambiar el asiento generado al contabilizar una factura, se desarrolla un nuevo servlet siguiendo el comportamiento deseado. Al mismo tiempo, se cambiará la asignación de las facturas al servlet que contabiliza por el servlet desarrollado en el módulo. De este modo, se cambia el comportamiento de toda la aplicación. -### Requisitos funcionales +Las Plantillas de Contabilidad funcionan insertando una **nueva capa entre el documento y la lógica de contabilización**. En la ventana Plantillas de Contabilidad, cada tipo de documento se asigna a la clase que implementa su comportamiento de contabilización. Para cambiar cómo se contabiliza un documento: + +1. Un desarrollador crea una nueva clase que implementa la lógica de contabilización deseada. +2. La plantilla se configura en esta ventana para asignar el tipo de documento correspondiente a la nueva clase. +3. A partir de ese momento, todos los documentos de ese tipo usan la lógica personalizada. + +Este enfoque es transparente para los usuarios finales: el proceso de contabilización se ve y funciona igual desde la interfaz de la aplicación. La única diferencia está en los asientos contables generados, que siguen las reglas definidas por la plantilla personalizada en lugar de los valores predeterminados integrados. -!!! info - La Aplicación no se ve afectada por estos desarrollos, porque todos los cambios en la forma en que se contabilizan los documentos son transparentes para el usuario. Solo es necesaria una nueva ventana, que se configura automáticamente para el usuario al actualizar. +!!!info + La interfaz de la aplicación no se ve afectada por estos cambios. Todas las modificaciones en el comportamiento de contabilización ocurren en segundo plano. La ventana Plantillas de Contabilidad es la única configuración adicional necesaria y se establece automáticamente cuando se instala el módulo de la plantilla. --- diff --git a/docs/es/user-guide/etendo-classic/basic-features/material-requirement-planning/getting-started.md b/docs/es/user-guide/etendo-classic/basic-features/material-requirement-planning/getting-started.md index bddbf12ef2..14bea21ac2 100644 --- a/docs/es/user-guide/etendo-classic/basic-features/material-requirement-planning/getting-started.md +++ b/docs/es/user-guide/etendo-classic/basic-features/material-requirement-planning/getting-started.md @@ -83,11 +83,13 @@ El MRP interactúa con los siguientes módulos: - [Gestión de Ventas](../sales-management/getting-started.md): - [Pedido de venta](../sales-management/transactions.md#sales-order) se tienen opcionalmente en cuenta en los cálculos de ambos planes - [Gestión de Almacén](../warehouse-management/getting-started.md): - - los [niveles de stock](../warehouse-management/analysis-tools.md#stock-report) se tienen automáticamente en cuenta en los cálculos de ambos planes + - los [niveles de stock](../warehouse-management/analysis-tools/stock-report.md) se tienen automáticamente en cuenta en los cálculos de ambos planes - [Gestión de Producción](../production-management/getting-started.md): - el [Plan de Producción](../production-management/setup.md#process-plan) se utiliza para el cálculo de la Planificación de la producción - [Orden de Fabricación](../production-management/transactions.md#work-requirement) se crean desde la Planificación de la producción --- -- Este trabajo es una obra derivada de [Gestión de MRP](https://wiki.openbravo.com/wiki/Material_Requirement_Planning){target="_blank"} de [Openbravo S.L.U](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="_blank"}, con licencia [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"}. \ No newline at end of file +- Este trabajo es una obra derivada de [Gestión de MRP](https://wiki.openbravo.com/wiki/Material_Requirement_Planning){target="_blank"} de [Openbravo S.L.U](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="_blank"}, con licencia [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"}. + +--- \ No newline at end of file diff --git a/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/material-transaction-report.md b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/material-transaction-report.md new file mode 100644 index 0000000000..8fbab1d674 --- /dev/null +++ b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/material-transaction-report.md @@ -0,0 +1,21 @@ +--- +title: Informe Transacción de Material +--- + +:material-menu: `Aplicación` > `Gestión de Almacén` > `Herramientas de análisis` > `Informe Transacción de Material` + +El Informe Transacción de Material lista todos los documentos (envíos de salida y recepciones de entrada) agrupados por tercero y documento. Para cada número de documento se muestran los datos, el producto, el almacén, el contenedor y la cantidad. + +## Parámetros de la ventana + +La información de este informe puede filtrarse utilizando la fecha de movimiento, el tercero, el almacén y el proyecto. Los informes pueden generarse en formato HTML y PDF. + +![Informe Transacción de Material](../../../../../assets/drive/1B8aETuwl82fGlqe_SQLX3VAFz_2x6Tv2.png) + +## Ejemplo de salida del informe + +![Informe Transacción de Material](../../../../../assets/drive/1DxL6-LHWr4QxeYT1F1y0SbAT3-szlkGW.png) + +--- + +Este trabajo es un derivado de [Gestión de Almacén](http://wiki.openbravo.com/wiki/Warehouse_Management){target="\_blank"} de [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, utilizado bajo [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. Este trabajo está licenciado bajo [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} por [Etendo](https://etendo.software){target="\_blank"}. \ No newline at end of file diff --git a/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/pareto-product-report.md b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/pareto-product-report.md new file mode 100644 index 0000000000..ab748a4203 --- /dev/null +++ b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/pareto-product-report.md @@ -0,0 +1,88 @@ +--- +title: Informe Pareto de Productos +--- + +:material-menu: `Aplicación` > `Gestión de Almacén` > `Herramientas de análisis` > `Informe Pareto de Productos` + +## Overview + +El Informe Pareto de Productos clasifica los productos en tres categorías — A, B y C — en función de la proporción del valor total del almacén que representa cada producto. Esta técnica se conoce comúnmente como **ABC analysis**, y ayuda a las organizaciones a centrar los esfuerzos de gestión de inventario donde más importan. + +Por ejemplo: + +| Category | Share of warehouse value | Typical action | +|----------|--------------------------|----------------| +| **A** | ~80 % | Cycle-count weekly, negotiate supplier terms, keep safety stock tight | +| **B** | ~15 % | Cycle-count monthly, standard reorder rules | +| **C** | ~5 % | Cycle-count yearly, consider consolidation or discontinuation | + +!!! info "Prerequisites" + La clasificación se basa en el coste de cada producto. Antes de ejecutar el informe, asegúrate de que se cumplen los siguientes requisitos: + + - Una [Regla de cálculo de costes](../setup.md#costing-rules) validada para la organización. + - Costes de **Material Transaction** actualizados (se encuentran en `Gestión de Almacén` > `Transactions` > `Material Transaction`) — estas son las entradas de coste registradas cada vez que el stock entra o sale. + + Si falta alguno de ellos, el informe puede devolver valores cero o resultados incompletos. + +## Parameters + +Antes de generar el informe, configura los siguientes filtros: + +| Field | Description | +|-------|-------------| +| **Organization** | Filtra el informe por la organización seleccionada. | +| **Currency** | Define la moneda en la que se muestran todos los valores monetarios (Cost, Value). Por defecto, usa la moneda del sistema. | +| **Warehouse** | Restringe el informe a un almacén específico dentro de la organización seleccionada. | + +!!! warning + Debe definirse una **Conversión** a la moneda seleccionada para que el informe funcione correctamente. Verifícalo en `General Setup` > `Aplicación` > `Conversion Rates` antes de ejecutar el informe. + +Después de establecer los filtros, elige una de las dos acciones: + +- **Search** — Muestra los resultados en la misma ventana. +- **View Results** — Abre el informe en una vista separada, lo que puede ser útil para imprimir o comparar lado a lado. + +## Report Output + +El informe lista cada producto del almacén seleccionado, ordenado por valor descendente, y asigna a cada producto su categoría ABC. + +![Pareto Product Report output](../../../../../assets/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/pareto-product-report.png) + +### Column Reference + +| Column | Description | +|--------|-------------| +| **Search Key** | El código identificador único del producto. | +| **Name** | El nombre descriptivo del producto. | +| **Quantity** | El stock actual (cantidad en mano) del producto en el almacén seleccionado. | +| **Unit** | La unidad de medida del producto. | +| **Cost** | El coste unitario del producto (Value total dividido por Quantity). | +| **Value** | El valor total del inventario del producto, calculado como la suma de todos sus costes de transacción de material. | +| **Percentage** | La proporción entre el Value del producto y el valor total del almacén (la suma de todas las líneas del informe). | +| **Category** | La clasificación ABC asignada al producto (A, B o C). Los productos cuyo valor acumulado alcanza hasta el 80 % del total se clasifican como A, los que están entre el 80 % y el 95 % como B, y el resto como C. | + +!!! tip "Reading the results" + Los productos situados en la parte superior de la lista (Categoría A) tienen el mayor impacto individual en el valor del almacén. Prioriza primero la revisión y el control de estos artículos. + +## Update ABC + +El botón **Update ABC** situado en la parte inferior de la ventana escribe la clasificación de cada producto en el campo **ABC** de la pestaña **Org. Specific** de la ventana de Producto. + +- Si ya existe un registro para esa organización, el valor se **actualiza**. +- Si no existe ningún registro, se **crea un nuevo registro**. + +Una vez persistida, la categoría ABC queda disponible para filtrar e informar en otras áreas de la aplicación; por ejemplo, al definir reglas de reposición o al generar informes de compras. + +!!! tip "When to update" + Ejecuta el informe y haz clic en **Update ABC** periódicamente — por ejemplo, después de cada ciclo de valoración de inventario o cuando se hayan producido movimientos de stock significativos. Esto mantiene la clasificación alineada con las condiciones actuales del almacén. + +## Using Pre-Aggregated Data + +Para un mejor rendimiento en entornos de gran volumen, este informe puede reutilizar datos agregados generados previamente por el [Informe de Valuación de Existencias](valued-stock-report.md). + +!!! note + El Informe Pareto de Productos también puede ejecutarse sin datos agregados. Sin embargo, el uso de datos agregados es especialmente útil en entornos de gran volumen en los que se experimentan problemas de rendimiento al lanzar el informe. + +--- + +Este trabajo es una derivación de [Warehouse Management](http://wiki.openbravo.com/wiki/Warehouse_Management){target="\_blank"} de [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, utilizado bajo [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. Este trabajo está licenciado bajo [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} por [Etendo](https://etendo.software){target="\_blank"}. \ No newline at end of file diff --git a/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-movements-report.md b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-movements-report.md new file mode 100644 index 0000000000..e75f98040c --- /dev/null +++ b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-movements-report.md @@ -0,0 +1,28 @@ +--- +title: Informe Movimiento de Productos +--- + +:material-menu: `Aplicación` > `Gestión de Almacén` > `Herramientas de análisis` > `Informe Movimiento de Productos` + +El Informe Movimiento de Productos muestra todas las entradas, salidas, movimientos e inventarios físicos agrupados por Tipo de transacción y Socio de negocio. Para cada fila, se muestran el número de documento, la fecha, la descripción, los ubicadores y la cantidad. + +## Ventana de parámetros + +El resultado de este informe puede filtrarse usando la fecha del movimiento, el producto, el atributo y el socio de negocio. + +Además, el usuario puede incluir o excluir estos documentos: + +- Envío/Recepción +- Inventario físico +- Movimientos de inventario +- y Producción. + +![Informe Movimiento de Productos](../../../../../assets/drive/1KCTc1ueZ2Z-w-saDYnPVYx-BUDlYq4Gl.png) + +## Salida de ejemplo del informe + +![Informe Movimiento de Productos](../../../../../assets/drive/1Vc4maTIIThjJpROn9ES_qlzWXXupl7DU.png) + +--- + +Este trabajo es una derivación de [Gestión de Almacén](http://wiki.openbravo.com/wiki/Warehouse_Management){target="\_blank"} de [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, utilizado bajo [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. Este trabajo está licenciado bajo [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} por [Etendo](https://etendo.software){target="\_blank"}. \ No newline at end of file diff --git a/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-operations.md b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-operations.md new file mode 100644 index 0000000000..86a38af31b --- /dev/null +++ b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-operations.md @@ -0,0 +1,19 @@ +--- +title: Operaciones de Producto +--- + +:material-menu: `Aplicación` > `Gestión de Almacén` > `Herramientas de análisis` > `Operaciones de Producto` + +!!! info + Para poder incluir esta funcionalidad, debe estar instalado el paquete Warehouse Extensions Bundle. Para ello, siga las instrucciones del marketplace: [Warehouse Extensions Bundle](https://marketplace.etendo.cloud/#/product-details?module=EFDA39668E2E4DF2824FFF0A905E6A95){target="_blank"}. Para obtener más información sobre las versiones disponibles, la compatibilidad con core y las nuevas funcionalidades, visite [Warehouse Extensions - Release notes](../../../../../whats-new/release-notes/etendo-classic/bundles/warehouse-extensions/release-notes.md). + + +Esta funcionalidad **centraliza todas las transacciones** asociadas al producto seleccionado, permitiendo la visualización de cada movimiento y de acciones como línea de envío/recepción de mercancías, coste original del impuesto, coste unitario, ubicación de almacenamiento y muchas otras acciones relacionadas con los productos. + +Esta centralización facilita el análisis y una comprensión completa del rendimiento de las operaciones del producto. + +![alt text](../../../../../assets/user-guide/etendo-classic/basic-features/warehouse-management/product-operations-0.png) + +--- + +Este trabajo es un derivado de [Warehouse Management](http://wiki.openbravo.com/wiki/Warehouse_Management){target="\_blank"} de [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, utilizado bajo [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. Este trabajo está licenciado bajo [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} por [Etendo](https://etendo.software){target="_blank"}. \ No newline at end of file diff --git a/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-history.md b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-history.md new file mode 100644 index 0000000000..a03a1968d7 --- /dev/null +++ b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-history.md @@ -0,0 +1,40 @@ +--- +title: Historial de existencias +--- + +:material-menu: `Aplicación` > `Gestión de Almacén` > `Herramientas de análisis` > `Historial de existencias` + +!!! info + Para poder incluir esta funcionalidad, debe estar instalado el paquete Warehouse Extensions Bundle. Para ello, siga las instrucciones del marketplace: [Warehouse Extensions Bundle](https://marketplace.etendo.cloud/#/product-details?module=EFDA39668E2E4DF2824FFF0A905E6A95){target="_blank"}. Para obtener más información sobre las versiones disponibles, la compatibilidad con core y las nuevas funcionalidades, visite [Warehouse Extensions - Release notes](../../../../../whats-new/release-notes/etendo-classic/bundles/warehouse-extensions/release-notes.md). + + +Esta es una ventana de solo lectura en la que el usuario puede consultar el stock diario. Esta funcionalidad actualiza la información diaria recopilada por el proceso en segundo plano que se creó previamente para este propósito. + +La ventana Historial de existencias se rellena únicamente mediante el proceso en segundo plano "Create Stock History". Puede programarse desde la ventana 'Request Processing', donde se puede asignar para qué rol y organización se ejecuta, y la periodicidad con la que se ejecuta. + +!!! info + Consulte la documentación técnica sobre Historial de existencias para ampliar el proceso y calcular los registros del historial diario de existencias. + + +No se mostrarán datos en la ventana hasta que se apliquen filtros de búsqueda. Una vez aplicados los filtros, haga clic en el botón de la derecha para completar el proceso. + +![](../../../../../assets/drive/10C8VIJpu2FJkojmrZ8aKCZMZo0D0OpMJ.png) + +La ventana muestra los siguientes campos a partir de los cuales el usuario puede filtrar y obtener los datos necesarios: +- Fecha de existencias +- Producto +- Valor del conjunto de atributos +- Almacén +- Ubicación de almacenamiento +- Cantidad en stock +- Cantidad reservada +- Cantidad asignada +- Cantidad en transacción borrador + +![](../../../../../assets/drive/1MhFI0Ii9bhm8EBBK-UalKWK90_-Gkm_G.png) + +Esta funcionalidad incluye un proceso para cerrar el stock y guardar la información histórica. + +--- + +Este trabajo es un derivado de [Warehouse Management](http://wiki.openbravo.com/wiki/Warehouse_Management){target="\_blank"} de [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, utilizado bajo [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. Este trabajo está licenciado bajo [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} por [Etendo](https://etendo.software){target="\_blank"}. \ No newline at end of file diff --git a/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-report.md b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-report.md new file mode 100644 index 0000000000..a2264bf5d5 --- /dev/null +++ b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-report.md @@ -0,0 +1,25 @@ +--- +title: Informe Stock +--- + +:material-menu: `Aplicación` > `Gestión de Almacén` > `Herramientas de análisis` > `Informe Stock` + +El Informe Stock muestra el nivel de stock de todos los productos (que tengan una cantidad en mano distinta de cero) y su ubicación (almacén y hueco de almacenamiento) agrupados por categoría de producto. Para cada fila de producto: cantidad, unidad, atributo, estantería, columna, altura y almacén. + +## Ventana de parámetros + +El resultado de este informe puede filtrarse utilizando la fecha de movimiento, la categoría de producto, el producto y los ubicadores de almacén. + +![Material Transaction Report](../../../../../assets/drive/1OgkmMsGjuADw-Sbqn1tfJ5WkCbq_AGx5.png) + +El resultado de este informe puede visualizarse en formato HTML y PDF. + +Los campos **Estantería (x)**, **Columna (y)**, **Altura (z)** corresponden a **Estantería (X)**, **Columna (Y)** y **Altura (Z)** del hueco de almacenamiento. + +**Salida de ejemplo del informe** + +![Material Transaction Report](../../../../../assets/drive/1jjN-TjQjeY-38odbT6xBRYCpACEmMUxz.png) + +--- + +Este trabajo es una derivación de [Warehouse Management](http://wiki.openbravo.com/wiki/Warehouse_Management){target="\_blank"} de [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, utilizado bajo [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. Este trabajo está licenciado bajo [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} por [Etendo](https://etendo.software){target="\_blank"}. \ No newline at end of file diff --git a/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/valued-stock-report.md b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/valued-stock-report.md new file mode 100644 index 0000000000..c9a891bf7e --- /dev/null +++ b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/valued-stock-report.md @@ -0,0 +1,65 @@ +--- +title: Informe de Valuación de Existencias +--- + +:material-menu: `Aplicación` > `Gestión de Almacén` > `Herramientas de análisis` > `Informe de Valuación de Existencias` + +## Overview + +El Informe de Valuación de Existencias muestra el stock de un almacén concreto, así como el valor del stock. + +El coste se calcula como la suma del coste de cada transacción de material del producto en el almacén. El coste de las transacciones del producto lo calcula el proceso Costing Server. + +## Parameters Window + +![Material Transaction Report](../../../../../assets/drive/1HGDsUBdSrfe3_Nzk_ojKq3Ck-aGvIAdx.png) + + + +- **Organización**: Este campo permite al usuario seleccionar entre organizaciones de tipo "Legal with Accounting" y "Generic". +- **Almacén**: Si la organización seleccionada es "Generic", entonces se listan todos los almacenes que pertenecen a ella; en caso contrario, si la organización es "Legal with accounting", no se muestra ningún almacén para seleccionar. +- **Date**: El informe mostrará la información hasta la fecha seleccionada. +- **Consolidated Warehouse**: Si está marcado, la información del stock se consolidará a nivel de organización; en caso contrario, la información se desglosará por almacén. +- **Categoría del Producto**: Permite mostrar información solo de la Categoría del Producto seleccionada. +- **Moneda**: Define la moneda en la que se muestran todos los valores monetarios (como Coste, Valoración) del informe. + +!!! warning + Tenga en cuenta que para que el informe funcione debe especificarse el tipo de cambio a la moneda del informe. + +## Output Window + +![Material Transaction Report](../../../../../assets/drive/1btCDeLvHaczMWt9lE05E0J8RFjePTZFM.png) + + +- **Producto**: Nombre del producto. +- **Cantidad**: Stock del producto en la fecha seleccionada. +- **Unidad de medida** : Unidad en la que se mide el stock. +- **Coste Unitario**: Coste de cada unidad particular. Es el resultado de dividir la Valoración entre el stock. +- **Valoración**: Valoración del stock. Se calcula sumando todas las valoraciones de cada transacción que ha ocurrido en el almacén. +- **Actual Average/Standard Algorithm Cost**: Coste medio/estándar actual, el cálculo más reciente de su valor. +- **Actual Average/Standard Algorithm Valuation**: Valoración del stock basada en el Coste medio/estándar actual. Es el resultado de multiplicar el stock por el coste actual. + +## Persisted Information + +Este paso no es necesario para lanzar el informe. Sin embargo, si hay problemas de rendimiento, esto puede ayudar a mejorar considerablemente el rendimiento del informe. + +Es posible agregar información que permite realizar consultas más rápidas. Esta información se agrega para cada período contable cerrado, lo que significa que los períodos contables deben estar definidos y, al menos algunos de ellos, deben estar en un estado *Cerrado* o *Cerrado permanentemente*. + +La información persistirá hasta el primer período no cerrado. De este modo, es posible evitar recorrer muchos registros. Sin embargo, no se agregará información después del primer período cerrado y esto puede provocar un rendimiento no óptimo del informe si necesita recuperar mucha información. + +!!! info + Para usar esta funcionalidad es necesario programar el proceso en segundo plano llamado *Generate Aggregated Data Background*. Esto se puede hacer a través de la ventana *Process Request*. + +![Material Transaction Report](../../../../../assets/drive/1_mjP-Y6k-QGbCLm8FeIQI08YLJghMAfM.png) + +!!! info + Se recomienda programarlo diariamente, en un momento en que el sistema no tenga mucha actividad. Solo agregará datos cuando un nuevo período esté Cerrado o Cerrado permanentemente. + + +## Limitations + +Al agregar la información por cada período cerrado, no es posible conservar la fecha de cada transacción. Por lo tanto, cuando el informe se ejecute para una moneda diferente, toda esa información se convertirá en la fecha de cierre del período. Esto puede dar lugar a pequeñas discrepancias con la versión anterior debido a conversiones entre monedas en fechas diferentes. + +--- + +Este trabajo es un derivado de [Warehouse Management](http://wiki.openbravo.com/wiki/Warehouse_Management){target="\_blank"} de [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, utilizado bajo [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. Este trabajo está licenciado bajo [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} por [Etendo](https://etendo.software){target="\_blank"}. \ No newline at end of file diff --git a/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/getting-started.md b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/getting-started.md index 8433f69d50..8907681447 100644 --- a/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/getting-started.md +++ b/docs/es/user-guide/etendo-classic/basic-features/warehouse-management/getting-started.md @@ -55,7 +55,7 @@ En Gestión de Almacén, las principales operaciones de Precisión del inventari Para realizar el *Inventario físico*, el personal de almacén: -- Comienza con las clasificaciones de productos y ejecuta el [Informe Pareto de Productos](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#pareto-product-report), que distribuye los productos en tres clases (A, B o C) según su porcentaje de coste en el almacén. +- Comienza con las clasificaciones de productos y ejecuta el [Informe Pareto de Productos](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/pareto-product-report.md), que distribuye los productos en tres clases (A, B o C) según su porcentaje de coste en el almacén. En función de la clasificación, puede decidirse la frecuencia del ciclo de recuento (p. ej., los productos A se cuentan semanalmente, los productos B mensualmente y los productos C anualmente). A continuación, la clasificación ABC se rellena en la pestaña [Producción](../../../../user-guide/etendo-classic/basic-features/master-data-management/master-data.md#manufacturing) de la ventana Producto haciendo clic en el botón Update ABC. - Tenga en cuenta que la clasificación ABC se basa en el coste de las transacciones del producto. Por eso debe configurarse y validarse una [Regla de cálculo de costes](../../../../user-guide/etendo-classic/basic-features/warehouse-management/setup.md#costing-rules) para la entidad legal y debe planificarse el proceso [Costing Background Process](../../../../user-guide/etendo-classic/basic-features/general-setup/process-scheduling/process-request.md#costing). @@ -68,12 +68,12 @@ Para ejecutar *Movimiento entre almacenes*, el personal de almacén: Para *Seguimiento de mercancías*, el personal de almacén utiliza: -- [Informe Stock](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#stock-report), que proporciona el nivel de stock de todos los productos (que tienen inventario distinto de cero) y su ubicación (almacén y hueco) agrupados por categoría de producto. +- [Informe Stock](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-report.md), que proporciona el nivel de stock de todos los productos (que tienen inventario distinto de cero) y su ubicación (almacén y hueco) agrupados por categoría de producto. - La ventana [Operaciones de material (uso indirecto)](../../../../user-guide/etendo-classic/basic-features/warehouse-management/transactions.md#goods-transaction), que ofrece una vista de solo lectura con amplias capacidades de filtrado y muestra todas las transacciones de inventario. -- [Informe Movimiento de Productos](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#product-movements-report), que muestra todas las recepciones, envíos, movimientos e inventarios físicos agrupados por Tipo de transacción y Tercero. -- [Informe Transacción de Material](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#material-transaction-report), que lista todos los documentos (envíos o recepciones) agrupados por Tercero. +- [Informe Movimiento de Productos](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/product-movements-report.md), que muestra todas las recepciones, envíos, movimientos e inventarios físicos agrupados por Tipo de transacción y Tercero. +- [Informe Transacción de Material](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/material-transaction-report.md), que lista todos los documentos (envíos o recepciones) agrupados por Tercero. -La *Valoración del inventario* se realiza con la ayuda del [Informe de Valuación de Existencias](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#valued-stock-report). +La *Valoración del inventario* se realiza con la ayuda del [Informe de Valuación de Existencias](../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/valued-stock-report.md). Este informe muestra el coste del stock calculado por el proceso Costing Server. La *Actualización de inventario* se realiza con la ayuda de la ventana [Ajuste de Valor del Inventario](../../../../user-guide/etendo-classic/basic-features/warehouse-management/transactions.md#inventory-amount-update). diff --git a/docs/es/user-guide/etendo-classic/optional-features/bundles/warehouse-extensions/overview.md b/docs/es/user-guide/etendo-classic/optional-features/bundles/warehouse-extensions/overview.md index ddfe98583b..351bc40b07 100644 --- a/docs/es/user-guide/etendo-classic/optional-features/bundles/warehouse-extensions/overview.md +++ b/docs/es/user-guide/etendo-classic/optional-features/bundles/warehouse-extensions/overview.md @@ -71,7 +71,7 @@ En Etendo, la funcionalidad de Preparación de pedidos está diseñada para ayud Este módulo le permite observar y analizar en detalle todas las transacciones asociadas al producto seleccionado. !!! info - Para más información, visite la [Guía de usuario de Operaciones de producto](../../../basic-features/warehouse-management/analysis-tools.md/#product-operations). + Para más información, visite la [Guía de usuario de Operaciones de producto](../../../basic-features/warehouse-management/analysis-tools/product-operations.md). ### Reactivar documentos de almacén @@ -99,7 +99,7 @@ Esta funcionalidad forma parte de Warehouse Extensions Bundle y es útil cuando Este módulo proporciona información actualizada sobre el historial diario de existencias de los productos. !!! info - Para más información, visite la [Guía de usuario de Historial de existencias](../../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools.md#stock-history) y la [Guía del desarrollador de Historial de existencias](../../../../../developer-guide/etendo-classic/bundles/warehouse-extensions-bundle.md#stock-history). + Para más información, visite la [Guía de usuario de Historial de existencias](../../../../../user-guide/etendo-classic/basic-features/warehouse-management/analysis-tools/stock-history.md) y la [Guía del desarrollador de Historial de existencias](../../../../../developer-guide/etendo-classic/bundles/warehouse-extensions-bundle.md#stock-history). ### Unidad logística de existencias