From 5d3f94229af3e7ad06a56985942aaae1c5a7b279 Mon Sep 17 00:00:00 2001
From: Kurzenberger <01kuni1bif@hft-stuttgart.de>
Date: Fri, 13 Dec 2024 10:56:56 +0100
Subject: [PATCH] deployed the files of moodleDta

---
 dta.zip                                      | Bin 35018 -> 36220 bytes
 dta/classes/db_utils.php                     |   4 +-
 dta/classes/models/dta_result.php            |   2 +-
 dta/classes/models/dta_result_summary.php    |   8 +-
 dta/classes/view_submission_utils.php        | 301 ++++++++++++++++---
 dta/models/DtaResult.php                     |   0
 dta_withRecommendationsTableAndNamespace.zip | Bin 0 -> 35019 bytes
 7 files changed, 269 insertions(+), 46 deletions(-)
 create mode 100644 dta/models/DtaResult.php
 create mode 100644 dta_withRecommendationsTableAndNamespace.zip

diff --git a/dta.zip b/dta.zip
index 7dcd55a2535cd9a81852ca626777d90e7c5afd0e..46de9304492e612abb398213c29115b028b444d5 100644
GIT binary patch
delta 8660
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

delta 7563
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

diff --git a/dta/classes/db_utils.php b/dta/classes/db_utils.php
index 0dfb452..2361acf 100644
--- a/dta/classes/db_utils.php
+++ b/dta/classes/db_utils.php
@@ -58,7 +58,7 @@ class db_utils {
             return $records;
         }
         $moduleid = $module->id;
-    
+        print_r($records);
         // Schritt 3: Überprüfe jeden Datensatz
         foreach ($records as $key => $record) {
             // Hol den Namen der Ãœbung aus dem Datensatz
@@ -84,7 +84,7 @@ class db_utils {
                     // Wenn der Abschlussstatus 1 ist, entferne den Datensatz aus $records
                     if ($completion && $completion->completionstate == 1) {
                         unset($records[$key]);
-                        
+
                     }
                 }
             }
