From 960fd4ce48cf3307283af6ce482ceea144382b8d Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Wed, 30 Dec 2015 22:56:24 +0100 Subject: [PATCH 001/176] Rename module from account_invoice_pdf_import to account_invoice_import FIX raise error when we don't identify a partner Update README --- account_invoice_import/README.rst | 136 ++++ account_invoice_import/__init__.py | 6 + account_invoice_import/__openerp__.py | 44 ++ account_invoice_import/account_invoice.py | 39 + .../account_invoice_import_config.py | 86 +++ .../account_invoice_import_config_view.xml | 67 ++ account_invoice_import/demo/demo_data.xml | 55 ++ account_invoice_import/i18n/fr.po | 431 ++++++++++++ .../images/sshot-wizard1.png | Bin 0 -> 75699 bytes account_invoice_import/partner.py | 32 + account_invoice_import/partner_view.xml | 27 + .../security/ir.model.access.csv | 3 + account_invoice_import/test/free.yml | 107 +++ .../test/pdf/ZUGFeRD_1p0_BASIC_Einfach.pdf | Bin 0 -> 87894 bytes .../test/pdf/invoice_free_fiber_201507.pdf | Bin 0 -> 120150 bytes account_invoice_import/test/zugferd.yml | 55 ++ account_invoice_import/wizard/__init__.py | 3 + .../wizard/account_invoice_import.py | 666 ++++++++++++++++++ .../wizard/account_invoice_import_view.xml | 74 ++ 19 files changed, 1831 insertions(+) create mode 100644 account_invoice_import/README.rst create mode 100644 account_invoice_import/__init__.py create mode 100644 account_invoice_import/__openerp__.py create mode 100644 account_invoice_import/account_invoice.py create mode 100644 account_invoice_import/account_invoice_import_config.py create mode 100644 account_invoice_import/account_invoice_import_config_view.xml create mode 100644 account_invoice_import/demo/demo_data.xml create mode 100644 account_invoice_import/i18n/fr.po create mode 100644 account_invoice_import/images/sshot-wizard1.png create mode 100644 account_invoice_import/partner.py create mode 100644 account_invoice_import/partner_view.xml create mode 100644 account_invoice_import/security/ir.model.access.csv create mode 100644 account_invoice_import/test/free.yml create mode 100644 account_invoice_import/test/pdf/ZUGFeRD_1p0_BASIC_Einfach.pdf create mode 100644 account_invoice_import/test/pdf/invoice_free_fiber_201507.pdf create mode 100644 account_invoice_import/test/zugferd.yml create mode 100644 account_invoice_import/wizard/__init__.py create mode 100644 account_invoice_import/wizard/account_invoice_import.py create mode 100644 account_invoice_import/wizard/account_invoice_import_view.xml diff --git a/account_invoice_import/README.rst b/account_invoice_import/README.rst new file mode 100644 index 0000000000..184898ee81 --- /dev/null +++ b/account_invoice_import/README.rst @@ -0,0 +1,136 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +====================== +Account Invoice Import +====================== + +This module has been started by lazy accounting users who hate enter they supplier invoices manually in Odoo. As ERP consultants, we have several supplier invoices to enter regularly in the system from the same suppliers: phone bill, Internet access, train tickets, etc. Most of these invoices are available as PDF. We dream that we would be able to automatically extract from the PDF the required information to enter the invoice as supplier invoice in Odoo. To know the full story behind the development of this module, read this `blog post `_. + +In the future, we believe we will have structured information embedded inside the metadata of PDF invoices. There are 2 main standards for electronic invoicing: + +* `CII `_ (Cross-Industry Invoice) developped by `UN/CEFACT `_ (United Nations Centre for Trade Facilitation and Electronic Business), +* `UBL `_ (Universal Business Language) developped by `OASIS `_ (Organization for the Advancement of Structured Information Standards). + +For example, there is already a standard in Germany called `ZUGFeRD `_ which is based on CII. + +Here is how the module works: + +* the user starts a wizard and uploads the PDF or XML invoice, +* if the PDF file has an embedded XML file in ZUGFeRD/CII format, Odoo will read this file, +* otherwise, Odoo will use the *invoice2data* Python library to try to interpret the text of the PDF, +* if there is already some draft supplier invoice for this supplier, Odoo will propose to select one to update or create a new draft invoice, +* otherwise, Odoo will directly create a new draft supplier invoice and attach the PDF to it. + +This module also works with supplier refunds. + +Installation +============ + +This module requires the Python library *invoice2data* available on `Github `_. + +To install the right version of the library, run: + +.. code:: + + sudo pip install git+https://github.com/manuelRiel/invoice2data.git + +This librairy requires the *pdftotext* utility, which is available on most Linux distributions in the package *poppler-utils*. To install it on a Debian or Ubuntu system, run: + +.. code:: + + sudo apt-get install poppler-utils + +For some suppliers, it may be important to have a recent version of poppler-utils, to have a better support for accents. For example, the invoices of Free mobile work fine with poppler-utils version 0.33.0, but don't work with poppler-utils version 0.24.5 when the month name has accents (Décembre, which is December in French). + +French users should also install the module *l10n_fr_invoice_pdf_import* available in the `French localization `_. + +Configuration +============= + +To configure this module, go to the menu *Accounting > Configuration > Miscellaneous > Import Supplier Invoices* and create the import configuration entries for some suppliers. + +Then, go to the form view of the suppliers and make sure that: + +* *is a Company ?* is True +* *Supplier* is True +* the *TIN* (i.e. VAT number) is set (the VAT number is used by default when searching the supplier in the Odoo partner database) +* in the *Accounting* tab, select the *Invoice Import Configuration*. + +For the PDF invoice of your supplier that don't have an embedded XML file, you will have to update the `template file `_ of the invoice2data Python library. It is quite easy to do ; if you are familiar with `regexp `_, it should not take more than 10 minutes for each supplier. + +Here are some hints to help you add a template for your supplier: + +* Take Free SAS (keyword = FR 604 219 388 61) as an example. You will find a sample PDF invoice for this supplier under invoice2data/test/pdfs/2015-07-02-invoice_free_fiber.pdf + +* Try to run the invoice2data library manually on the sample invoice of Free: + +.. code:: + + % python -m invoice2data.main invoice2data/test/pdfs/2015-07-02-invoice_free_fiber.pdf + +On the output, you will get first the text of the PDF, then some debug info on the parsing of the invoice and the regexps, and, on the last line, you will have the dict that contain the result of the parsing. + +* if the VAT number of the supplier is present in the text of the PDF invoice, I think it's a good idea to use it as the keyword + +* the 'data' dict should contain the following keys: + + * 'vat' with the VAT number of the supplier (if the VAT number of the supplier is not in the text of PDF file, add a 'partner_name' key, or, if the supplier is French and the module *l10n_fr_invoice_pdf_import* is installed, add a 'siren' key) + * 'amount_untaxed' and 'amount' ('amount' is the total amount with taxes). These 2 keys are required. + * 'date': the date of the invoice + * 'invoice_number' + * 'date_due', if this information is available in the text of the PDF file. + +Usage +===== + +To use this module, go to the menu *Accounting > Suppliers > Import Invoices* and upload a PDF invoice of your supplier. + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/95/8.0 + +For further information, please visit: + + * https://www.odoo.com/forum/help-1 + +Known issues / Roadmap +====================== + +* Remove dependency on *base_iban* and develop a separate glue module between this module and *base_iban* + +* Enhance the update of an existing invoice by analysing the lines (lines are only available when the invoice has an embedded XML file) + +* Add a mail gateway to be able to forward the emails that we receive with PDF invoices to a dedicated address ; the gateway would detach the PDF invoice from the email and create the draft supplier invoice in Odoo. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed feedback +`here `_. + +Credits +======= + +Contributors +------------ + +* Alexis de Lattre + +Maintainer +---------- + +.. image:: http://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: http://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. diff --git a/account_invoice_import/__init__.py b/account_invoice_import/__init__.py new file mode 100644 index 0000000000..a9731feaa7 --- /dev/null +++ b/account_invoice_import/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- + +from . import partner +from . import account_invoice_import_config +from . import account_invoice +from . import wizard diff --git a/account_invoice_import/__openerp__.py b/account_invoice_import/__openerp__.py new file mode 100644 index 0000000000..bd7f9d7693 --- /dev/null +++ b/account_invoice_import/__openerp__.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Account Invoice Import module for Odoo +# Copyright (C) 2015 Akretion (http://www.akretion.com) +# @author Alexis de Lattre +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + + +{ + 'name': 'Account Invoice Import', + 'version': '8.0.0.1.0', + 'category': 'Accounting & Finance', + 'license': 'AGPL-3', + 'summary': 'Import supplier invoices/refunds as PDF or XML files', + 'author': 'Akretion,Odoo Community Association (OCA)', + 'website': 'http://www.akretion.com', + 'depends': ['account', 'base_iban'], + 'external_dependencies': {'python': ['invoice2data', 'pdfminer', 'lxml']}, + 'data': [ + 'security/ir.model.access.csv', + 'account_invoice_import_config_view.xml', + 'wizard/account_invoice_import_view.xml', + 'partner_view.xml', + ], + 'test': ['test/free.yml', 'test/zugferd.yml'], + 'demo': ['demo/demo_data.xml'], + 'images': ['images/sshot-wizard1.png'], + 'installable': True, +} diff --git a/account_invoice_import/account_invoice.py b/account_invoice_import/account_invoice.py new file mode 100644 index 0000000000..15cd9b41e1 --- /dev/null +++ b/account_invoice_import/account_invoice.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Account Invoice Import module for Odoo +# Copyright (C) 2015 Akretion (http://www.akretion.com) +# @author Alexis de Lattre +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from openerp import models, api, _ + + +class AccountInvoice(models.Model): + _inherit = 'account.invoice' + + @api.multi + def name_get(self): + """Add amount_untaxed in name_get of invoices""" + res = super(AccountInvoice, self).name_get() + new_res = [] + for (inv_id, name) in res: + inv = self.browse(inv_id) + name += _(' Amount w/o tax: %s %s') % ( + inv.amount_untaxed, inv.currency_id.name) + new_res.append((inv_id, name)) + return new_res diff --git a/account_invoice_import/account_invoice_import_config.py b/account_invoice_import/account_invoice_import_config.py new file mode 100644 index 0000000000..7320303dbc --- /dev/null +++ b/account_invoice_import/account_invoice_import_config.py @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Account Invoice Import module for Odoo +# Copyright (C) 2015 Akretion (http://www.akretion.com) +# @author Alexis de Lattre +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from openerp import models, fields, api, _ +from openerp.exceptions import ValidationError + + +class AccountInvoiceImportConfig(models.Model): + _name = 'account.invoice.import.config' + _description = 'Configuration for the import of Supplier Invoices' + + name = fields.Char(string='Name', required=True) + partner_ids = fields.One2many( + 'res.partner', 'invoice_import_id', + string='Partners') + active = fields.Boolean(default=True) + invoice_line_method = fields.Selection([ + ('1line_no_product', 'Single Line, No Product'), + ('1line_static_product', 'Single Line, Static Product'), + ('nline_no_product', 'Multi Line, No Product'), + ('nline_static_product', 'Multi Line, Static Product'), + ('nline_auto_product', 'Multi Line, Auto-selected Product'), + ], string='Method for Invoice Line', required=True, + default='1line_no_product', + help="The multi-line methods will not work for PDF invoices " + "that don't have an embedded XML file. " + "The 'Multi Line, Auto-selected Product' method will only work with " + "ZUGFeRD invoices at Comfort or Extended level, not at Basic level.") + company_id = fields.Many2one( + 'res.company', string='Company', + ondelete='cascade', required=True, + default=lambda self: self.env['res.company']._company_default_get( + 'account.invoice.import.config')) + account_id = fields.Many2one( + 'account.account', string='Expense Account', + domain=[('type', 'not in', ('view', 'closed'))]) + account_analytic_id = fields.Many2one( + 'account.analytic.account', string='Analytic Account', + domain=[('type', '!=', 'view')]) + label = fields.Char( + string='Force Description', + help="Force supplier invoice line description") + tax_ids = fields.Many2many( + 'account.tax', string='Taxes', + domain=[('type_tax_use', 'in', ('all', 'purchase'))]) + static_product_id = fields.Many2one( + 'product.product', string='Static Product') + + @api.constrains('invoice_line_method', 'account_id', 'static_product_id') + def _check_import_config(self): + for config in self: + if ( + config.invoice_line_method == 'static_product' and + not config.static_product_id): + raise ValidationError(_( + "Static Product must be set on the invoice import " + "configuration of supplier '%s' that has a Method " + "for Invoice Line set to 'Static Product'.") + % config.partner_id.name) + if ( + config.invoice_line_method == 'no_product' and + not config.account_id): + raise ValidationError(_( + "The Expense Account must be set on the invoice " + "import configuration of supplier '%s' that has a " + "Method for Invoice Line set to 'Without product'.") + % config.partner_id.name) diff --git a/account_invoice_import/account_invoice_import_config_view.xml b/account_invoice_import/account_invoice_import_config_view.xml new file mode 100644 index 0000000000..e8a6e17a0e --- /dev/null +++ b/account_invoice_import/account_invoice_import_config_view.xml @@ -0,0 +1,67 @@ + + + + + + + + account.invoice.import.config.form + account.invoice.import.config + +
+ + + + + + + + + + + + + + + + +
+
+
+ + + account.invoice.import.config.tree + account.invoice.import.config + + + + + + + + + + + Import Supplier Invoices + account.invoice.import.config + tree,form + {'invoice_import_config_main_view': True} + + + + +
+
diff --git a/account_invoice_import/demo/demo_data.xml b/account_invoice_import/demo/demo_data.xml new file mode 100644 index 0000000000..65942a1f14 --- /dev/null +++ b/account_invoice_import/demo/demo_data.xml @@ -0,0 +1,55 @@ + + + + + + + Internet Access + + + service + + + + + + Free + 1line_static_product + Fiber optic access at the main office + + + + + Free SAS + + + + 8 rue de la Ville l’Évèque + 75008 + Paris + + http://www.free.fr + FR 604 219 388 61 + + + + + Lieferant + nline_no_product + + + + + Lieferant GmbH + + + + Lieferantenstraße 20 + 80333 + München + + + + + + diff --git a/account_invoice_import/i18n/fr.po b/account_invoice_import/i18n/fr.po new file mode 100644 index 0000000000..cfcc0ba28d --- /dev/null +++ b/account_invoice_import/i18n/fr.po @@ -0,0 +1,431 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_invoice_pdf_import +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-12-26 00:03+0000\n" +"PO-Revision-Date: 2015-12-26 00:03+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/account_invoice.py:36 +#, python-format +msgid " Amount w/o tax: %s %s" +msgstr " Montant HT: %s %s" + +#. module: account_invoice_pdf_import +#: view:account.invoice.import.config:account_invoice_pdf_import.account_invoice_import_config_form +msgid "Account Invoice Import Configuration" +msgstr "Configuration pour l'import des factures" + +#. module: account_invoice_pdf_import +#: view:account.invoice.import.config:account_invoice_pdf_import.account_invoice_import_config_tree +msgid "Account Invoice Import Configurations" +msgstr "Configurations pour l'import des factures" + +#. module: account_invoice_pdf_import +#: view:account.invoice.import.config:account_invoice_pdf_import.account_invoice_import_config_form +msgid "Accounting Parameters" +msgstr "Paramètres comptables" + +#. module: account_invoice_pdf_import +#: field:account.invoice.import.config,active:0 +msgid "Active" +msgstr "Actif" + +#. module: account_invoice_pdf_import +#: field:account.invoice.import.config,account_analytic_id:0 +msgid "Analytic Account" +msgstr "Compte analytique" + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +msgid "Cancel" +msgstr "Annuler" + +#. module: account_invoice_pdf_import +#: field:account.invoice.import.config,company_id:0 +msgid "Company" +msgstr "Société" + +#. module: account_invoice_pdf_import +#: model:ir.model,name:account_invoice_pdf_import.model_account_invoice_import_config +msgid "Configuration for the import of Supplier Invoices" +msgstr "Configuration pour l'import des factures fournisseurs" + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +msgid "Core Industry Invoice" +msgstr "Core Industry Invoice" + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:426 +#, python-format +msgid "Could not find any corresponding product in the Odoo database with EAN13 '%s' or Default Code '%s'." +msgstr "Impossible de trouver un article dans la base d'Odoo avec le code-barre EAN13 '%s' ni avec la référence interne '%s'." + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +msgid "Create New" +msgstr "Créer une nouvelle" + +#. module: account_invoice_pdf_import +#: field:account.invoice.import.config,create_uid:0 +#: field:account.invoice.pdf.import,create_uid:0 +msgid "Created by" +msgstr "Créé par" + +#. module: account_invoice_pdf_import +#: field:account.invoice.import.config,create_date:0 +#: field:account.invoice.pdf.import,create_date:0 +msgid "Created on" +msgstr "Créé le" + +#. module: account_invoice_pdf_import +#: field:account.invoice.pdf.import,currency_id:0 +msgid "Currency" +msgstr "Devise" + +#. module: account_invoice_pdf_import +#: field:account.invoice.pdf.import,invoice_id:0 +msgid "Draft Supplier Invoice to Update" +msgstr "Facture fournisseur brouillon à mettre-à-jour" + +#. module: account_invoice_pdf_import +#: field:account.invoice.import.config,account_id:0 +msgid "Expense Account" +msgstr "Compte de charge" + +#. module: account_invoice_pdf_import +#: field:account.invoice.pdf.import,pdf_filename:0 +msgid "Filename" +msgstr "Nom du fichier" + +#. module: account_invoice_pdf_import +#: field:account.invoice.import.config,label:0 +msgid "Force Description" +msgstr "Forcer la description" + +#. module: account_invoice_pdf_import +#: help:account.invoice.import.config,label:0 +msgid "Force supplier invoice line description" +msgstr "Forcer la description de la ligne de facture fournisseur" + +#. module: account_invoice_pdf_import +#: field:account.invoice.import.config,id:0 +#: field:account.invoice.pdf.import,id:0 +msgid "ID" +msgstr "ID" + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +#: selection:account.invoice.pdf.import,state:0 +msgid "Import" +msgstr "Importer" + +#. module: account_invoice_pdf_import +#: model:ir.actions.act_window,name:account_invoice_pdf_import.account_invoice_pdf_import_action +#: model:ir.ui.menu,name:account_invoice_pdf_import.account_invoice_pdf_import_menu +msgid "Import PDF Invoice" +msgstr "Importer une facture PDF" + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +msgid "Import Supplier Invoice or Refund as PDF" +msgstr "Importer une facture ou un avoir fournisseur en PDF" + +#. module: account_invoice_pdf_import +#: model:ir.actions.act_window,name:account_invoice_pdf_import.account_invoice_import_config_action +#: model:ir.ui.menu,name:account_invoice_pdf_import.account_invoice_import_config_menu +msgid "Import Supplier Invoices" +msgstr "Import des factures fournisseur" + +#. module: account_invoice_pdf_import +#: model:product.template,name:account_invoice_pdf_import.internet_access_product_template +msgid "Internet Access" +msgstr "Accès Internet" + +#. module: account_invoice_pdf_import +#: model:ir.model,name:account_invoice_pdf_import.model_account_invoice +msgid "Invoice" +msgstr "Facture" + +#. module: account_invoice_pdf_import +#: field:res.partner,invoice_import_id:0 +msgid "Invoice Import Configuration" +msgstr "Configuration de l'import de facture" + +#. module: account_invoice_pdf_import +#: field:account.invoice.import.config,write_uid:0 +#: field:account.invoice.pdf.import,write_uid:0 +msgid "Last Updated by" +msgstr "Dernière mise-à-jour par" + +#. module: account_invoice_pdf_import +#: field:account.invoice.import.config,write_date:0 +#: field:account.invoice.pdf.import,write_date:0 +msgid "Last Updated on" +msgstr "Dernière mise-à-jour le" + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:354 +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:393 +#, python-format +msgid "MISSING DESCRIPTION" +msgstr "DESCRIPTION MANQUANTE" + +#. module: account_invoice_pdf_import +#: field:account.invoice.import.config,invoice_line_method:0 +msgid "Method for Invoice Line" +msgstr "Méthode pour les lignes de facture" + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:523 +#, python-format +msgid "Missing Invoice Import Configuration on partner %s" +msgstr "Configuration de l'import de facture manquante pour le fournisseur %s" + +#. module: account_invoice_pdf_import +#: selection:account.invoice.import.config,invoice_line_method:0 +msgid "Multi Line, Auto-selected Product" +msgstr "Multi-ligne, Article auto-sélectionné" + +#. module: account_invoice_pdf_import +#: selection:account.invoice.import.config,invoice_line_method:0 +msgid "Multi Line, No Product" +msgstr "Multi-ligne, aucun article" + +#. module: account_invoice_pdf_import +#: selection:account.invoice.import.config,invoice_line_method:0 +msgid "Multi Line, Static Product" +msgstr "Multi-ligne, article statique" + +#. module: account_invoice_pdf_import +#: field:account.invoice.import.config,name:0 +msgid "Name" +msgstr "Nom" + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +msgid "Odoo will try to extract an XML file embedded inside the PDF file. It will work only if the invoice complies with the" +msgstr "Odoo essayera d'extraire un fichier XML embarqué dans le fichier PDF. Cela fonctionnera uniquement si la facture est conforme au standard" + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +msgid "Odoo will use this information to create a draft supplier invoice. If there is already a draft invoice for that supplier in Odoo, you will have the option to update that invoice." +msgstr "Odoo utilisera cette donnée pour créer une facture fournisseur brouillon. Si il y a déjà une facture brouillon pour ce fournisseur dans Odoo, il vous proposera la possibilité de mettre à jour cette facture." + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +msgid "Otherwise, Odoo will use the" +msgstr "Sinon, Odoo utilisera la librairie" + +#. module: account_invoice_pdf_import +#: field:account.invoice.pdf.import,pdf_file:0 +msgid "PDF Invoice" +msgstr "Facture PDF" + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:276 +#, python-format +msgid "PDF Invoice parsing didn't return the VAT number of the supplier and the returned supplier name (%s) is not a supplier company in Odoo." +msgstr "L'analyse automatique de la facture PDF n'a pas renvoyé le numéro de TVA du fournisseur et le nom du fournisseur renvoyé (%s) n'est pas un fournisseur présent dans la base d'Odoo." + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:212 +#, python-format +msgid "PDF Invoice parsing failed." +msgstr "Echec de l'analyse automatique de la facture PDF." + +#. module: account_invoice_pdf_import +#: model:ir.model,name:account_invoice_pdf_import.model_res_partner +msgid "Partner" +msgstr "Partenaire" + +#. module: account_invoice_pdf_import +#: view:account.invoice.import.config:account_invoice_pdf_import.account_invoice_import_config_form +#: field:account.invoice.import.config,partner_ids:0 +msgid "Partners" +msgstr "Partenaires" + +#. module: account_invoice_pdf_import +#: selection:account.invoice.import.config,invoice_line_method:0 +msgid "Single Line, No Product" +msgstr "Mono-ligne, aucun article" + +#. module: account_invoice_pdf_import +#: selection:account.invoice.import.config,invoice_line_method:0 +msgid "Single Line, Static Product" +msgstr "Mono-ligne, article statique" + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +msgid "Some draft supplier invoices/refunds have been found for the supplier of the PDF invoice you are importing ; one of them may correspond to the PDF invoice. You can either select an existing draft supplier invoice to update with the information of the PDF (information that will be updated include invoice date, supplier invoice number and attachment) or create a new draft invoice." +msgstr "Une ou plusieurs factures/avoirs fournisseur brouillons ont été trouvées pour le même fournisseur que la facture PDF que vous importez ; l'une d'entre-elles pourrait correspondre à la facture PDF. Vous pouvez soit sélectionner une facture fournisseur brouillon à mettre à jour avec les données du PDF (les informations mises-à-jour sont la date et le numéro de facture ainsi que la pièce jointe) ou créer une nouvelle facture brouillon." + +#. module: account_invoice_pdf_import +#: field:account.invoice.pdf.import,state:0 +msgid "State" +msgstr "Etat" + +#. module: account_invoice_pdf_import +#: field:account.invoice.import.config,static_product_id:0 +msgid "Static Product" +msgstr "Article statique" + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/account_invoice_import_config.py:73 +#, python-format +msgid "Static Product must be set on the invoice import configuration of supplier '%s' that has a Method for Invoice Line set to 'Static Product'." +msgstr "L'article statique doit être configuré sur la configuration de l'import de facture du fournisseur '%s' qui a une méthode pour les lignes de facture configuré sur 'Article statique'." + +#. module: account_invoice_pdf_import +#: field:account.invoice.pdf.import,partner_id:0 +msgid "Supplier" +msgstr "Fournisseur" + +#. module: account_invoice_pdf_import +#: field:account.invoice.import.config,tax_ids:0 +msgid "Taxes" +msgstr "Taxes" + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/account_invoice_import_config.py:81 +#, python-format +msgid "The Expense Account must be set on the invoice import configuration of supplier '%s' that has a Method for Invoice Line set to 'Without product'." +msgstr "Le compte de charge doit être renseigné sur la configuration de l'import de facture du fournisseur '%s' qui a une méthode pour les lignes de facture réglé sur 'aucun article'." + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:264 +#, python-format +msgid "The analysis of the PDF invoice returned '%s' as supplier VAT number. But there are no supplier with this VAT number in Odoo." +msgstr "L'analyse automatique de la facture PDF a retourné '%s' comme numéro de TVA du fournisseur. Mais il n'y a aucun fournisseur avec ce numéro de TVA dans Odoo." + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:453 +#, python-format +msgid "The analysis of the PDF invoice returned '%s' as the currency ISO code. But there are no currency with that name in Odoo." +msgstr "L'analyse de la facture PDF a retourné '%s' comme code ISO pour la devise. Mais il n'y a aucune devise avec ce code ISO dans Odoo." + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:464 +#, python-format +msgid "The analysis of the PDF invoice returned '%s' as the currency symbol. But there are no currency with that symbol in Odoo." +msgstr "L'analyse de la facture PDF a retourné '%s' comme symbole pour la devise. Mais il n'y a aucune devise avec ce symbole dans Odoo." + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:326 +#, python-format +msgid "The bank account IBAN %s has been automatically added on the supplier %s" +msgstr "Le compte bancaire IBAN %s a été automatiquement ajouté sur le fournisseur %s" + +#. module: account_invoice_pdf_import +#: help:account.invoice.import.config,invoice_line_method:0 +msgid "The multi-line methods will only work for PDF invoices that have an embedded XML file (which is not very common today). The 'Multi Line, Auto-selected Product' method will only work with ZUGFeRD invoices at Comfort or Extended level, not at Basic level." +msgstr "Les méthodes multi-ligne ne fonctionneront que sur les factures PDF qui ont un fichier XML embarqué (ce qui n'est pas encore très répandu). La méthode 'Multi-ligne, article auto-sélectionné' ne fonctionnera qu'avec les factures ZUGFeRD au niveau Comfort ou Extended, mais pas au niveau Basic." + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:585 +#, python-format +msgid "The total amount is different from the untaxed amount, but no tax has been configured !" +msgstr "Le montant TTC est différent du montant HT, mais aucune taxe n'a été configurée !" + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:215 +#, python-format +msgid "This PDF invoice doesn't match a known template of the invoice2data lib." +msgstr "Cette facture PDF ne correspond à aucun modèle existant de la librairie invoice2data." + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:536 +#, python-format +msgid "This invoice already exists in Odoo. It's Supplier Invoice Number is '%s' and it's Odoo number is '%s'" +msgstr "Cette facture existe déjà dans Odoo. Son numéro de facture fournisseur est '%s' et son numéro Odoo est '%s'" + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:604 +#, python-format +msgid "This invoice has been created automatically via PDF import" +msgstr "Cette facture a été créé automatiquement par import du fichier PDF" + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:649 +#, python-format +msgid "This invoice has been updated automatically via PDF import" +msgstr "Cette facture a été mise-à-jour automatiquement par import du fichier PDF" + +#. module: account_invoice_pdf_import +#: field:account.invoice.pdf.import,amount_total:0 +msgid "Total" +msgstr "Total TTC" + +#. module: account_invoice_pdf_import +#: field:account.invoice.pdf.import,amount_untaxed:0 +msgid "Total Untaxed" +msgstr "Total HT" + +#. module: account_invoice_pdf_import +#: selection:account.invoice.pdf.import,state:0 +msgid "Update" +msgstr "Mettre à jour" + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +msgid "Update Existing" +msgstr "Mettre à jour une existante" + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +msgid "Upload below the supplier invoice or refund as PDF file. When you click on the Import button:" +msgstr "Chargez ci-dessous le fichier PDF de la facture ou avoir fournisseur. Quand vous cliquerez sur le bouton Importer :" + +#. module: account_invoice_pdf_import +#: model:ir.model,name:account_invoice_pdf_import.model_account_invoice_pdf_import +msgid "Wizard to import supplier invoices as PDF" +msgstr "Assistant pour importer les PDF de facture fournisseur" + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:359 +#, python-format +msgid "You have selected a Multi Line method for this import but Odoo could not extract/read any XML file inside the PDF invoice." +msgstr "Vous avez sélectionné une méthode multi-ligne mais Odoo n'a pas pu extraire/lire de fichier XML embarqué dans la facture PDF." + +#. module: account_invoice_pdf_import +#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:633 +#, python-format +msgid "You must select a supplier invoice or refund to update" +msgstr "Vous devez sélectionner une facture ou avoir fournisseur à mettre à jour" + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +msgid "ZUGFeRD" +msgstr "ZUGFeRD" + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +msgid "invoice2data" +msgstr "invoice2data" + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +msgid "library to read the text of the PDF and get the information. It will work only if the invoice2data library has a template for the invoices of that supplier." +msgstr "pour lire le texte contenu dans le PDF et extraire les informations. Cela ne fonctionnera que si la librairie invoice2data a un modèle pour ce fournisseur." + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +msgid "specifications)." +msgstr ")." + +#. module: account_invoice_pdf_import +#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +msgid "standard (an implementation of the" +msgstr " (une implémentation des spécifications" + diff --git a/account_invoice_import/images/sshot-wizard1.png b/account_invoice_import/images/sshot-wizard1.png new file mode 100644 index 0000000000000000000000000000000000000000..cd58af51a7d0c357bb050c42d6fe45dd1a8ab1c6 GIT binary patch literal 75699 zcmb??WmKF^)8+sP?(QzZA-G#`C%AiXhruDig1dWgcXxLQu7f*+yDrc3e(#?BvuFS8 zeP+(|)Lqkkx~Hn{tE;XKRZ@^dg2#sk002nRQr}bn04PKN00JKt@AI^o=HeUI#rb&ov-!>$BpD=`g#+-*0DXNy zfl>?33aD{T7D+p-jqejIDk~Azdm04@RDl((-cMjM?gCKeJh7f81<6~>aP94$UTA)?wx(nDgQ*3 zqW_t+=)dxFtmrq}PLG(#EdITCoFJwqvVZ!z@?#_uphEPTu|R{D{he(=}YII|R0JSm`fZn6V;RNQu5n?Nj_5^eZ2dF}*x zHeOGhMAST7Jjr`0W>qx`#5Y(}Qk|~0oU4}LH9&mK@so(}z-$Dik*=TtX%5elUy)RM zQaJ*SHvjt2lwUpOCq>fD>*gs7hOy_0TfPINZA%&M?BN~z zjT+-R%SiiCud7+!8veecj+@p+)laf;-$|l_+~wiK9;tGr@kPnJj@0mi0Ac^;Cdt@V z+PMCF5>z&FJmZk~Q1Z>2iFG#t&>S$>{Vp z2bn-Z4#|HO_0if;I=)eB-MrxZ)hd78oD~mAA~i2O{zj`qVfQ|AtQt{#MW-r5$giU~ z$b5W0HAKkUv8PhEOmm#woLI|?q2n)nw+eP$OYYfIZhT^v(ObrXHT}lpg+)+mgX)>~ z%Sv>pctZcW*r=)==<2R)%qbFgQiZZ)Oi}u`V!LwHK<|$(Ua6jGNRRuPSs0jbzXr^N z$o$l_Oj)k|ly6RJnog`n=O9)7uQMWabL&z}jgXoyiClFzlOjD3Ov?l~uhy?4f1tl-ASh{&V=V_|RTXrZ-7E7}v7W82;>d1dKk@qq{oVyQ^l6+d4Z@Rl~- z7TMsX0SxlL&Zn0*?ALua5JB@ZED!N=F7Y2sH= zEQT?xCvi96choK|9`(X!p{7&qCac>p;IE^Fv^)HU`U6q}oLm8}f?>HdtJ-S@kytW_ zm-fJNUIe0-yGF2(Z=20>@-@ZfcEU*u67&^Fe#`B<$60Dw1?W4D_scAb(77%v+w`oS z^WNI+Skc+upZwY0aLPqX=mu(D|!6BA(dr;Vz8V6;?CdAAlF2EgAx8p5zt7zaRr zLnXN+9#UH{UG~qS4rI)CK8)w&=jmTE*k`D4Q*&~}1t*>$M z3HMAp&8l%N-?w}c001YN_ezoN2&>FxIX8y%T$|P>iP4($wox=dx7X9C{47M;{lqG@ zDJgjP$r_GfFflL$h*kCl0ni!*_pd=5;Lga@_`?N4GTr;$ph{5%>PxO#hMD_^iws$y zK}QS}&o)|12V^=rV%9*res4?MtM-m9Q}GvAjd3|IqTPB6-_dNONQM}53u7;z0I3uN z8~(5;wXI9D=`}3)RzPZFJGg+4@#!}NowYo>Su*#SL-6NrSnMUQ+(XdwA?#VaOcaDH z+xY7?AlQiEb4JRR@>RX;GR;(VVtJFjgK7>c^QMElrnMs$Pay)%>HgiId3v{6_ue`| zUateP0bNgoEpHv3FhuZ6yz~I(MyS%I?S9MwHUlnNC8bW-^(cEYzi_BF)xTl#^BRh9 zbo&5!i*KD5sjk}pn#w6?zLGU*Udh{p9Hnot#>s~#dt=wTotiIvMDXbPsSic$At*+#7w867T z6Xo%Hatwt3G~8?E6b)uZhqSw-_%|;o;dAbd9dQk&ay>f2C3*F1$2X_EKZ_5j8lTVg zad%|f`<`J41s#qzk!u&Glw#7{TfW{DU{&3nQ#`Ytcw34 z&qLDh=kIS051&%Lw9QK>lM~|r{2S8c*rB;$XkZD65%&#ogPjAB6{0W;7IaQAgSWg} z>gwX&F%^3RIsOZnm~Rt^prtX2~AL+zVxKtfiOH*W)2UhbNkzRVd)H zS~kz#hvLx=RZ2=IM0Og8Cb1JBN`xnxYqibWu;79b5daKgS`pBB0}D0Bo2-3mZHseZ zL=;|#PEY^`g7-5T@?`L{3VM@%Q4q3kpT3{pLVuQbd9U$Tya-6XaIb#Bu0xWWN-`rdPA!2D z?-tA0>F|OJ9=mdBUNiY_pUY6MdOB_8# zMI4c=j9nK=#qBK^U9)-LbP-f`C`27t%NR+Po=jTIy?!cW-Q4klq z3YBy`ILVuluC|=raD+pShRYi=QWp$o(odg7Pq)wPoYftsx&C#WVLwtD2*4PmwP3BFEH>QFZ|yS@_%sVubi0w$bbD8WB%{Pf5GPeRrCL)FuVajWXO`E{Vy{9lbFC6~lK{!~;Q2O~F;3E<J`&Cnjd{afylLEilCmf6_e#Vz+e`=Z88dg~9>=5;|%Q8Wc{d=<2SQU@HQ$ zq_A_w*aD=)AgT(^%7Bawb-moe$FF24&xs8+g@s`=VG`P<)n(QkZk2L|wDeZHC0UKL zc%|@T?A|m50H_>xS1Pj!{sI+Y!)~Rt;9Ba;iQ@T~PX@yWhJKkuSk|SqWj`pLAm(*- z*Qj09`9XVHD@*FD#RFzDKW4%!ZU@Y;OY#E6Ea#DIB_tTo_|1T9aDR<09i?y~J>}VY`bUusC|mn_mngF1aqX(= zj#I#B@hQJWXQ%7osT~5~qM>*y-K;wPvPJYjlBulYXns3IQ*Sug=2Xxua$oaQD64(W;>SA;(%IP&(Frm&PGf9W)79`OffsOS!}7gvppbs@{CR8Wc1VG$ zD4#Nuztw)d^j7+j7eME=G0MCM=8MmW%W(PX`#y<8aKB#83AI#N`TBCrI5b(9|8Y^$ zWJ-5xFWJ1T+Xl{Iljz*;?I*zF19HG?`}TgkaRmihwranR>5cC%(OVC5?p5CZi zJFe5@F&zkOeilbz* ze9`S0n!q}`EV8S2==cRkq<9!9bb5}fNSc3QPjjlkXuB1Nn8IIDL;xtOX!kw7nb$6( z^gi6J`CExQi4pqw6JUDfS2!(BEgfyD!CF5p>rC+6ELUc*Vz~MO6_}?0&d*mJn3#K} zJ%e@KeblGR0;t|2;n9>@E(3xQviZ~*k}htjXzqR_&TIR4Dth|nFhiJ{Y!&1?YgtLm zn~Y!giS0#ageU9q#5(1Hq?#p>GTFb1%5WG6rc<0R@U6-IoVC?JrnwA>!cyO}x|vo@ z)w7I~M9$`|Ei2{~s;E{_u=skF&fODGD0jRShQXg3GXOZae9$F?0k9-e5lN3)*S7_t z;BvJWVJK%g*&? zHvm+~!c7|r{GN@)MAt_=#@@O(v`x7F~4@~7*-US}VE9!9KG9&vLfHT#QG zA@UUsf2e8~SvB)XBDUztMGs{BMXWBTZB>aN_1$%!@qQ!Zd0NTIgZhy?$L>>kjc9{G zNudo%___5un)4?_;yq>HZVK<$6;HuE&OLMvqcvdzsttXw9jWa^UKy<7Zf;|=BInW~ z#>CVg@s*gCmW~cxa2QWd7awNp#!j1;mH>l@C&at*eZj+tkb>}8&f{R7mB~AYk@2Wa zkk6Cc=UYEFxpd;T76ra#*b&MF;@o9!xK8SiD#cHP+jagkYXW*@wOzNXB=# z+aNIAIAGv%VC_vnwY3=nlsq^iBaXMbX#gx)N|d|XU2ZpdVbK*ry2V&Xn})cPTbC__ zi2n5G2t2re>ekVd&`jRpsw}8SM54X8G&RF4Jetx8t4(p}87{UoedNT|@#9i;$BQM{ zI~635_epnB8a@%1&F1csKEhqynvhMDt&jBg6Kt5yWgJ zrYV~u=U?RH%Uv^B7<79F@y|p{?F%RkI@YDQp;6Mfd3ygUxr2k%30LT6 z!Vv~_o{>|7yLg+OBM0m;e*p9vpagZoqWwYV!BV_0oRA zzF;9PGPy7`{-6F+dr)%*f-%L&X*{$NAdlgGZLdpHC-WeQ-DTUQhrc~e@`D4bka&7Y z21+ZCJ&y4-w|C73Tf3PUAqcd5enXR$Rq|Nj{obyRM}1U4`Uv70j6x*1O~`c>r$?8o z3JDoB0jJ|)hY(5VgGW)cu^vEOqj@$@nVX~P#_-}J5+OL$gD=qtL zzknevCMb8K=(KZ1B)o}g;=I9#cpOZIdhwy)jKGAowe-Bws1s{8*cW~uIm+-_MU1tOjK44GcB~<5eoTOpbpJ> z-|o_yOfM<3R^sxil3P$7-A|1gtvaLMy1@Z6OzDdK zbWwdg!N+sZe6wz@x3zuL@10^^UI|n~MTwT0@=sUx_v|ee)QamVACC((!eo+x3ch4$KL23CUr01M=%!qrcxqsYz<81a#@ zCMLZ^qyC10WP8lCTn^^j@vYaPaBw&K0ku8@x%mA;_jTye78T~_o8tp!hz!d%m%6Zv zGoCLpF1D-3lpKdLOs6ZrP}rjlp%l57%jbU22gxN=g(+4_BDr|Gx9V8<&%k?+f$dxN}&x7Bs-cPnw1_saGg*NyWI z>z!?Y|CV7TBfa(9Dy)Uz!|j!e&SrPBgY0At5l!9rLZePm(|i4M<1n-EEos#>SiGfx z7ymSkPx79qxzvq_o3xnLb?T>ReBg-U?=B-K|GPNZ!KWY1RSnXwJ3MZ_y^Ea9tO4v6|0 zPKTp1%>Uw(16y58>Fp^EkWGJ-5$Cq$>=3O2_TXGx;p0(%?rZ=T&Ro5rYvDz7t z(J^TyyXS&vt%SQsk6#udHIS6jeQgw-O01)Q)|?%`Zg~6UMsh5!FEt#={B*dP3Q zwcep8j@p#^wsInEsRqpl`0hvbW{hROkzk%OqnQ(NM!u)eEf@hwb;^WFmatDY$S$ zBDk>*O9;urL}KNPT*afdgSE-zZMw1GY5v;EhBT8E@Z^5T#^kAu#1_LMMYTOHR@O+1j$UT(7i9;;b%oF4s~S)=8dWl{6h+##E?`J#d_MAT^PaW|5Z z(~cQKx0&2tHVLS`?zXauy9*L6HGpmY)Zjv@x)MMc<}_CHOHg$XDgxnpGpzB^kx za+)%=ihA~(T6E|r*ew$)oIcgK<>aoG@}CFX@c$Iz8CjUVv*tbV2pbFqdt`&BPKkh( zlO9*V_?>3d15mw%rPX7zw7-!s9^F@Xd@-2Lujc;DFrv0RRU~bKX4-)|YOY2N6+O8I z24?2!4FaWtMI#mV%tx=7)c3dF9X%$0b{gBYWo|w$`_-I%@sXq$V9l|VR^5Q; zgSn427T9aJRwts4 zp}v>&`Urj7xTS@5p4aqNmSWvuA$i`eJwXlaD8w0-(8OvcYQby5*Itg9n26f(OU&it zV7cDGDaAq;yDl`UD3@=%@*Ie7T1*rGu(lWkdJf)qYvdQ>HFk)HZ5UAgS!S6M z(WUpua~LG}m^L-aJv>%C2{nUzi9#myFGd4@d+kuwS3G%!4IZ=%m^{Ph(%et>+S01| zgrJMIoJ_YcBRRR3$B*PaBQ<;8WeB=iWwRVS57}YIdj_?Im08o(`*>6G48iLTzK>A> zCI5D{$Wh#00=FH-A$-wu@mUDlgh2hZHa>%)Rz=c6a>U(15XAD~oidEs_~@_n0vYFj zDKfHS^mK7%zKsyQz}&$KwjWvTj4zcErhm^?;=zpjHJlspJm7-0M0l3(gk)^+#0KYP6$gSr`;p@@ba!?i?BH41ydtNrm zT)5CW?rE9_L14A^omcwP?T6n(od!O%sz^Z!!cd9V{f@SF%;! ze=-mCbd5Fhd~cQ34*vw{Y*<`YeXY)l3BFxBg@aoA#_3n!)|WNTfD$p}(@a6mEt(n- zpC?0gaT$lOE8~Y1eU5)fHD_kfRsj|~ok#N#;PDAyXhGO!=I2V>YypNI&N2^%W{JflqXLAtjwpY9&6}8ntY$E?V3l6;4kRiv^L6SY zA`0Nq$kgdNRga$@7+ErnqQup!P{1Z6g$AHDml7sM;vz5r+|J9h>0OmtWFY`7*>-j= z3eMKHu02872IE>N41<~+E`dKkV4hU?fD8h^8uG`UCa5a=;alE%i6X8qD}~y`ry-=| z{h^K0FV+J+&#r@>Dn<#h*P4;qUn+H8(0Ni;uLrhOC37J9l4Q@bPe8 zM~t^(1BB$>wGM<#pVn{+n+>CpGy#BcxCACT8Zu~rZnoXzLZGKCPG~@02qYBX0uD%K z&oN2=)#1NffRv?>CS7ChvMPHvPF=4b3zmjIsV2-19H(L_#khk#q#*(fmeq`!l}SV)`prl0sgd^gzj<;18a^midM(<=mrMF z0MybYqX0loXJbnN!+E5ZBE%eEGyZBE z=Zn0-BLY4$gBm!Fw-i9nnBZ}-^knQ*!ge)z^RFqni5)o1mO|C{0jWa9Zzcw5Toqk^ zu4CiKz;T^*pe){gt>0+gsR4gX%C|1lHKocjp)y zN2jgM=6cP7jTs}2AY<#Y`pazM1Bv37UltCZi z%zENC)R$^gijG|G3A7Fh0SpCIWpvHWR|9KEL_~q`T+>|(eXMeuL>Mxeyk4R9#|Z^RkK3$!MW_{VR23089RamT|t1yG)Dd z2n>KJJ3v62_})mly{c+Hb@y>mF7`YKO6^abbK)dCEd;T z$JTCkMg@oiM*_78uU4s$QEMLHALGs=>%k4Uc<46?a#tE*2#3=p#6(91eAKg8*e#2h zyJBBnPhE(saZTop1rS{%X&%Mpotw#dAcUP^J9TOIjRD-z(RB=CUrC+r4x1N=F`iwN zQxz61pm>lKP@a-ibt(#=n&DgG(|7fM`u?@IkUKl4IDi5e{Bdx^U_ZLW}H`T#5u6t3ua1f`6dw4c0OgA|VUaylNsE9GZp zTs~XyD-Q)imbhy@QzCxPm1yl$hPF1ge>K0M!~=pMEG_02PL^S@237aCF4sE<1^%Hy zJZ)uK0IKJbIpBOA_b~w7Sn!_%3o05SA@M@yRn=1VpfcAoZ=JqhJq}&~3&jJ2z&hy} z48x+sKc@a^yrv|zG( zF};;}E3InVLbNTi0OTOLs_{~z_i2_DmZ;g9Lz$&?lnPG(T`^)(Z7W>y8;cMI)v-7o zGbF>Rj}?M?D4F0x-`6I}24x{MO{_D2?vOD;c4xcG*I&moGWe5Qsa}jcJghk^lxc9W z0?y8)vY9Q-jn^C`W@pU%+(ng#@Ps7y>DU$)Vm5otbY_tY;Gh){fk3A-PP0{%K6gNU zVeTZgQ=8v+^d6kBPxY%cGgd|Tri@jiK7ST}$!qaGI;PluZ zptMyse^F#~as^_YSSHZ`-JIMW8)Ocoh=K-#=@8sud-T8OCVLL^FaYkx2tp6{dlMe6 z2QRbjZ@V5}lUEg>{q95^h9{w$D!hdraXcQQ&@t7@vXoc9pfkT&u842Y!=n@^9{+eK)dbopFt zUL#4IO#Z;1WgX4aXOM+<01s##CGQA`CcB1)?s`;BysyUHE(t!z5h9^}4{Or)Ew<@OP`bVN{~ z!Z+7fs`dHfHYE<(cM)^`pqq63O~iejhj&+nb1tMe2Oh9EfC4q@9X6KAgd10X7*WLQK;J0lh%q5DzO1N{ z)DtkFuLwnI_41ncdYUOJqjBaW`6g@D%l)bzSAJcf_9QSDAB_A@=d_8zBM6iL;}{LeDRNyg&EHQM5e+O?8QPB-m`Aic7?I;f1>CcC}H zl9$|BDfFmR+3U(|LB<>NGs-n3xmW&`XxWyG)h0m^0wybd;A!xEZviu%<%|NF%6k^t z*)tP~P~=b;K2uh8e?3{^NXKnSi~TYF4g@b#5ghlaQxZ*p?=HV~J);mgk5fr<8MJe_t0rKmnZ&t2wp|FH zRo3gZI`qUMu^nVvoB#YAF~+g4D=+JmPbkj=w>%jy7>;U6%+Te`c$rWByV;9hkL9h; zf=tW2$O2n4xbRDx{G9Vbir5CzMlce}Hb`30{+8(V?$fWrVFUgzeM%ozRm~tDd-Ix$ z6!%99pyY;ESp2{+^jdJ=X9gfW6>xrtH9G z@-#`m&iv6SH-=LBiA%x_w$naa8QB{Bj`FLKl6(G&&nThLuW{;;A?v=Glp4PsxcQW- z5U;E5>-oQ_B+RRO_v`6UtVv|jd?Sv8_&txt_hcsHwMv3I^0Sx&E)fHbiTk?o4bH6C z{xQ5yZg8$%?uz)*Gp8MCg_hX<1yW%HEYZX!y0iCHiqk>i1XDyEM-7|d9$zPdprpTb zEsH_&Mwb|ox7hm^gVTa{whkZxzlLKW5r+}m0{N39s| zJ@w|#?m=~Ffw~~-;#sQ z*Lwu_+1A1$#&FiOMD~Js<5b+NcDFm@VKTKl_Ht}20O}5x?K}@bq25V5P5@pwZt&P#~ z8)*^sqm=pK^Tso6OXeW(jKeRvHN1m^?J;8+c$foAlMom4ZZEKRPWiLDO+(S3yfOd5&NW^S zo6~5r9+XAi$Rkkm#Z!SWF;R^^oRG)FG(uEZ>jO3y8%n}tquT3xxS6M_b2{vY_q|X; zHdR(OZWE*eC&H?8eMBp6!FDxy65r@g5S-4e#94iIdd0k7)-uKKeK~@29ZI_Fal5FB za-^q$3nx1Pl!0>;{ferY=~`>UZt3hmPasW1jSilfRA6?KUkt)RTDD%!AQbhKS4$ft z405)tR7OCn3yNd>mp$PT&nUdz`{5w6TovOg+DhzTi8i$QrRA|Pagh&Np6%5%u~Dbs zn}VFBf`SJ@*JAnO_uhPzgLs%=udT$-9#r!cy_;yWMT0VqKck!CD{}L5>b3CMY(+^8 zj`u1nid`Mx&~eW|w#mpTuTM*c3i6Io$kDKvi&%5Q(FX?U3-Ti0-O?No;jRrU%Im7C z>ee{uIHy(PGIdIm+=zH>Z444)zNUZvASgz^Fd)jN+V*b#CdHG8OA&L>Fn}bB z9&$VF-{^x>BJ#q1-&wU~rW%wupRidD#{5=LY;si9haeX9F;dru0t;--w{&DU#F4}0 zS_|h8od2y;)ZInLJ)DG6mXiCTuan}_7UmR|#&05%lhUAdsePAU(m}pVn2OIhvV>lvHW{N;*C@kXpqy`V>J#_~n2l z0jXcm=%)gMxOSR#sg?D~@v)UP!9)rj<*ta7v5om42Y;_vcbuF0*8a}kmuk&VJ<2`E zPSL3EUPP4MGi!JPx-8ln8Op;C-(X6Jd5C)9Dut;X5D(E-C-i$XH^H;JNcGh38by9dJXpK|`mDMrm|Kd+F2z-)wBK55s&e{bYyE<)Tyz$w|7xf z)D54a3V1yA15%eZ7JHOji>m*~WAWL#01UQquy==N6L6YJezi99(tTbyuJu&5xIerg z#ad2Dc5X|=;5P$>$2u+86$Q$m7}ys@O(cAhgh7~41BR7{bpyEI;H8J(n^=-wce)Nl zu)OcL_p2GLsYBm~bb8(H_e)4RaNqp=uHRLq z-v!gJ5l7#xF@)A3-&W@5TrB=R2kof)2=s3WeJ@g6dg{_1s6J(8K0b2hvXi+bzC2Em zf)PgDWj>u+PnOjA*mXX3ZG?4!dVZNpl?@m-xOV2n*Xl4}6Wsowe?6~$^efHxyRTC} zol=N+o#=91pJ*5Z?q3D_EiG;dsTVD66dC*8YRp=u&l@)^GH56v=hfQN|RZn{ckDE7sbd<4a zCvYcG2dUZoi3JR1dvU=1$*jj20+Mo`tcoI%S9`=X#VS3|FMYy-;c4a!K?jYMpjf*f zV++2m+va7NHZo7!uM@Y^kFR?TeAqq?DoBd2GS00fEUr6GuX~L@RIG3LaJu~3@qEt_ z=2@p{svgXLR6Z%H#q;hNFn6?+1)gcPbx=Bv2qkA#eGQ=9nO$}k(srH?7Wkquu^&{` zez}$FhA6{)s?)e<3bwcLeQk++_r46uc9M@wZA+?9XcPwD*=rPPSZA3HS$5TK4`q5p zQs0%(pG+P%b#Yf6y-4pxMGFb2J?}oUFCtehrKPVJXoR>?RI@NT( z5LG_#{F=D2)M8{U!FJuxsnh9gC5B-|Pbua}w9JE0RN7;JPS zG+0^X?VZlcrL)k8)?KddBWqd)`txq3D19yS8|T9|h5)&SqGaFNj!Rmuu)iDpEtc20 zC;LL0PGW;4@&qWl96bj9oZ#6e4Ye9ok~5mYq7W4MoX4Obp_2>4kP)yK#paMg?;`mCa*iK zj!gCnkh7Qlb4Q|)FcmSariz@=N8O8uXa0RHi_g(@a$K)qHH?7)0MJoec>oPQk7>mV zIEuYB1?@7Am8w~HuE%k7n$*rOPubFgv~527m(C0h5Y+Mter#1HQMgHoY{2WiCGJRH#5Hy%xj(^?NM3>A6j7818%!{HQbTv}zEl<>6|A^9Kjqo{_ zHV|>1Nk&-ExbxYYP~7)2u6UGeWb|V@c+3_|JES8eZZxP9`B5vBZbCPC4ST}1Bs-8d z?->b_s1w$y2M0?=^F~PLp?&Q#DPgzdz?GY;qb0YsTD(XRVxh2}Kar!nE|3;q{fPeuhuU}cDk(;|CK5B zYa*@#4d-fM^SUwMZt(F(*{fY-m4ZilpOG77bxDo_6V{8lma;QEHAjp8u4n>sw`p&4wp5f14FnT~3ygm_gQ>wZ_Uo zII|j~n(zhY(_cEY*qYrBaS8x5*YWu8~K^yc|$jB ze>15(g?CkFW8KA^&b|yxZ|%IrV_WvIUgqah5=(aV_#R5q_kK8TTTXn3Rg6_c3GSzR zJTf%to}{!SvXsktNgu4}8?6A)x37S174yu&hx!gkj0f@l5euyI=tM${2e)vHc;uI^ zUXjoms})4b!OOE1zntuCEv(R;kLO~k9)xP%fNA{_Zn=p#?^WotL)vFU@QT~(Y<3)i zKs&H&YXGpxJy_r1?cF{y8$R?|#-98UrAuMKrq)^t8<&o;!rhDtxZmA9FiB|peRaRC zX=C11Z(T=9TY6^VarVtl1kw-!07V@A(BL#Z}06lBr^GpfFBg9L^;uV$RlDt{%7L(w;7FxgRM_HLU`_*e>ecTo4N zST}VwH2Z+w?!8oP9v0)+4}x^wd8CvYeBOq{#SVfwle|JcdA%-#_B@_&cU;|ltzcSR*Gvs1wlG-g!v5a|9A%wmI` z5~_E)F8PCah_2Y_*Nz+mRP|P zqHZhbBPs9s4cW`Ahrx2cCx5l+#A)M4=gNy);6;y&PHj}>Mrz7N&Ja~rz>hcQo-aLb zi7+-Q3O>rd3N0Y(&GxA`*0tQ(J1>Q|(}p#!#R`FUQ3p#10s(u|h>sIRn_;@GpH|qa zN}nT~pmW$1FufupR1a7cPif>Xdu~J3CR#~wDqdYCC}#)qEGK)ml!+c8{q34v4JVS= z1}f^krr_+`zZRsIp?bMj>UatI4&^4SagMXP9qZUD9<5|Gc!8tfxtP}*BFx`IuY;A3 zV5YDRgL3OY?^d;ZJ!IorAxX9)t?Pr1U?H;}g80^})$ph@kn6EkiSj0^!+zWK(5J7F zAJNR7H?<(im1t#EcpG3?BGBQw*BP#+`~K$hg=i-XVri7=RKM#)Hz@0Zgyp&-S@Lmg z@Tx! zg3nAK`abHKDx?rS%;+Ms6>KzBYom);3>p>hl$-mL@<{qV2Ri@&?nm-lpw6u?w%n>? zxN5OnL!aQUTBv{#f4UX-9r$WarPgI#aIbgSC@!jfsrq`Ni9lcA!m+B=R#s3UuCvzi z5?1SV(&HQ}%Dc{5ty9)PbK0I^Hth{gs>pOWlc~tPuJKXsUo-sl`!0B``UVAzh zbppP$({zA(5q_sXJ%z{ry4dB~7{})ba^7>wBPZ_;CuJ#Q-5QHl96PAgWfz|DaQS*Z zTq+;hl+HNX4Vu;WFmZPPhea#64@o)A*nup~DQMbX|H^i91IRY#Pcz<)z+*5%VEJjV zrPqQU%`;O5m#U-CCTFrPx1(N=W$||&akE81J?hm9$Ly&0{IRLQ?2)mu)ik#-Bpw@eDJH`rF!rK`>X2gqAm!)cr zd|RD{6XOc4Y1gHQMf0ee*sY1CyUMjV)fELEAQAgPqQ;ZQ`s4O`e~u<7@`Ku(wNdRT zb~r9J(!$#{LgLNQ#O1TI^XLU7>1CERVxue}@A*7|r^mN~Dyz1epH+cyi{xff%51mh zaN%p9$;~05?B;vE|2nbN$two$2qa0o=|PM zx~%=_JNeOy zCgZqiGz6hcoLLvw`^rFbMP~3oIFe_g%f60%&?PZav2@L`R z^l+kQY1lkD9EVp`z+DH>pXUhIY~eeMfBjwZ*Bc|iASz) z#9qUE$hY}b^Q9E6{g+r#WfNESyPa0rd3&N{^qDu~nuF7MF8XX={M6E$oje{@e(MNk zGQY=vxd0J$t$$<~M@sA1mVP^Kkwe42G%?4A1^Ye>SkNpUjdkK3O;+CxT2ra6wci_L zv570Ec&9^a>uIb;!Gr+4Vx}KQnP%TF7nZi-K|UTa@sGX0u}QDV*Q4RT0`_;+nJW$F zZbg%STD&}0m2c;=x1&kkc^mOT6*a^_x~?}DX(J#cX-WIX zC{J7CZ~grRC%iP2{!iB>RK9hcf}S@^rH^_D(WlI0LB^#|qAgaFTsqNqJ{peBlA^aJ z9HazqXF_Y0%&*7pul}^(e_;_t#t(QHpBKY=^%R%`s!b^uo)ivqO|vp$0VtW5(IapA zd45Z8>Yp|SHwm}jTF?fKbSA4Fj&&-tm*aneiB+>+PYN_uCig z#H5p&%J-$FHsw^1HB2$Vac%hLSSg!;xATm%YxQnK)>k5q)D09#De?Jp@iz48oG0yi zMbQYu@Z`Z*TAVSaJ0tlg%G^ zUIp$!umudccySK4E%O|J{^I%{h2N^$>M_~LYU=sLZ^@~{tll$*@#N#)cY9Cd+#tly zp2!byWLp_;3tiD;NnQ@m%R60Dh`Q@d+--Y;xy;w=YTno1@mjIYYcbsbZ~#y8OgwKo zv()jUDhWetZ7UtjQd(jUtS*DhD98<9iwv8aTqHiN_{dCFwjp#Ntw_#Lu#rwrtp0Pq zm_K3a*>0<*KiZI$@{R5=g#%vii3b)r~C=RlnAW4~-{ZVNstMgVwGHx;Li z|8+k+<5eB$@5l{IvItac-M3QN)=GcEefDfPc-7Uin&|#vlR#U@*l6Vtv{W)4OBbg4U-UPYTt!FIbzRp+W4>fl2Hd-C|M5$;^tgwpny;eC)`aI&VJ(^}euCd?Z za7+|N^R;0=?*`?I19`C4?RUFpApCz@QBCgBzq-ipZWX0@^SG1kM{`H}Jfu9jI~3xh zfLFJjKxDnl^z`8z<;`Eo9b%_!f-?xl@MH=2Qa5^X>A^HTTD7M6+-;w53(9-C+&^Dp zfSyk3+Wd1_+B<{*YL7A3DytcGjF_EREI4nqRKjGjDhd+DU7fPKuY?ueWxHKW)p@#+ z?#e6#`W0>waNJ*_+PjOXT4wWz!Xr`Zdf9KD7y4+jugXP0mF>3LjH-FS`*iS?FxXR!z-X{^4Ogpv!4mqxp=3}yV{oZd%n60|C-u~ocX!(q0&&NVd&zNk_QT4aKeJY zzW-seGRsj2ZW!Uqm?n*V?*{kE{qUNn3Iijf+4x!}`MIUGJITKzXq@1q)%R0ko5o2t zzB5NKd#OZz%)F}JF=bD*c0I>}N|A=3yq8rr>8~9Va15b|cT1L|<;#D_&R9?s#dbIS zD`RiJ_C0(Gy%qb;;mXO4X5DrFd4@jOQtndXf;ezkx$yEf<*ny)PdCz-d9D`Nc0}j9Hu3#Ju+uw?E!MaGBI#YNX0Hr zl2>~dD}N>e9MV`QAsR}@=zlG|(P?2EK@sBf*`#3e=+)(cdsW?kT(S^iE{3F=MAHL^gS}RA!1QLT-Hsyk(Vj)CGhbItYIr7FUn021 z{^VDxRz`n0CB@3P8cyR z6akK)Ku#hZXAI-%u!bxK)tWOBx;tVj@ddGMoe70iCBgM`-NW%k7%tno{-&uP0oR7$lNaWcKF9Yu| zM(aU)r&V=}eL@@=Qq7VW5z5{Pb;Kf2S+%DqW+cG&f+f?+>rdBNWQXf_6c35msH4;O z%Q~~x78hpALI}<*t!RgvS1vjE;yM#6a6bEmbos8^4`tvlXv&wcXmL;K-UBHwsVKA0 zh9$T>&xdj{oiFc}BAtJ12S=ph(OFQ^Ua^oQw}kIqfVfT~>BBEe7zzMz z;i8m^RxvWiSdTTwuql^@p$-sBo%PIua%Bg5GSq2kgwrEv0E9vZ=!{+wyuMyJZM?)W zzwTs0hvlo}WLsU=`U#8(7sJF2pG3#R!$A7!ayuQ;TyXhDC9@S4M>Iz13wr_vc58cCb4-bl!pL*Q)Cw90X(9Oa-E1hVb-|lkIiTEkNWw36fCaq-MF)8#) zmw^=m;Diu|yTidh03F^K6P04X1S3pbnjff0GGPar-^-C0W;9rnHQCg^L_{kC1_7Ae z1~tZh|w5z@Ar;#(Ul+ToyD`i0a3)gI0)n!TPJ**Iu3}{32b%M{Vb?}x@ zdR?&8XkhtEnFc08p)EuntpHNu$E)JovQ>MZ4%tOMEJU1mYN?i%MCWkTRn+MszQ;S3 zm>iiy-+8Lj?1(un5QV}ph#NdD;2H*~Frg=P#Mv41^7+M1XVbr&$~R7u9{9OdYAL#744N$pl1FrTMW*LV%9295%@H9Hmn)O-1E$xc zQu+B7z#wbS!-z0v!o1!w@)ul@FBD)mS6I2`n2|@)j!XIz5|ZRECpwtmV~D@8nSW0K zC>Egr@JHcm?_TJUvlKnOsd!6yTSmpX?9ZFuQ-1*AGram%M}^kuKijj__x^ZM-iU0M zmw)U-0T>8VH*ImgUtk}@lr*!?Qv_|kh3U2wqyK88!!D)=^f8*}(8T=6lky_{P z!~_G4p#6msEICk;NUejX0g<1TlD@|<(nkY{=}5Drgdb4ZD$eWf2c?I_Y}^}i#Nz#6 z@SXn#hSIVAh=6=roG!qtY#*}Em=Mco$fP%`SWKwE1)}Ht6k}x&0Ue8n00uD8fOmx5 zGCb`);5!%?P>Fm=cG+rY{*t%s2o)TiJ>o{vOA_V*VN*hd3qcf@(K)^XMhE3?24qEu zVEXQSLF20+RLp@^F$!K^q~f~C3@@i< z9ywmFPuIVWhpYZeMX1vdeJ35-z+k>C(R*Isv3U_?pGpoNqHz*ohsb~sDk1j>a#bV) z>9)i5&ooRPS24C-b2Atpl81zXkhJ+nL=wUHE5LzokXM)|2MQN#l(J6ShbL2&i8%Tp z3xn##{6X-8X*-sf5dau+z$DsMhkw8cSqpLVCW1FGFdNu&1b`o^!!!8z?+tq3HY+b4 zYp3L=d^AAX!7Xdfg8yX*ezQV+np&Ze#%Y5Cg#a5Fst?RlCv@$MPvQ)cf)s*=$nP{_ z5Ke`y5a|c0W&0HYFpPi#{qA&VXA?C?1yA?uBSfIv-t`)M`1`}$Kw9aK@^le?oK+8^{OLe`gG+{y%vGEg6_-6VZeq`9?jg)r1FV@j zXh>nsimWwX)G=s4cZwk+;kt0#fJ}`ql>Typ=qAYGin|$=<$9WF78|o!9+*Bajz;nX zmN`6%#16%QL#ve85R&J0^zA1QRRH)#0AwWr#|)0(Zi9n+>s0f*K6H*toaz>`r66eyp($+7L1-E zlFV&Z!(#xw*9s#0BG3g9Xi`a31*${nIA%YsE00zAc)C&*=dQ`%Xobsp-rP`*4KL*L zdXW#A(Or%ngCCD`0^4#nLh!_870|ADRRuwu3W`h|;pzU)6}71l$c`@neg|Tyop!G* zS$1cMGO76_PmZ5Mgc|mz)RgU#h?nseN5}jd@0)TpNYeM+I-`1%T{eEFF_-JTp>Z5u z9&YoK9j}4?B>^6Xw6}34M{42>P?ut&Q)7?=>HN^}oaMC02p2tKbLrU?%@0`(v+>|0 zxToZH!71uw>MOjlQY`B10t(uSN>1(DmdZ+2IcIb@eb!471r!x+2(?Dz=hN`o*Qz7v zjq|k_U$q!uyW;l!Ywv+cee^pMEz+-38&Bt5P|;l#0O{Ey>c-q+XQ}3UKgp^M;csvC z+}UmE98C9^I#T)=QXd%A)2&XjT$8u_*zHJAMWKMW@BWDKC{{^w49Pq+wb&IO*JyVQ zDsPeX=ZxDr^NAHXIl&>^AK5*m)#Rc59iJ}W!gwhf;cx25f_pqlm(gq! zp~=DdyRaKMx-=Y}9{XrBEgqoIXHV)Z~B9p(K`6=bgstY=|)Q#lNgLsqlh%`Wt&^~#G0dvM#4o*(9@Z#8YhQa?MMh*Po6w zkfc7-tbhAihozI<%B8kZIbG_7S8nnXFO>|9)=8Et9L9}|A9Ld`F86kYacLH?S`ti~ zJLcW)NzFGm?;dFWMPgJXE;bXd?S<;e^lyQz*)PZu1(i^N% zQF@^)m{r%`bredClb>+C&yswVBU(U{H@ehZaKem^jsl%h_S$+t(P;deEsU7_wE*l` z?XtN@M%im`X}cVt^?E$XTHG2cymVZ@xkMfFktO?yN@0y@BP zAykK3@iy%neCbdlkRO_ZM7W(SrMXT1!B;fGd%6GQ?A8$PJBa7h?5-@9H-YK%QvuCN zJTf*GWCRK5+(OqZ!%=T_or=n*o!m>V&}5!$c{psy>(M-5aQEXmJ6@rCV$AQwYYneD z+RLGUBxAP_66j>Ss)*(LrCy_T`oh{Ww6+Z0L&RUhv@#)8ab4R==>Qdg&3d9 zQT1_eptcg~rm`&$2_VPb@vAOmQ%hs8vocorkgPNdqb_x_&ni3qyj2z!RU+R=dyJSgq?y$L0+yp;;R@aLLx-~A zgz2ZSEZ36A5VFXa&z*ZD^B7N?GaxoC_Eb%?-LXYwW9GD*Fv;VYsCyQd7PDZ{B3|}I z9r8=_b3o3|H9{IpjEcz$Bl zt_~_G3%@Xl;yB+RM{Wf#Y1CZBZgJwy)%wGHjm^SWdI5GOqvHkunRJ-tDlfi+=(P~t1km=TRyzZdznjGohy%nVe+(( zASB7WFRld!+k7g=dCqf;y~mv~R1v%ieXyf`1SY5D)a++|~& zVB+^%dtcDDO?^@xnZZmr0Cth&tMA{><*BPVAmPJr;b)6*+t8mDvvn<2-Y3Q&S?e9I z3!JCq5kcrlW$ceTlAC>OJt}>kx`C&)%X!v5njJbPXuS6844<)vZBv{z>Wk@SgDl4N zCYuQzC$??e=$;?m1>gYUB|3tSHUm|M+J848n|) zD0vOZn_dR_s@r_tE9uhW&&W0~t1jg2?H2y2SGe3hA5{F}n;B>eYfT-E4%IwPs|jYJ zTzv=`FY|u2wx10)f!(&}^LoK7Nr}(2o;x)cTASJrg|SCSb=wGksknnpH#J@#2AdYG z;-3fJnmxF#IjU?`U{fyC$m3IcFad_+nlfVh=&Y;sUT0g2)(rmZ%&#L$$-{!Cjq2m5 z19!SF(Z#D>pJrafM~GOb%*CE~$Fi?sAGvdAXzxZ5Kitv%uLy{LqTfq5RU0CGV!$ z9oxuLZU0!6(ZwoC|3>G)FGItM0jtZEmtC{?5kC-S^tu6=nb{iK&Z^CS9}{R3Vxd~| zyX0BWs5q1F*Ejaj{5EcUVeDpVvqnNRfNQcSs?*7$DVMP=S0?S%Y|cau$iNXBt^F#g z7M6@Hr`3lVb?ASv!cR~uLaA8rfSH65&n4CBv*VlFtH;qiVem<3Cch)Zog<200iR== zu4RsQTT3?i&zJcU(BvjDx=??M2Q~bzuq;+ zf^=-FpEDF+2l*c7VRqn8mBh-_o>S_6qee37H%{}eJ(bPWfw5hh7Dpodx=i(?HDUG# z!DKczxysW-$1UTz&sOVt*ISczffaqodNia(HLi)dy!+!*<+bM_Z#DPVaCzP|3$C8e zVt5)oJn)C!#ILXcRbG3*JCfsjr}vTOaLGMDdq!)~VHu^X%~Y8scpht?zEMg!9?hEHD(zO`zAnY?cruB-LQ09{zNhOX_p8 zra8H^YBCb?mA6n~hru0EU|}?4PePOlbFr4UbTu~Y0D(5h$ZHdAMr7Qw0bL(QDsn zSTfH30`5L9S2woTJ(leK!*VnUa=!Ag4etBtcZq^z$ff|x5vlQ|e4>_JtqX5c6VH=j zfnrz z&~&3s(y%Oi$ZzuZ!>3ELK^33N?QmIQcld2+MeTZh1iA3Ypt1eoMusFm1G`?Sffn&*+E?&V_K2 z7!Cc*l%8LrKefyyXWf{C#TUY7=uiBkp+2{nZ{j7)cy9;>!(mDMHeae6_u=^%K9B|` z0JX8Oog*!LBHJ~cs|%s(=jDrfW$N^;>g`D6+^~f87YDBh@+FLUNNg*?WN2yQx+G{N zYPyG5qq)a|^iG-RCB(V11PdyFxl}F5J#e~;_i|qw>RPZ3kd+O~nx_XAugrT> zL&Vxumew;aJpecq7$ieL>Ep(_uFOoGV<-fYFBCYCTOa%>+cV~&-VX{C?p6ZRka`Ln zjAXSK3v6?CH2?8j0qnBrI`{pe`}JZ{&4-8IrcZbGMOenhx6%rPznkoXphQv#Ohv@^ za_A(cr=QRfvqY|SNC01*UB5v~4$+@F10n%xqfOq)c1mwi87+ff*9#;ptqw2V;yJaj) zYf(<{Zkj{k;MGQZpk0BW^88j7PPW+e>bQ!G@6Tst>Nk5>faZ1L>Z~@zxyQlYZERyT z3^{VoWVj*pSwrxiPYZqPlD>$@&cilvz%c^pvYs}0b6J}bJuAEd{wK`2iprf%WA(2G zg1VmEr;C^S{)F9x(z@0aN}@&0x2cy6VFj>Vdpb}OcOSHcqtW%?vi60h2QZ5FgJWCP zbA)G0UAgwbY$P0k!1+%n-#2}z<=KqyI{*JP@Q3@qRXymWEC2hP?Ohi-j=_2w;gxGX z|8HH2tO?8=zmm>CDjdX}*Jg1r=b#Y_BPIYdzemEc3j#W&E~WJWBA%5$#ZU%<#2>_$ z_2WK@BZ>KU#A5$3MbhiQ7K9N^M3%QJ3GM{;u{f<8bGpW9aR(7>`b0$N$BXtq8q5Bx$(Yf%`w%NpGGMiy2R&%09un|Xla-U$Mm)(w;QgO8e` zAd)Zlor%aHsR}-5Dd+Xi+sdaoSwQpi-O`tHOXnLoi$rSNT=^E?@AqJxA5-KBo}T%2 zJ@4TL{%hn8YK55i?pit)Cj^Sl(Tj=3YC=6gT7Dua19QjTP44W3_w{AK-r#D{*B`67 z_b)}~$&~DN;81Qli@-{*{2#A}3mws4vNN&tUA!9)W}qcgJU0VN&JA++Yo5~h1 zEeZA7uNGqm=n(&Z#+qTesu9-xx_Q0V?L5E_t4?=sZDMoEHD%jG`(LNgIE`r|=6RXe zRx`IW)n_UR+sZ9*U<;`9T(x6JMliwxK#@TJa|)i^)vf+<&Cdt~=y}K%KWnwlRSrjQ zf7LD1vh=5yjnG+wHH9=&*ph|%E-W1xp|RpXA9e4{2-1NTQ8Fu??Tw)yENB&6&eZ4| z=~Q7e0QVeP=I#kgTUv;_{?!hE8$3-fo9Wi>s>+2csAXuO@b*$tc{kUkKz=LWsi@oP z`-tse@bOQs=GTe{v=Y>8W1Hc^e*)`J)X7n~&cbfP&SVQ_`MK!&L#aC)xMXP~HCQH# zzZ?ZJa(PJFRto4RDnp|Wr1zPGlw9)jD#K%+MfyctM*%XC11|%t))B*$Mj{#6vs{nH zN=l=hC;xm*1&<}rrlvPvCQ1h{q;9r?B{}jL>sF@+3E45+62gBEE1alU`I4y34hBLj z->|%%{~Gmu?%@k#XcO#VkrxkT}Lf-=IT-)Z?{|LxjbKUeFN6 zBI~ggE!va#87p>YRt9mAhS(vetU5QPQGms4+T2o*|E<#4>fX7meH03e=QpLg+JElG z;!vGRmb1gSMszxZ6TLt@Bu~_eB|?ocKn7tDbvE(ftg>Ni(1Ie67Yzxavoh>hH=YCq zEPB?>A0t^^4eV)Z-UHJn(DC_~#j$9>QZrc=(@{YH(#i9uW6lvGbXYs&O5gq|tfdbx zl_oIJ1gH71ad2Fj>pIE6w&u+cvdf-6;&;54!PD`dS<%f6Ikl;Yt-){vm!*UtI2JIs zQfJ&X^Q=}P5lwiYlfTt6bQRYmDR_bh;DAWCxE;O3Ds-=}5d=z7#)jD$r(}rOeqtgw zfq-tO#G?bXvNqAE&OXCFWgb9yRcmujg+kx;J|B|(j@(9~sPV)^()+9nzfbhDec#15 zY3lB5Z{r<_U%(ezvvbL0RWUZn+}xr#AZoFXh=_q#f*7Z>u(CoXi)wy^!^hLFB-uLU zA@jVLm44%cZ|hMW{hxnUA7RW@$J6Fj2(Hp(&{t6qZ7MMZ|7-Ttq$aLP(d}7rRe@Rq zGwGTe`OArcqNu?Bls z+j$VAVjKTEmrh?ivCdAzp6L~fhWffnoF`8ohklf20HP>hYF^r9I8f#!k z1i?-bZ!_75_c@2I_eM`Oo3x@b+6Re^((9&vskKE%bQfYZNoigP1qHt~OL_RITUCw8PSKbviAF@+{<_kZ zo3t(x1+8j%7Lzj3>JBh7T;16)b(F=lEMubE`0Wvmf4NNXak{oC&s6ybg=H>_6bV_H zOo0xxQ(~W-k$^+XOCvad#koV-RAE&3M{CzbH8m@fSQMiE-HDbp91D|+xepCPGX&K} zW$#H*+#wEe@PYUHEB1pp#wsl`U*%kO>qe+29w^pC(-C&K2C_5GoTU>Ud=w07T36P5 zWO$PrDBZXPN5R3+7#t3LJqwYDc`JRgv$Qsv9C}}aVx|IJ=zW54_^Us2rA1nd-RhN% z)-RD^G+&sj`SX%pS(w;IpEDds8E?V1%|7RLl7=HIYenY1Bf&aN$Ic7~d&0@0CI+gu z-#^UFD|`+r>}M&^SQ@Q6W~vUM%IeOHYDV~fgG^Y5ik|n|X>4A+_EY_Iv=UYEu;BK| zs4gk2H5OM@!+>0UtYRknbtMoe{S_?2U2XgRs!S4dco=878-6hQgG6(CHe6QaPHT;rb{&*(GnfHL2SMT+1)FH&9k?w2~`0hXTkwJJR5_6}4JZ*E_%#ZT25PaQ!wxO5{hs zO#~3|Y>8iL9-t1=(w5d;Ijen~Sm;Yklq0b1R53`q5L2u_ib%CQ6oI;D73Y7u{+1Ep zW{VW~R`Rz{Z(JV0`QXxlD4h&M23H-3%O4_nUNJhVMmT*-fuFAtxgR%%`s(G3zlJTC z4TEdJ_!q^zn|GkqeA7q>yc{d-UVjP+*wN)DSHPkqkFi~p+Pb8$6Nz}EAJSnJ8MQ@x zI%a6)S(u#+@kn)zRMU36UDnjU2_3mX53gRq;NqY_o3<(wUmPovx*N znhOJbw==}){~*zoDqF35XL1_jm!6Lx&%DOrNYcVHZ+W|wAva~Yej`=tJN_(2l5-Qa z@nJaOZ_4kpU-O=5}`O_RM`D)Ay_-U8h zYFm6+o$Dp@4g!$_7Wal_n*tSx!OcEzY~RL;NA=>3BYF29*UjUWi5_82@nS?ohZ%i5 zy4T&Nw)1sWRkqQM!rgzk;+mMZSZxaILUx1*V?uZH*TtkTxt#^wF>q$)l?h!o7}jR8 z@*ja_>5Ks4e!nb?5t2Ak5gyR{v;?ush7)|4jNi_}?C6A$kZ%m;<&>+=1-NBtf`n+Y zSbKbu`omM@9jgbOa{4Vw*6=umimmm){YHnXJ=r^VzWLtk#AVM+eaj5!G9yMbB|E%cKrlXLN(kGU32 z*I({do_zTP7#Bh*Vb7p^z1klWdoO0a{9pCMSgmoJUycS26W7q5eaYpxJBI!jNO!Ffngar44!4Ox0kOYN zk&fv=0J)iX1RPO@HS_#b-Ll}mMt>9-ADgI7DcSu91=X~c3MXC<8;+nOY6{!n0;A_s zF@=zh$soHy1O5FKkNY7JrTRTVq2!cQ6~DC+LolUKVENX++k(eQ5NzkC( zGK?|c4yF`=JS&Duc)1^S;)xZO7sT&yz}La{+2i)zqXUWj&SVGpcp;B3}y|n(!7Io>YPlAE}itOPP0h{LDK=Sl6!mM*vdcA~&o9bMV zXl?#+4e*6>M$x=AClLmfXIWM2X2xmAYz>dx0REH+=&s1GSq3G1`w(U z1u)uJ=4OJSJ^}J}KqWe4B(p^lA{n zH;4mjU$V}d$mVAmtcw&L!|2`kb@Y7+4(L!p?RYvn0CPM&A{af1Y*MCr(JWAElZgH! zC5(Dcgr&Fus2MZ*TlM_F261rEjzO7F(Z4_WK!0E{X3w3h}o(p1io0F9;pcAS0e+Bd6Q9ZgC`LX zgN}DNzPqqEKc*^>0CnuHr5UP~@fl$)Vs*B5`O7#70E{B_DSL#iriKzGvqNRMR&9d~VutRM?zG(2(POL_erNLG>6j$yC}9UH_{{dW`wbO{kOA>;`VSF? z?l__r8(HS0#09AUBf+`&di70mUcd>Ky9@au&Kt`vnpdZg91s-6#E>#GeZmOHoGS*x znix_BKo3C}lt>IQBW7DGKpT*wWQ|x>K@$gj`iN-TjL?z-2+f$be~G-Yf@he%eNs(4ZWD)Oy; zTPgeE$?zoNZ7~!Nrt6ecSjYNMuWj5YH%djpKW_qg(p5I?<3Tg3T z27?>!x<$pxm(Vq2mv7zhFK9cUV{s}Nr(M0qk`4OWnA3efe@Dx&L8YJF&P{A5t=RIo zbomh`0LJa4F~~VD^vPW~XA4k6(io_k5wmY!K|Z!6T`nC=9!?J08@slzvZp_hart>Z zrqFQ{OHUN_+QAvErMm=h>53y=uE4i;I^i_fKo6Xeox z28*$xii{Pc$u;DxInoy9HPapR`jXow*=syOwHmA!;7v4w6{v-9fVR?6e zri(L}uU&Jq(vXOxJ*TbrxWOQZ(NkbWZM(B0xRH(0mivgkG=*1}mWczCC~D737b`B6 zt%bX%otAJrH$6X*7`w*_nE=oi?}lP#ObEZw%Fmcl8uwS}(~iU$))BYDPOhM|f;BPg zXtuo6+ogfCEd_Z&hqv`$S6>I=u<KZENyGW;hm!kN%feD%v4`G`Ds_6F#yO{I&xAC=#l9xH&&KV0&hw zWXvxy+6puGlbvDI321K( z;$JUIw(-O(CPD=2SC*~MRd_|N+r{LMj;?sq=9UwH=fPTLhcZ5VgQ~3oe-Rms zJ+?m1facEF{xcDhe9@#x0AE#WMb|a34TV^D+ByYWnB@Pm9{_J);F^qwey;xVzItkI zO_eMQ51(?cb0Qk>N56Pmm}GoWqu>=TMikTKb}Zk0!=8ARa=1zR^-&;^k&-o7?(O3p zJSOX4@nP@Z07J@&+2aQJYB+_H(Oa#KJ;Mz$p1Q`|Mjbw4K8b#pq$DiAU1FUCK9XM1 zlVBG-8LF5_jk{hyGb{^w3I^D0M#Ud`7M8ya+ood})U>^Bw#{|Udrx|zSk)e{c->{s zxIH8VfTPCF^W(00=k5+Qd=$OKb+vumCMj*gdRCaRY0Y=n3)tDI@>S{RRJ|8J++Isg zZm7VOJ@V5Mg9Dz|9*V9d3bk^`s~<&#gcOOg9%r?r{f+B2v~=fA@Y!cKPGNBcV}io& z_x&cnga56g=uO8I2&n+(pusY+mk>!5u^&h(O954|2}KgRzcxC50ac1s%HNM3`PGD=KAvm z(^j-(+KENhOLhonj}oX5Y9N$BQseUF{E#Y@uN1SkM{-^e5(DN;)KR!FXV0Nu#eSRj z;cij?;!;T~S-+<{xGZ@IU&Pt4D$vX+Lfuj(R#%st865x~WogAI<*7_WJe$h8k!vI$ ztym@jF3`*&m6>wceb;<)Iz`u1$ z4r^HLFqa*fFgv~P9@>EPlbhvb!@P|mCC%#6$PMwbnlPME+{konu?g?hjK1Vdv%J=P zUB5G2KLDBe>$Ee_0V%g>6F24kQmN7DaHZ#??Mz0rW7o)d`vS~HNYrGZjdZueLqA+q zRSXl}3+DVez8dr@ck-{fWSOEmN~`!0_qis6{c(U@?QQg2`(k-q$s;;zYBx`n=G$`0 zeU8DwLd0}+<=$oplV8DD61ZQW4lMT76Q5}5Xp=KN*~@lyUVtK(X-H81Hxr+K0N8jq zpmq4Nk2i%>WJfsXbfPRC0G^JLDG8H-3y50?g;^bhVYYJJi75URc8w@re@xT(5C0pq zwE}5#^@7SW=zFx2X)RhOq5LE$xsw;a)SQEHGos~el0?LvX(p8vv`tuf&zUoq%8XA_0VeJw%m}mT#K>GUp zKYaL(4}RmV%>T0EJrG(kM*l;Nf8!;Xxc_0zzsL1v^X_{hRXF8tve}}nFk?i1q$<1y zQK{}Flm*t!C;cRbeR1et80Qfyl?PHPnA$;VOy|B<*5_c z6+x?{W&CF{vo|ixy&(vRyQBc9hGiK(3o{;d>Cz>Z%2`Z5ML!eoBIP}Fk-nfvkI`D0 zmp57BR7>L1VBedds-v2F$juRwL-J(8Ikg~qYeqJ*Y$a2fqa4+nO{o}uT@uXt1#NX zv9Uyu+~GHr&%&xzV_jpO*w`|qQTtbElkoKEyA~V|kX*8huvL1_5jHAIsh;II)254S&BUEG#JcIw3CUYSqk1}-u%HPsC}FuS}!_ouS4iA!;2x>SfW zZ6ewOL}C2y3`@pY8STi(BqddONkv6Pnfa_eaiY{9SYrzZJ2!n-L3>_pSy`1vFsW2w z0D=Jf;pQk61s!$uf7;T}ms^=$;3>ytpJ|p9)%Kdy2@&m~@aO)RoYja^8s%&m9VVhb zm3ADZVJeh)HnT7=myoZFdutB6Y{79%T8tY%A7$(GPk&$Helj?*p`@)M$;{|)rlszP zINBxt`0;bY`^Y_OW@awS)~vd^n^psJjq9QPcrz;hP_zo{lqWJ9(j0a?j#r&4ze-TfDgkO?{3 zJMM1FWtbl_Z5%~G^x^%#PAYzK?xug5m1Jm>Qn9RER+fL}(#iVu z5lZ%VrpDE}XwSC?gknWUX{m6>Iq&t`m*ilZrVVHLy_)LA_4#*VMaZCVa|(JjOIp40 zm(RKnI9$~uT@EK6FA6$u7g0W@dekf~&rU25y91BTO(nT}$lomL$)y?C{x{_IEXVea za*;bo;sLo4p%~=|NzO}+PIwYkyvmj)m1%6O^;e@O7C5`ge82~(iyt4t`N@NG9>{gr zPRkXY@k-_f_imJ-rp%h&oqGh|KB6AXC-)OfuS=0J6>mZ^o14}02^ug$9-nKG?393M zV;vrQ#=65;?k1!24Y!(5xBX6MjLwZ18~2jge;OWa1a!xG5F19Vw;P8EbfCUfQ}SG% zw@C-Fdy}VQkX`(qEzNnYMMY&4)W%y$SCdATfa7)lEo;7X6`k**;7R?`kC5(Cqyhv> zv9)=-I+PZ5ZeV3y_-{Fd4|{nr)re?0LY_1>ALm!VNEsw(x}?Q9M@CwE-dhY%ga=^D zU#uq28GLL$L8j|l{&7k5F401C(q4b;TM!$oep^L!R9h+aB0mEGSW4ZFvLxx=4!UT^ zU5_-4R01TFoZp6+m$+w0h7orfSHoUaNz}s{eLAbdAgpB_db5l!73X!Q)eL<2PqyZNJCtSYK0)GQ;SADbz! z_Nxe@v}sFAY1{4Jg9+f1VQ=?JT(6EG!!8?s8d*?tIUifi^}RBbR$nYTsDfp*mgPwb z3(u8KH5H_KdjUCFyz~1OnqQYEjW%(heQ@&wUSYPpVqMx8*+~0uvKnBkR^ApC{r+KW zX&{{yA(FJVF`i9}^IJK>dq}$(NEa0~n4cki6^lt9I4CFA9(dX(ied7aZk&d0LY@7j z`}WStC`Nmc)A|@6C#-#yv(PV$Wvj>3JcC2|<4&|$T7J6TxF@@}R7r55>}aP{`$QwJ zW6BQJeS#Agec6_=HTr~KcbGbm>wpiqq>+~6aV;ICAYin;7`@>W4hx+#w%+m_XL-w1 zGYKvss@) zm#*`5B@PV{5V!^x+96~-wWP!CB-VbMH{v!L;jb^|@Ei$~Xsd;3gC|YKEbN?1qRU3! z`QGMx&Fo}~Go4W`Au+4brLFq_G8pH7k&&99YtfL`{>i3{88#k#-_y+;Gb3v+qSayL z?FCVPSP%}TKVTtD)`wZFz&jCBhcwY783Um!JujKD=kj`rgjgk?{|KbmX`qf&PMI#fZ4uM!097mGIdUR%WHAWQFhH%>XI1 zvewY!{bQcZ`F5T*^J=K>Lc*e~<>dFq66ViNcM>W)0mXDfO}l=qjlB41h3aO(_Yr8Z z;CkV5`KG>zA)?AUgH_c}=nc@pQ-7LV{M1Yr7RJoo1OMeNIFI%M`cC?auUN1}==2?v zD)IN$+>DnOYW_DD;L@x!xas9}Kq{KBapNTQA^rk{JzJh*3WwEJDg*`k`;_8^)RCoG zrusl+`mUoP_uawz0Nx|1R#(BjBl=9NBSKtt8CK)exIRDr(XIr;XN{CD!DI@X((ABJ>Vl@tDg{Rus$gyy7P*D)=lvzcakd*&P>JUTEXL?AFiR* zc+V$e)7?iDAg`3=KzL)2sDRFUb)&N9)mjI%ZaH}ym5w*QcnK{ICpnZUocyp0XOimN zJboxv8{}4>z@A`7aml8<6!FeKs?=tY0(y^aRzUcx8R!2EcRtr3VkRqoG&y#jPyTvz zy_?b}j*Thf&u%87E+28*uRTg0l0v#HYfp3C7IJH1alc$mM0u}J8--pD;r8CI-^))|9VvaYvjpRwIONE&r zTI;mQ=W}hOnaSjG!!q{Z7hBDX@0WH*kIUoUkfj=_`F?*J+g>2cZ`9b>c)@k>*x%co zr8c%VSrEyKG4)&tojiKcdp@2<@}ns z=zMApo0+HYt4mx(nwr$(CJGSklW81cqj=$V@-y7erGj{!`ea70gtJa=tt~tXcYS5a(cngke zH2C_Z5`AvjZzjcB#y8OiD;QWqLtS-RwJ(7Jz9p&rT&E7vtKMfQ3==Rw(8YM?+m%zC zV(y}d^tXe*3ZipQK@%{6x4$w*c%cGSu6-h@{Kumjxy@ZdP7-D``#6p8ILH zM+C7Z=~;%V)j0&a#8@7#BBV&L&`ZC3ZcoOv7Qy*3KK3SdVfX=nMFp3q73XKN=@?ZN zf(^So#{)-(80U-fcCUBEzy%Fzj(GrYyr?875L}mZP_Cw|sO#^xNOTf>uvLHkA$rbyBf~Ls*4f~PkO(>qw(DR7$^K}SjkTHthq`Lik z*3je{dYI-MSj@-CAU@Lw?r=XQ$J8mj!=MOP+bUc>q+Fhat^VhnuDx3+f3JM?L5#d| zlHBYD-={-!1i$qJ#GFEs64}Uylb`bTCW*7e%;>ovHoB@J&ow5nS!EqKOku2>tIbU= z8>CMo16bU~2NBMZM(JN>0l#s((A?ib+BqRm?e8M zo10nRzNXEGM>#sC5$)jdi5T=5_{F3k6N{$Lxb44}s9-TWoE8gy2|eXEBqN<~YvNsx zIip^G{2MQtc*!s1VIakqraE(oNyj2hlKMwldx<50&*jFZz)m)ZCxXo6(S z@3KEsY>206bNQ1uwT4}KGjvj?op$TYcs2|eHV6u;{&!|l(~K5bYEb+0^qO9$X7?>t zquELSkN07Bb~1@X`gCqN-b*NkHVguuL!^0C0e(K{mJ;%u3z)leYKHPf4>=7! z&!mQ=#>V2Sjb+BSMHPO;anz6R{P0-A_v;~+BpDij1Pziaks#tUiI&~Af_1-#g3_g; z$S-vx`W4&N5LI*b7yENI{njP1jrapdIe$8_&d)N<^85wi!*y(<;d$M(tf7@Mw?W6iFw}G$*L9f|uhAY> zJrF`R29Z^@;x@Wzvk+wt7FDW7%X@(={Zy&rys+xte=(LFoV(>|DNn+f62MmBs-h@G zg}vUVvmDU74&(aiwc~WlMzD~}=f#!>PM$z*Ab19VivbBEexvutxH-9IV#OmZ4p}1b(-$XSVN*-A^Gs%n9U|V0;v5}4%+x36*T&6Om zq+b!SJstWdOx8~eHb{@_s-H%?|3V5bb!of)T+i@noR59I)M5ar>2Z6kQo}@BUilP< zN)8)sm)qa`{56=2{@7h*ZZDQbXJs$*IC*@OdqdFi1Ke#tUQ{Yv)goEA2i?_r9>?sd zU0*AINNw#4&~Dr4TcrBDf2hbVn>Um`Ml@S#)wShVuiR`tzc{@fq$g^P{N_}omc)G@0BISBlGRob3j7j{bL^>i9OMANNoJxMBcil%(AKiw_Amq1Knh6xnk ze)8YdfKdspOXO~16-fJe|65l*nbT{j(O-S`$XIL2%mZO^)^a^2eePNA0)x0|+iwY5 z_UWH_7YT60o#8jteda44b5n)!NI?^aaOLC0v#vENx15KO_R^z@ZdI#Z8-)`au_!V! z06-xet%4vb6<+dl9Kzo=Be-d-tHUJm(YR?T?>ilW*7J%b$ZNM7nai~?icbHy87&Gx z+a_po2&ggmddih^U!O>03*v3jSMd+5TEG3ISRdLfmAN!*w{NK3nBQan)u+~K`&e?X z{ndG@)8?&f^?n!<3794=U?4x`>$?bFet&|bfi$}b^(fzJ%}%H?^#@5~ z_|H|~>&Rd506HDlnQim_3nxi)GSlLJWKOZ2w(^ z2>F31FZY9*7P!BL|-WXy!;@jPL%neSWru&#v$9RRneOHKPEyg!sk;rsG!Lkzru z$9TqI3xiP8DV%3`*Fj7dhEhYkr~xdw>|az{^T5*LL+flh=ZR9+I`VifGxzSlQ7q}}41Xr}Y%UyGsfd{Y+y`-M~s2@Uy^mo=cJHrk< z>JD80@;4NM*08X&=7;2z*!3sC$c>B5;bY5eZMR?6_yr+%$*VmAVEn9~f0OnamYisQ zsdxz$IYlv*y)N&(`!J295gyghHGQ_{RC+kXiL6R5G>Mut=Y803=Tig8%G`c?!07hg zy69|P2_}P8O|IAY76!I4>W~EWO9woht~pCp@;UF7EJ6VuB{*_i#KhkbU{8EU6N6C0tyw_)sCXJL?%7g#Cf_49 z9CMvjY_0h!F3q~n!9=ovHFjH0QqhoHQq<1Ky>1yQP6V?p-qN5*9F(5xZ)nM6(Q4-n zuahUs^yq}&a%-K&p49k};=3oN14-RgT~=*3O3$y`Xn z08l(99`DYD1&afkdyjvTiaRvZR%Ovx&+mThq>b(c2Maho8(C{5`!#Aen~TxvgSDd_ zpCvz~fVLgVK4M;M)zi8m&9T8x!})J9_~6}7{}8nH2A4fs3i1}C0^Zx8#@j`!sFq~a zc`LI~*Z9;`9}dSVrk-xae?S6=v#Hn>m34jZJ?vE$Za`LU4avIGUXgVt{Aj6r_6WwX z2WqwGV)ZdYz?UptUm(n#j&J2n;bDGB2ejSnPtEi~%zK=G?75w*X;rJRJ8=w$eOn7l zmo1JKvqxitMVY#N?2HAnOcqeK|I~k34WWU0R+W(P(U)`y0!N0Q!m-8YJDfPJ=uYGS z1@FC8cL*Tn_>CSO{z`K;9b6k9Zt>Yz2$$4tP{Yo`tpTnQ{FvPSr==l@_}5gmi;veT zM+pgG(2Cxly#CxcY=K_dkQGtI!y)tT#*Mw`FfU3aA-}y~%{Q9h&(lEEs$u}I=d1E6 z1;;JdJ}TQWgNj6Ek4+(|pd5!=`K1?-G*)(M!GbcPu!3wQ832V^MhL7yErTA!e6*Eg z#XjIX)<5X1;&;>42Mqy&`tPe;@;skzHzgx$@+mnS95x+8$&3Yf| z=>rP^s`&+xl{VPw85fN9b0_#xqeB_XR-BhO$!=wEL#2Z_$*v2WM9Jfa4nh@b0q4Et zO7%=XhncF6P9ye%O?yB zAGOSt!+gO4^*5~@RdCGlHnTgTYk{+wzf%0JG_a${QN zu|HqZ+c|2Mg|EW@auUSBoeRqfmwaAUEDbLlkUzrV?lDkeI zgU8XPMuV%#=X|)b?nyn&XA~DtoGiB{OtB~3^;c{D(N3&es-0QH_%Kib`EhLv% z8NA}372n1!)~7O%%RN-Djmq`_4wqcaB+9s|5Cr^t!Ro(lu&Lzm-g(~0zq2tDOJr@A zx#@xnxU0Qth9T62uU6D}el|)={b^Ukov^*xU-hWcrk(v`-wPlLVl?Bd&nI=*`x&?v zmOt5OdECS4V7*|3Ul`Rj@+7ASOL;CDK8bPw@UhfQlFU~fKlF*di*XE!GoLIA*;h%m z@vwaC^5l-mrGjm$psy8mo}N{{{_|1ACQ4i83Z?E;)JPwioVJ(bFJ6<(qg-&#moC7y z9nX8(^gEr@XsXk0@4TxROoFhE*kh$|-!bU^<)9elUYB1r<>9IRR;s>(`36_lTbTDO z)INIwU?DNYArV>5O>WoOz8uttRToqzQd*E(vla*n08D?&#Yk#&UIck+XIdIZG4T_L z2VP}-ApyvdEWc*z0MJB103e~vvgx}YY8Rn-ru}2N&Vq?v#dQytcH(nhb$;t;>Zci$ za`SF2o&NBJk2P_T)qzOUQ0|4myo%f&r#^OPRz451N{phPIT#9GCcz#J-z+Ku~Z1F3_4F zgNaZHJUpqwXlxb7m^mZ6Dc((Cp^$Rj(eVde0G0iGWLNIp*ymB!Ydz3}Z% zR$5A()ppc7>m98T>x?qs8x;=@AbLxl-1cc`A#xwaA$XEe-gw4KSBPw*!8ZT3^+U9e zZQ;c@p89>a2ESV41f_=LYPvNrTORiad+dJ=eOT)PV5!R0b{&snd&YeesewX z8n?$Muw@VdH`Sbhv!kOwcZEt*yghSC#X+1G2dL`(xKiZDD;6iYd*vwv?mo&w5hrY$_4x#f~MfDm;B#Tf$p;xVE9;IPGbf9q=Rw(CDGfP z2Bc)-BIAIsqo;R%M@mw1;peqwxPQx*toR@e2tcq{$)GW`q)lr;2?#7!Dqn=|RAsQ_ zdYxMUBLv*AR$V1UyS)uv()jROq9}{={V0lYfwB*lrbi2{`q0{m|ydA3|PbMF@xfAhVzq^I`SG6}{pw>v&Rz?U|bVKE(S zYh66EwvItNCR$46Dmso>@61gbO1R%r}fxg}H=wYVAh5`Vw7Ny-I@ocTa5Fq2FD=c0EBGgb+ zV;&dPa#lZ9A5e$^Kr@0Iyq%pEd2wja>M(^!CUDSxJ5olFj3x})uY(s^18o2RgiLgM zdRU@WyJYSczz+!%*`^6vxVO!_Q?w#J3^9o(<;67jHmc8@`%$#XL9#DuO>Q+E&&HYN)I04{$U zgHy7V!(130D>EXSzo8{Wo?u4T+vac#XBiJZBg+a*=N1vQkhIJd=4117&n%p~l;Mc7 zf|jBfZ;9UvV8yZ;A`fIH?@_i;^Q)Sg~|LSUje$L3| zRZ!U?nbQ&$0xRcN<|C<}pT66CInDR8mAH%AI{nmrLf`eNpsKbmde>cRx|@y;MqgL@ zAzRseT7jkC%N#KQwHDmXugq3?K1So!ahyoxG)y-Nr^)oKJSCmKsK8<6gB1cC=CaHx zI5Fb_0MO!-jD<&YulFw{bTjQSLHv4|?xMe|Yp^|L)KZA8Mzh0-Sgl(QI?89Y#=d9Zb8o zO8z{eE+Ft{54?hJJ?uK;!CasaBspZnP*#p3lab`gV3Mo~14v6)kx~dcUS> z*XY$adR2_TOQPjF>&Bgxhsyf zS%x;Gs{Q9y#8Mcq>NdM;54-^zl%tv}X;#y^F`S;#3OGjs)KM@Yat=qe@9-!Pbv*ct z6v%CC^dMp8Bij5roYI|Gi>X?)dm&hpgl_%i2MOrTpE%P8x!>T`DZ_nu3ZVMc@zwPF ztx1$AAu2&>*wFL3?#2hWuB3B@j#o(NKtr+EQu7D=aFv0m6Q^f>a=$HGyR zF3GcM*Dt6upI1D9E?N_1=Ro?5HNU<^vf8r{s%Mh zfsRLS{3eBFMWVAM#;v_C8mQeu+c_%C)P7b^SHxM`yZ8CgfCePWA+6(jdxUdu3b!zV zoVZ$2mq$q2o4P8EHf8Itw$*-)Z`Ljm;PY*uN`y?*|5Gq#d>H$?1RtIFbC{Y8o5(XVz}NtEC_4M`g6I(EyB z73HR04=qvKr5y$oha*X8JPcYyaHtmB%MQJV49CVjoE>O4#8kwPDqe8}pZvxa&_9 z>loB04AmJflL*T{)umG5%FK!w@U>9n;hwx+}0Ux@}8zOCQ;s^QPT!i zfPOt%%Bf_9_^ln8g@TTUHJHk0Z^A0acK$n@ZqtR2w8;OORCxFAhbiewKRBy6!;+>- zPJq6moak80V=b0nIt#X(GC8g1Df;n=&5}lQP*GdDZQp`XCcnWgk!76Ks$Oucl5yMlTL;DwwBR$#Z9iD6CXk6Q z4-$lHjOOAE>bY}{$o|&h)97VIivSQbPZAwfP%^b8KS66YiSKU*Ujjy??sBxN z>gIoOl-s;FRZ@<@b=LK}3K`y8i%2bxCN|JL(Ql$8bkqK=wnTRSnVbqs3asgF{jtg(pZrMW4F>W>CNir1?5;C8%HvL`iJ5(RyRMv9vpmDv!!9wC5qMsrE zgY?;U-^-}bU@9sMT63ZUR}!sQDWEq*IEs)FKJ~epl5?}ml3D9CdituUFOK@yKgqD7 zM_V(Iwl0@XHG%27EcyMg>nGK7R|n><{~g;|KXW1Kewf^ExG%4fn~mmmb>{uaA1`Ep zk5N>4K5;OcEGMX)3eh_?_6^%7EI&?bB&q1pMVBO_iCGwm$}ozVkvna2{cPFRU&S6t zH^_f0qHQ{vvMP~`NaUox{OjWpFS^E3wwsJHR>MyP3N^_{%iz~LOO%1(cdQ=LX2}w* zp7;mGO1*)bS;>OR)(IMvoD+7LenpF^pkhfaKt@V|S~`i-yz+FP;W(Ik2al>h9sa!UF)>%XEatiC`v)wk^f(oK0w6jt>EyB?09NYi5R$L&F?Zbc{eJW@*y*X zI#9%3d(Z(6Ut&92`Fj9nx&iRZZ7_$GwRsE=Hytb9f0$&cBGSU;oDi zaHhznWzf^S{Kr14Q?26t37bl?U#l|7(88O=E5d?{NNAT29Dwz^`SnuFvd%GcHWNLtjEwKq zfcD#)UDOa1KxvTptua8bg|)ELG;~b&o3cX#M{nhbKElpg*fjW%4mLg$*EiN?u$Z~u z=W1iMKFcTjF68rls6cE_u0&8l$Z*)tUx9Aw<&IXQp%MTvH>4Q!xtmS6Yh0a39g0li2OyXfrQq_UQ6Y_C`xq%?wvo-R@1jG69WwV3*C zk6rxKAn}t0-;-?E-sm)>UH{rE&F3&QxTB>cqqK!REO}1vcK1CazHPPzGP-C!329wG zt5I@|ETc_PJ$+_hs3CwC8;0q5%8ocXU|hgyrz9VPytW03St8U7f!IOZ^t1kboa~W` zd8EydL&>x!%_gZi4o$X!cKXYsWY-Da89ZvU%0hZq1P&9>Pg0-91+iuWbS;Lwk>wc|qIJ;_r8P~L$u4i| zEFqDUQ;K%4CdW3tOmNG*dEn%j-{N>(YdM({$o_D07dguP8P_3F&Tzgw2pN_}0> z)VDEa0t$N+BhA}of9s%&{M)C9$>*XGJb=dPDgkuF4j1L7V4_SOaq8=4+__312i3L0 zzbLyTYUOs-HIg*D@MJugZLI5U$ecD`&k+wI#}G3F!!5&v69f>)TqhB9pX^}rbdcov zJ_b6@3^)Em)^U!29sN5loN|Djll9^~^^86@1VVE+SDU9f-Lxyw6FVFK&*^5Ri!}mN;i&54K(J@;h7+jKCHF`e>IBH9WQu6a+<&(Pwka+$s%ti= z%i-%sk0Lzu9w;6&6dYANQ?P`JrbaENt49whcop7g;lI?>{dW~44H(5{j7?n$8evk1 zp&Zb%J2NuLkZ_HU>DkG#P!vh9BN48iD1*x*gW=^0DkqW?3M`s0-BL=hK)|b|IX=Az@`Vv_6QSYQhgwfDx) zTH=d9WsD!j#K9>h1H@4)mWEkvcNkU*ld6apHJWE8=b`AgO4>+|%Y;SBFOx{<6ry0& ze;31n6n)U?RCGfp6%}>!cNe>fAuUUW!hg>8`o`5mH;Pj3aTPNh+Z&ndZ9>N-5;KbU z_e*0eYM^?PkffxXPJ5 zJdU$}(7@iJh*Ob-?PvZHz5!Y})n>E_vI4Swd%Ocz07A~hB__+V&-P*$A?=&_^()p+7zu|#pPW~u63 z5i~hDn>jf76bB(x0=l-Qa{!6h-xbjYacXobnKJV_#WE@yIwh%PO?9Q3A4(o0QsAPL zPP4a1(2DrqbaCP zM-^v$)r1Xa$x=$ixHQkFt2|@8$0a{*%bT>TAKc$q(w&O~a-afwttYA!)+|goKlf6R zlAfPk{6tbhIuI`tmCSizsl9K;`hCGaoUU+7u^k%Cuuku`3OQQAysQOkbP!3y!*_D> z*Wa*R4Q%HiDbPGd@smU9!tW{DP{&SPLpT*p4~q!3oV%cYPT}#kT4rE^1tdt6mWXdU zYbB2ADTZKI6%;Mq!o&*`;9(R}d;<*@GSVD41#@#UpRX2Ll1nxxgGkoInw&U5@rXvI zaH)9eJ^C*!Vp3+Ze|+77en(_TSb@V)Q?iO603oSDMHb|1&rB5YauSqeD{qx9`S>M6 z$q~+_Kx9p_Q{|Gu12ZJR_dNFDxA9}E8YP0>Rhdy&ONE}9526hUix&>)f}|>^MQNL7 zsx9XwbW_jH*)ud;>}0YW3N|#5-d^;rkj7gb;Z$j71nDKS^Z6o@#heT*Bs_fLBIUw%bU~f_!`FpX31TDCs ziAl5BkA-6^qNb)-V`QRe}C#5kb#Q-m8m;|j)oKABx5NyNh^j%O5$Z+vQqxZ z6opDvI6pVRq`;KaQ@w<}VDyNSfr53nGiJ>ajd~7c?j(~WT`emaqcldM)f9oSq^5zT zQkq}rS$b|K`s*$%DawtC5RM`VsqQu&##LpqrWBBcjFZ5kL^5cQF5C|lfE>uB=qbUG zV9+*~w82e7^P6E2bFsXY-kV2M3WUN4iOHV4N}F_%qBI?ilxSX*Vo)NEj#rJ?*~rL9 zxFZWSTeCP$;^^Tl>rV-#n3H(@l9JXXxKhomVaLcA$gY8yvb04Mrhbtq4hBJ0LIM(2 znM03+g&f-kJ#C43c49!~;v+t9(|KH9+ZZuuIO%KA12{wsFy!ZA$jS<4w6?Vzdj%!# zh}}pNi*`l$fY$lUW{0G`qD52;+bL?1BzpFpL^MQH5vsybt5%{|Cmc}_ii39&*I&ZE z+1nTaX27kray4{!H=Sp3H%aZJ+BV4w&K?TCG)Uq!+Ck;~LfU`O|C#V96gwORr_ zdxf_L?NN1AL$H%I6x<|x2(PF`2OJ;%9f^jvstpf{nv%vf%E9R-lrhc^;gVQp>RK)A z@1{X%>4=0lMJ20BA+qFjCWN>^_6q~bqpw8Gt9H~j7gvGFCyI`8iW>uWA_Ao~O75cENU!U%&Qud=L-p{bLAp&RVHELS8zLhtd?fOyQEp$8B-4@l{c$|1uf+ z_qO#VvRKvIL4)9Zzj)=s;Pb7>zhUqtZn4~Xv$m+8+d04dkH=Rq$oQ$F*T`H4Dj~wx z5jC|o_@M{EcJ}>Ppnbt+Z+^2Mea@FCh?=EBwr}o*h5d!8E`MNu`T<5u@(Uya>4U25 z6TNSIoB#f*?SV=D5&nBveB&6ytNjLU@%eG8-M646h)+tt|2_PMb`pkDXh(fz@S{c) z$Qg6!1_BI00mr|B(B}glZL?##ryPO@p$rPl!s(Mx$)qvr_XqtzIpWvTNBaIH|L;I_ z(SL`(FKgpb|99}mz3+hJt8Ocw^gq`H@qZjY)c;LiVDIWU|96J3?)V_#V*&Tu^YMq= zBwjVO#;;Ja%<-?d2fmRlUwxs|kC^aRItT$T?w;PS*yd^2&j6KczWY0{$K1@vqbug8 zm^u{Nm3phyPhkec9p3l8NLXqg7EAD$OMcOw$G*j)5;@s}^o^b|c`Zuesd}JH~ zRh<9);rs1A-xWS7ue`cp&^M7Ik0~u(%lvBr(|Nf_x(7r@B<%ZGWf!-@ zH;|I;Op1M19zJ9cupRI3_5SLb*@`UEAruI{+M}sfmw%Zj6!0!@j&d}det(r!CjTr& zsJW4e>%fy8Ca#{CWj!Ils)2*!h5Je2j6;4>uNgpObTLF{#M!&2kDtErEIebh|yZkV@I(t`4 zWv*I&kRZ5Bbh|H1bs=pOlX%WD&qEH4!h@kmwf!cYHtu8<%fwJ`V90(YM9! zFunraT&APWG3U%bd$ZGVo9bM@hW#p#C>$IV(EZuJmFsfJbHN2ZpMtHgO9=N1s40YGuVk8XIaMEnetV)S(eoA=ku=wNs&nN+6O>6|1o zo`;FV}lOD{i>!pDtuqPG^KB6!49{|t1@Ac zOMIJ+&yQkD)26Mrl-JyR7UhqXN_@JF-|o`mhj4tV+i5_2`_^(TAbo3JkF8-P#1`H1gy2b48Fxz@6eWUlUCH6qVQN<4?|ob zL)dFJupdY3>F&wDWwBa!_kjI;Xm44YTdS?+yNnlu1$3retcUa$uA8lNZbT~*b-NlW5K@IU<0EtASaj3Z+Q+Je&jzbeO8Gd6uftRE zB?~3tK$qo1LVR0%?lS|GOXaefTN$Q3J(C$PvM1NsdzgMTdXDX}JfRO$^xNTr^-{GP zJsTe`Ag0>rycZpe?sAIT?KF&HEQOoKN zVOYDp$0$S%ebPo~jHM zuZN1o;eYTi-F7RMCyfE_({zz%cRJ0tm#)1&<#zAgqg83>&V4i$^EA_CE^^!1EvGMx zP4mU2u^v^B#TMziGFNQ8FCGo=UVpYaUt)CaPFxkr5&j4utt~N|fgX@T9+5KQ@m;Xa zU~!#anv&4CrQfK+jLU!kIz3kQu>L5l(AFj`1*gQPJP>R39ujHve(OprtL-GLGo zMO<*?XM)^>Aro|BI+z2ym@8f$UkxqH# z?ZRx~a%Tu;+r35nqnyGiVBnq={+E4KPz>H0j|6<4IfuJq%K6ExCgd0o0`5$UNN2#{ zRZ?yV7CEXB2sr+qgK(7j?^~KRsD^OCKBMIg$|xMx8B(0Nb!9cBq_+E#{q{d%?Fw}X zj|X6`H*)yL&XkZ2a$DG}VXb$6R8JZ5glpI?9^#Z#8`i7%5qnIX(Q$j^1&}cY#kJgd zxKq~Kwpc-klOcFrbzy{#W;JpAloqvc*Xav?hmp!8J(}31mR0P)taR9J{%}5G^3C29 zTiUZwdVPICruG!hg<}#_PW>S=v6T4Y9M#K|uNT)fjyGBhhXNDg1^`OBucgJ`0uokE zD5=Du%2Z>!n0O`~UzB}>nj*oX5QV}HxyW}yQ}V$V%J5iJ4k?~4{?^E4|C_7qw$QtR zd5Qu0_11~@-w17@pbvn2$0_b=kg1Ei8rOCaYJq&WWBO8>8k{ro|H+%)b9V*gi}w}D5C8#$H-69)&fnWx zwyL{mkT{8|nQ?1iz5!%ZI;yVrFSoAN&Xbe66{J`hGe;gq7F}1jmxTF*gF(u!s03=! zXKa6HAR!=TmvN9)HAzbYU&QTO)0_%&FUrr(9}4IO0v-ecuB8S&fyo6U<(OAb?*K0%^nlF=kiyRY z&@b=cz;=)k=od$A2iS4Xfdb?l0t;|x{$6(a0ZE;&lJ#Gm^&EwIDY?P{0Jj(v01zoR zgOJ;^@Z#SR$;@f643-^24iud26()E%tW}~l(G4yGAcPHvFU-_DWB?-Pk&7<*5af67 zZPYG_!Q<-#lG2DaJ$1LH-Oa-1KHf1e^Nb|>vdE5mFLdQt0unIBkay&(tHHeGJO)XT zYonY>947ijfSxO2WJJOOtyP=M1|6!MVkv>pn#H~3%4GJX!1CJ}n-eLW&&L6=lS&EP zPrs6Zl(mT_Cd2cG91`dVH1t57$ruW;@J^a%#3)l1A^7=U=@($^%}KS6<~b=lA*v>G zrTl-+D)I}d*LxrU$O(OX_h2(b3CqAoImOOF#y$s1ckE!8q@Nppw|(12OP3MHGAJZxA8Kpv$K=m+=3l5 zZ=s%tNYe+eTnwPL*=G%512|^rm?{hs%})Eq3O^3TC@NpK=E-9&@P;%$i2Mib{Y~9_ z?fnL6S;)ea-i{6rqyI)5(z5@3sMwt56;xJ)Q*}OBI0X1z4^L}F{&~ul>HS>u0D|Z2 z1F48L!zxa7W7LXVqcA`d*azH+%@AP2K1B;{Q8SKMGbye;pEwoe`^!|IL+(s(>(cS)VI zc(vu&%yRaQ)2{2bXZUV*OO5z{BSYmlW?b)3$eJUbFfMp?hQZVsF1de^Th1@}wdxXJ zpt!~C+r?vcwD1Atn2q0jx=XP5o##gN+s^c=0tf5`dB>rPii{6i6RaImv*#XgIUJ{w zX!nl7-_L1@h619O%Qv9&&Q9cyc`^NWIhERMRuFc& zIvqsZg|C}oKIM=gVwRiFv8FxXHp%72GFQZ-1tXM*?^LNE)=X=vtDk3gJ%9Y)3JBB( z>lRGh4>(TCn~p>tiM9NA2v$0{lg>j#qAnMRGOD{(ZL!J1Hu>eRKol$L4q* zH}6~I3AoE-&$lWZsk=Tm3AlY%w2m3n{|#Y3Iwl_TYCm5_AePYC8Q!hfkdzuXMuE`V z5%uIAfrysvm%?d$?$>jz_w*l@$RT#|a$^bDabhB`beL++0n3^yU$0E}N2L z0W`SZAeGJtV)?(_M2V6hMt6r?E_tVgS`M=whSA8q5qaENr^A*8b{?kmwri2;v>)b1 zUr1~fzFzKYGaJdb>Tfq!b2T)SMnb=sSre$>AOq6? zUX(ziG$1y5<3nTtqY|5m32b;QoGv<~hK4$(@xFxF4Vx>LDYP5j$8JU{OVqGCLX}=F~K+ z_1`okUK9hSh<*hnCxei~jNgTJGCS(3fGomVPh48K0f3xBtKfVK_)uLX09l#TWpl9FWwXjcmNuOUcmR@2!UJML)Fs{vaPuHVnfqfSBvt-x)Si%n%_6v#5lz^ z+r6QPaDim#+gb}9%vSUSE*+!LmKyIJeUeDd9eUtY#G~j3mnTza#j8i#vxJbhPg^O^$k*5Cxi~c``L@u);3G;sl(u+J(!aIg)7mwpR*noIU_RF$Z zDGi_Rw_0@XLXPIgk`fC=l#kv<64y2Ts@iVn^V432^EKb|hXTgEgcaBE2Smr`(`^7) zquomvR}DcqBGV#Hj@!w6gh2CC{&?=Bn^gxMfI7AN`6@)I*p)cheu;0qTfOl`W`_f% z7LD#>TsMV%>pK4JwJ+8r+QVvy>U-Me<#;gy-|ojKH9+^bif1T4!&j-2owfVhP>sCu zt?z3e;Q8tK_vfn_*E5vyL0jW>WbEzeCFc4SqKTZ(Q6Y-lSGTuM8p_1s89`%U@k-;I}g`v%o=u6Lv9e)~SZ=2o$* z^}O6d3DACgjd9J~%v&P*YTb-P^;YCgr!{onwQSdAZ{ICbA@Vjf1({a+em5?Xk8j4F zbMSLN&e!|4fj?&APre=K0wp(h$>gJbcaj5Bw%@?=4=T!7me~M;`%A&Ov@b8hHyqn8 zD!8BjhMvFDw(cy`0$lOEKkUFJl`DM=o;uIA`2w{!K3ZbCR}Vi!vq=vqH<-SHH4-Ia zaaoL)?(ds1+|xXhWo{*u@Yl892+Sxs85lf2Uy5C7t3M9{n<%Jz8?JBdYjiC%yj~y1 z-5HKMUIbXR#_K8YHQa^}ds7a-ZjRO~D!*ddzYujm2$QO`{=qVN?lxCvtVQQ~x9d-j z4W5EMJh%M}?RwvjthwqP=6(6AbXgGhao0@H{V~3Nc-_OoCo9IxpE-1dRwPXT#u-B- z2zptkjthbwo{XI>EvE;loVKw4XO@#t)`-2B-C+ejysC%9s(_8OU$6dA#4SuFlvP^S zS22CU#wadf|8xWkk0giestZ2qaYh$KulO@S&~poO23C;jQJD=3aD}@yI{YEG zT4z;#W`*E}U~-X*Vz5Cnh09c;uDV}R9hWYp96{j++<|fd_aHSCgEv-`VakwrLo0Ob z@?jLk)Y+WyBb#&zw&f-t`!DWGvdU0_M#Z{<8CZI~5&G8az`!L`fha2Ap( z>TeEY4OS|qos-u%z|DKA`p)FTk~Ynm=uhfa@jxIYzjrjX1kiK)b_nU}xc|r4JBCLV zHEp9EOl;en*tV^SZQHhOCzFY7bvUtYPHfvJ&-1?Db$%VxkNu;s-n(nv6TD}V((6U5CjN6T$4wwYRXjMU zd9hs#nc|zs^i3B*AcE~Dwx9Qcq^ee~wCE5#wg9J^JO}{OMYF0VL6C}-J60zI5OAlB zd%>Sox{uQ(F7%muMf-hXg9j4wGnye~oO>#RlT6;Llz79hBps1e}u9ezOLiAH;xkwH{puiyD)rS7|o|ZxpD3k6ZM|rwFtl zl;^oxY5ERRy|Vd?V+EAGA*0yvE#6ODT>4!u;w1ho0>JZW>8Kx5^55V`Foem1%?kP1RHK$1y))zKybS z5g)}NQ>#=pipg|6Qf2P}0La-kZS8mmC0@k3cR~SylI=BZY!~Jwp2xX&su*O|O!qHS z=K#l#wG$ zoMwOrp}^GXsm@oi1SwitR;MWU9^;%60?~_8oAF$J!WY&tVyZxK>dL7$Zv52~cYu&H z7AZ^<5@xa1h8^7-8fz|d!8)`0nboxc9aMx=s8k6jrzLD=X--awTsL(1`bq&NA~{iA zJvjjWDiKYVEo9HY;*Nx&D-YC+vkmUdDOT`x)}2e2aM@G0&DdRCTOc*}wXxNCzI?>( z=Z~8u)NZ}>!B*2)$zsE>5`jRPaWTGH_O@d~A)}b!g;dB`nAT5owfT6YNyRcGtB=It z_cY;9-|2Vz<^H~x9yR=Nt!Fd46t5>>dowrX4jFyR(RG_>b#Ift>uo3Ww`Mx6aaiBG z;5b<1$^%T>#qH?Q>gXj|xW>2VMN1V{f@Or6$Zspi4x#M!b*DNKI~D>JjHEW>+0wX= zAXn(mB&Q#9X}M6UOT$@}9?4jS|HH4*)U>e%>9vxpGnw$i(!BQ4*Jp^e7=>JuBn`XEhH<@)ki zwsMwqJ)ibla@Aqrv9Q9NPf-MzaLf-5%yF}(T;uXAy}gf0Na8_u%E(-gYK%SM;h?J~ z{P$rSy)Esp^g5bZiTWyNDSL7rHLrKZH>DK_6GJPnKPE>yBnYuO{jM%>3brx4>VB>fDG zEX7ThjTcgwHml~JYS*1R!oXx3`+obOLUN~X)6sS4J3s3f9GfV7H2a>#7jZb?#nSP} zWw8+VNqv^>Fcx#jpYyu4FNr!d2_3WV#(u%I_~{6pG1z{cD!Mf)TA9gX{bJt!bU8dl zjN=KPk)ZCjucKI64ib-W zXnaFD)fTVAE{V%DJ2@fW=ORGbr9sZB1k&6mbqG!3`XS+u)pod*8L zsS26okXuni$EPaUJyWgt?H--s5!g37Y>^!(Z*Sq;FsBUX&yOZG z7>zLlUBeS6q`uYHn*;DX^y)KslhQh`!wNVnt4hx-`Kv>~s&VzpO^)22tV;pjIdO1+ z;F;B2GQ$B{T@tQ)|7!wSSuNqV?~ahAX6#hg(SB%h$C(}8W{O9LlD(1OF*cv$CDk}7 zZp)&BjtV~h!|k|T`8UemQbWe!#QTtJ_Co*qu3>AGwv+PoR`UJh9b?`~+lf_sSRr=R zeWdoauxv+(CtfCvSyJaYTXqcW1@um4b={1c*`0(~*p zHx%bR4vXopkip3={j15c{s2pPv<3UMjUBz0($-Ihf?i3<$qBkTwSO9kKzgRG@gmGu zNUB)RZ2eEgubnN9cLLnPo4K^ba99^`qgaDg9=q2JtS1RQG;12W%dMunIO*R_jtS{( zP6U$LP9`VW?m>kU)K4Qw73Vh6^01J!lWSpv)8{n6Z2#J}_8rmmfQ0*GE*w|a-C4zS zP2DwlzPX~S_wHU}1B;J%ZG;lm4q&u2ER6NY6hk-um%*g}9I2Wg-Vxj>4PlQ{(bG|W ze2Yr%`s>9gFTPk^h;F*2GexKqHc!vAGwwntt=xLYnT1<5GE0tJYk4%KJG$lA)a8~J zy~1Pz>j@H{wVzHx=s!c$F}dlVl|QKk9LR_q?0#Rqx41^Ob4Qs#uU}I)Qo2)2(d#;J z8Pzq99kcuWH6cU>95>46Oe|K=#1SI66Hxv+-qpr@Jjk!~QCy>q_PZ!tMK~y5Z^fsY zNs5?dQu|1wjhy85r6{e!rq@S|JKH1kL(}^yzt!~V!37UNcgEzi6Wt&D+vIA_G)$p| z&I$bWaVfRb=dgRH$y+bT!9*R{)~OeL?xm2$F=lhMtFZVX>}YA)6_y%~ki%Vw7>PtA z${5SxZd-YKxtvKQwcdCoY8M-4sM&rs6YA_;uIy&R^~=ywgbN{;g?vs|5@4XBDet7* zt#3j3(Mo8;bhT?%R^g?nR|8K2R=4{gLQJLaPQkC|!iYK=5INBwK9#dj>~--r z?A7z2rH{#CY`m5BwCwHIX4iDlk9C_meTW~q3N++(w0uiSb?-w-W4N^8yq*i{JmQC! zUt32(!hNzK4wAI!PHcNp*3{H&UMhbZz%+NMm0bJmFZT9=qn%uJ&t#ouKIH_kq?t^`&ink zq9Mna=gjJIvy#zk`s@0@qWJZ63toan%lmCA`AGiwlR~x_Cppv+aZtyc-FnaMX>K$Ph9`3;INRk{FgU<_JRu`;%jpV^bC?=~jCc9+}gK9sdeBeV-g z%jMWT-qYHcDs(;rflXWI$MAa#F`L*lCdSYTH$t|+U-ePOp%N>{QcZiGHm?`h8gi-8 zR3Z$RAHqy2`J2A&#ZPznHF|F+3skrwD&c<-L={PhLj%xuhM4>OZ!53Jt2FkNa$LY( z;PKeWyc9QbK=}Xcg6R{^!u$KaRD>u{{$RvZ$gP}#D$;oY)9e|vXE>!`!zpU%GVe;g z{-iP8*&yiaJX>WwK9yS%(R+4ys0eW{0Z*sMU-TTjkB>X$vfR3#k`AFt z)QHe{Xl5y`poQq{;5J-*W0_E4x9KTIhIW9(fPnLNUB%3Y>*G+sXerKgh{9PLpKd*R zCr|bnWNUrGn`p{@vJ@8X!&S-}?_j{-BM`Kumz0%7myp%(_Il`WE@X9|v#t{iadE9O z?Rk;etG26N*Ij&CoK~;aYcxr)9crKd(fr_AW&M7ZUn{TiF^4q#KCUii*#8RtS(s=J#~mnfY^tf1^4H=Eq$4ctjep{{;t?K^8!J9srW*} zUyS>tI<=DjO`!*nC@lv@oK$xpwwo8d<;^Btf&3Ex>LAyLIew&puHUUh7pM6w%z&9r z%rf+JwaGz2Rd$q5Xqw`5Br8RT9u!U@$+o+CCZ4q0Y6xK) z$AEzSg&qsh^8U>6h7;c1&TROA$>54wl+&(J@!1aGA$Gdtb5xEm(^C=W`y~k=Qfx!a z;3cMLSRU9RRz`+U5eeR$DJHD(@OO((3u^jvdw=20%scdMeozsT%7DnCx9avYJ`oun zvDbfS&ixe|g@eoyRY0%VYcdP_a&dUNgaezfRVNAsO3bK?v-K^h<*3gT+FBrcX>w_0 z#n2{@W(*A2l27mZlX|VRhrQWR6l|$#jV|QCkmxu36Z#1{kH1h%@x?#PHEJ?|V2UIe z5kSd6(QuqVWn1I(pkp@nC~0gG2p>0NUc3OZpxa$?##_~z+(vBtw6(70oJLMorH5nO z+0F5ihn!4O4`5nrYNV7&1>4r|dTmsPEPS7UAyv=xyVr?)+g*gVUh>;ef7&~|vn^B} z0nP{T6ANvcbu+g%DyPe zkD}>&WD|>KIBpMiCBx1~~BA6nPMJOPFRGGhD@`|o@zYV%`MZ|~e z#3xdV$Y!jN^oaJ&XL9bjcX!{|QjA-a=$ozwEiwe$4(Ri06Wl)&kBYKXrM2(sK7WYT ztkKKrI5#pHO(_B7TPq?=EE1$50s%*|r+he5+LR{p=Gw z>Y#iqT_(!Zne)oPB$2F_edGi{HykS&(v@4DreWwtOATOWFJzsbortz7<(fvI!T3$d zkbswjd7TN_`_;V{hJM7nsNdqU{ao|9z9X#COTC`DPiWXD%+~1-vOWIOAPqruCE8#z zGEpP^(Cl0qHQ2Q!BdO8oCN=YMfy=<6z|smfEhyA~bD3-i z6dj5e3rh>?e^WkiRwJwWG&;}_JG^Xs8Ty*qh!dbr61D!NC2YAfXMA}!`xIC8@wnT3 zOr);hd`n5}1-_wx5IUUkyX`bPbg2u&I~t_7(mX&N0}>wl1mdfm??MuwY2ncunOu=% zePR`F_`z2U_(y%4Z4QYL3bJs_J!$kuf-e@+S+qq#&~P zWFY|1X1x{ODYYmdBY3(gCNkD;T&QhunF4WBD<7IajWO2DpA7_F<|+FF#7t6ZxuA)h zomz>kV(~=g;cS^fSU05XZ?ZRrl>kIg=V-KaRMqOMj3b8E5j9K9K;#evge7_>z}%QD z_6+F&Xq}R!Jxv8irXcq0;=}$+wY6&s(rIFbkw%;$)|v^Ukp(`PVUt|*&nZgw4HQ6% zVSi!Bc#V1;-+;WG-e(-Z;KYi2>Qqrej&*zvf)7$h*R6)i#WDd6fcGlOMOLDYEdkj? zfL2;tQ)XUm4Auz_zz}l$a-4^)uMbInbw_}APR~l3ACIZ9UQaJ|%urQFW9M9K)fjeh zmgIevtB?W!y@dBggCor}hkl!b;55`?R_;qI)o_jxt4LXP7tJwpohun=U1IL*`d%)i zFLP#!_D4#l*>a@sn&nYBDY^5&^wJWsa@RFw9B|^S!($OxQkK@uOl$l3Jf-Wyn#zJr zGU0{8$HV+GGtx+7$FYEmhg6{D9*nK&cJduxKcadX2_!Y53#O> z%I_>fCTkWZ7Hbw(+p7*uvyv=Lv)}=oX)f4n<6r>T$@8jx*GcjpscTt716NTB$i3L( zxNLK~5Y8sEUGD0HxJr`;3r4a3?t$n64T957LX!erjRCZd@wVvodx%Q>vHWY*aIUbIrCKENf1%r*2u_ z|H8I02Cn9F-aoKu^;+UeMvD3BL0_P4Z7$;g&bi?)ZQVr}Tw)#+t7xk1PAa(khMiV) z(h<^-JRV{ucdOmy$Apd z>&WY_Gqy#cCc#O_Fv0qVmBo%711FgfID}^lP~^2GfRpqE_0gFG>7Ck?R-8g+-%5Ox zI&!MCI%9FseTB$KY$H0WA=;l*tVIEOw-$3~52<801lBu~v%6(eM`F1_ncyUx#luWx zhumDDksoy_;OL~c?k~MbhG&FGNe;-cxL+^TWT2|O;b7Rn06in}7_E0_xUL4XwjS=@ z00$_jyLP7@;GaB8Yg;I+*b3mE-@jMefV|kqqK#@Q&ZS8wBsbUYXS?=vURFmjHr|i7 z=pb0=@^LVtjrcmahj}^dkz59rA|mBe9r{h=fR#tA(}zuVgEJ>s)7-6lRImW&FS{10 zRn^4@_qN~aBoiRL4cZ}Z^{{N*sMhrFk#FqL1p5sq_iU-H%sqh)ggYWlIpa1?C-c+l zAb=?l-Ax9;2U9n`-k{J>%j&i&`z8BESAvg&U2BvY}Ji-^DsjpP?H@FQ2l|Dk+${$2W zdZu^kB3l)n`^E3tlgT|D7j!i;{L<2-FZgT3M-Pp%l&vLpQ9&nN?Ix z&T4(N;b{&M3=L0w451MNF*0bO8cl=Br>G?uz#s?>8POUYLJ*OU(wtEm^mQm)M8;Q6 zX>1i=yJDCQYx~7gE)lJH32eeKz5@^g5`q%7WTgp!2`IqEAPo`~j3@$!=xw{uLog0u z3yJSDU2=BDp6`0ecG$7ZY~$@h4y7!KRGt4AVtYPtQZGyj zo1-K$o^wJdu$_R*hFGGs<~ey86u{Lyzpg|~X)HGA;u zYP1=T&f#>y->Fn@?eMf?^i9pT;PW|l3JOf9DJ`d4Z+sL4L?T-j0^|EU!e-79lqphk zZDkH8kd^I>Q(3ma&AFNBPY9N#ghIxWwrpcBlNRZL)w076aOL|62LvIg5X4GYh+f); zGnR#&>cS%@9`x}pN+9U5=&x`!5#uBh5CGU8(W3I=#XZK<7x(OoARSR~({1mu7>mAM zKsBLhQkyoczjl5AK`Kr{(2|rDmT?TSn4$ct9)C!#&+6k)^4S_---_U)B8YOOUW-^*Ui_)wB)0> zyLv03mjjcxtT-xU5+ndM_*~1;{s~h`;E$!52`Zh3?|uoYh&tIfQDy3)(J!;URPl=J5Q_j_3yf5p^$`{niWI9 zmoEA3IFD8er2DL^I@mxYi6~B9!zbq#jD$gN4Lit@gnP5J&I;+T*5EBo+zS>a*j%0$ z%C~Z$MPz!EQYathFHr=kh%+VRwu)E+1B9WFh*1PcA#ND8q?@_6t2>;IA%J~)WZhkeP;Eehj`J5rIjo9{uAt&Hj{n~X6x6or z`sQUqj9j3MKc`zs%@xJyF!;fW>4j=HJqm9~tM^=-1fDN+iw4~LG;8>tJ#WwF`KDDW@Nw(FRffOaip$2!+`E>z>%qK-SE*>8PmgqlI8M=S@33rqv?4*{ z&Gp1k-{qfT>U6K5&|5$sO9EBo(7E-~y@oHt!&tEuS#V#jeRpehg46w@L*m|dKFq9M z-G+1Qg-P4?#9}&CcMEtU2u*CWZSR2B{~pu-TeQt#TKmejOJdF28~D?~Ik@77fJ!6Z zLooh?SIjN->g(nrj+(yX<2m`-R{x?r=*&{1frk}kFqFKyc7b@@mft1)SOpEGGh9HR zAfAkKnH&-n+N0j(7|$r>?c#UUVok06NI0AuSk~Y)!Z%qVlVK8IABj&eqy9ysAg)|y z)2o|;cBoPADq6?4bHCY~zKEUiJh+Gf<#B_Y{MQ*NQ$X8U*;H&P${nY-L}OG6srU4T za`QquNA$+WyY9J|>GISD3o!s3&v+LKrI*4eL*!%>7v4$2S>!e?wsdSEKD$RsWxY&= z)9Vem%2tv$vA}#WzUg@l7@WLf-zZ~Z$E3{XPbnxMa1Y6_wk(^8)CJ|kS9Dy|w< z-#LSIj)^2)Q!o;3R$s1uJyk|O*xj+DTw4BB$%Pc@;4E(!39$zmsjadgh#WBhzpOl^ zM{To|s;|*lSuws+10$}T;C;AK?IqHG;mQO19u|__zjushX3==Pvy}0`184c7P zcE|6T3kc~cfj6EAvb}dW$i6N@*oUeAr7&k}ZnBH_@mMfLo?X50v8=g^B)BOjU z$K%DTjjFOXXJmGdGEQQ5CI3vDI|CCipq96Va3X=?TC+8!rVOZy$EKZJacTPEq8>8*1Cuyr-inm{J-;ay@T%z!^4lJzoRe*rcTzpL!{D`8ZUyAM>B2Jk&p| zn!OB|VYGbBdK(p-lk+`GO1m0+);c_5H7x7Kt6$D8mZzyzI`9%iqH~j&-Rt?4EWh&k z{R&o>`bVdNSan{!WU|&)eC~9NN~VT}xAXq3i3>6nJ3P8GcjP-Sn;aV0jcvBPXJ_a9 z0)NKLc&3in9O7SIuDfY=N8I+ASt;^zc)Rw7MYZyx&6{5w;u_%Rv2-sP`<36~t1g5J zI!9c=(cS*=t3I%%yYoia*rck%`CKwPCzhu%OVjnSyYUBoZYOO~$*#6K3r)Vxwbhns zTmMI{xBc#nhCKjD0uG@{;Qiu+1hu-`^-_|*Ei{BP@*Yu{r4oC_lwdWn2GcDgAeL67 zgT^_Des&7k(6FVV@+i8RGzk3|6Tzf;{sZdl^k-H=aC&}6bi?adqz<10UVyp@(%4oT z^}N5VI}1Q@<=KN%^=Rvx2Ul~ak1);OH8;)WxR!G*WVD4+;1Z6@29s%```#o=`qHAN zr_Qs#oO#mUx?v`tG$~xhi^B{{>#Il zKa!1MIc3gvQ?mcjVJ|%(6=0fgc>9=fJiE+u(*H) z^M1ysk;rc%rd7FoYrbSKf`=+|$s1WpiEQ@qNEil$L^6sD1dPh7>uq!;i!NGR!RrA< zbTWfekQ!84u(>;yi0X8wf=`&pqYMN|N~sqHFMKMZxTTxf^R~*}PAd-ENX5&;y1|w5 zs)CUJg|$5kOqqy?35rBq7Jpag{ibTRQGMh5bEx!&9z1qbV%p|uMj~-r9+`fXMo-I6 zyYQOeVJs(L{z{&p(Sh$iUx0M%#gS3`AG6)kukF|VyFKwPM;+F;56?J*K5(gKKhy|d zXT43-&cC_mHm>YDI`KGyb8PmVcB;jwOyg3%{OexVU!1v_9=z+Mb1V!ysnd29PNP_(+q&b-`QPZ{3qpdHu*IYPIV=Y?*ZO)D z-Z&bzKW6fdkaHRCtkkpgOx}3!TsSf_M&qxjXLh(Au2|yYyiLQTHsXa3%IBUBs4vlH z+~2A>O?cN1XJrc>+Fhx7JB)^K(O8q@>ofO)1fW4tfkzZcqSR9`KQ}9si0r=Y4NvK~ zt8lvXfxD9VG&Y76Z*z;LS~}M5Hw3nY(X>+>+G_LI+>Ykdp>$p z^^ncx7*&dbjv`|uy~X=_1l>lpABxv&(p~fR(f7Ab5bwHi^!bQWACB|>G{{wdANgzv zI*i6eT`J{m=fs2#sV1$6__l@7P{wa0fQGq7YmR)C6Y7G0hOfvZR4B8c>DcyDj$@yG zZto!+EtujHe&j30$eI!$ewo zH^wClUDEei{Dl&4e#_-YotI(w$r5s}|KM2aS`|*$uC8#P3lf9@;8ID|=n8l@hm^@p z-dhpT*-s+%AIHca8-1k{@nxFquIKmZ-Bpix*i}+8onePv+=0@cKBvzwJe9!7Q}cLi zh~Apgo?qX6Ex>uyKocYvT}}qZyXIL(X8~R+C~Tr>Zub*6>N^XVOoj7v%bkiv=RM4e z+4$oNN=&2x$-n?mfCDyTb*anp**wLh&so;XF|xd>M7O{yRSJw&vh-T$4`j$K50-Kf z=!76QE-$n?R2U?HU<`@oll4_&149!5v)EtNy69OKIr*w$>O1jENlxIlIpe^ws5As&h9Qh&zzXhy@^(rS3V^I9aa=0y`xW&CB|q}$_A{hEwRH{X73 z=aT8~Zd$ZAsqr3fI&qjk|NI(V|^^W z%w@(5kLSqiTh*rU_^dru4c;d{iH#Pn_tf)kJJ;@u#Lx@Cf}xAf*Cq=dSXkd<<4gZW zJ`KlaH(%uSr-aVym~16ey3%ZadTkV`PetrfyufD08Csl8`F5g_@c85I@0(IK!kwZT zh=Yn3{ayq~M3W*CEE0Sc6@^!_B>*6U_km9To%e=m?O`{at7@&)jv=tp_j8&50oHa8 zo5U7fIK*p1)G!rHf$&tW%O>D=Ywc}hx;A{pZEY@^XO1@3NMa}4u)@LqUWu9KsC=reo9s1$l$+*iN( zL+&rHyeJDC_p^>jMUN3j2kmQ(de+;%VuPNoVbVJ~jK*5|xBdClmfXrcKJHZ;RJUcD zecdWwvX@2XgHd^8fYYbfTnHJq?~bdL93;z~JS*?+X}yFqi0?Ox*v2t4`P#Jpt8wf8 zwihB_{>-27;j8>~h&}B=1^I6b_Y4g)wXbj6?*Ihjw31kgl0Bs0Q48jeOSs?L=@SC~ z%F$eTj+A@q~#epK@yBf)nc0Jjoui=X# zwtsz1zm5@LptJ6#@K&4}*c~(o@3!?pzf$G*p45&6w2A-bvpZ&ohnIpCE$}tPBdxZ) z$r96cy&9Sh6@5?_#9Y8AyL2EIs?G*kLF5AIa-!?mLw0?f+kiCi~yd3G~QruK!m^BE$bj zj{J4Vm|O>c3_fTf1k9&yO7+x!Eh_x3ymcaA&HlVjvAi_jsAlIs5a6^`I^5KH{qhay z-j_G~rXD+fjoO7&jTPv@<+Qc|<|o&lwyoEczX+)wJbq-q-NYeOLZM;MYm zBT1q)}~xpC~zfr25~+XAUc)=f}YoNi6wuhLe3KRW-!c3f=7wu-hr zG~t&p?dj}hev>;Et6w>ycJK&kPCaxQ@iC+8cc_?SGI_n${gx>8aWJK(v|CzSw9|67 zxydHoj95EofkaiYu2)SjxDnx5;+ z+Qo>jBTfzr*8)_JwtMV9FB%otPZMcTA)^3fHMMqkSg>827I?fCLO$bKySKAu=YBO_ z1iVc+1~v@c7wwtPe?uN!`F*R$)ruZ?GPQ+|-6YiT>D}{V&y+c{j{51}V^gP5uJ(Of zIanvPR(5)l$F6h@4h`7bQ2ZIa+*SiiVT*X{RnA?TUyZGI01-G|iJ2c=0_*lXE2sGHoB*eX)djcdJ+h18er2e*&Qh$r?cayWK`oKN>aH^smXzFZIJi(kRDSMX zX0#pM-t(g<+kT{fM6n^Aa6kmr-Rw5qkI*;8V=m6JoE_dmndyHk*xQGCT1@l%G4EaQ zWj__o>xRcgxmIo5oE)iVuWwP_pRCSn|3o|&;9P+NTX&$YmffE>m$iS3v9*p@ZD`Jn z)J8DtcqHIs9wIq-gICWsA@()us=nw4y1H7pPvCAUyI$#`gOxPI3@|+HuZSaH6Hs>n zU(R6RLrPdL%+$Cb444t|fg+q#zv+2S-gKAgI^ywAqT(sYa;lB%YhJgytl)-H__P%; zqK(4g?-z14KX>%d1vSTJZ6iJD>q#LYGZE<59%8+T!cwCkmP1!+@br!FO+4tudh_J<>h0(#F4x}WKL5pacW99IdeCC2F zxY!4aN$loVnH5}S!V+HzmrS{vKe|5<3FMS!|Gh9a7WEAYlbGdfUXbZbEuucu+|(kT z{tR=ty_7lgqs3unxKC6<5=ugJ7m_G@IF<=xi;lS1ER|@(J*w4#NZ=NweKyQ6tuU>s(K_IhDV*axi*NT`YPY%_nO0f1+eTTfU zfa~9^6x?)T2Wg*t2jY-_>&_hHd=W7eQb}wJCM6gJD~|nM;M%)_-go;jS}LiDnP)S$ zYZ)5$0S=a*P4-FB;ZrUL*+~D#W5P8p#)jB7vHbu@+S$>ge`9p=DFeB`BRD}Krbb7k zMOOAXEJHY3?a+Czu0Zq-4UGf<00z@N6Ic}qkFG_PD*X*V35vp3U;EteZz!&^P2%c+ z-YTB4kpkqIJfDx9;|32+T-g|!lZFEb0>L$KS$?t#n_QZFM~F7>HUsG(0kb89?~i*n z&2ytALbgp82_j(g36Gl{*xI4s00#}E<6?gj-L?lv;(9iY^0G_^065nSwi-k21$h4> zoszG~jLr>#d!Fd877Ea1XVz>K(j_UoCHH+K6oM*s^aJXpoZkjs&lcJk zx}(vBX2&!u0m#*VPFFKUFCbNzAW;PD*Bj04@Y+;y84IG50OG&v(Ad;dj{oX`0{grt z54SML!kHivGlhFCaDGj$EQVQ6ZM})O4eW2hluj9U$YryvpaXDV8?$ZR0p9@&IW_U9 zJ^A1Nh6vF`Uq6GcpAB2aIqbMLrqwkv(tg5W;h$?!A}xHiT_q5W6~AmP(n4h}Z&ud> z)VJlPFZK_@HP;3bnB&VBm+{pR2o3wm7OAClCi?u`WE&#QR+flhC9<(gyKrg zu(sRq18fcfZ*3OuGT5q-zO)(ci)iHK2Hc`R*oaoPqY!5w0|(oVmi(A zG=pse%!z=RhPtz_*_`d!vtP@>k3p~Ke~CB7@869Q?QI7_^;6U<(?R>-?EHZ>@&sE5 z!joN{!p$T0_f^ydhY<&YRwu`oR;1tMzoqvGH)<_hPKl|_W%YFtk5G5+PIphgejRPo z&1((}DV*+=+hC?A0)eYLuXBC36yr5}VQ;2+b{b%CXM%<%k}J6?%C;gUazUM|V+#u<2qUZ-$d2LGWl_a<#<+T=b^4mVrQ+ur z5AQ(Q%mS-1B;r#G6c&VR#D$L!zEoVD^IaWFItli0KSfi< zrumTbxH6VokFrBK2Pf^Tm!d^lYEoI|df5R<8GIk{5q(Zr2Amo|cU1 zw%A_cbLowt?#lg)4E?a4xHr#C`EO)>bTzik4+yZ#of4cE=;3+HKbYd0GFiZl5q~7C zi1?Cuy8Uk`{*L>yE|J8UJQW~@g8brsy_Ug}DJuvS3hL+bzacv2|0waT$(Q#vGV=dh zFdzPZf45U|cjtda4CTKI%J+pK>A#Epe=dmw|Nr&}|6h;%e|Tn*KZAJTtOe_>+rR&6 z@q+r>1NA+4=IjB>I8kySJLrFQAK&`M3qjq8Kd%Qd9iHv?^dk7s?0w(xt@1P>ZTzQs zF3nII+f{YXJM8&P8tM1gzxOcjxMdX;71h#$WvwwestE;Nk=rJ%c^LgBBfWX&$ zECmv%zSULFncqU+MBBaLDc|o1FvD;*etZ~ahB_3$1Q7xyO`AMEfCj3iTU$ct>zSA$ z`7=G5I)qC^B{)p1?7GuWksSh4EId$-+YC1Z zPR_!Sj?|0Yl!XBn%k=GqkPJnVrDdcKoHC!ORp#r<+og=bBU3}~pJa80tK^I45|y2u zSM!V57OmKZRyH=?BhOr2UD?>!%*@O{1OHtWCUC~7R4$^4p`)Wm4(<~0c_9t-m=pwv z7jpT3c4lX5YiMX#FYLU(+=&;~`+t3Y-{Wtx0dJg>m#3$xxmv3)5Ge`@czAfArluAW z64KMt`w|TeWSW|oprxa`SZ}SBrP%wA0ZlX9U%rf&bY@xoGl8N0124`9i_dF)b6#MV zH1Ul+FohC{&J0}#H?sLQIGw})Q+m~9r?`MHjXD)36Uq=SCNSdJ;Y(t+Z#$uPXnmXZ zgZ3ovV|VgwSC?%RSMSRq-|gKyziXlTdGdtDN!voE_D0`U>ln^;xcm9|ZT^HVX5CuC z9bq9~pVjQUhLK}SllRxlyt!2^gMQOFDBtJE<*HjxA+AY9vY!9v?~fIQw8`stYZ;~5 zWf?M*s6U_lm+fri(!~wm|7=^E$Kgb#R`sKPApukn6fA6q=bf2`2G+16nbbE*j$A&! zZtZewQ`38`j{z|n9-hzBrEc=*0x(0cS`8K))ZE-WR{TzZ);c7ir^nx#Q}Ji&?ceVW zcAh>}l4PW?S`|oGQhshh5J5 z|ECrJr&+Xs3_CLcAPQw-22-waeNTV@O~%}gO(zU^JzYPtE4RhJsIMp+BDy(8LA5~~ z#7uTdboO|vc?5MmEXEb1bNdJj8EZN?;b;%V-4znCWkbw6(;*HnQim(tp-L+V7%ovUEH6OiQL@t_5VaU4v zIAZfU4Z`la9}RECqgQ+$J5_B-?q3r{3HWoi@7aIZ>20ySY*jE+{uFKe%A*MI0{j!) zv6c9>IXR11S5u`LjgL0hP@+#xFR1HsI(~pj=i_q`xz>4$u`cgQlNM_?veC8M&`&a4 zBt+pjMRW>LXKQ{xqo&(nIXS!Gl#As>MUedxKW0xIG22PtL?2(2srP z69LwtAx9nU$Mu>fU7rg4sOae1TW5d2f2ju=_6qh23RgWv8u=s0|6OAIloSJIi#k6} zeTl6t%BU)uu5NO|*@(~qLwHX!?Og5JGU)B9gRxbZfwHFGtWM9ztN`l;p3b(1GbQ@D zaD|Gl+zgkdUarr^!C;&Ah7Uq|Ic`@HW}DxlBox?|wMPOGPVQ`H*H(_{*wce~-XFrT zoL)vg3g$xDS7OXpP-ju+RrkF4TFn#V@CWMbAHa7~Whyjn2+{a#jwQZ}vv>|Ysj0=7 zcs$mrkNw1kjXz<)pjV2Mf9fPFXV(6bl?b`7f2~Q+VG;at>yE;M``>yjL=w=Xl)x>R zzx|rtAV@&zzjDGZG;?*J=VfL1_i+aX)BK%(OP*m&{(&o1 z6fntYbZKd8VxsC}6O%#TM3bGO1X8$+?blsvR@&B9YRiXDiTPlg=CqnsLRV_0hG-a# zt#wlvPbi{WUKe?~w0CHzf#5~3GT!iqN>p=KUhg;lzU22qEp;|L5R5(CSR+ZwgTtS^ zJv=@Rxc;-`i_I~7*^m_-VmJXHzw{X3j&TnuLMe?-o2CLZX;Y%1{?)B?yiJfthiA-+ zW1uP*7hTZ%>ULEKov~6(49|*(pl$Zip|Vs~;$nwbP8E1x(f@rE$h4`J5peDJ0k)~* z$-%X~fAQqtgeo4g!PECSRvfJ^l{_;)-f$1nTYF!K6+AMrMK>}#w>Ga#LgeBFL4yZ; zblpzVb2*Ux?sj7>>8b7XGe@RVc@+!K7%y?Y;fu zCikyAU2iwg09lIYcw9o9wM;|q1ujuVP!K61aID7vtF*6YDEyYGq5=Is}p(VYJPP=0<7ZXOV^#fqJDe4j_Ro4C3~P)$QWxXjrRjqC=>y z5YhA{WOC)hY$HW(SxD=RA%WBs(b|DM&ou!>Zg^KX^AzCqK(Fh%G} zHEV7uiz5|zTFPwK=UgSac3I8)w*sb@xbPX-nV)=`L>`l>N_j7W3(y-k*~MD_xe8jS zMv2J3bJ84#32*2t+PEI%I0k}0MRq)`Y%coM9aPKa+m-KXy2bh>Lb@K6`mC|xkxpu+ zi4p`Ec^9@ddB^$$2g&kTl{;`LQ;r2w8nHtX zTN|v(Ao%O6*TZtqDq3m3dt^QOMulb_89RQ0uAP#TZ=qg)S@~$@*)AbYn+S_&iSO-@z+Bdz z7wujeU(H7*NpKtWym`iybm3q?9q4txLQ}J?gPg@tvbSU$ndgHe=9P&Q@TX}4--`K+ zuh=zIZumjVwP68KPmb#f!?Z^YDP0)4%%(F2TYk@%`K#Y@dY?O^!wr}tK75k6IP;io zW_i6VdM2;Kb?T>%6;@%z`gMjGF^nd+E-vl1TwHNF%i(dU9nrp9%MzwF472n20|!1pS{KJ6ZBY+=!ua^h$cg#YW7KljJFO}P#A^=hz;GRM2k zQSrdhnp*O*xyRe0NAu;(s$qT?izx!>p!&ecB5teUoJ93T-Mj8=-z3+7;iGJdwi@2) zQJFcWq6Zucap}cEYVr{HWcx?vCcEd(gIWUwP$?(d5lP4LE$4O%a*{o33_SU&&m>dl zZhs?}YT7*iVT2q>C|g+XvNnDvtr;%`ux-4}Y_^)@M}1bmBEQ0P&pDe(!LmO)$nMABi}>VQfriv6v>k6@x@*JP(yhb*i;Lb z%n6LswY{46-Zk>yd?_Gh%t?6Kd^U457?^h2V1EdpNq87-%l=Z%qgGn&7s-89HvWMZ zpBD5v`yM4~W+kOAzWG@Zk}EOGPuS6w&{uL9<$GOtQHUMs9u~grq3R=m2I+lvny3~} zU}TEnS(7;*04c@8wqvab%v9O*+H^Ivl-YUSr9Wl{Si#p;#iXPP z(2_2;7ulZc{Z_IKIpL7FQmP`5EoKH;STCzQ;lWdM&T2NXVOc*gNc(d_)QM?elpBAx? zH+bu@D47|cN#8^3b|Woj2%}PWc=p{`)*&z+u-+^hdn^n&Xv zM!KbK&%fR-kx}+=x68)l?RI0*-GI5@iu%k+p<^ zYG7V`dKQ}04~vkwyo`ktrVzV6TW%_wN~nm)b-#*fz8N#n`&AZm>m>%9zfX#+5KJ+U zGj}#i5mZev^lML}|FSay1Y8v-@OgRqN43_;YbeZ!VhZExkJjX+T>k*y?qTEiz^$Od-zjaUVcGEjR9jpfPj{aU z&U|l&r?t`ueOSy$wCvbmp&Teb(XAtV5^9jnbBcd`zmpck>y_)!5k!t*ATdx?+YxiW zjDL}AJ{{)hSH1PMgU-{^(Bq^eLYn9H(1hnB|3UnoMV@TS9Wcf&g5LmNoCwG1K1k`m zG=so9xvR;d5%Kq@jq878(=GFwTgh*|_mvXvJR(LPj_ffBHH{c>N|)7deJ)nheKU}L z&K%<&ZyLWFY%O)LgxU}|lQ9O~m>v7yJ(IW`*(MDA&L@6OGf1{uDLx=m#eD8RE#Pl0 zeWG=I^lujPr&4AOsc(rmDOOlpV*-++@@c7|7zx?W*j_5ui%$-BuNqUBd z4JyU^?rZYCn8&7!(hxs;{C_={3mGZe%4%t3By2uopAf*6rJZ{$Ao~S2X>!D+({1aD zm%1TTA)tkaBY)X+`Shf>cjEn3X1zr3%*k2T?eT6xcB-GQsWR*8M;b?$=!~16NR|ed z3!cE_mXc`)?~(iCTPd&Znj9_HvoQ${q=^HxvhbpBDym$J6kY8?5)ElXtD+!$Xb`cP z^L1Z(-e4nITWR~xM^B8HNFvz|1_!x z!(o3)rTV&v%%fqqmGBjqP{#jel~3|4x;w`6Tf5c9xMbj%K&x5mHaIHC3m@m4A4HUS z{K_p-(LBn2BS>x{?!HC!{^ zu2t2>)q!S0ZZeFBsK^*Xx7vEPtk{up-M);!+_8qbC4klfSoxB$*=`|^*1|!Up@jH* z_q1%F`yLJ88#NEZ#G8a5V5HBwGWF3(h6IN+i=KWHA}Rm3TdRgP8wMZC5RW4?(U=*uHmu$&+8{F%Hv3s3UPpM!TmpA+ zD4G9uyk}pdUb|EO!I>-MrV3N$b9VAQauMwnYE>-GdZi)&=XczNd4rpM_o^*zY*!Or zl6>LwubNrg?q1w{&q^y4qCyQdRrUIM@VsN-@N%=R)T&y@se1E>u{E|eI{se!DpNizM7z^ICC?#&hvs%cbBVA9QHyDlGddX^2vz_*sZotX;)_nCFo-8EAl(%#e z1yxj1n(KhjI=~`}fDFT+4P!Jz5+P{$y5>BJtm+mU-I}dB? z)Y_%LQp_k6=Ea5OHaN6fH-1!jp@xf-=B$XjK&Y%ZWRncneB5wG9BKS?tD7R+;0yh{ zk-uAa|FiqnkEYTlZ_~?VuQ38-QB9vE{3n}2V;Ew)#o6&L4L7@2rVvO95VY3iJ_+OJ z#Vn+T%r>y>0#j0Ime5c8h|}=9y~*_t;EYGd$G~aFo#Vq+E*>R7*7GO-aVlFY?3P$IN)uW&(q*WU@r3H;lYIaYiLKKqKVwH$O@vf_1pjgY=?k})Jp)*tYNUbLgGErQ25!g zhhBhBRr?!7(gYt&g{EwPpD~h10iYRDREVb##lMvDTKCtJv_GXc8v?}9s3dLuG)3}X zYfN!OApEzCZNjRl>A%bfa18qZ+qg~xPz@SL+k|k`DL*HNB`Zo0D!M$BaRVo~ubO7; zcv0z1oUrp%^6|bH%)#(BDt(NDRfeCHC+B;85ZjuYC)!WkaS;L51VJoZ6y9bHSLf)f z_x4ALkzu3a#I2!%m=JfNQPcVkZ_yreJj}amkzj}g!}3O7u#h`Hmpe)Jggj*k1vEBy zbW|&IaNVVDSo0ZkPxSl>3$Vk8~!Kr1?1#cZ&N!t(gF88ZA*nb#k z-@90jjd_+&Wi9dcyc^Uq+T`_IKwahHmbJhB3G~xwKyceu;`Re?*F%j@W?ok&+D>je z+JT0MnB2}%9_^j7Q38dbb1V6GMINF4Y!(XS^uo3a@9!n5G9)_Nt`>DVEgyzB`ZZ&= z=Ze(>g7kbh!b2h!3g*bu$=ynBeg~k4K)RT?_3P@uj(hVfzwnBSef!eG9Ee#}r@N9J z=H2_ib{1Wyq`ZMgdzpw*BIHdNI#4Qbj(?6%7853JlkjN%u5vs7djm^^_pJ1n;)Jqd zM9nqqODl4Y&EFL$w{y!Fm1c?*Qur1FbW_B|dCo?3Er86`beo}ux{R0QUJ6}B0@OQ~$P?p)8N^bUbQ z3@Skd4U``T>;<0&UF^x!<#M$#Ci^SgEhXyYnp26n`P{DQ>@{4>UJJ!_ktqe--8D(C zkfT@GPj(Xz^wP@(d6Fq)dSB#)QC}zxRPfl4Z-1usTt1=Cyt_#^VOyag7kC^rUOq8e^;6+I9s~da zaTbyUHutmkS%Cn2B!x`oUTqgSlTI@iaBP?4ZefGur$pE_X;;rCdk_>1#3G zROQN%KP&lVbk?XX_-94S-UPlXo531*D#hXPi2A(GR_SNOm0Wl{*lx9GwX$So{bZ)j zwP0}lV@!+=Z0wKQxE2N*QEgjbeje>OUteE8KK{OCEbs!UG^C_2*jbrfRHRJQsw+4> z?A~5Umsi=o8V{)CBYv1{PW?chB8wkwFrfg+epSE}XF2vqi>tG*M%W0wU2~6{>x)(a zBmA(Dy+W`a=2>nC)y8X z%a7#0R#8&Qif=oH|LvUbnJYrwdbmF>7`ps~^V_TL3OQWVv;#pyTXu~%ja>LHMX}k; zN@j#d8Y7Yl3&0>cpP$0}&W^1PWkLp+eKh%0jg>hFf602HMxwsaX+X$^F-C5SrR`~O zf_G1STk_m&r+6Y*>1}*Ti7Lz)Vx)!??3`G1qEK#RB8Mu%V5$|iEl;TYv$E_H?Bs%> z1$D!HP8F=pws87E-LGT2*ZL#B9eN?o)3jBrS*EXe@S!uqdcUcl0JF*bAz0RiTckok z$zvAeyLa!n*ouQY*CSf6C~3!yI-1#{iFKwC;rlVPXhdKVT67IE-BP=3amnrsqB2)!kcEi+ zve7SD-nwzNIT(;eO2|&s-TjVGcb9S*CNR%@BU#R|X2rgH;**+^GDSlsS1@bZ$BrBq z8P!luK{K`{Ri7ISj|@w!qXrBn4m>zI69?db8YdYk=iCGKYuTC6D@vKt{fZBL0XPF8 zy{l98?p1brLgNgV>>Eyy7=ve$HMpY}ri`8pIWcK&`7L|DS#WTW;Qi%<`1o8qeHE47 ziyAZ94bAiAff@n!h2BZOw zGMFd!q1ND*XIZqxxB;8^J{B?dzTpOeD;sRqSJ(6s+!f?`-P+__<`-c$mkzIrB{^a= zcL;sE7Z%4v#%Q~gkJ66rb>OM%bzPDX?g|^=GjrkK0F-FRV6XBORJo34+v` zOGrrgZjZqZ4(lhloB6#s^OEZ5=wM@G8!EzEpAqgq*}^1#`SPbe;4>A7GcP$gInmh1 z&fMHw__tsu_C*zSnE3ts_rAroDF|t4Z5>T3#KOg;lwkFh;~sXX<%J^dJdFiPXxuxg zjrcA&2m4(T22a+^I+yOhLNlv5JOqPra10T63s;fGPqzF%-gZ#LW|MZ&dKxlsZ}e08 zDlZ?^$q%hv>y~-pV#R%MY%LXA-?{jrp**GF1*CaNke!p9eiyTrYuk1{v=dgQ|F<6T z0~pfOIJS{T;@n0nHrnAdSd`lx3sP=MoWF@9NM-L|h9dSKc>=!omp;dS-LVOK_g{ho zBKk+5z<&gZ)e@TkO8?0J^~PFS#ef#((| z3qhnNOf|5mh9G*qKH7K}7at2z=1F-3`EegC26R;M?AFYdR8=5q4m zucv{K<||-?>qiT{RvULLNV5Tyf~9NwsTzP1ina1sPMmcJm>E(!S!q5VQ5~)L}l?kbm#kj}C@d$U5qX zpGPT)C6c0z!D8B1uRM|e;I21a#+7sGNN@J=R_qJ6xumFpV1Vz+*7@W|!!S?F)ahysD=63c zbW0lUmp@#4wu-i2BKFNCDE1Kj-S!PnKp-NK=mB%t`EgYwx2!sEccz4pSik)7OG4^E zV`t9y^(Q=yehz96TD7t(@$da@%UaX)`dSu>r6F?-n!8#GTr=duSK(gE>3G(b$5X!h z$uuv2Jv$6ZAs)oRx!A zhkat2+L4Xg{A}9JtMUh`_0}S| zmP6s)yF`S87PXb~-phC}DZZI9q_gs^Cwho?azC_<3sVZlq&fro5rgwP-&q$MGYjUUqX)Lk4&kw%=7 z6n9bFHEgTlH@LQ`Q*%jACi-Otw*NEka|I87Ro-dTj!&+Zi}wm)!|#=T zs{sg4@g*_I8g-y^fuT$e^Hrt!>h&0pm4h>zjpE&bPQGM~=h05_ol9$d354gr>1t62 zYat`Fs=*T^626sUHO*3{K2LOWEW$J1(wHH*$pHD4sy7j+x`Ux_o-o`4*0Vi|?sw)k z(?kmgw=+{<8^Y;fSgvi?PFVxK*-zBX7LPH4WHf1JruyzzxNKi7<2$_rH9680-7M1H z)0@H)5%Y%RG8o+cvflUrCLH)}y?f2YdRyXHj4vxUk=LN#WLu*0JFsrsUp;|9wJ&76 z-rD)g*Ka|JZ+c4NV!j|l!lP?vFTNq$j4}DSV~j)YDvD~aT*OR*@Q$*AtqU#;;3*4n zETDFcrBSN&QcoL*rXe8f=RJSK=J+#^JXHBwJ)gX{kSLUIB|N5gb1ebDoi5X8^IFis z!p6_gS`3Xc)ahe-9e`-l z>FMj`1bHKVR0Sgur968P-dpjL1RCPVmZ{4LS-#dfgl_4**18pE6$Cl^&uF=AQ;J?7 zOv_-T)~uU}+`S#O-^=M^JO)(0N#Z`14(Nvcgqb1|UmW|WgGExTapmjC?P?Kc8 z`3nCKPJPo#hCfAJ!Aljbh$w%eCHPFk#4+i9TP^$>wd^6GgmwrCUY66b*!War&;X9m%#9r0V}z_VGf%NQ#%7ofJ3) zM5*kKwm@3fc8Eb9Gl~L;%ks~u8n9E0r1p)icbBwG;UCD`J5$32A@qh$GD=Hn0Ldr< zq21)z;cu<~#K}4+LIKXm0GE;1`ttHe`LCs@pz9_NK*o-z8$);nYOA>STkm5zf9O$e zVf*lC4es*V;bDG{vLaYc>n+a literal 0 HcmV?d00001 diff --git a/account_invoice_import/partner.py b/account_invoice_import/partner.py new file mode 100644 index 0000000000..92919734d3 --- /dev/null +++ b/account_invoice_import/partner.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Account Invoice Import module for Odoo +# Copyright (C) 2015 Akretion (http://www.akretion.com) +# @author Alexis de Lattre +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from openerp import models, fields + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + invoice_import_id = fields.Many2one( + 'account.invoice.import.config', + string='Invoice Import Configuration', + company_dependent=True) diff --git a/account_invoice_import/partner_view.xml b/account_invoice_import/partner_view.xml new file mode 100644 index 0000000000..7770596ff1 --- /dev/null +++ b/account_invoice_import/partner_view.xml @@ -0,0 +1,27 @@ + + + + + + + + + encres2.partner.form + res.partner + + + + + + + + + + + diff --git a/account_invoice_import/security/ir.model.access.csv b/account_invoice_import/security/ir.model.access.csv new file mode 100644 index 0000000000..ba1cf15311 --- /dev/null +++ b/account_invoice_import/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_account_invoice_import_config_read,Read access on account.invoice.import.config to Invoicing and Payment,model_account_invoice_import_config,account.group_account_invoice,1,0,0,0 +access_account_invoice_import_config_full,Full access on account.invoice.import.config to Account Manager,model_account_invoice_import_config,account.group_account_manager,1,1,1,1 diff --git a/account_invoice_import/test/free.yml b/account_invoice_import/test/free.yml new file mode 100644 index 0000000000..0f29beb215 --- /dev/null +++ b/account_invoice_import/test/free.yml @@ -0,0 +1,107 @@ +# -*- encoding: utf-8 -*- +# Copyright (C) 2015 Akretion France (www.akretion.com) +# @author: Alexis de Lattre +# The licence is in the file __openerp__.py + +- + Create French VAT 20% tax +- + !record {model: account.tax, id: fr_vat_purchase_20}: + name: French VAT purchase 20.0% + description: FR-VAT-buy-20.0 + amount: 0.2 + type: percent + account_collected_id: account.a_expense + account_paid_id: account.a_expense + base_sign: -1 + tax_sign: -1 + type_tax_use: purchase +- + Set this tax on Internet access product +- + !python {model: product.product, id: account_invoice_import.internet_access}: | + self.supplier_taxes_id = [(6, 0, [ref('fr_vat_purchase_20')])] +- + Import PDF +- + !python {model: account.invoice.import}: | + import base64 + from openerp.tools import file_open + f = file_open('account_invoice_import/test/pdf/invoice_free_fiber_201507.pdf', 'rb') + pdf_file = f.read() + wiz_id = self.create(cr, uid, { + 'invoice_file': base64.b64encode(pdf_file), + 'invoice_filename': 'invoice_free_fiber_201507.pdf', + }, context=context), + f.close() + self.import_invoice(cr, uid, wiz_id, context=context) +- + Check result of invoice creation +- + !python {model: account.invoice}: | + from openerp.tools import float_compare + inv_ids = self.search(cr, uid, [ + ('state', '=', 'draft'), + ('type', '=', 'in_invoice'), + ('supplier_invoice_number', '=', '562044387') + ], context=context) + assert len(inv_ids) == 1, 'Supplier draft invoice has not been created' + inv = self.browse(cr, uid, inv_ids[0], context=context) + assert inv.type == 'in_invoice', 'Wrong invoice type' + assert inv.date_invoice == '2015-07-02', 'Wrong invoice date' + assert inv.partner_id.id == ref('free'), 'Wrong supplier on invoice' + assert inv.journal_id.type == 'purchase', 'Wrong journal' + assert float_compare(inv.check_total, 29.99, precision_digits=2) == 0, 'Wrong check_total' + assert float_compare(inv.amount_total, 29.99, precision_digits=2) == 0, 'Wrong total amount' + assert float_compare(inv.amount_untaxed, 24.99, precision_digits=2) == 0, 'Wrong untaxed amount' + assert len(inv.invoice_line) == 1, 'Should have 1 invoice line' + iline = inv.invoice_line[0] + assert iline.name == 'Fiber optic access at the main office', 'Wrong label on invoice line' + assert iline.product_id.id == ref('internet_access'), 'Wrong product on invoice line' + assert float_compare(iline.quantity, 1.0, precision_digits=0) == 0, 'Wrong qty on invoice line' + assert float_compare(iline.price_unit, 24.99, precision_digits=2) == 0, 'Wrong price unit on invoice line' +- + Prepare data for next test i.e. invoice update (we re-use the invoice created by the first import !) +- + !python {model: account.invoice}: | + inv_ids = self.search(cr, uid, [ + ('state', '=', 'draft'), + ('type', '=', 'in_invoice'), + ('supplier_invoice_number', '=', '562044387') + ], context=context) + assert len(inv_ids) == 1, 'Supplier draft invoice has not been created' + inv = self.write(cr, uid, inv_ids[0], { + 'date_invoice': False, + 'supplier_invoice_number': False, + 'check_total': False}, context=context) +- + New import with update of an existing draft invoice +- + !python {model: account.invoice.import}: | + import base64 + from openerp.tools import file_open + f = file_open('account_invoice_import/test/pdf/invoice_free_fiber_201507.pdf', 'rb') + pdf_file = f.read() + wiz_id = self.create(cr, uid, { + 'invoice_file': base64.b64encode(pdf_file), + 'invoice_filename': 'invoice_free_fiber_201507.pdf', + }, context=context), + f.close() + action = self.import_invoice(cr, uid, wiz_id, context=context) + # Choose to update the existing invoice + self.update_invoice(cr, uid, wiz_id, context=action['context']) +- + Check result of invoice update +- + !python {model: account.invoice}: | + from openerp.tools import float_compare + inv_ids = self.search(cr, uid, [ + ('state', '=', 'draft'), + ('type', '=', 'in_invoice'), + ('supplier_invoice_number', '=', '562044387') + ], context=context) + assert len(inv_ids) == 1, 'Supplier draft invoice has not been updated' + inv = self.browse(cr, uid, inv_ids[0], context=context) + assert inv.date_invoice == '2015-07-02', 'Update: Wrong invoice date' + assert float_compare(inv.check_total, 29.99, precision_digits=2) == 0, 'Update: Wrong check_total' + diff --git a/account_invoice_import/test/pdf/ZUGFeRD_1p0_BASIC_Einfach.pdf b/account_invoice_import/test/pdf/ZUGFeRD_1p0_BASIC_Einfach.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2d9142b5ed6a4aaf2e6f64cbf9c9ec5756c3756b GIT binary patch literal 87894 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 literal 0 HcmV?d00001 diff --git a/account_invoice_import/test/pdf/invoice_free_fiber_201507.pdf b/account_invoice_import/test/pdf/invoice_free_fiber_201507.pdf new file mode 100644 index 0000000000000000000000000000000000000000..adc46f510f651a589cf0a6127db103374ffa3d0f GIT binary patch literal 120150 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�X7mx+C$K0%D3_wa0P?o=9|z;;&v%)LR@V%- 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

