From f3a16b46894b1e184f3a4a997eb1ca7a6faeee34 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Thu, 25 Nov 2021 13:14:56 +0100 Subject: [PATCH 001/124] 4.2.1-initial --- .github/workflows/gradle.yml | 2 +- CHANGELOG.md | 2 ++ README.md | 2 +- build.gradle | 2 +- resources/META-INF/plugin.xml | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 88e79f495..a383bb3e5 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -5,7 +5,7 @@ name: Run automated tests on: pull_request: - branches: [ master, 4.2.0-develop ] + branches: [ master, 4.2.1-develop ] jobs: build-linux: diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d8e21220..f9feb4f36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0). +## 4.2.1 + ## 4.2.0 ### Added diff --git a/README.md b/README.md index 89214bcf7..5cd319777 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ 1. Check out this repository 1. Open a folder with the project in the IntelliJ Ultimate using the `open` action button. -1. Make sure that you on the latest develop branch (e.g `4.2.0-develop`) +1. Make sure that you on the latest develop branch (e.g `4.2.1-develop`) 1. Right-click on the `build.gradle` file, choose "Import Gradle project" (if this is not exist look for "Build module ''") (you need to have Gradle plugin installed) 1. Check if the right SDK version is used for the project. - Current Java version for the project is **java 11**, so you should additionally download **SDK 11** and choose it in the module settings: `Right click by the project root > Open Module Settings > Project Settings > Project > Project SDK` diff --git a/build.gradle b/build.gradle index 366739199..d9a1e7a3d 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ repositories { } group 'com.magento.idea' -version '4.2.0' +version '4.2.1' apply plugin: 'org.jetbrains.intellij' apply plugin: 'java' diff --git a/resources/META-INF/plugin.xml b/resources/META-INF/plugin.xml index c22b26d43..28297c0f6 100644 --- a/resources/META-INF/plugin.xml +++ b/resources/META-INF/plugin.xml @@ -7,7 +7,7 @@ com.magento.idea.magento2plugin Magento PhpStorm - 4.2.0 + 4.2.1 Magento Inc. Date: Thu, 25 Nov 2021 20:45:46 +0100 Subject: [PATCH 002/124] Bugfix-798: Fixed ArrayIndexOutOfBoundsException exception when used Copy Path/Reference action on the requirejs-config.js file --- .../actions/CopyMagentoPath.java | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/CopyMagentoPath.java b/src/com/magento/idea/magento2plugin/actions/CopyMagentoPath.java index ac79aebbe..1e1bc0be5 100644 --- a/src/com/magento/idea/magento2plugin/actions/CopyMagentoPath.java +++ b/src/com/magento/idea/magento2plugin/actions/CopyMagentoPath.java @@ -21,6 +21,7 @@ import org.jetbrains.annotations.Nullable; public class CopyMagentoPath extends CopyPathProvider { + public static final String PHTML_EXTENSION = "phtml"; public static final String JS_EXTENSION = "js"; public static final String CSS_EXTENSION = "css"; @@ -56,23 +57,23 @@ private boolean isNotValidFile(final VirtualFile virtualFile) { || virtualFile != null && !acceptedTypes.contains(virtualFile.getExtension()); } - @Nullable @Override - public String getPathToElement( - @NotNull final Project project, - @Nullable final VirtualFile virtualFile, - @Nullable final Editor editor + public @Nullable String getPathToElement( + final @NotNull Project project, + final @Nullable VirtualFile virtualFile, + final @Nullable Editor editor ) { if (virtualFile == null) { return null; } - final PsiFile file - = PsiManager.getInstance(project).findFile(virtualFile); + final PsiFile file = PsiManager.getInstance(project).findFile(virtualFile); + if (file == null) { return null; } final PsiDirectory directory = file.getContainingDirectory(); final String moduleName = GetModuleNameByDirectoryUtil.execute(directory, project); + if (moduleName == null) { return null; } @@ -89,8 +90,14 @@ public String getPathToElement( } else { return fullPath.toString(); } + int endIndex; - final int endIndex = getIndexOf(paths, fullPath, paths[++index]); + try { + endIndex = getIndexOf(paths, fullPath, paths[++index]); + } catch (ArrayIndexOutOfBoundsException exception) { + // endIndex could not be found. + return ""; + } final int offset = paths[index].length(); fullPath.replace(0, endIndex + offset, ""); @@ -98,6 +105,15 @@ public String getPathToElement( return moduleName + SEPARATOR + fullPath; } + /** + * Get index where web|template path starts in the fullPath. + * + * @param paths String[] + * @param fullPath StringBuilder + * @param path String + * + * @return int + */ private int getIndexOf(final String[] paths, final StringBuilder fullPath, final String path) { return fullPath.lastIndexOf(path) == -1 ? getIndexOf(paths, fullPath, paths[++index]) From 376676870fbad2335087ac5bc89e5b388a0fb24f Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Fri, 26 Nov 2021 16:33:38 +0100 Subject: [PATCH 003/124] Bug-667: Fixed dialog disposition issue --- .../generation/dialog/AbstractDialog.java | 12 ++++- .../dialog/CreateAPluginDialog.java | 44 +++++++++---------- .../dialog/CreateAnObserverDialog.java | 38 ++++++++-------- .../dialog/InjectAViewModelDialog.java | 6 ++- .../generation/dialog/NewBlockDialog.java | 7 ++- .../dialog/NewCLICommandDialog.java | 7 ++- .../dialog/NewControllerDialog.java | 8 ++-- .../generation/dialog/NewCronGroupDialog.java | 8 ++-- .../generation/dialog/NewCronjobDialog.java | 3 +- .../generation/dialog/NewDataModelDialog.java | 2 +- .../generation/dialog/NewDbSchemaDialog.java | 25 +++++------ .../dialog/NewEmailTemplateDialog.java | 6 ++- .../generation/dialog/NewEntityDialog.java | 2 +- .../dialog/NewGraphQlResolverDialog.java | 7 ++- .../dialog/NewInterfaceForServiceDialog.java | 18 ++++---- .../dialog/NewMessageQueueDialog.java | 3 +- .../generation/dialog/NewModelsDialog.java | 13 +++--- .../generation/dialog/NewModuleDialog.java | 7 ++- .../dialog/NewUiComponentFormDialog.java | 20 ++++----- .../dialog/NewUiComponentGridDialog.java | 22 +++++----- .../generation/dialog/NewViewModelDialog.java | 7 ++- .../dialog/NewWebApiDeclarationDialog.java | 15 +++---- .../OverrideClassByAPreferenceDialog.java | 3 +- .../dialog/OverrideInThemeDialog.java | 14 +++--- .../magento2uct/ui/ConfigurationDialog.java | 2 +- .../idea/magento2uct/ui/ReindexDialog.java | 2 +- 26 files changed, 144 insertions(+), 157 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/AbstractDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/AbstractDialog.java index c793f6fcc..4ea9b7d4b 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/AbstractDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/AbstractDialog.java @@ -59,8 +59,18 @@ protected void centerDialog(final AbstractDialog dialog) { dialog.setLocation(coordinateX, coordinateY); } + /** + * Default on cancel action. + */ protected void onCancel() { - this.setVisible(false); + this.exit(); + } + + /** + * Right way to hide dialog window. + */ + protected void exit() { + dispose(); } /** diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAPluginDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAPluginDialog.java index 0bec74d19..c2257e1ae 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAPluginDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAPluginDialog.java @@ -157,30 +157,28 @@ private void fillTargetAreaOptions() { } protected void onOK() { - if (!validateFormFields()) { - return; + if (validateFormFields()) { + new PluginClassGenerator(new PluginFileData( + getPluginDirectory(), + getPluginClassName(), + getPluginType(), + getPluginModule(), + targetClass, + targetMethod, + getPluginClassFqn(), + getNamespace() + ), project).generate(CreateAPluginAction.ACTION_NAME, true); + + new PluginDiXmlGenerator(new PluginDiXmlData( + getPluginArea(), + getPluginModule(), + targetClass, + getPluginSortOrder(), + getPluginName(), + getPluginClassFqn() + ), project).generate(CreateAPluginAction.ACTION_NAME); } - new PluginClassGenerator(new PluginFileData( - getPluginDirectory(), - getPluginClassName(), - getPluginType(), - getPluginModule(), - targetClass, - targetMethod, - getPluginClassFqn(), - getNamespace() - ), project).generate(CreateAPluginAction.ACTION_NAME, true); - - new PluginDiXmlGenerator(new PluginDiXmlData( - getPluginArea(), - getPluginModule(), - targetClass, - getPluginSortOrder(), - getPluginName(), - getPluginClassFqn() - ), project).generate(CreateAPluginAction.ACTION_NAME); - - this.setVisible(false); + exit(); } public String getPluginName() { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAnObserverDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAnObserverDialog.java index 920c7e233..223ecee01 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAnObserverDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAnObserverDialog.java @@ -150,27 +150,25 @@ private void fillTargetAreaOptions() { * Perform code generation using input data. */ private void onOK() { - if (!validateFormFields()) { - return; + if (validateFormFields()) { + new ObserverClassGenerator(new ObserverFileData( + getObserverDirectory(), + getObserverClassName(), + getObserverModule(), + targetEvent, + getObserverClassFqn(), + getNamespace() + ), project).generate(CreateAnObserverAction.ACTION_NAME, true); + + new ObserverEventsXmlGenerator(new ObserverEventsXmlData( + getObserverArea(), + getObserverModule(), + targetEvent, + getObserverName(), + getObserverClassFqn() + ), project).generate(CreateAPluginAction.ACTION_NAME); } - new ObserverClassGenerator(new ObserverFileData( - getObserverDirectory(), - getObserverClassName(), - getObserverModule(), - targetEvent, - getObserverClassFqn(), - getNamespace() - ), project).generate(CreateAnObserverAction.ACTION_NAME, true); - - new ObserverEventsXmlGenerator(new ObserverEventsXmlData( - getObserverArea(), - getObserverModule(), - targetEvent, - getObserverName(), - getObserverClassFqn() - ), project).generate(CreateAPluginAction.ACTION_NAME); - - this.setVisible(false); + exit(); } public String getObserverClassName() { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/InjectAViewModelDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/InjectAViewModelDialog.java index 8252be35c..19bd8b1ec 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/InjectAViewModelDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/InjectAViewModelDialog.java @@ -138,6 +138,7 @@ protected void updateArgumentText() { protected void onOK() { if (!validateFormFields()) { + exit(); return; } final String moduleName = GetModuleNameByDirectoryUtil.execute( @@ -168,6 +169,7 @@ protected void onOK() { JOptionPane.ERROR_MESSAGE ); + exit(); return; } @@ -176,9 +178,9 @@ protected void onOK() { this.getViewModelArgumentName(), XsiTypes.object.toString(), namespaceBuilder.getClassFqn() - ).generate(targetBlockTag); + ).generate(targetBlockTag); - this.setVisible(false); + exit(); } public String getViewModelClassName() { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.java index e215d7364..6bc982cc5 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.java @@ -111,11 +111,10 @@ public static void open(final Project project, final PsiDirectory directory) { } protected void onOK() { - if (!validateFormFields()) { - return; + if (validateFormFields()) { + generateFile(); } - generateFile(); - this.setVisible(false); + exit(); } private PsiFile generateFile() { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.java index def6d7eaa..ef139e58e 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.java @@ -179,11 +179,10 @@ public String getCLICommandClassFqn() { } private void onOK() { - if (!validateFormFields() || !isPHPClassValid()) { - return; + if (validateFormFields() && isPHPClassValid()) { + this.generate(); } - this.generate(); - this.setVisible(false); + exit(); } private Boolean isPHPClassValid() { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.java index 7e1e3627e..c5e88c022 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.java @@ -194,12 +194,10 @@ public static void open(final Project project, final PsiDirectory directory) { } private void onOK() { - if (!validateFormFields()) { - return; + if (validateFormFields()) { + generateFile(); } - - generateFile(); - this.setVisible(false); + exit(); } /** diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.java index 64f76277c..ea37a5a25 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.java @@ -140,12 +140,10 @@ public static void open(final Project project, final PsiDirectory directory) { } private void onOK() { - if (!validateFormFields()) { - return; + if (validateFormFields()) { + generateFile(); } - - generateFile(); - this.setVisible(false); + exit(); } @Override diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java index 4682f9f8e..626bd2de1 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java @@ -281,6 +281,7 @@ private String suggestCronjobName(final String cronjobClassname) { */ private void onOK() { if (!validateFormFields()) { + exit(); return; } @@ -298,7 +299,7 @@ private void onOK() { // todo: catch validation exceptions this.generate(cronjobClassData, crontabXmlData); - this.setVisible(false); + exit(); } /** diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java index 64baf0743..040572b21 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java @@ -145,8 +145,8 @@ private void onOK() { generateDataModelInterfaceFile(); generatePreferenceForInterface(); } - this.setVisible(false); } + exit(); } @Override diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java index 818280fea..b5314a571 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java @@ -135,21 +135,18 @@ private void onOK() { columnsTable.getCellEditor().stopCellEditing(); } - if (!validateFormFields()) { - return; + if (validateFormFields()) { + final DbSchemaXmlData dbSchemaXmlData = new DbSchemaXmlData( + getTableName(), + getTableResource(), + getTableEngine(), + getTableComment(), + getColumns() + ); + generateDbSchemaXmlFile(dbSchemaXmlData); + generateWhitelistJsonFile(dbSchemaXmlData); } - - final DbSchemaXmlData dbSchemaXmlData = new DbSchemaXmlData( - getTableName(), - getTableResource(), - getTableEngine(), - getTableComment(), - getColumns() - ); - generateDbSchemaXmlFile(dbSchemaXmlData); - generateWhitelistJsonFile(dbSchemaXmlData); - - this.setVisible(false); + exit(); } /** diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.java index 9d902e458..2ee468ebf 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.java @@ -206,12 +206,14 @@ private String getModuleName() { private void onOK() { final boolean emailTemplateCanBeDeclared = !this.validator.validate(this); + if (!validateFormFields() || emailTemplateCanBeDeclared) { + exit(); return; } - generateFile(); - this.setVisible(false); + + exit(); } private void generateFile() { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEntityDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEntityDialog.java index 5437b96b7..1eca33353 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEntityDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEntityDialog.java @@ -441,7 +441,7 @@ private void releaseDialogAfterGeneration() { buttonOK.setEnabled(true); if (onOkActionFired.isFinished()) { - this.setVisible(false); + exit(); } } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.java index d5a37c77a..2cb558795 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.java @@ -109,11 +109,10 @@ public static void open(final Project project, final PsiDirectory directory) { } protected void onOK() { - if (!validateFormFields()) { - return; + if (validateFormFields()) { + generateFile(); } - generateFile(); - this.setVisible(false); + exit(); } private PsiFile generateFile() { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewInterfaceForServiceDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewInterfaceForServiceDialog.java index 6c6851cfe..7f4f45ee3 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewInterfaceForServiceDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewInterfaceForServiceDialog.java @@ -170,17 +170,15 @@ private void fillPredefinedValuesAndDisableInputs() { * Fire generation process if all fields are valid. */ private void onOK() { - if (!validateFormFields()) { - return; - } - final WebApiInterfaceData data = getDialogDataObject(); + if (validateFormFields()) { + final WebApiInterfaceData data = getDialogDataObject(); - new WebApiInterfaceGenerator( - data, - project - ).generate(NewWebApiInterfaceAction.ACTION_NAME, true); - - this.setVisible(false); + new WebApiInterfaceGenerator( + data, + project + ).generate(NewWebApiInterfaceAction.ACTION_NAME, true); + } + exit(); } /** diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java index 96d2e52b6..e7954d2c5 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java @@ -244,11 +244,12 @@ private void onOK() { generateTopology(); generatePublisher(); generateHandlerClass(); + if (getConnectionName().equals(MessageQueueConnections.DB.getType())) { generateConsumerClass(); } - this.setVisible(false); } + exit(); } private void generateCommunication() { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.java index 9c91b9389..518522798 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.java @@ -169,15 +169,12 @@ protected void onCancel() { * Process generation. */ private void onOK() { - if (!validateFormFields()) { - return; + if (validateFormFields()) { + generateModelFile(); + generateResourceModelFile(); + generateCollectionFile(); } - - generateModelFile(); - generateResourceModelFile(); - generateCollectionFile(); - - this.setVisible(false); + exit(); } /** diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java index 0e2a18f9e..5ed7cfd66 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java @@ -172,11 +172,10 @@ private void detectPackageName(final @NotNull PsiDirectory initialBaseDir) { } protected void onOK() { - if (!validateFormFields()) { - return; + if (validateFormFields()) { + generateFiles(); } - generateFiles(); - this.setVisible(false); + exit(); } private void generateFiles() { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java index 23e8b62e2..d08e4e3f2 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java @@ -416,18 +416,16 @@ private void onOK() { fields.getCellEditor().stopCellEditing(); } - if (!validateFormFields()) { - return; + if (validateFormFields()) { + generateRoutesXmlFile(); + generateViewControllerFile(); + generateSubmitControllerFile(); + generateDataProviderFile(); + generateLayoutFile(); + generateFormFile(); + generateAclXmlFile(); } - - generateRoutesXmlFile(); - generateViewControllerFile(); - generateSubmitControllerFile(); - generateDataProviderFile(); - generateLayoutFile(); - generateFormFile(); - generateAclXmlFile(); - this.setVisible(false); + exit(); } /** diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.java index d5ec946b7..a6d2e58e9 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.java @@ -303,19 +303,17 @@ protected void onCancel() { } private void onOK() { - if (!validateFormFields()) { - return; + if (validateFormFields()) { + generateViewControllerFile(); + generateLayoutFile(); + generateMenuFile(); + generateAclXmlFile(); + generateRoutesXmlFile(); + generateDataProviderClass(); + generateDataProviderDeclaration(); + generateUiComponentFile(); } - - generateViewControllerFile(); - generateLayoutFile(); - generateMenuFile(); - generateAclXmlFile(); - generateRoutesXmlFile(); - generateDataProviderClass(); - generateDataProviderDeclaration(); - generateUiComponentFile(); - this.setVisible(false); + exit(); } private void setDefaultValues() { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java index 8403927c1..77fea5829 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java @@ -117,11 +117,10 @@ public static void open(final Project project, final PsiDirectory directory) { } protected void onOK() { - if (!validateFormFields()) { - return; + if (validateFormFields()) { + generateFile(); } - generateFile(); - this.setVisible(false); + exit(); } private PsiFile generateFile() { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewWebApiDeclarationDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewWebApiDeclarationDialog.java index d9f06a883..84a361ae4 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewWebApiDeclarationDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewWebApiDeclarationDialog.java @@ -141,16 +141,13 @@ public static void open( * Fire generation process if all fields are valid. */ private void onOK() { - if (!validateFormFields()) { - return; + if (validateFormFields()) { + new WebApiDeclarationGenerator( + getDialogDataObject(), + project + ).generate(NewWebApiDeclarationAction.ACTION_NAME, true); } - - new WebApiDeclarationGenerator( - getDialogDataObject(), - project - ).generate(NewWebApiDeclarationAction.ACTION_NAME, true); - - this.setVisible(false); + exit(); } /** diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideClassByAPreferenceDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideClassByAPreferenceDialog.java index 07d1b1448..d1e7ea551 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideClassByAPreferenceDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideClassByAPreferenceDialog.java @@ -168,6 +168,7 @@ private void fillTargetAreaOptions() { protected void onOK() { if (!validateFormFields()) { + exit(); return; } final PsiFile diXml = new PreferenceDiXmlGenerator(new PreferenceDiXmFileData( @@ -203,7 +204,7 @@ protected void onOK() { isInterface ), project).generate(OverrideClassByAPreferenceAction.ACTION_NAME, true); - this.setVisible(false); + exit(); } public String getPreferenceClassName() { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideInThemeDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideInThemeDialog.java index 5902991fd..205d5c838 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideInThemeDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideInThemeDialog.java @@ -95,15 +95,13 @@ private void onExtend() { } private void onOK() { - if (!validateFormFields()) { - return; - } - - final OverrideInThemeGenerator overrideInThemeGenerator = - new OverrideInThemeGenerator(project); - overrideInThemeGenerator.execute(psiFile, this.getTheme(), this.isOverride()); + if (validateFormFields()) { + final OverrideInThemeGenerator overrideInThemeGenerator = + new OverrideInThemeGenerator(project); - this.setVisible(false); + overrideInThemeGenerator.execute(psiFile, this.getTheme(), this.isOverride()); + } + exit(); } public String getTheme() { diff --git a/src/com/magento/idea/magento2uct/ui/ConfigurationDialog.java b/src/com/magento/idea/magento2uct/ui/ConfigurationDialog.java index d552d6d95..039b430ba 100644 --- a/src/com/magento/idea/magento2uct/ui/ConfigurationDialog.java +++ b/src/com/magento/idea/magento2uct/ui/ConfigurationDialog.java @@ -156,7 +156,7 @@ private void onOK() { ); settingsService.setIgnoreCurrentVersion(ignoreCurrentVersion.isSelected()); - this.setVisible(false); + exit(); } /** diff --git a/src/com/magento/idea/magento2uct/ui/ReindexDialog.java b/src/com/magento/idea/magento2uct/ui/ReindexDialog.java index af1ffb30c..f0f23ab0a 100644 --- a/src/com/magento/idea/magento2uct/ui/ReindexDialog.java +++ b/src/com/magento/idea/magento2uct/ui/ReindexDialog.java @@ -125,7 +125,7 @@ private void onOK() { ); executor.run(); - this.setVisible(false); + exit(); } /** From 0bb3c447161b185284076ef6502817c88d2808fe Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Mon, 29 Nov 2021 13:58:29 +0100 Subject: [PATCH 004/124] Bugfix-765: Code refactoring --- .../php/PluginLineMarkerProvider.java | 170 +++++++++++------- 1 file changed, 108 insertions(+), 62 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/php/PluginLineMarkerProvider.java b/src/com/magento/idea/magento2plugin/linemarker/php/PluginLineMarkerProvider.java index 9b9724b8e..b50d5b94b 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/php/PluginLineMarkerProvider.java +++ b/src/com/magento/idea/magento2plugin/linemarker/php/PluginLineMarkerProvider.java @@ -2,6 +2,7 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + package com.magento.idea.magento2plugin.linemarker.php; import com.intellij.codeInsight.daemon.LineMarkerInfo; @@ -17,33 +18,49 @@ import com.jetbrains.php.lang.psi.elements.PhpClass; import com.magento.idea.magento2plugin.project.Settings; import com.magento.idea.magento2plugin.stubs.indexes.PluginIndex; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; import org.apache.commons.lang.WordUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.*; - public class PluginLineMarkerProvider implements LineMarkerProvider { - @Nullable + + private static final String TOOLTIP_TEXT = "Navigate to plugins"; + private static final int MIN_PLUGIN_METHOD_NAME_LENGTH = 6; + @Override - public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement psiElement) { + public @Nullable LineMarkerInfo getLineMarkerInfo(final @NotNull PsiElement psiElement) { return null; } @Override - public void collectSlowLineMarkers(@NotNull List psiElements, @NotNull Collection> collection) { - if (psiElements.size() > 0) { - if (!Settings.isEnabled(psiElements.get(0).getProject())) { - return; - } + public void collectSlowLineMarkers( + final @NotNull List psiElements, + final @NotNull Collection> collection + ) { + if (psiElements.isEmpty()) { + return; } - PluginClassCache pluginClassCache = new PluginClassCache(); - ClassPluginCollector classPluginCollector = new ClassPluginCollector(pluginClassCache); - MethodPluginCollector methodPluginCollector = new MethodPluginCollector(pluginClassCache); - for (PsiElement psiElement : psiElements) { + if (!Settings.isEnabled(psiElements.get(0).getProject())) { + return; + } + final PluginClassCache pluginClassCache = new PluginClassCache(); + final ClassPluginCollector classPluginCollector = new ClassPluginCollector( + pluginClassCache + ); + final MethodPluginCollector methodPluginCollector = new MethodPluginCollector( + pluginClassCache + ); + + for (final PsiElement psiElement : psiElements) { if (psiElement instanceof PhpClass || psiElement instanceof Method) { - List results; + final List results; if (psiElement instanceof PhpClass) { results = classPluginCollector.collect((PhpClass) psiElement); @@ -51,12 +68,13 @@ public void collectSlowLineMarkers(@NotNull List psiElemen results = methodPluginCollector.collect((Method) psiElement); } - if (results.size() > 0 ) { - collection.add(NavigationGutterIconBuilder - .create(AllIcons.Nodes.Plugin) - .setTargets(results) - .setTooltipText("Navigate to plugins") - .createLineMarkerInfo(PsiTreeUtil.getDeepestFirst(psiElement)) + if (!results.isEmpty()) { + collection.add( + NavigationGutterIconBuilder + .create(AllIcons.Nodes.Plugin) + .setTargets(results) + .setTooltipText(TOOLTIP_TEXT) + .createLineMarkerInfo(PsiTreeUtil.getDeepestFirst(psiElement)) ); } } @@ -64,109 +82,137 @@ public void collectSlowLineMarkers(@NotNull List psiElemen } private static class PluginClassCache { - private HashMap> classPluginsMap = new HashMap>(); - List getPluginsForClass(@NotNull PhpClass phpClass, @NotNull String classFQN) { - List results = new ArrayList<>(); + private final Map> classPluginsMap = new HashMap<>(); + + public List getPluginsForClass(final @NotNull PhpClass phpClass) { + final List pluginsForClass = getPluginsForClass( + phpClass, + phpClass.getPresentableFQN() + ); + + for (final PhpClass parent : phpClass.getSupers()) { + pluginsForClass.addAll(getPluginsForClass(parent)); + } + + return pluginsForClass; + } + public List getPluginsForClass( + final @NotNull PhpClass phpClass, + final @NotNull String classFQN + ) { if (classPluginsMap.containsKey(classFQN)) { return classPluginsMap.get(classFQN); } - List> plugins = FileBasedIndex.getInstance() - .getValues(PluginIndex.KEY, classFQN, GlobalSearchScope.allScope(phpClass.getProject())); + final List> plugins = FileBasedIndex.getInstance() + .getValues( + PluginIndex.KEY, + classFQN, + GlobalSearchScope.allScope(phpClass.getProject()) + ); + final List results = new ArrayList<>(); - if (plugins.size() == 0) { + if (plugins.isEmpty()) { classPluginsMap.put(classFQN, results); + return results; } + final PhpIndex phpIndex = PhpIndex.getInstance(phpClass.getProject()); - PhpIndex phpIndex = PhpIndex.getInstance(phpClass.getProject()); - - for (Set pluginClassNames: plugins) { - for (String pluginClassName: pluginClassNames) { + for (final Set pluginClassNames : plugins) { + for (final String pluginClassName: pluginClassNames) { results.addAll(phpIndex.getClassesByFQN(pluginClassName)); } } classPluginsMap.put(classFQN, results); + return results; } - List getPluginsForClass(@NotNull PhpClass phpClass) - { - List pluginsForClass = getPluginsForClass(phpClass, phpClass.getPresentableFQN()); - for (PhpClass parent: phpClass.getSupers()) { - pluginsForClass.addAll(getPluginsForClass(parent)); + public List getPluginMethods(final List plugins) { + final List methodList = new ArrayList<>(); + + for (final PhpClass plugin: plugins) { + methodList.addAll(getPluginMethods(plugin)); } - return pluginsForClass; + return methodList; } - List getPluginMethods(@NotNull PhpClass plugin) { - List methodList = new ArrayList(); - for (Method method : plugin.getMethods()) { + public List getPluginMethods(final @NotNull PhpClass pluginClass) { + final List methodList = new ArrayList<>(); + + for (final Method method : pluginClass.getMethods()) { if (method.getAccess().isPublic()) { - String pluginMethodName = method.getName(); - if (pluginMethodName.length() > 6) { + final String pluginMethodName = method.getName(); + + if (pluginMethodName.length() > MIN_PLUGIN_METHOD_NAME_LENGTH) { methodList.add(method); } } } - return methodList; - } - List getPluginMethods(List plugins) { - List methodList = new ArrayList(); - for (PhpClass plugin: plugins) { - methodList.addAll(getPluginMethods(plugin)); - } return methodList; } } private static class ClassPluginCollector implements Collector { - private PluginLineMarkerProvider.PluginClassCache pluginClassCache; - ClassPluginCollector(PluginLineMarkerProvider.PluginClassCache pluginClassCache) { + private final PluginLineMarkerProvider.PluginClassCache pluginClassCache; + + public ClassPluginCollector( + final PluginLineMarkerProvider.PluginClassCache pluginClassCache + ) { this.pluginClassCache = pluginClassCache; } @Override - public List collect(@NotNull PhpClass psiElement) { + public List collect(final @NotNull PhpClass psiElement) { return pluginClassCache.getPluginsForClass(psiElement); } } private static class MethodPluginCollector implements Collector { - private PluginLineMarkerProvider.PluginClassCache pluginClassCache; - MethodPluginCollector(PluginLineMarkerProvider.PluginClassCache pluginClassCache) { + private final PluginLineMarkerProvider.PluginClassCache pluginClassCache; + + public MethodPluginCollector( + final PluginLineMarkerProvider.PluginClassCache pluginClassCache + ) { this.pluginClassCache = pluginClassCache; } @Override - public List collect(@NotNull Method psiElement) { - List results = new ArrayList<>(); + public List collect(final @NotNull Method psiElement) { + final List results = new ArrayList<>(); + + final PhpClass methodClass = psiElement.getContainingClass(); - PhpClass methodClass = psiElement.getContainingClass(); if (methodClass == null) { return results; } + final List pluginsList = pluginClassCache.getPluginsForClass(methodClass); + final List pluginMethods = pluginClassCache.getPluginMethods(pluginsList); - List pluginsList = pluginClassCache.getPluginsForClass(methodClass); - List pluginMethods = pluginClassCache.getPluginMethods(pluginsList); + final String classMethodName = WordUtils.capitalize(psiElement.getName()); - String classMethodName = WordUtils.capitalize(psiElement.getName()); - for (Method pluginMethod: pluginMethods) { + for (final Method pluginMethod: pluginMethods) { if (isPluginMethodName(pluginMethod.getName(), classMethodName)) { results.add(pluginMethod); } } + return results; } - private boolean isPluginMethodName(String pluginMethodName, String classMethodName) { - return pluginMethodName.substring(5).equals(classMethodName) || pluginMethodName.substring(6).equals(classMethodName); + private boolean isPluginMethodName( + final String pluginMethodName, + final String classMethodName + ) { + return pluginMethodName.substring(5).equals(classMethodName) + || pluginMethodName.substring(6).equals(classMethodName); } } From 7d6976605c5beb0f401f583661e93f89b57448dc Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Mon, 29 Nov 2021 14:11:01 +0100 Subject: [PATCH 005/124] Bugfix-765: Fixed bug for the PluginLineMarkerProvider --- .../linemarker/php/PluginLineMarkerProvider.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/com/magento/idea/magento2plugin/linemarker/php/PluginLineMarkerProvider.java b/src/com/magento/idea/magento2plugin/linemarker/php/PluginLineMarkerProvider.java index b50d5b94b..980e76d1b 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/php/PluginLineMarkerProvider.java +++ b/src/com/magento/idea/magento2plugin/linemarker/php/PluginLineMarkerProvider.java @@ -92,6 +92,9 @@ public List getPluginsForClass(final @NotNull PhpClass phpClass) { ); for (final PhpClass parent : phpClass.getSupers()) { + if (classPluginsMap.containsKey(parent.getFQN().substring(1))) { + continue; + } pluginsForClass.addAll(getPluginsForClass(parent)); } From 1d17fa73c8d708ff628a1f83027fb3c0f945294c Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Mon, 29 Nov 2021 14:22:28 +0100 Subject: [PATCH 006/124] Bugfix-765: Code refactoring --- .../php/PluginTargetLineMarkerProvider.java | 95 +++++++++++-------- 1 file changed, 56 insertions(+), 39 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java b/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java index b4de80de2..8d4c976f6 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java +++ b/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java @@ -21,13 +21,17 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; +import java.util.Map; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class PluginTargetLineMarkerProvider implements LineMarkerProvider { - @Nullable + + private static final String TARGET_CLASS_TOOLTIP_TEXT = "Navigate to target class"; + private static final String TARGET_METHOD_TOOLTIP_TEXT = "Navigate to target method"; + @Override - public LineMarkerInfo getLineMarkerInfo(@NotNull final PsiElement psiElement) { + public @Nullable LineMarkerInfo getLineMarkerInfo(final @NotNull PsiElement psiElement) { return null; } @@ -36,48 +40,52 @@ public void collectSlowLineMarkers( final @NotNull List psiElements, final @NotNull Collection> collection ) { - if (!psiElements.isEmpty() && !Settings.isEnabled(psiElements.get(0).getProject())) { + if (psiElements.isEmpty()) { + return; + } + + if (!Settings.isEnabled(psiElements.get(0).getProject())) { return; } final PluginClassCache pluginClassCache = new PluginClassCache(); - final TargetClassesCollector targetClassesCollector = - new TargetClassesCollector(pluginClassCache); - final TargetMethodsCollector targetMethodsCollector = - new TargetMethodsCollector(pluginClassCache); + final TargetClassesCollector targetClassesCollector = new TargetClassesCollector( + pluginClassCache + ); + final TargetMethodsCollector targetMethodsCollector = new TargetMethodsCollector( + pluginClassCache + ); for (final PsiElement psiElement : psiElements) { - if (psiElement instanceof PhpClass || psiElement instanceof Method) { - List results; - - if (psiElement instanceof PhpClass) { - results = targetClassesCollector.collect((PhpClass) psiElement); - if (!results.isEmpty()) { - collection.add(NavigationGutterIconBuilder - .create(AllIcons.Nodes.Class) - .setTargets(results) - .setTooltipText("Navigate to target class") - .createLineMarkerInfo(PsiTreeUtil.getDeepestFirst(psiElement)) - ); - } - } else { - results = targetMethodsCollector.collect((Method) psiElement); - if (!results.isEmpty()) { - collection.add(NavigationGutterIconBuilder - .create(AllIcons.Nodes.Method) - .setTargets(results) - .setTooltipText("Navigate to target method") - .createLineMarkerInfo(PsiTreeUtil.getDeepestFirst(psiElement)) - ); - } + if (psiElement instanceof PhpClass) { + final List results = + targetClassesCollector.collect((PhpClass) psiElement); + + if (!results.isEmpty()) { + collection.add(NavigationGutterIconBuilder + .create(AllIcons.Nodes.Class) + .setTargets(results) + .setTooltipText(TARGET_CLASS_TOOLTIP_TEXT) + .createLineMarkerInfo(PsiTreeUtil.getDeepestFirst(psiElement)) + ); + } + } else if (psiElement instanceof Method) { + final List results = + targetMethodsCollector.collect((Method) psiElement); + + if (!results.isEmpty()) { + collection.add(NavigationGutterIconBuilder + .create(AllIcons.Nodes.Method) + .setTargets(results) + .setTooltipText(TARGET_METHOD_TOOLTIP_TEXT) + .createLineMarkerInfo(PsiTreeUtil.getDeepestFirst(psiElement)) + ); } - } } } private static class PluginClassCache { - private final HashMap> pluginClassesMap = // NOPMD - new HashMap<>(); + private final Map> pluginClassesMap = new HashMap<>(); private List getTargetClassesForPlugin( @NotNull final PhpClass phpClass, @@ -127,9 +135,10 @@ protected List getTargetClassesForPlugin(@NotNull final PhpClass phpCl } private static class TargetClassesCollector implements Collector { + private final PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache; - TargetClassesCollector(// NOPMD + public TargetClassesCollector( final PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache ) { this.pluginClassCache = pluginClassCache; @@ -142,9 +151,10 @@ public List collect(@NotNull final PhpClass psiElement) { } private static class TargetMethodsCollector implements Collector { + private final PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache; - TargetMethodsCollector(// NOPMD + public TargetMethodsCollector( final PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache ) { this.pluginClassCache = pluginClassCache; @@ -158,32 +168,33 @@ public List collect(@NotNull final Method pluginMethod) { if (null == getPluginPrefix(pluginMethod)) { return results; } - final PhpClass pluginClass = pluginMethod.getContainingClass(); + if (pluginClass == null) { return results; } final List targetClasses = pluginClassCache.getTargetClassesForPlugin(pluginClass); + if (targetClasses.isEmpty()) { return results; } - for (final PhpClass targetClass: targetClasses) { + for (final PhpClass targetClass : targetClasses) { final String pluginPrefix = getPluginPrefix(pluginMethod); final String targetClassMethodName = getTargetMethodName( pluginMethod, pluginPrefix ); + if (targetClassMethodName == null) { continue; } - final Method targetMethod = targetClass.findMethodByName(targetClassMethodName); + if (targetMethod == null) { continue; } - results.add(targetMethod); } @@ -192,25 +203,31 @@ public List collect(@NotNull final Method pluginMethod) { private String getTargetMethodName(final Method pluginMethod, final String pluginPrefix) { final String targetClassMethodName = pluginMethod.getName().replace(pluginPrefix, ""); + if (targetClassMethodName.isEmpty()) { return null; } final char firstCharOfTargetName = targetClassMethodName.charAt(0); + if (Character.getType(firstCharOfTargetName) == Character.LOWERCASE_LETTER) { return null; } + return Character.toLowerCase(firstCharOfTargetName) + targetClassMethodName.substring(1); } private String getPluginPrefix(final Method pluginMethod) { final String pluginMethodName = pluginMethod.getName(); + if (pluginMethodName.startsWith(Plugin.PluginType.around.toString())) { return Plugin.PluginType.around.toString(); } + if (pluginMethodName.startsWith(Plugin.PluginType.before.toString())) { return Plugin.PluginType.before.toString(); } + if (pluginMethodName.startsWith(Plugin.PluginType.after.toString())) { return Plugin.PluginType.after.toString(); } From 7df117b2d00a5a6f05a13a187666200fa429b480 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Mon, 29 Nov 2021 14:22:53 +0100 Subject: [PATCH 007/124] Bugfix-765: Fixed bug for the PluginTargetLineMarkerProvider --- .../linemarker/php/PluginTargetLineMarkerProvider.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java b/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java index 8d4c976f6..5f63c8620 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java +++ b/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java @@ -127,6 +127,9 @@ protected List getTargetClassesForPlugin(@NotNull final PhpClass phpCl phpClass, phpClass.getPresentableFQN() ); for (final PhpClass parent: phpClass.getSupers()) { + if (pluginClassesMap.containsKey(parent.getFQN().substring(1))) { + continue; + } classesForPlugin.addAll(getTargetClassesForPlugin(parent)); } From 7293944f8815382c4d4e696ffba2784cb16acfba Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Mon, 29 Nov 2021 14:37:17 +0100 Subject: [PATCH 008/124] Bugfix-765: Code refactoring --- .../php/WebApiLineMarkerProvider.java | 106 +++++++++++------- 1 file changed, 64 insertions(+), 42 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java b/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java index b4d2f012e..7095c9229 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java +++ b/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java @@ -1,7 +1,8 @@ -/** +/* * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + package com.magento.idea.magento2plugin.linemarker.php; import com.intellij.codeInsight.daemon.LineMarkerInfo; @@ -15,11 +16,14 @@ import com.magento.idea.magento2plugin.MagentoIcons; import com.magento.idea.magento2plugin.project.Settings; import com.magento.idea.magento2plugin.stubs.indexes.WebApiTypeIndex; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.*; - /** * Line marker for methods and classes which are exposed as web APIs. *

@@ -28,34 +32,42 @@ */ public class WebApiLineMarkerProvider implements LineMarkerProvider { - @Nullable @Override - public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement psiElement) { + public @Nullable LineMarkerInfo getLineMarkerInfo(final @NotNull PsiElement psiElement) { return null; } @Override - public void collectSlowLineMarkers(@NotNull List psiElements, @NotNull Collection> collection) { - if (psiElements.size() > 0) { - if (!Settings.isEnabled(psiElements.get(0).getProject())) { - return; - } + public void collectSlowLineMarkers( + final @NotNull List psiElements, + final @NotNull Collection> collection + ) { + if (psiElements.isEmpty()) { + return; + } + + if (!Settings.isEnabled(psiElements.get(0).getProject())) { + return; } - for (PsiElement psiElement: psiElements) { - WebApiRoutesCollector collector = new WebApiRoutesCollector(); + + for (final PsiElement psiElement : psiElements) { + final WebApiRoutesCollector collector = new WebApiRoutesCollector(); List results = new ArrayList<>(); + if (psiElement instanceof Method) { results = collector.getRoutes((Method) psiElement); } else if (psiElement instanceof PhpClass) { results = collector.getRoutes((PhpClass) psiElement); } - if (!(results.size() > 0)) { + if (results.isEmpty()) { continue; } - StringBuilder tooltipText = new StringBuilder("Navigate to Web API configuration:

");
-            for (XmlTag routeTag : results) {
+            StringBuilder tooltipText = new StringBuilder(
+                    "Navigate to Web API configuration:
"
+            );
+            for (final XmlTag routeTag : results) {
                 tooltipText.append(routeTag.getName()).append("\n");
             }
             tooltipText.append("
"); @@ -72,24 +84,27 @@ public void collectSlowLineMarkers(@NotNull List psiElemen */ private static class WebApiRoutesCollector { - private HashMap> routesCache = new HashMap<>(); - - private static final Map HTTP_METHODS_SORT_ORDER = new HashMap() {{ - put("GET", 1); - put("PUT", 2); - put("POS", 3); - put("DEL", 4); - }}; + private final Map> routesCache = new HashMap<>(); + private static final Map HTTP_METHODS_SORT_ORDER = new HashMap<>() { + { + put("GET", 1); + put("PUT", 2); + put("POS", 3); + put("DEL", 4); + } + }; /** * Get sorted list of Web API routes related to the specified class. */ - List getRoutes(@NotNull PhpClass phpClass) { - List routesForClass = new ArrayList<>(); - for (Method method : phpClass.getMethods()) { + public List getRoutes(final @NotNull PhpClass phpClass) { + final List routesForClass = new ArrayList<>(); + + for (final Method method : phpClass.getMethods()) { routesForClass.addAll(getRoutes(method)); } sortRoutes(routesForClass); + return routesForClass; } @@ -98,13 +113,15 @@ List getRoutes(@NotNull PhpClass phpClass) { *

* Results are cached. */ - List getRoutes(@NotNull Method method) { - String methodFqn = method.getFQN(); + public List getRoutes(final @NotNull Method method) { + final String methodFqn = method.getFQN(); + if (!routesCache.containsKey(methodFqn)) { List routesForMethod = extractRoutesForMethod(method); sortRoutes(routesForMethod); routesCache.put(methodFqn, routesForMethod); } + return routesCache.get(methodFqn); } @@ -114,37 +131,42 @@ List getRoutes(@NotNull Method method) { * Web API declarations for parent classes are taken into account. * Results are not cached. */ - List extractRoutesForMethod(@NotNull Method method) { - List routesForMethod = WebApiTypeIndex.getWebApiRoutes(method); - PhpClass phpClass = method.getContainingClass(); + public List extractRoutesForMethod(final @NotNull Method method) { + final List routesForMethod = WebApiTypeIndex.getWebApiRoutes(method); + final PhpClass phpClass = method.getContainingClass(); + if (phpClass == null) { return routesForMethod; } - for (PhpClass parent : method.getContainingClass().getSupers()) { + for (final PhpClass parent : method.getContainingClass().getSupers()) { for (Method parentMethod : parent.getMethods()) { if (parentMethod.getName().equals(method.getName())) { routesForMethod.addAll(extractRoutesForMethod(parentMethod)); } } } + return routesForMethod; } /** * Make sure that routes are sorted as follows: GET, PUT, POST, DELETE. Then by path. */ - private void sortRoutes(List routes) { + private void sortRoutes(final List routes) { routes.sort( - (firstTag, secondTag) -> { - String substring = firstTag.getName().substring(2, 5); - Integer firstSortOrder = HTTP_METHODS_SORT_ORDER.get(substring); - Integer secondSortOrder = HTTP_METHODS_SORT_ORDER.get(secondTag.getName().substring(2, 5)); - if (firstSortOrder.compareTo(secondSortOrder) == 0) { - // Sort by route if HTTP methods are equal - return firstTag.getName().compareTo(secondTag.getName()); + (firstTag, secondTag) -> { + String substring = firstTag.getName().substring(2, 5); + Integer firstSortOrder = HTTP_METHODS_SORT_ORDER.get(substring); + Integer secondSortOrder = HTTP_METHODS_SORT_ORDER.get( + secondTag.getName().substring(2, 5) + ); + if (firstSortOrder.compareTo(secondSortOrder) == 0) { + // Sort by route if HTTP methods are equal + return firstTag.getName().compareTo(secondTag.getName()); + } + + return firstSortOrder.compareTo(secondSortOrder); } - return firstSortOrder.compareTo(secondSortOrder); - } ); } } From e90e77c46694eafda5295629105fcf8bb6d7c923 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Mon, 29 Nov 2021 15:15:11 +0100 Subject: [PATCH 009/124] Bugfix-765: Fixed bug for the WebApiLineMarkerProvider --- .../php/WebApiLineMarkerProvider.java | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java b/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java index 7095c9229..b95bcffd1 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java +++ b/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java @@ -117,7 +117,7 @@ public List getRoutes(final @NotNull Method method) { final String methodFqn = method.getFQN(); if (!routesCache.containsKey(methodFqn)) { - List routesForMethod = extractRoutesForMethod(method); + final List routesForMethod = extractRoutesForMethod(method); sortRoutes(routesForMethod); routesCache.put(methodFqn, routesForMethod); } @@ -132,16 +132,40 @@ public List getRoutes(final @NotNull Method method) { * Results are not cached. */ public List extractRoutesForMethod(final @NotNull Method method) { - final List routesForMethod = WebApiTypeIndex.getWebApiRoutes(method); + final List routesForMethod = new ArrayList<>(); + final Map> routesForMethodMap = new HashMap<>(); + + for (final Map.Entry> entry + : extractRoutesForMethodRecursively(method, routesForMethodMap).entrySet()) { + routesForMethod.addAll(entry.getValue()); + } + + return routesForMethod; + } + + private Map> extractRoutesForMethodRecursively( + final @NotNull Method method, + final Map> routesForMethod + ) { + routesForMethod.put(method.getFQN(), WebApiTypeIndex.getWebApiRoutes(method)); final PhpClass phpClass = method.getContainingClass(); if (phpClass == null) { return routesForMethod; } + for (final PhpClass parent : method.getContainingClass().getSupers()) { for (Method parentMethod : parent.getMethods()) { if (parentMethod.getName().equals(method.getName())) { - routesForMethod.addAll(extractRoutesForMethod(parentMethod)); + if (routesForMethod.containsKey(parentMethod.getFQN())) { + continue; + } + routesForMethod.putAll( + extractRoutesForMethodRecursively( + parentMethod, + routesForMethod + ) + ); } } } From ce56e4194df17c5097bcb9e11561b9aa14696437 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Mon, 29 Nov 2021 15:31:04 +0100 Subject: [PATCH 010/124] Bugfix-765: Code refactoring --- .../php/WebApiLineMarkerProvider.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java b/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java index b95bcffd1..bfa1be9ae 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java +++ b/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java @@ -49,9 +49,9 @@ public void collectSlowLineMarkers( if (!Settings.isEnabled(psiElements.get(0).getProject())) { return; } + final WebApiRoutesCollector collector = new WebApiRoutesCollector(); for (final PsiElement psiElement : psiElements) { - final WebApiRoutesCollector collector = new WebApiRoutesCollector(); List results = new ArrayList<>(); if (psiElement instanceof Method) { @@ -64,14 +64,14 @@ public void collectSlowLineMarkers( continue; } - StringBuilder tooltipText = new StringBuilder( + final StringBuilder tooltipText = new StringBuilder( "Navigate to Web API configuration:

"
             );
             for (final XmlTag routeTag : results) {
-                tooltipText.append(routeTag.getName()).append("\n");
+                tooltipText.append(routeTag.getName()).append('\n');
             }
             tooltipText.append("
"); - NavigationGutterIconBuilder builder = NavigationGutterIconBuilder + final NavigationGutterIconBuilder builder = NavigationGutterIconBuilder .create(MagentoIcons.WEB_API) .setTargets(results) .setTooltipText(tooltipText.toString()); @@ -85,7 +85,7 @@ public void collectSlowLineMarkers( private static class WebApiRoutesCollector { private final Map> routesCache = new HashMap<>(); - private static final Map HTTP_METHODS_SORT_ORDER = new HashMap<>() { + private static final Map HTTP_METHODS_SORT_ORDER = new HashMap<>() {//NOPMD { put("GET", 1); put("PUT", 2); @@ -155,7 +155,7 @@ private Map> extractRoutesForMethodRecursively( } for (final PhpClass parent : method.getContainingClass().getSupers()) { - for (Method parentMethod : parent.getMethods()) { + for (final Method parentMethod : parent.getMethods()) { if (parentMethod.getName().equals(method.getName())) { if (routesForMethod.containsKey(parentMethod.getFQN())) { continue; @@ -179,9 +179,9 @@ private Map> extractRoutesForMethodRecursively( private void sortRoutes(final List routes) { routes.sort( (firstTag, secondTag) -> { - String substring = firstTag.getName().substring(2, 5); - Integer firstSortOrder = HTTP_METHODS_SORT_ORDER.get(substring); - Integer secondSortOrder = HTTP_METHODS_SORT_ORDER.get( + final String substring = firstTag.getName().substring(2, 5); + final Integer firstSortOrder = HTTP_METHODS_SORT_ORDER.get(substring); + final Integer secondSortOrder = HTTP_METHODS_SORT_ORDER.get( secondTag.getName().substring(2, 5) ); if (firstSortOrder.compareTo(secondSortOrder) == 0) { From 504cbab343bbc817d369eb2fb3eae596494a78a4 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Mon, 29 Nov 2021 15:36:22 +0100 Subject: [PATCH 011/124] Bugfix-765: Code refactoring --- .../linemarker/php/WebApiLineMarkerProvider.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java b/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java index bfa1be9ae..2962fcc00 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java +++ b/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java @@ -37,6 +37,7 @@ public class WebApiLineMarkerProvider implements LineMarkerProvider { return null; } + @SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops") @Override public void collectSlowLineMarkers( final @NotNull List psiElements, @@ -82,10 +83,11 @@ public void collectSlowLineMarkers( /** * Web API config nodes collector for service methods and classes. Has built in caching. */ + @SuppressWarnings("PMD.AvoidDoubleBraceInitializationCheck") private static class WebApiRoutesCollector { private final Map> routesCache = new HashMap<>(); - private static final Map HTTP_METHODS_SORT_ORDER = new HashMap<>() {//NOPMD + private static final Map HTTP_METHODS_SORT_ORDER = new HashMap<>() { { put("GET", 1); put("PUT", 2); From f452d7939f493668a524f71de1caaa1c4dedaeb9 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Mon, 29 Nov 2021 15:44:04 +0100 Subject: [PATCH 012/124] Bugfix-765: Code refactoring --- .../php/WebApiLineMarkerProvider.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java b/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java index 2962fcc00..dda93f5bb 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java +++ b/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java @@ -83,18 +83,18 @@ public void collectSlowLineMarkers( /** * Web API config nodes collector for service methods and classes. Has built in caching. */ - @SuppressWarnings("PMD.AvoidDoubleBraceInitializationCheck") private static class WebApiRoutesCollector { private final Map> routesCache = new HashMap<>(); - private static final Map HTTP_METHODS_SORT_ORDER = new HashMap<>() { - { - put("GET", 1); - put("PUT", 2); - put("POS", 3); - put("DEL", 4); - } - }; + private final Map httpMethodsSortOrder; + + public WebApiRoutesCollector() { + httpMethodsSortOrder = new HashMap<>(); + httpMethodsSortOrder.put("GET", 1); + httpMethodsSortOrder.put("PUT", 2); + httpMethodsSortOrder.put("POS", 3); + httpMethodsSortOrder.put("DEL", 4); + } /** * Get sorted list of Web API routes related to the specified class. @@ -182,8 +182,8 @@ private void sortRoutes(final List routes) { routes.sort( (firstTag, secondTag) -> { final String substring = firstTag.getName().substring(2, 5); - final Integer firstSortOrder = HTTP_METHODS_SORT_ORDER.get(substring); - final Integer secondSortOrder = HTTP_METHODS_SORT_ORDER.get( + final Integer firstSortOrder = httpMethodsSortOrder.get(substring); + final Integer secondSortOrder = httpMethodsSortOrder.get( secondTag.getName().substring(2, 5) ); if (firstSortOrder.compareTo(secondSortOrder) == 0) { From 23810609ee8af84e07740d26b875a2d02e621a9f Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Mon, 29 Nov 2021 22:04:26 +0100 Subject: [PATCH 013/124] 666: Fixed stub ids not found for key in index --- .../provider/PhpClassReferenceProvider.java | 46 +++++++++++++++---- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/reference/provider/PhpClassReferenceProvider.java b/src/com/magento/idea/magento2plugin/reference/provider/PhpClassReferenceProvider.java index 39618e545..40ff460d9 100644 --- a/src/com/magento/idea/magento2plugin/reference/provider/PhpClassReferenceProvider.java +++ b/src/com/magento/idea/magento2plugin/reference/provider/PhpClassReferenceProvider.java @@ -5,14 +5,17 @@ package com.magento.idea.magento2plugin.reference.provider; +import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; import com.intellij.psi.PsiReferenceProvider; +import com.intellij.psi.stubs.StubIndex; import com.intellij.util.ProcessingContext; import com.jetbrains.php.PhpIndex; import com.jetbrains.php.lang.psi.elements.PhpClass; import com.jetbrains.php.lang.psi.elements.PhpNamespace; +import com.jetbrains.php.lang.psi.stubs.indexes.PhpNamespaceIndex; import com.magento.idea.magento2plugin.reference.xml.PolyVariantReferenceBase; import com.magento.idea.magento2plugin.util.RegExUtil; import java.util.ArrayList; @@ -26,13 +29,11 @@ @SuppressWarnings({"PMD.AvoidInstantiatingObjectsInLoops"}) public class PhpClassReferenceProvider extends PsiReferenceProvider { - @NotNull @Override - public PsiReference[] getReferencesByElement( + public @NotNull PsiReference[] getReferencesByElement( final @NotNull PsiElement element, final @NotNull ProcessingContext context ) { - final String origValue = element.getText(); final Pattern pattern = Pattern.compile(RegExUtil.PhpRegex.FQN); @@ -49,15 +50,21 @@ public PsiReference[] getReferencesByElement( final StringBuilder namespace = new StringBuilder(); String namespacePart; final List psiReferences = new ArrayList<>(); + for (int i = 0; i < fqnParts.length - 1; i++) { namespacePart = fqnParts[i]; + namespace.append('\\'); + namespace.append(namespacePart); + + final String namespaceId = namespace + .toString() + .toLowerCase(new Locale("en","EN")); + + final Collection references = hasNamespaceInIndex( + namespaceId, + element.getProject() + ) ? phpIndex.getNamespacesByName(namespaceId) : new ArrayList<>(); - namespace.append("\\");//NOPMD - namespace.append(namespacePart);//NOPMD - final Collection references = - phpIndex.getNamespacesByName(namespace.toString().toLowerCase( - new Locale("en","EN")) - ); if (!references.isEmpty()) { final TextRange range = new TextRange( origValue.indexOf(classFQN) + namespace.toString().lastIndexOf(92), @@ -70,6 +77,7 @@ public PsiReference[] getReferencesByElement( final String className = classFQN.substring(classFQN.lastIndexOf(92) + 1); final Collection classes = phpIndex.getAnyByFQN(classFQN); + if (!classes.isEmpty()) { final TextRange range = new TextRange( origValue.lastIndexOf(92) + 1, @@ -80,4 +88,24 @@ public PsiReference[] getReferencesByElement( return psiReferences.toArray(new PsiReference[0]); } + + /** + * Check if php namespace index has specified identifier. + * + * @param namespaceIdentifier String + * @param project Project + * + * @return boolean + */ + private boolean hasNamespaceInIndex( + final @NotNull String namespaceIdentifier, + final @NotNull Project project + ) { + final Collection keys = StubIndex.getInstance().getAllKeys( + PhpNamespaceIndex.KEY, + project + ); + + return keys.contains(namespaceIdentifier); + } } From 2cff8f01a0a2b095d4dfc6f5bbbb9295bf0ff177 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 30 Nov 2021 14:01:30 +0100 Subject: [PATCH 014/124] 645: Code refactoring --- .../stubs/indexes/js/RequireJsIndex.java | 42 +++++++++++-------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java index 4fd74fc9f..906c37a70 100644 --- a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java +++ b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java @@ -2,36 +2,46 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + package com.magento.idea.magento2plugin.stubs.indexes.js; import com.intellij.lang.javascript.JavaScriptFileType; -import com.intellij.lang.javascript.psi.*; +import com.intellij.lang.javascript.psi.JSExpression; +import com.intellij.lang.javascript.psi.JSFile; +import com.intellij.lang.javascript.psi.JSObjectLiteralExpression; +import com.intellij.lang.javascript.psi.JSProperty; +import com.intellij.lang.javascript.psi.JSVarStatement; +import com.intellij.lang.javascript.psi.JSVariable; import com.intellij.psi.PsiElement; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.util.indexing.*; +import com.intellij.util.indexing.DataIndexer; +import com.intellij.util.indexing.FileBasedIndex; +import com.intellij.util.indexing.FileBasedIndexExtension; +import com.intellij.util.indexing.FileContent; +import com.intellij.util.indexing.ID; import com.intellij.util.io.DataExternalizer; import com.intellij.util.io.EnumeratorStringDescriptor; import com.intellij.util.io.KeyDescriptor; -import org.jetbrains.annotations.NotNull; import java.util.HashMap; import java.util.Map; +import org.jetbrains.annotations.NotNull; public class RequireJsIndex extends FileBasedIndexExtension { - public static final ID KEY = - ID.create("com.magento.idea.magento2plugin.stubs.indexes.require_js"); - @NotNull + public static final ID KEY = ID.create( + "com.magento.idea.magento2plugin.stubs.indexes.require_js" + ); + @Override - public ID getName() { + public @NotNull ID getName() { return KEY; } - @NotNull @Override - public DataIndexer getIndexer() { + public @NotNull DataIndexer getIndexer() { return inputData -> { Map map = new HashMap<>(); - JSFile jsFile = (JSFile)inputData.getPsiFile(); + JSFile jsFile = (JSFile) inputData.getPsiFile(); JSVarStatement jsVarStatement = PsiTreeUtil.getChildOfType(jsFile, JSVarStatement.class); if (jsVarStatement == null) { @@ -98,17 +108,16 @@ private void parseConfigMap(Map map, JSObjectLiteralExpression c } } - @NotNull @Override - public KeyDescriptor getKeyDescriptor() { + public @NotNull KeyDescriptor getKeyDescriptor() { return new EnumeratorStringDescriptor(); } - @NotNull @Override - public FileBasedIndex.InputFilter getInputFilter() { + public @NotNull FileBasedIndex.InputFilter getInputFilter() { return virtualFile -> ( - virtualFile.getFileType().equals(JavaScriptFileType.INSTANCE) && virtualFile.getName().equals("requirejs-config.js") + virtualFile.getFileType().equals(JavaScriptFileType.INSTANCE) + && virtualFile.getName().equals("requirejs-config.js") ); } @@ -122,8 +131,7 @@ public int getVersion() { return 1; } - @NotNull - public DataExternalizer getValueExternalizer() { + public @NotNull DataExternalizer getValueExternalizer() { return EnumeratorStringDescriptor.INSTANCE; } } From 0918b7ab9d6730fcfec18240856b3adc150d3e87 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 30 Nov 2021 14:02:31 +0100 Subject: [PATCH 015/124] 645: Fixed method could be final --- .../idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java index 906c37a70..b7633af79 100644 --- a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java +++ b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java @@ -81,7 +81,10 @@ public class RequireJsIndex extends FileBasedIndexExtension { }; } - private void parseConfigMap(Map map, JSObjectLiteralExpression config) { + private void parseConfigMap( + final Map map, + final JSObjectLiteralExpression config + ) { JSProperty configMap = config.findProperty("map"); if (configMap == null) { return; From 67e9fc76b63c1f918314a437b1dbd9438843687e Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 30 Nov 2021 14:04:17 +0100 Subject: [PATCH 016/124] 645: Fixed local variable could be final --- .../stubs/indexes/js/RequireJsIndex.java | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java index b7633af79..88c3a6aa4 100644 --- a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java +++ b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java @@ -40,37 +40,37 @@ public class RequireJsIndex extends FileBasedIndexExtension { @Override public @NotNull DataIndexer getIndexer() { return inputData -> { - Map map = new HashMap<>(); - JSFile jsFile = (JSFile) inputData.getPsiFile(); + final Map map = new HashMap<>(); + final JSFile jsFile = (JSFile) inputData.getPsiFile(); - JSVarStatement jsVarStatement = PsiTreeUtil.getChildOfType(jsFile, JSVarStatement.class); + final JSVarStatement jsVarStatement = PsiTreeUtil.getChildOfType(jsFile, JSVarStatement.class); if (jsVarStatement == null) { return map; } - JSVariable[] jsVariableList = jsVarStatement.getVariables(); - for (JSVariable jsVariable : jsVariableList) { - String name = jsVariable.getName(); + final JSVariable[] jsVariableList = jsVarStatement.getVariables(); + for (final JSVariable jsVariable : jsVariableList) { + final String name = jsVariable.getName(); if (name.equals("config")) { - JSObjectLiteralExpression config = PsiTreeUtil.getChildOfType(jsVariable, JSObjectLiteralExpression.class); + final JSObjectLiteralExpression config = PsiTreeUtil.getChildOfType(jsVariable, JSObjectLiteralExpression.class); if (config == null) { return map; } parseConfigMap(map, config); - JSProperty pathsMap = config.findProperty("paths"); + final JSProperty pathsMap = config.findProperty("paths"); if (pathsMap == null) { return map; } - JSObjectLiteralExpression[] pathGroupsWrappers = PsiTreeUtil.getChildrenOfType(pathsMap, JSObjectLiteralExpression.class); - for (JSObjectLiteralExpression pathGroupsWrapper : pathGroupsWrappers) { - JSProperty[] allConfigs = pathGroupsWrapper.getProperties(); - for (JSProperty mapping : allConfigs) { - String nameConfig = mapping.getName(); - JSExpression value = mapping.getValue(); + final JSObjectLiteralExpression[] pathGroupsWrappers = PsiTreeUtil.getChildrenOfType(pathsMap, JSObjectLiteralExpression.class); + for (final JSObjectLiteralExpression pathGroupsWrapper : pathGroupsWrappers) { + final JSProperty[] allConfigs = pathGroupsWrapper.getProperties(); + for (final JSProperty mapping : allConfigs) { + final String nameConfig = mapping.getName(); + final JSExpression value = mapping.getValue(); if (value == null) { continue; } - String valueConfig = value.getText(); + final String valueConfig = value.getText(); map.put(nameConfig, valueConfig); } } @@ -85,26 +85,26 @@ private void parseConfigMap( final Map map, final JSObjectLiteralExpression config ) { - JSProperty configMap = config.findProperty("map"); + final JSProperty configMap = config.findProperty("map"); if (configMap == null) { return; } - JSObjectLiteralExpression[] configGroupsWrappers = PsiTreeUtil.getChildrenOfType(configMap, JSObjectLiteralExpression.class); - for (JSObjectLiteralExpression configGroupsWrapper : configGroupsWrappers) { - PsiElement[] configGroups = configGroupsWrapper.getChildren(); + final JSObjectLiteralExpression[] configGroupsWrappers = PsiTreeUtil.getChildrenOfType(configMap, JSObjectLiteralExpression.class); + for (final JSObjectLiteralExpression configGroupsWrapper : configGroupsWrappers) { + final PsiElement[] configGroups = configGroupsWrapper.getChildren(); - for (PsiElement configGroup : configGroups) { - JSObjectLiteralExpression mappingWrapper = PsiTreeUtil.getChildOfType(configGroup, JSObjectLiteralExpression.class); - JSProperty[] allConfigs = mappingWrapper.getProperties(); + for (final PsiElement configGroup : configGroups) { + final JSObjectLiteralExpression mappingWrapper = PsiTreeUtil.getChildOfType(configGroup, JSObjectLiteralExpression.class); + final JSProperty[] allConfigs = mappingWrapper.getProperties(); - for (JSProperty mapping : allConfigs) { - String nameConfig = mapping.getName(); - JSExpression value = mapping.getValue(); + for (final JSProperty mapping : allConfigs) { + final String nameConfig = mapping.getName(); + final JSExpression value = mapping.getValue(); if (value == null) { continue; } - String valueConfig = value.getText(); + final String valueConfig = value.getText(); map.put(nameConfig, valueConfig); } } From 58f32f9f1ae0803741118faeee02399b6afd6d49 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 30 Nov 2021 14:06:50 +0100 Subject: [PATCH 017/124] 645: Code refactoring --- .../stubs/indexes/js/RequireJsIndex.java | 39 +++++++++++++++---- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java index 88c3a6aa4..79fdc1a22 100644 --- a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java +++ b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java @@ -43,30 +43,45 @@ public class RequireJsIndex extends FileBasedIndexExtension { final Map map = new HashMap<>(); final JSFile jsFile = (JSFile) inputData.getPsiFile(); - final JSVarStatement jsVarStatement = PsiTreeUtil.getChildOfType(jsFile, JSVarStatement.class); + final JSVarStatement jsVarStatement = PsiTreeUtil.getChildOfType( + jsFile, + JSVarStatement.class + ); + if (jsVarStatement == null) { return map; } final JSVariable[] jsVariableList = jsVarStatement.getVariables(); + for (final JSVariable jsVariable : jsVariableList) { final String name = jsVariable.getName(); + if (name.equals("config")) { - final JSObjectLiteralExpression config = PsiTreeUtil.getChildOfType(jsVariable, JSObjectLiteralExpression.class); + final JSObjectLiteralExpression config = PsiTreeUtil.getChildOfType( + jsVariable, + JSObjectLiteralExpression.class + ); + if (config == null) { return map; } parseConfigMap(map, config); final JSProperty pathsMap = config.findProperty("paths"); + if (pathsMap == null) { return map; } - final JSObjectLiteralExpression[] pathGroupsWrappers = PsiTreeUtil.getChildrenOfType(pathsMap, JSObjectLiteralExpression.class); + final JSObjectLiteralExpression[] pathGroupsWrappers = PsiTreeUtil + .getChildrenOfType(pathsMap, JSObjectLiteralExpression.class); + for (final JSObjectLiteralExpression pathGroupsWrapper : pathGroupsWrappers) { final JSProperty[] allConfigs = pathGroupsWrapper.getProperties(); + for (final JSProperty mapping : allConfigs) { final String nameConfig = mapping.getName(); final JSExpression value = mapping.getValue(); + if (value == null) { continue; } @@ -86,21 +101,29 @@ private void parseConfigMap( final JSObjectLiteralExpression config ) { final JSProperty configMap = config.findProperty("map"); + if (configMap == null) { return; } - final JSObjectLiteralExpression[] configGroupsWrappers = PsiTreeUtil.getChildrenOfType(configMap, JSObjectLiteralExpression.class); + final JSObjectLiteralExpression[] configGroupsWrappers = PsiTreeUtil.getChildrenOfType( + configMap, + JSObjectLiteralExpression.class + ); for (final JSObjectLiteralExpression configGroupsWrapper : configGroupsWrappers) { final PsiElement[] configGroups = configGroupsWrapper.getChildren(); for (final PsiElement configGroup : configGroups) { - final JSObjectLiteralExpression mappingWrapper = PsiTreeUtil.getChildOfType(configGroup, JSObjectLiteralExpression.class); + final JSObjectLiteralExpression mappingWrapper = PsiTreeUtil.getChildOfType( + configGroup, + JSObjectLiteralExpression.class + ); final JSProperty[] allConfigs = mappingWrapper.getProperties(); for (final JSProperty mapping : allConfigs) { final String nameConfig = mapping.getName(); final JSExpression value = mapping.getValue(); + if (value == null) { continue; } @@ -118,10 +141,9 @@ private void parseConfigMap( @Override public @NotNull FileBasedIndex.InputFilter getInputFilter() { - return virtualFile -> ( + return virtualFile -> virtualFile.getFileType().equals(JavaScriptFileType.INSTANCE) - && virtualFile.getName().equals("requirejs-config.js") - ); + && virtualFile.getName().equals("requirejs-config.js"); } @Override @@ -134,6 +156,7 @@ public int getVersion() { return 1; } + @Override public @NotNull DataExternalizer getValueExternalizer() { return EnumeratorStringDescriptor.INSTANCE; } From b206366b724de9d7d81211047baaeb43f6cad768 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 30 Nov 2021 14:07:54 +0100 Subject: [PATCH 018/124] 645: Fixed LiteralsFirstInComparisons --- .../idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java index 79fdc1a22..09581ca35 100644 --- a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java +++ b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java @@ -56,7 +56,7 @@ public class RequireJsIndex extends FileBasedIndexExtension { for (final JSVariable jsVariable : jsVariableList) { final String name = jsVariable.getName(); - if (name.equals("config")) { + if ("config".equals(name)) { final JSObjectLiteralExpression config = PsiTreeUtil.getChildOfType( jsVariable, JSObjectLiteralExpression.class @@ -143,7 +143,7 @@ private void parseConfigMap( public @NotNull FileBasedIndex.InputFilter getInputFilter() { return virtualFile -> virtualFile.getFileType().equals(JavaScriptFileType.INSTANCE) - && virtualFile.getName().equals("requirejs-config.js"); + && "requirejs-config.js".equals(virtualFile.getName()); } @Override From 548359f47676ff428055e5f356382eebb41c18e1 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 30 Nov 2021 14:20:07 +0100 Subject: [PATCH 019/124] 645: Code refactoring --- .../stubs/indexes/js/RequireJsIndex.java | 54 ++++++++++--------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java index 09581ca35..ff9a27fe1 100644 --- a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java +++ b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java @@ -66,29 +66,7 @@ public class RequireJsIndex extends FileBasedIndexExtension { return map; } parseConfigMap(map, config); - - final JSProperty pathsMap = config.findProperty("paths"); - - if (pathsMap == null) { - return map; - } - final JSObjectLiteralExpression[] pathGroupsWrappers = PsiTreeUtil - .getChildrenOfType(pathsMap, JSObjectLiteralExpression.class); - - for (final JSObjectLiteralExpression pathGroupsWrapper : pathGroupsWrappers) { - final JSProperty[] allConfigs = pathGroupsWrapper.getProperties(); - - for (final JSProperty mapping : allConfigs) { - final String nameConfig = mapping.getName(); - final JSExpression value = mapping.getValue(); - - if (value == null) { - continue; - } - final String valueConfig = value.getText(); - map.put(nameConfig, valueConfig); - } - } + parseConfigPaths(map, config); } } @@ -105,11 +83,11 @@ private void parseConfigMap( if (configMap == null) { return; } - final JSObjectLiteralExpression[] configGroupsWrappers = PsiTreeUtil.getChildrenOfType( configMap, JSObjectLiteralExpression.class ); + for (final JSObjectLiteralExpression configGroupsWrapper : configGroupsWrappers) { final PsiElement[] configGroups = configGroupsWrapper.getChildren(); @@ -134,6 +112,34 @@ private void parseConfigMap( } } + private void parseConfigPaths( + final Map map, + final JSObjectLiteralExpression config + ) { + final JSProperty pathsMap = config.findProperty("paths"); + + if (pathsMap == null) { + return; + } + final JSObjectLiteralExpression[] pathGroupsWrappers = PsiTreeUtil + .getChildrenOfType(pathsMap, JSObjectLiteralExpression.class); + + for (final JSObjectLiteralExpression pathGroupsWrapper : pathGroupsWrappers) { + final JSProperty[] allConfigs = pathGroupsWrapper.getProperties(); + + for (final JSProperty mapping : allConfigs) { + final String nameConfig = mapping.getName(); + final JSExpression value = mapping.getValue(); + + if (value == null) { + continue; + } + final String valueConfig = value.getText(); + map.put(nameConfig, valueConfig); + } + } + } + @Override public @NotNull KeyDescriptor getKeyDescriptor() { return new EnumeratorStringDescriptor(); From 2492c2647bf608848210e1bff3dc9c5777ad25a7 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 30 Nov 2021 14:22:36 +0100 Subject: [PATCH 020/124] 645: Fixed bug --- .../stubs/indexes/js/RequireJsIndex.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java index ff9a27fe1..de2c0adf5 100644 --- a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java +++ b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java @@ -87,6 +87,9 @@ private void parseConfigMap( configMap, JSObjectLiteralExpression.class ); + if (configGroupsWrappers == null) { + return; + } for (final JSObjectLiteralExpression configGroupsWrapper : configGroupsWrappers) { final PsiElement[] configGroups = configGroupsWrapper.getChildren(); @@ -96,6 +99,10 @@ private void parseConfigMap( configGroup, JSObjectLiteralExpression.class ); + + if (mappingWrapper == null) { + continue; + } final JSProperty[] allConfigs = mappingWrapper.getProperties(); for (final JSProperty mapping : allConfigs) { @@ -124,6 +131,10 @@ private void parseConfigPaths( final JSObjectLiteralExpression[] pathGroupsWrappers = PsiTreeUtil .getChildrenOfType(pathsMap, JSObjectLiteralExpression.class); + if (pathGroupsWrappers == null) { + return; + } + for (final JSObjectLiteralExpression pathGroupsWrapper : pathGroupsWrappers) { final JSProperty[] allConfigs = pathGroupsWrapper.getProperties(); From 83743866f678cbd4de265cbe252503e7eb4a755e Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 30 Nov 2021 14:26:39 +0100 Subject: [PATCH 021/124] 645: Code refactoring --- .../stubs/indexes/js/RequireJsIndex.java | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java index de2c0adf5..065e68709 100644 --- a/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java +++ b/src/com/magento/idea/magento2plugin/stubs/indexes/js/RequireJsIndex.java @@ -103,18 +103,7 @@ private void parseConfigMap( if (mappingWrapper == null) { continue; } - final JSProperty[] allConfigs = mappingWrapper.getProperties(); - - for (final JSProperty mapping : allConfigs) { - final String nameConfig = mapping.getName(); - final JSExpression value = mapping.getValue(); - - if (value == null) { - continue; - } - final String valueConfig = value.getText(); - map.put(nameConfig, valueConfig); - } + processObjectProperties(map, mappingWrapper.getProperties()); } } } @@ -136,18 +125,23 @@ private void parseConfigPaths( } for (final JSObjectLiteralExpression pathGroupsWrapper : pathGroupsWrappers) { - final JSProperty[] allConfigs = pathGroupsWrapper.getProperties(); + processObjectProperties(map, pathGroupsWrapper.getProperties()); + } + } - for (final JSProperty mapping : allConfigs) { - final String nameConfig = mapping.getName(); - final JSExpression value = mapping.getValue(); + private void processObjectProperties( + final Map map, + final JSProperty... allConfigs + ) { + for (final JSProperty mapping : allConfigs) { + final String nameConfig = mapping.getName(); + final JSExpression value = mapping.getValue(); - if (value == null) { - continue; - } - final String valueConfig = value.getText(); - map.put(nameConfig, valueConfig); + if (value == null) { + continue; } + final String valueConfig = value.getText(); + map.put(nameConfig, valueConfig); } } From eb8e2096e8c7154853702f0afd71f198a9ee156c Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 30 Nov 2021 15:38:48 +0100 Subject: [PATCH 022/124] 739: Fixed empty PSI elements must not be passed to createDescriptor --- .../idea/magento2plugin/inspections/php/PluginInspection.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/com/magento/idea/magento2plugin/inspections/php/PluginInspection.java b/src/com/magento/idea/magento2plugin/inspections/php/PluginInspection.java index 06f485176..556a161ca 100644 --- a/src/com/magento/idea/magento2plugin/inspections/php/PluginInspection.java +++ b/src/com/magento/idea/magento2plugin/inspections/php/PluginInspection.java @@ -187,6 +187,9 @@ private void checkParametersCompatibility( int index = 0; for (final Parameter pluginMethodParameter : pluginMethodParameters) { + if (pluginMethodParameter.getName().isEmpty()) { + continue; + } index++; String declaredType = pluginMethodParameter.getDeclaredType().toString(); From 100f04a06d9f3132d51fdfeff115f1096d92f72a Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 30 Nov 2021 15:42:35 +0100 Subject: [PATCH 023/124] 739: Code refactoring --- .../inspections/php/PluginInspection.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/inspections/php/PluginInspection.java b/src/com/magento/idea/magento2plugin/inspections/php/PluginInspection.java index 556a161ca..c5e4dd744 100644 --- a/src/com/magento/idea/magento2plugin/inspections/php/PluginInspection.java +++ b/src/com/magento/idea/magento2plugin/inspections/php/PluginInspection.java @@ -30,14 +30,13 @@ import java.util.ArrayList; import org.jetbrains.annotations.NotNull; -@SuppressWarnings({"PMD.ExcessiveMethodLength", "PMD.NPathComplexity"}) +@SuppressWarnings({"PMD.ExcessiveMethodLength", "PMD.NPathComplexity", "PMD.CognitiveComplexity"}) public class PluginInspection extends PhpInspection { private static final String WRONG_PARAM_TYPE = "inspection.wrong_param_type"; - @NotNull @Override - public PsiElementVisitor buildVisitor( + public @NotNull PsiElementVisitor buildVisitor( final @NotNull ProblemsHolder problemsHolder, final boolean isOnTheFly ) { @@ -146,7 +145,7 @@ private void checkTargetMethod( final String targetClassMethodName, final Method targetMethod ) { - if (targetClassMethodName.equals(MagentoPhpClass.CONSTRUCT_METHOD_NAME)) { + if (MagentoPhpClass.CONSTRUCT_METHOD_NAME.equals(targetClassMethodName)) { problemsHolder.registerProblem( pluginMethod.getNameIdentifier(), inspectionBundle.message("inspection.plugin.error.constructMethod"), @@ -167,7 +166,7 @@ private void checkTargetMethod( ProblemHighlightType.ERROR ); } - if (!targetMethod.getAccess().toString().equals(AbstractPhpFile.PUBLIC_ACCESS)) { + if (!AbstractPhpFile.PUBLIC_ACCESS.equals(targetMethod.getAccess().toString())) { problemsHolder.registerProblem( pluginMethod.getNameIdentifier(), inspectionBundle.message("inspection.plugin.error.nonPublicMethod"), @@ -279,7 +278,7 @@ private void checkParametersCompatibility( if (declaredType.isEmpty()) { continue; } - if (!declaredType.equals(MagentoPhpClass.PHP_NULL)) { + if (!MagentoPhpClass.PHP_NULL.equals(declaredType)) { problemsHolder.registerProblem( pluginMethodParameter, PhpBundle.message( From a32bf89911d4fa5f43b097b0ae843aa6b8dd9af9 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 30 Nov 2021 17:03:40 +0100 Subject: [PATCH 024/124] 685: Code refactoring --- ...oduleDeclarationInModuleXmlInspection.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/inspections/xml/ModuleDeclarationInModuleXmlInspection.java b/src/com/magento/idea/magento2plugin/inspections/xml/ModuleDeclarationInModuleXmlInspection.java index b87e429ec..6af98f860 100644 --- a/src/com/magento/idea/magento2plugin/inspections/xml/ModuleDeclarationInModuleXmlInspection.java +++ b/src/com/magento/idea/magento2plugin/inspections/xml/ModuleDeclarationInModuleXmlInspection.java @@ -28,20 +28,22 @@ public class ModuleDeclarationInModuleXmlInspection extends XmlSuppressableInspectionTool { - @NotNull @Override - public PsiElementVisitor buildVisitor( + public @NotNull PsiElementVisitor buildVisitor( final @NotNull ProblemsHolder problemsHolder, final boolean isOnTheFly ) { return new XmlElementVisitor() { + @Override public void visitXmlAttributeValue(final XmlAttributeValue value) { final PsiFile file = value.getContainingFile(); final String filename = file.getName(); - if (!filename.equals(ModuleXml.FILE_NAME)) { + + if (!ModuleXml.FILE_NAME.equals(filename)) { return; } + if (!IsFileInEditableModuleUtil.execute(file)) { return; } @@ -49,21 +51,23 @@ public void visitXmlAttributeValue(final XmlAttributeValue value) { if (isSubTag(value, (XmlFile) file)) { return; } - final PsiDirectory etcDirectory = file.getParent(); + if (etcDirectory == null) { return; } - final String attributeName = XmlAttributeValuePattern.getLocalName(value); + if (attributeName != null && attributeName.equals(ModuleXml.MODULE_ATTR_NAME)) { final String expectedName = GetEditableModuleNameByRootFileUtil.execute(etcDirectory); final String actualName = value.getValue(); + if (actualName.equals(expectedName)) { return; } final InspectionBundle inspectionBundle = new InspectionBundle(); + problemsHolder.registerProblem( value, inspectionBundle.message( @@ -81,26 +85,27 @@ public void visitXmlAttributeValue(final XmlAttributeValue value) { protected boolean isSubTag(final XmlAttributeValue value, final XmlFile file) { final XmlAttribute xmlAttribute = PsiTreeUtil.getParentOfType(value, XmlAttribute.class); + if (xmlAttribute == null) { return true; } - final XmlTag xmlTag = PsiTreeUtil.getParentOfType(xmlAttribute, XmlTag.class); + if (xmlTag == null) { return true; } - final XmlDocument xmlDocument = file.getDocument(); + if (xmlDocument == null) { return true; } - final XmlTag xmlRootTag = xmlDocument.getRootTag(); + if (xmlRootTag == null) { return true; } - final XmlTag rootTag = PsiTreeUtil.getParentOfType(xmlTag, XmlTag.class); + return rootTag == null || !(rootTag.getName().equals(xmlRootTag.getName())); } } From 4dd58386c8f56b4ff91e8d28936e441330389d7d Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 30 Nov 2021 17:07:21 +0100 Subject: [PATCH 025/124] 685: Fixed empty PSI elements must not be passed to createDescriptor for ModuleDeclarationInModuleXmlInspection --- .../inspections/xml/ModuleDeclarationInModuleXmlInspection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/inspections/xml/ModuleDeclarationInModuleXmlInspection.java b/src/com/magento/idea/magento2plugin/inspections/xml/ModuleDeclarationInModuleXmlInspection.java index 6af98f860..0d0ea58fb 100644 --- a/src/com/magento/idea/magento2plugin/inspections/xml/ModuleDeclarationInModuleXmlInspection.java +++ b/src/com/magento/idea/magento2plugin/inspections/xml/ModuleDeclarationInModuleXmlInspection.java @@ -63,7 +63,7 @@ public void visitXmlAttributeValue(final XmlAttributeValue value) { = GetEditableModuleNameByRootFileUtil.execute(etcDirectory); final String actualName = value.getValue(); - if (actualName.equals(expectedName)) { + if (actualName.equals(expectedName) || actualName.trim().isEmpty()) { return; } final InspectionBundle inspectionBundle = new InspectionBundle(); From 44919871e7ff08d85c2d4a291f9d8598b01ab1b2 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 30 Nov 2021 18:31:15 +0100 Subject: [PATCH 026/124] 646: Fixed NullPointerException for the firstSortOrder.compareTo --- .../php/WebApiLineMarkerProvider.java | 48 ++++++++++++++++--- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java b/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java index dda93f5bb..ff6654430 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java +++ b/src/com/magento/idea/magento2plugin/linemarker/php/WebApiLineMarkerProvider.java @@ -10,6 +10,7 @@ import com.intellij.codeInsight.navigation.NavigationGutterIconBuilder; import com.intellij.psi.PsiElement; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.xml.XmlAttribute; import com.intellij.psi.xml.XmlTag; import com.jetbrains.php.lang.psi.elements.Method; import com.jetbrains.php.lang.psi.elements.PhpClass; @@ -180,15 +181,26 @@ private Map> extractRoutesForMethodRecursively( */ private void sortRoutes(final List routes) { routes.sort( - (firstTag, secondTag) -> { - final String substring = firstTag.getName().substring(2, 5); - final Integer firstSortOrder = httpMethodsSortOrder.get(substring); - final Integer secondSortOrder = httpMethodsSortOrder.get( - secondTag.getName().substring(2, 5) - ); + (tag1, tag2) -> { + final String firstUrl = GetTagAttributeValueUtil.getValue(tag1, "url"); + final String secondUrl = GetTagAttributeValueUtil.getValue(tag2, "url"); + final String method1 = GetTagAttributeValueUtil.getValue(tag1, "method"); + final String method2 = GetTagAttributeValueUtil.getValue(tag2, "method"); + + if (method1.isEmpty() || method2.isEmpty()) { + return firstUrl.compareTo(secondUrl); + } + + if (!httpMethodsSortOrder.containsKey(method1) + || !httpMethodsSortOrder.containsKey(method2)) { + return firstUrl.compareTo(secondUrl); + } + final Integer firstSortOrder = httpMethodsSortOrder.get(method1); + final Integer secondSortOrder = httpMethodsSortOrder.get(method2); + if (firstSortOrder.compareTo(secondSortOrder) == 0) { // Sort by route if HTTP methods are equal - return firstTag.getName().compareTo(secondTag.getName()); + return firstUrl.compareTo(secondUrl); } return firstSortOrder.compareTo(secondSortOrder); @@ -196,4 +208,26 @@ private void sortRoutes(final List routes) { ); } } + + @SuppressWarnings("PMD.UseUtilityClass") + private static class GetTagAttributeValueUtil { + + public static @NotNull String getValue( + final XmlTag tag, + final @NotNull String attributeName + ) { + final XmlAttribute attribute = tag.getAttribute(attributeName); + + if (attribute == null) { + return ""; + } + final String value = attribute.getValue(); + + if (value == null) { + return ""; + } + + return value.trim(); + } + } } From 69c42770ad3f4c79a6bc6e43b40515b173952ca5 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 30 Nov 2021 21:27:58 +0100 Subject: [PATCH 027/124] 626: Fixed Invalid column types provided exception during db_schema.xml file generation --- resources/magento2/validation.properties | 1 + .../generation/dialog/NewDbSchemaDialog.java | 11 +++++-- .../generator/DbSchemaXmlGenerator.java | 31 ++++++++++++++----- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/resources/magento2/validation.properties b/resources/magento2/validation.properties index 8fec08b55..2b1a894d8 100644 --- a/resources/magento2/validation.properties +++ b/resources/magento2/validation.properties @@ -38,3 +38,4 @@ validator.db.invalidTableNameLength=Table name must contain up to 64 characters validator.lowerSnakeCase=The {0} field must be of the lower snake case format validator.menuIdentifierInvalid=The menu identifier is invalid validator.someFieldsHaveErrors=Please, check the dialog. Some fields have errors +validator.dbSchema.invalidColumnType=Invalid ''{0}'' column type specified diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java index b5314a571..f48820135 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java @@ -7,6 +7,7 @@ import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiFile; import com.magento.idea.magento2plugin.actions.generation.NewDbSchemaAction; import com.magento.idea.magento2plugin.actions.generation.data.DbSchemaXmlData; import com.magento.idea.magento2plugin.actions.generation.data.ui.ComboBoxItemData; @@ -143,7 +144,11 @@ private void onOK() { getTableComment(), getColumns() ); - generateDbSchemaXmlFile(dbSchemaXmlData); + final PsiFile dbSchemaXmlFile = generateDbSchemaXmlFile(dbSchemaXmlData); + + if (dbSchemaXmlFile == null) { + return; + } generateWhitelistJsonFile(dbSchemaXmlData); } exit(); @@ -170,8 +175,8 @@ public static void open( * * @param dbSchemaXmlData DbSchemaXmlData */ - private void generateDbSchemaXmlFile(final @NotNull DbSchemaXmlData dbSchemaXmlData) { - new DbSchemaXmlGenerator( + private PsiFile generateDbSchemaXmlFile(final @NotNull DbSchemaXmlData dbSchemaXmlData) { + return new DbSchemaXmlGenerator( dbSchemaXmlData, project, moduleName diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/DbSchemaXmlGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/DbSchemaXmlGenerator.java index f394ebde5..fb91e1fbc 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/DbSchemaXmlGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/DbSchemaXmlGenerator.java @@ -15,23 +15,28 @@ import com.intellij.psi.xml.XmlTag; import com.magento.idea.magento2plugin.actions.generation.data.DbSchemaXmlData; import com.magento.idea.magento2plugin.actions.generation.generator.util.FindOrCreateDbSchemaXmlUtil; +import com.magento.idea.magento2plugin.bundles.CommonBundle; +import com.magento.idea.magento2plugin.bundles.ValidatorBundle; import com.magento.idea.magento2plugin.magento.files.ModuleDbSchemaXml; import com.magento.idea.magento2plugin.magento.packages.database.ColumnAttributes; import com.magento.idea.magento2plugin.magento.packages.database.TableColumnTypes; import java.util.HashMap; -import java.util.InputMismatchException; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Properties; +import javax.swing.JOptionPane; import org.jetbrains.annotations.NotNull; public class DbSchemaXmlGenerator extends FileGenerator { + private final Project project; private final String moduleName; private final DbSchemaXmlData dbSchemaXmlData; private final FindOrCreateDbSchemaXmlUtil findOrCreateDbSchemaXmlUtil; + private final ValidatorBundle validatorBundle; + private final CommonBundle commonBundle; private final List newTagsQueue; private final Map newTagsChildParentRelationMap; @@ -52,6 +57,8 @@ public DbSchemaXmlGenerator( this.project = project; this.moduleName = moduleName; this.dbSchemaXmlData = dbSchemaXmlData; + this.validatorBundle = new ValidatorBundle(); + this.commonBundle = new CommonBundle(); findOrCreateDbSchemaXmlUtil = new FindOrCreateDbSchemaXmlUtil(project); newTagsQueue = new LinkedList<>(); @@ -62,6 +69,7 @@ public DbSchemaXmlGenerator( @SuppressWarnings({ "PMD.NPathComplexity", "PMD.CyclomaticComplexity", + "PMD.CognitiveComplexity", "PMD.ExcessiveImports", "PMD.AvoidInstantiatingObjectsInLoops" }) @@ -99,32 +107,39 @@ public PsiFile generate(final String actionName) { primaryKeyData.putAll(columnData); } + final String columnName = columnData.get(ColumnAttributes.NAME.getName()); final String columnTypeValue = columnData.get(ColumnAttributes.TYPE.getName()); final TableColumnTypes columnType = TableColumnTypes.getByValue(columnTypeValue); if (columnType == null) { - throw new InputMismatchException( - "Invalid column types provided. Should be compatible with " - + TableColumnTypes.class + final String errorMessage = validatorBundle.message( + "validator.dbSchema.invalidColumnType", + columnName == null ? "" : columnName + + ); + JOptionPane.showMessageDialog( + null, + errorMessage, + commonBundle.message("common.error"), + JOptionPane.ERROR_MESSAGE ); + return null; } final Map attributes = new LinkedHashMap<>(); final List allowedColumns = ModuleDbSchemaXml.getAllowedAttributes(columnType); + for (final Map.Entry columnDataEntry : columnData.entrySet()) { if (allowedColumns.contains(columnDataEntry.getKey()) && !columnDataEntry.getValue().isEmpty()) { attributes.put(columnDataEntry.getKey(), columnDataEntry.getValue()); } } - final String columnIdentityValue = - columnData.get(ColumnAttributes.NAME.getName()); - findOrCreateTag( ModuleDbSchemaXml.XML_TAG_COLUMN, ColumnAttributes.NAME.getName(), tableTag, - columnIdentityValue, + columnName, attributes ); } From ce0f04fd60ec53c1317df272a10a6e3066099614 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Wed, 1 Dec 2021 12:48:22 +0100 Subject: [PATCH 028/124] 630: Code refactoring --- .../generation/references/PhpClassReferenceResolver.java | 2 +- .../generation/references/PhpClassReferenceStorage.java | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceResolver.java b/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceResolver.java index ed952c129..6eb4601cd 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceResolver.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceResolver.java @@ -85,7 +85,7 @@ protected void processReference( final @NotNull PsiElement identifier ) { if (!PhpType.isPrimitiveType(name)) { - this.myCandidatesToImportStorage.processReference(name, fqn, identifier); + this.myCandidatesToImportStorage.processReference(name, fqn); } } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceStorage.java b/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceStorage.java index 726988cc6..cba336224 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceStorage.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceStorage.java @@ -5,15 +5,13 @@ package com.magento.idea.magento2plugin.actions.generation.references; -import com.intellij.psi.PsiElement; -import com.jetbrains.php.refactoring.importReferences.PhpClassReferenceExtractor; import gnu.trove.THashMap; import java.util.Map; import java.util.Set; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class PhpClassReferenceStorage extends PhpClassReferenceExtractor { +public class PhpClassReferenceStorage { private final Map myReferences = new THashMap<>(); @@ -22,12 +20,10 @@ public class PhpClassReferenceStorage extends PhpClassReferenceExtractor { * * @param name String * @param fqn String - * @param identifier PsiElement */ protected void processReference( final @NotNull String name, - final @NotNull String fqn, - final @NotNull PsiElement identifier + final @NotNull String fqn ) { this.myReferences.put(name, fqn); } From 3fc2247c372c62b7cc098a2209df91481a54338a Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 7 Dec 2021 13:50:30 +0200 Subject: [PATCH 029/124] 630: Added default values support for all types of plugins --- .../util/ConvertPluginParamsToString.java | 14 ++++++- .../PhpClassReferenceExtractor.java | 37 +++++++++++++++++++ .../references/PhpClassReferenceResolver.java | 28 +++++++------- 3 files changed, 64 insertions(+), 15 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/code/util/ConvertPluginParamsToString.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/code/util/ConvertPluginParamsToString.java index c9d391603..56de40d0b 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/code/util/ConvertPluginParamsToString.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/code/util/ConvertPluginParamsToString.java @@ -66,7 +66,19 @@ public static String execute( if (element instanceof Parameter) { String parameterText = PhpCodeUtil.paramToString(element); - if (parameterText.contains(Package.fqnSeparator)) { + // Parameter has default value. + if (parameterText.contains("=")) { + final String[] paramParts = parameterText.split("="); + parameterText = paramParts[0]; + parameterText += " = "; + String defaultValue = paramParts[1]; + + if (defaultValue.contains(Package.fqnSeparator)) { + final String[] fqnArray = defaultValue.split("\\\\"); + defaultValue = fqnArray[fqnArray.length - 1]; + } + parameterText += defaultValue; + } else if (parameterText.contains(Package.fqnSeparator)) { final String[] fqnArray = parameterText.split("\\\\"); parameterText = fqnArray[fqnArray.length - 1]; } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceExtractor.java b/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceExtractor.java index 6766b38cb..78f08b0e2 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceExtractor.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceExtractor.java @@ -9,6 +9,9 @@ import com.jetbrains.php.lang.psi.elements.Parameter; import com.jetbrains.php.lang.psi.elements.PhpClass; import com.jetbrains.php.lang.psi.elements.PhpReturnType; +import com.jetbrains.php.lang.psi.elements.impl.ClassConstImpl; +import com.jetbrains.php.lang.psi.elements.impl.ClassConstantReferenceImpl; +import com.jetbrains.php.lang.psi.elements.impl.ParameterImpl; import com.jetbrains.php.lang.psi.resolve.types.PhpType; import com.jetbrains.php.lang.psi.visitors.PhpElementVisitor; import java.util.Collection; @@ -39,6 +42,7 @@ public void visitPhpClass(final PhpClass phpClass) { @Override public void visitPhpParameter(final Parameter parameter) { PhpClassReferenceExtractor.this.processParameterReference(parameter); + PhpClassReferenceExtractor.this.processUsedForDefaultValueTypeReference(parameter); } /** @@ -77,6 +81,39 @@ public void processParameterReference(final @NotNull Parameter parameter) { this.processReference(getNameFromFqn(complexType), complexType, parameter); } + /** + * Process reference for complex type if it is exists in the default parameter value. + * + * @param parameter Parameter + */ + public void processUsedForDefaultValueTypeReference(final @NotNull Parameter parameter) { + if (!(parameter instanceof ParameterImpl)) { + return; + } + final PsiElement defaultValue = parameter.getDefaultValue(); + + if (!(defaultValue instanceof ClassConstantReferenceImpl)) { + return; + } + final PsiElement constant = ((ClassConstantReferenceImpl) defaultValue).resolve(); + + if (!(constant instanceof ClassConstImpl)) { + return; + } + final PhpClass usedTypeClass = ((ClassConstImpl) constant).getContainingClass(); + + if (usedTypeClass == null) { + return; + } + final String complexType = extractComplexType(usedTypeClass.getType()); + + if (complexType == null) { + return; + } + + this.processReference(getNameFromFqn(complexType), complexType, parameter); + } + /** * Process reference for non primitive return type. * diff --git a/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceResolver.java b/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceResolver.java index 6eb4601cd..70975b599 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceResolver.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceResolver.java @@ -142,22 +142,22 @@ private Map importWithConflictResolve( referencesToReplace.put(name, originalFqn); } else { final String importedFqn = aliases.get(name); - if (!PhpLangUtil.equalsClassNames(importedFqn, originalFqn)) { - if (importedFqn != null) { - final String originalName = PhpLangUtil.toShortName(originalFqn); - final String fqnForOriginalName = aliases.get(originalName); - if (fqnForOriginalName != null - && !PhpLangUtil.equalsClassNames(fqnForOriginalName, originalFqn)) { - referencesToReplace.put(name, originalFqn); - } else { - referencesToReplace.put(name, originalName); - if (fqnForOriginalName == null) { - insertUseStatement(scopeHolder, originalName, originalFqn); - } - } + + if (importedFqn != null + && !PhpLangUtil.equalsClassNames(importedFqn, originalFqn)) { + final String originalName = PhpLangUtil.toShortName(originalFqn); + final String fqnForOriginalName = aliases.get(originalName); + if (fqnForOriginalName != null + && !PhpLangUtil.equalsClassNames(fqnForOriginalName, originalFqn)) { + referencesToReplace.put(name, originalFqn); } else { - insertUseStatement(scopeHolder, name, originalFqn); + referencesToReplace.put(name, originalName); + if (fqnForOriginalName == null) { + insertUseStatement(scopeHolder, originalName, originalFqn); + } } + } else { + insertUseStatement(scopeHolder, name, originalFqn); } } } From 4fd849e8581794eaec4bf774d370bbb59b05af0e Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 7 Dec 2021 14:16:41 +0200 Subject: [PATCH 030/124] 630: Fixed wrong array type for method arguments --- .../generator/code/util/ConvertPluginParamsToString.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/code/util/ConvertPluginParamsToString.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/code/util/ConvertPluginParamsToString.java index 56de40d0b..c9299bc7f 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/code/util/ConvertPluginParamsToString.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/code/util/ConvertPluginParamsToString.java @@ -7,6 +7,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.util.text.Strings; import com.intellij.psi.PsiElement; import com.jetbrains.php.codeInsight.PhpCodeInsightUtil; import com.jetbrains.php.config.PhpLanguageFeature; @@ -52,7 +53,11 @@ public static String execute( String returnType = PhpTypeMetadataParserUtil.getMethodReturnType(myMethod); if (returnType != null && PhpClassGeneratorUtil.isValidFqn(returnType)) { - returnType = PhpClassGeneratorUtil.getNameFromFqn(returnType); + if (Strings.endsWith(returnType, "[]")) { + returnType = "array"; + } else { + returnType = PhpClassGeneratorUtil.getNameFromFqn(returnType); + } } final Iterator parametersIterator = parameters.iterator(); int iterator = 0; From 6b7a9bfc1c8096273a7137c185dbccdbbc8c8edd Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 7 Dec 2021 14:28:42 +0200 Subject: [PATCH 031/124] 630: Suppressed style checks --- .../code/util/ConvertPluginParamsToString.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/code/util/ConvertPluginParamsToString.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/code/util/ConvertPluginParamsToString.java index c9299bc7f..004f6b0f0 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/code/util/ConvertPluginParamsToString.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/code/util/ConvertPluginParamsToString.java @@ -43,7 +43,12 @@ private ConvertPluginParamsToString() {} * * @return String */ - @SuppressWarnings({"PMD.NPathComplexity", "PMD.CyclomaticComplexity", "PMD.ConfusingTernary"}) + @SuppressWarnings({ + "PMD.NPathComplexity", + "PMD.CyclomaticComplexity", + "PMD.CognitiveComplexity", + "PMD.ConfusingTernary" + }) public static String execute( final Collection parameters, final @NotNull Plugin.PluginType type, @@ -75,14 +80,14 @@ public static String execute( if (parameterText.contains("=")) { final String[] paramParts = parameterText.split("="); parameterText = paramParts[0]; - parameterText += " = "; + parameterText += " = ";//NOPMD String defaultValue = paramParts[1]; if (defaultValue.contains(Package.fqnSeparator)) { final String[] fqnArray = defaultValue.split("\\\\"); defaultValue = fqnArray[fqnArray.length - 1]; } - parameterText += defaultValue; + parameterText += defaultValue;//NOPMD } else if (parameterText.contains(Package.fqnSeparator)) { final String[] fqnArray = parameterText.split("\\\\"); parameterText = fqnArray[fqnArray.length - 1]; From 49295c20b8bac2c80d3ac74af7358b79ec1ac19c Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 7 Dec 2021 15:13:19 +0200 Subject: [PATCH 032/124] Updated changelog for release 4.2.1 --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f9feb4f36..71c20a577 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,19 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0). ## 4.2.1 +### Fixed + +- Fixed ArrayIndexOutOfBoundsException when used Copy Path/Reference action on the requirejs-config.js file in [#808](https://github.com/magento/magento2-phpstorm-plugin/pull/808) +- Fixed dialog disposition issue in [#811](https://github.com/magento/magento2-phpstorm-plugin/pull/811) +- Fixed stack overflow error for line-marker providers in [#813](https://github.com/magento/magento2-phpstorm-plugin/pull/813) +- Fixed stub ids not found for key in index in [#814](https://github.com/magento/magento2-phpstorm-plugin/pull/814) +- Fixed failed to build require-js index in [815](https://github.com/magento/magento2-phpstorm-plugin/pull/815) +- Fixed empty psi elements in the plugin inspections in [#816](https://github.com/magento/magento2-phpstorm-plugin/pull/816) +- Fixed empty psi element in module xml inspection in [#817](https://github.com/magento/magento2-phpstorm-plugin/pull/817) +- Fixed NullPointerException for the firstSortOrder.compareTo in [#818](https://github.com/magento/magento2-phpstorm-plugin/pull/818) +- Fixed invalid column types provided exception during db_schema.xml file generation in [#819](https://github.com/magento/magento2-phpstorm-plugin/pull/819) +- Fixed method designed for fully qualified names only in [#830](https://github.com/magento/magento2-phpstorm-plugin/pull/830) + ## 4.2.0 ### Added From bf6dd121c2be720ef026cc59932844b9b9cda9ea Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 7 Dec 2021 15:50:11 +0200 Subject: [PATCH 033/124] Initial commit for 4.2.2-develop --- .github/workflows/gradle.yml | 2 +- CHANGELOG.md | 2 ++ README.md | 2 +- build.gradle | 2 +- resources/META-INF/plugin.xml | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index a383bb3e5..9accc17e7 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -5,7 +5,7 @@ name: Run automated tests on: pull_request: - branches: [ master, 4.2.1-develop ] + branches: [ master, 4.2.2-develop ] jobs: build-linux: diff --git a/CHANGELOG.md b/CHANGELOG.md index 71c20a577..5a1856792 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0). +## 4.2.2 + ## 4.2.1 ### Fixed diff --git a/README.md b/README.md index 5cd319777..c89899b06 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ 1. Check out this repository 1. Open a folder with the project in the IntelliJ Ultimate using the `open` action button. -1. Make sure that you on the latest develop branch (e.g `4.2.1-develop`) +1. Make sure that you on the latest develop branch (e.g `4.2.2-develop`) 1. Right-click on the `build.gradle` file, choose "Import Gradle project" (if this is not exist look for "Build module ''") (you need to have Gradle plugin installed) 1. Check if the right SDK version is used for the project. - Current Java version for the project is **java 11**, so you should additionally download **SDK 11** and choose it in the module settings: `Right click by the project root > Open Module Settings > Project Settings > Project > Project SDK` diff --git a/build.gradle b/build.gradle index d9a1e7a3d..51d91d558 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ repositories { } group 'com.magento.idea' -version '4.2.1' +version '4.2.2' apply plugin: 'org.jetbrains.intellij' apply plugin: 'java' diff --git a/resources/META-INF/plugin.xml b/resources/META-INF/plugin.xml index 28297c0f6..99ee8d8ba 100644 --- a/resources/META-INF/plugin.xml +++ b/resources/META-INF/plugin.xml @@ -7,7 +7,7 @@ com.magento.idea.magento2plugin Magento PhpStorm - 4.2.1 + 4.2.2 Magento Inc. Date: Mon, 13 Dec 2021 18:30:30 +0200 Subject: [PATCH 034/124] 633: Fixed NoSuchElementException when creating new controller --- .../dialog/NewControllerDialog.java | 3 ++- .../ModuleControllerClassGenerator.java | 4 ++++ .../actions/groups/NewModuleFileGroup.java | 19 +++++++++++++++---- .../magento2plugin/indexes/ModuleIndex.java | 7 ++++++- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.java index c5e88c022..818915cab 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.java @@ -249,12 +249,13 @@ private String getNamespace() { ); return String.format( - "%s%s%s%s%s%s", + "%s%s%s%s%s%s%s", parts[0], Package.fqnSeparator, parts[1], Package.fqnSeparator, directoryPart, + Package.fqnSeparator, controllerPart ); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleControllerClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleControllerClassGenerator.java index a5142cb3d..89518a92e 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleControllerClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleControllerClassGenerator.java @@ -148,6 +148,10 @@ private String getControllerFqn() { private PhpClass createControllerClass(final String actionName) { PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(getControllerModule()); + + if (parentDirectory == null) { + return null; + } final PsiFile controllerFile; final String[] controllerDirectories = data.getActionDirectory().split( File.separator diff --git a/src/com/magento/idea/magento2plugin/actions/groups/NewModuleFileGroup.java b/src/com/magento/idea/magento2plugin/actions/groups/NewModuleFileGroup.java index 8d3db82df..e97d29bf0 100644 --- a/src/com/magento/idea/magento2plugin/actions/groups/NewModuleFileGroup.java +++ b/src/com/magento/idea/magento2plugin/actions/groups/NewModuleFileGroup.java @@ -14,6 +14,7 @@ import com.intellij.psi.PsiElement; import com.magento.idea.magento2plugin.MagentoIcons; import com.magento.idea.magento2plugin.actions.generation.util.IsClickedDirectoryInsideProject; +import com.magento.idea.magento2plugin.indexes.ModuleIndex; import com.magento.idea.magento2plugin.project.Settings; import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil; import javax.swing.Icon; @@ -45,7 +46,10 @@ public void update(final AnActionEvent event) { } final Project project = event.getData(PlatformDataKeys.PROJECT); - if (!IsClickedDirectoryInsideProject.getInstance() + + if (project == null + || !Settings.isEnabled(project) + || !IsClickedDirectoryInsideProject.getInstance() .execute(project, (PsiDirectory) psiElement)) { event.getPresentation().setVisible(false); return; @@ -53,10 +57,17 @@ public void update(final AnActionEvent event) { final String moduleName = GetModuleNameByDirectoryUtil .execute((PsiDirectory) psiElement, project); - if (Settings.isEnabled(project) && moduleName != null) { - event.getPresentation().setVisible(true); - return; + + if (moduleName != null) { + final PsiDirectory moduleDirectory = new ModuleIndex(project) + .getModuleDirectoryByModuleName(moduleName); + + if (moduleDirectory != null) { + event.getPresentation().setVisible(true); + return; + } } + event.getPresentation().setVisible(false); } } diff --git a/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java b/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java index c3facb976..f008a95c1 100644 --- a/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java +++ b/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.jetbrains.annotations.Nullable; public final class ModuleIndex { @@ -116,7 +117,7 @@ private List getNames( * @param moduleName String * @return PsiDirectory */ - public PsiDirectory getModuleDirectoryByModuleName(final String moduleName) { + public @Nullable PsiDirectory getModuleDirectoryByModuleName(final String moduleName) { final FileBasedIndex index = FileBasedIndex .getInstance(); final Collection files = index.getContainingFiles( @@ -126,6 +127,10 @@ public PsiDirectory getModuleDirectoryByModuleName(final String moduleName) { GlobalSearchScope.allScope(project), PhpFileType.INSTANCE )); + + if (files.isEmpty()) { + return null; + } final VirtualFile virtualFile = files.iterator().next(); return PsiManager.getInstance(project).findDirectory(virtualFile.getParent()); From 7ac6a612af0b597ddea2adef6e8880c4bb0729b5 Mon Sep 17 00:00:00 2001 From: Serhii Akulov Date: Wed, 15 Dec 2021 14:24:34 +0200 Subject: [PATCH 035/124] 797: plugin inspection null pointer exception --- .../inspections/xml/PluginDeclarationInspection.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/inspections/xml/PluginDeclarationInspection.java b/src/com/magento/idea/magento2plugin/inspections/xml/PluginDeclarationInspection.java index 33a325c15..2ea42db64 100644 --- a/src/com/magento/idea/magento2plugin/inspections/xml/PluginDeclarationInspection.java +++ b/src/com/magento/idea/magento2plugin/inspections/xml/PluginDeclarationInspection.java @@ -9,10 +9,7 @@ import com.intellij.codeInspection.ProblemsHolder; import com.intellij.ide.highlighter.XmlFileType; import com.intellij.openapi.util.Pair; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiElementVisitor; -import com.intellij.psi.PsiFile; -import com.intellij.psi.XmlElementVisitor; +import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.xml.XmlAttribute; @@ -175,6 +172,11 @@ private List> fetchModuleNamesWhereSamePluginNameUsed( final PsiFile file ) { final List> modulesName = new ArrayList<>(); + final PsiDirectory parentDirectory = file.getContainingDirectory(); + + if (parentDirectory == null) { + return modulesName; + } final String currentFileDirectory = file.getContainingDirectory().toString(); final String currentFileFullPath = currentFileDirectory.concat(File.separator).concat(file.getName()); From 852690e4b0f369a92f40744495ddc0eb89cd73a9 Mon Sep 17 00:00:00 2001 From: Serhii Akulov Date: Wed, 15 Dec 2021 14:32:38 +0200 Subject: [PATCH 036/124] 797: fix import --- .../inspections/xml/PluginDeclarationInspection.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/inspections/xml/PluginDeclarationInspection.java b/src/com/magento/idea/magento2plugin/inspections/xml/PluginDeclarationInspection.java index 2ea42db64..5ffca23d1 100644 --- a/src/com/magento/idea/magento2plugin/inspections/xml/PluginDeclarationInspection.java +++ b/src/com/magento/idea/magento2plugin/inspections/xml/PluginDeclarationInspection.java @@ -9,7 +9,11 @@ import com.intellij.codeInspection.ProblemsHolder; import com.intellij.ide.highlighter.XmlFileType; import com.intellij.openapi.util.Pair; -import com.intellij.psi.*; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.PsiFile; +import com.intellij.psi.XmlElementVisitor; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.xml.XmlAttribute; From 2830e4822b8cc7246aa14f0e67db8d95538a2f00 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Wed, 15 Dec 2021 16:06:09 +0200 Subject: [PATCH 037/124] 838: Fixed java.lang.NoClassDefFoundError for com.intellij.lang.jsgraphql.GraphQLIcons --- build.gradle | 4 +-- ...raphQlResolverUsageLineMarkerProvider.java | 35 ++++++++++--------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/build.gradle b/build.gradle index d9a1e7a3d..2cba0832d 100644 --- a/build.gradle +++ b/build.gradle @@ -41,7 +41,7 @@ intellij { 'properties', 'CSS', 'JavaScriptLanguage', - 'com.intellij.lang.jsgraphql:3.0.0', + 'com.intellij.lang.jsgraphql:3.1.2', 'platform-images', 'copyright' ] @@ -69,7 +69,7 @@ sourceSets { publishPlugin { token = System.getenv("MAGENTO_PHPSTORM_intellijPublishToken") if (Boolean.valueOf(System.getenv("MAGENTO_PHPSTORM_isAlpha"))) { - channels 'alpha' + channels = ['alpha'] version = version + "-alpha-" + getDate() } } diff --git a/src/com/magento/idea/magento2plugin/linemarker/php/GraphQlResolverUsageLineMarkerProvider.java b/src/com/magento/idea/magento2plugin/linemarker/php/GraphQlResolverUsageLineMarkerProvider.java index 3978532e7..005667324 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/php/GraphQlResolverUsageLineMarkerProvider.java +++ b/src/com/magento/idea/magento2plugin/linemarker/php/GraphQlResolverUsageLineMarkerProvider.java @@ -2,50 +2,51 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + package com.magento.idea.magento2plugin.linemarker.php; import com.intellij.codeInsight.daemon.LineMarkerInfo; import com.intellij.codeInsight.daemon.LineMarkerProvider; import com.intellij.codeInsight.navigation.NavigationGutterIconBuilder; -import com.intellij.lang.jsgraphql.GraphQLIcons; +import com.intellij.lang.jsgraphql.icons.GraphQLIcons; import com.intellij.psi.PsiElement; import com.intellij.psi.util.PsiTreeUtil; import com.jetbrains.php.lang.psi.elements.PhpClass; import com.magento.idea.magento2plugin.project.Settings; import com.magento.idea.magento2plugin.util.magento.graphql.GraphQlUsagesCollector; import com.magento.idea.magento2plugin.util.magento.graphql.GraphQlUtil; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - import java.util.Collection; import java.util.List; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class GraphQlResolverUsageLineMarkerProvider implements LineMarkerProvider { - @Nullable + @Override - public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement psiElement) { + public @Nullable LineMarkerInfo getLineMarkerInfo(final @NotNull PsiElement psiElement) { return null; } @Override - public void collectSlowLineMarkers(@NotNull List psiElements, @NotNull Collection> collection) { - if (psiElements.size() > 0) { - if (!Settings.isEnabled(psiElements.get(0).getProject())) { - return; - } + public void collectSlowLineMarkers( + final @NotNull List psiElements, + final @NotNull Collection> collection + ) { + if (!psiElements.isEmpty() && !Settings.isEnabled(psiElements.get(0).getProject())) { + return; } - for (PsiElement psiElement : psiElements) { + for (final PsiElement psiElement : psiElements) { if (psiElement instanceof PhpClass) { - List results; - if (!GraphQlUtil.isResolver((PhpClass) psiElement)) { return; } - GraphQlUsagesCollector collector = new GraphQlUsagesCollector(); - results = collector.getGraphQLUsages((PhpClass) psiElement); + final GraphQlUsagesCollector collector = new GraphQlUsagesCollector();//NOPMD + final List results = collector.getGraphQLUsages( + (PhpClass) psiElement + ); - if (results.size() > 0 ) { + if (!results.isEmpty()) { collection.add(NavigationGutterIconBuilder .create(GraphQLIcons.FILE) .setTargets(results) From e582ca8cf5dd5e29d336237e280588c0ed27c367 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Wed, 15 Dec 2021 17:14:48 +0200 Subject: [PATCH 038/124] 633: Added additional checks --- .../generator/CLICommandClassGenerator.java | 18 +++++++++++++++--- .../generator/CronjobClassGenerator.java | 8 ++++++-- .../generator/MessageQueueClassGenerator.java | 4 ++++ .../generator/ModuleBlockClassGenerator.java | 7 +++++++ .../generator/ModuleComposerJsonGenerator.java | 13 +++++++++---- .../ModuleEmailTemplateHtmlGenerator.java | 7 ++++++- .../ModuleGraphQlResolverClassGenerator.java | 6 +++++- .../ModuleViewModelClassGenerator.java | 6 ++++++ .../generator/NewEntityLayoutGenerator.java | 4 ++++ .../generator/ObserverClassGenerator.java | 6 +++++- .../generator/OverrideInThemeGenerator.java | 10 ++++++++-- .../generation/generator/PhpFileGenerator.java | 10 +++++++++- .../generator/PluginClassGenerator.java | 7 ++++++- .../generator/PreferenceClassGenerator.java | 4 ++++ .../generation/generator/QueryGenerator.java | 4 ++++ .../UiComponentFormButtonBlockGenerator.java | 4 ++++ .../generator/UiComponentFormGenerator.java | 10 ++++++---- .../generator/UiComponentGridXmlGenerator.java | 3 +++ .../generator/util/FindOrCreateAclXml.java | 9 ++++++--- .../util/FindOrCreateCronGroupXml.java | 4 ++++ .../generator/util/FindOrCreateCrontabXml.java | 4 ++++ .../FindOrCreateDbSchemaWhitelistJson.java | 4 ++++ .../util/FindOrCreateDbSchemaXmlUtil.java | 9 ++++++--- .../generator/util/FindOrCreateDiXml.java | 9 ++++++--- .../util/FindOrCreateEmailTemplatesXml.java | 4 ++++ .../generator/util/FindOrCreateEventsXml.java | 8 ++++++-- .../generator/util/FindOrCreateLayoutXml.java | 9 ++++++--- .../generator/util/FindOrCreateMenuXml.java | 9 ++++++--- .../generator/util/FindOrCreateQueueXml.java | 4 ++++ .../generator/util/FindOrCreateRoutesXml.java | 9 ++++++--- .../xml/WebApiDeclarationGenerator.java | 13 +++++++++++++ 31 files changed, 186 insertions(+), 40 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/CLICommandClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/CLICommandClassGenerator.java index 7e00fe79a..862688f65 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/CLICommandClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/CLICommandClassGenerator.java @@ -18,6 +18,7 @@ import com.magento.idea.magento2plugin.magento.files.CLICommandTemplate; import java.util.Properties; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; @SuppressWarnings({ "PMD.AvoidUncheckedExceptionsInSignatures", @@ -69,11 +70,17 @@ public PsiFile generate(final String actionName) throws RuntimeException { return cliCommandFile; } - private PhpFile createCLICommandClass(final String actionName) { + private @Nullable PhpFile createCLICommandClass(final String actionName) { + final PsiDirectory parentDirectory = getParentDirectory(); + + if (parentDirectory == null) { + return null; + } + final PsiFile cliCommandFile = fileGenerator.generate( this.getCLICommandTemplate(), getAttributes(), - this.getParentDirectory(), + parentDirectory, actionName ); @@ -82,9 +89,14 @@ private PhpFile createCLICommandClass(final String actionName) { private PsiDirectory getParentDirectory() { final String moduleName = this.phpClassData.getModuleName(); - final String[] subDirectories = this.phpClassData.getParentDirectory().split("/"); PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(moduleName); + + if (parentDirectory == null) { + return null; + } + final String[] subDirectories = this.phpClassData.getParentDirectory().split("/"); + for (final String subDirectory : subDirectories) { parentDirectory = dirGenerator.findOrCreateSubdirectory(parentDirectory, subDirectory); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/CronjobClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/CronjobClassGenerator.java index 49010dd5e..0b1ea3350 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/CronjobClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/CronjobClassGenerator.java @@ -89,12 +89,16 @@ protected void fillAttributes(final Properties attributes) { * @return PhpFile */ private PhpFile createCronjobClass(final String actionName) { - final String cronjobClassName = this.cronjobClassData.getClassName(); final String moduleName = this.cronjobClassData.getModuleName(); - final String[] cronjobSubDirectories = this.cronjobClassData.getDirectory().split("/"); PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(moduleName); + if (parentDirectory == null) { + return null; + } + final String cronjobClassName = this.cronjobClassData.getClassName(); + final String[] cronjobSubDirectories = this.cronjobClassData.getDirectory().split("/"); + for (final String cronjobSubDirectory: cronjobSubDirectories) { parentDirectory = directoryGenerator .findOrCreateSubdirectory(parentDirectory, cronjobSubDirectory); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java index 52eb307dc..b1c21c62a 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java @@ -114,6 +114,10 @@ protected void fillAttributes(final Properties attributes) { private PhpClass createHandlerClass(final String actionName) { PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(this.moduleName); + + if (parentDirectory == null) { + return null; + } final PsiFile handlerFile; final String[] handlerDirectories = messageQueueClassDataName.getPath().split( File.separator diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleBlockClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleBlockClassGenerator.java index d6b7e31e8..9a3b09b2c 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleBlockClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleBlockClassGenerator.java @@ -58,6 +58,7 @@ public ModuleBlockClassGenerator( * @param actionName String * @return PsiFile */ + @Override public PsiFile generate(final String actionName) { final String errorTitle = commonBundle.message("common.error"); final PhpClass block = GetPhpClassByFQN.getInstance(project).execute(getBlockFqn()); @@ -106,7 +107,12 @@ private String getBlockFqn() { private PhpFile createBlockClass(final String actionName) { PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(getBlockModule()); + + if (parentDirectory == null) { + return null; + } final String[] blockDirectories = blockFileData.getBlockDirectory().split(File.separator); + for (final String blockDirectory: blockDirectories) { parentDirectory = directoryGenerator.findOrCreateSubdirectory( parentDirectory, @@ -127,6 +133,7 @@ private PhpFile createBlockClass(final String actionName) { return (PhpFile) blockFile; } + @Override protected void fillAttributes(final Properties attributes) { final String blockClassName = blockFileData.getBlockClassName(); attributes.setProperty("NAME", blockClassName); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleComposerJsonGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleComposerJsonGenerator.java index 736287dc4..a6fd7c07a 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleComposerJsonGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleComposerJsonGenerator.java @@ -10,6 +10,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiFile; import com.magento.idea.magento2plugin.actions.generation.data.ModuleComposerJsonData; import com.magento.idea.magento2plugin.actions.generation.generator.data.ModuleDirectoriesData; @@ -120,8 +121,8 @@ private String getDependenciesString(final List dependenciesList) { final Object[] dependencies = dependenciesList.toArray(); result = result.concat(ComposerJson.DEFAULT_DEPENDENCY); final boolean noDependency = - dependencies.length == 1 && dependencies[0].equals( - ComposerJson.NO_DEPENDENCY_LABEL + dependencies.length == 1 && ComposerJson.NO_DEPENDENCY_LABEL.equals( + dependencies[0] ); if (dependencies.length == 0 || noDependency) { result = result.concat("\n"); @@ -161,8 +162,12 @@ private Pair getDependencyData( "_-", "/" ); try { - final PsiFile virtualFile = moduleIndex.getModuleDirectoryByModuleName(dependency) - .findFile(ComposerJson.FILE_NAME); + final PsiDirectory moduleDir = moduleIndex.getModuleDirectoryByModuleName(dependency); + + if (moduleDir == null) { + return Pair.create("", ""); + } + final PsiFile virtualFile = moduleDir.findFile(ComposerJson.FILE_NAME); if (virtualFile != null) { //NOPMD final VirtualFile composerJsonFile = virtualFile.getVirtualFile(); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleEmailTemplateHtmlGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleEmailTemplateHtmlGenerator.java index babb32fa7..f3e53801a 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleEmailTemplateHtmlGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleEmailTemplateHtmlGenerator.java @@ -51,6 +51,7 @@ public ModuleEmailTemplateHtmlGenerator( * @param actionName Action name * @return PsiFile */ + @Override public PsiFile generate(final String actionName) { final PsiFile templateFile = FileBasedIndexUtil.findModuleViewFile( this.emailTemplateData.getFileName(), @@ -67,6 +68,10 @@ public PsiFile generate(final String actionName) { PsiDirectory parentDirectory = this.moduleIndex.getModuleDirectoryByModuleName( this.emailTemplateData.getModule() ); + + if (parentDirectory == null) { + return null; + } final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleViewDir); @@ -96,7 +101,7 @@ protected void fillAttributes(final Properties attributes) { attributes.setProperty("SUBJECT", emailTemplateData.getSubject()); attributes.setProperty("TYPE", emailTemplateData.getType()); - if (emailTemplateData.getType().equals(EmailTemplateHtml.HTML_TYPE)) { + if (EmailTemplateHtml.HTML_TYPE.equals(emailTemplateData.getType())) { attributes.setProperty("HTML_TYPE", "true"); } } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleGraphQlResolverClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleGraphQlResolverClassGenerator.java index beb89cef1..b87da10d9 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleGraphQlResolverClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleGraphQlResolverClassGenerator.java @@ -117,7 +117,7 @@ private int getInsertPos(final PhpClass graphQlResolverClass) { LeafPsiElement.class ); for (final LeafPsiElement leafPsiElement: leafElements) { - if (!leafPsiElement.getText().equals(MagentoPhpClass.CLOSING_TAG)) { + if (!MagentoPhpClass.CLOSING_TAG.equals(leafPsiElement.getText())) { continue; } insertPos = leafPsiElement.getTextOffset(); @@ -128,6 +128,10 @@ private int getInsertPos(final PhpClass graphQlResolverClass) { private PhpClass createGraphQlResolverClass(final String actionName) { PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(graphQlResolverFileData.getGraphQlResolverModule()); + + if (parentDirectory == null) { + return null; + } final String[] graphQlResolverDirectories = graphQlResolverFileData .getGraphQlResolverDirectory().split(File.separator); for (final String graphQlResolverDirectory: graphQlResolverDirectories) { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleViewModelClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleViewModelClassGenerator.java index a83ba7724..0313ebb1c 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleViewModelClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleViewModelClassGenerator.java @@ -58,6 +58,7 @@ public ModuleViewModelClassGenerator( * @param actionName String * @return PsiFile */ + @Override public PsiFile generate(final String actionName) { final PhpClass block = GetPhpClassByFQN.getInstance(project).execute(getViewModelFqn()); final String errorTitle = commonBundle.message("common.error"); @@ -106,6 +107,10 @@ private String getViewModelFqn() { private PhpFile createViewModelClass(final String actionName) { PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(getViewModelModule()); + + if (parentDirectory == null) { + return null; + } final String[] viewModelDirectories = viewModelFileData.getViewModelDirectory() .split(File.separator); for (final String viewModelDirectory: viewModelDirectories) { @@ -128,6 +133,7 @@ private PhpFile createViewModelClass(final String actionName) { return (PhpFile) viewModelFile; } + @Override protected void fillAttributes(final Properties attributes) { final String viewModelClassName = viewModelFileData.getViewModelClassName(); attributes.setProperty("NAME", viewModelClassName); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/NewEntityLayoutGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/NewEntityLayoutGenerator.java index 4587a05d2..7fdfe0f47 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/NewEntityLayoutGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/NewEntityLayoutGenerator.java @@ -88,6 +88,10 @@ public PsiFile generate(final @NotNull String actionName) { final PsiDirectory moduleBaseDir = moduleIndex.getModuleDirectoryByModuleName( data.getModuleName() ); + + if (moduleBaseDir == null) { + return null; + } final PsiDirectory layoutBaseDir = directoryGenerator.findOrCreateSubdirectories( moduleBaseDir, file.getDirectory() diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ObserverClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ObserverClassGenerator.java index da453a7a7..8ecfe692e 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ObserverClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ObserverClassGenerator.java @@ -122,7 +122,7 @@ private int getInsertPos(final PhpClass observerClass) { LeafPsiElement.class ); for (final LeafPsiElement leafPsiElement: leafElements) { - if (!leafPsiElement.getText().equals(MagentoPhpClass.CLOSING_TAG)) { + if (!MagentoPhpClass.CLOSING_TAG.equals(leafPsiElement.getText())) { continue; } insertPos = leafPsiElement.getTextOffset(); @@ -133,6 +133,10 @@ private int getInsertPos(final PhpClass observerClass) { private PhpClass createObserverClass(final String actionName) { PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(observerFileData.getObserverModule()); + + if (parentDirectory == null) { + return null; + } final String[] observerDirectories = observerFileData.getObserverDirectory() .split(File.separator); for (final String observerDirectory: observerDirectories) { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/OverrideInThemeGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/OverrideInThemeGenerator.java index 4be05b573..94f092bb2 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/OverrideInThemeGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/OverrideInThemeGenerator.java @@ -69,6 +69,10 @@ public void execute(final PsiFile baseFile, final String themeName, final boolea final ModuleIndex moduleIndex = new ModuleIndex(project); PsiDirectory directory = moduleIndex.getModuleDirectoryByModuleName(themeName); + + if (directory == null) { + return; + } directory = getTargetDirectory(directory, pathComponents); if (directory.findFile(baseFile.getName()) != null) { @@ -134,11 +138,13 @@ private PsiDirectory getTargetDirectory( PsiDirectory directory, //NOPMD final List pathComponents ) { + PsiDirectory result = directory; final DirectoryGenerator generator = DirectoryGenerator.getInstance(); + for (final String directoryName : pathComponents) { - directory = generator.findOrCreateSubdirectory(directory, directoryName); + result = generator.findOrCreateSubdirectory(directory, directoryName); } - return directory; + return result; } } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/PhpFileGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/PhpFileGenerator.java index 2e7730f08..dccd91be2 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/PhpFileGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/PhpFileGenerator.java @@ -77,8 +77,16 @@ public PsiFile generate(final @NotNull String actionName) { return phpClass.getContainingFile(); } + final PsiDirectory moduleDirectory = moduleIndex.getModuleDirectoryByModuleName( + file.getModuleName() + ); + + if (moduleDirectory == null) { + onFileGenerated(null, actionName); + return null; + } final PsiDirectory fileBaseDir = directoryGenerator.findOrCreateSubdirectories( - moduleIndex.getModuleDirectoryByModuleName(file.getModuleName()), + moduleDirectory, file.getDirectory() ); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/PluginClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/PluginClassGenerator.java index 0ee99ae86..2977b6b9c 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/PluginClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/PluginClassGenerator.java @@ -88,6 +88,7 @@ public PluginClassGenerator( * * @return PsiFile */ + @SuppressWarnings("PMD.CognitiveComplexity") @Override public PsiFile generate(final String actionName) { final PsiFile[] pluginFile = {null}; @@ -206,6 +207,10 @@ private boolean checkIfMethodExist( private PhpClass createPluginClass(final String actionName) { PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(getPluginModule()); + + if (parentDirectory == null) { + return null; + } final String[] pluginDirectories = pluginFileData.getPluginDirectory() .split(File.separator); for (final String pluginDirectory: pluginDirectories) { @@ -262,7 +267,7 @@ private int getInsertPos(final PhpClass pluginClass) { } for (final LeafPsiElement leafPsiElement: leafElements) { - if (!leafPsiElement.getText().equals(MagentoPhpClass.CLOSING_TAG)) { + if (!MagentoPhpClass.CLOSING_TAG.equals(leafPsiElement.getText())) { continue; } insertPos = leafPsiElement.getTextOffset(); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/PreferenceClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/PreferenceClassGenerator.java index 9e8c2f0c6..dc62f8f71 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/PreferenceClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/PreferenceClassGenerator.java @@ -82,6 +82,10 @@ public PsiFile generate(final String actionName) { private PhpClass createPluginClass(final String actionName) { PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(getPreferenceModule()); + + if (parentDirectory == null) { + return null; + } final String[] pluginDirectories = preferenceFileData.getPreferenceDirectory() .split(File.separator); for (final String pluginDirectory: pluginDirectories) { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueryGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueryGenerator.java index 1fd09ef21..92984eb5c 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueryGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueryGenerator.java @@ -117,6 +117,10 @@ public PsiFile generate(final @NotNull String actionName) { private PhpClass createDataProviderClass(final @NotNull String actionName) { final PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(this.moduleName); + + if (parentDirectory == null) { + return null; + } final PsiDirectory dataProviderDirectory = directoryGenerator.findOrCreateSubdirectories(parentDirectory, data.getPath()); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormButtonBlockGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormButtonBlockGenerator.java index 3015e34e8..164d0153f 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormButtonBlockGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormButtonBlockGenerator.java @@ -123,6 +123,10 @@ public PsiFile generate(final @NotNull String actionName) { final PsiDirectory moduleBaseDir = moduleIndex.getModuleDirectoryByModuleName( buttonData.getButtonModule() ); + + if (moduleBaseDir == null) { + return null; + } final PsiDirectory baseDirectory = directoryGenerator.findOrCreateSubdirectories( moduleBaseDir, buttonData.getButtonDirectory() diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormGenerator.java index 5a5d3e5cb..3918ba998 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormGenerator.java @@ -92,14 +92,16 @@ protected void generateButtonClasses(final @NotNull String actionName) { protected PsiFile createForm( final String actionName ) { - final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); - final FileFromTemplateGenerator fileFromTemplateGenerator = - new FileFromTemplateGenerator(project); - final String moduleName = data.getModuleName(); final PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(moduleName); + if (parentDirectory == null) { + return null; + } + final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); + final FileFromTemplateGenerator fileFromTemplateGenerator = + new FileFromTemplateGenerator(project); final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleViewDir); final String area = data.getFormArea(); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGenerator.java index ef457393d..4b75ed7f5 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGenerator.java @@ -67,6 +67,9 @@ public PsiFile generate(final String actionName) { final PsiDirectory parentDirectory = moduleIndex.getModuleDirectoryByModuleName( moduleName ); + if (parentDirectory == null) { + return null; + } final String subdirectory = String.format( "%s/%s/%s", Package.moduleViewDir, diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateAclXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateAclXml.java index 5a76a27f4..94c649e2b 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateAclXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateAclXml.java @@ -31,12 +31,15 @@ public FindOrCreateAclXml(final Project project) { * @return PsiFile */ public PsiFile execute(final String actionName, final String moduleName) { + PsiDirectory parentDirectory = new ModuleIndex(project) + .getModuleDirectoryByModuleName(moduleName); + + if (parentDirectory == null) { + return null; + } final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - - PsiDirectory parentDirectory = new ModuleIndex(project) - .getModuleDirectoryByModuleName(moduleName); parentDirectory = directoryGenerator .findOrCreateSubdirectory(parentDirectory, Package.moduleBaseAreaDir); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCronGroupXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCronGroupXml.java index 40f1bf0ac..9961ecaa0 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCronGroupXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCronGroupXml.java @@ -45,6 +45,10 @@ public FindOrCreateCronGroupXml(final Project project) { */ public PsiFile execute(final String actionName, final String moduleName) { PsiDirectory parentDirectory = this.moduleIndex.getModuleDirectoryByModuleName(moduleName); + + if (parentDirectory == null) { + return null; + } final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleBaseAreaDir); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCrontabXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCrontabXml.java index 6a0e4800d..6d5251ccf 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCrontabXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCrontabXml.java @@ -45,6 +45,10 @@ public FindOrCreateCrontabXml(final Project project) { */ public PsiFile execute(final String actionName, final String moduleName) { PsiDirectory parentDirectory = this.moduleIndex.getModuleDirectoryByModuleName(moduleName); + + if (parentDirectory == null) { + return null; + } final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleBaseAreaDir); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaWhitelistJson.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaWhitelistJson.java index 01c5258a2..676892255 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaWhitelistJson.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaWhitelistJson.java @@ -54,6 +54,10 @@ public PsiFile execute(final @NotNull String actionName, final @NotNull String m if (dbSchemaWhitelistJson == null) { PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(moduleName); + + if (parentDirectory == null) { + return null; + } parentDirectory = directoryGenerator .findOrCreateSubdirectory(parentDirectory, Package.moduleBaseAreaDir); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaXmlUtil.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaXmlUtil.java index 2d70471ac..6625a5982 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaXmlUtil.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaXmlUtil.java @@ -31,12 +31,15 @@ public FindOrCreateDbSchemaXmlUtil(final Project project) { * @return PsiFile */ public PsiFile execute(final String actionName, final String moduleName) { + PsiDirectory parentDirectory = new ModuleIndex(project) + .getModuleDirectoryByModuleName(moduleName); + + if (parentDirectory == null) { + return null; + } final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - - PsiDirectory parentDirectory = new ModuleIndex(project) - .getModuleDirectoryByModuleName(moduleName); parentDirectory = directoryGenerator .findOrCreateSubdirectory(parentDirectory, Package.moduleBaseAreaDir); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDiXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDiXml.java index 854b59358..e16e63743 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDiXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDiXml.java @@ -32,12 +32,15 @@ public FindOrCreateDiXml(final Project project) { * @return PsiFile */ public PsiFile execute(final String actionName, final String moduleName, final String area) { + PsiDirectory parentDirectory = new ModuleIndex(project) + .getModuleDirectoryByModuleName(moduleName); + + if (parentDirectory == null) { + return null; + } final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - - PsiDirectory parentDirectory = new ModuleIndex(project) - .getModuleDirectoryByModuleName(moduleName); final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleBaseAreaDir); if (!getArea(area).equals(Areas.base)) { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateEmailTemplatesXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateEmailTemplatesXml.java index f37e0e75b..480707829 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateEmailTemplatesXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateEmailTemplatesXml.java @@ -45,6 +45,10 @@ public FindOrCreateEmailTemplatesXml(final Project project) { */ public PsiFile execute(final String actionName, final String moduleName) { PsiDirectory parentDirectory = this.moduleIndex.getModuleDirectoryByModuleName(moduleName); + + if (parentDirectory == null) { + return null; + } final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleBaseAreaDir); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateEventsXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateEventsXml.java index 23d44f2b1..5322cb9b0 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateEventsXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateEventsXml.java @@ -36,11 +36,15 @@ public PsiFile execute( final String moduleName, final String area ) { + PsiDirectory parentDirectory = new ModuleIndex(project) + .getModuleDirectoryByModuleName(moduleName); + if (parentDirectory == null) { + return null; + } + final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - PsiDirectory parentDirectory = new ModuleIndex(project) - .getModuleDirectoryByModuleName(moduleName); final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleBaseAreaDir); if (!getArea(area).equals(Areas.base)) { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateLayoutXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateLayoutXml.java index e77bebfdd..177059235 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateLayoutXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateLayoutXml.java @@ -43,12 +43,15 @@ public PsiFile execute( final String moduleName, final String area ) { + PsiDirectory parentDirectory = new ModuleIndex(project) + .getModuleDirectoryByModuleName(moduleName); + + if (parentDirectory == null) { + return null; + } final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - - PsiDirectory parentDirectory = new ModuleIndex(project) - .getModuleDirectoryByModuleName(moduleName); final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleViewDir); fileDirectories.add(getArea(area).toString()); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateMenuXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateMenuXml.java index d699ce927..943dd257a 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateMenuXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateMenuXml.java @@ -31,12 +31,15 @@ public FindOrCreateMenuXml(final Project project) { * @return PsiFile */ public PsiFile execute(final String actionName, final String moduleName) { + PsiDirectory parentDirectory = new ModuleIndex(project) + .getModuleDirectoryByModuleName(moduleName); + + if (parentDirectory == null) { + return null; + } final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - - PsiDirectory parentDirectory = new ModuleIndex(project) - .getModuleDirectoryByModuleName(moduleName); final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleBaseAreaDir); fileDirectories.add(Areas.adminhtml.toString()); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java index 72a2d0781..b63862c8d 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java @@ -38,6 +38,10 @@ public FindOrCreateQueueXml(final Project project) { */ public PsiFile execute(final String actionName, final String moduleName) { PsiDirectory parentDirectory = this.moduleIndex.getModuleDirectoryByModuleName(moduleName); + + if (parentDirectory == null) { + return null; + } final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleBaseAreaDir); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateRoutesXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateRoutesXml.java index 385aef23a..426cd256f 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateRoutesXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateRoutesXml.java @@ -32,12 +32,15 @@ public FindOrCreateRoutesXml(final Project project) { * @return PsiFile */ public PsiFile execute(final String actionName, final String moduleName, final String area) { + PsiDirectory parentDirectory = new ModuleIndex(project) + .getModuleDirectoryByModuleName(moduleName); + + if (parentDirectory == null) { + return null; + } final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - - PsiDirectory parentDirectory = new ModuleIndex(project) - .getModuleDirectoryByModuleName(moduleName); final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleBaseAreaDir); fileDirectories.add(getArea(area).toString()); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/xml/WebApiDeclarationGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/xml/WebApiDeclarationGenerator.java index d80ec91bf..16d3c32e8 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/xml/WebApiDeclarationGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/xml/WebApiDeclarationGenerator.java @@ -75,6 +75,19 @@ public WebApiDeclarationGenerator( public PsiFile generate(final @NotNull String actionName) { final PsiDirectory moduleDirectory = new ModuleIndex(project).getModuleDirectoryByModuleName(data.getModuleName()); + + if (moduleDirectory == null) { + JOptionPane.showMessageDialog( + null, + validatorBundle.message( + "validator.file.cantBeCreated", + "Web API XML file" + ), + commonBundle.message("common.error"), + JOptionPane.ERROR_MESSAGE + ); + return null; + } final PsiDirectory fileDirectory = directoryGenerator.findOrCreateSubdirectory( moduleDirectory, From ebdfb291336f9b0323d583a830a0338142b97a29 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Wed, 15 Dec 2021 17:20:29 +0200 Subject: [PATCH 039/124] Additional changes before 4.2.1 release --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71c20a577..8fbc804fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0). - Fixed NullPointerException for the firstSortOrder.compareTo in [#818](https://github.com/magento/magento2-phpstorm-plugin/pull/818) - Fixed invalid column types provided exception during db_schema.xml file generation in [#819](https://github.com/magento/magento2-phpstorm-plugin/pull/819) - Fixed method designed for fully qualified names only in [#830](https://github.com/magento/magento2-phpstorm-plugin/pull/830) +- Fixed NoClassDefFoundError for com/intellij/lang/jsgraphql/GraphQLIcons in [#850](https://github.com/magento/magento2-phpstorm-plugin/pull/850) ## 4.2.0 From e3109771d8a9f2bfe281e61963260fc09362e863 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Wed, 15 Dec 2021 18:03:42 +0200 Subject: [PATCH 040/124] Small changes --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fbc804fd..6d6a9d650 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0). - Fixed NullPointerException for the firstSortOrder.compareTo in [#818](https://github.com/magento/magento2-phpstorm-plugin/pull/818) - Fixed invalid column types provided exception during db_schema.xml file generation in [#819](https://github.com/magento/magento2-phpstorm-plugin/pull/819) - Fixed method designed for fully qualified names only in [#830](https://github.com/magento/magento2-phpstorm-plugin/pull/830) -- Fixed NoClassDefFoundError for com/intellij/lang/jsgraphql/GraphQLIcons in [#850](https://github.com/magento/magento2-phpstorm-plugin/pull/850) +- Fixed NoClassDefFoundError for com.intellij.lang.jsgraphql.GraphQLIcons in [#850](https://github.com/magento/magento2-phpstorm-plugin/pull/850) ## 4.2.0 From 41e1c4a64eb37afb90ca3cc53fdae9082504149b Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Wed, 15 Dec 2021 23:22:27 +0200 Subject: [PATCH 041/124] 810: Fixed StringIndexOutOfBoundsException during UCT inspection via action execution --- .../idea/magento2uct/util/php/MagentoTypeEscapeUtil.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2uct/util/php/MagentoTypeEscapeUtil.java b/src/com/magento/idea/magento2uct/util/php/MagentoTypeEscapeUtil.java index 7f6d37b84..ce910cea9 100644 --- a/src/com/magento/idea/magento2uct/util/php/MagentoTypeEscapeUtil.java +++ b/src/com/magento/idea/magento2uct/util/php/MagentoTypeEscapeUtil.java @@ -32,7 +32,13 @@ private MagentoTypeEscapeUtil() { String result = typeFqn; while (matcher.find()) { - result = result.substring(0, matcher.start(0)) + result.substring(matcher.end(0)); + final int begin = matcher.start(0); + final int end = matcher.end(0); + + if (begin < 0 || begin > end || end > result.length()) { + continue; + } + result = result.substring(0, begin) + result.substring(end); } return typeFqn.equals(result) ? typeFqn : result; From 2f5cd445a916cfb55c0aa3cdeb4a1e6a593b6d37 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Thu, 16 Dec 2021 17:27:42 +0200 Subject: [PATCH 042/124] 837: Fixed wrong connection name --- .../magento/packages/MessageQueueConnections.java | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/magento/packages/MessageQueueConnections.java b/src/com/magento/idea/magento2plugin/magento/packages/MessageQueueConnections.java index e3683914b..a16947659 100644 --- a/src/com/magento/idea/magento2plugin/magento/packages/MessageQueueConnections.java +++ b/src/com/magento/idea/magento2plugin/magento/packages/MessageQueueConnections.java @@ -9,8 +9,9 @@ import java.util.List; public enum MessageQueueConnections { + DB("db"), - AMPQ("ampq"); + AMPQ("amqp"); private final String type; @@ -32,16 +33,6 @@ public String getType() { return type; } - /** - * Get connection type by name. - * - * @param typeName type name - * @return Request Interface - */ - public static String getConnectionTypeByName(final String typeName) { - return MessageQueueConnections.valueOf(typeName).getType(); - } - /** * Get list of connection types. * @@ -51,7 +42,7 @@ public static List getList() { final List typeList = new ArrayList<>(); for (final MessageQueueConnections type: MessageQueueConnections.values()) { - typeList.add(getConnectionTypeByName(type.name())); + typeList.add(type.getType()); } return typeList; From d449c76532d8ddb14423822f3a0ddc9c2a37ec02 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Fri, 17 Dec 2021 16:11:12 +0200 Subject: [PATCH 043/124] 825: Code refactoring --- .../magento/GetModuleNameByDirectoryUtil.java | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/util/magento/GetModuleNameByDirectoryUtil.java b/src/com/magento/idea/magento2plugin/util/magento/GetModuleNameByDirectoryUtil.java index 84b9c1ec3..b8e7b5313 100644 --- a/src/com/magento/idea/magento2plugin/util/magento/GetModuleNameByDirectoryUtil.java +++ b/src/com/magento/idea/magento2plugin/util/magento/GetModuleNameByDirectoryUtil.java @@ -16,6 +16,7 @@ import com.magento.idea.magento2plugin.util.RegExUtil; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public final class GetModuleNameByDirectoryUtil { @@ -27,18 +28,21 @@ private GetModuleNameByDirectoryUtil() {} * * @param psiDirectory PsiDirectory * @param project Project + * * @return String */ - public static String execute( - final PsiDirectory psiDirectory, - final Project project + public static @Nullable String execute( + final @NotNull PsiDirectory psiDirectory, + final @NotNull Project project ) { // Check if directory is theme directory and return module name from directory path if yes final String path = psiDirectory.getVirtualFile().getPath(); final Pattern pattern = Pattern.compile(RegExUtil.CustomTheme.MODULE_NAME); final Matcher matcher = pattern.matcher(path); + while (matcher.find()) { final String moduleNamePath = matcher.group(0); + if (!moduleNamePath.isEmpty()) { return moduleNamePath.split("/")[5]; } @@ -48,13 +52,16 @@ public static String execute( psiDirectory, project ); + if (registrationPhp == null) { return null; } final PsiElement[] childElements = registrationPhp.getChildren(); + if (childElements.length == 0) { return null; } + return getModuleName(childElements); } @@ -66,14 +73,17 @@ private static MethodReference[] parseRegistrationPhpElements(//NOPMD element, MethodReference.class ); + if (methods == null) { final PsiElement[] children = element.getChildren(); methods = parseRegistrationPhpElements(children); } + if (methods != null) { return methods; } } + return null; } @@ -99,25 +109,30 @@ private static PhpFile getRegistrationPhpRecursively( private static String getModuleName(final PsiElement... childElements) { final MethodReference[] methods = parseRegistrationPhpElements(childElements); + if (methods == null) { return null; } + for (final MethodReference method: methods) { if (!method.getName().equals(RegistrationPhp.REGISTER_METHOD_NAME)) { continue; } final PsiElement[] parameters = method.getParameters(); + for (final PsiElement parameter: parameters) { if (!(parameter instanceof StringLiteralExpression)) { continue; } final String moduleName = ((StringLiteralExpression) parameter) .getContents(); + if (moduleName.matches(RegExUtil.Magento.MODULE_NAME)) { return moduleName; } } } + return null; } @@ -131,11 +146,13 @@ private static PhpFile getModuleRegistrationPhpFile( continue; } final String filename = ((PhpFile) containingFile).getName(); + if (filename.equals(RegistrationPhp.FILE_NAME)) { return (PhpFile) containingFile; } } } + return null; } } From 1bc9f0bca8114d81404fbc534c46fa82285f9bf3 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Fri, 17 Dec 2021 16:16:38 +0200 Subject: [PATCH 044/124] 825: Code refactoring --- .../util/magento/GetModuleNameByDirectoryUtil.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/util/magento/GetModuleNameByDirectoryUtil.java b/src/com/magento/idea/magento2plugin/util/magento/GetModuleNameByDirectoryUtil.java index b8e7b5313..a7e882ba5 100644 --- a/src/com/magento/idea/magento2plugin/util/magento/GetModuleNameByDirectoryUtil.java +++ b/src/com/magento/idea/magento2plugin/util/magento/GetModuleNameByDirectoryUtil.java @@ -65,10 +65,10 @@ private GetModuleNameByDirectoryUtil() {} return getModuleName(childElements); } - private static MethodReference[] parseRegistrationPhpElements(//NOPMD + private static MethodReference[] parseRegistrationPhpElements( final PsiElement... elements ) { - for (final PsiElement element: elements) { + for (final PsiElement element : elements) { MethodReference[] methods = PsiTreeUtil.getChildrenOfType( element, MethodReference.class @@ -79,12 +79,12 @@ private static MethodReference[] parseRegistrationPhpElements(//NOPMD methods = parseRegistrationPhpElements(children); } - if (methods != null) { + if (methods.length > 0) { return methods; } } - return null; + return new MethodReference[0]; } private static PhpFile getRegistrationPhpRecursively( @@ -110,12 +110,12 @@ private static PhpFile getRegistrationPhpRecursively( private static String getModuleName(final PsiElement... childElements) { final MethodReference[] methods = parseRegistrationPhpElements(childElements); - if (methods == null) { + if (methods.length == 0) { return null; } for (final MethodReference method: methods) { - if (!method.getName().equals(RegistrationPhp.REGISTER_METHOD_NAME)) { + if (!RegistrationPhp.REGISTER_METHOD_NAME.equals(method.getName())) { continue; } final PsiElement[] parameters = method.getParameters(); @@ -147,7 +147,7 @@ private static PhpFile getModuleRegistrationPhpFile( } final String filename = ((PhpFile) containingFile).getName(); - if (filename.equals(RegistrationPhp.FILE_NAME)) { + if (RegistrationPhp.FILE_NAME.equals(filename)) { return (PhpFile) containingFile; } } From e9a7447c11091dc8c19f809664658fed2be2f9c0 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Fri, 17 Dec 2021 16:18:17 +0200 Subject: [PATCH 045/124] 825: Fixed null pointer exception --- .../actions/generation/dialog/NewCronjobDialog.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java index 626bd2de1..dee2accf1 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java @@ -263,15 +263,19 @@ private void createUIComponents() { * @return String */ private String suggestCronjobName(final String cronjobClassname) { + if (moduleName == null) { + return ""; + } + if (cronjobClassname == null || cronjobClassname.isEmpty()) { - return this.moduleName.toLowerCase(new java.util.Locale("en","EN")); + return moduleName.toLowerCase(new java.util.Locale("en","EN")); } final String cronjobClassnameToSnakeCase = this.camelCaseToSnakeCase.convert( cronjobClassname ); - return this.moduleName.toLowerCase(new java.util.Locale("en","EN")) + return moduleName.toLowerCase(new java.util.Locale("en","EN")) + "_" + cronjobClassnameToSnakeCase; } From a00d39ab57f0f46211ef37a60d2922bd79efde4b Mon Sep 17 00:00:00 2001 From: Serhii Akulov Date: Fri, 17 Dec 2021 17:34:44 +0200 Subject: [PATCH 046/124] 858: error correction in case entered fields is zero --- .../generation/generator/UiComponentFormGenerator.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormGenerator.java index 3918ba998..1e41dc0d2 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormGenerator.java @@ -149,6 +149,14 @@ protected PsiFile createForm( protected void fillAttributes(final @NotNull Properties attributes) { final PhpClassTypesBuilder phpClassTypesBuilder = new PhpClassTypesBuilder(); + if (data.getFields().isEmpty()) { + phpClassTypesBuilder + .appendProperty("PRIMARY_FIELD", ""); + } else { + phpClassTypesBuilder + .appendProperty("PRIMARY_FIELD", data.getFields().get(0).getName()); + } + phpClassTypesBuilder .appendProperty("NAME", data.getFormName()) .appendProperty("LABEL", data.getLabel()) @@ -165,7 +173,6 @@ protected void fillAttributes(final @NotNull Properties attributes) { data.getDataProviderPath() ).getClassFqn() ) - .appendProperty("PRIMARY_FIELD", data.getFields().get(0).getName()) .mergeProperties(attributes); } From 9ab192acf2ded1d41d65261691b243673edb72eb Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Fri, 17 Dec 2021 22:51:06 +0200 Subject: [PATCH 047/124] 760: Code refactoring --- .../util/FileFromTemplateGenerator.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java index a7aad6da3..c7be35ea9 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java @@ -31,9 +31,10 @@ import org.jetbrains.annotations.Nullable; public class FileFromTemplateGenerator { - private final Project project; - public FileFromTemplateGenerator(final Project project) { + private final @NotNull Project project; + + public FileFromTemplateGenerator(final @NotNull Project project) { this.project = project; } @@ -56,10 +57,12 @@ public PsiFile generate( final Ref fileRef = new Ref<>(null); final Ref exceptionRef = new Ref<>(null); final String filePath = baseDir.getText().concat("/").concat(moduleFile.getFileName()); + CommandProcessor.getInstance().executeCommand(project, () -> { final Runnable run = () -> { try { - PsiFile file = createFile(moduleFile, filePath, baseDir, attributes); + final PsiFile file = createFile(moduleFile, filePath, baseDir, attributes); + if (file != null) { fileRef.set(file); } @@ -89,13 +92,19 @@ private PsiFile createFile( final String fileName = path.get(path.size() - 1); final PsiFile fileTemplate = createFileFromTemplate( getTemplateManager(), - baseDir, moduleFile.getTemplate(), attributes, fileName, moduleFile.getLanguage()); + baseDir, + moduleFile.getTemplate(), + attributes, + fileName, + moduleFile.getLanguage() + ); + if (fileTemplate == null) { throw new IncorrectOperationException("Template not found!"); } else { PsiElement file; - file = baseDir.add(fileTemplate); + if (file instanceof PsiFile) { return (PsiFile)file; } else { @@ -125,6 +134,7 @@ public PsiFile createFileFromTemplate( final @NotNull Language language ) throws IOException { FileTemplate fileTemplate; + try { fileTemplate = templateManager.getInternalTemplate(templateName); } catch (IllegalStateException e) { @@ -140,6 +150,7 @@ public PsiFile createFileFromTemplate( true, false ); + if (fileTemplate.isReformatCode()) { CodeStyleManager.getInstance(project).reformat(file); } From 49afbf2567af38e5df0df4046e92826b53abab27 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Fri, 17 Dec 2021 23:37:56 +0200 Subject: [PATCH 048/124] 760: Fixed bug --- resources/magento2/validation.properties | 1 + .../generator/PluginClassGenerator.java | 45 ++++++++++++------- .../util/FileFromTemplateGenerator.java | 22 ++++++--- 3 files changed, 47 insertions(+), 21 deletions(-) diff --git a/resources/magento2/validation.properties b/resources/magento2/validation.properties index 2b1a894d8..9e7a095d5 100644 --- a/resources/magento2/validation.properties +++ b/resources/magento2/validation.properties @@ -22,6 +22,7 @@ validator.command.isNotValid=The {0} field does not contain a valid Magento 2 CL validator.module.noSuchModule=No such module {0} validator.file.alreadyExists={0} already exists validator.file.cantBeCreated={0} can't be created +validator.file.cantBeCreatedWithException=The ''{0}'' cannot be created. Original message was: ''{1}'' validator.file.isNotWritable=%s file is binary or has no document associations validator.file.noDocumentAssociations={0} file is binary or has no document associations validator.class.alreadyDeclared={0} already declared in the target module diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/PluginClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/PluginClassGenerator.java index 2977b6b9c..5930bbc4c 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/PluginClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/PluginClassGenerator.java @@ -5,6 +5,7 @@ package com.magento.idea.magento2plugin.actions.generation.generator; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.editor.Document; import com.intellij.openapi.project.Project; @@ -88,7 +89,7 @@ public PluginClassGenerator( * * @return PsiFile */ - @SuppressWarnings("PMD.CognitiveComplexity") + @SuppressWarnings({"PMD.CognitiveComplexity", "PMD.ExcessiveMethodLength"}) @Override public PsiFile generate(final String actionName) { final PsiFile[] pluginFile = {null}; @@ -100,15 +101,27 @@ public PsiFile generate(final String actionName) { pluginClass = createPluginClass(actionName); } if (pluginClass == null) { - final String errorMessage = validatorBundle.message( - "validator.file.cantBeCreated", - "Plugin Class" - ); - JOptionPane.showMessageDialog( - null, - errorMessage, - errorTitle, - JOptionPane.ERROR_MESSAGE + String errorMessage; + + if (fileFromTemplateGenerator.getLastExceptionMessage() == null) { + errorMessage = validatorBundle.message( + "validator.file.cantBeCreated", + "Plugin Class" + ); + } else { + errorMessage = validatorBundle.message( + "validator.file.cantBeCreatedWithException", + "Plugin Class", + fileFromTemplateGenerator.getLastExceptionMessage() + ); + } + ApplicationManager.getApplication().invokeLater( + () -> JOptionPane.showMessageDialog( + null, + errorMessage, + errorTitle, + JOptionPane.ERROR_MESSAGE + ) ); return; @@ -132,11 +145,13 @@ public PsiFile generate(final String actionName) { "validator.file.alreadyExists", "Plugin Class" ); - JOptionPane.showMessageDialog( - null, - errorMessage, - errorTitle, - JOptionPane.ERROR_MESSAGE + ApplicationManager.getApplication().invokeLater( + () -> JOptionPane.showMessageDialog( + null, + errorMessage, + errorTitle, + JOptionPane.ERROR_MESSAGE + ) ); return; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java index c7be35ea9..7a2610632 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java @@ -12,7 +12,6 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.project.Project; -import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiDirectory; @@ -33,6 +32,7 @@ public class FileFromTemplateGenerator { private final @NotNull Project project; + private @Nullable String exceptionMessage; public FileFromTemplateGenerator(final @NotNull Project project) { this.project = project; @@ -45,10 +45,10 @@ public FileFromTemplateGenerator(final @NotNull Project project) { * @param attributes Properties * @param baseDir PsiDirectory * @param actionName String + * * @return PsiFile */ - @Nullable - public PsiFile generate( + public @Nullable PsiFile generate( final @NotNull ModuleFileInterface moduleFile, final @NotNull Properties attributes, final @NotNull PsiDirectory baseDir, @@ -56,6 +56,7 @@ public PsiFile generate( ) { final Ref fileRef = new Ref<>(null); final Ref exceptionRef = new Ref<>(null); + exceptionMessage = null; final String filePath = baseDir.getText().concat("/").concat(moduleFile.getFileName()); CommandProcessor.getInstance().executeCommand(project, () -> { @@ -66,8 +67,8 @@ public PsiFile generate( if (file != null) { fileRef.set(file); } - } catch (IncorrectOperationException | IOException var9) { - exceptionRef.set(var9.getMessage()); + } catch (IncorrectOperationException | IOException exception) { + exceptionRef.set(exception.getMessage()); } }; ApplicationManager.getApplication().runWriteAction(run); @@ -76,11 +77,20 @@ public PsiFile generate( if (exceptionRef.isNull()) { return fileRef.get(); } + exceptionMessage = exceptionRef.get(); - Messages.showErrorDialog(exceptionRef.get(), actionName); return null; } + /** + * Get last thrown exception message if exists. + * + * @return String + */ + public @Nullable String getLastExceptionMessage() { + return exceptionMessage; + } + @Nullable private PsiFile createFile( final @NotNull ModuleFileInterface moduleFile, From e5109ad09d3b6b64265b9e0a5cbb0a02504444f7 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Fri, 17 Dec 2021 23:53:04 +0200 Subject: [PATCH 049/124] 760: Eliminated code style check --- .../generation/generator/util/FileFromTemplateGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java index 7a2610632..8aac17670 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java @@ -56,7 +56,7 @@ public FileFromTemplateGenerator(final @NotNull Project project) { ) { final Ref fileRef = new Ref<>(null); final Ref exceptionRef = new Ref<>(null); - exceptionMessage = null; + exceptionMessage = null;//NOPMD final String filePath = baseDir.getText().concat("/").concat(moduleFile.getFileName()); CommandProcessor.getInstance().executeCommand(project, () -> { From ed6d469ea1c4d852622e2a7f6195ca6181d41074 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Mon, 20 Dec 2021 13:32:33 +0200 Subject: [PATCH 050/124] 651: Fixed Slow operations are prohibited on EDT --- .../PhpClassImplementsNoninterceptableInterfaceUtil.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/inspections/php/util/PhpClassImplementsNoninterceptableInterfaceUtil.java b/src/com/magento/idea/magento2plugin/inspections/php/util/PhpClassImplementsNoninterceptableInterfaceUtil.java index b75099e7b..88fce9488 100644 --- a/src/com/magento/idea/magento2plugin/inspections/php/util/PhpClassImplementsNoninterceptableInterfaceUtil.java +++ b/src/com/magento/idea/magento2plugin/inspections/php/util/PhpClassImplementsNoninterceptableInterfaceUtil.java @@ -5,6 +5,7 @@ package com.magento.idea.magento2plugin.inspections.php.util; +import com.intellij.util.SlowOperations; import com.jetbrains.php.lang.psi.elements.PhpClass; import com.magento.idea.magento2plugin.magento.files.Plugin; import org.jetbrains.annotations.NotNull; @@ -17,13 +18,18 @@ private PhpClassImplementsNoninterceptableInterfaceUtil() {} * Check whether class implements NoninterceptableInterface. * * @param phpClass PhpClass + * * @return bool */ public static boolean execute(final @NotNull PhpClass phpClass) { - final PhpClass[] interfaces = phpClass.getImplementedInterfaces(); + final PhpClass[] interfaces = SlowOperations.allowSlowOperations( + phpClass::getImplementedInterfaces + ); + if (interfaces.length == 0) { return false; } + for (final PhpClass targetInterfaceClass: interfaces) { if (targetInterfaceClass.getFQN().equals(Plugin.NON_INTERCEPTABLE_FQN)) { return true; From 1aafc535d33b14553f42882e9b33e9d6df3b6e1f Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Mon, 20 Dec 2021 13:37:20 +0200 Subject: [PATCH 051/124] 651: Code refactoring --- .../generation/CreateAPluginAction.java | 30 +++++++++++++------ ...plementsNoninterceptableInterfaceUtil.java | 2 +- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/CreateAPluginAction.java b/src/com/magento/idea/magento2plugin/actions/generation/CreateAPluginAction.java index 8c560d2b8..96b017534 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/CreateAPluginAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/CreateAPluginAction.java @@ -25,6 +25,7 @@ import org.jetbrains.annotations.NotNull; public class CreateAPluginAction extends DumbAwareAction { + public static final String ACTION_NAME = "Create a new Plugin for this method"; public static final String ACTION_DESCRIPTION = "Create a new Magento 2 Plugin"; private final GetFirstClassOfFile getFirstClassOfFile; @@ -47,10 +48,12 @@ public void update(final AnActionEvent event) { targetClass = null;// NOPMD targetMethod = null;// NOPMD final Project project = event.getData(PlatformDataKeys.PROJECT); - if (Settings.isEnabled(project)) { + + if (project != null && Settings.isEnabled(project)) { final Pair pair = this.findPhpClass(event); final PsiFile psiFile = pair.getFirst(); final PhpClass phpClass = pair.getSecond(); + if (phpClass == null || !(psiFile instanceof PhpFile) || phpClass.isFinal() @@ -74,8 +77,13 @@ private void setStatus(final AnActionEvent event, final boolean status) { } @Override - public void actionPerformed(@NotNull final AnActionEvent event) { - CreateAPluginDialog.open(event.getProject(), this.targetMethod, this.targetClass); + public void actionPerformed(final @NotNull AnActionEvent event) { + final Project project = event.getProject(); + + if (project == null) { + return; + } + CreateAPluginDialog.open(project, this.targetMethod, this.targetClass); } @Override @@ -83,7 +91,7 @@ public boolean isDumbAware() { return false; } - private Pair findPhpClass(@NotNull final AnActionEvent event) { + private Pair findPhpClass(final @NotNull AnActionEvent event) { final PsiFile psiFile = event.getData(PlatformDataKeys.PSI_FILE); PhpClass phpClass = null; @@ -96,27 +104,31 @@ private Pair findPhpClass(@NotNull final AnActionEvent event) } private void fetchTargetMethod( - @NotNull final AnActionEvent event, + final @NotNull AnActionEvent event, final PsiFile psiFile, final PhpClass phpClass ) { final Caret caret = event.getData(PlatformDataKeys.CARET); + if (caret == null) { return; } final int offset = caret.getOffset(); final PsiElement element = psiFile.findElementAt(offset); + if (element == null) { return; } - if (element instanceof Method && element.getParent() - == phpClass && IsPluginAllowedForMethodUtil.check((Method) element)) { + + if (element instanceof Method && element.getParent().equals(phpClass) + && IsPluginAllowedForMethodUtil.check((Method) element)) { this.targetMethod = (Method) element; return; } final PsiElement parent = element.getParent(); - if (parent instanceof Method && parent.getParent() - == phpClass && IsPluginAllowedForMethodUtil.check((Method) parent)) { + + if (parent instanceof Method && parent.getParent().equals(phpClass) + && IsPluginAllowedForMethodUtil.check((Method) parent)) { this.targetMethod = (Method) parent; } } diff --git a/src/com/magento/idea/magento2plugin/inspections/php/util/PhpClassImplementsNoninterceptableInterfaceUtil.java b/src/com/magento/idea/magento2plugin/inspections/php/util/PhpClassImplementsNoninterceptableInterfaceUtil.java index 88fce9488..1f611196d 100644 --- a/src/com/magento/idea/magento2plugin/inspections/php/util/PhpClassImplementsNoninterceptableInterfaceUtil.java +++ b/src/com/magento/idea/magento2plugin/inspections/php/util/PhpClassImplementsNoninterceptableInterfaceUtil.java @@ -31,7 +31,7 @@ public static boolean execute(final @NotNull PhpClass phpClass) { } for (final PhpClass targetInterfaceClass: interfaces) { - if (targetInterfaceClass.getFQN().equals(Plugin.NON_INTERCEPTABLE_FQN)) { + if (Plugin.NON_INTERCEPTABLE_FQN.equals(targetInterfaceClass.getFQN())) { return true; } } From cfd627398ef372ec573c8405249089dd7082a5f6 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Mon, 20 Dec 2021 23:21:16 +0200 Subject: [PATCH 052/124] 864: Code refactoring --- .../actions/generation/NewBlockAction.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewBlockAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewBlockAction.java index cefba0e7c..1fe6a3db4 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewBlockAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewBlockAction.java @@ -18,6 +18,7 @@ import org.jetbrains.annotations.NotNull; public class NewBlockAction extends AnAction { + public static final String ACTION_NAME = "Magento 2 Block"; public static final String ACTION_DESCRIPTION = "Create a new Magento 2 Block"; @@ -26,23 +27,24 @@ public NewBlockAction() { } @Override - public void actionPerformed(@NotNull final AnActionEvent event) { + public void actionPerformed(final @NotNull AnActionEvent event) { final DataContext dataContext = event.getDataContext(); final IdeView view = LangDataKeys.IDE_VIEW.getData(dataContext); + if (view == null) { return; } final Project project = CommonDataKeys.PROJECT.getData(dataContext); + if (project == null) { return; } - final PsiDirectory directory = view.getOrChooseDirectory(); + if (directory == null) { return; } - NewBlockDialog.open(project, directory); } @@ -51,4 +53,3 @@ public boolean isDumbAware() { return false; } } - From 6b1ff0eb3cea2fe869b47af6491e47123c535660 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Mon, 20 Dec 2021 23:24:18 +0200 Subject: [PATCH 053/124] 864: Code refactoring --- .../generation/dialog/NewBlockDialog.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.java index 6bc982cc5..30d417b77 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.java @@ -117,8 +117,8 @@ protected void onOK() { exit(); } - private PsiFile generateFile() { - return new ModuleBlockClassGenerator(new BlockFileData( + private void generateFile() { + new ModuleBlockClassGenerator(new BlockFileData( getBlockDirectory(), getBlockName(), getModuleName(), @@ -140,6 +140,7 @@ public String getBlockDirectory() { private void suggestBlockDirectory() { final String moduleIdentifierPath = getModuleIdentifierPath(); + if (moduleIdentifierPath == null) { blockParentDir.setText(BlockPhp.DEFAULT_DIR); return; @@ -147,6 +148,7 @@ private void suggestBlockDirectory() { final String path = baseDir.getVirtualFile().getPath(); final String[] pathParts = path.split(moduleIdentifierPath); final int minimumPathParts = 2; + if (pathParts.length != minimumPathParts) { blockParentDir.setText(BlockPhp.DEFAULT_DIR); return; @@ -161,14 +163,17 @@ private void suggestBlockDirectory() { private String getModuleIdentifierPath() { final String[]parts = moduleName.split(Package.vendorModuleNameSeparator); + if (parts[0] == null || parts[1] == null || parts.length > 2) { return null; } + return parts[0] + File.separator + parts[1]; } private String getNamespace() { final String[]parts = moduleName.split(Package.vendorModuleNameSeparator); + if (parts[0] == null || parts[1] == null || parts.length > 2) { return null; } @@ -176,12 +181,7 @@ private String getNamespace() { File.separator, Package.fqnSeparator ); - return parts[0] + Package.fqnSeparator + parts[1] + Package.fqnSeparator + directoryPart; - } - @Override - public void onCancel() { - // add your code here if necessary - dispose(); + return parts[0] + Package.fqnSeparator + parts[1] + Package.fqnSeparator + directoryPart; } } From a741849bbe47f60c5b9ac23745f250465a3e52f5 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Mon, 20 Dec 2021 23:34:55 +0200 Subject: [PATCH 054/124] 864: Enhanced error outputting for new Magento 2 Block generation --- .../generation/dialog/NewBlockDialog.form | 22 ++++++++++++++++--- .../generation/dialog/NewBlockDialog.java | 17 +++++++------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.form index 9689cc6a0..c460ac6fa 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.form @@ -53,7 +53,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -96,7 +96,7 @@ - + @@ -106,6 +106,22 @@ + + + + + + + + + + + + + + + + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.java index 30d417b77..44342993a 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewBlockDialog.java @@ -7,7 +7,6 @@ import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; import com.magento.idea.magento2plugin.actions.generation.NewBlockAction; import com.magento.idea.magento2plugin.actions.generation.data.BlockFileData; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.FieldValidation; @@ -26,6 +25,7 @@ import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JComponent; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; @@ -33,6 +33,7 @@ import javax.swing.KeyStroke; public class NewBlockDialog extends AbstractDialog { + private final PsiDirectory baseDir; private final String moduleName; private JPanel contentPanel; @@ -44,18 +45,18 @@ public class NewBlockDialog extends AbstractDialog { private static final String NAME = "name"; private static final String DIRECTORY = "directory"; - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, NAME}) - @FieldValidation(rule = RuleRegistry.PHP_CLASS, - message = {PhpClassRule.MESSAGE, NAME}) + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, NAME}) + @FieldValidation(rule = RuleRegistry.PHP_CLASS, message = {PhpClassRule.MESSAGE, NAME}) private JTextField blockName; - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, DIRECTORY}) + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, DIRECTORY}) @FieldValidation(rule = RuleRegistry.PHP_DIRECTORY, message = {PhpDirectoryRule.MESSAGE, DIRECTORY}) private JTextField blockParentDir; + private JLabel blockNameErrorMessage;//NOPMD + private JLabel blockParentDirErrorMessage;//NOPMD + /** * Constructor. * @@ -113,8 +114,8 @@ public static void open(final Project project, final PsiDirectory directory) { protected void onOK() { if (validateFormFields()) { generateFile(); + exit(); } - exit(); } private void generateFile() { From 15d99746827e71a6a211bdd2425f4b17dbc984dd Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 01:16:27 +0200 Subject: [PATCH 055/124] 867: Code refactoring --- .../actions/generation/NewControllerAction.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewControllerAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewControllerAction.java index 277636830..9460114bd 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewControllerAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewControllerAction.java @@ -16,8 +16,8 @@ import com.magento.idea.magento2plugin.MagentoIcons; import com.magento.idea.magento2plugin.actions.generation.dialog.NewControllerDialog; -@SuppressWarnings({"PMD.OnlyOneReturn", "PMD.FieldNamingConventions"}) public class NewControllerAction extends AnAction { + public static final String ACTION_NAME = "Magento 2 Controller"; public static final String ACTION_DESCRIPTION = "Create a new Magento 2 Controller"; @@ -36,13 +36,13 @@ public void actionPerformed(final AnActionEvent event) { if (view == null) { return; } - final Project project = CommonDataKeys.PROJECT.getData(dataContext); + if (project == null) { return; } - final PsiDirectory directory = view.getOrChooseDirectory(); + if (directory == null) { return; } From 0d859165dd76049377df5492a403c4e44d93c7f9 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 01:28:43 +0200 Subject: [PATCH 056/124] 867: Enhanced error outputting for new Magento 2 Controller generation --- .../dialog/NewControllerDialog.form | 38 ++++++++++++++++--- .../dialog/NewControllerDialog.java | 22 +++++------ 2 files changed, 43 insertions(+), 17 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.form index 59cbf84c0..3d6b85fc7 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.form @@ -3,7 +3,7 @@ - + @@ -51,7 +51,7 @@ - + @@ -61,7 +61,7 @@ - + @@ -69,7 +69,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -87,7 +87,7 @@ - + @@ -111,6 +111,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -118,6 +142,7 @@ + @@ -145,6 +170,7 @@ + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.java index 818915cab..402cedb96 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.java @@ -33,6 +33,7 @@ import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComponent; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.KeyStroke; @@ -43,6 +44,7 @@ "PMD.ExcessiveImports" }) public class NewControllerDialog extends AbstractDialog { + private final String moduleName; private final Project project; private JPanel contentPane; @@ -50,7 +52,6 @@ public class NewControllerDialog extends AbstractDialog { private JButton buttonCancel; private FilteredComboBox controllerAreaSelect; private FilteredComboBox httpMethodSelect; - private JTextField controllerParentDir; private JCheckBox inheritClass; private JPanel adminPanel; private JTextField acl; @@ -64,12 +65,16 @@ public class NewControllerDialog extends AbstractDialog { message = {PhpDirectoryRule.MESSAGE, CONTROLLER_NAME}) private JTextField controllerName; - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, ACTION_NAME}) - @FieldValidation(rule = RuleRegistry.PHP_CLASS, - message = {PhpClassRule.MESSAGE, ACTION_NAME}) + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, ACTION_NAME}) + @FieldValidation(rule = RuleRegistry.PHP_CLASS, message = {PhpClassRule.MESSAGE, ACTION_NAME}) private JTextField actionName; + private JTextField controllerParentDir; + + private JLabel actionNameErrorMessage;//NOPMD + private JLabel controllerNameErrorMessage;//NOPMD + private JLabel controllerParentDirErrorMessage;//NOPMD + /** * Open new dialog for adding new controller. * @@ -196,8 +201,8 @@ public static void open(final Project project, final PsiDirectory directory) { private void onOK() { if (validateFormFields()) { generateFile(); + exit(); } - exit(); } /** @@ -264,11 +269,6 @@ private Boolean getIsInheritClass() { return inheritClass.isSelected(); } - @Override - protected void onCancel() { - dispose(); - } - private List getAreaList() { return new ArrayList<>( Arrays.asList( From a6f19bc89d15cf765dde1504871901f4224aa045 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 01:33:45 +0200 Subject: [PATCH 057/124] 868: Code refactoring --- .../actions/generation/NewCronjobAction.java | 7 +++---- .../actions/generation/dialog/NewCronjobDialog.java | 9 +++------ 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewCronjobAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewCronjobAction.java index 538df7a1e..d734549d4 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewCronjobAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewCronjobAction.java @@ -17,8 +17,8 @@ import com.magento.idea.magento2plugin.actions.generation.dialog.NewCronjobDialog; import org.jetbrains.annotations.NotNull; -@SuppressWarnings({"PMD.FieldNamingConventions", "PMD.OnlyOneReturn"}) public class NewCronjobAction extends AnAction { + public static String ACTION_NAME = "Magento 2 Cron Job"; public static String ACTION_DESCRIPTION = "Create a new Magento 2 Cron Job"; @@ -34,17 +34,16 @@ public void actionPerformed(final @NotNull AnActionEvent event) { if (view == null) { return; } - final Project project = CommonDataKeys.PROJECT.getData(dataContext); + if (project == null) { return; } - final PsiDirectory directory = view.getOrChooseDirectory(); + if (directory == null) { return; } - NewCronjobDialog.open(project, directory); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java index dee2accf1..677c5371f 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java @@ -26,6 +26,8 @@ import com.magento.idea.magento2plugin.ui.FilteredComboBox; import com.magento.idea.magento2plugin.util.CamelCaseToSnakeCase; import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil; +import org.jetbrains.annotations.NotNull; + import java.awt.event.ActionEvent; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; @@ -117,7 +119,7 @@ public class NewCronjobDialog extends AbstractDialog { * @param project Project * @param directory Directory */ - public NewCronjobDialog(final Project project, final PsiDirectory directory) { + public NewCronjobDialog(final @NotNull Project project, final @NotNull PsiDirectory directory) { super(); this.project = project; this.moduleName = GetModuleNameByDirectoryUtil.execute(directory, project); @@ -246,11 +248,6 @@ public String getCronjobScheduleConfigPath() { return this.configPathField.getText().trim(); } - @Override - protected void onCancel() { - dispose(); - } - private void createUIComponents() { final List cronGroups = CronGroupIndex.getInstance(project).getGroups(); From 36fc25706cf7ba76a8a51d1bc0e2ccef887e11ed Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 01:34:34 +0200 Subject: [PATCH 058/124] 868: Code refactoring --- .../magento2plugin/actions/generation/NewCronjobAction.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewCronjobAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewCronjobAction.java index d734549d4..948174758 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewCronjobAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewCronjobAction.java @@ -19,8 +19,8 @@ public class NewCronjobAction extends AnAction { - public static String ACTION_NAME = "Magento 2 Cron Job"; - public static String ACTION_DESCRIPTION = "Create a new Magento 2 Cron Job"; + public static final String ACTION_NAME = "Magento 2 Cron Job"; + public static final String ACTION_DESCRIPTION = "Create a new Magento 2 Cron Job"; public NewCronjobAction() { super(ACTION_NAME, ACTION_DESCRIPTION, MagentoIcons.MODULE); From 715575e76ed160ddeea1dae22801ca685909b070 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 01:45:41 +0200 Subject: [PATCH 059/124] 868: Enhanced error outputting for new Magento 2 Cron Job generation --- .../generation/dialog/NewCronjobDialog.form | 70 +++++++++++++++---- .../generation/dialog/NewCronjobDialog.java | 20 ++++-- 2 files changed, 68 insertions(+), 22 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.form index bfb797c3d..0b3535abe 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.form @@ -3,7 +3,7 @@ - + @@ -49,7 +49,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -87,7 +87,7 @@ - + @@ -95,12 +95,12 @@ - + - + @@ -109,16 +109,16 @@ - + - + - + @@ -162,12 +162,20 @@ + + + + + + + + - + @@ -194,7 +202,7 @@ - + @@ -202,7 +210,7 @@ - + @@ -210,7 +218,7 @@ - + @@ -218,7 +226,7 @@ - + @@ -226,7 +234,7 @@ - + @@ -235,6 +243,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java index 677c5371f..c70402b1a 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java @@ -26,8 +26,6 @@ import com.magento.idea.magento2plugin.ui.FilteredComboBox; import com.magento.idea.magento2plugin.util.CamelCaseToSnakeCase; import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil; -import org.jetbrains.annotations.NotNull; - import java.awt.event.ActionEvent; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; @@ -37,11 +35,13 @@ import java.util.List; import javax.swing.JButton; import javax.swing.JComponent; +import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; import javax.swing.KeyStroke; +import org.jetbrains.annotations.NotNull; @SuppressWarnings({ "PMD.UncommentedEmptyMethodBody", @@ -56,6 +56,11 @@ "PMD.ExcessiveImports", }) public class NewCronjobDialog extends AbstractDialog { + + private final Project project; + private final String moduleName; + private final CamelCaseToSnakeCase camelCaseToSnakeCase; + private JPanel contentPane; private JButton buttonOK; private JButton buttonCancel; @@ -66,6 +71,7 @@ public class NewCronjobDialog extends AbstractDialog { private JRadioButton atMidnightRadioButton; private JPanel fixedSchedulePanel; private JPanel configurableSchedulePanel; + private static final String CLASS_NAME = "class name"; private static final String DIRECTORY = "directory"; private static final String CRON_NAME = "name"; @@ -109,9 +115,11 @@ public class NewCronjobDialog extends AbstractDialog { message = {NotEmptyRule.MESSAGE, CRON_GROUP}) private FilteredComboBox cronGroupComboBox; - private Project project; - private String moduleName; - private CamelCaseToSnakeCase camelCaseToSnakeCase; + private JLabel cronjobClassNameFieldErrorMessage;//NOPMD + private JLabel cronjobDirectoryFieldErrorMessage;//NOPMD + private JLabel cronjobNameFieldErrorMessage;//NOPMD + private JLabel cronGroupComboBoxErrorMessage;//NOPMD + private JLabel cronjobScheduleFieldErrorMessage;//NOPMD /** * Open a new cronjob generation dialog form. @@ -282,10 +290,8 @@ private String suggestCronjobName(final String cronjobClassname) { */ private void onOK() { if (!validateFormFields()) { - exit(); return; } - final NamespaceBuilder namespaceBuilder = new NamespaceBuilder( this.getCronjobModule(), this.getCronjobClassName(), From abb9b107a62cf3a52c18d4f0edc35e27e3a7d6f7 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 02:01:10 +0200 Subject: [PATCH 060/124] 868: Enhanced error outputting for new Magento 2 Cron Job generation --- .../generation/dialog/NewControllerDialog.form | 4 ++-- .../generation/dialog/NewCronjobDialog.form | 18 ++++++++++++++---- .../generation/dialog/NewCronjobDialog.java | 1 + 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.form index 3d6b85fc7..5abf1a5be 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewControllerDialog.form @@ -142,7 +142,7 @@ - + @@ -170,7 +170,7 @@ - + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.form index 0b3535abe..1da079a05 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.form @@ -3,9 +3,11 @@ - + - + + + @@ -49,7 +51,7 @@ - + @@ -95,7 +97,7 @@ - + @@ -275,6 +277,14 @@ + + + + + + + + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java index c70402b1a..5d072ae1b 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java @@ -120,6 +120,7 @@ public class NewCronjobDialog extends AbstractDialog { private JLabel cronjobNameFieldErrorMessage;//NOPMD private JLabel cronGroupComboBoxErrorMessage;//NOPMD private JLabel cronjobScheduleFieldErrorMessage;//NOPMD + private JLabel configPathFieldErrorMessage; /** * Open a new cronjob generation dialog form. From 3ca91dc94d580feae771c6e4337374a52ec24607 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 09:32:38 +0200 Subject: [PATCH 061/124] 868: Fixed code style check --- .../actions/generation/dialog/NewCronjobDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java index 5d072ae1b..a8f71b0f1 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java @@ -120,7 +120,7 @@ public class NewCronjobDialog extends AbstractDialog { private JLabel cronjobNameFieldErrorMessage;//NOPMD private JLabel cronGroupComboBoxErrorMessage;//NOPMD private JLabel cronjobScheduleFieldErrorMessage;//NOPMD - private JLabel configPathFieldErrorMessage; + private JLabel configPathFieldErrorMessage;//NOPMD /** * Open a new cronjob generation dialog form. From f80dbf2969580bfda9a69dcf435896574e56fbe6 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 09:37:34 +0200 Subject: [PATCH 062/124] 869: Code refactoring --- .../actions/generation/NewCronGroupAction.java | 6 ++---- .../generation/dialog/NewCronGroupDialog.java | 14 ++++---------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewCronGroupAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewCronGroupAction.java index c9908eac8..175d7ef66 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewCronGroupAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewCronGroupAction.java @@ -15,8 +15,8 @@ import com.magento.idea.magento2plugin.MagentoIcons; import com.magento.idea.magento2plugin.actions.generation.dialog.NewCronGroupDialog; -@SuppressWarnings({"PMD.OnlyOneReturn"}) public class NewCronGroupAction extends com.intellij.openapi.actionSystem.AnAction { + public static final String ACTION_NAME = "Magento 2 Cron Group"; public static final String ACTION_DESCRIPTION = "Create a new Magento 2 Cron Group"; @@ -35,18 +35,16 @@ public void actionPerformed(final AnActionEvent event) { if (view == null) { return; } - final Project project = CommonDataKeys.PROJECT.getData(dataContext); + if (project == null) { return; } - final PsiDirectory directory = view.getOrChooseDirectory(); if (directory == null) { return; } - NewCronGroupDialog.open(project, directory); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.java index ea37a5a25..9148d6a23 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.java @@ -37,6 +37,7 @@ "PMD.ExcessiveImports," }) public class NewCronGroupDialog extends AbstractDialog { + private final String moduleName; private final Project project; private JPanel contentPanel; @@ -44,10 +45,8 @@ public class NewCronGroupDialog extends AbstractDialog { private JButton buttonCancel; private static final String NAME = "name"; - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, NAME}) - @FieldValidation(rule = RuleRegistry.IDENTIFIER, - message = {IdentifierRule.MESSAGE, NAME}) + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, NAME}) + @FieldValidation(rule = RuleRegistry.IDENTIFIER, message = {IdentifierRule.MESSAGE, NAME}) private JTextField cronGroupName; private JSpinner scheduleGenerateEvery; @@ -142,13 +141,8 @@ public static void open(final Project project, final PsiDirectory directory) { private void onOK() { if (validateFormFields()) { generateFile(); + exit(); } - exit(); - } - - @Override - protected void onCancel() { - dispose(); } private void generateFile() { From e3301a91ae775beebef5c0e74e1885d53319c3e9 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 09:40:30 +0200 Subject: [PATCH 063/124] 869: Enhanced error outputting for new Magento 2 Cron Group generation --- .../generation/dialog/NewCronGroupDialog.form | 76 ++++++++++--------- .../generation/dialog/NewCronGroupDialog.java | 3 + 2 files changed, 45 insertions(+), 34 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.form index 629d61e1e..030b9841e 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.form @@ -49,7 +49,7 @@ - + @@ -59,7 +59,7 @@ - + @@ -67,7 +67,7 @@ - + @@ -75,7 +75,7 @@ - + @@ -83,7 +83,7 @@ - + @@ -91,7 +91,7 @@ - + @@ -99,7 +99,7 @@ - + @@ -107,43 +107,43 @@ - + - + - + - + - + - + - + @@ -151,7 +151,7 @@ - + @@ -159,7 +159,7 @@ - + @@ -168,7 +168,7 @@ - + @@ -177,7 +177,7 @@ - + @@ -186,7 +186,7 @@ - + @@ -195,7 +195,7 @@ - + @@ -204,7 +204,7 @@ - + @@ -213,7 +213,7 @@ - + @@ -221,7 +221,7 @@ - + @@ -247,7 +247,7 @@ - + @@ -255,7 +255,7 @@ - + @@ -263,7 +263,7 @@ - + @@ -271,7 +271,7 @@ - + @@ -279,7 +279,7 @@ - + @@ -287,7 +287,7 @@ - + @@ -295,7 +295,7 @@ - + @@ -304,7 +304,7 @@ - + @@ -312,7 +312,7 @@ - + @@ -320,7 +320,7 @@ - + @@ -331,9 +331,17 @@ - + + + + + + + + + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.java index 9148d6a23..28ddbd615 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronGroupDialog.java @@ -25,6 +25,7 @@ import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComponent; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.JTextField; @@ -64,6 +65,8 @@ public class NewCronGroupDialog extends AbstractDialog { private FilteredComboBox useSeparateProcess; private JCheckBox addUseSeparateProcess; + private JLabel cronGroupNameErrorMessage;//NOPMD + /** * New CRON group dialogue constructor. * From 7fee0e8ce46fcb9f93c224f2ee4cd34a05df1585 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 09:47:40 +0200 Subject: [PATCH 064/124] 870: Code refactoring --- .../generation/NewViewModelAction.java | 20 ++++++++++--------- .../generation/dialog/NewViewModelDialog.java | 13 ++++-------- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewViewModelAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewViewModelAction.java index 7d4f8c075..3cdaf6dfd 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewViewModelAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewViewModelAction.java @@ -2,6 +2,7 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + package com.magento.idea.magento2plugin.actions.generation; import com.intellij.ide.IdeView; @@ -13,31 +14,32 @@ import org.jetbrains.annotations.NotNull; public class NewViewModelAction extends AnAction { - public static String ACTION_NAME = "Magento 2 View Model"; - public static String ACTION_DESCRIPTION = "Create a new Magento 2 View Model"; - NewViewModelAction() { + public static final String ACTION_NAME = "Magento 2 View Model"; + public static final String ACTION_DESCRIPTION = "Create a new Magento 2 View Model"; + + public NewViewModelAction() { super(ACTION_NAME, ACTION_DESCRIPTION, MagentoIcons.MODULE); } @Override - public void actionPerformed(@NotNull AnActionEvent e) { - DataContext dataContext = e.getDataContext(); - IdeView view = LangDataKeys.IDE_VIEW.getData(dataContext); + public void actionPerformed(final @NotNull AnActionEvent event) { + final DataContext dataContext = event.getDataContext(); + final IdeView view = LangDataKeys.IDE_VIEW.getData(dataContext); + if (view == null) { return; } + final Project project = CommonDataKeys.PROJECT.getData(dataContext); - Project project = CommonDataKeys.PROJECT.getData(dataContext); if (project == null) { return; } + final PsiDirectory directory = view.getOrChooseDirectory(); - PsiDirectory directory = view.getOrChooseDirectory(); if (directory == null) { return; } - NewViewModelDialog.open(project, directory); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java index 77fea5829..e2ee40b4e 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java @@ -33,6 +33,7 @@ import javax.swing.KeyStroke; public class NewViewModelDialog extends AbstractDialog { + private static final String VIEW_MODEL_NAME = "View Model Name"; private static final String VIEW_MODEL_DIR = "View Model Directory"; private final PsiDirectory baseDir; @@ -119,12 +120,12 @@ public static void open(final Project project, final PsiDirectory directory) { protected void onOK() { if (validateFormFields()) { generateFile(); + exit(); } - exit(); } - private PsiFile generateFile() { - return new ModuleViewModelClassGenerator(new ViewModelFileData( + private void generateFile() { + new ModuleViewModelClassGenerator(new ViewModelFileData( getViewModelDirectory(), getViewModelName(), getModuleName(), @@ -185,10 +186,4 @@ private String getNamespace() { ); return parts[0] + Package.fqnSeparator + parts[1] + Package.fqnSeparator + directoryPart; } - - @Override - public void onCancel() { - // add your code here if necessary - dispose(); - } } From 6592c2064774434f5580f1954ebb23bd8d9341a0 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 09:56:20 +0200 Subject: [PATCH 065/124] 870: Enhanced error outputting for new Magento 2 View Model generation --- .../generation/dialog/NewViewModelDialog.form | 26 +++++++++++++++---- .../generation/dialog/NewViewModelDialog.java | 6 ++++- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.form index 88c8a9b83..fa05e157a 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.form @@ -7,12 +7,12 @@ - + - + @@ -22,7 +22,7 @@ - + @@ -44,7 +44,7 @@ - + @@ -55,7 +55,7 @@ - + @@ -65,6 +65,22 @@ + + + + + + + + + + + + + + + + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java index e2ee40b4e..0f2e6a95f 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java @@ -28,6 +28,7 @@ import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JComponent; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.KeyStroke; @@ -36,6 +37,8 @@ public class NewViewModelDialog extends AbstractDialog { private static final String VIEW_MODEL_NAME = "View Model Name"; private static final String VIEW_MODEL_DIR = "View Model Directory"; + + private final Project project; private final PsiDirectory baseDir; private final String moduleName; @@ -59,7 +62,8 @@ public class NewViewModelDialog extends AbstractDialog { message = {DirectoryRule.MESSAGE, VIEW_MODEL_DIR}) private JTextField viewModelParentDir; - private final Project project; + private JLabel viewModelNameErrorMessage;//NOPMD + private JLabel viewModelParentDirErrorMessage;//NOPMD /** * Constructor. From a73037da3c78761b384d52c0aa417bde5d7e9087 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 09:56:48 +0200 Subject: [PATCH 066/124] 870: Code style fix --- .../actions/generation/dialog/NewViewModelDialog.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java index 0f2e6a95f..283004fa2 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewViewModelDialog.java @@ -7,7 +7,6 @@ import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; import com.magento.idea.magento2plugin.actions.generation.NewViewModelAction; import com.magento.idea.magento2plugin.actions.generation.data.ViewModelFileData; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.FieldValidation; From 0a56b325e7622865dedd25cd0dd1680e5aec7e00 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 10:02:39 +0200 Subject: [PATCH 067/124] 871: Code refactoring --- .../generation/NewGraphQlResolverAction.java | 24 ++++++++++++------- .../dialog/NewGraphQlResolverDialog.java | 19 +++++++-------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewGraphQlResolverAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewGraphQlResolverAction.java index 4792ae19d..ae5c3af52 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewGraphQlResolverAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewGraphQlResolverAction.java @@ -2,10 +2,15 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + package com.magento.idea.magento2plugin.actions.generation; import com.intellij.ide.IdeView; -import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.CommonDataKeys; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDirectory; import com.magento.idea.magento2plugin.MagentoIcons; @@ -13,31 +18,32 @@ import org.jetbrains.annotations.NotNull; public class NewGraphQlResolverAction extends AnAction { - public static String ACTION_NAME = "Magento 2 GraphQL Resolver"; - public static String ACTION_DESCRIPTION = "Create a new Magento 2 GraphQL Resolver"; - NewGraphQlResolverAction() { + public static final String ACTION_NAME = "Magento 2 GraphQL Resolver"; + public static final String ACTION_DESCRIPTION = "Create a new Magento 2 GraphQL Resolver"; + + public NewGraphQlResolverAction() { super(ACTION_NAME, ACTION_DESCRIPTION, MagentoIcons.MODULE); } @Override - public void actionPerformed(@NotNull AnActionEvent e) { - DataContext dataContext = e.getDataContext(); + public void actionPerformed(final @NotNull AnActionEvent event) { + DataContext dataContext = event.getDataContext(); IdeView view = LangDataKeys.IDE_VIEW.getData(dataContext); + if (view == null) { return; } - Project project = CommonDataKeys.PROJECT.getData(dataContext); + if (project == null) { return; } - PsiDirectory directory = view.getOrChooseDirectory(); + if (directory == null) { return; } - NewGraphQlResolverDialog.open(project, directory); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.java index 2cb558795..cbabef8a2 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.java @@ -29,8 +29,10 @@ import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.KeyStroke; +import org.jetbrains.annotations.NotNull; public class NewGraphQlResolverDialog extends AbstractDialog { + private final PsiDirectory baseDir; private final String moduleName; private JPanel contentPanel; @@ -58,7 +60,10 @@ public class NewGraphQlResolverDialog extends AbstractDialog { * @param project Project * @param directory PsiDirectory */ - public NewGraphQlResolverDialog(final Project project, final PsiDirectory directory) { + public NewGraphQlResolverDialog( + final @NotNull Project project, + final @NotNull PsiDirectory directory + ) { super(); this.project = project; @@ -111,12 +116,12 @@ public static void open(final Project project, final PsiDirectory directory) { protected void onOK() { if (validateFormFields()) { generateFile(); + exit(); } - exit(); } - private PsiFile generateFile() { - return new ModuleGraphQlResolverClassGenerator(new GraphQlResolverFileData( + private void generateFile() { + new ModuleGraphQlResolverClassGenerator(new GraphQlResolverFileData( getGraphQlResolverDirectory(), getGraphQlResolverClassName(), getModuleName(), @@ -182,10 +187,4 @@ private String getNamespace() { private String getGraphQlResolverClassFqn() { return getNamespace().concat(Package.fqnSeparator).concat(getGraphQlResolverClassName()); } - - @Override - public void onCancel() { - // add your code here if necessary - dispose(); - } } From 0e5264e84d632836a916d04d727d3f0bf2fbab70 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 10:06:13 +0200 Subject: [PATCH 068/124] 871: Enhanced error outputting for new Magento 2 GraphQl Resolver generation --- .../dialog/NewGraphQlResolverDialog.form | 24 +++++++++++++++---- .../dialog/NewGraphQlResolverDialog.java | 5 +++- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.form index f16356523..7ad64638b 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.form @@ -7,12 +7,12 @@ - + - + @@ -44,7 +44,7 @@ - + @@ -55,7 +55,7 @@ - + @@ -65,6 +65,22 @@ + + + + + + + + + + + + + + + + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.java index cbabef8a2..5990542f3 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewGraphQlResolverDialog.java @@ -7,7 +7,6 @@ import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; import com.magento.idea.magento2plugin.actions.generation.NewGraphQlResolverAction; import com.magento.idea.magento2plugin.actions.generation.data.GraphQlResolverFileData; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.FieldValidation; @@ -26,6 +25,7 @@ import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JComponent; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.KeyStroke; @@ -54,6 +54,9 @@ public class NewGraphQlResolverDialog extends AbstractDialog { message = {PhpDirectoryRule.MESSAGE, PARENT_DIRECTORY}) private JTextField graphQlResolverParentDir; + private JLabel graphQlResolverClassNameErrorMessage;//NOPMD + private JLabel graphQlResolverParentDirErrorMessage;//NOPMD + /** * Constructor. * From 0f1f19bfd7ab404eed6061406c31fab73eb06659 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 10:09:13 +0200 Subject: [PATCH 069/124] 870: Code style fix --- .../actions/generation/NewViewModelAction.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewViewModelAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewViewModelAction.java index 3cdaf6dfd..53e72f68d 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewViewModelAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewViewModelAction.java @@ -6,7 +6,11 @@ package com.magento.idea.magento2plugin.actions.generation; import com.intellij.ide.IdeView; -import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.CommonDataKeys; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDirectory; import com.magento.idea.magento2plugin.MagentoIcons; From cd7bcd4ba2b3929c1ec27fa943c08354d4cbbace Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 10:13:44 +0200 Subject: [PATCH 070/124] 872: Code refactoring --- .../actions/generation/NewCLICommandAction.java | 14 +++++++------- .../generation/dialog/NewCLICommandDialog.java | 16 +++++++++++----- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewCLICommandAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewCLICommandAction.java index 41bf7c68a..e352d29e4 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewCLICommandAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewCLICommandAction.java @@ -17,33 +17,33 @@ import com.magento.idea.magento2plugin.actions.generation.dialog.NewCLICommandDialog; import org.jetbrains.annotations.NotNull; -@SuppressWarnings({"PMD.FieldNamingConventions", "PMD.OnlyOneReturn"}) public class NewCLICommandAction extends AnAction { - public static String ACTION_NAME = "Magento 2 CLI Command"; - public static String ACTION_DESCRIPTION = "Create a new Magento 2 CLI Command"; + + public static final String ACTION_NAME = "Magento 2 CLI Command"; + public static final String ACTION_DESCRIPTION = "Create a new Magento 2 CLI Command"; public NewCLICommandAction() { super(ACTION_NAME, ACTION_DESCRIPTION, MagentoIcons.MODULE); } @Override - public void actionPerformed(@NotNull final AnActionEvent event) { + public void actionPerformed(final @NotNull AnActionEvent event) { final DataContext context = event.getDataContext(); final IdeView view = LangDataKeys.IDE_VIEW.getData(context); + if (view == null) { return; } - final Project project = CommonDataKeys.PROJECT.getData(context); + if (project == null) { return; } - final PsiDirectory directory = view.getOrChooseDirectory(); + if (directory == null) { return; } - NewCLICommandDialog.open(project, directory); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.java index ef139e58e..8e157eb9d 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.java @@ -35,17 +35,20 @@ import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.KeyStroke; +import org.jetbrains.annotations.NotNull; @SuppressWarnings({"PMD.MissingSerialVersionUID", "PMD.ExcessiveImports"}) public class NewCLICommandDialog extends AbstractDialog { - private JPanel contentPane; - private JButton buttonCancel; - private JButton buttonOK; + private static final String CLASS_NAME = "class name"; private static final String PARENT_DIRECTORY = "parent directory"; private static final String COMMAND_NAME = "command name"; private static final String COMMAND_DESCRIPTION = "description"; + private JPanel contentPane; + private JButton buttonCancel; + private JButton buttonOK; + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, CLASS_NAME}) @FieldValidation(rule = RuleRegistry.PHP_CLASS, @@ -79,7 +82,10 @@ public class NewCLICommandDialog extends AbstractDialog { * @param project Project * @param directory PsiDirectory */ - public NewCLICommandDialog(final Project project, final PsiDirectory directory) { + public NewCLICommandDialog( + final @NotNull Project project, + final @NotNull PsiDirectory directory + ) { super(); this.project = project; this.moduleName = GetModuleNameByDirectoryUtil.execute(directory, project); @@ -181,8 +187,8 @@ public String getCLICommandClassFqn() { private void onOK() { if (validateFormFields() && isPHPClassValid()) { this.generate(); + exit(); } - exit(); } private Boolean isPHPClassValid() { From 18a1b2b1a1ec2498321694feaedacaf6723747cd Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 10:17:54 +0200 Subject: [PATCH 071/124] 872: Enhanced error outputting for new Magento 2 CLI Command generation --- .../dialog/NewCLICommandDialog.form | 48 +++++++++++++++---- .../dialog/NewCLICommandDialog.java | 6 +++ 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.form index cc459ee59..43b98f5b5 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.form @@ -16,7 +16,7 @@ - + @@ -36,7 +36,7 @@ - + @@ -46,7 +46,7 @@ - + @@ -65,7 +65,7 @@ - + @@ -74,7 +74,7 @@ - + @@ -83,7 +83,7 @@ - + @@ -93,7 +93,7 @@ - + @@ -128,7 +128,7 @@ - + @@ -137,6 +137,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.java index 8e157eb9d..26a085f41 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCLICommandDialog.java @@ -30,6 +30,7 @@ import java.util.Locale; import javax.swing.JButton; import javax.swing.JComponent; +import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextArea; @@ -71,6 +72,11 @@ public class NewCLICommandDialog extends AbstractDialog { message = {NotEmptyRule.MESSAGE, COMMAND_DESCRIPTION}) private JTextArea cliCommandDescriptionField; + private JLabel cliCommandClassNameFieldErrorMessage;//NOPMD + private JLabel cliCommandParentDirectoryFieldErrorMessage;//NOPMD + private JLabel cliCommandNameFieldErrorMessage;//NOPMD + private JLabel cliCommandDescriptionFieldErrorMessage;//NOPMD + private final CommonBundle commonBundle; private final Project project; private final String moduleName; From a6ff7b35f0c14c6356829deba4d5e936c975a958 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 10:19:22 +0200 Subject: [PATCH 072/124] 871: Code style fix --- .../actions/generation/NewGraphQlResolverAction.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewGraphQlResolverAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewGraphQlResolverAction.java index ae5c3af52..347e6b5c2 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewGraphQlResolverAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewGraphQlResolverAction.java @@ -28,18 +28,18 @@ public NewGraphQlResolverAction() { @Override public void actionPerformed(final @NotNull AnActionEvent event) { - DataContext dataContext = event.getDataContext(); - IdeView view = LangDataKeys.IDE_VIEW.getData(dataContext); + final DataContext dataContext = event.getDataContext(); + final IdeView view = LangDataKeys.IDE_VIEW.getData(dataContext); if (view == null) { return; } - Project project = CommonDataKeys.PROJECT.getData(dataContext); + final Project project = CommonDataKeys.PROJECT.getData(dataContext); if (project == null) { return; } - PsiDirectory directory = view.getOrChooseDirectory(); + final PsiDirectory directory = view.getOrChooseDirectory(); if (directory == null) { return; From 3b0b1914ec95a7265d33c80e96e941d9bc43d5b8 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 23:07:22 +0200 Subject: [PATCH 073/124] 873: Code refactoring --- .../generation/NewEmailTemplateAction.java | 7 +++--- .../dialog/NewEmailTemplateDialog.java | 25 ++++++++----------- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewEmailTemplateAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewEmailTemplateAction.java index 78a99904b..ca7007625 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewEmailTemplateAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewEmailTemplateAction.java @@ -16,8 +16,8 @@ import com.magento.idea.magento2plugin.MagentoIcons; import com.magento.idea.magento2plugin.actions.generation.dialog.NewEmailTemplateDialog; -@SuppressWarnings({"PMD.OnlyOneReturn", "PMD.FieldNamingConventions"}) public class NewEmailTemplateAction extends AnAction { + public static final String ACTION_NAME = "Magento 2 Email Template"; public static final String ACTION_DESCRIPTION = "Create a new Magento 2 email template"; @@ -36,17 +36,16 @@ public void actionPerformed(final AnActionEvent event) { if (view == null) { return; } - final Project project = CommonDataKeys.PROJECT.getData(dataContext); + if (project == null) { return; } - final PsiDirectory directory = view.getOrChooseDirectory(); + if (directory == null) { return; } - NewEmailTemplateDialog.open(project, directory); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.java index 2ee468ebf..c12f14cb3 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.java @@ -21,8 +21,6 @@ import com.magento.idea.magento2plugin.magento.packages.Areas; import com.magento.idea.magento2plugin.ui.FilteredComboBox; import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; @@ -36,15 +34,18 @@ import javax.swing.KeyStroke; public class NewEmailTemplateDialog extends AbstractDialog { - private final String moduleName; - private final Project project; - private final NewEmailTemplateDialogValidator validator; + private static final String EMAIL_TEMPLATE_ID = "id"; private static final String LABEL = "label"; private static final String FILENAME = "file name"; + + private final String moduleName; + private final Project project; + private final NewEmailTemplateDialogValidator validator; private JPanel contentPane; private JButton buttonOK; private JButton buttonCancel; + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, EMAIL_TEMPLATE_ID}) @FieldValidation(rule = RuleRegistry.IDENTIFIER, @@ -58,6 +59,7 @@ public class NewEmailTemplateDialog extends AbstractDialog { @FieldValidation(rule = RuleRegistry.IDENTIFIER, message = {IdentifierRule.MESSAGE, FILENAME}) private JTextField fileName; + private FilteredComboBox area; private FilteredComboBox templateType; private JTextField subject; @@ -83,6 +85,8 @@ public NewEmailTemplateDialog(final Project project, final PsiDirectory director // call onCancel() when cross is clicked setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() { + + @Override public void windowClosing(final WindowEvent windowEvent) { onCancel(); } @@ -90,11 +94,7 @@ public void windowClosing(final WindowEvent windowEvent) { // call onCancel() on ESCAPE contentPane.registerKeyboardAction( - new ActionListener() { - public void actionPerformed(final ActionEvent actionEvent) { - onCancel(); - } - }, + actionEvent -> onCancel(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT ); @@ -230,11 +230,6 @@ private void generateFile() { xmlGenerator.generate(NewEmailTemplateAction.ACTION_NAME, true); } - protected void onCancel() { - // add your code here if necessary - dispose(); - } - @SuppressWarnings({"PMD.UnusedPrivateMethod"}) private void createUIComponents() { this.area = new FilteredComboBox(getAreaList()); From 8e92c6388303d95422ee39e2743bf742afcafa77 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 23:16:05 +0200 Subject: [PATCH 074/124] 873: Enhanced error outputting for new Magento 2 email template generation --- .../dialog/NewEmailTemplateDialog.form | 52 ++++++++++++++----- .../dialog/NewEmailTemplateDialog.java | 9 +++- 2 files changed, 46 insertions(+), 15 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.form index 1c074587b..411ec0e9d 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.form @@ -3,9 +3,11 @@ - + - + + + @@ -49,7 +51,7 @@ - + @@ -75,7 +77,7 @@ - + @@ -83,7 +85,7 @@ - + @@ -91,7 +93,7 @@ - + @@ -99,7 +101,7 @@ - + @@ -107,7 +109,7 @@ - + @@ -115,7 +117,7 @@ - + @@ -123,7 +125,7 @@ - + @@ -134,7 +136,7 @@ - + @@ -145,7 +147,7 @@ - + @@ -153,12 +155,36 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.java index c12f14cb3..461f3588f 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEmailTemplateDialog.java @@ -29,6 +29,7 @@ import java.util.List; import javax.swing.JButton; import javax.swing.JComponent; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.KeyStroke; @@ -51,9 +52,11 @@ public class NewEmailTemplateDialog extends AbstractDialog { @FieldValidation(rule = RuleRegistry.IDENTIFIER, message = {IdentifierRule.MESSAGE, EMAIL_TEMPLATE_ID}) private JTextField identifier; + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, LABEL}) private JTextField label; + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, FILENAME}) @FieldValidation(rule = RuleRegistry.IDENTIFIER, @@ -64,6 +67,10 @@ public class NewEmailTemplateDialog extends AbstractDialog { private FilteredComboBox templateType; private JTextField subject; + private JLabel identifierErrorMessage;//NOPMD + private JLabel labelErrorMessage;//NOPMD + private JLabel fileNameErrorMessage;//NOPMD + /** * New email template dialog. * @@ -208,11 +215,9 @@ private void onOK() { final boolean emailTemplateCanBeDeclared = !this.validator.validate(this); if (!validateFormFields() || emailTemplateCanBeDeclared) { - exit(); return; } generateFile(); - exit(); } From 457429ae3412f6537c5c0c13e6fbffa2e668581d Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 23:20:59 +0200 Subject: [PATCH 075/124] 874: Code refactoring --- .../actions/generation/NewModelsAction.java | 6 +++--- .../actions/generation/dialog/NewModelsDialog.java | 8 ++------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewModelsAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewModelsAction.java index e9034f882..1567d41eb 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewModelsAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewModelsAction.java @@ -17,6 +17,7 @@ import com.magento.idea.magento2plugin.actions.generation.dialog.NewModelsDialog; public class NewModelsAction extends AnAction { + public static final String ACTION_NAME = "Magento 2 Models"; public static final String ACTION_DESCRIPTION = "Create a new Magento 2 models"; @@ -35,17 +36,16 @@ public void actionPerformed(final AnActionEvent event) { if (view == null) { return; } - final Project project = CommonDataKeys.PROJECT.getData(dataContext); + if (project == null) { return; } - final PsiDirectory directory = view.getOrChooseDirectory(); + if (directory == null) { return; } - NewModelsDialog.open(project, directory); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.java index 518522798..e16df74a7 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.java @@ -35,6 +35,7 @@ @SuppressWarnings("PMD.TooManyFields") public class NewModelsDialog extends AbstractDialog { + private final String moduleName; private final Project project; private JPanel contentPane; @@ -160,11 +161,6 @@ public static void open( dialog.setVisible(true); } - @Override - protected void onCancel() { - dispose(); - } - /** * Process generation. */ @@ -173,8 +169,8 @@ private void onOK() { generateModelFile(); generateResourceModelFile(); generateCollectionFile(); + exit(); } - exit(); } /** From e83ab093d2cb161345ca56ab0f6d8562b63dabc2 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 21 Dec 2021 23:26:06 +0200 Subject: [PATCH 076/124] 874: Enhanced error outputting for new Magento 2 models generation --- .../generation/dialog/NewModelsDialog.form | 74 +++++++++++++++---- .../generation/dialog/NewModelsDialog.java | 6 ++ 2 files changed, 67 insertions(+), 13 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.form index ec6e68d88..da7a3a909 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.form @@ -3,10 +3,10 @@ - + - + @@ -51,7 +51,7 @@ - + @@ -77,7 +77,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -93,7 +93,7 @@ - + @@ -101,7 +101,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -119,7 +119,7 @@ - + @@ -127,7 +127,7 @@ - + @@ -137,7 +137,7 @@ - + @@ -145,7 +145,7 @@ - + @@ -155,12 +155,60 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.java index e16df74a7..ca47d35b7 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModelsDialog.java @@ -92,6 +92,12 @@ public class NewModelsDialog extends AbstractDialog { private JLabel entityIdColumnLabel;//NOPMD private JLabel collectionDirectoryLabel;//NOPMD private JLabel collectionNameLabel;//NOPMD + private JLabel modelNameErrorMessage;//NOPMD + private JLabel resourceModelNameErrorMessage;//NOPMD + private JLabel dbTableNameErrorMessage;//NOPMD + private JLabel entityIdColumnErrorMessage;//NOPMD + private JLabel collectionDirectoryErrorMessage;//NOPMD + private JLabel collectionNameErrorMessage;//NOPMD /** * Open new dialog for adding new controller. From 58d6269fbe5e54cd2d9db88a9cd7e9927c34859b Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Wed, 22 Dec 2021 17:40:51 +0200 Subject: [PATCH 077/124] 875: Code refactoring --- .../generation/NewDataModelAction.java | 10 +++--- .../generation/dialog/NewDataModelDialog.java | 36 +++++++++---------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewDataModelAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewDataModelAction.java index e15ff1551..cd3393b26 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewDataModelAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewDataModelAction.java @@ -18,6 +18,7 @@ import org.jetbrains.annotations.NotNull; public class NewDataModelAction extends AnAction { + public static final String ACTION_NAME = "Magento 2 Data Model"; public static final String ACTION_DESCRIPTION = "Create a new Magento 2 Data Model"; @@ -29,24 +30,23 @@ public NewDataModelAction() { } @Override - public void actionPerformed(@NotNull final AnActionEvent event) { + public void actionPerformed(final @NotNull AnActionEvent event) { final DataContext dataContext = event.getDataContext(); - final IdeView view = LangDataKeys.IDE_VIEW.getData(dataContext); + if (view == null) { return; } - final Project project = CommonDataKeys.PROJECT.getData(dataContext); + if (project == null) { return; } - final PsiDirectory directory = view.getOrChooseDirectory(); + if (directory == null) { return; } - NewDataModelDialog.open(project, directory); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java index 040572b21..d9389495b 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java @@ -47,24 +47,25 @@ import javax.swing.KeyStroke; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; +import org.jetbrains.annotations.NotNull; @SuppressWarnings({ "PMD.ExcessiveImports" }) public class NewDataModelDialog extends AbstractDialog { - private final Project project; - private final String moduleName; - private final ValidatorBundle validatorBundle; - private final CommonBundle commonBundle; - private final List properties; - private static final String MODEL_NAME = "Model Name"; private static final String PROPERTY_NAME = "Name"; private static final String PROPERTY_TYPE = "Type"; private static final String PROPERTY_ACTION = "Action"; private static final String PROPERTY_DELETE = "Delete"; + private final Project project; + private final String moduleName; + private final ValidatorBundle validatorBundle; + private final CommonBundle commonBundle; + private final List properties; + private JPanel contentPanel; private JButton buttonOK; private JButton buttonCancel; @@ -72,16 +73,17 @@ public class NewDataModelDialog extends AbstractDialog { private JButton addProperty; private JCheckBox createInterface; - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, MODEL_NAME}) - @FieldValidation(rule = RuleRegistry.PHP_CLASS, - message = {PhpClassRule.MESSAGE, MODEL_NAME}) + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, MODEL_NAME}) + @FieldValidation(rule = RuleRegistry.PHP_CLASS, message = {PhpClassRule.MESSAGE, MODEL_NAME}) private JTextField modelName; /** * Constructor. */ - public NewDataModelDialog(final Project project, final PsiDirectory directory) { + public NewDataModelDialog( + final @NotNull Project project, + final @NotNull PsiDirectory directory + ) { super(); this.project = project; @@ -122,7 +124,10 @@ public void windowClosing(final WindowEvent event) { /** * Opens the dialog window. */ - public static void open(final Project project, final PsiDirectory directory) { + public static void open( + final @NotNull Project project, + final @NotNull PsiDirectory directory + ) { final NewDataModelDialog dialog = new NewDataModelDialog(project, directory); dialog.pack(); dialog.centerDialog(dialog); @@ -145,8 +150,8 @@ private void onOK() { generateDataModelInterfaceFile(); generatePreferenceForInterface(); } + exit(); } - exit(); } @Override @@ -190,11 +195,6 @@ protected boolean validateFormFields() { return valid; } - @Override - public void onCancel() { - dispose(); - } - /** * Generate DTO interface file. */ From cc135f0601f7076754905cb3646e4c23881c72ed Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Wed, 22 Dec 2021 17:50:24 +0200 Subject: [PATCH 078/124] 875: Enhanced error outputting for new Magento 2 data model generation --- resources/magento2/validation.properties | 1 + .../generation/dialog/NewDataModelDialog.form | 10 +++++++++- .../generation/dialog/NewDataModelDialog.java | 14 ++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/resources/magento2/validation.properties b/resources/magento2/validation.properties index 9e7a095d5..b868b58fb 100644 --- a/resources/magento2/validation.properties +++ b/resources/magento2/validation.properties @@ -1,6 +1,7 @@ validator.notEmpty=The {0} field must not be empty validator.box.notEmpty=The {0} field must contain a valid selection from the dropdown validator.package.validPath=Please specify a valid Magento 2 installation path +validator.properties.notEmpty=The properties must not be empty validator.alphaNumericCharacters=The {0} field must contain letters and numbers only validator.alphaNumericAndUnderscoreCharacters={0} must contain letters, numbers and underscores only validator.alphaAndPeriodCharacters=The {0} field must contain alphabets and periods only diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.form index 9d58d7228..b9b2cb84b 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.form @@ -10,7 +10,7 @@ - + @@ -36,6 +36,14 @@ + + + + + + + + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java index d9389495b..1c907d7a9 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java @@ -40,6 +40,7 @@ import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComponent; +import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTable; @@ -77,6 +78,8 @@ public class NewDataModelDialog extends AbstractDialog { @FieldValidation(rule = RuleRegistry.PHP_CLASS, message = {PhpClassRule.MESSAGE, MODEL_NAME}) private JTextField modelName; + private JLabel modelNameErrorMessage;//NOPMD + /** * Constructor. */ @@ -162,6 +165,17 @@ protected boolean validateFormFields() { valid = true; final String errorTitle = commonBundle.message("common.error"); final int column = 0; + + if (propertyTable.getRowCount() == 0) { + valid = false; + JOptionPane.showMessageDialog( + null, + validatorBundle.message("validator.properties.notEmpty"), + errorTitle, + JOptionPane.ERROR_MESSAGE + ); + } + for (int row = 0; row < propertyTable.getRowCount(); row++) { final String propertyName = ((String) propertyTable.getValueAt(row, column)).trim(); if (propertyName.isEmpty()) { From 533e98c786598ae63933793a3563f9d48d00beb0 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Wed, 22 Dec 2021 17:58:10 +0200 Subject: [PATCH 079/124] 876: Code refactoring --- .../generation/NewMessageQueueAction.java | 10 +++---- .../dialog/NewMessageQueueDialog.java | 29 ++++++++++++------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewMessageQueueAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewMessageQueueAction.java index d562f076a..f66d9f1d0 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewMessageQueueAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewMessageQueueAction.java @@ -18,6 +18,7 @@ import org.jetbrains.annotations.NotNull; public class NewMessageQueueAction extends AnAction { + public static final String ACTION_NAME = "Magento 2 Message Queue"; public static final String ACTION_DESCRIPTION = "Create a new Magento 2 Message Queue"; @@ -29,24 +30,23 @@ public NewMessageQueueAction() { } @Override - public void actionPerformed(@NotNull final AnActionEvent event) { + public void actionPerformed(final @NotNull AnActionEvent event) { final DataContext dataContext = event.getDataContext(); - final IdeView view = LangDataKeys.IDE_VIEW.getData(dataContext); + if (view == null) { return; } - final Project project = CommonDataKeys.PROJECT.getData(dataContext); + if (project == null) { return; } - final PsiDirectory directory = view.getOrChooseDirectory(); + if (directory == null) { return; } - NewMessageQueueDialog.open(project, directory); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java index e7954d2c5..e246e2cac 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java @@ -52,6 +52,7 @@ "PMD.ExcessiveImports", }) public class NewMessageQueueDialog extends AbstractDialog { + private static final String TOPIC_NAME = "Topic Name"; private static final String HANDLER_NAME = "Handler Name"; private static final String HANDLER_TYPE = "Handler Type"; @@ -64,6 +65,8 @@ public class NewMessageQueueDialog extends AbstractDialog { private static final String BINDING_TOPIC = "Binding Topic"; private JComboBox connectionName; + private final Project project; + private final String moduleName; /* TODO: Improve validation */ @FieldValidation(rule = RuleRegistry.NOT_EMPTY, @@ -146,13 +149,16 @@ public class NewMessageQueueDialog extends AbstractDialog { private JLabel consumerNameLabel;//NOPMD private JLabel handlerDirectoryLabel;//NOPMD - private final Project project; - private final String moduleName; - /** * Constructor. + * + * @param project Project + * @param directory PsiDirectory */ - public NewMessageQueueDialog(final Project project, final PsiDirectory directory) { + public NewMessageQueueDialog( + final @NotNull Project project, + final @NotNull PsiDirectory directory + ) { super(); this.project = project; @@ -224,19 +230,20 @@ private void toggleConsumer() { /** * Opens the dialog window. + * + * @param project Project + * @param directory PsiDirectory */ - public static void open(final Project project, final PsiDirectory directory) { + public static void open( + final @NotNull Project project, + final @NotNull PsiDirectory directory + ) { final NewMessageQueueDialog dialog = new NewMessageQueueDialog(project, directory); dialog.pack(); dialog.centerDialog(dialog); dialog.setVisible(true); } - @Override - public void onCancel() { - dispose(); - } - private void onOK() { if (validateFormFields()) { generateCommunication(); @@ -248,8 +255,8 @@ private void onOK() { if (getConnectionName().equals(MessageQueueConnections.DB.getType())) { generateConsumerClass(); } + exit(); } - exit(); } private void generateCommunication() { From 01738e9f84d3f8029e564d8e90db587f7b4fffdf Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Wed, 22 Dec 2021 20:51:13 +0200 Subject: [PATCH 080/124] 876: Enhanced error outputting for new Magento 2 message queue generation --- .../dialog/NewMessageQueueDialog.form | 143 +++++++++++++++--- .../dialog/NewMessageQueueDialog.java | 55 ++++--- 2 files changed, 153 insertions(+), 45 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.form index ab56c7f34..13e9efda6 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.form @@ -7,11 +7,12 @@ + - + @@ -21,7 +22,7 @@ - + @@ -32,7 +33,7 @@ - + @@ -44,7 +45,7 @@ - + @@ -53,7 +54,7 @@ - + @@ -63,7 +64,7 @@ - + @@ -71,7 +72,7 @@ - + @@ -103,7 +104,7 @@ - + @@ -113,7 +114,7 @@ - + @@ -121,7 +122,7 @@ - + @@ -129,7 +130,7 @@ - + @@ -139,7 +140,7 @@ - + @@ -147,7 +148,7 @@ - + @@ -155,7 +156,7 @@ - + @@ -163,12 +164,76 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -212,7 +277,7 @@ - + @@ -222,7 +287,7 @@ - + @@ -232,7 +297,7 @@ - + @@ -240,7 +305,7 @@ - + @@ -253,7 +318,7 @@ - + @@ -270,7 +335,7 @@ - + @@ -280,7 +345,7 @@ - + @@ -288,7 +353,7 @@ - + @@ -312,6 +377,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java index e246e2cac..816079a41 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java @@ -19,6 +19,7 @@ import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.AlphaWithDashRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.AlphaWithPeriodRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.AlphanumericWithUnderscoreRule; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.DirectoryRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.Lowercase; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NotEmptyRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NumericRule; @@ -55,10 +56,12 @@ public class NewMessageQueueDialog extends AbstractDialog { private static final String TOPIC_NAME = "Topic Name"; private static final String HANDLER_NAME = "Handler Name"; - private static final String HANDLER_TYPE = "Handler Type"; + private static final String HANDLER_TYPE = "Handler Class"; + private static final String HANDLER_DIR = "Handler Directory"; private static final String CONSUMER_NAME = "Consumer Name"; private static final String QUEUE_NAME = "Queue Name"; - private static final String CONSUMER_TYPE = "Consumer Type"; + private static final String CONSUMER_TYPE = "Consumer Class"; + private static final String CONSUMER_DIR = "Consumer Directory"; private static final String MAX_MESSAGES = "Maximum Messages"; private static final String EXCHANGE_NAME = "Exchange Name"; private static final String BINDING_ID = "Binding ID"; @@ -69,22 +72,18 @@ public class NewMessageQueueDialog extends AbstractDialog { private final String moduleName; /* TODO: Improve validation */ - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, TOPIC_NAME}) + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, TOPIC_NAME}) @FieldValidation(rule = RuleRegistry.ALPHA_WITH_PERIOD, message = {AlphaWithPeriodRule.MESSAGE, TOPIC_NAME}) - @FieldValidation(rule = RuleRegistry.LOWERCASE, - message = {Lowercase.MESSAGE, TOPIC_NAME}) + @FieldValidation(rule = RuleRegistry.LOWERCASE, message = {Lowercase.MESSAGE, TOPIC_NAME}) private JTextField topicName; - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, HANDLER_NAME}) + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, HANDLER_NAME}) @FieldValidation(rule = RuleRegistry.ALPHA_WITH_PERIOD, message = {AlphanumericWithUnderscoreRule.MESSAGE, HANDLER_NAME}) private JTextField handlerName; - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, HANDLER_TYPE}) + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, HANDLER_TYPE}) @FieldValidation(rule = RuleRegistry.PHP_CLASS, message = {PhpClassFqnRule.MESSAGE, HANDLER_TYPE}) private JTextField handlerClass; @@ -93,16 +92,13 @@ public class NewMessageQueueDialog extends AbstractDialog { message = {NotEmptyRule.MESSAGE, CONSUMER_NAME}) @FieldValidation(rule = RuleRegistry.ALPHA_WITH_PERIOD, message = {AlphaWithPeriodRule.MESSAGE, CONSUMER_NAME}) - @FieldValidation(rule = RuleRegistry.LOWERCASE, - message = {Lowercase.MESSAGE, CONSUMER_NAME}) + @FieldValidation(rule = RuleRegistry.LOWERCASE, message = {Lowercase.MESSAGE, CONSUMER_NAME}) private JTextField consumerName; - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, QUEUE_NAME}) + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, QUEUE_NAME}) @FieldValidation(rule = RuleRegistry.ALPHA_WITH_PERIOD, message = {AlphaWithPeriodRule.MESSAGE, QUEUE_NAME}) - @FieldValidation(rule = RuleRegistry.LOWERCASE, - message = {Lowercase.MESSAGE, QUEUE_NAME}) + @FieldValidation(rule = RuleRegistry.LOWERCASE, message = {Lowercase.MESSAGE, QUEUE_NAME}) private JTextField queueName; @FieldValidation(rule = RuleRegistry.NOT_EMPTY, @@ -111,10 +107,8 @@ public class NewMessageQueueDialog extends AbstractDialog { message = {PhpClassFqnRule.MESSAGE, CONSUMER_TYPE}) private JTextField consumerClass; - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, MAX_MESSAGES}) - @FieldValidation(rule = RuleRegistry.NUMERIC, - message = {NumericRule.MESSAGE, MAX_MESSAGES}) + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, MAX_MESSAGES}) + @FieldValidation(rule = RuleRegistry.NUMERIC, message = {NumericRule.MESSAGE, MAX_MESSAGES}) private JTextField maxMessages; @FieldValidation(rule = RuleRegistry.NOT_EMPTY, @@ -123,8 +117,7 @@ public class NewMessageQueueDialog extends AbstractDialog { message = {AlphaWithDashRule.MESSAGE, EXCHANGE_NAME}) private JTextField exchangeName; - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, BINDING_ID}) + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, BINDING_ID}) @FieldValidation(rule = RuleRegistry.ALPHANUMERIC_WITH_UNDERSCORE, message = {AlphaWithDashRule.MESSAGE, BINDING_ID}) private JTextField bindingId; @@ -135,7 +128,12 @@ public class NewMessageQueueDialog extends AbstractDialog { message = {AlphanumericWithUnderscoreRule.MESSAGE, BINDING_TOPIC}) private JTextField bindingTopic; + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, CONSUMER_DIR}) + @FieldValidation(rule = RuleRegistry.DIRECTORY, message = {DirectoryRule.MESSAGE, CONSUMER_DIR}) private JTextField consumerDirectory; + + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, HANDLER_DIR}) + @FieldValidation(rule = RuleRegistry.DIRECTORY, message = {DirectoryRule.MESSAGE, HANDLER_DIR}) private JTextField handlerDirectory; private JPanel contentPanel; @@ -149,6 +147,19 @@ public class NewMessageQueueDialog extends AbstractDialog { private JLabel consumerNameLabel;//NOPMD private JLabel handlerDirectoryLabel;//NOPMD + private JLabel topicNameErrorMessage;//NOPMD + private JLabel handlerNameErrorMessage;//NOPMD + private JLabel handlerClassErrorMessage;//NOPMD + private JLabel consumerNameErrorMessage;//NOPMD + private JLabel queueNameErrorMessage;//NOPMD + private JLabel consumerClassErrorMessage;//NOPMD + private JLabel maxMessagesErrorMessage;//NOPMD + private JLabel exchangeNameErrorMessage;//NOPMD + private JLabel bindingIdErrorMessage;//NOPMD + private JLabel bindingTopicErrorMessage;//NOPMD + private JLabel consumerDirectoryErrorMessage;//NOPMD + private JLabel handlerDirectoryErrorMessage;//NOPMD + /** * Constructor. * From d890d835dc43ebe7c0e1d027ca0f89c3d6a04828 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Thu, 23 Dec 2021 09:31:16 +0200 Subject: [PATCH 081/124] 877: Code refactoring --- .../actions/generation/NewDbSchemaAction.java | 6 ++++-- .../actions/generation/dialog/NewDbSchemaDialog.java | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewDbSchemaAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewDbSchemaAction.java index f2a76930f..ee2997166 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewDbSchemaAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewDbSchemaAction.java @@ -18,6 +18,7 @@ import org.jetbrains.annotations.NotNull; public class NewDbSchemaAction extends AnAction { + public static final String ACTION_NAME = "Magento 2 Declarative Schema XML"; public static final String ACTION_DESCRIPTION = "Create a new declarative schema XML"; @@ -32,16 +33,17 @@ public NewDbSchemaAction() { public void actionPerformed(final @NotNull AnActionEvent event) { final DataContext dataContext = event.getDataContext(); final IdeView view = LangDataKeys.IDE_VIEW.getData(dataContext); + if (view == null) { return; } - final Project project = CommonDataKeys.PROJECT.getData(dataContext); + if (project == null) { return; } - final PsiDirectory directory = view.getOrChooseDirectory(); + if (directory == null) { return; } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java index f48820135..00bf34911 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java @@ -150,8 +150,8 @@ private void onOK() { return; } generateWhitelistJsonFile(dbSchemaXmlData); + exit(); } - exit(); } /** From 63ef611d2f4fc57c9d890c8b444283a2a502301b Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Thu, 23 Dec 2021 09:35:18 +0200 Subject: [PATCH 082/124] 877: Enhanced error outputting for new Magento 2 db schema generation --- .../generation/dialog/NewDbSchemaDialog.form | 18 +++++++++++++----- .../generation/dialog/NewDbSchemaDialog.java | 2 ++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.form index 7c48e7d9b..78ac30fdd 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.form @@ -56,7 +56,7 @@ - + @@ -92,7 +92,7 @@ - + @@ -101,7 +101,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -128,6 +128,14 @@ + + + + + + + + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java index 00bf34911..020b17443 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDbSchemaDialog.java @@ -46,6 +46,7 @@ @SuppressWarnings({"PMD.TooManyFields", "PMD.ExcessiveImports"}) public class NewDbSchemaDialog extends AbstractDialog { + private static final String TABLE_NAME = "Table Name"; private final Project project; @@ -85,6 +86,7 @@ public class NewDbSchemaDialog extends AbstractDialog { private JLabel tableResourceLabel;//NOPMD private JLabel tableCommentLabel;//NOPMD private JLabel tableColumnsLabel;//NOPMD + private JLabel tableNameErrorMessage;//NOPMD /** * Constructor. From 94959810ebc3964f997d9103bae33c1021626850 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Thu, 23 Dec 2021 09:43:40 +0200 Subject: [PATCH 083/124] 878: Code refactoring --- .../generation/NewUiComponentGridAction.java | 6 +-- .../dialog/NewUiComponentGridDialog.java | 40 +++++++++++-------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewUiComponentGridAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewUiComponentGridAction.java index f507f9051..e2f4a0f5f 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewUiComponentGridAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewUiComponentGridAction.java @@ -16,8 +16,8 @@ import com.magento.idea.magento2plugin.MagentoIcons; import com.magento.idea.magento2plugin.actions.generation.dialog.NewUiComponentGridDialog; -@SuppressWarnings({"PMD.OnlyOneReturn"}) public class NewUiComponentGridAction extends AnAction { + public static final String ACTION_NAME = "Magento 2 UI Component Grid"; public static final String ACTION_DESCRIPTION = "Create a new Magento 2 UI Component Grid"; @@ -41,18 +41,16 @@ public void actionPerformed(final AnActionEvent event) { if (view == null) { return; } - final Project project = CommonDataKeys.PROJECT.getData(dataContext); + if (project == null) { return; } - final PsiDirectory directory = view.getOrChooseDirectory(); if (directory == null) { return; } - NewUiComponentGridDialog.open(project, directory); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.java index a6d2e58e9..b07a195f7 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.java @@ -79,6 +79,7 @@ "PMD.GodClass" }) public class NewUiComponentGridDialog extends AbstractDialog { + private static final String ACTION_NAME = "Action Name"; private static final String DATA_PROVIDER_CLASS_NAME = "Data Provider Class Name"; private static final String DATA_PROVIDER_DIRECTORY = "Data Provider Directory"; @@ -91,25 +92,24 @@ public class NewUiComponentGridDialog extends AbstractDialog { private JButton buttonOK; private JButton buttonCancel; - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, NAME}) - @FieldValidation(rule = RuleRegistry.IDENTIFIER, message = {IdentifierRule.MESSAGE, NAME}) - private JTextField uiComponentName; - - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, NAME}) - @FieldValidation(rule = RuleRegistry.IDENTIFIER, message = {IdentifierRule.MESSAGE, NAME}) - private JTextField idField; - private JCheckBox addToolBar; private JCheckBox addBookmarksCheckBox; private JCheckBox addColumnsControlCheckBox; private JCheckBox addFullTextSearchCheckBox; private JCheckBox addListingFiltersCheckBox; private JCheckBox addListingPagingCheckBox; - private FilteredComboBox collection; private FilteredComboBox dataProviderType; private FilteredComboBox areaSelect; + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, NAME}) + @FieldValidation(rule = RuleRegistry.IDENTIFIER, message = {IdentifierRule.MESSAGE, NAME}) + private JTextField uiComponentName; + + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, NAME}) + @FieldValidation(rule = RuleRegistry.IDENTIFIER, message = {IdentifierRule.MESSAGE, NAME}) + private JTextField idField; + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, DATA_PROVIDER_CLASS_NAME}) @FieldValidation(rule = RuleRegistry.PHP_CLASS, @@ -194,7 +194,10 @@ public class NewUiComponentGridDialog extends AbstractDialog { * @param project Project * @param directory PsiDirectory */ - public NewUiComponentGridDialog(final Project project, final PsiDirectory directory) { + public NewUiComponentGridDialog( + final @NotNull Project project, + final @NotNull PsiDirectory directory + ) { super(); this.project = project; this.moduleName = GetModuleNameByDirectoryUtil.execute(directory, project); @@ -244,7 +247,10 @@ public void windowClosing(final WindowEvent event) { * @param project Project * @param directory PsiDirectory */ - public static void open(final Project project, final PsiDirectory directory) { + public static void open( + final @NotNull Project project, + final @NotNull PsiDirectory directory + ) { final NewUiComponentGridDialog dialog = new NewUiComponentGridDialog(project, directory); dialog.pack(); dialog.centerDialog(dialog); @@ -312,8 +318,8 @@ private void onOK() { generateDataProviderClass(); generateDataProviderDeclaration(); generateUiComponentFile(); + exit(); } - exit(); } private void setDefaultValues() { @@ -352,7 +358,7 @@ private void generateUiComponentFile() { * Generate data provider class. */ private void generateDataProviderClass() { - if (getDataProviderType().equals(UiComponentDataProviderFile.CUSTOM_TYPE)) { + if (UiComponentDataProviderFile.CUSTOM_TYPE.equals(getDataProviderType())) { final UiComponentDataProviderGenerator dataProviderGenerator; dataProviderGenerator = new UiComponentDataProviderGenerator( getGridDataProviderData(), @@ -367,7 +373,7 @@ private void generateDataProviderClass() { * Generate data provider declaration. */ private void generateDataProviderDeclaration() { - if (getDataProviderType().equals(UiComponentDataProviderFile.COLLECTION_TYPE)) { + if (UiComponentDataProviderFile.COLLECTION_TYPE.equals(getDataProviderType())) { final DataProviderDeclarationGenerator dataProviderGenerator; dataProviderGenerator = new DataProviderDeclarationGenerator( new DataProviderDeclarationData( @@ -463,8 +469,8 @@ private void onAreaChange() { } private void onDataProviderTypeChange() { - final boolean visible = getDataProviderType().equals( - UiComponentDataProviderFile.COLLECTION_TYPE + final boolean visible = UiComponentDataProviderFile.COLLECTION_TYPE.equals( + getDataProviderType() ); collection.setVisible(visible); @@ -554,7 +560,7 @@ private String getDataProviderNamespace() { } private String getDataProviderClassFqn() { - if (!getDataProviderType().equals(UiComponentDataProviderFile.CUSTOM_TYPE)) { + if (!UiComponentDataProviderFile.CUSTOM_TYPE.equals(getDataProviderType())) { return UiComponentDataProviderFile.DEFAULT_DATA_PROVIDER; } return String.format( From 16d6c8052d8d315c98668fca05ef74adaefd7b15 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Thu, 23 Dec 2021 09:54:14 +0200 Subject: [PATCH 084/124] 878: Enhanced error outputting for new Magento 2 UI Grid generation --- .../dialog/NewUiComponentGridDialog.form | 172 +++++++++++++++--- .../dialog/NewUiComponentGridDialog.java | 17 +- 2 files changed, 158 insertions(+), 31 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.form index 1030cda99..25d59d5c8 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.form @@ -3,7 +3,7 @@ - + @@ -65,7 +65,7 @@ - + @@ -75,7 +75,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -93,7 +93,7 @@ - + @@ -104,7 +104,7 @@ - + @@ -135,9 +135,25 @@ + + + + + + + + + + + + + + + + - + @@ -155,7 +171,7 @@ - + @@ -163,7 +179,7 @@ - + @@ -171,7 +187,7 @@ - + @@ -179,7 +195,7 @@ - + @@ -187,7 +203,7 @@ - + @@ -195,7 +211,7 @@ - + @@ -216,9 +232,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -266,7 +314,7 @@ - + @@ -274,7 +322,7 @@ - + @@ -291,13 +339,13 @@ - + - + @@ -305,7 +353,7 @@ - + @@ -314,15 +362,31 @@ - + + + + + + + + + + + + + + + + + - + @@ -340,7 +404,7 @@ - + @@ -348,7 +412,7 @@ - + @@ -364,7 +428,7 @@ - + @@ -372,7 +436,7 @@ - + @@ -387,9 +451,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -415,7 +503,7 @@ - + @@ -423,13 +511,13 @@ - + - + @@ -437,7 +525,7 @@ - + @@ -452,6 +540,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.java index b07a195f7..a46409b28 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.java @@ -168,6 +168,8 @@ public class NewUiComponentGridDialog extends AbstractDialog { message = {NotEmptyRule.MESSAGE, "Parent Menu"}) private FilteredComboBox parentMenu; + private JTextField tableName; + private JLabel aclLabel; private JLabel routeLabel;//NOPMD private JLabel controllerLabel;//NOPMD @@ -186,7 +188,20 @@ public class NewUiComponentGridDialog extends AbstractDialog { private JLabel collectionLabel;//NOPMD private JLabel dataProviderParentDirectoryLabel; private JLabel tableNameLabel; - private JTextField tableName; + private JLabel uiComponentNameErrorMessage;//NOPMD + private JLabel idFieldErrorMessage;//NOPMD + private JLabel providerClassNameErrorMessage;//NOPMD + private JLabel dataProviderParentDirectoryErrorMessage;//NOPMD + private JLabel aclErrorMessage;//NOPMD + private JLabel parentAclErrorMessage;//NOPMD + private JLabel aclTitleErrorMessage;//NOPMD + private JLabel routeErrorMessage;//NOPMD + private JLabel controllerNameErrorMessage;//NOPMD + private JLabel actionNameErrorMessage;//NOPMD + private JLabel sortOrderErrorMessage;//NOPMD + private JLabel menuIdentifierErrorMessage;//NOPMD + private JLabel menuTitleErrorMessage;//NOPMD + private JLabel parentMenuErrorMessage;//NOPMD /** * New UI component grid dialog constructor. From cb5454ac6b7bb90344c6e60479b85dc3e8827f3d Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Thu, 23 Dec 2021 10:05:12 +0200 Subject: [PATCH 085/124] 879: Code refactoring --- .../generation/NewUiComponentFormAction.java | 6 +- .../dialog/NewUiComponentFormDialog.java | 55 ++++++++++--------- 2 files changed, 32 insertions(+), 29 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewUiComponentFormAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewUiComponentFormAction.java index 5c099949d..502013c88 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewUiComponentFormAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewUiComponentFormAction.java @@ -17,6 +17,7 @@ import com.magento.idea.magento2plugin.actions.generation.dialog.NewUiComponentFormDialog; public class NewUiComponentFormAction extends AnAction { + public static final String ACTION_NAME = "Magento 2 UI Component Form"; public static final String ACTION_DESCRIPTION = "Create a new Magento 2 UI Component Form"; @@ -35,17 +36,16 @@ public void actionPerformed(final AnActionEvent event) { if (view == null) { return; } - final Project project = CommonDataKeys.PROJECT.getData(dataContext); + if (project == null) { return; } - final PsiDirectory directory = view.getOrChooseDirectory(); + if (directory == null) { return; } - NewUiComponentFormDialog.open(project, directory); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java index d08e4e3f2..f94b687a4 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java @@ -71,6 +71,7 @@ import javax.swing.KeyStroke; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; +import org.jetbrains.annotations.NotNull; @SuppressWarnings({ "PMD.TooManyFields", @@ -80,6 +81,25 @@ "PMD.GodClass" }) public class NewUiComponentFormDialog extends AbstractDialog { + + private static final String VIEW_ACTION_NAME = "View Action Name"; + private static final String SUBMIT_ACTION_NAME = "Submit Action Name"; + private static final String DATA_PROVIDER_CLASS_NAME = "Data Provider Class Name"; + private static final String DATA_PROVIDER_DIRECTORY = "Data Provider Directory"; + + private static final String CLASS_COLUMN = "Class"; + private static final String DIRECTORY_COLUMN = "Directory"; + private static final String TYPE_COLUMN = "Type"; + private static final String LABEL_COLUMN = "Label"; + private static final String SORT_ORDER_COLUMN = "Sort Order"; + private static final String ACTION_COLUMN = "Action"; + private static final String DELETE_COLUMN = "Delete"; + private static final String NAME_COLUMN = "Name"; + private static final String FIELDSET_COLUMN = "Fieldset"; + private static final String FORM_ELEMENT_TYPE_COLUMN = "Form Element Type"; + private static final String DATA_TYPE_COLUMN = "Data Type"; + private static final String SOURCE_COLUMN = "Source"; + private final FormButtonsValidator formButtonsValidator; private final FormFieldsetsValidator formFieldsetsValidator; private final FormFieldsValidator formFieldsValidator; @@ -90,11 +110,6 @@ public class NewUiComponentFormDialog extends AbstractDialog { private JButton buttonCancel; private FilteredComboBox formAreaSelect; - private static final String VIEW_ACTION_NAME = "View Action Name"; - private static final String SUBMIT_ACTION_NAME = "Submit Action Name"; - private static final String DATA_PROVIDER_CLASS_NAME = "Data Provider Class Name"; - private static final String DATA_PROVIDER_DIRECTORY = "Data Provider Directory"; - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, "Name"}) @FieldValidation(rule = RuleRegistry.IDENTIFIER, message = {IdentifierRule.MESSAGE, "Name"}) private JTextField formName; @@ -181,26 +196,16 @@ public class NewUiComponentFormDialog extends AbstractDialog { private JLabel dataProviderClassNameLabel;//NOPMD private JLabel dataProviderDirectoryLabel;//NOPMD - private static final String CLASS_COLUMN = "Class"; - private static final String DIRECTORY_COLUMN = "Directory"; - private static final String TYPE_COLUMN = "Type"; - private static final String LABEL_COLUMN = "Label"; - private static final String SORT_ORDER_COLUMN = "Sort Order"; - private static final String ACTION_COLUMN = "Action"; - private static final String DELETE_COLUMN = "Delete"; - private static final String NAME_COLUMN = "Name"; - private static final String FIELDSET_COLUMN = "Fieldset"; - private static final String FORM_ELEMENT_TYPE_COLUMN = "Form Element Type"; - private static final String DATA_TYPE_COLUMN = "Data Type"; - private static final String SOURCE_COLUMN = "Source"; - /** * Open new dialog for adding new controller. * * @param project Project * @param directory PsiDirectory */ - public NewUiComponentFormDialog(final Project project, final PsiDirectory directory) { + public NewUiComponentFormDialog( + final @NotNull Project project, + final @NotNull PsiDirectory directory + ) { super(); this.project = project; formButtonsValidator = new FormButtonsValidator(this); @@ -396,7 +401,10 @@ public String getArea() { * @param project Project * @param directory PsiDirectory */ - public static void open(final Project project, final PsiDirectory directory) { + public static void open( + final @NotNull Project project, + final @NotNull PsiDirectory directory + ) { final NewUiComponentFormDialog dialog = new NewUiComponentFormDialog(project, directory); dialog.pack(); dialog.centerDialog(dialog); @@ -424,8 +432,8 @@ private void onOK() { generateLayoutFile(); generateFormFile(); generateAclXmlFile(); + exit(); } - exit(); } /** @@ -536,11 +544,6 @@ private void generateAclXmlFile() { ), getModuleName(), project).generate(NewUiComponentFormAction.ACTION_NAME, false); } - @Override - protected void onCancel() { - dispose(); - } - private List getAreaList() { return new ArrayList<>( Arrays.asList( From 7c43b7ff70ea40c799c58ae6a9948f43ffa091ac Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Thu, 23 Dec 2021 10:59:22 +0200 Subject: [PATCH 086/124] 879: Enhanced error outputting for new Magento 2 UI Form generation --- .../dialog/NewUiComponentFormDialog.form | 168 ++++++++++++++---- .../dialog/NewUiComponentFormDialog.java | 12 ++ 2 files changed, 145 insertions(+), 35 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.form index a5599e727..7add87217 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.form @@ -6,7 +6,7 @@ - + @@ -160,15 +160,15 @@ - - + + - + - + @@ -188,7 +188,7 @@ - + @@ -196,7 +196,7 @@ - + @@ -215,15 +215,31 @@ + + + + + + + + + + + + + + + + - - + + - + - + @@ -252,7 +268,7 @@ - + @@ -262,21 +278,37 @@ - + + + + + + + + + + + + + + + + + - - + + - + - + @@ -310,7 +342,7 @@ - + @@ -318,7 +350,7 @@ - + @@ -326,6 +358,22 @@ + + + + + + + + + + + + + + + + @@ -338,17 +386,17 @@ - - + + - + - + - + @@ -356,7 +404,7 @@ - + @@ -375,7 +423,7 @@ - + @@ -385,7 +433,7 @@ - + @@ -417,17 +465,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - + + + @@ -447,7 +521,7 @@ - + @@ -455,7 +529,7 @@ - + @@ -463,7 +537,7 @@ - + @@ -471,10 +545,34 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java index f94b687a4..727ff0937 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java @@ -195,6 +195,18 @@ public class NewUiComponentFormDialog extends AbstractDialog { private JLabel dataProviderLabel;//NOPMD private JLabel dataProviderClassNameLabel;//NOPMD private JLabel dataProviderDirectoryLabel;//NOPMD + private JLabel formNameErrorMessage;//NOPMD + private JLabel formLabelErrorMessage;//NOPMD + private JLabel routeErrorMessage;//NOPMD + private JLabel viewControllerNameErrorMessage;//NOPMD + private JLabel viewActionNameErrorMessage;//NOPMD + private JLabel submitControllerNameErrorMessage;//NOPMD + private JLabel submitActionNameErrorMessage;//NOPMD + private JLabel dataProviderClassNameErrorMessage;//NOPMD + private JLabel dataProviderDirectoryErrorMessage;//NOPMD + private JLabel aclErrorMessage;//NOPMD + private JLabel parentAclErrorMessage;//NOPMD + private JLabel aclTitleErrorMessage;//NOPMD /** * Open new dialog for adding new controller. From ee07294fc9e20d287a3b04652fd144c4b25a9535 Mon Sep 17 00:00:00 2001 From: Serhii Akulov Date: Thu, 23 Dec 2021 14:58:27 +0200 Subject: [PATCH 087/124] 857: fixed error when class already exists --- .../ModuleControllerClassGenerator.java | 51 ++++++++++--------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleControllerClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleControllerClassGenerator.java index 89518a92e..a2daf2286 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleControllerClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleControllerClassGenerator.java @@ -31,6 +31,7 @@ import java.util.Arrays; import java.util.List; import java.util.Properties; +import java.util.concurrent.atomic.AtomicBoolean; import javax.swing.JOptionPane; public class ModuleControllerClassGenerator extends FileGenerator { @@ -73,6 +74,8 @@ public ModuleControllerClassGenerator( @Override public PsiFile generate(final String actionName) { final PsiFile[] controllerFiles = new PsiFile[1]; + final AtomicBoolean isControllerExists = new AtomicBoolean(false); + final AtomicBoolean isControllerCanNotBeCreated = new AtomicBoolean(false); WriteCommandAction.runWriteCommandAction(project, () -> { PhpClass controller = GetPhpClassByFQN.getInstance(project).execute( @@ -80,40 +83,40 @@ public PsiFile generate(final String actionName) { ); if (controller != null) { - final String errorMessage = this.validatorBundle.message( - "validator.file.alreadyExists", - "Controller Class" - ); - JOptionPane.showMessageDialog( - null, - errorMessage, - commonBundle.message("common.error"), - JOptionPane.ERROR_MESSAGE - ); - + isControllerExists.set(true); return; } - controller = createControllerClass(actionName); if (controller == null) { - final String errorMessage = this.validatorBundle.message( - "validator.file.cantBeCreated", - "Controller Class" - ); - JOptionPane.showMessageDialog( - null, - errorMessage, - commonBundle.message("common.error"), - JOptionPane.ERROR_MESSAGE - ); - + isControllerCanNotBeCreated.set(true); return; } - controllerFiles[0] = controller.getContainingFile(); }); + if (isControllerExists.get()) { + JOptionPane.showMessageDialog( + null, + validatorBundle.message( + "validator.file.alreadyExists", + "Controller Class" + ), + commonBundle.message("common.error"), + JOptionPane.ERROR_MESSAGE + ); + } else if (isControllerCanNotBeCreated.get()) { + JOptionPane.showMessageDialog( + null, + validatorBundle.message( + "validator.file.cantBeCreated", + "Controller Class" + ), + commonBundle.message("common.error"), + JOptionPane.ERROR_MESSAGE + ); + } + return controllerFiles[0]; } From 40daf290c175c997291619a87341c81a15903bd0 Mon Sep 17 00:00:00 2001 From: Serhii Akulov Date: Thu, 23 Dec 2021 16:21:08 +0200 Subject: [PATCH 088/124] 842: Incomplete trailing escape --- .../github/GitHubNewIssueBodyBuilderUtil.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/project/diagnostic/github/GitHubNewIssueBodyBuilderUtil.java b/src/com/magento/idea/magento2plugin/project/diagnostic/github/GitHubNewIssueBodyBuilderUtil.java index 1587edd45..21e06cdcc 100644 --- a/src/com/magento/idea/magento2plugin/project/diagnostic/github/GitHubNewIssueBodyBuilderUtil.java +++ b/src/com/magento/idea/magento2plugin/project/diagnostic/github/GitHubNewIssueBodyBuilderUtil.java @@ -51,13 +51,22 @@ public static String buildNewBugReportBody( if (encode(stackTrace).length() <= maxAllowedStackTraceLength) { return buildTemplate(project, bugDescription, stackTrace); } + boolean isFound = false; + int step = 1; + String encodedCutStackTrace = ""; + + while (!isFound) { + final String cutStackTrace = stackTrace.substring(0, maxAllowedStackTraceLength - step); + encodedCutStackTrace = encode(cutStackTrace); + + if (encodedCutStackTrace.length() <= maxAllowedStackTraceLength) { + isFound = true; + } else { + step += 10; + } + } - final String cutStackTrace = encode(stackTrace).substring( - 0, - maxAllowedStackTraceLength - 1 - ); - - return buildTemplate(project, bugDescription, decode(cutStackTrace)); + return buildTemplate(project, bugDescription, decode(encodedCutStackTrace)); } /** From 957f65c1d9a8d72154b97584e352a3f1e6dc1eee Mon Sep 17 00:00:00 2001 From: Serhii Akulov Date: Thu, 23 Dec 2021 16:33:49 +0200 Subject: [PATCH 089/124] 842: Create new message queue --- .../generator/MessageQueueClassGenerator.java | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java index b1c21c62a..da1f703ca 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java @@ -21,10 +21,14 @@ import com.magento.idea.magento2plugin.magento.packages.File; import com.magento.idea.magento2plugin.util.GetFirstClassOfFile; import com.magento.idea.magento2plugin.util.GetPhpClassByFQN; + +import java.util.ArrayList; +import java.util.List; import java.util.Properties; import javax.swing.JOptionPane; public class MessageQueueClassGenerator extends FileGenerator { + private final MessageQueueClassData messageQueueClassDataName; private final Project project; private final DirectoryGenerator directoryGenerator; @@ -33,6 +37,7 @@ public class MessageQueueClassGenerator extends FileGenerator { private final CommonBundle commonBundle; private final String moduleName; private final GetFirstClassOfFile getFirstClassOfFile; + private final List errors = new ArrayList<>(); /** * Message queue handler constructor. @@ -68,40 +73,34 @@ public PsiFile generate(final String actionName) { ); if (handler != null) { - final String errorMessage = this.validatorBundle.message( + errors.add(validatorBundle.message( "validator.file.alreadyExists", "Handler Class" - ); - JOptionPane.showMessageDialog( - null, - errorMessage, - commonBundle.message("common.error"), - JOptionPane.ERROR_MESSAGE - ); - + )); return; } - handler = createHandlerClass(actionName); if (handler == null) { - final String errorMessage = this.validatorBundle.message( + errors.add(validatorBundle.message( "validator.file.cantBeCreated", "Handler Class" - ); - JOptionPane.showMessageDialog( - null, - errorMessage, - commonBundle.message("common.error"), - JOptionPane.ERROR_MESSAGE - ); - + )); return; } handlerFiles[0] = handler.getContainingFile(); }); + for (final String errorMessage : errors) { + JOptionPane.showMessageDialog( + null, + errorMessage, + commonBundle.message("common.error"), + JOptionPane.ERROR_MESSAGE + ); + } + return handlerFiles[0]; } From 703fc1307c05ac8733fca495f1fb2830154c2b8b Mon Sep 17 00:00:00 2001 From: Serhii Akulov Date: Thu, 23 Dec 2021 16:40:25 +0200 Subject: [PATCH 090/124] 842: fixed code style --- .../actions/generation/generator/MessageQueueClassGenerator.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java index da1f703ca..f22a65a6a 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java @@ -21,7 +21,6 @@ import com.magento.idea.magento2plugin.magento.packages.File; import com.magento.idea.magento2plugin.util.GetFirstClassOfFile; import com.magento.idea.magento2plugin.util.GetPhpClassByFQN; - import java.util.ArrayList; import java.util.List; import java.util.Properties; From 4c93c3fbb01ddeae4f6ab7796517d9b6201cc4be Mon Sep 17 00:00:00 2001 From: Serhii Akulov Date: Thu, 23 Dec 2021 16:59:35 +0200 Subject: [PATCH 091/124] 866: IndexNotReadyException while opening a context menu --- src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java b/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java index f008a95c1..d87e78c67 100644 --- a/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java +++ b/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java @@ -5,6 +5,7 @@ package com.magento.idea.magento2plugin.indexes; +import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; @@ -120,6 +121,10 @@ private List getNames( public @Nullable PsiDirectory getModuleDirectoryByModuleName(final String moduleName) { final FileBasedIndex index = FileBasedIndex .getInstance(); + + if (DumbService.getInstance(project).isDumb()) { + return null; + } final Collection files = index.getContainingFiles( ModuleNameIndex.KEY, moduleName, From 877df15b56b629803f32913753ff3cd625b397f5 Mon Sep 17 00:00:00 2001 From: Serhii Akulov Date: Thu, 23 Dec 2021 17:04:49 +0200 Subject: [PATCH 092/124] 866: fixed pmd --- .../magento/idea/magento2plugin/indexes/ModuleIndex.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java b/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java index d87e78c67..e87fcbb31 100644 --- a/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java +++ b/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java @@ -119,12 +119,12 @@ private List getNames( * @return PsiDirectory */ public @Nullable PsiDirectory getModuleDirectoryByModuleName(final String moduleName) { - final FileBasedIndex index = FileBasedIndex - .getInstance(); - if (DumbService.getInstance(project).isDumb()) { return null; } + final FileBasedIndex index = FileBasedIndex + .getInstance(); + final Collection files = index.getContainingFiles( ModuleNameIndex.KEY, moduleName, From f020efabcf64548d61df88b5d09c4fd599b0f60f Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Thu, 23 Dec 2021 21:19:40 +0200 Subject: [PATCH 093/124] 654: Code refactoring --- .../stubs/indexes/WebApiTypeIndex.java | 139 +++++++++++------- 1 file changed, 84 insertions(+), 55 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java b/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java index cc2bd34a2..9fdb4364e 100644 --- a/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java +++ b/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java @@ -1,7 +1,8 @@ -/** +/* * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + package com.magento.idea.magento2plugin.stubs.indexes; import com.intellij.ide.highlighter.XmlFileType; @@ -13,41 +14,48 @@ import com.intellij.psi.xml.XmlDocument; import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; -import com.intellij.util.indexing.*; +import com.intellij.util.indexing.DataIndexer; +import com.intellij.util.indexing.FileBasedIndex; +import com.intellij.util.indexing.FileContent; +import com.intellij.util.indexing.ID; +import com.intellij.util.indexing.ScalarIndexExtension; import com.intellij.util.io.EnumeratorStringDescriptor; import com.intellij.util.io.KeyDescriptor; import com.jetbrains.php.lang.PhpLangUtil; import com.jetbrains.php.lang.psi.elements.Method; import com.jetbrains.php.lang.psi.elements.PhpClass; -import com.magento.idea.magento2plugin.project.Settings; import com.magento.idea.magento2plugin.linemarker.xml.LineMarkerXmlTagDecorator; +import com.magento.idea.magento2plugin.project.Settings; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; -import java.util.*; - /** * Indexer for classes/interfaces which have methods exposed via Web API. */ public class WebApiTypeIndex extends ScalarIndexExtension { - public static final ID KEY = ID.create("com.magento.idea.magento2plugin.stubs.indexes.webapi_type"); - + public static final ID KEY = ID.create( + "com.magento.idea.magento2plugin.stubs.indexes.webapi_type" + ); private final KeyDescriptor keyDescriptor = new EnumeratorStringDescriptor(); - @NotNull @Override - public ID getName() { + public @NotNull ID getName() { return KEY; } - @NotNull + @SuppressWarnings("PMD.CognitiveComplexity") @Override - public DataIndexer getIndexer() { + public @NotNull DataIndexer getIndexer() { return inputData -> { - Map map = new HashMap<>(); + final Map map = new HashMap<>(); + final PsiFile psiFile = inputData.getPsiFile(); - PsiFile psiFile = inputData.getPsiFile(); if (!Settings.isEnabled(psiFile.getProject())) { return map; } @@ -55,22 +63,23 @@ public DataIndexer getIndexer() { if (!(psiFile instanceof XmlFile)) { return map; } + final XmlDocument document = ((XmlFile) psiFile).getDocument(); - XmlDocument document = ((XmlFile) psiFile).getDocument(); if (document == null) { return map; } + final XmlTag[] xmlTags = PsiTreeUtil.getChildrenOfType(psiFile.getFirstChild(), XmlTag.class); - XmlTag xmlTags[] = PsiTreeUtil.getChildrenOfType(psiFile.getFirstChild(), XmlTag.class); if (xmlTags == null) { return map; } - for (XmlTag xmlTag : xmlTags) { - if (xmlTag.getName().equals("routes")) { - for (XmlTag routeNode : xmlTag.findSubTags("route")) { - for (XmlTag serviceNode : routeNode.findSubTags("service")) { - String typeName = serviceNode.getAttributeValue("class"); + for (final XmlTag xmlTag : xmlTags) { + if ("routes".equals(xmlTag.getName())) { + for (final XmlTag routeNode : xmlTag.findSubTags("route")) { + for (final XmlTag serviceNode : routeNode.findSubTags("service")) { + final String typeName = serviceNode.getAttributeValue("class"); + if (typeName != null) { map.put(PhpLangUtil.toPresentableFQN(typeName), null); } @@ -78,23 +87,21 @@ public DataIndexer getIndexer() { } } } + return map; }; } - @NotNull @Override - public KeyDescriptor getKeyDescriptor() { + public @NotNull KeyDescriptor getKeyDescriptor() { return keyDescriptor; } - @NotNull @Override - public FileBasedIndex.InputFilter getInputFilter() { - return file -> ( - file.getFileType() == XmlFileType.INSTANCE && file.getNameWithoutExtension().equals("webapi") - && !file.getPath().contains("testsuite") && !file.getPath().contains("_files") - ); + public @NotNull FileBasedIndex.InputFilter getInputFilter() { + return file -> file.getFileType() == XmlFileType.INSTANCE + && "webapi".equals(file.getNameWithoutExtension()) + && !file.getPath().contains("testsuite") && !file.getPath().contains("_files"); } @Override @@ -109,45 +116,68 @@ public int getVersion() { /** * Get list of Web API routes associated with the provided method. - * * Parent classes are not taken into account. + * + * @param method Method + * + * @return List[XmlTag] */ - public static List getWebApiRoutes(Method method) { - List tags = new ArrayList<>(); + public static List getWebApiRoutes(final Method method) { + final List tags = new ArrayList<>(); + if (!method.getAccess().isPublic()) { return tags; } - PhpClass phpClass = method.getContainingClass(); - String methodFqn = method.getName(); + final PhpClass phpClass = method.getContainingClass(); + if (phpClass == null) { return tags; } - String classFqn = phpClass.getPresentableFQN(); - Collection containingFiles = FileBasedIndex - .getInstance().getContainingFiles(KEY, classFqn, GlobalSearchScope.allScope(phpClass.getProject())); + final String classFqn = phpClass.getPresentableFQN(); + final Collection containingFiles = FileBasedIndex + .getInstance().getContainingFiles( + KEY, + classFqn, + GlobalSearchScope.allScope(phpClass.getProject()) + ); + + final PsiManager psiManager = PsiManager.getInstance(phpClass.getProject()); + final String methodFqn = method.getName(); + + for (final VirtualFile virtualFile : containingFiles) { + final XmlFile file = (XmlFile) psiManager.findFile(virtualFile); - PsiManager psiManager = PsiManager.getInstance(phpClass.getProject()); - for (VirtualFile virtualFile : containingFiles) { - XmlFile file = (XmlFile) psiManager.findFile(virtualFile); if (file == null) { continue; } - XmlTag rootTag = file.getRootTag(); + final XmlTag rootTag = file.getRootTag(); fillRelatedTags(classFqn, methodFqn, rootTag, tags); } + return tags; } /** - * Find routes related to the specified method within single webapi.xml + * Find routes related to the specified method within single webapi.xml. + * + * @param classFqn String + * @param methodFqn String + * @param parentTag XmlTag + * @param tagsReferences List[XmlTag] */ - private static void fillRelatedTags(String classFqn, String methodFqn, XmlTag parentTag, List tagsReferences) { - for (XmlTag routeNode : parentTag.findSubTags("route")) { - for (XmlTag serviceNode : routeNode.findSubTags("service")) { - String typeName = serviceNode.getAttributeValue("class"); - String methodName = serviceNode.getAttributeValue("method"); + private static void fillRelatedTags( + final String classFqn, + final String methodFqn, + final XmlTag parentTag, + final List tagsReferences + ) { + for (final XmlTag routeNode : parentTag.findSubTags("route")) { + for (final XmlTag serviceNode : routeNode.findSubTags("service")) { + final String typeName = serviceNode.getAttributeValue("class"); + final String methodName = serviceNode.getAttributeValue("method"); + if (typeName != null && typeName.equals(classFqn) - && methodName != null && methodName.equals(methodFqn) + && methodName != null && methodName.equals(methodFqn) ) { tagsReferences.add(new WebApiLineMarkerXmlTagDecorator(routeNode)); } @@ -160,25 +190,24 @@ private static void fillRelatedTags(String classFqn, String methodFqn, XmlTag pa */ private static class WebApiLineMarkerXmlTagDecorator extends LineMarkerXmlTagDecorator { - WebApiLineMarkerXmlTagDecorator(XmlTag xmlTag) { + public WebApiLineMarkerXmlTagDecorator(final XmlTag xmlTag) { super(xmlTag); } - @NotNull @Override - public String getDescription() { + public @NotNull String getDescription() { return ""; } @Override - @NotNull - @NonNls - public String getName() { - String httpMethod = this.xmlTag.getAttributeValue("method"); - String route = this.xmlTag.getAttributeValue("url"); + public @NonNls @NotNull String getName() { + final String httpMethod = this.xmlTag.getAttributeValue("method"); + final String route = this.xmlTag.getAttributeValue("url"); + if (httpMethod != null && route != null) { return String.format(" %-7s %s", httpMethod, route); } + return xmlTag.getName(); } } From 3596211a1f60b7cb6193d7a786069870dd338b28 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Thu, 23 Dec 2021 21:21:55 +0200 Subject: [PATCH 094/124] 654: Fixed class cast exception --- .../stubs/indexes/WebApiTypeIndex.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java b/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java index 9fdb4364e..76f8a0a53 100644 --- a/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java +++ b/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java @@ -135,8 +135,9 @@ public static List getWebApiRoutes(final Method method) { } final String classFqn = phpClass.getPresentableFQN(); final Collection containingFiles = FileBasedIndex - .getInstance().getContainingFiles( - KEY, + .getInstance() + .getContainingFiles( + KEY, classFqn, GlobalSearchScope.allScope(phpClass.getProject()) ); @@ -145,12 +146,19 @@ public static List getWebApiRoutes(final Method method) { final String methodFqn = method.getName(); for (final VirtualFile virtualFile : containingFiles) { + if (!(virtualFile instanceof XmlFile)) { + continue; + } final XmlFile file = (XmlFile) psiManager.findFile(virtualFile); if (file == null) { continue; } final XmlTag rootTag = file.getRootTag(); + + if (rootTag == null) { + continue; + } fillRelatedTags(classFqn, methodFqn, rootTag, tags); } From ea18fdab31d0a1424326d51b42cac9b95f539bb5 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Thu, 23 Dec 2021 21:29:32 +0200 Subject: [PATCH 095/124] 654: Fixed code style check --- .../idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java b/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java index 76f8a0a53..16bc2810f 100644 --- a/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java +++ b/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java @@ -68,7 +68,10 @@ public class WebApiTypeIndex extends ScalarIndexExtension { if (document == null) { return map; } - final XmlTag[] xmlTags = PsiTreeUtil.getChildrenOfType(psiFile.getFirstChild(), XmlTag.class); + final XmlTag[] xmlTags = PsiTreeUtil.getChildrenOfType( + psiFile.getFirstChild(), + XmlTag.class + ); if (xmlTags == null) { return map; From 1c8b1abe45e3f81851f4376fddc1d702a5329971 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Thu, 23 Dec 2021 21:42:31 +0200 Subject: [PATCH 096/124] 654: Fixed code style check --- .../idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java b/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java index 16bc2810f..48abfa6bd 100644 --- a/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java +++ b/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java @@ -176,6 +176,7 @@ public static List getWebApiRoutes(final Method method) { * @param parentTag XmlTag * @param tagsReferences List[XmlTag] */ + @SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops") private static void fillRelatedTags( final String classFqn, final String methodFqn, From ba99c90ea4c254c7e16461338fa088db90dd1249 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Fri, 24 Dec 2021 09:46:52 +0200 Subject: [PATCH 097/124] 654: Code refactoring to fix tests --- .../idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java b/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java index 48abfa6bd..f792e6c30 100644 --- a/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java +++ b/src/com/magento/idea/magento2plugin/stubs/indexes/WebApiTypeIndex.java @@ -149,7 +149,7 @@ public static List getWebApiRoutes(final Method method) { final String methodFqn = method.getName(); for (final VirtualFile virtualFile : containingFiles) { - if (!(virtualFile instanceof XmlFile)) { + if (virtualFile.getFileType() != XmlFileType.INSTANCE) { continue; } final XmlFile file = (XmlFile) psiManager.findFile(virtualFile); From 9d30b65cc11c005e97febe85b915b098b9e68b77 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Fri, 24 Dec 2021 09:56:36 +0200 Subject: [PATCH 098/124] 834: Code refactoring --- .../ModuleDeclarationInRegistrationPhpInspection.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/inspections/php/ModuleDeclarationInRegistrationPhpInspection.java b/src/com/magento/idea/magento2plugin/inspections/php/ModuleDeclarationInRegistrationPhpInspection.java index f8ddfb205..943ea3acc 100644 --- a/src/com/magento/idea/magento2plugin/inspections/php/ModuleDeclarationInRegistrationPhpInspection.java +++ b/src/com/magento/idea/magento2plugin/inspections/php/ModuleDeclarationInRegistrationPhpInspection.java @@ -21,9 +21,8 @@ public class ModuleDeclarationInRegistrationPhpInspection extends PhpInspection { - @NotNull @Override - public PsiElementVisitor buildVisitor( + public @NotNull PsiElementVisitor buildVisitor( final @NotNull ProblemsHolder problemsHolder, final boolean isOnTheFly ) { @@ -33,19 +32,22 @@ public PsiElementVisitor buildVisitor( public void visitPhpStringLiteralExpression(final StringLiteralExpression expression) { final PsiFile file = expression.getContainingFile(); final String filename = file.getName(); - if (!filename.equals(RegistrationPhp.FILE_NAME)) { + + if (!RegistrationPhp.FILE_NAME.equals(filename)) { return; } + if (!IsFileInEditableModuleUtil.execute(file)) { return; } final String expectedName = GetEditableModuleNameByRootFileUtil.execute(file); final String actualName = expression.getContents(); + if (actualName.equals(expectedName)) { return; } - final InspectionBundle inspectionBundle = new InspectionBundle(); + problemsHolder.registerProblem( expression, inspectionBundle.message( From 1d84101ff9d5be6c019c61e2694375a64ca758b5 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Fri, 24 Dec 2021 10:25:01 +0200 Subject: [PATCH 099/124] 834: Fixed bug - wrong inspection for module name in registration.php --- ...eclarationInRegistrationPhpInspection.java | 33 +++++++++++++++++-- .../packages/code/FrameworkLibraryType.java | 1 + 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/inspections/php/ModuleDeclarationInRegistrationPhpInspection.java b/src/com/magento/idea/magento2plugin/inspections/php/ModuleDeclarationInRegistrationPhpInspection.java index 943ea3acc..004d26937 100644 --- a/src/com/magento/idea/magento2plugin/inspections/php/ModuleDeclarationInRegistrationPhpInspection.java +++ b/src/com/magento/idea/magento2plugin/inspections/php/ModuleDeclarationInRegistrationPhpInspection.java @@ -7,15 +7,21 @@ import com.intellij.codeInspection.ProblemHighlightType; import com.intellij.codeInspection.ProblemsHolder; +import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiFile; +import com.intellij.psi.util.PsiTreeUtil; import com.jetbrains.php.lang.inspections.PhpInspection; +import com.jetbrains.php.lang.psi.elements.Method; +import com.jetbrains.php.lang.psi.elements.MethodReference; +import com.jetbrains.php.lang.psi.elements.PhpClass; import com.jetbrains.php.lang.psi.elements.StringLiteralExpression; import com.jetbrains.php.lang.psi.visitors.PhpElementVisitor; import com.magento.idea.magento2plugin.bundles.InspectionBundle; import com.magento.idea.magento2plugin.inspections.php.fix.PhpModuleNameQuickFix; import com.magento.idea.magento2plugin.inspections.util.GetEditableModuleNameByRootFileUtil; import com.magento.idea.magento2plugin.magento.files.RegistrationPhp; +import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType; import com.magento.idea.magento2plugin.util.magento.IsFileInEditableModuleUtil; import org.jetbrains.annotations.NotNull; @@ -34,17 +40,38 @@ public void visitPhpStringLiteralExpression(final StringLiteralExpression expres final String filename = file.getName(); if (!RegistrationPhp.FILE_NAME.equals(filename)) { - return; + return; + } + final MethodReference callerReference = PsiTreeUtil.getParentOfType( + expression, + MethodReference.class + ); + + if (callerReference == null) { + return; + } + final PsiElement caller = callerReference.resolve(); + + if (!(caller instanceof Method)) { + return; + } + final PhpClass callerOwner = ((Method) caller).getContainingClass(); + + if (callerOwner == null + || !FrameworkLibraryType.COMPONENT_REGISTRAR.getType().equals( + callerOwner.getPresentableFQN() + )) { + return; } if (!IsFileInEditableModuleUtil.execute(file)) { - return; + return; } final String expectedName = GetEditableModuleNameByRootFileUtil.execute(file); final String actualName = expression.getContents(); if (actualName.equals(expectedName)) { - return; + return; } final InspectionBundle inspectionBundle = new InspectionBundle(); diff --git a/src/com/magento/idea/magento2plugin/magento/packages/code/FrameworkLibraryType.java b/src/com/magento/idea/magento2plugin/magento/packages/code/FrameworkLibraryType.java index 8387ba57f..5f60d6ef1 100644 --- a/src/com/magento/idea/magento2plugin/magento/packages/code/FrameworkLibraryType.java +++ b/src/com/magento/idea/magento2plugin/magento/packages/code/FrameworkLibraryType.java @@ -13,6 +13,7 @@ public enum FrameworkLibraryType { ABSTRACT_COLLECTION( "Magento\\Framework\\Model\\ResourceModel\\Db\\Collection\\AbstractCollection" ), + COMPONENT_REGISTRAR("Magento\\Framework\\Component\\ComponentRegistrar"), COLLECTION_PROCESSOR("Magento\\Framework\\Api\\SearchCriteria\\CollectionProcessorInterface"), DATA_PERSISTOR("Magento\\Framework\\App\\Request\\DataPersistorInterface"), DATA_OBJECT("Magento\\Framework\\DataObject"), From 674522574291a877b00498863e60e39d378fd357 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Fri, 24 Dec 2021 14:22:03 +0200 Subject: [PATCH 100/124] 834: Added component registrar to the testing data to make it available for the reference resolving --- .../Component/ComponentRegistrar.php | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 testData/project/magento2/vendor/magento/framework/Component/ComponentRegistrar.php diff --git a/testData/project/magento2/vendor/magento/framework/Component/ComponentRegistrar.php b/testData/project/magento2/vendor/magento/framework/Component/ComponentRegistrar.php new file mode 100644 index 000000000..7fea9a4e9 --- /dev/null +++ b/testData/project/magento2/vendor/magento/framework/Component/ComponentRegistrar.php @@ -0,0 +1,87 @@ + [], + self::LIBRARY => [], + self::LANGUAGE => [], + self::THEME => [], + self::SETUP => [] + ]; + + /** + * Sets the location of a component. + * + * @param string $type component type + * @param string $componentName Fully-qualified component name + * @param string $path Absolute file path to the component + * @throws \LogicException + * @return void + */ + public static function register($type, $componentName, $path) + { + self::validateType($type); + if (isset(self::$paths[$type][$componentName])) { + throw new \LogicException( + ucfirst($type) . ' \'' . $componentName . '\' from \'' . $path . '\' ' + . 'has been already defined in \'' . self::$paths[$type][$componentName] . '\'.' + ); + } + self::$paths[$type][$componentName] = str_replace('\\', '/', $path); + } + + /** + * @inheritdoc + */ + public function getPaths($type) + { + self::validateType($type); + return self::$paths[$type]; + } + + /** + * @inheritdoc + */ + public function getPath($type, $componentName) + { + self::validateType($type); + return self::$paths[$type][$componentName] ?? null; + } + + /** + * Checks if type of component is valid + * + * @param string $type + * @return void + * @throws \LogicException + */ + private static function validateType($type) + { + if (!isset(self::$paths[$type])) { + throw new \LogicException('\'' . $type . '\' is not a valid component type'); + } + } +} From ccef0d69d096ab725c63775535ddb2e39364b51b Mon Sep 17 00:00:00 2001 From: Serhii Akulov Date: Fri, 24 Dec 2021 19:06:23 +0200 Subject: [PATCH 101/124] 590: The plugin inspection does not work correctly --- .../inspections/xml/PluginDeclarationInspection.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/com/magento/idea/magento2plugin/inspections/xml/PluginDeclarationInspection.java b/src/com/magento/idea/magento2plugin/inspections/xml/PluginDeclarationInspection.java index 5ffca23d1..a65c4d37c 100644 --- a/src/com/magento/idea/magento2plugin/inspections/xml/PluginDeclarationInspection.java +++ b/src/com/magento/idea/magento2plugin/inspections/xml/PluginDeclarationInspection.java @@ -119,8 +119,11 @@ public void visitFile(final PsiFile file) { pluginIndex, file ); + final XmlAttribute pluginTypeAttribute = + pluginTypeXmlTag.getAttribute(ModuleDiXml.TYPE_ATTR); if (pluginTypeDisabledAttribute != null + && pluginTypeAttribute == null && pluginTypeDisabledAttribute.getValue() != null && pluginTypeDisabledAttribute.getValue().equals("true") && !pluginTypeName.isEmpty() From e21135f7e22ad91861e23360e305b35112730f8e Mon Sep 17 00:00:00 2001 From: "artemii.karkusha" Date: Wed, 5 Jan 2022 10:17:44 +0200 Subject: [PATCH 102/124] 899: Changed realization for function checkAdd using of CheckUtil. --- .../linemarker/xml/LineMarkerXmlTagDecorator.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java b/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java index 2140c601a..5df7d0355 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java +++ b/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java @@ -11,6 +11,7 @@ import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; +import com.intellij.psi.impl.CheckUtil; import com.intellij.psi.meta.PsiMetaData; import com.intellij.psi.scope.PsiScopeProcessor; import com.intellij.psi.search.GlobalSearchScope; @@ -474,7 +475,7 @@ public PsiElement addAfter(@NotNull PsiElement psiElement, @Nullable PsiElement @Override public void checkAdd(@NotNull PsiElement psiElement) throws IncorrectOperationException { - xmlTag.checkAdd(psiElement); + CheckUtil.checkWritable(this); } @Override From 608017e48a782169ade57dd62d60f22a56ea632a Mon Sep 17 00:00:00 2001 From: "artemii.karkusha" Date: Thu, 6 Jan 2022 09:04:21 +0200 Subject: [PATCH 103/124] 900: Fixed all issues from checkstyleCI. --- .../xml/LineMarkerXmlTagDecorator.java | 226 ++++++++---------- 1 file changed, 101 insertions(+), 125 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java b/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java index 5df7d0355..d675b204c 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java +++ b/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java @@ -2,6 +2,7 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + package com.magento.idea.magento2plugin.linemarker.xml; import com.intellij.lang.ASTNode; @@ -10,7 +11,13 @@ import com.intellij.openapi.util.Key; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.*; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiInvalidElementAccessException; +import com.intellij.psi.PsiManager; +import com.intellij.psi.PsiReference; +import com.intellij.psi.ResolveState; import com.intellij.psi.impl.CheckUtil; import com.intellij.psi.meta.PsiMetaData; import com.intellij.psi.scope.PsiScopeProcessor; @@ -26,18 +33,17 @@ import com.intellij.xml.XmlNSDescriptor; import com.magento.idea.magento2plugin.magento.packages.MagentoComponentManager; import com.magento.idea.magento2plugin.magento.packages.MagentoModule; +import java.util.Map; +import javax.swing.Icon; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import javax.swing.*; -import java.util.Map; - /** * Decorator for XmlTag, which allows to render user-friendly line markers. */ -abstract public class LineMarkerXmlTagDecorator implements XmlTag { +public abstract class LineMarkerXmlTagDecorator implements XmlTag { protected XmlTag xmlTag; @@ -66,7 +72,9 @@ protected String getAreaName() { @NotNull private String getComponentName() { MagentoComponentManager moduleManager = MagentoComponentManager.getInstance(project); - MagentoModule module = moduleManager.getComponentOfTypeForFile(xmlTag.getContainingFile(), MagentoModule.class); + MagentoModule module = moduleManager.getComponentOfTypeForFile( + xmlTag.getContainingFile(), MagentoModule.class + ); if (module == null) { return ""; @@ -76,10 +84,11 @@ private String getComponentName() { } @NotNull - abstract public String getDescription(); + public abstract String getDescription(); /** - * Get line marker text. This method should be overridden to generate user-friendly XmlTag presentation. + * Get line marker text. + * This method should be overridden to generate user-friendly XmlTag presentation. */ @Override @NotNull @@ -139,17 +148,26 @@ public String getAttributeValue(@NonNls String s) { } @Override - public XmlAttribute setAttribute(@NonNls String s, @NonNls String s1, @NonNls String s2) throws IncorrectOperationException { + public XmlAttribute setAttribute( + @NonNls String s, @NonNls String s1, @NonNls String s2 + ) throws IncorrectOperationException { return xmlTag.setAttribute(s, s1, s2); } @Override - public XmlAttribute setAttribute(@NonNls String s, @NonNls String s1) throws IncorrectOperationException { + public XmlAttribute setAttribute( + @NonNls String s, @NonNls String s1 + ) throws IncorrectOperationException { return xmlTag.setAttribute(s, s1); } @Override - public XmlTag createChildTag(@NonNls String s, @NonNls String s1, @Nullable @NonNls String s2, boolean b) { + public XmlTag createChildTag( + @NonNls String s, + @NonNls String s1, + @Nullable @NonNls String s2, + boolean b + ) { return xmlTag.createChildTag(s, s1, s2, b); } @@ -248,197 +266,154 @@ public String getSubTagText(@NonNls String s) { } @Override - public boolean processElements(PsiElementProcessor psiElementProcessor, PsiElement psiElement) { + public boolean processElements( + PsiElementProcessor psiElementProcessor, + PsiElement psiElement + ) { return xmlTag.processElements(psiElementProcessor, psiElement); } @Override @NotNull - @Contract( - pure = true - ) + @Contract(pure = true) public Project getProject() throws PsiInvalidElementAccessException { return xmlTag.getProject(); } @Override @NotNull - @Contract( - pure = true - ) + @Contract(pure = true) public Language getLanguage() { return xmlTag.getLanguage(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public PsiManager getManager() { return xmlTag.getManager(); } @Override @NotNull - @Contract( - pure = true - ) + @Contract(pure = true) public PsiElement[] getChildren() { return xmlTag.getChildren(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public PsiElement getParent() { return xmlTag.getParent(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public PsiElement getFirstChild() { return xmlTag.getFirstChild(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public PsiElement getLastChild() { return xmlTag.getLastChild(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public PsiElement getNextSibling() { return xmlTag.getNextSibling(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public PsiElement getPrevSibling() { return xmlTag.getPrevSibling(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public PsiFile getContainingFile() throws PsiInvalidElementAccessException { return xmlTag.getContainingFile(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public TextRange getTextRange() { return xmlTag.getTextRange(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public int getStartOffsetInParent() { return xmlTag.getStartOffsetInParent(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public int getTextLength() { return xmlTag.getTextLength(); } @Override @Nullable - @Contract( - pure = true - ) + @Contract(pure = true) public PsiElement findElementAt(int i) { return xmlTag.findElementAt(i); } @Override @Nullable - @Contract( - pure = true - ) + @Contract(pure = true) public PsiReference findReferenceAt(int i) { return xmlTag.findReferenceAt(i); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public int getTextOffset() { return xmlTag.getTextOffset(); } @Override @NonNls - @Contract( - pure = true - ) + @Contract(pure = true) public String getText() { return xmlTag.getText(); } @Override @NotNull - @Contract( - pure = true - ) + @Contract(pure = true) public char[] textToCharArray() { return xmlTag.textToCharArray(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public PsiElement getNavigationElement() { return xmlTag.getNavigationElement(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public PsiElement getOriginalElement() { return xmlTag.getOriginalElement(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public boolean textMatches(@NotNull @NonNls CharSequence charSequence) { return xmlTag.textMatches(charSequence); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public boolean textMatches(@NotNull PsiElement psiElement) { return xmlTag.textMatches(psiElement); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public boolean textContains(char c) { return xmlTag.textContains(c); } @@ -464,32 +439,49 @@ public PsiElement add(@NotNull PsiElement psiElement) throws IncorrectOperationE } @Override - public PsiElement addBefore(@NotNull PsiElement psiElement, @Nullable PsiElement psiElement1) throws IncorrectOperationException { + public PsiElement addBefore( + @NotNull PsiElement psiElement, + @Nullable PsiElement psiElement1 + ) throws IncorrectOperationException { return xmlTag.addBefore(psiElement, psiElement1); } @Override - public PsiElement addAfter(@NotNull PsiElement psiElement, @Nullable PsiElement psiElement1) throws IncorrectOperationException { + public PsiElement addAfter( + @NotNull PsiElement psiElement, + @Nullable PsiElement psiElement1 + ) throws IncorrectOperationException { return xmlTag.addAfter(psiElement, psiElement1); } @Override public void checkAdd(@NotNull PsiElement psiElement) throws IncorrectOperationException { - CheckUtil.checkWritable(this); + xmlTag.checkAdd(psiElement); } @Override - public PsiElement addRange(PsiElement psiElement, PsiElement psiElement1) throws IncorrectOperationException { + public PsiElement addRange( + PsiElement psiElement, + PsiElement psiElement1 + ) throws IncorrectOperationException { return xmlTag.addRange(psiElement, psiElement1); } @Override - public PsiElement addRangeBefore(@NotNull PsiElement psiElement, @NotNull PsiElement psiElement1, PsiElement psiElement2) throws IncorrectOperationException { + public PsiElement addRangeBefore( + @NotNull PsiElement psiElement, + @NotNull PsiElement psiElement1, + PsiElement psiElement2 + ) throws IncorrectOperationException { return xmlTag.addRangeBefore(psiElement, psiElement1, psiElement2); } @Override - public PsiElement addRangeAfter(PsiElement psiElement, PsiElement psiElement1, PsiElement psiElement2) throws IncorrectOperationException { + public PsiElement addRangeAfter( + PsiElement psiElement, + PsiElement psiElement1, + PsiElement psiElement2 + ) throws IncorrectOperationException { return xmlTag.addRangeAfter(psiElement, psiElement1, psiElement2); } @@ -504,7 +496,10 @@ public void checkDelete() throws IncorrectOperationException { } @Override - public void deleteChildRange(PsiElement psiElement, PsiElement psiElement1) throws IncorrectOperationException { + public void deleteChildRange( + PsiElement psiElement, + PsiElement psiElement1 + ) throws IncorrectOperationException { xmlTag.deleteChildRange(psiElement, psiElement1); } @@ -514,44 +509,34 @@ public PsiElement replace(@NotNull PsiElement psiElement) throws IncorrectOperat } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public boolean isValid() { return xmlTag.isValid(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public boolean isWritable() { return xmlTag.isWritable(); } @Override @Nullable - @Contract( - pure = true - ) + @Contract(pure = true) public PsiReference getReference() { return xmlTag.getReference(); } @Override @NotNull - @Contract( - pure = true - ) + @Contract(pure = true) public PsiReference[] getReferences() { return xmlTag.getReferences(); } @Override @Nullable - @Contract( - pure = true - ) + @Contract(pure = true) public T getCopyableUserData(Key key) { return xmlTag.getCopyableUserData(key); } @@ -562,66 +547,57 @@ public void putCopyableUserData(Key key, @Nullable T t) { } @Override - public boolean processDeclarations(@NotNull PsiScopeProcessor psiScopeProcessor, @NotNull ResolveState resolveState, @Nullable PsiElement psiElement, @NotNull PsiElement psiElement1) { + public boolean processDeclarations( + @NotNull PsiScopeProcessor psiScopeProcessor, + @NotNull ResolveState resolveState, + @Nullable PsiElement psiElement, + @NotNull PsiElement psiElement1 + ) { return xmlTag.processDeclarations(psiScopeProcessor, resolveState, psiElement, psiElement1); } @Override @Nullable - @Contract( - pure = true - ) + @Contract(pure = true) public PsiElement getContext() { return xmlTag.getContext(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public boolean isPhysical() { return xmlTag.isPhysical(); } @Override @NotNull - @Contract( - pure = true - ) + @Contract(pure = true) public GlobalSearchScope getResolveScope() { return xmlTag.getResolveScope(); } @Override @NotNull - @Contract( - pure = true - ) + @Contract(pure = true) public SearchScope getUseScope() { return xmlTag.getUseScope(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public ASTNode getNode() { return xmlTag.getNode(); } @Override @NonNls - @Contract( - pure = true - ) + @Contract(pure = true) public String toString() { return xmlTag.toString(); } @Override - @Contract( - pure = true - ) + @Contract(pure = true) public boolean isEquivalentTo(PsiElement psiElement) { return xmlTag.isEquivalentTo(psiElement); } From 9e4407ad4de195718133961880d17523271643eb Mon Sep 17 00:00:00 2001 From: "artemii.karkusha" Date: Thu, 6 Jan 2022 10:39:54 +0200 Subject: [PATCH 104/124] 899: Refactored of function setAttribute. --- .../linemarker/xml/LineMarkerXmlTagDecorator.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java b/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java index d675b204c..9fa968560 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java +++ b/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java @@ -149,14 +149,17 @@ public String getAttributeValue(@NonNls String s) { @Override public XmlAttribute setAttribute( - @NonNls String s, @NonNls String s1, @NonNls String s2 + @NonNls String s, + @NonNls String s1, + @NonNls String s2 ) throws IncorrectOperationException { return xmlTag.setAttribute(s, s1, s2); } @Override public XmlAttribute setAttribute( - @NonNls String s, @NonNls String s1 + @NonNls String s, + @NonNls String s1 ) throws IncorrectOperationException { return xmlTag.setAttribute(s, s1); } From 2dc9f3a7ecb15cc4d7de8e03642fce74a43fd6cf Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Thu, 13 Jan 2022 10:38:35 +0200 Subject: [PATCH 105/124] 899: Code refactoring --- .../xml/LineMarkerXmlTagDecorator.java | 286 +++++++++--------- 1 file changed, 142 insertions(+), 144 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java b/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java index 9fa968560..f766429ca 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java +++ b/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java @@ -1,4 +1,4 @@ -/** +/* * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ @@ -18,7 +18,7 @@ import com.intellij.psi.PsiManager; import com.intellij.psi.PsiReference; import com.intellij.psi.ResolveState; -import com.intellij.psi.impl.CheckUtil; +import com.intellij.psi.impl.source.xml.XmlTagImpl; import com.intellij.psi.meta.PsiMetaData; import com.intellij.psi.scope.PsiScopeProcessor; import com.intellij.psi.search.GlobalSearchScope; @@ -41,38 +41,50 @@ import org.jetbrains.annotations.Nullable; /** - * Decorator for XmlTag, which allows to render user-friendly line markers. + * Decorator for XmlTag, which allows user-friendly line markers rendering. */ +@SuppressWarnings({ + "PMD.TooManyFields", + "PMD.ExcessiveImports", + "PMD.CouplingBetweenObjects", + "PMD.ExcessivePublicCount", + "PMD.CyclomaticComplexity", + "PMD.TooManyMethods", + "PMD.AvoidUncheckedExceptionsInSignatures" +}) public abstract class LineMarkerXmlTagDecorator implements XmlTag { protected XmlTag xmlTag; protected Project project; - public LineMarkerXmlTagDecorator(XmlTag xmlTag) { + public LineMarkerXmlTagDecorator(final XmlTag xmlTag) { this.xmlTag = xmlTag; this.project = xmlTag.getProject(); } @NotNull protected String getAreaName() { - VirtualFile containingDirectory = xmlTag.getContainingFile().getVirtualFile().getParent(); - String configDirectory = containingDirectory.getName(); + final VirtualFile containingDirectory = xmlTag + .getContainingFile().getVirtualFile().getParent(); + final String configDirectory = containingDirectory.getName(); + + if ("etc".equals(configDirectory)) { + final VirtualFile moduleDirectory = containingDirectory.getParent(); - if (configDirectory.equals("etc")) { - VirtualFile moduleDirectory = containingDirectory.getParent(); - if (moduleDirectory.getName().equals("app")) { + if ("app".equals(moduleDirectory.getName())) { return "primary"; } return "global"; } + return configDirectory; } @NotNull private String getComponentName() { - MagentoComponentManager moduleManager = MagentoComponentManager.getInstance(project); - MagentoModule module = moduleManager.getComponentOfTypeForFile( + final MagentoComponentManager moduleManager = MagentoComponentManager.getInstance(project); + final MagentoModule module = moduleManager.getComponentOfTypeForFile( xmlTag.getContainingFile(), MagentoModule.class ); @@ -124,103 +136,99 @@ public XmlAttribute[] getAttributes() { } @Override - @Nullable - public XmlAttribute getAttribute(@NonNls String s, @NonNls String s1) { - return xmlTag.getAttribute(s, s1); + public @Nullable XmlAttribute getAttribute( + final @NonNls String name, + final @NonNls String namespace + ) { + return xmlTag.getAttribute(name, namespace); } @Override - @Nullable - public XmlAttribute getAttribute(@NonNls String s) { - return xmlTag.getAttribute(s); + public @Nullable XmlAttribute getAttribute(final @NonNls String qname) { + return xmlTag.getAttribute(qname); } @Override - @Nullable - public String getAttributeValue(@NonNls String s, @NonNls String s1) { - return xmlTag.getAttributeValue(s, s1); + public @Nullable String getAttributeValue( + final @NonNls String name, + final @NonNls String namespace + ) { + return xmlTag.getAttributeValue(name, namespace); } @Override - @Nullable - public String getAttributeValue(@NonNls String s) { - return xmlTag.getAttributeValue(s); + public @Nullable String getAttributeValue(final @NonNls String qname) { + return xmlTag.getAttributeValue(qname); } @Override public XmlAttribute setAttribute( - @NonNls String s, - @NonNls String s1, - @NonNls String s2 + final @NonNls String name, + final @NonNls String namespace, + final @NonNls String value ) throws IncorrectOperationException { - return xmlTag.setAttribute(s, s1, s2); + return xmlTag.setAttribute(name, namespace, value); } @Override public XmlAttribute setAttribute( - @NonNls String s, - @NonNls String s1 + final @NonNls String qname, + final @NonNls String value ) throws IncorrectOperationException { - return xmlTag.setAttribute(s, s1); + return xmlTag.setAttribute(qname, value); } @Override public XmlTag createChildTag( - @NonNls String s, - @NonNls String s1, - @Nullable @NonNls String s2, - boolean b + final @NonNls String localName, + final @NonNls String namespace, + final @Nullable @NonNls String bodyText, + final boolean enforceNamespacesDeep ) { - return xmlTag.createChildTag(s, s1, s2, b); + return xmlTag.createChildTag(localName, namespace, bodyText, enforceNamespacesDeep); } @Override - public XmlTag addSubTag(XmlTag xmlTag, boolean b) { - return this.xmlTag.addSubTag(xmlTag, b); + public XmlTag addSubTag(final XmlTag subTag, final boolean first) { + return this.xmlTag.addSubTag(subTag, first); } @Override - @NotNull - public XmlTag[] getSubTags() { + public @NotNull XmlTag[] getSubTags() { return xmlTag.getSubTags(); } @Override - @NotNull - public XmlTag[] findSubTags(@NonNls String s) { - return xmlTag.findSubTags(s); + public @NotNull XmlTag[] findSubTags(final @NonNls String qname) { + return xmlTag.findSubTags(qname); } @Override - @NotNull - public XmlTag[] findSubTags(@NonNls String s, @Nullable String s1) { - return xmlTag.findSubTags(s, s1); + public @NotNull XmlTag[] findSubTags( + final @NonNls String localName, + final @Nullable String namespace + ) { + return xmlTag.findSubTags(localName, namespace); } @Override - @Nullable - public XmlTag findFirstSubTag(@NonNls String s) { - return xmlTag.findFirstSubTag(s); + public @Nullable XmlTag findFirstSubTag(final @NonNls String qname) { + return xmlTag.findFirstSubTag(qname); } @Override - @NotNull - @NonNls - public String getNamespacePrefix() { + public @NotNull @NonNls String getNamespacePrefix() { return xmlTag.getNamespacePrefix(); } @Override - @NotNull - @NonNls - public String getNamespaceByPrefix(@NonNls String s) { - return xmlTag.getNamespaceByPrefix(s); + public @NotNull @NonNls String getNamespaceByPrefix(final @NonNls String prefix) { + return xmlTag.getNamespaceByPrefix(prefix); } @Override - @Nullable - public String getPrefixByNamespace(@NonNls String s) { - return xmlTag.getPrefixByNamespace(s); + public @Nullable String getPrefixByNamespace(final @NonNls String namespace) { + return xmlTag.getPrefixByNamespace(namespace); } @Override @@ -246,9 +254,11 @@ public XmlTagValue getValue() { } @Override - @Nullable - public XmlNSDescriptor getNSDescriptor(@NonNls String s, boolean b) { - return xmlTag.getNSDescriptor(s, b); + public @Nullable XmlNSDescriptor getNSDescriptor( + final @NonNls String namespace, + final boolean strict + ) { + return xmlTag.getNSDescriptor(namespace, strict); } @Override @@ -262,31 +272,27 @@ public void collapseIfEmpty() { } @Override - @Nullable - @NonNls - public String getSubTagText(@NonNls String s) { - return xmlTag.getSubTagText(s); + public @Nullable @NonNls String getSubTagText(final @NonNls String qname) { + return xmlTag.getSubTagText(qname); } @Override public boolean processElements( - PsiElementProcessor psiElementProcessor, - PsiElement psiElement + final PsiElementProcessor psiElementProcessor, + final PsiElement psiElement ) { return xmlTag.processElements(psiElementProcessor, psiElement); } @Override - @NotNull @Contract(pure = true) - public Project getProject() throws PsiInvalidElementAccessException { + public @NotNull Project getProject() throws PsiInvalidElementAccessException { return xmlTag.getProject(); } @Override - @NotNull @Contract(pure = true) - public Language getLanguage() { + public @NotNull Language getLanguage() { return xmlTag.getLanguage(); } @@ -297,9 +303,8 @@ public PsiManager getManager() { } @Override - @NotNull @Contract(pure = true) - public PsiElement[] getChildren() { + public @NotNull PsiElement[] getChildren() { return xmlTag.getChildren(); } @@ -358,17 +363,15 @@ public int getTextLength() { } @Override - @Nullable @Contract(pure = true) - public PsiElement findElementAt(int i) { - return xmlTag.findElementAt(i); + public @Nullable PsiElement findElementAt(final int offset) { + return xmlTag.findElementAt(offset); } @Override - @Nullable @Contract(pure = true) - public PsiReference findReferenceAt(int i) { - return xmlTag.findReferenceAt(i); + public @Nullable PsiReference findReferenceAt(final int offset) { + return xmlTag.findReferenceAt(offset); } @Override @@ -378,16 +381,14 @@ public int getTextOffset() { } @Override - @NonNls @Contract(pure = true) - public String getText() { + public @NonNls String getText() { return xmlTag.getText(); } @Override - @NotNull @Contract(pure = true) - public char[] textToCharArray() { + public @NotNull char[] textToCharArray() { return xmlTag.textToCharArray(); } @@ -405,29 +406,29 @@ public PsiElement getOriginalElement() { @Override @Contract(pure = true) - public boolean textMatches(@NotNull @NonNls CharSequence charSequence) { + public boolean textMatches(final @NotNull @NonNls CharSequence charSequence) { return xmlTag.textMatches(charSequence); } @Override @Contract(pure = true) - public boolean textMatches(@NotNull PsiElement psiElement) { + public boolean textMatches(final @NotNull PsiElement psiElement) { return xmlTag.textMatches(psiElement); } @Override @Contract(pure = true) - public boolean textContains(char c) { - return xmlTag.textContains(c); + public boolean textContains(final char character) { + return xmlTag.textContains(character); } @Override - public void accept(@NotNull PsiElementVisitor psiElementVisitor) { + public void accept(final @NotNull PsiElementVisitor psiElementVisitor) { xmlTag.accept(psiElementVisitor); } @Override - public void acceptChildren(@NotNull PsiElementVisitor psiElementVisitor) { + public void acceptChildren(final @NotNull PsiElementVisitor psiElementVisitor) { xmlTag.acceptChildren(psiElementVisitor); } @@ -437,53 +438,58 @@ public PsiElement copy() { } @Override - public PsiElement add(@NotNull PsiElement psiElement) throws IncorrectOperationException { + public PsiElement add( + final @NotNull PsiElement psiElement + ) throws IncorrectOperationException { return xmlTag.add(psiElement); } @Override public PsiElement addBefore( - @NotNull PsiElement psiElement, - @Nullable PsiElement psiElement1 + final @NotNull PsiElement psiElement, + final @Nullable PsiElement psiElement1 ) throws IncorrectOperationException { return xmlTag.addBefore(psiElement, psiElement1); } @Override public PsiElement addAfter( - @NotNull PsiElement psiElement, - @Nullable PsiElement psiElement1 + final @NotNull PsiElement psiElement, + final @Nullable PsiElement psiElement1 ) throws IncorrectOperationException { return xmlTag.addAfter(psiElement, psiElement1); } @Override - public void checkAdd(@NotNull PsiElement psiElement) throws IncorrectOperationException { - xmlTag.checkAdd(psiElement); + public void checkAdd(final @NotNull PsiElement psiElement) throws IncorrectOperationException { + if (xmlTag instanceof XmlTagImpl) { + ((XmlTagImpl) xmlTag).checkAdd(psiElement); + } + throw new IncorrectOperationException(getClass().getName()); } @Override public PsiElement addRange( - PsiElement psiElement, - PsiElement psiElement1 + final PsiElement psiElement, + final PsiElement psiElement1 ) throws IncorrectOperationException { return xmlTag.addRange(psiElement, psiElement1); } @Override public PsiElement addRangeBefore( - @NotNull PsiElement psiElement, - @NotNull PsiElement psiElement1, - PsiElement psiElement2 + final @NotNull PsiElement psiElement, + final @NotNull PsiElement psiElement1, + final PsiElement psiElement2 ) throws IncorrectOperationException { return xmlTag.addRangeBefore(psiElement, psiElement1, psiElement2); } @Override public PsiElement addRangeAfter( - PsiElement psiElement, - PsiElement psiElement1, - PsiElement psiElement2 + final PsiElement psiElement, + final PsiElement psiElement1, + final PsiElement psiElement2 ) throws IncorrectOperationException { return xmlTag.addRangeAfter(psiElement, psiElement1, psiElement2); } @@ -500,14 +506,16 @@ public void checkDelete() throws IncorrectOperationException { @Override public void deleteChildRange( - PsiElement psiElement, - PsiElement psiElement1 + final PsiElement psiElement, + final PsiElement psiElement1 ) throws IncorrectOperationException { xmlTag.deleteChildRange(psiElement, psiElement1); } @Override - public PsiElement replace(@NotNull PsiElement psiElement) throws IncorrectOperationException { + public PsiElement replace( + final @NotNull PsiElement psiElement + ) throws IncorrectOperationException { return xmlTag.replace(psiElement); } @@ -524,45 +532,41 @@ public boolean isWritable() { } @Override - @Nullable @Contract(pure = true) - public PsiReference getReference() { + public @Nullable PsiReference getReference() { return xmlTag.getReference(); } @Override - @NotNull @Contract(pure = true) - public PsiReference[] getReferences() { + public @NotNull PsiReference[] getReferences() { return xmlTag.getReferences(); } @Override - @Nullable @Contract(pure = true) - public T getCopyableUserData(Key key) { + public @Nullable T getCopyableUserData(final Key key) { return xmlTag.getCopyableUserData(key); } @Override - public void putCopyableUserData(Key key, @Nullable T t) { - xmlTag.putCopyableUserData(key, t); + public void putCopyableUserData(final Key key, final @Nullable T value) { + xmlTag.putCopyableUserData(key, value); } @Override public boolean processDeclarations( - @NotNull PsiScopeProcessor psiScopeProcessor, - @NotNull ResolveState resolveState, - @Nullable PsiElement psiElement, - @NotNull PsiElement psiElement1 + final @NotNull PsiScopeProcessor psiScopeProcessor, + final @NotNull ResolveState resolveState, + final @Nullable PsiElement psiElement, + final @NotNull PsiElement psiElement1 ) { return xmlTag.processDeclarations(psiScopeProcessor, resolveState, psiElement, psiElement1); } @Override - @Nullable @Contract(pure = true) - public PsiElement getContext() { + public @Nullable PsiElement getContext() { return xmlTag.getContext(); } @@ -573,16 +577,14 @@ public boolean isPhysical() { } @Override - @NotNull @Contract(pure = true) - public GlobalSearchScope getResolveScope() { + public @NotNull GlobalSearchScope getResolveScope() { return xmlTag.getResolveScope(); } @Override - @NotNull @Contract(pure = true) - public SearchScope getUseScope() { + public @NotNull SearchScope getUseScope() { return xmlTag.getUseScope(); } @@ -593,60 +595,56 @@ public ASTNode getNode() { } @Override - @NonNls @Contract(pure = true) - public String toString() { + public @NonNls String toString() { return xmlTag.toString(); } @Override @Contract(pure = true) - public boolean isEquivalentTo(PsiElement psiElement) { + public boolean isEquivalentTo(final PsiElement psiElement) { return xmlTag.isEquivalentTo(psiElement); } @Override - @Nullable - public T getUserData(@NotNull Key key) { + public @Nullable T getUserData(final @NotNull Key key) { return xmlTag.getUserData(key); } @Override - public void putUserData(@NotNull Key key, @Nullable T t) { - xmlTag.putUserData(key, t); + public void putUserData(final @NotNull Key key, final @Nullable T value) { + xmlTag.putUserData(key, value); } @Override - public Icon getIcon(@IconFlags int i) { - return xmlTag.getIcon(i); + public Icon getIcon(final @IconFlags int flags) { + return xmlTag.getIcon(flags); } @Override - public PsiElement setName(@NonNls @NotNull String s) throws IncorrectOperationException { - return xmlTag.setName(s); + public PsiElement setName( + final @NonNls @NotNull String name + ) throws IncorrectOperationException { + return xmlTag.setName(name); } @Override - @Nullable - public PsiMetaData getMetaData() { + public @Nullable PsiMetaData getMetaData() { return xmlTag.getMetaData(); } @Override - @Nullable - public XmlTag getParentTag() { + public @Nullable XmlTag getParentTag() { return xmlTag.getParentTag(); } @Override - @Nullable - public XmlTagChild getNextSiblingInTag() { + public @Nullable XmlTagChild getNextSiblingInTag() { return xmlTag.getNextSiblingInTag(); } @Override - @Nullable - public XmlTagChild getPrevSiblingInTag() { + public @Nullable XmlTagChild getPrevSiblingInTag() { return xmlTag.getPrevSiblingInTag(); } } From e923ce050b4c4bc7f1ae7735c64f636abeb3e06a Mon Sep 17 00:00:00 2001 From: "artemii.karkusha" Date: Thu, 13 Jan 2022 11:58:17 +0200 Subject: [PATCH 106/124] 900: Code refactoring --- .../linemarker/xml/LineMarkerXmlTagDecorator.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java b/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java index f766429ca..d4857c7c2 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java +++ b/src/com/magento/idea/magento2plugin/linemarker/xml/LineMarkerXmlTagDecorator.java @@ -501,7 +501,10 @@ public void delete() throws IncorrectOperationException { @Override public void checkDelete() throws IncorrectOperationException { - xmlTag.checkDelete(); + if (xmlTag instanceof XmlTagImpl) { + ((XmlTagImpl) xmlTag).checkDelete(); + } + throw new IncorrectOperationException(getClass().getName()); } @Override From 4a8b6c66e15bcdbc2633cb0d1cc7ed14b4cb6f52 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Fri, 14 Jan 2022 21:03:45 +0200 Subject: [PATCH 107/124] 920: Added UCT support for version 2.4.4-beta4 --- resources/uct/api/indexes.API_COVERAGE.idc | Bin 2935095 -> 3009407 bytes .../indexes.v2.4.4-beta4.DEPRECATION.idc | Bin 0 -> 1257 bytes resources/uct/existence/indexes.EXISTENCE.idc | Bin 17047870 -> 17804707 bytes .../packages/SupportedVersion.java | 3 +-- 4 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 resources/uct/deprecation/indexes.v2.4.4-beta4.DEPRECATION.idc diff --git a/resources/uct/api/indexes.API_COVERAGE.idc b/resources/uct/api/indexes.API_COVERAGE.idc index c98fe32dae4e356c39d9ac2162004a8bf2fd0b94..eb7c2eb21b03e1f8e394e752053065e79a601ee3 100644 GIT binary patch delta 762754 zcmb5X34B!5*+1@`n{6h^WG4Hbnd~H!jeRE}gf(O#prT+hLR1t;NP>u>1edx)@YXz9 z7lLcG0*Q)HtrD!(wHmb4QWp}fb%&tVw{GzJKF_%`NvM6_|KE=vCUfW9bI*CsvwWZB zoV)L~C$v+4-KTZbXt6!DGakzf9bGuKaBRW(jcwkst?SOX>WnjHl%9eAg3j0wa>g0> z|BQgy0(QB?8d*+(fmgZUBHm^LGjy@2Y$+vfW zZ7Jo?vH@peXOT6C9M`ymQtDT=&R*5HdSz>4+q|{S>)X!su3ja5W5iRbAzaU(V{ciK z`NqCyTplXDD%L^!H%B=6N(t$C)PF>`QRR~KaK3WlcHGeacyQdXF_tX`Ia~$7p|q*k zlW$IHFv^lh?Qi2&*C|U7-Ibw7n7&Y&G?rk#mLx|PFMZQlE$rf{L3;6pGMUeMYfhkOi>Z7 zCfzcH`kwX#gsf`Ys4lgS*J7#W-Ec<(wyrvV zbtBWY`uvLS?FG zvyA5P^={EqDJeydG4BF}U7efl@wB@xKZv$%j}5WTZfaShZi;x!6HAVpJ$AbEQ_T^6 zVPjkE`X=8Z@BE`@4)^%xw5WXkEdICUOpB$6YTEIHV-dQO+Mfxr+1Ix;maS-8)wGto zETZ-=^ciIT-eTjXt_C!%+M>H-nU9&Y#mg3YFKk@f*0gLPIEu;+#Kbul)-9^3uc#`U zSy?elb<*F3PVW8Q62qNT-xx7Q=ADmutF=~(MpJ&U6v=|krLqVu*)HT*R_<+Uys)Wd zBfW8n+sz$p*MeiIW6&B%rLK^WxXgNQOQUz*+SWGj+7*qyfsH5k<$4Kq{a^{<_e$`q$r^U-tSDhGr?@xok?7S^0ib{X9 zB=CLpt8J5H@I~Yd4ojg!cV^0@)@A5v`Rnxi^@-HmtOxTK=n6NjK51cD>->Xf3b{VCIAq8kqvx?$N{iQHg_jDb zdli;*TZSG+&&|}sOa_B&P2+xQ-^@>=wKqmM$>Yfg<10Ikgu6Q3;FCB0R!Ngn#*uCee4eg`V7L!11d03mVy1G3 z+w*i6^%vcLp$Eq6PfY{y0qE+aP4ML13yC(7SX!Hx%2pUx`XTVX>=^d zDXUeM5gtQ*_XOA};?^LC*`g^}pUJ~J_)ieJ;aokQz6jPK+9H6Hs5nHA=Glvi?tUjC ziZ+Glp@!qBDfGm-q0!9F8P>%cn;Vr_@2pLjMl-CsJg@sU*r>EW+Nk3(Q20u#9wqad zOSK`|EL#4W;?CjfO9)kB)2sRUuoE((xCm%17JOm-wlgNux{{n?+VoT z+FX3k&Nsn-T{r1T=Iq?o*tpK~^^|Z?%4P>;RCYfWwj)@Nrsl_>G&VmOCw8cQwF4qM zJujL{!*o^>bo>FWR0chn2HwY_^@j1(idb-?=u~fNEd5WI9>*;m;W{|6h?a-zQ}}!P zN=strQ?NOI4(E9mF{4Z-hn>lZxiPh2a3YMbzEtMi3I4?nvwB-rT%^d!@^xEgf=mXQ zW)?=>XV)j7J6NaDw(=F`j26(AIr=n1AMG^0=^0D6COL(*`XY2#j3O%Crl%Oi-(?&1 zpNBxUx_5-f(crgfR?6L$7MTd!wW!g%vU=_6jWsPz&5bQ>t4y6qH4eRwhs%Nh0~$+5 z96EqVk@3OjQ+U*~srGsp^O`YwIMqA#NTsTcEk917-(IY2Z^^~_L?hx$JD%G$)>>>F z|HEXx?Tj;hN}-URiB$5jGgqq-Qs>d3I6b=a>Uf`0s(HvgnL48Q$>=0XAIG2FOQBv9 zp2QON{ZT#Vi>V#(KG^>v1eeX`C(=hQ%5hI*f`Rf+gz9 z)dQ@4Q6lYeO-2KZI9^CU)@Ki3RST$^l{v#QTKHN9s{}DS{ZDEo{CDq(g*^W{W1VG^ zQDqG_{u~_3clGYoL{B#S8N=wkK@Tu~elHkf(-QTW@{l1j7frj*al(ieF-nc2J&C#i zu)ainY#PJ3kx*ipY5c`H(^p?x<<5bGhH^bTUdq7W1#peG#IPv9?p_ zo`dom4W#Mi{G&EKZw9wL@%CI+E-t;0ulBq2DjC*v+CC;Ho8GL+#e<5d*e&{toU`2? zxjSA<3pZC5OV`%aLK{DI<#5wCQ?iq2MwA|DFKk`k+}zaCCMXOuC=2pX?=6X;wC$%D zS#}tP zJ!*#3^OrM{S?wvW?dWH4y{6~rJ}*mHGVNxl7hv2t+M1)}2>wF`HNOJMIzCO04XIvS zqs$q6QdeiLF0lE~70IzwHa{lDhsHz;i&c&?2@KyNqq81Z@`hYiy^xo$qDLw-@h1;m zkvg4D?Mf9iP&i7Th~XO5uTRE=*ws$??{L2Dj7mj2Al@Ll>1`Oe_ebgRvZ!;E3wc3k z5@=ZfQ!$;Ehla^BfJsO3wS(_Xp;HqSiUIJ*q|(iLRM?WbibeJFOgD!;PsK&+^I6b} zsH;FPr#-=%6~k-)E>vt8FqoU_@7JS^_HWrxiUtw?>qd{_JrVcrm7qSBz-rRxO^;s1 zT|%>tr<1!<1$41*PhGcrLPO3rbq7BZ(1bPibYTElc(G2!w6;(O^nq_O!>ZJ1WM$I| z@9M_F%+;$}mAv5r^G3zN9>>v+FBLQt^Tk3m?qcj1&`ST7BWIr zy7AezY~^ibgTc22YYD#a%Q$1;-4cozt(ZZ;a&H$riki{7HInHwb;MZ2D^B@u240N^ zZgwhd9IfYLdBAEDjo$YIXwMB{L6|?4{LU$n2VeLD>SThf!z4c<6TATvK9(w%#Yq?h zv792hJHswg)4Wtqr@r)rP#SCm^QVo~g|}g!3h9j-JvM6CtOthqJWfy(F`)b5x^5c_ zXOU+#m$Y_Z&ZHM37zQk5K}x2nKUm_aiv?-!ViOKdrQ*H12b>*3+s3JfxbOF*B`S?q z)(ZG}y1uL3lnYF41{YvSlL+3Wgc}CNF+EJr48MqH*1g^H3nnC4*aoVGxsEb!D(4yKiwNZB#si&&vlVvpxUp=uHYy5VuhmpWZ`qj>(CNnE1NEyw{{*PBrO+s zS2POGG8*PE&1v@BjM5m6x4aktU_*)V`Ug>_o@2MdT2;2NLUFxMVFIZX(KAzZj>M5R zjV&#>Y@7<=Tsck286e$s{vE-O8KK~#>b7Rpi(|TZ+L>Y*aNGnBuheVNKuguIPOL(qj9{-#A!(Qg#D!)0_4w7x3}fTpZ@ z6<~}Cvoa~5aYo-Zz{t9|RC#Ir%b;-@egko_H|tj0Jc$XQsRsZjh0>1df%JJPt9#Q= z_E~5%kZ6=-x@eGf-KH{*gA|Bk(e+B0(b^qFPaH<)#czOBkL`2-Eh9AZx#=5^5vd7M z1f<&hZ20+57yuv_1f)?_SD-J}!0s#ub8OT;Q}HhxOT@4;;F=)bBr*p%$>{u(o-5p5 zM2?IU6X({H!|*W^R2x0dWgGD?kCG=$xf5XXb&oyo5iCUr?+aX*Qqn zGLSQyQb)xa@2b_y=Cw7hF>$5)z33(Kh#CKdjg?0VgQ)!Bgz#CbysP~>lAs30Qq6}+ z0Ti)G!I7r0mgs89&}_M05zSV+SJ51^XQz$6X1 zHW^p#r5=gUM^N+PEC)j2CC2PGovhSVu&Hw^bZ65R1?~1c1vY5@HCAo#vM?V>C4|-Y zEn@Q#-5fU&p9fJ2L6l=T;u@$g_FiUuwL776ETB%!0&%6uyFeeqldAe+qQ<_)T;m+8 zfEXZ}G4w@_Q|6CRo3WP6E8+moFt9OHvLL#I`YUw_-GXMt6fwpXLTL;2U}=#+JwI9e z=Gg<3n;oi0oR9Zqr)6>Ur@rhBRt7~gzK^CE5&L#2Dcs%+{C zc#;_-Aj4_!rLlE|7oi%Z?hc&`mhRBpK%gGwx0QT2(U>t9fnk=s=F6kJcSRa(Co)5< z0?#?3QZE3O(RBPSPdbktlpafW*NTcTnoiWYkn_O92rOr*Pf((NWa!MWBNYEOrJ))wLmHUvb%r#^#|s0^2AS#3-t&Q{6GF zWJ_4UeebE$g`@{whh;?6E0DH630&a^7d(~oZqqA#;)V5?PVIq`D5GLmrt)OqDZ^L= zim@_w{xwDeAb2~ST?F>a*%F!&X~Xfx3MSXg5Hsxra-~LPwl=mv#8+Kzk{U4yQFie@ zYXQYvv9=8vA*F4LX!8S}v9zqqV>KFnKf%2G+;(PaBLN63q))Z% z?6VD-gUHOrOOZ-h=v|AjgSptC2P?=?assIAQa{YQXb)BVWh$hZM zSSQa1RaKfI(Kmtm6-aKhwXFB2rY5p_CD+*qu`?IC6|k>5Tg5LL&ekV0@kBHb8c(3m zXbylPiSsK5tk3cMY*TX&CGeP%lyY-uFuAt6pu=GsW*Xc7HJOeUIRdG7Wtw0pI2p1m z0H$Kp5#U?E{rX&=DBlDo`_m-RwB{VZDDH5qLT=Nq&6EiK2S4OU6c!vkj>2N?$~C$H z!EpPg)Zih*;i03!@Lo&z#RSn+=PGeT+<7cjKcgT5L~9YxSL^kh%b!OpN2yfR1ogn& zV^JwG0FzE|fCMJM7RxML%k@T{g`iMIBF4D~*wx;4pIc^oYPl{E7BL-nU6ya7h`W?h z8}8ItZNnlM0+EmciKQv=n#90>-ip}fC(DXWM?@}>`gT|{&3QVX_tf*);ZH+0%`g|k z0i*B5VB^}C<1wD?yE7FO@<%d#iDX1yMGpHaoORp_D|-oSZ}PH12JK5EhESkuap|0S<<1mzth^-k(sc%#XA%uET38Tw38PZLC$FjoMb5f8*F+;jf zrdF(O^sW`PfJl0|cg01GqNl<3;xpMQz32Oqx-ea1=&B1HVL}JwTV9HsWG)+`F^DvO zo95$takwT^#f7>!a6>_YS2Idr zqFB!dfv02&A^`KcReI#;MQrvZ^(X1Lp&0tIRZKA?hOSn*GAzm@{=WSxSeL2C(m7sC z2>y!`QJi3yFbMG(LF65S=Un(GTj zB{Al((_^E96}4swN-Ho!XJ$_LG+%Pw%8@P#ZI6j5aGmu<2fwh*cX0H|`R34yT zI|AM-^*)s1f-^FicCS_`E<_@yguw>z7!eEL)>XsCCQo5LGA;mwAC% zH!&>q;4>=Zs0b9+H(l1mSX#I~)&^)$LW64*gVv;5Duh)gvU5>D?>`tP4qVMc$)cwa z>q()(9eQT^nT;*2X3idJJogvC1YNl`SunTcIT4gjq-9OAs<-`Z9K`hACSAnT=N!gT z{Uvchv~+_WRmP@a>@V~Q@=Nj@G?}%kwRyF7BT5I>dso-AtXk3NC!#;_hH!Q)H8ks~ zU>#&x+|>IoL{XKuue^LgpQoBl4);hfIdmBDXyD{eyfbz2PxfT96oCph$ zT%u1ajG@{K9eMW3vbx3fKJODr&~^GeW)8%=C(|2Gxq)76QC8iT>H* z&p6GZ(pCkJeQ9mvJX@9OgS#<`(q7G0VY2D;Y;({gifCiA1rj1S{&!0*2NOccG0LI> z`KLh)KM(pK2Eff|+8Uy9sPI3nEX)s+5+e3)K7;txonPoNe>dWeuR+ZP! zs+e82q;hfnysDZdi|fl4Eh<}DUpMcZiu%fV3+F8sWo3NuE|)qW3YEzf331fd7#C=- zTEFIeKNKoqXyBsXHH9GCh9}MP$DV8yJ`fo~pRecO_kT*2A2j(HLaYkGg$VGc<9%V+ z5&4%&aM9XU6}M|yBb6Bn0`EjR5$8 zP)OrT5g)kC1AhZh=UuxzWMp>AzR}NHE-D^v@$fhRGgT-YrB%w*VF5-fGYYV*aufnP zSZ^D(e=nix%h?-2raB`fhuSY!`UKA3uy9b{@AFh>e>SJPb7+18#Is|prp${8D{HPW zVI|hvgqcx}x{C5e6^rZ3t7lcH1wm9xWzJ{+w-|4-PZm9NC<_nkn5f2w5V6cN02!4u z9`InKmX`9rYI(_!Fa`Y;S%u)S{~r}uocbs+BHjxLfuE`rIft8(dpG(rM8U#q$fM#b zl>!j22uac4P*cNz_+zOg7G-r$|AWQSZO@p)L)XsJ&?cSpB@VaB6i8R9% zVvXetZEMr&OB-8edsiUcC$)3{r3m7V2+I0uyHN2np8JGfU?yi>SDPVdfm4&YsBIXc z@&zLT2snuC3WsHYApe*rLD``o86urlQ$QsZlZObqipfH)uEE0)sS2hy|CJ97Vn)m! zo1`cCxOOtRe-kiSuo?nF*Xm38QQi{)W;U8rx?v+`h$=gofIuv>aw?1&!I$7*H@=hI z>rWodf?ej)GG9GPa|aUlDoVvw7ZU5uyC=nFJ|4l^$<%)xue8#`o1({4_OApeLiRIg z*{@8JnGlf^n-L2tme$vl)zz6bd8oXaW}G_2v5iB|xg;?izIfG|#><=53bs+4K&96! z=);&8Zl?e!8(nd|u6)mAHVP{CUSQO}cyZoI4wb%|!u9FTIO2bv6ZRl_)A zW#a|j^{d;;kO&@%s_lF`Lk2S}euEN4R60l)n`39xygOV%MG_lF@{42Ruz{S9hNy}p zmR%ECMDuQBOvxk~s{efOM%^KD*)d=(W~vWIh6rjvvyWo1;0rg3FTh~Qv9MzC-0E5N z~zcHO1&Xb6PM0)2n$Us7S+CkB5ty@{tZT zS{({XiQ~}sVI1x1FqO*i63ZB~-f_70nX+9q1pG^*)!RAsUWC}Gn3ohPuCmxAVbdIE ziwU3Iw6?7dfgZI&TmGR>At*S3@dz^ssZbxHDjuNKrKkqNo53_h&7N5)({3p5UFu>b zb=7MqM`>i@rSzRR1@>lh;a9>qGrU*V$i-hZ-WDWGk%mA$)}^afHn#YEm_l!J^J=9r zd6|)co8)5zznfHOtugI^1kt9UhEG+>xke!_F!%>J2wy#9Mv78t;D?-4Ul;7i=Mdel z0)T_ZCQ`#rLkP;EErbMdeYFmenRuySU%aP32@Vz&wbfI4oDTzk503cqu5`5sEP}q zVACy<vb1kA=C0^TWk3i`XxZxgM`JtH-2MaSpA4(6h7J+=Iw2vxPLpd4Kzn3drnTg{kS+*Qvc&yZl&N5I_HXp z_6K4TXls`Wi9;$f2&sMm4e&r02lJ46;#Gy{sPxPw;(!&I4%q)!|BDM8GicMtP+YIy z$kpPo7CTjGmDEH>+$X{&W$Z(^1y5!fGmgJ>5kz)~jy^j+f{uW+DB*r6Rsabq#>Ls+ ze7_1@dgCM10&}Q#B25ess;v9OGL}oF?35IiBciwS0lkFh&Kpv=qBS&K6ezUQFRg%b z&gr_pXNk$%@>QX)9_Zke|9edU*FZ557&u8$@x2!(iXB5)R#BLLZwsEwHQi;LdXfU`Lh5~MgxyY9?`!_9@AM=^@RVIpI>XSifa;PW!$N_0pu3Y97UD8 zOjKRw+mk~tO-K;dmjd;{mKe7v=F!BtLtEv%stTd61WnUu^VtxV%H1mAi7GL3W6dqQ zRY5SEU4|4$TASu4bB~@X=Ep-P&I`(Jdx`1*Ej_V-creNP$d|lqX=c>JfwXF z-NUtwOh>HnNQ^$ro1dm$>bc5 z(zgCD12M!RN_|2tGjb-T68ijsFyW;CoTt(LuW;o0WV=ZGld7~}L@G3mj%VbmxJC(A zc#NV0-A>VjV(5JdM^;n3A4+x=#L&Bc^r+%)50yL}pJS_Q+ql|9j0JnmQXC|wWA$uf z&wEbL1Lzvr%O`=krk%8k7B{0lDz;rpWo2=wuil;QqMvVxHH|MoH-^A<1lMLGz95%#E15;^g-Lc=!$^B0>~i%aO^R1=hRjAHP3L5&a)>;IZ3g@N+xkRcL`C%fUTHZIx{jrKaOZDzY+!g=B}0&HLZueSHJJmf z1w8R!+ViwBk?whm-5KK>;iueioK*aeBeufwSzdk=+;;$tiPN5lxtjtfw2anFu7=oera<3Ld zfBu76qM#D7alWJx@NON#A!djL#cw8Bm*5A&jx+qh%o7Vxis|3K;i$jJ+gg5+ckP9~ zT^r6Sd!~^PBsvNK=}IAtD$+^vJq_x9QRBMxjje4p-nNSrCvi9Xg{ zBECYkGLJr|79nq5Y7x^96>d=Q2b6mzMH|Zwm<6F`WE-X+jK2Rw_MVZH-k6EUXpT*r zTO<&ex6#CK-=;3E_lhIX;5#-3VohuZa z#J*CxG381Ql_7;cY+t2wwTes2_5ejpsdbW?s~i8Qb_gL?B*`#n6J$nTV8)f|B!N$Y ze@i_!!M}n%!SxRM_yyL*sH8G&lr>E4ZIn<@ks_!RROQ~P3gJs$(Kq&0ngb~MCB3Eq`WkO@8N0cQo8bShL}kKI zng9Ww0x3G?xxt+hTjL8_*yzod%oxSc^Z;swP7`qlyhy1EfODTrSNz&DntKsPM-WTZ zZOYL><=9js`Dh~S2P(o;)a2b)6wh%DwXbeRqQDC}l10$4xx4r8wPVgI4gxT%F79!%9==`}R--CQ)kj znos{roy8-Q(#6|`Ax0f|9kRL+IdNjw*cKvS=i4@n*prvjM0zZfMQVY5 zN^!{K4()Qr(==B|D1A3GUHBIMbqU$t@H;_cX(7JIa?eEp$y{GZp>8P9gWaE5-1CUZ zX40@QCMPv$FfA{@c=k_;SZHW}gakm0@xB^jhQB5jw9*3D3GNW`EiwdGaIA6BH{6De ztV$=rm~hmGiZfF<+t0=FCai5eq^jajJ~@`RrpD08Y)Oi+`4uoP(MlIx2g7T`+`q_{%ykm z1&7u4GZfyrjm_V24KCuM)yDl#$Edyb!a~){L&ZXim<+xsVj{uey?^H5u(>TGnijm{ z&&mo^ZGXpv%2U9UiP(Dbj`D~4-r;SCxbZf`wk5|0-4t!g%jfzj_ zm5l#y8b~Q{B(O@1{ogy-P8Fcow!nO3Ns*S8|G%XXTm8{G)zP2-u3)Q#3b36{LIqOq zgHlmpV9}waC=K*GLX2{Z{Q&RE`gZRJ(De5dlcJ8wO%e4$lGDZx=P}fE050l1_ba96OY}xl;QPun0lMZ>;(~Y^ z7pr5OD9KqIfM{$_Fv4XLQY<1lc46!LrsNN8KClfbt|EVK7ZFz!xN}Ff;r3x^5;|BI zB|7W4OG}PMsb2MZ94j%ru$*_w`Mn=&*g__N5ADDkUdVmI*~KSPZ<&E8(-9vsk9W%; z1$I=asli*-SqMR~zZ`9)6R*V~lMQ_{7BP>p=6d_j1)$oSoFW&<)6Azg)&)qI8Ywfg zAhx()ZS6vM>TDj6R0$09n_E$bWmHYyMD~-R=02Lb{u&x&^z1ID*2B4Zyd}>`-w&v` z-%u3XzAaRhwn~(WuKG|-ip%M#w+~_3fBtM|URB{!y0|V!w7$6UvQydfky4jZA|m?@ zF8c_nk8gU~>6S`czGye|;Ebk!C>IbKph{@^?~FY9RZp<5NO9mQPcqk3RYlKZ&oeuVSXb}TNiL=MNyZgT>Ox4kw?Ij1@VLt=$ppYrZD z7-e?!;X}sLYctt@M`rrFP;)zM%0GD%Ha0g-;?A2tQ#l2}i(Hn@Jd2IgSjjx9wFf29 zoS#O)$t~g#IFPH8`u64uz9{}&uakCcW2YJ$A7Wfe*bS##J=4zkDr^F1#TRM^8YCSp zz~!(9eEz{_Uzh=Jw>)n|aSi9f$n_;x;z4S^WX6Ub=N%{rcA@GwRuBHaYn5AvyEQP7 z>Vyb$OGXhV36Ypmtc9S-rE;Q!D*Kb#tXFPi*R066^|4M%&<3OU@ff4y#aNURHsUMw z{h%R7ziSHreQ06GXll4RC)N(wREhm-0-f-~jC(AFhHGz-F}T-mpR?+MwsLQaz+C($ zDs0yPqzPYk-r<=Q7<75t84KyqpcZ4)?2(QSuF)q225sOxmR#=Nlg_QZSEeLTcWH2h z;ptAm1>c4VXXYy2Cp>%ATI6oPjA-htghA{ZjEm<&SO?!c;)*Jb<;yZ0KFEf@2vZ2Y z=M57wf{8RE5=GZrKSz-iT3}>FVQ}V5h%EG(fgg-@kI$BgtfUiXrWOfRjIW-y8n!2R zq~v`vGRY`?BA5S0P`BLZ`zVb6?z_g4K>e?3fyR+1#_@%LSL}+WVX`C8M^SgGP&C}w z@uZBy`&X@ys-MJtN1t@c1M)1qE=fk!)4@i;-Y^;bMmlkqmSim5>y>Azr5k0O+#8AS zov8k!hKG^mR3!6iLD+GU?F^#Nzex$Fu0N&WNtY8moO0u>Z)3R!=T>>W1zH}~_383X&l1mKP7KHeC`D3{qHpDS2!e#mb%Ib4JY4dM>vG>H)1svqMo#c)o!=_Q_?$K#o2|OV&#FD&0;ctLW1Z~# zBp`*x+CQ`!?)=0b#`DLhXa8Uc+G}X{#TdOVD{bEAaT}l6LXF3t%aY1*{&7f7#dpM& z-OoW{_Zr?63C4`+9x9FtmyH)ed)v-vAnywq^Nl^vhZ@fvz*6p|lCcR<gAIFzU<6@}mc<=;c za6teqT%Lk~?UziX>7#_x(TFGzT`nRJn-s`%8L>YJy)YrTx>e4X!V}6~w@){^o{uzs z?z0*NFUV~DR+ArFvJpE4_j%HdmtSzo6r}Q(w_4ie0pehZknB}CA#^%Cv;t1rYm`N) zPUzoHp&SB3ER7Sg8|_n}0QO1&na|gf3q29ZsnmXZc!+WGPf$K+;V%Y4cl9rUFZUbT z9J5!~CDB1f|4V4NAIYW*xxJj8Fs!URP6j*EaL=7-4z{l(KE~*BNbLes>Obpu&<#wo zuU0(X?6zD!U%-J`4L?ML(z!n;^72sG=c&AkGTr*SecT~6G2G7rY<%h6m=aA5w`B$x z5wAfJ>_6>@2kyn6xDsK;s8m|r9P*ZbN2M75eho6X*Y9%i-_@^!9xMUsv5J?3Y)l5& zY4gO5g#38iyI(eH^3#TjfN(b#-0b~xgrd{P(s2Chc;kG2gpV8O)49>Z*ug9WM}r|j z3&6%LXsW%kYmU<;I0#G}0}KGG2?>T=4Lf-z1s9-omDm_HeYkf&1GsrIqNPeEf9MnT z>AS+mJ^{uDXM>iQypI{$DIttiY;c57hdR&1p zS5{3@=J<|O*3iamZar*cHhvzN*5MBLd^_p(wDb;s@|RMF4V6*{hm6>YEq7*-d%i8f zIQ~wA40o*At+~}29m#=mxN}5(v)sDa(0-Uk?O|GgvEWE7ZX9vw9By3~8-@MEUt^N4 zT}hFaU>orcXu0=4&xphAwSS+)kMDgW99w@EM1|AqFSs0m!8XX+&=zJiIB}n26pn=p z2%+N_;DCc*n^`fO$9Iq1kj$g{;N7YG!{&yh?C65&=X+ON(zw<<{)GFMW7}AKnBxBQ zhlB4t_})wz?eN3baCyYxYxu4b9(KN??|pgJz_UrH=xGnM8tq@E(t-mp{?eT!5b{P?X zUUOQS);9|-!Y^F*$}M(2fPG}`&57|w?|@Slz(duoDY10&P<}8ya$ZKHT=XA&CQq9! z50XR7LU4$g5cKrQRPl4M)5~+{J;~>hGZFQKT2U9@dG;iy=Pw5nY_OJA52Bl zKs?AC&q~m*&f{g1w#)E7|*T*yX zW8mX*Zq^kF9MyGyP@v&Dl23*0q2b1ce}bVxXv>qxANK|(2GNeZBpeD+lcgAO`0-z8 zHgYmGpYUWP3&^P<4xZ<`Q)~sCWYK;x1?s3_6W5%bD9tg+V@Rzy|xE%I^ z=`AX~!9=u?vo9I=?-Y*bE465$#_ONjrQ7jzXdc40eYV&DdhMp%81BRUO=2STpYMz| z=6(iB*!ZNaU^!_^xWlZaWKN$0O*Gy}{VFtcVPo4xO}yP2Ba^c+)L~n}Ob4hWwFTBJ zEyg8;-^TDXKlpqyw-|`Z&NfQF2;)mtUrdnIK{c1}5G}MY57FY4GE%>s$-~_8c1$Wn zBSTtGG}?m_>CRtUVvW13p>k=qIXGSmIr&4P*7$qNS97GnX?tRMSU#>cCLarzHs?sG z-?T#(VJmaT2f)4Z`<8Ju2fS>1gKX8N81>%~28>-oMD3mKy z99C9`j)#@i@rpAua4c4Im|0urI}ZV^2fmxYL)-qxh+=xz;!>()SiPM*AdgDEvAT?X z|0DC_NU4l8%ZdF#AGuk*%dn~ReIzsSrK2=vnnF={K3B@2xiR&7UQt$H9QKTmj{R{@ zZg;VV37x~h2w%Yrq5!nYm`rlS$3%7hm>nZRHC;F_;zwR$aDM9D7hoCxbLuJx8#14o?6mPR?6W;BjOf7XR)mtdgPo3Z@jPO*0$7>V<2!!p>?u zzZFM>C;`AgPOq9$k6Xaq%Fai84*V)CntCT^MZn0w^>_RnLZLPkJ7HG73bq= zd~w9R1$^a{P3y4)A134=uq$h`2j#q>8rmMFp6fj&)P1?XqrSi}BZuWp(57W`j9ss?= zRNI#yPu;TWkKd z1nwB^5^mtU)&n(VYQD|` zReP9r;Ft!wvCAXJG6$GTaN;@-tRxkGr!AOjUe?2PPcE*d7pjdk3nuSKgr34J{_& zoI;PR>IqliM5aBoJ{V^X^~7s9)izZNr};N}!sOx%(jN89Fh?pQEKb7dk?0znR7U-g z>3~Rwd7YsXu`)>-Op!U4(rhh@)~=3*teA|4W2{H>mxIY#F@Kty`ogIuLvx!CksySG z(VLfPAyic85E5=l(cl=VTSzFq@fNtNxZJcFU9}g=)5ju>=wqqRrV*f}3t^%=2 zkSC4))S*@kqOR6-_un<4wMb_v1d@B_vR3L&*RrABgc^|41v0|PylXECNAqZT+;GNi zGAvZR_&70{x<_l0p~lbH@5PUn*w_&9HyJFFN2oS8Cx#B}j!&Sy24Yd>bFm#WT&an! zBqf6w4Il`5^OtAf3s_EgL;KKbe?pgxC)a(Rpzx;kYkk3ZT<3g(*;5(?-RTk5ao?%5f>0k6 z4)4s@vbh!JnoQH~^rYf&OH?P}%CS3D|IifU>Bn%K^^J?XPmK4vn#aB13b+TAo#=@^ zyVoNH9=M3ni%NqY5Tz}e2s#8l$6-EI!#wu|Upfku+@a-Uy7g`~O7w|cb4d_yHRYo_ z_~h_=JR&2wLl`H^{ITp_3;=R9Dp+FD=o11iy6xmWYW>hcDB<4AlRqN$Q@#y5;^ssxWe<|%p{g9k^hD|Nv3DIJn6n4 z=tpQb{vvaEbF`9o90ym+7mLSeKpsPD3B@4_Lmtu)sutKzz4s{+;I`R*iwe~s90RR@ z=mqrm{m5eB6J~|?9f#As<4ip{gG#pHgqWrWJi?0@yh)A>f>a`^z{Re(6FXUbOgfbu z6WAC*l~2$n1qL6%c7EDEN|Q6Pa1~Z(JoQe%Ss?fVfj4=`XMLgn&*Wc3U+S=lg{CPA;jp%67Rw?>k`_#* zk77RzW>xc;XKLqEEm$61PTq%rUa;i~rv>q0q-X$@W-978UC?Ou-+7|>^3JI&<3|`y zOr@e}I3tJ^v#ItPrYW@t!z`Es4-vfwh%-yh8{!VGHLc~n)79dz3}CHAodi?EF7+Ht z9~sjbYH^<1IFg`rkyWYs;Q_#3$lbfNX1LhV|4{g9)8(e0d$H__i_yfXugUA?Hzxx zq)JEA8DwM|ePhC@ayFDXT4@g?;=qfGpd_xD4b~2Mxb2MdhCS}cY%PnM4O9iV$vp>Y zX4S&%2OF_hXpwZw9L>qCY9B(Rx_u=EQ#ubu^bgOXHU`7n8Gy@uFIz*Y{WToDkoKHK zM%}yHiP%@8CVL-FzdM~49zfn2cS|$JyS`?(mt|E_{XETz-;fK7A%_=*hP&r!p)#~8 zo?;fAI!8;3$gFQ`T!S+-#O1&Pob$CJX>{6|nsTj#YO8@Dcg+X%McV`OHLqMhmrh)x zmD5EFV6A!XON}i_8Aexm2GyK{<3>UrHp;dokYk;eYouW}9lmpdt~AAJ)WjBWPsQgl zJuZV8e6voApeHL8t#FXaL^@T8{pzyB#`fj{TS#MHGDXHEH7!$!%qk%>&{fhqu6{OqWP z7RF~)wKju4OK(U(W;xJqr{*mHg-=&QtZ*4DxP%v>EQg01PEW5=FcLrY{Fs|g&1(Y! zX?u;9fyM%uL4;@;wM+}6V>OU@wDVpDzPs0%g^ z@x~8_YN6Bdzylj&Zc7iOno146?YwMih{Ul({M0>JnbdVd91g))q*l>;vyy>g`rWG* z3>t%t!eM=Nzzb-PRGF$y-BHKQAEcf-z+C)Ly9rx2K%X&u(I;GC#(}B9B&bKugIe5bs_1D~K2lIvK9*uWH;)UMgX3cV}YI5Kto3@o}Ql)hT3MG4t1 z^pmZamYf6VfgaYKqpg%5acsLO&P9A3vNWAPeHz6{-Q}QJ!yhfsKM!KGh}o1j1V)9; zYHY*dlw2B#)*wwP&(+S%$E!C4kKpAvO&vQzkb>!zD>bQ-#Qg&k6H#urOp_r%t=7sN zI6>|T%^j}JL6+l-&~)%c%Q-v}99&V&1MRs6XWd?To^T_$faPU~b)4m8Rpk|x>ZLwR zqZ-=YuFa&&>t&IVAjJ92YurXhvB;Yh!)dQ9IqfAu^YK%ojPLLuW##52=u!UbmzRRZuq7zJ9`okpIIhld9@B(E)mtUaO^9|Vf0`2s$F&N=r5qWh6e)6$v zC^cWGO*BX2qE{~zqCvMm1hLfo{LQ?34|CjIHE^upG``o=F}JmjlTqOFO%_{Ts9-h#MA&Y zS?x(J1G=tlVN77MRX*;4*~~Gzn^NeJ)nZOnJo1FYNgqod1`G1 zYA69~d+lUr?8ja_}-uz$+f!`yporx}&kVF~ce^2~a$)-3uT2 z+7@LU2EK{}5^YY1qeCqwrK(se##36WGIK+m3+N`CJ9MT0jTE`EE+_L$UO=d#VP<(0 z4}H%Dgl!JCX;J(I@InD0=UE$DS8dpMAxf{;^NG{=P5V4Gt@Ey=@aXlec=a2Km)EYW zG*9`%ucdpUO=aV9;w>qd9-u%aIi3|DY4n=~LEkQj=jXtXW!i@sF_cFcC9%1HQa}f* z17W$q+1L(BMa>EEp>rEATkPdsH9U%vq#~-?pro=adpHV{3JEm9j06)6ZqUYaM=-Er zTb%yAjJOC`Gg=la->=BRX!$jGqnCP4*^W^wgqKQaK#$C$b2hSVeb5w&m#t#f@}%*D zjK)%F+FDrZ&o`PQ8-W$L;8%4!uo=E*{pBc}!x-8xhph3M&m^}M`H(Lz*W7$vY(l{m ziYrH8Qzu<~g))tzWW;&uHQ982`><$Q5jKuU49K6dh{N+>Q~J zP_{9dN?bvb_DzUNV*q6zW}4nWSA#Z+*6ekOVug{;C3`ETxwcW0_cAJmg|H<-sOkzZik3tQ!5Ub? z7SZvmOqDl;_|42J6_n0M&cB|=MU}WycEa^CV5>xNH zRm-3|Z-gPjz152?S(LWP5X2(qc0l4D23F-i!{_^8M>vpc? zsl7wX59im>V225FEt<%|v}HljG~*TMT)wuQc1#soWKe|F5*WIq(mZ*QA9XV*i%)E` z8}a%~+yvW{PWDNbQ8Ycn5>8hXtKrt)f}{=Za2`yYVL`K!TD-QdH`0+DPd(Ydd&6Vj@%Jk^3 zTVbSmh$kHhR5KS~NwR8q^oh|n)PkhD!sxthP&l|Eugt`!sMMVj)`kkt`~F93jZ>==#yVVc`yxdHq|@On%m;SP$79cauT@T znVW;dhi}(%_%U7-j#JkkF(9sVcCPTQE%)Lro_r3FlBI!vIHr@{si@%U)D}y>V`=BR zmL&Rhr{H-X9;{NCJ8pYGI@W&|a z4nS_)R&@uo0zSJ6A`wSOw&YOLJ_I8x=R^xX9e5C7%1L)BK{|11LLxP{JF}@HATpk3 zci@V+Tx#EB3#7g~f$Px^mQIy|^AtnviyHaOunO7X*P`DjQLK%y)KWW&@TusmfIz-) z_d7r~Tj%0+0_YYM>OfWdEN;A?mCwjgFYU8#JMG<|Xo;iwu)3L$|2HOC9Q6KOFp}u) z*jUot5o1X@Df@7oEl1cZ2FC+oNEEJDy$AdLAb_3I6v*@I}tV3w`(x*&u~Kq-^)%6>H2XFje2T&KK83@Z3jcsXdA>%ZTttz#L!h_LFX3h$15c2n2ga-Yi`W2P^amY7 zO^Vr)k#ay+lvDG=2+HDDxTxtQO6{iw86ouL!w4qw_;DQgbr}DyaEn{4f?S+T+J^}l z^xguzcPGCHJ4?~Q(8dQ$kL@vae1(5_9|}#KV6jF)d&o;uR0x&(UQ9hpE!DQNSqtY? zDP;%cfPBnvAS3U0Mur5LR&E55f`eyr;*TfvsJ5J+4EIfJm&uX8dlacTT!wgHEI+-7@eHEQc=QiYL3a4J+?;3AQ-GvMUTFC1&(f1p> zv}T#dR%kO|l@z#v=KHD9YTIsQP8{-V?k0fg0v%F3hUxhZ_l=DkXv@ar_C z{d{uowx`i~6LL{5v;dfA&Qm7b0Ytq+D=|BPI+#je$B6L4#>*O4te4yY`omJ9^Hxiu z(|7o@xlA#)T!g)-Bf!`zX$cqYx z<2p?;!?=ovibBHsEuKb{2UoP31YEh)B73j6{m|<;(ObifVIJE29t3guGw@Pz1tf|g zpnyo~ct%;XgU=|u163e>i?S0!Xjd{cnHK6M`hyysAaSvYU;IG<)?s_aLY!rb%POnq zsLiNqSw$z*Y_O!@7=9G`*S{g5PmCMvF~+udRhyh3gzt{sYFuOJ_a`;G(Om!qvIGe- z{4}_Mb=y(Ee|8bn)=6Bx>Ny3j0TqBZwj=jg^g41V9jh(!@=>(lu~F$MSnx{@D4D~R zblOu0)v@2a;!|2sXxL-Sk7MNr*Cw0x9MuGQ0L;3m^gcZQfnH@iArd*%-;0zT+C$C5 z2yWwdznbp{h3y`L*}yQQ(9wfRO%(r(b8AYQ-O)zJ?*MbfjwJyxph?5?%2df>9axtS zEGFwHDh?vzLhtZ+l)!Rz8>4Mn^GEo0cq|i=8kSppgzac?Bm8(}b~0Hnv4bVSQmfd`0aCF^E3Wltk8!Wm5Rm@}I6z!=4Wa%4Y2fvH{!}&3$xdl?l zq6IIjse$9tsrV8sRC_nFT6?a+X8-C-lkrCE4y4$heVO4oAPENr;eh!@GfISq8rXX{ zmae=lOS~YT9=2hFkhv5mb7u$*vqvH}*`|n*p7;O<6ck(VR@`&11Jcc?alOBdMP=lwKINlm7sud6X1dtGZnAL4G;*SLk7?)|eiL3)|P zy@*2>r%FLE1|PV`Ft({I160i{s(&F>BpLiAuswzBZz^-Mt}G5q_ib1dEqs&t84(5p zz~=^hk%x>{UTWW)ti1r&t(I|g#cvbgjLNm2XnYD%8yjXmhtUgL_dI0wA0ogbee3p{CZ5aUC&!G^AivEf!GxeZZ{3#J# zENnU*_gW&%p5VNQ?aCJ238;0Jdh-nKg9}&2R6FqwB5U}RN{j{@f*Z-d z@ni0THv@L<`kMmDK%BE^QzweDaQl|uWERo+N08ycy)fxhrSwAv=CxE&)q+T@GboF9 z0<-6WU65=Bio=uwjPMr_@CaR~5y8j`X~*GED?b93 z4@7zus&UU#K{6bPQ#2zyNt>?BPM0T}YYLrh`U%Qwt-2~3-WWzUo*6ZTrsi0}A`7P1 zuWwmB0u4y!8Y%*Z@w|t`GM*|Xq2UXh6}!CAEiss$+z>ZPqGAK-cvx^0-TA(7FC;XJ zo_@+E5+uh^_WEDZ$*R$!NU0G-XsMJ^v3=jko#imHlJW3&+bsc-_G#;Sv0PZZq5gjwn^$ z>W!&@B-_wjSgkl9s`EaJy!(i`rjp#RWR+9?Ln*=m{=M{cMTcMd*8WoipKqh#@*GJY z{8LT2cD1tNA?&)isPYq~P2qv0vwIsv?Vo64_;z>;X3XQ!CX33~vUJq>W4JbY?p{lZ z&>zR*HKnD|s##fLXRudJ!WBc6&Y(_@pB4<=d|P|)pnLTL6D+zf_=1;@SPPEppf`TDNTLF_1>Oh0($4nL(%evkNGFS|#>zKlq zeaAR92yK~xVswFi1;z2{ zM$}4BIbQN`KSC$McgIekSOvXE{JQ-cL>>|A;lPiC-T0NBJkNn&BVP#XBGGLrvc@go zmpT07mRmy-I(ry2f1~;WibLRi62fVSj(NEEEhmB#IzL1Xta*nWj{_6_!w!a67!V{N zm==Dk#O%S%z3 zH<2Jqr-ttoqc-%Tn&R2-l(b>x5nOr_f`0NlHTHvNyHGft8*QhKr`^icFr!n+wC8mo z(fT>zh!A2;%9Ir3J)p_48+-}HH9e?+$oaQ&Nw7j$w8v$M_C+h$Vo7wv?YHPd(K5$1 zQNik+Xx!Ck>bNm#6jguE`WB{jq$@T!K9Cw-z`492#)0p(OJqQZD;^8Zq`DuJ+9|mW zRbQ^#Vx#HzKPW8-vH_f-^KpLN=b-PG;Y4XXfsHBDd<+#gf@SXhkxlv#rN_&CL+~=4 ze?&mleB&tY_qlvIH2p|aQ0VMct8rkKvTTR~Rq`W%*A&)ZODaX1j!46cR=_AeC6;O&o~2nrn`mx0&yt+j;Q{;@@ff>1~XD@GOA z$Nq9wCTH~oDkrg=oWD;RO@r^-&=^(=X%|>Z$;#!BqcKuYH|(dJX%a-I#z2)Wu&AD) z>z2su#?#IhuwhQ9(00Z&wn%W2!Aex5TNM96f0)aytP<9B&d^NhDIJ?+G5XrpbOfdX zvkNIUz#*Q70ZxyqTD-;qegh~=!5Vd=JOd+=osFrnc~Bt3nGUnmPN#Oa&%*Hs0IExR<&Xn zrvvuO76;raAsDzA4tg)tB5|%E5iAWup)lIihFNAa^{|ffX?ItU1gRx|iCBLg)jt8G z+?;6ne{6ksU{qE1|1UF>WO_;OnMv=3gx(S$NKGLKq9BPF6a^BRNHGL;T}u?=tT`$z zsO#E*WL6d&=jWdrp{q2N7Ta z^r6*ZP?87XNgDJmE=j+mzydOu}DE@b`B0lzip#V$) z1MKv!Qw<(S=LGu0x7b}01jqe#85VQDOFu!ri0+ESSdJrbYvpF=HS54sTfs0Tsf1>^ zVLS0m!I$?N=%oMh86;2)4F!P;BomQILM9_b-dzvpQ(=kKLJjGt$X?_@dMi9F!Aaih zJlV9#W5|{!YXXx$j-P<1LlB|_DvH3lE8GERP9p&^c4~KmUWD%>pgeKMM$?){Jb5%G zQW2^YZ{_V$}71N1oD{sIJayVL{NgqZVW^k{i1S_6sD|Txz%>f{&G6(x|V`y-S zGlB+U41yM8qfDcp)*vq)UJN472V>O)K+28o#8EK$HQ>qlb&XMoL84|@pPZr89r#1z z>9sf*$~-R+D1$hp_cNbiL*uYbrUxujz+ADN%M2xUPMoGOLd{LQ6BvS~l#1R0WNL!Y zF*gF@5O_=}I8Fr2o+XPYNe$R~-r5zCat*3Z8J1y1D{Nk!6?MHC2^|Q?>{_=FOR>b> zRjypoDBc(hXSj>5;`We$i*7tM-UgoLx+y1;#wGDC>`=ND+_d7|3@C_E@XezZ<%+9N ztXa#JhTaR7gPUW%|OgGbjc#UVDHww{hu8*gSn zK#9e(^o(@@zlZ*21h5?)6VuK9pi9a@Zx$FN;D~7gP=U6I^LZF>sg32f2Kx=u;Qh_EHn z!7M`+|2?}ymZnQ}FP}K5OR{+n2Vz@>Nm)M2uk}>WDfh!rYv0ILOwCgeRzQ+C8Sm;o zaL6dG2Z}o-qY)qLejn!-Zp~4f7+ziY#-2Ba(du0$@GnsNxn)85MQ^U5Rz3<-gT1@h zlor~RYY@jDD4^OpeNIi~e8t4DnPtS_c<0GWRl|f~=oBSSV430o`J>Q`B>O!k1h_yN z)&9c?b+d!@0m0h^lF^M3wIaoexv=kwQgC>VCv$RvK^)-V2g~`|vo(qZYdZfQa9)8w ze*zW*R8VNBkuKqAW}|&1eOah_Bh?v7J_ab$b`zw<=puvI)PpHG%Ftz2H+U0(QLYXv z4IudNYD0k|7@Eb$*D*KQG;uMEq4SD0q5K%qCk;ksL`Bv}_4#%4*ETh23~qwLLlKPS zR9@pZiVZ4iU@~%RJM33F`ic00nRG-2$RrA1R}ub~uSH zn4nk_B8#H^*H|Rl9FIX+ngvFY|*rYsMV_#(X)M<ivFrtm=z-UTV7<=VZF?jSZzG(^>F}=nMwB$y{kBYZm1r zClEI*wT?MJ5l$sB;60%Z93bh6h~Q8kv%X|ywB|E7vG<;*C<>6kNc;KqLDoktkAi9t z&lpP=J?#)$MfgB6J>RZ*Rp6*X5WXIMq`SvOot20_cm_l1`x!`(gigV;qU_H+4oj0j zc8mrAa^>{QOl8*$-KRhm$ySS3q?{)2+BQ!;54~p=H-SAkf+`$Yex0sv_I zoWS;z7?o&>n5#Y~CTVckSIpG}7w~LN^V0SGp+=a-$@zhdEnc4^_uuT?9C*>H8}L`5t=--`U!XaZ>;w33^+5N#R(Y>{O9U8Iu88roNU zJ{aJ@ShvYG57VMY+oseS<_Mkg%pDUl6iG3lZkE@2*Jq9Y5#e zMh7*oH;i<^zClWMeL@iQEsjdDzbl?Xqa}YTh@^kc=dJ`)3eBN}ITgVn>4))a>-lVm zz{`09*umiWY#qt?I2s%|AfO^CIuv_YnW|7wHQdhWhI^+LkYB(H%ZBDsq0+P2zL?6` za}H`-sFp@7^g!@0y|z$;ZH8CIME_vZh-l2Ah6@zO4cXxltdkLK`r!g)SMhwG8;v)6 zk-`Lmyd7>Cmt$Uy#H?$vVFwo}TqNikXjpGBhfm>TN|=`5yEk2^Fusn0`I<&+fD$ZFW6>tVISfY3f zi-bpZ1V@cnhWW1qZG+;QO8pmWLQU|6a@zK&Rl$K1ICLRdP-bU+^V;=#mT3%V+fvQu zUJ-;08J7@B6X08du#0s8Fok!@2s(2s(DI8HMT@1^-C!8SlLL(nOzM@~2y!(t0tBu* znsouqNSfWK=CHAmWmyp17te35d{9z)2Q?t4F8&CrD3sbAl=5mO^nWlig_5Z7k4fx3 z&7g*53i@TWSK;ix-;JZry4yU6Pcc&On0XdH!h92s&M5M}ACb);K;;@izD_KTfEIK# zB-XWTWmDtonK+}zh3WBxh;euglp^IoTAYR^hO~eSHyPlf5*+G(Xf9#7+Ts$T$k46622o$#o46V{2$0jk45{3v|If4FrFjVot*#YfE7Bl4K0--xtrvWuEjBG13 z5mly4PXv|(+>6U;|KoU8_kc-!cnL2WEZBIC-j?K0=yb>x1~3V9;xKfz+KI3cw_YLB z=->D72p$!RQ)r=G-(I00GT%ZRo$kI9R)ikV8_;zhH%z6wuhg`u1tiB3b~V5#|Mf~W z)e?jdtcA%7v(j*>Ow(NI$WI$bT@8rO&>!b$N{+d-^RZKG7R76VE}6DYgVhWUukK?E z)5w;u6jcNa01lOG8Q4~~kn*iPE8RKP{K+T^<7h- zPA*ZJ1q3dL6vn^y7jZc_6NX^c>-B?GFeL1B`39v=BG5*TjP)Fj6GKwGz7pZDrmI2` zb^cX`9Bvh!-h67iilH6AFdv1C<(xAzEhE`#D6%iCoL4=w`aF#vY*f8u_kctn9o(qQ zaPTfK^IqMn0uP3GumLA5;LpH6sRBIc#jBMV19ml5z9Yp06prGS>H+J9oow3qCvy_D zZBj70FWD#V@F;C%CDzW}4xRwVwwvNN8&dgO)kwu5EeAYA@K!%9KHxhJ=RlmY${@yKWKw=ppuppj3+G0==24NFl2V$S)WTvRK&07_F1Q- zZbY&;gy3+GhPHw!@kc}wB5A;G@IW=A+Q~jmIePXQrDCwu$NXk-cy|CjEvD_aqh=3I z_UOT2&J|$$P&c6 zQwvK??9CNLRoAARe84W2@;ACIlBR$k6|k|Kj&4^wLNKbqY-lMGQGMX~L>S8Y(F+bw z*1Z%OWTj2v6W40ONBNzj>4$4IHDrXM{4f2whXJO=utJ&Kc*k`LhlH68%L>N&S6unw zp$xz`u*oENGSwituy7r8@JUuV+yT@g9B$ulm;OiQ!IsNZw*%yd`_K9CwLMxG38Y*R+3G8<~U2HhY2#Aq#vU2(o?@x zI+||51*1h$g&cRN@KqcHEyrn4*47ljMmujb2vXmCVR$07+=I&Gzuu?;6sW++Uc|vl z37F%IWB;Vx(HIvXs|Bo6z+&ZXl^@afgou=>1HmO*bnNU=KEV|K*JG|I-as zKw=U_`%*~D%m6lGqA|Cq&F^yN=kkQ_9Hoob1GgxGfOfn{W62Wg4YBT~pG_g6^Wp&L zNE+}IAcS!@4$7keD0*Y~uekHwv*8T#h^a?qtViqdrZt2isJUw%(X0vHQI?y4d z;}Ak~`AJ{5!ol@`MTvI?+?P$z*3}tDGgtq!rH zZ@_$z-7M7Lvr2h3HT{k4?i>ko(WT)$4mc>`@HKI+gKWq1z|H|wOF9h7(J+G-R2)DS zDp{K+IWy36u>6UEN^7|G%u4dn;O&V~{Oi8r#cbfbUBqYa1gK*|_ zMBvLM`sm@$(xiJCkDB9-UGu8y&abMUuVdLLEo_+2FJr<5UE?Fxf{h9H1_e~m-c^S1 zKnMvUdqk?ib}yqO($qzGw=_hk zuU+i#0pFj_=A8&Nu__P>R7ShsF}O_lZ8!`*E>4{Q7I{*#0HmA0M|B@UP+UmZB@(cn zYgXAWu_PbvVLb($8M)Z$=m8w0fe93$FYb7yc}{-au55}qRQWut$3W2JIOQF=$nO@c zMYIW-4z`*Cf=5${bcW!ewr9*b*#`?#q7yhNRzy4g3Eg*8m)ez3#tLY27yG<1+F-p% zJnUH#g+YnHl7e7-#4JG;365kwPr*@3MEjMN2T)-&&3ZCbB4R|+w6w%KXs6o=Coi;l zP64CGfV(B&MVbm&w4R_PT&f&C$0tM7Puj+jCg@te0yQtZS5d$@MH%r0_xng(Hdqc5 zd!uBbmO~2OyDOM=c>d^1mp@7XkM_jdb4J}c;4Osp~{H7Ac z+BpU*J^Nq8tzZmd{&K*E-shF{vGrbtd8c0Y=* z>PG`7_a^00_eExS<&UAHk)YtVBLjXqqLAS%YUE1F+60MJmO>x+L%jNCt(E|A$GoOh&Fh#;eejl3plq0`=h5*I>C$2S%%HBA zK=_K;e|SC$dg!O*owRxhOMLB|1<)t`sE(d0Aej<-)UFB9B20Acid_SAv-V@ha(nP_ zVHkbb!`idL%GlJ7VpE&bz61h70vfL#y%jvn2$GW1Ug6aHM7kJvdL$aIoPv7R?GqdhI!`j6;gC$x z=sRG+(KNZoBa0n8+K*TV6cGd`pgE6eTtd=YBy%J-zzq?k@Cxrh6?%n&z#%F77EuxK z=D6c=c>7VS?%)D?hC|U0*&*;Wyc4d=Olo^VaYmh>!Tz66E``sYFg#>%JjsI(=E@u! z@}#5@{K;>zh7A7=sh8AmHFRsaIUK(s3DZLSX*@qMlO9e@M{4M&4Od8mfkdHb9fw8d z@y(76k$|6Gg19>J4Af`bk$84JpIeH&nB+*L+GlN%bn&y;(|G2rG)%GhS}+R}ew9Mn zI#M1*w_NYG(y7%$#!z+GZA)A5V5!aEPEnd-U98b_&58k|u@m+)cT zsVf`Tt<%b<;vM9Fx|FAn)!(+qkd^+}{bn^twfMpOPyB%<3o@#BLY>2aE$+$dhEcTb z6+^f^&@La}uH1ppR}40pY=6cs!-M)POQTw@MBE;lg#=-EP(%l=MH=e~*$U9R%0Fhz z!=I3+Q6C-4T1?JOsWE*2fATkR*Y!zGrg1Ov`aJo6BpFS_b0{^k^u#2sb&$G`&xntj~%W| z%b=Yv!#w~3k^H3G`v2rj#7%t%B=a1)Wg$5e9Db3gO0+B~-(*!dn<9SL{vRaLsn`!i z;)Pe$+JpXOJ2gI*z~z;3q~R|n*n28_*NR;pR1O8Xkd#s!k{2uSCD&Z|@Pqs|Kfq&Ou{wCvX^%e+IgMRXC0Sx;OV2 zELJ^v8-6)-egxpIK1AN&g7fK9?Z-H1SaE%UGt_BW|Nn*+N#aH$jU)L%@7u`U;wX=@ z@&(MWD*hXc;Kv1bP#Qo+JcluzPW}yC0Qcctm!9}&_FGVBafd_e`7fiR{8xO<_=_P; z4K^(wEE7U70F82LqL^K2in47856huTx=n=cIoT%ouA$_;_ecD#pk zv^cP5BX=%V5zXi(i<;y`N`vcr2QjkvQPMEsZ-*O)`zt1Z?rwh9;N@R}USwRzng@>o z;?9X9hADK-d)Q#OK;I`(Td4Y;WQ*@T0dEK=;+Fo7p^y`XF{~=_jE+;wRQ(TQ0>8ZX zeZvLv)TqFTK->+QCb&RWZH-u@@&h*#v_|kd*OF32nQ$@GWAxshfq2uefc@<~2Gf(D zFQ$gIC{v}cL1i}SD`)ob7eiO^W!l03eHlkL z4*&+nkHLx|&hh7@6T+{^n4U|61tH0v73+|iX%12xqpp%n64zZwB1~dBnvoMtNF;=4 zaUs!swZ6sd{8T-VgkT=NILi~NCLfjDW8i(pUK7m@522chG#(c$#UNi9ju*;}+0rDR zki%Oc?J<$G)Uz{C?h8viNIs8Na7ltVjph=E8Q~DUs{<%l<@gU|G!7Z}T)%^GH zZxFJ4>|a1gx;}#@ggYEOU>}p&{ zF;}jB5LvYfS%4SML>h1ojpHtz9dwR|^$rMUkT`SPlwBE&FT))Sum)|PRay_%vPgXF zOnNpiut7(0KR9ua+`ocCLXBhT-mjPmj;AFK<9NBhFz|eV2PKJ7ReQZ&mKd+=gjYZ> zd=0&u?*u9|;UeTtxDmV?L*0Q59IsLq;5X=|2*CITS~D)xxrc8Ia_&p!Kz(-NNrWYG zt0xVLkxp0lm%InscGzQuW3f9?`Z_$e8!xq;LX0H-9({!qYHJ)sz&_kO2R6fC&E8#9lln?@V4 zMO%q$y`#)M=6!cTOsKOR=j;6aZ{))E@HlDmX}I|?+Ovuo)n64`*EYdP zq{bJJNM=nUwNi1kWxjlNg1_#og3fo1HtXExOC_%x+Bx$d-XyKmyB!7RQL|pEjyT(S z;NH${&Nw<)pC3j$I%3Rv*d88MQlOQK>gMyyCEo)A#7nhpXyl~JD4>xQ`O%s<@LvjF zg`6KI_Xpm}?NoDwfRGJIrxBFtC zJAEHKI^P3xd*dff~p@TKOw1DQ9bdZOa!6{5_8#16rI>&Vu66?iCpQ zj&#&FetwG4E>qIZStFr{v{K#C{8Uji_{V#3+tLJSZ%z@96><4j6f$P%7q>Yk1>1s6#njT9WdrHdS7gTOO7`PJTxM@DTK*+h`1<#H);` z>i!lB{C17=w{nm`3jd4^+YZs60|ly;d?sVDd?n*TzLbpe`1`BL2+a+9E7S;%ia}kA zWT-qHQd0^yPJ|k<88HbX>2Q^?l-e4SWkvLjD?T9p&Of6kOZO1}!`)-*jwpfvZeG27 z#buyyVJz)*c#Ux)oy_*g{dMsZX|e^Uj_?3i-Qs%FwDS?n+BFtq zr1W)osaHHTd@o~rfrnX*kV(SJq<@lbikX6tFfYxT(rn}|d&wrGGqA~+L|vP#(DSgP zj)IQ5ZZ=9p0s7;!#IOmI>_EP^4SEBWRCzBJYiBr$9ko1SL0+3b#R{)ny3&oUHwm?C zE9^!yx2I$s=wTe4IEIDjwe!&0c>_k$nckEb`mf!HbB(R!b{IiW?IH#F8WB4QosWZW zzUkoI1Qv1uj*PjTJh>R#S@pJYgLeed3}MtQH$uA2%{_^m&%gg@~A)77}a@goX#j} z@Ar+PosrxDv?Nv$2xSpiUi_c19DNTU$k`dCC=e`lEG@x>bjV9Ru1Gmih&O}$;%F4p zZabHrl`od^;tDQ^E(QwG;{U@6(aM8zo(K`m*BafF5MzW6-A+=S7R{ekk{0ix?i2_) zk^79<^itO!F<%w2Mq$RhkAkJ$`*MsXOMqH6V@$-onyqr3b^5rq8s>W}ooVjt>AVMr z*#w$i``<*KaJ;4rv{q_(6aDDD(P%PnYEjfpAqmDQ@={PLMA5+u zk>eKQgVGU8hZ2mb+(=)75qcXam*vD=AJ}9`G~5TCEHn1()RllfULH;>D1ud#^#4tN3T z<8O&iHYItc`wIB_XmVB}O^!51IE&V8XkmOuRC4sI5(mC|+Y@ZGzKu5 z$Wa_GfhJ`bZSoa34Kd@iKEnuY0xYsDGtck(TB#0`{3jk7=|B0P@M}+|v0UB|_o!?Q z2knZ?vCx)GVGJd;Xd? z#!9PjZZT~_xe242-vawQmTQcY*~dYD)|8jq5-~Zg!Fsg#Ftm?cz85G&i+hkwsLi*{ z7&+{S0=guMqb&D^e5T&^U~yWWrMCarM)F@sZ67VY*QoM|wOFr2ZdGIrsSCA7N8 z2>FOMX6D9%m&ek+ua&|ee3D6e=F3Kxyn#|tn%HVb&Cz;%H}yG1aoV zQOYdy7!MlD=wPwp5X>(8gRd$(OSUp=_t|*&_IG?#6JxabtN$VL81N6vbB#S6EMdh2 zqLo#EhV@yZ0>GM_N`;SDMWVBEp%}q)>$9XYpvZLE5grmR01kN1NdJlVOUX4t>Aa%# z^makhsU4x%I}C#q+BCwLk1uikVSn#26CJwI9>zn%W*RNy9vhIMB1pj3%W2MH9K6Rv zFyD%4ce+z(4Q1}qs4p$vMuSbDsMK=NtytqLq9ZpISgB!~G1RVW?AYT-zI!iJ{~hH} zwwYJXz+n<-0EsWDB?1H%g3(X-5fD`uljn^2ngl>BWCM9A=&Buw3jkvuR> zeZ?=LzRG-p-^9_ae-D#+2eHAnM{lNxTCn3Dwf^TKX<&O-I?@SRBQFIMMjW#{ZVW{k zLbcE$uYMk_UIt~R&^9)k8h%I*r@6+u367sSiI<-WMtEt_hJ(DIjpfNi4Aw_M&me1 z{Vwg5DXyP6B@-YH+DC*XG%*(bN#tzI3ZsUlxNMxP6t)cD#cUJY4T5sE7%eJs4u7oxk}X-S{g)NYJT%o@XW^P5FSyen z@6oN5Y)&antLs&}Cu7B`#><+fuh5Fn;QgL|AQ^Yb5m3g-{ccgbIt0s8x-*-4R%)A~ zhybc?Dk`7ChK4yB$MX$hOYi)vQ33*a7Soe84Wo7{SS5G4#^3XNmOt*5T#c$g6%%Q2 zhGxySc1|-QIbb`h=I8U@lD{bOkT6m4CCaLbK0w83q$lcsBKa<&fTdjBY&(dMxt458Czl@!!ZlU8#Ftrlm_M)0r+EyCgqio ztIUfm|8tGu@tFivs_NFSDF;nwK?78We7#lp2p23+Vt};3kBvrCyJzIyIL! z7kF%{vD|87|cQtls^@vAVX zipM~Wil>7SoLvbR6H@xo82{u!VQa!AE__#kgU}eXdcWueW~ZEX*U4`6HxJct&*bSD z52zh1mii*Z{BN7bJhhef{M}eWINX3pl}ULrf1qX2qM6%rrQS%Yu2;{ps=z$GkY7Ah zZ|E4k{S!o2Kz{LHFTUMarEdbDKDtW=D!4a;HFO$yD~%O3Ha3`jYY36w zedH3p8>s&)i+E1PApEY_$UyiI#hjuCjTxlj^oY=jQ}i)CtDP>dL>vp zPLHGG#coK;OH+l(g2l@Kp)!apfSEj-XGYiaBK41s3jlyowCX}dJsPWK3 zIF;UaBY2u~Yf5;K$DLcOm*0VAUQRX7IE8P6n&$CMNtc7a$LHiK^ivxfR6WshAPS_H z-X+E+?xiRZETH@sy&&v*$2~q7&Y2}fF~fxK?YcVOO0HdM_noy5tO3YI6P*C>VrYCE z@`|B#NN2e2TZ~CE&68jtTN_y>V5v*7+f%5}h>VB$y|>ZGIw>{&)m%==muL#(6UKaDd52zwplPMb z?GB;N?n{htKY#=f)ynq6T}|MDxflX>r*fI#f?}Tl0K+C+z0r#mLPr@$1!YKF53V5! zlsP|-6-;D6Ye!p?wz$+Jd=MqOj12@6B!|BQDncrT zlbJY>-=vAaDWX~iz1+eN%c%7-w_Sz;aPZ}bvDy?vkxuqEd?#toc$}h_j-#r}jH2fT z&6C#{5$4&{KuYOX?_~<(0e^xwS|K>CNBs5u`V+y$*h*S&IS{V-@vU@dz8lucekBkVHU4|OCmHf2EIzmxK2`jvK zrCNJveBB^b{EFhRfwKwvJaH6;mytz2cS;FdInJRyeWZitbtOF|y}!Z8H0 zHe*=7E2Lw;j}-YDCEtNo&*V`9rx`~_9``|r3IHQ|P!#Q1s{|mX zcPxFjHh>jQql$G(#n7Dudh~&4XStO6T9z_WC(&~)VPna)9u^0auI75}4F(#Blo>&{ znUNM1du#hQAc^<$_`e^%FO&wWFoQiVs1MTw241~k)g_W>QMd*(eJ?%SYzA_P=BEX0 zLn}E>M40Kz4a#oSwH{RV)%*%zAqu3RoguyyTKp)xE5XK=80XOL*L||g?tq^+svRKE$>0azJ_oOjQH&qnE*+hI;r0S(E#L<4J0V-3TfLJt z%)oYT3QVY$cLt9@vMLM(+Mi_H;xVH1E^|4^as^Te|L2+V*S%LtHJe!|0cuQ7M&`}U zib+9(9A8`JuIe9$YUddB^>f_(qFa{wT_2c(swLM>1`O}-OP5^)6(f&Iu2J+Rx)5O6 zaGN@fz+Wh*(ir$`pZ-KdrO%mu9uE^`a?wgL|95Gtk->7-S;cH)M2h)AEIslP>e^^y z)8Ka$Ud!i-6x$fN!>Ff;r&S!h?>Jr3Bh6K0XVsexCffE6MEdwPrDS2P!O)by2UWLP z*24uPNB{BQxz2wK{}+T5!OID{Zs&r08p3*TyJCd!n2q9JpnkwUWAN8|t%gB}pcuzR zSOO7IN_-M@coSpl%o!9I(D&y&!DWJ`BJ634I-r4W0pH34q@qlJh|g8{7;L$4I(j-E z3OXL3s&0lTShOj*h$PaBy16zX6egb@?L4QaPSFN z!bDOUE&c>7A07ySE7$;}mV*xYgn%G`^cZ~rzY;nG#me8x>ukj|^ClKs%#MQo``_QB zmRhUEm|(AO)B}$(^TXv=p7b%7`L%8!i#EYB#67oa{*0PwOQ%-OnWI38h6~t-Jt@y) zpIS4wwz7JWV(btM09@cReFNU~>u)ip;lh7-%slBQ!Bq>MI;J=jU;rJ;KK`eP!Whh|gR%0!bl>lz;+muX( zPOIjdR{tiEIW8$*z)rP5nCoCr0LpHNhkp2`9p9lIgosV0 zl^qQAx5M5ao{vQVa_o?GOh+x+`W2g1ABP9WwX)eI^8@Ft@`r$ziFXS-E1f3}K4;Bk z)#g`fdk|IZ^(&ckHlkMXcC5lG$FhDoR$sz^`c$Ns>O||X43R9;tX#WDZigVZXQ9D- zbH8SMrO=5Vvs3gYSU=Auxe4-6rqSl2KlZ$S)< zyn~%ee>`+yf+#3;<;Wxsmv(}^DC3f5Br8#L3wucE^11AT^bIdQh34TLRL-h5NpWF` z&Pd)JBQgO-TRMS#B@x$uVd`IVr!tf{t%}gh>;S?W8Gzy-rsak8Nm= z(%^XmgGwdC7jCn9!=ea5v3uD)FK`m}LOSY2od4%cVVKa6$0KuFx=eEQ060=nh4PZ_ z+@~$~6o1dJW9~R5Iv{ISvJT>zlC-dBR$Lox_eICkZC$FvAi8vd0|5dMQ{Tm=Esh5Apue3>--R$3wLyFW&R zAA)v7Y2S9QBCN(Zm$C___&ZLIp)n>k07M#=v$N4jiS}%v&HeWoOSv_C-%G8haac#_ z9pa;ioof6O3s#BY*n35S@K3mqi|v7sH85SoZ56vJ*RO9}b~%@WRXYY6f56WsdJByG zG2}ifa3mu)d35N0rB=xW`>?6mU_|H-SnVwT;djQNzJ!@}j1>Cxw>~qAdm~vu@RysX zor{d&oevD#aym{0(;KILmFmtyEC>ZVsQ&@Q@e#zJ`6iqXsx8p{p|L_&_?5pAaU@CR z`nmNyBq%cva##wsZVJphZ#ym0LgLoq{-n8_k=Vixx%EP~ zM|Qq&ejPt$Z7M*x(e(bG3t&)z2^Uc5({b5>Lhcwx;bWSQ4Cr@^G0T7G17S>1iGarb z3F3C*uNGlUnwbdwyMS&H70mdpToatlEaZn!(&7UvdL1rNKWc@rQJ(Fs~k_8=*s2t$U zUTVHDU3p3JlsFpfgJ)XpV4+djO9M|SE+BNS@evELsKqP-Dc@9#-}->_3!z z^dWuNmA4hh2*C<+=*(d?`_Q$7=S_N1^&5&?nPr`>Z3jY1Y*cbZy6AxJ9P350mSb6Q zO!JSwMyzHQYsx)&)1OuR9*{V}0}ceQ<^YMyenIi0%g|Em08tuP+;OD0xqT+0)3O$MsFinpaEyb8N7lYvNV7 zYst5nqG<~}#OkkAGWqgeMhcIgq1ueSB?pdr(1wyT*XBor&G54u3!YWa&C~j1S3xHCmn}60N5RfvzSxwzp9pz!$owDlmH~N zcP7cQVLpQ)SRxQ5kV2=HINQ1nO|WX!&IAA}IA_u9DESK;U*JhpD|{Wnd^~b+zF1>H zAgu*@3T})bmU;lguIyN0hs-NsS?f{aFf$vu(*h1`bLzpBAbi0(#or|E$|K;Dxgz7r2iNMm>yrYtgWQ9s6z|RKlJdxJ* zE0-9sCrj@k4t!YK5r2IM#IrhG-)YQJWIl2~G?sgzbI?5I4ti@67 z6{uP(U=jl4h8d7o1wxJ)q!XjM{~gV;7TeacvgFpfxpv;cLM`k(wkO>ZG0nF_Vpee*q~YKS?408=qX#N&oY1DOHgE*0=B z2Q*8ThW>%SDWy;2?)rHN6HWR+QHJ=9TuZ}5?w)(D45pU`j7L%EF~vloR^(H{Y!nei zhz~w32Lnpzwqx4<3WiQugWJ1Zym36y$;3fG{2J%M)D=aGeJ&$EP1?Le%b&}SK#9j+ zDBl^OaB_)~oJSI4xa7F@xpEjqQcjHL`6A;iIlj`e7bq>-{InrlI9v$_iZIIDi(z@xuvaGzTFcF0Lz^LyS#o{YbGOjwPbr zK4WOax|U`fq?^A&Mb2RtDG-9LsLvLrCzgkVq8EIuxQFFT6#?cGxU> zpg!YQVlv)5$66>~*G~O3f1+NH92Pu5$iB7!pCk1Kc zy-(Fb>ya8Z*SR1j5F*iAf`%HPd zW}g!K=Ycd%s}gC#2q(u&wOD$tta==CXVf&lOZ2rY5c{^ZZZ zWS=E^*xp&(yio6W4+8IONa^nP4|nQfyh#&9BUj> zcbu7M*;gvq6Z-{EKqM3^ef5j46kx&ND|x?WKQY+K*Gz~a@5OLNz(tHwfWVv8!5J+K ztev4_NN7FY9!{3o@}}l@h$6}Cg*J!2F+LC)QNI5FWl?{2ViG-l5|kGKhsKZg5%kkZ zEFdn{e3L)XGDjUy!)1>vDTP{2Au<9N`=5$Nu04e(9W<_4Bdrc>nMa@IL(Q`!peiYQu9} z^j0w{lHv}|Q6dY@B1;Ty`?nh9_Lzc9di3AgNVewXk~cp(9KIf;%?te&n*eY1{~L$; zOTLA>92fgSgQQr$`wol|7yUn^!1w)Tt}U{D#ijF_)-|uZN~}n3dlVhE?r3`>*QGP=*H<--F&bdh?PjwYLAp`gebZMC1+2;-ct@|AO`M zplZouv&B=(sH~LE@4;fxX3F=l_wcv*JZA#^R2^-ho4<#^#hvX-9Kd3~hu?=^T|kw0 z+bhWZ1GX@J47o8quJdWDhxXoWGt-dLDV|6Ops}ohTPo{)ml;*Dn6ic!~UY9-aEDZGyXKRr94QmT#KdBt?VqfafRZ z^!Qs@7CMO@`blk&gCBWE(B#8b>6N5KZ`mCOz#}H#Y?ZnqiZn|p5tZh~#(9TvVKlYv zjj&0SoNtr2>o{p|%M5Ik>RTeL?zK&goD;Z78sKb4jXxUao?RObEp+?>R0@A<2^b`3 zHH`W$ObVm$UlnDi{0e!9pL@Khc9J?H7Yk)W(M8zh|KX}%}^0cpH8+KcJ;XVma}VvyXwtJZ3zV`tP(Ke53Knu~MB z+>vZbkhUtQj!^B(?Xp{`du&)1zJAAc6N*4!$8JY`Yxfo_GO|2@M+#3Sg@c3dERxKS&>PVOg z^_9wLXF}FQ@*W5Cn-Fdi`Z%&5N4V79sT&cB^SxwK%;Af)Z z`_e?{9R7RySlSzzY4Z;}D>pj61{bma2|{Y?$_()oqxBsY)8+i-H5W%AMYqrGqJu9c zS*XZrQhR&~4HdgHsKu%lLknzhlJ~daZhH3i0vYAu#qqJ^o@$PwGgh^N9-B#I*okUW zCNhMSsm89BplxAJBGRxp z!V&MgZdvmN!N&1&huu`o9Y0|=&EUU7mfXb7-cSeCJJb?4E{Q@-#RXy3&N#5yhUMNc zsZzFn{n{0mY*?=|1msA)-{qsX9i}MhMJd&#MrKir)8v%viB!2aGlnKRO?mv4j;Y|h z`~I9@rGXo;Ze32b%$09p?7dEHAH>m`Z|!2|;f;_=P};yMqzu}NGdz|#E3Q>A(JgjGA?1FgNkpc|+LCV*%~ZT6!yM@T zj+u!$)HgdSl8!{0loULV>e@33$q}WP4Hz-7>p=^$x0T0PXhD?Ll~E`>+k37!_kbjmngF}TX-k#;%oj%i2jM@&l^O7`CR9s<5`XK0TNv7!#79(*E3 zV_@C!DfDTKDMstS{u`Xg)ev7`ql{R!Z|ZiSmD-8s6uKhTBwKlZloLv0k=H`^#429y zIuZk{=jB+FWxdL0!C&V}r)__MHn8dsDBc+#r!9St7wV_gY@=T*lFZzx=C7g)>6SQ+ zS;m=W3d!7_jBo5Uc_=YnlR?Ee7Xr8Sl6ch%-+O4k;X!kXV_4EpGC$!9R0Wn zwW@?u+|;79?g|cO$GxFg2np|L4E1Ot>`>gVdSn0P9FJu1SH0Z4JZ$~%k3U|(fX@0K__Z8JE+taDbZTEQ+l z{33J*bt9R6o2(jbv|w?2eGwU)08cV@%xzk?4#zOm3)|OQk&EvxXp;l)In0!jqK4m- zV@7)Ezn0dFh{?IK|Pn|zHTABsz*k}FMaDlSmG zWBW!kys-s}0HARK-@Myoh87(`2MSC!p_Pf$aSwFNi>J6#XwGF0p_PG&KFEj@`EY?1 zn!@;NAvj)3C3AAkR9mPimOS^}>);gKTbyKZ%vrI#X}yB7@c5ZK!pBj~Td^K;6q(}W zJ2li82gCNm7&v`a6{&60^H)pE9bIXt3h`gFuKkIz1l>A?elF4o{IRe&YFmzyxnqj8 z9d;jVirQ!G(UfvJMItuv&Bk?*#oj-Lx@gZBi-(>mR@)bW9Fuqio)XhY{tL+!NrN+E zlPM`IkrTgd(oA!zdnGoX9xpMuP|U@Vg%C+R?Ry9!E~!+J(usO&46GewAM0A+^ic7( ztZ*8*B~c~_x=;~S+ypIQU#X_^ry|!sE6Ma;sW#V>$oFGd9_`40P)Hu3@dFgk_TRO}m92E>oheBLvG{a#?DU&JZfdbCC-&Wt9~{sNW`vwNYY? z8{wW)2~Y0%0>W`)a3WU1QhdBzb+KoKISWaPP1&-{^Qb2^e01lR(B4+8o7c2v!wQwF z1pVA!6%|h>(;)Wm8L3FVax-{*_hF=}zu1o*s1=aHqm2tQ!B!qga8Ujz^_9vgkqMno z<)qkFHeS-SQWH8ukGVA4xWtl-;&0ls9dXe7S|Z$OWFD=lW;Nuw(UD4HM=K$Ybf;^M^#+U?R za39UjqK2Lrm%V;{vlf|)22LzaFQ(L}7^kgrZq51C8k&WKd1=%Y3hM2uG7Lvrrgz3}+Rr+*V0sVM7!_hebg(sL& z$|$5i-b?$YxXh6mOOaBvY5lyWmS#;LBLn?ssqxe>LG`p_g0j!HABf7OLzON^=R~#i zAs+!g(RD^UO`d4VoLPqYsfzr-n&N1% z!j#LMs(1y!&d#iC7uN>2*flo+&+2&ceGe!6lDlK2&=H;;8UdNpYe!m*XDT(R*BOUR zS*b)u@xzfxGOS@dL#+(i>*qDsk*n)d^D~~WAtIMk<@a1bR4~KZG;YTxNeGrSgtbV zbGt)N#Afo5=9zq|ST_{eA?f=#PaKjwu#aL!(aATn!*tgo?oECt3J^k9cmiG1<`riL zKX{ifk4{ckd;QFGQwe{e(gMlYSDE0Vi_g;#h_Q6I08Fd)5sRI6ou{ll&LRwwsx^LQ6#_~;BZ-D@J^ zz=3W7jUPRbAKE!nEv{_9?!3qh$Gql^Q-k;eGVBTTl1qDLYMVVL8wKXFkfQb7nc8N$ zJSwttmO>5=?@C9KyNB`5;#o>qqU0qE-;Ew*vcJ~irUz%Km-;6~71P(VOfDhrTskq+ zo=nNJ)jWB=!&m!~ZBbS!POJvKKOEdqIQ!SD^Te|1IG8blj?Y%>IyBofSynG36nyjd zY1oi+)QH7+aqmu!p!U)zD;=DpUZ`{C0+(85x5ISxggI+azOS-c<0BOmQehoUMROGa z4ZfeAK;9yVnU!<3oj2E1CoB0JEInJbHjG(F2ko9f?t9Zrw6t2yY}?-OoPev6SLnai zQks0oDX<>c#Aum-DFIi7=e&89Q>&KNR?VAPGfje#o6or|Q%YCGBO4((+>#VSeWw$xbk#ga({SSety-XnF646Ha^6^2OAjnig9m(w6Y)zdan@?&C)3o8 z#^bT&{??gcRJ_m>%H8d;0`3v%)4WhkV`(3B9QSt_QVoxpbuyKvm~@4r|5M142_Htg zDD(m~QGLmo@zkAyY=KvHxWw*l84K)htM>Euc?H-X#zc=TV`)p{`pXrG`8r@`*B&w< z)5ryig*z81CAV%xo{yRrDYox<1*yzR4y8??t}Af(_=81Cz*U|~MFp>yqMS}C>!8KX zV>F%@?QnB_8isrT$uSlvT3XE%{Iv8!MQv+b0C#(SXPstv&{x~9gviEDQ8q8@%GB!@CCR^kgD$2h9JI2{=| zqA)S`f{4J%LQ9P^<++vum07ob?S^IA_j+!$2rap7a?DvHoii6JGq__-7BI2sFppiU zf1`D>F9|Z@47e)Nv|H%ur5gE;u!5C6WkPD!rPAHb2GcC=W97G5DE89n47DL6U;uxH zEQCzW$kr zI_pE7Q3i#lG%mX`zzjU)(9+vdQ(Uz9Qe|*^-p3~Fx>PA<{VM@rbghd)A&pDbXDZ8_ zD8t%>=xKZlFcX589>7`kTboP@J;|Xpbva4&M3bTr;6Fw5pC+{;C6~n%)9B@jg7=#X zL{CnMTE1c>H1laqmu$Ffm=VKhf6aU-IIk~PUmjR)n#UjA?@CXlwrlNC^n9GnZm+ta zcIG@eT!!DaU1pli&xjuM&1LGdjX$Mn9_ZA|HI_w5QJrPsr~$Dh#~G@qXnPA=j+d)% z4b6rp<4C;~6-ZZK)r_RgoG}vZ_P^~$ii5XIu;h!AOmwUnC53T&$A;)MYWq`qs6#K> z%G|4v8n1yz>B<$V&9)V$Wx}4TY5x~#m6Ush>R#o51rXl%i5^;hg(9EI2cSlFe+y$g zyfGz?p1wk{$Dz03Rb(Gx=ap)5Jy)7g#2y4a-jYw7fL-u~?_vnL?ki0Re9^rtC6gNN zaX3&oQ#ImQXJ>T*U&1{0ws_-$G{!(-u(1Lx@NWN`_KY+mW^{Y z%Rx*u*HPxt7To?oj?5~6*G#IYhhJ)9v)VHq-&)h@>SjeiYfi%Z)O)?tO;0te4Fny0 z9PPN*>K3^YgLr*riJD7`Cc<^UaidRUs6?u<%P=Bi z=?XZSn^s<`Mc|-|A$=K|Tg!Dq@O9k^u;BaAis)nb#_Th}zm& zG-<6`0Tj0oA0&gD`4SRR#ri{l;- z-(?mq=J_DDfM!pH+EuYZDTDhq#=ywPad@cp@(g%mHYg6UCf|qnlj4MEs_J)(n{%f- zBD3>NuaizqM@7oit2Bqu2$ZvkAEDd0a2Blc#Q6tdZVp`Mv5@~Nr3?LEDMv7{=5e0M zv}YhEoF;D6WZs8}I_I*$mf(`?+-RE1({OyF(uqqyVPZWDW3KkX+;D6C{F-@HYU>Ku z-*L5C5a3yWJ454i9jN;-Wb3v^Bf{vHtJTK_HUVmzut~$;MziB1g`WR3#}2}1Y23u% zeUMrGdL}BJp4_CUP)wfHxo{8;Zc@V6wOK2bQoJq^JXfK6;?H|~pUV46uX)!-h_nHs5$nBUe_^Zq`cdHs` z+biC&)TvzvvgMwhXroi!czC(DDh;>s0N72#A0b$N-KxBo9m`^~{1snd60cFsG+d*M zfR;{(y}oM{n;L?CNL?i^T|x7;nk3NZg=gSlICBy{)!SN?I^H;BVolORFSM#T+JAfg zh|X==cxhG^b7VxYXL$|-Yn z3DR=|Y@fj;K9_^nd96CSh56n0Bg}yI?Mi-}8I_NH^idd&V;}O`Q1DZ23}AHd*;l3e zICn)55fAw!B$5VTq2JMl7?>s3nj(cMj;6!^${(#spPp+K4&QNojua(~q{QpgbX1JU z%B02Dsp$~owW0y;i9-`oZPaz0VkuIq2il;I4*V`jPWz$9{e_6rf_99fkN-|W>8$J= zN&1XmIxYpu)3Q1tjJh|*`)J^AD!i%j#Yp%9o8fY8e%C8;0R6u}JLnEWg|v^aSHN{3 z$%_mDNnG~W5JL7>;6ZY}5{-LC=O%alHq1s1$)NPgX>(^*FRht3t!kdyh9ODd(asyR z)h$g)rGa14pw~2{x^RA6&127Xh>++?b;XeX25o@wG^vU(Z{DDI)2R<~=LS-;;Ijbe zb2@+UIBiR%1h}^68IIzar@=n}Prm=RN{K)GTT>I0#n2Opn&WiWXyi`Aoy9kbs@~a% z@R06?@K73P1ju^cOW7h?hb}=#PV?Q_PIvv~D_WQZ1Vo+hCdH^PzsWS68-g!pB7Jj{ zDP88Nf_y#kB~*2@rU^u6R#NXBp?3Pi%^HrKLp^_v1c1a2n)hy2(=c?88#VTBQDpC% zh#14Jn_Xe_)ZTm@wGa6fWqsOiF^NrB(Pqo0S8q`>>plp-Tf?qox3j77DwX$IO$mUb za@zZ-&q_rr6U9Y;^lt2(mUeAVuSGmd-+Sdcs<_CC@K%P!Y{UR5Yb8b~@wdN8;!R>q!Zqy%dRl5^mClHa30h%qj zO|8kmgJFrCN!ci`ew&&kU>R^&eV3X@uUsFk;?>{)y&yNmp0QNa3^ktq4N2*gy+bkW zp|D6K(rC7&()Fl}#C<%x9(5D?l4Ak8;2BwrOxnI5j-tj(FJ<*ZwSux zwOm&3R2D$ni!OxAz2eNI+sbn!#H#jP1kZSjb5X#oL-iB(qy%j>bSMe5zeB01aQZ-G zUka~V@{94Pg>$CNqV4yqcN zAP`XF3b3Z>em zIL(8(m6#Uq9i~FQ=#2&(bjuxTdAFA#p0l9{(7~BduP7xa?l4W@$JY4MavT7&E7z`V z+@$7y&1pm#w{|L0sr@+#X57V|Fgnz!t?9F_k@Qoi+7kT?v~*1h(_NlDRRGd^zX0<4 zfGbrLI8ToiXJAL$0E*?trrA`&MD?LT(v+!vd0DjNPK{?Lz>qkz-J401Bhs`~jjSw9 zr;x_%(e%xoO6G>#rQTh03+hwU{vG98+wM{{-x_Kkjgr>tLIA41(+MWB-mP9txm)4G z12?Ca(nGU7qH2kmTjE6Q-�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 z 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�C;;vxKS45vS;HG z@N7OiBRNNjBQ31qtmKrt{$m?Pv(M^Jq76g$%GjX5;@L$L3j34?HA9@9^uWP%{H%OL z-79c1?^ctv1<5XY`&xmtnb9qoRBjCjODFc2{ps;;Sppy|0eYB$G5e`ozk5cyl4y}5 z&Saf+#R}lE_1*DKP%w>I29fjH=5$|bToKB+@$pMhZU@9sJAH|vYJc?TNnebn|7m2M zxjzXEq2?#OrT&xDnMz{Og4wHG(x|Mq2qV0(oTxABNhEdfodY$dK7B_y8?#Yo~)IuH#&9g@t3SFGh zzse@!j)!YjxVpU*H>2x+l{EqQ7rK7;g+$XU#!nK_F+ttWMBn@>Q`B{-e`13PN~IaU z>6^1X8n^T_N;=*6o6I^Yi+w*a`Rkj6k;w>+e)bCi_M%U+1ctobKSNKq^miF~E_gME zA!sxv2O9;u9<3qVIt#3Z%u-kuZ1zhxS^70PI=989(%2K$KAd{C6PMKDKVM>( zr&(NeQ30v<#0{nQdSzE}IpbWf>^I1!CeXll!Wa@!`FtiY$o~V0_PV1cC)MsT@fiyt z#86_AYxZZTB()C<;D=xzS-y>L-W%?>{fv`;+VhO#SKT`mtH~$)6+qY2*N>C_SM1`0&6; z+BS5cMtlOo4sKfT6t2%+%8><$@o;UtA-6q@@&-D&g3s1g&8r}J*?m)}ucA4Ifk$GT zB2+ifIYs*$c6c``Nd}fjOB5Tv3RdY4_>9=*&7NI2bArAjbC1X8(N-)q}^o5^O@ZC!^!QpY# zJ`f%L&Cj4cs&z}JQ%MtkxH`n2n-DB8+U+loptXh?-j7l#BS7Ya>E}Cl0WVz^;N&TF zS$)#6qz3XILu*l=--D(7RKURWgOlh&euk=ufmBj{`Kp>=c+{Cq(KhZp3-vF*})~)^QO1YL>X# zWtO>v<_m&he4IMPsUA%d)B3A&l#h(y4sjBF_zkz#pE`nPZSY7MWRpMW9e_isF;o-f z`vNWV4K|rs_bFY0`3;+s2e$l{Bp3Z|lb3{>OeSp|?6T5$yOaBZP0bN-Xt2v;RbLN! z@hWGK+vIKDH${WqgF0v=9s1N}vCIIkRj)`Q0&|Tmkxt*2Ag?@GgtJu(T)MV6oN|jD zOg8z z?!;&2JOW{?vG@BX*uh!W8sqw-;A#oAqU&KVIrZX!yvut21BY|Je%VmOPWD91WD9FaT^Kw#esHu zKFGDtkS&D*JlTTv&%Kx#aQVSb&g)7Z4?(g2NmQd|43STCrlvs7V3Ch6IXa@E z`}L~ICisn`ln_~0km3w#@C(SJ+e3tpi=s5L=vSc~GyYVdnLgKl4^B^ zni8Q-;fJnHhc(9-l#ue~#Tk3IaV?J1_Mun^_lN3&0)y+@obfdNW1ux8sxz|73SzYTzwQwm$r`kM>tu15vxFmFn3K~=LlqRaNY&T4@_QzOThn>MZ3@gvTqrh4Z0Z63_~i?i&UijVFyo8#ab)0 z_y%RF4bS>myr5Dhsc9fP^ORY0^!v#Lgf1ooLS7AR!{_jKF_E&;awDC5eXRU7Vlb^b znQF0J4AH9928p3mlmpJeGnxUvN6R1f{0{YS zbpzDLi(kO!?R`0rk0CB7mJQO-%DTZ{&E3Fv@i&a0pXQ|RVt6^h+u&k+aKk-TDB^yv z1kmbOSvc8G0#IH2U?3DzVx7{eoJT&7B%^;Z00wcVd(%u8qJ}n4NKK*4I2k_fR5QYF zX`CLUQJv7#At7%N?Y7bGI0+66L4%Ypy2s;fhQL_qmlhyIrY75MrTsPAvQHvvjdwW( zt}?OS`R;Jq=91xGUFSEPGJnkA?4aOczy(?h!Rw51%b95q<8C zxARIqck?LM9+^U$r+_$E6fgf+b2&-`0K^7bFD{zgCtNa5O`>go`PtPO^QO-&ngca} z3Hth~Yk=2D{%)WnlmtnHpy-bq*F6ae&4K@?Hj!LQYJMr)L0b~!fpQn3+jZ>5RH4=Y z+NhBl@-raFn3f$HT3`JOuW}eS=F<6lQqA_+g_GvZoM`Cs@MWUxX$bBdyelML-@`Ri z;SSY&KP05TNR)R0l#kKTxk*m0I<~z8jDqHU)G)ygvju2NYY$g4!1?~b?gH!;i9bp#ck)eixd)tut=XZYMut(?lIcjb)#$JTepWm&KPhccc$+4Esf z8SX8pI8h$l<$y;;BL|3BshM!vxghenDlMUPDox?EPD6#hjZ>OJ(~%18PNmScp}+Ti zUH1*v`Tf)D6~gn}_h($6>vLW25ri_w?@@NEl7Pe9y~l1bFU8KpB)+8OzH1CNq3ew6nIFm{9Ys(+vR4qrWFn48&cJ%4MWR|{^{oHA*iU} zY$O<>CNzkC#jhx%(|olefO$8NfFsgm>a-_t(#AB|x5XdfR*Ps4&59rxWmG3QIhZwf zSw_;$-vscWg7m2hd{0l8@nQd+igde>DD!DemoJ=C)8%VB(`Cx?en^V5u}BIG)q3ts z-5!uGcp@7iyuB?$mc4Z%&}@ajVjeCmj+b@k15kR!aHxb?`^o3J`q^hGuLUV#1d=~2 z;dJq8Bd@jQe)bIIUqA?mquM?|N{q4ee6C7>wk$%e@h_fuXjQ7dFx6$Edd_Pd8whwd zh|by*R+g=;DqN-@nACKE<*4jgc7aL`rp_T5iByRHSH8Wm&5%S}vSg%N`zD}o_O#1E zN3-n0woj&BqXaVjDdbMB-<{g^WZ~1V9KS!8~p-wngJfK>6Fmxvd%M5i7wvSXEx_x1IKVccd34{-DQ2t_R&zHcJGz^g)2nlAi z@WwkdAbRHzJHzC%_M&LpwF0sjQw>lpDIO}%0_+G+{^6na#T>u-DZu1%A=^}^T|cX`R1F>+n%g#_X5=1jXXIS@a65PP`K|)F zS{?m4TwYfS?8==WbASoR|Ga7Wvi3AF-gv4TAz#jO-?SdMlH()n!ba~$IR-081Jip7 z@Ai@Q0sJ~S3Nt8;PwbuttLXq7s>27jLrAa$>>LhRD&_8(L^%skx!e^UujOqV-z;vR z`u3gE^OX*gw?iN&VNX$}gELaMf(w4=MrfS0Jsb{Elu@!JP>EsYg&$c*%fxsZ;-hJ# z`acTt6J7)k#*y>pn-PwaM)jc9<_>279EfIv>a%EoQ*U>R>FyO3t=?L2M~#0#Fs@jv zRa4+uT)I+XOx0C0sA!#Uymx0xIBh(eZYHBev_%h$u@~@rkEfjHf^uM55Gy-FVJR=q zm4{|ikKMUy2L1v(HP7bCG;|(@qteCid^o=Q+^0+QdNL3tVnckXEZHIvEs=_1oQdk8 z+-e05wQVY@T6>$Lc`zYc7vlXr(w{Dk42Ff?Si7VEY2;Z3xsnaP1aLI2=@*BrqS4P_ z$%JP{er093+7E-sST=3`zOR|80b3^phLLN5BdFdzP*T7Wq$Q|E=e_}`*0HoS6lKOsMq6{I zWfHwMUdE*E8zgG(YDmTe=c_r?F{sO71vzO~MJnfL)-Zh$b%lXW+>$R()Ru3bsVo5y za9~*)f(m$U6C%Nai5UjUeI%L#7$mkpCchgyuEYrT!GQ@yc=dnSHLB&m zP}IzQ97n{VOmTf-P~62S5+=((fh}(KR2ej%&L~Loc_4Ou{Zt9;Ir|lUS_0TKPfe9| z&&NZ{BS4%rU4+TN`KdD7J_n%ctSP|jY*>%uu0@*=1qg{&z?Oky?GH>S?l*czX2nX+ zlF}Jh3QhDDna8a|S7}vgrIxpG!q;>bg_PZkp`qSYAZu|)|Cs#xG1m+DWmu1r8q|NM z$r9^PCgsHqgXXw#|ihu25<0nt>GUmeVBLZJ*CErI37boQ3Mn&$FVx z&@{tOt73cp#9^Pk6*aUmMKS@(aC;wtM&RZm`JlQY`v7H~Hr|uopRy0T5F?8Cb?dWk zN~|y0szpdvD^^^t{wGWBHG_Hfk}qEkStObj$1cpU+eLAZnejfaqHWNY3fkSxGbKr} zM}Y%S@?Y>wPt26<#K)>_t4aG}Nb(J$S+it~+hfrlMt{Kk7pZM~39^fpSyBe!_ExSh zsJCrhE`UQ-B30IGd!h24)w5+^f~hf*HcbN7Nfy+aEyjE@U7N~D5;Vg28et>%vP7W1 zZjdyyxfN>1?rMaLujk0YlCdl2IY>hGG-&j?t3e=SBhG0_mJUjFJ*IWor_zP&BVGRf7$ww7Ug+X}r zJf|OhJ5QGJ@od1yo01ZY6n(W?R#7giZRS`f&AD1u8te#A3%y!Bxgl}i17hvIS{5c# zSxX-E4Is@7!lMV6HT$1|Hq$hSLO@$kUbSYkqKF!Z{&~ZZST3tF+&fnnY}ANp==*1& zl7g;i$!&0xRhT5abjMQcrM`pcf%!6)jK6H?6RD>o^X)PG8zuFPcc#=gjE}Fch~g7u z%>!YB>Fx#c?y!$i^-SMhAep7z4+T#U=>zDu1+v~NP8gwJ?_;#lh=uYyo8L@J|C?!7 zPfKM>QGz7NO6pz`nWm#N8L2utv>=$z1_)O&0Gb<1zzhH`U^M$Fb*d{eh1L_kDYR{o zdes<8ISFC$^wuH?kBtulw8s_!T`|!5jVYGc&rs}n#qvAsIGB44%AYZZ5Z+&YD_yFH z`DA}PHJ!Td0Nk##ScU+W1Bu?oApB~Hn)IKrU_ll-{Agi`yl+i6P|>z5LmKTbk#B2t z7yuUBXADxFoc)btD!WVUjM9clI8w}UAjQo0$kZs-fYh{FFJ1)LB5 zc{%9TqZUh4Z(bh)``w-K7OGe*3yS6NYo{gP=u3=3)Ltw%mYTbQQSz&YEZsg2NNScP z@`%mZC}_b(5Jj8)knEqaMAmKliL^oV;1W5TSVg=;{TGzWSj{M!l9#H1Z5+5MS+!W0 zx!Xfb@E0^lNgEAm8??c_OQnwMsYPj^`fZ>p&MlQEWllR&@M6Bk;-EVJW|9pY)jY94=KW2TEn9WTwFZ1o$-kl?*hK*NW#D;?>xLBLNljEx6S_ zu}mJmc_?}VU;zdj1t%hZ*R{+pjm|=9dXt7|Q)36mW>;cF_+WLq)HH z{bIYp%(+mF$uOF-mxO>*lHufQI=7js7s6GtWN?74SCJ=nZg`M)6pnWQ>Ep?GuNc(Y ze?)ygcR6lcJD{5PLo&5m|fU_EVro>;xxyj^#&K$S7&_Dp5O8%;_Ujf=KL`Zv6ms;)v2F2+_1cQ3Ac@7~I0Qof4u(<2q?(6kQA3RHlaQSeG2& zy79O?>3rGG@Ij}*1$D9%3l6nLYI zJtSyjX!4B`-!*qPP953f(;bjvRS>9iOUssDTO}W=@Tk2N2)5Ss@(elm0+7;H4Y*Lp zhBUc@!t?!VUkwigMd2uVYP~ePJk73X`eMDB=NK@9;M2gqPNHS<&L;ULnBF9j{$?pY<$M-9i28j7C!~^_Wtcky!$9SXPC+|vj*K89Ut5xK zi~8p+P#8cEcsuQdx+cJo8d9KXnI&Zbh&1Dh52(f?&Ks{DrZQx))YyCD!x?;=F zSUG;1S}q>M?Kuea2e861FGWaSx}Z=}I99kUMOjWJ4%zAc+hwL>{E^yScA;wi@$C{q zHJAa6-?m1ZdlnW`=iQ$HeK6q;nNk)Wt-eDAdn76bCc*TK`j2c3rp>pG3Qq#Varq7o z=Q#01@&YO?0~`Zr^PLiPP_BY@(E-S&oOxWwd2cUKC*m$O^;W9L?$4sKb(T@-1uK=YM@ zrB=?GuS*3lEzE3EZfregxX)HOLF<;8M$@fZ)kyvpI&Do`?L(9W&E~4LMbO6z+a}Z2 z{gEHb?*p5M@|eCCj?H{D?>5;G@F&C7X*PP!(=!sZ+CFPYLZsD6_a2OQ(y1b;T0sUL zN7X*?33p9Ij?+@FVj>dZ?bfgz7Mvw}p&*|9v5CP_YbFJ#ZRN|GLV}dAi23M!qaCt% zxqOK&TlPYV_W!ThDf~|uu54Q;D2V)iaN<6nyuic zUw$AWzy_t5l`F5*_-(GU=O_amyEb+N#oQwoS~yezpLZsGn1dCuuH<~AD+XCnG-g_K z0PVd;_D!?G^{F_fi!t*m;|Hj^Dw7Uo`^Qpfy{wJctHE2z-WaEuA+>D_OCYcMk3JIu zMo{K;kv$HfldrfSXWlD201Cfq6RPE-z5zYkv*UzuFwECLd3g0+32v=95wYZ+oCX=H zZ{irVCU=!bgOh0GPI*Q9lPPGS+#C&^`GW?XgZYzo#4u!xw5@Xv|Lx;Tqc6`|Wd-HRU-0%tX^Q z5rI8()p*b~xqkm`Tp{OPuKQ}}-~IG}nh+y>fRsO#KV{-AQ>XL|#^^(0Y1=MY$k~~p zv-OJIfJ{QKUPa1o^&_VCQm-qn0Y`qrZi#L1)dL0m3Di6H@0NG#C)i36nn@_!b=yO-Qg&R58%P@-QsZE| za~M7N4Gcxzc}OnZ!0TmDR~uNv`aLQdauVghuZa%aZZ*@)J!p{K5&0%49#nl$A+mfm)3L;xR5Iz=ieQk0F(C}$ozlYsP@w*Qq4b6vflrW zMMvom%ha@Sl47H;)L*^y zm|Ey8ie(*v3|juUJT;5==T64jI@glHg{-{o=(acQ4S~?X;Y2_B`f(KpS3vEf!BpP! zNTL<6z@;j`m^=zd@xFh`r||&=07)d!UC=&1_fJ`qqZ|mS}4Jvx_oecS)Y{bfY(j#mk=bFx+z)%$zC1|B;ST7 z)Jvq&JyIRlE@ z>ix1Anexon>;3!Xb6fUHT>y8^M9QuMPJ7C_V1ECi$q>{)yWLF12P9DO8fdYi0r}E% z7K3TFd*Y0|@%i#K9m{;j{eM)FFMnkj&~xoAX;LdzIn-|In@We9dPKYhq*3Z%M z4!FlVQYmW)Y+q}u;GHw3Sq)ZyCIBnD($^P`R#0Z$&@8vS?g^2Dsij#4uf17tB%QYa zKf#5_%zvrXBW%#$pcuI9Uut#^m4IBZc8>*w@+&J`U#iZBn*C@0Qq$>exCy?z1%;%S z%>p6fhFz}%$&zPemSaN_qluo8L=cYds#DGJXJiAQ@*GT~!%&pFQI90AVo?SkBd9LM zQtnSFfx5{{Rd9;uS^FSmxr~WPO{{OS8JQ<_>{(eUY!U$nIU~p^K>3pnKIH{|)(g?m1ZrFo!DOFMi%Wp7&TbH9ltT zr|U@|VM7p1g&R_}n-?rBK~;Z21|3ZVMhteX#mX(&3^&>bUJ&#FKo*kd10i2ky1cw{ zy;djfdO<4axacR*`O8MA>it`G7(-uLLJeAad?>+xpz+#XRc(U398kf(Ahg- z$JL5gBqe2hU(+(Eqw&sB01#_dhrk)`6FuVvWw0M!RGDU>WryU%OVKtT6j>@q6 z88q-FUkczYmE9s`gw|DwAp5%k4{v$OWuQIRi(Ji)6Ts@bz39lSnup5-S`4E zrX1b~xyY8^{B-|&6KAHwwpJO9&Yb8`3I(=D{$8>1$hkE&mSV=mYn?->U%Z17YtzfV zHU*iYsGvyj^1P}-u@ogb*UwI;ZbhjSf~oPQv{X8t?=({2|Ec%4m>7_E?g_RSW_VU> zjV}>0nvA%#<^R-nl?ns9@PF!*#e(CXJuj_4jem{LPH$O2F5Ul{Hs;t{Ew6DkfmmcU zdlqgk=Sq+eMZYc^v?e7Xj#_>O_I&Q^682gLm?O#kK871Pftj{_BOxkp7WM^0ZwucG zv1-d~BKb^4-M^tI*uOX0i1g_jQWNW31*m;)Jsj4ac|-OQ;}zie7(m;v1O2V-XLRom z+-YKgUc53+q#OJ+1b3tIg0Lrp6a6I|f49CVFN0+W=eIZ2)PGfYCfWWYo4mb2f!(gR z=**M;0x&^1;9SaQ6PW$gGhzN)aZir|0oW)>wE1nn0Hw#;JA>A@Bo$`z;`MJyO#TaO zK<}ui0DqW)1M0?uMEw`0G=pdDJWaMqWYjN1ia)oHk6s(OUc^4LY-)Z1(W3TQ(6F9; zTS`8Si;O~r?)oLnM$wo2w7wzak17FJ9DPJ)kSC_Y4|#1xaRT4|*krS|8bGp^BNCWU zM1b7>Mu__XzGa~5;|cx&njADh#7xw{74oQhKK+SwM^lvw^^@g{yeWw)rb70qvGN30W(&WjG=8u2UqEL%n$ZF(DX{ zO3&)G%RpgY=~=EJ#WJXM3%~6vT5bb6!dw0bvQpDWYGN>&x*tg&rFG8W4AVpF08n&WA3xf5T28y>(J+Cxc|)Mqf5INY z>trgm9c7MhSI=Ed2a4mcKs0% zje6wTD}6P%Er}`y;NGXydml6RGraz0lWEFY)udKw*?C4l+VQHV}Yto8TB?EhweJn3kcN#shioN*2l8%@Ndf{XBn5sg=`{HAX zSP=flR~VdH+t6p4HOYz7_%A##PKrKDjQJ}x!`^Iw!p;yQL>=FTsLt^-(!GH#4-=aJ z0Xr+-(aHU*r;yzo`og3)jw_t)E}Sl_w(hJwTbU6qy3`(t4Alegtahl1-a{OVJ|}CE zwRdrdg3c5OljY1P*bQ3$oxn$5oht)~pt(`;wE3)4E{jKe(`fYTp?1=B$V(U9iq+y? z4fi&PPC2NcLmmxO96`utQF}7vL!RxBxj@A_na<|vG!&4J4h5KuPKi}{osyr{blS%N zKvlF0RMpL2``ReuQ*pEylK|yW*C%q(L{ta4<`cCAFo=qt(#1e&LyoHKoPabthFcLw zT3Z2_91lx98Xs(6J!x+mqfwz>nMrrPoX+Ji4ejhthdxzrz=|+OTQC;Gg-->T)V9>e zWi93;Z1u9TA$iavpbPH zxrSn$92yeAySc}DtmL4@M2A!T1j>*pIy}|)`)EgQRvFlOwq(fPDGo07nRx~IGiS_J z6LV#E7P-KB44-zIsd}3U{BX@}qd6a} zHk%P8=!^eR^j*G_{k;7j$V+E zEl@ZsT*BdPZ=)@iAl_~{BNLDp&#?sR=aiMI{j}x*$X1#*rCGe4N!*2N`Y8Et zmcQ##uX%YCo0~Xri>}ZM-^)9*oFLA}1ls>=q?PW= z3%442(``atgF^5Ra(2K|b_hN6gT$onsgO=z0B%~vYNRvO127<8{~#l4eLN7o>)-%C zvMn?DQ_hc)*tj2s>Fub~>FBimsN$nzDDSd0;tH6DU6ENniGSvSP{2Md7GJxCD-gZy z6v!AetIP9~eX;V32vvOfg`(>(RxKE_S$RpL0-Ss|jfcN8NzqEW(~|l>MUA{=@JfdB zPpJ1h$j@B-S%!>npDsU(k-mE`Nv8y0HsI-9;;l`=q28Aaz=#Zq($fvU$e*AFBO7p;IkAad<$?w3lo%v1ec&WHw1pVJ7 zbX9NgL5n`JPdKgmT^+$5BKc>(q}jC{l}9=5aFD47LnUs1RcL@2_3N@_Wm=&gP{kR_ ztZK#+Nb&!W2W@*bodq>C)ZLnku;{h@DKL(lKZX0oYCOkVqjbGRFwgJk$hJKM&|=G< za?rQ^X*k+8dYTS7Gl0cT1)6N`+ zlJ)MK=$OT8yTvk*ieHQN=MSAlIqRW$d}bp+O(V}h{G-1Q|2Ad439GHPE_63;_i-@K z1j#Cl6ov#ls3A7RmyY{51hYGm>|+dr;j&r)^bN1Ps;kCQ(LnPsntzLnPaGD4t?uK< z;0G9r+#G%Da0RRg{6UR_`_^n*?+VDU)5eQ>y?1E@=gbTSZHll&dcOo|bkVP7A$rD9 z^C(@9dmr3^jzJmaoxTn}L2L97X{s#_LBrAm4aix&mn`Jq_xlf2Px0>Sp&DONjjCg< zuR~-p+>m@Sjij%A9h`JPTt1NYx8ZP!DTWG4i7wDcBmEo~7G_A(c$BYqCP z^5g7@p{8fCjgI>{xWAS2NOC;c{2dGr%JFwF9d?bsgIfXTe350@?gLYC%Q$}y*sTd6 zp;UVs1&EXY2e;T*uR2$;^%))NBfEdTF@zcd99)d(Wq|d@67Ij)bTZ~Jw!@~L7HFVF zI!6L8)NQ~=E!xq?-@J6jx|L7}RF`1q&~QlX*MjW*gHA>PoWc~UT>;41aJ@7|0IZxy zwR(rtB_GKcLN<4#zb$i#XZ859wcuT-WwUO*W3uvHNI`HL3y0|EwFdbkuo!^O`8VEq zpTWUW1@_l{6<2l({brEmhIR&uNJoRT>Mv&!Y&yNpD0Fj14K!^-{<+^M50=%(0@Th= zeFNZ$5o|Im{$ss@lg-=wrqFbg{AS%PeVDOnq1#Qe;5n&lTZLBoJ0^#CKh7i14FSVJ z*Gm16vp(rlIHw*noJ$lGFe^jChPaC>^Jt+29eIisDl zig)!>zCc1Y`}aZw*lGcV5vcLRA<^4qks-h}6g~1?0GFJxI6{!~uMX&|!LS78ZdF)W zSDLQ$(i>fSlYHqRtBf}*<({|7yVsDpKfw{5MJr0`6v5_pXtTe(M-1m{ZH}=V8>Ugw z7#N&b><+F{)qD!;fteEzkMPR6Rb69DXQKd|smtg|BrC=wBNdT623j3>@E z^mQvE!K14vv(l{&hv@SIB(6B4W{peKSw&PF6~Jp{02OdC94Q=h*&%z{=5#DjJ_j1m z;3MsVZeN4bA#lM-z>W^13r>enq=r*nCJZ}WA${R`6X;-MGZ(E7#9+tV6zJfHq*yTF zu9Hbe10B4d#AV|FGg7!9c{?uAyV6ZTy?X4iH>2pI-Qba=^fl_};IK$#*VlLco9mTl zgB;712i>DjL_KLG*i*LzI|PK5Po1A84j@}A>{m|)J0y~gR!k&AyctO$bh;vepO(w9 zE$g86KQlyDdTWgdonuvRA&~amBIwiFh7g$2?Z>7W=GH~qG8dNutX8V1*vTj=?hMwy z|8Pwo*ivbI%W(bV)yuTv)F&XRL%jiaUB&!z$9OSs?N$WJfE6|xuhhe=ONQw;-^cR9 zBuv0P1^HkuRQsF0f`f#D8CAvsz3^UiA%u3aQRV+5Otu^dopE&I?2G|))*B|5kQqvM zdo(>8E+4AM4pG+>sHk5ImsvrxEROa(?r*du6np-vUak#CG}S~%+-*A#pk~FA5ba*s z+#Hfc7q`mp0w93F21fezP$0+MyhsNx);uSu;I7dw2+b(WzE>mVVQRWj)U-u86tEw$ zmt%R9{7d^=5NNH{hx*xO7DL0Spm65w8Tm2?H8o*r^j(y!Iw0(UM*eSPppiT5YRE-b zw?DPHAwiu!1z~z~w0f{6DCXFj4(FJK0J>)X6l0`I`@^jCX|${i*d>9O@hOthbLZnV zQD%_*`zg;@5+l*y(_usny2vkSkkfNyOQof_cM>MvrBycIe)#n%B|chja&-p=JN z2cx-JN>jBI)4qhYI#5V9QomS-0K`}HD7jAN0HV6`eHJTQEN?uJBdKvR6xO?7OW}@l zq$>}qUG3mJjux-Jr-h@?NU|+UOBb(O-dpAOiFafvf8;tA>iVD64Ixm*<$0VagJvIy z8wmkIo6b3*taRnlza`tOZ#5cOlk#Dntf(~0-%L)JpVHL`)qdOQbpI=~a=H`YGjKjZ z-U=KgR3oh@QVvOUXocgPiZs-Q&IUsDF;U`dYy>Q6TFTI_ZrP8n|8L<^`pMG{M`ZOdE%UAPP;9*@>NILG{mzoBy;F2W$G| zbR#u(cf!`OI>jM-6+|Xxek*FYE%>1_jtsTyNO2_dpq7HM=}MKwnCIhzp73a}5LTtC z<20H)p{STWnJT+Tu_3~B$}f~gej3W325^XUp))Dx4MY~Sl&w^eCR5fq0?_o@G)FS8 zwSKf_IuQ1EXY}Rytb5in%5a5LMcpd@5N{sHlojc6B(M%-3)d^s)jhE>F~gf73o`El zTm|N5NM;Jb+kP;%Hgj->wIpzPUa(97rRTi3Geh#Y*6(fcR;2VQQ(U%xo)3K7yIyyp z1U}oKuRm9+kqaC8IaVlRBo*7Bs8HQClil(+U~s97u#K7WXz0ohrQNss3$r_&njb}+ z_&HN@LtB<4_UP!Npt28_i``lBXZFnrLEcu>$U3s*6z$G(tW>_VINKqtp?=i(Yiu+< zlP!Nx^9fd?YYQ4t_dkcUMpc67$qm^O)RiN#b##tnq4HU*=-yQy6KDXRR_lbqjhu-l zKK&hwcqR0Au!sW8W0OSms^e$WYYTl;;d%wwCCsC^zyL}g;NTiabKg|ReAgzydg4Q~ z#x!qV08&}o81%=wK7o0Y`;b+Cg;`SDtiqh`>fez{C%%!3<>nM8XQB;4w1lN)!{aD z?il0_Mh=ywUo_OgIy?*sbuB|>aMgbu7J6%_yeA0RiQZwd#{i)iONGN^I&yBpRkq~= zoafty$$DuV=HQ!kc~hLAqaZohYk$-14GIRU!S5Bzx_^XxckE5c>PCEjghOay8I$ zvsNld(TD(AO0ef=-z0i+qMeg=(~(^h}y*{s=4f!MPZ}Wi%cR!KeV1*02Pdu zi4fC|QDHrfnfm3ubW}nvu})CY&u58Mx${HE5~&bkw9HR)}0W7YH)U_Ue_Zk zX@4E_s2DC<#=)J4-Ne51{-2hGP_`J7 zFOS{pe#Sd^8xsU`%&w@$vVA(@5a1j_EZK1m- z$slc>6f}sAPm;x+J0{3Q*&*?Y<6(w{vL`#F&~t;rCI6wXKUM2tXnoCOd6)J-QM=~y zS;J&mEq7;QU`-MfT=;5xbT23~+9$~Ytt6cdP{XZn`SXNVU zA^T>E>?V(=&vcqTRTf%zx(!I%cK`+a*dm=!q)Jc$nudJs>{Q;RJ3T1MKu;lpVhZGK zo1XK{p!o$d%_|G!AoPrcJ(&9-oY8hW!Z^1<3t|9;Pve)W&)b1J*88@8YH12SPly(? zb(&`zrYnW^JQp2q=0XDRkE*NYh*nq2Y}m(5n=VIE>&lcgs-G@H%?r6@x+7cJMw+6W z85bu`7kf)ZKI>9I;{3M>c7TPlc+s=NuuqPG7Rk4XI*QyBCpEg$G5zUSp}Z$w0BVB+ zO@_*qQ#GVi%L&MID+8*S=7CLE+WRe8rxZZS8koIra6=(UL0F(nXbK#wzBJ4VA*J$m zI3V7y^nuKGk-U*&5Jj7cByiLfN$m_VkMWTZ)Ix=LhJ)FBuugE%;u&hS;xlZv+{4a5 zBLqTvwvpl~MO~jEq@MI~aXxq9J-`#PW=c-ezAiGIZk#C#4HZ80d_q90I)CV?J%RJkJ^{Dj6-q5<~tbymw%>TvWkERD=`>_cS+M7$2ge z2j{3k^-FYkSYP>ExXtOEALvgz{_yiNph&AVy1VB{-pHu6wnmnJvS{WBOh{=tiSXGn zSF+%mgN9h@xB*LdGnGJ9paAg7a;&<PA*7 z10~;}*d09rfR6C19ZZF8d@X7qy}Mq|NDVDt~aB8DSQf{mzVPtYLAZ|Yc5-Rr8H0HbS~1ZLcD`}`TF0?2*92#kg%0K_f}N2=rpGLN-+=v2JQ)_r@OOR;&Drel zkV{WmBoUC6R+>h|hnvA@uL7T4O}ko80SyB$7CpVONMaMOE?7WM&Keh z*wa8yB%@EbqgaBi=N0R4I;Z~6xd!l7*$_IkL_RX-A^@J#OVm?j6gA!kaVxL(kH47` z>1c^8?ao6{5#Hm0zAy())1dzD+gt!DcqGO3IT|yJ+?!Btyn9a?Kh2mfE4;EjvcH)K z?S2#K&E&;06!w{^LutoihoGfk@}P)Db>#rM{?KQsCiA3Ov)sjVCg(|VVNcg3DCqG( zIvbS4#UEB3>aruAlr52Ez>Z?>H*p%ZB$@razTr+Si;NYWwidTVd-QgnplJGiiHt&B zTSNvmTo26etfg{C>wF=45{*2lwqMFyvF6SEV25pAfS`&T1gHY9}NMN^EPyD@4i;u$Wx4> zctb7M%F)0^WY*6U4Bj$zI-niUFF1}`{%H=;263nYx#~w7%j9oxV^5}*eQ1szER&;{ z8)Y#3hEiRb3~bSpdbG}Fqb$-e5Bw8%Vxpg+Aa87bflR7mE8!jD?++)HW$O_1)jlX& z>Wq0ZMY};l6!1#ZZN(K+nU2fXNhXw|v-DHoQ?MMVtm?JA1>hU;FFM7K?ph)1gH?`l zOT+NQEBN{9>#onNcjuYv_q+Y;FA0mR-H1yN3vN%3i`T%^?aR}8wM>GQ8)5IcPC0ia zp$J_Ec-y&^>UDH7)qL$AM_<_hB+7Mxo|3dmHc7W0esY@DhE~qWO+aI~X_Z_ennxs$ zppsLOyl?=GOrh$>P_rAgTCHgwLwW1?d$<8?9;w%`i?IqcqvUG~FobX6Ket9ia4>F6 z35(ik2{2iUukfy{x+;fq+QSklv0Ucpc(P#-ttgjVkXZ(7Eb?HvgtFFhxh`uyg*Z_w zn2K#8*S1DUkvj7CI;T7E9PA~G|9BIwTv{2gYA7XZbLseP@!L^mDRnQ6;tNnm++TNLr`nA1k6E6B32`;Ocb}iXo1OuEtL=gWb1I zU2s5xyjSXyf%V(X7_kqDOP)(we^9VQF0yD0%*s zG^FPPa%l7o5)+Fm!J}q6SoIB3b%Xsi@{NrEJb!$HdQ;9Kpa1hqrl=cb%r(iNFj{z{ zd@+uwV5H~?k(4>ksTJ4YorF|ixY9s0MEV)n3P(Z&)QLsVkRD3W>8)_`Smmi)U!+}W z@;-sh?U);4!f9&^vbyS*flI4cFBQ=43q~kPDDbPM^=hdll|0Miq5=^t@|LbDTdhpB znwzsFR~orC$WtO5r_noS5x7b=$TorG!E`0+v~EzZql%gZbHBT$LS!&$qs&&@Oc?gL zH%h^VkEph(z!$!_QN}R#F66VUDl+DTy;s>x10LzUKI7w2@u>ZN6sJ?=q}?Z7WhPdCwtnUaPMpvDckQ8URvtA7482gPzOjoiz?d9B~m_OMF|33+(rYHTK(o%pup#de8BmaBd{+ zX2k8CiVaZr7;1vs#Sy13XOiF&yS#Tn)Bd+spsmtxl|6<4%Uc9Feg=xM#kWextauZi zsC#c!SN<}^zhEwf+$PHuei;g92I89;cfuoZ)ot=ousaQgB!++#>TUvI5`0;><=w_f zdVSrF==$6>IFT;dB%w~En=|y9W@)DhBHS02rkYKP8Pj5qS_y%mKrH=qyIiX~Z#Uug zT?X7w_6Ef35so-BNYwtm9HPchYijUt!xeI7jn%l{eSL>KGfdTyb~gvc{{@fgS`X+u z8@txN?4zC63UJH&T!xJvy;J_yz7sRlcBiyC8vg_($2|(rtn9nwt`u{hexNtf-1F!2 z!&z1{(tKTc+3JGQWhx$(!Hczb+8m_2Tecc_@+h=b8Z*^h=DAyz36Lnr2};6(>FnKd zNF8qu0&4uawFRE_J)lR15oiw63_R($)j5Lxxkc_ohquV3+5Rz(clXr}Ox9M}B}E6p z^1NoNLuj>=fr0^dsNh0;96k6$99rC4cRyl>%yn%n_w;sDqO-A~o0ns%% zM6+0h^8$Jw>(Y(1Z<{=H>o&&}o|+iSNsQCLOl;`J{qA|&<&$cjj7+8bw#%4wE>Mag z+hrv;=O@OJbBFvIu=vC2fKxgkt2Lqb*Qjq0oba#R38LzNa*b(M?q%rQ~A(sDIUTy9Q|p-l@ibab*- zb|Z@dxgWLJDRo_nk;<}C8HZ&54=%X574X@;wN6f2h;a|2)9U}!I6}he4;#|zyQ2N- zmyZ)LLngH*z?`V!9*HO&1t^v=({;=&IL=>aPx7ai?vdOF{s91iSV6{acs#;Fb6)kg zIWsFu%aHiqcx9Om)1F4f^|B+8#R5nSF9)4Q4wkV}946`1w+3lJ!gHOv>Sc?uL<>t< zO}tkoggvga>mic2fyP+n)#$UYya+?G|)WvzHTh!HP4$T3$rP?`@U!s*+UWTcxGW^n2TtU@5Q zycZ3O#v>phihR8sc=3^=U=E=V2!&+91nBP|(F>8^t{!U)Zz< zt(Uf6A^5WD0ak6dXE{XJQ;h`y(qIIR~N_(?smO3nHg)*@Fn$!UEjKaCaGoe&3pVxf7 z0n)1B5OH3yTRyb;BmBhn1QzeJ>Q4aRSAXaHZfS|MUjmA!WC$$C+A`65yYKBt-Zc<= zMZWu>gsf}>Nz39;M z(FcV}+az3-s!cw8L8$G5&fTI{5zfv%BrCD;6y)8b_Q=QP?2&{NkSBBoC&&BKo;!M^ zdu#VN80o{HK3Bg4EB(1g-r6(S1u@u(K*Ek}P+Q0E^a11T24E)38|3=Tc2x}xjznIc zL#eaOACQy=2}&2zVb$jz5RgE>1*CEo-96Wj-I(=cem*`><0m0rXDeLSzp&?Gqk^*O zasnjXa(y6%p8c@ASl+`@%vy6E{fHhX9Xk53Jaf*^#zB<*fp3r+B=LMmz>2_8pZ2>+Kj$wfQf_C1Dd=%2gW2LB%hIHjb5=jD4(>wS2W&%w!4!O4F28mUNF}bv zf%`vVOyI=_=N=Uxo&8S-%jR<+vrUKq1FSUCV9rb^#DHEH%acNlO;=xBxcw1zcaY!JbmkuWV1L#W=_bqY zQdcgj*(a;7?hs&0uk4e*UQ?>5W-NiKWOW?4lryL06%_QC<8VCb+Lj3Q_JnBdngU}9 zhC;PZ!xbGflu1obOGpK*8x8por$2r7v~+v8=3RTlFI^qKEDtogVg`Y6FmJ!QmmUOd ztt1-wh_+vX4dzLZ5bvc?)}2EPZTd$~p#qFF+)Vd72J*XQ0Vt84NTUzPn`m;7n8gFh zT(QpCgbruzHZ*qGZKG^`1RoUuGe>zT*<=Q+e_Z9dRf}bA?M;p}KE$B*ON*Oit=2R- zSY^-WC6Fjx^8vAah2XlR36fu4p2GYvq;}1c4aDw7Jt%#rlS_tm&5mLGr~svuAqP3u zADC*Tf6YHEpziM=e=zx9awf(eNgG4E{-q{<3SqG6b`+61Qe(|@?vrG_cMKF{dxYSi zX$elccUuob&vVyWRbA5H9vOXR;jtL6mx)ZEuLlx$A$N?u76P6PA>6RBy1uett(U%149 zV<(;(o`oCd!RJ&s+aOx=18%-wJ|`QXH4?(FSJ7)M$&vB#$NItf#|0kPYC7(TP-)DM6fAfiP{yq)4-k`t86dnNnBLg~~W zDg2^qUUE#s1J&Dy&R3qxrvsuVT`wmG1A$tlAy9u8!9G;;UUoQn*})mftsfv8a%YWi zLVfMce)Q|hk^@;@aTM@pMLLI*_Z3+a=(h}_Gp|U@ho09YyMT*Xq*}fHH&4~873&oT zCCpU3^Y=ipf=%H_Xc<=N^ z-Z8g0k5ewgp}SBsTcfaUka_Dn_iQJ$(nq% zI-RjccTzLi4YR2*yWaQycc9cX9Y4-4JsH@OGAe`a6&0ua&4*R?+b+IcQSF0JDV zr@8Z{U(MUS>Z(c9tlai4yeS)^{3XCLqyM84O-57md4SK${v&4*v*PytM{0$zTJ$|-h6Kz}7aO`zs?Bo0H)8kN~U;v%WfF?B*;McTRNC5xu= z0^*x!bNmlF%cl}Nr;bo(AQjFvYSqf)#{^VRSF7;z3-o5DyV9uR@>)4ZPz+HnwW-5=T%_n;Z?yyhdjl=7Vy!O`2)(;`_F@)Y5GwmXA}UhQ@sPBr6VZHR{?0uEn9o-${s)fawJxa zfx%e;sR-f>UH}xam_a&IXbs>gKeNlHfGlwY@@bSjHbzHFYw0f2R^Uj5#C*PN`&AT5x z1DiK7-#D#obx+kk_5%s8P`cpkxV13|nf^0S1U&PBngc-Pj@q2VOtKW+Ar~5xt?}2-vFu<0<$39d+`3tUy&}kp3=Vx>RE;Dh_W`)u@vlMKg zsvbZLAhpPH{skOq?yVWVhQ%mDtA~*N8bk!>a#-lZM{=69Zv`kYw-|X;^Zh~WV4_wHj!3!$e%SH z@dsXX09aga7?U}+qNX*B%$;)e1(gmCP1WIgn%^m9h@2P{wM(W(rPdE$z%?*9EXPw@ zN1`u%(~)cd8TD)a?3XS;%+w)u%H7O)5*d-8Lz9TpTG)Rbf+*?kkU z$@-~0THa4ViWnH|8LL2>T=1!i?Ef;TKMW1_EySZZ&v45HZ2)w~h6-O13g zYJ;^oE&5z`MEU0ecwz{xDoM=LO^wpRJm{|c1YHjX1HJeR`1=O%1qlsYM;!^bF_m!HuWKryy6c?Szj0`YmV!!m#8K-}xHV&(yLC2S`mP3#`eJCG0 z_>V7O@AvXoa{6?yP@18NdCcHsoz?rb#AWyyVRNgF&WvW~Mtg(XU^Xa3Mm0$7_*&8l zwlD5_9$MP2T)Ul)dBQox!?jX<=xvK`VweHpbyz z_N{tYKOd0{gBeJ>-~O$vW%mj2bDF*l@+Wf*YK;>^M5LopLD{PeeZEP9-IYWg=XG&Z z^_}cF)-r3D5!A9UbP(GL}G!=ibq zv4$%k9&2_xvz4lS1Z7@O&sQ8F-fx4&7bK?Hx`dBW-X#?emTh)b2OH?kE?IpY>!VV<-Lj|ZGA#Y6pj%GW?wtTBR+okw z6gsKWY^y4(Q1`Y1h3-0sP-1(`?9$KbX_9m+B4oJ-LsDt~%2e&r0mb?hn*P1ags88p z*#?fT?^V{&(kl+o3*Sq8C|YDu?~fyXkiRaf1Wv+rou7fW{2))i=QoIVz5IhrYRL*q zf_El7t1tZ^5t#7@uEJ2;&SGFkM*k?I+WK)KSHJ>j)sK=gF?0XXALU@Re-b=^zWY&T z8`%$lGJ68_4o#u5S5};WGwBDfE?wXiR1;C-$b*DRmIdX(wx85;9%!=z%>W5k0A2mG z8E!feKdVtS-3Ea7TyWmceUPZ-IKAY*l4q?tdgW(1eR8AYA+_<0Q|po0OOhk#?A5XU zlitj9k!;`d3^}1wNTP??eF4e^IMmYV=#UZ6=3s zUclmI3Uij8YBoqvzo_Mb}i}vvM2HeqFUni>0_sL zf5_4VVe3k0?2GD;@tj;;?NJySLfx;T0y*?2QQWV|M?bgZhLAL4LFww{RVwuvV4Z%- zp$NQYJo=iduax>!jrYRAYK#RKj=)Q@P-25Z`q8{gvTG_Xsr}UqYODh1Gj~>?|6hR~ zU6*zp8Ev6xA7_a2`<^{6*#GGQKq}t?+xH3|CwCWE zUBPxL)JFS#oP6$cRgf{94(`TXeL){5pUKUYpy+SuBb~Iy zK2E+7*gjB_#3$`xmV(mdo|V0z^v3t%q2w_&RHFk~C;CNr--SkA%koH6V#|eI;qwB( z16eF@)6#{PMF{;PvAKk(T@x(!knhLlc!GR6{J*= zKzzi04u&i1`S=w6%Qequpv~gv%u97;KUhEsE8aCR@01kj`yXPT+B^a|z7Zht4!>k9*% zgOu-wmu3`wd>I((mjj%{hO)actWJ#%$VR)H9^$_HJUYZCluhfd1L z03!g|k*_n+f9ASuSF&d>^+oCQQN`s|?-XSCXlgwZn?=QX`7kK$WK!YqMCeZapGoU( zbPf;8q3ZDf#k}+;=Mm(2(+Vlt5jX|<8B~}|9IaUaP5;#oShO=K?^oR3vv=XH*YpX% zd}NSS(l{BqrPC`=+drlLgxRNftYF%|Ns5P_JCH#(eF-DQLL(2j_a4+V?l8(sx4jKo zNZW(J#M$O1nCXyFo*jmejB4|zrUyctUXwEvq=ByHzUkC36D>3?MB>U0OF)zSO{2-l zauHAjNuu9PPDVRlUJgDX5I8y-Zgz5q00nxmGjEQt(I&HuaraB`3bNIMlzXd>oH2RZ zooFfehXi{qPL8iYeSrt@dvqWTwTK@)aJ{O?ceO=6hTEL`E&MR`HH*UQcZ|2!Z{HI~ zR;xUV=QjAJbzN%-H!C`Y3W#1pA!GG(-@$RQ+sYqaUvUenhcRis^#|WTXtBypEh@vD zbdc4L4$p$2dxT9MjZ5F|$8igrZ<8^tJBNA7eF7}4y$j&!kTOo>V}M}=)z9W+p^)QG zIY(2)gRl@AW0!G(3R*C&vOCjxxsN4S*Tj(dACSFniwXh;SfF7!;|fX$ zbDO#fqBYo2>=YnvHxBkQm=*fUYAEE%-)e~QAlm2@6|FUapl<4&GKOGe!Yykn3U!%7 zkS;xWT?TI(@X)VSHdOPML8yhksIyV|PX_J2QPdO=?A;R(T7PH~v@ov}!&%cBpGp;h zGGX0@4B-QV7*@6xr_@SM#agZB(3}N;V9V2xbUNe0*JMgcHSr!&UewE#*x(* zO_@D6CdSY&>Ob2E$}f+)@S2)zk5F0h7DPc0x5xYfq-8E^;wl1m{@rUb9KBMQ~n zYy9HK7GyLTASOS#P)0nre^Me|d1bk0Y5t8B012uWP9)!4#N*`vFbbCDk09u5-V$k~ z{$a9WQJjNt#86y_%EM&Gw{JjpzCTQcv?Wa9Ec&SYFqz@b5xjclP|k~e^XNdhQxt*5 z(VD%urnvhC$9N;0qA)U*8j~W1Qegxyzj~-e+_N)@|9Z60C%Pi!D}l4%`dkm_hBiey zg}dJbFno3?$Y8nlhVNtYa0U$k>i~I1NXDA5zOd*!M%Ee_6j;&P5cNI}` zLcmZB?8zB`t$r9Kb6jLF!k_3U)OODPH|lRV&)C~if}zg=yxjCVaB16oC(29vezUvNT;_l`CL9{0V5UKL+C@a+-)^mvJiZk(PVo?-8$6Z^xWQB%k z<0^Vc+DN6Y#^A2rgWK~Alr?uZ-`Upb*zhv^rir=h78)lGa}K_yj>ATIv?tli=je5=$I6`RIfH!W5iFYwG+4 z(9A?9V;ZEmKf!`jGAC51OZn8eA#@-Jb5IGqn5Z5LO1a1Odx*_6BR{X8So8Npbog5f zUua1uAYoH&@C$Xw>r|nxT((4gyxLRCE24s_Lqt z-k~Y+a0`mp2hN-X0Mm^8g1lL(HUR#WVt)_J{u_A*7Vz{evZ(jg_tWHU8{<%yayOa%s3=S71n5>X-^)P@(w$Nw7)*9I@R+r~ z`vutZ3-YJsPoGshbE+l?0cX#6ae$KHthy?nVh4bTWy?@!>aZdMt?Vv$hLejqT)U{w za5B+I!6j2ihBIAxLL{WXo_XUPG_;>HQav&~ovDLpdp`+|Xkg%i(}V==oqqE9b^i2aFRTjdw*{RsH52Yv|T zbP?z^V2qoflit=RM!Sif`ypbmWkOly+N$XwKFjAp*HG5TQ2Rh?ftw9Ka4r@73M#F8 zXM6yevL)=5j|K<<_!JfN#Wt;XN2o%RD&7ui+ILB`VxDTPzr$c2TY9bM`m%BrM0Y7$ z)@FOZXaLKW`a>!_N8Y&NLt`WpKlRFiBu^(e_iG?EYI(uXBa2?Bkf$LscoA7ozgAH5 ziu+6OWWlnAv(O)JaHaMVy;$xX98n7$=`S@4;lvowyD+oCitw z>CrL^jjp2bN~xNO_jx`4$Al=NwkrHd4+x+@QG@iDVx{ zh8`Vf@HnEqqvVh5qu@MWKBdbQxD1*2>L~dYPd&VaDEJtYD$oO;jL?u>*=x6Qht`ED++HRE6}IsIZ%=CPI2K3hAaO zWYdib$tI?$-|yb@9^iieY*rZFym#Nd=bn4cuhg7zf{;7bCR0~fC_n^bB;1&ivN>j< z77|b9?U<{(Z{l+Ts*JBUjw4G6t!X;=iuo%Bq&JRLlY)vCp^^W z=kP5l;&cvr5Y-iN!b*^=+){HLFcCPBcpN$Q0refwJ9NzjZM9;y@{+{lDGby*>A-B>#Y8jLTwJ;oMB3@)sv>4< zIZ8!1|LUpfEM&IRmfEaA(-ii2@f=&Bm_f~RY)l>*ez}sUKSj;uIU`NXA3^=2WG=6A z)W^`XYzZ^a{d1MjJ&wFz#HrFI(u1wb8yus&KtBTYtmA8&j;7D!6)0av^*kPYHW0U% zA*(%4iCMF#^Iy?pDQZ5CQ~ObrK7}A770>5cBlU!8x1?p#3-fuKYTFSw6HlMaQmGssmG~@hoDbMTb}(b`^g` z*W6u=Y5lgUNtE<_E979rM+ltG*iRrsHFX zsO#pUO1Hm+6F1qoYncXq-I)?wq_`EoZD?@0t03?)z^#KBe0(bKM9x4JGi!MKpCOC62q7)RWv;nrv9dEtCd)wm%s!RXc3)C5MK0l?%UWWa zB%TDOe$wO2Ob;&M*d$a|d`Fcp%A>{=Kvu&P8?*FfjjVxnbb&$#XYXK^xOuQlsisU8 z+0iKazKpN)|JSzsYpJE=9)vo*^PX^s>M!L_%k?7d(ehhRJltn9Y5ExV;w$I(h0}Vk z;R?Ms%M|1Lr^ly69_Ts_8Z>n58h-oM_hC&5OTr-9Z%lX8cO=RL(RFk9SlV$inY$gs zdiWk{6S#R9r)<)d+meLv_tal$Mre2Pe5iZ7-+VE4Dn2g2cO28`$Z{n%Od%ZKqv_Oi zFeMBt`0;Y0;U745g^lZ6spNVoHj!>v!PkR*_E;MGDH>ewtx%%J3Y%9>+U(0buhaw) zMh$LiiVZZ-ynZPXR_@&cX0PQOEPc9uN8dPT6~`sCfl_G7D&8zA(_P>$J#R*ojudOlSwJwn_OWX?WLi6Cj4BB2?Wz4>lX9YBkRu2`A4vlwhL+t9d!O z?s6p2PczWyn!YeZmJu(mwt2)TdDife6k>uXNPQKm4zhEe4%or5P6v(s0$bXFxHNef z>8Oj0vBGJjbX6J481eotLwZY@OHbM59PEn9IV_ZRLt3dN2|}jFK1BgzUpYT51KMXH zpq?w|EC|3Gu*Ztf!HKO!j5DEtG6v69~XoOq!MKYx$PZ3Wue~1Ay$! zU#sjh)iC1Qxt8}CfzG22_`mO}4vV49E8^rSp>j7OeBpG!7E{+LcaiN>^pMq&3otBO zUIBeTC4rS#xt1Pu=mReXYIXVLYgDAHL>9UCnzW|>fwt7l(Dk6jWSkQ+tyJ2F!Zp~*K>AieFM4z3)k}kty|AwMyis^wC>V+P9$Ir z3L3Ff>rcb3<*^WW7;-Q5H$cTgNj6@`b$f+Ro>V?~>0Oj#q(au&Yk6R;PXI6tMf+gN zdNYwjs_1X zChc{+a*i~ijp!^jGI$YZ)qbg2l=ZD$)+(Uv5J$yTx?nndos#!m$7!_ndfqKs&)X*S z)zO9YqAV#&Za2tIHZpJK?H@_$K&pN%D!>H6wW?Vg*QkK4(#=XfRVXwA;w9};5q$6A zi4lzCk(e#&Z_;Nbtm`p+uMU9-Yt!4XEm(eol2;8O&s4B18*Wf)N`K(xSFZ$c`ZK@atb zp5_9_kYsC{nRBTuW`}L+Fz}V%tTGY08>#Rhy(KkZ@{d6@C^r;R0(bSY@)KP3r z&-o9#=6Kp#!=b2Vu^qi6^_Nr0dkf*abJP}QP~XB^h6 z8e`0vXdn00IdMCJQ8^9}%Q zgCew{>AR2|vgATcCc(#JU zBMxik)umO-VCK4{TrqLjx?7yX9>k`1)2%$&Kzy?M27%Aga2BPS_it4I7V*^mh9(^H zZkO`|{BE<&5-YSd8fMcS;ecg2%K=8Z`8F;FxPFCY&6r#DTKf1lCF?5SnoG>>e1bvr z2C_30hqj!3#?Zc~OxXi(xt;e-*@h0hgJW9jF%TTOR>j!rN1m1AS$8+I!nWSQ@ooDZ zHmN#tO!=?hUKb|Ht}qupurb}D)_FYH0SLm+B`;vZKpM~%_FBO1W+C+rdRQ&-7irqpR|ItawYp}RObN>lQt zh*(SC7QJ<0ED+;3pcNhl5n0d=#TZIpK;c(lEdec)d%ep3H8?Zs(BLxFCKIMcvI7MxI~&GpS`ePY)^5-0^035dFTL z^C)S}+B6_JkkWSWBmlxff|lU|iY@nFIHo^>-^htLk-T*YSZOgHFh5*4&|qp_8>XDZ`F_Ilxa(rzL0*xRi=halmluxC(wh zJL~vm;CK>8Ep@!5x}J#`DO!-T;GxuuXKw!4ZlktawH|X{q+Hb%+2p4W8%0fbb9O0F z;#~n?U*y%W>==%T@#1oMtNX^lj(L87*DUGp6uR!xj=gVk%HFX1b+_eb>nyo(mZpe?v($hYU&h0}Wks+jp z=*aDCAY6AEurDWZqF6w-GO->!hiw@&^^sIVklK}%-eQG+3y-vWIh&~5iAmzFN0vWk zlfTX&`rAGGkM~JXk6_l3NKf3$8~>@4kW~8iUcQUACt+>`ctT_!*p}bf)MN@c8ZC1~ zxHd-k+T+dCa32SL%W;sKPu*u@`Ju^*@%H_;RB^Xp8^{L-GVp$7-@u%CEdVdUo)|zc z-Oty+$PDm3z_HKu0OuKkzDmx~8E7Rvz%k78g*l5VnqvJ;#d)yWD4yk=r)2DR!N<7v zx_-d~<(|aA3H(#fgPhO+ay>`fOS!=@%=ZwFJU}8LzPZt67~7Url&&r7Tg23`dr~*da9k0{%GTo{JB`u(olORrZP1)L>#VPCQ zZ5NZrU9Pr0$AS_rB)cJKEYvM|RDcZw)p22vmWmIWb^q%zs#+F8e&h+h#g=2p@d^Xe z%=GjV91JBnQF^U@`vmvW;5R6fQPq0JQ-Gdi#iEEEju+D%HGSj zR+y)Y@XZ7ezIrb&*hLHA-*b2`k1dj*MPjaJJ#EXC^9#V%AA&9p7N5wd_k4%nDsl1i21 zP#75AWaA?)v^>7`PmwY(w6#e=!zmUbg(VR(@-!cW`b$R>w{&vu56z~$W=_P^%q5Wy zH}mkeHFGPoc~k08C`<55mu>-l*;#>9|1X}r-7f&=T@t7ShRXJ}(0))!Q^R zNOacLRSDgE{&{;uP^|ADDvs~v^wX))E>HM%52ripLX3TzfFr491M=Aq{>|^eTZ1l{ z`&WpfJD%ks6N({1C?yZ4rrr?oEJp``uQQB!`Nea*(`HZPF9&Kog^u-iSm@299K%rky8k(zQr0xd*??#HtMNwq`8i$;wXZ|M z*jW}EWI%fyT@K|W>irU}fx_o)Y+08g%4{Uv#^b_050y+U?UO6z;jO~fBtqtc;V ztpNphO*)HhRFnWnU8qGh?A8}~?LxH^)QDuL3>79rYwXyI%28@4mHrZtDRH~%X+%oM z=J-Re)$+V0Nbo*-;VIxu!~(jgJ_L?&dk`MJ95oMBKq_RUiX*^o|RA) zg_73Gs18?8Gs=xw^jm#5U?T;As;7^rm^i|T?>ppNI}7|Z^ko(ddqs;ipE|#>j3wQ( zekx3$urwgbcRh4wT1vwL=t2uG320gXNE!=Vv%A&CV8|kBd=g3K4Xr$-90nDP0Kcs+6D{_6EPf{5Nb;Q^%Esz1j3>q*g0% z@VxwGN37u=h*q(#(xlXfDN{}>cV^d^6|z&oOBqNDfU3mw>ITrL3h-kU~+UA)5oCoWcMA!#Qx7)e1+yrhdXGo zk^}jL#d|30h%-n8=ga7e5QxOtIMS5l8y;(;<9AyEHIr4q!11?jQYZr~j}#j74!=v; z70P+k3W)7qz0SN^_y}+6jW><&aQy_*&!E)445zZtcRBq$a(!$l)n15k!QG0F3*f5^ zr@im;yO8a4>9X{j@)KDVYT1XjW8QoGOf}D@LUCkFM5sVJ^Vw03a@7@M2&yb0v}hbM z!1vx$jzNN}E(DBpi&vGeQ{InXL-G)sa#VSi4@KH`)aDXHUHC3QIdB3rig z=gfHlLNp9%UCP`5k}{9d?}#%{`CPO71dgbghKcJImsY5fg_Q+DNhlYb9*~KQ6mgtG zoclN*{&v;_6Vz~A$*VNU;Q0NM(qmazfxc723t=W-n{sSvQ!0nK+^Ig>59aJ!+xU@X z0|{2XvSwaB8NkDq6IOraR$VuSWZ2m!bAr_DR>pk@d7YMITGOt)pmtlX7)!r4*dAEM zqcih+JAbu=TGe($h11Xv_z{l0oC18F4HlC5(?iVK%+;j|qc%IiiOS2P7Fb7rz?TIn zMbUr!>jULnF^>H5bkG$}(xJWeq5KZtRoHJ@9Kelj<{t}LfkiXB><`?P<1XKLN zhn$5A93-ntO#DbW0iy4C3o`qz3(;D@0-6ICKGB`Ma zC&3$_2Q23O*fv#+f;gGmX3p}?nmx0)&^u#Ro>#$9pl2aF5-GL`_m@ifj!{NE(QyzKOdWb!@ zl|sMb!eW0d#eT*S5a-^$u*8m^1LX8=cA`?;u?co*&vfXF)btr|RqgYPC>?#q!M^6d z5grL6Qw9&FDH&8a5_{a%6I{YZoef2*Un8L+enQEhrwbx?6wFL8GF^YO7PCBXlRxMtk~a1G{v#rM|QWgcP7TQ_-C`PHRL;f$LfWzY#ME?&2)tV~%M zuw}@glS2JupCdz_S~|i*9KP+?PPU%pdxQKt4%qMNL0LMt2iYiv|LecdyLjJb8&e^S#N6Be2N>r)?Lujd}eN} zlOj8K5T!z(y472$>06|UB^~@?B?CR@5=!c^iu~vgmgK{ z?Buyt8<7Nms(ei}-P*}d1RI+qI?~CXJ=V!-AjBTR#lcoplPHaDw^iYrazZ5b#Ev|KU8}`ybBpQ9*&)`QYdvdg(v>gzc|@Hdpq{YR+J(OS@?+&EWJx1?$>~_eefyD(t)0pp+O%xiAy(%l4Z#4F} z`pp$BzFhkCJ3d!>&ZC>=4Dp8mNlZUU!;>k3^Ic365E#YVR;I~4aEb%NQ#RuzZ>r;a zTb#Hp{~v6bG8QI_GjFnT=kja?bcdDh`GKDehBtt%{=jn`I6ck;eLr#~MOJg2A0y-x z{Ky{xXdL5v0Rd{;kGzq$&yB?~ZW+|bPX5>fPAYoCHjoDVq`a+JKnY1`SM5(c&ggPO z`{Y6#QqGcC13FKrOt0;8N}G*3o$fT>p;S9*`5oMi@uzvtwQYtV2y{$>sHHkV4s-P; zfWn$i^P>Zd66t#-9r6QBu`=+Pf94Wu!OynYVr)P`il&$kqT{sVm#M1kvJPb#2DKH) znpiLM+)}|p2uL?4nyKUr7c!ubiW2m8Bp&i*gU>A-qE4nyOfJ*Q@aU*r7pq69o=6L5hA{4Z5kB%|VS-zyKybsK* za6G)*TY};o^hh_)Sm}oAe$-^76WzRXNsZKs?*UD9{K8KyeeRtL6SdSOtZx49N|KGN zMZYjczHuA4JI-7ELTP`qPUgs}6mzO#Ffvh8nU<^028|PO!0C7ig_68qdCJKN(0~<6 zxBM!nM7=jj0v$UZj7uTwfBD9^LbL;ws73!(${oJ2h+R%_oQ|He8p+Z>)xXEv16FRy z*iUUKa*1U3Vr9|B*Kg1?j1=M+_usZ93gh)zKiJu`+({txiOUC)T(n83j znrYFZPV&y6-Ekp3eTR#K9PHMMSGWOV@eZT=525 zGf)x0fZLu>bWwCc`3uQtcK>P1kh5lqDV6eP0<%>9bC4_zR^OB~k~(f-hvJ&sO}RAuFP-&cHHL0R86qbWo@NQqqN?)VdVfnJw=oN-nmE| zYBxd&9;Jr0N}vPszn9=5@xPwCP-<#>5MA=~puET@nnkd!o~493bt8}^ou=!sG@MU{ z_sH~2>Jh=x(8Yf^5h|UV*jK%5@&zUBRKWEuCIp8&F7P%Z2@g2^;N?|h82{IJyW@gw zofyF$@n@67^#fa|bQl_^1-J#(Er1T~GRdLsya$knwzn}6Iu<0E>|W?~Tm#)sghkL_ zltH*O3MM~U@7W#3DPU3e5?cx{aS6{%;Ams%htczwl;lOISwPP^lExg3)$Y>UW$3V; zhqQE$6W*>uyWH&|`Z|zuC_*b3Llak(33QZFlCzd1A?r9DVBU4iE(gEnEvOVXH8@oG zM`=ppAgZ;bX{@Z$+M6&#lvMZuv^@mM(!G9cQ(x-`WtAKw5RKB3=WYC0zCR3DOnR1a z&2lU>Iavjds>laacR@e9RIqZ@0lJp600C@gKfYGo_d<}R5cZudd!3-v=fy(70Y-t! zED$n3a?7o_=up>Gd1KH>U7s>%`&fGx?e5Q^7ls^}lykPfmCp9J%QVx^-@ZiN9vBmA zY;m;B-!79o30W&RAC+SCuDxb`FP5y+-#$xz9@4M3qWQNlz%B_QjfOPT(cTUW6fk_1 zr-I6fT~=A-lXV5yljWcO4{|$@rUkMwRA*HXQnH7!^<5Wem%G0FLzUDUM7uY@+c4^M zn9LfG?qQAG5FADRLHsaV9|rcQWicorw6U%yF}%(kk=JRAud@#k z>#VyD9%T(WyM&yz>3Brz^oU$tQ!J@uUZj(2ta&($VG1un#qB!1oe4_$@ zYsucjZeuM>T?^NT2V>UrdngPG$BH_K`f>U9nx3fS60H=q{!scVDE7yVb|w@( z8w0bFW^<@v;*#Z6J+sGcvP%tuqQ^nLmsV6=8~xOSFRBlK@;(}fuG;#lW#wyoHj9c- zqm!zC>#w2A^^j%jRZA0EE0q^;99m%J0k&R3LMSbl_L})6w0hv<*Oj4(pv-UMHD(!w z`Uq4MPJmGL6bpY=wmY1S;Qx#b53$pcyFz840U|7p-oForp!@$ctKHGw_J7k=!1Nr? zG0064$w~-8dDKKNeu}FK1v%(bu2;7Oly$kMNY`2IayKb$iyJ~+U%_JPb1T2Oq6guQ zZU|NuZNF3(jR@w64mOg9a<(DOF5eW%X|@+O6>#e{D#9oj`RYhHj@{BHJl(@~pUrl_!tjuV3PY7hyXpzG{N`ByTD6l;1urrfgv$-krx!XWbIL?c0QmAphusjXTg0JunZ;y>*=1={!g4Qjv{JfI_02_t>kErye1^mj63hj`LG(^ms@f(k$OOAQ z#tGnM&NsmUGN#HPG@9IQoNysDEniA^1W+Ft5&VzVCvlf;0|DsU5Wy29>w8BkHAV1F z1H2R*Swq55#!x_AvJOx(6X?_QNFGASTOsCT21DiSIfzbF*dqgJ{^58zyl~7)qL+_G z!)ZyjK@R52Ooj-AkJ!6Wb}5VC zS)Z2b`yNQG@|$$(x;l3$GKGqwc?&`{2VOGwpaxeFnb@Q11rWfC$!YXaG|xrYXC;y` zhToiLes~ruUc8%a=jQ` z->W<(Rjfm~O~9H>c{7V=PMkJv;tY4Duf`=(<78`RKeHEwt`Bq?WP=hj1SUe|Tjmr|SrN-MO6}zZ^QeV)Z()(|Tw-fsl>Z% z?bH~8CzLHMUB9Yo27vr(O0B`bG{QQ zQAxc0O4Luz440)3bGdFj3Wuk{tq=~_*)LEp2#o53!vI<$cwoS@0KWELBrAC&V2rl} z45Zi;CDRz&qnklXQ+Tbne;R~-U@W9A4;+mOpaUtKUiq0#GEfE37bzUwn@hnh>IlGe zuYS+rPa{(K?;G!rjiEKEygAF}eM>c(KBh%TF7_l@S&t@@>b{Rjpq;-0e|j#J-$9+x zJemfl@q+03JSJOEy}W|t$5U7CCcgnbS5kns)R8p)tM*L}6lNYXrD~^x4ac7pOn9|c zWu~`c6By%=L6t=*QN9-N1g=fzMO?Gpg-S)EW(<9n&XccmG+KV{0H7=)Gwe(P2E}HE z1*IKhyxve;Ro;u5#DP4WYVk2K6=8FsC?>z1!Fd|g@LY5$!!F4UZLO}z`leugec=#= z+U0x45#}2iuA}F^G|O<^ejQXkpqv4FvjMy|vI6iAlu6Jl{jGlx{W_p$(-rOwG%1s( zOD}fp`b@iQMs|#G;cd0R6&&&%>aetC+6Ra`?aH*vQ*8G@V}fb?BsJjvn~l?!FD3kLsoGhSK+!6%=3Ab{X z5`-z(p*!ee8kETq+hw$Gj!DQsufLD%;xV_~jT`fM>{pBX;~4cIbketZcp5b}p_*@5 z02A<-giv{rZjb#+IqJ{j1ebG7fP-!r$XUO11aE4E*~}{gd3}}o0<+05h{p<6l|T^- zB>t6ycn-)n-dp+I^PWq-Fz48y*_5?0om1L0s(b_%h}nZV8gx&J8cLD5(VQwzAg=*( zn_ag&T04o|G`<^t!&L{CwD*YRqLc@nT2!ByHUYUSQNv!^& z1Xoc|{Vv%`(O_6Tq;Qr-CY z2;P=aAc*#jv`Zeov?#uEB)=u~)NiI8BYBa6gaj_i^H3x^HL~ZhB@QPPI*ONE<>AOd zR6L5OM#U)mATi5CP2Lxp6mBYCx>V-bO0fdm!6ed-<{QfqlJ-)ZYs_f=^UCCShi{D5 zsW4)x(u>WZB(`6Qvdi>ps^OxAI2CgE@*BfjALK@|>RW7j%J~i&?bnatSs>*>+Qx!I z*ffTRyZZ-cytR1g@->kBFB0Bvd>QGK+Ypa#QS~rTOc(tT&vrkBWc?bzg7?4b7iYq1 zUc5}4a`;b5F962s-Ue*OieD3SbmAY@uS6L@67a3rcJ^*SMBHzRrL2DisAf#?0#FW+ zd$M`W`aK}DjpN{4@O`$j`=nCqsIXLZ4o)TOVF*ty&EdD$ehH+2iYKrk+@Hfi%0+(9*%l)^~%lWZql|G5G|A>WKj+Zxz zmZAuh#$6$1iW{fQn=`?qw7n{Tz;H8T7w|0%FbE$)6p6)@6^V}T z0qCT>{89q6tm;icCMb>xF)|g}h}~;*G9X%vqs#*|P-kPlJ zWDw=MTu>=Kmq)013r}m>@l-xvyhYTn#SxtwT~_Lap_im?qNTG5s#&X z0W7Kned=BSsn=<5qp^B;I!{;$*RS|BDB73LFWZ}99AX|fJAZs`@yxs{Cn^DGx@H7z z&*yj}6+{o_^PL>mr@*-@-|i8&)qW#v&2n-y0ahu+Ftb#VVi2eUbk@@8TynTvw$+1O z;dJT}z;fq~M#+3z5*TWWLQUYCtQG~ro_djOveaW&7)}CkYL;8Q6<<@h z3}>oWi}>kaxr3wkvp_92eWU@~Vg~2*QW{{y3?7biMKP0T#|(bcV639EIm4a;vW}~* zzr1nRHHcANc5LROXYysyvjXM9WI-UFY1iYUSvmcOPzT_nNbmd0qoXWU)&`-N6F5sL zUe2;hfCtYYou-h5;_a1UM2;2?^3ic;ttrG`BM!0cY(&D=RWd0+s6h%UsU zcg*1_41ra-F?7%28jJM-)I_GuwR3+p9Y_8C>B_4*FxQ?ZzTbKgNS2cPeikY?5w6ir zTCeu-cebP^P}fy3rjZ4c>UnmVCwM%d>ODP=??BpGwav2+6jwTaQ?i6~-Ql`i1F7+A1TD~E9rVzZ z%05XgA&o{Nk6xl7h|S*RK^US#O0>RccL0g}vKVyv!S};`4kj z56}G%YH4E%liHDZ7&Dzt@>@{wVlNpkAp*>&x z25>()z+jBvpt{hWE`C_|7G7{gFuG00#$v*xE#kzaH5giA3l=FE&mz7+>ms}C&2|ed zd+_W`G`W~R4iS1xlfM!}>GootAwY&mwxMk8OQ{7ZQ8A!||DaP3)9L(I!qk3OqurE9 zZC|Dui~x3*^=fZP5MSH%pg9+gwCbq(cmhm_CIDa1RU*TauaqOHY^^&}jbR34jJ>R@ z<~N|{+w@U{u|9J&>PlyUYWO=&eetJ>{+kS>veVCxA-M zELAoWvA;K6l^#U{uHj;Ud@?MxM9AhPt2p_N-|>Q)uTds;l|5Zoeho-6%HFe#yC*rz z?78xO%y39*dkaSDr#^)yTfvM86K5#Go}?mdtkg2d6iC|TJUQFngMeh)tyZmOotjp8 zezBzZqM^BU-*O&cybYx?SCST}ZZ91V1|-mt;2`b)RN=t2k@~l$@r$8WJikmuMt~9x z4&h8-{O(x6bw+eYTy*ZgIt@+zI9^uHy251TjGQZ#yyg&O5M*qfvy#_e$BW@HdZ>ct zDJqZTnFQ?y=Pg0Q>C{TDhP3|yDSh`z!0O1r+g;sMJV9RPgZnQdZ;A~h7*!`K+$~^H1 z!GUCRCj0>U=xWz{cP7_2l{;zw=YCuSOYXI@QNn%p^VR{>u||m&QRp4iTA|OFSG$2?fm%q@G&n!4tmKshmAnW#@*=9gP1O)^RT)N|FB!mV z{Ltc0U6uAEaZBPDfIwqU6aQ#j34YOyYn7aB6jgo;yWyAD^6>{+frH4fj+a4af)RN~ zEpmeVb^Jz4*Kx3I7z>ezj&(dvtzH03IzF>oD5i>6RAv=#uxqOLAPVJp>3U+O_p5k5 zNzol3B25&uo~L$mGU_C?)o`*MwVppywB9ZUR9+vZYqCw*v7Yzr?v<`6Upc@6?likU zU8)Gt28#nBiizIU$nMr@&h0Ga|>Y_L-MC>;KwW8V3%ap z?l%HG264Hbz8s8@QYm92XDAX?Rr?COGD$*BG@Fj zXvd0ZOzn6V#6C7D+dj6%9zB80n>evUkJCj3sqk5?-2&{*EBLIOQ=53>>b}@tiuu^V zD$0lTt{Q&oyl4sML?Usz{W|69Ug7AFMo*;%n~jAtCeFz#m_3tYm9;5ux>eej^c8Hb zFS*K5?=)H{=Qh2uKL2VMI9{*RP)~pX{NnXIjk}+X0m3>u3X{v6rZLP}Ubdk(3EpfU zg*~ZrW&aU$X_}wh*6KFfuar5$XoAp3BJHTPnvFAO70j5}E8lzrztY;Bh|IM&*ctLW z66MRlR62PBk8t%fV0YYcB2I0nK~4zc`G&vRXF(kkHGqCFV%)ifhf;b}syYw!$rj!; z01K1btdXL&%E$A~L@BuKsQ-Y=AY$EDp_%sYl~y_Wav$$n;0MRKtvn06wsK1v&`3Z4 zeuKIB)M_3d>of?r%1Zs-YWe!>J5EXsu|d8XUL0Ji{STj%>fzM78z?;I>p1<_?!cEg*TSrEY$P;*zpAk_D`U1m;!A&2w{AKL_sjVm*QBA+ zXWSbobFGFO?OAdb-6#u|)c$#_*5dRyD!YjvqG$K)GfRu zt-=NjYd`s z>+Vkm^zbJLtxUX4X+aD1%G&usiM0DReuuCx#l?r=y_~#F8H?NO)5Ta+o=bvh*Z348 zJ$ki;)A|1bs?_pxfU~E~Soj4>m8$W*JPQk~o9`t|iIVhSn6ur%BO~z<6?gDSNNRLf zJg5n#mXQW^>))yMpHGQ*D%b~D1C+&&S2mHFJ2~oAJ_scez)520^qqE9WZu&dGn~qU z(`5-F|1P`KZ-t2IaPbJ8Thp+VLI4&1^DgD(B@5%}a9hIS(zR=a0z=uV9>#<`n^!Le zmiwg~w(O~yo9-lcXuQ)jYkuLx;_(F&CMtm^E)WVFYXMO{x*q-fmya{B(DF1YSmi%P z1d;Z(1a-=FE{IR0McetnR3h4*HB}fm>4KO-nwpW}tYvOb@##LRBh_Xgtq{KT+ zF9Uc(`6CFeP84G<8P4djC5wNQG($`>rxKX|!YtIDzpUjs-Yxjn)w`fRW2)mLzGpj@ z4)mgesQ4P7O$+LH-t3$bHh>^77ew3Zl&Ti=SVh(H`#NQJ$RkgrVW8+|2hf>E%+M6O z8)tt(wMZfFu!Lw@dAFSDz7}+vT2kQOFy=MX^o#p(X%))Q3f#A?1+Ac8?&j}lY#ofVrx=;`bvyfdpg6$V@2f&9!n}Oj{FmgOuVL|5+FGH$bG|fe6VWE#J zdJ_5Rd?+SnmlGJ~CLg~Y?>$hiI_cwF5W7(-MUnE})(TygQAvsBo(A|j{*Jnz!;-1x z&UAk&zcVz@AShNnQ&3i)EFYnv`xWs}v=kbneVgMfJv>UO?osVS>+8yUc|au%aL2tI zq}=bIhYF0B3X^MbSVmhCR;(*u(|7$g`UiqJb|3d^>I(jTXJxKv- zCQA@< z^Csuc;y2#@AiCpl&V|s(;~IJDZrshOodCI0*C*)mS~j9!KjtD^kq8K4>Pa=r~kt6TQ)Y?FjydF=l1?-;q`OLd~IJ-qF^8h9sY=m!I~rXL_@xVeFIZrQS| ze%;Y?&~V;~BKnyI9^;D*_6!*kph55s9Nkwp@+1>%Gv7bq;q-JPPw>_!(-dY`N28LK z%!S*t*-N@^gS9U*bLXp?G}`hoztGw!j5nZ<61WrlB^3Hg{)58#?+^3WJJ-a;P~sze z1e6`Hh7*W74LL4@c}Cf4DCqW&=|%;cU}m^1Rf8knvUrZB5r$>t9jM-M5HLIB5Z0&BZsUT zLNh7%F}``fvHk_L|1l-j_TmWPQ@q|^CKcw#8Sizh$dWB&-h_z&r%II%8^LL0=ec1PEfl~ z0>=gafN&b~B!7>0CS>=jH$otA^OL+K_KFB*4uUOF+mrld-dx;b_)|QL?Ro$)D~{+w zY4b}-dRmGf%PBE}8iTRBc72ZD?0B*GytUiFUo>B5!6WoN)&DN-Cl;=6vvjVK@Fhg_mG9)(C%LdWY zpZm$(32LWkQww`^;gC!*`;_VLL8Yo>F_2P6enm(B>U~^PsoBS+Ab5I0;lPAStmSA- zuhy7lKR=_iZ>e1kBemkyfF5nx&%vegPl3zW08iqU{S4=pYS_iUL7q)_fWO!y&A>t3 z(5+gIegQ|AoC9`N`<24A!>Qy40~En$LvE3OFR|k85Tlj?n|Pr$TpNdidlO$1=^V;t zO-hZW$-Y2DTglJg*B%y3`er3fKpFC%zyuoG%ktPUKJ?e-2nw(>x9`biHhfC>rQc@IP){I|wEq_SL?AQJSHHcOJva_=aEKt`1Wt`ca7%Gsu z;&vouC1(S&@3a5nuP=Q(c{p{AO_yuU`)@wxbeT~BgrRO)ut1Bz{b%X&G6-cT!(fKP z^Z9@CwpUbb;0kHpv%JQn8%&QeJ>B}OGVL)GJ`hb>p5^#ibT<;(>WzLH`tw;{Q{IPg z{DbF<*_fLL$DG+S6bdR1ii+HM$9=XySzD0zA&hf+nYE+mXUGW+UjrcRqU-^5`Z>O? z-}BsGI&cl#d{#WKtf&z^@+U!*ALnAs$53i4)MgoS(NF6!*?{neq|kf6M!!3I13HJ> zVxxf#I)t85?F-5@J_N|i;WB8Dz48Jt-||s0QRe?O8usWRI+U{mDp>W_&{X$J_QhgOfT2B#&fFd>7pm0ptKJx9 z6j-c2VCMFNjIK5x;yMpB84;|X5{h4k_>n;`h(l-&H2Dtmv&hbPNorgokskH5nKzXE) z)qt+N&=}hDG7kyw-M<9H&`&S(^(z;|u!JIwos%y1cVy)r+FBkXSA#@UH?0F`>6KS_ zL1XfxSi8XXv z5=}@P(T-T7R>ATKCvA%v;yM+tDiQLIq*R*rF$&xJUgdBjbGyl()b!P4A4(Q^7ooD zBVJdU{V4e!vxFOqtC-)#u_q@VC4K3T2!?ee?SGwb*76*r6}wizk)!K%zD&Cd)fVR) zyq{#hVfVNM!SLEsW|&?;#9AqYkMmo=)F8&t_K>=%=wEtf6dsw=Lh(jVd{(80I)q%XmQCCecX zse6a_>YDT65%twCIB5DiJeedhrEPa~0G-+!sx@UUS-!5K6nG#WTbZku{22m}`#T(@ zdub#8Yzt9=Kfr#=W~z&>dRK|<0GF+FO)?cvDwu%@F+)k%rT#`o0OGOp@j%GB3 z_JLGt4^2o_Hfg^#!l*eJe^R~z^z-jlSmkk|^{Bm2P65T>Wz73ZKJ&ivnu<^oGk@nV zgJ9zeabqlu)9Hfw?Z=J7-xWTe{DI&TOqi)X%uvvBa0ke z_i=`-bLU0jR%k8Y$#|DsTM9y@Qrl=e&K(-5fGPn|5p5i0J#Ad*0N--}-KP8yu07~) zOhSR{jW$NL$d1^=1q_st%vFehN5K%!ySQq(g4&?ccJ47Wj{~SdoqNIhg7H(;;tRAR zv~b~wh1){M2xvAmrKEH9UqZ@8)7!ZWys-{OEkH<7nJb`v*H?N`iYOfU+8C(my=F6n z%tJrq=K=d~5V?o@%cE)amN01i&W{h;brL15Q@Ih0r}C2PKWXVSe@vj+04gMaU`p!{ zHt&Mb2AzqQpp3cmqQgozY>tzm9h<`ty6z+8ls5woUO5NgbXqbVhLzJdLGs{dE3?TZ z(*gcEqD@xs_i!R*f6PHcj!M@(=xV8sX?2Ss!WsKxs@|%!{G|peFCHNM>{R>%AkJBT zMsYR)uja3vS+wvI={`!JDtRL2IUQ^)(FMn4K(!qoMPU-WH^Cl+3fEQ10@=V5l}0 zI*_X0X?L9ohvnZPjXCk8QX`%xsJCb%p0tmY5eKkGJ>K?+d0~3rDc*Q^qYSYnDM1Sj za)}HxQ_U&mDpRTG`~D-TE4RO-09y6~eb>S7sPiFsm*(tos@#Qw9gz91&}sZp$Gx^} zZ69!vOiwmbaNlMe|ajO`uOrqX$oG_^>*Z zn(xsfYd>Mtm?y7Y-beikH9mly<-*OrO8E=5-f7PSN z`K_|%UWtzM9Y?lv;#+0Dtn35s9QPe3U{F2>HSk9u5{lo!|6Ko_^4VmnyW53V69h#{ zp82YuuZ2#1r?ioCspc%0`e$xR28!Z)1*$TTtOPn%!=Jn&Bzv&-d(I!4yQ83VgHOtl zmfU$@<rxx5Yp5$6?Jkf)3yxauQu7tY;^a z;U}dYvo>Hb&HqW+YA>Lj(()6AIOlQH>Q25Bs-_f8KXLn{XkbVdom&(x&!RX_;FG8M zINh4$7Y}KS#ifgvmCaIZbURmq{3q*vU8myk{|+R}NXpXpbpWPiE;RF{{6yU+S8EY2 z^%|N!oRjF*&o%L8nT7R%tU?$&Up%?r8Rp+fZLh8+dOdA8!&r*OGaO^#j{?o;D-!~! zp*-5(;9ar=Is|3>o@38)S^*Lf8ngW%1{QN(FN>DwV9EZM6xYzw%L3$i#2%r&tcTh> zGh8UFrimLtogMg*myzu*I;Sj>+jPMGCIB1-XNF#>8;O2J;VOXI&++VST@db}2tX6X zbt*H#gJ?*Ctlq*d1=4yf5v(X58aoh3Q)eiIU{H?GCPe89XXK5a$dBXK&3Oxo^AaA< z+Bw3M?165X57jq}gn-w%pkejt+ho24)o}n=eo^WQ9u^{{DsUT6)uTjl)lXGK6E&uM8HF`&;!lFuS_@SB}{*mqjIY6pBl` z@Al(Ua}KpW5SQY65riqUC;(?xdIz5Wa(0E{mxoGTM!WJzDsb(hg)@nY-b~BUXJVSE z@@`Bahu%A)vKNpFXmeCPS)tBRb_l>Hm)?17px z$}n-`;#ECv7`k@fY$4OT0idKlgDHjBa|gJO-? zrCR=G_6Ib@dc||hru?#vRpa2Er<`amW00!2)b?%u;dCU)807Phh)}E28RXg!nXCgO zOVtKJ`X`$rdK*r$OZqCi3TjPjIXq*|bO63vd_mdLk02}95dz}djtd;`D*I)4=}ebZ z#_6n4Au09*SicJU)4o@$uh}(K3{1sazy-BEvvD5%&(rM*pZLWp>Z8$&zd&id6}X3!7hGy< zY-e8NNZLEXA;V8)f5#wYLDvn%N#JCEhkOmNgL9F?-@!C4uv!KLJ1NiKAz;GwMe!2G zQ=bVx?H&FOnQ2HRu)=@)Bdn}3%1g`r@pvqtV}<~STniu~119~RpK6N*F<(GPw;_&J z1n^ZlSJM)OqdP`#9VQV2Oc`j<2+(80%mJ_3SP1RMdVol{<= z5Ioc)jvT^)(EVGij!p;4x8e(O$dCm3BOI5i6LK{(r_Scj%G|<| zk3;MaLCQ04hlCl@2|#Bx4kochQRy9lA^N`UM#(kk@Xx^FY)&`TA3h+*qH`bw=2|ok zi8gPZn26g*vI4dJO0e27Xgy|?mN#Y^ePz0u!kQ9MuGy${$S5Q==Peo#J8~XKlbhz2 z0K+h9yAK)^p*o&rr2`=5_?6}&RLL*HMnV_Mi1*GIohDZ2olOwnRhlL`lvnT-m1{E!@V)Jp>2&OJ79lDdX-iHG%O4 zJ0wya9kfKM2-H~&1#3|;Pz!BEx53t-?alyITEw+ZBSrgSD9^@UE-{ME0r3BVDGOI1 zhEk0IA?{ThKVMP0KV*P6qF8Y;!KCYH>ci+)p-U{XJ0#B&yIo&l>GFgyHRWxwJ7xm# zcWFicp&~R&(b1Mif>Fl7LDURxAG&Fq)*Hz_4XASH|-4Jx!VxpklHkGS;awWDAWP{LwV-Fnic@OXOL8xCqx5H9I8BPo?r_O zCts+HnDt%AH4mi1aK%^!Uf!uto;`pY%kr08=I{fsu`_y*w-7aS1G(4D;Pjf+5tfJSdCqi*PV$Lg*Gs#QpaX{3U2ur%+aj zQq;tea7;@S}x!w&@e|FnT|dFWuZfHG`_nsDfu|pmd!Y#RDRR z*+lol1dR#?hw@EIDX$!W3+VAEWm#vNBkAKPem_XEK$iUuCQTOfP{qUJP%Mcb65-SK z8h+Ch?T}H>@5b0smH}h`*P2R@Cf!Stjn-nt`lQDUo1|56MT|q1Sz(+|EWTjJDqtu= zV;zz?<%xC3_LlTUk{IH9V|l4oE=UFiyBS#Ma%0Z{|75JANL&N%*K%5U{|a*W{s@+8 z_UZzZaEyvzfdp{!hH}p7m>~l)>hIaQp){u6sMGS|ueu_Oyrn6zwBN;n{ZyGDozA)( z5^`Adgd>B7#__6aPD3JC66fINCK`BRo~zcv-fyfZ&*Y&!*A?er$$?z*F7o%#fu*T> zT6k}a99;CFBWTQ3V8*PB=c_hOMDNc16BNH6i|26yLJQ&kNAz8E34H(7wee%fxjRNJ zb2OF%M7C>8% zIdpo}gP`h)4B7XfmP7|@L%FDPLWmlzP!OIWC&`T=QnoQtO<)IbgnB87*AzmLQsDDX zRyM=&)Et^Nn!0}Mc?=wxvJ8+^>uq*QAw^4ZIK(=V`O(|oi3|7r8Wc)VDeSR^he)Jp zDg2PdDGrIj>%0|d9`HZW;@%{Y57lVQ>luC;6^LKA4q#z-szbu`gfSQ(gK3r z&Q$&~?@|zJ;XV%_NvcCq)DbPh=%HU-!4#Fo>#w~<2zC6|97ikDlr(MxS?9xcscV{F z5IvU0vsaZ`w9#fyKS=`XiZjTqR|e){YlIt?2K@30rzU{gzp$U&)oNnc)X_la(;Zv{ zn@n{d06;Y^!@&wj!&yq`M*Lemuh$5`bH`cae85Mkop(7oqX%#{dhA;WsYz9m)dL(7 zi|_1&Bhk|XI1+c?m6Sz4E1!k1T@p?G+NGn6OeG=@A(u(-5o-HtHj#m>)jbV+aYH5t z4QQy#OdQ6Is7YiYFokCEcn!$nAxDn@O~N|J`qW+w)X=spp8nYW#!@H#A=hVdeP`1E zYIr;{mL|J-AnOj9!hBs|L-4L$TdH6vI`?3MDqI7(nTLjJt@QQ~W!AoxE;W%2 z6f~3{IA*AlI1UuYiJ?4uYKJ;9#bX!U3~cf_50IJ1lA~oZYnco3q#!g=;xJyKK-J?G zU-E-1%?~I;Z5qar2Ueq4G2KCcEDTd}{Mpocz5fURsyGaKhC3ugz2w0V5A7YUtc3~n z?MG87XG@5MJ~Nr+fv9;@avHfuC>hVT^mvZy(>HMZtcWs@#ndFACRf!Syo?MM|b05-=8BeigiPHozFqby#!P#mSB0n@`IQeo#9 z-Zf=MRFWr6FQ8)UPK^(sl(9TPWs|Prm?pL_e;yl6IK}3|iOMp{U*-VKV;$4QH&<>4 zDjrfRGMeOMEBh<_V(*O~O7Ca$HKpv-U)c^ON)4jY_akAJvKwEW{#Lj=t`+6*K3<#S zm?bXTcqiI7U`@o+sb#FMAWb5ddU=%Pp~3lBx{e<7@>je12aT{KtSei)9Og3Dsf{_w zK+IX@)KJ) z?J(2S3CaoncMY&KKf?L_o&`ZNsAGJG(3cZ<&&wZ?m`zC&c?`P$#&0aI`rCZtLWBR; zw+`8aOw>KGfZM6InW5yKvE}H~zo}>g^NbLyTe_MElmR_91L*fgr)MY2@9QyffQ%4Ni? z034|6Z`Nf#=61R`g~J7$%!g6+)7Z`Orz-PvDj!KDCAx47g!sFr@@M^~Ii`sTUNDVc z5Hg+KvzmeO=P}q6lK7I)A&-|Z8Gwq)biQ=ubjNsQM`}C?NPF9K&UVgCcgztNF1f)! z(f2C6N})_`p}X>VWGkP~Ky=A>WQmV-<~wBD)BErAnEJv9PyLaxe7tl~dx>9+MwL^b z&QVY{EnET{gf|L!PKZt~G==4Ht6~N=-nNgBUtd|sj%Hhw>IVSf6#M;0LD$FNLGtIQXZp?CmPVKAZv*AP>-b zp)>fI;Eb0kAQ;n8P)C77+3ZTjpodgFgVQ$aLxvPzzhEnUF@x{_+zj5vI&XuPPtG+d zs9uMKTB+e>USKsdIjXhIeVmScn%G3(3zisiy7kap?zS)4Fg%@BXC)kme$r?Yqj z&{xZ%{jqT}Mt0tevp~*lha_+|o6#+6+Kz~_W42OI8&L0h)k!V0`C_spR-GR>jH2dn zwDIf*q@X$h&avmhz_?j7$04EoV3Z4t6gm`#a*YvcqN56h+v&qOyj_7`=b|=kxR(At z*I%wU>~wPS$&)T%ZG)A?<@YEALE0h{^z_|a{@c3ykVuEj-)fabLNg1*~}&d|r43m*~}+J>+;iw5B;ZkTR}Ras>28azbP3_x~ST-yIO; zmGvD2rdMEQ=*-Z2v3Efwb^&W_fr+BQLQ&kr*dQ_4G!?=+C#EQ*$3%tnW`y)&6w;dt zn@!s_3TY;rsNe72^E?CD_xtDFHwZJ&bIZBsp7Sfn8>$y8$;e`d)a~ool!^p%F&BUH z?!bGLJsn`6OIsoEFm(wpN$IDzZHa@iO_x)BuxTiDE>VKvFzWbwNNUKuqGB+g=Fgrt zXIkN04mP{LNI}xE5w*s$rF^u>SyM7E9W=d*iVOKyyO#1qP}uvs4x*vT@6=31#?uKQK594%hdc-n%Q`1G zte|c@0H*iYeHOl(j27^P;X1XCMgd<0CQ^HIpv((o_qKXE^ovYh{&M-jxua9El@$mu zS0XjPi!;UA6(Tp!{;8T&YQG-L;E(V(GU9q5dkzc(H#wu5t_(|Lbjl`g+|vdJ|>m7BZXuGwz0 z#OaVh^7P2N(Z%IFm|U71oaq)KGS%Mo{c25Z)1b|{V+DVV2V(cMY-6ZLJwOVnWo0a? zVwf)fuQMcgQ|xOKL;{E(|<&AWnfZos%AKDy$UW ztQ>@@>7Jgd#{w-mYo*eGfD{RfBO;kLUd>PK zO^4oc^VN=A@oRbS=+o)Xt9c7~r$PU^J3(hM381DN?%K;DsjEF$g>L|84~4GVQFi~J zUeAqy5Mq&mXp>d0RT^rBe`X>oI37vkE6~&2z~uoI!M&^ znz|NE7cYl)zC=@N=(DvvzCvNlHyZILdL6$qgtVbb_n6KM#(+`=&xuT=hIM?41;aJf z_q!bqgm>DEdrn62^~MvQOAR`mk%m+%QBcWI?)?wj+%xpvZq`CSFIGp>XBjMpnFSLI z6#zSEaMC&^g`%sJTa>iu%b=KZ;6xpnny91vPm*Mdthmb(P5UOmSL9$7hoE|AW+WZI z#*Nx*6~C3okr+>oYB{|^nL+5b22<(7xH?*P8|6XJP@4uHqqT0A9-dChp6p(cnMbFp zl{0V#t2j55n+!B9Bt#x4K+weaGzO5ReE=m?)bO-5=9^#v*`@`!4%cu(mA4f< zJ?lj@=2dfRbTE~efB1Vy{|;TxF~4Uc3hdSE`NAYm=Dyy^&Fb5t+0l!CwL&^ax4AUy5 z>5)clKcbMou9pAo#AA>u>8wX#^F1>=ouPPxY-Mx{MIjKZy z1V!Z&h6TWL#F^=U@{8C2&}qJ2Z>8MMBpr?YDo*~kL@T%6<4B^h|Fo#;$ZZRu`RTqb zD%{G|iUCc^n-H_wH=EV|7xzSygF|e%6V!sI+7I&X+6-u#zzYfEgumjyJr4s)y5?=5 z{AX?Ad&=P(l2XZH&}jsAW&k{6jiADg2{zF9`M6#j*`#ddOr(I_3SAPxb8s`~k>2Oh z2Ggkn&?NltW?nKS-=v~oy@j8lWQ#+7TG6Wk1Rf^~w<;6+Pe|!VWY6BMys0{BBeLmJ<)0<7*|v?#cU=a+A?wzJ zyNptPLP@$ITpmmA6x4MN)U!Eo*N4CYc5YJw6^vI}K_JaJpR67+g2sY^{V=+4YqVUe z5s_9i3v2Xj{ki7 zc<2*%_IWI{w@$tyz=iS}oI^h-zaj+>;BjrB){l`P|L1)Rw;1dBS|%5vMBp7B3+t(u z>m8Dz?0wTVoc^p=(sRMca4(14ljvs|68i-mp+7Lhf}2V4fNh83Q7Rq0p69RQddC#8 z8srL=GIFDCaBzDRN@B;;Q=r_DVWO=!IHahqbb73N5Mar-Z{QO`=1%~~*vYViuR6j= zm}c+bUQwW1OB`&-yhLBdUFR4kH@3Q0@cH8>BmB&LP;M2OZMTihibWwx;Mta`urx|Ro(!I3WI#P0FX_P{6CfNs@ptP?EQA3~pwEu4v9qTm^1%wX(#}PKDmuLXb-`GPsc5`FFl# z=iJPZux%IaA>ALrz>sd{T_jttopaN0X5Fl$>#-nms|hV=EKef~jJkyf&9e;Z4b``z z(zWh?8%ad)m zl@ki7!)p5=DTJQBmGh5)so~?ue4BEj-o{s$yj!3^QFp=$Y~Bm$0F>Xx9}2ZBl$D-< zNyE#xaUO-UA&j!)%+lddZlj*BEtyn(QySh)$R1Qb#FwMuKci!Olwz?0`GY=xzqM1x z?G7RM0u4df&*TIGU%8Wm0`C4$1aU#UVA)RPK>E%!hfY;_Wa#P|1oVXaerW0cwvz`t zE+y!4+y7#e2x2oxh8&QZE9wAxb88XaXYVfM@JH`#8nnlHe~Yz}%@GbP<}SX67Zgfq zAk>O?D-k4*0@m5{l$5jUNuWWIpKECC!gTePC|lQ^H)kg6=N2qbat(-lps&>mgv9AP zpoY2YSe(3D9IX?|GuOC=(3S>XtVk|U*lXZ&cEGlf7}^e%2IcFdR=0aa$Vj@pk%vNn z6PsE;!;!omnBvoH~N?F;NpXnZjqmmTM340c9U{x8ROSdGf@qGC<03B$4N?( zm>+;%`MXWLu-cr#s74>aW9_;d>@8cGNoIK{J_+7J2zBp>Rts%y>rrTv#KmuJjO3gL zlF(D5{#mY_*R<_ON6$Q*1k9lHeJ&0tz>lzEE67_9*>BG^l1o zs1=8Tuh4=yvxj@X(nhd10A08-K8{eceO!N0ynsVUR~s+iukK!`gf-t8=`ew+(%;5_ z-m=766ccZt+lhw`qP+2x|A)pz4WFP`e2F*;*!3}S)c&JOOLcF9w|Jp24w8L$aunz& z1NW);h#@)@piptSE0<^wB?>h*p}P->KZ6}W$MUs)7vtK?CheIXGRC}eebu^&RV$S4 zis$x-IN#maBd4E^(a`k03N&IOd3zvxyL&HZQ7wBN5?3c}Cp+&7()sS<$F$tV#VV9- zQuZ_eCDCw~l8Y|}h~l}sID(Xj1?JuZ=yuTEygCJWle&Kkvr=;qRGwzttsE^Agq(Z= zRlgk@W}aCvd&>NRDat-6sel%PJ3SOka44&Zg#;OjG&<>xm8W9;bFpxbe;g_3lzVuB zT7Co+$M%LMgl@Y>iJp(z5QV3!AQ?!Zp-DuKVgplF@ zzi1#KbLi-2T6xXsTZ2N<=6m@D*>Yc^L_A5vl;moGQ9% zRJRH)x3}(7Zr9(zjPKoje1Mf)myUXAWRQYdK~f;fpV>{@3uPJs$v}uYK4U_ac)xOG zSZa)+yO*b_74Z5|P-1U=FU<&>zVd7S0zwmHG@(>QkE{Z`acZ;D5*{lEvqPz&S($nO zcz&?piJEyUNeAKLuZ6JVZg9W{pe03-&v$=P+yLYWjD^yuE(F#%IfVf-9cgUgfQ9?I z?7Di(qm)E0{XX9K;1}!J_WVv?o%Eeow}cwt}J7%FR$p=#EyG_Gnf%xg1nX2lPH3noP&<_vum>_lyqwGg`{S`c-z*H9_1U5gS zbf$_kN73((@Ea5i0rk4`1&5W~O}N`eZ;h8rPbT+wJj$<}R|#mcNWZY>_4Kj&Qy09q zN>^b9qYiL*XnoC+PmpnwU1W(_tU;J zQ5ydO-%~=sf`D9%;_@L5q(a)XolJ_#JG4U_iLy_v>sN@=ULSFjdL({T0rSFv?>*sS&Vh=y)znWM6Eo^ zRjrQ2Vh{p!hIIO+Rk;Bk#9qwLahNGPG2KR^+js#1_JaO<28h<1+mw$)jG3YzVgY$` zVR^->tCit9(dI}OADTBcB7>5j;MarPB${Pwut2VUg6C7+Uskh#n(--Dd)X}VK4BO| z=bzv&^#rDkqMVlu@??P68w?k+fTFqaNgj6ZOE7l&NcoSh!Qn|{dx|%NBsI1^hNZCZ zDSiS#F|l8Um~>|N0~K68PsL@lJ;hhyzesIBVkOTgyAFA)&|!s?62xBe?e?alhgtr! zfJ*kFZnEWo;_NLt5$zU4VY5eXGt8VeYuY?sOlP0wYJ9;ne80=DiHoO)pW(|?o(@`a zr=M}8AQ5hx6qrS)wSgwef0o~_Z?GYru6r_C6>U4Mm8F~x5nmC#!LLr09D4pfQyrt?T?^Trs^`O$n5-sfEB%| z{5o`CBtk_)y)W@i7cx=U0x#jHAA5v91>HR8w&ekc^T&3pB$fa@g}>Sf0}$J55Gwra zh%#WE(GXq=gnFu>B2C6k@29HpgX$pGvo8@S<44W*fk5_x+k&A^^s=%D7D8(<{3!3! zE?+Wpg{k`vbP~&sI@s)DaKADw{r)VUC@7$3Q|D3TN|Wyw;EATgPqD&L?i=u~Xeh@8 zadA6;e%XFhp$@;0tf8Il9BWZ2LAMU3m2{+?H*x(@8{oLFYa-}UJI`d-?~w5lnF=|N zdANN1B5qpU0U4kLcJN>Xv|~?o-;f;Ty9-vZbw63TW~g_%d{@DTP|<9#7?$_zYe66{ zhZ>eA1X2DgJQlpeU1&y1XZRamQBp0zv6FTu$6w)7T_&aOSzs)E`LVbgyvjfB+nXLr znXgLpM^nI~XpWph5qa0E%29Yf&{EB9uuuNrRVAX>Y#z$L4eA1MuW>uHZ3$T6&01hT z%U)A1-{Q-mi6uG`z8i31FMGpowUjPjTUE(vNbO~VsqNL!Bno<6d5irq(018{qB&HH zog!>{mOav83YCNZD-8_bOJe;Az}>rynyQEC%PhNNJpp~73k5$z=qLcaNwAp zTeTi0I{p(!7*%$i0ROS;ZAZNLa|uN*>v0)EAm1%qy@Bv7U$0!GgaR2Af2MO;q@hZ` z4wzRLKb9VQhiAL_?{F+~Ux)feLzbD5D`N%d5iOfNpy7^qmw!zv&cO>zMzpS*7@B9L zy$&$uPQI(uPsJ6d;X&M3tovCyLD1o-tV5qhR~=K9n_`_P77lg3l7a8Gg`4P~$CN}M zj|$dre8w3-nHGQ+`c)Q}hEU>K|9GaoJR2(WD4L`hKBI+0f1%0U%oD2_-F< zPAy9`W9YgQ{BCt;62?pms7v+7R~5V$~w@&cu*fh*L86$u(bxKQ~PY_62IQX2X0T7 zW11LZ0QP|iih^FmmGAR2)x59VL~a03F!x{ZeER%-Y+~ZX@lrsII}H#BcLzR`X>CDwtuGaLj{R8I`Im zu>i$OH3o$`A-^{O`-&-9u z+%Klk`l%8%K821^Z=E*Oq=>8XR4@i$oYidEAg=$j{gFzQJ=c^Nu}HP5Ub3sxLZ~Fqm?uCTZ!%FL>3d zzDk2%b{U`SP@QtKg|WZmeUSq3=lH<{rc=VyL>CcRcLS zqkSBYM-)f8v0i{Ujwt#EwKVR7cWh2U*H-E2``J+ctp~@KQHv3LHgN<{`*Qz4NE2ya!-zmu_by{S6*ci zfo_Ge_gnTLTJi&b9_YMd=WV z3PjKW6uhbOtn%0RZff{f`cPUjRjVSNI|3m%jpg8^z;m2HgL0Tg?Z*KS9)AVQ+HwXl zB*FVa_~0;F~#|NmJST)3Z!GEw(veGu?om6cd4{)a|61A-rsnIO^p=qGc-gFa0; zaJ#OC5gN9hoa+q%rW%S&%7}j18~cQ9|!D#CF zDrtymYSlXb>`m-Y-UsbBSCaT`9V)!>~PYZR{-cU$zEp~LyOMy zSXZ6rj48*sOHum1sSU|4m8AXZlNQ2DC_&Hiha`EQtLLP=nmVq3M3-C57_?(xQD`)ryLhn=lv~ z*C`?5#2vv<#eX^k^LH4;H20%%LHbF4_tKtkK%@m$Uf7PJZ5{U=Y_?}OB1O90l(PjQ zMr(tDnsR2?_MCFc6baLSqKcRkw|;1nP~g2*MZ zq2F-k%_`OEjM<56{jP_=N$2!iBZ(?;^EGhuD;ngKE%Q!GdW_GdwHjC8yiqB1P@Ba` zyc?_M*+EXp`0(nX@!hZ!J(|Ab0%#ltqkVR^yCDiZhnVF ztqzLnrSDg51|51RR9!wfQ%#fMn*d9;(PvZT3>>}IkOFGC%})1foMQW6F0-4umj^d> z<_6IZ8t6faygGw=@}Z7>=`Mp-KNp@>{3K9)!&-U3nM|ASNS7NV&jIDQ_NDlOd$l|q z=Q6D6R6InR=+ikF!zP=K!hT?!&MC>sB{R~;(I1l#dG6KmT-Nv4p^`ET=b!lUOzKGo zf~&VWN^9J>Zk>0%+W*x%rP_k`Nn9x*pb&3@sK|`+O-iI`(K}@>C6&Hsjm|Lp4Dt;L zppbYfyEe{Ft-Z-wYOVtoa-qS=1&}dRVhS6hLW+kmgrd{HPuinF5@GY;%z{R*A4!0f zu5>4RA4YV4=Ql4_rKHd( z3%^9M&NSMdxM4Z4E(5!?QZhb&nl@5*dBGL@ef6mTv37RE1mV{!R?LCb>{>|IDgX8q z0Bt}aYiNHuG?nvP+9FN(ee@FsAt3aK9w>BSI^h_d=#x5)0K@vny)Z5S*BX-K}PGF51Vx#-;}C=!hf<<(LY z>XgUV?%YUNH-vJOmFH;wrnm@M9wplo;W9>!4dYl=6XukF{kB_Ba%%Vu)S28|Tv__U zoRT&TEwVhycQ_dfK0;uF!kc<^VWC2D0NHT)ifR4X3Wy01j~9-m?>dxdkw^jm)kX^J z8Qe10LQ|Y4{IDkz#h`7eu`o&8P_ar`s?EPgqH;dQpdt5sfWyyx#8AP!Gl(r{`G?Tw zPF|O--y*;@znP@B32hv|TV(BJJ>uT zi;FuMeI3PPQS=O8C$Z5^Sxv6m%mQ6;=at=zCGHxK|CcO z&PY>YWH9x821rU>3@@vIh;$tJVX)FuIhbu~Tg18%=hr}`aoh!Fi4Uuebry;L?TB?s zevvvu0scD|eR!vbD#hjG*dMjdYW?R| zymPWV;L5146R7v<)wW^uVmz<*6Y)GgQWA0UtkU8+MU&@GQV(9?!JfMiNaLCWKACEE z;)a+zHo{_Bfs)&%YGu8_T_&EY4EHaw`*Ay;Z1W8TZ)c3@6`gbD_`B`YJ?r zPiAlc^VX$}9$?0tH#RYric{cNTb9XbdgH6nsnk#dOP&WZIn4DO1vH}Ck!GbYGo8$K z2aO~FHXoiWrvyyfA5Fz?9LdO{ZCO0PNWnbxNR~5B&RQXBkm#~`2g{uz8I{coEMaDG z8{|}0NFf&d9zB)r&F0guHQPB&enJ8Dtj2E4&xkitS`J?gI`7kurfoU=nP5wgwG_^t zGHo_z%C(n)w)Y08qWSC08q1vWmE};7Uan-!?Um^nWcv}q&@*zCH=0Eq7tDj38tw_E z{BKa@zcZI(Cm4-r%B=@5tvi>GQp5&K=q6p1Wp3^Ia-159vo#%hMs*hMz1F18l5l*Y z+~W}4I-19sLCtEEFB+n7ko}RzDRIwvLpF^c%&!cpw2XTgQ;)A`ke;3$?2M6PP)r@6 zmdO+|gwF^8P4VTSH=UC-NR|>L8KiEAGg&Mu$Oyqvy((TyIbY!3CE~CAkRqY%JDDi;IyzKIPC~FDdWZ5lfIbF*Ss#JKJ7O3wCMm-x6~Z!B zyP0BgA}NcG43l%>TLJ{q_rsK@T@jBZJe;?|_~A~L`4~ddn)&ejAj3d1r*uhgPXQe_ zXJ1mVu1M)43q>}0(~$>m-UuEjh%q2tnTKbqdo?$23v?}AQ zqZK_)oO{94`%$8bi>f&mKAz6)3^vi#Bl%^wjdV)Nht$p&MQA!ZQpsjO8Tbg4zUH{- zENeyihG~^6Ik<_EB}{q7&~2kQB%WRXMV-zyP(S=~6c3nSa{Ar^zRNP2N5XSJhsAJR zu&!TC?8%@6+A^9)4g6;8@z$^idSNuL9?7KYEDbi&Iprr_0TUDkDn^*LKz@V65QHaL zh8nllJ7Y)CgJYEYOcnKg2_=KxF;1!EB$JcF+At&#V|hvBK?jxgDgV*vMvwu-$4n>2 z@=NuMbr#5#G>3IV%Es}VY#Zm4O-7GUskLp6bE!3wqVs}$)nZmBz&;$1xN3KtgRULV zA6au25EXcMS%mqB4eKD>1oV%~Sbo0f8Q=LfQZ2 z^RKG{o{A8Mf_%a>o`jAXbk2(JhPvjWY07Ohjq=_A`W?>`OtyENMt=;*dj@A+`)sg8 z8=`O)J?}`Dm4UO<_$>hD03Up-$q5P375)pdY>RcDvjo$TFr!{CdhKr_lu)H-qOQt_F?)?i=hW^ul0tHXonCsf6^OwiSk(VFCwZ z-R>DmMEeq0u()YxX6Mf27cDu8kkPv`bS5>=RMyx`r$pStbq|zYJ)&&vEZ!r~WmSUl z>{*=VmTZpo(9R;BLlBX81ZAG)dNH(X4&{}QUv_k%D%{sy4Rt2I&kt05*A(5I7y z4asDr#;SsK?PcRhHBks zpMu6HgD~!5!^LEDZwf@HG#gw^OODDbU(5CBSycBZOpnhdu#afTOti5e@v5bZ#m)p7 zh@}<)uH3VOwf5y)%N7@6WuohEaRQSNWl5pt5+!{vrh-bOPUlPHT5sz46==3U!0#V6 zhtIyIC zfTQQ~r%9Wits9f|w0$n8m_6QT2yN|v9mC#8v&>Vy;fd)~*A-$R-8@c%U6xh)oWo$mR3)V1wIb=|#yFO!Y0TEV}$ z4_MJn3pgS*EO3^{iGi$+piATm4uvfN79SHrpMJ+c79d7DfuzR(RF8Ar<*o zuJyvlNKM1n5ofR9&>Ps$d+7ithce6FU4sNCHj2Kh0vA4^Q-2DxNvu1x-B3 zp*vk`)zXqS18a>Wa-TP5DIfE;C#)l(CE{d!!4Pd882-tkf(H@k*rw_^Dl5yr%vmTN z#;ZpJzh;>-VVj^{*u2a+R8H;!>YErl1jVvcnQy~>BHlMLQ$tIyRCd`?>dA|rOh>Nd z>_Lb;2qtf+0jH&^rerVWVh741$y8k!6GXR{Iyq5K66%IY%KM}Jiac;93VIhydBW{w zPDxj{zYe;3-H=$9zHo(VXjp?@AU#*c;k>KNd9`>IsR^1}fZ$v1b+S$}bcaJ@vgm-9 zm!JJaB9u{o^cYms3(|1Z3mf3jn0l3RF@?vx-jPP_kE36*_9~uGC{dvq{WQAH%~$bv zdi4=wX3H|&1XoJ6fFI93TECn@QWTN?_|Km`R}KL?7=C*F#*(yVeP zi=i)|Mvq}SMQ$<3ARxkys0Y#)yd2ycki?%A{R`-9VFE&8M0`EZ7Ck3pbKE-bz)1TDIL9 zwxwsA6VX}rLiCdZb=LymHk-5I6fu6YRkqrW4v8B}+bfjhWCqoj;V$!W1>aF?u1d|N zsMX3c7(soH0M^ufCRpZAb(`S(z3&-7N_MX1)n45S#gPwJ^UL+E3z|aNYxo$I&31TG zn5k-w5?fz~lCA1GELE7BhlQr_%7>!~x)Dp@z#FrcU);V#H`oScc<;3XJ(&?Yu{VX+ zOU5nnD(nNPp@+U$D|fqZopXV*xV$r?J+x&VFM9BAVrX|MPQT~ZasC43MA&?XLa@Mu z4g{Gi`FmleJe(F)@*5$00t9Izw7B+F@@&e3NZu1qKE&BBU}hlmJfEP#f)Gnk=+8vF zpIya6@jw1C+p72hJU7DH7HCE@HQa>sP}K-IQRU1QOGJVTaAOOh+%3t$lv(X$-CKz4 z3WwcQ)%;@HtDRDkuBcWU?W=;7cWyeweJ)jVdADT(tOXnLW8?frzLM8i_9%c;dun)< zH&=V&>39vlU)~ZBwR3-hc2u2S7aWQhCVimSZ|cv-yl?1|s39!eY=qL1U*xl7y>p3p z>_hAMLXG>Obl(W_jg3~X-_kFrJ04i;Wg9sERza)@dQ7zvFF*uJmN&$TT1BOq0&1Ok z;=^kiQgi5V3}f88UVzvAHAztZs#T6cAY`L7X=-(R1li9c12EO#O!>2x#~cjk@pR;C zj)1xeK1k0AlORr4^NbtHL95bZa{=c$Y%+1A2F`bxz^r!opbv6K59k2T2_sC{uv-wuJ+M zYRnT&%Om1=k{45BMN~0Wg(CH6-pVZm0i&Zgw(_%sWecd#PjLp*oQ-Q?{-_)leb)!L zeI7x6+Qw%X#MH9rxZbIu-P?F!R>y><)7#2_)c+0u)xf=Mpt$Y)4SC!7j)gA&Sc+W% z{&VYg{)CpdL#3>(Jl_K9oTJ2sY0;uZ-FcH<1x`UO5|@D2qN8cnM+x%k(IEVZ8**SQ z4E?MWxfmx6=&R+{d7>%uV6bd-v`j~jG`Ad8hD*1^YMp>8Px7u^z7fZ_3aSxE+<*u- zx}o*F!TV+#QJGFj)zXCkeVD0e()?L|7y-=Pb=0k|NUp z+b>?ysN+V`<`=@lEs4vQ53DDl- zu6X3WP_(joZ*fWvde1Q6+>r9a8TD5FN$IWJ7V<;usry!5=ZIve)WcQIkhregj~Wno zpXz9Ia4K%&sq1_MYt?PSeeK|Fd@sFZC&l7R z(Kf2GB^&ABwOWS4Os1O8l19?S+m-xgh&G*~E(L}dN~g^$oW(<4a(zrdL`z{bMJ8h=f?UcR7cN5owQu;{+s%!;$5(tJ!Bj?@L2>k-u-N>s$ z+D&%9WlN{ijr`h;J5tdFxWkz$-V32ERb1OAZA5_<+6C&7)R7^|Glw*8b-hZma#(P* z{N?`v>xq%2hOQU`4QW#1^OIPhl6myP5wi?W{rbyCo0RK;2zSl9Q2Mg`gST$aeW{EY zqLP0oIEU5Th0QNa90D;8ZvNygM$#~$2w|(PCKPQI;~=h43D2V5dw?4nzDN1%474** z#jD!GbG&_zQ?lD9+>2IF)^K=ge7{FYrYBI%6>$@kmo4z|RoeR!4759+iH^2II%4v) z*;7i3{qhk|Zw#aMWntky;!P&|o^GLTV$}diR7AYgL8WELge;B>upO?wES0*pASbkp zHJSSN_y4b2(f5Z!znjdr_?*>H;2V1<52I?%p~A^Z{vAGsp1YHmSa*thBt;)cmPt|F z@BqIKysTxaY_JS^a4-M9Ot630E0>P%E{gT{@aV<~PQpK;X_Py@=}$8F-ueNJW?Ku@H_Ho}}(CC?8fg^;bX+{xNt zirCMoJ+#=Q?1o*pu1W#gc+a3WU$>tl==LycDs4Y#)L2E`{x7m(OgxAQ0bqRIdT-?h z9N_A8v115WfyEyNCFsy{;h-kFf3{JEWM%2rd=+1ypNXKy|6H>ZJhZLraJGGaGK9f^ zqUHpsrG?hDI9cl^S)g1bqGl;m5hm^t5*BT4YD`T zd&U_;N8XIp_RGae;er1?z*(pDL8sJAEtmvqYrusY*2W46&+GK8-6( zNxpX={<1x9kWAFNKY%6l{)ae>b<{%qx-}~k77;PYIGP_)vMu31)i6pMYLK@!evz&p zW3#CJ5GVr|*Xq=j35c^SMK@=K6w#pv0q}Ukm?BDyzI0#^ATn&F(xr)dy5h+MM#Um2 z9E>Rum=3z`4%}|rM@2LDY6N*T8H3Gp1uRg0W9?;g{Qz<^&3=?83XyjV-4zeDs?G-# zOTjth4aP08^N?sO{Hali>R_LxnMIvfgfe9^27{w$`#!};S07LcHe;!NV$#@P{`Zp9 z6jY)PaH+QE;dD;7a~}$nQK_HrTKO0sS@n-OFBfN%?W1I*ijUeOXx#y=3=~p%rp z{QI8+a%jTi+~{c(uGXD-C|6cL&L83DpVH%xa~$qDZyHMH9_OPyU~kZ98hubHKY`Tz zB@6)T4)QWaRfjD;Y1fbFMx8jwXK`0aNScL>$yXF8;Y@Oz+%LylY4jluQf=;FT+t62 zBk0ttnOcK#oYr18T(p@o=sD%rpk?=eoJcPz|0d};y>G?1l;M+VF#-{!{CB_c!Kv%h z845Cj@_bPlv=ho{zE*x*soMkkO)wpN5?RWaR*q_F;TKftMHoTw_iePPm3Lal)Ub52 zxY${uqm@e+LSVMZeMn2tM7L9J8-KdwI`tlo(&;N!s4h_;EZ{_3igM3&jZhojtjUxc zv$M^)Sj?tWoY;L1QYvLn@GR6k!NClr0e&9LQAYb}bumS;IqNfGP(XSp%rudkX#)du})<&XjnFqI7NNBX7x;lLP)p8xO9 z^2^p&xRWXSIsT7=iJ|BQJO{zl70>al*!uz$hH|^XzI^C81|X=%S6r~D|FYS79e^^`-|E$3OvmRq03Zga zqudvqLOQ+s@j%Foeqjot_WwXlZ`lic5LLb4WUEPFjGqb_L;rk%b7CnMk2n!wg<%&Q zM1`XpF9V1tNe2lhZGVx22PP7gzPoHHZy9E|@sP8N(^{~?W_mYOskw{&JZ$FkAAz*= zV@oqsQc}%*=(3l+q*RKss3Q~T|Ki6*Jby_Ws_a-6DHdqj6VL+vg+F>)B`&zhx{y3r(*ovs@+N7~`YSJKy zZ76%0lU;8!tUI0s%TVl(fMao^sP`_Th4uxo)w3-7H8@emnsJm9N@?wI&rv?Ku55@e zq(6@;OXMW>kg6f4v6KqSf_`v#*FBJr$UhNarYkQ(40m%oA1wh5Nl1kriZ@gH=cX_^ z)~>{-TTr$N>)^NUdlnU>X&oGY?I+QRs%sApQgg{7@}%e|&}$t^%VZc8^ystcvCmn2 zuXvYCNTQPKUY0DZg$OL0y1fP4hSNQ<|$PM$o0NtE(^E31`=~Z4i z_9_p$xNk-1q*T^AKhs-caPrH*NrgSR+W73+2#LV&Ugb^Lx5gvwTNqRY(X)xr64>^d z(}Cri`E;O!w@ZqNjFFllDN+_}o}cm(=>aJ7k7kISny!)f;1WI17Z&qRSUFcXyI zW3MYKw=f9Us3niQx12-88WieVW@NXbrKIf2t~LOc|1&2_1?;uI#U*9)k;Ggm zzOR^9v96p4D_}er145s!Gfk6-?Qp#!1g4CS970o-<^#+F~uHV<#htMy_ zlvO`QG_oNy{~kAY`r&!o-&4}g6l*k^GRvzfRoA=P%jW#G|E!^3-cxD>#~J4%)BXJS zQAu0;S-f0v*a1=t$Rel$(E9J+1H~^T0l2daiRZ`1`BQq2JJZEP$c9_7CsGILKIQx) zh=gGJe+H@W(rhSjY&^jmbhkce5uH~4LmpfWAEOK!)5#09{u(rUZC3y$JgZYl&r-;n z0&&voIynf*guZoFbf~4Mc;2+4*`=yY7%WzD$o7o|!Y=C*WkbFv5A3+~$N*d^edE9a zS$8{Tx2!!-_7APGsj@n)p$EIyle(s>ozJq zMTsq~{-@PI6P5#)^yvG%ro0zYBWc#5DXT1pYQlliZ*FzM9&M^# zX6WEb#nGmZc$Kw%3ya(KrP??;@(~BpyotIYqHz&K7u8RhMs1&fwphI!d0^4U{8atY zb;TnxgXxx!c|H7JJ+Cl2{joCj#nktUaSWw@qO|iR>SDBdstT!|+%^}~GC$$Pb2K2J zfJ~qAI)N%MuB{W`*DD;>Wh4My*cd*99{-fLUEZPypw@P!*nKL6Qho#WR@=UfmY4)^7Pz6F z%xt~KKIdm`{2F@QC~au_(Q}$+&%NC@JppM#!60fbPDhscYUd3mInA8 z2ox(FZ%4%c{7cTV0B(g)@-?9viL&pvCvu-;w1^aVl*%PrPx6=N=DK2iAH>8p)%`4E zO24U+_7v}rf^MvR_gg_RH1m{lW%I+(wkp5VcuFa{NDNN`bPFVvr{lN8k(ARLWim}H zm^7ns_GCU8s!lt-G8T;w%Lzm1n#Qdt{|zij&YZbo1+&xmkL0ng@?q5`v1d*i#L`kS zB^3`aK;fDM`foGnh~f)cDiRWWVL^I2D{A^hU#IF(xOM;<@JFEhcZgQSQ+s2m&B}Eh zHTn;w;+ry%T53=Tf4zs-Pr<6>RJz#1BLE#hS@wpoz!+ijB$#;{p*F*hidZR&0w>-I z9YMCQc##9-DJ`h81b}~itsi(P<#~#eV{_@bubj-3DIxFmFu#rc3Zi)=}a&oGD7t{pJlI-u>+x&Z!{b zjkIM;uqs0e;sl2FWf))VE7Tb1&u{oqVKAwP|NfC=()VAw0m|EfscipL>*wE&OUt0T zH^Lxopn*2XJKrj>6~BF2SyOzF{o3;78%2AlKkWeV4eV6tdeQ9fI1b8ex3dF;=exdB zc8{>dYyXaswSZ74QsSoXmEbi?xT{Um`=RRMghY`XUi0+W=>S-OHy^r^0)VZ9D$nO}Cc6IL9AD)@bnxE{tK#h7hUhrM0G$u}f1K0h;OCM3 zc>wTFPZ(sR@!O^MYE!^{j;8$LbS1V*$_`}Lp~Z2AClr=9l2UJ@8E1Iipr9%9If)jj zDoFre@(dp?QpU9TDNT?~YA8(H)E_hI3lXSVzq6+sXO>s4QcDM(vuI?Ny$;pFx*vFB zH2%QQDwrZBQSZOB5jJt=O_~Y`XVoakbC$sjCCh*jEIk|&o6kvG2uHvx!R2@tUqV$C&^$$|H~)JN$OPu+EB$ zz>ymdPQJBQ>G{o~f&(}czl^c=7Ze&|GKSFMUS8a|XNCFNU>o#nud)S32~=zjjp^e> zT<{1YB1ooitLS6;h?qoQHS+)0`gjidW>}KxLLVF*p{Mq>37X#7&nj0`;S6Q*P7X_M7Y8KJ!Mv$B~{0H=od*hq@`g;%!skY%E&Ty9D=78YW63FwaluTcp= zRrx%>A64yT(FDml6}6a~nHWJ=zu@xMx0j*R(4A*+(86E&3p)hkp;O3+c7{aV74&2}T1~{Gr6TLb99VN711_ zlp}6eD4^&X7z`h1V}+o`m9S*4+lOjl)$;)wI@LCaVSo!MZxgNp&A;Qs&FVlErgI1z ztH?eu#H$=s^rj8qr~DupE%UC7$ns@C3P&E_m-+W?ba#tn2f*OzQ1)YJCOBERZ3AAgFOa61qAXlDv+?ubz;a&*W%-;sNI2oQOI8Q?so)7ohfIy9iybtRNSoaYy@mie?oZ zD}|Yb4dy|1Hxg{Lbe8L15cjX&wvHq z`Boy5=1~c1FUGEO4VDLb0$eq*i9Zg4-^bi|wT;yCDU8l-MIpgL^lzZ1OpDGXfvzRH z%?e;MO0SH}dH_=4og=$pxJQB)mjaK9$Mh~)i|kp0qIvJfdL+B2<3T*qyJY3OUU)N9 z8$dNWGQthL=RUT*0hm3RRvTP$aMAhA2B_AFc%}ds;CCY-LvT4yrTteR=A;;15=_*W zgh8%;3{K;-{{{(z-IIgma_zVdB=%zAt8#b{D5#Gc`IB=`4N9bo>!b3>Y~r8fJpkBD zu_oO_<4i8er1zR!+`k=6RWn1P>1`7~c~=u4tF|<};)}U4DrGV6ZRp!eU$Wj7^pqBx zT`ZDQ7M(+XUK7ZOlSwRUZZkxvj(uH;urANFxa3LKaY1mbuMN=IG4?Vy@7EscOGFCZ zU~w@3Uai#`CrL0pAITjPLs2Sy1<8H1m4{xH=u|@RQY%lGr#8BXn#(XFFI!!F)O>|o zZT=yPiGHj#kk74Bnfdi0u0>+Q?S4csV>Y7Tp$(NA9Q_(JT-|q= zLuh)aONwQ{>ME1mWy196t#dWb7tY#K$btbk=uAWILvn|P9r9kMB6k2o(jMlL0Bj(vC9VcmjKR^kt~>bQJPsFwnZ83V zCG}WubMWV=v^6~)ad1o*=trpE@jnN=kNQU4Th_s})ajD^c=WgxdEUF79Klunr%+m2 zoT=`6WSqG&EEEYo^>|wDa>)v*EE437HP~ps%Oy{%mUAE-R}U30QLVSr(Pn%d zK^#37$pd6NG|1uW4jW9CDBjKXROrm*N4X@2r6eva%?ySr+SJPR)#pX?v9$~^4JjvZ zB8oq_CyGy;#?Yy)*BZ;q1N9??PPFY2uKPjhhH(vX{E8h* zBare;(uFxDPo4>$-lVC8s3lHOUN(dBe$pq+S+wRYtKo$>gHHn@sUL6c^kQ6M~-kU>se?;P%0o{9t?kcase~=w?9&{7X;=SNe)=Rugl7Qgu>!Idk(BV#}0NTLAv|pbDOVJHDQ(A{5Tbd?(Cle#t z{A)O1z}Jt3FY3-(Tq|P|I5>9v5Sl`>6L@Y|p?Gkl!vL`Hw3+;w;1K1|dkOsQJz-$a zH|)bzTc7Cih~VShg1`)YaA^``dD%4@rSX+D9Qo$cj zpt5)Dusi!4r^M=HmlS~jE*h-VD?;PUz?dT`RArrD!48Q}6)R;);faFsKEMipWyZ}& z;a$Nf2q9MV;vS0ApzfdsTV&6Ooa za(|j@zFdDfNR?Hn6wr7tphjkVq#i?(?d|A%)zq795jWWrG})Br9= z7Ux7QSuW6i zP#cT2sa8AcsPn5uF5w65)Vu=wg@$Ry%+Sj@y~u_fwx6OQ4V7)PfiShU88t?=^jUk^ zSSoNMYbrZqmXj{CR>x4@2myEMa1j`)WOSm!05F4r9vsSnS*97q{{kpr|3+xKoE@s1 zA@>7X)twL8R_-vKC53Rj@8Sk?}yZxG-?EgJ=~e3!-<7%9HE3ck?2Fu!fHm)C|u{QPi>286+V){s4ARtOW1nM3*oUI@H%Lom0P7NTHe9LtaEy&iS&#bec!Ee0ly z!QdX;J=VoNr%7bH1HYbA8Wc?5jpZ5WD~B9w^KU68=oO?G^?ubf${WXFu56rZtk@%v zs)F25Bvi_CFJx#evSZ#496={Q$`&GQjdwAWa{|@J;1aw4TVPG*j(5p^i4X%l!&27H?|ljL0-1(Cx6{@fa_=<94Z6VdH2r2YUR1%0WRMQ1c@r;T5 zO^v5;Td13YENbgSWlG=@aTY|X-Aiz<|70SsWyxv)f^ z&s8;v^Qps=Tr0$XOIiKgTdmgr1qL>n!Ex?A23zvollcqwPj;;of6^8R8$@JvMw(K{ zs}3hEN_rD*HrUxf_`ji$hY^OT;P^r~iH<2hX}lvS#dkT+iv4m9kD&U?UT?VH8MyIu z%4mIm!M*QZV|(VHfE*LwXLPI*(6o5onOKM|Hq|Cq|JB)_7)1z*|~qLFuxfLV|MYWNf; zjk(j5iTMcT9Ic?7ji2vfb19Sju?}8?pUnZ206E{0&k;03;7Rl|fQiSK;S?tw#Yn_cT}x zkI&%g>iGx!*hhzjH*K2+g}Q}7Oaop8J;u`SV&UvNlLIZP`jGL>(z-3OuP=yY9Fv$z z_c_WXi(W^;;?VbYc{!KF8rvnPmeuV_lNc6>RF#a>+*us%{^Fh`FGD@=L}ycbhTR4u z2!qVU+Q!F^rgH|J-L_Dw!3AD~1v6(Z;#Y&g?Ek^8zEkAl zvIsN-6XD5JeFywWE);PPZ65<^t^8tFI*?Fh!T96W6)@dB{XNvM_!E0CxKS_t0Xl_W z7V`o+SL_-rCf@GD4Xb%5E)EMz_^3q@D3|t?C|@^QP$(cFy#h8AOQ&k(h)Rcb=*Xwg zxH-y&L?C*L&xEPTkVH4uwFXBB6ZIA7gKU_)W+OjJ*BrUXd~;nTa<}d_jHaD)U3@LZ zagi1nM#q;10?am7sj*I=f?p!S=xCxjrm1c$up%Mxdf2dQg5=-NggVfKc}i+Cn&FYv z^LQ$x;C<^nSB5-`(y8kPE%YOX#rA8^z@i=*LZC)1G0A(OtrUt@rwj&zeZ#z}!nGCa zDk}Zii!CPv2*CNAcC;)_7(y8fl*}QXTBhp4DgV4iqXz;}IXhcsf&hPfWTMI*sqc#) zM(*k8LY-Z}QxUMxH4YOO@I_!EwKoSksCaOoEXT<^OzZFn8y#54Tl&Nm@CDodN#bB- zUPS@Wqzo|+Z{H*EWU~2O>4*h(Gu?aze@D?4K)Q3LqoMWT6&&x|zC>#R-7Rr~HF=i{ z9eg{QCLZOJrJ#BK^8q>ivz`n?)z;-m`w|!PvOBFaDbV`y+v4E-F+H3c`o9{7QTxb9 zBfYa&nb!aMNAOJRf34ajSj*#F^i4CR=Pb6_M+f4!6jVd>4cY9hQ z^)7KGW0(rUF--0`W;@MX%2DXbr7kHFAt-lns0AXX_))WZgWVmHoJE1lTrT`+)uO-z zl$K$V(p!#mC~jyV->b%G<9*xEor;_1m%6HKQMxb*bWGG&gZP~N=w;k4@` z1Q^?uE=g(uhdS2`uZ;oP@aTqksCYJR$lI^vnX_Jp+Lf&d$d6aARPq|{AW#5TBjEKu zlIn=<()Z^nGW~T!rkReGa!P_e zAkOz3vpRwjf7sap!K7>TyD8} zWbu3mb(%7DbUh-T{2?&+D+k5U*pxx0kgV~g8`rO$C`y*<9YJt~;R0di{s8&f!efIfr=;d&qKcz?J3zlx%1MZX9g2;ehs3h&)fj6mE5! zD%^IKLfytKOK9D!ROq%dh4yXe@AG}0_XWMbzwQm;ocI0CXM6_#hh7eXopTi^{~(o#8*+LuFSvG2~v5JkwJR$i+*kvax^DK)$nJda9U20!meF|{b1>Kb-V zQ@UxHgnCDoIaqSAb#;P>6jAmeG>o=hlWwB?yD_u1Ch$cfG&M z+iEk?!kNLcTkZk_vFpaP)N>xW_aN*eN`DH5GS*6ouiG1=f%SVvSzk{y2AWXvKF8}w zk^0)a$#LYrN^apyqjeHpwn`oWQ$NuJj(p94$4SnQSc};yfW;p_Ebc|{%u1sdpSGDT z2_>}~&LQ{o8&YvTTKqz+3Wj_x?FV*SD4u@jOojhnir}aZC7_lA7bl`SjGV%?Ut^6S zSGl&ZH4aU-0VXf2%4J(9m2ey029Y3~J9NopXuYEbq~s{CYIIvDWva+7qS%%}XHWQY z&nLggFUk8)_=r@j(EmT>Yi@fRK6VBLxt2@a@pDj zJt8p0p_zM6i0}Dw;1w0pw#oU+j*9YHfV4X*BsfBi6I|~5!p_BY|Kn!84r=@dj|wY$LG z76H^&g`W-Cg&*DS#m#!!DDE%oGl-hftL0$yc7-p2}o$f+zN@}o)be&-dcW1NC`W2?QL%G-!ppzY#czft!I63N^+x*Rt0xMh!1nIMNj$jEB zoZf4lzEt=P)^BNwk?%0e2FaZJULC?*pz0kCESMrk5Pi5omKADpsA>IWvDlE3!os<3 zFoW@IloC1%+_YRA3e=5n66}{YYCYsMs;+QE(W@J^Msp^0Cr3un=G)>8-c4G4@9x-4 znu!1437sS+&M8Lxeu=*q)={O$o+xfDHNng=j$I7RM|Oqf?MQLWI;vXSYaq$LFL46R`k@yZX|2AW~*W8gP&) ze?PrSF1ib_VKCC2TX{b=m+VSv&c2De_UI;MQph&hVTG5Zp&&fN5>0L^D3EV@$OuEE3p8mmXfC&G4w;dc63jpexJB$I+kH9dHw?y)eQ~W^7ywATk<~u4!+SK zM+)2{0N+%FdW%E+jq8h3pjLA&%sdueD+kee^=)b#>BBc7TqZ`)_t(l6sg8w9M$a@{ z>h9~LpV=CPf?wAw(H<&zEoER$DOaV!KLT`kmCvcvSa?zav(WVvN?9{z&6zG+s(k^n z6gZq&sB3;gplLzD{9+L3<=?Wdcg$AP%Cd-!*Gna%TmPXdpXNQ`XQ3%KXwlweI-3ra+fOg;D$X6fIdxK+v`rktbAW^ySMtR}(CVLolYzPfDDMhw{CBe{@jvKW_ zIAK7~8qT^0hj6s4FyY?KU z!*c+(lGenXd zw`*DRMbtgPolnts$U@~lt8VM7=TSiUAtbvNg^Z3nWc8j1Mex<}2{6Wn?Xq>Ow_xjK zHTuKVWV-~!tO#`Db{X`}Jlx^7ACn^J@OFntro+!#DZpo5VdYy4^US|`%MS|C!tY?K*cuPV30WwFB~jxBZd5Nx5+i5p9mO%4y=aO0$w@cY$v zd678k%*At@ZjvG71G#EqQk-#ad4(=6kb9?tIcg0fKus<+qtjZSm=H*B8Kjl$zEn9T zXq;iLE1$hnilR(Wt6zoEp82LE3+?(YkfDUIh)4r07nFq47y9s<`z#EGtX)ROsr(+9^89DQfInzM zv8HPXbZZ~DN4so_mAv*v^u`+&DRFrQN?aUQL8FL-6i2u<%4kaE{Kc_)Gxhk zDvAwB`hP%W)=BFLgUZB9yQKbFw%4E}CN1Q=Upv&th&fc>Z!uP~g*j#6eH(*Py7Fbb z_kP(*t&<_%;6CIB`sV#IZn_!>_otzyHHOM}YX?v=Gj~kowT0`-v>7IV^2VxN3dihd zs(2c7ihYZert%)`W=E&@R6we?JH|m3d*u8ndLLz^C-!K2`8#JOeY;0+EA9V)2u|DM zfO1<8K{7ADMNTA$_CgM)-VmUIpxpkoioINR@m_C(vzs1bg09-!X=E6Sf8p62@RxTeo`X@!?T(02ddiCfbd>!r+y>|oKw z0VlGZ_0AX?`-oO=m_YqD(92doA}hJ*YM2)9e?$_GMjr&yV3C{XlSd?31C}$zFvv$? zEn3i#fi=4hH{a!tYUA;!qku=u4b{lTwivT%Zo$Io+NPV*Y=3h!?QjD#68mr@U(~J2 z_N^xX==-|IBq3?=;Ck<`QT9(Ti~w!5wsuhRE{AfuU5T`KuWS-9 zm6C7^Sm1@XS2lkBLy?K}{$4q#8=l8G*Z660I&}?&#?sh*^8AoMf}xTTB(P2U9I~58fusTWvRCJ0pe&&3WCGLeytKWK_q*p@0WSXcEj6xd!Uc>a(;~l zc6YyHl=|HK5ko?}0X8>9v`L0`+=Zja-JBdqwQVv*Mdb*=ZMWepKAD+>hS}{yrI|ff z>_z?BH4(o?Gl4?I}2*SZdRP0 zuH1)Z`BxuGO`|LRA?HSCF<@66zeCb{`+W}MIfX$OZ^Nv<2-&~o(|99&_crQAJ^#>7 zM5K5(qC?k(>Zj7~CrjF6`T<5wiF#c$p1)y3_ zgMWZR>dva2wqj+OUJj%D149t`Dii7*Ps={Ef1;ogwWyGGoJ3pxGSH3d0Js)PI{m)2bntL|_>yEt$Um8o1o1ny^mI&@-hW4P#76nH<9pcpgtV6Uga_FUOP#G?IPJX@QImdE%4N&@9iVAlV@x*NGEEq6Fo!xCgw(1YgJxL* zl)A#NtB)U4IeJU{gS*rA_|^z4h6wK1mN;QXCU48l8h$A$CA9M z2n&zDq;2g*RJ}NK7TN9#44{bz<-CAa5MuNmmEVa z$01d3+Y9V=Plrq<(&a4LIv<6+xnlzu=MUYW6sqdf8W!V~x6p9<_8!T7a&l3tsOk(0 zGQrz?zyQ$Q86GpgfAVULZ`Yyu=$~=}DXfIK3043kS5%gS^gf~9`I9=6Ak*n%+IdKuZ4)>7t z#jYqlxV?-zhg;`R_^WdNfbfz;^Iny;$`I|m(>TH!UX>sa_>~av4ls1Ld@F)2XRI@AN2B9tUNPHtPXRd*U#M*9Z{b zSFg!w086Y`DmB<5Obcf%m^GlitE8eW^D8$A&Oke{O=%wUtlE6|HE+}oac~a7$h#W) z?Dvha@ll4d0IHGhxNzf~=?kZ8=vvPk0_Z4u!!aHO$&TuwlPT|}p&aftU7Qe4ZEvRr zk^jH67%7wNImqDq-m~)B^0^0?uEHlGOmvI>8}q4XgKxZdCk(NU|4Uv(p}@TlBC2)2 z=@5;5TzT)7<0yNy44zckVC7MmKZ^>Y?V`ob~s9%LE69;{X zSxf5vx8x9Nf6GyfPX)Lf(Qt(ofaAN+VY@#G))o^EYZd1U#iek=VQCk@**u;O9F~R0 zid^m&lifi`AXg1ECqGJZc=K^SXI?mj0W|#&`mxMP7`Ap{Sxp(_RaeyL`TuC;h80Dz zYfO4Es9gaU{(4(h6*Q#MsL#)>@2Q-%@o+kLM-EQ(VPYuHlN3T%KN4i3L#a~LX?P7g zJMf5n05nEf#1aX#GSj{2h%DWPHWWImeoiyctw*%HdK|SL2aN2cBeKsBA&Lb+{oS^p zX47*<2z|(F!wMlA@Dllal~q8D` zQjR#AyXA(4cr4Jken}ZxXo>Lkucdlm!fc3%5RSCkkoBJfo&kNf~LY8HH@N znzzGt3y`dm$5P;j+hgIraO*c%=}<$kS{78+)D;X;?~2OOW>e{VvMLzSu;V@H>Gn=E zhj{;naBNR}pgjyV(&Fj!OBP%_W5z6TKJ-543(HTq_v@2uLxvot3G8BFwA7CE|Kuk748-Ldavgq4CkUD<<2U1eEzZRPc z_1}3L)-To9oP8Toi5}%N+47-$46a|L7#c)w7X*Gj|IiVIP1`j_;-q~GK;_H( zw_JHp6GwQl$~d6#4h@iuxMVu`Zz*SWULEY9svicx$E={=_KfPJex#)he*q?*S8j^6 zu|!V#pFYl;-Fw23tq$J&pWyT0ejw6cm7ND0d}Svj z`#^;a21Kh+A%e(%%k1 z9DD2MTBeL z(a-Sz1fW>r7<4%Z7X27*r8~aV4*fjpcf(nwB_7$9<=qIquMKkAOx{N*b$l5MDbXL3 zCE@)vjr(H;+Vz!;MsE{tm9EQ8=p!_v&wb)6i4v?|%lQd0kx=h10qL~w?;uW$8)D^n zq2PG@aQG7?f>HXlY!23S?)Wh%#B?q~f?&#`d)j!yk?i09jVz<~ZyeKbo=tjSCO}~#4#vIlI5Ph{ zE%+^aE~vnh9*EF;&DBTK@S5KV%C-MELQq^L0d%Ae7`4;i$x#R)qey6_0F^u9q^zm3 zr%=7CpAJKmEhpvan@-9dmj9bCqwvk-|GjLO)=(70Mt(1cQ2sRMaKi#L4CE|jWyJ$6 zfPNkNURKwU+;}iZ*Vs@MI;C9|Nvg;9Rgf>uJEfuar%?N6?ku|E!%%~D0ZWRY!lLab zu%JeHzX&jq&uMMRn}FRLcUsP5phZV3T$b8x%*3`WNlc_SPiv>Ka%QzH4Gj({uNAGu zInemkJIpw%lh7E4^8DJMcn0~F^+}I~afEJ5@(5bg=WjF@S3=@(fc$Z$PiR+j`yF#Q z-n$*Bz=~9~yt?`|B0S6@JjP*)HfAM5Nn$Xi{h%EIF;qPY8~SvOA;3^IP$1EzXaRls zK^x>BdU>$(!+CU>c{}V3=?lr^zrW!en6BWjck8trIbnp(Q|)-$8+WvK$q)>NB?k?JnOaJ z0dhIT`)qiiNvo*HhU9iz$Bqy?`TZ%Q3GQ+dbv+KX-NHYm9Nh3!5};C-!#Qr-pYqWB z{tP(k`X$_tUi(uvTT>J?xncV_P3K>C=Eq4NoEH5hf5|E!J#VA4*LGka$+oxHK+670 zPK@5ar0&oBHRfo{J)?!z2h*|v!CO{Vv9PjSAdUn{JQR4~&1Dn*$Lp?690#g15 zo=oL#B6q&{h5*qiWM`O@5qzFHNYQ{3>`x{CviR?u$C4F0%ba|kyDQ?r0V{=hkb8Pi zz|Jo45fz3qm8yRhNOUTJ4Jesi<(EY*25IPy?6nJnP<$M#b>#4%4D1$CDIJpGp^VSeB zlKarA+hK5WB_FC-qv?*V20i9x^`w>=1|YDF@;A_B;l_R?(6Z{4VQPFKeQT7__c?9_ zza|&w&Y9;Tb(BngkhY3~oZM6I8wG34##bO(aW=@wXCrH(yG_n?9>a?hG|>HBCYcUM z>gCWUCMUmS_f?_5R+ydKb7{9)GsBc=z*I%US*H(+LT(m~Gz0Kng>|ymEHeg%C#wZT zlD|b;2>FSrwCI5NET%B_y~gGY|NoBNnGvI5K>6BBfeI6sGMf zbWWFO{{i^o6y8}EQU8SqWV4PXhf~ROIF{Tikq!M}l{bdtCyN*G%=a&b*D_~A9p49{ zO8P6ztvA`UEx93Vbn}b*d6;^)p`+l=1jXZw&B?cq&x7DgR>7T$>c2z>VvjSN*RTE0 zs5B~#0P%Q}-6^f?EUEguJv2Cw9<@6aIz;n=& zsgOz~`3t7XMz0Q*Ip=f0*5$U+th+pX1q~XsT0&$cp@qzdFi6*=Q%7`^FIne?1$G%o-*>CYRY8({Bk%U=i9w?pi%J6n{c$W^fC|@^T z5Ww$)zc)Wv17X3R4{LfYkO}qwf=Lsgf_zBu?EYZ~pzVrGaoj2klXC}3sqxei=49-u z&&~13fUb-M@ZgOg-D3@KWHh|qGz8P!aCwO8#qbuW3U}tH1q;{6P;n$*axujC4u{KL zP-HUiw`K>K9olO901W174yPSs4+-xi+U$^LLqyNKDfFKmPEKsvb|;ObDEJ|%&(Dbh zKVXJa_5yeRs+=;$O-?6wGjd~7fdjrN$lN?{sgc56+KDrY?1>h*^_qMn*qA|OWfm-i z->sp61CC$l-Jv?~ax%#pHCpz$YCi(D_Us7RH$ATKd1QXfpP^k{5zdk7p{!d#$jgd! zGH(?mT1|)RmPpwX?B>_?IzZ-cN6K4>Day}b2KqD7$tQa26i6ah%?P%KvNHSp70ZBl zlq;p~0$AEFgR}agC?`iv{TZq3tQ>dabAxF}^~^&n&B*UQ?rEh`3G&I-G~TjB#2q>0LJuoj|i2MSL9C>tw20 zistCHSUKZC5CXLML7c|(#tdcr9ekFitHJgtFi*$p$p}l*gMDe$au=tLO+B$mbd6i~ zY-P21936JcQd5{F7R#I08XstxekCx(16|;OTiizTJo4+M9y!xX+u_jBRU2rb*F5s6 z0PUjTR_aXAB7*8P;7zKY4GS`=_tZwKy~YiV^3Pqib0MooraN zE34yj8&7uK1yiZ|aqvKT%n&KPBheYd2YWG9&q>dv(}_+e|93ulyf%o1jYDIs@A9FH zqu}V;_8Q>)^+^(nVEwth`z!`ad2PYUmFvnYv=p@eW#B8I_Y+Lt)%n3X_3n5+jv>5( z40p59Vp;&?fqt)1{%wA#v@uy`O&u@wywQESS z8sDN6CpXn09)g8;EHWTC6OFfXoO_f>1N$5Pl_Foj7zag%wPe<;SXEv-kW&_{X_sP(=ok0=f&$x#VRA9Ci;3;=Ae(|T*43!xq6O^R9*J^$ zH{!0{z0adRJ&!=kU67KvCPR*H)56oPm4Q-aO3;|EX>Vl%ZsD$}`G z4Ps-9D}xSX%8;|o8u&q(WX*DN5S;%Ws=|$LDdCOhTzVc{eFn%3D3c}8Em?AM_w4cm zhrG+z6rzgbB~uIL&6uT2*-R$S??5`4v*kQL-4>rs+m8*EGh`}cP4~PK5kq^jWf9r` zwC7My4J5O^%$9kBNA(ma^*H$g$a@I!M^%m-xhPiVP)ClO@Lf61xp*ONN?$hIDYUc2 z)P0|24!t;B=B0bMQv{MmsSTV+3wGN$^XQLpt6SZS3VpKKp!yGT-m=50s*euBTHr4& zVq*012<@UfzQ1>cpMEIqwQ5BAR(SHv}FvZa;iSTGE0N%y))4ec1;+lp(-RqL#FLA6dU8tW`puL;wYNN<0b4oRy%mHPiY zd_?GGl^+NOcg6V9E*xtAbI9?kDf0nA1uj@7%m2uU-v71g)C2B=TSbG1)_8c54{ zxpPljBgWD9<0VGmvK32u&6ps!&5{Yu4F0-Qac$i{LCe0Lf%Dl3mmSVMnmrBoA_1>M z5S<>xF>Awm)U~Q6%15_fhy7t&1(d^=ucqkMK^+q%Uh9v*Z*nSZ1B!`aCTZ(_WFXvF zCdoIJOmYgLXr98Z=CgjK8p0;!ncj2U6G#!0okF0&$#XmmMe3{36|B&I=%9wkWc`cF z!qZ|w0tXX( zyF8wq=A5g-ys6kI8Tpc3wLYcLK zG0|zw6Joe40|_rgPS+xn-C{!YS=uJf%O_rk=+)boB!^lEqcR^(?H;PXR<*rae{h`59|l|{Hd8v7PjM)vW4(H?zdBnWSAxATG1cM z)bhggXqvnp%)tFw9KkbZzo!G}k^5(92kkA^@$~&HSsPpl?Reb^_0Egw*v zf`H9k9}WoI53tB6pT`>m4n~L-KMgTa>pU&4oI<^24lIj#vb{kyfo$#q1hjcsvA*W1 z`SYeupQ8^7d)jtblU>16SA*0&Wu0z)TXzA>V4M747g`__)Sm-2RzX@ zy|Tk>CR$Y}L)8}nmpR>8T~C5@X4r5yjtQRREs`bb?tz|1%OR6qD(Z_frQ$S3j-S0H z1yJ1JWc^R;FM)s!kdS=S%RICN#M7xF-ey2f1C)FifUcPNGTM1ZVxa={BXB?S=Sy1d zu1gq3w?+y9x_4~ESX;@`6^PeY4EA#L;1b}g2b1;EQ}^w@AUxb+<7p^cAlY(%NdR&< zU7PUK0x2UDRffb+E}9jTRxBqOyhA6_hGN-E%Uw*K zPT)WBW8?_hlWq+#7Hk-ZnVGM$<6<6j&`yG|Aat# z<#0e;VBiA%$n!}tN8{Rw(JTB#*T*3x)?hoqwB=H{wVN)LvQN>2aOT@oy_i`Ed ze&uC?;fbWlmuof5X;iitS5M!YTrPJN0KNb)7Q+rLb`8+iecC@` zackOc03W-peyB+GZT zWTI)mXR%Wh4;3klrMSLatmUOlKWCpv6HPo8V=}Ym{{WjGDJrnMSGlZo#ta?v#w(j2)$6^jOJCuZZN6jS1QK@GX;?Ma|sXV zBp`!t_E_kyQi%g{auM^EK9TIwOOrYKe51W(+Gno>z$*Y*+6U;xR^W&H2sYDj>MAtY z=+!crIp%qk{)D|4uvCVDc_?sFwbP|bW#8Mjrvib#RI*KME8K(sglO%Nt!^-SmP$y0 z)>AmW^c~R7IuF~YB^gu^XGApBEtBs;5(SiGut#rfbbbhfP}}JM*b`4mHquYa_^rK( zNr)Ae4%6|rxru-!RL)L7Fs$9Vc6;npx?_=;tnS#G2phWP5#y)LgtBiS%C7H>B|-Jz&Ur?CefIcS`t-E z`MWXUxfaB`TVDX|^yZb4f1$aZNQYO-YGtA%ObKC4yGp)^#W-wZP<$?^N`v6t-Fh+-JX{E=+&>*y8q^Jk_5Yn&e^aRgk`z{dh<^ty6cE)9nCXfGvO zf|k_)lcm*}N`8advSM2{ADoE>eYBaY=M8N^fQ30x_M5v#=EA2R0*!6EQ;oE3joix( ze+5UjSBxS?M9GC!$_w`!e4wf_P0^;cSdaZ0-;he2r zr1i4!q=6i%Yl4M4C2l(NV7k;2Mj9c`awN^4{-}_nwqZ>w%RffYm`ZsWPbYNh>nr6* zgs^WM^*s=!r;K}MqT6kK2=E4Tm5eo;mceZ^3}$Dm^qQ7EA%pIiV76EmOwXS`b*5HL z8%qrbePU?I%UE^CA2RB3Yo8anT6QtO|AuNQq2yFcWnMMgDLZHg1lIGQdU4CqxDXvb zFi{b~!AqG6QMu#Q+O_eAA8W2!sc}2N=I$Ej2sI{WSEZ!V)*6`@fZ{Y%U*j3fPFIaK zooPYwre&*FEL*E%&_OumHkW-4kPMK*1D;o1Ah*{#qxihMSaB7nQTY}SIRC75iY7n2 z7%z=X31;=P{B`Tjg;_oCBYcEBF&!u!ZMV|CIyp@{>m)Jtl&85Ba*L~`1OA1~z-(Lu zF4~d}vX)MNoEk-ax#2c?A;hI;PsqGOsbgV`n;y?J@;X1gLDo|164Y!V@D)yrH_C#7 zeCjz7(6bx0Gbhom^^bG=5{*Bv=bPoGY=LST0lBKuKS z%Q7gsTK3ECtL2*QdIYk%P$L+o77Unn2^4#8ND^IljXX6z4Qik7q&n#EHS!ctgZFqh z%l~)Zl*m2+W}2{BLInVQF&DAPBdKk(tj+dcqjRWlvr|-ErRz?KTV%^2=>Q>i9d7TA zM(Cbw-Xg&jr=R5&!0c%mDr-6SHOGe1=`Gs5_B+5uBcJu<`R=R^L<931XiZdYl~cHW zs|0SX*QRkm4=b~wz}|hcRbI>fNhrd?D#SR$w#ip=Nv18*lH?s58>TH0cc2wk_&QGXuIpu}dasvedDGVr1}c3h5>n|m$iD!y zf`;AtXg}Ku)q_!#i!yD22^)8=7X!86;fsSR`3O|NHt!_YbUfLZ5MbbfObih%ZxoU$I1W9QN z0Z})knff%RJl=vt!lWG%Kb9n+jqBYZ zAJ-5C+)LqB*qoo(AuFkGhjSU96AG4dO{0t^L|A!tS*X`G8<(H8Nft&-6WWyu+=Q@M zZT7dexXl&?us%l@H0I3EvGi$^oP(JyF%zigY-C_i#ezD$azgoc%B@^9G$@N6xKn;L z_f;tGe{!c52v0&|{te$K-H@-S7osb=B*uVYGsMRpM73&bvlh%}Qqxy4s2>azj}A4< zwcdT$s!|9${oX8_usu6)IE}qajygD7X^=`Nod(j*yR?&~RH@%b(~d8KEp%HXBD1Z} zxv^L`hx*d*cgd`_J{rM&w*X4tDWeZXm`HDjpDl1k*_AS*K970AsAZ>9yX9&Hz9pLaR>Oe=Ti;4s?$*NJ zx#V*Ug~qlAu$te}ez!ghq8|#0OzHQ?^@nN-lvnPNj}rWW(#`(p9 zcMz%^J-Z~&tEvg)CZ3+Jpt%)KE$vYMExuotK+#AWEApV`03y7tc>3JJIr+uYdF~b1 z!qbWt_KEwo_#}<&0Wjwa+pV2Ydy(r6Ru?8)p{HHCTZR>anrOrS85t9lP_lAe*(zC0 z>{r#b+sO$Uhb{I01oC73!|2H5PVx;zS~n;%-!N_%9EM)TEqcu!S@__65BF~KH7Snr zd8W%de#W(AJ7Co{*z(2=gI8Gwz&LvD-{}_<;eAn2c^9Em+wzPBIG`3eF?y91Np=;i zaynXM)m1+e1#^uS+1jwkPNoU1+6tRTMZc*gTvmLHSAEjWtuhvDTAseiW-y+k-sh8~ zN~oDhc8dO+3`_RkB$njbeM>T=4vst*!X;u`5t8`4LWq-<#|3lThB5;JtVO7K<-P~R z(!HOEsxj^&4#%VD(g);2`(8xF^}Z9aD7QZ#uT=CVtRi)Xx&ZG+yB@!6`^<+=$Nn3J zp%ijE)N0&IAURs~p!{9Km+DsgJrO|%r9ly`F_cjUTn=Ng{?iZ2SK4>RLM8WykPymv zNXASoU=z%!lxP;O=S$0mm7qPtWcdNqj50_8S9BVs{oN@lgNvxFCuJh-8*dMy>;JA5 zV6Tl%@Gh{}>HdYmoR#19DRJ!+J*|YX+-w-g% z^uQG$boAqg>YM?``$Ko4ifVmS zMt~KY8hzq{b$e8U4NO;htFT^rR6dpM$@{*y4X5w4pZGkc_1r>XQQ7hyBG{`QlQW_E z7dXftcufAV`!Rv{?06$Fmc~4;WtIh0^eqGtbXcf89!*}`%|PcJ9v{OYiO&;SZ*o|3 z!!yz1p#E*1wDXzpO;1QKho^IYKqzj~^hEvaI#Ll7MTHmRMsV$wXDa#32>x`xM=vHq z*bT0IX<*fC+baXRqZvN|cq)*VOp7tl!M&0#AP-Dw9@Z8_XEd@R3q}BSKarN~le_r5 zHYT^dz^el#IXGmycO-2ot@?&>|bMj#*u;c4WAV0A6 zDS3VX2|X0Mc9`+p7`pQ*$%}m^qhnohi`7n(pO(7`%x8G%JP0Av`lsasAQBNtk3Oxf zT98riOo5ol(-Ol(opIFD zYYL(JUjn2m<5~IV{AZoQpMuTiJppd2+=;U0&9MnwK5#*$Wb`!YKv4>aTzpoj4X?(NA8G8yp37 zto>KQ611cn2!9PY53LP-isMQwg=+ifV(w>PrD-JL)r3Wyp0b1XyJnCK=S78(9R*1F}QP4b2-=)&Fi7; z258z=b!Z8j@-wIkwj~15bw2C@jw0#aPKmcVpNF(q;Z+cYFX)uA1k6l83cM#Q);OoU zVy%{%0pP>YF84(8EN+lG*Vme0M|LG>oo~?2UEblB`K)nzAp0&0ulou3}hRT zpjQdXu115jaSWOw+h5o2=XmmY&V8P}L6_MRLO;JQ`^FZYHjcW|fhL;!hV~cv)OpMU zRe*!=d)e`Z{2EGp01W&H+3`2tkioXM0*0b=G`;_l2l8o5L`1n8IZp1sWG1-^oA*e3 z7_I*nYJA=&d|5fJw+>Apbin=SnSaTmJYtd{(!LzPidP>NfCfm8m+_H_ zrWa+GV2BPJNs`^KT=yF9K&AYSx8+S3QP#2@%!ORDDB$+KEhmBd9VzXwO~clIMFr8X zUr1+-`_(PqB?Z!J?`S>6`Q(!WsgEsa1gLLjb)&`?BOSE%h>T0S8@tM#m8270K=z8K z<40u6*%v9f!rOdJ=BcX4U%5f6TIGD^28Ll-WO!IfdBw)cwI~q`FejDYAqz#`F);<4 zgf2N^Rg6hJ(|v<+o16Wh!dkYxvSOX)*Oqe<|Jb!8K8m8drNjap4;((Ce9h-1#SLEo zX`oiDVcx*$2$}b2+S@JXbMK;r3F;J{ReO%Gc_izTYr7@yVbxMkib$}qT$Pb1hz~vW$bYgkWDWX{U)bIilUAVj2Xy$ve07~DJJEP!+XzXhXZWHUl zc#vJ*lT@twMPyv4xkl5rJrREASm}5sB)Td0efcd^a1k;>7gqOXu+Vky%dvQNUqlq0 znT4uw*ZXpT^jlHnbx(j?oaqB+0$-w21};$}t^7b%G^nAdrf7f5;CmZP_s-<0O}tO=68n$y{?d>@^J_TAt`=T zJI-gLci7PckdXJN+zR>M#)LJug!(ogLP}nBEJcq4TR-rPBiqMv^75&VRf)UkW9>4r zI>EI~3p7*9$MPaf$FY_r8L*;PZa`?D5gL1sKtRg2KhaJlK8aR3ajl21;QXCXkjefD zV^{NujAqX0gcN%26W;S$Rs~zIPh}JlGNhCH@-Q5(M?p`#;!{}&Wk1{J&{Lmk2hl%6 z6Y1I)Jd75we{IhEUudcQ4B~#Ss_)2#8PhezqNd((OaeMs`HZ5zWAe&5i%>PsI<5`d zC!ph39GBy$*AdQla#(P!D)r50T)S?nTXiU%1<3vBo8z(w&mI?`2*ZWBLw(B$S=YNy z2xy@*6V2wH6Y}Z(Cj@4G_Dz5$Tk0GxTH7N-t~}S(ruU_m9vSjM@1Z|>w39bcqSwOf z!S&4Ql||>%gEO{q1H?<#_R0!kk|_-I^rkF>!Qm?xMz*(c%oe^36vBPa`5W|JX$Do# z^MxT~ZH!=f=Tqw%sGeJH3ZJMQC%Oq9guj%wUfz9a9D0G`2wvKU2vfW6O6B9d_Z1M! z3fHFTIEu1qaFxk!2b5*=e`HQ^b%VuWFO#LrqTe7GK7<`=MX_mDU58(wzT*r@5sm z$~Y%~iZ1-beVVSXWFax8w&$lXxL}O|4?H zM03C^1L(xhv3_*)Yk38BUe4R*n+&`#)B`l~0_U59-?H@^tr|U?@-xDb*?q%Nu=iFh z*}{e3mRpR0!A6!5a#WB*L$wyQ=9JIbQoZ)pmMY?7f!qg7{tcm_sEsZ?&AL=LsXACW|wjv8~44$`8^*7!6)z`2$P*X3a8D+?_~M(sAET9pyKeI-w*`ImBFd@AS5^tIF~O1 zFVSyOR@%Dri)XxJK`tN!Ch|dHJASEyhw$v;B{*-i?hq&zf=D~ zbfCX>+p;;!uRm)^2?Mc4Q|>Pk{jeSS)?ei0LPCK^;Z8u)4*a6=5YStE$L69hev#qs zJmK+>^H&)MK1@JrG6io~w@xY5RaOkHvhF+M+_n|}yLcJc)A!#%plMod0f7Uu1?T}K zQAaS)od5k*zKI*)ZM6yRP_V?bexKG9sk;F7l51kdHpfm6YCgL-K);f*6`XUJVbD{u z{SGil*&{Lhzj7@0mc&I<&zjVXK;XY+*gI{ge&pR23<_bL-tumr<${aieGUgb8txXV zGdjy{P}{rv>;Thc^6$?1YUtrr1XKEzP5`MsO)%2izsn0$J&sD2%>`lS+?N75?ag@_ zyi7J?z4Q84#Mn>PpKrnj^r})R-wcVYTh7Qi z0`mY!)SQuX8wpLQx839*!&z;WWs+x8WIRneD_Ivq_1#yay?pu=yI|?gI+a5nb6w}Y z6(2CD>jmW|9G@S-bNsmuH*a*f=tg)y549OK4k&08Jq=yqp4lOmot-YBF~X7P5$gmC z@}c=FHkH+ATZQ**dGX`=W!8q;ZPT| z&-D)kM|G%++c~Y>!B7D$PXZbM&bn&Z0hk$2W?vT{16ps(k1p|bh4P{-i^tvgUvs>< zymn^!^5rYEdj+^gI4Hem^M~l>RqF@Dhnt{~=oy+^4oTM0fJix{G0~|(@Y{g|)o}W{I z0T4~rK$ln`$5ZbtQ?x~4R0b&jpw#9ij-#woQBqVG4t_l6++BgfeC85tpI<1pt--~F zjM7?cMEKW1XW`XQ3q2bjCPX!Zi^G+D2A9}(ixfSa5nM@X@T*@zot61qmmB4op~S1X zFFt70hHYvPY%YzibpC^x0i*4+DylZrffK7V!R2V`eF>pr-pgr#90$n*L0AoJ?lxbi zqXh4!3c<)VHmoa?Kd8H46g9mck!oL1aPj=9(@W+SOw)tIqJIsUqrQm+@2hqNy7iMG zO1Tl}Rx`SHmL7@21ql@nvx{XhICbv35!w(d%`RT$>>vr7@<7^U*7j8~72TeYLFQ0U zOYhhv_o~(6VvcZc5QO!1l)zI;UJqs!qf|3i(JcnZ$jp>=AB?loF^hZ)4$=|IHHZaL zdUnM@YIG|sJF2Ym&+MU-{eHNE7C&Y;(Lt*$HEi8;%cOxe7awIgu`0sc>rSREADMZt zd9DCNtkLFTBn<94;XjNKJ+%tEd|LP7uqY}R4=v6Y?6Rp@&nNF*M9ydIvS7LB#c-p( z6)84-d@rHyFHG@N8SEOP#vimIWHK<}g0!Vd(FfieXnn4#TD&1HUh{eNL21DX{wktf zJY-76((~ldjG#=QvzD!vVT6GzO2i?qWcB&bIs#FkCIMmEd<(C0%qg0+-^D{~Hx!Yc zg0RFZoERutq4MDU;cm}4660C%i9$3n%qi1>SiPaHi}+8cQfn}9``Ob_ZCM^Bf4}2s z#CSzu8;pI>7()O44V+dTW)#qLR8iUR;0W5j9p#9z;o9WsE;)pYMKIF2iqJOR49tv% z3sTS95NM2IL1O@`}AAK!a>f`?B3WDKNXb0hh- z*%smA4V&{ZY={FQfyh-em!nL*lC7!8&sV1%Rq3{R*)_rS}D7jL%28gl3KKa}xrg(^1;3w9W&$;U`f6 zz3g-fuPxh=bR>(rATP5uTCPGV%-)RN$f7zwxw)PPzN)9%9A?2o=bzI9<3BDfgZS&D zuYsD*U1Zgdou)Uj$=fUue$*HvU)^_qV4D#M^+31$p^wKkgC_)$=ud`mbc078Lbszs*TEw*3s>&(7Tl*bS5;v}%i1mb zEHabQ-cK?^c-F4*(=T^<9O;$;ujkAw{q z`ycJQ*(8ZguAE*w;$>>PTa2mZg=IP*QTbWgKZ6O7EkV|!{r2>DrDr~MLyf{M4r1<` z{83@8PjHDQMIrUZh7G492`*N(flLzYfa{C_=EVaF-Kzh>>K29mumXDcKqSXUO?i-= zv|R@clE23LhBnv#1c%N$xv65El10>J2tsmB2+KoMV)DhYfwVY9roAG?m7|`zHN`bT{cleP zdLc+#fPP#In3p+K+e+ta#w3(fDK+U@?YREc!Lhj&S?2ly0p2~St_8fH#w$VGnC5*D ze<&RhZPl-lB{$bnf;u zLyI6?yPwBV^_I{$nv>20wX+Dl|LfA_7dxkfKp;Qe#e0Xf3%h1Sn1c%EPuE41X;AAo zDBPk#q2`wH$yE3dVB94SgITw4n9L7rthCKXCF|5M7lVM#m(ih;5Tni)(xjK7%~L8X zwd_0I@MAJ(oI4mu?u$%~`}5Xc-s9kC0%4^*~@v=rSyT&9p4khIdeOb^n2_YkE?Q>2lr( zPo<+HWQ*ohMvtYQNnk22Td`vKIVLtaBVD7_<^b9~2A&V$Rx`u$mgf()#~^(5Cx{-= z7h#%?k90|qZZa-9_bACD@<+K?GO9ZPPU26Fl4GiSly>M&QQ`>klsnoL$9pD|s;~7V z(ru&VFfE%Dfjqm*W~PIqwY+16C6>M(t*!I*iOAPSIZ*o^?%`{!dL|V8s^0O_Yv29Q z@ArkZY7%e?`0|nq&FS;aSo2Z&gDU>G}0u`*$-z7;UeC0I4hM!ayGwg`WXj-!r3gML+kO_oO6%RsODWSk7Q$Kvnwj+c)@ z%Nn(?Upyf}%NhSJ^VM`Ov|8)O%NR7dhavy_3H-%(#>=wp9q*dWqg6~zuUV$ih6(av zy~;egB?~C>e@>874sb8jYl9QQReD@lSze*@AC&op_vvBaVo%hrH~Q}0AcD^aWWQ2l!->}5X!!KR=ZU!E9o zj(QQzub7`>f(PK34Cd+Rbwtx|ljM`bNZQlDtrm@9_@>t&W+18KMVUs2F} zJ6FaTcw0^-V)9%I)i&rm1JaOXFS-Qx=gHiFMxqgCChs-sw9r#|azJJM7BPmd85_(O zXTL2en;y-VKl8~4L$W13*!@5KVHjF)S*U+otdejZOE*lBMFs1!B+LKU?J(l1wMLL#(gDdS zo9<%rPQ!FL%%J!V%41_fEJfcI#Kjb>LD2YTxI{EDUdeEWQ%hU8SwDcYlH4|Gz74R!a*!)9NMCr!@h8FDSJw38*{-?j5tdvF-}acJs9?L-phuAX zT#BzzBaGEukU978a;RM1A{{`2@|G2&w`wZHCK<#(^kxh zg_3;tK4HtDyn7@ghbJn);_EE~oOUpQ?ltAnH$A0kZ49Ox_e;PYkfP-+)ekWyUZ+@9M~~z>90jWg@#y z4`p))LoksJkZP@+!RE;D0U_ch5$^79PD^HXraA zxKVCKZT#frysW*8Tp1j?T>~CW`6BJ!Q6`h_H-n9)Ws)Cii%?auv&W(-pO5mg9^I+l zOhc?|1Oa#mjGZQO0=Sna&~jBa3C^Iv2}EIkVWcQhh!0V>h924508P z2pa6ZLPkd(HwCxgJOfsI$t}J-f>6DUrjR8vIB# z8f@Ns(|PUdTb*sLJwxG6-|}vNmFi0*kF>YNjiL8ST#4$b*vZjdswcn5BNmmq1lK)F zIC+nhO7z?pYUN7NFYKHnD`h%P}x@+;rg*!wA3|2J!Z>cI5{kUIpvY1a;h@1 zmd$prnvZ+iwoDFbex0rbfH>~E6{18}ER)%8tuzChv`mYewHkSt74Yg6(<}4@213ZM z+Y`t=FU3hw%VlhHmdn-D{srti?pZFM*3^M=XV0$#eDdxh6kDrqHD}V1$_TFJ7wlIm z4J)*Tpw?90YPW&5t&oS`zCu0~LidT@)-cqu&^HV^2T(_YWu!4Hr3Tgb6dK6?gBiGK zrJUPfxeuqeSIX1nK8T7y;gm@GIVNpvzMZ!UHgR)S$sq7MInV)Z5HpYAT_FKh1og_#U+=s4ap19Hh~K^EB&Nq4~0p?UWi2>?G< zIKwr_uM3l5S9xT91n*<^zsoKLXZf~ul9hJe6rD(IzXLt}**Xa+J*UurcCXiNf!WkM zGIRn}ua^~woT0>O;ko$#uD;{d^3t%i41oj=;=HOE306Ag2+%t; zWi}{(oXHN;NIY0<=#8cML)@dx!VSIltATHC`wj_K=1w`VpplyCt<|3GX2dDkHKD;& zdU>=Ct!^4>htlRzq(Haf*LaAKOV0t``e3b`t-ZBco)1^nyrdK=uG8w#Mbz|-#X}k0 zQAyUq%Bl@j=LmRq)=AoRw$3G5pfjkuL#6Q>v@E6>ImV7kc=%*};_uMzdE6)?Ly9&4 zFspS#b=qaaGT)1+V52PH_7M?SKwHv60*iEibe0uvy9+e7zDuGElUeU#DWd9X5`H&EpRf)A~lO|As>@9a{~3a(w-(XSZ*GAj^9*9R%lLCB&9u71Az zs;+dUslQa!$>#dU&{bH3Ya?TsflHd)zAW5ix6|1xW%Auu$(4|^E-0Bw(-H#63zaB- z#>Lh|Z>A6T_4==pv}2GIm0gNHN6FO^B6Y;0{I^e?82Q+lFA=%^O3d_OXWYclb`BL)S?2vuRgCCPi$P)1`Yd3SouGut%!h ztd*T-QtP+Q|6}XDCxG-EFf$!DX2CLXTyyN8j!m&KV=sE@EF2~ z30rxVQHMhdJRfcI-XG1{2EgT#PA_cbt?RQL9b?Fk2MezuZ3!VnfWYH%GmOk?Id`qD zjmVbEnv)Vs!cyFw1HRIExvA61b{ESnUc4qMi)v@WI9 zgTJmi9(P#hL29UtK_zlw*fxQ_i9V#xt3zL3&-)%lb*bv&Pp$*HP=WuRzH&K?4Kz)3 z(J&lF1WXk+GbMlL(TmjkOsrmBws<~u_kRKdR$2y?25_66N8c9g^zlG;N z_7=`nO2ucD^u@%|>R+vT;~?c1kb}n154Z4>z^-1VR@pT1R-VS(QlAX6UJ+zA2v0IT zHA{`iiQ1;=1L^5o)fuURs8Bk8D`!DIw*lh^>Wxsw=s62x)x=lA8u7p!fg>nVqw8|QNE{?$m{zMS>cV_Bcu#}dqY%) ze%&(VHha3lhNkEaejUhrgRYzjyzRv+4WU{^AR9=C=xj9?6))ITOYempyqCLnFpdWm zopiEIaMkwQ)*b&dcYFk-3Tx}%&NJ0BNf3ztPxavC?Jep-x(1jH~JNH zIwTMrfQRE^Xv8l5f{I0Gvs671WTqQ-@x*`&AzPM_^q*Zk?Cuv+N0PaLj}4%N&@sL31 zlQ>vp3^d%#bXSv#AZCY*q_%u(fJMf!f-=WXZ65_)i1KH_Z%Mt2H-5!3C$ny7|71Ul zF29<8vGKnsljIzX%cJhQ)UZx~HF)F*ioRO~y;B4*bP) zAg9{_e@?H&Wa+Fl$n-CPbfC?{=SJ6D;NV;QEzrXc0fv2zhp(!7PsBB1jkkOPZdBJ0 zL|fUvMrmT7r&qvTx5qcyL4~9m3R34KnHq>!Px<3;Q2>bALX+L;pm>t%L*!ER10dq} zUG()O^F8Vfr;&TD0e|~jN+6Zp!$VnpPsA|s{e8~@H}?8H{Hze`8!g`{n_>^3N3w5> zLF+b`-Wws+EP()njMkzsfZy-s0b{XTp{;7$&F|*UkCh`8KiI3GdN&{C-9xd{d&i-w zbY?dv9#U01bdM@w2$?=rJdHxDXs{)Kbb9Iv0@tS`AkJokY6Ci{%Y>2{Pwwd#qvGkC zJ-h(y6H@`RyV*b4R0tC(uWsChAK;FC%U)i^KviVWkx)Yas996x z#iL3dcHh51>@VA=Kr^$+$0sO`cJ1R5NlQRlA-Ouxe(al=$Z-u^G9lDP#rru>sou{; zq@(*Iq-#Lz0$d1?*N>%<&HUYyp9dhcyqPB$q`WxV-^^P_Zc0c4`_YMJp1#w~{JnA? zwoF3NdqRt<-+c`YQwhS~+``iV@qbP#t^fi@9w{Zi4%L&cl@CnZI#9qf8B*2hD6jLb zc2fX#TxB)UKU#T{YUtT?xj?21>lFA`1x7jpX5<%4pP_&xGTCn16dp-y@8hgZ%8|C* z7coZu9i-`g28H$FeX4FE1cznNTYSH|C1y0mzJ#CM&(UD-BxktiA&ZUPyPsbMwR_xO z%L0O>Mc>~wAjrKL6ug`%!8)q_E!~f-PYR*)?*nSqto}&qBuO}6*Mod9yLZOP zHk)=T3hD@T6!}_c(L;O>lsptWjv9i7%F7SvJ5Xs(Tdjy7;b7hO5Q8A+tO?>} z?8CfvO1lD*s3bSQV4hN3SeRclZ!RzR+J__N$zjc;Zl`~$VJ%Fm`CoEBh1PT1`5-?^ zeT38D&Ynog2!^TAI{f%rfE~nG^lyf6U&AAO=|K0cP!7-=7LGA<{>AfDIvdhshnG3g zLwz>b9JsV{Ix7ec(Cj7b#P+TwI8fXIfMeoDnYD~Li=G77Da9b>KR6oq)35)EV0qYd zDowK{83)WzsQy_Kn7|_dv8Z~K50|R95+ms7mS_{*_h>{2KrqEN$RxJ>dnnrfVMAqt zC21T=YFP`zVW;34@b&0Q8R|O-2j2B?40Og*;U56`abJ4tG5#vy)zj2=65s#>_(_Jx zd81W+oCI~CXxtjJ9_JC0B1w4o= z!ea>ccD3Lne@NmeJQ&JCBi#l^;0|~2vi`9a0K9rwx{?-ncfx$ z!0P#@&-t{+FjWQH<7X%0w1Qq+GN2LTAr>v-0si56}W72X}@BQSw{Ms3ezI(WGyO3EWuRN+mOI~7ciu#D!S zm3ZhGzPC^#4F#7MEgB7sj>VBpIrm2e)9h#YEf+t__m%BCvo0rT9`%jVDKfo*#(B1`;g zkNO25oL$s#6;!>lpJy0$ZYflqb2bCsQ1^TUQ-agjo9DIX`61yAtaP~UnC7p=$r7aA zlavw=0P{cjT>`yubWf^_4&0KeMQj6xG5cTO4{Kb7(nZTjTr!>udK>-n0w2Q|V|C`g z=m3Kv?+_m<7wY`R(jS>9qjm+QbJKD-xo0L0SC_IqG97oqVCOzF#T@3IQG<_A4mA7v zQ&9~5M_^LKNW_LgI{LuF-hf|-;&{G?A#K-a&>~+r%wOF4O4JDY^Dy5|l0Mb8%GYL^ zcl}zg1`?GX;m}1YG35OZIsU9I(N^Qebza~Gq#Ut`7y5vy|CwEX=kKzDI{?XQxj8B{ zU{2*mt*RkJSx_~6F(O&sUg=b^1@45aR(geAd)J|sl-CR~dFxSr8*p23?n8BkrXJ;G z=Z=SUd&%Q)YTGj%^CrZ(@20M|P$Mn56V(ZOhk^;Xg_Vz!W_CoR;zof@ z9xC=fKxM;N7-uw~$i~x5U0(q>)VIf!uI50jIg07z^G{^vR1$(GEbdeRUMB-DH1Q*_ z*47%dRg`-i*Q{+RC~{FR@tKK$8qE5a7(v+h(jYvzfV-PCdj3cv*n~J_0fl-`LX-1t!UDo*M_blCv*!=q7{2zD2QCN`HlK3aRDZ)e;Jy zwO9D|gKSkMJ^Bh?6;$5;)rM}985AQH!*#$T!7rx4`U(y@ppq%OO zu-^MBk9>O{lAgNC0GCCIh)(g=J?m?uAsx3KXk%2G7>|hnrW`(Pb$29cS9twvT)}nU z2$hevPOO)&UQ^q&(E?`qh)^?~Itz+e`hOHuJf2ERZJHzpm~7GyBU-1OZjE zq)i>%P|bZKqD*YQsy$H9759w^_YH_O8~BvU6MlozSmf**y#Ff4*}-lWz6v=9(Pxft$hy5+?k@crw z%vv6VMctmacn`J5#sNukiw%XSxA@zoFx{YHbRW7i~Bc*+v3!6C-T6u@x zR*m{;Y++JT2JbV=3AGgRseKE&&Lt-lRts=nAvSn?vdwPInwwwZp5vZZJcq}t+X8dS z+8CFf-Z-IZ%!$-GT<`F7@ounnF?^?AFlEbIjAokLm+sIiONrFG6GoPgcku`eT<70) z@i1KI;+rXZJUHittGsC9Q} zigz7L7(q`Sh&O!^F-%<;OZDISXVWMDRaJn5rqajZfQ;->9bK@gj`RGS7)MvV!&w<1 z4Z~>jBjAP}e21T?|9U_#diEKOl->oN(fM~cnrj?x$5HSkY`6>F<&EA^1-SaX@A69V zv05CSkHCaG^)7!*{T}SHzQ<8vjeL*4O2XTF)5Fb{vVx+^iVLP_Yp8R3h?G>b(4+6E zL@k#pjyvPRL`;fuZNXY_Fg5O(wCj8iG-d1id{)Nh0piowuQS_GsNvvYgGL8|Vk8%F zsO^1q9cN%8Kpg}~-}m{%L)~0TYD4+`6l^0WeV`K1@zfrcHeLb(cT6j6#dyBMxc%#V6tLG55#GDehZ4CYd_>|nmxwBKA&{^%fXhx=?;`| zVRh{WP26&l&t+NZ)KseVRD6Cfuw3^EC+^+=ZFT`~v+93BP`K_&*cjVF z0(4YtP4PEO)#O15aMV1S`C6R3&ZO76)D*1zBFez7Bzuqe1&OzYj6|+b_<&8qgWTM9 zU2Yt1Pbgcte%i|G75YKQN0$;9`!=g7GXKHpA2Y?@&7Z_;P{44n_Vs8q~pv|XLS>{xD3bj0k^Y4cZP6;4EHypK#CSSBO zW`y}0=C9Y_7%`FdLbB|(!BS#KGS>|;gWtx-Q_{!ryon11H4I=jLD2fHhmS~^eC0jv zXR#)fq3=5vlw>t&Ij6ad1bjCt{uUT=%uNiDEXDpUU?EgBqv%j~Su`+Vr}^-&I0|fG zOG{uN^&W!gQO4)|4&KD_>d#dTL+Hv&xZ8`L^IZgg8>w+Q%nmt|b;}AX)}orG658xo z>sVUz1us)sz-ri%V5H_Rc-OUm!IyaN7ZKy+Sq8$|OyIy#clM$X_u$-tv8yDEwtmU& z+5Y{mP&#;be0acM{Fwc7kb7<0Ebzi|1DaVD#F7c17vNI(39-n=uhdz#-xW^>zEUNZ zF_tlO{wp3(>(>!;#WJ$n@RrgSuwyEu&glJMnT^|LMnW}tBSNds>S3H^D|g^R`kGJn z)?jlyW&Dqm33S2aAY1A7|M9WdepyhKmDMn`?m!N;eg@I=uEG$Qu6?7b3~qQm0R5Ll zmS>@0m6ICpM@zopkWh-zFL=~P=E7B;uz0$-+o&_m%`ci-P&AzvppgBejuF5QmrPLw z=xJ2qA3l*Pe~i?W8#F{91R`5u`1Be+;Ph6j1Ul3CRH6f}Rj3QYcg zb2yVJN6#KuckVhFi&LbOuVC43Ja{?UxJSR^X$LPg(sMp3lzLn!r<9z5D1+g96>9-aC=B1KG$R3YxW#XrK+Y6}pGZ|iH;ZCIkX z0+M5tvou*VziBwbge_#@NI!m#F;L(SeCbplO=YW6>)iZ#^GnJEQiBH&+(m^UE_>M` zkCgTwIB+j*#qd=1hR4w6)d^a^Y@onec9sjQ?px3=YsrTaXp0Nj+0Qm7$gPiSPNL_+ zXzOR`Mml?z=UZBGL3BV1Yb6-A=Q!3}`9cI@YkK)Zv9zT;0K5_`puipMRn1qVMz|0y z6&q?+RIc-KF?xF=Bt#8xN!7Yr)E5zqT&6n^)v>mvLtUZ@=f)q26JrCfM}ip=#QJ;F zL&(2hVUSa){yvz@P3q^TsJQ4NX)4KBSAR+Sgue_b$axjWA zep9`h(PZBpl0v86VSSPM-x$z{K!HUQ`hHUvRxc39ZC{7t&J&!I$-ncPv=2?qpoVAD zBWd67D#dvbY|NGz5O()=nT+(w@BH+TzKJ9AA3PyK+raaCV6F;+Bx1Vd4-V8}2o4Bh z9SXVM{-HXVJ7F>x|0f@?r9(j0teuhIA5c7~>?KN7ly?x=n1=jB14UAz)>mr7Jx}nd z9ZkRfsg_DnQ|Hx_n~Jh@wD25nA_;cOIRU|q{pa{=+Rt%oScVEcxkhAFvm<;d{5)^} zx*P4uo|2Fd+V!+qH%L$p;%A9;;DDc&mfM%%qR74mm8g%;^H)Jn6P1a#{D4}x09o9w z$D$!Z(r07t>PiG#@Cpam^e+y7f#e%SkN?F(2n%DVgZ;%9gghm(8z8`$w-b6of2D!j zWXyJIUtDp4FUHP~&{V8C0Ho=s7gWlVPt_y+hSR-glH_&X_9>uRIi1#UIyDRE%S?U8$(0P!M+xfhgle*~|jaEL=#)cbrq6yfO{Nbv71Wku=MAr1-CZES}c zsbQ!?zPM|sV}^|QqJ>lN)2QiQ+!7Y7rCqtAJ|0Dr3!^Pmel}DVJ?h^HL9-yqtn>If zBqvq6h?RT@>w>F%<%ddqWZwu-OHaIjG;^;nzaIFznbdp0WTyS!>t(hr)eT&;&2fVz zeExwpTh}j6BhB-3$TUrM*K@uBEM=dcgS&pQtaNhRk5P;eFT*HC$3@r$>}z(#)!rH+ zBn5tfO7_Sl&^^B+W2g*#rATi1eE>S#;LmtiFu$CXIVUoZPV9-4h5hOqfyxIU9yP0b zYynNC=LBcfA+Mm$kKh`Tr{iZUZ-Q5I1DMFR|65%pV7Rb_^W#la_#ms9eHIcpmz;Ws zyT{d@0v38->Wdq03ve@7k1mk;18cSy> zIrTM{pv~Ul7w2-rclHj{fqy~G2>jKDH4HBx$ z$SbkqHB^;bMgSnX#^_+$F_eOjrH-W$>q6wm<=zhAn?o(gz>EP5(G-5O(35dcegKbQ zw@_c%5x~PD$whV70E1dS7NOVVO{n|r`(7_sd0r#52-@ZaX<2h@bUK(>mjcXJdj(Lv zIr;!OOBkO_D!B#`P_s#{dIFOGXqe{#?y1@Z@O@dk*`W8X|3<$w6t>PF9uGJ30AKXW zNTbWm{B+XCq`?vfX)3cr#v`&U)ni5Pq@l@QH%Pz}3QM76_%bM3+XV1Jy%WMEbFc%hfSIUG)i=nXoi(H+yFnJ;i2RJYOy*vQJKI- z*=Oe?togv|ki!m>ZP{0WP6amSFHoOfWOGOXjf$5bVB0e?2FT%-SYL}oyRW-JyORIL zq_!Kp`#}`UK+iVVw1RrcN!v)Xz}yU&AeGtql<@f+5CNMpCHHS+WLPT%c@~CSP;~_X zyKcC@ir|{+@1E3D6`~!yvIEx~$Yaw#-jHiSfVr}2Ud1))Jgwdp7Dq0VJ}_XR3?}#x zJGBwmlC}Z}oyOD$8Ldbt=T#2C&IcW7iV01PhoO$yGX*)y_ZN==c$4hv4f zuB(R1Oyu+;+R5!u5>B5JyuIK(8RU=qP1bd=fT4E>()oovc zbPsv!U^)`6Ht-Bx2AvD%^8wI%G=d`>^2`RUM4np`EGU78uSD?B`E(^f-tHul1fzq0 zxBXRrgiG%_V88q_SpP*1K0zl{f$Lr8;9Xt%x;>TFJmjZ03JqPgJk|~YW8g0b?_G=2 z!5Sm4VewWu`OoYPIwTm6p@DJ0>0n6hOsFj7Y=QpqUrq;ey2sLK9g4AKXCl24nr=}Y zb4!f#JIwwMME&z_g8+Oa0vv zI=wu3fgR#_Wkto()B6e@r23UE)jqmBRxQ$*k?7MeGXj1Y%Nw97Dkz2Ci{;1GFd}i3 z6vvb8E<$8m7RTRTALo!P+lmGl_SL;<2qXx0v6dJjlf!8^LgF0^ARI=WbHTD&9M7|u zdoFN5s6b2D+v6R%VnCV7Jn$ z;)Ouy9q@(;G1{#Mj|x!e(j7@+ zIwhCA&HxT}wgXv-rf7?W>7b7HK+@ij;oy>F36~^o1%V;-b_Nf7=}{c+woKkKxrHE? zbooQ5xnuiKez36ur8>+c(`4<|?=~V6K{qUba^n00|0Yv#dYvte3|VTgjG{)jDVvJ3 z_!6x94rufpS-f#NKZJB#j}JniqJ?IiaX@8;TJKDU6ZBD+KLus;HqrW|ddl86Nc^fI z+aa-ct=W!zxhf`5#UJTu6q2L%ZZdU_jZe@I09Zw&obz><#o)yz(5@T@vobYjOEW4n z*9;(`EV&LgI2%Xx^M^#xV!Kx|+x-RLZaE(!+j}*aN0Zlzw57a#h?PbI!yq4Q6uBSO zrOINEWnTX5{E`{PMXG>>5`eN=Z5k%uwyANK6fsMoT~DUV)d{0=#9;pm3Z}T>YAO?i za%VUl9~!9F=U+ZWq9(|-ai~1UL1~c$_0!!U!JZM0k#f_62ITQ^2GYV2JpOP;#D}hR zAqiJ}K)6Jr$^9Q}l$S^FM#;&J3PEdD?eE!Cf7Umi3gg29Jx#t+u&woD(1pq~aVG5? z>5#X}(r6(G|x90uP zzEU4c^v>)Y+<^?6l6T%TEgl-tk;VP)}QNX3~sop)>u~57_ zS~ge8G1wA2k~+pXWNjMUH_51MeLw)bo`-;X@mLjJyq1WsHwW0rWeDQ)(M_fI`j4f$ z+nEN{nru*@%!F|~@etP?O;zJ~8%aijoUg~n@f%is7~rB>ABa};j^neGJHo#V4X2}* zL5My3BJhDx+gzNU3*ql_sE3J%?ruUdA{ypaw$&7RdOS>R;~m4rZ?xZ^kwa}UAPczw zbr(N@d1EZioxq!?b7p8d-8q4yh6bz6DLo{-0&GxQK@a5o1cy|0D7^)}v$i~Em@siAhFzINF!=lT?~AfK)a?{B9jr?)W+1PK}#EyC?CZl?qO? z>5&xUAOxR~%woP0J$ZZ=45qRzMH| zjo2LVru9F=dNuPhmNbPcm_z{pnkXB5Y!#VBZqyg)twm`;CTOBmtkWd>axUdj>QA?2 z1JMGD_UA5@FW=-&ifGz4Esi?eAoiQ4@Y?8q7Lt2i&!gWlX$p@~_1UOQ+A@V#y|l3J zneXc|mAI$pmuXCaw#3MRI83X)wO<9|f-5yJnkG(Fk!e~}?3pmCJ)GcAUE^VKy>=>J zDUc&iq?|g`CJs*J&D3}=694z6@;YfxPC^85w;{kPF5}h91{eie#+^n>@*UjOA5HFB zeHuNO&yU|(nl?_#BCo4lj*vvPmVBnEb2bcOG;LFWEh>L`h@aZ=tngBjkU<|!Q%@sQ z#qw^BMC3J{pIC~UfV&$GF4Rytr+th3=h4FH8Adu}Hp`!6pGu6UKh+<|05E3;KUDi6 z5VmDrzG8-&|4gzkK;LQa43*H05(>kqcYo%9I{FNiERT|)RthTMjZpSvXg2j$fQ6?O zsZRgHgjDB#e?N5IVQCb3jejt8)LOu>vk%n;YAS`(*Hvy%mp@SLsGW*FPP9*uW=g2F zauQ9TeT!}`?;LqZpu1$F6*C)iNW{3L*dAmaSxOg?NdEJ&XVgN=0ZQ?we>XYpRB z`!~!RP}j9X3U(=QglZOWbps^yBfudvi(jd6nP`Q-9c(uXFGh}DYA(r;T_mgU!s8lqZ>^z>8X0USm=;&O=->4H6$q@a9w2;I*7|wUb9vMBa&BeSdOJ4^Z|D9qLmS}V?Ff}c-KQp^^=K$7o^s_N{YxjWo`2ZrWN-OJO1J@J0S=SaAQxp`qb<%^gm7ylt)9;}BmfVYsGNmc%m6U1S?`VZPR!>$Q~f^V#Cra%LuS`B zREG38CxJ(VZyPPYj1OV2Di&3ZPWLkmJUMh<;RH6@V5ICHOx|*JwlI{7A=3ihLm+=l zmvLS`oqi~71YMYrYNW2=7QT6WgU8XmA<&mRzkr9$bs9Y9tjl>&fiXb4I}Yv_t1jm? zR&IqKSM%jOnOzo0MAYS5;BIy~KkC`b`HFH~;aDdoRf{BIsjJMOhwfkv#*4>RUj4c& z`AC<_`?l1S2%3E*pAnEE8c7#F#*@*N{A~xXbZ}#TaIDs{z$lA^nj?|{%0)F5*UwnC zx=K6T!Eu-+o~8Rf6AqK_AQ_bR5RlA*G_1i%dJlme(dT0@)7XVPZzwimt@Pt8+OUu- z7!dcyT7DzlVh1`Re+{IMh3q`POLr-*wVs6>=A9miPK6M763Vm#(syuL1BC9zAuy?l zOR~{|Mf~O!uOUS)Ux?s$?;^DsW2kt2RG5f_ra|A17ZyQXr9iv|dSZyc^#(i5TCDC0 z&d+H3Vjem7lj$K%CEGLU2V1|A_|^@+X#x<#0Ch25YjDQuifzVNn|rH5D?A z!(pZqWqeDWE^|y5PtY?3Lcd4bf@C$VIt^e`QIs{$1Y5w_fdy0({okAs~7+A7qj-I(Z(}wQdPN z-O=lfV6ElC2dj7qkD4q|*S+fR@RSdcO(ICqjH0y>X?la##){tl3W?(EUZKP`Jx2bygyz_@PIqqe;v85y0Su zeA!!Z;D-Ls$eBZ_a2Cj*(Id=(^x<;;?9P{CBB|qh^bsC?LMKZyo&7^I=&EZ}+B&@H zxUUx}J}hw@mAx3K0T^mUMQ;08pd(!?RE#o_ayL1`X!3QI7*m2oach_THECl_Q&^vo zH&N{GfMp8P(j#S71AVqa-O6#W`!PhDywtmzOU6@wkuj6r9if-SWO-ns*a18}gfeK) zN)E}S1{@kC;6YADGxP10s;N^<_D7KL?0+x~J*&VW@>(qKL0i7(0T83K5T*Gfd`w_@ zN&Bzm8wZClj0kP90miAzR@W$kLT4qwv?un!2~^KqJrUR=eKQCV#sMi*D{fnjU&!v(b3ks;<5V5=J&Bu}}%zjPT z6Od!BOY_yvF4?K+YeEymwT4$y&KlnDJ?{YK>^cwE$EVhC2GzZW%WlAY;wU_W#`^h- zpyp~S+1=j`0V-uJXKny!paX4p`QLpYP7?%Z{K*&(Zz7c4Y?b_7_K(qGo1qkSPh$cgSp7^>+$Hno&&lUC zd~{o2ni*=-g)7%;oFAzqnezbTOrqBF3rpSAoW#^%DqGLXLC&G1PVZRHw@vjzpqXU< zqI{wbE=q??b~@&c*IV6MV5IH^zzme(VR((YKV(5C12ymv=wD1qlTn2%v^+uqpDC z+(bUtaqw9B5N4uoDa>i|3Vh=sX!;UD=IAB zROBw1J43TuDf!qC>j?&`_2uh%$@JfihN7eq{HlH;Ju+bcq$vwj+~*_h6oP5Z4Lll9 zFPCpGbsZ%c>xmFw{U8l{*{2uoF+%ZTF6h7r60`zAZh!^5bSI<+uf5SBYg7>Y&7hWk zVBVg+kte|3hESs6Si1j!gCB@ovcDIkW*}=5qZP_ufWvHGPK=4h#U=+CuE=-K;Z-Q@ zFS?@8&-rE(ABOOu%BAGZe8f-Q%-OEbf1^-wJcJ|W!bU%tfpiMMPTN)K(e~@ttiBZ4 z^{RpRrF%0N0>xFSb}HDS0uNaUcG0FSD&mfUY=vw35N{+Zs}RT-KwlS=C8cGztkD@L zeXGi-MvGJ~n2NV@xmYHKZJEjbw0kQbo$Xs?CCn4=98MXv95TuD307h{`k_2oN896q z3{+FA?x%c>&1I!mYkAHv9O|^oIv(T1&B7VFj3ma@sWmv?iMCoDzes%@$6C3M+3|;) z%>MLE9gm}^`*?!Pf!6#&cfss3z$FzKx$XT#;B&tRUTN~D(I!2LOgt4*{iu(Cpzo+x zsmnejQC%kiaVU8w$d?W*3zZe6*qa~07aF~05VZ9l z65!&Q3)zpJ@d4TN=0Er=HD8ca85D&lr9z+fnnC-m^q&grbFVEyAojeppqfi$ycAFS zZ#5yQo({%_mxU@Mzy%PJQg7qyxw^$Qi+0?`k)xER?zj*VrS_t9HMhNl&hcNj@mpJN zcNB@|Y0pQ<*EZWfg7)3cGv9u@V}`VQV}yK)S=1f}{n5TH+e%;RXS-;GL28I<%7- zl9H`7b0>dTagA;yHTkkam=Vq#R2#b|+fAxVhLuSVc&U%7Q!j`08JeYN+f;f0Cah zYw){<#Y8ui7dq(Jo$5p!0>W0qVL05`n)q%5w8X1IX`;H>aq^G>3uHKz`$CQ@@5?|L z7Ys;mz1F1eUS9|sxE=!D!g?1EZtf$H9|tfOGI7tKjJQz!_~12`47%qo6;@9XU5JtN z-Cg|9KC6-a_w^e( zB9kd~4-cbzydj+smD)`n~)u_5E=p$uI{kb3>Fq_91S>E&e?!r`_i;?vxIPS_bs8#sIk$4C zAsc!fKO_Ezw#tAVSi=n5)wcX_Guig@O3J+xO1NDM!EkQ7IaaI5OX}D7WnsvU+S1_2 ziUU|om`^rDjM_3YY}9r;MELvmtJC2tFfb%hEVY?$GRXq~qe|L9%TodzcF-}RQ~c=2 zj8K?4HS?do-7E`Qo))elA(Y6a2B%9-dix~YnDU%E*}`W(idHk|fR5!B`eT5J&16T$bq{b*1Zo##3*L2VE)w-);}NikXv`Iv7+}j^y-dvJ zK-^e;Ho)O|+8+G3Ry_2;!4KP!;tCd|8>O1V=X1>^(}fXWo=N=6DkbYdxx*8n=r<1o zUi6TIeSbmmY>6IYUxJ$Z-)*Pso`ED*L$KYKzWO{s!W;p3Ky0(kFGbzj-40zmRWhn6~(KbVq{`DGtdm}xjNoV4Kvx!?et;HbKUhoMQ2nd z%4OL2h(mfvwC^&GBmKYBiS~6^j%PW%TK?J|s>NUx|56}tY`<)=-i`xlcCp=g)Az}mnJ{P=bY?))ZPslnKS2Y9DxhK zVaMm_#y;^F|5fRi2`)PIm?KY~caJ+}$a`<1@F>iteUJ0X0!jrifZ?G5RQNkuAD=$X zdjn|eAkP!>;Uw5uB7@G~GtgBq=WztkWp+E|mgu@0>CQtAYR{j-2ZZDSq!)S;{ zzi5HJ+yQ<$c|gcw!j=Q-W;)Bs{jg3&j8P zd4clQgeN`JNp&e!VJ@)%eVP?2pmMc2mWa=l*`G99dZ>+GT6UxHQz%XAEiTOG(lya^O3PcR#~_1Ycr=SpFG$%KSIa z11u~+rx=qGWP^3y{Mq?s-guNM&Ov;jrvnVGtdE1W-P!tYjxziI%|Jw3v>CVS*Op}S z-!_vF7T}krwkK83elNJzeRo3`{-XMctn`#*pq#ieIW$nKD|tDe24PR6Vz%3msY^M- z%Ev?X^!8JXJnwuT3Ae3RXQMwq3bNT&uBk%)BUE`*#8py&8inoJv@kP(Nb3ifiWN^g zM$2_K9-Yx6PxFU?Pm3J%CJe_9PxDTcQOk}MzB--uf!!C=a3wvXuB2!9paM@W$TJfa zTp5Pz@-V8}1?TOL4OYXTa&Yz#Aw%%XP#u-6^d@h0pGME3tmpad1ovF3ELL5QD%!&5 zc~wc(;@#_GvLqX{wF>hyBvQw~ z`t?e4pz!>(Gn=Nq$Zu+W6`kJRPjCX%dK7M^SUA&8qOV`%#{x0e>4A2<8HwV6V;KRD z$8uuD)V&!Pq?o06m7JmwKRff?29VikQ9c725Kcive=i35(=SI=RM3m`!qvg&RA(T# z(kL~X>9|?J*k)4f&tcg#`9F3eJ>0=hBQ=#;);JUBocf8q(=k~d&WTjt>K`qdOWv9| zt3kU?#YP*YrZDeTDVEdo8ajzy#N3rsy(~VTo_{+@<|t(^F|-sX`Dp5TiH{;__V%{N zY$oH&Doo50spu-S70LGcWT!1TPZMKwsgMF1Ggz?GRxRQZNlnm_u= zqy&ya9@u_1pNZ5#X;3vGYAzW@K2d6q>Or(~@Uwo5+MdfcfCV)e5`uq?X2FiXNAPw6n>6WuB(6 zfbLk9uxv5X!ejghjh`8UJiFi*l{H!wriWAY&xz?~(Ki>t9giJMTqL|%w2D0kqvPn6 zR+CIu8oq(l>b~Qu5ONYK$`Hx5(2l$O1N1O{;J*ei2m!Re2IRM&FeFgV4X6x^f14-2 zJ{$e4wluwktih>%0V@HZ)C9F83jtO4AUg0i*B|>o4jirdALJ(50U!L1jtduMjErQohD%q1U>3 zSDn5^))4{U>#*WDK2gsWNX;8VA=73RLVQOJGA4|@IuQ@|lL=7j|KYdq`Y%@zb5|L- zfUtizq^g?_#A@q8$gI;3?KXf8-eCxgB<9o&iO@2F_NPKzwCGFNFz$bcZxm^nTD3DW zgtFI1nFcLMDUU4lJnirD))#)uqH?Y}gI?#hGa!MqdLs#mU|ebq4eA1Oy0@~ z7y^r}e6BH&#xJtVN_w?F_;H`S&qZv68JO};Lo#K3 zppN&_=qzp-pMN&cMz*48nK-}^9$DKq#4txbP_4tAXrxIFfAKpYhsAuzXHw3G%!**{ z;N4&$!I;WS4}HjIp!6TjNfj%*Y`~=HGIHmEbJFq?`{?U=gjzpRC#{>@ z_YXz2SBLIw)#IRc*FF`-fZI$~kIfnuV$sjl_?zV)GZqMv&ts|QV;)?{PN4d;FU_AK zKjF78|HKhXMW66>h5wLz1}Uu3u_4$>&*InQAq=IbWM?G(?-K<~9xjmUDfH+!@v=(~ zVh7IQj{y5!^C=$|ZP%lYRy8Xwkq&*zal_l6Ix@wLP`W8Pnw+1hCc^}(9+H|!I~y>F z2nVqQQ|Mi(V5Yfp_3misyryM36vCx~GC%(%X zodUhDTcJDh$|-(FMER+7@e~J(JvT(5U7Tvs&O994SY3@~3)S{;MC@}2de5ki*-Zjm zhj>P<+h*4|GN0xHwLTQ$a1w%lbce5>aly)^H7oenV459D&0_#b6=8#TAdq(k-#>>= z^Jw9V;jgQMFy*<^JX+nCo5xenVXUvB&-r)U!!5u@e6H943zMU%auYz(Z+*^B(Z9xb zDmlL3_0-l3E&Gx$RJmeFauT(C!RuLa3DFRau%W(m-LiEx1CY=5-$G;PcqbUPQD3UZ z`q4Lmid@jrTKpw1X(-K$u1yG4-WzVXbCHaxB}D>OAYeWoL!b1$FXdtbzI~AVVbj(E zc|^XLAauU(47AYluXs&%uLS?P4Y`#V9^_a8tqn)gE9J7gl)5Kb$I!vA`P)&LS6jHK zBgQO54wBKN-l4)>4w!M;HuH~Egvu7TQX~x&VDP`v*$a< z0=cg8(ARJA1$?6RJBL>v4-hR`ErZ`0lpT{oOyu}pl_#$f#KIX=^F0Sr0Q4om1B9o& z{_2oa`u2N1Hjy9#=2dOAQ~DX+LP&llP}bZaeSl;}tHJLqMj@!-ONSk32%aq<*XB~( z54@3N2y)_)AgwVVHFC<|K%#3+iuZ~UN&kkv6|hLI9fG9i$l`R(#Npx(j?3ke7)h2( z(LR0Qp+w1mhk(ZfI((l|uEhG8P`Q+#+lyz_`I0H5YqT6zD*H;|;_G|)?HbFWRhl=> zuBo%$la@q%y<8>Ay#_^O*EGZiry^iVFV24zoOHa7G^C`=V4#2W@sLSmZ(SE4H$_Vg z8c$bBWQzv05CATjoj*_Adi__&;F9nbtxNiO%OlBfQP*57t{we+I`8jS^`12HIc!hU zDj-Fa`-Wo@ohpL}Ysrrs(O297WJt+d7M*@TSo=du;@^RD2zgM#$ncAyfS-8z#{R@j z`1)gsX>`X={4zLy;ryfiqurR0;`!OZCav?S!aseO=Y4pQFT&5n$^(R6w((K0Rb+`@ zf96UboEW2N)Gz#U)k6^_=Vb#KSNRJs4~V-aQcre_29xU_4x=E0uUQs^>u*O@({+_S zg%W?|gKN^Sj9Tk%Lff*f5EuJ1zw#(S=3p9`f8(kEu5)1He}kh0%zIGyh)h2lN?XIbKD^nrNh>CF({ zb@7xl9MYXVzpK%a=)qz7X%*`3cK_j6B>uGJ564>Z|5Ej-{KuilEkaV!bNG{kK6q5b zdUhNAK*0e!VAsJY;jS&~7xr`rIM{I1t96IKUKs%Oq{c!>@$+N@{p%e+`G&R6q3+P| zM5K-i&hg2b_aKt&j^}|<-HM;c%`;KdgHf~k9r_r3`%yM|g{!$C$Pg5cVUEp3(?&5d}ivOFMi`22{ z^8qs3_aZN~i|NS|sKf$6qXp_G;9kViHuWF!!T~+VNS|I*A>>|oQ*Pg6HyGx@>4#7H z>cWsrI&nDJU@a(`ntwU`x)mkk?rNuOl6TgdP-fg@gf+;sxRnm-xa1^!m_Wc1bl0Ye zCCN>FYrsmpEl^(mjg`(sD)|uSY27hz%pr}5T&;j|^d5u4*IzzPS^kObj7Fp2MyLxG z3~|cE@PC@4Tc1y6X@$w;vlg26T@5K#`gn*_0{Jw#Bp1#6oF}+`P6qtfhdPwD=dCk8lO4Tpw|b`srvxc?D`3A=pPz+@~VG;0!CW{ioZbt zPIk7QP8E6j(X>2(2LTprsQSJNyA0uJG^md3{!@q>o^b^jrmd^g$_fEai4e<6Mec2T z6lRVYCZ`!uw$$Lg7_LWnXyT`e?E+4+<4t6kF_9LuV@Q#S5KB}xfv3EHmo+EzE3)wX*OtmeL(3~}0J2&*=iEsEaAPDP7w zgCaVQqFhT-CatvafB-&|N#)<+W<6kW%KPQ0#hE6C+@~KDH`jRp9ZH_Zi=|kd5|ZP# zIy1#T#}1DhX}o&F%GIhy;Wp*6&4aS(^K;vhmBi zg*2cLl~oHkcatugKCn3@68fyoDeLy`jBrJUEwl4d@wwL*o&z0#fWml}&!o&YT_gmm})8fXCV&(*z21}X!^;}Wfu z_gK6fiUS|`$i5P26@ckw>SENpH!O;sNP9t&5Fd=rGkh1$hrooe7RDkyA-u~nJ6F_ix{<`dU2YPb`)(lT|qw6W$5at`si8F!lmSh(^6eErqr!-Eqq^LS(& zWF4MK?-|!IB&4}BgPCW83)WxPqUp;QHXL>a9!hfTDBJ0A2xWs$cb9H7Nt3y3<;e|K4W}Qzx@ln z+R5*L^IqlPUt{7_dTf*hu$^Tv2d`3wTCG9QdjO$4fO^%hVpB+032k+Y0<-4@Un}bK z2nukfuBg;F6pdry@GiYg7IwtRm27_%Q(Cgt&qkj)dFk~!o!neJ6%^x1H0#jzsH*W| zA>edAogRyHO28|WzmzKK@1OXaw5?sj-n{$n(;KNQiic5jDn0&)KV6<=y&=on)gEXa zACFS&NJwn;bXv`HA&QUd{;Q!l*0m2I+vsTiiF6*g_q{MP^`7!!Cj4;feASj=om;V{ zN@I=HT#}$H%7=Kh&dbLpr3hIJ>1Co&sWq1%ffK7VZ@$Slz&)r6mNypM-MlA541)@G zl_(0m6~mKsD#j^!CGDH6u~vxhR8>M7cj+?T_Rxe%q3td{WU51A#QIwe6D7X*1OQKp z&0TbMsn}`XJ85)y%WX1Epa?61KHexIPV6HqvE@hOtf2{Y^F8W2aB)< z;M3{iV|^w;hK zn}5yE9j)nnj{u5TlZy>A`16L9rkwRP2oV=CdssB}g%bL?TIA~9Eri)*)zXDY4g)|iu zrpIQ}gmk`k``kDSg@=x)TSG@0<*B*V>hf!B0vEOKYLgCflaMD`J-Enhx5rGOunhjh z+GFVVXx8Di8O|K>o$VRUVtEBjl0p|WI+NcYOkxLJoynK6^rx$;RI^jM7j?UySzhw4 z?KgqC%XD(q8;hoL*MI#?G(JmRlR|~FGRrBORHp^or0pr-D5@fp{LBT=of_EBJ{@{! z!k6iNJ)7fjTV?TJx7~=Lf>eqOzx$)1T-Mhe7EWs*o+4gA3IV%bM+oD|=9N1jF<4@X zMLL(wYq&KZ2rU55BWY9)FM5`*KL+9csvLgn`W&as**imkw7iO*NL?<(5QPd%Ce{CCN;M1w*`2x0`Qkw}5f2-!ek_^E zQFFOo(KL(~vTUfeJrB{Z?qN=uV;?;Nx}xa8lXWg8v+?bNNbjtJ4QynOc1* zHY>nMburPV!Qo#2N&K)XAQ+eKNdAoaz_9415?s8^ANa{osrw~tQRp^A(d}8myc?HL z_a4jT)H{k_<>Dy52BCqiTp>quC@VYlGIlC@$K+3y8`*kRR=*|F`P^t;(K7SPiv=up z(Rp}oZb`GrBo8PY^mc!8+Ptg|i5bYdPEbkR(0)HQhI7dV8}!brPDBBPFqVHJgOQ12 zdD-{e5kHz1Ult;B)Vs#2fq%h159n?cGNaJ|* zq5U08d5L}+VDrQ{=Ulm7#{6CM&O{~SoqV5MF~Do1edFahPXOwo?2v6X0Me+g!J117 z1xbG*O`O0XR=>axmE3?Pz^xOU>_I$QNTH`tQFxM$9Myg@%5>K_Aq`ppLFA52$=YmN zCOW0)7>G6y6uaQ`qZ=pkSpVJ8;OU9{T@|mPMFmP!fG6L_k9sHa4zx`|Rw_2bBC7t~ zoX_R@+a~dvZkgmP6pIvIXye5H!<9OQChiKi2DsOFz2pgoB-zw7ng68oDKrOcV?qt| z_GG?AWoTY<1WsyRk|)Ak&vXFiK3SbSpaKM53ku^~;M%$)kI#!rW4KiKkWo4mQijvT zJYIG^eQ2ST3<;P_Tim>;OVSB+Hl|@9nWF(uE(7VwnyZp>Y)~b z$N)48XN?9UoMWZ=muo7gsOSKo zD3c0thN`K2rF7at!l-4cTIqWs23EcmFuw1n^5(S8b|w$RNKI8Y!z6m?P$PBNpj=v( z@8r6TkSJ+;0A^B!Eo_-R`5wW8dBTuLlRJ$Oat%aNw<|&`)Je}Bc(+(+*I5(R`ZQi# z9p=DfuWYD2z!#C?@6g6N5p2;y3Q08R>xO`N+g0FD_k^1L$Q6p^oN~q>Zw4>>Y}|C7 z4N=*ohP>bi6KLA&;rz*Ch{FYi1rV3a?vj!@#h1Bf^UpQBCXDN*^PnIoVCBt`Gx&C> zx)3-PV!%9cfYqb@FoPE;6dG_XtpIrPj~V>!;P;@le+UQBr~s4ijG&>46!LAD2Rt!T1yw@6q-Q4I8=8j|Afn}vfXJN1 z&tDM^CPv2|RC3qMl65!4gOJmn#V^x2i|-0dbe4FW{)N!w-T6QNG_q~5`HP?Uc%au) z^_Kx8yEnY;iKDZfBgH>Tw6$#i7KK3UGrN#?S4%5Yz#BdZoFEwq;uozaqsP**LSA&O z%aR?Q+7N%*--gIJ+Xr5s6GlPpGqQ*`T*q2_EEN~=9p$bMQK*3vRiH=iE#h&6n+pgV zn+zfJdl4T(-3gXV8duB%CdHLq%b^6h=DR?LhTZ}PA%@zE`7D+ub!B}p+xfOw&X#Z_ zLqRgSsWxA3!Fm%8pA97(CE(g|Q1Ry|1J5+Z$)zUbkAyTf^&GYP1`C8#!FrL@DB4NQ zB@CaU#pW0p^lFs90KpTL+g1`x+eGAHEQ*xHgnAPWDtUwSj0()6pGtXQNgu+JxImPJ z524E<&eWMgOwdJn>2U#+nhgtqh7msUv1Ap!ZH|h=gx=zJ>OW$K3jMU7K+P|l%l8~8 z!04GeL87VsjRoJOVLK4tA@tW*Y|&G3Dr`iPt4v-N_F;(-!zhS=B)~i;3j;zk?<_1w zP=S=mtkAKbo@#tiLmhlvP4js=z_?C8+Q;`o#e7~oS}y{CqWMlHq)!wyFc&Remu91g z%T!Duq`~@Ha6>J=j2Ep$1~t4D8BY5y;{k#;k@uvFLc!OMd7_XdrItE_*1xVQ7t&rc z%~0oCz-tC2=V|ou0-lb>TR<_AqNP{;H!&R26#VS9CQBl@78?9%<>mZ~(l@2*Sdf=~ zm_LX-@%T?{*AR2FIi1eD>&rpUV!=EaN0nEogZNBb8Xf-(iTklDc$;SbWf^Y1tYY2D z3aAqBStN*W^g>yE?Es{OnzdC&*|EYEw%I7C~eg3dIT$NAIA8?_!darr5e(vI~$KNaHf6b4w9uu z`%owpG+YOCdGjK^77i>@(a70U_Qs)@#j326O#Lo%vZ|iRrdZWtr$mpnFXp(Se-(U; zAedpLJGO<$kQD0GnRHnhFRtAClgHEK@OXKVF@fiLAj{0%iO_Q`AAsx&3Jr24YXHbOwUFoq z(hdcyR4lF%Wjkf%p+hfj1?VAJwG^PA0X&{0w=+l9}XIcEdqf=5>itc}qIJ<741+2Ha> zqD3yG8xv1*S_Yjs9Cda-i$IRd^?KL1pTUVLy@?Mai<|;{uqop@;$b>v1i#D%{G18G6IR=rULAC{$ z`pHN1vPuMJj98kuiANT)Wy#Wp`2QTBaKRW&2Sd=+cx{tfenoWpOWP!h+{}-ayO}Q@ zRzGzb%DwH@mGSYOU;yqax2mSzM@Z(N&1xj8F&$9j ztvp@_??HCb_c&BS@~#Nh8^xifQgnDO1L;!BRdoogN*0%%4%8|XK`aE*b1ua)$ypc( ze4gUj`8*R0JlMV7W!L=y+@;#i8tq<{O#B27@{1us+obTdoq|?hLw=$keNe}*>+>b* zZ{~WA#B=Mpo7mF;Yln_Aq4LW1xdA4_!hxCoSI-x5?$5!fj0T`FmUNSou{5bvdW}tM z@1ua^^7NwOHepgU%1qktBq4G0kFqSuDytc^MNi+vxn{osjpT+qkp~vutV-ewsKO7P za}76h(c?l`5E99oc`d>{P0~pnlzNL=Y>{wsZn+Jb=WB1_*{ePtGJ^hn3ojYOi_i@H zAS#UhxP=cBsmm!8#BGqMfsG;9JPPtm^$XD@aIFH$XYH-riIN4_hBQD$YPUv7u6X;c zTnY!2F8S_;_^7|x?&SW7ecv_95C$Rs^_3geEm2FS>L1Qxamsc6gJa;+Z~8GytLg%< zRYwmaAQe~SG-^GoOZ9X|hmj@SArrlpe>$hhf1A#ddam14tT&aq!%*K{e4A5B-gic! z@6mD_w|=B@aEDN+w=9kfqOE@z{5?yZzTydRImw&P+l0@jieF%}yXAH+e`9?qo86PMTL`flem+;s={-`j5x2rNZX_NDcAI0H3cL0&v0Lk=j{?CuUr7*+jjjiuWy z$r1peIkrpWMCERtt_Ls?~#=Q6xle}fMP|y8rcsiBOjDYyWPF|O&2t`xN4bXMFYA5fO>YW_Cp?ntW znePhrOo-%8b`n*u0tR~RZs4Y3b~(9_@uoi%5O(qVOIMVZ@BcrtzB?|eYim0wZDyE8 zFEcPhZ&K_P1{D)*fHg%0q9(xxC?+wnKzh*#AEAkaBNgVua+T8-49MW-zbpowo8ENj)J(d z&6`wcomFx5TnNGT<7O3kfmwDCzckXd4f0%#4KdTzLReE_^iX$jJl`(dkNG9j%tlFW zIv)j0ulb!YXv;UsmSNj1SZM_Yth-XOH3-cQQ=ekJGp11ecaV2ohQE{`?v%I)<~s87 zJGHgb6f;@WKX=SZ{e9)nO7H4PkrSQc`-XVE!&X`QJ zC?B$zsr}7(PJYW*V&T>8kg$W=8r%Lj2F*gpqp)1&^Se1YGhvas8wR}hiVtHP&tjDU`yY(anPlkccHXCztTUyH`qzDOCiHy^(e&2Uz}OzVPhc_3 zP2p?hvioKFb@^RC>K>AS3%$`Dc&-pHA}XW+ZiM)L>;7Or^I$6}hqAHnPd=0uO36-H z;B`9%6a@4PcdK>4PVY|HC;6*=V1)EAc!BvhM(Q13pY@Q)R_Sd>;#!vOImbAaKkCSW zNd2QqQ&DPY@CW3{XScS%Z-_^Fv0Dyv+xPGyf)}mc_lWz?BwHTNSMD7gw^&&MB-w?_)Yyh}#oRM-s=cY07;69C|PpHBr`>Oo0EA>k&{ ze%?P*!u4D!pK2~m8BLR369QA|Ls~645{(y6Iokd0<=8GSJS0oq{W!SPKRl$3Xg;6b z;43?H0ARtxvKsCv0PgC^hhq#lAnT3d7-@t8OeQ1N>QfWb=${MS{bjSb92H!Pa%pE^VlcV#(+vR{X_DNXL(^&dlTsmYEyr2eIOEeu8vT;bXGd>wiW0r(vxLHYlDbKJZ#x_~!OS;QGGs zn6x80j^iiQ3*CXH^SP-cPhSv{3198g87Yw69(-nh6a%(OKNTRjRhbss$agVn930aKr zZO5(nl1Lkke^RSmWm4Y~Y_*m9#7eI2NjafCN*w?zB^+R?epAz$@Q?^<{SjJEu00Zd z8vjHd1}djN^}dLc)^!jqiY0qwxa?bDztsEhWGlHmsNpy7;SusyATw(%4}gw&BO2GA z?a|ht2SD?!KcUd!*ekEDYqo-(w^yrOr;>ZGC61mvKcpYMTdKSs!pU+ouB|_$*kMiZ zu7paTeKDgs<3wiopx38E~Gx6_(Iy-CLh)In$qx8HsQzHBm%>zGKqe^O+J9DiHuj+QyXY9EGQ~mDC_DR zI#P&1fsW-Lz)VN-*#I8dZ%=7m?upcQzF~xg%ZgKqrxt3Tum@S?*;Ro0RX;5u6lV-> zB2ULixoed0kw3%#t5^B`X-Um}8c<-%*#(`7CC|ugGqbPZ8F?Q?bMc-<6ZF$(wES}d zL9{orsW&hPmmsuhPkw9-P|_l+s@7aCPtsSDIABVvmm^S4JNJfRGEYH;`|_%_n(Pe( z)EK@BGv`Pu{|}JMu7Aq|<^DUSls78Zd# zGvw1(575gXuEUm1?*4l?D^R=4vEIim7JB3b*)s=UkoPT}i3Zu3%urO6U(|M!5=v@M zg9&!?LW7mcUzEwHc`-)bb0W2^4bP!(wV&68Tc=w9FP^s+vTRyK0bBsa1~sbFy7^l$ zZD%ew1rDUC@QprS4YvKB6olhzh6Gc?3t-!1KkttV?@L<4d;#DRy(vTBNO2T>^gSy${@Roy6)%+$LL91WZ4nSB|U4u?) z^UHDrs5l6qEbK;NsQiiqJ`y;$vPFVXoO8K!g!qsscc3Mx%d@srK_T7KlM$<=Lgrpk zb(K7seNWs3iuaxf4TD=)8TmAD-??_BSp%e{H4K-oOcn%h78wq5}dr_9wyV)Hwu5($lX=j@FT4 zbx`K(T9GZAd|vTO62ZwewfzrU{kmXlatcAD^W1@wlr;}oz^|{%X~vio7W401<}lNz zOMJKrlJ`c82s4(DJHvw3{p+YOz3_%ias5~j`KvB4+vwLfq!z=>IJ$svd=VKg^RV=2+0=k-6|;^=ev)@YLNV(~>A+lr z^~%b1m6uko>KCTyJR-R_%EGvl?nM5O(J2|+679c@oiXJc&r(xR_+I4WOO`HK0Bu?zcMWp#ADD>>ePl7sV;NYfz4Vz5v5LDhBZn3@LvPA)5% zQ>Y6{QqOiEVv!~|>E8dzncOu47FM1Alh-V8xwP7F!&ia+14oWBz@`|#Bwm0Wzk>o@ zUJBK!Z6C^$*eBYZJ9hQUm9;h6S$)U^wnIM^)BY~nN2jt=qW?d(42#?}zvv%HyCZF! zPOv_G{ty0!pve`hl+TUKTgOK+m#Fz=nr{1S?C!;nLifB2 zUcScW`+rtM?z6b8Jo%{{fNgI0lpg#!z)FUrT2L%>=g~z+wQFYH|0ROnb5tf|?@@vA zc4*2vKy!X3!wl1NY=>CjB(DEVW0g%KdtnG9B|nn|0CYVntQVuDl)nJt)}xNew9Y!F zrDw+ku~6?!n?b$7aW;MIil{HvcO0!;6lkDBBW(;OV#@l?<1(5paYLZ-|9W&V{e4`P zblYTf!(H9-!Hpj!!}P`I7ZrMG<(i7M8|E(Wcj>Ajcm4EebCRJa&kdk`R8+qb1k8n6GMvDRIjfcBz>hEH{b!9uMf_Et)^<8 z5-Z*}tOpJ^;7eH?(neOwFXO+I6>@wzswS>%@E&Tvl$p8XOUcH2z7$X%5E(#DmxdZF z>o?32FrjVv4dG{$KS~OReK}Ya8d{VxW5$!0E;@G zO^ibT+8v-bh?%$rl_3l5N-zrt0`P;x_!#SI^s?tvtXZa$AZt<*!n~7E2%S)y#&L)# zFWjTpcie}YI=Xm)gZ}-UtO#(TT=dO%a%p2C)|1yEV9xrU7cuYy05*MZF?g3jZtAx0 zrFX&v;$Q5+bVz=SShK$UR|wN6iZTWLpsmMY+*2?P!p*h>D25L_1gYi+**LJuRubqC zBii$W1cvreIO7Mj2LevWw$I&!BYVvw0GiG`p&k7z-LRJ$0qhmLGEibaAseRkgyglr z;*X{3G>Bl1Iw?_(tx$2qhS9YrWhyFsaOl>xgP8N=NeKm*1SA2&!h`9|NezDTDi$?p zVBC+bpS}*%qdf-${gvp*IhvfVJ_$lS4}h%Hz6iPm*YpW$qvKX^YxYhHM=!Zg z)WT9|_ ztn(Lv1?KKeoJJ5gFw@LmWtq9x!zL7p*su(H7pZo`uUe)xPU!+=)8Stw$O+8+B!YhV zZ@&8OwO2sABj-2SUOAS~;X#G73ntIhb<_YV&4o8wL_mNJ-vcWfo;`a)%*LgwmRD$w zQ@BR~FWCW%N73&x{#}+pSV?qQed*@klyh(MpF$M0g~R$HC)w`w#sdl$^p|WeE|IeS30DPX{w3eecW2K} z@b9_yub6CgiqyBl+x#v3Ggm)GBUHl`@1aPEfFsCfe7f%YQZNO6UX01y{I@*902o1E z3am5Q`?og5Z)4Hfz6C0(KJIzo6cy@ zl%Z~ZDTbvLy8T1R8R_*8I6Q7QNBbLqDAk5O?ry_Kn)P2pP|!IT0bCGrC?^b9-C1X~ zdnx#_y>?I(;@~0zX@klAb8iu2PLlBa)ju-v#b? zLJ-YyN1elVeCyy+W5?>G5oG%!9!MVzZtU|on!K&wLgprBwg^Pjy#aNFf^qA_l$gCicq`LJHYLvYFd0)m=14s|d#qu}#Iz|V#{7){zY)WMy!mfKR2sQ1f& zDBD!{7ekV;Ot-M0o>z?-blQ_~PQ4*F1!RCXd>veW>sg$Dir$^r#yNftj!A43hZl*b z+x;Az*EQbh3s|S0JQ?eHckXif(ecM4!sx7@$Ut)&r{P{uAFB4+LnUP8`#Xez2w=yb zLuV=K?Ubrj>sM<=+_mSGQrn^MY4o?hObZeju%H&j*-aHoQP9xpl}eLBU9G_33BobC zIY4GW7Y78&ecdd0f>h4EqO!WWQm>8n+!!&8ehhFVbNYR=A(=dZj!gAGb}MAGTerEw zY4NGJFxnF+>i{matj-144Pq{@p-O7`3SflC-b%`(1w&F9(B!_{kwC5Qqy^FrgVxuN zC!Z)+q_t{&EwaLa!eFPtk)gh?fFMVfGZuY{u|@~;SEXluExb2M#-jw%V017MGq)7Y zlEH)}G);{TH$RG|7YE78Ac{3P_#^;JgIkS(#L6-YO%4Wxu%|3S!!-msm#J=upU=_!sQws-gZ1BVU2QNsxc<>-N(6Hv%?*^B*&&)lc~tWTfRl+9`7~ZU zB^C$MKG{~Wa}QcNtriF858UkokS&f*;SYE`5NiGexxV-{@DH=B@@w_~O9OWM4`soE ze&m3)I8qwuGw-%o)M+=jwm&+-LUaUwSSHyHB&G-G{=JRIab$I-0`}^$Ik=yQx@iJ= zV&HFUn~#n|_Ek0^@Rw1|uJAlMX>%|v*?usX)mQ^)+vtA9h6*ndyyjEJM3i^Mtg*T( z0PUbZ6M`X|4o2#XKNAFMP@;h?^(9l7e8Tao zkR`LI=J+rfL3CH#bn=}9eF@h0rKHfm!({bUgoHp@soIc7(cuo!KAA%HgE3jOWJVBc zQ$XhyiCSFBn0__uo<_85TK7XWquQAcq)3F+cp;4?Mt{%Wzps7 z!77dd&N`eXMar;NR1DFCZ4W*gY@)hIEgZj+qM47s6)6!1!zq~vnWBV-qHri)<*_$9 zN?wzhDqLsy*vG|lV0$(VQf!IH3A%S%gK5uMqwL)%N0AB+?(4!q)hhBc08s|eR!c^I zae{qJU9>e?X16)o!R1CENi)5VCWO<-7$=tvPS3?S zc=%9e&>Xh^*8a-ka41<@^rShN1g32qO{g0hq?7*Xn8P9dbGYJtgnWLCQ$DKH>F}rr z*M(CI)cpy_hKHQmPF5?q^_ryd7;a_1lb$ZmmGPYR-b#g>}1$o52;=Kqv3U zSo!3(xiEu4ts;&8pbxVj6(=9sXSL3tj38kwfiHtkiF1tNt?QxO5IAysR@nW??9%3` z5Li4Axx>l2I4y|EwI8!+721(z;{c+A*haW}e^8)xcGc9%bxQ}aJY5c^1E|}GcO&Yy zd50sABWO30-P0mnmc+7U$nAM2)Sj106_>}mU_l^TfRD-6NeQ4bYd?V$kBiddrId#0RJZJ&Pa^L-rcaOot!A&kXz+Uqvxzi!DO8kf?C3x1s zqTz6&Y$kh|AKdGgMM5yv4|2B7B!}>ZGQsACjCXO8ybEM6!Q6dX~`*1 z*D4@n+AG6sIO9V6DK%N1ym=iE!qt~RespEBe1vc>Z$igqPqJ*SewV0{V32?wKF&8j zXiO?5H>y_;yEy6MIV~xTGo711VkxClYm`6S!c!dFg=Okp`5)mnI{h>NG&vVUT1@IR zSh-#TS!olHp6v#JJ@!2w#XGd&HW$YFS(L_GHz(>KrAAX^6f!=b@HW2($II?id04iR z!;uwDd*YJ8a!ix)^EnhZ5#me!Jf#)i;3C!lUtD@J%^{uQEG5XAKqu2=ShC$#kg^{@ zc|JB>HZg>30eZa=6ua&de!P+D(;dZX(phk)`;Q>M!Hpz9t76GU%3&@;4sHfQ*A0QU zVD}?|{95cn2L)u9Su76c?4aWlSne^#{^P=APHuN!33>4FOj#%`c{cbjT^$MFVx~N2 z+ffKEZug{_XkVuGH7}y*)_U6CPCsPII;?p)9V&8HqoAEV%)x7-c$n-b7buy9a@^2)r?a>t^-_I0o2?j+_{%)yOS#RqdU?39;i7b+45SPawwxh+LbMj+?p->2{j)i zI{{EANY0VSyD}z*$D}jvZ{aMuz zT5E3xfO=o9tQd4K;KBJ3FiYiM06S$JE`PP&5XYR`l0%O}A( zTCP>S7D-B095OW#Xp;GqnNEr#XHE0M3u+XO? zCGhl^LZJt+8HvT_M@_t2?e{_FzvRgPvt4P5XJP*hkf7Y(=?n>lu%y;eGEPjNt9!#b z+?oYT(bW~J`q>RNkAaU--iF_u^fkhmzlGju&{wUl4Hakwz8W;-1(+}gc&mT=4Yk+|-PY3f<**~a- z3b0`kT{7OmnPTrha6Ex42Y3+cVJUjc+DO^t9zf#CPXdeFJzl20(FL{Z-ldSWh@Ifb zQlC@(KXl3KMhw+uhI&>&FO5B{%sRwoq_2) zjyfmG-vRwOlJ?MI-cQkExE+A`9TPP_5|&Qnl(O_AbP?H?Q0hrnFq z1t>FbDKK$7>?w=Sp!_#|lJKEz$wL>a7i#$=4s$dWCd6?bZ4LYac|0yrtn|pV^gR=c z!8sCYhUJdDB%@)vt;s0kHQ_8eevg%?qmai?4Oixcq{OF~% z;Fd2gOy=J?(q@kG`h=(fodSg)tS1;=KC#J2}GDwmf zLySmaMg+3G09PRy+kGv#|27|De@WvobdT+w<_ zel9{7#dGy4-V~@TLt$CBFcMAChs(PS~g2Q(+qhG_YAqD$BBtf!o`Vb4@fmUkHXeb{MCZFO z>zy%Ed$5^~QEK;;Zik&w^C-lQ&Y2EQ{P6%NS-l(sla*Pr>fOs6<7}1da6PZBT*?Do zdtN$-qfp?!d6on+=y}DH>pG0@!C4MT5c)YjfwN^y-OoaGAZNA&w1TGq&1lGr(19-< zhtWyuZiQd&u%WSbT6Jd%ho6pKD}OH}M)MD3#EPHq}_#?NKSklL;IO`c4G_3{lEU zQJD=xZGVnb66|MTjkjTrwzlE`4=Z^X4W6=p!L)5tm5qn8)NW+wYYTed>hmS4}+;_Ps6V{P*sEZ8)Ao+Fdv?QH7!#kYXk z=g9=+ZVAUKc?6zbXXnW%TIV}T)hg+JDizWZpNARf_W2H>;EV!W6pGE|TVX8fnv90q z;rS9m*}Ix`*lpK3{rf97oZJosT+ae+4ic&BF^os$0tr!UJG#cKw)O&fne560+_&C# zSt)$JRZjh#Dc+G#bUl2LR#`Y? z#PYux*ACmo4qZ;5zRi?F7hfzB+cyK*zf!NWOjf4Y19aQAiyb4?)Oq%WhCw1XS36gZ z97em&^D`h&N751R7G0u+6RS#eCPAS6flH*)H~@P&af!SPKu%z(zZ4a2MFUzo>{@;W zmbrsU7D@IFZ6~L9JYdmx97_looP}{<@w^LGq%OY1K#l=;rE9T6N?K#6bU1w5+JB6& z*}&$9n$fh%<+^4pZZ6aA^U5p7b1?{`3oHq;g5fA6$d2s~8uc>|+WD-} zHemkYnV#xPPb^60#1Y*&t}@kYQh6r&?8;bSuYn*DAB7g1R>TC9n@_>|dXVOeFO|5) zt-|&jLW3*?SHeSefLZ4bO9UwY9e=yFLRib#wp2^WGO4CC)j{Vk)!GH=l$#ip5Hz!5 zUG41kx}foos42Clpt{+9NAI5iEoFP*==1gG=3LCP3c@>w=tE|<< zOU?lqN;>E!ADV66J6oo&#Wz`itBJ$kNp^WScc1F zc{9McJlqy$n!923rB#{)VvEu#-*}m#L(i)71WONOOtE!LcZE69#TV}UitT7s0C z^Yi_@C|DLL8X+RJCLvezF|^`buZ9kIS6Q!+bDBMu8AbN@Rxy3-=Op|eYjF0$>#YU& zsPlItua-6l>{9cTC>xo=g$`hE2t{r86)4bk)(`Ow&`Drj*MWD;8b`LCIIfQGTZR5p z>z3$n%37fv=1%At_UlK{wiWXFjVB@@!E+rd=$3Z@?eAP6)dSFjG*LL~O06Ka+8;NX z`%-iIW!MXT$Hl+;8f%(1Q;g&&`O*Nr&Go7Js;XIn4qNXFn3%X#vMbgs3Y`rA9b}NI zR}GZv;KaEbmW%sW@z!ptzXr&~$AJGetd^h-dxTtyu4M3J)4>g4P0jT))v{ppUwdI} z93l>&qcU%68vQcquZvA4i^?4bIg*sF^-ZK@Yqag@LJy+)G)igBYX&7Js`5+a;}ZPo z+cnxk8%rID{@IjPCELAmZ(;<^u98;LfW9>PX!7;;`H=GT+|qA1pfE3p#}0$gzEi3t z(y|sR;H^QlZ6dVIS5`|x2>Y01dc0burypPnyd7HYYX@3cIM{@o00$We%hhOCPvGY+ z@=c}#T^SDZ!iu$P(0tQ^HOJ3>+Eg&0luK960mE%wt=`qM??5hAeVyWF?n?z?=@BvL z8Yo8Pua&1NUF$es4L+Jc4)4AMr|KfkgeB)-^mpSkmNDd5r=8O)sQy-GIc;AjksENu z5G8kpD$*Exe|dc}wS5v0M}Mr7N}IdZAwa>8AsA|VA9T=9rwrlBVS6dehfddO31>#& zz+IXbztnCO6tQl-EPj^!>V61XI<0?N`@LiU6c7OQbjpqOO{eO^u+_-F(jk6%Ns6X} z>`gI(HeM++-?cR|o;-Wu&v*a2c%*rw(>V?8`Uk3Oy$5hC{Bxz85zHdYxk{FmZhRI+ zTdtD#&+mqWc=p?9XFY$F!=~SqcNPzo9IKFeu1y?6o}V--2~$YqPw% zY72Nx0cKh;Iu`fqi_mR9^Gk?`yGD{C>uce$>uGcppuZIg4<~=hUg*nUx7^W*4qCNE zrm^OjAIe%A;=^dk`I&)+1(nM+!UFbgymxa@Fj?y4RQKtIi~96BS!_HI;3E6c3p?bT zXsL5BF~hFF*qxmaSv1#67-t>AhNoeWGPz!+8j4gYw5eX+hF$Cd-?Gx|o2^FLxzNZP z4#bx@S~CpotDx&-1uOq6?*l_ZmA10YSH(TrJ9lW2nxB^IBr+bpPEJ<7;(4xj@RghQ z0z1QPzh0IJM4@u&)9YoGH7>K{(WEA`?huswS8%lVMgKUX3gTKI%e@^ItaV0^_#U}I z1^}%{;a7FvAopIjhvw`1xEm!(px~sq!!R@1oonKP7%odrs{Raj8PA6iyoy;(yEh%f z9CVWeI>yVx7?!2@(3-zV3Mb(9Aa#lbsmYL&ELXrAtT?dl0_49s2KrU+Xnzl!>@XEp z!j%flK#nf-&jZNuSKsWAr81pbF7Y2vDaK%dXUrh`TWJ~8dvk!1hTbA06?=;mCmK)t zXVI;YN&Hbm!GXBACF(R#qZxo@R=D)s)1_U6G` zCC!C!3~YzelWa{%ZR*m);*X5*7=N4gh!9`MicF-{x5-igydJ#yxi%B+y-mg#`f!=F z_hp=Oy;r43TME<^ry+r|Zf_farmTXWDKdGU6cOeow8Q_D!V z{xDGbR#|gk1Z2{!FJ#C^uU7D0c<{{g$)VS`$`u=IIkdel2f)VjJqknvrzO<6a3p^X z+`X$hz;48B=w&Ede8gy4wZsrO*wA;T#va}#CsAt$+Asooz<#7RMt7?HLi50)ev)v)0-l*#R88e=4+Ab@Np-Q^cn!#2u zWnNM7>_L{>9i{1T%4?9J=Q~<+fi0Y7H)xZSKsC465_GWh)P8wH3;nx6R!>)hgZs*B z_L;^&UP6Az_My8PwLE7z^&RzFNC9_Btl(-|&OD6V>^lVq(i7zX4pvzzoGecXpsn!$ zL$%#0cW210pj_e$T>G&@qTcRv59oQ2)wIymCT)eN8$;(UnaQ@2g1K`S7S9pPf>Nn; zzifcPVw2?U1*@S>w7g5LCzB57+tJhX8MMgK+Gh=re zWFwUJ5vcBI>if<<;v4C`13j2o_sCbF;?K}SJDr)11mcc+_z3YPBh`B8p8g7aTQk~a z8((rUJjmx`Xb)a^uN)Bj+?lY!xe-?&T?YpyWYTg~*EyA9m-H)^u|{^zNd&^f?o8wv z_sOQ=8$ZOj!)VTZvdv4*B7m2NMw#f=`((Kd)Ctbm!B=nhj}`?}481W)Czo^me(e47 z87c=>eald)x&}>?Tkn@c9EK&ikQq!j)Aw71?BeRN#CmtiPV4v;%}!5SI$%-{G{&=|Hk6e3CWz_il_hbu0*U9JRbuNLpgo}IGy-RsHZ=lfR25Qw!x#jw2+-er567bbtVjyuxoawB3tuU_2t(=jgYm(*3?XZ-dzCn zR>^Mpvi!x+T?IZB*X&^df#!3&cIf1%Qq^}Bn^k$E>j-~EhtM5o{K(lXAH=Y#lCN;$ zl{8D|3*Bj8c+x}Mw8*V|ewtl-c`bG zgUu~E0Jpmhnf!W$t4D`QCt@7QL5w$Eb#?YH70?(J2?+KE>If^DHFCqM`cL!;+cR_r;GQ*K`mMCOyJ$*t2Ws#3oNA9O)jB$7ZIKZ7aldPu=6> z0%PgWWH*%;BnDB)za&s{kF_<%k|MTLRsWK}-}4a?+|Cv0M#IzsT_Ta=23KLScP04+ z_TNJ5S3q2n?^uh+gd2m-A*fqb+mPaLDVoXBoP0+&YH^lSi2LujSCfU=`Sn)g- zoIzV&GIGW<;1OxvgDZdYh6ugqU;miYvslv_K0nFy%VVIopz#?gyUN~YA7lAL+&)@8}SUQddhiqqqRwXKVHb#=cfrnSeV(cxH@m90jz=dTw8o48@x^NtN1C0|z04LzTzK zn#(FLKgVB|t8$)ioH5!^wfur=K=lC#_1T`1@xko^rKOn$l#C~!`LO6Id6AYk;p|!W zQ*;n{pOWte{TD38XF-lX@|0}!l26d_JN{LagVLUMuxh{i1E|GUU+Nzjic)+*ZSC61 zOZ7`#?Rg_8_cc}6+5()2?Jd}60h8-T?N7^ot9UttRdQ_f%hU3OtjO7V2+h^}XXMIa zyEzUv7;mQAsr(a}6ZQx^@5>18zpI)N1_m%e#bwH2%SmBwoRtyMK9Q^lf) zH1I@&!VI(er81EEJG|G1W>NlswBy*>AuvNl;NjM zR>`la;r4>+>LT#S*IrhkvpN}5lk+WPfA1eTgu|y^HZsxf=Ohu~l11z9L+wG!mM>kq zp<3HrJrfK7!I=Eg z^#I`13NF9)ym3nHJ;wW9HW)jyJ8A&AfavX@)_akeoc{yc>!}9 zhVzd^+4^rekVXLm@MgrS{8#1EOI~$|-gF+dg}6tX71~6(QffOU7EO5EjMJ@&%PX#g z(k6nk{ELqxWISzrO-3YVS9}`%=Qa6O*4r#!4ZEW6UegvIShT~_y261ecas;<)6H*4 zoW3~6S>22y8MhCki?mJFvJz5?mUTQW91Z#g(n zX1(p0&eQlFTms-Oz>xj!cJ~@e6m0k1g^tn8cy4~hjPgerChif+#6&y zFIAjlv}0wt^j(QoX#4K8BszImY6zTwHZSbg|H{dV#J0aBeN+hi9jhwWEMJC>Uq6JW zZ@$5y4y_W{C|-qrn|x~55vlFkI~~(Gpe$?ZX&pw*kATbYXs6r(6hn-%zVtVl3bh7Z z?RoPRZqH4_x}^TBx^3PNb1=PVb4!&7@{`Zwd_LTz1-O1c*_eNz=4E@=!9uL|*jRMI zF3!|Nn9JUk8kCNoNu)R5)tE)oMD*mIUxxA|oL&r!WO<%{koS1F(RwbY1F9?cq^8gv z?@3_k{wh_|3jEw0CX|^ms)Gr7@Ov_4Wyw%NZWseVPd{3cmb|ZRM)dO)6A5spu@Hye z`@UAUyES|~&2C3U?XUM`nZk!7m$Kr;&HC(U+}p~Z_cK%72M%E=4x^Uem3?_R(x`(U z2=<5d-eztG5W4pR*=?xqWm4VaE`J*KKiNjx*Fpoi^;sN6TjJ9g`P)$t4@${4SMY$u z1Sf7erXd!JzTQtSL4v%;AVxRkeJD9oO@|V3xHi=qlDHI*utDKSA&gpXLazsRJ()spTgvE7KF`-j8HJ+dh)sIYK`Zek@dSyD6Bq z+~a1vWyS3{TB?6YOQ%~u)^`2YFg$83l;940EQwjkR2y=!e;F;*TL4+|*aOO<>29Dp z5y(3#>~QkE7F1Q&lvrQd(3Q%#9lllf{^;kjuU}I;cm1WDpJ}&~ngUn{vTos5pGdHP z6b+a*YyANc{ZyWs8HEg6EuWsE%NMd-1`JosH12v(UlnX}l=*kdw`TaHX@qk z0~E{!3{YUVn(u;Fr>k3zgq&{e?tW0YI(0j;dAhnCqxoyUbOU+50TvM1Ju>2ql&+p+ zHPPigQr_6oBS~o~=tNX!L&0Kuafq3AU1#BUVyJra$3bZ{>vM^{%{`VP+Wom!PXnHK zL~tJc{<&;kp9kRt0(PH?3cip_NnIu`)SU~!zS;VP#IAZJU8)QFNDFe5@?=hFdgH%b zk&m@waS#*SNto61xj6X@GDsaP}vmeM>h81b%sMfCB{J;Z%;4;Pbr>1d)}OjbW0EABvG)$ zH;w8X&@H>_Ye$M2;J$a2{!#>fvS_89!zA)eU}o+^weO%gLASxMZ^YfT^GVpID(MIQ zs(IA56Uvmk&zMpuCj!@x;x`R?gQV>!L`RN)BVBT~0E_!pA}f;-U3Y*4VD(SMEu5eg zQ2DJaxPoBp=fh!)5X{OA@Jwh|Pbw9Ml_ULo4t*nf;oE)NIq-d2YE(MpZM{q91N_b_3SG`jnRR zDa$xOU_z+u=2YJBTXqLzQuitCizidpCn30gpAN8_p_!sGD($OYx-%>T=nk3k+|MuJGEh|K4KBB0*0^PIA#~K)F!~#m_A6e*~C*5|M^|QQA^*WFZ zI$O-qmV){7E-0R(Z+q(71c{;slOq#47IMV2y{giK_oIzudD?2xWiLQw2QzF@N;qx& zMW%v%O~KXmr6bR!*kC^$#Q_yYaW497aYhjQo(G&02VlRO?o0|Cq@|s!;yPpduKrby z(E**sL%(X@v=toZe}0w6D?j6hN{-2@OTzigNDQUo-=tF6RhT}4&ddvuV>OKm&H}IW z-EZ>2KpAEaf|_&I?Fk4U$hwiU=1^U>L1$zjC4?{S`lw*qyf|Kub!UE;1UK&w$5J&r zoy+4PxU&vd@{A!#`Y*A~N&9=MCitiHUclOorHxMo*}_@#9t{RHI91YWsy%Ns*%xNS z)4hMn;w{(-jbhtrNVqIMlK=~qKP5OROI+_aVR}=crxJ03t=H-jt$NY6??Xt(0IU%N za#&`dw+Aa>+h5w@#cs!+fCQF(TcF=SuIDq$nrxe0Jg;m@LCL)Na|$Ic+5Z;kLCN28 z$>p=ab~_}gUbtQEE$!NGoc&vhpn$UG(yD)CL9>NzXI^@!VW3;x_9gPcl3BhEGj{LX z0a?Y~e;gO7vF!4L|6YRykfrTs9E_^yxjQPu!oOTmyIul0iQzzE`ZTy<#p_l4iDnWOD3|0>2bGJ;cd<)8=Q~aCRFi|HE~-y0{>a zV`5ysN|VEnX0`{&xtv5bKdG|TQ2E-9q0S3Ao+VM&XVFnK##eis9w!sc z+tFaqVK?0;07^9^v^nbV-2=*PUzb6!1}*DURS2~ zc`eBeV`P00_Xap6InIhjl-^}D)6oE#;hs@R<0vIiCKqx+S#)r3wC)3}L!De%U0;E0Ec97rmH1g6K71I zvj!*U8*o_8q|rthi_%LVTE;dC+g^?ipr-xl%x8l1U@Uol#0~#_qpXfT1N;+gCMOGB zl>ZS_M4L@c!E;ZizVzVXgyIG-W==?R_Qg-6<`p)*&EDto8%wo8@}*p!Z4Hv$z)DcI zW@`pn%uc>~BF%}tZ7R^vdeVV2H1m^Wwbo$vC|E8P2;%4~acE4oY?)~UPi<8sn zo>7pCvRP#bv<-!rK=-8(7F=R=@>vQ)@jPm^YWuIuhsa{d z3X#Y6=|s*9-@kBE*?Js5+E!zO3ATnoDqp~I-;RE8g25w1;NEqX?s$v9IK3Q|j!+ryoU)Pwh0 z(a`nW8WTwKA|!0CiExS}NfEVN10i6~K?JSt2$^dLZej7)8LgB(#LuWc019yYlK?X8 zwsYV|kBUKH0rW_uJZjZfVCm*WAo53#%CrRb;{{MR%%b)T=!PD%X-D4suu$FTOi;Z(CG!a=v+iUPDHT3$ak+NtimO^sI~ zk$=n>(NuVYR8%IZjwC9~(M~RjvX6)*Mz(b6*QwCiSPoXp-oNmD7ivF-_b-cOL4Gkb z*`Ru$s{0}nxGTo#QLnFv=-i!d3-?99!SBa3O!#;gshY zLyZMN*|gdS)Q5beyB5IS2&b$Vb`eozry$&dE~{LtQ4qS$V$riMPMuR`q$g92?M#IF zl3~964Nj-?eD!o}JJ@?`c&Hj>6wxO68BK$&p@71I{bCXXCU?b3OoUofmW9zh1H9skfdjQVu{S)RJ&BN^a%fUi4#2a99QKU=u zBjZ1sAA|WwnM;laMkO^2^T(YOKjC-|fNW$4^wp;%1zN$&Tf2T~?fSLa2>>&^RPT^r zJ6YT^5-m$i=Nj+%1Jfbl0l3gO?_p$gce^D_u^b@a2!Zs{I|00E*|-421?;;h=t?Ur zvKm2HS3}A)6si@=<7F{-ZS~70j~zG5)_55L)v@tj3Uc%DCCLHajv*Fn;sRC6 zq~&6^1PK#8x$wU1{w*ZVa#`gnUH4hRos{*Ka&t?dPZMMToc$AM@$3eFCz;mza*WGK zbdFMwbZ~Aa$2MQ04`PFZaR{$cBII*W+Sb0VYC>#W&=hf%)#A-YXEDk-at8ZJEF3iYkqyq%!iJ-yo*FyL^ZrRlnhf zBYLeaed$h?STBxz$#|WF##mvzjG-P6l-3U<%Zky}k?h7n(n#*R+;O<_n5~qTq8*3* z+D=ij4WxvCx&a)v7Yj+_ao%xZdIyWDX4}?J!lXBR|y!|Uw>{fb^3O}AE ze+q__10q!Dveuq5^Ml!aAXk=>E{hGCOygzBoc5>7g5rKnd8Rdm z3>n&s#wW%ps9B-9cyG|pw63@DvT8s~a|#y}&d~}lKGUKzsrsfgAU(^#)3sLm@(`5Y z0F(JvBQRl|p-{d0J3~(IzTuE8>b}+;0?*;WR0!x?59C=!x;j(Fw{N2|3Q>5eP3r*x z$XXt!*Wkd+`GY=dF`NbYw?XL^r)8Vvsv2CRT^o{NyrYq&5|UFg=}GyXR)vs=YY2d z)cpDEtjOjwfqZ(vjBTG`)~%0FB|*Ju4&?04W@|dNK&pKU;$U_Tz#3wT*Kuc9GOf>% zbg$(&q`hCrk%O}1VO$|y!{CW>GDp%dYpyd(?ND9mC6?Cb%6qo0fv)p2xlXQ=xIRt> z`TmYrfbQra7jW${5L8X6M)mk0fKsuHoP#J)5B99IwsMDkQ{PvD<&Qfnu zJVs(-eXTLlyC0OxePguqJqcaTKgT$Q98y4~Pp6Hwz-wT2)w1>a9Rk_6ldjzf!H1a( zf;hyo(@y(E(INEVSlKWjbzs<)@~mr|Obp)$>K5ZLSvpR_*OqZk2F^id1Hr04S)yG2lK3$+{*ux#(9=3K8Az&O~4bCpcNJ4+Iry zCZ{RE9v6Mv|CkB_bTrM}Z?`$Tz%T@#&*eskZSnEL;>A_2YQ z=%gDZ_nl15qy3ZQXshvsSEOG+9;N2VXQ4+9G}-6&z#z5H`e&=_D@ZSO#zO@5zK~P{ zlrCiDFwm;^RRHsj=gH`S6#@uwzLUl3O7}$$qs95M?sEH}_)=aJ7mCodta5F?twz_f z;7G3#9gOaLIfTTMGr(-5NRK>}&oOr@6?ItX|UGLEro`*`0Cjxu4#b$-| zto#}aJ)-l4thm6*89VQSNd@vWeT%HxP2{jYoWuT_$Cex3k3o@dT?AvGm#%<*YWnd2 z&RPN8=j&G(nI>y1E{S@IKvyq+HQtvzljXq?d|50J&U<$z`RcbcH`V09k>{StPJxz8 zqVlzgVBdZa64eCBTMk3HRN6cw(+K$yJ^Lv*jhj+;MMj9Bq+s3!a-=b&f(4}hS(m|g zu9iD9hEwMhiC3(`h4upuiK!B&@~1kvbc*OR4mubzLj{TeTwaO2R@4@0BJ(pQKC;~7 z0kbRbvzuvrp$rkoBDjIZ#ajP=SdoIBK=sdzJ|9Flo+)$+$zuZ5{|j~@KNQNEZg~iL z97k>hJpaYE5Q9OIm)i3tQsa^cT!P;~J7nK9IS~P~PV&BkO2p}Dd<=Ncm*@yQDw>Ix z#)2g}1RP>xT8eCVF#fLsHS7Kx<0I*n^R=(nSPnKLl#sT40|^V)1#%phX5%iM(*dQZ zi!PAW(Rl}oOd!Glg!y}*jsE*rGT$0nKJXo>YG3CxaL1|d0{-U1NPpUWYl1G}z@&xp zA~_jYi>h}B`q1q~5*r4@4*n{Va|{xyVYm@dO!YKD%Q zXFAwQC#TCc>i5zn&kWAu)$OM#XAE?heog^VK)VxTgF&@!3E)rrXUO*KoZ-w-QMBS_ z1iAE?+CE$Z@7z~6MkmdwH>-myik_B1jyhtC8(JezFV!TIS zimBUL=FF1Jm*FwxcbiZ~*5n+3!40AI|5(!KhgnXkt<9&7;ntZTv4R9Yz#i(zMTgEd z8OrmIosHvfVTmfB>&Pqv;v94N23Skbw$VeU%Km-!<2=5gR6;IbSHnX!?$~?($P)j^9!|$$2^Qp$tM^^olfA6$s9$e=E*Yv41m7MI*6a-&6l0RCC2X0 zA&}C(HNr?Y&zCI#8<-qAr2mdm`*Z!8kU%L5Wbg16=st#4PUQkEj*jV{Sct@xM*Gnh zw=h1v`^lleFT4sm>z41prR-kdj)q+%g~7T?->fE2Gv;#}D&wEs5X~3Xwu_w1Z?aDV z=r#6YS?~}f0J3>4m_6keOCn?sj7z3RE|%n(y#%0;?50x}JB4k6y6{HCy0~RAsY+-8 z@UKpz{L5JKc@Fx6b4E+EMbR3)!yr@knaPK9%)X=8S0!J-eDRMXMzuv|0c2lN%kQEt6 zX3x9Gw?Mq%!>#L1XOj0sI&}S#Lj*PCQDEX!$|{o;QCER(OL>_jn~W1|UyngPl9XZ8 z?=`H?#g@LO%Oov19bhU@+mDa%QPfcgb+Ec}t+e4(28Sr%-4vx~;fV6Q1^W^KcWAIc ztH)6xCpWxA(Mp*H9KYfbAZ>218Jed`OPnmWe*{^};=KK@~pxlDFc{ck|dl`M0n^83g1!<_W#;qqGDjAZzl zF4OjG3H3bXoEDr_xvp@H!qDkAoUv4Ye{zX+FsTLs|(7n*0}2^z}p zS@9Z*vw#qU(4pm$TpwTVoT6S7mlBx0XcP;hdD{G$Gv^gvs9mD#FF@VLlVNaK*CDGN z3}RqC3lw&v=-&thflK;xm?fyJY~8Bm%d54}cP12~mX|=p zG4I`Qu9WXRh3@dzm&@hp?B!0Tcb8wBHkGcwLiR6o&fN6k6_SMDdc_i402e4}#G#e) zhwiHYrD@Iri}?2W;!t)@mqf4d0_??z8;FPAi+bH9zXa*kK}g4>QsN3N#%GC)^-Igq z^|)k(gmdIMZn|TIq-pzBILE0GWCx{&{{dvP>qwFTR`rtA_HKdeMCZ`}Yv8nk3+2tX zyq*s0ffZqrycUv=2{7x1n=_pB$x5xl@ud&nolTHY4T56ji>?5A{$MPY{3`9{J%a23 zLDBS1zRgbCJ~8qc#waAut(BD=#YUA ze62w--x!-JPtD@^ovWR45lW*rLsWvPx_VVVA)g!FtYUEf8m$7?Z^aqdUN^6Uc8BYI04Nb~^?e2I1jLlqh1)Gzs~}R*56Oi*p>sT) zs+K?@4q9GRFA{3xll3MN$Z;>n1`IC6*==DZ^kR+tVc+jiz;7*%g>%?XFrhcE)iMAj z(BvA9x_9;xsC&#_D<4|1R!RY&@=3o6ho@_4?sogfKQ~IKLqk+tZ#n`d^ze-7#>zDkH(s`>c%di zO2Ku!uBSU#^p!-cohIxkhr9F6Q8dTCU=KTTLKZwwUtIEowP$AvY{eW1&O zq+-2HPkj(-YPw1q>ovPig=ayRAsKz`QzCF%eWjECrL7PyS8P#NHbFEZnBY0$D)}fb zDS5JiKk7c{^rh;nw6Q&g?bxswb(Z6g#`;^Q6a$i0JX2R?CHr^raZn~7Vj4sMw;l~d zR&cc>kX;{w`|65AL37E%sD9hNu4ZE_buWrGnM>DK^~0j)QP&l=@zhxfG0+p*-#7Xw z4d7k_iXa=DW}H6|y3AK&1;0t$hu;sd(=Pmj`bpoL&@yb_Ah`#m=(tJJxDtREg^;H9 zjnVvTEHK%8%w`IbUW0bfqtn2;8hW4EPS$HBcgUTF&VKut;7Jzc3dIf%vTJ>kp+wqy z9g5U9ykqAmi{OR%D2qzdP9}8LG-crF8?~4>k?bYG3H0=+D6ZDFY?M@rQ2>#fB&r{| z7gErtPMHCLD*Hbaf{IN}))r+jba#Y1h~CovsC$!ho*IVi*VE(BBe%dn^iZ;ywrqAX zPNVT9KU~2!%NKM!nhuPh#V^Dr*U7n8^!sM_?E>J=wndgd6qxaQ1ZBgznIdIg`i3a= zg$eb?4JQ6hzpugzquq2QlW7jjL>tV((APH*CML9 zFm4KcdYzOSd&5yeh`V09Cw&SP$?{=v*}3R?**IL*hRb6rIgZ+cRBuChit1M{vbThQ z{Ci1;PRz5PLCs)$nA=3FA5Q1oD)&qGFzUPk;brv=vPGG@+Wi`UOpo8-6mgg-q%(x# z)!f@}bWT+NMeVwPQy-{T75eJ>Ud1Ne+2YuZ@{m4m!2R?ZhM6*Ml7maxyLjJ?iUS8< z2Mj|>3!@ch4TtQza;yY2NH#%!5=t>SY4C>KY>8y-M$h^{O>#Z$X1TrE9!^gH_*idX z*4*rzt)8;uW@&@7)InV#(wZ5!NST@o4J9k!M!D-2Nk|xXYI`1>;~#F3Aus6y+9d8) z85*vcu{cC$TLw;TjoY#LR_C?qn;_sEPGgif=3f~@_&jI1+T#DBth3@a2_Kwpx&8`@ zGyrHNS)TV^)F)5hCM&4xY&wjuufRPo>vkDE&+Ssn>RWFdW1d<#WoFTA-N=b)Q94;N zj85LJ?YjzlE{)tOqf)X}(nF9fKs-AUW-(4%+kd+#wWP&R?^Z2$P}UcEpPD@$K)Da3 zZQCRj*tJa}JTnzp%G`Jd|4UQ-5_FO8ka~6Fd{FgU?~s>eC*qRGkm2T8^JmU0D$&zg z#=-Xf8&}}!iJ;1k-!7vMih|Zxhh~$0^KYvJe7$!hfb5;yz+AbBQ( zNWW!ze2`&)at@mPa5W<+%H-0l$~2P=-W)(Vs49;hC$wMLk_m+o+smmD`UcGfs08sf zt5L3eJ~kM}u*Sr?MoD2AT-crL@(b#}rq!O8NA8c)M_QL(t-fZUvkc6pwo1?XMVhsE z4Z^XL8tQ;xf|kE8ZMst?nkAHTUItacbGgmWJf&dv6j%*Sl?{Lk94AlKQMkrVZE_0T z#6unT#ix3oi?UkER1r(@M&Ijn$h&2C7F??eKs5nlX~*62mMoLZ zbPhfAi~qt16nSmvjq}rOi5o>ZA3*bP8hF<^8(2I1G%d*yx$g#Zl&mo>tocNiIqUS}{t&AlptAu>5{ z0vZRE6zq%pKtQ+MzJK#>HB36bHhN&bM2HWO#V*iXb$JuA{FV~sg+!&Ks=)Rst_w3+bK7q z)?MiDmDL)9DQ1^^5FntC4IT@?e&+@&hdv|-5Ng@wOy%kO3tF`Bv*J1K+Uh%;@;-)F zMb5R!a?yrWQH61QzX5}CLqy(dp_bi}XLanB6X)!1=Xmvbpz1p4pdA(3CC#z~3+lsS zXkR`OOK-D0w$JyF3TM;iqs`hmBz$BmMYlMGj{)&x3QVN37Qu!fULg`217RQ0qOEnL zFy5ijCOY;#JOWR&$iUY4;r^9lwV5gB0eSzvi^0w7ei%+4%O8-##pf7+J`X+s-mYr1 zjuth?h*cqQgR+a}onhMd!~h?nm`bhm3>kvdD;_ z{$PctWWT$d|3(_E{3%*_O8KrZVdOBB2@O;FndjvzEt-4Bq=#h-whc)`9)AtofBRX} zjfJT*=fR5HHPihOV#EnM%wLq5F90?1gkG_t!(YCVQ0HnipRV{_eRzOvdbv7$6kJq0&rZ)z;MSx_BJ-jvpxQPN%NMT2{++W+3%wWm zq!S-9^RDvapwqlK95yks@{F*+s7Krfv)bT{46xzD8y zKY^Zh_*vPA_OHTGCeH(~?EJI5D0KcZ150sd6fkzyvxw0M5X3^YN?5N!emV8xVj zZQCAhitDRZGI(%6iY~*j*3rygQ|Gjc0 zeoY%rhi3y(dE_~H8mGe1>$J@cF_H6m`AP2caa<4!_xd7yV|P3+31-gmkWsX7m=B|$ zn_iA`kn08co7POjK)U7i0ItGVf$Ee`D$EwoLASf6*q;kVeiIGx7(wp+3Ed)3H=>LU zaJHX!0QU2u7GphFR8=QnU^V<$BJaA2dtAzU*q2%Y9R8FMml{IpN7MOf`E;Q-d2w3| z+=*V4;NCd750~CBUIF0kmsCIHChA9p`?SOxMIqX!Awedrfu5EUvR%#9YyUneThLWV zrZd`qAi;+=O}THRapiRt&=Qj859MVymA)j=pmsH8r=1@{dn_x^h7Rhb?9SG!ASto; zc)HH;V$@zojtK_~{1Mf{K#`8~>1A2A+=0K$x0V;f_Lrs6dh%sCZ97M$f?2)~`)9y@ z*;dT1as7%T{6ZW0M#{R{lE0$chl^WOD?{Q9YoO6Bw*Y1Q5?+{4N>-4HNo(>KRW7|w zyFqNzT&j2q=88AJ5+@R;ZmNaKiI(AZ{1dI&nj3qY>62IFntTpu0KwZ)p6ArTL~zN0 zI3?NEvI3y}ycZ$nq#LXFIN>UJ>VQ1G{K^=Xk};C)pyX0u`=KRy4ZJ?49F%qDQQ1Xj zU9g_#D6<7%uJDQbV}oeaUE;Rdc(gZO@HQKSa$c2Z+x!@!W9PHL4TJ0$O>y@avDh}d z__?zIcFP+`6zgA=!v>y8GTb`Sg8JEcUc9YaBMf~h>X6pn&!F6r1Sd^Aq=6(dRephD zrPyMj^@n5`Gi23v(H9yRH868Jen@WO^dT8lH-6;?rSq_a26xw+(5uaP3OvYf zT4ep}Fk1t~x5`hNU0_(1JqRtOg{`uTy4K*lt;up(jbqmJ2EnpT zov&*|hFMB$GLP1cu`w6{V$=hm;>vHn@eKhxb*zQ-z4swJ_`G`)eJSQm+5U`iX-fyl zV8WYnfH5KJ#y8~=vFOhF6=1jQPYaO2*i_2jo&>CeZz>$SeJprSZ^=h7zJ$dWmAf=R zkJE}~70AmidrOkS)|pB1^+PhP^!eRB5=PeoP~15=$ZQ|GbTPoBIvc98R~gw&kk_#d zfd2P|`;eP%dRyC?IZ7`pj$V0NE>ZNP7O08O+w!Kt6NNLwFX$`Xb27zfnCMxftue@y z@R~QyoSr{+$_%+SI3I`B_eYQX(Swnf&~$oG6P@qGrKs4!@WY&Ug_y$JU{?StI3?wv z{u#LgvZ~!K@!`x%r!HPYf#2y$IO3DV{es9(MMzJ!*x_vP2&Bah8B6^xO##qe%A{F?N^ z)#0Kq^_3*L>gj1ZYq8{l@G7{4g=&0p8z`dk0Wv7*D{Cl>)~O3F3@eE|3pDA z?}uH`;5IKy6TEje?fC&b!3U0N1^jTz&&$Z9&yH#@!UxcZoF>3aY>;!-_HOmVFc<86 z(O{swV{tOPU80L=IO*s!NhaETOm2z&v6QR40>2HeHZW0L%L>%uj z8Yt(Oa(r)>2ePMKjv)|*Ci0rO1IIzxix~#G`U5^b%KX6YMxLafpiLjdiR{}*T{wwn zzOBky1zMb>5JP*M0mClgTuGrn2L7v@sFYTSGc~-x5cZB__#4MgEt;WsWSX-b zpy`3xO<%e&X@B_1-k=VCC%r zkL4q3&qUxsABnZmh&NF`J^QiL-__YD`a5T5*l5p26K8GhCBaF=B3j;ft8ZX;a6Wt! z5CX1nB)>U_{q%+$TXzBNh(G^CVm{N%^In5v!f&6*S1?n-_IYHanM<9XesqqST-=K+ zxSI@G+3OP9RQ4(suJztd z5J4XKOgja~sUrvKSD#5VI(-ysM5&+4A)ND_nNd3odgJ;A*$U9Q2YjMKCl$^rf-qU> z*y#n(WYqd^)L9DZm4KA;2~u-r-31SE`x(Pe`u`ZCW0h^Ek2PSg4h5KOxW5J^(FnhJCi2 zkg5nMY>szqh+EaYYzx2SeOB+m`PKA{J)AauDVs@Q(cwUj1nkI{5)3K8hU0d^^Der$uE(V4HkosC35=n)pWDy|2LuR!-+L!JkEI1)$qiS0 zB_G!MkZl_M`js~E$fAY}{{$NHFIg_FE8$p>cQ^!?|9@#m)j}gwlRgPa)#BIbv)Do{ zxzJhvUHcof8rist8HS+OkD%puE2pck<$ED|E<jP=F<6leUVA~|Muj!HGOm3v* zMxY%#=o>AM5~sr++2XqFo0IGE=9%l>31-k#?PriX==?@ruX48rhzn78;s9{7%cjoS2V7;E`i#?mqM;*n!Eq8@^{9HG=&(erMQV z`uBJ8h`Y`i(aOI&KFGdQDeo4SuU3#i+1Ok{)*O#SdvJh{DqyyrP8~{beXpHuqp5w8 ze?N%I1?&BCn0)BxNIjsK6aFpBnKy*%P`uTQVBlHosq|=pLph-A|2Hqxy3^O;5dSni zovMyl!s~`daxup6vrF_k0TC33B zNu+bGMCG8kL~9jn$ml(i6Ag^_wqZ1w6CdNR&=+&dAr~o^)%YI)sn))93^U&hUa}wf;zc9G#L!k;>)z=MWh0ZupbQq(!j^M9m zVvALDYB~J~@*IWR*RD=k{9LRwth4yh51m>B8w0UIz#RN3vrBfdbpimdjzu_jE4t*b zRyCs%?6DFroD$3@Br6~0&4xg}^(QGoSobOK2SbE;{L0jIUi@$*ydkDl7j{uaQM-k4}#Qw3b2uF^jdi8`SFk!C}nZth&);vQhi zU%a?{alUqAtc3$MODJ9ZMZUEwH^T+XFj<7PA0_a#CZFh6Ia6{+q$SgvV|?`*)&2o= z&m6x=K*{}0@+b7cqw8OU81s(bWSchsre%iEl&F6N(kzbOrB7h*mjr~uq$oRG^Shig z=rj(a{lCk$+A%J58vT85xZc~%{X-xR&BIe5-E216sOn-|0PVfY#c{Q2UvLhc`9q7{ z8iG8@piFY)J@&|@to&2%5Oqa770vVu(I<=f)P5V{XmN02IQ{2OtzZ}@igA{sXr}Dy z?`tv71QmX2w-|KEd5y$9CeT^GKQ;o27-2j`anA*2sx8tQV!j*$)z+B-R789jjPO1M z@mz_ZsOTY*QqA~!ZcFw%!t&VEcr!37fBz-<;;C6tFcSD%J84R3)%?&&WP2Ey>At_U zmv#W?+mjEX?p}DaUHY1{pbW*+;Oq;sG0<4gq?WtDUmG--DrN z!%xt|*mFT@U?3*INBkBGwBk1O3;w(yX^OYhey2Z;8uuw7(5>FY=V{cn+nliVCI??8 zJBXGwhg-KEaB#uRrwsf}d?{;apk8I<{|Pp0-gV$_l#M~(Is1AWKjhQO4FRNzC@Q=s zI0#OgI9@>WsnGqHYJD69>SbW$lR+Iv0Yy0F26*P&h9nL$S-l-I)IY;ufK4@G=*8Z0 z5uj5Jq`!JQcq!Ud67A~aV7gl848I(TyFH0hh5thk4xj^l9NY-0ZHKy)>qUf$rfQqM z=1(tku-tw)jrMhLp2CpUs@_qqpsAj9`flIh>xk#WZ4~9-;n$CT_jT}-7NW*dbecx_ z$xn*>9J%TabQ4g3;_C!}-0J7xDHq(0A?-37@XD$gA!6PMIq!QD$7|;UEUN&HdkU(E zU;4}KLcRdUNIqipj=E&O?s5nBiiXd~Kr1bb1wN@Hz#({>{~}A~6|w_8VRbFJML>U7 zxhw|y;&qg0#{(R^aJn*V{0^+tP!;4$H_Zr<>UcJtc7{!%Jzlfiqf$@X@f{Z8;XnsJ zWcyYOWZE_chtTm1r`~e(ye&=MB${fF%XT_5hSA{(z$QFwkcU%qCaQ?MmGGjxXmD^x z!4l-)aV8sw6<@@ITpuJ~(iWEl2^L2Tmi|w%X0rnAcF*aERY9AYBQ@y=P=&H6-6&rI z#1`gyyI_aB-5Tsq%Z&2+^RG@$qXwfx+6UmPPDRu3pGJq1-|Gy~(dgI*c+o(UgC$46 zm%z~bYm8W7YHFt2Ob*7LL2L)ws~*VQVJht(*fX&5Cg+m1Da~Y1DUWQn+Ue1(aA~B5 zGM~Wu#pY=3C40<{$?DZKJsmZSEO$bM@kg_RcMuL_tjJH}9JJ!U;h1$k@8(^pvvj6< zt}0)ylm=ZvKvZL!JPW0QoI z{TQz7e>{eR2e43X`qL(luJ)TW5JXoRjOOJ~NbE6+VCPQ;COu%6Pvzse>Q)m5R=DL6$1S!5!Gz5C;=4sy{}XzA7Df$BQAnX;=piKH)rkZMzxTZr)J2Vx-S# zHC&I8=hVg|X`?EEwH*WCy4R`w4!{z_X=Io@jFK=1*SRR{`m3eDQjx_0saED#9ryDImX~$V5nkUH zoaW-6GGssJMI2$=K~bc{z@oevFd!?2b`ILcth3* zo_SY0fW<66ZMD*&Xorw*MhH^9<3h5oVpKXSq(7~{5%i1sG4eRkJ*Fq%eg9&lpF*b zd81q21U3P9ArpZCSecsmi(CnS6DdSXCY??Pj{k}TS;w_2(MYTW*TY{(r@}H|&L;)4!7B8kjL=y9!(=9%2n6?<0}1dMPjp7FAK$N2&6m-Tt$nX9d7)O_O5FrN)y9Db|7;yh~TZvb{oU zF&4d?nnfF?LE2;R`(Yd_Tb0VOYc-IH_w7pO@aqW)fvV<>u+rI{=3opsHghr*y8LW4vf-hflD!vFLg`pIO@!Px*ZcqtRKRTWW#IPYlP7V~o zuKII`kYCs0~s5gm`Mql1<*)2t$ukSrSm(^Ubgz34#n~Mz%v( zKuD@8LkEy;TOUblAI&Kt>Yck277bl z_S!7z;gmBD9gEL%FEPe34g%4`z-oax? zl~Foi87e)z^-*#6rv?4wN$SWK?|axP!S&kdpl{T+PT za3NRKU+#p9(4qk(N#HbBag)9)hj^hU!ZsP8~6s6bDVitn)a!vP4htg?Y}#CQifveZ^&@I}*4rg%Er z2dD0CyOS%e&Vi2U>YssE* zbXT&KPF&|eF##$me~v>%UnT6j<+Fq!sv9hi3Oyn;i3dBEgf%cZabt~L zO?M5I4P!5N0i!Y`1qzcx<>@rNVacMV{fVJA)hWEJxruD3kRRMI2P0e?ZweViMPq{f zz)Y2qx{nemYVb`;ju$rDNX(DxdS1nz^@Gh?C@6{7$vzz(SOke zD|5L5gSh)CnV^Cw)VpCUJL0xX-cTK5p}prU0v_S-Q4U^D*&)zR%$tPnN<)_27aoyD zE%QbE>UUO^hoLw=9;)|T zc~)6g69G`jLxQSwt&GpUR8}9nS1?-|f^}efXEjEXXUA(%WrD=n*2yRaI%gWfjF%F? zs+F&7TT?l}10BH(4Uj=yD|DRkw$Q)62ynTo40~Glb4e*3#&q%1$|ooKqYL93cy- z_SB_*8Mg$L>>ctkV4Hwk_*jZc|oYpPo z0(pUNe6#8NGzZHVHGh`@1^612d7udS(v(7Z3%QT_=hOB=dE&g@y|xG}u0na@+)2Y^ z*g>&H@(0`iZ93wItUSPA44hjqLu*QW0GIeZn6lnoq}6m|E-@B<_LX1*IiHH*ptNOV zSYL8HWwO(XFn``8H9LYc7|geF=_L@y{Abb7I35zDCu(_xFr8swgY#NApr0t_C|XxG z50kVH)3UW@LvD!#pypQ~a9>lO8T0VB|YB=I75?F3!uPYUT zE`w4o#DgC(9fD8O?h4_P-hMGCjcTsY7VIE}_8FuH>k?`{5Q&E}FeF53OdVAS-J7qJ-2wUcK{VXq!(ob}P-CZ!Pp#ZK#9g_mRDN5ta01l;@WLYS6WaDyoH+(#bhD|bXhqG(D8T!;KZK1S#q1?r+`m&YN0$;*Ikg7wv{@V!`5&D%ev{Y&;Z~jG33@Vd@%QtL6Tgw_L9MRmld=e zAc=zMP&sU+zAlyP$omKCX>Lo#mB}LNiiX5sahdGN#%O3e+6p5bv~Y?|r=vEN$(N(s z1}^-!enC{W2vt>ETe*+O|l(hK~xb%`bvZEpmwJ(oD+V;yadd7t2!K@dDWHRg1OonMdw->2}z&@exdqA-1C~^I>!K^SG7bc_3caK{B1Z6rAF7! zMt$Wq7K8#|e6_sQE(OUbyV{Y&ADc|=v)##BXx8nS{K+vKT1uT)YX{%$shM=}z3@QO zG|x()F|;l{kG30L0?GXPYvdPwo`{CbOiUt-;IDBA(Qq7jo(t+r2b1H>R^%p1j@ru$CgROgz1** z)KKnEHqp^NdUI%ijp_Jn#&%=hl|VH5N@x555g8I300(5npq9^uGY3$E%N+ubWZAZU zwEv=!yF$*70+68A!m{nr6%vkk{@_gn81RP`vI;n%lYFgvRvl!OYY*`ux8UG-( zjW$%s>qFjxBkDQ;!Vlml{AOSYl$WfxN6Q|8*JiR;zN@ho0?9SMr3TmUP6V3YtNp*NL$PvL%8M)STgTlmg4{k-LY>hUh zT!6!ZJyg_k?oP!LDBtWvF41MtQyG+*JxzB#w(0oiNcwq=#6$KQWHE!!7FhWz+y8Lz z*@50xc1=NW zhm-{Z)%}USb=LP~ug9tBpl+N8+(kU?=pCpl2(XC)@=_aB+#tnE?ay!=c=850OzbVd zhT%(4t$q;bTVK{&`sKq^!r>%y2M`JU*U1y}4iC*RE6TQv+bVnIQtNwRxq6N=nyNn! z29>;TD7>+|v0bcX-}Vdg-?HJT52l`p;V}gSe`3gM3=N_yZq%ZPs`RREbmXX)0*zDd z>}1mRKS46;>54-qmb)D#H#tNS9;d`Brd)dECM{pRNfL!FMH(0UCbd`P9@&lUAMpM>HFxUOxAwu^N zLc`|u68NOj->HmehCu26eNQysZTleeF!C+|6fWx)dAIFPBtm$x6o-DpHeY=_2sJ+p z&fDObu;UilkZ`A-%JBfalqdjGvj&;XW^V;_7P^CZ?gn`x)f>27SwA}xj_kMDT{LPG z%zeyN4u$}-cO4^6xBLW2>>euPX+`fTUH~5Owko-Yb|cOKkQ}1v)aVS8sbG1zk`0%Q zaIs37OsyX#q}0EL`Ny5rvNjr`W1-NpHZg!cua;#Fzj}a4pTTG*`zdDt6G8Y+#!!R9 zG@OoC_YTlk&P-}{1`MXATjfNDR42-U24LI#Zj-0Q<96Fy`0=k#$Lnfnc<(v1={5-n zd>gji5m8pvQ@ymOQ0+lB`0TS077Dyw9x6{7fKLddqI$ptCTKrK9}C%kFzDM4-L55C zA7L2lniU>;`RtA^T_8pbn9F0(8A1JL0NW)^p#F8 z7=K0KI31l_;(}sp_A)2lmDZ&_=NCVkYVVZIz@YQL-Ow*-yHg$k<6t`d&@r{$rGWxU z>e`Q>cYX(G*Q0;w&7(3vxL}es3C=@1?vi^bnF=gk&M$Zak4{$e%mX4x#F9pQ5admU zN@>nUZAg?s)mK2OZ0<%$=YX}1qY=}ff^}-U3sa&{Bd_PyRe_`F+(tPdH+%-Mw{J3` zxKr97M2y@q=*z;%D4C9)!@P6D-Etm+eGKP>9H)tP-Yt_o&sQl-#slK)ZrN9!ufQBi z{}33PWgTt~?4C_BcW&GS(P%Zt8pAvR>fGc==VYP899I8(u$x+5OE6REJ#ta}IUVpA zp=V~L@-?qYNl?_oILp+c!U>aRUNNpfmUQD7K$$vjMcp2Kue`FZQ#dP7IoVB0I;&f2 zi($R+`_=tFn(vjm+0z*T+EGQ6PK+3JpMxcas_t`4;R_zAOd?@Dur0x9UAv~TVuhB- zRrUhzrb2<1H_Kc1ynu`dD%?CFYE*Ko4{es^4cm3#)0omKZL7OS{qs(SuvG+&NQyVGNz^2nbNpGneTfbZn7xepR2a zL>f^eyO@*ZhAIfv-B2ST6n!xiqVJdk(A2r~j6_kyY)!bT`%zl0wontPYfiL- z=GV$PVB_R1wc36G!TbW`FAvu`7$V*y%yjeKP)^%&zlP?V_kKyqUh1fm#);RNRYB3DYIUB z@+I{S(FB=Dr#%s)6iXBcoKfi_(J+{rMwINk7|_CzOL;x<{42p`bW2j$K?jL?=UJ^_%|jtAu=sXd59 z9f&UwrKg0ME_ESf^i^>c%Kc#vNqp<-o2G$3ZI2~cXwyS-k=UIXmc^?pV0OQ_Tzsyn z{UI3@`D~N6A2wzdE!*ahHgf{+DXp-=dEAda+a?zXYjv1}_!_L1rE9uvn<{&yup6&E zu@s6k-Md}+8n=(K7MhgsFGh6|E1Djb|JV@PXXdZc^s*p-c0b7z%3l#UI<6t?YQ@S2a$3uVY8WRL*-d(sX&q?Y^p=&RjDjDOtQmu5Hzg!SU462;axJ?b_BVqg8JuO{2E&6S*Po zvl5aDKfVOEl$j&B|Eg^=mJQ%IoF|N*^-0O z@X-8lIR=`-2U6z_dAi&$Z@E8F@0VvaNO-L6Z%=11hVtG1Uz|HccsgBu>6Zri9`Gxb zif%}Vy<*7{JoSPbfV88%!fB_Ck7*0LkaE{ylJ(_HkTHK|XuJq% z&A5aLI&T6DH}f8s-JI{^1Eaqo;ZS~gT$&6xa^TjH2n^Kj$K`hTK|*A1$fYc)uIo{j zXJ45jnvOZ$enKX?^9c#|ttIKhAb+IfA}(Q9*&HY~Agd2L)(0Ta$NodU11f8&(8)k2 z1DbFvyp`*eYr)tx+Cu{*3(@FL<ElmdJf(F( zUW##0@Y8bfipPaBIgpNy5ACmgeo+88N~JGE=s*n&Q&4+pN`u^a#7c*-Tr`klw$mo7 zA-`LE)$@yeD%C!tT@AEgHO1+0J<&`h&!2q~>j$KFOWos_?heQ@DY#}gv&82R6usJ# zEdf-yQ_`T?oigr$+z+OP<>31C-les-y5*vZcWJq52XtCCYX5-_Hzt4YqmC=R5Dk0# zU6P$B0|CfjB_+`@Pc$FX&ClTN=2U=#TKud8PtR^lox$fqnY1Mpj)l$UAY=K;tGiEv z=4U1E_t`DTh|#;{y{Mr$xb&DxUI>E*<8HpH`X8-n^z3Io5+c*dv&7`4oIMg_JAQ@a zRl_%qU|O+9-g)&Nj;ufrI_Qf%vR0TrQ9Lp!%(`~<@`9C$5U%y3THXgzx#?}BriFW@ z4EFiU#SJ@Of2}W*HyY!&%WTyntk-zfXrL!qSUycs`{iDUX8R};m4alg_I0Dn4g6k{ zwyHpSz0Z;Uf3aXCpE~-Itywy9rMD$U(Jk#rdpn*4y701`E+JLMA_dCGzCiydpjU>22i5t!77HDInbh!z zBhaLFG=IJF7h|%rw4Rl2 z%9E+jZR%>g;hrm=UbNKoG z-&cJ4C5K0SSbL(SFD(p7;K>C{H5sP^rBX!XeLR6+Df?;xEe1ea|sy%=*?9wwyg zGs*S`bbB@(<}a!L!-?-02vMfD4$A}e7^1+|{0jNiDJLGbxka80s^W0kQUMa0LUF0v zE}jHO6Wanb_HV55(P?V%|I>iA$66dBB-WSOO?{Ft7k6>DI*Qb1c%F$yKs(|DMztbI zWB`WHs{bbSGkPxJhWIF92it3M4lw)|c9*PF%+J658fzxq^O~%>#@8fRcfIBiQJ%*D zF0iR7-_qCR&<9_h0TcSPcE=N_dh&cCpe6r?#Ht>V?JpO{^1bH1gai`JYFIIR5BZ`I z`@_2FF8zCJI%4l+h43VqTPWTP{6W&2TA$}?jAU)wUB1==G$+Ot6im~b6WxxSVX*hi zpEP0O%+kq4lVqP%_JUSPU&nA(;^6WYtwM`G;@0;tD;)Wj9D=7Ofh)$~ld6PdXa~LJ zkjFTheC`bysOvLyyyal(vLFhNCdSe&Z_C20efyFH1hh+VFj`PB9=iI7MZiqbKRAx!mSd{>)qAoIAW#gP)jdG-B)>10(zq7WuKC)3 z@RW{G26gYt&R}z)ZcUP)F;k1iPLVK^yD$n4dq=eNwoD1AxByo1$)W3y$d{cqLMVMN zenYK#_p{O2^wSZCB&HLox(SA;*}o+R)99mesOCR}bnQNfx0PK9MWtPjyG?aFKjuon zJ*f8>ihj?BSAKJ(Ij#OX>{1ZKOjLAC?%#7vUTOPoJ4&B)lg)yH>rz*xQ^y=ELQyrq z%?bTQorOa?Ue?@~aeOg`1pU_u}0!ZpYk-v0x?gLr`>MBM${=7X%aZvcj>^6UL zCt6?GZSoWu2iUg9V1kGagtRxd$)-Y02*6)pn28RxX~!p!Ot3zzZ2OpHYsfZn->k{@0drRKYnlsR5S{?wTW%loE)>)aL_!0dU2E zsn(cq2hICH7Lm_L)b~{%X!I=z;olBbq!w#}-gK&c!7|vkbmeuPQ+`G`C(AAqtKIFu)uJjQ^*xO8& zy5dUT!0t|oeJbb|HVY;hO>?2lZu&^#U27+_f!g-MQ+)3ZB(`NA$>pQz+hYXD19n$q z1cGx~K#+p5%v@TzT%J>9FVHBhP-y6T-oWiHp4_=|;h23cF&GU9*>*|~IRT|PQqIe^ zKCWsao%vW^NKP)q?9Z?2Bgt(%t$I8`@5No*8USY4C)z>U9N3@Ee+%~0djC^dBaHspu+?l(a93ry$yZ`EIyZDdzZrV|r$>lj9fT1o*&u>V&+~ z#^(XUteOBRo3Bo2Tj2`wq*?P7K}V>Yr;uTJ9}M>cqdkB1YL6y~SM{X;hpO*`z;o6Y z0Gs@!{efNivDBOfvZUfqOfNdl_%Y52hT!a1icZlt5C{I_q(md8oa8)? zQCIOPEnH?%besaZr-cinhtUV8GV=47o6|VzF{=w&w*O+kkbyS{)bcRXb6dWPsEhS2vbiHSzbm3U% zosHJ(*WYO$fYzka?HX;tJInlDo)LygSc2(LhA>@i;ncR~d&$AtzvlshQc$jIgK2;x zB`ToK<&~+HAMG&v{|IWI`Hz-Jp3!jDsvXs^IUT-ByHccVQ1O4q=U|(|s49XU zJ0m-dSG8>uc)2+in;&h?Pd4ZgXC%2d#%9tNx5K5d37AUt0qlKNH5;kxjR(Y0isyAr zcVg(EOay7)S*_CAjF{7LR)z}hhR`%KP5{M;)ekKz=t16KTN2&%qg;vW7kfWC`lHk@ z%$o>5r@h+J?$w(}mTfizz5IHl#CuQ%mY7|%aCN%P(4$hA;sXsW*B7+CCw7R;la@@|?}L)YPWr`FBXgjj+pqD!9nsz-p4XC}jnF0D&2hTQ)` zf2*lW>v||dc$=moYoq9&Bu=-l1Ix+wWsr?VnF9>gtZO_g7k8h6ps{REN;N_cbdfez zr&Ufox4bex3pxJ{5i;3g?LTROWQOu1nqtnnOqH_YXUBNXC`VA2Pf9FB9>G}RyPxH$ zau9)_n3Xnr(!lBa10cu4MP^CJr&0b&Lki@r#xp zj_npo#60FER39sUk=KslA0$EcD9xlp7Av*Ap zTN1^;I?C0*!>0gbou45uaQ0Vi>F<;6s$~4esi9hgkCh;eL%hQ+s3ie@HvaXE`j!%btkHqMQDJ^jOWN5Z*?BdoZD? z%K$sc0sG9Dn6s@(yzm)$BLihnZ+I%Xp9-lhbq2nO}HAs)*lVnVc;MhC|O zKmWA9FR!=3ap`pPMfo0>4xx5cwxTr;8BK;6OK;SUx!SX~q4fJj+11_hQCmlGLbbKf znaNvl3i*5#ID~d>cbg#UqLM{zap$6EEec#dK2CvCCQ$WvevV672l+lu#*pIU(<$%s z+4KY|IvCD>O58N0YdSGuO`hgPWe8A@?Ha(o0C_i2bsrSF=J-YG`)Qa1CdNB^OK9j zgcGUE{b+>j_H(NI5)R7a>PBpo*2ZC^;%&j{AUXOwnGFf704k1G-~{`Szmus6Enzlz zz5C1kyT64zRnrr8gK>I!53M;jz{xcwJ5aDV+MWP;oc2<`!Bn*iN{|-=e z1=RfIh%;YW{$x_VHzNt!Jv{rB5Ywm<0`v;UUIXYe20-%DRSO~C)NsL;9=yg|zG&%^ zrHd{x#o&HGo*5j`TY{WC**ZQfEF%~v?d5v#Q2x{|fb8sm*lxVuYmOoG zTAh<)iT!c3=$eMYll?c7JST9kasqLMa(nLKNjSaDPVUwSq0%qXS-;E|MQkS|q|Q8K z;w8W84^Z>q-3I`^*~uj%^Y=S`!$L{3I620!G}C;G{4-+&Yi_k1P123O;)kp?kv`# zNNx-qD7Mwtyu4I(X!FF z3s>Wl06A~%C(KGi^@A+_LomYrj+Qvdk|hmGQ3n>s$o-Z64ggToYzt7PF|w90?chv4 zp1NY3EOJ!(N;=2{gF%DNj&%xQdm6RA?~76Ott*2MBxkGgAT{B=B^Ie*pdf9$> z4(aJ~2Oz5>7+>$_rgiD^ee9c9)c~~P=502!UgyJ8DkUb?j#_6Dkg8hmwX#<_<+ev9 z1tnsdsws8ynTkUZwyEbtL9H=0Dj{qslqs*)7Viu_8U(vWeM=W z%#_EJpXnUH4@HstYL>&}!TY=^%2cp;X=V4((w->?h^?>uFOC{OKVD4_Aa7qS`d&k) z!-A*Kj>9kkI?-3+-Ikr$Ual+|-eNw?46(qv%q9SU9<}Qn;8j`9SqKiU>-%8R_GlmI zSS*Y1r@7aQsy$|+fJjWhX`h!ZVX5|{JxNJ~Ub3~I%*?38-1}|0wEIM25FPy!B8xrB zUu};WhB1Ea5+o02DeH2ybYY@ol1(|zboDe&GoC7WWD`HaWVo&kjZ9Wy^ ztWPorn9wtrRiP7KTJML>UyVC6jLzjcIfF(jl?gH5NE;36C#wNUc^Q-zXEf3+{Umg5 z>F1oPzO?xk2u|gsKvt&1p2$mHDScc9SD2KYw^S;S+ul66s_$u_|j3z1`oEc#5k#Mc-l|=bpqbptYt)I@`f_#d= z3n+Y$RxRBXluH+OOQ8#27gU)yz&UnhW^BNvQLuoz&ZZV<$s<(N5G|B@!JxqslDPDC z^~H#7o%R#Z88u&oropoNx^76wsed}fWu0Aq6)^nelNM_a6)vNhbn0<9Y!yw7=l(#~ za5Ow%UTdMdhR7ecR-3@=8zO*=n=%t%WyE7e=yZBHA~#T*NTvqy)@ z2~yJ%n?e)r$>5~AW2iHQ<7;`Hed=^7zS56#cIX*G_43IGXWhjwB@G%+?Un>UWy)Zo z^y4tuWv%(~iPW$Wk`h|~rn1*SglVXjE*>tI%mkt0X-dK7Y7}m!yCi0?e7AR#IfH&1 zE=z{#345JJ9X#kc6)})nUUYF$023#)0)7S)W$y?%MPPIRBm+dc`Pu=S|HM7OHlrYa z`q+u3#rYEow94Xhlm=`i(J>CDg(qx6qAA&KRon$Pofs*nloP?20!BHR4t{P_OeE!v zax#O56?mFr5XKrtIT>Joc$8D9b3@2|J~W3iM$1!ed?|idh@wc(P#h>U^Yj-0=z-XF zU0UTsXcY6FP(Pic1D5Sj8lA^WyUso&tj;zJqnO>Uh`OAI_=R{jfm!oKo>TfxW0lsz zVA_2YWU~!FSb3(x5`)EiK{hJg8|`OFyus_yd`BvKxvB95gIf>wApU+Fmqgc?f_SK7 zZ;BsGwkNF?3Le8{IJI7M_N5C0@sqZuC|-<=7Haw#Bb;qxwBVf$pYyzhHqibtcNNQA zU6wfao$xeTX-WvtGnncw$fdNk0WW>!SowF>7hQEN;)(Wp)x3K3IH%03i&d9r1RWVCUy%EG{4jDB zNSMnha85v!s%wALQCF6ZD!xEsEQ85AmqnSW>fLyxyai4nKTW0f;jVm|GhTK!Y##g4 zoyH7HH&-h+9<^Cc3Tn}^a+{yN1%p8}H%^fC0C_1Wg60Q1sZjfg&&wEb)lZPe=bj0B z`<4l^_;Uk8#h&A@2~skj_6MEbC0Kddt1F4^&TBVrN-Vk)v9BsC8eY#9vy3R- zh#P5EU@BD~%40_XitI*8bQ2X$mV2;22zVD__r!8fH!iUD>F88?8^6H2bOP1>+mcm3 zJjO&(Q{+G@>0^XE-2!y|=1!42Uo}N?0*{ZsldQK|;qWml>Mh~Af5a*$)7%*Dp?{ABs)L#PowNyB`(YWkA4;Avz-4|c`t&;@Z5&NKH~1jK zoMHm;xKQ2#j!}f^e>w))rg?7YQK(VWIiJ`4lIY7q{_whnVX(#f(3VBc0pgCsMCP(0 zx$2VJ1Mtt8AT&1=X<0)Ob=Tb~T=OEtk3NQzH)hVw$0L)B+71LxL;cRkn=kKkWa5&=yXa8{Ko!rp1F0Q!Eq z*5EJAR4n0;e-m85$>umop1C9GJz|GbC011iW*;_0H?TAv0UK=Hv) zUu(q*uV>}D?rKrhL+NBY4_C|^=4w^QnjpaG%77l}@MMJW6mT)e5=DS&ej*@=&dilB ztxohwr;g9yp*Osin3ij|c;!vNN3=okUaQQ>?Efj(3EeakbD~Qx2jnPkM;!;^ABtP@Z$pKL|!RFRo;hN=#EmSOjBc3yDOab zmdZtE??Mo9?e~RcPN^)ej^{uux9!5Fu$IY7gEk!#698Q=lVF_xDAr6_bpRC2%VY_7 z*BGH=-8a)#|AJ2t?YPdLiwu@^vCRTMh;><=9_>t0y#TLA0tge(+O7_Wr=uQuBtF+g z$5Yb<*fm_{{z&a#^^x+d$5UBJ(bTub#9WRbV4z4tQlM`rm=c#mMJjs@mY4t0RdOqE zI+>=nLEa)~f%@N)CqQ5L$0FGd(AP|&yobZ!GrLIJqe>eQ)R`d43CZxMq{YrSertK^ zu_n^8#ZD)d)WXO5WZ>_lEx2Ps68hSu;8A3~Y4oSFi?zn%AZlF#u@hIhB-_<5Kz6^V?a#>3(D`sm$>UF+c-ktM~3`Mu-R;Q={>S5Y{(`of;%c)-y8dq-x zk@V2ja$NIk%Nq*+&)xaKv7jnVTneiJZK82{hq7CZj)|s`*GNL2{{SX*>#xyH_iLQf z@vQ4}4KejgWjpbhBWI~J7u_d7|I7IYEb7-Um1SBz9fDg;OP#Fm0RjoE4*EFkhHlFu zYWfcCN(jz!*gU-jK%uj@rNr7M6_yrHFPbpDV8#qdZhXdpV_bDYcP}DFBm^$g>VF?> zq2lw1W3~rFf`ew|Praf*{_Nblz>-3Q#zHqQlas<*f#;sL9$1^tmuW3S=#=Ni&!CaZ zrPBtUK3g^UQ{{5GZ+jD9stwwI@Pv(;k1)Ze_YFeB<{L& z6M!D)5!BNw@KXE9B9SP6|XaH6z7Hy7^Z2-$+x7-!db0s*ruMp|p3B z+B}%iIqAWx(yXQ|&!R=;UhSC0WRq=&;6LD%fVTHROrqfPnAn5bRe#S?^m(NqZewt# zH)k=QghI2|$pfvtRZ@T=i-+1Ec243%a`{wBz#s&b182% zuRC%NH4RdPRm1#F(}mf#MpleS zvKIn$U3O#e|0n{(?PQSp9GQ=)siCJ*4ieThZ2HC+NRL)Z3#+vYo@p@j4uGD8Y>4B- z5Qn^Rj(&Oys8khe0s<^Si>^UQC70WB3@H7YbpJrQZ>_vkB+i!}_Q%(9aH*?;w@v5m z{!#T~%@zhZR`g7Fa<>Bwa>aFWX(G>Yol}%|SaANQxG?(UI$0(qhalz}a=o^I9zq*v z^!0L=`KO^sU>gK~we8o-qF`@y7zfAF#rcu426sjdrM@@FN`}NFET-lKMM3mRR@$lb z1ZRCpvYzy+AqTb8L-}kp^uq&tv>MzXIOna?jy{Fa=T_?Gby|d8$F(5A$jeE^H=C`N z=>@YU70l)*rU<$DPk{KC7XjPBIX5~(5v@xe?vqWA+$eFa)dL7G?1>}ji?PD-WqJnG z5i`}xWHmI`d%*_te68^%Z-RGo@z)0M^4F#Y8^wf7{^{^d&WY+zbI)K;DyKEtH7}Vv zc;M=Y*z(@NurhxoElB2z= z!8Ciltl7rN#{SgQnG98o6Up%3J@00KS?-_E>MmZGkgT@|rcg0SEpm7i zwFf0qTbJ94E#yq&Q*9WPtxm*fAsj&yts}iCfT;$S-4`g42X4^v@Tc$_5aQqlX8X>_ zzO?&eG*K@^V40pC8`4u~eU-dJ`!b~dhhGl#r=}{2 za-*L>Z^Bjt5toZqvi0D{%`)wg^iXmJ&qx5kPox{F`Jcgu>x-Zn>E8`BZmpI~%;#3; zB=tJVzQN4DX+?n1K4a}wYZk3u3M(DGr_(kA%(|6*W8?JaHD1YL^{1>a(=4#zfa8I@ z+LEPU<9Co1UfVO%Y;-UslHV)qY3f$tF;sD*B~bsMc*>pcj0+m;S#(Xg_8Fe^VzS*X zH|4zDd6l}j*5Bc|QC5;3VG#g*H@%Au>uR!ME>P=*^jLF-}F7$xZ4*+ z$vk{9xzF}aBiq-eOxk;gb_#vr>=%Mc{xXZM%3hP@73CNp2$6rMwD&xB07jk{YBAf! zt}a(i0tMxg%jP*18hR0Qq$)-Mt2{OMl0CM;GU}jwQZBko7`cE@npM4E;hG1 zrXM}D9yElqdnDw;@(aC$sgPLx{FyZFE;QcboU2|wNT?7b*zF3Y!T+@uBx(IRv!$A}1=lPbynzLcyPX z6XIx-84Kvm`{ePqMgYRs^lgeo!ApQ1Q&K?M(__*N=&E;z1;9W|f(=anl4$K_t^Jcq zJ}W~K4VCM3#p~KHkidDrhaX+$WXyhk*(`e-xHz`bF;MCjc~C2R!%FAKLW@lHMv%MS zHaG|iRNsxT%*cS%a;BNu-a(J}hYd+wT=?uoBey1}kD1EeKpSXUjfMdkO8I@m<7s`3 zB>47cP|tAcc4dyg+44WbS{%I4(JqVe4Jq|P9ssTNnX0gX3~gz6ubsu|f%SKoI1-h9hVI|8zmTHT910Jharet>s{R#n@Oh1JNbBqy zpl9lG(!IedY1==GA)bm>>oS5#{PP!^!P)5~hPrE;z+YGekvO39_ zYhF;i`pxKc9j?=Yu;MLt);Uwviej;pa~Y9l%m1jM9^f z-+4e5hfjK9O8r*(|F8sNk}1HJP%?N9AfCUr`kT!ld9Fq?QhRu{xApD;M+chqLQKL( zNx!%dDmwri_n%v}bGsceUpI+jKo~1zRBeq)>1MKYeVUj~Z`W(j04B;4W8ZIwP+D`KA9Rp zdmfS;W6M>Dv27U%CW`J%;|U1+rMupY4_@oJ|E7p4DJy!NgR4iv*st#CiG`${z^3ibwY7G`=e%GYJ$>hdM>S34ecj#K{(2G<~p*)G9lM_SZ4 zG`x~Hu-pHm@K;NKS$c1~Q>b;2T?|S~4!T4ng7GaKn?dbAw;_g~D#K*{fXr;wgW!JO zyF+&2>E(f`RQwbG^8a!hdFJC8fqK(>5JI?v8{~{^?`@B#6%FzSosFR2l-=wXM=v*M zYxUmVTxi;rLx`(U4w3xoFi2O74l~liMhR>=Z}j2&-rMLbQa8vT*s{CL@j;iUB`TOL zRYirv4*D@IvzZ1MO-C!Bp)Wrsiz+7@IXDIb5qcUigmT})tar%ca=O5F7WtiDdWN4o z(Y^D*G3jgri1y-MV2)pSTyErIGb$RS#JVsrxE??@4EOJmgUQdfWr2;gyke1Oc{vIw z{jeVnx-B$E!P(sdJl*Q@%am+!$vtT!i_9vuRDlb&&Y2>;}8|A zKrw^SFPVWytlM(2jL^f+Xoowr3I1yxO+P%NO#{&?zCSFLl6Fc}2B$|iqUj~#$dtDm z?TMO!4qr>fif%2p%3fJivJ!#=TVexvJK#aY(_cGf$uNYFHQ)1gNn54lJ`;2&cWJ$+ zEB`;P>5TjuoeMwfQO{~QUk+8bV%+ZSt4`;eGxQKzF%o71ZHFLQdIZ0z);`okK+`!C z6|Tz9O9A`#-2zcSJ_Oss1(7iD8x#;on|Dj&ANFHlxg1o)-1j3mM)A8YUh8M3pgpo- zm=@ppT9mJGdc{>0x}J=Vm_Wa0kJFdSjFBow0q5>9oZS2OXqlPQPyp1B)U5W4>I_lG zQruuT125PstsHkEfYA5tm2U&a2Qq6mXa#O5g8gvYUZ)t^XHjilLaK4bB_WBe5ULWa zRznurj*U}#%MChE`E9*>7_dl#?=k)rW&LJlYsHyz~|*^Pk)N6(pD54Kr5b?bBn1Nwn!+^xt;`>;Qt7? za^K85B|eF!{}>#i?(bA8u!~hMqQR6G9T#L($kU1C%XJ_rmAv3&Mm>wR02$;@&%Gew zwe1DxWc2~CJxizYFG|qhfgI!eivAg4H>pSlaSVC%dtQ|05u+b$*Mo%|vrn6D`hk4a z*4xh-bcsnTjyed_yaRT|#(i=qdD_tL>)Z%jYR5j=j4(gN!(Ec$yhL%4=~BmMMaEL! z$IJ$O4pHkH*pGHyZ40{OH+}veTi+d5b-n)|3J1!}h=a-I-`>2;2nS5pRD(@$vTLh0pyb6va$sa4s@7kt9DBnK6)-W1 zGUKK8zQpI&`!8`7*qI7%+PCirHEeWB@mfs_w?yz4w)dguppj51h>yQ`@*j3*QYe&qM zKQ-*v`gUKl7CKtGXPv%-6@xt%pqbh}hcrOjNAWsq*x9Crk$ZDs1YH%uh|-$XnJD(X z;*2pC!gZU+25{pb>Ua%Z;dSRwt2_EK?YS^_>137Mx!`@ z`6VT+1Y~y|Gc7FcYC!OAe?VS^M$}0Wcf>o%7MAV>s2I#%&MqVgV(1wvx^6a`hL|y}4Am zHkgygHj?zzm61KvxdiB`SITMbqx2*g%^S$n_s6B)olvOAi-e3J)DZuobXgB}@oh&P^; zq;mfT{7~T`&M1X9u4fkfkM=(iZM3-O7eEL}1EL;0qycCS@!>1rxG)S1AlGjO0~No; zM?=-acA%Kv;;R#vioB>H$oUy2Lfb+q##E0t0zbPo)TBqSBLt=^+p^$d_cZydbr-;$ z>sj1gx4g~ITejDUs=(X4aU@y-)o%wXtF;@}YFBA)BLMI9!SNQ)FjY^d<&9MO4v)N# zx9Q=&Bn_U)?`RR#2rAnFtl_us@T2>@%Y6Y^g@=zoIBk2EujbxSPLLIyz7ni26a_pZ zWBfet@uvgR28_=M1io4C@%_*_87f?*2>_R$gfxiU!nxGFAM|U-vmpkXtojWc8`34y zwcaq2Qr_pwyB?%ej~hTbSehGX^ZRk!ug;-PYe2l076U6^N#K$xV)kJkA=hEP45gUJ zp2PfvaIioC9)h0!>BIblNWl_4E5VE#-^EK^BEO`*(YC8Vl&I?BbBK%HPogu>_g^hV zeKv43S-W}d3KsxTypPrAxiwy@aiw5e+%1%abE^IH5}%Zqjs6)e(~Q^cT;VPx^~}&n zT6S+(JQcJDnW^*xE$c19@dx{K1dl_}u;xY7J08BJ9UnTwf`zyD--xkw7i0|5*Gv5m zFCE!2a#b5AdPYJ3G;?K)>^?MYLyZJckBQE{h@zv=%ab!SoVtH;B+|M6@R&J2WU#*1 zE!ZjG(dC0xlAF6Po;(davPCzgG#-CPih+@6?W0#L1j zJL%1?u;t=q;MF~e>bId-e9;$tEy#QO@XOH_kx%8X&=uQZ_%PpraN3&SJ!wlQcS`s? zvK`}@afBu03rp$X053SX{#e{>IkCc(&0$CTb=l@*YXCl&SLFaNuBQP4U0FRm>+MfK zN?W-XLIydvD3YVv)WZR`&u~=b`&NMq(Nz)6qp?G*-+Ztg1`%b7!^Z&=Zt|)Tq#&LP zNYQq^l*eH$4v!m?Qlt?)$EuRh%Zaz1i)Apl)^1~q=gp;7x+T+8zcTlsy>%c{2kTfZ@I zBoxn*#WXdStw?F^TNmHlc%{VFo%%X%oZJtysqB8FQlJ_-Xw^4-RCHI^0n{E1XT1a8 zXi-oj1ZEq@A=of|%jd1kh;zQ>GD7cG)M)F!)oK}IspgO=oz6WGZZYOBTrf{N=FSZr zL~=5^^Yvpc_g8Z=wQK|>ar$?0Vd%|DlRQ}%-TWPYeQ9$V;@^m5gy!GzBQ{)#ssMX&rpD?%5NPl0JNbgK~=*jo88fCv}X#!h8Az?|3O?>3Z0Re)QO?%82fwHT=JqgV#Gfv}ur}%;Tict~;;xClWp5kzcuMn*aXEhaVDAz{= z>X4)4Ha!K|11K1UX`8M6G-sFX#julWd*6YWHV`5R$$h+cdmcwn>HZZ}wb&)e{wA=O z=1k*fk`T0=eVmE5{{Z3Ru0Cx?^v5j_UnOHkq~=!I?io-#LD*6qnW}xePa!x7b^r^!=SMyn)LDjjid+S^(Gx%N z1hqC|t-3cv=$Afp$8jx(Bsn2N<4aXPY4sn`N9))b;Oi7}^cCeRflASvC~{SzvEv}S zA=OErf1K!*>RhA?M`zK#z@ZFmpT(9>jSt6IXv4S&SzpPGgXWe@7vB3>tI^C3mo2z7 zF-*H$smM-#;jt_Gg*yY?M;ub-3%1w4aEzS08EEF+wUz*5q28jR>|;rxp675Q%>I?9 ztK?UX5I{;1zy>t@f8~^=VQ~ho_OJv6%G`@8*4J$)(>mzNZ;U%y^_w<%TSH^$$vf33 z&;3F2T!&$2It853B80pkxMYQ(*gfwIufc<(osth3W(QlUcvaPvI4^mDpoK1?WGGF_ zU|DkZz~>30)xYxzDt%L0e%FW~Zy*qX2Qb97e-1~4_&Yzh?GKF&GJ?T+U8&}PKv5T; zUbTK*8DEce7eGbo&JgJ3{lTr}vUJRPkJXw$v;M=KU0t9pk1qL>^RucOlN1LIgSlMS z(5m7BMdEob6D`*95q5h2Pku+|>%LjE{8@h;ev$jR3Zd*sZ<00XB||DT?uFnBzqvZp ze**12tA$LWS}9>>eP{Wdnm&f0RsFr_lZm2a@t|T5SSm?W{dy=2IY067wN&YNh`I~r zk@GQF&*jWS8vmO+UWS3af5j~n3rO#w8AJLC{zV|;B!M=+z$`5uOw;D(7tGWH+Fbqs$>QqjNp;Zu zK8j5AB-!l~A4P5-sX!|A^mKJI+_0!r-wl8OJfc829HL0n2Wa{u=)NI}EK)bU3h%&A zhp>K9_eg+IY#EUT8%y=-0>YG^0LWPd^b+oz`;Nu0#0pC)$~C4zNu+!JI_ak`NOqp7Vg(xeSWjqY?|<*aO0B>BxB!=Bw!eitOSJKq;XdVbUe3J69ta-xl>GspJwO$7m=)QP%ssA3n5U6O zS$HLuB}Hb4U=lhXkF9*A z*O!4n)00AF3AD(jFl*hW6pNkPuv&z8eqwH+b*srexYTFI|uSrEp^3 z^~Qw3NXtftBJr`1ACjUW&{OY*AV;{9_oXy#M(Hxxl7*tE4x1slFxy^&r|8pl0cP_& z_kbF;Y_1Gws=ednhmj>k>89w&hp*h`-x7KFb1DC!p#Y!y57nt9@)T-JLB@G|Ag^(C zf+)LljX)qM}Pt_Hh;26{zCZK^mCXZD)ug+d48H<9YVL#Mc*|N}-{$Pu`UmFjM!Hy^2;Y#?;e5g& z(n6DUD^AVm2tGCY!;{l3e`f-}0wYev5pJQ|BY5chy5VWswj(8rGCxU`u#xu6s9}^6 zsYvo`=l6c;v>}p@son~x#3^ST5$0)wMjK3aiD9m3QKW}*O7o`|feczL8Q(mBz=s0^ zk&a>NX@nm$|FAWR=MYl=z%iaPTg4F|IxByVcLZIUS{{Lk)7x93LT!V-x$XjVmXAUr z3!+wf+~d=Q+@Wm~E~xjSc~z1 zILH1G$1|jpZUP6l+42>I)mP@P6q}0k?RO_D_>T4Dduhtjquz95XgxdGz-rw ze4a{WCCSA5;;k@F9Uy=GQ~)w}l^1N$5FEBjh9y`(5K4r###}PTD>{ePXEfmO6HWrj zKQ7#d4{+gZgJ>d67XU{$T59gg8c@T}k-3!fQHYEXTHXaiy51BNMzsk%_E6j(1G`Xu zz^(*^!}e?Ju{11^<1(lO%o8Vr?Ce)(53$m7i3(Sg=Lnyr5p*t5VfA-lC=P+`PmdIFgZ42OTzF%@VddiH{-sNNB_=t?+I&dv|I%dM zk&VmL3q8?Rv+WA>t2Nq%V12^X6Rgi1@=p5psl|Umhj{l*2y>aM7!ZneI*Fcuv|hyPM2rJ9rf3 zwHs@Jun=9$(2n+oke_DofJ^tj0pH_;Klz2w z*BKlD!`v#14vz`uTFXr89}Q6YBq~yS^uYv;{ z74YV&s4Q6LZ81YR28IyM_$XR9jOS9qjlnFApxv)T8>#Qg6r{p%@Zo_$wOK>xDMn6Q zC7uPs{0SCJ{qJa4W$UssfA%I51*BB#%1^FDIsC^N)9 zf|z#_m6nD2(e7QSV{FOMBE~OMGCZ5mhQ0q7PUequ_>bBb2Sj@IBkGp~+_+qR1i*Tr z3?=F#T`QxlP`j&}QdO&!jq88J&5-kCw3D{w^1{ju0CuD;6cI|vW`|9i3V9ZF6hfwL z*&|SJbPVU;1&RU)s{i@qh$odU-rI)rgzmZ;7RvPx#9Qgz;e2$o3Zk2<7!Dea5xlS3 zM?-tICC(ly3{t$)RCmEe5{-b~b_K|415t&Jj)p}K;xzeUkL2g1ujbFf$mmLSuRk{dFOa%k~;T3Sn>|32V-U&{D{G9RjVkL-4NJ zG*XMH>$eam|9j!`M;$NkyZSG2*qPHKyZXKMPep;wST4bb&|Hqu;Rs zeBZf1^xsyd+Gx~hg@KkitaevDnzup2XhpVH+DG#T3VBmcP>_j=!VFCRX2%@b((mVO z;0ch7>?>^A9f@wi2YvyA9A9<)K)%Oda}4rJ;DY>%O7iDIKYM}PUv(E;Lb=r-O6-4@ zBU@&Oi~iE?vAinaxq?z*4E(x&7|SPy6k4uM#krWhC(vQ^>Sa(vfBZ;NW6Jf4YyN%5b4)4>|}t$MdYpazdjm z3>cx=;RffNvW>8RnLkK10b3E5Pd>MJ9J-z*t%;H4-Eim$)4AMm1>&_z|FPSaWl0nG<`a4 zbn($3qnXBfv}8Ko1D#;gouDvYW5|>#h){q0J6fix5%=HrR=_{*IO%I0Y zr*--K-DTxbC{>+}kEV6OfYI#F=aN8UG(f&R`8-E3!p7Wu2{KIfWG%m5O090=h2#!I zMdaqme5benJ6#-K(e%+|zWeiI01R?HmJmWwQ+OO(g8^p4)fhlar|_vP*>H_j=q`4h z#vOOxE}mjMC=y#Ez)9PuvLR|`4@7uNGkq=p-?&i{7<%4AU2Wx5EndkJQvcDk33~DL zz*K&d-j^X4SY53|(78{7WITl`5(@7R2Eo%5$Dl9}6W1A3$9130tV78&%b zt@9{YrUH9p6Ms~+!HZ{-I-~HUNu*)Z`TZb#l1^3l51H~0NB{-U-swCh@}BIu)EV47 z^E;+;jVB*7+{|4w_#@i)!jQc~fnvax8N9lB*8$GB?ITCDb-~{(Iddn0P0-c}JotOz zPI$$yXMbQ8zfRE*L<0Yr#S60QE7+Vmxo4&l_42WN^RwLe&@=4kc?6^b#$5InGux#iP^*3mDTa5K)Sr!y77VjxtmHiym_T zPx3^vyp~W1K^*mOjKdFe__51+QJ8g~$Er=A%YTiEJ}OTBAe;}22Li2fE?<&T@2ox& zupy{#$Plc_H);&cdLv$bGI}90;&v4(5{+NK5oEiTg~5S=^X3=K;J&G@97j#x!p*Mq zUr|=mpn~t8=%$FLcD|RW^_krBw6po3Xax^LdnByJE{_FZ>oC|hT>3}m$^GbQiG-P* z9bA}-TWzv5DgE)}-PZRgW~SE7g)(%pM$mrkKbj6$;11*F?=5>Y3Ul6q-Ox4-xR<3x zd}E!zJO-dm5N^y_i9#xe=cZvM;xJbRigcI$!|b5*rI=t(g5OB%z}69jd7ob)+PAw0 zPwe;r60g_I=TTKE;XYmOaYXBR(pYLZt7OsH`TXrr9Yl;}_VcB@VxF+3b%>!m9)g>~ z#$qiImux>xPQgm=7jq1Qo~@?4(A5!PqM!x*jc`L5W)mSzZFQLr;0K%#YSv38Kf zl243LhbHyb!5XYfm_2U46MDCoUBsJ2fZx2nZVvj_MSLrCUZhBNs630^Zvr#px|qL0 zjYWASXL6X6Heal*^G1{d-np1Ruk|Iomi-bQWSNmcWYb`SuI)-FJ?nb*_*PgQe+>og zO%qaCcx@szG+6Si!zK=PXqCj$(qSkXx9qd{1$dR*<#F8hWSHJil;|xPS+y*}8{V-* zyW5@@_CKRSb)GFukWf(d$9eku65d6*mqV08nGOn>YpGT*n?lZmASwQJ-d`TY13F#P zec0|dFLGRmslgPh>-%$2Nr4GW95?O6cN zca?A+v!_H^B+jGU=fTp=`4s{b)!(olx^n^AbzMP7d^VNx@7m|!?sc_Ac%4K?QU4XO z!)b!uA-fP#rO{EQ$Tk$5Nu>R`cNT7eyPh zfmHA`mw|FFG8|>94q@EUc2^wxJ*8u6ioq1+3yztZb_T)#6o(WDYK0r5!g5sVE(!-{aaZ>7tHdG~s%S*&7_I zAz{NPt_h;Zl@&ZvfVhni?}*MC6r1-U_B&pozMm>}=e z>X;z7Y_8@l(Y{)lBR&QJHHvAE;Si5o!;|BF7>1e?J_UB-ow4|Fv^#`r*kdT?&A>7G zU6M@ww;Huti$LvAPDD~HWv|tCY(Dv{2!Ia%J&`J%Oh}cDMKPIWSPsR>~w_qy$bvsvNdPSPn^Ijq>#_`5MiJT%|R^gTOPN15R zh~ZAJHv%xVj%PxWB)Zn|i3rRaT4jsO-pf!H`LpSgO8({i=S5Zy=(uUc00G{mm=t=Z zl9x$MV`}!_7?uO;=Atcu+*V42Y)HIplHnm|8nspNn9C5Yr;4lkJ~QD6-qDNm z*6oagr9`z>9Z--{bp)YuS^9ID!8nL1`eSG=_1V({=)-DWrA>c8C$3`@kiIY4lXOp3 zpOWxN0zWBSqP+0+ni{Uw`KS@Y==5%jjm~ZL7Q}tl%XGQf=W(#Gzf3nu7XWU&)$-}k z`7v03_pR3!`+8-#SUCA#f!+?%q%MuK6S-c?tjOWCqbnngRW(sIU; zl=~Cp{tjQoSC&tI+yqM4sKrAIsAf*aB)V=R=aPM&CV<%;lc1QZHdNN>5GR>lNprZs zs})8GWwO0k&O)#n_dcE>H)z?_oT13w1`<*T{rYsK%yCfdNu~2w^LO+v0v2WVFo+z^ zxrSF_wUG$EP$R*cS0KFVts>CJ;;|a1J z0l(ONts={d(tJ)ih(geH*YaTLY+wVudo7=W&hOB`J$EgCeePO7^GcF3{b<4_{z=g$ zWvqOHIn@7P!dQBH6OUc*CeB_O)}cR8Jw6ubJsi?f%>muG;7ClN(|Gj`L+zcZSv0Ja_qIA~vTJ>*pqE=hF>Ust_plSyI&&__R zRPl0{{B~f|qsXxs@z0XXKsjT|4P2uIL=XZQNlFyma|7=o^$cVk-noHOxb{5APP9F5 zF$>oAVLyPSKjnI>OseD;vI`*Et|ShK!i`fnLob&<$$E- z%KycP9a`3yhLsQ+Wv1x0F=oqPEIs|r4U|RxCJQoRC@r5X#MCut@j)A?<)ydq881b8 zN`JD0{c#?&r#-juvVgTJ6pVKu*K%!5^rh3a3%T*p?;6$g{jlbUh zj3brq+Qy$H@eCc`f!tm)&V;p^9gV#H4>xi#RgP%SZi7mN9Z42@7V^Qu@+*tiY~X7a zk`{_*H-P=hMr^z%nym7TTAQ>w*f}__90&`rlI2cbtuh1axdyqf`%c~rMgM_HckD5z zVGwY+=pk{J)d*zWttq~?ziS{;l@jQt(^H`=HLRH*R_2lJ)sSp*ryzq`zT6}qLps$} z|1#7-9bF;b98gq;4>fCrOcxbRMHgx4UA#V}+_39U&_UdHX+@@oFeNRw;uQPy2@@9@ z=TmO1?+755VKm-%7oW4zhNNQ-%rAfa8HTj)y$^p=al2{i`7%-5Q6D0&(C!V<@g8@e zug77q46qoA?nK=Y0zFcuQZI%|BRbc&Ax?66I5(*OcR~!ISRFt&csR$B;(`zwlf4?o zvh|^%Wq=8~Sd!@JPLoSh*fifqyeyrcLK(i%1ACQEh$jYa2dQMghyMdWXtaNXhx(j* zco;e#OOJ-*J5u8<_wZ65D0jbl4}YliyRz)ylL#57?0+GBdl5jX(j8iH14=v(4ISyn zt4GaEMg{fFFh3af3_{iRUz&)z@fMhs+waxjHVNeOhkqpM5p`u(0R^Usamyft&5S>@ znFsYV>+e;Th?mxZf7qcVv8d`V-~{^Em8ihiR|t~PeOe3lJ`QWj-cWE_wF`*>~1 zyRGZS2yap_LI~Sr(b}CFw5*uQ!l7LAMJP`1{X2P1x_2sb<)8;c6+&R6so;M87pPvM z?)w~q%B}ayp=~Zo2*EOT=qQ>%fazz}tVH6y>1dY?u*9}uDF&Lmiz5`|B`kp>Y!ADNkso*M(n9K8TtWhd zI*GbIOS90j7XBNcXe7Q(Qnee8r$^EFprkOev}*BnCiTA#j@qvDC|DWchhhL4T_Nzf z+zny5iPyzhXj`kcI)vg!>F@BX5;}%vdFyM5#6Mh*dag?5g26cIFEkCKwGZ-Q+x#Hc zdmCQTDR&+2U?WvF0)EoS!br_v4qe-Nx@yPzPx;3<+L7;NG9W>yohB0y}bqSZ|x4rpazQ}(Ner{?f`4H zXlQbf=RqedoGN^+(&Np0;WYSJE~MR4;sean)~~NxuT2#SN%52g)}WYaM^Iok<*ZDB zSp8#sslX901FkBN{r&tgUO}LYN=;`F?och))b#x5>c@G2`cIpoqsKFn7qqMKIdtzu$vQi) z{WF+ZHJDd@W3AcD|iQ2O;l8 zTE#}&gNyg@e04U)ra2Nz{-N=AJ`Wda$Cuz$9NxoK5!r_n$FyxjCHh$d=XYEiN9Q6- z@Qm=sDSZvvr&qUWm-A%m|1}Ms32i(=?GFM+1l84Gs*gqng20PY<{s!c%pJwL6J_l@ zK2og`PV>IBE8mLL%9v)NKQFY%AkF7jb%f{NydtHRhEzit`)_%{Huro1jK@`QJ;JX@ z08Z2VNYqyM05sD$EeXIzjVq5(A(^6|;gQIGhL>f-lE_34>=J0pGkn~)JfldKL2HPb zO^0)>P*?ggO@?<(D=pEUDs*&n(u4iz%4fCPM#)sExy(kotvLBjQHV)h8dFgjA1vK~ILKVT>3p^;fFL3b} z)Osw#$;gK9-xv_0FFF`v91TjN>cvpl|LO%E>Pg{%A=d8z6gBll4sKnO06g9PRiKTw zMEN7xe~~x46whmWk%KlQMq>3CQ2A2q^!tkn*NxnyX4s|%GujiN_zhkc7?|$-s789G zB>S0JDvCFdS2J$pD=dQ{wXIs(6KoW`mtU#JwO_qbys-SIN-g4UOn#o`NdU1peb9nkLch1A|6DwEGAhtsvN_7cAV zt|UOL2RLW~iC5O^;NhE2ZA;+xns-q9H7mk!$Ici$YHqMepl6woH%OR`B!jx`Am^d( zUx7A;Dw4jy(e}bNR6)tM&QG&9_ayo1FFBTV1xv^Ks#+B3JdXlgVR2$8{MC3DISwaB z(4@X3T`&b~(?rVZrgOJbsZsZ;+Y9Gc7G#_5lbns_-J0@na+A;#0` z2}Emop5jLpuX2*8gBlR3O!H;hNfN0yrl>}N`r?%;(X~C_1O-$0Yy5Datfi6rH7?Ld zW%b5u&|BX1nj+IxskGcPI|!Jw*R*40dSoV-mp*=jmzd6T3N&4| zw(RnMTybg+=KK7p8pOvanQ+(Lz0waq&@HObg}Ef z4M@08zQgfC**zHuT-GAB#)4%1t$lEBeZ=5O)5$A_!(9$%L z(=m^|&zEY^6bJ#;&p=2Xc33NFjDx}i6$tCD{eW*IA4f(u*;fNe_~r-v%u)m2wM%i(*$;SibT-1cq!Zb2Em9F~_A3H$sA^^xoU18sU_^+V8f}GkypgG>IB=bOQBiEaRC4BJIX7xH5!I;ZAk{sEo=0qsFwmSXs}Ri! z9EcTO*P&D@+hmWkt*WgZEU_n&V-#I+ynW6yEtM@xH(H#IEC5)lt3{TiZS^7{dyF!&DmxL1LbEGY zujZh1h4w)Y7x5&RtbPKTMA^eK!26*6Zya9!BtpiYa zllQS3z8nAs_2v47o2S8kaluU9fUNWX6@LSY3%PXWD=qQ`BmOVz@aD#yU?Y9a)p$7A zX&9uculan0eiklvVMtx^9;3ROre=Wu_eyvyo%mXd5Jzbmmt(>##sOj_Qgw7)vO$?z z^9?UNV5Rc||KT+#rY!#&sO+5ihD&okvlGz-n~Mrp`nQa|>^+Vs;@|=pY`-%ZC*_<) zEZ{B0-r@ZbNuPeptGxePK568!Tzy+GPO|SbBu+Nf#7AV(7t4LPv+*5Q`6PS0z9TG_ zQorZ1W|eL?TKZMrYZsURB0&}>z`8=TlJ)zZd;+06mT-NPEDUuzp!bG56pHCTXyZG9 zIzLxOQsoc454x|7&Y`$b0{i}fO*Rxee_${Ifb9s)gjKQY1dl<{38h3%E0UcZD9v}B z;3Y2+RdBF~qp*|OCODjyM_raoAWOe8m@RV#Nom5mNAnr{^A(%UUiX@x%7V}!;hF*1 z&BRmu(Sl3@>;*Uy+n-MJGtV!t9559;#qm=2o$-pJ{0gu%+=zK9I0B(=lOUAMf)%ji ziBv1uC`G<*du$?@d>KI&dT&Fx9&5mWg=@$58SBd`R}OT5sO2;_Gdq)^^VikjZ??jJ zTo&edWzT!e3Df3Chk*+FIR0-Kl`K=o5Zc)T+ zZe5O?qvv~=q?G)~i>&fTrBK8VU|&agegYWw+aLL9P$L>f$v<%j4QGci>i7!W{KFf= z1JS<|6QJw8^qPh6=_xF@2Y%weg&7*G&!*W-|J2Wi4tXrumPb3t5n?tNih2BEe^#!S zG0Ze**$Jayu$p)qfh(IynN>-$q$rvEEyD8ZnDG4B`Dw7MI!iKj*Dol7*Z-n8p@-05 z(yM95zC%fE*|DLrDU0Y2)Dzec6&leED7np7mW6URq(hXk&reTXb%<~n-5$);9+Xvp zkN(Q6OJ24&#-y9z0aCY~pMKX-K)Txs&w1K=e-rgWBsZaKi=LcMR?M zO)Ct54d0P6-C8AmOm#3FTK1A)(RmaFIQLBu^{GCi9RLprIv6BQ?>>=&2y|40e6#K| z+;WmwrndQh4*G4XQ8J{Z;dlmU+jOt3XajrBqxvqc3-p3yRN$+n{tCFHI^iu}1JK zrkAZi?_Y~maHs&WVIJbZUWbIzWnPfBG*uhW@_Fh!C+VOpWSJyONWRHkYNgmZ>g;Gl zFCfp|y;GGbF4FJhyL;6j@sFtdNC6)sZQc@XCe=q}ZG(rgn7owyfUN2(<={})66~Kw zA9c9++w*xSljnTok3yf1DoZF|{4XhwCJa&KvXErtoF{BXXTjf;dW0H9YaoKVzN0`1 z?i<1nQu9i>LVZKj9J$-O(Y=ux8yz<$*_{P*-E*du#0!jW@+UU!cMzW5U)0`G& z1&ePj2d8xxjHjAC0L7m5Rpqs?XAcI%VM-lMi~acZdJ6#*-{PmrvWtAz4nH0|9qJiG z0S0~yc}BLG43SphkTFnn&)VQQZct^)+ip;2ixH6ZPGwjkIBx!`jQwCLi~CA= zW7qhrOye6x&RbECfLWc>0wLyA0PXM+2DL7R@*<+W#K@U&I0A~>kLFdU8R_N8DG;*^ zP`M&KhMMlRgn2Td<+Bby6W@-Y0bSP?a6{Sx_?`AFhLhy!09DeT=M9SnYw3F65+@l| z88I`#;J2U{dr8U4^1-SI`I&J4IE{MG5u++IJBfd8JBdoV!=z@4Z|mKR7BE0?5dkZ7 zJEZm$bFqbA6(D0d1>v--*6^V4#uF5T7yEi0*K3@&e*f<9x`y7iCPRD}B65OeK#0;KMj z9sD`@cRK*MX+T%*ghQ3GL7lficdYFXTuHN>s#M?UpPwPKN80XGxd=9j8fxNTm-ad| z_4uu%wnfKLfC~cx`K_8F{Szq17gVFdKz=A0-gOPfQgeL)lh7@JyrE?L+ZL!wV0nKC zw7ei?WOtNps9W_n<0qIzWz(9q!Av-tLJbRtOn~t3K#ZtsiX_t4L2^F89#3fo0+@DZ z@(C?{pk3LpO3O-wRQ4^wydl)(jx;)%5o4$9iXa&-91B+GiM5s!qK=ZAs5u_7@=H!% zY7F7mL+42*YcPq5r>@QzUowUAvdE1KktlQ{RZUa}%)wx45AeF1(HjI_EZoR3E6OQ2)0 zAjm<7!};NQ!+AZb5xftvd{bz3ZGtUiYC&=SWSs5;7MbGg&G$gd1jmhyeu&^j*Z-Lj ze#$E>Dos2R4G2RdFJtFH`*6B8QkCIeODOzt+}{HpGh+*TX@M^?iq1x=TsxmcMLVF8 z9DS#AfX*sSy>s@*TIuR2{-&Z{h#Ss()oimBPb(}gSWvKN8V^L%6i|DiZx?NY&{1_& zEhu3853U$9Dmtz3>&=Sh>!M~`)EMK8`MMZoHbpO_y_Z7gMF5dtQhzh{yg7!)U5(*o zERi8N^FZs4;q_9I3~%AaQD}3-rbpXo&#%DPz8|BqYDNszOb*vcQ%(DzXg)lamu9an zVINprUM8*u-D*u>pa3i#L0w}}Ryp%!G>3@&@E`5_1Mm^W1>!<@91lb9^`Hz-h*P;s zl_%_~Gw7B$Uav(3u)J$YfOE#Y9>5HG<_zV6dpWfZMFN}s8X5zeA4Ap?tEiI62je6+ zxblAsd8t)V^R$)NHPMt|U0DGlTHT6O+HecnJ_;=g%}}*fB;=cWwxVLxsA>=Su`Nk( zf(Jb3CG`2J&+JA|JP)EXUY#YsWTFtX1yK?gZWl(E13XuH^{{v?qb5JNGA4rQkU2OQ#-&KY*|!mtUE} zG>3yPISq7oLyQcIK;_J!-=?tet?o30v}U7S1{$r2>P2F=Ntyk=rv$C)_HbQLYEqJ# zEHF|F%k zC2B{qV>j%^>SN<|@H1WvX+{cP`%N$TGjr%*3g3fBn{qu11L2IQ-BZ#5JUdlo?jPD7 zT3J9p@j={0PxL7mbTr1J+2I}vK~DHFdWPJ|iMTNXA>UR2^^g#Cf8M$d?=RH~^A zi>AW25{(1(`=%RF;jSL0rpnK7Q~m=s$&f>)ydGUX!KmFd;LeV`)&bJ{Hdpm_+?ck@59pX(KSsIKl#iGWz)1CDHa#lF&~I zrM1}{H5FYSGm`daYrpTdC(tSUhkR0i{C_czYpx&fOOtZ=dy8^ZDLTj4hkQRXeO|^+ zF`YSlXTs+fLwm;GLBn%ZDbqCRR#_Rm(x;tQ_a&xX0XB1HHO;Ho+^IU#WbYoMg zYj23nAv7urDzB*0%dkQUL@KR7h~)V+nZHOSnT~ot-+@YKpV^1kNj^1I4gS}=GfVfL)by2>!VFkUzf~Vy%8^=1&enX15D{!^V$-&Gh9s zP7Kg}O{SRfJTMLKCNa2s;dq`+-7m?HZX2&1R6^9dW3=jYu+$i8r@DYD+;MSI>;mJw zeo<@)WlrGP&Zi71k!jX>P}N~5ymV}_*`W}^VPo!Bj=1K{FUnd$&jcRzCId>gaT9qL z);ynyep09k-Pk7rWE|{M21;C8Y!oDPykxG9iTqAzFrq~>QB4(t?Q<$Ej{5rjtu|z? ziw7wyK(k?lFfI0@t&=#i>l|T?CijPcA@^LGD#d|B--maJ&vk)Vv#0&^tHk~mkb~JS zzL^`UgAhdQ0_3jbKj>&);^NU$M}Q^MDC{L#Ts#&i+F+d*<9s>g;@j<5ITkG>GlFP% zzRLa9Syb~R{I6Rch59FI?f$g<;Xo@b{fiN%yYkf;;=RzVWzN~%^|+lTZOqiKKd)6~ zD2^h{^x4Z8th->owI7TaRmE`i^K!}ar*Tx@eKjb;eHVg4v3Hs_-^FQ( z^wTs|a%r8@`FTZp0FYRSbxzggmzS?B(75Tug49qTu&EiW!#e}(tvDH|Rb2|YnLJ5>eQy~0KxL;!r9s_n+;A`n~yOF<>Zw@OnPwnP^~~ot>gM&U%IZu zq<>5P^8y1Sz*Omeiiz$V5z6T~*hI_2GK4s^|Db}f^p2m^0r>LMpKDK0K&`7G4S)84 zU9T>oVKv0UDw~?FjKEzy5pBG-LJoF2 z=fN)FWTAHV3Cl##1!GJS4a48z{4GohYM7~N9{-K=1B7nbfA|K_7r!PM=%IPqC^wtn zZW&^AQr|pPVxyqNfn<9KLck?A4RKI{Tb`Dl)yTq1+**PL-O~ajFD{p^qz6_yqWKTg z#(CpqbZ>!;UJ(^%M0;HWVxhKMBv(+H!0<;?%w!X%jSI>7cG_ez&F9V0dp8E!HJ?x6 z()sFSu~VcDc6|#xtoE*nk1)+ItGv9NUv~2YkiBsfb0iP80-%jy$X6~Z=1usbLhmJVB4Tp&M|qbxQt%X*1^O-cGHl$j7#qgatT+HU-Sj=ayG$WTd_q zoN(S*z@OK+c4-skZl)qxoIERLu~7 z(77uH$3qd60j5nzU|z4%`H7EY3f;6Y5pg|4Cqv5CuC2PVc;mXYsGsrn5>}VpR|~<=$3*=y0tR{? zFXvg7k{PlXKWR~#lk!SHSv6K&v-SRyS8M3w?NBtitf@nHb%B#4eGJOyUUZ^$- ztuFo9Cs4l+G=Hu}(mPE$q@Gc)fm{RM|!i}o9Bm#P9aDl*sR(z%h8wStF2xd;?`_e*{TT5d7fsd|N03UwiWmK4GL z&xRSjqUk>ZE+OolZN;#}owweb4CEGpo?U&r6+HiKaZtN!_JJG7JfPEDEBTRomnICS zWzPr6#!gNqfEKRnV^an$hvs_3VAVfCE$rgsa1ybCD=8L6>1_ZLm;M07xMk&<3uPwx zG$6F;SZsEhiw9MGaqdD`W-U}3-Y-`J5g&Dr8Y(jbb!$YN=e{TdO}LDo1(dS{>evVv zye<&|odcX-{{A+Yb@F;>{|%nfKU~I}+PNWQ4BZjsl%cRp%3M$257u4IzYCurt#vQ9J+Pa{h>_8VpcQF=DX#QfSlXtm4tnztIlT@m(OIxSo&jrH!k2^cz>H z#p3m)V@ma#IMdIs;;Ot-!3F7>3U$8t4dHI%*%zg!uboqpa%sZ*;BMxu)->$%sQoTu z2CZJrD+S_1T9LVBH4g_`hmq9rBvi|et>&eFYBe7V1OGB_4gbsXHR>GkwIC2fM`SDX zeYW{SisgiJh}@<9Yt)6}pMi$Qd1r~rqQ-Alj{k6y>W z<5O&zZ6Ayysk^{M`MYB?>0FA*KrgN1=YIxj9>L1ZumtjiYt`E6#0LC=Gq#b`G(IS23r3~tcmv5@Tla*0~&s^hS!TUyX)D5 zTYSuV{^!m29T(3%As?P^8tYk*kS{@IzmQP|t_z=-4R72^W zS}hkEfu?$Vb5??0n{4VvarL}0#t<;OT<1@}uQ6Ulvl~6bQE` ze_)r}HfY_AX`y5W9c=RbA_tP_zF{hNucVl)2Cbi0-CDj3XZ2xq=nr5 zB>+;KzJkwf-RW0$ERjA+*|0!5Qi0&M{z?ui$`%UR$z{G#`c(}H(nmq+{~91iF@voE znFs(Mf@AUct9X%=Wu&O)k`fqrYgwL@rzLl)?5e_V2k??*Mqm2mDs8LqBqodU z<8X49Aeo(bwJNb^?Z2cT8+$S`OMjQ?)c$_-I687Qe@yFSTZV1r`l{+d=q%+Lb(mbK zq-3$U?~T{+$PZLp_G&+oDNyzFL^JhYqt%Pk=vWRS!SrjjOk*D9-{j|_s_P^D?95ql zdsjzyHVV@@c7HtZFhIBtUaOr?J3;bm>;qWD{Ur=a(k}<$$G(YE-Bvh=lA{EqkV~|m zNQAx6gri;BPh{J@YZITJ{hL&=wMjh=__r;=FOlxJj&qmBON9490YvoQyiRM7tYCk( zW3!_}XxL`{07=+)odnFhD>KAoL5w`m`j_yt(pW_5Z*Jyimt&OkYMM@qbku9TvNkhN z_=gNe(;!6-pBc!(w%?uXNAK11pR1n%1J~AUb_o5BDHYYLykbkz#BniIHSiU*c^>K` zU7y&Z=}?2V0OF}8+@Lq0LHWiRcs(B?oo9kG%oVkBp#04dM)&o>aa8?~5lw4Zm67f)fHV7)rH}H9h3qn>!LTJ$q{KQbzm!S!G3QJQ^!MH)2r^i9^ z>w62U{#auQbk)qxWPJ@zAoXgLfvYQh;a@!h0bJgVoU{YHhTQo^4#DBMtD!1Rn*stH zmq~-AL1Wkb4%8U3tJ3`})2^xptXXSb;37gLc!_h2H==02E)vxIn|M(RsKOY!CCvV|Wn6#@v>kYNMQIOIYeybLQ4HZO} zTe%Yg{aGM$vaJR>a4T=XemBItQ1T3<|e1*(vrY~$kt68TadGm!dDs$Q}t`c>nD zvuWLSzL(G@1O9b00_l6U^ZxE{Lf5$O!cZ$6-LCEL0_u+iv`}Zl=57j3qstrlnFmsa z#~QU?pGE4GFv{zRPS4Wjb^zZp@vsRZTo;>Ve5=EB0;sefjDp*mv^o9C4;7y#t@F{O z7RXx$Mha$Rf`5Dl#*pjoA^x=SPJUn?&8bahlr{H8Kn3-gutc&q^9akl+11QfC{)K| zs46qXLN_(@)|Wk-wr0*pB>+uY>3#8blwR^eUsS(6jzCKCs7dmo zf5$MEmQMgUWM(UW9a;}yt9rD{Vk+gQrDu74#d}``X%nIkD1}`TE9*;Tq^64xf;UUD zP*ik73g3%a2Sg>d*&UhNJnupoNxRo1rP7Rh_=~#CnOQXHeqaV}zehW8a>?fi;1=&{ zzmflZN}9C{eD(FvpyK82+@S@XqC5`=mN4oH376gKrX8x3QHBlJNN>B-ey=)KJe|*reA0U{O%@>}Ex%KsJUZ{RLcsMtesCC_gQ5FP zLV%@euqjM$P;!DWopP_QTDf6`UZ)_m1A!E}0(igeIk2wmyT>SpB6lZu3vooijdv5Y zS7;|6iTRf&r_zYjMEO>*6-uS(`?Zc?DYgFBF^#UipRX>dsi9lm8|m}=wH>=m5#hIm zE-p0j(A1(>D3w(Ur-!uRxcfW|iREfD z*z5IQBUK8v*ks41`&4oq-QA*c0dW@P{}erv9D9?3^@b1Hz(|B!IsBLQ34Q612(rG; z+^4b`LjASL>L;|XCF)%(QXXzqSv+bcsb}Ly(Ub?Zd)Uie_cjN%Kgg}!_LHd4I@0`2 z!TEFMfMg8^&H}GL*#c^h^B?8;-WY5XvKdq0G@^ZzS{I!x{HI}x_z;g$>m0uvI=wt1 z0InN$nfc=}(a2ejsIR9k+}A0pkZ2FBA242P>%@CkJj|z4Q*y*edh%g@;Le9N@Qr8_ zx2X~ioESxP!6)97@3g&JFe!=xjbI#_L*!bf@oeo(P{O z)LHV7njMaEyuh{8CKeRoZfp!Xpr_CK^9#^aBjD+L|E(^7Yf4 z`p8j-e+)WsyLqB>dLyJBuanAm^R1fu9Zto(?~-H$~D#dBB5Z_uKhR;MW&V#Jya;}u<`rqh=l zF(GosLzP%dNlES6@^Vd)xazAwwq>RD|K>T!--fHe--Nq!}oCMk1;9Kau4JsVC}27dkMbqk@hx{bO zS>6z9pVO981%}D71yH01o?{5T6t$^-GCa~cMPM@5>Nx~do)9+dONm6xuD#&`YA8(_ zO|{Q+Q0IKXJ{Ce9e3%K!!5@&S zsrQDX;<=Yk8vrn5?WL<-G(YZ2R%q-#mE}bW#qJ+P^`oIIwR0Z_mF@dfsc!@_8pMvf zpnNoaKX2chzfcmZ{~X-MdhI8T`}s_lbRj5TSjqUZ777EyW{vdbpIV8r@WE8G4b9xa zWHSg{VYv$vkagcjTj|itymY>JS(|oYb)M6SIHBt?)FiSG@B-*82KKW0NeKJYe}UXg z=?n3t`bp66yY+wu(a|U%1L8TloTik1={umcRoYN#>pBu1rdEJs} ziWqe51F+)htIT?juxxKQQs_hQpIGw@j4$fHg!}3hV?!j=a91Z6IJ-JE&}RWTuMEqe zyjS=>YJDpxm^$u6jr7J>c$U6u7r}O@(Y)>F@nK zpYIp&{{HF}!a3jZJfG(?-eYy2r$hA>IEuqkMhE~TGce3Bb1k^fWTJQ1C#ta0O)<$c zY0-25`ePO{dL#Bd1!M6ZA8yt#)cEhb$B|KvHd>RhyBij2&43YKP9(QBKprpqAz(PN z4`GUxy)sm0g?n!jSfkG{qu=v5>~X8-S)~=8rPLnd^*~DaWO{U()^Ap=@ORfOFj0EB(2V`U#W3&gAFxCEd==l7@$&wjvfiw&Ks-2i){Be|z3Mop4O&Ubwj&T~{ zS>_%}*>8kk#-x-pJ}mnR{vY}yN_6Rc9q9b7+0cSDv@16!1mCm2i?Ptv9Z?3F-Od{m zZLADxp6zE->y3tX=Hs-tGe-iLALN18gZyxIg}bjUl}XlNkO8@|gZD2$%9yuya2u}Q zV|#yypGGI$OO#_roV`uE+~N9pYghEqd~=2ZlOYrPbsuq9@p%zWgT-S36`8OAoUm6u zQufpj{)$53vFcbD8+^nMxAP_lN@kviI^5pxbb*xhv0T>B3`Do>V?L4O5;*)ZHz=&R zTATxSgjnd($J|MW1Q1TVCoyTx_=FGMoKKvy#f!^290{4TGSgdgxQWy;e7r1%$CT4ep3`Q`Bet z$td7cNTv_9^$;>y^qI1DmLbom`HV{d(C8ghGYM0GZF!08NwApP+L@nXM!kQ35{MU{ zb4-xX6=|V5_?%Y8(fp%Gc?;eH!=&|drLvyL`i+5K@TK8iP^T4!`$OT8f1*AcnAv{8 zpDRtSYfk8`^zs+HwuJ8}b$!7+g33|Wu{7~Z4yz0rzXtdy`{`hoFds=R2SQTl%CG$8 zH9>{|wpNQG%_ccny1K-(h96?nb*31~JkEedWIAC~q5KaVGzQb#$9eNhd7qx+e6dd7 zz|l1E1piA8;6*}`Z7!pr3p~|I{_MFB2EOVTkV6lj;9EM@0@>xVSphn=c%Lhe6{=Wa z^rw+ual)5%(wR)Rex*d?dDO93H-T1%1n4YzW!y>ZD^I$=a>|}F{$z+)MzV2@hD8ir zpA3qtKx&B}A3Djs5T8@dVX_#TDKgQqR5~My>4WG~eu4$q^&ouhUO%M(Ero#)&?hof zqB?Pt6kTg>i&XRNmNiiGFNj7EDu_$;qZ>MTePuio1RI#(*f4s!Q^{>Q`SP;13Yg`+ zfRCqi@s&YC0uCGDNM$RY0Tyvp7e6Q1W?@_?+^hC=@kihkQck{SM#IqZjPi@=4H$lO zUBdKqTsMEa(6>~LCN;FNTRD5)4+sJS%O``DY({$7^L~Vkm%Sgs)4=#|{+-OXp}-H# zcPl1F{F+ru7uAHc@!#AW+w?s6PiAMJ<^NmvHN`{lDEmLkWOO#woeCLCyRQr~=qKgR zpPxUQ*Bm4*2h+*_a30b}bpC&=7#Oe56z@+WYn%UNum|DXnYzjYTNU97rX(2^n?OtG z`kKoT2o}fF&OiN)`gystawpH{?}IR=JOJTj{S9xJP2X_%ZTW^tCK#qFT{O#sG5%70T0Vvf4Jn*s|-a8 zQP>UEw|)WSZPP$ZwGilPb-u6Ws|Bn->CsDOFSTX^VL@<_PEJEC|HoOJ(Ogo(v4mv+ zEEi6v{>%4?Rf`*`h>SF|q+$OEphXuqniiktmr-$=Gl=eo(0J)Ot=#RSG4jOJQ^t>c zpmc2WA46R)C;QQsA9+`_{AO2h5r=-{;E{P7?9|KBq5}tbAUeTA4A_>0z+sf`>T@3evL~6EZi(z?{^bXS zf->IgWVg@^^7)s4JZ1dEhmQ1gROuX%im6c<&p@lMm_dzCn#V#mmp4G=r#8N*zkcHP zA@vl&83G^nywcW+Bj>?Dm1ZSVklp7MFlKQI;64e!$9#332be8ACg_iYO^vL_>__=O zE6){Tl?L?o(5O&_vwABb&zCi4%aMV&-- z?EqnH`$Gu?7rq|N=3;aEe?+bs0 z3yimgt(epM5HNnJYr!)(d4WTw&x7zn0_P}%Qva0q>9t#tVEhw=Sm5pgsq{}iX?ivW zW0>_pjEcll;eZDE@=xxKG&Tc<8T=O?RmW}z(I(poaMI$xiIBPPf!1?6bGV;t!N9; z)2Y9CnQuxC%p{8uv*^xdgGyZUYzauGl^1y-NM}10P~mSAE+Qj_0lr&};+Vg=GSMC4 z9SNABFI+yE z{w>Ok0-?FnG{_~}!1*0I8E{hnziISQxK2aJ#gB4*U2<}RDiuT|Uzcn~+W+Y*_gC9j z#@xP&83W8Tsz?rl{n`w)eHZ$ot$H#FF6bbWwJma;%n17sE8N)-PrEd$u458p@^16-n` ziQO8N1|Syn_3{HzR~OqdDKF%5rD&BCN8+VKK-J$fxO#wsq_ zMhC?e-Mo5L?yAeU6`r>N*sMKaK)X)sk{Sq&T9<6gcdQGxdvz`+uz_9A`r^CS#%n3# zh(^W96;87zcvnDoVdqOOjIcr@0-^3wv9{k@oFu-uA|%;to3nN`4$!r$l+IH16%#<3 z3K~LMJ+C>T5a(?|lK#ZQ5oUOUx+LtP5hNdKPKyblJ$inm%`YR2^gMz%^`2f~bh@eI zWMriE@}^Gp74w8d0#xBl@yR%BTulDX5+F%Xlq1r#wAtWd&V}?|fWqrI7yy2CvG4Xe z46d=_Et-tH2FlN)9qsrG4TIfA7uS@tXwxO=KQ;%)>*;D=OOO)w(T#v=eFEI9hnbY` z7)d!Z!_#S<$t7b23a~`#xz`Y4ywS6&w7>P$ZsJF8HM?X_2FxD7sxP4+${ysSrQK%U z^^$y+X#%+Rq7^DwU1t7NX_jraC|?OVW-Ef@H5QlTELjTuhS0==8W|IcAAxQ|_H>7a zj6b5I)Lw3ur&Hq%DG8Kp9A}JSI;@SC=;4Q;4}gwvsP`9>dN}wLL_im0I_uZVVK?*VHV2z_jZWoooJ@7A z0$qlpfwmRUC%4nAg~6$`JBSyx6lQ8&jWf;e2FvAC5I={0AV@?oU#!OsnvxLTur7z@ z*&?BO;8D8}X!S~tamQPy*XA+s0dEsZr(+KXH<%W+V}BY5mDMe>tqX$0Iz_6N^K zDsfi~%`T@yTgEbf7g`wjp3QcZZY&xl-ro#bSX}y-@mP`gHZM_Pg0>gpzT1vz633TF6FN~ zkJ?iyDTW_y-II|?R2;+4P(T-{A;u+Z{&UBZhtSCwUggdk5UaB?7fwHW>CPwXykp17!R3l`kQo5R#=v##>HhVt8E0?Y!a zGTVcLRgoG5pOWob`-op{>A`L~5zBGOqg6Cp>262}iT#A}Vme*vP(o4`d1gf?nHH8T z6_O(=w^6lAmz|ozq(o36#M=yWx>(j}8l8JvKaN(Y|38%K3P1%xyHTE(FyY7-U*#i4 zDw*3O?DaLj$RLY)GlMJ(LC@&?6ao71v^eygUCODE#~O8CxcCuEs7%ihP&O-Efd)GF zg@2HUWAzumkSBSL+r|9Ndc9KA9&~edRd^a zNjT?1LLA*6$7d`;R4h53LZ{(WoRWoPQAe0>nhptw`e52#1H;ksv@H;Yg-edBrD zeO>T+eB>?%t3Dg$`DInPqHgr{P$?G>ngb<{tfnUPj;e}@>5(g zzGJ{9C1N6JLb#7S3O5Z0oGSY<2n=2N5!gd>D!;XfyD;irTx63$5$O~p2%d$L8FVB3 zjG~W;R){iL+>y%bPm(+;GSHDQr18o`JcyvCk8N7YPUAPyB8K4=X)cMa^LZEprE}BM zEQa)fLuc7adg_`88Dil$3jg*!CcS3CT%~c*^;AHVH##w#Rt@I0yJ@g1RorcP4?y3q=V{MQ~|pK0vF`p5Qbyl zeLKeLqv+mYN_HtZOo`O`CFuSmCtx%!gc!zAcOXoMw8NDRy%+C1Fq!8T&Mkfpx^B3# zy3VH#r+*FSXVm_JDUS-mSx;Q8qAYan2>uj_*v|(_pCGlnOGRk zb@k@ZG}xmye~=0u zgZeW3*H*(EA#FS#zW{IbqkAGrWH|DclW@WZCaE(U2YDX#SA%u?c-Ph93A8jMkJA^- zg=n_|D1yhN%R4H~Y)VHKI3V=5OyEDL{4@#9Sax44{n70!k6SsPRIMQcAb7#isc|Bg zG)($aoJKLwUu~CJ)S+MeW?18@gl_`cD}5LrYzJvyX&;z|n!mKCQ^89RBbfbhkbH4c zUs%@V=Uz)tAB;~In13h7VZ^sCho2}qXz0WJ5v<*{2f9&RKl;l=`AD7N>>pvp3&=Dgkj%i(xGS~-~)MfXo(qo`@JQrrCoMbPHWsO`R< z>|(fUG8GQ-PgV|OGlifV6Odw{gHw>X7ER&8xbe*xOd&o5Jh5Sl@@F9OoEZcf_1A{M zq|fD$-4Gc)h8Dt9M!a;G%LsNXp|OtP)GwwXAg&Ml zjoB`li8CF+V?rR=Y33b1$2DE77q+xN4GHE0bNH*8zku~eQxWo~Q*)FWEI~yYTJl|z zY|>T?8>xbgXl~V3Vewy=uVgR6Q5FWpkefP=RNZd(3(yTfP3KTdobY@MUh=}ol&diP9#=6?}F-np(!@nu4b*;HCJ4ej=u)Vffbx@WJj=xExhKYv0uR!>0r4)6dE5IBTA3q6`+pun2*9`V8gZj(NO) zL`d;I8Xs%Qy%~RB)i*QmoyTpd^!c3QBCeu)`ZM7Ct@AleX_00tXJVmHTzAiSyw2uuQ?`N zW{(1C$!qvN(C$XXI199jj57v2cg62YAn?fEZ4T5G}e>(dONW-JNNqyZ|c?1d8{P??3WYk6vf|bywzHDJrGvN2D7V#+{nd-%%U}D4+ zfd}{6BBeb#g4$L^2U>K5?; z_K^SuzyShsg5d~oXOh+17A{yAz6|i)vYhL;&RCerSG*AKqEl0W zzTB|Rp{gUb6octie8H@z+e>(J?7h*5`lN*4b$f|xnD|l%SOa$dETjX?Q(#0t?gPBx z+O>W%;K88>oZI_w)Exc5E!Tq2S|Gk*_hL4zU0U5gcu`fMHKelCcMa*qo}Wa>d28V+hQ3yP86S&3UuoJ6|+Fo#`j2 z{5AVpLkziPB4#v|BZ@bkh*PS61hr zMtfHA=9F1qgI{tI?QZus>!DAxw45vL`tBQ{E_W_)WPQ&}KPp2U#T?>@%q<7(?@_c_B*U zu*_0xJT+GH0)f^wAO>yP6#BiI1CXTVNymxw^_l?iEmo|BhPkrs`eh=@)^bp}bX^jF zoWJ-&9cyj0)gTK|^>l>XG-|{b!OX7^{GQWmmA*+FRZcKQ+SXK6v3w+>K!k>6N znsOswtsHz;e5BDDCwaoXr36;P#3Go};AgjJ&(dF{wTKexZ;JV&&3m>4FyOQvH3n2qBa;ZsXRBex=PuAzh zNM~-5@6>xMXQFM3&_L=r24 zC2!6&c^Fh*F`6fJdu~(m7?5xj(QK_=7;s#f%cn-&8Ovx&*uXENq8RTy+l|EGXb|E@ z!B3H#t7ZwDV7g{ixq>K?8Y+%o0jj&$ZnKi(uXum@dxMLaU}@w$0NB&+QCh7*=-n$9 zw17M_Qu1lrMt(L@*`Q*kPGgZNqu>?wE$q8>Sv2$60D16q9FN5jFLaxvDfofF7*3VH zg=BK8(oQkLVM4y=U9mwqWckb7*Y)}n>0)z0ut9D945Q*TAS|Z$#z(5hP#;wK(8wsx zXUB*ZnVZUOmTOaa5`=R%<(1mX;!xBgW+l04VB(2m@!yJ8(Nc z&m3>)5ITK3$4eoGP@nxgkc^vCLgOjSd{oq(P-{E4;FQ_86sL7OhCog!Me+<$M zn)^Rk=;|vbQQJ+H1bXC77c;dK6Nn%0RLY|4J|whCYm!6Gy-`U@-6PPKGAWooK;7=k zyOcjifBQqws!eyxel1QK#1Ntje-E{_xgBkw-Q<#tu#@BVQQM~j;INs0;lx5`hNpH6g9{;mWAjkURq zhIs=g)}DWY`e^w+#tlzvD4Z&*zjqBp2#fP#gK7U3?jAsf(M1*G;{vH?3wNBQeq+H+ z);OAQFNYwg)1&uc0~l_}B+O^G+^aNTR#MJRze$J?7^I!MmoswFVL((+1!Q`T0~vB@ zBt)C4w(>E8By$Y(eU(UV0j9V3L!j}J-}W_7)`Uv2zCCvONnfqxe<3{Xy_ zmtO>{Tk7m~SE2Yhh@%2XQ{QoQa(%{35TCaO)Eo0;d}kIr{Epwr zE4ck1+A&gMVP_}Dbw2eB zV3VGcH8=Y}grlBwmCAb8P;vE}z6NM3c3Ox{E5x`taBn&YEmOzu$k8qL^Y_Qz&xcH1 zCmJBqs=D@`6n~oWM5K(Q7+y!y-WO5SY`;EK9g@jr`}zBo_TVn=ReL(avb@_Nid1yJ zT_&a6ahw5PjDPOp_+{M%dV!-b#i=Wre|3R!mNX6ua|@-zdDSHq{R6_bYKWiK9yTU< zCjn)*&C4qo1Q~gjg0q?#6JtsLUshW0bKz*gKBLk0w_ebn1^C1icexKJOr+gY)g?2t}0P9GWbPzzT@u}K$;nA zS1Xe}h~Yu?^*(gr^Ufy7ciX>o_CL%^M^3q#?}72ke;?)xEP5L^eV`TZe|C=r)1*f@ zOf<|g$B|aM9jeEFgMRI#&cs%9p=5K=Dhn>tH z!y{zFZazrr^sx8qJRM=6=G`13Ixa;(g;j3^cVoAUA+Cdk?`$+h?%}|kxra9apulmo zZ4VCv+8WWBka`d=?cvwgb*~%jlxrZd-gQ;HO*<)Pp0f7LdwCR@zt<&oP9Qm*NQdtW zgjexizJEyy7B0!bg8!#7o%?#i{oMZ4hQ1|=0i}w=p$g^49goF9Laz*pKTkAp+SIhb zCPmG|X!q;r^ZnYuH|=>H4Dl(AO6@mMbjdPldn5m2VKl&E8JzzOJ7`OlCZ)9N{}Y zznoWNuiX*m)tUThVs)Asy)6zs*6F}=WbEjJ05OQ)x=9vO3F$j_6tp%$yu9S zQoW$OnZr_#4cs$_C0wmgaz4g!)Rl_@@Xux!E5idzdNDq&zGqkGZ1sc*qNv;bv?|&PZheqJuZJPTOeDtQ5gP;{5E4K>4huXjFG3Fc&%Xcu5~)H;&3Y;d(myGDj@sx>)tB z2+H>7qs22Xe5^^hLrg6#QR`pN>x=|%ivi8I{dG=<+qXx=QSw1$O9~L4Wp=R2O==vK zI+P9^lv{4pB~oW7OU@m8SL9@q3pQ0RqiF!suBxmqtn$$A`Z0jGVTy`rp#j4(xjdbw!qsiS~c@P zlNJfUgvfXxn0YxDc+d&2X>$!0uS)ja3YN#1X!f_*1gF~gQe{^Zl6qzu6%=Ztn%4mO zNPdIwiD@`*xE$i|dvAi}(BWZ7GM-ZY+3{2=1g`(-XVx#w&6_rTKEE~0Jpi*ig)Z!` zqjfApJ6Z_ayJ*J0l-@@k)j5H#cv$`a1lqAKL7f})iV=40=)fSI=%*-K3&sU7@9sve zf9*%{;WSvoo$3m27*x*w6Qov}&2Mt+4PxApbZHfAds5%x$Cmw;D@EJ|&%|?J1|-`@ z?Q7yRLP1~7UVy$F>wTNEsqQfmSyVFxL*p55a}wJoy31W{2|C*HHm@{nEHF(sSge|< zISNcjDmE|#{AIJolAbqbO72y;bBokH*HLMZOd&IE$c@$qEnB*X_0!|pLxesE%zMYDiM)`FJ}hS%}N{Pg=so{b%a-+^@sx*Lxpw% zjeD2(djX;Q&~pR4+G^hA(A~aX5J2DMHxFm<(c*DIEh*OfHt2cHg8(yo_1h?Q_$3(n zUY*lj|9TULtoIl@)eO`*vpr!dP|3o#kt)w<< zvWtq&ArHCmzLKK71+HDsbD98=a$bhkC`?70%<*QZ+vHiky0lE_zbgSlXtlPkgIILU zwXyz66hX;nr=LIIYy)YtkbyVRm=6_HP_8iFNTr^;fdRkcLw?{A74-3kTw!G26A|J) z%F~{Hsimur@*0q1>TO4rFt1q5>+2smFB`;A3_)k8&pT}JvBW^{G5+1cS(y42oYmN9 z>@hyKq-0<5F_%>Ap7n zBj>x+&Sxr4A0Xb}g!tU*efU!QZ+e006fS9Ll===UQcK!r^9=OSUhLrD0nKpCI$pEK z(rryFN3C|9L#Wf4psEIVK2k6nE2y_U9H-~?2=sq^#A!pL3ze?pTEq;PKFOwC;m58l z@#Q%`>m+O_86^t?Ji0z+5cOqNf{@l&%u;}L@3~;X;)*oUwojBG`?GEujei1~Og*2t zSR^8iT8cDj%8QrTjufC>{3)knU}*!}d<-&Wd;Y}8q3KiJ+1(!i?`3(~(uep}^c04D z#>=5;1%&JuuMKip^5#sQwO|Syt7j?T2cXYZ2q;yzBA_svB_mv{1ot z2p1QB&Wk83%biG1E58Ga9TY#In0lW3k2OrWax{a7&;&d4C?Q;wMyn3^9~2DWhA#b!aD=_XA|EMz?-{kaHK&&}g_l!bOX$JYLUwJqV`; zuz<9qGCY({t@M@qxwlVOuKi2yA{BPoNF5i*{LiU)W@E6eipjzBySfSDo8DaY+22hk^Wjw^;+fWLRlb%emLn$m4SCS zb?o53pKoQ`jK=MT0F>g-I=(9wVM*R**cfPtm}cou6|)pchrHlP$5Dc)f7GhJBd`>Y;7lDm(gsQ=p3jC_e+@ULSp{^uVDqepPHXrF`c~ zkV|eNRfhQtrp2`wL~Z>}sqz!Zy27R=Pd?Kj@PTN9{(At}jO}NGU`72spD!Dm;E~pP zGuVA+_Cy-{$^-1*@${7PJ1tuRCQ$iF9h(1){3q)V9I!8)iJVD0e~=Hd-m?svi<3gr zO#qdYR9C5`C(IfU?l(I%wgnZ!<9s&k`NZ?Vt^*Q1}f`82w%^yZ5I6F>MPf8)9TL_|}QFY^>kvg#~HGpj2g()(jb05zOduy|*=rjZqQ^GqPyqR#=}Cb$l9l(okeVY#__ z(JX){=a<~9#4*V`f!~vjOkYOy%V4yXLAL3`a|)U`n$Eq_H$d_c9VAN+zgcjv(3|@@ z#!7Z=vd%KuvutIF>hvMz#+8GT<7r2&)jW{0SUEj#FjX8yA#p-$)*7$$tWvbk1gG3N zHz1it_Hq~mO4m*|DF3sm*L9V=7ciABLb530Cw@VN-zJTu_8X%_)>Pkh3dp9kpb?Pa z;OA*g1?o5R-!NPsl@ctsP}W8}P+2urv*-~q1jB|4f7v#;&ox%|)YbdgU=J_rQtp{vWL=K;|N&V~!nYLuUn+S5jm=FWm zUrCZM&hAwjq^G`Ux{dyYLtkYBNGx3sgX5%P7_B$>WzflA_(LIeF`D9jKjU9QM)kt80O{=)!#=X;k$aCtiDh1#-Ii zH)V|h3{KxF|6>LT?(%BE`gUwW5Q{JjWSeD>Qv;`(=+nV6TYUI;9$tVM2u$}~z{B4< z*Q}+3zxv9)qV+3nkoSTs&H^Ii>dOfA7y?CkkD)t0^#zv4_Ic0`x;KCDtL;6f$2!{L z(peQr(E+3fX$XeARZWXpwnIN6e?FRQyDxA$f9y!m7&x3OOMEf4{o*%`rvAyN89Jh} zi2}3#FQsG_#t}6~U_{?KB~D8h z|57^bhYYYfTO6*%$OiL-k$>|VZkrzub<_(8>$fOBnfOWo6NWNllJ$BC)=^Rk%xBmj z9h7;0&~FkiGAJAjZmEK=p@#feAhIs<9>UU<%miz#KnbjZrq#uZd{SizGqO3C_}9?g zKtn52>;8YD!>z|L7d&=}W1hs-iIaU-pqsm@)5WkAPWK_nLAweVI##&HoVcsjohp_V z(8W@WCUn=2Zdun@FG1M3;s9fLWl)WF!3Ly?+#8Ym`!AEg{pWe2z=hoo={ z3b~&8*dV<$1yu-_`6FXe=#cXJ{YX6w`7KoRBCu-3aXPNOG61dp9xBmMz7g_yt9~jO z=GEoPOINJxpV7*#Ck1mmrzZ6Ed!;c5I>nK+_bdjn7L8l7j+`2|oJtoh4ubW;nD{_y zy$-2mO#(|d_pyzr^wS_!^Z+tU{S6&;gIiw;LM<{20sJbho6o$Ng6Nn`#V;8`=tZqt z-ba6hnE4lkLW<$7ECb-uh(utugKRWjr>v(Z;jmq-b5EB`1EYg^fPj6bb4vk;#z1Ju zS&{=x^jap)zU!`Jn?vY045!0mBmAjc&x>824;4R}HT0a`ExX)cp+tFujJ7^sci>~w zX>YhiqwODlqu+)yXES zw?H0rXMT`Qw`^5;m9mt&8c}RW1Fj+cd6DL^2R)YNOJk=EgW>pE1-c4wj=5_030O}2L z3q2KY0;cdHl-8#;tKwg6Zvc~4V?yI#XRuoeP@b-yd^` zn=!L9sbfpfXj&NJmLuY_5Vt%u>U=;wDriFM=#gk7$X|uLk$PyKB$v?4`mG9N-(cK|PN^vVD|y&me8Q1e$%X1Az%VzWmhGQ%wuHIo$d?rEmaVVsHL*FgC7c&Q-C6ip zoHM|_;c&QH-gw6ZnB-gxS3*xIntRYhHPg5V{sWIs2sW7jW8D-1i(8R5Lj=1lEZQWd z{K7+8IfA>>z<50r22+f#2>#?vZ=+pado`F4UH64qj0O4g=1+z|9*1V1D{YXd@d?n| zik6ljTPm4fE(|UBAEm5A=$8TVfpp)2`n5gM%{3c>$-@{t9k>HR81;f1^YwQ>g5s! zKiPlU0c(op`zelgj~5RX$h+y5$vJZ-Lqd{sUg4=&_X6gqudR=e&3!4nQhc2~n#yAM zZTn2Z*yO1geyA$iU!L2tohbPwgYEp!m?X(=aefo@1-iyrgVX_`{UN{HzA7G5EeAEl z>S0?L%NHmqb&w%ZDFB`YQStOlEJu0C_h^rGr;APE;1kAkvk#`F>k&+@aqybWT94Uc z!#hx7s&nvG*^~j*@8%Tf(5EhD8J~{GKsQy?`WPw1$!oUwW^k~2d`%Ww=H#FxNi*=g zilOJ690i&hW0A@KVu_-Q36S9maPhsiWy3FLj*I^a4FSo32fEe8*Mols)wvm8_>GGb z4NL<^(DoV8a`6`VU=VmL1=E(!oJbb#8%mAg*1>wu>I&5kmLw{(cAq=-|DDSid14?R zi|v;m$JZl8sS6GV+h|7|KUL{}(X$QUu7Y0y6#q>5#hhCaybA{D$I#xx8n95~-7;~P z)8BqGfVJ_;vWugZM+b$|;)hZ-hUsfcRw#itof@BjbmmbQl)gC<;Vn=d~obB@s;qCPykx_J^92W$2U_V=?1^DM)ln83ho;rJ_Jf zBB!GAZ;I#XY-Zt*yhawQyazj0B_Ix!hL}K)ge3EayZvR|vT2PG)Ro83*xsJR*Sx70 z()`j-x^+K-*@sDPxdnicmB8}^GQEU>M`kiF1D{@~E=yXXK03J4&~326T#+3LgFcWFh`||HJTKYh@Pd@ zeQVS+*gZx@SFrs=#{JGV+6T^ zD&>Znax9tF#hP{fI3(yc!l$Tar=CWx5mO zQWsgqfLTrwCWpr|`Nhk=Qp3x@g4nZoTcXL&EVxwKWC)0(9a(N(;W4;SC>Nto_C3VU zKj=gc>ANg`_x)~1p+mT=Y4k)oya!BLlV@%9%JMaRy)-e}@QR6$cZl+*r3f-#4RJGI zy^ykQg#_Nj8wKosY?O`$59P%y4YbXEdZT5T)Iga89b3lZQ+J#(foglfCfGleZ>nvm zTk77mye2?ee;{Goy;`HrqZ$h%CeYrSA%S6j*jGB6!Rs}K_73Bq*PZ7;>wlP=&4K{b z6h39?!}(%c|B6nf%xmHFx?1^3ONJe@ro%Bt+BaND{3nz1KXA;xdORdBzW*aho;+xw zNI4NbeRy(^Qym_Tq}~im3LTrE(SUARqH6F<@@$u1np&$(3`gA}{YeHt9_ z#fncX>GeIO{`EC^G9*eSaP3I9)bvsHC~Oosig$4L9dMhQK8lz4r4gy%sJ#wL)g7ah zbOZ8w=53Pp8NJes2#wC+XjN4;(S82UdQsWIl3RhL%x5nUTQ z&=k*jGc;IR)i>Ob(~M}sf- z-I4)nJ$4AgsKMiu;(96-`e`yL@6kvD?LMvHLS6_XWPcB>{4#&cRbSnOEbG`feK|9Fo8FX^(kDX6243n8;^^S?KQx9HeD)uO`=|vmwUK z!(^dkKpVeqxe0KD1xTv~pN&?B7Cg248{QYMOyr$)Y@+*m@kTGDCXS;5lR*#S0Gx_c zpsaa#R1&=iCXM(V*ghzYc&Y5%-y?yKcRX!r)X8IEPL6ws_-)y!Xh;{EYY||y#S|z1 zxv>K++=jD&_LwH|jn#A~45c}fIO>ZjnLr;$(auTSJZPHao*_Q3qZ+zfv6K0k0;~vc zgmXYvt(?rSN1}Hhn5;xGO>nSxCU~eA^ zuk4B0Tu4J}JPzU;{3lIQ+&MDxPN9x&tlFjpz~uKl5h^R8o{Kg>T7HSuQTk6#yxl<;*@?Qmv0j81f$UXsP1c-}4zamhIe_znwu>;v+P=kPrliRZc}Pny!rHQEyLvuL37Hh?d@Uw` z-oGnOwu{r}@d1d47fbm|bvo_ba@7|TW^%HM45U}*@jYa`lLCjy*PuKxxH?AG9jca_ zS(jH;rJnfG{r0x`yo&1P%gT}3=DTOgFlq$3K$4+nN z>0Juy2GC0j_=9jPqW1$kK?=B%F9+u?Sk>*|LqMXbYVGQhzELzJl&~PLlt`^U$~Nw0?R@!Z-BE(pdNb|+8oLLGEppC6YZkrg?v^v=0fpu&{b|0 zRLnr$;FAcqf@<;5I8xTv_(3P~d|)iybrpX!bhd)1{VuG=FR$Y3M%O-wDh{UF=(gHe zRh+l-5kOvRzKwI3v9QpaK#r-<+H%~OleX`MXfk>t5+Em=kto=r=;YO$UPv1<$Ca4c z+OKh&k?!PMKt*X@?u!HB8f8_Ep`5z|Gw8)@IF^C~9Yn=vlhP^hS~nvh^9D3|uTp@p@;ht`$Al z+GacS7Vos`Oq28H%+JZ2lRKBIoyJA{2D%ryr;2sby9=*d;$hIOj#k$&;4Qz!Cehwv zsEAY?@%Il@=?~qz{L-mteUutDx)-|_$jcQ{jDA_vv;xZOFigsOcmGEZU3Y!Rj>_hX@aY%hN|^F{ch7 zfZ$-AhxT7hF-N(!Cu8s_VK~5Ai}?^a_H@t$a(I*zrCwOv3IWUZBXPmB@mZZ3k8lt( zs76=Wujta^ap%hmy_5nOsY-Bi)0Xm5t1Dp(aR@>^5Tr`7Y^q2Y4pCxceEXMj2)Xn< zH0GKY!WOUReMo+E-JHP6?hB|c&peK1e3dL)^)RoJ@5aYwb$K@!Y;D1Ia&wxJpoKo8)6feb6*h_*BCLn0;9B3^JXdCJPgv(ylF^+1tC_xuc3m{97h>G z=y!O^u3HOHPF^5oC2on>mm>XL3E;2(QsVC8XsrV><>akE>Yj7U8l}GY+K_q&CNC2| z4UVY4_GX?T!JyX*q3i+yOFg%O_W`PmewFeN%02?%Eu^XfX#912lH^~s$JtS zo7PrUmk)?qy(``0#B0nbbxTmUZ0aQz4(kYyLKAqn6? z_`$&(aW!9Eo01HN+u|@pTe}M0k)A%M4fVsJ6JN$(*L$T6-M|f6J#8%GENkyuhT-&X z83%*z-B`<+Q~U$;o@FRR6tU&X667L|WoTnGkH8ovxmyDSx6J6Rw!Yzggh5~3+dr~$(8|)B&lCrj=X_BuHcuF|9faI zWma$?`c zvAkj(bZu91{z6ixzhAK8r8P>|NC;b&%brM>?NsxNleVip{th#>SM%3wI*g3CYX=B9 zDse{kplikh*|%sdKXbeaobb={3V&FG>!H`na9+?9KdU z;UXVK#ZH3>;h0|t$a0It`z%=JE)f6C$*`bnu?0x@V>ia@7>%MzmUORkGkJC_H9n8@ zI)4M?JPK~%uX+0r`KLV^Ps)nWYYF)F+k}H?a?CvIAi{8RF5;+ zK>G#^ojzinJOmOU5fvL_7Idn4)##8Zn8lVgjz}qp&N4JgP6f@!Fac4Dr7v#d7a*}lHH$#+3*O*nx&#Khktk|s zY~Z`?{#W#1ip@21+5h1n=s!G#a<}=tR3p8)K}oXm$mem(WQyI$d6|%^^}dSJqG=@5 zV;61YfQxy5kk>zOj8gFlt`!EC!E|;bzj}l#7~eNyf?mEaNM#zd{F#JFeT_R)zWPZ) zfJ*PN#_Hw?iBevVR=Yi0D<*6Fza6K9BFtbM)8jVrR&&OHwkt71+cqgRIt*=A_+=;; z(*19A`m~$*X?nbv%S$w7&pxQn&DqSkXK!^Xn0EIf#^gtt0<`I?JxWjcOv_q7_m#D%bhT=D9;*JetF`h0<`kmk)|CeQYuAD>8Mv}GLLUy2YBFY_zYs>! z3_bl0z8;*RSU@u?z{Idzp>1D zT7IXSy*0*hBG7Or-&9sU^i_J^aAU9Csq{Uk4v@nbf0x^U)AobozB05+wrsn}5TnnT zoxfnte16<=AIY}erMr~%c(*%Syevl}#JnuYXuz$%TR9Y!elk51VN!cp){AJDb=}R4 zNtlAlo-d99$ngsYX~znqPQRdFUaksxuXq@<)#mv@76D6^69K*s=-mzmp#ic;-S@az z^K}9hzGEFuhaw#sbs{LO6E6K%6G+!@QLc6((vpJD!LZxA#hoIzVLbI(u*1LG!tn?G zJWh(ZmrqE*Dv+PUNYhK9ezf>rUb!vTL?>8^mI3cQy<}B|TER#kn%Z(;&kozt01! z_k?*et>5Nm8Z!)~XGRQ%1N~}Yl--Z;?%3v*a$X&WK$|`kYoNi~m8lX`W-Q?uRJxsa zy>$q3r!Ef+=dK;4HJB%rSFe=lJTCVL`H7uQZReHO0^SKgq(+L~!B4EX1s<`PuYgy1 zYJD6Jt@5R05AELJmg=J&izAb~FQIO`w1b}@TEYOe?E-Ad@-#rha%eJfr&}gN5-!>> zJSa(zR}NKiejsuoH0elTPjA=m?Bq8aZltkSqmaL6IG&Y<6yMJ?n4P4?NBf z)VkgB-Gh%4Xh6KL@mlvYbJ@HW|QYY;Wv$4jv7K3)|*_1u-1Q16~CHjs03D5z{7 z1zM?QX@t681SN{Peh)U&m;=gjB=j{JX2EuF-2MFgyAMJ3uHt@vvRU_;hW>v&iyTVD z$YZ0%?|&?BfZ7F3JrZ!e|30X!rBQtvjk0%A84P>7ExY);r7u0aamDP7Wc)@i(MFec zag=IY3t`*L9PkI1yc!hHhxyL&ahKz&3H$(;e4rIT z;4mlBtnJ5EWFL!#ptuuqR;?4Uihp~6U!5v>r={N-v@#{a=0{3&2(*&&2bIGzgEnPB zsj}z(&_4POlvI-;%_yFqcq$NF1sg$&WF&oIiX8Rs{Sq@_wS3{gJdLbZ<7mdPa;SXs zW8>Lbt?yKWJAuSFbRUcY?xw~+&N6R){@mQ60X8n?T-frquhfH&JzzcoGcB%ce1rpJ z=JG@%O@4$6mczF~!yoJc4Q+o!2`T74KM0XZVc;&V!{-#JJ_wGX6tZ2 zK({b&%KYid8L-H~X$6612ZN>m`b4Zm^#edHQ>hau00$udX9?WZ_N89D#T8?0!-He>v z*vPq6Z){+ww<0Q(<}@mqX>6b!vPbcHx~GwkhhitBEnC0D5c*gn--F6X^!|g(gSzEH z9cj2eCMa$hKw1FfNP{yau2$ZHc+(yX@?FgX7L!#>+2@zfl~!H+sHH%slvF(N4_>Bi zulaxx@G=tS%yke*;$MTDnNqYCKgvl^@yCF0J@T$Yb)Q9p58d#4V{O{WeKaNMl$u!` z7HmK(qd&o_`~zoR*R3F`=RL-^S$QTkjH(}V4;If4Fmr%QJFOOK*aW!e_-MAZ!_;7b z_-Bd6J$5h}+}X#K83)A2!~uKPyEBlF)I5}?k)vt(K7N-F&L2aL z;SrGA-N!FRifdX-SaHo)2l`Xcll)_8*oiiCx^kNicKee`_B4Y$ z9#aOZvch9o#>+Z=99TayK=`@!DJ5GFKC4|bgG|)?6u(31`qunRis}QbB$^H!_mQLL#?A2J7=Hrzm9PHekkPBoKLrWD8Kc^f&nn3Y^iK?d ziMk5U8Wn80=~+(OtmC0QYPmfik#p{|vnfrQrM2rH8ADkMnuX zP4a(B#T5K`-nbHX`1bRBI{?f;?|2))hq@QsF*2s3^}YwBg!wP<1xTB_<`*#bDSJOm z?w;arFnH^+o3%j#sVZmRRsDWy-Mx5=mNy`cW_(eZJ&YH!R6}Xei|S5_0cffQCTkg= z!oGC(i%RD2q~1HUPUT4mDuDoIV^90t*R|1iI>VekbyPlfq*=*Ct}}@j8Dk+Ni*RwZJd) zobp#b2YD?YxCb$7$wAJRDwiffdg@l2fp#6_>jpZ?K_49C(-h@1^b#9@>@XjaYfu8d zat|r{R^vkR090>FK6hAOQN5F0y|2 zP#HL_*MwrW@L#}=Uu)&!53@Z4!WE$UX88F9YI8xD<@Hqf1YD}xuM{rjH^C6>&(uNk z6Dr&Iq|4a~wv!;*QrF;Qf9h=G!lteV!L}weTm^;Ktrr68qECNfZMFxNzOV(&g1F`Kf>ei#7K!P{r@P#g)^<5_AQO0tr@qGC0VPGiA!$+1ype+{SH54{=cY zJ4%y!24&g(hElr$j@I!<__hl!#iO@08Y%eoNBFs+MT-WbumlyBf&*mprBgvo7q;Rb zN0gLgly_7T6tdstmm$M{vDcYNhu=sIw9PH4D3`oqE^oyOm0sZgewX);gse;wf07)b7Fv^UL@7;$;LW#QvQcZiy~Eg zF8oVBSB>q@{x^>y|5n)2KWk%|NjqDKM97srwo2WLo_Z z2mQ*OVbF*j4%zt!-(zq%Ty7JnVlNb7FDkzy$EfWs20gW2+b3eYR~tW??);cLh>agJ z!v!-t=&RsR2|~Ie3_QwIe6VP4S%>NDsZ&0r*yd z9Cl3e_0#tKJ+*z}o+p+l^w84l4^I!InV<4eA=?cN_xK0v#QCknfx1uKrTA^A7ll)q zH8qY#ea2r~xdcT_@n<|@lo;&n9>6v`KU2CKS;9~rO*~vb8bjrMLk;H{XOiH>Lsw!Z zfM8dB&L6iaGz}aX;T?6~=Sm(qpFJ$U{+y$U?9gWai2OAB3#I*mXEJYXP^Qz_-K{TvV3l8#B` zUHS#MVHKMU;K3b}WPlUq+GASD{GlPw;w{~@X$vF@B~teslgP|3r17jhEeOUu(DPV1 zbzS)~-RZl11FTC;pMePZ>}T>^P_Y0uU+Wj@z#C#mqW<_)dUY(2i6bz6{=yQ+ zKxB5j4TtdR&*e&>YMV&TaT$J8dvCCxRRW z)#Qi^VuHrf-(8Y4b$0@k4`mELdNI{(BWFXTK#T85hIrfu4l8Zx*4iSk`y$JP;SW9A zEys#?65I(&@(gA=)txBD8JSdbb3hz<)BONW*fhX~x8MtzIU?JY?N1MXA?pH-Qn-I? zLw)_(GQ}}+8Am?DmoL10eY}6xDGWDJhY=J>uc>C zYX%?4n-mm!o}#wMW;Q~8ydpQnm!AJx_I&RGOlpoSjWJWt*Ahg56~ph`25I8-Z)Ej1 zO$iO9L;E74Xx%rm@M^x1F*IPlSWDl?X|8;Fq1!nC%+gQsf9an>v8xCN10nx38aunb zm5*{g<_AfIZ#8D{II4RiCYAEn<5)3%r+xiLfXn4S3QTrMh9}Uxaz#I-p0YmIK4VQjKy-GG{uUsoh&eaeFy?*53X8wzQhDDvVi2uce*z4}n+5J< z{L8Xr^B+NX$(sa9<o(71h;;t}|sehE~%>B&-+S*pc%#RbS0#eJR$_Na% z8k@r$H1eeEU9^l6sVgx6n97w^%P+gQY~>aSN!2G47phM#pPD?j{>)x33EF>w&pne~ zmJSW}*HbJnwPYqFQ_W9uDf@pCq?5}FU+;?GfPjWk@nN+3Qzw5!??r*}mRY5n26&F= zp2emwIg3;Go>Q`@_MH-#P44P|G-})%?Hg2j1=e-d^8V@2oIYs@=F@@j8BIO^MxXwb z(^^Aqlxmg7(#g|_A~k^K=FfgvG`>gn0pkdIK0*0$Hp#b7!E*-H+>tVr_WH#;tX`$$ zBt1wa0#`ZQZzzopjpH(+XjBk@gz7=+xCCZ-d*_;*^hmGP2S-!L->getvBzH6&)N~7 zSoMt4j0Qwge~?pY!Wi>ZZRPQb&~>`}=)0e_ZZu3HGQpCJ{)K~Decj~~?^w=jCHFai zd01Pk%MQPp`z}r8kjm5{XuQDd=Jx&6hh+g9oZ zT8#TA_iBH^Hnd&;(dL0usB?)ik7oZW8Cmx~QbMTpQuI%D{wmS7y39ALzC>vz?~i9j zkK>%tO@-G3SN@z+5T~UFFbPrC%5>{*5@(@mfcT#XbbIso5Ca|lO#)}vZ;1tJEl&6Z za4>rWlA?3PVFEh6$PF2i7a^g&|G%6u1K7bM5jyjH2Dj_cYU84(^Xb5_1`5&}AdYw4 zY@ZZDd9fbLfKfS$CU|r=V?YTiG%SEtK#xB9jCPD4#qbH9gfVty;aj1@+EfH^RKrsG zt}@Wi4xW)mQk#m&eMdxCIQ?}-mR$1{!Jtb1kvKx#i;i^xD4`gZHFk&CPd)I5v>G6$ ziRb@hY9>YfsV(RkXzp2`C7 zY;df?MBrSCo+!0^8mMW~?)Xb?ukJ5xo}ze1FEtti>CeC9yBHClzZzK2D@}v>D=IoKhm2f0};0LnnvQsfT>ronD* zBDivs;^?x$ZUL6f4j5wv;&Suys?8f$%6GO6c28G#)Ad4RoOL-ns%bf1HaYWQ9=gO= zZk^vUf~YTir4n=jh@!U~P*ECdH5uo?Hc-MLbq`0q6YVEbV6fWDp{0KA5VU!Ve3k6| zOHLTvU%`H4^LGmt6^N4KiEi@xyZI|*jCB(RL}wj?8L`Ba)K-5t^HrgP!Whby9%~ZW z>ygRr|0_AbUO2z_LO?cj_BE8bop6h23~&oB7y_wU2S%JrLEuYuK`7J$OSDmeZe9&7 z-=<@*SBWxjN1&U7aQh9wqS@OZhWS>YJXA*`m__;T8?B02TRHrsGh#O&uo*sMEy4mQTV+|-{DQaAZR_TEY&zHC2KK( zt=MJ@qfusAXhrj}mRc8>psO)DmR~@V6SBF@X1A&i8qUPyi>?d|IzO3Z16UqI?f>4S z57Ku|HsgZ|Az1h$6_ zD7Vfx(_&*EB?WBV3_8hx=|<=3v>_B4tSt*=$j5cUoM2gAO&mJ`I-qr5Jq$jSjZ?rHJU-F4f2_-rA!D9$hL|TW>vz>4rlWc9PczVq zA#NdQ6jJ9{X8~D5<)U1nZsC-!S3>X$Xn&}LDxbWx93`+9K=HE&3-^2o)!rPON`+@c zN3%`I4V8qs1-hM$83S5Gd&ArUX7Kb`ed<;rb=RUP+bwqR@hV84M#J{C9xxB)&_QEpyFaK6^07tcgV z0Bq7^6_LzE3l))D7T(XzF~%uZEZ5}^E8{V-=$ag4Hx3|Ea&d+kDs)DpWeZ?}#f$^^ zUYQ2*_U<^0zJ2~~3ovoFCi&8WRUuON6z-l8G=*M?(ITDln`!k|Xsj3sIgVKOT(x7- zD~H5EtXuGZOHjfoxd0O!tV-9(iPA6+-IbDmB5uN>)=Uo;gmCg&nPy5c^OmX*x_d1qiA{~US0+CSkuV41he|a-%~gY z<~ZHbCU?3oQ6Iol$^0@v640^a%kVi1SEKgl;c7j>B>|7UES%xcYTo9OfZkdJVyE*~ zg!o5YZkC3^JBHd+h|w}Ya?2+{%RSbbA+x(4)b1q-^7QKdKuJ)Y;P&t(e2|C&Z$Fx? z#rvUmI>1qAnqu*$!|q_wV1L;raa6iHJj&cxxm8^-idr^?3Uelt)7IHrDNyy?Q0&JJLLW9S2RI+ugFziUy%7P;3Hv z*X`y!u=jb;0)D*BY;5qzlVK%IhKj#5GgziRUtslcZCmY;i|Bscm`<%XN1#QpHCcYA zDL7FzvE~5Sp}KY&Hn;N{|FM*pBrleq(5{R?*>Fu zJ+^;goZt{XO-^q}mMaGv1GC*?0MwPcvwFsr$?l8Q|L%A&gG{7!_}XnKLgS79xw+QfAuxl#7e4vR=fW>AaL?2*_YCm2RO`Nd#}+g zU5FK1nw2QY`cyafp@8oMsm(OVOzX`)diJ$zMnoo6KW6i#FH_x2yzxnsHO~$XIpr=J ztxl7evOP@>*`^N+41NiwlWDT$kO5+(yaGqR^AmvNMyJb?b-Zduzu}Bk=bbT*re_A0 z`S|r2Qd6!&6XDyKz@R>uTFU{*-7#{ZWW2wQxyZ?IGZ(k>V}-}`OAEFXthihynp%5P zN5|XgREDf}W;@!`L5R-I3tMHQl>yA#RZGgF~&63rZ3kEe++y@oi2eTyNLE;BF z+9zT9*w822y-K~`wuIyySj47Ek};CE)%oFwsm|3`^vUIn&5?Abd$D`0b^5&G0qg>T zLn>FXx~-OzM&@eC=6G?L{-3h*id=a#jW49+iuL@F*cg4yyEeH-k$H$)u&vWnpM5+z zAA^u?@es+E>RwZ>QQ4`1^yzhW?f|zxkv;^ZuvD|QZvZ;MaPRk|5U94Vz=Q&-)v}?W zug2+1%}6MPd3OYb(Z3GG@kb!=0eY@13%-ktw)MG5T&OI8#zD^ceB-Yo$lFoLFo}n( ziCT+h4mA&x7sl0MZ8|>jr(v=QSODF&HVtv;vPiCInv$Vq1x|v4s)oz)+NKm+^Cv?k zZtrl3=?90q843?wZjR(=2{WR%^qF8Bc&{U3>|2m(q@5$=*Y}KY&s49s?vT5HGDpe} zThgL~8-9h>+0v2P5gL({q#CNKS=B#zX&ULC$xXjRY8sQGt0ZyzLz&20LFo|4hCIm9 z0#7PrD75{S;~YjEqvUL?jZwq7B&$CeMr#SrbaI^wolHwc%loT-)ds58Xm>tGsi?>d zIyKtOU`d~5NUb(sX7G2wXsvX`dD@<~i(+tAzpv!wJ!n$yf7rsOBIK1cXR-UsgW~Dv z811glt3D}htlQ)h)DQ(z=A6OUSsUpn_lMX^%KF9u}1=LNf-9l_pm z7~FDEcy7=)e(pFoBQznJl18^=4CW8xslyxN#0OPSIH_PM7L8m4*FdQ-5O zPEU|Kz^WKaWAo)7y>Fv+-mxs%K5~-$Xevs6Zwj^o0GY@M&nXm-Szx*cjzkM$Z z3#HN1ZJg<%^^J0N4hT1`Lm@WN^;|r!Ev_apR15XjHQ9Z-W6??ez}L?vDr@}$dTmdp z2~$IJ+TsnO(ao}}U6$0;qESi1L^ zGpxS)S3Y%nq5$7o>onBVhstj&Tk zsCQPu{3-HuT~nlXZW-l-Mwtt!`nXw8<=;C+UQ$~n`2XH}L#)&@MHT`y0u!lqe|Q90 zp7GJU^^Ab8xX_)f_6E~anlF@&5np%LyKcSB*i&P3_6bV^h=_?$8<@Ub&-m%sbzL4D zROkgj`k(j+$XPghaW9JP%vgnE*V?{WGxVB68h(RZnRA+!g-n3R5wC%g()0l9JQi%~ zn*gDygG7F<$!3O#N`D^BXQiqngZ{_WQSF;oDh#8^RyCN5!*hqD=2C03(Gb`Vxr4D~ z26@Ls7^!QzD4g&3xjbPm|Rr~TH+gFrQb4>c|X=EUAx*J;DV5CvKZ9hzhK20 zaC_Hde`~!nNG+j0@wn~e4Ai_#XHew>VF(_({q$hORT+dGos?Dx&n-1&no0$S118Xw zg|Z8PFGIidL$e?4!*8fZhzUdv<%B{#<#=_Zu3PEzh3X@Fr32P>2potVUbk@CCSimk z9?E*tpF?C^JQk>}NWP^oGbSEzwdipB^iA_FLzwE0?&E0AuOtJTeqrMRdu$rKMqEFDJQJy%l8 z+~>7evXBBF~d$2l_cq!W-0Qa_>-En_ zqN(#`XR{SX#npjEx^})>$WZ_brP)SktEHj_u+9I>cMEKDBBM+i#=?lpdyzaF(Qna~ zVZeeZ6D7m|{mdx-&WqfO)oWo9J4QnlU+m_hl#$J~$INi5dLul@mbG~UBt!sv*OZ`k zJPNaniido4G)?vPh-8Xcpk;dDY7iAn6BbCq;hRN+`>S353y8~S8QI_XLG^QyBtLFcE$t;^qDrcJ(Pk0=>7I&irNkd%#KSW zH`)1Z90KKiVg3UqCq5~#3d&n3yD|59^nf=kbSu5Bt|te>IOjsN_HSPqV+_uMV{29E zT;MFEJWxx!=Ao!8`evc*ZvYh0l`BQjleI|hsbG=B+TQo=adgun2@H*k+&R26iu-JC zhEvjF?Jq#2q}I_M05KLzVTys&tooh?zxw=yey0WG>D*IfY=rkxslLTDG2P~Gys&KJ zChc6#9S7gVT~?bP^;{}z4^`E88nr}nyFG2_rS`;tlDKY({AcDp>9%>CJF}`kTu_4P z`z5j}&n}VdPUrsy(050fX$)phXubEg%=$T5{HL9Nr$o~BPSE`RSgLJbm>`UVw~`LS z(Z@RMmEHVd6rfY@xH!b-=3_7v|EW^n{LM$U{&1>W1(D7li)FhgvKl!{w5OjGH;smX#oHfJs+g^{~lQ8=3!3n zGIuV&dCU*)^+oe;xr7vmqaoKwg$7vbu~@x?W;BZT%>X}YO#&*Qb-4s~pIVrfRlJ77 z$*@8K0u-3F>304K`MjbPGP~e2v?mP=-wo@;cM1C{nf8r=ywrCq+!m~HC9=}6LkV)6 z0LZ;!pG8`w8g25jmGXgT%K?ULbK2m-Qnj&k!zOINa;@g7`_`OIvH!y8wktnSLjD5k z+zz{foI_3nm=A8zm`r5tM0+LgGWn}LThP5}OtCm<`(;KXW(Re*8kRlHD%IO1yUYDu$dY5hG%^A1PBOIEWS1JR%E{RK0IMsUE#h| zzQ!$T9jU6pA4BmsrUeFWnp~zmG5{RWvavvhV%q5xyFNzO#Etfa58_^M)>>(pOo)eP zM#aq7u=?*tb61c3u?sDbL$;>F=KR!J*|$(O8A9pnBv&a|=bpv)x)wl{=3k=1s64?Q zNlP|Dx9a#hcOc$;PYd4sLLUHi*2@#?dJF`d+J_856nBNRqaoitmY!cPkr6gPS@i3A zt@58nMfu@z_51t*78{B!_W9))2Df(@IrW0#l(I$(gfN9Xp57E>`i&1k{;u(sG?S%l z)3mY`D|FeiqJk(?%BP{rwDSoM7kx$La`l+daXIg53`r$xg?4-y4Pgy7h>q`k!lL)G zp;Upsy%GuOO=?SV4FB$lj4E403i=+T+TRw-qE^XKriTVE;b zsiqFmHcBIf?LzEV0#KL# z1kQb1nJ-sDol26RqZD|L?B{|4$hk@09Z0qqZ7hex&caRFup)(6$?TR*at%ILLrS5i z03~q8CV5?*^Uq|n&^dl zg_cxp)h0g^DfhZm0A*L;@3wE1r^RTu=B?Uk1xn#geDb!u)Sv*>uTO@>#CvjA7Jz)^0Ra zsk~Q9;0rR9OTk}INV1(YK!WiqEi=2gPvbC$mMnJiIxU)s89>?9vZmv=0Obc8PW?E; z+&YZfKY+ryK4@wB2Pgy8hmq<=ZkJu^^M3RgcyvhOh~fye+PT=H&D&*xIDP`k9*U~5 zlu_>C^@E8A_rM&7g2vFH`Y`|hBUlYREH2Be^yAzNC;hNPuC8|`HK&>F;V;in^hAJni$3 z3eJ3+3JVcPblYaw9`!s1~ATi-teSRNsc{`TGx8`$rels zPNMy@EP-_B8rgC{nm|2qD=4k!u8~`+`_Ti={k1Z3DZW0;2{3%P5LsZj?2`4w=xQi>0y~Ws~o?(S4En7FMP% zz8JVH>rL|dI2PDOx&7#_Vh2~W5Fx;lY)3MFwe~x??*imzzbzn~UcE`;0QW<52{Q*7 zZiU{V{2UoM<;Ia7zH%vsk|H+#rezU%g^T`+p@7*k~ zkWDG8uN!2e%p3rcN)l6J=)zm%YuhH;ARD_Z&IFP}iXWZJk2cZi+x={&x#e5>vFeQ> z>I^l|xn3wocikdo6HqNss@jUam-$wC!0@_EL;G$pl8!+FBEjSvItOYgUw5lS__pxi z(1yiPiTdUkO*P*evTe|XLc67Z?$eUumqGcr$rGJ(n|rBx)}4(2?%*5YD*1p*Z{p)| z3yGl!xK)_h7vC;lRC&9civ zfEe}eE-m$+N|lFV^7|rI&E;+nEv?libd!NFXLZu%TKO>VT91$!>Bm|*7I@}xZiB^0 zub?K-HAwR6+zZrG@@Y&SPDkow{UBaO*rr0GUb(An&_uC!WrL&PxkGki(bX`~ZQTmO zW62%zh55>=mjPBUTM}*hi^`$iOEGYdY>czB=fr^dckXWp7|nMANj=99jy_Pmd@_t- zG}HHm_1b`b0yRBk%cckG<(vKoz}G%k@L;-z67W7FK_%|`7&Fx)!|WWJ!9NAyF&csn z)pyF?%$*=!qgJ~5AMrAG%~oS3U52OaC1ml<-y}QwV?|RGURLpLDOK4HTJMuO0+qv` zECQfGp?us5gV|S%Y1~rPOur0N5faA@;I6Mzl&_wHRyD{n$Ssc@Ma>PeN?`9if@%+| zjiddf@~jWih_cvZDkQB`{Mt2}+J^y}b%@*&09RpZP`eJTsfwq~Mw)eFh}En}eSOT!)LB)=N7iJ#-o!`An5*yX)Zn)d+ zkt}?MT0jssOQO5(*6NYb61+dv|J_e(4xo&Cun0BwM87>oR4?!LM)_WzrtGqNBFZ^j=U(@Dg zRpn^$sFx!kxyGjkGb#-xd@e8*lVA41{vk-RGXlSAm&DdAu8QXiX!B zO1C-V8mbb&h`(Q68aP#u0s95m`<3_0HNiDHiT2#DO+6;6{01uU_e))imk~!-?~Afg z&ij4=0SKG2co>tI|0htK&NXPU4nue-EohWQ>T^gH zCK|n2uUk6LqTly+qnvIh8r?(Go zm(U8-9dwz92<{)`-Rm&~I@6?e?)E`Y3F%QV75_uRJL`~De-){J2{JftC{_QAu#)pc zOoSfcbQ~-&`~Q@D#d!qnQmVun4?l@qCvZwg)ZtJ}g zYC$<41GaeegAy_^$sR#h=lk-G?|jfblot->TI*9&3|eSF`y9aJt`xgt<4Q1)R&MO) z026zz=xA{p?R`kg4Tl&#w)tf%H}cEV4izjd%qNG&#cF+^(wCtDaP0X6i@9&ipwgd~ z`_X>tdIMSf&eh5(cksm>fR(qy{Hb5=6ECO$ln)E4dLXWAyleBUItQ;BNL_d892L z8}U#kM!RU&UU_hhd!<`n^pWy@O+@VIc{vGcBngplzJ4&oPrb$5eUcE>?c?8tdIk6N zSQ3T1N#6aE4CbCe8|d^Tn7qxdgUoo>Nk6q;>ua{nRR5E^75s4c-P#M5FNduE{PMMW zALQJ_ut=!*mnFg>b5*5=udg(p!>A)3XqG40^flo0r<%310y-sRA46kW4T! z$c#QE-*@~eiOI@!8}4$TmyCT{UN6H5?U@+e-uASty~d%@ATNwH8pwH3z<4_Qw8SFJ z+u#@C697A!XXM4zeFxFe_0MP>Pe=`l%JVzV$m=TlA!00rKP!QisZ}}SfTApXR!)=d z8_=n^`&lhhsf>tfh_+bh*t6OL`WqTMJS-MW z!<_^2P2E+1b)iQIm$?J7gjmbBIyM?`zXOsc6b(Vo;zj%cU&uo04h>3e$VcBb=p`+& zR&r+fFG+=5`I37D|Kbet*6cvX>uGouJZSF*s6y+$2tGFJaEdvo z1(=ETbrnOYIIXOho!P=v-C)A$phO^?FvgUK)gj{(1Tk+w=`9 zR$ei`e`d+vPwRgOveJw;S>px6j49Uhl|+b9OZuGNNUd$My>d?iYTasuC;2I$gSCS- zcYTD;6@)z-w7P}?Odh%}g0X{2&664*Gz8lxPnkDq?sV_`>4kG-d%#bSA#;waz)^Gh zXEwn zC2295C7INGz#JGbd9$_~d4uiw7UO>d zv+wj};wUQnHE|p<%{uBtK{nRci z!ly&R9;nr(3*0*A5s{AMTWtRzn>IQ2u|h9?b7+iIt*xu%O+z_hq-%-EYLo zejz;&S{2&iJQkxMcoam^lkdykd-;90XtmB^hd&cAW&Nt>KZj+~uHVrC`~7p#dn$bz zg<;Pyl#09d$LfiUz~zU>2h*<~NGxe<2iTw|3$W7dC6H_LekgASlUD4Z7eL>5{3f$N zP-iIu6-2cYTd}IQQ4R79P==PWQLgGnBWEYje z6Y9l}bTCI2!b=9=^*;YZi!YzZ(1sUKs||F9)fSJP7EB7|Fx%CG z`B?L(TL0!#lK=^6L#xH;P;R8E)g={{lC-M($pPPvc$<}K$4B@EmM+uD9Ka)T64`bG zlD@Z(YDe%`O@ezf## zR3Ldjmq!RBJ@B!gYgZ5U{!#!X4y zj5LXMOoCzJRnJ*?q|43Mo@=d1rYUSMC)q&hCIH^@Gr;0HHc6(|uFIm+=-=I1yq$&f z0TnwBQRF2iT8AW>U{>VLDa_d_Cyio&h2=;7i$k3@w3pyWT1}Fa8f9J%INg zO5c3Rhf>2=?m~6fMPCVG5^f_&^yydf`f*>Gs%OGaU$3o7zeUmFv;z${>uXs^tlr=J zAmpm-j~jTd0X>~@^xfC;Hd(F`p7aj#d?P{4F$I#aUB$k(!1d*qYpF~3C}4*bo9a9{ zikiPba_FgoGtkVTunUpL$SQBnsQ9@5LjZuxIuhDYpfCRZx1aE4E~eby!wcx&-^v-> z`%K($)d8HxY+ZfU*LEZX-f=G}P~mqPN_$~_(@pX9dqWuF2>HHPI{j{BAX&fHjvjzN z(L{yfMe+AqBJ8Hz&PaW{TodQVI|oz8@3q0<8c2!6E~B%zh3Rtvo|(Z#3l=WgTCMxR zJx9Hc?jK~^!&e}Wiksn~dex8eq7My?AE#geW($M)S8B3u#HP{}zv4`KZ;R7PrjxSs z5W&OgcL#*jtG5W(0^&0hXwOMma=1)oGiPA53VnJ~UZ^riX(&K5V#3>S-pu$(o3W3j zy5pgVG+{)f-QwN^Sw5W^PffL{@Ja}VCA@8Dw8@fHv2kSuP=xZja=IhM2W)pfTETrP zJp_4o%%C5HrLfs;lfi6~$US7$#p>(0^puQ9P;miqc>_|;f1Q#y$)`Bf>Vs(TX$c1K zq!~l=PiytnObn|75Otf;hMBNF%viraTbFFxb2J^!veQAf>pCqT*1ia45B3k!BPpXt zOE_3>aTuti>%ive!`W8%xR>j)c9ueAI?z$)jy+%F8ye)R@*p z!`pGum%Vb#b^C^7QqHqMfcO0@TLe8z?h$gm#sW4aF(5~Lo`IA6%K73-*f`#>gN4R#yxYnk0%Zj4}nzUwMUwb}MiK zADy2Ku*VO-NJyWs9zM_Z|7clMId$#@g-Aw_+5A|{r#&u7(K4>{~SCT zK7fNc@+#HFhThOHy6!jG0&sqcrME|5)_CwYd45F>l`sAbXUQ2)1#>dM)&e(+&LY@#0m7DuoT8=*?jR$lpjCPe{8gL>CLSk3`p+%Q*#KOX-hr(`S?;qMB z_g|PL=iePY5WWc=er$>>(b+n+#s_B9e@fNM=96pxl=$4T695D@$$RckEx2V;?>vLY zl69U2Qp+3Q2?B`cPmK#;SD*2hB+P1z1ISSd-T0RTA^0g}(_h7M2(n1;Sp>0ilt{OaP*D228ZGU>nZ|GnMiJO zs?&mL+_>Oi+BY1?uh0EF{Hzs%f}C6Y-0&OjQ%cY#oK{+4@Cfavn3_tHymZ9i;fM5K{PK=?kFb|@Aig34|k*>R5(v90p6faKcsXyMh_2* zfNg-FuLb4UWk&f!Hoj_J>#w(LU=t8o@B9=vTBEGh+|3|o_VnPK-W3SJgpP}mCK*lg zadr7-H{s$E)VGzGJlqiQx!V9d&PrdXw#I;lT>Ds@FI7*o>v$-3wPqFGShGjqa`{yH zbWk!~Y?hV2XBwmf?=#CQ=kkjkGY_my2&13O+Do}PIg<(}N=#vls$PQy^R;{(jfnAR zXy4T83ryiUES?PYAJ1Am)7AfWx-q3Lw#pA%uCyi4eyiM9?jb;on>V?g4mP`2%cIYh z4q&V}%Krt6mPPX?*kp<4#)l?T#WK|Qzz!N{hfS^%dj{Brk-=f~g3ZH1B`n_QYxnSV zZaCtahGujMACFB5shB3F!kB6M-7W^Nb{fH&tX>;|vSB7nJWtp?f*#1Err%vI$Z7dP zc45Aa&&df7qQz=2#F*Dx5@n(}4!HnkkdFJ+k4y5FCY*mP?e#B*fJg1~0*5LB%cRnc z8!`FopE_420h8Rk9M7RF$ipNVZjE^V1j6XWAP?shxe2h|XzW72;%tzI&s|8#W2=<{ zpZU&=2)+efgF1*F2=*{km;G;#7$8s4@i|bhzXi)WJ8xmzXjF*2e@x1v8(RG=Mr0j& z4N@KA;RZ6?KB61iLqKZ_@kmn+=H+JB5c>PCSet)ecCR$AOF|{iR)=~Pb9ywA4_fjK zlW+IgkG5}4m`A)&pf;MGFq#TaCL1i1Hm(G;LI3L9U(n$=*x@nJJAo#CrcmeP83qj5 z!)4#P!aeC~ebv2WO`*%fJ)!C!df(MbFNe#W>9a*QnIa@m#YcEJ|0wze~qtuCPH3vO;C6;qn;^5wfYbvK&43!~&N4&54*N3 zRb{KNr1duk(O@9MU&piqZkLdMj?s{m10}-vkf}T27iUpDnu}n}%8#nPba`@pb9rq2 zJ2DLFh?PUSk2gg#{H9=_`fi*&ST2YWl}!!t+8seB zb^*lY^I%k`-Yx3j< zi&8c2p8|p`oknXC_$tUJBFzbw#PZS#$P$+F!>+mjl(j27Pc>zV2xYB6n=x`9L-SU{r$2jt+JQdD+29K=S?r)``2HN8tkX_eP*4)oskZ61a z)R!IFFP8oRgh9?dc*@UuBorL7LQUfbk6aJtzG#LVHKp1Zl{61Fz?aDWbR7zCvkpOD zrt|;tyV@8D&h`pgih?B#ti*E_VFslEc2UKOzDX^U*Bi5g6X?QZj|>lC2|wL1p6*MQ zozT0{KdRvg5E7}qBM!6@Ltvoa=Oyw&AAp@hEhtp#C?Y5 zS3iQ%aYMQU;hZ;3nY2G$K9adc`~5>4bRu1gUe7^m$)4e1k_4Cys` zf5TP}_x<_{VcD|biWZymXmJ(VCL6LnoUqi~ZH=X^IRKjP&-TdpW3rNn7)I?Cs0z;)&YCON*|sMZdMy_MG`s!wFr&%4Xj(9iah1&bV>=vv>%y#riDBR#!7i3Uw zJb1>%3;PTl^{H^{<4m%eXYhR>r2ZR-Utlla4iWN zE+-H}VjEw;_-yS638UF_Y!m3f2-yZ5BRnN)RW~USWba5%s``flQZ%G^Lg=B9l2Nve z^e~RvHOezf{Q}rqEYubYl9*qBNq>=57t9rp0`Cr}NFVvoY4+D=;5@U+S(Jh}w9XW0 za$~#cJ<>U&J%Tr|p&tX*XaYYja01Ff?TRR5hUiHy(FzDd^Un=UTfSOtwYc?oq*q46ren!R$v<^ckO&aDvCuAL%F zvt^2B1mDI*)U*nAngEBG>N|!igKv1m47pIAPv<-6>aM&{>eParSWO*Q0xaVl<1kXK zF~&w$-{6cSO|pz$l>WS_}$IQzdx0hJt_9`ergh^Hka0b+3myEz3)n zU$zqGj$HMgsUAiXdvl>WRC^#&-;!sidKU1N!X&{7diO2?eq+(B? zKKIC*p#^h#=&D5jph<n=(O2d*06+{?r}|_?XzV|_LtQ8tL=W&FS6KZ2;Q1N_s@}iUhrt( zaH^OiFTC?3$XPYc@vtUQ$#qzF_70eh2NcS)0i4OHYMTKQ6k=znR$FqU4NDeH9(2!&tYb1(K(g>#T5~-%PiE6M~Df-UByIyFGpW^oL4f-?vC)`)UzM`{aUY< zEXmY3PMR&Bf{J8I?b#L+(cl1?YIc!itNk|BHx|k31}9F5-1!IE zDv&J?yp8q=iG|d-240hCbLFoKKF|m*D6&?;oMhA1O;szk3cdGPSOh;lSMH&`7D^7y z8^NjleXd7&ALkecPoWv} zx_sl-0qDNUMr4Q`Pr^;iHW{7gJ;NQ`RXUv)9ntWx)lNYd%N{)aS?V}C9SpC`)fY=- zEqV(u@|&Iy=cX|9=)s(yl^Pg?#?rLXO#>a^h}*Y?%h0NhU7)?YK9T6z3*_@l7kGG9 z+oJui&n2FrYISm_1--56ljl1ZqaC9_ZXpF^OwQ1b+J1%X_ZG_% zseBCt-=98=g^k-{dE>>CpnL^~Tq~WlL)tI@Qmu@*)H6msC(f1FVrSo_9?{+#PPwaq zV!7(-Bs-nCl#eB)DuN6VXxw85bsDB4J&Pi_{8XYS zR1uXFL_aK%ON1W=MiY;Ko197r9|$oV|>De^sf?mEs(wfmAyo&5HR^Ur1rr-i zz|ZiJQmv-#0P6Vvo|OQwEt93|TIQLlog_B< z9+jyr7izWh?Sur%x=c&oAS?L0E6(CBUbcKW-)Yqa3;Gzu5%l6^@*SOL0Howm$!V zOQ(z0$hWi{1E6o$8hI0V6sUS0gY4qF+E0KH$sy}nkKq3@sdRNhER9_&s}sym?pQa? z!Y>scP36#vj2eb_Yb644DyfUy20(H{)&LORBXLc*z%DwhD5Q%=rE))qyAQC!0Qh@@9BnOI0Ws8B_dX-g%eEIsrdgoKh~d0G z_-}m!7u7xiio_jb0!*fXOfEnMpc}n5&_dpf;J$YJnW$N`v_kH+vcki%9o;wBqZ+;n zvD;MbUk38iww1C8dMZ50eEE|JFBL3=5KJF7K+aQbVV_7$=bHUuK*X!mqTG7lI66=% zAKo-57^dbACs@=I3Naz==}UQ`f~QSI3pdI-Qb4YTw^FTi|5l{TwVQqAmB&!gbVH2x z5*Sw9Sc_Sg{T}g%=vo24+dhoy~X??`^ki>R{MSO}A9Fp37y zQx(jn?Ys0*RC~FsY_|7yu8T(2(;>=@aEXXRmv1iAItw?f+bWlBFN=$9D2*`C=UECY zyhYX(AE2#WA(7?*J(?tH8xCCA{w;ELaPv{`&^hS4Ewbt{hnqrqS9k*WYBQ+hJ(vog z+Yiq9+AHKYSPrgaa17L;uJB~4Wdi>vG+C#B+0oSjEQJop>HIkkad)dHg+FR+z2k5M zoj3!y|Lt2PP{4sRmEPDYA(Y1*%_ktOV%;YHxoBI&aGJMGjvX|&La1UEWFk6N#901^ zB(;B)VH6$PCY%5CHqS8aQP=zgWzY&sS`bxSja2#G#prErx>7r)ZbB^T%20Mc+D|&K z^e}B>tlRlfKglGu(1>5Dh z0Jk@l_HCC-YuoP0;jJ1U9#1)IQQ?liaWGG1u>R9%$qreO5Yit?+gD314`+xJVhYO_ zJ7l%>>_F?%TkY4^j33(1KcKnQa(3l@0%V(g4{8(pm66))yWy5_yyItKUt#qP=9qD| z+OtMo5RMl(6=b??bYG2Dh|ML}?}MXg$vvRoPj3lE&*lAi|G*iW%C(jY=cCSRWLNt< z2&F}*E!{zd6=pvkRp{P_)Lonq-e5q7{_$(%(lE`yWhl`6&VSqc%#aot=CDp$*7EqPtlj`_$|yYprTC9WQx1q zvq(Ls>TM423yJ_Ne*St{7`CbCs6#HRKUa3Gj!7hYe4ySpZu{9cq@l$e6@*e4Iu)B% zu7Glcb|w8pwbyTuomIM5;Gc#fNT`rw%m)DB)E4M1FV~t? z9k+Vemqef1K(^yXCwC^HS~G;MdK6XWj@z`byAhH#%(Z>vHhybR@5`d<5AAW#8}zNO z-69m3Z+)X1f-OPRcnR`bug7Dk?^-Dxv@}J~iKB+wJ)#m4wk131fz&t~rR?g1-8jZW{-FZ@R!gm}Hev|PU2T){_~xV}I@j*fXEqSh%U8c- zj|2Awba03~)kBW&qFq4!Jx?=wkNuGz>f1@6aOV0hAog2NK3m zdcC9%HTR*YzqnpjT~l_{aC)F#c9?YLl_JGa{DcpmSyVIx%;}s!P?u8flrs#YcOcSQ z60PRqs`CDsb!`PSshhtELo@j`RcH+lU~Eh78o0Lnb*JQA1yw1j^i$CweSJ^ZEl;dw zx5OzPOw{HK1{ZF(R_`tsrr*AYU}tbqgSITP(AtoosqPbBpriEA+lC0I10@R{r%`Q(rN?wM;B@DRNY`Fq$S>QFc!?nrYJA^7sAr0>#_=>;($uD+G>dkT320)&Rw*Bgvd2 z+8016ySWm&=JEG|D;ZJoy%JzMkH#lb`MqKKoQ2Vz&RZkG>9^5Fe#11X4Kv6{v3K zMJoI8W5<0mY~pslcMe$GFWoBG0=vFCnSXKgdW;Ni3x(i_BF| zkHo{4>5*6^*QdqNUt?neb^P)asyXPB1Dq=0YCHeo>u+>IlI6;%7$gqKdfKR9?%_O!Qa^(zt z&3Pw5*XPC%S5xt`|3mI1_gOTDs%M9p$omhE1MSY*?P3RhVhh0K&C@M5`sg2W-m0Ur z;h&x)wUimz>Kq(rY1ohf#an0LYSh{TkJOKO!H9N&sD%O^_(adDIhx zr+ebk!Egh*2RaFV&kG9d8*CjPJBX*eCk~hkNRgTZThC?Ez`rv%X4$EAO_;c?G+ zTusMf*7A&^Zy%Sn<@1E6P~Dc#8|WwGi~_Yo*Vb%0t$h1b;P0>|W0LuVTx0H?Q1{N? zXAPz7C*_t=bB>`0hFkT95rB|ma7~br=y=j2)8h-tXBu={LiWmI>pTd;dq+^3o;&4U z2WW0>oHN+uF7Aiz?Aj|U&$Sc=a}@^QpHA-8a`m-}P*h5n?vpF%o`bsId9l?TG->XX z$?HY;&`Z8zOhV~EWzlX$#JaxQCki_%tN<;SS7?kQ!pl7aKIy5J}QGjobaM+G6If5QQTqpkKVdDq+hRTsRMfc*0OOn_ zhk^dOCOV2{ePZTAoH5g?E5I}mjx|VV3(VQ-$@XK8TV4<>wxXg_>+|Rg=tMx$n2DE=W;Y9&XBi#-wA**?xECHy)c_K2A8OY(xBDyKFrmAq<6C0@)j3;IZg{ zmI#if%Kv!M>7E0!Ug}=P8`P!T?b>T~DFCJ3aqy+sm$ZmH0}v4JOR^32-vzv!cPW^q zf87?QRZjH<2!$n=LCme15`lw<%&3YqQ1J&Lq8=lN-``8&399#HDMcKR$8RVc1U$gY z^3)kP-1V3XcA&3l?ccWI0X^zW5%E-g4Lr2FeoOGBL$Am_ z!`K6G)NG5vjge9t80xHJcT%H_Y1bs3x{M6q3x(Cpyn(U29S?}c2ozYWN9x5QWGFcd>sc`daEqv z(#N6zU+hwZhnvNtOy2!bgtP2h0{jLj)D|s^L~WGfK&v+UkZBLsv z$G9bV3Y~7#VEDj^obin$laJA6D%)^5#EB$Al;7$cAgVa~RgYL7PNLk|!Q)K>dWr&T z?fM<;sgtj2M@x*Vm0OWa#=Is!X_|q3os$?FKo@C0DY(?0tw8&5Yp5z)zE&EIRTn@9 zF9jl|AHT*20;s)s6GMYQ<7^XwYQ5td^gl^iT?woRbhoc?J=_2=Hp@9$d%9=;B|#xK zArAVP$I{KTaE@fhb@j-(+3fT2*X4TK-wGaMK2P}z%r0dN+ORk>j+VT^zg6FTc@&*4 zau2WXiDP_xQ#oYAyv^vOoqNM0`t_0Y`2s_vz5$0qYOVG!NQs>Ev4L#=ro^zCH$Ay( zLt#P%YEHW;P5bpe=5UaRX3j4!*toG&Yss=v*i~=IcHi}uY&`o!5Tm#g+5QRCf=zGB ze~x=w^7xv*;r-2TO9ED~Dt!(edpVukA&{KnZWKIIV2yi6bTE}4mb0nIh7Oi}f$~f{ z>`77A%6;7){DTAG9P0kcKGi&V`aC$;XmH+&cRXYGKSG!nj$0J}CiKF8c}IqE!n8ah z`5|l^S$qnOxC5blB{fGpqxf%=P*fQ7EmfFh8{?Q?a7po`Sp`6R=-O4@Y$)7UUy0V% zmG4Tpal8|mLal!QT=8RGsL-j97;ON;<=nfn#T99ony-OE?b!FE1yJ;!XQ~#|0U!6! ztJ=?7)>=l9yXn`t3jDy>emF)u6aK(c8lJg~?1l2Ft?9`qE zulPMD(KG+OT^5!QP_{T+l;5F^!^TqE9id57(;=&&<7=QwSYiC}qb7#Y^;V^$K==hL zR!gT=_g+HX!$PLe+D`2=Fw%NAI)NVT?0cfQ^nIsRjpr)YqGU3KS-D5zJ*JG&x*^oC z_~tnl@lKQ8mg$}8iz&rUj~{*UzE%zlQI^#QBg23il_&xP2lMxXY0cIs;{a4+ zVqZ_!Pstw4@0XQn*%k{7?~h>7Kk)D%$Qpj&5t%jRO~~x1yvzVlkFIj*?a`Jgz)JOe zgJysEwaASBI2)^9AzN5=t%Rx0{U6F2M?wWz@AuGS%dZJS&it7mU3_}cu2Swn#*Hg+ zT1aeje&k8wcYO&}{%)B@nU7%-dCy0ZxBwHu;tA|<#8kA>P6e0#w=^nQ2F7_CbRORu zgO)+@zvaEcQUnE0os!x4x4eVqe@ma=aa#nknN;*Mdpc5r=%w-g{1%!*teT|N`j2JR z=GH_Hq31uAdXKM4+3Zb)VK_-pX5(v6SN%-U{Rz%TJovf#fDF1sLoQ#&bqk30SuKx#_%+X zJ?asX1r)C$(9mrh1oHZhg8;V|AJv9Aqg2GprhAXdHqa8ti07UQ3*Q$qqTBHf%am3J`PT^5%$F`LAi8taSZR|2aYFZ2F%;2wa=l;jecG|1`qo` zm--7Gz7cfa4Mj%DkdiPq(e`vOC3S;AG~1zmN4 zR+pK&LAMToE5>@(t`vZV0P^R=otLCp`bT4?CklC8Dn zLM^iEB-HSZOjoeD%phJKP-2{|9!8xLV{}NYS*U!zoxAM?|A0^*@^+>V+n=&QIqNWd zh#vk%)(uyuUAaKw{Pc}%QJ-%;Me3t=UFXcD>%Z0V;v_1%7j4RyzLmw(c>;ofJrMMu zoV#I;G-1D$FQdd20U*nF+VMMyN^dr#(@RUjEWtpVm98sat*AlT+8DuzZ436wtg`iG z+D_rpr{_DlSI1}J8TEf>!u;WTi31pnBsaXO95=KdK#51AU4QYtJYUwsasD8yA?pXp zKMDx6g`8-kV|Oh^K2QE2H7TPRSdVJXNXRpt`#}~Ae2QYIeG_Dhj*X6F;t8hFpoeGM zVa@QPyff@S?rNMHk?w(p6!dn3Ps)GEc?cqX`6p!_20SQ_Ckw(YXa=A453rY3RIJ;2 zUd!mDBsVQioc#GaqV*{e1jn6(u|5u^t+BjI9Lj*JYXU+hq~T!ax)4K<_kNOV?)M$D zpOU@HQM>SzHb+?ELP^wu>^IMqW~ZDnTsqcQTTS^6$>P*tD*>r4J#yAkRp7~z2|)= zLI3hcOlIEqmUGWN=P6xW11RX?kpbjIQRI1{i?8PyZ=;M=V*!03W_B=oBIgr)#DZ<< z9U4c2&-3rphXkk7>hrvAieHQf_2|tiW4UXG1C9}<2w%@ue;@kpyj=HnO>4vH^byq2 zGJjDZ{JId#+T7?!ag+AeP4G4GC}aM@*XdKga1hEG;fsRu9=CxquQ*IF@vK<61msp8 z$AWvJu>t&Qx$7>{T1%S+W>ii4}DxH^mOL>Ex zIpEJ_4-N%Q@i!iA+0T}=z)ho&Tu1)SKL+GKk~%*II%Zi$qN#!*x~2&z+`|H1eC_LZQNwOS+e6myZ^BkLlg zDqCJoN}&uFq)F;8@)Q>gf?QI4BjhDayZt0kwWR@&HK7+l5to!CGn3lBLCpcWH-YB( zJ4;H0z$%j=sbUK{@tJkVf`_g4@&CJxV;WtZf`!s@i8m1#9hinoOo5Z_kPIIX0&d;T zXrY#D&~qdfe$!?CgKnGRk1s2O4WG7GkzWmaBMOYCD@sKFPjrx{JT8UqxWWN=%Wsik z)Eun!qy29N`+FUN3&{3vQZD${N-V5_j(dFpEWphtO`l$vh6~2UGH~(>i z9h#u_rdU+)UI#H~-Bo^AXQN*{jhGJd*10y9ADMS0`_VgB`E04(tj(xPzfs0enedA1 zgT9C0SpGEyJ%+TcuON4RX;vMiTdyU|kO`zbM3U*;KBMuGA{QTNe~3EZM$|{jeS-mu z|Iw||ROF4h{a}y^Sd(Q^pxDBC=vhib%A$hgP@1E0iTaRwo43<*8kaoATKWQ-UvwFz zgC8|6?kGb%W@}=GdVvSMvjf+*{WDO!nX=6;7vK6`u5=NGqzJ)hy91 zp?OC@L+IbzC9%f^yREPe;x+Tz#u7p~Gm|pCNMAoPWd(fu@p|Ra1GxWO4l+PV;wh0sh%}nxIw}_U1_k^{1l!? z@4Uv1WvMw?b62>Q%5^R=hauN}}~%$d+|J6zYSL z?b4OYN|pD_GrCg6)JdO{5tnfy?Kkp*&LZ8Qo+=L-6TfatO$_cbPeJMLRuliG?Q?q{ zdRF;I+e#pBPMTa?Mf%d2K-(|k*xq|OQYOs>OOS@{cnNYHH=B9UXySkyZyu{v6;&Li zv1ll*2=}8yW}d0Gg#lsInGNy7_WyF$QDJsKlJJn(LNhHcd9j7|q^mCbdo69Z@Iw_Z zF`*Vc3%}BC;f2;^aY?jV_Je>c=3k4lQkm7or7ak=KjxEe96x1@+M`LMHaDt9*X}o1 ztPp9KF)6pOn-kDwb%_ERAy_fGWR8vBMV@J`52m_w-M`G3|1xjtLmf8PK=IeMMl|;Z z1;}_(S9A+>_X9W@Yzc75lU$}xogYA%EM@}4C#-=k?jnw)j^}hEl^9$60t5^l$C7|H z4s^*)-TrUjysXdp_>$dX^!=MEUq_&;kNA3!{gmE7W)P2IQ|~0e7e|1rIeSuo{3r=R zFUl}E>60Ly3y1|e$rS98lj%I^AL?0$csBH6pjyr-dKI$q))GKYR|WI9A0A|zL8pRw zgt~^pd!=S5+=U$>F6JmFQH}{2>ZB0<_5CA|`OWEsaMn)zhImqmj)Gh*@TISztaviS zC65Q#Nuy~s7qW}P{p@~fm`xBaPk>y6@~0JqavXuWSPbnB<+UOCB-Wcy)IAl-k0ng{ zL7blSX?qSh65+?Xc+&I^#>FOYIec(3??2b7nZuhT>ZpT zj~D^aM|QZ2f#ONjbtEy4)`j!PHLik)Rry3PA>R(?S%XRmC}iP^W8Em~_$r|<4U6DW zhsIhWj4k4{^sJj1UNsRed6R`c656x3gXdw3ba8#~CShxoL$^ipxq;Rv>RtPB;XNM7 z&)spckvEC$8}Cwu}pMlfA#MpDCxj97Gy5 zVU=)Gs7ysrX|zky(V<e2;^mzR}#LD!ON15G+Wx?}hW;mIKnh?>s8Ov>+%R$-ByBWBxt+$-`IT5V8L z?Y2#?jYm^dR@J|-yQK0@Z3SwzjXwaW8)F6`Cd0v_Gu*)uu}hbP%^j$R&TxR9=HA8E zL*zM1FXWhm=SI4vG(Kw!q0e7W)q9)iU0soY066)Ppwovgg3~2ypqeKTj?n-`OanZH z9KB+E=_e;I^@<$mhBVgz=ei>wD58mm2)WU4(*w9;5t7OBSQ#&fftYvoGC`}sC5cY^ zXW_1v9UmV~>DhidOS%9u7fu5}i4OtjJh=kWk`bT8`48=R8ks4Yh zwC%UvT1sDuO#0aEkh!_@1*y;CNpP{rEL@=p70Bj%bNJsPSVe+soY-MlUt{oS-f0%La3$4iVVnao8jerD%B+guJV76!B%@Pxj$9C0a(Dq zG=5Onm!ggthYOqIIS2=BO5;gxJOWtTA)8KD*LfIfX=yH5fq*j^q&yAKq^kPXS0}2b zQ%i33%7?bq83s|&EE9MD>AW;?b3{}02_RM0r}O6m01BD-WrEz$D;Dzjg`%^#L}l;V z#-XTb-GBxBQ@Ts0^c@Eyfsj5P=28Xux;_CW%3J%T^%=b2pw9qTVv0aS%iw%Y`bb$P zAs+3&1F9Z1_eaT|f{a5@+@i0(PLcNmsO8BbtQJ}y%5gD(oL@my?`8a3%pB176QD1} zfzp}fN)tb9c?!>woe^xKvop|aSeK<7zddfdWZdVLxqI1gfNTGBy49*qbAMEt+HVd{ zrnEjhP}zN4{l%v?ABX>fysQ+xi!mzy49Zdm`|!}=oIwvUEU*uBXgR)UPFT{&UTg5B zyuSRXu$s;C3KgS(CAGVB^jTj%<0~FVbT2;>569m(K%$TNNG~%2n-(6Bi~6~^fL|`W zJ0{Z3!`RPz>n&l1kt-`JRfs(DBgD5{tz3?NNzulW1Ni{6S%b5v z$_9L8{k_qFo>-XP753s&8q*W%v4dT=e<1ew`av#+E#rP5dTX!X-(vDwPk{ehvkOrO zQqMN(HJC>tOW4s?%?*P@Qm4PFBvmw+C){=rc{s$-U}+Z#9%$=eUe2|?$$*quz@_&a z!okRP95<7(L-3o^J7e&(hhVnE?c}44;;7l(qhzbOwqz5HT$eaQ-7*3WO z`7<=LLS2+|BR{Hagq7duVou`_ay|;>k2SA`MVLk{m@H}`N}!UU$JQs1(O8DLn2nV} z1>*p**f`OpcKY&$aTdQ``S1Q=GTrx_wItC)KWmZut#uE(eaHmN71!-dnBzG!G8yPX28Cl0)|-C`jUHDO`Q_R zlFhqN_?=m=(>@YTAJTF4fovr@4NmRG8XELH?Bfcxky9wU(j7>*{0WsZUb_;>k!glF zz~&qtQkaV3j6aVg^JES`oM^S`3xutD1u^&4E3$#)dYQ3L^Vq}O7{Y*aY){7AJW*o)V~U>`rv7^%(; zWcT4#tEdheX;L%m#7J&3L{|;uKU&!-BPnM)iihJzD@pWl6h+!MpgDN_nIM^xZMg~~ zw$2TxxSt)(v8rH|)y1Rs+%)&T?}v^zy+W!xym`_bseyIL1IEG4-0M74R4c1oL1iog-suwiDB53DXEmzfs z0|iz;flDUN!B&OrvNtry-cx7cW`5&|9dIO!3Uo{(7A==hd5B3! zSossEpRJq35v=_mFm4AW&5zdJk{m(DCMh>hfvu{4*5RVa$-LCiiI$qKK{RhN2Uy9* zt(okSLP9NDAx0z6+VuHk&Mg262AaQ@E>zz`TQ`3eVs?HfRC{JmQ9{q>NG$}zIiM6B z2T6MEmiFpck7sJ_1y8{brtqiQjzDnq+7w?2T*=!FfP(V<(6l8eCKi{EfdWRUm!ej`)&*8so^p8917GXVfJdvg3GMkVCMjl; z&FJr@_4&MVWXVM&l{C1k7v}@Xf)wqr%qp3WN+47PmFV4J&>_u?)CTAT2aH#v&`0$A z8WBLN3zV&uN)=D)A>>rRfzWc;HjFw)>GT29a;MM8?_Rion(q*v#dm~ z+nB%hefnIIkzeaBdFt?ZhwE z-st1@+{}~A%-SZQR=nS)9xbwMP;@hAX4N;l2Fe*spn}=RC2F?D8<0P{WJ2F?cc7vg z5p#<&@K0c6qB&-RPqD*?&b<+-r9bZtlU0^~xPJ-l}% z-?c^)tEbdZR_N~PBU(DbXyZU3ABMJV&Lp~4s6?nDZkhn#E1ji{)VT|1@ zu@~@3-f{>#4yepirUP?c8>!T*CJ-H`Jk^i6+SuXqbBbV<#5rjC|G7)|9;%FL_g zi%Kx3p|2M7U&hXVbCRKJ*`)48Joim>V4ok&o>U(8z@?jksNKf$qDv&#U_=p|gJl1X{hBY-(K*Rk=v z>NBFFjQ>Ea^O~=N<4&C}o&0X&SF8Pxe}Sieu+}gucl_9KYOE5Zkop|NguS;ZF>egD z{N^)8S&&lTy~YeLzO>uW$C6~J9QIsId z_JLoQKilL(BcO~yyGuDrMQ?@YU~4Id7u85WO3tBmKVC_Kqd zd&+n&50`N%pyI3nH>!J(p*0US8;xVePnw=Pb()gLmb)^<=T(<;r5r?obm|-nN&YM4 zE5Wo>I`3q;=5Eay38nU!a?F?4u2&x9nH6nUJPbofXLIA|;QMNv|8 z(QT(JYNidKcc!TJg7tid!icZD!A&`(x=5R-l%?ot z;brjtN}iC4N5dI;xqo1^j%;`E)~rZz4yD!Me!Nls3nT0iGm~s|@D47X!WA4S(|ALO zb^Jo4nxH(%nX9}3TJzEHO&fD3ue1z;%Y4laARd^PX+1lwBYMONDgH&__9|YU;@EVsSPo7%Co5`}4H)+*f8f?6Qy|hAnOm@C;J7CcuA+`u(Hp@C* zKKniahIPt1B|;QZS1TS@`b_R!$4}7oRX7T*2heFbaK-npT#M`Sbx?TMD^XiipJW<8 zcRf#k({Qvkn?H;hK<^o(Syx?^C?%{0?ATD{Vw756Dt^K@l}7yFrvhN?c6eYN9*gSr z<5hfK!8Rr#2wQ3zd?LH8(*^3aYb>M@GrmB^R`?3sO&!(z2T)g(?VYYHIHB(UH%dHD zR`dEk{FA@{#3JoJIqV*Wyy8LfVKM zy|9lQP8s)c?$fax!kcCH@dm3u902*1`7x00?3L(C*RnAb@7?EOWruj`8f@)h{T4y? z`(08{YX9gs5K*5F)Y+6b=)TVpjB^yUaI3@5L`U!Ez^Yjt*bkbn{IxbGz{m$mB29GY zI#Jz+ZR*M1X=1QC|11VdtD6bjcrlP)Wj{ zhmKd#0tgcw{>4{4C_5f>O%ahJ>me5tP>QKyN62v62RR7w^RCZYJ)3H zUS1aVc&{BB)QmYf%`|QClJagPm#z(*8)9YkL*=Tc{H!37RWG%vtQYXEfb;x}iL>)ll?gXquAP$ogPwJ?x%t+02`?$l^?- zCpL5Pp{A;OI=xvrBS#xh-8c|qGR|L#Qjc;TkTi_`C>+usff2}igd-suj~P_|LGa%pEmEtZXnAm^ ze%6wODsr*w5eDfhc2c&ThF#F$B zgvySnrXxCmmJ#nOn7DM)li>(?XT02dn%{w&9&sB8$E}l)@Ym!-%S*rQpS)nCFnIPP zKx{MJ(PkQUJiwsuAs~WATTc<{WB=qwf@Vhw>9=uy0Kb_e>eJsLTR5`LEH}YJ+jtLG z55j!cd~O8Ev@lfNR4tXDQA_;9tMfuE7O7?5<2v3+C{pD24zbe);KXIbc_s>KEsyf1 zmz{;8iy<-e^P|dC3-Leu7QI8+i_jxc^7natA?sH97}_DCJTL1XAovCZ`N>b+09Ik^ z<9=3p_c5+lRQQOlD*!J2ii%oVeI5+W)vRO~S~& zd>k4`^?ztB`pUAE3lz+1?Lu?BM+=jP!Q180QCIWuT=DJuwlnZ5>#~ratA;6^V~4VX zq_KG_Z9ihu>PIatUZI>(nvEg2w?{x^Go=d9)|z}jIhl<+lw>5ED*g$jhlHIR!=Ww5 zaJQbc=v>OV8>vF87ER2jcDf?vxQwLg3Ogiu-?STP`;S^#V}Q0Hp2!XvXY`2SHB`?j zS=%R8Nv{v5b@j>tH;kdWmY7&SW&GRfT}k2cx8if zj7eHRmk-FuNlp{J+~A6pPleR%KHuT=bEi$#7DQn5qyURzdB{&L3IWFSrbS*#vNKke zcnoy3UWfmAAHHD zc`)0AP>u|t+XvyMxbJCRo(1382GIrOACh7OnzxPy?&4>K5H=X7=llRq`~x~G_wG_q zAj74sFTJ^oSCj<)l&8Y%V#JGK{<`jJc}q$X{H4#@^#Sl3Up2lIx0^-9Dk|aJHIOOR zKBL5`&1NjL07zzE`PihxAu(5`*ypSOFdQ;2l`O^Za&o@Yut^|kf9SSWFQ^JnEa?{ z9gO5}eU9f(vr&*SvvKTQo*pRcJ<{yw+vk*&+Ac4mx^BqExw+{577d4V&V)U@+KTpY zoZnK1_S>O7JiMSApeXVns%4jV!|JCoK<`6`z6z6_yE2z$IIXRMHPwQ>JVg7qft*i! z`H`IWC8B8h9Rx0p?RBwGVGcR769xugUkP~ea;5$w4zQe@&`_GZ&y^~NYH(c(mj;XE#X2OZw8 zq=!d9oOi5?w3(%Yb&pb(B6$={KU}oPU0U;oHksBm@@b$-Jy>b|^Lkm5%^m?RU1liI z>X`=vd;*sv59%qlEzAr6y^4e0Ab)dF6Q_5gg-(sod81=ZN}XwfNDwC|@5EVLtdgzW>p9%#}S*7|}MGA09UeX6g`G9T~>+_1c$%xe6S_!#(k_MvZI;8S1R z$Lp$IP8a2mnM)*UT&-tHuSbV}s*S2%Ootep*-bkS zB)iR{@}`U#KUOI;URF|`A&*Q57@`i~CrLo6yv%jm z@)hu?Z*4F|(Bp?~GO>^y6j?TfV2D4Zy}}W*Wg;}=*1f{ZKIax+KKb5zg`XP94u#@j*ji9r*C8%3Hayw2*4AZwrFV)~ia_q63BX@_mpvTywi!ZJNMY zpg+C4OJSrBp^A6($)49z00(@HW3UwGs{cArA1s=MxvMHmO1<}&${U7K@n%gFj;F*x z8WPn@#t&KPFFKppUm4YIvf}y!UKETpj~Fo?T3%bO_^LUv6t$54o}CAju-2b!{wSso zILKp{9e{mt^bV6OI2E4`g<{^e6!{NS(PC)wuh2?VD=A&4(GY+B%a_ zG>I^(Ws7T%_z$5e&2|$#+QL`(>PkJ{riDwXnj@}h@-It7op~%QnD}<>$Pd9ie|WNq z@(!T1dhQ4xsvYMwhzV)9Q)l`>PB!y(Wg7ZY&c8q|vO4`OwCr^y_$op~!LBI~c3(H+Y?(o}NnO{UK3M_68pdS-)%h(z#-olRQ3$b*&{n z2n_)@oMd_$0H9$iEG@12nZ;gTNl0YCg(k|!WQE%_EBxh-<}a7P5~z{bQ(Uy8)^m zSA@NkpFvHPV3dap{!Ra$p6z%Ph|$}8%>ubGX1NMAX!}!u9^dAm1Nod-Dj$aVc;jtX z6za0g6}@E(5c&?8)Y=Ix9(y}7swvNf^4)g=b=(Gy#xw6QO(16&q%w;B2bt&AcSF^< z;5Yyg+jAFSF+TUc2%yf6@=VLUS2YZWb4D6`2m@zXWZkpn8MMe$ptXg5z;EL@oUN!2 zJ8tide$Tr+QVp%3x^!;D!{ooq@vP-3SR_`x%fu6uE0}HZ!@GPD$}fgqq`1_W3TEU@ z_o~;>_06Y(897s?k5@gz8-hSqfBroeA5hT1_&ISnMZM3#t>y&?Z96ujnPl;UPFd#v zpfPsq`<&)UY;EHUpuIG{&nv9>Qw)>TfY^CCh|8l5u?npC+Mmf<GS%~OGaFTX!XQoS7QF~L-{EYeJg$M{v@bBctxCSEPH zR~&N{iSsP$R`f1^{0BrGt{vluZ$0jkW~_3VHvST!rXtnHmF+$hvUyPL{QWrZFXv=n zMKXh8(Brt-;A>vdvnV;7FW~c9xdvNZ31j%o-sp*Ji3>*#-l~NAzMeseu7KHPE2poV zUy@V4#0zt*UJ&FEejeB77x>g|e*NjTHh#5+HP?y5HMa3{ReXiJM*Y?RwG@`~KVV~S z+#BbttGdyr?&_y9cxDx7BI)oO5V$@5DtP#lngD@Z^Iwj0pi-hU9AJ&5!~f+V(NU|< z6p*Fsox7n*QT zAaUCiW5*TUKv*fiE@K)n=~`Oy3Gaujuc0clt18%cS;`qj9X zWS{1>B~=AF-$CWDJQgtgbD#PKdYoD{d1yS%#a+j0+~KY5ym+$P8HXVq%FCArhhInb zY&s*oV!Y+ACQAk1CZ>|32-5ZozT{<5xD*l(|YZ+Km-OXQH zO%PVh&9M>m$k#jvWp_d>yM9GT0{!|m&v~&n_C^~24ev?_PTA@1Z+Lcq8Ua1w8(x-D z#_;EF_$kq#%%Iax`S}@FpsgaemVnDTI~|#{>|5o29Yr|<rCi1U1~-GbUCG$+(K}!P*Rlo{cZ&iN*yyz8Hf*l{x+aTah>jV z3I#ks_(Xe+MCq;{d0;c27diw#DvZ4hMS-XhZrG>s8**`B1*e9ltLTeC)DrIproq+# z2)N{h8m*&X5;rz)>TG3V$9Qqj{662TzpW=Pz`9T^!i^wFMk4c`?k|$;TgqLr&X?oahhF3`Q!E{{t=yTaL%6w{q0f zQRaUdRw%f+Z>i4#4^#Y91buK&Nv- zwzU2sD;IUyIO9+EHCpOMj*>J!)txWcEHtFht6pBo8HwbF)bBMI$l5nPP)Kz#oI^Q7PNMb0&xe*l2F`=Y$`sLIQ-SYI&*-U4X=Ic#@pVobo52{URX z3Cg*|%RlQ&_>DP|z!ZP&5+9A4NdSae!-4}nmwB7Zf@S_|FrCV~%=2FRi$0F-R{pni zpXv0)Av1S_#b%vavS8)%73dPGhB%TA54|b%YSDBd2FI*3HP|vMcjUD3({q)nE+Fex z$V~726KQbG6)p>OvyVT&!r@<{j*!{)p#gt#tOl=2wzQCmX(IH2Ih8=|&R>b~gM89|kPPQte=-I}640v}A(OJ;D))G0Jjh=OKHSq+`TgyqLdTdU70)kG zQC8RmS9`mtNCTPn;nz42aaZYWpaILSDaWYL)|aRC-fR3p*5fJZRC39|y}tiOB5hk2 zZ+j%)EopbQ;;3B8grAgHdu`3;{$Mf6|Dn;iCBY83T&HIZjPDCI5El{MFE?``H)`Cn z!2{1T84L}m|M}WHEm88aSNtylT zR_0WYx1VME$xnrh5Xh%Vek$NW(mA9QjIlSf`PAYK>N36EvTG<6uQuX;%g0QjYCAIA zbEkA(-S`PYx+IgX_I68rPIt|Ct`C1gg^zo%7>KOj4X_+p9RM+fAyDA?$;Zvmb%>wZ zBNHgj*DWz74NqEdL8*f!#Zq6l1oS`}C!StV{x`@Gkii{_4R+PnEn}eEvPE~t!KF=W zHL0f{6jicNJ}s&YRr||3M~BX%pZwhN{++$cXCmeJ^D}E+4oZ~XLMD-Gt?-tD3lI8a z(UwcS9fqEk5*n>LRlHBbMx6Vd?<56~rMQ<|2yMH=?4DNA8bC)z9sdp#6H&{pLA0K)<5f}-0_(3vfrP5px#b$q>DvpRqd^-Qut6jJ zrgO{ht38b?ef=b3f+*^AU(qJ(-Q(ndi(5f=j&wrr<{m{VX)Z!H)@tAZm-=I^6Y*S` z+X8*m@moY$qr&p&pusJdUd5SS&}@tCZKg;gFHwMCf~mR6H=dq5mSm!Gqq34mk!?1J zWt|t$RypvdMYacv*7|_8@U?$b-Jx;Xo)j@jb!l$~St|YWATy0Ixfvfdw+F_l{%KS< zW*$K&Sbxnevpflj$-Ffsh|ZhblGbEvjgl2Am4b*^2*HOCFx)qqm1Q=8YQGKXBh=uz zubPhHMlS#=7WI-ttf>NG>Fhb3ALUv21vT4zh8oM3E*kGTwePr6>R!x0wkawkHt8(5?=r zDXRjq7HV&jik8?N!TvsxBE%ewPo547(WceN4B<9ETvA7S#yM6h%lLu+D3w!{3 znJt>zH{N0;8lY19L|!JP-^A7FfjU*-TQ&>;td61CK^!P-E5blk8VP*kx#lQUQ%r)L z+n& zm$Nv`b#7!nNCs9^mMtq;t{ygR!ETlrokI=Z0Qsh?2#cerl^oZPJ%u{}h47Y@XRj*8 z<431LI5eFLam#c8Aqu;`9$~sLl$S6(I3Q^;5&BX)wGqa^^up^2@Df)GsgnR!W)dl< za<(Q@$9Q9Oz{FhCnx(;l%8n#kkt>$wZ2<*#*ybd;470Xc0X*Fb3A0S!r~uj-=9ULT zw|m&hFx*VU@smWgecf($;odpHurop84VowemAXHwxrcrn$y6~l@&*;J4nid&m7EPgzK3srgODm{`P zXP`%;c$%!6lY(KfgSr|F%^?X}9tB*Ep%;(ASZewN?FaiKy`bUI090vOG_T8?Xg;;e zquml;smg%qZPQlH?{R~xydjMlVV&1})a45+bgpnw(K~t{Lr*(zfZ*Je{S5RYs$$%% z#{w`J#f>277RyE6y4i0MrGIVUb8?<=T)Vjk=vb2GfqR!lTxj|wlOwdZ8Udkb3drX{ zEcTtllKiR4!9y+K1w~DuQoZBg^G8B=;T|i^n|x@>WwX{eX~_!CXDe^$OQ$m-xiiGc zCy_*M<`-&xJZoT0xnB7x+y^3Q+prM3Wd-VuJ%)tjtr7A7QqII4>%LhWOzXeY4EAhS zl-*<9uPW4s{H9g4&Bc${1Ir-8ZYuIKq{!5iW@ zAo=gv@$NXes3ucEvSk=O70+v+;s0P--I)$aPFU+XXv~Hbd8S|(GRVD}_pNMCH3vH2 zN&G(;6E8~OKh60%&_y@C8LXq-37jwG{R-4s<2Ug8I-S6YMZv+yObT}?ht60ko&)RZ z^up)>8Zjt9CI#8=_`>(u<(A4aO)mEg@%pttTL)3Ln)K~O53%vtW{5CFM){k&@Pw5rJ z@N(JF#l`p~i@J2XQULAETn^`4cmjpc&Ln>2f+r(m=)EM)9TZfK!0}S`pD1{YP3EP$ z^LHN?ZM@s2H;r7a(kjLNfOr-}%9DAlqzWk@ks+QGH}gvJsQ4aBB*mPt0m5*bubw8S z@aGk$xaF5<-i7nUo)jLZ!zui_*HYXC;t3?gr!18hhlL=Ulkb;oq=TaYzdM}DXKvT3 zxJ=J8a8wIRlFOJ>!bTaHdo_D+ZCZ{jjp2{uJA{N;0c z&hJGcnUU_6q9kaqN+uYi+dI?3!wMIJpyJP)rV(HkV}K&3yalDoLUEf*HVXaRY6{D8A z;stKXf6DiIH@-gZAu=osg7jGXCy^o7nUxg0V@s%eb~PVz?*a^;nF%|(1AUcM6ip4| zfVR)R;HQ=bs>8xFDY73ws_ji5SU62I>aD9pd!%Rar{mvHD`+giEo$gp1~YB#=a!Vi zZov1seo7KOf{LFHhzGcmgOlwf?($XT5rE$H=SbP|N4!!s{GvbSYjCBU5P)xEpnNx5 zU2=I;Ca^C}*yO!nqo|6$;bDi>oHl%UPmzjlBg#AH#mT7BBn>@kMHT0&pT#mNZ^o4A zQ)hdV19^>GJ5UaQ=h2WM^yWaGrX~wanOX~d4Mu2*beEdpmj$u@-vF4;d;{6}&_TRe zy4E`TLnDM^7a&VO*4N@Hc5D#G&Gt_raRQIQSc({|+#7^WOVMCXi@UbPf=iX-<4^OR z3{Y7`*X!=kPHTj(u5{6oTRD`M4~ECOVF-Ub1Ob5bAL16|Wg#z2jSJBeE}x@8E3Yn9 z<~EY9mwhJMN)y+{SfIWU^HmhtlF<{L2*wBKy))ANugU_Fu3LgcX*aejmp1&R&6caNKKi z(D31W2W_n}=F@@Ud^~}}J5%l%F{PPzMwtLEUs2hQ2U5;+=LEe8^$+!jl{ZYMru3wN z5at4pu;xT0UpA-2@@<&h**pg4`dEk1ifj(~InQ7c>a*QaD^nIr;eaFqUgK^QmKs08 z-Tvx?Wcg7I-=mra!wJNo9Dc^46;P0<+L#=z-ZL|)x&e-EKj-iWoc^aafs#flhe)2! z2wF3eA3|ml`Om>YL?xce5eL8nYicC#x%^%bSVw}m2H-^EZLe=emDY+HGGHnoI>Q?ozHGp1a(Tm0|h!%koe58&@>>_+J4D3zIp zMnHgeIE{gHIM>ahe~Cib1Q)&_UloU4I~tv?nw>yXTze448|6<2$H;VM95qdF4yKwh z%KjB*ezH^d`4|pw&NYC(N)v7CSUw6n?lpq5`)RzDPF;jnY~fgb-LkRn$>J&71f;#@ z{S-gLxV%ZDRq#r|R-Cj|tFX6%#_{&mWcbIT&z=ZP+*?z8=;m=s4j_O>`6slI2BgDY z5Cg>jg6RDtXd`|xj`xPF|94*0LQ-4NwsDTR?f&ks8^VrAyhX}St!$~YfW-LEPL>0ewfIk+VsEPvL&B0 ziHA{EL-X&0z*ln_K>M#v;`eC@1$D-<7d8~V?)Q~h0)7H#BNH(F8IySukKgM?Lvj!5 zRaH??vn-1bL*Hd}s@gS@-Kg@-F?u>QnNx(Uqv1iG-=PfDxYlhV-zjd%S&~KksuFC# zNmG=;tcpS@VG6HCl`#O*<>%1|~%}oB`qK%YAGxOXm+X5S!2jPoV_NZG& z8}m42%jz4S==mwpKu7a9Cdpp;r95Rw1R%fYsJ~TEU|^f91aawWAnVEx2P3CjpRfF> zaN2AAR%@ouz`K_Fr4Q2D=6eDCH5c$Finh7u2UBRk{3WFe$3um>q?=9DbhjmjI$w%6 z>bN*udBa4i-i1#nOu%7$w1A6yI1!)?v@Bmd z?n?ZgX-ejoN7ZRDL+PPIPFdu%O?USZFATR2l#Ysg&1C;R3DoH6JTlmO3AE+1ugNfF z#^jM+O+kUh?|k2#On*-2XxjcbLiPH+*wfiFlp|J1$YozbV%n~HTqZF*_RoH3WxqCq z2m0{c5L@_St=^!9;e5*3kq|;7%m_lmW^&eJi$w&;{uVrCN4dXEzhH5(dcorQfT-Pk zI#UUq%ix;b*WW;viug#1o#mFIgtmTwI3Rzq(b8F5d$9k*4wR`L1nAdhxjCTCqo#Xx zxw2P9NjLGd=iDR@d6G!&s$U|E*ZZ2ZG=}sS80(p3OT55cAxzcuq(3U*i<5&WX|}S6 zM?s=1F@u)P=3rGb09=lzX1n>UA58^+=psG77{K>Fh>9?$FDwxTBP+PrLNfB#JOw&L z#v`nc4{6X0n)5)SJfP78NTC;R=7G;MK>GHlo8^A?+~Up?vs-YByFkWl(3k#e&Q@w> zMQ@2rVvajg{x3H*`2|EtOYW<`33L*SY<1evE0s5c>17ffU#~Y&@;v@P$vBq!y_NHL@|^z* zNT=p`98P6o(=1$=jfFhp))$jNmc0$a(w$Eys?ag1zg!ic5=s9oKT z@5nBaNa;PTy?iJpoEuTLBDbU$NPvcQBY--Vret3#e8@+ZO1BhoC9PNk4SpDs`_ku$ zULE$UMeZqLyoGL<=aK=1pHMsCAgTp&o#t6IWEc5_YQbFR;RT`*dK~ML)5$cSQwOO@ z)ZX772(Bo*W~p&mn{3&_i&%gaREg4 ztNjyICk)9b$o|F8pDd#xJAC8&zA8jjcm;UQ!DnRPVqQ(%z2v(W^MMZnPzJrM{BKms zqseN7e&N|C5ys9f<}e{CZKz$rW4Q!an)g0U)T;rF&A3HlrOM$4#7TB&Ox-?^Hp*`fwu!p^$kkKJRBQls#oOG}cmaNI z%^&&r$Yr|>-cVBJs;Eqv>W#esgt%W5VjhL~>@C*7w&I=S8)@GhJl|vuzm?4b0)CAl zDwV!?JzlPZGISN7u|)>)moTsdk0oxkE2ryK$BDTB;#bA&J5 zdfLh5$K~!(a$(G%;ye9QnTwSEYYdk#hYF3QD607v4A^J|2khEm5u@n%)Cd_K%Lf`H z?hr858Cn#jD!Kj+U2WJ4-ig}CUnFx5KWmh2(5#<8`gf$^+(tbHu)PD2-Tc0izrc%e zAje8x3ON~8yC(q@rH#ctW<$=XQMvikd1n>8i!UlKjqsx_E0whCThu)zsp0FDJa`c5 z8)92lws6U!)jc?eo>^fx!z37DzCX`o_KI{V#04M*cFM&oRgP}ck73bpWJW8&5eQE} zwYx4%eyRLUF0d4A0j|&S9TKu4!Ic)3eX*D-+;QksYQmum`*4&@za(cz@;CBc35Rgp zZ>(8?J3~BG{ev||D^_usF8U!Qlg_PDZXxJIc&o&c=9GO$vU;_Lz*GXQt<`y3TvAWR z(MPXFJx!|(;)|^g3+e9S3Cg-lDb&KV(-Z-zx^X70Wkx;}ka9;C<|u<(yBDNBN4qx4 zvn4@=)mvV+hIoRpZARYB9Z-hAZo_>$dt)4v;hd3*hoSAxCr6K~)SmKRr@nChOa;5L8c1L96B2x;OFg9@jXpAy-rxq3sl+*RkeUy`N(>Hi!Pzul>Y?;S)f7d z#Vn+W4!9}~P}_vM^%Og#6o*#vSZ2Y>gjNsJGv;9^6|Dg>uVxF}@0vAHKC}~8e6g-1 z)~Ckb-%5X0DNW_sR2&8d@2L>zwii|N5Mz%4Qe*~&c6&8nDjdJrz}Twh(5zVro{!Ys zi@ZmP9q4|~jLD#)d)!&#do&Nm2}zqMGDD(9ezAZRR3Ry*$ty$T5{KIdR9p%}wN^9| zSC&>v90PC7mM(a3sn$p)B>*`eblZUt1WfSYy^X`G zzfdEk);|F`J8OU%LSY>HiFI7iXVHQCIl1Uo;_td&ep_AjUBPu#6B4aAO=rfAS|_b* zNt4|udBLgoOO2%C5AZnvZX*(@1rer%-F~(Nuu(GII1W} zj4~>6hCIJG+WUp%LTqlq?IVjzZ}*m!D{ojxIiJVIQs;C{9JMY(;q0M@m9z9=4sGWi zR+7Xc@i>mIfumEpfj3g|Mk{t)3;@)7Ht@+<|4L#SAl0DH_i$JOMj8#~MIc}1p9xTX z*JbBX0z;}c^2{MfLlX8Y7o5(wqA|wLjodBJGXZ{|hE2*5IjCF6pWfTWe2Nk8B}rs| zJpFSMqk*zsMj7w)CJqzLSE5o-01ol@=$UGVJ}{bA<%spo^^`tqm~=e>7Dh6Ex=mfuLjNg!t6m@ik*o21slL*S^+YK&)D}g)cOaD_INE%j#QL{8W>b^_k(2hel73muKQ9^sufOF zttXHY9r`SgZvbP-@s+EOm<$Hbi0~>Itjlh7f&snNEpsrNFDRw0TlwBB)K7&Ig@qh- zJgF_agJL~{QvGO79iP6=xzL6z9}{Y!T`fucMGk7R1Ul4=x<6@_*~02N0b06Jr=*6G z_d0+^{U2uyGQkx(@TO7Yaz{-ZnRk=2$b}4?JOP^9phK58P9xP7faUdyeSt~#5~vPo zk0@p8i^%nhT69Tt?<0JLE!cs&K;})!edxzW_!R)dgFb0AxDkmS-sQ!*)C4N>@Fpnr z@Eu(CcG}a!GL#v~I1?Q0Ar9^>D?s{mEH@dA(os~kWX&gciHOuvu_%8HqS`6q50#=y z$hbgg`zQYdVh$0sdlj%qqGTifs^M!0o;QvH0TxPt(R3z@9iObhVBTN-CqF5GkQ2r4 z%D#EkHeOIr6anpO9IW%&-vYsC^Q|UTb4)_TI?v;%34WA6z&SJ_u7{C&O%fP&DD}xk zJ$z&3WxSgRG__;}1Pxb|Ojx0w2VE1f?K^+9M_N&DPc{_qLysfi=JPepoYpw*A_mM;!TMx4D6 z7)@t?4V2il_Q%~UcN;I9n4+Ltz(5{;7-Rsru6-SDp{3iEI(;WRg{^gf86MouhtCLm zQbJuOG)l`_{r&20$&oSG_9K#Xh{)>c_`joIV7dVgi}Surk~0MSv6Bv81X1-^NU+yX zXp9K;{pjQlKIU_BonX#y@_{>JaIE~Z?44W!sNKnk5>(g}#p(QsFmr$^wbmdCP?aV8 z?3#MFM7HM~Odd#U>-q78u7u|;I71((hwFks?~I|GiQ)apr$M=nqP^hxAksji8u(I| z^&T>i`V0i&%#J93t2iR2mwB&HiQaB0xN!|U$ckN6Fiok6k_krB1*DP90|P_o6-xrj zd1cWu6zv?F5J!(MOqKO8w7QU@ul2D6uAIMO0ie5HBvs`NGlbo3DqD*U{{bEEwY8xJ zeUCIH>j^ijwz(+lBV9BtNwrJFx#*S1muXE$$bGh-(M+eG;P_p=NgGPpd+|7(CoMh{ z_9Rbc&Fe`Hn*1cEtF?xBG;~{_*fhOKFV{BwFl7VWiuyEqzda1jTJ=FlY8tcl;dNHCBEd(WvwV5+YW|a)UHm79?}i*$ z`&<}I9^S=^LV-1;iIC9#FgW7Pdv$uMDe_a%uU&SG0i3a-Xa`Ibl}Of>YmNi@2x23d zmK3cTr&H^kN1%@piMycXS*1}qj9QlZ^ruaq>177m@FART%cmk|UiYkWbABQ^gYx%8 znCQ)C`B;(eFPV#ci~)b)_6Y;Y>c*gSnzmcHg!~CMk@c!0_%D(pXej227m{%rWLvPD z+u_LSc#a3W)+cf>Eq#s`gIdJ#r^C~2X1aAtgjIP-=Z0Vx<$r^qXuXOy=VPC_6-mv(dBH?I-tQ zfe>;SOr!U5PqcWid$bJGGtpXX|F6G|ww0%Q6AD_wO-25Bo@_t-4Qf)c zk25xwuR7lwILSjn+&LW7tu5YjKjHLtnWl{!pPxT|3X4oowG*8vkdZ`R8WIBo=;!@B z{%!AvDGI}m6oY(e*&Ts$w~m(W0!MqqFr?O(rZLLd8XGzQ+Q^aWTOiEAwR5@6Noh@- z{y=j+gBmOK+P}R=PP?uTz1YO#EepX#{|pN;slZEK<=2|rL*-zkQt`CJI8^1AfR|RO zYBrVsn^8YqGp%vrlF}0r2>ix$G2HUV&Yv9+OG}@3ThW@SN$xH2LlWR#wGAM$_RpY@ z8585<*YmiMVn48rFj@X8%D=zC&Nm*it_jyu{tMi4YZLAXj%DFKWVz}FT=E5FH=IpE z>m&o-=B+O%>5>IkLNN9GsS#c=ruahGRjU@q)U-bVh@UKfo4N&)*-U-Ii#(vx^z*G3 z6^n%+CR5@oN_<*lNH?Z4>5V_R;vyQvxE32}(~XJ#^yn)*PO_g^GtlZo zt;$d2=a~PaoZYX9X8M&F6aA#Is5cJe>XHCqq;>z{*weJh7dMW6hD17H?j_HWuK&0v z$dzFLDhul2pe{d}Y*xoRyRLXzW?l18HD)jg>={h-saHAJbiK-VrNU9jimh`IOwVqM z=6mV{Djo-;)t6r5%u^$j!drhbdGlTX5EuDm((nVETxG4n$x-zH`n(SwP!ezf9%>IZ z#L?0P*l6tslqT;JaMEz3#ak%yAP;mw9|YMs2YFG*k*b;;Vla&o9P6cOVCo7%9^QOV z>1SpMA9PSlx7q{sQp=D>A9VOsx^^kjyW;wy6{b)6+lH0;0*zy|0s7o!#Y+@{0vYR}$stZT5EJB)6+eOd@urXpK@C;}2kI}f{M8RhVLR0@tB<`0sl zsF?;dhIUMc5#Heqq4IZZ({K%JH=#m2x|x%!rip-kS;=2ZEA~<`@j^ToBSHusK@P4g}-=&k0+-K(l@?-PB}IO zhoO$p8lI}7n_lO9tL1k+s2Ud?k(T&E%%tdXE9Gfy zA_BMJcBj=ka>ne!n+nI~PA^n)?TR;)v^Y*c)zs26BleSU5O%)dX3^gvf+_tG^PAkYoUZ=yq~l8Bd5+k=I$p(6W##>=)f_4@s2aNjyD%V zOZ(a}o)$FCaAmJWHroCm;&a+@4tmma;;PBgZTAETNkvD>u`|wJtKy5%=QN;3wZg5U zK0A(cUpT9kYnxTATyo8;^zTPS{h()a6cU%>$-sev%-T{AjdT&g47UfCe z8OAOzTUoAdNI`lOp~##rORYIem8b~GPw?A5gqd!88&7$Y4-kCT4L&+@{+AbY*Hws| zw{HfgSCF^GH#>iU<79R(xT`()UyfQhX#oDvf#>yu@>jA%?D&wAH5dnV8!)Kn67 zetsx1voHvbscQwo?B+9UsRMuGK+pRDsymGA$lv)9KO$bd554jcPc|@)X>{rbV@H zCI63=bL>Sx;2l;FAhSQ_KPs+=T3p%3ZXt)?7SJ2;_ZW1yn?L3)!Fo)Wfp^lq9TcGC z7cI*Ykk@A!bYw>=On*k$<&`w!ZBZZiGuA?b9<~S2l0OXc$DJOW0TMgexk{s>#NWbg zru33kpt!1+ZOfL z(Pi`Hw+h&%6k2TjjJJ8qX9~_FgW6`NxM-1515oQ#@1dQD_F$&+jE zi@GVW-YT_M=<)oG!C!m{r~JMjLX5QQBu`A%*T4f?{;>Jcg_AtB*L5O?(Fm}eBr{9Ma3(ZR`yWi?UrH7JH07GN|F+((Pp6lL1jw~g zoDngQ_B{xZGf`bZ=_1l^f>mI1rY|e^*4L?6hhqU%dlMzb2FM*!V1~E0V}TJl{s7<| zqB?kN!2wDXLhfFdDP z4JuPIjv5Si6fa$=wq1(9RB(vmG?SnRDcO4ZOWvo&|4adM`h8#*GQQ%aI^rugTMxwv zYJM~wKH5ty48UMCiQfN;|5A#7w@&lX+t9?hzFz|97G#w&zvj$Vty{(l!#_@_3aMa( zc|7g?&F1glDbtDaZwHj#|EilWRC-ycZO3y|y-- zG^A2sFpc|`KOAjIrI{CVG}zw=jjC=edCj*)ip3nDqz@&UG4O8rUSU)J;GQPmLh&tp@&~RR*Pcf2STzmx zUW_8i_Gf}xL&`dDO{8*PAkwpcsMYO%(O@vkle2rz zAE-{hbNBIWz^BqE)LbzU0j}2>1P%?y1_>#&Nc%+Dsz|-;F0q@7F!1Ufr0)b z98>3<=OITPsK7b)p63B+KF_2p%R@lDXVd^TWIhqDHFP&C(}h$`IISKOq~ago{1r%L z5Bj7-#DGJi?F*=UW6`NdXJAgCVlYc*rd9h4YIZG)udR(%s}@0&myD_!>_`9jmD5R4 z!iV8!w5n~8bwSiyK18!9^f%tfQr!Y(XsJ~88&8dFq*>#%W-~OAL5}m*-J5>ncN1!u zQWHRs*!Y`szCsZ#^HbnV%YWyAJ*`QS44M#%US*MY1dwN9sd=J9eQ!XbzyVq1G|=D+ z{N6395qbeEs&HfS+)cpIM?K%FFx*(b)@bR=H26g27PaP5r}5Y1drv z&!wpRU_LuCs39{rSwC&DH$SPVOak2Y0Q%$^xf*$s1~4O%f-iEwmL_R4F7kV{o$>>Q zC(US~JsA+b*?y6;a#3c$gZWVSg)o!1{N3dMN4?$$V}8s6^lbDcUO3(K(xOWo<{*tN zy)t5z%?=G%MgINRC7y*-m)t`|-qo}TVDy>?tpN}x;YH^tjm7P2Lx{?Hl&I_MJ`urW z{(rKrJFe<-|A(x@*@wM3hk3q-dEArXMn%DynF1*(sSL%`Oohg6mXf;dUFE8MMn%XxB~sy`Sgv{T}H4{<-%h!8zaYJfG(?-oqz3z=H$vAYUo!FLhb{ z4BWBYtlIpdFw-xEYPVSIbm%WWM5WF|Ux?mHqm5ujcwJC?F?-@b5%PzO>WmA#Zh%Kh zr=1u0Vx?|n>jmCQ67#Dy|77OS_Fst0wJu5sqsuSyHbL2kV|NnHw1+QpZP~pbQDFB| zq5q9>O3#ic`ChtLSz;*m--!;V1j%B?gDU z>m+qgvQs8mLSto5v6EFEmQmg^9O_3-2PEz3a0;^No?fQ}H}v-7hH@+P+WsoML&);> z#9QeuFQ=Rci}4TTUV`?0Yqm>HT7eVA#Y~6{Bl8$5(v=}jIU|qweb3%gHv4YR#@fk8)cRE*qi0T$$u39JFsGr0P$*X_`Q63Ho|OP3v)^#W~f$K zP|uR7lu_V^2F?#82Z$FxdTVLwfV<$c-cIfU2q$qMd);L6Vbj_H2<+ME!TgrCMFJCb zJpx{pk5i6J_WL;Hq(MIOu4M_)R#m#e!-S@W1&MAniX#0229!43k48_{4*)uv+yIl8 z$64qTUnh3~r2nF-5-Qn>LWdRA5^S_z_0eSTq!!y|KPT6n$<+3uPqNmS#Fl=@lJ41d z(n+H>&S<5s&8YLMX8FkPk-m zPLvwfqYAd`oJ`+`dbtpVdTD~cOj=q$0@xY~>M+XEIb}Qo2@7+u`9W4Xt8>cSO~wMKj&S8syAzb~eMY|Iw(GDZJp2yrW#n@s zH`2t5xBG6aWaM;Oq7E?={5v(!uD!0Nlfe76UYQm_y(Xv38Co{rCs}y_EJvH2JiG-K zZMjYf7?5c%H9HGsJQO}s@b1PjmK_%|STzOuLc$X~Em2^rWQC2IHLOXGCQ?pKnuT^) z0LT}m3v5wx5qUbk_w}Wt_@VgN+D~Fpft8@}h_gB+iLLL~_&i!|<;PlQ<(<&-7S1_{ zi|7eSpJXyh99!#DCEWVAwq4C-Pykv0aPBgjlWlhkC~rp6FnZhO6pBDV-=jJInJWO+ z9{g|-L(vDG3&iRb@U<7$1Zkj&bSTitT1c2Rz8x~u%GP&6`a+EfUO~<=^0(`d3yO#M z|GL%HL45J0wW&zoc48>3zav7g&lkoA96%*9M;g}Wz6s2sCgB8R_)Jj!<5tkhno_ zF4QR{k)$L$j5>^D2y;sAmjpWIJ_@Ak+V7&Z(Hzj+IHh+0)N@Oi`g%iQ9cteJp7yaY zzSxGR%}I1IjAMsXaqJM?;pRmF7Mc~#zatGY`<_JWVpq5tQi{l}M-4P#3m~&S;ZB}} z#L$V?FcCkvNKp$(Y3>CAXb|N@IC-Z6%e)_;fvO0nB#pM+4ERlR1fM&-LZG#)7IW>s z2q#NoWK-VG*en_yseT1)Vus>a>v;@_zsg7_m*@(0e*_iodn5UBHCS435PXiV#n?i) zgUgpyb6G6)ZZ&Gh$Lke!M36;rAUY)F>nCF*P*di)2`Y(BNTowD{H47@{i|?P5-5eq@YCtr z=r4~1ctp6xW|3Uel31rA{(&PomL7}cr67H!>jMIO41=9&`(mBB;#WI9(x=ekI6gwV zBmMEl>b*>KR~&zo38@{R+F2(^xn4 zZW@xNpSQdcoOUP+;JQk&AR#P=_i9()Gd^jA?=ba42B^DNICw)^?}Pbip@wMo3_p??R~&_Z1DD@k%UH8$){Yb=}{(b&iSuz7ZSB313f zA#r)Kll%GeS(U#vnNM!XNNWBIr2ik1IaGI4xKhdbBU-mvDSQc4KSzv*HVOad`V^-e zlL#7tAYQ4jtGnDXp6t)rd}yMRA6(lJ%=k7t`L7!MFuLn{8*0T*I{Aw=mscD8;N-iJ zGSgOtqY@6N$fml~s6FlcZ)voPZcvD6e%ab8zl4EJW;7=OZr-q5Ejpzyo89Jc(f)(r z763${p6_Aetg#HtAuMm%&_sGB#XzPsUaqJD2B4-^%1MKD)9F#F@X%1f?ntD{?}7dr zY*Fq}r-Ffb@ihS6O{rK8d)0NkXP_$>*7O$QyMA>`9V~xZA9gkJ>}^%5#Fu>B`gIly`wKk(Zki%xPTlREfZ`#mEPZ$*x3d8)mHKVS*VNum(kT8+_5vK`ROJ2{35soaGIhOf z(9^+DoKv<;33gEZ1`wpbAH^x^g;7q4Db0J>6!|FoPE5S z3Q2o|(FP$XueFz|$MaK?ZZ2}3{>ga0f|jANQNT_c;hT#3C2j(zeW2sWda~(bR}3{@ zVV8Bb&_|2-+9-aWv?{BUDRlve0uP`E=xO1-R4v-#cjWjiN|UzEC1eg6qglGBpEsUH@<42iIPIkF@mj2GZ+ z@sp3gt&qLp!HdwIfJ{Matymko=LG2kDyuXDvYZ^d3J)mA<*xtwiH1@vbhQvxl+>Iz?aOA#K^)=4qu=^4#?D0j@2#i4v|jI{sa?ktNyB)0&X_AA(nwJA)6Z?r&lf0wz{g zs#@J>4@r9TefIBBp zb6bL$j?Cl~p=&1R=q0Bk6De*M|C*GZzjTAsWXS^|LW+3L<5OM&rRsM8gEisR=pb$5 zPA2P-#1J}Thvvn(S$u*as-mtD26xxkY#L$>x(BJWser4=)~cW>!lh4}wzZ^(1vgcp z#uz=@DFa^7Y_7cjM#7YZsC1{ueL)NXpH2&+59SZyvTZKQ@Amx@9h<16)5RKe#4X|8Qb~Wmjd8M9~tgvdA!U-_7^re5z zSvdI3)Lm>g_n5ELe90IDxj)?Cm{~q7h9}L#i;>&q)=F_?~JPaU)i0J-@ezpJB^A5DUQ( z8ccuG7&HKzJUf~%1tYY>TUu_0n#(`~p8xK)K5<C{1DVa)DahR*clyFFe1qWoH{)PY_U`vAqi`L?Nj1V3w;SGdzgq^_YyAnRcyMK&@ z64hoPF_lt|_1UGooN7y*GvxA~kmjZfr5t|caV8CnauzB!%laD3=+`eQ*NTMdt2p7i zbQL&r`x4X5vtF@Z42rn z+OVwUaj5qksR2Cd%yNF<5IsSv`+`>{Wvt-jx2O`zFxRZ$`)YeS1d6dMIIpy|WBvjS z@(5}zM#c8S3MXqsWl>Qa1QD{zcp+R`83PHGjjX$%jYebW`7(|Ky{T}(gfxeg=(S$$ zER|>XP-++km!g7e{IvIn+E1b5KEQ%!Y~uD+^9dj-`$h{=R2cNu(l@fsfiz(6dj@F6 zr7P7W8geFQFlah>lVT8d#zL)og9=`kU57VTswwbDF$zT%WSU%lEi61W9^0jrPRX&7 z8jse6keZM2K@7NY6^A*mK-|Lqhy4un>MC_bta8ql>$jYT3!Qi3a-{B8(&^&92~>h)F7rvf6|M zx~qaWE&{(qdX9A`IWc5$>D9JtcSe~ri{c@WotZDp2oX^gliT5J;c({ z9uN)gFRIi-s~g%NCBMMuD88Cc-0W(;>xNg*!LP6894NP4fkKQ45+H}q#>?{uL$4Uh zy#jr0{W@N0Eh)%F3L_u{yX!95a3Tx=a31XNRp`(<^{EJ6m-Q+LnS8JQL<+0-bqsOX z@>Z@~SGKZLAgt99%78x8-gxBdwd;9t0U@fIm#=QO%4}UaaUSvyPNImC5N;O63-4Vx zCv6MRVtZZ<_q*L8aSrOZ5(b+0*YHZt8-^Zd76iVi@3t@>s{agk_112Gd7oYzc+JUv zdrvObjJ+6i086=#oJL8a8oXJg_P7ij?Him6#M{HshpGMn=#7rQmKRBB4=N#Xtbs*s zl-CWArh}>y5J}#?md~92p}4mvuJ+f+;1X=6IZx`Eda+C#jYDf&jat(P68-LhdM$1*|3RE09jsVZM7Teg-sk( zVCOQdX)~X1ZTrHcG(A>BSs-)BGRe^vk*S`D-9v#0IwlSVit?M!RfGn4)6lx z<2Au%0LK$(!Wa-gzb^`65P&qR2ao;LI1Cu>@RhSdnf7Ka0Q2Ykb^NJ9aRuUS(0SX! zDX(NGMTUEci}F=$&__HXFdCm>&Mf> z*UPg61HeT3;d=Rqo3=Wq$ul6H@*r=oU%sYteHkYTF!=#-;#*{ivqN-pAOo0p9DT5r zzZ*>`AcKTQqkWs&7n??o<*~!1Hknk^o#UkKHRQJTc+@66+j&9TJ_houa1DGQQ~jajsnqh3 zDpTFUua!uDO<7F%jWxEO1lD+Rl%CFR0U)BamLr2>Lu>*qi*^|4_gZ=WHrC&sL_HHj zV;ciD$ox>!-&?0a9pteS)?iEJhIPx!2K8qpP^;^he}G{y=gr=W^GCY49C|Ip-!RCQ zlO#$9<2*C<1Y05~Cn!~Ck_o1@M}rl!pITf>sFYOcGu)_-3ZUVX zpEOmgGq0e!alU9Yh#Ib=9smK=CUzD`zVsO2Kj|H*8alL zBtxidrx+K^n=)4u-=Kz@_+;(9$tgAMVOJzuhM*;YIw1;jx|ttkccM9wa>DGv>Lvki z54zI-;FTze+l9RrGo78A7N=eEMDohlr&4Y*dUQ{|2&I6yN226#1~WNe@;^kc=JY@K zWRJkkkr7te(fy zn73kFW7-WofF4QR`F@CHdX(?)+|Ey>_ZVhlwLd|NR<}bfm&Z}tUqd2k%noOw2+(l1 zl717xboUOmXuMj(Wkl1@J2<$=GQas3s4AA+!N-rZAVBs28gf&dk)Hg-Ap;fYTltpd zl@&GX;KHKSEHYe5KttD?$U^Kdo8_tD{wI`wn;(h{q^g~2mF$ugUkp9HlMCsh>q8=% z8o&!^{-*$ZFMw&uuE%5KUjuTEM7JI-lKfr#*K!HKJ4(k;?%G}avO4Qy6?%3Tzm{r0 zO!dz1;`oG#MJOHGlMrs34DhW~1_U^pUpl~;GVun=YPZuV-`5Iq%tbAf^*+=ADoP>u zdU3Z?_HJz-2Sci<$|uOQymZi97K3!SA}tH>rDgSMZ=~MIq)YfGRX_y3tDdusx-%GK zL;4&l#0{L~%VVj}r8Cij27VM?-EJ6GYx7{2C0CiJDnrM>x4NpFj&G+ zY|WkgRN$R06@bMUfgn8Nri*v-5#p|k8cI_e`5#j6we^MYXxi1t7X<%Rn`X~!~jz;FL2M`o|b{E{gn zEz+Nk{gdyZ>lsK&Rpme;{-x>AZGGA*p-bpRN~NpHJ!<;?C>UB*&w#r3-#vVHGOf*e z5NT;vJesBFzC@%L-NY?2aFQX(@ih+3x+XqUdcO+Gq^=ZXwVAK#VN9tir01G_-PE3A zGSH!iO*~T;%~Eiw!)Yb)PLe1yO?U=ub5djMEb6>HY%Kk${+jJBZf0lR8WP>)O7U#f zG1Rsc4u8+xB`ycNZ_k((glEMhU#udg_q(Po~;@9bg@|f~8z?E>tdi zsdk6b6nv)ZaC_}{t3y)|T5pS-K*qi5TlWF4?C1sv=grxxZv0s4w?eyS`(EC_LR|z2 z1e6x`@&dc`Fgy@ZtA^9Xy_{Cd=+PR64VC+(N0mf$Y{}m1=hrkH-RG?}@V%G-{B5V}UR z0Y*@BVWdLY_wn_};eJn)X%y{Mf70@q(EF(KHwG31>4Atnaq|H1P%z_~{(!JRPdmoi zG5h$E-1``B1W8B--Mx=jf9>}P$bFv)6qkZ-clO(W_x!n!@2W^|Kq)jIQ1`6;>OCY= z_lfvu@IEmE88pkT-p?)9x+!RFw0>iA(Zxm=hq~L6p$p&4Q2_aFGA&mB0RcLd$C&+y zU8gnSo0~Z&14s~j(Z>Kp@998tq~+T!7QlK6e+~{026aKQ2j*7}$~oL9o12_TTFNiA z^dPkD(C4iwFIB4wq{^rVFF^?>%YZ(m&;1;C;_i3Ok#Xb?oZL_W4l~XxUkfmf+I?cJ zorgnkz~a``kLtajTPUTw{hZeSH}meyattMUKy6#5QkxMKa%R#H2~l-#kBw~VPH?L! zffUAxn}w~p;6Z*{y%eB!QXAEul>Rp!bBw+KEragA(t=d#?JyTvH!x&Xs@&GQMUn6# zfFnyEQV~b7R9%hMT-T9k4Z04gAH_In`GC4U!IFNSxPPx_F>oym0UYemka(RLh@OgT zD?OH4MGvdZ-)td|G}MM3#{Vdc^w3}5>&Hd5iE>hL5-*s4#^P>NJn7vZ8eALZZ)YYl}iJ<2;D{F-UF zgQhL^Bc=W^4u_?egD6_R+M*w@?j5MSq8{hUDjMX3rtR1P7m7_ZzI`+>U;2CwcEeI3|?3K7#n~Qb<;a7hCjRyn|c^`B_0y8I`9o)ru!){I#1941N(?jl4L?9bsBMyWHdTDZ z)+;DEWItL1+u#_slRXF2+1Fe7ds}{iNTt;tW7ZGk`gG#Wpfsu)VXzL?Z$m3{gt_!; zG=yhiNTDVxy0B4nx{Y&#${O@_I`%7xq&&szqtqIjKwI-s)`+7--D@zCjG>)R@!vpk z63JAqKX?SEEdliIQ+!oDPcc>q#;=*w{Ca|wF8>$bZo?CXSZHwD#f+%&;zu$mM?MGK z>ZqV3`u<<)=_vUm$+X&wEy}wS4Ff!}V2|l%(M>?j7FIx>@X|@hmpt<{2jvz!1e?&J zFqtNLJV9zM%Mw&VbTgk(7u}WQI`F1&@h5#nCGICP= z4YSHBR%*?4O_w(!aQ>W`Q)U;V+MFyuNZ6ZqJQ+QlP95geDeX~e_dpWH`go9!p>i#Z z&>14%)EtRY>IP^d91S-Z&3OwkoXMLwYYJabZBqac zYJD1-;2Vx|eq?(YO@yqMQayv)Ny6}Q82x^flUiwQ(42$;R%SczJ0PBrQQZKU1e=k@rq8~51ldSSauzbPoc*<`6{K$Z{Hrs zM}O0)E?RV5e@;p#*US7j@H9MYH27DzR)ZrIY@S|5Oa8T2c)iu8Ve(pQ37bI0 zJJ6aO`Kp>ojHLcCU^ebA!R%<9)ge!*&ZDRXTbF=){mFuG4Nom(%YibD3ZQRZ1C&RdHe7;sTFhOWyD3n`aFR zRy-$261pI7@n&>f4&#@qh5o^G@hx68=rG6AiK!808v8Z}KF}GHp}EdWv*BRkPGVsOPxNKn-MK91alkqPukw#%Q~@2H2ulwdSL%+b+w-8<@1C?@yI33+tl z9UgneFQyA=%S2L@1pZ*)Vvq-fkZrWjMqoQE0%P! zzsujpNQ}dN;Z*)Eul;U!APNWkL#~F|T>pLfuG%j=1tgq(4+JH$rbd`3`8fX=u7^;m z{sjH1gRzWS>>Ur>Yx9?}f%LEA{7n+aSkj2f@VDdqO|qe%yAgzfloKinBNYenwi8h6 z7hH#QIWDp$Vp>&Rx~BX(t>5B)&L-Gu7K$AQ5k!5L8l-D5>P7qoqp^!$fiQ-ls_!kZ zcTsH0?c(PEav^XC&x71&=?;|Z%F@kqH}^BZ>vqgV)&1lSuuV!%MN1S=_j}+4 z^khTzxV>Bbh6hqc)7lcS@;UT^r9YgOjP>GlZdRl1ZAigJTVn!5Il;eDG#uwwy%~}x z-T&qXQ#rvmmAZ~%pzVB*udF&1Hrdu^A$40{iUG3qWSGn~K}CRWV?0{P8TMp9s<;Lv2*>AMPUyT~aorM|{9< zcl&<-bh0iEGEj;76I+=*UWg8Ocx)A`)e;MahcZLb2E|!DXq|NhIl`^zwZV98-YQ`7 z_(EiZK(oovQN@S+ZMN;e81>x*N9OxK^{i4>%SSziFNmHLs& zMw;DNx(FK2PlAJ$b0z35tv9fEHHKQMU;#$O(#3&EVRNbNKFFW$zi3FIw38ef>PN>S z`vr8FW<4Jwi8S|~bV@6ou9KYMI8O1ps;dH@n@*|Q@ZWg9J#SiF^zA9`{6l^?nB~Vz z4ru61`Ir}W=`{GwmCQjdwEbf>DNF&?4DCUK7x-23u{8F9+?M+v1*Yd8^HteSJ6XJP zn6S|Syx=qkDTrE!P}hAxSI!${maK$c@8oDIIf(3L!}&J-P)jy#t+fY`>r=kr>R%%O$@rAln%BPt(9;$(oZk7AvpO^n+;Gv;ii092 z(8;h)^ruNZe8Qc$(>I6i>*3$lvTQx|^r#Kf81n>j_3~SQ6gfnMTalSm_VR-RWF(%> zJd~&%uxie2QmXyn_e-tNe=6@W% zrgf0)TkavhTMr_E%9`&tMK^Ee0$y|g3&ens1bScQ3y9(QbsWA=e8U$CM0Em<|CX1d zBz2%K44vI?5;U3g$wH7Uui1$Pow&1;4g-J$C+|xPc+arKY7DH=!$56`sOo( z-1T0MhmWxp9~rJZBISnt~qnkYG^QV>Rw zyC!(J95st|1a>|IpEdjh?Kw%jn*6 zp39#8^Sn~~?-tDNKJKtf#fw}=GOn|ahZ=y=qicWO*Jz%!+=GP?>8AUZ=t+b4)N^i* ziJ|&h^r}kw`Sojng;?vPRpo0|U^QyG7*yixjgo#iDxz&M-i)9Sop$RHxc$y3&39{?icvs zr>Wvj@}IU@wdQYcL^P{((;dI?y+~#~m<1a4N^*0oYXU-=e&t7A5`h>$;a6VMg}-vx zt9v6Uj_@1u5c9e*lxr5|HeBYZ07s*ea+gSIkn|8;0%i&|*DNx^P zJK!xp=?^~5BqyUiJV^&-MGgiKB1;C{VqK}H-TWR}fIaH(yFY@Nr}IyhrI<~%_u0~E z{h#WGA)kV;SP=X~|K!76086-eHV``c|70L8UZhH3U-Dmmo6v=HQt{#--Twm+1L-tF z-p}Ykm3Z=B{Abb(r*I~mz1IH4+g;mB0R*O=1X3RSiyQn{<|uqtpfIpr;EV1a;<7h6 zy=9xY^a6vo@KoZd;{u=l-4}R{Y`f^pk=HPe9I57UoafNFV_uc=w0YSkIZ){)$iPcb z0x$l$+wjQkOKcg`bV+STz$+~ubAY!l@#nWK0-mn+7jOSPzKX!-fRh;8ST#3s&r;PP zU=(?s3(DNHUy(^aB1a0XJ`!l~EG#Js51uF7yuB1|A}yiL3#M#Z<)uiugK9HGedLt; zbuUH2!Xd~qUtG4kDh(LMEdKynFoge0#SlfpXWE7+neui=Q9~CDBafZO@X_k6$n47D ztw;u}BQ{kL@R~r{=dCb1%v&jv&qIt2vNEFrOd06qmrv7FY1(e{i*Bj}UUa38B1zd2 ziUpOFEb&*68-t*$6dJMJAA7j7hXaTdZ*LC`p8!=JZGz4?EoeMn3PS3>ROIE^83& z{xCU}(){^p_r)7w0yrf|N7wkvw?m!Rg*u!10|N|$Q&050RaWJ1{``dGLbJah;F>zV zlafD-K&nL{V5NV-dV81&NkpKW>6_?19lx#4Q)uejzlgC>Y=FWQ)jBj!C zK$3&pLhBRQbBnsBt9t?GhB&%H@9GuiBhMtS_jThab-5KujDcT7_c4quYHv?6Qi(xf zG6~pPmn#B|t)z?R*=|sZ#s8yGltJg8iSn}ug}Awu8$BJ6$|+bTRWG8vC8N4_7gKLY zpwg5Z3QIL3->odn?IuMQ0YYTt|EU@P1~WQfy@znn@8z3Gv!(^hUEP+HW~ZFxW`C)Z z0xBo(OeoRGqDT{a3ZzyuKkn*tibCI*6-MDCQrjy*nq<=UlX`dHG*Ialr`iy{LN9-5SxK^iS^$dQAO|>VlAT zI&l~-wL4pq{B?K*eBH7EQI(zuT-&pJfj~8nrS`^9f6H3wLsn3xYHUHnH(H_GYoR^* zTA;!mk#W>p?l+XSR$4t`vgs^(VEQ9MZ=Ab9rCy0%GBgS@X;%<$21wDzQ^6r1HG5P; zkN%GXW16mqz|MW~Xy3in!+_8JR5TrhKt3%ER=DKNqq=*OGXxe(1_DbrKur-=Zn*hMj3@QH+FsX9A zn)jCqjm^EgVlDK1v;yV&rU~9+1WR3I@py+2q>%qO4>foAKWOZ02vsZ-KktoE-14!j z+I9u8yzYyB3{7vk2lTW1Vinol&buCvj>4;eRQ))XuLW+ed6X5$K>}iGv&82$e2g(m zbDT0p{6jO&pfI~4kC#3RE<@eb1W0qBvkklgHM*9pGwsaqAl5X$;YUh=Q;X?AzJ&v@CY3a z0S-TM_@oW8aKvMM<@UugU}pFR%Dipi%J&|1L?px0B`vpVWb1e3U^f} zX_iek`aGF0OcSoLQSnM}n4%uXly!UxZ|9<$po@2P3NHreA*a%T6nWQ;?#(Gw_>gaG zV_&&%V{Jaqcq=fH9^>RCjn0yMLsIYJO{cmjV?wf;zJ_4jmL4Mq#B#?3>YD^>lUjw7 z7%4Dae;w$yJ%>@{>DKx1x^qAWwCmr#0M;p-wA6V4CY$wqAXJ5qV}Vxv15R!A?E!K- zl)99BvBXQCiDY#y`&TxI#ji1F6R7h;A)gSJ%2{OA+Q?|C?HZz^*((B)$YczYxm(*h zdt}r1A%37hd4$0`Qxzr@W5m?yl|qSWd}AdqVoKe2hkvy3ZzO4SnlKgl5HR=LFvXu9 zPveCsM=5BLTRfm0NKK*ARZua-rSl>xeFK?d%o+fDu1Hs8i=_I8RJ`{)O@XvGou4s$ z4Kt`Gou5a4x-vuDGwceYpa-Rx>FNyrC~c+{`gfzbgBiR`E#HKJERe|`+4&OW?MgD$ z<10mo^F&k5e51!$d>rN3p=A12Chv2o(2gSzC2?Z>q=S{C3OW!LhmEz5`%%d#bRes; zc&h*yC>z5z+(wcgQh7FCg4$&^{g%adInV;kaPv=c-O3ypyxfW$b@v*ut^WIk$zZ|$ zL1!C+x#|v`lO8QcyC|-Ig}~vY00)y-?Ih7{pQKo{S%XyEl7^wp?_elX8>!lX3nq4} zA^dMlY#4?nP`lBidWphZg#(-l4Kwd2anvHWjr$W!>vQco zgL&#Y;Asc#dsY4o11rdW%kUNlH3xwA>@9KH&3idb5FZ_(CK|KYsnmZYe;4p!f&h*U z9@5xsjcPnvWo^8Bq%4=cqpU8;3HlV2oM|Fu%=ER<`2uwdyOWUIy)i)~1wny5&R#tm1=1}<+FbXj8P z_z9zd-pJ)*!K*L=S2|s2I2+j|BkyPZ9Mk5hrORt7*D;`j`X9xa4!_0;*7Eh!%U7&W z1tw}PLxmR+nMuAA`4P7MR~bq(Cvpt7HCsp0?uoo+I?EKi>jZxz%{iQCGfdpz|LmW)Gh@QrepfeYm+O;1WY_xcqB5~ayRsc`5 z5~Kj>NwnbWa8@dSyVXqieKv2!Xj8dg$FMs++>GO<^V&q80nK_L%5 z^xazqGxg;w$?}Jwf}V70&#PkuIu~8{Vhq~xHW-duX7G^+B5ovITII0O(HZ3SMlm~h!Xf(tT1G6lA!rg9Qe(D7 zV`eE5^#oE>7S+yDSV>Rh1hAt9Bxjal!kyM#=`A}yc`pqSPOG3sTm%TcsDS?#_6fsi z_Ir?`tK1kOS4<&c#Wct3tn_{Xud2GIVS0OP8G?4kQ+~3_$r zk7QsHf&^U8fFXDSG;n4slF!uAB>>5vLt)|YY_)cuOYRX~=$>4JDS6}^{u-Fq0XuLZ z)kas(k&*pxl2g?6g;joc+iKHrx@S|Wo-Frx%a)Ktvh=k;Q?I0uF9i5kbT{j*LA0-s zSEzg)U1I@=>nY^-eQ9KBNK+BN?$Vb-lW2YsCw5ZkzII|DAZ*p%@+;**R5(>wIu|Lt zWwOYt!=9yflN@t-fk9*|z27vntHUzAhi z=JWoeX#YI*Z2HqUls+vn={;$YMVE@Ftxv!_Z$4il5AR1|D#IbL*8t+vj`@76`{yge z#5d&qB8*gof=a{!wed8a+D^lKWyJ!1`E9%PV=ZgpyHH-Vp-hX5w)+ej)OR$@$5I9$ z`f}+)#NUFs@Hom{$Xm7hx}Xe-o$ssrn^1vFNL7s)IVjy<2E(+hU*f=jTN&(6rbYaM z8a_%MM)`|)W619I!7dc0wTskRJk=v1$z8WRf!)oZ)yMq;WP@$6x0z%uOR@f(%Q>7L zx;q>KJNJMBS$R2!>g|^+^W@eoqTbT5Y})=Wy-bPVs(>-d`BWFyx9Ze9g{lwuAQE^( zFl)z6Ry{PmB4pT;+(Y2o9qXqeztasq-xoBgIghap}Uc%3!|1?}LrH8uiO5PS2h674)Iq)Pmj|!6+Ro9mw zMO1x`4#B>idij$>S8`HO|Bz!mS(d6N`V!!$a+j(}$)RpnAm)FcF5{Qb zbtx&6a&7qVDqokyI;nIWXzA+)lFs(M82G|s3qzq|UitSHbN$ut2Xu99C6em&5)P)N zH(LM&n~JJ!ZHdAyrO9NgHIAe5JJ=w!^l7xgs&>U13>v~lfaN;B)y<-nTOwsgUqYmt zAH-BQT3foQP-r9bYL{x0;a718^Lj2AbDMZLmae`^eNlTb zXv_KyI*NB)#rqCKDQwdl;b#6pLjn&efG+L0JoL!rT&nT_KxpNF24k5AR z((S}rjM}{YAAtb@9tCSLOK5uB&qTRHT|R^0fH`H#Xt8o7F z#9An~QaE+y_=Kww=+IpOU^gsFNb%@jwnbaqLfOYIe>sg>Vyv+=VWpa=^v0-p;^viV zVLmDuQgK@X0_n&~-b=RVR1h`Zgaos36)zB}aVP7qInQGjT9K;fVkM0l?m*tzQ)JSL zm9|}IxHYd*B!f)~v35Nn#H9o#SzoTE>Ni85qoABqthP*u+*FMLH1qCqo`T?YqO3^8 zG4NqI_dH++2Br4#Ah^%IGR^|UZ{)AMR#4AoiLRd}zf_7h@>X*Gww zzQe#S*`oor-DVCKee}lMu#CnM)DTau=0{QbZ*cc={tMN-v#a^_qWJ}Ew!!2>v1@pD zmG*(20*r@0EnCCCQCNn=kU}yZnD33z_Ucm6}ekt>caDmF=^{QczwouXIgWQH@%TxK}46 zqk{@j*PVB{kUOpCr{TCYCENHno}{MB5fm^GOS{)bX3)4AUI-;Op&ivzfW=Z3j8trE z4PO*YAY>jW;Y9L8{<4Nwx{R(JUm{e@c^i6)2^-W9JB;d%dc{(#D_XO#$hiiC-1P2f zE%z{@h&zFbToz4mujR^wVRYtN z4sICZA&J_^TfwoBPt7?BY#?g`lKg4cM*g+ZML1qiKj|sz*CZHpsz2@z3wEP@gh8&d zNrn-$B&N{zJqDh1&7ZRg^(T#-0L@Sk`sCuWdhLcrxcYwL}=tjf!#C8Laf!bsTX1hnQ&D!dtn2 zA0}ep4BKeR7WEg~0a%sB74}K7KHR8?tJTX~bfDdSatm))sX#3UC7(V3VVF6y;$>Dm z;DJnA-*`9W|4ODAausBL=xu#^Ay^Ze)6faRjow(*%d;MaO)8{Y{U zun~>+lfHE6Ie=4L+trb)wCqWvIlske>K#DzVy0Ra8?8^gdR?Uo^X=aX7qU-hMhAjL zx$bWWg}fpF3Tm4}Y}9&Vf(#O+wG07}3MJB~=!04{)!2d6P=7j56YT6gBH;RFmz_p_ z8P9{FtftY&)Bp?-FA1%1Zuy54>-A# z1wyLnMqWZP5zZQd%GrG*M?0xZnESgft!ZKybaGlFwV=~=KVDqN*#O^w0cWe0A(7*C z9%;^gcQC-X4~AvX^*5<=-Vq*=B#Dp^7HfOz@g#q`i9-bFRw#;Z!UBjpsk70UNke3k zJYYAm^=4iK4L5UYQuHu75LqSR7Bc)p871GjkhrhFs~0ImvJwskL#K zYMF20=OeXNdOnJYwagKt3RSzO<}!37YJAivqfHHbsrZpp?28+Ncq)-2TPsbsa*x5Q zI6Q||-Kw6BHyDS}yOCypgEod2@)ITN0F5YrKL|XNz236ct-Qj2BxT*E=3Dn50!#I_ zeP?xYugSS&^KD#M1Gb+*XVu@mbQ@3VrPEE1U?;A*o$p8zPMiIJ*LvV~`MIJe+N3~2 zD?KkfsBywL*_D^Atg2WDFL=lLEE9!f`dD6FEA z$~Mu;9co*p1`WWj7%-%_-@$cWjtNTi%~Jz>wcR?5x@RMO{q$kK2sM9$k0^jm&p;A4 zb|)vKMIn$NDBQ_~g;xlg4)7+9r1K}@G`WqEO}-PT^#K4^{@Tfp(7KDaRre$M;dF6U z7zf?)l-Fc|EmMzwAf4Ey)(^7<#ArN)@8(O)+^t+C){iD{7EZ71=FdbKE3I?FD70SP zq5)|zD&Oq?H_C8nJx6JDDWzQTr}fKUr&k(-nxgzK+dSYD0 zHGWNE1f9E!fkN;T21LRmonL%6-(0mKx+RGp5&Iw4y_-qhZu79sGRlILa#u$UTd-!)- zUo~f-U1KrOh2m&EJ$Vm@vb;^`Vx720opR5o()##`H0xfzpth%6Kp&q^4YRB(6Q-8X zsaMmh!vJk0F8%AmS`OEY6E6c^-3O2uB9?Q(Nc^Fh7d&cSEP`5w_>DU^$ zW9+-p%nNy5O<2)V~4C&+*p_0D*R>Uf$pT1 zMwqfpK%eYz3%>)~I}tEl`4i)!|F-b;b$@6@2)Y-{%rW~L$80p~0geQDlfz*&_5d%k>RGyBbo>E+ zkh077%ZC>ERNG!cMxFB@Um!4iZrc7Jr}HQ;=1@+jUKT42hQx8S<^Cu+o!pD>#M1EVW_i&F%XaB>gn5Z1k1<*&2ak!GLjDoMxPh5IeEGq7|ef;ziI>Gnf z-+*S{n#Xw?Yi!s=I`TOG_3_6!SMWNZNInNdof4?zfSPhm#rBSCi^pO+pf0TgYF%7N zrM`MMbsYpwVOx)phtf);rylj{75FA2=NZjOU+FAMOp+EHZaasX=ATch4dZECFZDcY3AC&#UC(V- zwdqmO;0xc(SJ$rXbZ9J&{*-$F|#5-L-D}VNsdFnF~H+_5__U`uw<)P73iV=m? zfk+=a$3Kk5AL0dX8y+>D?)jI)q^&qO|IA1l0RW|0hMT;RmQmLAa(Z5X8TKmv^oC)O z=bSSi_pqdupR4RgHfKXnv_69dwf)WT zaC+%q>OoVFHd$?OywM~zrz$ic0aT_jQe6V4)f2t2F)w*#h$jbxH$(**2xO zkFiv9sM{KmOegMzro>4zYlK1qg@>@CQ-{$V&+ymE(z)Imk%bV$zgG7gloUEXPSw%s zp$<9qmf^lOCMx*vZ44k51((C5#q-3;K^GQwT|A68pnw$p+a_}ef8 z1Ykc3L$an9IOaCojryqL1A{6(~BH{ zN;i2WQ~Qg&8l-t;>)9Y1o#;U7u;XZgoGpNdh(HN^EL>9pO*kL&*LpU!F9>M`4YbfsSDdW6M9t_U*aUWXEShDg=51^)RCn3(TE@=BXDkQJLkB-&ki@fXfQS zq)AYgE(i6TH)h^ZhKNcqQLdLQkX|~fMkd_B5kq2VBC_HdP-4~(s14OzhWg|o3@hrl zLsu)kop&^nSDCC=w{xZ0TO2tyP~H@=3?p!ZH(7QW$ zjqUygb*xadRT3dkKs2^qZp_85J4Ihs~ zQI&wXe(flai6&5XF-@i6{xsudMOs@ncmW2K`-07v>R)C6d-ojxZs!(b>z#U84VNio z8?J|u)hm2GMa~pd)vqY2;^GD{d0SuM2T}hDS2%4B=<$fb1udJFrlTiS&19P>vJuJ* zH04!Z)zY!3X9^I;kFG>|f7`3-Em@*to8HBtmirH1t#7{nX|T%0T)MILXBq5TcA8VE z;5A-TvI;EuBsD`V8Xac9x9>RMqh)sTLDt_oWQ@3Qp_~e>tN^OL%W9$W*Lm&8Xpl7- zFiz{pNS(QSeIZ&k9=coG>s&v!_@JWcdJ}d{t&_aK#C>Im9COK2N?Il#8jn z3B^cV2W&Q)&F?2-R*u`{q3cWu|Rm$lx`aARX&&q64rEIkPI$4 z?=Z}_KglTcg7KMBj;8w}eNVt}d%tzAA5x8Z5xNw$qB^9C+o> z#u^T_lmo}rZ8DKMKXGKz`QyAAVK$OX=_hzM!U%gLT~`<=lU_C^iH{AZ7f@nC z$bFw*9$h&tO;6*O=w;*utpUT-O$q*V?vq`XUwBj~=fI&K}Lk^5>xB6=$E+GA}iapjS98TWA;=EA@jLb>Vc zGvD`b4r`sQp-yVOh+3oM?L;3kyvG5)e@`;{Gyj1Vx&2|hv03l&Wi}XKyA9`DBW-(6 zJ+Qu1vZ?Dm^%21kRQTA(Q1pM~T{PN8Cqe0!;R;^;xb@bZVE!EZ54Q|!1xaqjmAy2mAtMXn}@p4CQ^uk+t|k z6`kG{72MQd8&1*TpeG1%+W^2D)t+$Sr6hH%m-~_01kVu~scB7qCSSTm``K)AM*;U; zWpbfI^${Q2U=pg3xw2WovgCs36-G2C`BF=dLHV%oH;BtTdQwdu2A|>d!%2Qa^{--N z5_^jO$bE{tJhFccPDv1ijzG+zyWPa_qPYGsGM6? zE=)|PZqT+2P@iek{ISZas@4J3Sf3oMo%WTD3h zqRvwTbjP7xzw1g&y5`gc@+F*Rgk$#1h|#p|6Mhp?Yw)E{)cxKP5=oVB8#L*>B5y#2 zdWIpP&p5;D(aRl`X{oG|>f@8HR#EnyqN()k88wL#YoFWKMEkzr7~S0llfoCGqD}Pa7aRisl^hHKIgw?s2CH~Xd8T>}R2)uW zP0NSCK6@PgC;uhAXQ=e0!g9nO-oSueS*TXmL9f;TyN6|8@gq3;i_Z)?@)hr-x-a1g z(mE>A-}HBzYI!?dzeM`brSZVku6dDtuccue+(LqB$Lq1ON-X_11M7hS_?jbO;SfxP z&wR~mvgjHV-O{cIC$>xu`BjdH*9l1SS~1z@lTZ%53*E5KIQWfvFdRlJyXPBzdXAqk zb1&Q&A3|y0@~UwwSVy_7=AvG@a$k&0 zr-Bn+p1B)Dp{{p%q_)$k_r4*~^wonyWRtabHjeq8kukxhjpgfCtwH0DuUBeM!D2C* zrk+*f)a!PPI=j5YfL*7hc@0m-1BRXLn?UFFI^F-H!NG`C%DP2a=G8#kzGhZ=h59^T zbO6LqER3YPe#6Xt$@jcBt9QV;dCMOG0Zl8Sd_?kB@+IKd(CP{rB%UBshK~1QN7B|k z7PeAOpw2`;)OB|TdK8+nsXx;?lwSOSA6WYyTZ%=+(9zM@66^${p%765ZqvrG6rz*;i z8U~+64#jop@pg*nQ=#wi)ZON*O~7sOkTkbn3NXSW5PB$E`_xmoPnjaK0tmASDH!j5 zE-dQB03mme$xP3n7?Sxt#DS#vEymmMr`g=EHc_WgcL(GF-t6amt9LJegqQj`*=acy z2ZD$yQS3(zle_5p27H@)^FUt!O^P|mvaBR^$~ zB_ZT_C8B`fG{_4d4pDEXlWzTqe`EKI@Ck%gh@4*81cbQcEU=sBF8TV?*;Gv7qkrc0 zCa2L=Rd($GwS0>#bHE7ifuEHqG~D{0^G>JQSg0yq_?hEYOCt1Gva&*g&A9Breyi>u zq1RJe9ShpzFZ>WeeH}$58ELX6C|V0gfL4c4qKtyXDfIm%rpD`jS)vXA*Y^F&+c75` zNUpA5`6O(4Ff5r4Jp~7q^S`86Y5Z^MkEK6*kB`ArSUG#c+N(6d2238%B>%}0O~wCY zC^Sf(C<~_~`BF+1W~TzoE1%wUa=#HbnhJjB=!Rk(pq0C^ZFb`)@;6iy($|0I_d7tM zkNiVDTB}5Yu^~b`S_dT0;o%N~9F&N}`sscL;kwFg(S$&~tim4SaVXo@9}M@QU;j|o z6FkknPn|`J|KvDjIT<^V4yga=9)kASCx7zO-Teg25UMI7F@o9{0ZDw2SLFpK2(@_4 zeyd>xLQL&{xje!S%NCb{CIog-KGtUVU;J4ae{m6ui3^BI8yyjJ`(OM-vYz(GwBtb^ zf7-E!xmxE7fIBWc6Ah=+Npv9W}5p9Vssw%Hd(Dtpn@dH$7fjzW;RpXjjDfs4HLJ7*$K zSoVZbFQz8bp}(iSemNj&o)I}t%da#+5MMgs!fZ4BeiM(eE+?-ClSk6UA>jJ{aEa3< zM_3Y8O0mt8Z|!lrW{Ia}y8|79u2B{rOX+$k3F>KZOF+ZyjwIurUtMBR)9(DJ33S^( zREkb9b>Aa8$ycDM8uww`NVSlVRJg8%P#NgkguY)cp;g@HFz5SG@Sh zlC3_`Oztbyp)=2)UArJ^^$wJC-Z> zFNCb$!yw|wp=P3x47W%oEWSv6|We~mE@5i6j=I4^kLu*(9B;NawfMof*n1gu} zJcuN->e5!wbxcol#%{j_X6yFXAqdp9E>SnYB$S(_i0b~t0djgG@P?yx{4k|hYK|Kr zq)-Xf(@q^<6<{!K(pz=%)}`UAv`97w@PFDOT)^im^x0<{=jY2vR=7+rFPU;G)2ADd?+n~bV~27maOkiglr zza7Qs-6+_^A7E+_L7DY11+YHuCowD1&I1A&I*K*BBr!spQss+3kp0MxQZ?;#6Ky(w_s{yrigh?V>7pM@E{ z`fbqZJ{8N)XL$ffp4=}5UkM8NloRKWlO-}>z;s78-5keT+ti2-l5I?iLEKlN8ZyJT z5={i9Nn7$mA{b`x4GA{PUQt=$TdTItI@dzNUDVn9%Rn(YJf0oJ%y>5ZfTN(m5zkBB zHX95ZFFq5krE~H85UU=9y0v#5%A3{%_9v3+wyF*V?6#Xi3>*oKNk-Z=2*4W$Q$bFAI|9)>Zx68ZBxD={)vVt{Y8CGqb{(G2$=mJIdSktX-= z0(F*47`3f9;tZpyFDI)w-c=4AvYjGbP>A~GLPgO3HJ~YvKa(s?fbVH!jWu^#)B36w zrHa~olD1%mXEOIP1>=~6y75iFXx8=NZD<;hgW1c+#*9j)w_N%^@L`!?QT=xMjQsnhIo z(V`TGga}qwYIEqx6gEM<1R~FE3^i(dDTB#(011IRC(=OKsg4XKT&zA9n4%iN@l-U# zfM#k1O8U(O!97jLL1J~SbUxJ~t+qsCTcrNb}9$$G^O3QO@vAb61^k()7DCls>8ZK-LWsQCHX6nQf?Z79?z4loatWL z6*7e`WU)(>>eOQ$Y(Bs{;iQ`#Y^`b>j_btNLoyMq>09(El;h-wuRdakrDCUJp!nzQ zPKO*Ck=jD$SAt{wF8;7p0}#y1y7UN_g8@2d0DH{T&?X9lz0_z^uc0%4=|;Wfl+r3bZ{rc4J~rm z#$yBdsXehFpkyBCkZTIACUC!8kKi~bTk+&az&FrQn~1Q}2LkjvvSmzIS8`2coy}mT zaqokv^>{YFT4%N+PrQ51zHkhW=CCt>e*ySj9o|4vN~%LI=-QSnx20nnOt|Qw4o5XAyKYiXRc$a zc$)6U0G>@9N3Dxuh6+ho?%#XeTYi~kL@?suuwq-A3QUPe!7tEPB zqeq7=uPDGprupFp%|w(Dcv~u(oj7K1qTY9S5WlQ4)%-o92aQ>&HWZy-c0F zVL-)W(N?-^2wSP5!|3;4{RA{zV*D?F z^Jw?|n9?d8%1_Lltsx02MK+u~oEOnt6qrMQIDlc8TBIyHUT+VggHs|j1|c%hgKVSf3t{oJ z9lt4UG+OwL5vg>-AEK79TSYzJ{ajRJ=meFZN2)VH1u&1U9mz3K@kuDrbo>OcOwC9K zpSpai^?>{ByOI117e{i`)xI?r^CKrQ*#;R3tpT0Bf?koI+SB-pQsf zz)<6rrHj^-RhFuBCFZdXS@-Zfgeov3qr&Kxv21%Wqa6YH#{_zIEHBxr6KMlwIiYgJ za`n#x@*T{!=t5p>qtbjnt?d&*8rk?B#G&f5Au_e6q<;uC<~yWo&$}AR1|?csxL$!1 z^UHVTbGR?{Fd&{8Oyj!J;#A)oNASezs6yUWu)#~P@;e7(Wz^G=VH-hOxAL6nC}(!P z6lps#|3RY$zd0EOY@JU*p0>FiQeh2|nv%sshANmw zd-!5)9t-Mgsd!uN;Y$q#a2Gx4VLxWN-|nQd9$pHG-ozCsongbba{zY0tRT~{W^lrW$rG>7h*3%Nx3SC#!dv}%8-i`I|ly@u_DO!1CT zP%=Fh)WcJgDYzdpG#qkN_FE*nFnzT|XH4LOf$8T|a$gB9p56Hg;Hx=pl>5WM{Q*Pt z-_kq#DAi5W@-@Ilk8m(qg>>JPoakPQG%ueT7$s5292Zk(J${$>t z2RmEiPD(M~w6c8VO)I2c9RHKdmnF9Auj2kpk(fokjIcyYs&5S%`hCe*S-QS95j1d% z;zCe!E1WfvKSd_mjo$=;(tmM`8jCkYW9@-fQ>k|IzD7UB{8y%dt~~&f?DJC`JY+vm z%EMAzf#Ronm@AeQaGDzMRq#N1Sovp_(-CH=1fu7H$k9Jl2?r)X7ho7oo62W!;Z(<5 zX#l0tPXX0*C`3Mc!DL$gEwqSL%D$p$j@iQKH$A7xpm(P6GJ?(t{KR&kS`PjvL2d50 z7{X$yCOyMMW2ZZ0WfnBX2;?VQgJ{WgN4oeFsKUy=6U^RpHk2SV#YcUJAu-bo{)tb_ zAIb7v)w(bfT|GkyXP|($v4#4b`}wX3hco!PF<>j9`J@l>9!^GX+RfOojWv1c{Mv#5B(LovGoq*E^zDz%oYG0gkB^3N8pW42uFNz_`X9b>{ExbLR9m1PS5 zHUTkD1+AXHaBw!EF{fQsvSwNk*c-FHukHi}>=@_s3{>$)oXTpejFUEpki| zzbmD{N6zA3g8+E6-vdm4_GFmQoc{($bJuhVI?*MolQh~s12@hH&a5E0N@(kXGSVsYjOI;LgLSSp#z zhrbi7#r}9>kAVZQVNu2~2-UECmg(&!yuNiFA6r}&pxDo#Tt&Z`WN=t9&vC6-w&U|0 z5(s#4p2I8tzxPUBPN{3`z61@!H?HIll~QGBlLtdW1=WW5cf&N=ndK|hnRyH+W{_=W zW(u+9vEm-#U=0KjY> zsM=No5t=_=DaHs1y@!6Zhtc}^>>)q`1|0r+KwICQ&*hTFfK<>ie2tOH=&Sjn)E)&T zQ~jpIkg!Fi;L0xT;c2eyXCwP(nQCpWvpOuRZtYhx5w+f{>8svozQ!SI%0kEgiSvIOQ(GoW;g#94@(Wqp5o)aNDP@;boV-MJcZ-3!c9>q^i@jAlb)^#JA|a~7E7&4pY6*i-~x`KQTn%nEE=236c?kD?D3 zI=DeHnpRCgr@>gvw;M3LWa=0n77?~uBJve<02_S3Gm~hU7pm6}6!TMy7Ontl&H*z+ z`C3jS#L`!v4vP0fY)PCr30lNtpx!)V;v7%$time_=O~%8r-bt@XsCGoujeAAZ7;hMk${ajDjiB*+)xxQ#yau4grt1 zNJ>=e4z(cQaH63xG;XP4Li)~&7-+{*c5K~KVSl|pqIY+4E?3SZwZD_#Dc512bMl2MhZ1`Y;F<%8Bs=zqrrYReH_mGbB1-N12f(f6?tem_hMj+cx) zJ3j)?Zrcs~PO@xoTE_|5w)RMEY@>?tW-OwW$jV|FOz1XE; z@j0}51wU!tmh^Pmzk-)f(gw8Lk8bi`&O~-endG}JIgzqfvia>^fzF+Kb6|#U;`)km zg}#t#S8^?=Wu;@HxP!Q-nUqt`2NxkI05Y=>pKdC5@J!u!p;?qf#c7&I`e>|CHa1&b zn&FgG!C#YI!G+?cCN$^0R|2f$bnXr^ax`fNAaqezc+u4u^Cf55YKB9d?4gdIK*qn7`2AI1RC(ndhQWB2<1Xb(o@W=H~}N zHcAivjC9M4(j{fS$vz=duO!31gGK}le}d?~84GO~59@JV4+CNA&D;`_AQeG~NC~&F zg{?i6!Sn0-DUgv@Zhp3ycTYw&mcO>)7RNO4(C2P(l!*UIUbx&KWLBFt@&d}bUj5vN zFv_p625ZL`&Yd}j-~RJljKyj;@vlkko{oKxuo<&S=`C0V2UdI^#U~lWKmtrwdyCfx zkE8=nh3d()nV$u$RfvrhBCHVOtimgcy|W5bJrkHQSux%2(GNl)Y)Ppq%!cxqgclr2 z3yk!C4-9(SaFqA|{Y@B$9is?xso4>$d9c;jQ~j>&2WjtLpzHNf6? zzFO(-EAYazm6&S0rdp}f4Q2{}t|*N<_HL;GKSRxxCXoA`0hRYV)tsnF?hNy-%4$F@ z#~<&cZ7(2vSa>T3EO}?(QKia8&8^CQ-0GMLWK+j}kaF982B=y84>qi|w`F3sV>rn2 z&g(1ats+s%8udlpz_ooYKfz5vHa5 z+vEWO2U9jxy=P9U`Bl_18RjcFvcav2A1I*{e47cegasO7HLFi_KQhf<3u zGo(_-9kQ(M|ED8YoXnQjfD1Y?E+~z^IJcz#fCoiD& zHY?CWcQRZC4H0yU7lE^==1wI_(U`IOsm>^R^G*&>0a1>C2p|Uk4O{q(i(wQpk4H>$ z^%gcLtF|~Mi-(gW9FTm~S?2jF1#tm$d$1RNJLPd9@A z?%U)9IK@mM~EKw=D#-@9w)fzLP`pE%W0n^po-vAa-)aXhyX9 zG-cG?23g9A8_YxLz&2hdR46d}5UPpO3E^k8Q{0{8l87so7#xOyQ*bvt5)&f&T^{hH zF7a>-PoSR#%ky=XSi1NOH*dj#gQL6MA!Sd{_(jm!KPbdJ2_RC5M^s_8c)HP4zJo7L z)eZ+^B|!;2-sGg8cPPc%G-z=Pn5z+0@Z1`%fEGD1=g~3JiJ8pX10<#?U@Vft`Whv# z7A&?M#bWIJXJa0jYS}>Z$J4;W5-T5yKWuwS0&z03h8sPVm8;7ZtyROsCQ-hS zTDSx1l&E2$4(Zc(NHb>E@#9smfHvSQb?kBg;6rBevsFij>iBW0e~QcVZwmzKxsHub zuh`AG4M|!myhlm!+fo6woQ1)qyYAr+hJ5*C>b!>?vpXy_g_3r0n(PaR%oH0cLl^bD zcUyr)^*$Dj+2VEaVN|n=KX=bA$0Tu8B(=$&$AWbh#5{j{O{vh;_>Z7e-IWsyCQniP zOw+5Ne~?ov_xkzeyXS!gE_XQOx=wWlsuB|rQNuXYU-3y~B3@3Y@8pt~6bJP#`cu&F zM5U6HsB8h%+O^Z^JCYW{f3M?e@qid8NvE4@phpT0Eg9}g_O7aU4C%dmFSq(mi~`HD z@jiaD>c4`=(PnE;@4aeN7)0ssVpX5WC|O2Vqt$f^9%HwO?sZrrfWAF66Vw>7Y|%q?X@9)kTz%<^_9(`R@Q)u#!SE zIx0rRZWa#5tZ@BH!O_a6$>b2kaiKy#DU^0kg#K#cL%j6%Xv`esV$o^dLwr2Z@^zRe zmo0^@TwGdKq1+CMge)vi38JG9@j6>FGcbDeD$YXynOox zko~so=J?B=7#Z&WSN{mwlLGqLw^!jo2JYb^PQx+yL-&QKfwW~0*D@ORa8yyX2}lQX zzD@0Lfbl>SlZ_fWbONZ+1&3oL;0U<0aDiENQf)n7D~Qp;9uCxp(Z}`dN$j6ua3%NA z*l^vF(#1V90FtMrW;9X4gUbzHg_BAinU&0Dxh->e6*m(+p7f| zWlSwrW?*;+R~=8sWX{?|Gj0BtL(Ge)w2Zsl2t!)317*3X*LD~m=4HcvWKqpMx?tU$ zvdW$oCQhE6Ha^TIu;F2cgr|6N%)lue0ZEDJ5qZ$+IuG~NP#pIN+cJbFd9=ls)U$p~ zXc5-DYcbM0kMJQl^#~()%#ZRmSuUD|T$(SN=c+!$#l8e>$@Iq*i*Qm0nE7LTy2hmm2SQ-`EIDG7_1a6{PZqkMTnz4$s(nhqy%|F$w$9*S|CHE7$?bAIXdsk$GOq|smbR-yG=0K% zP)|du*&XbSA4~ zHt&KyQpEwjGF3N$II=fE+JAr-QI2M{9pLgL-IEs zb!AM@k=UVw4H{%uQ?=dU0wBt z$U3*zS!a!x>3#Y4SmfA7#r~wC1dT(9$;yT}H4ntxT?CCTMUkhbkv(JQh&Tt76$34X z)#b~VU*TK4jIZqG@tGOaau*^Ga}zrVyw@P`6yXxTksU7U7??egU3{2ar|8L&}PUluI!g8xl?rv z6yb*f@sD&x?ni-nwLQ(pqDUyqm$*zBG~zYc-;rHWYMUKsq8T<23pGE@Ur|)2&89uq z1@L{uSgoK48TAa`EJ4=;MwP|N{4{@G^)qZ#F6~4&Dd`Sqw{}0nCmuZZN=<&qzj-TB zenj*=U1ROTE-TZeHsMDe{@^uFAv#bGQ_q)&XGjz^M1xM9As!9~8qnmbG`kYe2hQ{iBFeJO5}6ph3~RDsW55?0*$me9H_p7yX_j|oYEEG0`Fl0#+Ys@s1G2BA&B&3OjCq_ z%$PxYUgBb4`=FRK`tc=Y^)@4+wIAWQz;lFyNleaQyjD@{QB9xa)xb15dxXzXz)?2D zqzAi0|P zOnaJnjk*uoU6i{nD8g8@7GyZR1gf3Qj$HX311VrJXq?Biu)zy>0)&+qQ4YpB$$p{0 zukfa}ew@J(Kee>5fw2Su#BHtty6LwT<){p$B4e#Rmd>{F{@1p^R+|6AmKv23_{R?uqiMl^c$J_dA}s+ATwjB+ zy9d^Vs2VPLKWbDMX|HU+RWEY}3?2z|;SGrfqL=vvK&=mW(aRj|0tbm=*j8|%B)+1o zbOCu52IkSBrO@VrKmio>w%d67p){t!K*+vV97%E+$5P%+K$3iRvo#T__e*+;=B$W% zDI`)WH-J}C>K8~Ni+xQ=9P>iW>;Axe`s7u9$@U_M-;GMpORo#9nJ5wVN=syFQfV0ub~_A-fL`nprjZDDKR8ePp-&>AxGXW$s@iaUMgB1dVNV#wG+j-u0hzSb+%^)9n>1{`*`1^*}|IRWb zk%m@ilhV?66nH@nHHE}P(}f}N2DdR%%l@eR2IwMb85}r zxmQdt7+*ZaGkXdzN#3|1M4J1djJ7S_B1>(#zhD-s>jb}RK%3GkTFJxW+uD>WLz{wV zz>wya@R8IN9Ua=oJa?`(V_NC+*ihXJUqyvlR;g`gke2mR%mS`_JSLbbzt@<>@=2hG zIS7cNg`0!qQ(&SQzzmHhqVDJv4PAQ1EE7e~-i%!O>q!K#ZU0qXku|C=zX*A^0HNy* zO9j$$xHE`GzN<|5K*@4+w3C)@w#rzgc5!qvS--_qe*1SY!nM51EpAzUs9BN;di53Y z+(e#5)z71v1Y{NX72Z?YIOqv~tr=vTF>ykHr+Drx1%?Nz%8~lZxOZg+UhxNbm@jVek4pHB5U&d5^?m_lH5LWX^M<-5Hjwp;Pyo@1s6s7m!y760s^9pk5DsW<_`Y9ga+G9Z5)BtH71p=802d6|U3(4?oPqXm`*RGTI`-jZa{%i6En@h$q8aUN1~ zux4$Lh2Hs?-%c)@`;HJyt&YtMR0;*CE2GL^YtTmlW+tMWDW%IR)Dfo2eq$MH(3}c( ziK*Z(R826(EB_(tO5#Ksm-Y&n{;EMbdNwr9(CZ2+`%NRy!vo@=VKyL~j6NiMCB*{* zsqj+{^qM{dEqq4+VD=Av%ANrZMWzCI4+~`MMthj40uRe^Hf*$EkR>nSA$Uk!pc3{l6{ zt=t_P+SAU>dBcoK&MQFQd>)mkPQbKwVCpD$Z-m)2e(jpd@)f14)vXUWgi4~x4|xa0#IILz+52r zJRgc6XTEVb#le&0)MuN_S}o#Jb^lS_1d``RE#kC~&>Oq=H2cnqXanr;Rv5H*PV*(| zJndk?SP*ucb&NJ#CWuDxwGfkOi?nKwS-`2i-9S+IBjQ$49}~_H`gm)3^K` z0rSEjbrcXB*=Nel*MF`I7GS((T_x#Mvey3{8`<`qU|2Z!O;)g>7qKBGA-tc*yJ*>W z{Frh*TS|2ieeIj=DvS+ypT|HS6f?rW;d1EZwQ4*hh+d% zh>q!aNK`~$H3vcr^!oS8N<;v#?j4TFUi4695F@Xb`wY9TraRyZ%qgK3UEfnsdqyex zEZ1dFi33X0XV38dT|DEMF5}@sk!&Gd5L`SD?2VUm#SM-4uJW6c;DFC^h-3LLa6|}U z%@lZ!4PNsM5DeA7fhMw|olNa@x*TxD;+#Hrj!g^?(M$`8()AsnX}ypfOI_bUC*2g% zL%q9aU6kElo0S4}-Y^ZCm6vW9U?=OT0YP=%HW`XQg=_*{Jg;0;!E^;G{BedkO7|#odl6a)sQK z_mer9F8vF_W)-LTI(Bz+kFNSkOr7M4!R!q`uzysTs zKk}(sWfe23LMLb3k6deSNI<<7q}*||=||piL0w{+S%`jh;e@&4=kNuS@t4q{3*$+y z%jRNyuVIY5>q`(Sxhq}31^vX90*qnsj(3^D=+2+`A&Z)kxpgfKpGfC_VuK`IJ?5k= zV6;wDJ&nvUD}Ltn$on-hff@(8%vAMEe~jq-5+F-)s|MIWR9_Msq?qpRk5U1y2eUJo zp2r+?{x4jU#!#%Jg$bwCpbX%3t@B-(P*;%>OU=JHjM(#PEvPp-F7*%c|H=zbOHxgL&vT z{-%7?FtYy#kTU%};Qwv@jkiQ5yTYmHCW|ikYF=;22-lJkm|(yU(QjT`!9Rzd)iAQ@ z5Hqd+odY1yyrZq~7G#2KBa(Fb%V?BUTv{Og`a5r~=Uwc8Dx9eH{5^kgTe@>ulFcsw zvbHkNObO7FFi*Zy(Rs8rfd|r|g~)Rp!~W#dk*A);pjgdC6cX?FQ^|~TsOT!-9*^Mv z%Q)aoq2GG79t2V?5Wq?-7IWx-@gCW)OGu%bJ1lyr6s}o=U`6pIf8#iK@-N<<`XH29 z+WvB+%H8x*dkTmR>NtSh^!onp#nSF3ZnSXz*5K^{B6DcLJ}dFRUB$&}j%zRiK+*YGA_>TdbdhHWRK^zccd}z%0X37v5_<9Z)XS7>vdH2MOVO3~!MmYI zGMvt3a3=1X8yrI=opx1?sC_{kFxGFN_$G)NPV&yK~9;%wSR0)fe?bpOx|NWG<71# zDKq*WC6d3*TrCWC%8}%XHM&f?c43sBJ_vSl$ps1BA+%57EhOJS_m$WtGkBlr>JWag z+BW#&maQO^Xbf>OrNRwa1L=riK+ zTo;cZI7*@2x9c@DSi@i1{30sYGWo2~@RwF=oI}KFfdAKNC|;pd2`w##$JCvVvhYRh^OMynJcri|$ek-w~ChcyF zjiyI#&ye2Vv&)P!L@wy*r|XurFC`8%) zdZ&z{>p#W)+H-59ntpIEV5u{XO7%`2!y7IV-$8Ux?-Us*+H`RF>(B=LRPU762)Nim zlxA?sCu;mmGnUpGoYGx)UmO4|U8!E;I zYQ~9FG7Qqn4;cANfK5RjQyhyR#mEA1`v#~` zDJDGC!n@Wy8|dDZ7Cr#7i*5TKCOKL_$K;X02V`Gh5hsZ>*C(kCfk!uRu2VAQ0`=DBdh7NQ$XmtbyFqmD5a=-5qMRAxE8KTN=d$r_P#+~m^Rl2EDaZ7hCZ^e`Hkv=z@?1D_ zq}$*D$L&jn3{wc}64?iYfRqBn=wv#Yq6rf{G5Bf8fUlgVrYk~0zZ&D@LQK&vPY}eT z!^426i*ZVi0lWzWyo_SdDV8r%Lw_)J)Qkv74Zeb%J=YurhsO3;{v#=&QZghp%y^@3 zc^Rt6s^UOrtdr$=Ax?FxDPD}2s!k1<`V0YR^($>cipvC!KTmSX@j$E9DNEQ8^TAcx4<+5)&O}HR2&e!r zMj@c=P*%XG+PL;iO`n=26b7OB@@hzk!1fe?mAPz%PX)2&?Su4;Z5QZ4awo;AST;nU z4q9(>a+EoY^0ZmW^puV5qICQnTf;4)NmjUgNgr*7J+B6()vf$eHMugQLVXUnemh?_ zl&Mj6cmpJlgGXdY`?u-_7ZizqhV;zmc3z0{c6M{!PsL=?xI2RMbW<{)D&UK({@0N5 znj3;tWQ_SBcsilfqM;9x*;iQ_!vN7g4SqC3iZr@pnF1EBQ7LSAI+g|^$V`M_Jc3Md zRS|q3tvL$1+_n@xn$^EzVyyn_6cFgA^6qwgorxxLa99Yl%QH+5jgXA{l&opGJf1 zr8_d@nsB`PV5Ewj$8R8pTCX+2U7@`wz`Mvf;#b$k!7vw(!6Z8(6E7*xNU z4FhfqZJ4{#fWOyeMbIXf;{HDjLMG~lzJyuVUxv{|ohUcD17p>WQ2YDoSC}WRU%VXr zTvIT6&Q_qR40yw;f$XPqPaCrPPU>A6=#(h$>SRz{drN>X4BDP1qm8a=nA(a_@fxCR zb~L@!z2V>(Y0KuwKnhR0A3>I%* z^(*;TEDs0qfb*$*z$#AX$oK5!L`up9&z2aDL>?d{#qLf@RcDJ(XqDWI@swQ@DI=xs zWq|47qyUqh%ZEfD6a0BjIg2YF5-HlK-qNoBP1Fv&w_|+%p*%hiJQ8&)G`v2`W4GCz z=Nu%iv&RrTl+4Rg^t5yk-yFg6Ju3RvgV}JZGt6mpYOqsQiE3A%3CMvWad!U!py*s0%a>2*TeZ%OiNCq`-duzKSER>uMGeSF&yEp z*e1EsBgpq~PzG6t@r9Jg*N*I%6k0Zn&p`W5jK|6Gf%8A1bZHo30>I`vi%cRcpWv3) z_*24+zNM9=s|CuK_Zi~rG7qU9jtEftqcy|%IUpey=^qOW^x@%bF;-m*9(Nh|m5dDu zr24(+{5_ByE4Mh{-p~R%F+v}#o#&Z8cOrjwxi$t5Q&)Cj+Ea^nHO*!`!6EP}(+!yEp*pQwFklcWJDS zjw}n)Kps6K#0&`V;$>W-;{_|e1d!p_AHl%}$vz{k z8>_g6QHXR=ObMd=*r=XS{xZxQc?$sWSaBhWuU#~f1o5((UTIFrspNjr5-*e)#HbEp zIaW6mvm5~*qWk;6Cm7jPMa8PKLJ(jZKw{dJuiSXYu7Jd3!&1yMlulHMR6Mt#q%RvM zH;iNVUuz3Zru)Y6$-%I)QtUgW{KP&YEg1?cp=6zd%rDc;XBsRenBQI%mdeU&182m@ z1gH5(ro%KaU!WJ%XPr*nnK~y@b!Y;8nwtS6;l31RlXOwjBOw4PdX(Vy3s6`BjB5gt z3R#x~&+y`QJRwTRTcMJ>$K!MgQ-Wclc$#SiX8o*3F%efdWqu^Zbn=H-Ln&4tBu^&z z?2)&fj?mMgE0j=TC^e+T4^bIn>aPLj*!Gk?gwn?=F?}0|X>^<;z(05`;3``t@>-*EBxh6g^y)<3C3poW-rr?2_$ToZl~d=^ua2F> z4^gJVeEn8I%-sTJ#Yz)$R+!Y?Bki%L!c``9tX$vkE#l-{3->4E}2 zJfjLYH7U9;*5(h0G*R4#Az^jaQ!>5_7>1H&+eY||oy&Cq%ui*XYgu4bP|v0_!QtXw z18K@6TWC@#L@ZTPxk%74){esTTBlB%TD*3(5)@dP!(1fum0usW$x2k~4W=v_GmSS_ zGNhMGQ{sJ)r)HyTU9%_3NRLh9tp(>7Mt`R9dv{Oc+_tq5TTuUaq?$HVycvvaY*H}T zg{SkGtNjN|VaMt42x?j5($O_b%v?8ffI>MViRRZbZ-W#iZ+t$+sLzI7?5P~rjs!}j zY6ctK?l+^DD_EaejDDP2>^L!l(<3Rg>|T%Jt$QXHXCS!S+Z+e^_Dsc!oI;>$bHr$= zZBv*^@X<8W$#gxl$(LpF(3sDXOrbqfuqsV!f+Y5qo->>59|HsRR3W=|3_qhk&<&XX znL<7_GE`UfmbK*aa;%O192#k*J!t=OFNYjb#wYhn(1W;Ncg7fc1?VdK`u*qnZk5{5ZSI*7?t?9u^u3c#T=vwhw=)+exvpWB(hZw_!Z3If<|Y7 zEmkPt<|t0S{d$v&zMrE6DRY(5RICGZ8BYd<8>f5b7tZD8PGvuE#l-+dhaUPsIy#q4 zMbS?1(A#c7CV74?XLuGLI0K>Y6higKFgKPzk1b!rD;NOYHjlqZ(%iSqE?M8syIRn14@7yq z>q>cB>pFh{7Dx~1tm7&^Nr1N^u#HDi==dnKyfc5OL2%0%%+d8iTtP`L(LP3&Er2+t5{+ zuY7+skaoHI5-c?4Y9~X4ASSmId0)qa!78x2*oQ&DmbcQN+j=#xhT5NtB+WH!3PJ6_ zREkjJQQXaxm}K$}MHFhj61ncF_tP-Tqx>7h*-%%z#+fZnPscT!R?8`j6YmCr`E_WB zblcU9kOf+KEx){+EOI}d5=r~6W!u-f0mYBTnjkfRscr_nylsI~On39Zj-VVv_!w1} zJq8+Ys~sx*rS(O$+qgJ=57cmk-j=-Q!+A>nvjuz=zzaKybSGnVz56|snu5a;DRDU{ zaw-C)C|4 zYD0meaS~?DbGqVHedmS{jLbB)hG1^S$A`ajMKDZL3zWnTA-)#R*={%HUS4UCB3-?? zb@n2Dkm`wO?3S#9NU?KqAaB$HfkPWuv zve_-Y#frsjtXo$=;%8=)ORM9@-^|5 zD(<0(d>xq+=-X2MT8UINFLmaK)dEZ1mEykvHEE!>*$tfDv8C)UD?UJOaVTzptRr?j z2yo?u>v)A%W#IGzC~ctnWK>4(y3Wani<`J(b@Ay`4Fx|Jq9VO}g>$aHo*%gR=ICVq z2v;!odv;&Xhes+7y6ZuIYwG}$U&r-McDq1x3a*scGIsj`UeHRn+}K}@ucWkA$rC7D z>?%|2%Z*?!ZoCNT!L~BK#CZ#22a^5UlfO z5F_4+NFp}~fTBNcP+o8v1r!3#3C<(gXOJrN-p69iboVm;X7qcNn%J*JJnzt{!*tHa zKUs|C%cxf>`yr}54(!yWL&i{TADVJZpXE`-a$cvZh$~pm10{A{MfkUwbMj&i`>l&&d_MmYBv*r;?RQi*XRyLop<}>32;q)!Y@% zgnj_`Q_0AbU|N47)Y1bOguFZ|mUY_jzCv7(Bb9T4dh(X@^Z3f0a`ZT066*7)bi~ri z%~10)mGK3`coLKVUq;60tl;CFU*Q}k&R^3%0x;nE1+d7wE7)i>LX8S48;N6Rz$*5C z?H`6H%qM@&3D>Ln1+GjiUHBHM&&|s3m2AEmhMxhK{k(dOh z{!plzZ?p$QCRtL8eUi*}(sG}|&Vqg|cg1xx%b_2s*aORZ)?9MG>In3&;o}JO^+>vN zn@!rDytg2}AsAFd^Q3PAYjH!#>iIQ%0bw6NBa)}n(*@-x0fI)VD=kt_gDd%vs+JBj z4^Kl+Z&f858+3PZz^(~4f`qnoT`$rxoqVIwgwEoJrx?^zYE~!L*IfG$GT3gjXG@#1@ExP5QE1HM9aL1O1&pQNi^z|q*&^Y%%85QL|y0Lh8}VNkH~Bnp{(*7KpkWF%@v zKcPhX?Rwt-OY8X#+2^Mtp3g)dyyHrsx~&_X28NzMczwwLEuH!n|C66FK$fQv8KcQ6 zhJ(JliJe75O&0k4kAb-&djp?b&j#l(xwhBRs%s+($ov3cFZ=zWGKP^oJh0V+%KBzb zhgz>deam)j7$WX%%pD_?IT>QU>1L(7bOGe$9W6kVK2!iVeBx#fzkySLZN49+tj*tI zFfZ^HK1QeRMSHT|6=c$vt?5IZUwDgCqT1vfS;>B@RVdI&2c#}Rq<=wjAcb#a4;tVx zku{sR zlT`awawZ)g00!=_H#wO;BaZ@J4gx`VL{gAWAa&JXy4DkxPb)U_+oGNcIA&FdT1IU; z2~@67QV1(pgPL){%Eimq_Ao@PI){kaR;5&AWXU59sn#knOT#DASH*P!3=trncpX9G z)>|w+90cI{KL~+cJrP{ge^e|u8~?!;l{;r1%tBZGgLlN{jf$m~aBvw~R0|!SVhHK+AQFgDb2{EkWAES_ zWa^>o#QI$NdHa9le9!6OpoHDZ#X^Ju{Gu{{(1IRNAMJ&u7e`l0Ps%c%T!F zHSZ>CAUW@d=5XN(A>)QZz(1X7V(E)+MRwFNGgOT$g$%bJLPi=v{>JO323(AhhAodQs?Nk)j&K8%xo9~spni@x}tQB z!YG8zLgf1ywj^LH-_Gtu=qpJnuSr`K2u(IsPftvxja&J_i?#tG_u^K5$@Z;E5o0&xT9aCwaO7A&aGVen!5QwS(Ps>i|%9E!e@!z}V*Y z=osz9)vMJGzP$j`b0>E2x%WMVPR*tYePpCEW!DG4U)gUIHQl2@3i}z!Z{Tf_0~JGCmENI3n>AdIR0HQ;8dPa{s<)QEVb5{Wnod z5p@g&u>Xp2o~lqZQ%erV%EDdKXuNS%Q=pEliC8KX`3*5M#7BUdqO6Y*FK7wLDtdcS zz%20sIQ;0KYPIIRqbofeIL6s)7xgL4kgP(ryo6jca~E%+lpk%&)P)-5;;SW`O!5p* zP5l3Y!)P<7Q{gz258m0O+%+UY{+}%1v@$|>N3c$?OJ5S`kk6)(amy}E@NlXr< zjrZ~Tv_FkzSL4+<(#^{6NDiCEMo<@c&S%B;M6Oi6yN~E!}X~Zf;EV@kOaLewLRdJR67#iRNVH7jZq4LzA4&z>Zw$o)5HUr*hEVtz+3B9OLo z;ej;0DLhn71Onc|TV<{0m1~NS^6bqYXmnx{~{Blehr3>Z4Dp=$lk*-3z!*l>H0m& zl4VkRMtlPK_pm1b6(xwl_OQ`Cx5rr~-*5!*DVU3QkA!$l$MSG#2>|2-Kgen+tElZdH3;MTeuMx zVdK6YOCse~4qeR~cw!$n!7cwoYFyQd?8d#HUvuVu#(PM0>w^G|iBE6c&%fUKBpTdp zlTe^^9pJi=JlFFMC`HWqm{uqs=nC>*55B0~2l!DB9pJ{MXFGb$UCRH-TMlq>O#>Xs zw1fO>Cw2zqQ+ZapCLCjHivrS*Y_xXKD-zF_@| z3M@zs4L$7oOtvGVg~i=i~d!ziVv8Lg#PCtZvKanh>2T*Id~Tvwv^K<SdaRl;ZE8 z&_g*!p+W!-OdntInGB{^$77Rr%t~FwvX$LLv$R$ZBM1nH~pFnbAI&_9?$^ zPXr@T)3#J^@349S+mN>OqQ zb&dzF`S@YpVVTTy9p-6-?r4x^Lk3d~&+WIOPt#Zsq%tdY{}k`Rgn<%uPNGg%1Sk=o zXB#F#mOy)Iwd<}2@`Ilb<*sRBqb2o)yoO)`)YJD9;&s{?i{$TA_RFVLZ)hF<7ul?U z72YW*fu{RzQpvWd?QtD6Z(jgc*_|(PoM!nRQuZ}K5>Z^d*yhQIO47b7k+`oj}fS`7w^GPXgu%6rP^8oJ^LOt=tw%B%O*#%^_zi z-(4_-XVboq130J75^(%1#cZf#HR$CpO9<6ZLS?jvA@*D=SC`rkSYoIp7?r}DT_8iO z_zzzdv?4~)!m&s@n*YP!)Ak?EGFMFj+*9Qo4X1*ac`Ia_w(&<)rBdAie zcrj#Oa&w4|Ud6wNeUUm*;y}_bFLOi$6=SD=BVb0GPGpAY5oz`sv@Q=YY3pC%QxuR6 z99`AZ(SzyeFLBaPb-uzr#xv2LPi;x*=!J4&Qji;A3J8agq>7PX(xzHoe7b)AS-33UgbrHjQubYx~XsHc_=F%1kzWDCERVE*0~D z$~J=LXTbE5evE%tDk3$`0x9?6V|@1^IUi3C98)Guk|^)@z$E2p_o#sRPa{vtdz+7u zK$7^u7_FXv*n6sZ+Zm2T0@8{IH_id)+EqG0HVK^-D zJC_AyDH#0BJN%eXr|mO*Vmi)0wI7#xJelW$ai_R8HBm+5UPBE(X-3kw$GM6HDQStP zFFL^+z2gMeL0V35!YLsu%?C06yrUsVEij>lS}1Kx4td^=kEZSQ8fc-mDOTul8>U3M zK_Pl@c~%G|xAPX&j7S0)>`uqfy0;s7bOIpY`CwT;(hj{rQGQE=2tDXBF19Pt*V9h4 zRNgaZ)40QS?gJuaECmVJZU5y^37W_Qsd-KRpwL-slvJ_vzuYsoyvv7Z&xGiFaxVnU z(}VA_U9{97-IZgpU%$&sWj&2Lu=zcwO+Ll6%b8SURD>auO#kl~XL<2G-d8AhN@%RD zGSx+{XYC9~*5Z;?OaU!g{coWr<2nd%m5S7f{Trr2P@xx!;RoL5(}^)81m-6IviswG zem3-Ph6y&nK>wJ8o{=AM<{CGGfbkz6@Jd2MG>UeVCx_6{V!Vqe1II ze^|gF>`c#`y}5LKC9p)}1=SfpkZfKzI>PPXG-sP*zca&19WD)e?;-Irl9#w|LC!+? zNdYoD%KM1jv}sEWR1Yt~eyqri4h@~A8VoSmBR`2imAhkhpc*b>fSNx}@)uBSsQQ?rXUrDL11@CAs4+E6)gCRpE+v`9e!>W8$#7D#LeMUJ!iF&5wKNB{ ze8NlF3$C+$1TveyKH>Fh`5|Kz6@1FU2&mD~1r?B`s>4We>pxZE;@KDyJ(>}UuLPS2m>YhU|$6m0E}`Vjj5 zlu{rcf-x4ju*l0DJxKSIjCZlGqH?Vo|3MhbN_#r^h|6)3j#iXSa?T25J6g!{h!3Rd z2CPy{C+`cSg@E_$j-qQ-sY15jOW;TG{HVuMY#r@e2hG2ujbU*u4Kos3&=izx;v^hGhNpRMFO z=V%c_$|g+L0(%(vGAgfEj~et>aVx&cFw>vk@u6(}7?cWP@*;Xd!R$G+3L%{f1v!=X zrn27*W*02~ocSvd#S74E|8 zu0a3v6nSyF2cmP|csnF4r~km8=lj8VjacHNKX6GY;77i<$TblX3385=Kk|e2p~?D@ z?XmB_;Pq+yP!kyjgva0MjeL_4Q%lJnYrNNW2fDo9^ZwzyBL zD?fQOwLPiR((gaZKt5z8hjC0b6TOO*arE1>t}sNU?iFZ_cI1FK=EToR z7yr8?7e)P|%x_;omS52|)33sK=Ulkcz?G<^bp0nbkdn$X)QH(~H>_ht7Ut&7 z8^X}ReHTi2zx~Q_7RFlhMCzsse2Qx>a9|7oYZBR#p-S`X1&$aj@1$mf?i$!RlNK<( zg|2WJPi8-je&_8M**2oMCuMTc_kV|3Njkb=nk()H0?B$wF@Hdqz8s!LS6|}Shj2w6 z)nDQ&0g#ZGI2QQkFE8=cEqOO4WmmFGWL(8pfkD8Q@382{7tZi{X3pp3Z(XTL+*RX} z1;v0TF)iS}H7Ud5nLKOa#2FK3_6kh3mIF=Od`n6QZC{raN(lijnT$dnbug6#xVWnV zokG-_T=L|Yqf^|pqDm93_L17!><${(-^D(3AX%E@2P(&BRezVn)|AYGRC3HXuuxs> z@8S!31?7DMl}2wVprMruHPW2c27r60kg`hxO z_)JI$Sp!|%MnQ7p0>;(5Ut_Ctmj%+IK$lFf1MIQcboUlq1Y=yHysVvq*2NnWK8Q3y zF1b@`%{NioM>(}mQDRtFHti2$K~32wX!|Y1OlN~!@`*16xug*W^(ctCUdF6dd9X`{ zof6ShAMBE|CqOLS2%}0SpBoe_4!3 z$fR+}FYEj!dIWj5#;LRxK8;KCcTrH%s$mfQ`Gr>6ICr%v zHLPrnWb~NfTeD2O@i={U>Y_gMjanCDnWZ2fdgROT;(sj7vS5H1 zN|GCO{02qQ@W<}v1a&00P3M{_UL1>sJkw&&qY}Mx4$@g4>`uLljoDV1b3oY88P>Zb zo>6iaUDWfkS`4n?@&#vs-^DoHC~9F!fFo!a1>rkL|JRk4mLd${O9lL&GHvpkfe!$H ze8WYtc6|BrwJVgtqC%rf7WM7-#>JZ?uo0S-YUqTKXIZKVrs8)kAz>?g>%HX_YnMaO zTy2Usj7v`GspH7|D@TyTw2wKp0#R6BlCT}0Ah~TTh_%q8CYQ9Qp63ihsorhZ`^_u| zxuYN+l`Ac*@mMooVL%h6Ls+1{JO`NPLjQ7XrdsmpZN>Etd)9sui`k?s6e+4gFi2Kp zQMM*CL*X)hz@psO(PVi(ei$8E&|k)~U?T&5HZ{gVH+_R?gUcz0XHfSqS!3v*VTxh- zr`76z0G0f=!d!gW=Tbv0dKW8mQLRo3cS&v!Pq=H6*#6p*KEoX<%%gf1gg7A26Hb@H zd6SE-2QFso%b>nfTQ0EJf;1}5>{-0HeC^80-cYz9f=?F2s9+=-ab?GjiQv-Q_fen> z*1JNfERxMe-UUlCRV+iv*!W{GV_C03t_qsDa2+IeRHP}POb^p5#uwtp1A+F&5xX>^ zpfnjlzn`-*&?(BrL>7Bd*K-d7)5xLovGQLo8znK&clRkX|Dy4e`vCeJOQQKT+jSVC zg2F|z8NeG;(DC%p!E`1@`N{(pa5`Q<@4*)9l4TX&(`kb&myZco_8U&^32`a(KrEZ& zqGq(A+hSduNzJ4phbf=3;`jqF$${kkX;d518~0$? zs4LEuBdtNaYqGq|BkO!nWwgz+s)SBxgo4niEE2_8ZMcfRl_;5-ZXjV}5_m%!`p1m| zlG7!RZFOpZ%|AaNn)0gyq$%mVLm%P41?8U46I{$&H8KSYZUijprm^ul{bjRG;CoNU zxTMiy^juXued5f?bEdHQ0M&>R?>?N!XI{!*f0M|s@7Wq8E${U7KiLEIVRI>XDHF8OXz^^ zyDGv!M=k|P&nzZ^EoEyatgTpHwzwBkBF6|TrY4#%W1aPo=l{yO^026`Wbf?;0fAoF zWT%^bxzgRD2#V6J0%8za#2BLnh?*A{WKrT417^%j#!nGK?22PlO!8&2h(e-qGA0qS zPF8X9l6l!&GI^6Pt1vIgBx9oQcTU}l=Doj8-*a!@dzLzNs_Inz>Y>O2oVxRD=BB9m zqOImFens@$)-*w%-5$V&>0SqM-3M36B?fn1X$b`v&arIUETMrX$u*5A!OW>$urwn>qIBBw(%BnpO&^#3tJW~B>a$}}-D^toSCtYPn$1J+&PDt@J#z|Ak z$X}6^>5?l9noGLM%eCOT0M8H8c}FaMB_fqVGx$PR9D}GbgC|PDtaQE}34JkxB|mGe zzZ3r6*p8e0v(093Hj(d4wo7Q^Qppa^)I_=**(55?$ z1OnFb-$>il`BG*e?TX^mJHK+^M+W&!CQ$gDOr~jBD%;kV)8H3@i|J>#pB{}W9O-HJ zP((bvzHn@4U}ec79yB_h-?4kb$BVfV-~`Z$_;=W z@tT4!+0og}7y-C(NT{~MJ2OhIb926U2qzcbb><|B%;m1R79%9c(g91D`_&k^C5-F^ zXF?w15Zaf^v!^%$lIiVz!B+Ypm%oYxP7tS(GA7aDNLFL4f3d-e(-btrHyKC^Jq~_O z=G5uy3rL|$4wZwNsz*VdQmDkqJAvmr#HHIN;Jorqrz&GiUCD{rv}}0_ zDqe6T`+v)rt)}mx#&>=V7v^FYzr?X8OJZ0i(*A&8T?&9-H?n)FK+36l4~ZywZmj!( zR$`l|W(&3;lb{cGL-W}>k?9QRI@xq=5L)O<6PX*sKLsjnv?1 zZqK9eeLFsh6$PnW#ZFdbK$6HBNBi#!mfY~{gCO)y2Y@&)v`1O#vB}K-0k4xrJBs3@ z&yV6mFp2j^ICCZCtCBDD)ghHodn)V_-h8IyTk@ITBB4-(uPG&mJ`E0(f|blU*)%;n zWRy`kr>IUjS`XtSsct2rCv>0;FGb>P$%Rz!uTEi-IyXg~B%U2~A%6wpUtr?CfL}EQ zJVNaeuwx8;kQ}a`*OgNJ((#$pxfV8%^93xq+Sg+>c#p$p!BNOssJoE2pzVd~Lb2LS zB=Xes0J*bwwE)Y|+YX9q5FHHjj3d-4n_Fm6eF|9+sGOsJO?I4XV8`1I84qf z=4A=D61XTfMg-7Rh z;TzREfM#yn6%uN$S+%l7X3^9RIh%WIbLfai+rAc3|5BtZXm`R(kn0S&JTtjx9M2htsi0H5n`p2oObp3OURTjVo5&wpl=(FatSj%+8`Evo+y&9#*4wFS4AqPXQYnzHF3| zsx=?S(&svnW$f~7rr`D{^JKbeM;^7x5^k+XA&OJiAaXtql%a2q0{ZcZ5|!Ob61%N$ zM3dugi!P^LJeUgg?r|if2`beF#zDvllR{@U*@CWFvXEgU3z#HON7j7}pP*{&ciN~9 z{2UJ?oF#F77Gw|hR#n!{s+wKGJ=z`*ghclbusV0%fw2uO(^^qO7cWJ-X=xer*s6eV z0E(qW>0TG3LH;yU#)R73ot%j%q9&QiK)jo}-Y`ln4G!W^f9jx+9VE+Pje!S{x?Tv)2=F&!A}Z=!#pzM zq$1<*e^s#pATis-5j)~vM^OpvUeznv_*}Bzljb%ouU3MV3v6Qg%iM>YVPguM=7zs z&mt_;mmKCtwE>DhHCFRpy}eq~L>hpyf;<~0`l?#ZmF-+ZhyQ#0B5Ga0gV?naT21el zQF- zoon^jG}?L-uT@s-J`Xa5R03+grC#%;mUPqQYUCcycaRywlg^Q z{m0Vi=%DqZI0RRZ#=`aceK-U7el)Ww8DuK_L9^&b^M9hi(7j zs5t3Rux+ViO}<1c;LMhdPo$1*iGYe-s`?3XoL>`z6P3Gy!hFlPHLiHfRNYSa{W+HL zx`HKJhnZi-T<+p_#0~W>(~Q?!6YccHGM;e>*zSFPTzsg8;kuIP69?NsDr`Z7?(h?g z*r2?LNXg-0WOA_OAp^&gxA3xoj0$_jyMFK)Y#7a`hr>e{B$ogOEuog@a&QZB!?s06 zun{BQD*e{{$yck1)X%46(3x75qbWIU5?!g)ED$31i}RmAnbaW+g_)02 zcQ$ARz{*MV$sO>+JTo*-+Ij$_ja|@V)syQ=-C*cmH6sWcrKW--e`-8!uji3sbGC57 ze70U=uEu~u3ci(B!pJY_;61r;pscu+J0{{#sHr2-4+q!R48iB8nqz%uQ_|_3TQzcX zz{%kB9~11_`akT)2UZDmXesi3*DdF+A~S0|U3d{zp+}bULPpLapon~q$i~WV5p>da zWSl>#RmrkTae=g! z0HC7b$zeK6y0C&xL7YXy456^+MpFRrU2M9)A)~?mXtW|}93&`>RGMCkW6&b=uwR-* zSjEaqOKQsJl`tjMFN0sF<-=$Ton8n-mgzPgNkwGC_I?2Oj*8ouu^{3CzG%0x66eW7 z^rxP6*`MCm{sjQdYe<_&!Ch+ATi^dVw3eZv=n#{(*gR$Y{fljI`?2MYjS8+^vGUed zO&F1`9Ek6fQ2OCPHE=cK#}758LWt;tByC9nwr}wYn9qLt4_<1P+toE<4N7V8(c3j@ zokp%#0m$=(ehuH;?*k`LXPN(XDW*hD>b~7Te`qg9WPH!P8Pce#GjB5;`PdvpPp;Bl zSxv4)zdZVGl~gmj&mLGLKHI!nm3R`K1xQgg(2E&=I}^xd!>f7xq>g7hKi*#)Spa@& z)J*MK!+W3iOEy1jM>Ecv1if*V|By5zqmM0H6 z8l<RiVfWB)p~q`J06Ah`4j(hTXq91;Xi za(t1BQ5;4fflwST>J*Hs+O}rWSlVp!o}%3A)Xhn*AC>6x_)&4Hi;Zy zR<*C^6;l5qro#DmyOoA3az=v@&#qU!f`H-PiFn5inn0RO&FjX;)0Pc90Mgjk^kAUf z!Y4PveyXWCka{A0gD`l%>k5$T25u}x|3Aw)4oFqn)5@D5^q&d7oSZ;PxIIQ5^IRE< z$$3Fm?^Of3Uu{SS9&RA)h! z1$O}SK6N8crQBBrvcN7oHYKNOOju%(y||G{Nb*i^tMKd2Pe8uPjl6CKht2uq-o)?i z3N=gb#WXVaXZr^=j;0EmUlEW?Z*Ss(y0A%&r?*e2`D%XU2@+ZJiLZU_nLg=%gIpq0SMv%}0<~sjd)n>PR#AiyEHJ^J6hu9n^FW zwg^-n+OHxisz*g8BV-5FrU2r?TyfL-0K|r&6eXRmHUr%bHA=LyK$J-ZN+~7%4s?$T z*YCi%Frn@PKxT?oCW!aT*l?7`?pN);9uSrDUN{`!VQ3Cfdpi-Dx8h!&H#|{DefL88 z!CioA77)fhQW8!X^+zi%YEJ}?+}z(o*AdiIOv)2#vDQ-ALT8-flI?IP9=Z^g93U<* z&mK_@$0;*JDW7zwD`~WDZA6InxIl0P!^Z8wc*QBozC0z$XU6xuDT)-qMBRNl5j8DU z5W16#jAH28_5`I+{|k@w=3TIa=-FZ1XM@3-pL2w<^$P6FoD~2bD zUhU)=!&2utJ^G;{$6BsVHx{J$OII2?(U+{G%Y?kBz)HPAwsud^}C-A%vIR>$KjM-oCeV(3ISwj%Aja^@tP z=!xSsh}M*gyW2lA#?#jOd9p!rk~Wl2O$b-_BFw=Yr33`cDygpFk%L+SYUn`9DkYnG z_VNc@8A`G2M=6c$Q|-(v`!W=hct5z7WB{V~Xa&yje5y^{sLfQ|qCA|bctt7Lly9N} z+|)=VG}zO$ilYl~2MncFJON5A5hZv@KG_~pkxTEIg97RgKY*+&DDkEw8oLkD5H9Td zm@CN9#|Ve|a+Gv&1AUFB>HE|~-o;V#?LK}#I7L2P2A-36?CcWIc&CDJR=3JM0`&Gq?f=@#6{->UUztMD(!xdTZwlfyJsAh zH^1)uA$1zr4nT6_e@Mbf({6eWG6%~FkRhRX0$YXTZC4KP{NV{X6800K^Bth1Yb~~E zB!{V*$}hY|N!SYz6;=`l;_VPD4G|58c=*sDxlWP5eiAM1VfK&BL`+$%Xe8K4Je}&{ zK8hQ38Qe|Wk$pKc5s@Ugs5^{Pa+Juz%MZ?fIib zT7;-Vu^EAtPf-f}k92GplSy4!ij4F}Eq0xJWJl#)7z+1zJ0b zsD7&oAKdn_rm^Cb3=hchstboS>@HL!i{yjF5gVWPkd8w zo>5Lmf9hi{+H|)9vsAxoqZeY8APVj0H3q3lR!@?xC1W;q_QR}#X5ov4R6C1_=j(p; zAw%!Y1OP7V3QxfVpkK6~fFP6jG{gwhNVuvKNWNJ4G(;3sNTE%XrwqB&{u%a;k6%XA zFKVO%q5D|{+Q@M=;rbd!a4p;%Rtj|=&%voox*w&{N5`?tqo#RxD%@jEz)&JyBUlhh zd|)Ph^m45H>hTlmDMRmSf~!CYO1PdRQrk(iQ#hoH3Z+b|u&s$0+kN3RymvL#pTxSq z{$@J?SMsNm;;XB>U7PtY-G6!6DxO~QC-o18-d5^4YRsdf4kJF?+TCx6$3YjihtB~Z$GD3+#nw6`Vw0oN;D0jN)ru!zI;QHsA#*Y z)QeJnZ^?ItQ2*Z64Py$Bz}x7gjxV91<0igeAxeDO5rS#ZJoHe5_sx?3sG#Qe40gN~ zDZaR))VbS;!E2?{JxZx4vF}%kQh7?j{Gc3AmxvObm%Z}~W|tJv00iK_XP8R1_Y9(2 zau6>ZS6uQ_GpOrB0}M?cgEjs1xj~N5zzLWgAR#ni~b0jOc6!F2t%C=ja{k6n61am(6#(dB%tR?0}juc#B{tsFX= zhIH$P9#f(O_Y?!9(hEgKneY(r=zoAoLd*~CjI)lDEqV>!yyDT>JeCM4(T8dp9T$vfR6&*f|VlB1;h^|o%>^uM!w&W`{9 delta 744408 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�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˭^UcUG1{c<#Wnc>zM!2a47p)-V2c8 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