diff --git a/dta/classes/models/dta_result.php b/dta/classes/models/dta_result.php
index d1650ee..654350f 100644
--- a/dta/classes/models/dta_result.php
+++ b/dta/classes/models/dta_result.php
@@ -100,7 +100,7 @@ class dta_result {
      * @param int $state Number of the state
      * @return string Name of state as defined
      */
-    public static function getstatename(int $state): string {
+    public static function get_statename(int $state): string {
         if ($state == 1) {
             return get_string('tests_successful', self::COMPONENT_NAME);
         } else if ($state == 2) {
diff --git a/dta/classes/models/dta_result_summary.php b/dta/classes/models/dta_result_summary.php
index 56ed33e..20fc745 100644
--- a/dta/classes/models/dta_result_summary.php
+++ b/dta/classes/models/dta_result_summary.php
@@ -140,7 +140,7 @@ class dta_result_summary {
      *
      * @return int Count of occurrences
      */
-    public function compilationerrorcount(): int {
+    public function compilation_error_count(): int {
         return $this->state_occurence_count(3);
     }
 
@@ -149,7 +149,7 @@ class dta_result_summary {
      *
      * @return int Count of occurrences
      */
-    public function failedcount(): int {
+    public function failed_count(): int {
         return $this->state_occurence_count(2);
     }
 
@@ -158,7 +158,7 @@ class dta_result_summary {
      *
      * @return int Count of occurrences
      */
-    public function successfulcount(): int {
+    public function successful_count(): int {
         return $this->state_occurence_count(1);
     }
 
@@ -167,7 +167,7 @@ class dta_result_summary {
      *
      * @return int Count of occurrences
      */
-    public function unknowncount(): int {
+    public function unknown_count(): int {
         return $this->state_occurence_count(0);
     }
 }
diff --git a/dta/classes/view_submission_utils.php b/dta/classes/view_submission_utils.php
index fed291a..10e5d64 100644
--- a/dta/classes/view_submission_utils.php
+++ b/dta/classes/view_submission_utils.php
@@ -52,23 +52,23 @@ class view_submission_utils {
 
         // Calculate success rate, if no unknown result states or compilation errors.
         $successrate = "?";
-        if ($summary->unknownCount() == 0 && $summary->compilationErrorCount() == 0) {
-            $successrate = round(($summary->successfulCount() / $summary->resultCount()) * 100, 2 );
+        if ($summary->unknown_count() == 0 && $summary->compilation_error_count() == 0) {
+            $successrate = round(($summary->successful_count() / $summary->result_count()) * 100, 2 );
         }
 
         // Generate html.
-        $html .= $summary->successfulCount() . "/";
-        $html .= ($summary->compilationErrorCount() == 0 && $summary->unknownCount() == 0)
+        $html .= $summary->successful_count() . "/";
+        $html .= ($summary->compilation_error_count() == 0 && $summary->unknown_count() == 0)
             ? $summary->result_Count() . " (" . $successrate . "%)"
                 : "?";
         $html .= get_string("tests_successful", self::COMPONENT_NAME) . "<br />";
 
-        if ($summary->compilationErrorCount() > 0) {
-            $html .= $summary->compilationErrorCount() . get_string("compilation_errors", self::COMPONENT_NAME) . "<br />";
+        if ($summary->compilation_error_count() > 0) {
+            $html .= $summary->compilation_error_count() . get_string("compilation_errors", self::COMPONENT_NAME) . "<br />";
         }
 
-        if ($summary->unknownCount() > 0) {
-            $html .= $summary->unknownCount() . get_string("unknown_state", self::COMPONENT_NAME) . "<br />";
+        if ($summary->unknown_count() > 0) {
+            $html .= $summary->unknown_count() . get_string("unknown_state", self::COMPONENT_NAME) . "<br />";
         }
 
         $showncompetencies = explode(";", $summary->successfultestcompetencies);
@@ -90,53 +90,154 @@ class view_submission_utils {
         return \html_writer::div($html, "dtaSubmissionSummary");
     }
 
- /**
- * Generiert die detaillierte HTML-Ansicht, einschließlich Zusammenfassung, Kompetenzen, Details und Empfehlungen.
+/**
+ * generates detailed view html
  *
- * @param int $assignmentid Assignment-ID
- * @param int $submissionid Submission-ID, für die der Bericht erstellt wird
- * @return string HTML-Code
+ * @param int $assignmentid assignment
+ * @param int $submissionid submission to create a report for
  */
 public static function generate_detail_html(
     int $assignmentid,
     int $submissionid
 ): string {
 
-    // HTML-Inhalt initialisieren
-    $html = "";
+    // Fetch data.
+    $summary = db_utils::get_result_summary_from_database($assignmentid, $submissionid);
+    $recommendations = db_utils::get_recommendations_from_database($assignmentid, $submissionid);
 
-    // Daten abrufen
-    $summary = db_utils::get_Result_Summary_From_Database($assignmentid, $submissionid);
+    $html = "";
 
-    // CSS-Klassen und HTML-Attributarrays definieren
+    // Define a few css classes and prepare html attribute arrays to beautify the output.
     $tableheaderrowattributes = ["class" => "dtaTableHeaderRow"];
     $tablerowattributes = ["class" => "dtaTableRow"];
-    $attributes = ["class" => "dtaTableData"];
+    $resultrowattributes = $tablerowattributes;
     $unknownattributes = 'dtaResultUnknown';
     $successattributes = 'dtaResultSuccess';
     $failureattributes = 'dtaResultFailure';
     $compilationerrorattributes = 'dtaResultCompilationError';
+    $attributes = ["class" => "dtaTableData"];
+
+    // ***************
+    // SUMMARY TABLE
+    // ***************
+
+    $tmp = "";
+    $tmp .= \html_writer::tag("th", get_string("summary", self::COMPONENT_NAME), ["class" => "dtaTableHeader"]);
+    $tmp .= \html_writer::empty_tag("th", ["class" => "dtaTableHeader"]);
+    $header = \html_writer::tag("tr", $tmp, $tableheaderrowattributes);
+    $header = \html_writer::tag("thead", $header);
+
+    $body = "";
+
+    // Total items.
+    $tmp = "";
+    $tmp .= \html_writer::tag("td", get_string("total_items", self::COMPONENT_NAME), $attributes);
+    $tmp .= \html_writer::tag("td", $summary->result_count(), $attributes);
+    $resultrowattributes = $tablerowattributes;
+    $resultrowattributes['class'] .= " " . $unknownattributes;
+    $body .= \html_writer::tag("tr", $tmp, $resultrowattributes);
+
+    // Tests successful.
+    $tmp = "";
+    $tmp .= \html_writer::tag("td", get_string("tests_successful", self::COMPONENT_NAME), $attributes);
+    $tmp .= \html_writer::tag("td", $summary->successful_count(), $attributes);
+    $resultrowattributes = $tablerowattributes;
+    $successrate = "?";
+    if ($summary->unknown_count() > 0 || $summary->compilation_error_count() > 0) {
+        $resultrowattributes['class'] .= " " . $unknownattributes;
+    } else {
+        $successrate = round(($summary->successful_count() / $summary->result_count()) * 100, 2);
+        if ($successrate < 50) {
+            $resultrowattributes['class'] .= " " . $compilationerrorattributes;
+        } else if ($successrate < 75) {
+            $resultrowattributes['class'] .= " " . $failureattributes;
+        } else {
+            $resultrowattributes['class'] .= " " . $successattributes;
+        }
+    }
+    $body .= \html_writer::tag("tr", $tmp, $resultrowattributes);
+
+    // Failures.
+    $tmp = "";
+    $tmp .= \html_writer::tag("td", get_string("failures", self::COMPONENT_NAME), $attributes);
+    $tmp .= \html_writer::tag("td", $summary->failed_count(), $attributes);
+    $resultrowattributes = $tablerowattributes;
+    if ($summary->failed_count() > 0) {
+        $resultrowattributes['class'] .= " " . $failureattributes;
+    } else {
+        $resultrowattributes['class'] .= " " . $successattributes;
+    }
+    $body .= \html_writer::tag("tr", $tmp, $resultrowattributes);
+
+    // Compilation errors.
+    $tmp = "";
+    $tmp .= \html_writer::tag("td", get_string("compilation_errors", self::COMPONENT_NAME), $attributes);
+    $tmp .= \html_writer::tag("td", $summary->compilation_error_count(), $attributes);
+    $resultrowattributes = $tablerowattributes;
+    if ($summary->compilation_error_count() > 0) {
+        $resultrowattributes['class'] .= " " . $compilationerrorattributes;
+    } else {
+        $resultrowattributes['class'] .= " " . $successattributes;
+    }
+    $body .= \html_writer::tag("tr", $tmp, $resultrowattributes);
+
+    // Unknown state.
+    $tmp = "";
+    $tmp .= \html_writer::tag("td", get_string("unknown_state", self::COMPONENT_NAME), $attributes);
+    $tmp .= \html_writer::tag("td", $summary->unknown_count(), $attributes);
+    $resultrowattributes = $tablerowattributes;
+    if ($summary->unknown_count() > 0) {
+        $resultrowattributes['class'] .= " " . $unknownattributes;
+    } else {
+        $resultrowattributes['class'] .= " " . $successattributes;
+    }
+    $body .= \html_writer::tag("tr", $tmp, $resultrowattributes);
+
+    // Success rate.
+    $tmp = "";
+    $tmp .= \html_writer::tag("td", \html_writer::tag("b", get_string("success_rate", self::COMPONENT_NAME)), $attributes);
+    $tmp .= \html_writer::tag(
+        "td",
+        \html_writer::tag("b", $summary->successful_count() . "/" . 
+            (($summary->compilation_error_count() == 0 && $summary->unknown_count() == 0) 
+                ? $summary->result_count() . " (" . $successrate . "%)" 
+                : "?")),
+        $attributes
+    );
+
+    $resultrowattributes = $tablerowattributes;
+    if ($summary->unknown_count() > 0 || $summary->compilation_error_count() > 0) {
+        $resultrowattributes['class'] .= " " . $unknownattributes;
+    } else {
+        if ($successrate < 50) {
+            $resultrowattributes['class'] .= " " . $compilationerrorattributes;
+        } else if ($successrate < 75) {
+            $resultrowattributes['class'] .= " " . $failureattributes;
+        } else {
+            $resultrowattributes['class'] .= " " . $successattributes;
+        }
+    }
+    $body .= \html_writer::tag("tr", $tmp, $resultrowattributes);
 
-    // **Zusammenfassungstabelle erstellen**
-    // (Ihr bisheriger Code bleibt unverändert)
+    $body = \html_writer::tag("tbody", $body);
+    $table = \html_writer::tag("table", $header . $body, ["class" => "dtaTable"]);
 
-    // **Abstand zwischen Tabellen**
-    $html .= \html_writer::empty_tag("div", ["class" => "dtaSpacer"]);
+    $html .= $table;
 
-    // **Empfehlungstabelle hinzufügen**
-    // Empfehlungen für die Submission abrufen
-    $recommendations = db_utils::get_recommendations_from_database($assignmentid, $submissionid);
+    // Add empty div for spacing after summary.
+    $html .= \html_writer::empty_tag("div", ["class" => "dtaSpacer"]);
 
+    // ***************
+    // RECOMMENDATIONS TABLE
+    // ***************
     if (!empty($recommendations)) {
-        // **Sortierparameter abrufen**
+        // Sorting logic.
         $allowed_sort_fields = ['topic', 'exercise_name', 'difficulty', 'score'];
         $allowed_sort_dirs = ['asc', 'desc'];
 
-        // Sortierparameter aus POST-Daten abrufen
         $sortby = isset($_POST['sortby']) ? $_POST['sortby'] : 'score';
         $sortdir = isset($_POST['sortdir']) ? $_POST['sortdir'] : 'asc';
 
-        // Sortierparameter validieren
         if (!in_array($sortby, $allowed_sort_fields)) {
             $sortby = 'score';
         }
@@ -144,7 +245,6 @@ public static function generate_detail_html(
             $sortdir = 'asc';
         }
 
-        // Empfehlungen sortieren
         usort($recommendations, function($a, $b) use ($sortby, $sortdir) {
             $valueA = $a->{$sortby};
             $valueB = $b->{$sortby};
@@ -166,10 +266,8 @@ public static function generate_detail_html(
             }
         });
 
-        // Überschrift für Empfehlungen
         $html .= \html_writer::tag('h3', get_string('recommendations', self::COMPONENT_NAME));
 
-        // Helper-Funktion zum Generieren von sortierbaren Headern
         $generate_sortable_header = function($column_name, $display_name) use ($sortby, $sortdir) {
             $new_sortdir = ($sortby == $column_name && $sortdir == 'asc') ? 'desc' : 'asc';
             $class = 'dtaTableHeader';
@@ -177,7 +275,7 @@ public static function generate_detail_html(
                 $class .= ' sorted ' . $sortdir;
             }
 
-            // Button erstellen
+            // Sort button.
             $button = \html_writer::empty_tag('input', [
                 'type' => 'submit',
                 'name' => 'sortbutton',
@@ -185,7 +283,7 @@ public static function generate_detail_html(
                 'class' => 'sort-button'
             ]);
 
-            // Hidden Inputs für Sortierparameter
+            // Hidden inputs.
             $hidden_inputs = \html_writer::empty_tag('input', [
                 'type' => 'hidden',
                 'name' => 'sortby',
@@ -197,7 +295,6 @@ public static function generate_detail_html(
                 'value' => $new_sortdir
             ]);
 
-            // Formular für den Button erstellen
             $form = \html_writer::start_tag('form', ['method' => 'post', 'style' => 'display:inline']);
             $form .= $hidden_inputs;
             $form .= $display_name . ' ' . $button;
@@ -206,7 +303,7 @@ public static function generate_detail_html(
             return \html_writer::tag("th", $form, ["class" => $class]);
         };
 
-        // Tabellenkopf für Empfehlungen
+        // Table header for recommendations.
         $tableheader = "";
         $tableheader .= $generate_sortable_header('topic', get_string("topic", self::COMPONENT_NAME));
         $tableheader .= $generate_sortable_header('exercise_name', get_string("exercise_name", self::COMPONENT_NAME));
@@ -217,7 +314,7 @@ public static function generate_detail_html(
         $tableheader = \html_writer::tag("tr", $tableheader, ["class" => "dtaTableHeaderRow"]);
         $tableheader = \html_writer::tag("thead", $tableheader);
 
-        // Tabellenkörper für Empfehlungen
+        // Table body for recommendations.
         $tablebody = "";
         foreach ($recommendations as $recommendation) {
             $tablerow = "";
@@ -231,11 +328,136 @@ public static function generate_detail_html(
         }
         $tablebody = \html_writer::tag("tbody", $tablebody);
 
-        // Empfehlungstabelle zusammenstellen
         $html .= \html_writer::tag("table", $tableheader . $tablebody, ["class" => "dtaTable"]);
+
+        // Add empty div for spacing after recommendations.
+        $html .= \html_writer::empty_tag("div", ["class" => "dtaSpacer"]);
     }
 
-    // Abschließendes Div für die gesamte HTML-Ausgabe
+    // ***************
+    // COMPETENCY ASSESSMENT TABLE
+    // ***************
+    $body = "";
+    $tmp = "";
+    $tmp .= \html_writer::tag("th", get_string("competencies", self::COMPONENT_NAME), ["class" => "dtaTableHeader"]);
+    $tmp .= \html_writer::empty_tag("th", ["class" => "dtaTableHeader"]);
+    $header = \html_writer::tag("tr", $tmp, $tableheaderrowattributes);
+    $header = \html_writer::tag("thead", $header);
+
+    $showncompetencies = explode(";", $summary->successfultestcompetencies);
+    $overallcompetencies = explode(";", $summary->overalltestcompetencies);
+
+    for ($index = 0, $size = count($overallcompetencies); $index < $size; $index++) {
+        $comp = $overallcompetencies[$index];
+        $shown = $showncompetencies[$index];
+        // If the competency was actually assessed by the assignment and tests, add a row in the table.
+        if ($comp != "0") {
+            $resultrowattributes = $tablerowattributes;
+            $tmp = "";
+            $tmp .= \html_writer::tag("td", get_string("comp" . $index, self::COMPONENT_NAME), $resultrowattributes);
+            $tmp .= \html_writer::tag("td", (100 * floatval($shown) / floatval($comp)) . "% (" . $shown . " / " . $comp . ")", $resultrowattributes);
+            $tmp .= \html_writer::tag("td", get_string("comp_expl" . $index, self::COMPONENT_NAME), $resultrowattributes);
+            $body .= \html_writer::tag("tr", $tmp, $resultrowattributes);
+        }
+    }
+    $body = \html_writer::tag("tbody", $body);
+    $html .= \html_writer::tag("table", $header . $body, ["class" => "dtaTable"]);
+
+    // Add empty div for spacing between competency and details table.
+    $html .= \html_writer::empty_tag("div", ["class" => "dtaSpacer"]);
+
+    // ***************
+    // DETAILS TABLE
+    // ***************
+
+    $tmp = "";
+    $tmp .= \html_writer::tag("th", get_string("details", self::COMPONENT_NAME), ["class" => "dtaTableHeader"]);
+    $tmp .= \html_writer::empty_tag("th", ["class" => "dtaTableHeader"]);
+    $header = \html_writer::tag("tr", $tmp, $tableheaderrowattributes);
+    $header = \html_writer::tag("thead", $header);
+
+    $body = "";
+    $spacerrow = null;
+    foreach ($summary->results as $r) {
+        // Add spacer first if not null.
+        if (!is_null($spacerrow)) {
+            $body .= $spacerrow;
+        }
+
+        $resultrowattributes = $tablerowattributes;
+
+        // Set CSS class for colored left-border according to results state.
+        if ($r->state == 0) {
+            $resultrowattributes['class'] .= ' dtaResultUnknown';
+        } else if ($r->state == 1) {
+            $resultrowattributes['class'] .= ' dtaResultSuccess';
+        } else if ($r->state == 2) {
+            $resultrowattributes['class'] .= ' dtaResultFailure';
+        } else if ($r->state == 3) {
+            $resultrowattributes['class'] .= ' dtaResultCompilationError';
+        }
+
+        $tmp = "";
+        $tmp .= \html_writer::tag("td", get_string("package_name", self::COMPONENT_NAME), $attributes);
+        $tmp .= \html_writer::tag("td", $r->packagename, $attributes);
+        $tmp .= \html_writer::tag("td", get_string("unit_name", self::COMPONENT_NAME), $attributes);
+        $tmp .= \html_writer::tag("td", $r->classname, $attributes);
+        $tmp .= \html_writer::tag("td", get_string("test_name", self::COMPONENT_NAME), $attributes);
+        $tmp .= \html_writer::tag("td", $r->name, $attributes);
+        $body .= \html_writer::tag("tr", $tmp, $resultrowattributes);
+
+        $tmp = "";
+        $tmp .= \html_writer::tag("td", get_string("status", self::COMPONENT_NAME), $attributes);
+        $tmp .= \html_writer::tag("td", dta_result::get_statename($r->state), $attributes);
+        $body .= \html_writer::tag("tr", $tmp, $resultrowattributes);
+
+        // If state is different than successful, show additional info.
+        if ($r->state != 1) {
+            $tmp = "";
+            $tmp .= \html_writer::tag("td", get_string("failure_type", self::COMPONENT_NAME), $attributes);
+            $tmp .= \html_writer::tag("td", $r->failureType, $attributes);
+            $body .= \html_writer::tag("tr", $tmp, $resultrowattributes);
+
+            $tmp = "";
+            $tmp .= \html_writer::tag("td", get_string("failure_reason", self::COMPONENT_NAME), $attributes);
+            $tmp .= \html_writer::tag("td", $r->failureReason, $attributes);
+            $body .= \html_writer::tag("tr", $tmp, $resultrowattributes);
+
+            if (!is_null($r->lineNumber) && $r->lineNumber > 0) {
+                $tmp = "";
+                $tmp .= \html_writer::tag("td", get_string("line_no", self::COMPONENT_NAME), $attributes);
+                $tmp .= \html_writer::tag("td", $r->lineNumber, $attributes);
+                $body .= \html_writer::tag("tr", $tmp, $resultrowattributes);
+            }
+
+            if (!is_null($r->columnNumber) && $r->columnNumber > 0) {
+                $tmp = "";
+                $tmp .= \html_writer::tag("td", get_string("col_no", self::COMPONENT_NAME), $attributes);
+                $tmp .= \html_writer::tag("td", $r->columnNumber, $attributes);
+                $body .= \html_writer::tag("tr", $tmp, $resultrowattributes);
+            }
+
+            if (!is_null($r->position) && $r->position > 0) {
+                $tmp = "";
+                $tmp .= \html_writer::tag("td", get_string("pos", self::COMPONENT_NAME), $attributes);
+                $tmp .= \html_writer::tag("td", $r->position, $attributes);
+                $body .= \html_writer::tag("tr", $tmp, $resultrowattributes);
+            }
+
+            $tmp = "";
+            $tmp .= \html_writer::tag("td", get_string("stacktrace", self::COMPONENT_NAME), $attributes);
+            $tmp .= \html_writer::tag("td", \html_writer::tag("details", $r->stacktrace, ["class" => "dtaStacktraceDetails"]), $attributes);
+            $body .= \html_writer::tag("tr", $tmp, $resultrowattributes);
+        }
+
+        if (is_null($spacerrow)) {
+            $spacerrow = \html_writer::empty_tag("tr", ["class" => "dtaTableSpacer"]);
+        }
+    }
+
+    $html .= \html_writer::tag("table", $header . $body, ["class" => "dtaTable"]);
+
+    // Wrap generated html into final div.
     $html = \html_writer::div($html, "dtaSubmissionDetails");
 
     return $html;
@@ -244,4 +466,5 @@ public static function generate_detail_html(
 
 
 
+
 }
diff --git a/dta/models/DtaResult.php b/dta/models/DtaResult.php
new file mode 100644
index 0000000..e69de29
diff --git a/dta_withRecommendationsTableAndNamespace.zip b/dta_withRecommendationsTableAndNamespace.zip
new file mode 100644
index 0000000000000000000000000000000000000000..0f7b9a6d280819159f9bbcbf34e8c7a73f287ad0
GIT binary patch
literal 35019
zcmZ_#W3X+_wgie!+iTkPnzn7*wr$(CZQHhO+cxk1_C4q97yG?8BC2YP7!lcj^o)#_
zm95E10)rp}{PPKPS5W`=m;c#70Pq2fob+jxm0$tDOLdS;2X2^6|2duApaB3u&VT^`
z{=Lcl8vz0U0stu0=Km0gSO5SJ{s+Oz)==Nd%G`j)&dl!LXwB>_rvJPC3+-A{({_^$
z)n~SL4~(A(Erv1B-I4UV&3wUwRl1=*l7Aj7fO?*#w4n&4oGm^3=aoAYEqrOX-c-X1
zO^ug0MF`i2>(x={_lrT(#B+4isKY30N?i)_Yc@bD&Pisc*c`+)W=tW>%FU}QVKtCR
z7kdypt3-5fD@$Quv0V+E9VcP5312@hE=wdTGHV(Na1aDC;f!s1oHBat3z4F)n=sr=
zW+(xP{}E+0`Tk&f+4CWUlnLIzL2=3eH9-<}AxIGkK%{Fhm5Gp19Nbh3KO}sFk46C>
z8zP0&TL6P=cAR^fT`Mtn3Nu45w}>6-9>{;pF~Nkb7TgX`96QY7BCr15!WU6Lyr@Hp
zacvSQtp8?(I%Yg7Az;xR@ztIIhO{@P)V6k4cKqxD_}$sbld~hkht0p=Abmj5Ll%Xi
zWx@a~Nng}GE=&}FCY86B+Y?$*q;@3r@EqJvmS$wJ@^L&!OKUd)u^nSuX4LeSR<!l#
z<okO1`N)fJEQpXg0)&OmmF5^2CaMfVZE8A&*H4T+FOsMM=7u7SrRWN`4wP7`akO+e
zL@0nw8r2~)BN)Jvi%gvIBM7)Fx4EKv^|GIkqNrxrf`iwGer+@IEQ^Hc0d7}Yx3`Du
zbyRinakFy%SU>jb9vmXjqdT#?TYwVMG%^US5#^AagBPj4)a(Qeh{d@<KMdka9l@tW
z{OM@TQ)IQr`L_H%@0IDqAw27W5VbQZI9R0;-*?MJCap$ADHGuC=<WTH`vE(Me$pQT
z(l8G{_}hbn5Ctb;co+ydod+UqiciC$IEA1Qz)p;V58eDX0dO}!n3Ij2Z!!U4fzV8;
zFl}b|o-h(zvOXf2VOuNVGgof7m;@;OkQ-E|`k-^tY|mPj`O5e9y8lDy0ho7oypjvH
z;0@7Q3DZ7{Mr}=$7rlyH?e*3Ui(MFarVlM>5?_7JKgXN;H`IIpl)cl()zRD8hxxfy
z<aTD9V%_#|=tmr<?~*GG`q;PM8MIgp<T&6@yaaf{u%7}4*EMw@LY4+r)VvXck0Z1D
z@5MHHkGAeR-=wcMXGhux+TrBm{Pp`-ZjNjTgdEMjC`2C4<}j=9a<C~Uaf%G3NZ>%^
z_G--yQ9wjlzdZOu2$Uf(q*++|x1@}4d|<KP1Ti$Ya0%CbmzV&PXhYt>Xt|DUS!kdJ
z()YZPU6jYkb>*_%2oJ}E8xM9z$BN?C$3g^3mI(kH2q_fcQPR39Oyjy)$l3YvO3`1l
z-0#_d;9S}TFJU+p$1k#9KOPWyAv39X(hJdS+E<FmoTCW9z2;ibF98PBR{V-6z3nol
zeC0Sl_z6UW8T2F~l;A=%fJd$TrwP-y^;VPH*KE;<<IRm^&efE{V~8n{Z??4gHpwcQ
z@}e-q*BO7msp~V)8virz<aRsRBhc$)B2SIbzdnD>v-C*`{ca_k&W<R-ni{VEN_mi+
zwq*flkQWvb>i<%f%>x2C04-dSK&OguFGU2_j%ca9<2}t6w}wwXkEiZUK*OjnyaS1a
z0a~AF)jQF@aQKr0i7#x(3$d{706hq2fHbCwNWaji3ynVFyhZ%!p(L7BfOuO#@aJ&5
zzk6KF!UuLZyX3}UA(sIOvMOqU0yzWdz~O^^u!F=C_#s;b#$>U)*Ig`(K48;!#IR=4
zl($kRPSsdg*xUxU=daJ$r>s(igA`rwu@mkJQeXne1A+I;cp*c#PU;L25aCPCqu|3i
z3|n*S)|u8f*!U5HV<HYVD})Zx2JuN*q?Q$gqJ)t-Oy}%g1};bq^^6NtZ6mQNUjZ|Q
za0P9gzU6~64XDw3DaXE+^bJNO&MTQu_s877F41E?Z1dOF*Eb<Z3icBcwuX<HrHn#S
zDj~IGW9w^1_9UvtZGdu}&=k<Y$5(#x5T(6f+<5Z3w5#hM^0A}k#RW<wN_iA?_z3v2
zTfI=yTKC<O25`k!$fVasW$yQ=VS<n=;7!D`L(Cp;`T}rn!~HZh$Fx=Qf<v#^yF~&{
z9(^ZuT>W5D0WA%7hHS|wiqS8C)f2Ae9<~J~4$RYgZL$GgAvTBVwErk70-M?S#G;FW
zk~QG<m>1|>ZJa{m&5%TIrc%(&x|RV!Jr)D&{Ci$uLd&qN52>_mE?_xA<gTe6Gll%t
z5?}H}0jG%w;DEP%kY^IE-DwjPYH!p5mV!|KVukeW6V*obQV88r1PsSj=pM<*ndT^0
z%b<UVuc8;b%2_WW#!$+pbnO_pM2Q<BoI?bRl|1)4D){;kx2zcIj^Ma4e8xD1JU0V`
zvc01BTmpl`<|3w=?)HStiADNK0pj@qk`A8PC>JukA9v!O;psAvQ^ccEq@Z+(FS}==
zT45uOz^j?YQ~@IaR}QarANb@*nH?r@+n^`l{6kP_w_H^Lah8k~U9}%~=(+_D;XQ-e
zBQ_0Dn~&oSTEq$K7|G2krzf$DORRDQNchdq%rcF}4p9?@>#G-TxCr!HEwYD{rhZ9U
z**wCsTwdiyv_8v_$2vlr9+nP6Iby!B*(@8pm4MB+?-xI)MxfII$`4v<lvUN4Lmgos
zV|%if9DCGFiuZ{lb++2F%Ia1*XHlLyzGM~8@||`xSDu+;514KrC)#uTb{URIbGy+C
z@n-7Nrmat<Eoj?{e5>i!eBlEtso1L9vL$3H8L~YOQhiCw%m`P#K0PoM^DHMqdIoZx
z(Tfz>8$Uy$vRrIV+GpKG$5TBo(I+d)X%tEW(I9%3O0z|>V-=^TT%%OVjOlW=nv$KU
zok`rvlu{h?1elh%iirjr!-|E9)rqso#QtOCT8KE4fw<2+jOIq|za=bkn(-+|f`@6`
zheWemJ-%l0(JU=$wTio}x|n75ToVSbnhG6a?hi>q*1Ncc{Ch2vVy{aAZ5_$#U8Ey_
z8K)&uYP!OdE_;0@>2dUw^ffoU$EYRd%#&ci4BQ$w<2(Z?Pfwoh<aw1WUl9QQGip#_
zLDBBTd=Phi4oo~%P_Z+|h@ha2)TV%=w=Pc(+y<>ONn-lCHcA0%_}EhK-@|Ww>f%e^
z`-7_9AhM1@ei6%obb#uZbXD#!<kB2}+#R*D!FuTG<^HNfpiA)e(d<)Myu64kS|igF
z?~t$I^DE0PHht<eTywug?<P|;dRgfL5w0d9h{)T4lC)!Tj%!`}M&^O8cBd56_wsXu
zg)*{hDc@C0-D{CQ)nlElMev(jkpi!0l5&tAr1)Uo`G=q*t|f$9UTifHNKt*0+;>>V
z4WCiX0RI_QHy}tXr_%wracEzsJ(wml$zox6wUMd4w7m@O>C4-}JGiO?-hkSym@^~_
z_RH#Qt&$_9K(-j*HA7T6WH2nmT<Ck3&1eus%JsDN82uneZQh!Raaer?#}u{YmIHb<
z=iUWBq1PvihD%HU|8%VTL&Cc}r~AVamJ4HqU_alofIVP}k-i1UW(L>)MUSd=gi?us
zv6KpuUSQ6qT(}lHercMICC<22xhEOuR?W0nX1b;SM(Rsr52v701ux2!-ioSEgK3nl
z@JYc{wEj|gLUh;ig!KWth+{c)=*|hNR)?IS<EGM8g-x><oZRvwjvvmzEDZ=9Ry{i(
zn8CwX@zP51;jE&AMM;Ga{0(4#i27YhiLrK!WV6r0F{IXTvO+6=(eAQ6W9A075hn2N
zX?X-$Cf6&mkwc-~ltzjy)$uOZqJ5=!+oQvVO>1m1IPKkhlE1Dw%9aXcizR%c%GMe2
zmQY_5{J0p=&#D(N(TLG`j-dHtVKcnCd&F9$RkmKY`bYQR2P?YZ!59!1I*)XY*CeUZ
z5isq}DJ{E&<nbUe(7ZB{@*;_1WDQ;0^SdqS6IY2~n4s^_Q?%ft>nh43C#8C)gYTGz
zMRg#$VMurv%R*%>nGR;Puz!q)1A8>~6R2a?t)~|X*GQl_7TCuMjtyoY&cscMk3nnU
z9!~3LiHCN4^xNMJ;nTG`HuNu@B%6cIAK~XO*A!>2-pl4Z)v4AxLk}HX3Kz1i?4|2L
zliQL-SL55r%XGbMiCQ_!V{az(#|RBDHD~nP)(S{=!os2j&qdMwp-(A1ci9~2aB_IZ
z65-qPKq4$|!E&91l+^=xt^O;OBYeke2S7%a&#YsvwVLP7>(7yv=cVxlYn6^mq*Lh}
z5n-{v@98I~e;7_C5(VHfPVgSU0o>xip%R725oal)>ty(B=f!wh!qFF3s*34>cdy6l
zAD~Z^-9aoAiQNX;CCe)m2Iv1yK@olA#k?KBUXERwC?CkaxFO^uqLuN5%v{XSeD-$6
z?6gwdgKEmZKccU&$*r0J1+?tjTNX^}OerfHt5*Wmk4TJXq?k8}%buD?^>&W~iJ9}0
z9G{~r8cY^W)8cScoFqB7bb}Y)i6KBfk2RVa4LV-gRc0^AX+Yh{+Z0+1mlrNPu>H~L
zs1BqJ0&2bvCxEDBT{92wK4JX>It9<ZwAeA4rc#RB|6_{0*g_azE*F))iMX`NBo<Lc
zMDNy+iaDPqz@S2+ib_;bQLUx$3o)=-=^=}(uKV%>EGG#L!QmJUt_}+T@Q*qBk8Q(N
z%vSwh<7Wf~008~Jw(bAJv6;oi7%P&om`abAnf#Yyt5*4!V`D+~d97umh|+*FvJ~9S
z7|G0JD+fFU(iFjh3FMPZ8V*5XPH3=fdcWoD8gpsMn;eV+NN}V1nsMd9JsGrhmUk_H
zI0&E^!zlHe%@Bhn48<Z~(8A!$cmC#ykoe?AcEHh(f_%g!RZ)PFIP#Dr_J-%2=aZm}
zV=|PGY_VYKFvnL$g@h~~Q|n>Gu&XX-pyWqGW=bw*;LMD@+$7OjjF1@E?@_l;8Hg%w
zQb2|<V4|wX!>F>t{bO%TN6iJ+hLo0OMp}VDF4!3an+(;vuiY6ciyjb1D$du$Ps6`N
zS`%yM+853f1ox}_mfr)TX55HcFron^6|!uNaava}N1nmT#ngWWlUsUU+Gz}PxC#Eo
zl`}iqdOwK4aVe0OY*QvVJdwdT6@?<MaE=4ix+!~tmP=>!WzUg00uO;#Q*wW8RPR^W
z$sV=u!xdYKHo5Kw_d5Chy=}k%q9z9%nE}E}z}ouF55!mjd06rH9Z<6Z0cSQ3A1k6-
znqm{51*p8t^>>>kG00B7+B!W)Ac%Q7ABh7b_>RY|+`4shzr&(xr43qj-fZn$sI(M^
zjeEh8k}^o0qO)C*oQ02zQZr0lX}ZE_g5`$+S8zI$xson?{Lxc-LA0R+fShu8Wx1by
zoT;A1$JfanFpDC4QA_kP10Gu2LA381hUHdDv&zE?^N?b_V@@m<na<MeLrk(m(0;!h
zpg1#11=E6}XF=&u9lv;>&rJ6*U;<Vd*VNn#UN3o?plSm4?^?6Be?pR6gY8<mO~ipp
z2;(Q88@1)<$%+mHg{CW46Ra=&L}pBYwCWkFwM!GND5;~C9I!U<pIHia28{UIJjo*s
zoa&mOy)zmk3C8;BHvIHvi3%)rc1Ibu0loG`kO|1n*iqgfDSYFTO;0Q|!~XJ@W_dA!
zVOPa)$R?*#>Ew*X-vWH3QrtsqCppBw#rePF+mpPLuO}@=zvdTKe`hNPb@6&OPctG>
zaEot_M-e*ER98)LI-{IHtY7-adhN2Xuw`cU4{lg;yuuSRJ138=7D^a+Wdn~dr)qfG
zgA#t0>BRrg)b-^3on#LwY3OmhWssIc?qdh3TJYX%5JI6|_5WMuJa~^^WG{FWIG=Gb
zR1LyCYUzOAf_Ah2J#VNEKO=h0;)^TAot2lMF9{EhAJmL29Zdk<nt4npL#kU6*(Q8&
z0D}~&N9RDbbESyA`Mt32Xd;xn(AT6#H<6YEB+MLyyAz>)gfFaB6y(@~c~HG^`FU5v
zXz&wZ!~N!cN!_SlS@2`;m|a>3cbZ9R^7*3|BqtkFhr8ycoavjfF_Sge<n`&2duxOj
z*y_=s@06*Q5YvI)B=w>Tdvx^6?-14B{NjudCx|`k7P<^_Tj=Py9uWoBU4|w=W#Y?&
zHPgMCdG@)#SARv}VJ;)|*@){-B0B5h*(h5@S6sgHMkWCr-YUOWY{?E~^)G9s#a>W#
zX_1O7gyK&*R@;xOi%0c)KPZhUREnfTxkD;&6R>I@;QCaIC-_31?yJ3JHxOQKwjoyH
zO182bB@>xuf|>w~IY9d&J2`UpUjE4XkMvQg)$<mB008_WaQ~6Mb!+SYlRip8007wk
zkv;`sej#aL8f&9}UsrWtD*RjgWd47MpVp-f(P;8dHh_Dm2D@5p195QusJ#F&+)?~U
z3gZh5b#!;66+Uujq>=h`jf*NP2`R*$>zXd~)z7-<W8zi&a&!@?3$`Aj<=9PyBkyjz
z-L8Btrz)$6cH70w(+h2h3hM~`g_rRLKll5V_EuJI#p-lh!!@nXPh{?HRkiA!@8Aac
z?MM$pg+sG^_jy)p;H9g@xyMJwjxtU+hoUNQPl={6F4*FVU963z@kX-^)!XRG(@uv<
zJ4ttCXN{}oo7ULpm9!<e^Sj>1ghydcXAdjNRtU0>%lns7P5NBE*E^5qY`oObbPJWi
z6t^pD>C*raLz{g~KiT_aW~N=Fs-nSzk9B3UMYdcemUAt)*uf^^4$HF;?woYtp32*<
zkJa*8d4Dig?(|M>corqXbRBNDMxKzSt>xmM-#(qBnMO#i!;xjoAoe>dF>>?1mcB_D
zK$1!wTb427!p-F}RnkJ0L97mqOkBLJ0g@b^071VtRGu1fhzXm$ZVbz<vfeeB^B#@O
zzuSR8H`!Q9*6OgF#O`zCm|r&LSZuEAov`1HxK1y`3kFTQ{ro-v>t}%M!2Qf{Vj;g8
z4N3LOn$}p|0QA<?a7dniG20+cr;(A~XE-nZlw!sDHgZjuIKJYy^wo;iL(c}s9qC<n
zYd2%ndEim6z2vplkHi+xc)B@YZ-JH7__-NnNg*mRyYzvlIdX#{M&r(=be1~UN+-O`
zi+LW7g8kt1g54B)zS-B;=PdOwmFS#Z#JHmzhSGL9;QXXQ)LSnD)aT92EO{KOv?yeB
zxf!>LNwEp{hYz61^`66Msi_Ydg}Z3t6KUXVov`4iW6I{+MzIm9Rle|D*8g#>px0cy
ztM4nfruMQ(3q>=8Uwy(_%?xMb8<Aj=CLVt32EO(;<2!N%8v<qesK3;TRXBx@XXpj4
z-HglG=V;`gEEkDGkpoR(Nh{Zs*&iyu*#~aLzLC#lMmpzE>gsU)-fpme<w0NO<lEG1
zH7a-;A2z#lV|cOf>twyE5`=GwRcWvl#yoO{uXW0c(q9dq7E=DZ1yNe%2|Q}yd%FB*
zHDeD)@b)6!%B$eca4)~w89wBMzZU!A&QaTzJtW`^t;N{4qjeDT$gE{0ItTKul+pR`
zOVyMWvtYJA`<Z{CJ6q0DihThKW|xX!k?spo!vvgUD==d;4p>|hQE(JO$@*|Fj<aDZ
z>X^ie=Q*dMIwBwl$DI)b`_Jd?Pv@N&u+<{TA5d38DQF!C-={+h&{jlGv1jf%5%$3r
z*EgC36!e8W90f!<fc{k`d}-J(KQR6^3Of9D%SERu=N1usq$@w7{&;|b%Z-M1RLamy
zep|iOk`_I?eqaIOAispDJ}$Kx;q)S^Ri>*AMlpVeYYp4=3y(lkiMQ~6;-bv}xHy5;
zyotR`*kZ6SAi<Pk(+e-ipaAG4o^doriPb=JO&=7ZJscyN+8s}q7XnFbU{%~*`jS9i
z=Uu`-duDtjJCX4D>cH#BK-mF8JAu|Ae>lPS^#K^eD9feh#3f|KDdPNG&;wyia?yv#
zML+zvP{$q6WgXN*_9CDF7X|$Lb7@4uOSU(5<_{Z-Ji`C-V2~fZ@mD3tu)~mv*D1z?
z(I=IGVxA${fkFs21e!)4sVhH_iCg_mg9@{z3!Nt`E`pTh?{N&@h;ye?H!-`KPNiK}
zRdk!~0nMyX$3UtTpoS#v=eeis;gWZ8hY>Q;$Kx>s@LOGRX>URy2l@k(PC3jz;b+#9
zXyi3C<DVlKB{b>JS-tL1Bxw!};uZHO(8H5510^nI@@TX|xG!U9XODyu+>v&cmefkj
zG+x+zP8T0Y0##xR4ciJF>VdwWM)Xd5p@gTQK}T(brJY4Bf<!cdCTy6Q#xgz^6b=(|
zMIsGxaGmWzxXvK2chUYa1V{TEkj8<B=|l&Cl)J8zI|Jh04K!|3-41UizZE7c;^7eh
zHQ24_Y9gA;w*!<vb02-%``MdY+&aVvoCUrJ<ZEJ7w7J#I=*9#flUp2kht7l(*gr;{
zBzi%aC<SzYTf&&zAZAZRYBaQVF*$jORinV7edq!s%G2rd3<{`~#4@yx{{&maGoxXJ
zAQqkl?gB@*^1=Km?!kcQS5_-pITl{}$q1)_ov*sl;mDGDaH)Ftwf=IBVWR(3^Iq#y
zT&4#-t6&c_wtj02<Lum@{wE8GEBIgc>tgD2dWQD^8W7=pSwfygcmBuOVCEQon8I^<
z$cTQjs4nDrSK4}rNJLjarye=N<nZCe<@Evv>+n|SWQC&p)>B=;DSiAGe?W(dVhN0E
zN&|uObNF@!=?)n-1cn8Wp;po1;v}UcLw5vriRuDPrR;12u%ytAtJ3@sj9<XKx{r_g
zQHS7h%VGu$mp0!osSwEhO7=x9q;4;v^K!TO*q1~5Q0w*UqQ%K6DBwiHG7d-_B~NnB
zk9@2(>=Xe!?W*%+6toNa4B`?4$RRF9&#vUlN8Db*lxS&mb#}B+Y3@Ub2P!{aeVd<m
z<<?a1{sOV2I9Ovc2AP1QjAYG(ExH*yZF6Vq&HcDA;lIcL=LJ(QhqAdRqjmjO<aD~2
zs~X}}LJJtxr_(`#GE_ziLZ;3m<Qdw3t7%KI?QI0$&RFs-vjDs@x<5#jLE1VjeXLQ_
z2f|uHSe?zn29uEcOEqTx(HjpVh!Y5^3eA6fY-DUJd`2iVxjd!|u406t8dGoF$O8Nb
z()hVrL}Oi5aPPj^X63tB4?*w4?f)|ti_WGt-O(~_1EuPcc2^t&&7PGXdu&h_g)1lR
zW_L_Z4b;h6)=Bh0d=X!bM^OzaVd{_XgWpD7^0yRB4!q_?b!GNCbq3ZKSm%<lCABfB
zcP7sD>9`scZa^OM9RCPX8MzcXEMhH*K-fEYwkO%($5v{_DUel7r_7RZk2}X+K0JJP
z2O_AqziAIPP(5kK^YIvkV`3)SdrB+A;F&u@tGiCloF}{7_x;Z=Ga5!kD&J#n?otiM
zpW!V50L>kqZ0G9>WSzu2t?<k=QD-OXKCZkQuFt2FlV+%2Ad}!pIJ@-XUOdTOf19IV
z3$i|*p&<J3&{snE+i40}G&q=?Qmj^vfjQ49IWUL_YOSK5xCg-zv;pz}FF@zSTv0nf
zt31}OZ{dsf5uObQx1{8k@ypcB*Z4tCU=i4vA4M+oD^^M!4o!D7dR`xH8k4VW7$y6a
z+<xYJR4y}2nSdZ;DK^WYy9ooHyH_=URyhv0TF-^AwfLzSB7FH=?Js%mZ#j-}JY?=!
zB7qN6Xo%Xx&44I;U|F<6>yTXhYTJv>QaqX7{;QXMrcNS|d8M=9AFBW}hwG%fHrB@M
z9j1l5zMcT&PiRg)o|by)h--&!P49d9NcM)rOiJQTRtVVp+uA>4GLL=;k;X6x-d!|W
z_mG8gRg#~I+BiYb;JGt`p0XL#LS!Wn7xi{{6p~koRR_XB#QIG1C?EM*KZqD6WqNDQ
z*qwJ%ORNEl6`jGJaTyI}z=$Y!?xJ9b0p(B4s5a>Mmi$x2dQUzulDD&l2;dnrm2>S%
zv&WQhG9Vka!MO-Fv*8zOz{Fha0?UQ>w!nE<dXP(_I`W}C)z(+RbIY@Yh_g_HJ9mh*
zcWsV)7wDkac;g23SW(nq`nDo=3Is%=9rSjo(tjB;x;uiS-|2|F5h#B0^3<q-exOqk
zx2Fc_Cw67yx#wF}mME5(8~!9*F6i^dcid?)Bl)TGgTx~Kbu%_F#TEGO-_Mtzh{+)*
zhK~B<PeuuTH;z4%_EUvRo+;jvQ^0>P`uom_j0c*@P2iK%Bf?jM5Kjf!DEZ0vO+YEs
z`+MW7QFi>#LE+#;wA7B$r>Lz@-4a<s4cy=ed=<N&8SK9*EmU3R#33q=gODrLB=Zw4
zB#sc0M&-|@m1+#-)l`NfnaV>BPLHd)c1&T}7#M&g#4}DTjX*pGF6zo%kfVj_*<M`*
zNFT&Bv+a(52Ip8dj0=d~@AVVdh|c9rTDsdY)0AeG6C$K|UV@n)W6yn@h0(>BTR1lO
z`!mPIY)ej0$ZF33Xs}jWN_K$-1Crk;#nR_qGnkS#G@RtM1L+tO7%1s2UU+ezM@EC1
zJC-3MSCr3D1`vP8zW{fCyvjJdf4nN}hG>BsNxe`GEzcf2l>PJ=eaz!J&sD;&*Z>H{
zz2Lc<XaoU_)L*7TNmy|WfAS89YzjNk1qh&<O%Etq^+9*zgMN4uDhm48(uP$;6o%RS
z2^Lxtrq^aPyD`3&yO38uE#k<2C_plVYvFl+#YVO!J6D6jYEQI3#-;)bf)3sMOWN?7
znb7_8k?KU?1(b9hQ%`1o%r5jd!@PaYh5;U@?Qi}bC7(VwM7{wjHwj?11@L{z_=v3>
zoS}aKQVCF_2&u<KFi@sv_2FEhsw5i(=W^CZ`s}U<kFTdvG@6t5-ZK@#C%sHAeQE7W
zhy7J5Amqc=B;K`y=)#a9ycJzCmsxbZCvZ9a<qcZlr<&#TtB4)_&&jca396M?gjCds
zdd{hlS8&?8l=sEWG-{%jP!gPIH|)6QvZVs7ORL@45M&Rg_`gzq^?;gX%zf*^o|Je1
zl3+n(b~3*PT4@+`zfaGq)CC7He|w=wyL_RICVeDNnXHON1b&A3b)K<KT$03@Vy65W
zIF9ae>V3MPS?R~~8LP&j^ojwM*`0}SWO9npl@Zl$?KJdO;8|f%_WU4-b)f9jLj5Z{
z6U8cr(}S<IJ%3QmBxW3QZ(cpM8i%t)f3jBiCEY=M886@8ZQp%D#3b4r2*?)1s?wFf
zlF*?KpSdo-$i7w?<P?)KJ8FMU_N|GB;jehuy*`<j<;%|q(u8PSO%C`;96%-X2!ZxE
zwC#7k>MFm-mK&dj2z8qgoQE$VNGR;~JmSicxp`q1(kC@aXg9`E7Rk*Kbq<!6mJW=1
z?`+xMo$03Z5l)A{uP@#$^Mk-Z3e*Sf8az4Phl;?5;9|-<lv}Kl10~mgAvrtKybj7x
zbmLiDL7RnQyVAGF!PuIzq<Jthjlp!i{LLAadJ<TGU)aK8vzW&5R@m@X<AEfWJC~gD
zO@@2RK>@^(J#*mi&+ev+Adcf+1krSn^x}{Acf|eoVj(3p&=*RRlw9PS^5@Xh5!B7b
z61;lo&2iH;L+puOz;8g)tg}W<sU^!bIG+?^oX(?|uth`MYPK>%w4&TIDU{r{{5RX<
zTUDb<rvS`0tRavIsEz6*SMcT)xkva9iG~<|jFa{j5@4jo1$a$uyGfeN?M~}iV;b<4
zJmQ|r-h<?`!XXjy<n)Nt_o!2}=#Dhu+uTgULO{g=7|IZzkW$eP_*z<x4D?@UDg}Gw
zgweebZ=pB!0?qC0Cp=JI#2u>8vE=NBjSepm@A<E!f)f}F`9oG}2NmR<`~|1dFGKt>
zCOuKZDzswnjp%|Uh}h@38DK>sEMQtDN4V7VQ}z7NA!nO_FYt|ga121lQ9=QIj_kEU
zvEaTXS|4_TT6EogP^p{3Xl<Wiv>M6|N6ew3n)2))&ghPVu)%gHLuk!QZ;Pvj!79Zp
z8@gJd2>bO#uut-m07RiuxcWzDeN_8J1$#S(mmcEh;>X%R8BDf2GPCu@p7zbSB!~X2
z#M|+YJPrIVFdKDsaV89Rh!JMAi(g_eJ_D5%n^<UKG|ZQGSgE#I)1fIyf0DbC@q>ur
zHshLQF9T!O5G_Q1VlIGbm=xBCPhc@UzvK8u`8>^6e*y1)h_%q#m5C2j<A2K5-TOEs
zwIqK3I9p?4y57y?+m$^yU;3ScrUeFCjaksv<5DVR$(^D~2xj^3rf(xZ_T&SmR#6s%
z2I@K(p39QmZH?zH-!6}<zTF)WGZWg^lZ^hw2&S*vJuFcY^{y6^wPjgAoj~1iTIPhP
z9%qt(CQ)a>&P%g60-mk}dR|sPhJObJ^6~OU4Kh@0y94FxJb}Z!!HI&Ht=TZBIUhWu
z^!cN@t6C_G(=3)VlabvuJz)g&0>E*94)N23{D-`kPJHjBW4!1IWL25W!Z<`zW%!T6
zuuwLD&!Up^J}6mfDZSiy5qdS(kBxs4p6bc~^?FN{RR&e4bz>SLc1<23>~RN2NMMXZ
zbgb&g6YA~M0q^#-S)ywG0;{MGEq~6J6WChdS|;OKvZ@<A1PYod1iF~rvR)vLm{>mu
zBm>LB3Ct?@(O-U-*W)8YTOa<bZdOHI!F9X8#)G4IJX_RRL=$1-OfPwL&Mvaowjj7n
z^!>xT$1)WRKI{xS)aHMkgW1E(5pAcz*_)n#07D~)HS(e#YSBy!5(TRVeHUG@_6h(q
zTY-@4TO{sS<wz0+V>nd~mNBCcJ*VKrt{ypu=}h1=OS%{>I?-hgoQVVcq2)AU;X6lg
zH5dBW=0P~@l1X~Icv*xZZ?LcVUn(g&zdlcClfi-4&zgioRrxlUU=2CHC}bIa!p#y?
z>aYg!BQrEvPw{%Yz7D<~C&NALo!=i0GE!%M-QMvUy{fq3P-{&dXZqslB)l_6&Qc0M
zBvC$z+YFH=!q?1?UF|l!sd=}+@`$OtA+@-&dASul;yOP9n_D-#=uQX!f_iBM_?yyE
zx}Q9gqvW3v63RIX(~F!bpc&=G<jiQ6sOV`Ep0ma7x$ot!F(9pS0m!V71#wYe;<=a0
za>t?wF}Q_9@{OP^@sxBg7sy3Ovyd`XCpt)0?9#b5xeU{%TkEe2It=S@y_~2Y**U(b
zv5Zhm_O#4YHc91V+WjTL>bq0QN%R-uwZgVp-W1+{Uy($I(&U}2uU;b`oJDqcvh8lO
ziq;I6CcuB@iaQFW`#RvTdYEnnB)N&bkM-;#zhzNu<046h;_67us6xkm2)4BJu=*|q
z+#fdt&l#gK1KH{u#(f=7tPIt!MnA|1Nto6IY`=?@g#L0Q`%%}0B*lbI3G-i=J7E-1
zh9gyS3kUL}FDu6Zf_wxxPAP?DtZ;y%$u3u|@}Y5BRT_ZDSS6`cVHtN6InRWAfv($;
z5)uPbD?kq$5`oKaC`%GSW9gNOj2N-yBT{lK@#w0KW#C&OCky==ar=8oev13o50_gx
z!bRQrn*{UfsgRmGx9s$x5)qj|94rw!NUtL<Vv7V6o(^b|nKo7^5ufyKpKqGLt>F|C
z)>iWn8ByQn>t0ieL@P`$d`Ghkk0NP3x=iCsGtXe(xgJ$k1qX2*=uA@rt2Gg?O&)^z
zp%VSe)I`9}aPdwy0Ug$GoBtMJ-@Kd*^)?6})Qy`RMGZwp2%JTM(NLAZHee_@>JE5$
zuqMRnw3`j+l$2oIMqAKF%`uht3WuogY8~7?u=s1eV2U_0U-|Uy6=jR9yI`aoW(z&k
zSbAX$|0~;^`sERt*Pt<+vq{HxI%mwTAkAA1JC=GUJ%j#u6Qnt{8OTJMH)B!<IUL9#
zyfe-S-TDI&WoTQyOgu)6hb;b5a|bx@8^Ec~CzE5)K4oS(aVa^UL{=FpW_GY(9{<_#
z?vQBQwM6HEm}j#Sju<jHE$kQYIgj6vr3W?)_SZSG5~Qp$a?0=AG{P_$%bsU3i1EcZ
zn1`=Sfo0S)HH{jFqFWH3rR80SpegAN!52dD0vxEpDOS?dPNAZxXEmQJNfB8J8NlgD
z0&n?~*Wew02pArUG-f>FB%rDNzJ}HWMAs4g;x@gIj4h7&EW+^RZv+9-H($ls$K@L>
zlT|qX*6#^B+oo+AT8V9i+>?#85!PucpeJsK*py*ct7tdXMbA(72+8pn`fS9ARaDA(
z=n8RO*zLXP<Jw&TPQWMe(iPZOIP%X3^9;(ufy|lsqo;>$5nf33)5-i<|Bw|vQ#*%@
z3{#;o5Mc6@XRe$kR6_e#1L9@tV$(*FE-~+B*de5cZ#!AY=$oXQEBr;mEpd`)tANT-
z?q~p*KrU5^ssdY1Z_k6VGdh9fO~*A+jpv>LUnjKKv6=LsZ9-$tkPr1rbcALu23wgi
zlMd5G*^toLj5pl}N~4-Sgws=?<)Na!|N01{bF{jAGWs_!EmqhsXvir)j5_?o?;+68
z&+k7WfDpG}UIiKez&}_0{|N!6RQ?kJID!7BZPn4($;sTt)ban?R^=Y#|D6NK{(t8H
z$%(qMn{>#-yN?t#72-{0Ok!R5d{!8i`3mNhOc2lI4u_dTgY`t4=H)}7yUv(ki*JqG
z$}TtTuU}rav^^@qC_x0o!F6$v;e5R)jBrk1ts0IU>;VJq7t}D5CtP!+@ZyKY*1@Zo
zLUkODnkIKJE*&9B6m(<3&LUNoqQ-D(2l*^=7Bmgnu6dmr_Dp+FAfY8qJ&n9tvbTGf
zD43-BI<>`O`h*HfsQ&UIzJ}08bv9mI21kt48!&VWMpIdH74YO|o&K<xlBR6#H}jY;
z{8+XN#xrEBc~rHR@>@7!Cptxey?wfGY!J(Bs2zkU0aIZ%R7F9|0@n1E#=DW_=r^O|
z(^oY9W*tGF<S~Wj4P2!Ls%9S%SX-Lm4G95R;bU~iF34Txyiv6_Vo2V2vLoXO2ZLr=
zQlXKcQ6}_4bg>6UUe2uH25Gy)kLw0(0BU)$!8?0_qthAhbHENxQevM`T}AO45@hVi
zR)I_#$ipEG^kUA<pI%lwLE_a9V2$1a5zI4u=Bwb6_cR;In>MY1TFcWl<K0^!se$+q
z@bJKFUd^@GjQMjc-59jyAgI}YC|hB}AA^&t9P`Cai+3qgc<QhL&0?#@lB-vX>wG$>
zZqyVPT8a`_AKWy;)1e<F;Gk3|xF5ZMGXL;~o9JU=>6#1auz4UB>MIz2_>tV0<(|a?
ztSn<E2Tq*jrg3Qas%RjE@Yj_dYzJ<xUyT~IVag`zb48PabGvyIWDnZhazO;p&Q^)0
zMm^RHT>rqTTz^w8Q~q(+kUMPlxpLVdge%9WEWUgK1_HAs#4!KXsqET(|Hjx!a`nKw
zQ~{m10H()&<(lLzVDoai)vGeEDSL}<xh?pTf5>I4ZOSEd-e}G@q~he{=Hb3^ThRT7
z|J;U58U;WA0ROQ3Km50X(fPj+Y~)}6!2M4M=IG>ZW$Z{}=;-+G6in)a=l>u3i<P8f
zH|P+$iSF@ALM60?1OW1t8%KT0LUAjKzX9QJk)TIot{@>RK6WinEeWV6^>HW^xN=x;
zqj!zy19ib-%OEJN*@(f``OA=lfF=+W2HSp#Q^bPS4LBg#>#fs|1~l@QTc#XMWbRx!
z09z}h5WrgWIHUN_C+ZH&Io?^bx5hGKUwaAZ39MsJXNm+siz3leG7E0{Q5pNX^8VP_
z2Z59eDCu$1NZIef&ZM=R8tV+|h@P(9YAue#_%tNaK)!4+Sz8(R%j+E%+-gPkWcOk@
zXJgY?5v)_Vu#yE2;KzHox?L2n@RP6^*F?%c)o(6~GI^F)qN|B_Y)Y-&#9?Yv;<mOz
z;tA=P2};TP4q<>w?`6wxpbr%HdqFJwPoux)AqG*Q`P&`tl1i_Yn%(5mZE#Hy;l<Vn
zOok%1=fx2G$tvVvRVe%dXBa(HSM`Q|(U6zR7h{aTK^f<)%1+tXN?|02>j<2ADxGvp
z4W5<IAxoVg+_us<Y>{bQR<Mi9si}Pn;h8uod>HZs13mN+z_~bmJ{;+%8C))Dk4vp5
z8cm2|{9Sfi=3jZX#A#-vdzd`5?u2=pHIo$gUFw(a!sJ+lN@*jz?I^f;iYaax-*jjd
zw7exdEJob8x|LBfztd@9kt%k}{t-S6j*Hs*J<X)w*czlC(|r`mdPm)M8L?Zmb-#ST
zTc#Idik~r5gGFXz3{92!0sn`1iSM$@IR7HvKlJ*4iT6*#36Q(d|IG{h^Bd-Wh-YY}
z@91dk`2S8G2rrZWd-C9)^S?Sz{zKsbW842jIwJ!BK>sf!BLiJ$Cv&U+NVzu?tLgu)
z|3V$s(EZm00+R1*X&Q8Zv;rHw%V&y}<0;GeN*fdG6^QUW6^wd;mGu)madOpboUKFb
zEB(g`tqUVDi9C`q=XNJI@b=o$l--a03G33&*Q!@CyaKI0;j0%|4#GSG$}nO0oo31m
z@Od_@2vM81Fwg+GiJz}ytmK%0Tdpx+4fdeK#FrD3#L{hI6s_o(pjAkK8@nNXgB*`X
zR`vh~Ro|<^9(7pI(R@Li7-_#`p!^8IcmTOpB8V2%f}edH6<ET((A><^Vd^F4TX1od
zC;b+3B-_J2<%2rq7|fWtaFrSWG)XAiP68ZbA#m5UTpii`1VJ4{uA`e?R#iyqF|NoS
z0)vbI9JhFe<Cwz%r-1V+f@gyX_c^-GCK_K7WqBpFsHO@zOtoj!0XixSRQ~`WE)pZs
z;OO{uC%kJbUC$2)-ss}_+sDfy2GXQ*i0nG>VnG3MEKyPvsy%J8rIMDlFT3|6occ&D
znQG#uY#C2i_Lh$BjLF^0Ao7SEW6qAu&X#s`shuNh_d8uD7hoE_LS(!j><p~3*PK6K
zq7HK8!jUYxg8#-aU{x1*NdB|>lV6AXp6R=X=bBg;n(4Vhy17=Eg|vVeBRh!y#kZBh
z_5J<5Q93H+s=+jk$SGN1|JiUPV3%Lk00FTieYv4+G$5rBvgjE;?+CFdQo#on>34Ul
z(`h#$T?1fWJ$*V#qg+giyH`VkcvW;~dq8OFkwY?u1dRNHS$l#R$LwB(-Ve7V`gt%0
zyZ|boB*_uiXYxDJ<Cdh@=)9gBM61hhpYJ1R#q5HfOiOs9&qin%_e^!O^^@C|8ub!t
zRybkGZ2oX`!qDNRw)+>gcp7`SDKH8y1geJU+o_&k4>*eQN0(oE3f$P<U#=~{-#zg{
zOcw()kqg_ILU0%WQe8^oJ^8kdtl68LUOZXeeyTM`3YCf;*OeXT3aQT?>C)83&dSXl
z?&ejyNm!sAFSp;HhYtfU&UZWRP5kkf;xeHNMN(p#PXyF**;xH?qfA5G2kP`x5nPe9
zgijB$qIh{akY*)YEKt!>zGBnpc%Vo1k#!*W*Pr3b{h#eC2M-nQ_0gz3c|Wi+@X=HG
zJUkU-H6W9p2vLQB*iyQf`SDb7+y-T>BFQTEod7ffNy~5}KzNYwE;ny49n4_K(179n
z^YX=D!8fh&yjgzhV=gGTy=C{wJJROk*MyB1ap~{lvfZ9snff76VK1(Bzq?IU9ZLH-
zW(ER|mFD|9K3+s{vpGQHLWL6KCu0ckvR!!`Kk}f#UUYj=m9Z!b+xgij+BK+1Bz7-|
ze6&Lfn7VvQZGvboY6D3t<+UV5>Lo5Sh<zzkuId4W+pnb-ky8I39kKv+AapPvHK_Wh
z)~(kE<eqQKez%!kZ&-}439(#gE{^iMqgxbk7pjwYs<I+PwzXbUOBCkrle?i#YA__X
zXdY?*J8+v2T)<jB*Sewl#D?hakv2R?k$U{kC$Q1e<Bu%dCWiv1s=IpbgvwFn6aD}Q
zg0QqcoMg)BZKo`4cYTJucvRTqjP`j1NpS<AR&GVl(0Glz*MP_(sRKd0d_)V20negF
z4RhPgCB(K{GMYb4P3_71I5Hn;M0tOyUvWFciK@zR1%N*N6mOi%Slvn=;&R)%47rR-
zNss5<2)wHF1>{ghkQ=lW+2iAC3Vfy)1b$@J`tR3A6S7C8mhY-<GFOMXag}P!M`Sq1
zWXITTbSX)-XPE1MZi+~3S3Kgt)oLxHe|Z{|@H$%#eT1Z<)es)ZjkuO)s%Hu~vXA*)
zBUa)oaoz^uTX<t<H7y1zRqqUS)6Ny~*^-p4-=%_sEqW4v${RPd+$~TfJ1?Yry`OJW
zcLFF%^}eGGhEf_Bel~mQbt%D2QCI{v$G{v#{rb5v-3-S?-}(_#kJK@R)Sj4x2udBL
z)Cbj}_z<SMK{)gPFYx?&jY0r+4%H&+i96k{;h>&leRK?ugOf0`lgHv3u~A5I<erU%
z3Kjm=gs-p=5MfQW_{nd}azd29kF|(%^S3PtPsm&uk;Gq2Ayt!s`YDzBor!O&MAP9o
ziW=AL$MyGLN7SwQ@q23O&FKJxU0eI}vltN_28Tpz+GFXT{zm4UJ+p@4)Iqo{zmsE$
ztzMgnP2l46b2sftihFs{6b9v&5tD&45t?#4(qDk|kN$KYIT<e=uM$6IjF5;T_sj-C
z$SZC|P2d)qW5l)!8c1`sQfNCgf@fU0B1#ZbuTjn!K|{TL4P)RaW=+gNFw1-TS736C
zHrNRQSo@hBljIA{Y!>g%IR#jQuNQFgu%f}BU>_|f1cPvDSwOV7FAb2wWx4^Un_Fba
ze4i1(bd%H6_0>E^Y*9~}TQj0@D4E$AJf1K63|9rQY&b8po)=NmBryF&64FS{UE0v1
zeYqQ!pUBW^YDg!W6;cACK@oiHTt4Si|9p?c1$x4f5Pwl}OwR7;V4R;l@8zBrACqEl
zWN(|if_EwXh@biWUV$@y^%$$e>-<!1A7Pt)<C;kcjTWClVgVV4b~!?iAtPuqLyXZo
z0kPEUr8q*P8#0AyVDkf~rMc^(MbFmHP_J&NDnkUYYQtk&J4PxF%=m4p1OipoG;z8>
zTrc8&0H5~gF`s3eWr^p}4zrwKM_DOpAh~f`y;5lib2;G%`IK~mGqo1zsCr$f5R_YO
zi`!}9U(8P2WPo91aP8h<l#UGqQ&B-1VE)S1g19hpa^BgX(wsB4cg?a%z{zDTkO1$G
zIbV1A5s7jpswLWD99d@8vkf3ZO3hnzye;e8U-6h%q@hO3;Kr5_@ZWGZcE8$?G$mI6
z(pV+ajFsbD&S>EVj0C-G=g-Gtd2Rvq>X7x(qIVT3!7veGMXVIsymGIKLuWAEX(F1>
z;qe?1=C5^mk~6N8gREBCF({9a6f1dXIe$SrG0s7q%Y8Z)9*7YvK_WOuF($?|0MWDU
zH4OsIWpt=eRUWIlHnZnAY5ivDBA%S4D$@p=X((kCnfW!4+|7G{^WLUeU}e)<oKyt$
zolGUj{@6+vcEyXHIM*93Sk6{zS)oMBw8Y+I3wxf?fCaqPw@%!dfvhB`_BGnnQ*#}&
z7`wt)weYXm(;VF-c4xL!XU{9Q_!2(Ue6O?F%Vw8#wj13#o+2LIdaimhzq?A~gvIqt
zQ<Uqae|V-_Ud+-jKk3E=i*y23=H7aqcFCB*J%VXxzOmMCFzH<BTCGjyUbn`+it@Z7
zsCkNGzIv`xSIp9{AnWcqTQ|(+UT!X{7NQ~J_}I@nn;;l5dUS=QRiXN*@$C9Nj#|i)
zwdl|mNxWwDoL&8KM|G-N6JExp{Z;Qs+0E5z)$Kl;oKNoLTQxUs48?A*aA|CL-AcCJ
zsfpsXZy6mZg}Zt(JlS_sJz~D-`<gs7z@SJ|ErRkGrl*QO6zNlrpKT6fAE$j7#POf2
zY0pNrw=&Gqe!NQe%KmNdzf0}$!u<Mot$XUn#?JMxF2jH7(En7Zf|383jphE=z%9Xl
zSEx?<x(51&mc}+l|5d8y60?~8@A~gjRn^*dLk!_(rZz3H00_}v%d;E4NPM!mXg>)6
zNK|=AWo*q-ZTafMWmRtJrFVC#2KMBy^rk1j1>{Q?7vtm9)J<gSI1@!OChT2_mf(;f
z*jx77gkRL2$^=4gR^L)u(Yo2x)oq7TBG~y{uT)SHiea9y5o(WtwAutRkglHr!K%o;
zy@lMAAMHSh5?vxeY>E+JZZV+|)KrqczD3D6^S9e#cOa`2-SOz0>?l3_UI@6985mDM
z5t+w?0J<h;k-ac_2nJYNg4r6YRs<$p%q_}P`obGl&M^-|Aah(ql#-X=7|K}CQw4-8
zWWDW5#q;*qDqu)oFf(T|Bp9QxCHhXlD18)0QHHR&7LhS>NGr~5hwCYSr6;_tW*~p%
z<#uj<UAlzV<jGX}K_l^r8HS)j51pit&2}qz>T21-N1@~5{S6|omUEYlCtFbE4uHm-
zEo|4!@wT)jz;`EqFRRtR9v7uY&v3`*LZpd5r8gEeYuFv}jvHBlsDnMQl*>qM)Axqm
z|Bf(b^nN`MkI0*1U~o9)5Z1<l2w`rKhqxOVWgR(Oz=K#`ta-KMd{_|U#LYv~Z|~pW
zj~u3GcIkBmj+fr&RbOvn5fgFat%olm%xC;;7~@_<F23Kq8bB;Vrj@76@I}f0=O+lz
z$E*5X=*)@hFk^xjD%#eVL5R2!oYt7gB;H&qp^b;RaqYOs7x>XsiBgiHX^}ix<^Iba
z-OZvc7<(w}^p}s~3uEyt?%LT|g)*4>ARsvT!MgVKqlEjysrw~wvx7o)e-iBqL8ZJP
zX&AnYexib@V2sI&CK;kY8pJzhUttD`B8`r(Mzz_&xx!Qd_A^?10gT48^;@TP`&ndr
z#TsiSzYE^{-D-5vFI}m+EwH@<YwJj8XOJX|>x}LoQK@=!8{SlF4!Ld-Ox+3w?N9b$
zkm>{nV8)-Z@2&;K@IJ>}EP9fNS^D=fKh!`Jd;NhaO6Q`qiZ%u76Bk}itT*<Fpf5Tl
z7)2i&W}LeS6Z<7A8`3JUW2s|I{^UyaoU=iqvO0Bxl;ppa%NG4a-aFuIOgn}|k73{}
zDAS~h5*1MHuJ}~KyhKSj`YjVn@11!S5Jaut&amW?C#aZYAI_ycg2?vE)0Za^Mr&k;
zBcd5Y3-H&3<0)}?a}9J2VgX%gl^F*qPo{S}^Dr@6uTkWi8o%adVi+aU;g2z%ej|81
ziJKu!{a3+6(C1@6zNx@e=xZfQY7^*O$qW^Vae9xi3=j&zD=gy2BKIt%O!47dY~Vyh
zjuFaG{L9#+#F@`;2+LX&uL{ps;A+XB7IY)sPJPJ?Ms0M$X<{)Ht&Ko~;};sbM8Xgd
zwpeyJ6VdOr(MooL7RQaSi{8UX98zn9=K=Ju0N34{e43=3xEt*QR>}Kc1IN`Z6iqXh
zWKIH?WMpVb99pI$Xn-@*iO{$;%e+<tgTv)(x)i~e4?$Ll=GdzbO~O7=kD%pK!eY|l
zjmWATaJ3&I6m7Wi8Z1~ySJP0%l_{g@+)AjHy>e)JN4N4Q)JyiIx~qnqmYN%)Jy0cX
zTX|*=<5Ip1nl>+iI2pAm&7*(450>UX{=)0Gfvvh{-$HHL4MZo|w!YYr@qD%+6mjEU
z12)%7^vKQc&Fa@?-U3vbVB<MqVo9@9BX=|m?$0yk*Kxql1R3b85FH#7p)T|?l8`Tm
z%7z1t_t>hS>-t(H-LHy#@v^gxo%zx+Is9N-JPCR>#TMAa%CK!q|LfI}oafBXL(;mX
z!;?k34<=@HHojv>UTVT7%ny@(N3=<V%sKFExTKJ52d7jjy_`qxt1E9d=y>Yzs&3;#
zdUlw`=^BhMXep$gF+r5A!L!cz|Jlfiy14`=e4!P?J_)*}VE@gQ-MTe;i|=gIFiEDR
z5A5z?#cb;C<X;_}Jie>ouB*zY*CHO0-)o~;1Cq7Vgmr78+-?8E)xH*8*YcpfedRw%
z0nM|4OplqUE^UGQJz;|{=o$I4e_kqEsmvd0k&h;Yf*BeqR-@0>BkJI(rB?51+;I~%
z=JF1#l{L7ysOa_p^3vr6I4dIyf8>Gk-5*aF@2be@YW_ltoO5k4EV1sAchbk((1@{9
z#I&=y;va1F|8(}1QF$dxw79zkcXxLP7Th(syZeW`I|TROBn0>1?(XgoB)A56Fmp4>
zop;||cV1<k)qFp)TTXXZovP~H8M5R~?5nO&g{f0DD|@P7b>J)SPCc92qdP&JM&~G_
z(ksG`mZOU@?dlP)AF8jGKo{Iw)64oYA2L%@3_prqADb0Y#Bkmb?6&e);v#I_f$INw
zQqpgL`H`ppgE2|j6U~9B72bq_XkUNyTr78Fwrg&3?bQ>MK~M=_4gm!8ssn#%N8hwx
z+EIiY2#D-&+R??_*j3lj*}&S|(b3%2=5HEO;VrxA&*yI%vKD*DVM+9Sw0yrJBUbq~
zHX+??AlGO>u_sBHSevRmPsp!5Hia1~$Jft{y1?>8(_^Ky<%r|R-1aHKbHHT`4j<I_
z!zREjmuu?#P0f!@<L!54?K+jDRd^6C@u$YI`7b;WK0$svFdoa;QF^;)U>M7$zH4!K
zuuyMK+2OQ#v3w~+oEWjow!iCRGKhr=n_>Ig8TJxFzcH}xI|5?Yhl$1$7}m-PO&L@2
z(*rqb$9su{3neqKivW*Jwi`1+#rWx+Q4_tmbFOxH03#q6OZ-|zj@dk?!929$;_#vS
zq-QCxjuIh^qvF9ONx-8*q*k!gRfv&WUU06o<YgOuks;*sA&lh2+M2Q3Oo7N7SMtm7
zw{?{AA#6Rck6P<~`QL(&zikpRP1}rk5$wWE2GS|E$@N3QwP_8HmamTJIo#oUr!Fr`
z)0=+pgQES4WV?W;lz&To&ZQ_CWx#`kgQivWwuOsJ?8CrWPkO|H2O7aBy-9M>6jg@y
zN;}vW3XbZC1Xo*f4!g&b-FpjnZm<+)ln7)$yk2eb=Nw>da;p=H)WPo)1<;av&Fc%U
zaN38A-XT>B>wy!y_VvifONapl%1Y@-Jx%Wgkiz*%DOX|fEDo>S8{ibNEL(--M8&#P
zEo<uM{Q1PeZ@ALB&Y1EG`pZpFDM4_E-)cLAw~=0fb5Wfi!yBNS%cZ~)92+}wivx|I
z0AX(vS$owX<r!}y@>QNEj?USxpNO3Y!eNrKSQJRG#OSUxzQZQn!Xxag+ohy{T^7@4
z%1p@?M=LnZ_N$F|s;$}@QL@jlt2N-R?k!6?Z^tvW{1iw=7QCiG$4VrgJz<I%y*2Lg
z2yYx9{pPKfLy;Uhq$S$!1Rs6^M{1_sFn3>d02z+OQQQxgPC{fmhpX%RZ|9c|Cfc&A
zS)D{R>7=$XmMFBwRxn9=%Lbf=1ylE+jf%p??QbPI<mG|K(7cqj?cRhF$m9eeL21B9
zBKxDV7)5_I#6WgbW-mfwiR%TH=j$M)3d=)_QD!Ftk@?<E43Fy|_(gtKECQ(+2K6o5
z!o#kLx~kh0Pe1ASNdg3J2Nr5H<i4v%3c=eUD_1CWaROZ0)CwDAGnra(Q~QQ09inf`
zvhU~6`p|MY=tGB=g~m*Dru{SKTN4!HbItKW^e^M?z1Ee*D$+gSI-RrbjOZ@eg3)@d
zyS=dL+BZ2PQH2pD!l01*l8=SpNS8(~adFMhDdx3A>LEiyDiGJaAi)K~MyTwmgs;c*
z<?of}d#5X#$V~3BA4Elsl{fQQr#blGa`qk`yl#Od$vqk2ZZyQg;mY)TM!SUPdjL?!
z3eDeex)1ne9H&I#MUSw8-PDz)sG&ht*uAlOyQXYCtOFpt5Tw<16_r9u3BT7d@roFr
zW7n6U-bDnwoM;vwW!Pnkj2=8Q6YXP1#bvu~wYjpM7ZzSc`B1QVD}llh*ge|soz{;|
zs-);;K7ji}ktka~P6sld6_wVGll+3HLM|?buVe|o{vk?VN|tWx!;mCEtSju9H6FXc
zPe)MxGqHAI6^VuZiYYGSk{qB~4y>|v<1L<fag%HdliBGT81{$9$D6B<g8g>$dZ~yo
zdoEVQNKhRdl&g_`wVOgRj$B6&V)9n0(c*EP!S@8%8nSCBUyAoxHv@)C_~+?mLeyj0
zhX5?Bm?cmj?mYuAmTlD%M~*cmG+sDqfT^Bl$4e(HK=t)=yB!)&g*BHKT9bUkE$v0%
zjI6wAn7$E}cGghorH4mGOMkL@pfCb6r>wQ5=5yD&O}te<Oxc=tvs*uJ{_-IQ(Hhsc
z(9LqDtf7p>4{Wx&#tN3xdLku5=8^x=#E#$N!GsYS<pkibqae5m09@Vaa)ts<>sc$!
zF|=}Srt}s<vTI##;MTOtr!V}nT<w~|F@`UYLpM;VvpdsGKS?|p+MSicm`ADxxj-$1
z^z1$NYJ^}$D^PsE*7PFABxmI3HmFx2sLl_kNV#(`@UiMuoTZ9-ui5+Q-b@AO6XO8s
z_lWjt1zvo+4r|Y;k2~t))WjvMKtwPI3b(8^d-hHJIZp&E?|V;-xbc2Sqw+J8iIw^y
zee033orG`oT>uGU$QMQ6zeqV&bk$hGevh$$Xnm(;*0m7_H-_bxB{iOIw=!!it^h!>
z!8)`zo8*U_TN!BoMwrjM#N)h#Wy+p(*9;CQwP9HY4;Ghn^d>n?Z5r{FI@WTzpnFe|
zxR9fCYi3&>ABx%H2<Mj6!w-9T5u%FwMhDJuF{9fv%v>lA(F~iv=p7t;=-6|ibL4(v
zzuc}ka;8t)Zpt$zG|P+Sny$uMjaI2b%AQnF`9oi&(?acP;Dd{z{X?DFYyl;DBQ`$b
ziIVh*v3i_?1Ql~zF_cMk%Ghjv5>29qrQpEkQ>sy}>UETIqvp;mjVoKpHd?lK3e){U
zgw1%T$(S<MXe+^&R7)}_OFGUAZLB#wWYOh=%iJ#h%J~iGYO^*mNP1mbPX4IwU~e+n
zPzBX*N96C4`@*v_#VzQ&zH43-sJvm3S--d7#+e?9l|&UuQ6dvMWXy1UNhTgw=*wKf
zhrdo_$(X1uHcUW(nHPr|JN&Rs6h~~0uK@DE;~L?f$P)vZ^w~_iOtftRvgMvPiAsBF
zOaBchTH~Of=cKeQmawH-EW@EWsmR9<^d%{i3UsUwZZTbiV)nay8Y2P&U}+vQ)HMc!
z<gBWT0eNezKe`%#_fvd#A>^&0w!_f#X)G4BWg5lgdKb^^M|k5A(G_@hB`Eg{=oSgL
zbg>qF?}|4Kl`GT@ZS5EzGgUr7&y0y*mj>v0eWp{g1UyWM$q_%qpbi-dKz1NlK<vHg
zz9oapGPL3K`H1H-PQ)BQok@)EVY2J>w1>+RyVc`Kq#Q=yXXd5Hz68k@9eqPGTR2I$
zQqpZ}Is~U3x1Di^906%Mf3d^sn*HUx@=f&){V<D(&6FRugd{PB6gya+LZ>1q0)%9o
zfb4$JCxIkGIJ6eWq_^1_D!^q57oOjDYj=<ar)Ss;Fi;qr(HXww2x?ke%*ZQXf2G!Q
zYnWMJFUrafUp*8@-At$;NoJ93%8ZMO=8_GHec<FPPC*%)Ilk`r*cCvDjtNF!;qTl{
zZh(i)#$BaNqKqf%A`32zE#)F($9zDhH|G>r$CvsPv-V6+_uTjWdH)jIOk5a!7$Pkl
z7_fvhC+#$<{YLoQpH)T~TSZgDSc(Lh_6yQe=^0ur1*UEFlHHC#>A_dwCp^QQITc^g
z&=u?tywAmRqn&`ndza5*N>1x1^16hcBWj$$Tgrqg1s;<%0SGrjYGHUmVX=8x^S2tP
z+Rg}o^$VcBwo-dC0*wtU)l~@PFZwAnc!^8Y4)yEG8R!jUcb{A=mi77}15V9g#l&~3
z1ryV&R1r-I#<Iu>y38s+?R~&6NnFXae<wPx`p|qwY4bVZz-q~&=;obOX@GZXru_}L
zRsF*1{8q1K^5&J8c1d-OZJV_27M>DDe#31OgsNlnfK=A8UNzl^G&pP}#^iPv4Vf>j
zbqAF_`T%wPiKTdq>}S+1(n~XwVPRLLHFK7wvz+VToabl-u1_Ou3!+6rQ(u=*q7~T^
zp4P<+)!V*amZ&x{5L@O?>5|)K845nVXIou|O86v*z<ccFbsYZV?!LyjRe6AYJTa~|
z$S#hezh$iklJ%)>0kcZR>42I-<}LNYM1^D198Il7_3GJsbE)%0-VZoGB9D{4j!iuh
ztp&*JE)?R?4Wj^hzK4^|#phbxx$w&*QC3$ndT(ZfT?V&isteZ}Li5<<GTyqGJtDpu
z=qF8L>-4ZdK(A)_uTX7(vd~`v*4I!i+TRRxI|p+YeM7fDL$=r8k0!5Vaj)gy?D1bF
z|DdMqUx+O9KreWI(#`!0{{BR?bFg(WH!^nkD+}lIHk>H}8N2Cg`8V_x>?NC}-t!e*
zCJIJus@SrS)`410vN|Q;=&dbSe?o*%^v3x4Q;d_zX!-56v0<Hlvf6kRE;<BiFs6Z(
z)XaydA3Jjf3P<oEcFm#S!<&JiPjv68h_XAHd1FoofNAq-MZ5G%PY^F0_(d>5Sa_i7
zwsA%H6JkDZlf2(W52Ou<7psgl<}D+&NocP!OG%F1Rp8Y`f$&r{MrIJC=M>i|^p`D6
zuTOS8O)~vz1g)hqMT)RNjNnGj$(SFP6$&1sS9*%n%{5_XXy$u?i_C(xw*Ul)JS5{i
zRb1!$VKv4G1sR(hnBPaLpd+M%q(v~GE!1fQ>fX=^=+XtVFRY+H2XRv;WZphul0`{z
zC<e<`8SwSBXYou~etLR3!RSpU*yy^wclUIAID_ICdKdlaho7agy#^_hfoQa3(f}FC
zm*}_6-WNRnk-Bp9<n;t`o}AgsI$0~r?RO8Bm|Zis_b%tVCkCGIYOZr?-)%<`fNePA
zdZ0TXHby^q%ljfH)5-=K-;tCm6FN(P!Ctp3)Dp!I#Ii%^>(FMa;t=UeWR0Mwiw26%
z8bPSjLlVY*)r~CS<LAd8t(IKS_}I~Nx@~96U`X`_9CiRogm+AYO~z2L6q<P8B!byn
zZ{ys|7I7!aDUp{k<|KjFXuvC6I#;FQfl&?xKRzvH_L%N&E*#eF`F*b$h@1`Vh4i^C
z%825(7PB3{!pTYJa@zpnl3jZY%zj@eq4<z;o#PG~%E2E*<jI6G<0zPBTKQLNv5yQ^
zC&|8xdZZ9Q`1bKtDEtXsZgIHuMrme=+S=`1V@BeGtLWH^>b)01B0))9TFSgXI+a>Q
zCdXq0`>8imN!_0XBtG6$DHE>SF-XVO1S2vV1P<l<KFCm40tN6fwmsAmJ2k8#!?7vP
zR-Eo-`KwartkG~5nT7fVn)BsgW9yN)Zyt;v5tO!>feLlr?wXumzYO?QGqg@i8=S0d
zU&r0{rj@4`J3`u?9UKF8zW?RTrdbdYdioiGTXG_LFm^t*%7)B@SOmWZkhMjUBy(1L
z!T9^PM?7<ZJ&o^@zaVyR#}=D?VmJRxHw$}wBt)!0G+ZjZmEwr?o|Nyo@-fb1Kf4w?
zlMa%CHXOuAhBj#1JhpowS*In=n<3Fy0S1);vMf<9d+CNDN+Ob0odmLGb%7)N6h%m0
zi5%eTgR)B0T?9eOC!^kY6hGVKm@`ndxle|h4d`ESYA*(V`@Uz*_c*u>{Cfw3A>4R;
zK@WXDjvnH!TfCe)%DVgQyQCBl7cPDDFf~#A{-AbGyg)Y%yMby((XDw2EpKK10ir`*
z_v<iz)_|5-dpYiIQPihqt^DnelG|--!qWE$#UJiyZfiY7>Ff~Q6Fptuod9{re-CxS
z<Ca8kUZ1kV4`lhQMgzCwpnl|E58evQHw#8QmSyiNxc+7Up`$ErC^#n=L8CxDR^{MB
za&w9(?5ZQsu2CzG`<ul**2Yk(hNDeJ45w32{~Tz=r5=GJ2tcZSQ?5`l{$bM&8ByBD
zFMwd+&9#?2UgsG!V}}tUOUpWn#I5l0Pm%FMrB;clViv~_i}&2al>>8RHdAj|wc%=c
zmG2FPR1NAaJ$&1#)~yp)sOl=;Cs)WlisEjVTVTj{ZYz&L;j1M3T{&a)%;TifE6S^^
zl`VFdGlf;}nph<ZtPJ9gKM8ospe?{?j4N57A3-0F8Vldq0D*uZu)YCyKCK+`7~8O~
zNE&TbT3ISVeKLd=?KXpEp%=zJ7#`$xcCxz-+<Z^$pypAkppn;sNhXEeU22wD=ed$+
zB7L!?6;mmeR=S%EmM%vY!J_z4p(4#VmEFz59tUV8r#EijT5dch@w-vsF2G_juaq;F
zE(t9>(w|?AvT@OGO)JWq6mr`)P@08_O_2raD3C@ZoHQ(afnHIN_888(r;!yzLpX{&
zMWE3_;>vp)nWT$2X7=ENxOHH`m(L`nIAuN7Y(|)f;?c7_?yVESc<^QTYZKGP^nUDp
zW}S!A_Sa?oQelJAHC_jGT31i3HP%;m+D~(1nR?kYU%%adcoN=5?g<Z_;>DO^=B3}X
zQxL;ctS1J#u@gq+ADjtQiQzgvJNW?O$^cN@-^dOYeze^|cds{uTjZD)*XJ4K-h66*
zp(jD1qgNLSEbz;p*v(_vP?%732!2xhI1@iJ!<vBHtML?Kb3V7p<ub;{X%Avn?xSoQ
zV>+(6Af|P7f0}LBUrK6k?!t^s#|CKS0He$#r1S~&Aj;!V9&8pnNeAo`$(Pr#^JMJ-
zk8jTEOo1p3;1Zc7G@WpzK%|MAzD<K1z%<SUP93Lg`nq&<M@j`r;l8JUgF6JS-Ixjk
zft=aenqW^XN+L3;K~i3~VmStNydF52)&;}2Uymr*+?4AqQ4SIs)-_v|MI0k)^j!Py
zGY9&1cM4yw#!6`Zv<IZ9nYP2rrjny>nV^_Q&n4sGT)nD^9Iq*h6{!ZD-uF53-6E3@
z*$xtD%X&0PiqsHx*?oqeH@WBR?V+^k)Qy=@sLeH}ehxj~QEGsSlzGIkl1oSlRR~V!
z7F>V=hJ(nlWl1Or?8fO6SVo~r7giJB3b}={ZSE&ox8?7mzB5itqe&@oOzQH4mdyEH
zA*g3yTg@Elr`*$GxI>e>JxTt#r#RG_(F^nky~`!(VF?6IyW?Fh&e3IgxWY>r<g8LQ
zX*uCDrJho0%l&yFK@~pti)Vp!a5G4on59yo9vX88D>e?hy$YXUF5*Yrc;>?cP#rN^
ziYtI!`MmLZzix3@iPU>pPkfxTW*gX1L#S_jx2E1UUc(tmsb!u(I}tG`zE3^#AS*l<
zFMGo0r48FDaKk=^xiMuCvtrP5RdGBqr}R{I=JCS?w%nSxE~Eh3CFb40I3!X<jAfw+
z(^aFln%Y!j#Lzb-=b&O;7|?V@bXz$E)A^j-#o-E+ve+{?$XP3^%eCP4wlOai``wJ~
zB&$N+efs;yrb8y};t>R;JbP0{e%6(y;vMT|$mCkyr<D1sG$_r;>+Cm7deV9R#C_lv
z<SI0sm;GQgV^nhIeS7cF*DRx*iE>yrHBtv^F?F+_UBhLc88bgA$Xd!4-*+81S%GiX
z5U?6x&UQg;6_%3gv+qs^RKW{&O4D`spYT<TkAO}Q)fNKZHV8}0<@F7DSBnJ+de#_f
z^%R%$r`bW$a{C)ZjS{>k*Bq(IMCaU@{KBOALsvvq&WH(H?RZ2rF45g03&Wu?e27h<
zd;aETcD3$)KwM%2w0XH4da{I~%qzTaJBiyDvY!MdkxXuq%{Tp72TX12@T@s~-QmZ{
z(d9rWE|l!WF&;>@1tV`<>PH8>G_SMyo#_#(`?xYsMs81?>{Z5G+i3lyath*;2w8SK
z^-IQ9-XPUz(oWrm58plAQN^=8epu*zrM@WsIJV@ZF=(1YLGm&D3hV>#YUGM?1*Mzc
zWDa7batr4c@5eVJmsDzwt!?|&N*`xy_Uh2R=7fp?YHh>g26>Dr6Soz?%q%qb?)G7y
zu4nm68Y8MheWs>7+y!hSy*fU#1<inm#e@ik$j&X@)E?w~;rHTS>>N@P(;P%hB;zqg
z9(Y>MuY|}({L&DAQ$MOuAF$dodj7<XT5heL^BpkF(aLnwLU8$HLW{hNep^>9SPJUs
z9%b@5B7XO?q}hkqam#Ff{lt*fQ!z59zK^Yr<fsp|K_QcnRfERmJ+;?tLgJzKr&Dqj
z`gqYX@DzB|iLAB9UW!&`u$8l`hoAH$>W>@eUDrdcJ&Z&|%6)E=qfhhs9`2P16d^x-
z_jvw;5o{-DcK+4cf3?7WS^HCfe^1Or{hMuWZEIv~^{@QQ@6&(gXTFwyGsk}!`>6@P
z{QGbiKtNRg8SsT}TGzqY(b>xB#o2Fdt?%IWm({Pt!fyKW`CBzR@7HXxxsbf~%2Ptb
ziL9|5Ml>h$`*y_Am0+MkON-Trsx8|`zO+=e5Kiy<v|%k(z)FeBnO``F(;WeJ(`|cM
z3~g6i#>mynCVZbnFfqddLA_0-HRVZe^OYmxIT$P1d2Cn}Z#;7@8wA-e8H!^ocX1=J
z7qF&&VD3_fgi4I_V)R-t4bzpX>oMC<!k2{in8`v>4jB)#%|k;DIa~Cz@p+o9bVAZM
znm{|9>k|_<AR{LSg9^u!GNIykjc>&Epxf_*BiI!nrKsm_^V|6yVi#)Rcn0SM#Q-%R
zN}`HqsvCR}G&ZUaaoUSz)J(xwCSd@H6cmT#QNV&=5oCq4C65OS#&zftbE}f;Er!c3
ze;`<@_cE(HS$C{nvaY*#r6{(dfKj{q;6WK@5++~-C&6OA*T3A@c9i8KlCY~g$1(TF
zvyG@W_c&`@4ykrb&zd`RbX`7XYn!IMzwE+uyt)G{5Q9o53#3`a<A4*071?M^%runp
z-A)O9QpzBuf~s#Msv(7#3nFfCSI!pKuR>&?GJ<6r$xS;(fVvqG;;sdDhCO`*p_kcp
zCkfy<#mQ4VgI%sOvyQGMNyCVz&>3m}f#F_;@s1I__t-vZ+fWeP?7VwZD2<s<Ot|Wi
z#c+ZT$FUtTEuxYZ4zki%HbiLBfVUFJ7I6(<UtFU@W;D+u>zpeIY?c`_y-!P{zvjM|
zBm#X{acdaV)S;4y7)0*2pS@Szfw9tjvwF7C?*Q4lkcPY4eA*(uV3|<AHSXKnc}ZR-
zidv0fF`@H@)`yan)`mu0t@``q71aw9S48h0?bJJ0EeX%s*Pg!O7VE-Tf%5AfFYK!H
zc$b3NN`;kvbVu*~u<B_?at^l`z&@0keN0pi!;XNW(K64_0g*}r=`34k<tj#J9w`#q
zAtyy%>gTa&_&&@bx^Za4LX<`a)yg6}9ZOb>wW2B0bJ_vjF3}#*4fQ^Fi`bwG%oJOW
zWqA`Q#|&sRa3kIPbJyFB-fe~Ms17%iIIsN4NKJZ@4*1I?sR3Lw^u4ZdkO<;otd93P
zXpvGYkxI2G&!P|Z_;O%5g{)bnM@u?SOJQ#}pOI%-ANDFxVW5jj>>+Ei$CeIhXjT0f
z0D%cz4PlS2<trM8&Ym@mNhhAp+`_c*vV22VXz8eOuF|M=5e}d9b)5KJfX1{$)%!`n
z-UqiuLfXEe)jsLs$TPY<77tvDi^ojM&wi71M}I^YEDv-JMso;A-bidzk%3EU>M2*C
zCz-3Ll<M=no&L0a9nCR@1Vtd}SZJn~38D_qtJMOBT-RR0fFvt;z5ro{J##o{I~va9
zqyeA}<5*DM?F~O5v2KH@ELc!$hiT#emdS9ri&wThbN=Wtzp~POR%xOoh$yL<%b~~M
zzKaISfrUqqeC-zJIH!FT|4C12wNl;+R*RsgYqs!QCc^p~j7P1SkE3glo1ox*c9z;v
z32hiS^C8~OTsmx-aX?vJ9EK9FasAbVh4&nnzLeX9<Qw(nVg}s^;*N`?YBP{4MMl8G
zT8Cyp*7roK%*PL8T;;4PFZNk2hv^2k@C^+$8)V~$I`JmeN@GLU%J(eJRYh=fRz?zD
zdHiGzR_oalo2SSD$g@~U!I`GU)r7|hPO!~6!4iE=Y9q}$t>AjjlV}-lI<0d>sRxv(
zE}TMdx)e1s8+Lj$wI~3OWta)4=2OyG8-w-AkgyY?y(w!9x)MvkXgP?9VSZ~dG7(>t
z&ZdZw$}_&T(~`%mI(E@Qp%zcxbr5Lljh&6mX(K74?PzS}Y@5`&Jz_OjEshr>FU(Xj
zL2o~}lX^S%$p%uz^qU6m>VQZX((XIYsa=ot9#UjBmwR+&J*=&apXwZCK3Taex2(!&
zlok4u7j!MBu@*7e5e6bxsUeka+e32c58&FQ+0dvvqso@caeQ6bBC5rODuU&(w1AZ>
z*DX)F?@GdcceQ6rinl^+?_&r2rFN1*shO;P^zfP(A#C-lt61B|j5BW#eT`OWkbbO~
zY~<@DT_hL#8_lm+Edtv?Q>G%%eGH*l68$?Z%GEo%(mKRH*3Ypj3Fr-diXUNLJzDr7
zB73+mA?H`c^GhXp{Fab)5BGm3Wc^FW{ZdJPsUnyc=hM&U@2couT$pp^oQU8@V5uwQ
zwzAbK&Y82tBsf)(gzZ29Nt9u*?_fxcyDab5T*W0^ngF#-Mslb*unc=VYmMRGeP}Kw
z4{wMDQ-eR)!`#w`F%v2^BrtcR>JoAk;$A)k;oRg8-mCVmj$qJyrUa)`swN6Y(4(OV
z4Fh_IS{P;UX>gq#RD{&4BqtVHsvZM)k2+2soV-Y{n7T&A8ZtWo+_TW1x>H}Zj59*N
z(}0>4+@JI~a?~7zCd81;hAzad3)qGX1hp%_0cg-pyCaP{%CN!0nbr3VVIueeieV~E
zY(XNAaFgbG_t85K2D&wz6d+Ut_GB{b1QP7Ddi{*9aG?TojWbx9$n*_wT(4Am;?n@g
zhMTT&#E&7C%T^9ypPXbYDOEpY5HY9ahcap!olM7cZoEM|dmBx$wGVvPb<7DPdcn0U
zD}1WI8!`cCNVz2%#@MjpCb$CHou2%Nu}-lnqwPB$0L>O?-%@=C98emEFGomW8Qu{^
zrAfjCQb}9i2Wlz^l}zmD!p<+EvxOGO`X(oC?SXuWJza(YHBpK~C*ts_oNw$fJKMt!
zfkYp(iDXyAQtVD?JK&2d_!NCFSvj)_s=V5Aj&I_feEe;k5!$H`Q&Lz<J2O-Fab+Q8
z(hkJ>`SA{V+DB4pYV5a@{x(eLj3I*Q)VZAkCEEn7>?w`;<Fa2jEL3nSy8Ru~(!5pA
zb!=dCJS^G$t`gxtO0jnzcw`ZR&xohs=il=rA?@5RUZA8g3ntj?*>FFyV$t;pvciD+
zOmYPjQ4Gs2@-;uL0m|6nB<L(r*VFgZ<xN{#MmO@}NjEe#W4`D$4!`%*Z^q}wrMZ*K
zsLRR~VcEvp6EUip6TeyENfN@rl>KfprH3Xm)ZT{E0q=z1R^<5T-x0#5pqCDT(V5=c
z$iB#EiF*to!-iEl60<neRG1}&Ke6$3Q{W8<&!qV&PcF$i0v#vxIfWVA)MgYrrg%zo
z(eY<z6T?aP#THwAWKa0Q8$q5kgx!b@qz4@yd+7QnKoykOad#r@G+<NAFj5s$wku#c
z<AkKJa2|o?-3Z2#hY`W7K@CP4xE@t33XY4kD(*9N4Q1s#wz;{FAWq?d{u*x=e^gK>
zSWh_o;oKoh$ytn@V0llB=mI@keYU($8*zF|u+L~lk@iO^9dse(9vB+eeTebMSVh{1
z$t-&vzZu7O6sMaheef~R-cKAE*OIb&%90~TSdb>ieTVVpXS#~eB_$umzo^t?h6-rk
zpS;(5!)$^m5S4Dl(W|67Fi@vbS3OjFythI!-#EM3(70l<qg;<s!}lqPq}kiCAHNw=
z*PP5??{g$Jg$exrNo_W~#;GkEjLv?yP1o@*#A+s=W|dkOG;ngQS-qi@*h_$>PuY@}
z#pP%qv?!n>#s~LDSv}zz@EFLYZ7IE+{EUdkvlO}-MR9S$AYON}GF6GJnhRPpN{o<A
z_arhm@a(7TwU)M*%?lC=@ECxj^TK2Kx@G;^%)ZC{vac6ka!>!OeQjuKZT*sFs_*oY
zN%PmH#=^*M`t$kQrq-kS;#KEF@|sf{1_8E!468L;jVD*P-Kx=PsMF`6^sj?5GdHR%
z5ckVJVq5&N(0Ux>EIu$-Y>$ue9ypH5el(TkP4xLLx7-CGoPN9mDD)es%XAiNL9$c9
zl9bg9Aq#77{NPj{8!A3nyxvC@a)i&w9mU=BDZP&GOF@Xq1r3LzW;`|CGgr48;Znn=
zhPzcc!CiidWwNNC@_(0!wYSLk^>D3&=R<L-uRaqxuRnf_JT{mp@d{3Y0i4p<7E--z
zSHmPweRyc<j${^)!{QvHnDsu^s472oC#w8n9BYd6AY1YBMjELrwEqHp%@ympj4zYj
zfw@wm5+hZm0sxjCOd1&`K!QjXHzjhz(DmHgj>FI88K1vSEYHQq!AG!{U8N?%k+uYo
z1S>m?7H=|1FVX0_hSlOF7kiz(qT}iycfV1`bKu%**nk(A1K)LRHtFRtXBndh;J`-c
z&BSQO%%pV!8#CfK1OEuuYlij41n+_meI}L{S$J?)yeBGlOaeDRd}pXD$dOc<lIy}=
zm5Wq+1uVacLQi}xy>tm9;+-Wq?3&HT!1U8nbg+#xd!WAYxFjWR;*Q9(cw2I7#vazK
z-Z{=UJ(0~2k;+N>Gtgj8^KTt6ybM{unxIBa9Y8%p=`PsmNk>dezyXgBhb%A>H2dh7
zUR`j>#Vra2!^kuHE@&XAIHL{|lGfyd%WxiyZym`l%HHwnBZ(*F5~;tZ*=NDSMB62X
zGLUZQZaDkarDr#F$m{fwFj~BJ(qhpWLogjNZ>ICZmg`<lNwJh%4zc-u-2;i!fgrEB
ze=oz_t|*rKu)j2e+h+5-ir5KC4fXqdpNlGCsrjCZ>06F(p*Ws)Gybj3D)_2ASIayN
zp!_g&>o(IKSWH;Y{?SsfVys4}_~`!b>n7D`tXkbew;W(&jZAUr7=}JYX(gd79B_|V
zKIZp)eM%G@U{Mo*w6@-WC;a4GQ%$pjx1g(LlG;+utdf@**m3+qtX>iYAJq|Tg72A}
z4HwMnOQtVrL}x#Dmj%3#<PFXC+*$OSHeOqlI_HzhNFF44+|TkBj7kbV<U}{&Vo8xB
zlLke8H9vB^SZ6)PL!JUqH@N9=J?l73Ip>>iQ@W}$bX0$cjIvf%i68XjxJf=e7@FmW
zzsY^N$?o=&EgBy<2UAk$$MPE3l`OhEC`#O5)*%6aM6EFn9amM(I=I*F6)r5tAJJnQ
z^?yXm>S%aIy52si{!ILll9b+JHxeh`*>~!bL#Nh>$9ron-2mFaTXc8V(CLZ>XglAo
z)M-MsX>Vq{ocT0(HfhafNWfs1uCRj5=ZV_W<20{(#mXahcR2P>S5@3H4`^iPOaM4<
zkk@S|C5?Ix=w;h^-CTb82^P$r-oHize+uNkKI@GP{tN_4y&RN(4FtZHf7?`k?OjJI
za(@K^_mO~rP=0}!+c-MC+#E#@u(tZ+2r?cmg6S&@`D^(%yyN%Qa+?B3Pd1xA^GBuy
z?L8SxXaS1fBMaQ+>Gz6E%<C&EZ4Yd~pC94r3h0`?hCwIe5{+BCW~FAj?dl61y6<}I
zC-!Cp`Gw=ua*MK72#0_hq9cwpUr0rMSt_C^d&}425s<~bD~JA&n};;Iz$p)4KF7+|
zq=_aBXX)IppCwp+i%o4an;zw!_k@?X)TblIB8_fJNq<4<(1m%`IqoM#h0o6?c<PS{
z>dm$#-GfT>k>*{hY*Fn&y#{7XqDjlDJdmrNT(R7!dOJ9@Ra&}(3wj{L8C6WEOtp-=
z8EPDUgR0V?ZA=uJ-7YP^CCdqrtOvpjGY>}-yP0Xl0t{AWR^cY?C9wl6aXn!3fz+EO
zv&GUSHb<*l!uPxgmJ{e}^W5c$UgPL@S}jIMl8ZZYZ*-_gr;%GG1`*IfW8So0`8gH1
zcC<XdYs+G+`bC4Xex&LgFKj4F0=r~@C%iiqmaf0e(g#P5Gg_WY5^CS7$n)hGJ|g>#
z{i-7~(9^HH(_E~Spy$w=VpY82bbUIU#983I*Abz9tz7;&EDFq)R5VBCd}d?l^d0Vg
zSUt2`#=$jOCQwvUA7bcM-h3jIu|d?9-cZ$V>-^N}l3XYGMA)Kqu2K`im0Qdx>PA4q
zq|f{P4VqGnKwK=;oQQg?9QF>(TeZB;0-wROq8jEYVQW;WluH=t$gUb|KX#)5pd0NK
zk2edZ;lVOu^1eZU>24o_7lv+9<)OIe2o(8fx+2A2Ibbq97)qGwXnhsd*)7zii%RVf
zj}bIwt-~r(1$wLH(J+N^-7kJz;2l5z0C!(eUJmS<a>&ec)~#se-%T(9u%=t(IY`pm
zcCOC_<=-)hB|0K3&5oPNL!L!fh=V?2lK9NK4Jt_o**RdskrJhEmdT({7x$dKbuAPU
z_9G~=Uab+{t`2g56K!60kY+3!$igO-gDO-iCAoVV#dabsmOZWS!|6v|SD<-LpD(jS
zmnd&59I#gH_pjay+|))1jfzNo*bWZCOC6)u2B;pVk>D1wEO0-W-)m=RQvKL;e=07>
zf99-t{$mAGG?rB3fxa9|d0Aq=79WP%FYb$sm-YSI;&Zk$b<j65{>wsG{uleje^|^x
z%0o6wj7VP}Xs%<0QSxVr>PgKGv0XMho#Eah-J;2FN*V~ofi%|8pgrEuo9_U#n#n;l
z@>H`d$Jw^lIP>%~&rc5um#~67*L5P#qj<lkx!XmZ7CBZ)Vmsii`7(%!s_!M%%`I|T
zmmgpU0MCS%hXO??INw&r4_$%^j7xPMe_t|4&wQ%Qh=L~{C9sc8K+)HAYyewtHVzFx
z6l<x{u7z&K>#rAe);mW@B*%-)6ooz80+FIYj*<Vl5lC6fwL)y~4lbF2#k~`@f<8V2
zCVUWYo_%xly$z(sIF8e8@)?H@$_I(hwblz#BSuFjIW@t!L;%`=)=)j0;E;vg6Yplf
z2?I#Pycvs{`J*q5sTM;j%Uf}hY-Os$!_gUx)0L;J-c{IZOh%X1?Ag{Xv;>9KBL-DE
zU6<bAB=4hD(-#0d1Z8@S+H~LN5{TNd^JpW%o&n3u#~}pr#Lxwg5j%M0)79K`xfmYX
zGZ@9!pJfE}mrkB7BS?ibmB`W`QL8?yL-$UC1Cm^)#E$Ja;b>45XD^XYs>ixI2zlNT
zv~yW44MK<Us^g>6Y)P1n)V_aO4Bu2&hH6(oD`n>2jykswh=~`mI52Mn=f}jRGpD8c
zq`~*OWJ1hvi0g=9%dtqAG;97qSp{{;1!EUD!qlo_Yus+JLn+n_O2ag}f^f9Kj2E<8
zjlmMe?Hp+}^_w>5L<O5a>L+7@4rP1s4y^vNnXpfAg`sgl*-=S%TVjO-9`{qOTBfI#
zNCY{P?0a6Bkwx`$2mWeo2&0vDD`zeO{YC2~8`Y3q5jQ#w^kFA$fmzFl8y!ui&uQBq
zF$#qcbyA57VxEmND1yDRBiC9>Ije6(=-02-Z`S|FVgX5|g^PY69C)46zw{Nn@W1OT
z=zpmiD}5W&KQ$J1$e$YPwfvig`33WLwfB>^;13vMn}4ADAas8v!C=t<0g?XRpckYU
z9t3k!o8J=OU)&LYEy%Cm;Qr8tujSv`I)ZKa!eMak;SG+AI}WM1chck$<Me$)W@=V|
zp3Q16eDhjw9L3sEDhxzo;q2)?9ZL~~Zs;4COoVs1#E3_57nZE|y;vo^?C98n6&;<X
zBpK!px(0h`hK05oS^Yh5O&&F^jBL{ye6wn9NL&$Eq)^L1JynL4Bpmw=mnI|Vu~g)e
zn$iAu2SCG2Sw(w`71BixjlwV$YP%(j!)4%(okkd3TbsutbRIMg`V9tK4!K61UyO+z
zXfPqM?EAjF8^jQSWLnLEn<51D$n#@#RopX`7QeNb7sZ6Nysp|rhRR~Hj_p@Ek$32F
z@&k+sEaNFHvlRz`_TW4!k~@BEng!plf-uNgQKjy|@K02wm2wX52O8#&H2J=|HadU0
zOY*>&Asx(79a9c8U&iK%j<X>#@L3*(GC(wV&j!*T_2JXN4vzrV6K@m#2*3aB(TJIg
zBU@$_$9D>={@$(uD<?M(zKn{OJ3D@OyR+$8QOnc%fw@OElRo<bD{V9=*D2nSG)((D
zQ5##fBCjus^uzb}s(*}F*;@$~X_&kVpN1m`s}z+=vUKgG4ZTr<sy%k$dA~!}lXkv;
z{o{K;Lc+z~nB2T0J9zpYjZ`N&H;og$L!WG8twZ9HL!3m!Nm@~Kc9tLPh01`Me`fd(
zwDGvkx3F2BoqWAb6;Pyh5U~iA^5$eOzFU>zjz#0aPyDSW>B;*@;W)$rv7%pQ5#S72
zo9W-3OBfkI>Vxn3sjC%Idg))56WiOt08D_-egyLFSaWgSWs+q+J8Bd=kX>Y$ZeF$>
z*&bciLO6&%L3~MpJ_HJeR}()yI9xbgIQRsiwC$NIB59Vnt%E!?hq7Gb??l)>7tR0%
zAqY>f5Y`G#WFkE437owx)kqDW`L?FlwhG{f0Z9~)RjFs4c2O%IMB%v;W1~(v!Zb@u
zNGXl(8hws#=g&BzU<m~h?652=`gxq0LWxsG-&`cO%xUq+^KybI1`GmOfwxW94dfiI
zUq%+@$A&-=3h`RWitmbsK}B?a$vM89Qdp^DflGscB9=)4bF$vtWl(}1EDBPASNO*_
zIfe0!fZ%p<Gg#<oVoxfOCV>M13K<Jk)9Hjto<k86NHJ-PAYs|MV+P2Hs_!Mw5dzy8
z{a8=egiBRvocpuLKFGkF5Be9h#c&JpldzN;4_}8CGOQco4<296{|Z_OD+(1A8mJ>n
z9Uuv|_Iv<3Tc100@C!>{4rwSH-e5&we3SNVdC@DkN9Sv&Z5S3cI)KZLK$cuxN-{^)
zD3(wdF02`369(`uo}{lkF&Gzt*$P~ToCj_^O1fp+47c&Km5**U05~r|V3zADY#n77
z9$PeoAWCnqP8vm@ZrOA-f_5=<xh3!r)TkbqlGYGPdPPxTe<X-$QMqCQQk1~pGxPI@
zL%P6%05lvV@zhhlJ4BC4>GP4e&p?SN>Jn^aWFZ0Ji+-RMl+3K)tNfL;TPA875AQBl
z%=>1vHp4C%S(f#@^MomtERh5C3(342!ny|FBa*OgW||^hiTmviM$(rIaldrnEHAKB
zIU&!}(IUPann#9P<%eY4kEmj<d-lR4cC4oXiR17N8L=w@orJO>QaJ9A{h<RE<>r)S
ziRc0k>!M@=tAAZqXb~$_Hc0y&$bSmuD6p?ElNb+k3@a;C<E{84%VM#tJbCzfNJndz
z=dFodEB4l{@lf?ekiXHkpLb!lwQs@Xk{<GHP$FiQR^AM7{v@~2YM3t&*LbKe;gE*f
z0=V}%LMr<*Ak@c^gvpOUfR*05Ii6qGeDv@VgBYi-q6*f-8cy7(lh)EO=9@7Nk}yZO
z2D6wu6oe^HYBGlZTL9)PaSx!WU_=)18Et7@X?`n{n5L1@xwPRrf@GQ~V$6+5c)}5~
zN${*acxwU~5K$(G?mA6QI(dxHe%oo_8=npBf@wX?q_GD>%|Xg)<SO4=oPSBxfZo`)
z#z45#v5c~Th&N93Q8U)($oDdL1;ld!c%P&h{8kuJFZ2XsI|eTnZHunqt#kXGxGnHg
zBWMNs1zlvDlb#6En*Wm}WDVkvy2s{a^geH#)**d`qxz2Kud01sI1NLN&fE2V&0p1m
zym0D<d^{@G!msdVHOJp5dJ@QuI0l|WLdw4Ehk|;jRRP>+P!!5*6pMON?H06aKMX6s
z=|Whkc&Rs-c#3VO?<97M5=6p6v*I{WJc$Pu;=-Ym#qtqLLP!;doI1!>9{4iXl1+me
zcY-dMqoZs`L%$=huu{2)K{qFV;x-74?AdJc#=mnQ+31J?^LKa@K%;aAFQRU6iSx2z
zqAU|}5I=(7cG%PWK~K@aU?I@Y>okOah0GU66k2{4xA~YKpnNT`z`o(_^ZB;J2rCSw
zA<(tMsEn=kJG!q9knXxaR{~LdTe_J#Pu&@j-Ktlkod@*&s^V<Qn$YyU$vzrtv#M$U
zzzvOq=17_f3kY?PD8>_}*m56jU(?RkrdCx5$#wE=<elgIw!&aVokb=ri4Gu6sSas;
zLJBWyzZB;CC-KN>#Hj0*Fzk~{!zB2pph8LLCWnEcwRDu+S+lh_De8?92k^DC;>z!C
zUB4tSgb^pA?8kYf3hACmF;J&-hb0Y>U1G;hpPI9@v-2`eIWZqlwKX+I2b97oxO>D9
zp5#u!I@iD+ba2haT;|{&O1sNPUsLjNiZvzTM;dxbAr6}Iq~I^F>J&nLf3G&RxA62-
zh*(`ebs&6n;C4Um-jvN>v*jgEFl);F5gUDM2h!#gkC)%RF>C7rztwxR{>kx5T)hq5
z5NHGLGC7Z>SXb73G4*g(Botre5vNgH*rB1*RVN8L!Y1Nf$3#f~lq<F_PHmUH2;jXx
zucOmFdd2+lHnuTXw+4g(mgVACA0HX7t5snSHi*#A@)3bsy>1^#cUW16c&i07h%O$U
z)H4o91-<5{T&ovS9_?Ijj(nrhO-P1`@Y>cS_WJ0#XR1BY<#pPcQBU~!<ZB$jM09MD
zFTaML;1{M2tFvi@FT>YUFsRs_C1xXRjOQ)-I0H4kl?RD8wF8&H(d0q3DVuV~W<cnl
z#0!*hq_5K_mJWJYeZ+ic0EmHal4+p}F^8FH<MT%e!vY#RtIa44sJwo5RKObIp-6!t
z5PgGddchhm6C@K!oAwDcEfzk6$C(qq$I+n81Gv<2c<IgfQW%%00bmm0x!ZRME$5*L
zKgTs{U{4>@VdA}XVFzmYC-=O&YrFfAYof>9rLF@W=&-)C&&AmvTXgN7k?*=4L9lU^
zYqtE}ob{-OYgI))OCl6958fMIk*R(z)W*xJuq^h#QSs<CI8L2>gp=v!?|Ne5IvF{L
z6{K<Pd#3ecQSS#w)Z0a7h#s4>gKQK|rQu+v%Pkk6BN(PqIAz;(3_BFtn;dU*Ga8&Y
zO(NHgk$AXOj<Y!}Z!fW=KDfbOcyTWFa>wK_ZcHnebl<4NpxUt#XYP56V9Uuos*(zJ
zSCI|BkysCDLiWKv@}@a?#|E^D1L@=3I#W?y_*ifND-lASck$eJ4W+u%FCuMfMT4Q7
z+;8!fueJ5%cH$B@J|+;f5RcX8r2;Si?QCg{^e8L240@x@T$4+dd-9V&iTtaQ=`O7x
zx_g2E%sSRVVSzG&??out)a}GP&v(w%(K)mj0{D88Zw2e0fnPmOxS!qd`(C_GujcWu
z@7CWf`Q;ZIAMsy?vx~9A>jBZfY~)uv{?%jjAME)cCGA(rMz68*2BCyoc?lTw1W`Xa
zLpo&`>%>AKULuZ0b6#AY>dYj`AGg{?C4;OrJ7iT}CudwY__|(Y;e)Us;xIOZdmw&K
z=u;TV2#Au#HI6VrwKK*@A4V3{+_B`NXe^PxsFL_AG-|U%C08i0<xBhbM&f+B`&b9|
z;>^aNgfAEbwA#bfs13of&4YA&q>pM|pgZYxY!D7hgHD-+?NAB@gijJOPVT!%`(e>y
z<Et?_VVjgeU{VvCB+)DYZ##X_4_X|@c5mj<=tQ7A7LWeJmpwRxm#_>EWpY#Sq}zM*
z#JpamPpAA&2Zor$)sh~J7Re&OjgI?EO8Y6N<O#(ESmzlkZ?HXXbV3oopLOm&np#7_
zrZE{OQv%6I{z~lW?!BO=haB0)jRLD=mN-A0*Z_bry~7Sg7;1`9R<!<tGE$#ArYK?I
z<>I5<grMkkf{~H*J9$u+nn>8{>K`H`Z27WA@)hWlW=h*Mlf8s0GrP}*uYT-CE2}y>
zQuRFC{3<*~((k2Fi|#Gg$yGL0<aImb4QG4|oLpz?+uAxxWD<p}BRkE&juP~PCbv-p
zu7&yQD0HnFw{d~;VeSKD_FPT2=u*1#D1Q7VaJrI843ajuFV~-`2beo^4ntCFBZBR+
zzgO*Ku%fEVOcAa4)_BLtWC6fcyfD@;k<$=VHoW&Iv!OJ;<ZYkl7B<hF{6<ljgbz*w
zj}DQQtS^gEmDd$Aur0<4z>i80<VDEqG6Z<!k#0`duU+t4mu0RVH38ef@2y;{F1VF1
z@g05##`c-f$}<OEIoYd@xQO6C0$sgm6ZkOfnF4hqZuw10h3dF-wW_(Oe6X;K?-?Bf
zZK`G-JP0~Zuk13St&LU1xFFvV03SlY_Hddhl%`+CwUgD3sLvcjbv(v0=*4>56(TSz
zy^D?D{*=1Lx9`#R$0FhWloi?k^11uE6y&9VLC`>7j#s}(fScl9zSY;?U@yz$r#uS2
z{`K-f`RDg)kq*iqJbSO@-@Yb)B0>Q{0f8jjsQ-SAB+_q)HGV?>LbS3qeDT}<c7J3o
z7rW`t=f9x8UPbx)O>M7NQT~(~zq^;KD_`6DJMe$GnDX~#zh3nAJNxVFMQ=Z)#_tm4
zPvHOg+PB}KU+H6iC)WJ;5xJxO6Z)T!$^MT1O3wK^d*UlO=TCVV5xRe&|IbvNKe1mi
z{uBS=PwYoQ2gX0Ke;&yB!vp_c*%<$vcdxVLm5=dv9-LP`#-CE-_w{ec|Ad|KXZv4k
zdF9mkoloGEQ|G7D`04Qcd;4EAIsP%j&hOQ|k`(-YI_j0A;HT91dA`j3*U9;Fxc<K>
z3w~Dl3jLpsUHz=`Q4mk|->dw2Wa^JM^<NKR{d!Zc$FP1+0)0J(^;2s6Z2uoM{F6gj
zzxU@qC6@lI?NJa`<KO%9Kc|`g>dtGT>F@bIuYvHNQsbxfpDTEs8UH-(^k=_bXX0xz
z(eIJ@f1iop_5NeOepUOIx$-lu=(YSW+vIDw|M!U8zxVR1@qelAp9cSb_VRTQ|L*sE
z4fp+&M?n^gKdb$pf`7l>*lYOj_t?a11mdUE_yK-_{)1rP&qlw#n%4-&@7~~l$G@`v
ztI_`;-tiOvwVl6PqOZSSeab)OQE<!dPyGMU!~Ey4y#DvUkM*mM`KLSzQrrIq`#*V{
ze+~Gn&-r(w`qk(BQ)>L2{)YVj>w*3`M6a*lb%=hqP+pDopHkyj=J{t|{(<Q(F9rUR
U&j$qb=H=fO6cEs)&+D)M19Ii{)c^nh

literal 0
HcmV?d00001

-- 
GitLab