wiB*!r&vlT|Kp#d!|N5JC&La&ft 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 Tj{}P*5BXx>P4Fo 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%0A9ratVpLO!?-4@8G7zEnPY0v7>7z>klqe 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 literal 0 HcmV?d00001 diff --git a/account_invoice_import/test/zugferd.yml b/account_invoice_import/test/zugferd.yml new file mode 100644 index 0000000000..43fc39a256 --- /dev/null +++ b/account_invoice_import/test/zugferd.yml @@ -0,0 +1,55 @@ +# -*- encoding: utf-8 -*- +# Copyright (C) 2015 Akretion France (www.akretion.com) +# @author: Alexis de Lattre +# The licence is in the file __openerp__.py + +- + Create German VAT 19% tax +- + !record {model: account.tax, id: de_vat_purchase_19}: + name: German VAT purchase 19.0% + description: DE-VAT-buy-20.0 + amount: 0.19 + type: percent + account_collected_id: account.a_expense + account_paid_id: account.a_expense + base_sign: -1 + tax_sign: -1 + type_tax_use: purchase +- + Set this tax on lieferant_import_config +- + !python {model: account.invoice.import.config, id: lieferant_import_config}: | + self.tax_ids = [(6, 0, [ref('de_vat_purchase_19')])] +- + Import PDF +- + !python {model: account.invoice.import}: | + import base64 + from openerp.tools import file_open + f = file_open('account_invoice_import/test/pdf/ZUGFeRD_1p0_BASIC_Einfach.pdf', 'rb') + pdf_file = f.read() + wiz_id = self.create(cr, uid, { + 'invoice_file': base64.b64encode(pdf_file), + 'invoice_filename': 'ZUGFeRD_1p0_BASIC_Einfach.pdf', + }, context=context), + f.close() + self.import_invoice(cr, uid, wiz_id, context=context) +- + Check result of invoice creation +- + !python {model: account.invoice}: | + from openerp.tools import float_compare + inv_ids = self.search(cr, uid, [ + ('state', '=', 'draft'), + ('type', '=', 'in_invoice'), + ('supplier_invoice_number', '=', '471102') + ], context=context) + assert len(inv_ids) == 1, 'Supplier draft invoice has not been created' + inv = self.browse(cr, uid, inv_ids[0], context=context) + assert inv.type == 'in_invoice', 'Wrong invoice type' + assert inv.date_invoice == '2013-03-05', 'Wrong invoice date' + assert inv.partner_id.id == ref('lieferant'), 'Wrong supplier on invoice' + assert inv.journal_id.type == 'purchase', 'Wrong journal' + assert float_compare(inv.check_total, 235.62, precision_digits=2) == 0, 'Wrong check_total' + assert float_compare(inv.amount_untaxed, 198.00, precision_digits=2) == 0, 'Wrong untaxed amount' diff --git a/account_invoice_import/wizard/__init__.py b/account_invoice_import/wizard/__init__.py new file mode 100644 index 0000000000..8164a0ae51 --- /dev/null +++ b/account_invoice_import/wizard/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import account_invoice_import diff --git a/account_invoice_import/wizard/account_invoice_import.py b/account_invoice_import/wizard/account_invoice_import.py new file mode 100644 index 0000000000..6ef270675a --- /dev/null +++ b/account_invoice_import/wizard/account_invoice_import.py @@ -0,0 +1,666 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Account Invoice Import module for Odoo +# Copyright (C) 2015 Akretion (http://www.akretion.com) +# @author Alexis de Lattre +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from openerp import models, fields, api, _ +import openerp.addons.decimal_precision as dp +from openerp.tools import float_compare, float_round +from openerp.exceptions import Warning as UserError +from datetime import datetime +import logging +import os +import base64 +from tempfile import mkstemp +from invoice2data.main import extract_data +from pdfminer.pdfparser import PDFParser +from pdfminer.pdfdocument import PDFDocument +from pdfminer.pdftypes import resolve1 +from lxml import etree +import StringIO + +logger = logging.getLogger(__name__) + + +class AccountInvoiceImport(models.TransientModel): + _name = 'account.invoice.import' + _description = 'Wizard to import supplier invoices/refunds' + + invoice_file = fields.Binary( + string='PDF or XML Invoice', required=True) + invoice_filename = fields.Char(string='Filename') + state = fields.Selection([ + ('import', 'Import'), + ('update', 'Update'), + ], string='State', default="import") + partner_id = fields.Many2one( + 'res.partner', string="Supplier", readonly=True) + currency_id = fields.Many2one( + 'res.currency', 'Currency', readonly=True) + invoice_type = fields.Selection([ + ('in_invoice', 'Invoice'), + ('in_refund', 'Refund'), + ], string="Invoice or Refund", readonly=True) + amount_untaxed = fields.Float( + string='Total Untaxed', digits=dp.get_precision('Account'), + readonly=True) + amount_total = fields.Float( + string='Total', digits=dp.get_precision('Account'), + readonly=True) + invoice_id = fields.Many2one( + 'account.invoice', string='Draft Supplier Invoice to Update') + + @api.model + def parse_invoice_with_embedded_xml(self, file_data): + logger.info('Trying to find an embedded XML file inside PDF') + fd = StringIO.StringIO(file_data) + parser = PDFParser(fd) + doc = PDFDocument(parser) + logger.debug('doc.catalog=%s', doc.catalog) + # The code below will have to be adapted when we get samples + # of PDF files with embedded XML other than ZUGFeRD + embeddedfile = doc.catalog['Names']['EmbeddedFiles']['Names'] + if embeddedfile[0] == 'ZUGFeRD-invoice.xml': + pdfobjref1 = embeddedfile[1] + else: + logger.info('No embedded file ZUGFeRD-invoice.xml') + return False + logger.debug('pdfobjref1=%s', pdfobjref1) + respdfobjref1 = resolve1(pdfobjref1) + pdfobjref2 = respdfobjref1['EF']['F'] + respdfobjref2 = resolve1(pdfobjref2) + xml_string = respdfobjref2.get_data() + xml_root = etree.fromstring(xml_string) + logger.info('A valid XML file has been found in the PDF file') + logger.debug('xml_root:') + logger.debug(etree.tostring( + xml_root, pretty_print=True, encoding='UTF-8', + xml_declaration=True)) + return self.parse_cii_xml(xml_root) + + @api.model + def parse_cii_xml(self, xml_root): + """Parse Core Industry Invoice XML file""" + assert xml_root.tag.startswith( + '{urn:ferd:CrossIndustryDocument:invoice:1p0'),\ + 'wrong Core Industry Invoice namespace' + namespaces = xml_root.nsmap + logger.debug('XML file namespaces=%s', namespaces) + inv_number_xpath = xml_root.xpath( + '//rsm:HeaderExchangedDocument/ram:ID', namespaces=namespaces) + supplier_xpath = xml_root.xpath( + '//ram:ApplicableSupplyChainTradeAgreement' + '/ram:SellerTradeParty' + '/ram:Name', namespaces=namespaces) + vat_xpath = xml_root.xpath( + '//ram:ApplicableSupplyChainTradeAgreement' + "/ram:SellerTradeParty" + "/ram:SpecifiedTaxRegistration" + "/ram:ID[@schemeID='VA']", + namespaces=namespaces) + date_xpath = xml_root.xpath( + '//rsm:HeaderExchangedDocument' + '/ram:IssueDateTime/udt:DateTimeString', namespaces=namespaces) + date_dt = datetime.strptime(date_xpath[0].text, '%Y%m%d') + currency_iso_xpath = xml_root.xpath( + "//ram:ApplicableSupplyChainTradeSettlement" + "/ram:InvoiceCurrencyCode", + namespaces=namespaces) + amount_total_xpath = xml_root.xpath( + "//ram:ApplicableSupplyChainTradeSettlement" + "/ram:SpecifiedTradeSettlementMonetarySummation/" + "ram:GrandTotalAmount", + namespaces=namespaces) + amount_untaxed_xpath = xml_root.xpath( + "//ram:ApplicableSupplyChainTradeSettlement" + "/ram:SpecifiedTradeSettlementMonetarySummation" + "/ram:TaxBasisTotalAmount", namespaces=namespaces) + iban_xpath = xml_root.xpath( + "//ram:SpecifiedTradeSettlementPaymentMeans" + "/ram:PayeePartyCreditorFinancialAccount" + "/ram:IBANID", namespaces=namespaces) + bic_xpath = xml_root.xpath( + "//ram:SpecifiedTradeSettlementPaymentMeans" + "/ram:PayeeSpecifiedCreditorFinancialInstitution" + "/ram:BICID", namespaces=namespaces) + inv_line_xpath = xml_root.xpath( + "//ram:IncludedSupplyChainTradeLineItem", namespaces=namespaces) + res_lines = [] + for iline in inv_line_xpath: + price_unit_xpath = iline.xpath( + "ram:SpecifiedSupplyChainTradeAgreement" + "/ram:NetPriceProductTradePrice" + "/ram:ChargeAmount", + namespaces=namespaces) + qty_xpath = iline.xpath( + "ram:SpecifiedSupplyChainTradeDelivery/ram:BilledQuantity", + namespaces=namespaces) + if not qty_xpath: + continue + qty = float(qty_xpath[0].text) + ean13_xpath = iline.xpath( + "ram:SpecifiedTradeProduct/ram:GlobalID", + namespaces=namespaces) + # Check SchemeID ? + product_code_xpath = iline.xpath( + "ram:SpecifiedTradeProduct/ram:SellerAssignedID", + namespaces=namespaces) + name_xpath = iline.xpath( + "ram:SpecifiedTradeProduct/ram:Name", + namespaces=namespaces) + if price_unit_xpath: + price_unit = float(price_unit_xpath[0].text) + else: + price_subtotal_xpath = iline.xpath( + "ram:SpecifiedSupplyChainTradeSettlement" + "/ram:SpecifiedTradeSettlementMonetarySummation" + "/ram:LineTotalAmount", + namespaces=namespaces) + price_subtotal = float(price_subtotal_xpath[0].text) + price_unit = price_subtotal / qty + vals = { + 'ean13': ean13_xpath and ean13_xpath[0].text or False, + 'product_code': + product_code_xpath and product_code_xpath[0].text or False, + 'quantity': qty, + 'price_unit': price_unit, + 'name': name_xpath[0].text, + } + res_lines.append(vals) + res = { + 'vat': vat_xpath[0].text, + 'partner_name': supplier_xpath[0].text, + 'invoice_number': inv_number_xpath[0].text, + 'date': fields.Date.to_string(date_dt), + 'currency_iso': currency_iso_xpath[0].text, + 'amount_total': float(amount_total_xpath[0].text), + 'amount_untaxed': float(amount_untaxed_xpath[0].text), + 'iban': iban_xpath and iban_xpath[0].text or False, + 'bic': bic_xpath and bic_xpath[0].text or False, + 'lines': res_lines, + } + # Hack for the sample ZUGFeRD invoices that use an invalid VAT number ! + if res['vat'] == 'DE123456789': + res.pop('vat') + logger.info('Result of CII XML parsing: %s', res) + return res + + @api.model + def parse_invoice_with_invoice2data(self, file_data): + logger.info('Trying to analyze PDF invoice with invoice2data lib') + fd, file_name = mkstemp() + try: + os.write(fd, file_data) + finally: + os.close(fd) + try: + res = extract_data(file_name) + except: + raise UserError(_( + "PDF Invoice parsing failed.")) + if not res: + raise UserError(_( + "This PDF invoice doesn't match a known template of " + "the invoice2data lib.")) + # rewrite a few keys + res['amount_total'] = res['amount'] + res.pop('amount') + # convert datetime to string, to make it json serializable + for key, value in res.iteritems(): + if value and isinstance(value, datetime): + res[key] = fields.Date.to_string(value) + logger.info('Result of invoice2data PDF extraction: %s', res) + return res + # Dict to return: + # { + # 'currency_iso': 'EUR', + # 'currency_symbol': u'€', # The one or the other + # 'date': '2015-10-08', # Must be a string + # 'date_due': '2015-11-07', + # 'amount_untaxed': 10.0, + # 'amount_total': 12.0, # Total with taxes + # 'vat': 'FR25499247138', + # 'partner_name': 'Capitaine Train' # Not needed if we have VAT + # 'invoice_number': 'I1501243', + # 'description': 'TGV Paris-Lyon', + # 'lines': [{ + # 'ean13': '4123456000021', + # 'price_unit': 1.45, # price_unit always positive + # 'product_code': 'GZ250', + # 'name': 'Gelierzucker Extra 250g', + # 'quantity': -2.0, # < 0 when it's a refund + # }], + # } + + @api.model + def _select_partner(self, parsed_inv): + if parsed_inv.get('vat'): + vat = parsed_inv['vat'].replace(' ', '') + # Match even if the VAT number has spaces in Odoo + self._cr.execute( + """SELECT id FROM res_partner + WHERE supplier=true + AND is_company=true + AND replace(vat, ' ', '') = %s""", + (vat, )) + res = self._cr.fetchall() + if res: + partner_id = res[0][0] + return self.env['res.partner'].browse(partner_id) + else: + raise UserError(_( + "The analysis of the invoice returned '%s' as " + "supplier VAT number. But there are no supplier " + "with this VAT number in Odoo.") % vat) + elif parsed_inv.get('partner_name'): + partners = self.env['res.partner'].search([ + ('name', '=ilike', parsed_inv['partner_name']), + ('is_company', '=', True), + ('supplier', '=', True)]) + if partners: + return partners[0] + else: + raise UserError(_( + "Invoice parsing didn't return the VAT number of the " + "supplier and the returned supplier name (%s) " + "is not a supplier company in Odoo.") + % parsed_inv['partner_name']) + else: + raise UserError(_( + "Invoice parsing didn't return the VAT number of the " + "supplier nor the supplier name.")) + + @api.model + def _prepare_create_invoice_vals(self, parsed_inv): + aio = self.env['account.invoice'] + ailo = self.env['account.invoice.line'] + company = self.env.user.company_id + assert parsed_inv.get('amount_total'), 'Missing amount_total' + vals = { + 'partner_id': self.partner_id.id, + 'currency_id': self.currency_id.id, + 'type': parsed_inv['type'], + 'company_id': company.id, + 'supplier_invoice_number': + parsed_inv.get('invoice_number'), + 'date_invoice': parsed_inv.get('date'), + 'journal_id': + aio.with_context(type='in_invoice')._default_journal().id, + 'invoice_line': [], + 'check_total': parsed_inv.get('amount_total'), + } + vals.update(aio.onchange_partner_id( + 'in_invoice', self.partner_id.id, company_id=company.id)['value']) + # Force due date of the invoice + if parsed_inv.get('date_due'): + vals['date_due'] = parsed_inv.get('date_due') + # Bank info + if parsed_inv.get('iban'): + iban = parsed_inv.get('iban').replace(' ', '') + self._cr.execute( + """SELECT id FROM res_partner_bank + WHERE replace(acc_number, ' ', '')=%s + AND state='iban' + AND partner_id=%s + """, (iban, vals['partner_id'])) + rpb_res = self._cr.fetchall() + if rpb_res: + vals['partner_bank_id'] = rpb_res[0][0] + else: + partner_bank = self.env['res.partner.bank'].create({ + 'partner_id': vals['partner_id'], + 'state': 'iban', + 'acc_number': parsed_inv['iban'], + 'bank_bic': parsed_inv.get('bic'), + }) + vals['partner_bank_id'] = partner_bank.id + parsed_inv['chatter_msg'] = _( + "The bank account IBAN %s has been automatically " + "added on the supplier %s") % ( + parsed_inv['iban'], self.partner_id.name) + config = self.partner_id.invoice_import_id + if config.invoice_line_method.startswith('1line'): + if config.invoice_line_method == '1line_no_product': + il_vals = { + 'account_id': config.account_id.id, + 'invoice_line_tax_id': config.tax_ids.ids or False, + 'price_unit': parsed_inv.get('amount_untaxed'), + } + elif config.invoice_line_method == '1line_static_product': + product = config.static_product_id + il_vals = ailo.product_id_change( + product.id, product.uom_id.id, type='in_invoice', + partner_id=self.partner_id.id, + fposition_id=self.partner_id.property_account_position.id, + company_id=company.id)['value'] + il_vals.update({ + 'product_id': product.id, + 'price_unit': parsed_inv.get('amount_untaxed'), + }) + if config.label: + il_vals['name'] = config.label + elif parsed_inv.get('description'): + il_vals['name'] = parsed_inv['description'] + elif not il_vals.get('name'): + il_vals['name'] = _('MISSING DESCRIPTION') + self.set_1line_price_unit_and_quantity(il_vals, parsed_inv) + vals['invoice_line'].append((0, 0, il_vals)) + elif config.invoice_line_method.startswith('nline'): + if not parsed_inv.get('lines'): + raise UserError(_( + "You have selected a Multi Line method for this import " + "but Odoo could not extract/read any XML file inside " + "the PDF invoice.")) + if config.invoice_line_method == 'nline_no_product': + static_vals = { + 'account_id': config.account_id.id, + 'invoice_line_tax_id': config.tax_ids.ids or False, + } + elif config.invoice_line_method == 'nline_static_product': + sproduct = config.static_product_id + static_vals = ailo.product_id_change( + sproduct.id, sproduct.uom_id.id, type='in_invoice', + partner_id=self.partner_id.id, + fposition_id=self.partner_id.property_account_position.id, + company_id=company.id)['value'] + static_vals['product_id'] = sproduct.id + else: + static_vals = {} + for line in parsed_inv['lines']: + il_vals = static_vals.copy() + if config.invoice_line_method == 'nline_auto_product': + product = self._match_product(line) + fposition_id = self.partner_id.property_account_position.id + il_vals.update( + ailo.product_id_change( + product.id, product.uom_id.id, type='in_invoice', + partner_id=self.partner_id.id, + fposition_id=fposition_id, + company_id=company.id)['value']) + il_vals['product_id'] = product.id + if line.get('name'): + il_vals['name'] = line['name'] + elif not il_vals.get('name'): + il_vals['name'] = _('MISSING DESCRIPTION') + il_vals.update({ + 'quantity': line['quantity'], + 'price_unit': line['price_unit'], + }) + vals['invoice_line'].append((0, 0, il_vals)) + # Write analytic account + fix syntax for taxes + aacount_id = config.account_analytic_id.id or False + for line in vals['invoice_line']: + line_dict = line[2] + if line_dict.get('invoice_line_tax_id'): + line_dict['invoice_line_tax_id'] = [ + (6, 0, line_dict['invoice_line_tax_id'])] + if aacount_id: + line_dict['account_analytic_id'] = aacount_id + return vals + + @api.model + def _match_product(self, parsed_line): + """This method is designed to be inherited""" + ppo = self.env['product.product'] + if parsed_line.get('ean13'): + # Don't filter on purchase_ok = 1 because we don't depend + # on the purchase module + products = ppo.search([('ean13', '=', parsed_line['ean13'])]) + if products: + return products[0] + elif parsed_line.get('product_code'): + # Should probably be modified to match via the supplier code + products = ppo.search( + [('default_code', '=', parsed_line['product_code'])]) + if products: + return products[0] + raise UserError(_( + "Could not find any corresponding product in the Odoo database " + "with EAN13 '%s' or Default Code '%s'.") + % (parsed_line.get('ean13'), parsed_line.get('product_code'))) + + @api.model + def set_1line_price_unit_and_quantity(self, il_vals, parsed_inv): + """For the moment, we only take into account the 'price_include' + option of the first tax""" + il_vals['quantity'] = 1 + il_vals['price_unit'] = parsed_inv.get('amount_total') + if il_vals.get('invoice_line_tax_id'): + first_tax = self.env['account.tax'].browse( + il_vals['invoice_line_tax_id'][0]) + if not first_tax.price_include: + il_vals['price_unit'] = parsed_inv.get('amount_untaxed') + + @api.model + def _get_currency(self, parsed_inv): + currency = False + if parsed_inv.get('currency_iso'): + currency_iso = parsed_inv['currency_iso'].upper() + currencies = self.env['res.currency'].search( + [('name', '=', currency_iso)]) + if currencies: + currency = currencies[0] + else: + raise UserError(_( + "The analysis of the invoice returned '%s' as " + "the currency ISO code. But there are no currency " + "with that name in Odoo.") % currency_iso) + if not currency and parsed_inv.get('currency_symbol'): + cur_symbol = parsed_inv['currency_symbol'] + currencies = self.env['res.currency'].search( + [('symbol', '=', cur_symbol)]) + if currencies: + currency = currencies[0] + else: + raise UserError(_( + "The analysis of the invoice returned '%s' as " + "the currency symbol. But there are no currency " + "with that symbol in Odoo.") % cur_symbol) + if not currency: + currency = self.env.user.company_id.currency_id + return currency + + @api.multi + def parse_invoice(self): + self.ensure_one() + file_data = base64.b64decode(self.invoice_file) + parsed_inv = {} + try: + parsed_inv = self.parse_invoice_with_embedded_xml(file_data) + except: + pass + if not parsed_inv: + parsed_inv = self.parse_invoice_with_invoice2data(file_data) + prec_ac = self.env['decimal.precision'].precision_get('Account') + prec_pp = self.env['decimal.precision'].precision_get('Product Price') + prec_uom = self.env['decimal.precision'].precision_get( + 'Product Unit of Measure') + if parsed_inv['amount_total'] < 0: + parsed_inv['type'] = 'in_refund' + else: + parsed_inv['type'] = 'in_invoice' + for entry in ['amount_untaxed', 'amount_total']: + parsed_inv[entry] = float_round( + parsed_inv[entry], precision_digits=prec_ac) + if parsed_inv['type'] == 'in_refund': + parsed_inv[entry] *= -1 + if parsed_inv.get('lines'): + for line in parsed_inv['lines']: + line['quantity'] = float_round( + line['quantity'], precision_digits=prec_uom) + line['price_unit'] = float_round( + line['price_unit'], precision_digits=prec_pp) + if parsed_inv['type'] == 'in_refund': + line['quantity'] *= -1 + logger.debug('Resulf of invoice parsing parsed_inv=%s', parsed_inv) + return parsed_inv + + @api.multi + def import_invoice(self): + self.ensure_one() + logger.info('Starting to import invoice') + aio = self.env['account.invoice'] + iaao = self.env['ir.actions.act_window'] + parsed_inv = self.parse_invoice() + partner = self._select_partner(parsed_inv) + currency = self._get_currency(parsed_inv) + self.write({ + 'partner_id': partner.id, + 'invoice_type': parsed_inv['type'], + 'currency_id': currency.id, + 'amount_untaxed': parsed_inv['amount_untaxed'], + 'amount_total': parsed_inv['amount_total'], + }) + if not self.partner_id.invoice_import_id: + raise UserError(_( + "Missing Invoice Import Configuration on partner %s") + % self.partner_id.name) + domain = [ + ('commercial_partner_id', '=', self.partner_id.id), + ('type', '=', parsed_inv['type'])] + existing_invs = aio.search( + domain + + [( + 'supplier_invoice_number', + '=ilike', + parsed_inv.get('invoice_number'))]) + if existing_invs: + raise UserError(_( + "This invoice already exists in Odoo. It's " + "Supplier Invoice Number is '%s' and it's Odoo number " + "is '%s'") + % (parsed_inv.get('invoice_number'), existing_invs[0].number)) + draft_same_supplier_invs = aio.search( + domain + [('state', '=', 'draft')]) + logger.debug('draft_same_supplier_invs=%s', draft_same_supplier_invs) + if draft_same_supplier_invs: + action = iaao.for_xml_id( + 'account_invoice_import', + 'account_invoice_import_action') + default_invoice_id = False + if len(draft_same_supplier_invs) == 1: + default_invoice_id = draft_same_supplier_invs[0].id + self.write({ + 'state': 'update', + 'invoice_id': default_invoice_id, + }) + action['res_id'] = self.id + action['context'] = {'parsed_inv': parsed_inv} + return action + else: + action = self.with_context(parsed_inv=parsed_inv).create_invoice() + return action + + @api.multi + def create_invoice(self): + self.ensure_one() + aio = self.env['account.invoice'] + iaao = self.env['ir.actions.act_window'] + assert self._context.get('parsed_inv'), 'Missing parsed_invoice' + parsed_inv = self._context['parsed_inv'] + vals = self._prepare_create_invoice_vals(parsed_inv) + logger.debug('Invoice vals for creation: %s', vals) + invoice = aio.create(vals) + logger.info('Invoice ID %d created', invoice.id) + invoice.button_reset_taxes() + + # Force tax amount if necessary + prec = self.env['decimal.precision'].precision_get('Account') + if ( + parsed_inv.get('amount_total') and + parsed_inv.get('amount_untaxed') and + float_compare( + invoice.amount_total, + parsed_inv['amount_total'], + precision_digits=prec)): + if not invoice.tax_line: + raise UserError(_( + "The total amount is different from the untaxed amount, " + "but no tax has been configured !")) + initial_tax_amount = invoice.tax_line[0].amount + tax_amount = parsed_inv['amount_total'] -\ + parsed_inv['amount_untaxed'] + invoice.tax_line[0].amount = tax_amount + cur_symbol = invoice.currency_id.symbol + invoice.message_post( + 'The total tax amount has been forced to %s %s ' + '(amount computed by Odoo was: %s %s).' + % (tax_amount, cur_symbol, initial_tax_amount, cur_symbol)) + # Attach imported invoice + self.env['ir.attachment'].create({ + 'name': self.invoice_filename, + 'res_id': invoice.id, + 'res_model': 'account.invoice', + 'datas': self.invoice_file, + }) + invoice.message_post(_( + "This invoice has been created automatically via file import")) + if parsed_inv.get('chatter_msg'): + invoice.message_post(parsed_inv['chatter_msg']) + action = iaao.for_xml_id('account', 'action_invoice_tree2') + action.update({ + 'view_mode': 'form,tree,calendar,graph', + 'views': False, + 'res_id': invoice.id, + }) + return action + + @api.model + def _prepare_update_invoice_vals(self, parsed_inv): + vals = { + 'supplier_invoice_number': + parsed_inv.get('invoice_number'), + 'date_invoice': parsed_inv.get('date'), + 'check_total': parsed_inv.get('amount_total'), + } + if parsed_inv.get('date_due'): + vals['date_due'] = parsed_inv['date_due'] + return vals + + @api.multi + def update_invoice(self): + self.ensure_one() + iaao = self.env['ir.actions.act_window'] + if not self.invoice_id: + raise UserError(_( + 'You must select a supplier invoice or refund to update')) + assert self._context.get('parsed_inv'), 'Missing parsed_invoice' + parsed_inv = self._context['parsed_inv'] + # When invoice with embedded XML files will be more widely used, + # we should also update invoice lines + vals = self._prepare_update_invoice_vals(parsed_inv) + logger.debug('Updating supplier invoice with vals=%s', vals) + self.invoice_id.write(vals) + self.env['ir.attachment'].create({ + 'name': self.invoice_filename, + 'res_id': self.invoice_id.id, + 'res_model': 'account.invoice', + 'datas': self.invoice_file, + }) + logger.info('Supplier invoice ID %d updated', self.invoice_id.id) + self.invoice_id.message_post(_( + "This invoice has been updated automatically via file import")) + action = iaao.for_xml_id('account', 'action_invoice_tree2') + action.update({ + 'view_mode': 'form,tree,calendar,graph', + 'views': False, + 'res_id': self.invoice_id.id, + }) + return action diff --git a/account_invoice_import/wizard/account_invoice_import_view.xml b/account_invoice_import/wizard/account_invoice_import_view.xml new file mode 100644 index 0000000000..56f7126d4a --- /dev/null +++ b/account_invoice_import/wizard/account_invoice_import_view.xml @@ -0,0 +1,74 @@ + + + + + + + + account.invoice.import.form + account.invoice.import + +

+ + + + + +
+

Upload below the supplier invoice or refund as PDF or XML file. When you click on the Import button:

+
    +
  1. Odoo will try to extract an XML file embedded inside the PDF file. It will work only if the invoice complies with the ZUGFeRD standard (an implementation of the Core Industry Invoice specifications).
  2. +
  3. Otherwise, Odoo will use the invoice2data library to read the text of the PDF and get the information. It will work only if the invoice2data library has a template for the invoices of that supplier.
  4. +
  5. Odoo will use this information to create a draft supplier invoice. If there is already a draft invoice for that supplier in Odoo, you will have the option to update that invoice.
  6. +
+
+
+ +
+

Some draft supplier invoices/refunds have been found for the supplier of the PDF invoice you are importing ; one of them may correspond to the PDF invoice. You can either select an existing draft supplier invoice to update with the information of the PDF (information that will be updated include invoice date, supplier invoice number and attachment) or create a new draft invoice.

+
+
+ + + + + + + + + + + +
+
+ + + + + + Import Invoice + account.invoice.import + form + new + + + + + + From 798c5f4c7f6ea3f0925fa16d4a5087922621c73e Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 7 Jan 2016 23:14:52 +0100 Subject: [PATCH 002/176] Update FR translation --- account_invoice_import/i18n/fr.po | 353 ++++++++++++++++-------------- 1 file changed, 185 insertions(+), 168 deletions(-) diff --git a/account_invoice_import/i18n/fr.po b/account_invoice_import/i18n/fr.po index cfcc0ba28d..a9850d464d 100644 --- a/account_invoice_import/i18n/fr.po +++ b/account_invoice_import/i18n/fr.po @@ -1,13 +1,13 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * account_invoice_pdf_import +# * account_invoice_import # msgid "" msgstr "" "Project-Id-Version: Odoo Server 8.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-26 00:03+0000\n" -"PO-Revision-Date: 2015-12-26 00:03+0000\n" +"POT-Creation-Date: 2016-01-07 21:55+0000\n" +"PO-Revision-Date: 2016-01-07 21:55+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,417 +15,434 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/account_invoice.py:36 +#. module: account_invoice_import +#: code:addons/account_invoice_import/account_invoice.py:36 #, python-format msgid " Amount w/o tax: %s %s" msgstr " Montant HT: %s %s" -#. module: account_invoice_pdf_import -#: view:account.invoice.import.config:account_invoice_pdf_import.account_invoice_import_config_form +#. module: account_invoice_import +#: view:account.invoice.import.config:account_invoice_import.account_invoice_import_config_form msgid "Account Invoice Import Configuration" msgstr "Configuration pour l'import des factures" -#. module: account_invoice_pdf_import -#: view:account.invoice.import.config:account_invoice_pdf_import.account_invoice_import_config_tree +#. module: account_invoice_import +#: view:account.invoice.import.config:account_invoice_import.account_invoice_import_config_tree msgid "Account Invoice Import Configurations" msgstr "Configurations pour l'import des factures" -#. module: account_invoice_pdf_import -#: view:account.invoice.import.config:account_invoice_pdf_import.account_invoice_import_config_form +#. module: account_invoice_import +#: view:account.invoice.import.config:account_invoice_import.account_invoice_import_config_form msgid "Accounting Parameters" msgstr "Paramètres comptables" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: field:account.invoice.import.config,active:0 msgid "Active" msgstr "Actif" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: field:account.invoice.import.config,account_analytic_id:0 msgid "Analytic Account" msgstr "Compte analytique" -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form msgid "Cancel" msgstr "Annuler" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: field:account.invoice.import.config,company_id:0 msgid "Company" msgstr "Société" -#. module: account_invoice_pdf_import -#: model:ir.model,name:account_invoice_pdf_import.model_account_invoice_import_config +#. module: account_invoice_import +#: model:ir.model,name:account_invoice_import.model_account_invoice_import_config msgid "Configuration for the import of Supplier Invoices" msgstr "Configuration pour l'import des factures fournisseurs" -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form msgid "Core Industry Invoice" msgstr "Core Industry Invoice" -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:426 +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:434 #, python-format msgid "Could not find any corresponding product in the Odoo database with EAN13 '%s' or Default Code '%s'." msgstr "Impossible de trouver un article dans la base d'Odoo avec le code-barre EAN13 '%s' ni avec la référence interne '%s'." -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form msgid "Create New" msgstr "Créer une nouvelle" -#. module: account_invoice_pdf_import +#. module: account_invoice_import +#: field:account.invoice.import,create_uid:0 #: field:account.invoice.import.config,create_uid:0 -#: field:account.invoice.pdf.import,create_uid:0 msgid "Created by" msgstr "Créé par" -#. module: account_invoice_pdf_import +#. module: account_invoice_import +#: field:account.invoice.import,create_date:0 #: field:account.invoice.import.config,create_date:0 -#: field:account.invoice.pdf.import,create_date:0 msgid "Created on" msgstr "Créé le" -#. module: account_invoice_pdf_import -#: field:account.invoice.pdf.import,currency_id:0 +#. module: account_invoice_import +#: field:account.invoice.import,currency_id:0 msgid "Currency" msgstr "Devise" -#. module: account_invoice_pdf_import -#: field:account.invoice.pdf.import,invoice_id:0 +#. module: account_invoice_import +#: field:account.invoice.import,invoice_id:0 msgid "Draft Supplier Invoice to Update" msgstr "Facture fournisseur brouillon à mettre-à-jour" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: field:account.invoice.import.config,account_id:0 msgid "Expense Account" msgstr "Compte de charge" -#. module: account_invoice_pdf_import -#: field:account.invoice.pdf.import,pdf_filename:0 +#. module: account_invoice_import +#: field:account.invoice.import,invoice_filename:0 msgid "Filename" msgstr "Nom du fichier" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: field:account.invoice.import.config,label:0 msgid "Force Description" msgstr "Forcer la description" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: help:account.invoice.import.config,label:0 msgid "Force supplier invoice line description" msgstr "Forcer la description de la ligne de facture fournisseur" -#. module: account_invoice_pdf_import +#. module: account_invoice_import +#: field:account.invoice.import,id:0 #: field:account.invoice.import.config,id:0 -#: field:account.invoice.pdf.import,id:0 msgid "ID" msgstr "ID" -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form -#: selection:account.invoice.pdf.import,state:0 +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form +#: selection:account.invoice.import,state:0 msgid "Import" msgstr "Importer" -#. module: account_invoice_pdf_import -#: model:ir.actions.act_window,name:account_invoice_pdf_import.account_invoice_pdf_import_action -#: model:ir.ui.menu,name:account_invoice_pdf_import.account_invoice_pdf_import_menu -msgid "Import PDF Invoice" -msgstr "Importer une facture PDF" +#. module: account_invoice_import +#: model:ir.actions.act_window,name:account_invoice_import.account_invoice_import_action +#: model:ir.ui.menu,name:account_invoice_import.account_invoice_import_menu +msgid "Import Invoice" +msgstr "Import facture" -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form -msgid "Import Supplier Invoice or Refund as PDF" -msgstr "Importer une facture ou un avoir fournisseur en PDF" +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form +msgid "Import Supplier Invoice or Refund" +msgstr "Importer une facture ou un avoir fournisseur" -#. module: account_invoice_pdf_import -#: model:ir.actions.act_window,name:account_invoice_pdf_import.account_invoice_import_config_action -#: model:ir.ui.menu,name:account_invoice_pdf_import.account_invoice_import_config_menu +#. module: account_invoice_import +#: model:ir.actions.act_window,name:account_invoice_import.account_invoice_import_config_action +#: model:ir.ui.menu,name:account_invoice_import.account_invoice_import_config_menu msgid "Import Supplier Invoices" msgstr "Import des factures fournisseur" -#. module: account_invoice_pdf_import -#: model:product.template,name:account_invoice_pdf_import.internet_access_product_template +#. module: account_invoice_import +#: model:product.template,name:account_invoice_import.internet_access_product_template msgid "Internet Access" msgstr "Accès Internet" -#. module: account_invoice_pdf_import -#: model:ir.model,name:account_invoice_pdf_import.model_account_invoice +#. module: account_invoice_import +#: selection:account.invoice.import,invoice_type:0 +#: model:ir.model,name:account_invoice_import.model_account_invoice msgid "Invoice" msgstr "Facture" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: field:res.partner,invoice_import_id:0 msgid "Invoice Import Configuration" msgstr "Configuration de l'import de facture" -#. module: account_invoice_pdf_import +#. module: account_invoice_import +#: field:account.invoice.import,invoice_type:0 +msgid "Invoice or Refund" +msgstr "Facture ou avoir" + +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:280 +#, python-format +msgid "Invoice parsing didn't return the VAT number of the supplier and the returned supplier name (%s) is not a supplier company in Odoo." +msgstr "L'analyse automatique de la facture n'a pas renvoyé le numéro de TVA du fournisseur et le nom du fournisseur renvoyé (%s) n'est pas un fournisseur présent dans Odoo." + +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:286 +#, python-format +msgid "Invoice parsing didn't return the VAT number of the supplier nor the supplier name." +msgstr "L'analyse automatique de la facture n'a renvoyé ni le numéro de TVA du fournisseur ni son nom." + +#. module: account_invoice_import +#: field:account.invoice.import,write_uid:0 #: field:account.invoice.import.config,write_uid:0 -#: field:account.invoice.pdf.import,write_uid:0 msgid "Last Updated by" msgstr "Dernière mise-à-jour par" -#. module: account_invoice_pdf_import +#. module: account_invoice_import +#: field:account.invoice.import,write_date:0 #: field:account.invoice.import.config,write_date:0 -#: field:account.invoice.pdf.import,write_date:0 msgid "Last Updated on" msgstr "Dernière mise-à-jour le" -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:354 -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:393 +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:362 +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:401 #, python-format msgid "MISSING DESCRIPTION" msgstr "DESCRIPTION MANQUANTE" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: field:account.invoice.import.config,invoice_line_method:0 msgid "Method for Invoice Line" msgstr "Méthode pour les lignes de facture" -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:523 +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:532 #, python-format msgid "Missing Invoice Import Configuration on partner %s" msgstr "Configuration de l'import de facture manquante pour le fournisseur %s" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: selection:account.invoice.import.config,invoice_line_method:0 msgid "Multi Line, Auto-selected Product" msgstr "Multi-ligne, Article auto-sélectionné" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: selection:account.invoice.import.config,invoice_line_method:0 msgid "Multi Line, No Product" msgstr "Multi-ligne, aucun article" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: selection:account.invoice.import.config,invoice_line_method:0 msgid "Multi Line, Static Product" msgstr "Multi-ligne, article statique" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: field:account.invoice.import.config,name:0 msgid "Name" msgstr "Nom" -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form msgid "Odoo will try to extract an XML file embedded inside the PDF file. It will work only if the invoice complies with the" msgstr "Odoo essayera d'extraire un fichier XML embarqué dans le fichier PDF. Cela fonctionnera uniquement si la facture est conforme au standard" -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form msgid "Odoo will use this information to create a draft supplier invoice. If there is already a draft invoice for that supplier in Odoo, you will have the option to update that invoice." msgstr "Odoo utilisera cette donnée pour créer une facture fournisseur brouillon. Si il y a déjà une facture brouillon pour ce fournisseur dans Odoo, il vous proposera la possibilité de mettre à jour cette facture." -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form msgid "Otherwise, Odoo will use the" msgstr "Sinon, Odoo utilisera la librairie" -#. module: account_invoice_pdf_import -#: field:account.invoice.pdf.import,pdf_file:0 -msgid "PDF Invoice" -msgstr "Facture PDF" - -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:276 -#, python-format -msgid "PDF Invoice parsing didn't return the VAT number of the supplier and the returned supplier name (%s) is not a supplier company in Odoo." -msgstr "L'analyse automatique de la facture PDF n'a pas renvoyé le numéro de TVA du fournisseur et le nom du fournisseur renvoyé (%s) n'est pas un fournisseur présent dans la base d'Odoo." - -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:212 +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:216 #, python-format msgid "PDF Invoice parsing failed." msgstr "Echec de l'analyse automatique de la facture PDF." -#. module: account_invoice_pdf_import -#: model:ir.model,name:account_invoice_pdf_import.model_res_partner +#. module: account_invoice_import +#: field:account.invoice.import,invoice_file:0 +msgid "PDF or XML Invoice" +msgstr "Facture PDF ou XML" + +#. module: account_invoice_import +#: model:ir.model,name:account_invoice_import.model_res_partner msgid "Partner" msgstr "Partenaire" -#. module: account_invoice_pdf_import -#: view:account.invoice.import.config:account_invoice_pdf_import.account_invoice_import_config_form +#. module: account_invoice_import +#: view:account.invoice.import.config:account_invoice_import.account_invoice_import_config_form #: field:account.invoice.import.config,partner_ids:0 msgid "Partners" msgstr "Partenaires" -#. module: account_invoice_pdf_import +#. module: account_invoice_import +#: selection:account.invoice.import,invoice_type:0 +msgid "Refund" +msgstr "Avoir" + +#. module: account_invoice_import #: selection:account.invoice.import.config,invoice_line_method:0 msgid "Single Line, No Product" msgstr "Mono-ligne, aucun article" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: selection:account.invoice.import.config,invoice_line_method:0 msgid "Single Line, Static Product" msgstr "Mono-ligne, article statique" -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form msgid "Some draft supplier invoices/refunds have been found for the supplier of the PDF invoice you are importing ; one of them may correspond to the PDF invoice. You can either select an existing draft supplier invoice to update with the information of the PDF (information that will be updated include invoice date, supplier invoice number and attachment) or create a new draft invoice." msgstr "Une ou plusieurs factures/avoirs fournisseur brouillons ont été trouvées pour le même fournisseur que la facture PDF que vous importez ; l'une d'entre-elles pourrait correspondre à la facture PDF. Vous pouvez soit sélectionner une facture fournisseur brouillon à mettre à jour avec les données du PDF (les informations mises-à-jour sont la date et le numéro de facture ainsi que la pièce jointe) ou créer une nouvelle facture brouillon." -#. module: account_invoice_pdf_import -#: field:account.invoice.pdf.import,state:0 +#. module: account_invoice_import +#: field:account.invoice.import,state:0 msgid "State" msgstr "Etat" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: field:account.invoice.import.config,static_product_id:0 msgid "Static Product" msgstr "Article statique" -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/account_invoice_import_config.py:73 +#. module: account_invoice_import +#: code:addons/account_invoice_import/account_invoice_import_config.py:74 #, python-format msgid "Static Product must be set on the invoice import configuration of supplier '%s' that has a Method for Invoice Line set to 'Static Product'." msgstr "L'article statique doit être configuré sur la configuration de l'import de facture du fournisseur '%s' qui a une méthode pour les lignes de facture configuré sur 'Article statique'." -#. module: account_invoice_pdf_import -#: field:account.invoice.pdf.import,partner_id:0 +#. module: account_invoice_import +#: field:account.invoice.import,partner_id:0 msgid "Supplier" -msgstr "Fournisseur" +msgstr "Supplier" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: field:account.invoice.import.config,tax_ids:0 msgid "Taxes" msgstr "Taxes" -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/account_invoice_import_config.py:81 +#. module: account_invoice_import +#: code:addons/account_invoice_import/account_invoice_import_config.py:82 #, python-format msgid "The Expense Account must be set on the invoice import configuration of supplier '%s' that has a Method for Invoice Line set to 'Without product'." msgstr "Le compte de charge doit être renseigné sur la configuration de l'import de facture du fournisseur '%s' qui a une méthode pour les lignes de facture réglé sur 'aucun article'." -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:264 +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:268 #, python-format -msgid "The analysis of the PDF invoice returned '%s' as supplier VAT number. But there are no supplier with this VAT number in Odoo." +msgid "The analysis of the invoice returned '%s' as supplier VAT number. But there are no supplier with this VAT number in Odoo." msgstr "L'analyse automatique de la facture PDF a retourné '%s' comme numéro de TVA du fournisseur. Mais il n'y a aucun fournisseur avec ce numéro de TVA dans Odoo." -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:453 +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:461 #, python-format -msgid "The analysis of the PDF invoice returned '%s' as the currency ISO code. But there are no currency with that name in Odoo." +msgid "The analysis of the invoice returned '%s' as the currency ISO code. But there are no currency with that name in Odoo." msgstr "L'analyse de la facture PDF a retourné '%s' comme code ISO pour la devise. Mais il n'y a aucune devise avec ce code ISO dans Odoo." -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:464 +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:472 #, python-format -msgid "The analysis of the PDF invoice returned '%s' as the currency symbol. But there are no currency with that symbol in Odoo." +msgid "The analysis of the invoice returned '%s' as the currency symbol. But there are no currency with that symbol in Odoo." msgstr "L'analyse de la facture PDF a retourné '%s' comme symbole pour la devise. Mais il n'y a aucune devise avec ce symbole dans Odoo." -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:326 +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:334 #, python-format msgid "The bank account IBAN %s has been automatically added on the supplier %s" msgstr "Le compte bancaire IBAN %s a été automatiquement ajouté sur le fournisseur %s" -#. module: account_invoice_pdf_import +#. module: account_invoice_import #: help:account.invoice.import.config,invoice_line_method:0 -msgid "The multi-line methods will only work for PDF invoices that have an embedded XML file (which is not very common today). The 'Multi Line, Auto-selected Product' method will only work with ZUGFeRD invoices at Comfort or Extended level, not at Basic level." +msgid "The multi-line methods will not work for PDF invoices that don't have an embedded XML file. The 'Multi Line, Auto-selected Product' method will only work with ZUGFeRD invoices at Comfort or Extended level, not at Basic level." msgstr "Les méthodes multi-ligne ne fonctionneront que sur les factures PDF qui ont un fichier XML embarqué (ce qui n'est pas encore très répandu). La méthode 'Multi-ligne, article auto-sélectionné' ne fonctionnera qu'avec les factures ZUGFeRD au niveau Comfort ou Extended, mais pas au niveau Basic." -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:585 +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:594 #, python-format msgid "The total amount is different from the untaxed amount, but no tax has been configured !" msgstr "Le montant TTC est différent du montant HT, mais aucune taxe n'a été configurée !" -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:215 +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:219 #, python-format msgid "This PDF invoice doesn't match a known template of the invoice2data lib." msgstr "Cette facture PDF ne correspond à aucun modèle existant de la librairie invoice2data." -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:536 +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:545 #, python-format msgid "This invoice already exists in Odoo. It's Supplier Invoice Number is '%s' and it's Odoo number is '%s'" msgstr "Cette facture existe déjà dans Odoo. Son numéro de facture fournisseur est '%s' et son numéro Odoo est '%s'" -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:604 +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:613 #, python-format -msgid "This invoice has been created automatically via PDF import" -msgstr "Cette facture a été créé automatiquement par import du fichier PDF" +msgid "This invoice has been created automatically via file import" +msgstr "Cette facture a été créé automatiquement par import de fichier" -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:649 +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:658 #, python-format -msgid "This invoice has been updated automatically via PDF import" -msgstr "Cette facture a été mise-à-jour automatiquement par import du fichier PDF" +msgid "This invoice has been updated automatically via file import" +msgstr "Cette facture a été mise-à-jour automatiquement par import de fichier" -#. module: account_invoice_pdf_import -#: field:account.invoice.pdf.import,amount_total:0 +#. module: account_invoice_import +#: field:account.invoice.import,amount_total:0 msgid "Total" msgstr "Total TTC" -#. module: account_invoice_pdf_import -#: field:account.invoice.pdf.import,amount_untaxed:0 +#. module: account_invoice_import +#: field:account.invoice.import,amount_untaxed:0 msgid "Total Untaxed" msgstr "Total HT" -#. module: account_invoice_pdf_import -#: selection:account.invoice.pdf.import,state:0 +#. module: account_invoice_import +#: selection:account.invoice.import,state:0 msgid "Update" msgstr "Mettre à jour" -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form msgid "Update Existing" msgstr "Mettre à jour une existante" -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form -msgid "Upload below the supplier invoice or refund as PDF file. When you click on the Import button:" -msgstr "Chargez ci-dessous le fichier PDF de la facture ou avoir fournisseur. Quand vous cliquerez sur le bouton Importer :" +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form +msgid "Upload below the supplier invoice or refund as PDF or XML file. When you click on the Import button:" +msgstr "Chargez ci-dessous le fichier PDF ou XML de la facture ou avoir fournisseur. Quand vous cliquerez sur le bouton Importer :" -#. module: account_invoice_pdf_import -#: model:ir.model,name:account_invoice_pdf_import.model_account_invoice_pdf_import -msgid "Wizard to import supplier invoices as PDF" +#. module: account_invoice_import +#: model:ir.model,name:account_invoice_import.model_account_invoice_import +msgid "Wizard to import supplier invoices/refunds" msgstr "Assistant pour importer les PDF de facture fournisseur" -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:359 +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:367 #, python-format msgid "You have selected a Multi Line method for this import but Odoo could not extract/read any XML file inside the PDF invoice." msgstr "Vous avez sélectionné une méthode multi-ligne mais Odoo n'a pas pu extraire/lire de fichier XML embarqué dans la facture PDF." -#. module: account_invoice_pdf_import -#: code:addons/account_invoice_pdf_import/wizard/account_invoice_pdf_import.py:633 +#. module: account_invoice_import +#: code:addons/account_invoice_import/wizard/account_invoice_import.py:642 #, python-format msgid "You must select a supplier invoice or refund to update" -msgstr "Vous devez sélectionner une facture ou avoir fournisseur à mettre à jour" +msgstr "Vous devez sélectionner une facture ou un avoir fournisseur à mettre à jour" -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form msgid "ZUGFeRD" msgstr "ZUGFeRD" -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form msgid "invoice2data" msgstr "invoice2data" -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form msgid "library to read the text of the PDF and get the information. It will work only if the invoice2data library has a template for the invoices of that supplier." msgstr "pour lire le texte contenu dans le PDF et extraire les informations. Cela ne fonctionnera que si la librairie invoice2data a un modèle pour ce fournisseur." -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form msgid "specifications)." msgstr ")." -#. module: account_invoice_pdf_import -#: view:account.invoice.pdf.import:account_invoice_pdf_import.account_invoice_pdf_import_form +#. module: account_invoice_import +#: view:account.invoice.import:account_invoice_import.account_invoice_import_form msgid "standard (an implementation of the" msgstr " (une implémentation des spécifications" From c22282cbefb5b0c0b9ba0c67047117648875302f Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sat, 9 Jan 2016 10:32:35 +0100 Subject: [PATCH 003/176] Add instructions to use my PPA for poppler-utils on Ubuntu 14.04 LTS + instructions OCR --- account_invoice_import/README.rst | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/account_invoice_import/README.rst b/account_invoice_import/README.rst index 184898ee81..874caed0af 100644 --- a/account_invoice_import/README.rst +++ b/account_invoice_import/README.rst @@ -42,7 +42,23 @@ This librairy requires the *pdftotext* utility, which is available on most Linux sudo apt-get install poppler-utils -For some suppliers, it may be important to have a recent version of poppler-utils, to have a better support for accents. For example, the invoices of Free mobile work fine with poppler-utils version 0.33.0, but don't work with poppler-utils version 0.24.5 when the month name has accents (Décembre, which is December in French). +For some suppliers, it may be important to have a recent version of poppler-utils, to have a better support for accents. For example, the invoices of Free mobile work fine with poppler-utils version 0.33.0, but don't work with poppler-utils version 0.24.5 when the month name has accents (Décembre for example, which is December in French). + +If Odoo runs on Ubuntu 14.04 LTS, you will have `poppler-utils 0.24.5 `_ which doesn't have a good support of accents. To make it easy to solve this issue, I setup a Personal Package Archives (PPA) with a backport of a recent version poppler-utils for Ubuntu 14.04 LTS. To deploy it, run: + +.. code:: + + sudo add-apt-repository ppa:alexis-via/poppler-utils-backport + sudo apt-get update + sudo apt-get install poppler-utils + +After that, the package poppler-utils should be in version *0.38.0-0ubuntu1~ubuntu14.04.1~ppa1*. + +If you want the invoice2data library to fallback on OCR if the PDF doesn't contain text (only a very small minority of PDF invoices are image-based and require OCR), you should also install `Imagemagick `_ (to get the *convert* utility to convert PDF to TIFF) and `Tesseract OCR `_ : + +.. code:: + + sudo add-get install imagemagick tesseract-ocr French users should also install the module *l10n_fr_invoice_pdf_import* available in the `French localization `_. From e858f3039837506a5a7c64995311f36f0795ba3a Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Tue, 19 Jan 2016 22:31:59 +0100 Subject: [PATCH 004/176] Add support for direct import of XML files (YAML test provided) Rename test/pdf/ to test/invoices/ to host XML invoices too --- account_invoice_import/README.rst | 3 +- account_invoice_import/test/free.yml | 4 +- .../ZUGFeRD_1p0_BASIC_Einfach.pdf | Bin ...p0_COMFORT_Einfach.pdf-ZUGFeRD-invoice.xml | 171 ++++++++++++++++++ .../invoice_free_fiber_201507.pdf | Bin account_invoice_import/test/zugferd.yml | 39 +++- .../wizard/account_invoice_import.py | 28 ++- 7 files changed, 234 insertions(+), 11 deletions(-) rename account_invoice_import/test/{pdf => invoices}/ZUGFeRD_1p0_BASIC_Einfach.pdf (100%) create mode 100644 account_invoice_import/test/invoices/ZUGFeRD_1p0_COMFORT_Einfach.pdf-ZUGFeRD-invoice.xml rename account_invoice_import/test/{pdf => invoices}/invoice_free_fiber_201507.pdf (100%) diff --git a/account_invoice_import/README.rst b/account_invoice_import/README.rst index 874caed0af..03ab234903 100644 --- a/account_invoice_import/README.rst +++ b/account_invoice_import/README.rst @@ -18,7 +18,8 @@ For example, there is already a standard in Germany called `ZUGFeRD + + + true + + urn:ferd:CrossIndustryDocument:invoice:1p0:comfort + + + + 471102 + RECHNUNG + 380 + 20130305 + + Rechnung gemäß Bestellung vom 01.03.2013. + + + Lieferant GmbH +Lieferantenstraße 20 +80333 München +Deutschland +Geschäftsführer: Hans Muster +Handelsregisternummer: H A 123 + +REG + + + + + + 4000001123452 + Lieferant GmbH + + 80333 + Lieferantenstraße 20 + München + DE + + + 201/113/40209 + + + DE123456789 + + + + GE2020211 + 4000001987658 + Kunden AG Mitte + + Hans Muster + + + 69876 + Kundenstraße 15 + Frankfurt + DE + + + + + + 20130305 + + + + 2013-471102 + EUR + + 31 + Überweisung + + DE08700901001234567890 + + + GENODEF1M04 + + + + 19.25 + VAT + 275.00 + S + 7.00 + + + 37.62 + VAT + 198.00 + S + 19.00 + + + Zahlbar innerhalb 30 Tagen netto bis 04.04.2013, 3% Skonto innerhalb 10 Tagen bis 15.03.2013 + 20130404 + + + 473.00 + 0.00 + 0.00 + 473.00 + 56.87 + 529.87 + 0.00 + 529.87 + + + + + 1 + + + + 9.9000 + + + 9.9000 + + + + 20.0000 + + + + VAT + S + 19.00 + + + 198.00 + + + + 4012345001235 + TB100A4 + Trennblätter A4 + + + + + 2 + + + + 5.5000 + + + 5.5000 + + + + 50.0000 + + + + VAT + S + 7.00 + + + 275.00 + + + + 4000050986428 + ARNR2 + Joghurt Banane + + + + diff --git a/account_invoice_import/test/pdf/invoice_free_fiber_201507.pdf b/account_invoice_import/test/invoices/invoice_free_fiber_201507.pdf similarity index 100% rename from account_invoice_import/test/pdf/invoice_free_fiber_201507.pdf rename to account_invoice_import/test/invoices/invoice_free_fiber_201507.pdf diff --git a/account_invoice_import/test/zugferd.yml b/account_invoice_import/test/zugferd.yml index 43fc39a256..6c23f1e31e 100644 --- a/account_invoice_import/test/zugferd.yml +++ b/account_invoice_import/test/zugferd.yml @@ -27,12 +27,12 @@ !python {model: account.invoice.import}: | import base64 from openerp.tools import file_open - f = file_open('account_invoice_import/test/pdf/ZUGFeRD_1p0_BASIC_Einfach.pdf', 'rb') + f = file_open('account_invoice_import/test/invoices/ZUGFeRD_1p0_BASIC_Einfach.pdf', 'rb') pdf_file = f.read() wiz_id = self.create(cr, uid, { 'invoice_file': base64.b64encode(pdf_file), 'invoice_filename': 'ZUGFeRD_1p0_BASIC_Einfach.pdf', - }, context=context), + }, context=context) f.close() self.import_invoice(cr, uid, wiz_id, context=context) - @@ -53,3 +53,38 @@ assert inv.journal_id.type == 'purchase', 'Wrong journal' assert float_compare(inv.check_total, 235.62, precision_digits=2) == 0, 'Wrong check_total' assert float_compare(inv.amount_untaxed, 198.00, precision_digits=2) == 0, 'Wrong untaxed amount' + # Delete invoice because all Zugferd tests use the same inv number + self.unlink(cr, uid, inv_ids, context=context) +- + Now try to import XML file directly +- + !python {model: account.invoice.import}: | + import base64 + from openerp.tools import file_open + f = file_open('account_invoice_import/test/invoices/ZUGFeRD_1p0_COMFORT_Einfach.pdf-ZUGFeRD-invoice.xml', 'rb') + xml_file = f.read() + wiz_id = self.create(cr, uid, { + 'invoice_file': base64.b64encode(xml_file), + 'invoice_filename': 'ZUGFeRD_1p0_COMFORT_Einfach.pdf-ZUGFeRD-invoice.xml', + }, context=context) + f.close() + self.import_invoice(cr, uid, wiz_id, context=context) +- + Check result of invoice creation from XML file +- + !python {model: account.invoice}: | + from openerp.tools import float_compare + inv_ids = self.search(cr, uid, [ + ('state', '=', 'draft'), + ('type', '=', 'in_invoice'), + ('supplier_invoice_number', '=', '471102') + ], context=context) + assert len(inv_ids) == 1, 'Supplier draft invoice has not been created' + inv = self.browse(cr, uid, inv_ids[0], context=context) + assert inv.type == 'in_invoice', 'Wrong invoice type' + assert inv.date_invoice == '2013-03-05', 'Wrong invoice date' + assert inv.partner_id.id == ref('lieferant'), 'Wrong supplier on invoice' + assert inv.journal_id.type == 'purchase', 'Wrong journal' + assert float_compare(inv.check_total, 529.87, precision_digits=2) == 0, 'Wrong check_total' + assert float_compare(inv.amount_untaxed, 473.00, precision_digits=2) == 0, 'Wrong untaxed amount' + self.unlink(cr, uid, inv_ids, context=context) diff --git a/account_invoice_import/wizard/account_invoice_import.py b/account_invoice_import/wizard/account_invoice_import.py index 6ef270675a..e37721297a 100644 --- a/account_invoice_import/wizard/account_invoice_import.py +++ b/account_invoice_import/wizard/account_invoice_import.py @@ -35,6 +35,7 @@ from pdfminer.pdftypes import resolve1 from lxml import etree import StringIO +import mimetypes logger = logging.getLogger(__name__) @@ -95,6 +96,12 @@ def parse_invoice_with_embedded_xml(self, file_data): xml_declaration=True)) return self.parse_cii_xml(xml_root) + @api.model + def parse_xml_invoice(self, file_data): + logger.debug('Starting to parse XML file') + xml_root = etree.fromstring(file_data) + return self.parse_cii_xml(xml_root) + @api.model def parse_cii_xml(self, xml_root): """Parse Core Industry Invoice XML file""" @@ -482,12 +489,21 @@ def parse_invoice(self): self.ensure_one() file_data = base64.b64decode(self.invoice_file) parsed_inv = {} - try: - parsed_inv = self.parse_invoice_with_embedded_xml(file_data) - except: - pass - if not parsed_inv: - parsed_inv = self.parse_invoice_with_invoice2data(file_data) + filetype = mimetypes.guess_type(self.invoice_filename) + logger.debug('Invoice mimetype: %s', filetype) + if filetype and filetype[0] == 'application/xml': + try: + parsed_inv = self.parse_xml_invoice(file_data) + except: + raise UserError(_('Failed to parse this XML file')) + # Fallback on PDF + else: + try: + parsed_inv = self.parse_invoice_with_embedded_xml(file_data) + except: + pass + if not parsed_inv: + parsed_inv = self.parse_invoice_with_invoice2data(file_data) prec_ac = self.env['decimal.precision'].precision_get('Account') prec_pp = self.env['decimal.precision'].precision_get('Product Price') prec_uom = self.env['decimal.precision'].precision_get( From fdc401d5927224849b6339e378331057ad44b0d3 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Wed, 20 Jan 2016 16:09:33 +0100 Subject: [PATCH 005/176] Sometimes, it's easier to extract the total tax amount instead of the total untaxed (depends on invoice layout) --- account_invoice_import/wizard/account_invoice_import.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/account_invoice_import/wizard/account_invoice_import.py b/account_invoice_import/wizard/account_invoice_import.py index e37721297a..1653604577 100644 --- a/account_invoice_import/wizard/account_invoice_import.py +++ b/account_invoice_import/wizard/account_invoice_import.py @@ -229,6 +229,8 @@ def parse_invoice_with_invoice2data(self, file_data): # rewrite a few keys res['amount_total'] = res['amount'] res.pop('amount') + if 'amount_tax' in res and not 'amount_untaxed' in res: + res['amount_untaxed'] = res['amount_total'] - res['amount_tax'] # convert datetime to string, to make it json serializable for key, value in res.iteritems(): if value and isinstance(value, datetime): From 85858396c883f12efe2b26b47b165234cb903e4e Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Fri, 22 Jan 2016 14:21:13 +0100 Subject: [PATCH 006/176] Add an explaination about date parsing in invoice2data --- account_invoice_import/README.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/account_invoice_import/README.rst b/account_invoice_import/README.rst index 03ab234903..d82c29d32e 100644 --- a/account_invoice_import/README.rst +++ b/account_invoice_import/README.rst @@ -61,6 +61,14 @@ If you want the invoice2data library to fallback on OCR if the PDF doesn't conta sudo add-get install imagemagick tesseract-ocr +For date parsing, the invoice2data library will try both *en_US* and the default locale of the server. So you should make sure that the locale of your language is installed on the server: + +.. code:: + + locale -a + +You can get the default locale with the command **locale**. On Debian/Ubuntu, you can change the default locale by editing the configuration file */etc/default/locale*. + French users should also install the module *l10n_fr_invoice_pdf_import* available in the `French localization `_. Configuration From 6ddd301d0c32d68a9fbb99822b1652d751e40a82 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Fri, 22 Jan 2016 16:13:41 +0100 Subject: [PATCH 007/176] Add optional support for start/end dates --- .../wizard/account_invoice_import.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/account_invoice_import/wizard/account_invoice_import.py b/account_invoice_import/wizard/account_invoice_import.py index 1653604577..4103150369 100644 --- a/account_invoice_import/wizard/account_invoice_import.py +++ b/account_invoice_import/wizard/account_invoice_import.py @@ -231,6 +231,9 @@ def parse_invoice_with_invoice2data(self, file_data): res.pop('amount') if 'amount_tax' in res and not 'amount_untaxed' in res: res['amount_untaxed'] = res['amount_total'] - res['amount_tax'] + elif not 'amount_untaxed' in res and not 'amount_tax' in res: + # For invoices that never have taxes + res['amount_untaxed'] = res['amount_total'] # convert datetime to string, to make it json serializable for key, value in res.iteritems(): if value and isinstance(value, datetime): @@ -243,6 +246,8 @@ def parse_invoice_with_invoice2data(self, file_data): # 'currency_symbol': u'€', # The one or the other # 'date': '2015-10-08', # Must be a string # 'date_due': '2015-11-07', + # 'date_start': '2015-10-01', # for services over a period of time + # 'date_end': '2015-10-31', # 'amount_untaxed': 10.0, # 'amount_total': 12.0, # Total with taxes # 'vat': 'FR25499247138', @@ -370,6 +375,7 @@ def _prepare_create_invoice_vals(self, parsed_inv): elif not il_vals.get('name'): il_vals['name'] = _('MISSING DESCRIPTION') self.set_1line_price_unit_and_quantity(il_vals, parsed_inv) + self.set_1line_start_end_dates(il_vals, parsed_inv) vals['invoice_line'].append((0, 0, il_vals)) elif config.invoice_line_method.startswith('nline'): if not parsed_inv.get('lines'): @@ -457,6 +463,19 @@ def set_1line_price_unit_and_quantity(self, il_vals, parsed_inv): if not first_tax.price_include: il_vals['price_unit'] = parsed_inv.get('amount_untaxed') + @api.model + def set_1line_start_end_dates(self, il_vals, parsed_inv): + """Only useful if you have installed the module account_cutoff_prepaid + from https://github.com/OCA/account-closing""" + fakeiline = self.env['account.invoice.line'].browse(False) + if ( + parsed_inv.get('date_start') and + parsed_inv.get('date_end') and + hasattr(fakeiline, 'start_date') and + hasattr(fakeiline, 'end_date')): + il_vals['start_date'] = parsed_inv.get('date_start') + il_vals['end_date'] = parsed_inv.get('date_end') + @api.model def _get_currency(self, parsed_inv): currency = False From c6c6d65596563dd528bde013955de6858fd6b262 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 28 Jan 2016 00:24:29 +0100 Subject: [PATCH 008/176] Adapt to latest changes in invoice2data PEP8 stuff --- .../wizard/account_invoice_import.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/account_invoice_import/wizard/account_invoice_import.py b/account_invoice_import/wizard/account_invoice_import.py index 4103150369..2a982c0374 100644 --- a/account_invoice_import/wizard/account_invoice_import.py +++ b/account_invoice_import/wizard/account_invoice_import.py @@ -227,11 +227,13 @@ def parse_invoice_with_invoice2data(self, file_data): "This PDF invoice doesn't match a known template of " "the invoice2data lib.")) # rewrite a few keys - res['amount_total'] = res['amount'] - res.pop('amount') - if 'amount_tax' in res and not 'amount_untaxed' in res: + res['amount_total'] = res.pop('amount') + # If you crash here, you should just update invoice2data to the + # latest version from github + res['currency_iso'] = res.pop('currency') + if 'amount_tax' in res and 'amount_untaxed' not in res: res['amount_untaxed'] = res['amount_total'] - res['amount_tax'] - elif not 'amount_untaxed' in res and not 'amount_tax' in res: + elif 'amount_untaxed' not in res and 'amount_tax' not in res: # For invoices that never have taxes res['amount_untaxed'] = res['amount_total'] # convert datetime to string, to make it json serializable From f5baecad5ba6a8cda11dfae1b49c436a812c0cca Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 28 Jan 2016 13:44:56 +0100 Subject: [PATCH 009/176] Only change name_get of invoice for our use-case, not everywhere --- account_invoice_import/account_invoice.py | 17 ++++++++++------- .../wizard/account_invoice_import_view.xml | 4 +++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/account_invoice_import/account_invoice.py b/account_invoice_import/account_invoice.py index 15cd9b41e1..3acda8ea8d 100644 --- a/account_invoice_import/account_invoice.py +++ b/account_invoice_import/account_invoice.py @@ -30,10 +30,13 @@ class AccountInvoice(models.Model): def name_get(self): """Add amount_untaxed in name_get of invoices""" res = super(AccountInvoice, self).name_get() - new_res = [] - for (inv_id, name) in res: - inv = self.browse(inv_id) - name += _(' Amount w/o tax: %s %s') % ( - inv.amount_untaxed, inv.currency_id.name) - new_res.append((inv_id, name)) - return new_res + if self._context.get('invoice_show_amount'): + new_res = [] + for (inv_id, name) in res: + inv = self.browse(inv_id) + name += _(' Amount w/o tax: %s %s') % ( + inv.amount_untaxed, inv.currency_id.name) + new_res.append((inv_id, name)) + return new_res + else: + return res diff --git a/account_invoice_import/wizard/account_invoice_import_view.xml b/account_invoice_import/wizard/account_invoice_import_view.xml index 56f7126d4a..467ff40e32 100644 --- a/account_invoice_import/wizard/account_invoice_import_view.xml +++ b/account_invoice_import/wizard/account_invoice_import_view.xml @@ -44,7 +44,8 @@ + domain="[('state', '=', 'draft'), ('type', 'in', ('in_invoice', 'in_refund')), ('commercial_partner_id', '=', partner_id), ('type', '=', invoice_type)]" + context="{'invoice_show_amount': True}"/>