From d833b8e433a751576183a5d56d8d448a1e7f6a0b Mon Sep 17 00:00:00 2001 From: Grzegorz Oleksy Date: Mon, 27 Nov 2023 14:04:47 +0100 Subject: [PATCH 01/12] ACS-6151 - added initial test for Libreoffice --- engines/base/pom.xml | 13 ++ .../base/LivenessReadinessProbeTest.java | 171 ++++++++++++++++++ 2 files changed, 184 insertions(+) create mode 100644 engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java diff --git a/engines/base/pom.xml b/engines/base/pom.xml index 8c7d73842..674e54800 100644 --- a/engines/base/pom.xml +++ b/engines/base/pom.xml @@ -97,6 +97,19 @@ 4.2.0 test + + + org.testcontainers + testcontainers + 1.19.1 + test + + + + org.testcontainers + junit-jupiter + 1.19.1 + diff --git a/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java b/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java new file mode 100644 index 000000000..90da694c9 --- /dev/null +++ b/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java @@ -0,0 +1,171 @@ +package org.alfresco.transform.base; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.alfresco.transform.base.model.FileRefEntity; +import org.alfresco.transform.base.model.FileRefResponse; +import org.alfresco.transform.client.model.TransformRequest; +import org.codehaus.plexus.util.FileUtils; +import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +import org.mockito.stubbing.Answer; +import org.springframework.beans.factory.annotation.Autowired; + +import org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.core.io.Resource; +import org.springframework.core.io.UrlResource; +import org.springframework.http.HttpStatusCode; +import org.springframework.http.ResponseEntity; +import org.springframework.http.client.MultipartBodyBuilder; +import org.springframework.test.web.reactive.server.WebTestClient; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.wait.strategy.Wait; + +import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; + +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.UUID; + +import static org.alfresco.transform.base.AbstractBaseTest.getTestFile; +import static org.alfresco.transform.common.Mimetype.MIMETYPE_PDF; +import static org.alfresco.transform.common.Mimetype.MIMETYPE_TEXT_PLAIN; +import static org.assertj.core.api.FactoryBasedNavigableListAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; +import static org.springframework.http.HttpHeaders.ACCEPT; +import static org.springframework.http.HttpHeaders.CONTENT_DISPOSITION; +import static org.springframework.http.HttpHeaders.CONTENT_TYPE; +import static org.springframework.http.HttpStatus.BAD_REQUEST; +import static org.springframework.http.HttpStatus.OK; +import static org.springframework.http.HttpStatus.TOO_MANY_REQUESTS; +import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; +import static org.springframework.http.MediaType.MULTIPART_FORM_DATA; + +import org.springframework.web.reactive.function.client.WebClient; +import org.alfresco.transform.base.sfs.SharedFileStoreClient; + +//@SpringBootTest(classes={org.alfresco.transform.base.Application.class}) + +public class LivenessReadinessProbeTest +{ + @Autowired + private ObjectMapper mapper = new ObjectMapper(); + @TempDir + public File tempDir; + + protected SharedFileStoreClient sfsClient; + + protected String sourceExtension; + protected String targetExtension; + protected String sourceMimetype; + protected String targetMimetype; + + protected String sourceMediaType; + protected String targetMediaType; + + + protected HashMap options = new HashMap<>(); + + protected String url; + protected String readyUrl = "/ready"; + + + @ParameterizedTest + @MethodSource ("containers") + public void readinessShouldReturnAn429ErrorAfterReachingMaxTransforms(final ImagesForTests testData) throws URISyntaxException, InterruptedException, IOException { + try (final var env = createEnv(testData.image)) + { + env.start(); + url = "http://localhost:" + env.getFirstMappedPort(); + + int max_transforms = 11; + for (int i = 0; i createEnv(String image) throws URISyntaxException + { + System.out.println(image); + final GenericContainer transformCore = new GenericContainer<>("alfresco/"+image+":latest"); + + return transformCore.withEnv("livenessTransformEnabled", "true") + .withEnv("maxTransforms", "10") + .withNetworkAliases(image) + .withExposedPorts(8090) + .waitingFor(Wait.forListeningPort()); + } + + private static List containers() + { +// final var allContainers = List.of( +// new ImagesForTests("imagemagick", "alfresco-imagemagick"), +// new ImagesForTests("ats-aio", "alfresco-transform-core-aio"), +// new ImagesForTests("libreoffice", "alfresco-libreoffice"), +// new ImagesForTests("misc", "alfresco-transform-misc"), +// new ImagesForTests("pdf-renderer", "alfresco-pdf-renderer"), +// new ImagesForTests("tika", "alfresco-tika")); + + final var allContainers = List.of( + new ImagesForTests("libreoffice", "alfresco-libreoffice")); + + return allContainers; + } + private static class ImagesForTests + { + private final String name; + private final String image; + + private ImagesForTests(String name, String image) + { + this.name = Objects.requireNonNull(name); + this.image = Objects.requireNonNull(image); + } + } + private void sendTransformRequest(String url) { + MultipartBodyBuilder builder = new MultipartBodyBuilder(); + builder.part("_sourceMimetype", "text/plain"); + builder.part("_targetMimetype", "application/pdf"); + builder.part("file", new ByteArrayResource("a new file for tests".getBytes(StandardCharsets.UTF_8))).filename("testfile.txt"); + + WebClient client = WebClient.create(); + WebClient.ResponseSpec responseSpec = client.post() + .uri(url + "/test") + .bodyValue(builder.build()) + .retrieve(); + + System.out.println(responseSpec.toBodilessEntity().block()); + assertEquals(OK, responseSpec.toBodilessEntity().block().getStatusCode()); + } + +// private static HttpStatusCode getResponse(String url) { +// WebClient client = WebClient.create(); +// WebClient.ResponseSpec response = client.get() +// .uri(url) +// .retrieve(); +// +//// System.out.println(response.toBodilessEntity().block().getStatusCode()); +// return response.toBodilessEntity().block().getStatusCode(); +// } + + private static void checkReadiness(String url, HttpStatusCode status) { + WebTestClient client = WebTestClient.bindToServer().baseUrl(url).build(); + client.get() + .exchange() + .expectStatus().isEqualTo(status); + } +} \ No newline at end of file From 99d31ee8f284ca989a7a9054d7d0c536cd2ad0a5 Mon Sep 17 00:00:00 2001 From: Grzegorz Oleksy Date: Tue, 28 Nov 2023 08:43:34 +0100 Subject: [PATCH 02/12] ACS-6151 - fixed test for all containers --- .../base/LivenessReadinessProbeTest.java | 122 +++++------------- engines/base/src/test/resources/test.jpeg | Bin 0 -> 75575 bytes engines/base/src/test/resources/test.pdf | Bin 0 -> 13857 bytes result.pdf | Bin 0 -> 7919 bytes 4 files changed, 35 insertions(+), 87 deletions(-) create mode 100644 engines/base/src/test/resources/test.jpeg create mode 100644 engines/base/src/test/resources/test.pdf create mode 100644 result.pdf diff --git a/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java b/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java index 90da694c9..cc859b0e4 100644 --- a/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java +++ b/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java @@ -1,86 +1,34 @@ package org.alfresco.transform.base; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.alfresco.transform.base.model.FileRefEntity; -import org.alfresco.transform.base.model.FileRefResponse; -import org.alfresco.transform.client.model.TransformRequest; -import org.codehaus.plexus.util.FileUtils; -import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -import org.mockito.stubbing.Answer; -import org.springframework.beans.factory.annotation.Autowired; - -import org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties; -import org.springframework.core.io.ByteArrayResource; -import org.springframework.core.io.Resource; -import org.springframework.core.io.UrlResource; -import org.springframework.http.HttpStatusCode; -import org.springframework.http.ResponseEntity; + +import org.springframework.core.io.ClassPathResource; + import org.springframework.http.client.MultipartBodyBuilder; import org.springframework.test.web.reactive.server.WebTestClient; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; -import java.io.File; -import java.io.IOException; import java.net.URISyntaxException; -import java.nio.charset.StandardCharsets; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.Objects; -import java.util.UUID; -import static org.alfresco.transform.base.AbstractBaseTest.getTestFile; -import static org.alfresco.transform.common.Mimetype.MIMETYPE_PDF; -import static org.alfresco.transform.common.Mimetype.MIMETYPE_TEXT_PLAIN; -import static org.assertj.core.api.FactoryBasedNavigableListAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; -import static org.springframework.http.HttpHeaders.ACCEPT; -import static org.springframework.http.HttpHeaders.CONTENT_DISPOSITION; -import static org.springframework.http.HttpHeaders.CONTENT_TYPE; -import static org.springframework.http.HttpStatus.BAD_REQUEST; + import static org.springframework.http.HttpStatus.OK; import static org.springframework.http.HttpStatus.TOO_MANY_REQUESTS; -import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; -import static org.springframework.http.MediaType.MULTIPART_FORM_DATA; import org.springframework.web.reactive.function.client.WebClient; -import org.alfresco.transform.base.sfs.SharedFileStoreClient; - -//@SpringBootTest(classes={org.alfresco.transform.base.Application.class}) public class LivenessReadinessProbeTest { - @Autowired - private ObjectMapper mapper = new ObjectMapper(); - @TempDir - public File tempDir; - - protected SharedFileStoreClient sfsClient; - - protected String sourceExtension; - protected String targetExtension; - protected String sourceMimetype; - protected String targetMimetype; - - protected String sourceMediaType; - protected String targetMediaType; - - - protected HashMap options = new HashMap<>(); - protected String url; - protected String readyUrl = "/ready"; - @ParameterizedTest @MethodSource ("containers") - public void readinessShouldReturnAn429ErrorAfterReachingMaxTransforms(final ImagesForTests testData) throws URISyntaxException, InterruptedException, IOException { + public void readinessShouldReturnAn429ErrorAfterReachingMaxTransforms(final ImagesForTests testData) throws URISyntaxException { try (final var env = createEnv(testData.image)) { env.start(); @@ -88,10 +36,10 @@ public void readinessShouldReturnAn429ErrorAfterReachingMaxTransforms(final Imag int max_transforms = 11; for (int i = 0; i createEnv(String image) throws URISyntaxException private static List containers() { -// final var allContainers = List.of( -// new ImagesForTests("imagemagick", "alfresco-imagemagick"), -// new ImagesForTests("ats-aio", "alfresco-transform-core-aio"), -// new ImagesForTests("libreoffice", "alfresco-libreoffice"), -// new ImagesForTests("misc", "alfresco-transform-misc"), -// new ImagesForTests("pdf-renderer", "alfresco-pdf-renderer"), -// new ImagesForTests("tika", "alfresco-tika")); - final var allContainers = List.of( - new ImagesForTests("libreoffice", "alfresco-libreoffice")); + new ImagesForTests("imagemagick", "alfresco-imagemagick", "image/jpeg", "image/png", "test.jpeg"), + new ImagesForTests("ats-aio", "alfresco-transform-core-aio", "text/plain", "text/plain", "original.txt"), + new ImagesForTests("libreoffice", "alfresco-libreoffice", "text/plain", "application/pdf", "original.txt"), + new ImagesForTests("misc", "alfresco-transform-misc", "text/plain", "text/plain", "original.txt"), + new ImagesForTests("pdf-renderer", "alfresco-pdf-renderer", "application/pdf", "image/png", "test.pdf"), + new ImagesForTests("tika", "alfresco-tika", "text/plain", "text/plain", "original.txt")); return allContainers; } @@ -130,18 +75,22 @@ private static class ImagesForTests private final String name; private final String image; - private ImagesForTests(String name, String image) + private final String sourceMimetype; + private final String targetMimetype; + private final String filename; + + private ImagesForTests(String name, String image, String sourceMimetype, String targetMimetype, String filename) { this.name = Objects.requireNonNull(name); this.image = Objects.requireNonNull(image); + this.sourceMimetype = Objects.requireNonNull(sourceMimetype); + this.targetMimetype = Objects.requireNonNull(targetMimetype); + this.filename = Objects.requireNonNull(filename); } } - private void sendTransformRequest(String url) { - MultipartBodyBuilder builder = new MultipartBodyBuilder(); - builder.part("_sourceMimetype", "text/plain"); - builder.part("_targetMimetype", "application/pdf"); - builder.part("file", new ByteArrayResource("a new file for tests".getBytes(StandardCharsets.UTF_8))).filename("testfile.txt"); + private void sendTransformRequest(String url, String sourceMimetype, String targetMimetype, String filename) { + var builder = createRequestBuilder(sourceMimetype, targetMimetype, filename); WebClient client = WebClient.create(); WebClient.ResponseSpec responseSpec = client.post() .uri(url + "/test") @@ -152,20 +101,19 @@ private void sendTransformRequest(String url) { assertEquals(OK, responseSpec.toBodilessEntity().block().getStatusCode()); } -// private static HttpStatusCode getResponse(String url) { -// WebClient client = WebClient.create(); -// WebClient.ResponseSpec response = client.get() -// .uri(url) -// .retrieve(); -// -//// System.out.println(response.toBodilessEntity().block().getStatusCode()); -// return response.toBodilessEntity().block().getStatusCode(); -// } - - private static void checkReadiness(String url, HttpStatusCode status) { - WebTestClient client = WebTestClient.bindToServer().baseUrl(url).build(); + private MultipartBodyBuilder createRequestBuilder(String sourceMimetype, String targetMimetype, String filename) { + MultipartBodyBuilder builder = new MultipartBodyBuilder(); + builder.part("_sourceMimetype", sourceMimetype); + builder.part("_targetMimetype", targetMimetype); + builder.part("file", new ClassPathResource(filename)); + + return builder; + } + + private static void assertProbeDied(String url) { + WebTestClient client = WebTestClient.bindToServer().baseUrl(url+"/ready").build(); client.get() .exchange() - .expectStatus().isEqualTo(status); + .expectStatus().isEqualTo(TOO_MANY_REQUESTS); } } \ No newline at end of file diff --git a/engines/base/src/test/resources/test.jpeg b/engines/base/src/test/resources/test.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..c939646c43bb71134be5719638f88d1d0d1ee595 GIT binary patch literal 75575 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 literal 0 HcmV?d00001 diff --git a/engines/base/src/test/resources/test.pdf b/engines/base/src/test/resources/test.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6d51f53ba99a0079f2ad384d1f33395a5e7e4091 GIT binary patch literal 13857 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 Date: Tue, 28 Nov 2023 08:50:27 +0100 Subject: [PATCH 03/12] ACS-6151 - removed file added by mistake --- result.pdf | Bin 7919 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 result.pdf diff --git a/result.pdf b/result.pdf deleted file mode 100644 index ba83c35a76b880c99d7b01abb0ee01d15ea3e71d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7919 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 Date: Tue, 28 Nov 2023 09:39:37 +0100 Subject: [PATCH 04/12] ACS-6151 - divided tests for each image --- .../aio/AIOLivenessReadinessProbeTest.java | 10 ++++++ .../base/LivenessReadinessProbeTest.java | 33 ++++++------------- ...ImageMagickLivenessReadinessProbeTest.java | 10 ++++++ ...LibreOfficeLivenessReadinessProbeTest.java | 10 ++++++ .../misc/MiscLivenessReadinessProbeTest.java | 10 ++++++ ...PdfRendererLivenessReadinessProbeTest.java | 10 ++++++ .../tika/TikaLivenessReadinessProbeTest.java | 11 +++++++ 7 files changed, 71 insertions(+), 23 deletions(-) create mode 100644 engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeTest.java create mode 100644 engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeTest.java create mode 100644 engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java create mode 100644 engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeTest.java create mode 100644 engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeTest.java create mode 100644 engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java diff --git a/engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeTest.java b/engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeTest.java new file mode 100644 index 000000000..2d334ea71 --- /dev/null +++ b/engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeTest.java @@ -0,0 +1,10 @@ +package org.alfresco.transform.aio; + +import org.alfresco.transform.base.LivenessReadinessProbeTest; + +public class AIOLivenessReadinessProbeTest extends LivenessReadinessProbeTest { + @Override + protected LivenessReadinessProbeTest.ImagesForTests getImageForTest() { + return new ImagesForTests("ats-aio", "alfresco-transform-core-aio", "text/plain", "text/plain", "original.txt"); + } +} diff --git a/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java b/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java index cc859b0e4..e67256a8b 100644 --- a/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java +++ b/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java @@ -1,7 +1,6 @@ package org.alfresco.transform.base; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.MethodSource; +import org.junit.jupiter.api.Test; import org.springframework.core.io.ClassPathResource; @@ -12,7 +11,6 @@ import java.net.URISyntaxException; -import java.util.List; import java.util.Objects; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -22,17 +20,16 @@ import org.springframework.web.reactive.function.client.WebClient; -public class LivenessReadinessProbeTest +public abstract class LivenessReadinessProbeTest { - protected String url; + @Test + public void readinessShouldReturnAn429ErrorAfterReachingMaxTransforms() throws URISyntaxException { + final ImagesForTests testData = getImageForTest(); - @ParameterizedTest - @MethodSource ("containers") - public void readinessShouldReturnAn429ErrorAfterReachingMaxTransforms(final ImagesForTests testData) throws URISyntaxException { try (final var env = createEnv(testData.image)) { env.start(); - url = "http://localhost:" + env.getFirstMappedPort(); + var url = "http://localhost:" + env.getFirstMappedPort(); int max_transforms = 11; for (int i = 0; i createEnv(String image) throws URISyntaxException { System.out.println(image); @@ -58,19 +57,7 @@ private GenericContainer createEnv(String image) throws URISyntaxException .waitingFor(Wait.forListeningPort()); } - private static List containers() - { - final var allContainers = List.of( - new ImagesForTests("imagemagick", "alfresco-imagemagick", "image/jpeg", "image/png", "test.jpeg"), - new ImagesForTests("ats-aio", "alfresco-transform-core-aio", "text/plain", "text/plain", "original.txt"), - new ImagesForTests("libreoffice", "alfresco-libreoffice", "text/plain", "application/pdf", "original.txt"), - new ImagesForTests("misc", "alfresco-transform-misc", "text/plain", "text/plain", "original.txt"), - new ImagesForTests("pdf-renderer", "alfresco-pdf-renderer", "application/pdf", "image/png", "test.pdf"), - new ImagesForTests("tika", "alfresco-tika", "text/plain", "text/plain", "original.txt")); - - return allContainers; - } - private static class ImagesForTests + protected static class ImagesForTests { private final String name; private final String image; @@ -79,7 +66,7 @@ private static class ImagesForTests private final String targetMimetype; private final String filename; - private ImagesForTests(String name, String image, String sourceMimetype, String targetMimetype, String filename) + public ImagesForTests(String name, String image, String sourceMimetype, String targetMimetype, String filename) { this.name = Objects.requireNonNull(name); this.image = Objects.requireNonNull(image); diff --git a/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeTest.java b/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeTest.java new file mode 100644 index 000000000..964438ae1 --- /dev/null +++ b/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeTest.java @@ -0,0 +1,10 @@ +package org.alfresco.transform.imagemagick; + +import org.alfresco.transform.base.LivenessReadinessProbeTest; + +public class ImageMagickLivenessReadinessProbeTest extends LivenessReadinessProbeTest { + @Override + protected ImagesForTests getImageForTest() { + return new ImagesForTests("imagemagick", "alfresco-imagemagick", "image/jpeg", "image/png", "test.jpeg"); + } +} diff --git a/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java b/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java new file mode 100644 index 000000000..07b205c04 --- /dev/null +++ b/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java @@ -0,0 +1,10 @@ +package org.alfresco.transform.libreoffice; + +import org.alfresco.transform.base.LivenessReadinessProbeTest; + +public class LibreOfficeLivenessReadinessProbeTest extends LivenessReadinessProbeTest { + @Override + protected ImagesForTests getImageForTest() { + return new ImagesForTests("tika", "alfresco-tika", "text/plain", "text/plain", "original.txt"); + } +} diff --git a/engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeTest.java b/engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeTest.java new file mode 100644 index 000000000..b84f67c05 --- /dev/null +++ b/engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeTest.java @@ -0,0 +1,10 @@ +package org.alfresco.transform.misc; + +import org.alfresco.transform.base.LivenessReadinessProbeTest; + +public class MiscLivenessReadinessProbeTest extends LivenessReadinessProbeTest { + @Override + protected ImagesForTests getImageForTest() { + return new ImagesForTests("misc", "alfresco-transform-misc", "text/plain", "text/plain", "original.txt"); + } +} diff --git a/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeTest.java b/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeTest.java new file mode 100644 index 000000000..977005983 --- /dev/null +++ b/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeTest.java @@ -0,0 +1,10 @@ +package org.alfresco.transform.pdfrenderer; + +import org.alfresco.transform.base.LivenessReadinessProbeTest; + +public class PdfRendererLivenessReadinessProbeTest extends LivenessReadinessProbeTest { + @Override + protected ImagesForTests getImageForTest() { + return new ImagesForTests("pdf-renderer", "alfresco-pdf-renderer", "application/pdf", "image/png", "test.pdf"); + } +} diff --git a/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java new file mode 100644 index 000000000..8ce336816 --- /dev/null +++ b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java @@ -0,0 +1,11 @@ +package org.alfresco.transform.tika; + +import org.alfresco.transform.base.LivenessReadinessProbeTest; + + +public class TikaLivenessReadinessProbeTest extends LivenessReadinessProbeTest { + @Override + protected ImagesForTests getImageForTest() { + return new ImagesForTests("libreoffice", "alfresco-libreoffice", "text/plain", "application/pdf", "original.txt"); + } +} From 85fc67779e06b2cccca37a9ac1b144fb174ffb82 Mon Sep 17 00:00:00 2001 From: Grzegorz Oleksy Date: Tue, 28 Nov 2023 09:44:16 +0100 Subject: [PATCH 05/12] ACS-6151 - added missing license headers --- .../aio/AIOLivenessReadinessProbeTest.java | 27 +++++++++++++++++++ ...ImageMagickLivenessReadinessProbeTest.java | 27 +++++++++++++++++++ ...LibreOfficeLivenessReadinessProbeTest.java | 27 +++++++++++++++++++ .../misc/MiscLivenessReadinessProbeTest.java | 27 +++++++++++++++++++ ...PdfRendererLivenessReadinessProbeTest.java | 27 +++++++++++++++++++ .../tika/TikaLivenessReadinessProbeTest.java | 27 +++++++++++++++++++ 6 files changed, 162 insertions(+) diff --git a/engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeTest.java b/engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeTest.java index 2d334ea71..7d19a41a3 100644 --- a/engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeTest.java +++ b/engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeTest.java @@ -1,3 +1,30 @@ +/* + * #%L + * Alfresco Transform Core + * %% + * Copyright (C) 2005 - 2023 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * - + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * - + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * - + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * - + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ + package org.alfresco.transform.aio; import org.alfresco.transform.base.LivenessReadinessProbeTest; diff --git a/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeTest.java b/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeTest.java index 964438ae1..3c0738997 100644 --- a/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeTest.java +++ b/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeTest.java @@ -1,3 +1,30 @@ +/* + * #%L + * Alfresco Transform Core + * %% + * Copyright (C) 2005 - 2023 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * - + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * - + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * - + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * - + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ + package org.alfresco.transform.imagemagick; import org.alfresco.transform.base.LivenessReadinessProbeTest; diff --git a/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java b/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java index 07b205c04..1dc4c3d2b 100644 --- a/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java +++ b/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java @@ -1,3 +1,30 @@ +/* + * #%L + * Alfresco Transform Core + * %% + * Copyright (C) 2005 - 2023 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * - + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * - + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * - + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * - + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ + package org.alfresco.transform.libreoffice; import org.alfresco.transform.base.LivenessReadinessProbeTest; diff --git a/engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeTest.java b/engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeTest.java index b84f67c05..fed80711a 100644 --- a/engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeTest.java +++ b/engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeTest.java @@ -1,3 +1,30 @@ +/* + * #%L + * Alfresco Transform Core + * %% + * Copyright (C) 2005 - 2023 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * - + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * - + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * - + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * - + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ + package org.alfresco.transform.misc; import org.alfresco.transform.base.LivenessReadinessProbeTest; diff --git a/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeTest.java b/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeTest.java index 977005983..e8f3d7abd 100644 --- a/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeTest.java +++ b/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeTest.java @@ -1,3 +1,30 @@ +/* + * #%L + * Alfresco Transform Core + * %% + * Copyright (C) 2005 - 2023 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * - + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * - + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * - + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * - + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ + package org.alfresco.transform.pdfrenderer; import org.alfresco.transform.base.LivenessReadinessProbeTest; diff --git a/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java index 8ce336816..954806035 100644 --- a/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java +++ b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java @@ -1,3 +1,30 @@ +/* + * #%L + * Alfresco Transform Core + * %% + * Copyright (C) 2005 - 2023 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * - + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * - + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * - + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * - + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ + package org.alfresco.transform.tika; import org.alfresco.transform.base.LivenessReadinessProbeTest; From 314453f847693767be5b410eac54b19d959258af Mon Sep 17 00:00:00 2001 From: Grzegorz Oleksy Date: Tue, 28 Nov 2023 09:52:49 +0100 Subject: [PATCH 06/12] ACS-6151 - fixed stupid mistake --- .../libreoffice/LibreOfficeLivenessReadinessProbeTest.java | 2 +- .../alfresco/transform/tika/TikaLivenessReadinessProbeTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java b/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java index 1dc4c3d2b..306c53107 100644 --- a/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java +++ b/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java @@ -32,6 +32,6 @@ public class LibreOfficeLivenessReadinessProbeTest extends LivenessReadinessProbeTest { @Override protected ImagesForTests getImageForTest() { - return new ImagesForTests("tika", "alfresco-tika", "text/plain", "text/plain", "original.txt"); + return new ImagesForTests("libreoffice", "alfresco-libreoffice", "text/plain", "application/pdf", "original.txt"); } } diff --git a/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java index 954806035..ea994dfc5 100644 --- a/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java +++ b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java @@ -33,6 +33,6 @@ public class TikaLivenessReadinessProbeTest extends LivenessReadinessProbeTest { @Override protected ImagesForTests getImageForTest() { - return new ImagesForTests("libreoffice", "alfresco-libreoffice", "text/plain", "application/pdf", "original.txt"); + return new ImagesForTests("tika", "alfresco-tika", "text/plain", "text/plain", "original.txt"); } } From 86317731bbb7ad0a4128a4bae10f863683bcb071 Mon Sep 17 00:00:00 2001 From: Grzegorz Oleksy Date: Tue, 28 Nov 2023 13:05:40 +0100 Subject: [PATCH 07/12] ACS-6151 - removed unnecessary property --- .../aio/AIOLivenessReadinessProbeTest.java | 2 +- .../base/LivenessReadinessProbeTest.java | 17 +++++++++-------- .../ImageMagickLivenessReadinessProbeTest.java | 2 +- .../LibreOfficeLivenessReadinessProbeTest.java | 2 +- .../misc/MiscLivenessReadinessProbeTest.java | 2 +- .../PdfRendererLivenessReadinessProbeTest.java | 2 +- .../tika/TikaLivenessReadinessProbeTest.java | 2 +- 7 files changed, 15 insertions(+), 14 deletions(-) diff --git a/engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeTest.java b/engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeTest.java index 7d19a41a3..55aa4d4cf 100644 --- a/engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeTest.java +++ b/engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeTest.java @@ -32,6 +32,6 @@ public class AIOLivenessReadinessProbeTest extends LivenessReadinessProbeTest { @Override protected LivenessReadinessProbeTest.ImagesForTests getImageForTest() { - return new ImagesForTests("ats-aio", "alfresco-transform-core-aio", "text/plain", "text/plain", "original.txt"); + return new ImagesForTests("alfresco-transform-core-aio", "text/plain", "text/plain", "original.txt"); } } diff --git a/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java b/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java index e67256a8b..b200c75a2 100644 --- a/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java +++ b/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java @@ -23,7 +23,8 @@ public abstract class LivenessReadinessProbeTest { @Test - public void readinessShouldReturnAn429ErrorAfterReachingMaxTransforms() throws URISyntaxException { + public void readinessShouldReturnAn429ErrorAfterReachingMaxTransforms() throws URISyntaxException + { final ImagesForTests testData = getImageForTest(); try (final var env = createEnv(testData.image)) @@ -59,16 +60,13 @@ private GenericContainer createEnv(String image) throws URISyntaxException protected static class ImagesForTests { - private final String name; private final String image; - private final String sourceMimetype; private final String targetMimetype; private final String filename; - public ImagesForTests(String name, String image, String sourceMimetype, String targetMimetype, String filename) + public ImagesForTests(String image, String sourceMimetype, String targetMimetype, String filename) { - this.name = Objects.requireNonNull(name); this.image = Objects.requireNonNull(image); this.sourceMimetype = Objects.requireNonNull(sourceMimetype); this.targetMimetype = Objects.requireNonNull(targetMimetype); @@ -76,7 +74,8 @@ public ImagesForTests(String name, String image, String sourceMimetype, String t } } - private void sendTransformRequest(String url, String sourceMimetype, String targetMimetype, String filename) { + private void sendTransformRequest(String url, String sourceMimetype, String targetMimetype, String filename) + { var builder = createRequestBuilder(sourceMimetype, targetMimetype, filename); WebClient client = WebClient.create(); WebClient.ResponseSpec responseSpec = client.post() @@ -88,7 +87,8 @@ private void sendTransformRequest(String url, String sourceMimetype, String targ assertEquals(OK, responseSpec.toBodilessEntity().block().getStatusCode()); } - private MultipartBodyBuilder createRequestBuilder(String sourceMimetype, String targetMimetype, String filename) { + private MultipartBodyBuilder createRequestBuilder(String sourceMimetype, String targetMimetype, String filename) + { MultipartBodyBuilder builder = new MultipartBodyBuilder(); builder.part("_sourceMimetype", sourceMimetype); builder.part("_targetMimetype", targetMimetype); @@ -97,7 +97,8 @@ private MultipartBodyBuilder createRequestBuilder(String sourceMimetype, String return builder; } - private static void assertProbeDied(String url) { + private static void assertProbeDied(String url) + { WebTestClient client = WebTestClient.bindToServer().baseUrl(url+"/ready").build(); client.get() .exchange() diff --git a/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeTest.java b/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeTest.java index 3c0738997..6415565ab 100644 --- a/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeTest.java +++ b/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeTest.java @@ -32,6 +32,6 @@ public class ImageMagickLivenessReadinessProbeTest extends LivenessReadinessProbeTest { @Override protected ImagesForTests getImageForTest() { - return new ImagesForTests("imagemagick", "alfresco-imagemagick", "image/jpeg", "image/png", "test.jpeg"); + return new ImagesForTests("alfresco-imagemagick", "image/jpeg", "image/png", "test.jpeg"); } } diff --git a/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java b/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java index 306c53107..21f076437 100644 --- a/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java +++ b/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java @@ -32,6 +32,6 @@ public class LibreOfficeLivenessReadinessProbeTest extends LivenessReadinessProbeTest { @Override protected ImagesForTests getImageForTest() { - return new ImagesForTests("libreoffice", "alfresco-libreoffice", "text/plain", "application/pdf", "original.txt"); + return new ImagesForTests("alfresco-libreoffice", "text/plain", "application/pdf", "original.txt"); } } diff --git a/engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeTest.java b/engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeTest.java index fed80711a..50b104b29 100644 --- a/engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeTest.java +++ b/engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeTest.java @@ -32,6 +32,6 @@ public class MiscLivenessReadinessProbeTest extends LivenessReadinessProbeTest { @Override protected ImagesForTests getImageForTest() { - return new ImagesForTests("misc", "alfresco-transform-misc", "text/plain", "text/plain", "original.txt"); + return new ImagesForTests("alfresco-transform-misc", "text/plain", "text/plain", "original.txt"); } } diff --git a/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeTest.java b/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeTest.java index e8f3d7abd..30c91f50c 100644 --- a/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeTest.java +++ b/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeTest.java @@ -32,6 +32,6 @@ public class PdfRendererLivenessReadinessProbeTest extends LivenessReadinessProbeTest { @Override protected ImagesForTests getImageForTest() { - return new ImagesForTests("pdf-renderer", "alfresco-pdf-renderer", "application/pdf", "image/png", "test.pdf"); + return new ImagesForTests("alfresco-pdf-renderer", "application/pdf", "image/png", "test.pdf"); } } diff --git a/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java index ea994dfc5..a382fa780 100644 --- a/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java +++ b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java @@ -33,6 +33,6 @@ public class TikaLivenessReadinessProbeTest extends LivenessReadinessProbeTest { @Override protected ImagesForTests getImageForTest() { - return new ImagesForTests("tika", "alfresco-tika", "text/plain", "text/plain", "original.txt"); + return new ImagesForTests("alfresco-tika", "text/plain", "text/plain", "original.txt"); } } From 9519a7fd93e008ece28206eb1e91b685602d7822 Mon Sep 17 00:00:00 2001 From: Grzegorz Oleksy Date: Tue, 28 Nov 2023 13:13:32 +0100 Subject: [PATCH 08/12] ACS-6151 - replaced test image --- engines/base/src/test/resources/test.jpeg | Bin 75575 -> 6968 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/engines/base/src/test/resources/test.jpeg b/engines/base/src/test/resources/test.jpeg index c939646c43bb71134be5719638f88d1d0d1ee595..33b9bc87ed944215406b4e5307f40a055e998eb3 100644 GIT binary patch literal 6968 zcmeHKhg%a(w_iFWfQ8-zq9P@sNe!WdB0UO7S3n{JNRb2*1nGhxMWqXZG)1I}^cq1? zK~WHpt^(4npwe$ZzxVaI-@X3Kzg%L%Ok~&i2jN!4)_DV+r%RP%2W8d6h|rp#5rA#bLE1EerJawp*@uG4IQTx-BC_e z(+&_D8*rt2xV0-f5V-k(+S5@SF-<6h+u^mIeZBFsv zG4xR0v6fhQ^El-zgbD7WFTTujA2m}F)Dqzmoe!%}1SpEphb-trOQL@XsEuNr@W|^8ZLBc|#NjD98DE^U3tFemu6>*$+$exorD3Rnpa=SxES~L| z3mbT2%cSlBd7b1e*&iGRvLfnL<8RnQj)A$t!#(WVG81w>y2s!&i)=v+B22^#+_?mUv?D z@RqxSPG*tHXOfqorH4(x*Pndv3o6(u$&#NN_L+*vaukx#YUfTk`&5>}@*NZXH8F-r zK*lAah)1X4#Yb4qnqinxl;>r;YspzJT*PbRdR)NuAHVaT<~=&z9_^y7#+nd5`A*W4-lNTc zz%&Zf>h7a3u2J_>*bJ#G@^rfUIrDU^PcZd{FN<3}1-a=#ukmpMm-Q4-@MK0dakht` zVOAbJ1C)R@n+>v6NA8uutl%3atx)FM2WI7#1q`X~>CE13%wK}i*{WPZ)P&ElAEjmx zpjj;V%ck$8fANp9o{hw}X%VzH4vHe_xY-PhF!|jmvt$-&ex9o)`Y|WHQA|Y#t$B($ z`(x*I#&lQm&*UOYG!U`a*jg8;`D3tKi_6~l|PH;2N{Z- zi@nfMq3}9gvRly%afgw}-xpdRH%Dc6MYvSjX$D9Xt`Y^%TL_@d1L=bXGLgt$JQ_(542a!!FL6JdW8=)Hsdb#|lQK`ygpXaAdj!z$) zW}D7uw|U|eCD)#0FJlGmlj@WE?vM((59_+&ERiYWC=qD#BXv zbanJny+S~7Q(;g=P{RiAs^F^kw;mn>h#7PS1iuWw905w>X1*s?4DFA2UWh9Y%{z04 z^L2$XQZO@BPo_ZRu3xVq4-Yq%`w&l>OsY(_&EnnsS!R-oR(wl*@QvWaEqh~ROks!Z zaEbNZH>JvDC3hC@blXBvWwxJAZk0SjeLZDtGnCs~@Xd~=)GMz6<(Dy!==YX!BEGSAYFFHXdGdj0aeqWr_tsh3h{JV@#@do4QvzpI{S(C_>D zpeK*_t-*^_lzRm~ChnA><~eIe=Mh`SJm-63_q1})6>;TO>E1mvQwcqpb}zHYv1H_q zX7SxZzM@)_^3$Jl5xP0|a!OhqTah87ZLc8DU6OQ@s6-?hS>syfTI!l};PKObslKA; zvt6k39romq|Y(8$@H+)Xve7m?+s+D-sKOJAX8J#gBZ>d)9HGWCyfk2mRXUTw1 zTNX~#rG?t`Y-1&;dA0I8x%+ea_KQaY5-&bndwj^0$yB?GBegUYUusrTcY69Xx%Ak; z_<(n5X6eM+^x-eqA4AK-r?3oI)uEc9;OeScu95zs__qr~og=nyCp>!7#k=LY?{o6A zkfW9W&$^HG-+MB*O5e`3!4%EQuCbs-%#yja?#vJU3T1IxbFOw) zFS9AL93zcUaM5E?_D@Q<2NVXp$zXD2V8nV|bbhB-A~;*hQmlu*#{$Mw&RVWmeso-8 z+<3ftJRebmkhui?(d$Q1PVuWS&_2QchMPTnh^iSO7R?{!9<|Z1zfs=Zb@h=)Zffp*JchpRy{TEw(v8Vg%hvEC2e$JH#wV7P2Nm*;82$l`xV+$Ll3mQ`(TIBb1~MnGdwl@Z)MLC+6K9tQ{_CAhZz8 z21O7vo*EC&^Rhj&2Qy;78Ej@GWHc%oJ>L4zZjT!HQ1a17P*Hd+ncq108v9h;RPs!a z6L0V!1{Tb?t-qlAp9>E;z9Lu)dSFPqOlN`Bf{c%+zHF!<`M#6ftNSS5=?=!w>UXD-f zqeFJxQc$VjR`0no@53sG*U4ODQ~#f7%*iUBUyoE>>PdSr^&s2#=eIS`O6&`s$-scX z#-H^|_eaVrTM64U4B-sTDTtJK8)losER`%oPJ||RK+&Yf$DaOZn|*wuTNm{y1>2sp zuYY*0&(904+{9KBN(=m_>_#g`I<*p22Q&I@2KpAjmZ4lXxM0CC+tcI5+ez5F>38QX z7IMlwZ>w-C>&43m8fD(dT+2Lnv(aJ0Vc6l8gHZ7C?UknjOG?uoJUuu~BX}Aa_buqt zY9%-iTn;_rEbQYr{A2dia$(~VctjJnezxV}Ga}i{Td=J{gQIG>eg2 zThj*DH*|+1RQC}@E#MA=(Q`5s*`IY&F>6W16Y(MCpKBMiHQ%WdzGL3@8AXgz(?Z-g zzoMl+3ryQTs~8}x5bw`;7&aNxU`XFFM5Iw000NGo97(00b>&CLO6n#>B&(;WmDXc8Um2BI+lw_a|P_!g=Jv3xd#Yf0FdqaaAU zFB+l(m50hpAV3fZ1n%p8UgMO$;U75dO-sU)L?URwU}Q2GN>+m6eLY|b>gwt+c}19_ zq8!abju?O=xl-hC#6!P>{3nh+nt09^Lm*-BILJ<1S2w&LNlQXvhv=W{cR$e-%)d-H z;-6vB1_;}+z!aeJu>T82!kqtqU^|xIu-$R}ri1SU(?DS;Xdioh43?HvTGtRtO2^^5 zH2-D!x1+z2Hbk^95|5<;Nr-=^<#TH16XKycVUO9KHKT@a@&7LEjCeO+q`-BN!g8=%0> zNc~xxzqL?Bm7}zuq~l``cUG#>HVOsk=owkz;Ef(IGwXhcPACv211S~_+g0n+=LzcG z6sIZa==0`TcI`Tnkm3Uc0yNNm2&6dpH-67?FFkvUV(**T+bKf#_Q$ecg2)voHQUAwxfc2)oR`ez-$Q&CV>06<8vgV+J!&nC=JSyt9e zOGi^dSxp`p0RS*1H9Kb)FdhInIeWV6D9TV98W~fgj{{%;13&|K0Kme^!&O~Z;VFQG zvb-#{2U6%S{|_$b0c1`9FvFpwMNR#m@c&N?ZsqFk2>>81q%8(!H~b)9a%smC;7{5{>71XL(2S%Oa0{tCuamw=5Lu@5l)D|ybsBvyuGZE z97PSuBfagceUN+>$>|-voa~VN3dsqbtSvkM00R3P?rCjhi{#u$4s(C1Ba7r>004#A z{1>VQ3c&xXTWX||1$cx71UPs(k?Q|9{ zr2S8rOECZlT_AOn^q(-xYyfC|1pp*V{|Tdi0|2-Y0MIh=U-cpWYcIB*o~|NXTs}TN zoOae$oPQPiZ~VUs{9E#WP5$e7oPVG9Z{1PLS--IGa`dGBt5ho&M;9-5Y7bWnD{E?w z|ECfEA1C~;V*OV+*mbO5Si4(0BOj%Yv@$zq8)S1kBkVlwT%4)xoc~uX{C}A2zsm5J z{>!eBgrM{RAT;9y@FoZWl<%Vega8XbF)cvGfd1WXY8d*!-=1ecwf8T(M{;ERKllIX z22Mo&1$)@pQ2z~<)p<&7<>l`Emm~Yc-y14`3E%>R04YET&;iT<2fzym0-}HvAP=Yj zn!r=Q2zU-y0k(h>;12iz0YE4a3B&?PKst~E6au9{B~S-60Ifg=@EQ05i~y6s9Iy<0D+ zM}QN+S>R%D4Y&pT89V}>1FwURz!xY03Kj}63JnSeiV%t{iYAIN$_o^ClpvHClnj(& zlsc3)lmV0(ly#J2lxqkYgaASf;ed!jlpuN#D~KB;2oeX$fxLyZK>8pvkPXN$$O9@i zDmf|}stBqwsv)Wkst;-;Y6faKYBOp->Ky70>LnT)8ZjCZnjo4Inh}~k+Do)Jw0yLB zv~IL1v@Ns?baZr5bT)KxbWL;%bWik1^lbDR^e*&i^d0moC>E3o$_rJ18bh6-VbBa{ z6|@sN4c&v@V&GvgV2EI7VjwX5FcL9JG1@RDFm^C*G2xg@nBtgEG3_x!F|#o1F#9oA zFwd~CuxPP_v9z)5utKo1u-;(}Vr^hu!|-9OFj<%>%nOzPtAKUG7GY=D*w~ENQrO1W zp4bW4mDs)5->|Q62yi%YlyML^!8o}%EjZISKX5T{8E~a>pX2)DX5cpBPT(HnVc;?1 z$>Ley1>xo5eZ*V9yMPnGdElCGCwLsZ3O)qi$4AF!#FxiM;78z>;P>Kh5ugyz5y%o) z5rh+z67&=75TX$>5h@ef6UGwO5{?u8BEl!)C(qpU#>K;u$`b|PcB1K|N5<^l?GDmVlN=+(H>Oh)I+Df|m81k6)vG!x1 z#|4l3A0Lwul8KU8k;RZTkS&pe$yv#D$X}9|kdKmIP*74RQn*rNQ}j|CQxa23QQA|c zQFc-uP!Ui`P}xzXQFT!rQWH^2Q#(>;QTI{*q9LbIqVb|Bq8X>TrDdYkqYb02r(LDP zq!XfhL6=6?L-&iGie8;QfWDf3i2;K_h{2X2lVO12HzO0H0pn}NR>plM5+-FPf2L}t z6=rN^NoF_ZV&+*EG!`Ki2bO%6NmelH6INT+T-FITFq;6I9a}!z6gw)rFuOB*G5Z1s zj6<5ko1>azgOiw3jWdk1mGcJ|J(n?8GS>jt1NRedNA6PYWgdJU6`nAjHl9;nR$eRK zT;5qeY(53PV7?E0C;V*u*8BzhU!M>>QGfFKNzape0YL$GfjWT$L3%-R!92kQAwnT7 zp*W#IVN_um;b7qo;cF2A5l@i@k)NU*q7I@}qWfY@V%B1%Vq4<0;uhjX;_DLB66O+b zB-SNqBrPP1B{!w$q!3c&QhU-Y()Q9d(m!OlW!z<&Wq!+w$Og)G%c00A%Eicy%j3)I z$>+#_Q=nC_QK(k5u?XOc19nJ(T(+u%Z)Eg-A%+T-R+mVs(ZNy$m5yE2TwxeWNOrl+3S_p zhPQ-wuJ@IXzE7hs+}GK6)Q{CK+HcQa!N2S!A<2OP>^L%PcU6@ zMDR|CV#wQ2%ut8Wu`uqil(6$~gYdQpiinVityhY#sv~hC-6I!Xi@q+5f<)OxjYsoE zXGcH8AYz7Nxnnb8@8YcDhU0nSv*Q0Gyhs>N6i6&cLQ8T^nopKYewzYM@lV-GRZne6 zqfU!SJ5M)DAIjj*D9psn^vYb%Qp@^~O`n~VeV1dKGnXrqTc1as7oGPzACW&@AXQLT zNKqJDc=N{Y&DSEuqLyOD;*1is67Q1TQvK3_GNH1{^2g<|<@XiN73*(x-u6`rR#sM# zS0z@1tG%iZYD{Y;YvpP`)N#}m)f3mpz60KQy*qqw{(inewV|g`sIjhzp((GKpgE=m z)Z*9jtJSu3{e#hmsgEijd)h?Xn%g`U8az7D$O6ThlPe)M+8P%MxTr}k3AV{9v2vI znGl@#FeyCQHYGOIIW0N;c}8yL%dGP3$ehO9)V$vO*9Fss^{gv3#@JC6 zm^?H&+&OYRx;>8k4*#C_gZW3(PpO}yzYKrvoVcI-IgL9bJ*zn9KkvEFy7+eKbb0$b z=8E*{?X}SLz>UGp-mT9a`d!vN%YEB}>ch$(r$2xGECaFt3K%)Cf>DrwATLxXDk=nm ziiwVn28Ch5U|5(~SlBrDc-S~_94st6VmvqjArTP~4EGTUF(C;)AraxT?hT0sr&;F7(kX04IPS% zB?AHfME)lh0D=FB{j&tXP(T0}4+Rf7E4t#!3^7MQ@o1^>{76ypNMWy)qC&yRas<>7 zb|xrwOD1*sPY>TK)PP~YAOg==S!M=BVV2IC85NStV3v)D3kyRz)`}EiQm9=>v|Tl;b9L4C*(I&CSs+A?50egF zB-28IMh3!@0THOQ=%w(IqC!Yv;T)5LA+>CFGT_M?6c{Wjw1R~>E<{e322X36mlOgO z648=QqNUZ+!ls4xIgwSZK0R!!iZFMQ(*`AV*Rr8lhJfAyuFzs?UX9mjgVb942>!TO zhD91F%dp8f75tFyJbM7EK@CE!5JNpo3d^NQ>h3{sgQRG&<%&_LONg2v70>vct33A) zEgK+m=+Z#HgXEx~ zSFqQ~+byby7IZl|Da$DnI~i@@2@o^-1&rB)M=dwVOA5nzowhFbSPKNv!q5WK#k1M2 zdQQb07{;mCF7c3%f>oju+$r}=qeLwb;uk2xqq^PLy&}bQ5{cv;X zxb%+^bilf_RCpL-kx90E6Ol!y@(P*;PBMpsr&~heOB~dtjh^Z0)3Fw}nL~-C08;dF zPp>y6qVYyueiMaN*XiR&VguFBC97E9aYrYe8lg5Av6MAHrC=}>6gm`W42*XcfKW?? z$JuGXa+P}Aga|{VFyy4A3Gw2<($yACmOSjWb5EbHdLI=oeR?)h9P+#HN&V7; zNlA78Sa2ex)sOcVT?J>TkC~JYJnw!VQVn&ENRlq|6f>nGGF1K4=^)ZhwuA~GP)3f* z6e$>_0m8E&qu)12WaGR>mxHpfLcnQCaUu926(A!MHs>}klgf0H^8BZ03JMPS7n(Ly zK`s?{`9Xzu^$Ta;>bd%Y<Bv1u;#Ec~mHV zR1{rU7%g?T41l>`+qPexPpq}-J^ih*x~Q;nV1bo?=eBF;{QmXnPuYB7_m{p6PMKl1 zuuncEdx(?HuI&DcFz*IoQBz5Zh0R}Ho2?$-Iy}z`HO+D*HF|TKq?i#3QZQ<5fF~J| z-GnL63n9TIQG-Pi6m7eDidfSkjSEf-0npyWK)K%l`V2&^dW5a=Z5OqgB^8OSdxCpI z^;~N~!DdZCUWXnXs-vg77anIfZr47`?zb-4yTv;#IWPTZ+9ykLSGz_M6?X$ZC6CQ- znp_`!4s31wWi}}mP+x#T%MDo3f}oM|DTqa0Oj1}RIsr|@&C$=&zD-E*pB8y)N2o?v0+=yEhr_nq9*}QNnEUz}2ty{6-A7=0Z$z%5MAP10^)X5h@4< z!8K@hUVIJF8bk<*kWetmmRX9s;1tTAEquBEP!|S^%9bWnPZ? zi8SrCjfmLf>wA^ICmOnqUB4F%vT4lUTqR+xVxISVra9(+eb@N2Gbq0C>&KgK9Ou3Z z$|w7Etda`XH}{<5!JmUl_7)b_4o|HP2BIg!oMK0IUwf{rw-OR%0&7<7p zS=O4m!rV*lYux=c5j#1w^fJ`aVikBMu8UyVu74-ezGt`;lcuga#-!2MRHaZgTBv7* zKN;-bJ#=yzJQ0yCnjGRKXIJT~N&PNaaQTudxBk&Zz#7$U#~Z2e=p^P4Ib&K{L_B9` zt7ggM-s;x0o9WllCpe@LweEGy4yyrw0L=s3QE}tD?`X~~QgwwBon529%q+IK<=(I* z_1p63r~r@M591zkHF3W(`RvF(0d&B|_z{?^v~US3Coey)?~*8Mxdx{b?>Dx8Bf9qy zc^c^{fqQ41Kh-xS3+@w{h9%ahdAac%!yuU2ag6jOQxcz+eNMgdmNbmxj?3N>HKz~o zOz>3o9tD#g+_#^Nm-kBXn>#NCKfb5iyXtJEgO+~ACrl45vxSgCS6Cl{j&FX+fjBVx z%H!#jo}g0Y9Z!bSP5Su<8f@P9Y}JoGbQKQ0%o|N67;>zimQ4HYbysm(*tvCGxF8b& z9ikxvNy7=kV`uX7#YI0F?0N@If|l~FKH{l#FulWYHB`T7BuKfW5l?QM19 zG946{*RIJN74?pQ1#R#R;V{@0A~gM;rGz+z$1v_GYmi5)QWS(jVgNPJZ1d)Zu?zJc zYfM{&J^aFFYqfT`Q~U;3GUZ16n(R#fER-M=uY1$Yh{<*Td|}^1Z~`0I^A7WTNb+{E z;MrBZsN@^fK?{2iBR_-lu5*RAB;vOhVy|t!`36v#WHlXd=hM;-vgl~BM8>!Yg@m&6 z*cqrx+W`sy##_H1W7KkZGz4+W;oq&EzpP?yUK#GveV|w!KN<^sGTEV;! zy&Duhb{4b-L0Ay*>(HhVzbR2xH=<_^fl$v9M_9fC@DR`_a?X5GR8SI~?W7}m?Mch_ zWxaOTJ=N8K8QYAwP4jby@q|aSCwGkp1`{HiAas>JBf7>Zi65Q$By#LWpk}_tq*OCOG+ZH^F4+RllE(xn(Whl&A&JvRP80d$ z3~aD`gZL&#qsnX9Z2OBy$l3)jCQ=U@8zh#mTXp?;6kbmRYDh-kcevlshtu}eq??O) z&-rjo*UPIuHw);Pe=lo{|3Y67Gc1ygkQ5-I92gs!yS`onx736fM<>IjG3n9~#Wc(+ z_7To4hnNG;L~<3LJvy(?KR*0rU}9aZH_$&b($z0S&8;7g z-^Qz_)kIC# zeb(^@Fkn&?J$;zS(E^dxrcLRkzb9jPNW0tX`u1XBr+(ye=WL>C=UQ-OTkgOxJ>-B2Odw>=*uZ6NX1L( zGq6^cXsIlHC7)4HqBf9cepwXZXA%VKGJ92Q{@c^oR` zBySRk6DXdU`04s6^!w+7F@Gurhsh&}ih1$Zh=7^VwOx|&23OsjgKXNZY}LZfK*Rl+ z$KN8}p5BXnBKNa*;tbS`U)vYrJve*z(xH1_Tru-`_?Ir81M<2~XLRoXNgEi&RRh$J zd_3N5yvyNgRirg>H@MZWNt}u?s3caRkRniUOT>RA$NpY(ree*V=QruYlDMWHr{%oFiXlz!KLfUoZN zsz)7#Sy%Ulz9O-5awvXH^$crW^)q9aLUn2jOyPA5DAi*X)f;P5R)!y`9yOcKXoQPU z_HMfy$$etqee6LHl@(aeCE>Yjju z8SjBT|%Zs|hN@`k`pQQlOYi%xH|*VWOQpYau!8C%+t!*PJ> z8RdLXLCJEUOZr)t=IF0A(sPd>2c_>;#&@fJH+hB9l4>tCO~%h95_1)U0yI;93*No1 zoQS_OsP!-BY+D;56%gUQf28ohqv%n>-ds_jC{gsiba$pAuOnr+-$bL}8H|Fnjjm92 z?;!l;NV%VPrf!$mZ63uFBZTH8e`jR#I`HQ750j^d9na=lg(stVFJr%0$Y5OG&x@bHBUV zcV4V@t<`h-Go}svcpmX$U!GxYSRNYl%VO8Q_FS0k5DVC|+VraW{`=DpO6Q5}b$^m4 z#)x_G4$nDH;gT}X)uY{+vLko@wUS=}UH!LNzWx-Q&OgQ3&IX=hlwEo?&z{_9=62lV z)!LagwAyZHWN{c*#TU=zGPSrjg~b*%l$BamE(lQsasCjL@h$Y|xc)>$YOnwC`Yb{x zlkNRszt6Xu;=|P0nNvR-1rObHqiVjNESd^WhL7}R&rQKqpQqD1D0r6NUUV$F`n8`m zD=fCiFQUlSR{ij_-n?$9qWozo`jD8o`QWj7KA_#P~3 zAl&M)_;Qq{vIRpuo6wAYf~Xj!U)6#ZZNimt54pCD^a(jXTiW4jMq}A>s7BApmY-#WRsdLo=Uu zCJ&AZ(a3gt1Mo}rjELoQI$xXMD%h{|m7cDOExjSKwI3gMO=~;^tz~y= z)I4?<%Jk!WMzo0T`S|fnw5fo~kDBX*MjRBT*f)#eZO>ml3-YYHPrC`#v}Hzhm55V4DZ8D+!L)7z4Zflgodrq5h13Q;C$Z4< znUS~q`kuo10)*ixfxdxv4SOQn>D6o#B~88pqZp`Nc_lJ;Rs1yyy2T25<}c!oW2VnZ z*HYX0B&JWQzlr@QkjHaGPV6C=q>Spx@cxA|=a=M6x-lQ~6`bN@t6~#gT+gX6l4``y zv=I?U)nwvV&Al^XbW)T;j|szO^Ztyed(ARmwZDHCE!aC$GMAL2Ly&4@Z0yF`?Cr(c zxL-f$$1=&RpKV}Jps;9`zi8yJJH=wY-xukm(?kL!&_bZFY^6|gMXQnd_{MF20=-Wi z7xQQQd=-!8y-7>z%;Y@%ZiL&$0|_buFm!=ep2h5$3enpkj}c-LnT+ip3+Wm~Jmm$X zG1*lprIz?J3X~q7@Y&1Mq}3>x5t(o#_b*MP&D--^JF&rI`Vr<}R5%_j0u#B}y6(SL zuz>40RUR-E^(AD|*L;zmqdFtHVDc3|I(E8&^VUZLJI9L@w6XJcN|@upW>i$;Xn8mXT8aaj(} zz1&|q#8X;CVNMH>6srIVc!(G`2&Oe23eh{v3C(o_wyAo_0~^vJgW|K>)4kfg{JlU^ zy{Pd$s$i_vn3j-WBybTKKlD~eQW9Qz^RNe0@Dtu3sIx%{j9u%KS zPGyid_%hjZ{z0PPHO@++Vov^xuf-hPk7LdUF=PPCCVYC+xQFJ&hmp=`|E-= z#D0vMi5?!EyJQ@n`~hSKw#DT;-A^;)GaY1c#00M?FO2ehBPs$$U$vH#F!GJ}GZ9lNo0y04f1)|=Bs(##aIJy%L z$ox1l@N;D4O59BTg#XHC(cS8s3aOy1QcoxoK?s!=Ld_k6DWBw+ zW+APX0D%H1c=-9A`b#3%)%JK$LO3BDE=5Z%TiaVt*D8cZib@MmgF;}TKy<``5n~#w zi59$uHC2h%HXckfAyXv9L$-Au0VTwX;*etIkV4=whtq~5FAzwkjkUtWc4>~8dFyYk zQBiO?1-$SOFm;1ONHW*5CZ*B7^)DSD>WWaTTMumK4oHi%q>tti-_V? zQg8)^{0lQ}fIvLGle9J>_LqQpzJwG!BzaX_9y^C|we z_L{%xFY;3xyfucFmyO%Mru5a&uCW#Sd$ac!Gsdu8KN8~fGN=gPRR7+uqRFMrzpq@_ zGDDf>O>V|9?YlBPc3yV;c;SWmt<$yFvZ|``qEH3l=HKj$zd!$|p{v3(z%&H2raQkR zbp1MWtq;lixz4(j!}yr+9Zc4+CROO0fcAE_qAlVDe_xm!uTxuiQE^jwn9AwHw~SB! z)bjU%ohTFHI6pPU+t^gkzTi!1mXuOzU}15a?g4$mexZuu^-kHGw_5dQW7g&x>DKkz znFa!HUrwjHL4=g8x{WJQxwUUt2k)S+lGK+; zsihd zN{d-PW(M_2ocl*{U=8|URD7(sY$EMbDJ*uU{Q3?~;EUD(km% zGc_Rkn|mp2T<^yF;`4iB`1;a!ySK0cFb?%YG` z+rIs8GMcE5Fm3bOJ;RW@X-oFJ{aV$Klgo*nogL|Etg2Z?r2QE9%SF=Y^!YfG zKqCd$OUxD|vgaA8D2ci*4tr-sP5zDV@x`3;HNu&HfNVIv`*Lzi-UG?9A{&!rWeStV zZBSxvL<#NgM^0O1#Ls5Te^T8KXA2)nu+@>~{Jx7C!Ol7|kFS`5E*jou%ITxckSc!f#b^+j8q7-d9*1>--Nkfn_>xNw5cmNG`( zaWYg8@K4#fX$&now4`>X@}J@$)JPWJ=Zkp$XsHgJpgEtDvY*E9&_)7S`e=Y-L-d1>zduFWRDlNQB6hP(yzGz zKZaUt|HF0<91qlhw4~FVnYpObvgd<_@6d^|caa^#`|n`UHGF7~^R=#^O6V9i9}qK_ zz$VU>NVMACfMDO=nG#$|ofR54uCFIJjcf^7Q`_yyx_thON4a^&^XIX3bjg7OQmaV4 zewzP_IeTKxCUFkCvRII=`wfXPd!F8sW9s1NgXd}d_i{P|Vy)~VMjUzl4G*a)OFPFe4BNgH|6E`Acst*3`l0eXZ`AjWLW#CL$%V#>p=m?A zI^G@~MjFlZYS_ciK`%q8xPbBHSy+>mr7x9z0^jTaT^i1+A((G5MfSHSld;(rtEm!} zj#2V%0r|6B6^R1d#4FDHIu|sI97lA`6~#%y9sL_D8gR3UKQB~RSc&~~M=0^~!jU`O zLED3q7mhovDo>qOCA2a%oo322O+YN7EpOQWMAnPi)myF2Uvda(?J*@X{b-+*c2Fu4 z^BXxY3N}8J}{Y<$fnej?X#K?@)67T`lA3g7OTI^l`z zo{eP*=q2BF!BQV;UF|e$tw?9BZafeeQv;B(4RRoHr1uQqE*x}X>=q*x%=HL1+5&)$D3DR8?WW>vD;*tXaL$Xq_3imm4ietk2K zF|0yd>{~s=@=KCZlyWBRs|YtU&m1#!@-b2HA#p9!$@(%SQK$g=o<>p>m|WC{A9#Q^iozTIQ6CV;V`Bf!kRIxBlYWh{doaV{pa1N z(={hH;XWS4Zt66nWy#t8l`?!x5O3^-x7#rTOZk(e>=O`I!kSIZ_X#hES+1G$uW^)) zI)0bFhcJkHa&dSk*qGz8Yi`GHmFPov9`rHbV|Yb&7PWUn8fQG3PpcO~Xe(jUBXRE^ z=QPc&$EaoKU&Ep=v`3`WyA*Rrb&v|rhVxnh95m^~g({qu-lfjGk{`D5r*Eh`_VNvwj zmkn_cuSdgQ<(GwkwJ${ea8}D!x#;k=j-uP!))?m*`l9RIg}_ERQf#gdU&4Luy9%fvuQq{iBoK{sm+0!H|~S| zXk-nK?kJy0{R?H5VPP(8`|IdC>m*UQ;THSJGVAyKVdKxJxx6|DXE~h?L4Ino*3 zVn59tCeX=rOe#-LKd8;Ct;EM@7Q2z67vc-vD&1&LZ0V4|7?!@?g zNa9Ar1PnW#*_AXV3?zN4v)~AN;eqX&b9Zrsp~4sSBxajnfWFhx!hxsF{gjLLJrzxY zkDZjPZtvbZ;=zXT*}Zn)i0Z)Licv;-bjK_9lb8g%=gf6qqt{!-z5SN^_iSecM>Uyz zotic8{6;E3u@M#|agpDI#kmJZ#f-Uy`q#O&7EYT+zbPgew;KuOEb^ydheL2VV)3?_ zN`!1;Sm$e|vp$B@lYElMANvDPE;{=5+mA6Hlw(9PGp3Dx>{eSw@t88A#nN8g?e~Xc z&@pdJVEZ%%#^f~+>54Vm<<1Wf1`mxek0Pv}D`I?6@U-5r=beilVAfVl8Wrwv>dVTq z*t?8W>d_gLk>}xS74TvC$QKs@QeGqyk8`^kc-PKd@Crpx*d#8$bS-+;3t?hhT7N*vyNOhB+e=txA2?M{N>NMDeGtq`tAJb*pY zU1s~0;Y4oo1p`c9#l6*3ES`GBZylOfW{zX#MP%T6*oQCvR-yR-<4&IIbLZ&xu2>YB zZcs0&Qe=6&6RWxN2^2l14AbD(*lv~G{ zUJ8DK9eG*xMtTC+enHPi>To|4@xCb6=37Y4)mXiJPm;_N z+%V{cr7%D@_ju9M3hOa`<$w>ZuWV$0AYJP$$O2k5L}lrXORX_akUEa`cXOm z9C&Fmy)o$M8YX_Q*c~2_I`C0KU`DiaQP|ztgo!F@qDMlJh_q1{m-kEY79gFSA(i;2ku9;W9fU8wY3>}tb0Zi&N~!bVxqWpY6*(ChL*JQqZOq54>` z4yHJsSP+eE^o(X%*D&`-!BG9`rwc`)X&*Mg?AmUQ{O@}V_wU^GQ+UleGUqUC14d@~ z$}I(auE9J$f^@qkFE(>DFpfJ{S~gd5Z`C+zc?s9nlJ&&ZmS{`(T_+sqS8_DaJlfku z@iELYt6c3$0)rj?05uTRM06JKvZM+wrqzi}nOlMn$z92%Hk)E|zJeq(XwuLyas0TV zja?E1-BOB2k`K})kkDZ{p!LFzhWS}1q3(&dGwXuzy8Egv6ZDHoFuv_*R%re zh~h-(+p+G_H3^OHYz;5Gjn`wG6whcR7xC=K!r!juy*ghv3Fhi^BOjGix@^h+187KI zipLD-g{=sn`TxXqL|7km))}y!I$!NFr6xjt{Ak(FA33w~&%RRDjyA2J2o1w`urizN zb#I!biW6q#f*K`k+Zgv{ox0WnM7bY+zwLvTq(-NH3^*9VSrz>*$FgOf`K9lZ#A04tvCu`sQD6ZJlJ0HL2=}z~-iWFImasEbCM$*HU0&fQeie1u4 zgE3g_yI0B=MVhQHo>0F1l$T!~S!Km&Z*f@uK(}jLkYf<1EavtGAfzJ|&T89kX=%Oj z|4uYSW5)qmy{s}k-}Z)%1ocYNQ&mz7Z6*j~(w1dnsc8{fC_de7ER1BS+#ckVQ&Z)O zI^Sw;CNG1x7&2Bo8FKvBGWwtUZ@3@U^oR1=kq?cj?RI|v?fe|77hM|VmSfVd-?At* z%zS=v+JngcTppuT`}x2T=|}j#@pnNxKbetNt0epRD;v%>)3$2g1(lN^;8|O8!O{nk6_LxF3jAu6;pZuO#+9mccR{=D zlKTst7Y8o|kC*-h8?{3gO1h;BonxCMf?@YQFm1sQL34^U6Y*Kw1!LhV(ldH5c>D+W zg>ru=;UACwYB7g6y$7`iN1a@0Ny0eVmh`LDe5g?5Som|~;mzrV{WedeFvs%W=`s>_ z`7W2O%MQW6Zjp|N@<~tz%Kj!876lGoOP-h-qAA-|?LgCQdQ=?htE5 zxJBVXL+yHV_C9ablowsuCLv;h`e0SK3sa(AA-O7;9xxBd)8>6UllwMed%dY5WOl=3 z$JZ<>=4n5>;$h_`%Tr247QMH+bzglAyRZUDJviZ*yf||9iib^a+bSDigv(`>6LM9a z7pCQLF|Ni$+VHIA9%n%U)yeINKHSp9nzbp54inrMd|2Q-9jd~oWlKFraTPR5LXL*+ z$%;6uN|EsuBIDS7v6;7=5^q4vI?UP_X*r_Qy5I74)Z1blEMN&*dEMXVnXr4?DNrBJ zu>^l}IU{5B%GOeaRccjh5y=tVZ^ZmsCsWxl@4~Y<*?MjCE_hKCZQ)y}9`mP2aw19G zO+IbW8cq@m>+TxlS7IeDCf;`g1LwclS4FpP72b6rmZV&gq|rI-hB+%6*kALlkgUp! z_wQ+sglc$!&`*t(enh(-7se9aJF#3H3;zLlgLn%l#`%5NdIBt4D1OY|a$%k1F+~fi zt3P0R5qEFIGDS6%pAM*;uuEPBNTXP}-QD+kOHAi;_=r*ic)|?!#u;U+e1(s6b(<1a zE?m=CZ*r=xD9~3UiOf*@bkCpZIx|64ojXtlSf9o`iGR?xaw8^YInV3GdCsHyoH#u= zHh5xYh1*X*?d2^rZJ1(pDqZ7;`fk1MYqf&%M{t$cve}-JO~R_ha?EnF7)MF3&2!)9 zXReYzYliMNov=kxUi`@9Tp__FW5m2jJFglnuylp`G>c?)d&tZl0WwLrJE$>}|weEG=B9qm*&7F3x{eQz$*UOPQS7)?}xdJ(w=mP^OaCL-+^i zM$c*1AY-6<1D1I~9Y5(L@4ACePiBZBsJ$>dhzDCaqIhC>>=_ZLlZxB=r?HfP!OW-4W`zGO{mv&}^Pt;tP%PaG{X?9Qn>$91JEu}L78 z-fa)Fg|=?Eu7m@EitCG-giyt|AAT5(=*9>ja<_?>|DtFlj`qjA)K$q_eTfW z+@JvD34X3MZ*u^XQ>yU?C+2r590?IbJ?=v8qE*--?XCDw)0%qf z572u2K|PJ7iPZ@^-7ZZARs6&}S{V5vAP)sX>8xpPi?OiJI0rG*Z82q?^%*-eF_wb8 z#6|@M&jAKBpj4N5jj^fSS`F<-s|j>i^lf?r^vh=gD4|DsrOIrXN;>OPnr&Ui;nk_Z zC^N*@Riy}v!1+oI;;;`^ZTvlx>rJ9&5iI? zL&u1*(}E-^cW=#rMOeO<$kQlA#GdUdW^06of*&}g>=B2=b6R>)*C>RH6QkX#lxT@^ z{8u{ls!n{DMGMJZSF5~&RTJ8tru3qIOr|#eMC+o#X(F*wb`7ZRPCKE8D7!pd@0~tQY1qI`7!%7~l82Rb-4yhxsR4FI z#a)r%ad_x)wT{(i==8>Q_M*k18wq(Si%y;mH}PA!;km(sShlxu%`%+E^G#~IFeYKa zmlcHqt`$sd?&SG{6em-Y^ZC+`gzIG%n0v4zWb&fLQ;ltSzhq?G)!?)d zQAmAX#9}eocK3*t$tFlUBY=KVDJWvz<|S3>qTeBfCy(`NMSMXsbdLbL>V$dAa>KXd zvgOc^w$n)+quU^-NO^Q0U5W0HSiI)6a}M&lodhTSVXnDcj>eyPJC6z!g$cwO>St%8 zjoTPt6@uqmUEF&Kc2e8IN^(@L%HM~P-+#G_dbU@H_+vA5YL&cEbZY|(Z|X(Lhq`8B z4BlelwEtfK)Icl0t?WoZ<^-bNp4`*Pt^zfB`j(^$oSR6IB^Fv#6&cE&LwuvGHp(;A z3VJ6v$h%6`xQLY6gSs^laVt?hbI1-&s6d4Gc_CA%8zI6|tAFEV#GcB|hJ_HJ1WYYU zP+EeJq#{C;3Y98UguvHWqfCXQ=eIfPN^_^%1Y5~LlF0c_W|T)J9&a6%%2uT_)@5GL zMXDt?)ugTLQ-N*5B?l0-T^6al6kN3hxSXS&!sxr(gmVgu^*L9GvYt&wjWM9^r?;|g zM>Av|*ZxV&lnmtdMaId)CY?YO_RZ1w%1WeU!CF(LrV7@zg{=oCK7G{BB^L%6PpVHV zj;4LT=kM)9+}i@CHchA;T2NxU}6>|B|~t4lCuBW00;pB z0RcY&@U36mNBv`e{Ry>y^iBBp^(2vzH#CNVWbnwx$k*uI*Zw8IU3b0Tn|JzM-$`u};LeX*18} zQGBi+X!3tG13&Z`oZa2=3no=TR$W@4;<(&5p#K1R!v6phw`@x*))pTb4k%`Y*01`w z`mT0RnX0A7xQv)KHaJZ=-F%ZI-uFy%p7w*FQSh8Btjb2+R};ar4`nD3oGOaL@j0Sp4OKrIhyeOdTyf3jvkJ|lAFuo&5TtPJDcEDtIwv=DTB$jz z8KuKJJVuud{vd3>XNu7IpzG9sQ@+rPvaQhU;`s2^^4e7H=04EXHB$Z^!-Fg3JqPZj zmx9Rh_t_`fu`%I6yd&&+bwm-kS|Zz0LDVdWwHBh)!nnimhm|I+QA*jHorh2AVFX>3 zZ>ddhXAs8aX^o2(`$YuOfm{yx6W0F#;Hs?_RM})^#Yc&2hFRNxx{n18C;2b0YQ%8) z@cWDQCr51|J{LDrvgGB5m{5;Cs+aKej?U&^-tX?iU66^z2+(jh~d0)iha|MWm^0`$-Hws1>!>Yn?H)0|Z7gFJzDVP@*U6PA*`_3|6R3*V+v4FEA zh#S;>%nR8z4>TGFZ7irK9HPp_;tSkdRPRqW*bpg&VOr^)7}Xma6GIw-QdFXzElI;z zeG^ICHT?=4E@QC>aJ*zwWF(6wtSpE?<5ZD&QgmYNlSWPO^w^prR z-FU02Hn-NUmkX4;G-vKjW@OgVzo|-O-ceYd~vEsxCr z0VQ8%VgsY;2t1YLQm2!75yK z9uMZbFSSQ3b2mJ0vFh-+`MhIC{lDC+To`?`etLM|S`Dtj^~Yxyco5}N9Z~GA-UA<} zDfJKU@bN7Io-+*=9!$oMPZtq}ixS+ji&(A+ioidgfq%JS{{V>PgSn1p<~|Dxj>F>x z!2A9E-Uk^uxP!ewe#kBc+miiWH71~|!sAjKQX49jDplFTAmm|KI-Py~EvrptSsecW zI#=UjxO^Cq-U}7LUlGq2>GNSn#xeXqNrra*zW)Gzqz!9_mfRgC@~K9ob<@c1ky zD~RBn7~{-muW|YB@4nhZEMxhYi5=$Rm@^f^9LQmOk2R`_Xyz8fejo@B7Z(>W78Qtu z#`-8V1|r&7Ni-J^!hIGhK9S$VudY7fBoWK$gx0$ZD0iFskBVd4BXcy^>~YJgF3qV} zaGP^DFeuD;CW$392h9X{l(?VejII5CeTxd>Vi(|mf(vfS@Secnv6u$Ww(0mcu<92m zg~@ZyR*hB*0mwYZ`d_!)DN?0MyesfA#rQ$=sJePX%z67l!(wB_#3hSm#2?GT%J2J1 z0G$Gjq*FSkIk*^1{dy)gTtmdKHn5Qw9IOlI_A-@$;M(pP$uDOl=OT9C)gcxAW0Q zA35~h+_2bY;hB(lApn}&Kmpl)8=e>}si!h&)9&wwJlN4g4Zi6%Dl9+q9ZF6w4p(Hm z3H(k_UCM2Q*|9EjkD7E+Io<92?MB?Xs?j>vqpFAPA9-n8iK|R#2twA43d(MPO*Gp2 z_uDJO7+g`E%y&7v-KGv=9mj6_DqqI3t_YcrnOgO(UKFQI|W&HO+D&O z2q!!@blKSLk(r?hnoxKvI6&WSE!#J;yj*57XlL&1KU+=uKyGOrqLj^u7kVRvvu-w1 zF!^jD2YtCl`XPp7V`N;w!X7kD$YgF&-DjW9%bXvr?4*yF?8P%}Q>X;pQ50=tv?Bo> z6Se^X-q8>~rrP%BZINlX*a*DJE+Neqll5GC5G4C1rnZV>Lv?b?G@F_UxJIaWW^G-f zZw-KNsysgoe+rX>;h(mN{33WY!@m7XocJWEL1UI1iGCTq>7}GwdjoqU3<=SKZF0kQ zUr)odcb}?@9}K3Nr+lw|-vt;f6nk?OoTxnk+lV(Oi9CiT=je|UCg=ol6F)%h)L2&f zXLXPO9Ie$&LNG0#h$gYFXEQRx#v^FgQnuYr(Ba)iHk1Vm0X5dC9aB(psvVhDT~%tF zY@sY}7911hV+LmxV(DUWBoIjM{{H{~nZ&1f73M!b`1h%?b4}dnI{AF;jw_z_^ET`A z3ID0)` zK1&fRoWcR!eI4WQrpD(`dLgfVMtURX=hnW08QyP8uQd@7O4A#3_4WDvlV_4mMxWhD ziF|Dj)7YcMMJH6rBYT5Gl$=8k14#zTn~StCa>sc7iJU>EnAc`27d+2sF^Z#VSP%2z z-~RyX{H`01V`DMMYPLfX+(UCP>D!GCmF}KR8?gEHtS$yjanA1RK6d!1B8~ydh6KhwU~| zVh(Jvw?thfn8_)Ow+9u@c3i4wlIkTy(91nl+H2@gPjPnX!@H+rv^5<&#dMWm%1NOk+id3q2H^w+`pe z&s7z_Q}g|iYYo>#=o)nz72VB5Y5OZ=jrAsB#7*XPQ5OtOTIizzhbvq_Pj(_XGqmRS zr^_RYUJuX3dUFOA?SAj?`RVRLS%^Hx02U7uB!`*@bJy3`?EU?l;c)`=-D6_r#OWH{ zQ*yHPwU{jJ+SHhsVf5Uc#qjO)K`JgQ1e!ZUF%g}dgUfXVVcaCqruirE(RSqs*J^2g!n+!0Bu2ta|q3<67xn`I;>_N=<}AQ$162xLp+9wT!DS$ zTmIBpVwPP{2sxuiCOVL5dU3F~C2hmr3t`?f#H2cbFN9YUf z1HM{NPTfQWr%Hm_pZWe19d{t8faHF(>Ipm>`Y)bZ5G{twQh(?CDlsY z!h)lkg1r+m{xoH2*$V_vP0r(PO_a8Z;<2+66LAB6yCPd!u2(JNDbW`SD>4X+)k4OT zwS^-p!UCK%S$d|504BF7wV@?24NCQ^0bZ5k033h;0G+DJt4&jvL~^)QBO61(BXriD z_maw8s;cUS=4yS16w{RD z3hi&(R)wO_Q(37XrwclEUy^VwB8KQ~qAYRU4F+zB%-EtRSy?)iURpOzd%CRW$#-bl z-&8xQ^+LK8s??^J4HKFjt)U*Gifmv$%8}W&*=r!mo2Kc_4jGfd160G&Q0TL1Nv^X= zt{oH3Q%DxNGrik~nC=eT}cBqOblbfQ+l#o%4!BGKSjH$XGVh%1E1akplY87P~rwua%=1N5k z%4jVWY2z|)eCV9k?6R&;;1*jMlr&U#C<;}kP^~$+&Z{UoCp4hpo42Yd%<7q8H~>>MSy1lUt4^|--ho$C#@n`8 z9n(bSU6cW04bIv@wN$IgI*=Vz0IRx*=!S;Sc5O-|Y!*)#zO`AD(oWw+tLYLZ;!B2z zV+EYS97{>I^g?rVMIj?mBXl)HYO*d_3qiW1Ks%}cX`;$HB5h^OsuB61DIGfr=sOQ) zRV#ajmc!VYr=*>_BErfjlx!l=pj^95cS`Nd(Ym_`GooWeVwPPgS47dKsA@f_qbg|@ zj$PAjJ`}Myo2y?=??Yr_BR%uvqGu#GsczzL6N+%SR0g1F2q^wv^Wj)T?b}wVAsoG&pLT zRH$BJmKR+cH zWQgW!icuzqe#~ZD%;Q13uJv1j!%bgi@5}09Du6o`x~f!w18*A_!UdUd{{a4e9}Sac zBfBS0cu-FGj+(Vd_LzCG?2MeJ=W4^t79?eG*XLz&VJ9)jf6uLFbWRSt3IfSv&eL|8 zi5aO%^4QFcD-Vbh+j@<{7qLLF8bAtO!~!&edFX?SnyihGB~|bDcAM_IWrvR`$mZDS zdrHJJD?HW{FlTt^dTyk`X>t8bqG=B>Y`Wjvu~--}W9ru)kZM2|%I1R_CEVG}ZO5FQ7fdAS62mt{A20sG-0Q#Q_9MaR*{{Umpb-c>Jzr{mf4vQ|wR4GzvtbI@= zQ>RtU*o*j71pF31X;Svlcg=aNqhzhp^3(AMnwteu-&&WPANZouA;W>!{{Ub^M6GXk z!DOLX$LQN9`mP=C=?ePHe%02qvF-}mI~K=G^Rwjg#+1+Z|`@Z}nZi&zdi(L$#tm&ZE5FZxQ@Vl5IA3N4)tO#))w_0aK;v#J$|g$|QS2z1LGbtya@%?CJC3 zt8EVN)_=SXKKb(J3kT{!%5{I)w$ZD`hKzTItN3^)QmV&OsKX9pgc1B)=GtxVId*Io zQ|086zx5rqnIGuWaEbnJA@XRc&||E;$m25zKV{D~vOX&WW_?%r}}R-Q=hHOK)a7)Mz+=>j#*8;?^y9a zT-1Jn7rRoSz&LU$81rwc?1j9~a>=*FVZf{u$v6qUn1XSRNu|z%!Qot8cqhEDapWXu zbN7v|x2Z*{F?QP!Eb|`u&qmNM|nTjTb7k1bY{?ovdKVOgX29%%ibxY{|Z_G&*# zXF6^Rv#m+=YI?71AF_G%t2^)u*tU=Re-ZZO*kJv(X)1e-EGAPLAfT_1X{G_M1II!^?p~W&Ni?l6X8zeVmi3e#@_C{VKU{y++eP z)Q7FBPq*wge0QAZf92#O)~G(%R5OxUBhJ>|HsZuUXT& z(_?%G+tX}iv!AyXJeKm6+1G~yt15B)iYI4((5s#d82L#Yfq#lIv$!5BYMn>bToZ@4dF+33 zsB=qCBlcIn_f6NYMbSqUjZ~iU&yq^Ym{NfHjHuF@=8$KX)RI7sB}o0#aL=FcJE+xl zGtqhGw`bcw)*afP)$>J_8d%}L`8GOUy=D)JaZ&7Bt&;DGsj$-~uGh3OJ2q<^&#F4E z+ikaNt}|)w4`&~0`d-epfB z_75gX(mt#>%MYTYJS|nuFb6f+Q^hVle}fO%)yx-v^!0eL+`I~Q&sQ!085}~{zv+im z_cWlOBT#qF8}m+h-l*d)an;3k+e6`_LByUxRHI3h=uv-5ogP16U&Q_kr!~=M3{j-& zt#1DSg5=&!SkHps^Y|bMbA5{spJK<>)d0(!s?D{b06N=Sb!D826|dC_892{{SO( zQB8rrc@3vc)sL#)DdzgN=pE?rGd}T@_KI$`#4+Zv{pT18X>2s<+;B_|3C`_W+HKa* zg^zVgn$18{TGzFqy0?$B?Ee5}R64eW6Y!7CR;+){ukdL8Kd4n{*Sd*paL8S=FXSFbKLi`I)2LYN8IWh56&LLe4W-msXN2)8 zi>g5`$TaX5V#YtRsk~b;cezutz0^)z(W&FF6(XkN^RG14j?#GMKFb=TvVkUs%FzS) zK>00?XPxSF?y3Dpc>XF*ff2x}yy_6q@BZIn01{6Cowe;&>@?UX&v%cpIE=XJEcyscx#7uVZQI@qSvV4Wnsrtl@i_(e01LQE6jc zO_w#dccFQsQ?t*TYit?grn-DpgpmNxQm?B`^=m)7b~ie!*-n)J<7k~d+!a<;V`;g) z%7E{5L9W_6Nyup!9`$!)F|26fnkTcSIdDU1F8W3Mz;C~zr`geU7eu+l?zf_;v-WQ; zm~k7f1DDxsTR)+F@BWtL{t52E8Np4aJuIm5Q`y_4AujPh+w3|ipF5}x)dttvD%6if z?9mX3=V!q`XnFcTwl~B9 zcOMAio%Bj3ldc8fq-V$274}x4lQQt@$G`OnfsS$P-hAX?#P#@LUfqfJS|HS=#C0h4 z)(1PgZb!eGs=(gylgC6d2`!tSp+%cLq1ijSo?jH+*LL0L504ypr)~&2)?r%LMCvq! z+DVR0j3-!XSRF7M?ojGaVLTi8Dz!$Jdw$FIkL?E!-LtZ1iOKv2y*%_eM9%15ZjmFI z!VcQDrc;kanJLbF2kn&{WWK#qli(B&*;^cSV#dzxo2?3`@GJZ`?I+JFtP9PWb^1-E zc6&t^(SIj}h2Dm7f5{e6ZKu{n&N6xV0jx-5=G{}fH*O9kT)YA*R*F`OA!wt^TBrTL zZUs{Mj;WVEpP>t~qp=274ea#cJbLv`XJE$N1ooTG1CXD^Ql@FrV=WNhN;qhlP*m*N z({?Fa?Dr;8?8eaY;7;@nQ2zi7L(c*)gy2{#cDA-YD`uriEDfFP$>f8dQMd-)$eUF| zdjM&Rq)7H7QS5VpGmpszf=P{R)4^CfOwRSF2D!o0o7!Zq_$N%MH8|wiagGbj?RCue zfuWyzqexPQ)M%@C%#J-~RnDYpe=%%+DEYWPw9nLmua%DtE)Os*&Uq%ZGqf&^)@$xi zc9F*gnLMMK+1u&X^Un7F0BA-ytLyI{MwiW7NXPWxERy1(yXU5h1UJ~ERwLLJOJCv; zZFZKA_XI>!uSn|0Wf%U>IUoJ4Q;%W!r?RtMPNR2ATq53)^(2_5%~}t(GP3LVBHyDq zjP>8T5Utu%b0*v$auP#8*NH0w%aEclo+3Q0=I!saZ48G#Ve_UC?VRd?tdrR|W&E^7 z=Vsie=WTnjyVHv7+fk*D$PL%W`*c;?p76QYmmV4;QOxaM6TDOVX{Q4QbA;Clfrq?h zq!RDJQ#ER{w5;tJnCOe@zp-fI^1R!sKI5Qf>G4wAC%w6kdVNC(>hw(t(TkF!CJAs@DgXSmSeDhD3Z%xjL&0onD|c#VL!upA}u3 zD_(Yh?=-^et&l!CrwThWSuE_$j^3XhDyP!C?%4b4c9$7w{Jv;VZCgdM(CuLgWv1-E z`bYfAsNt3X3#v~w(OL`-s}!Ke`G-Z@P^#*6J#J`G+kn~YaI8C?-b(NTcGiu`oE|+= zoW}y!G{I@%&n2vY23+%_LLHM!s+?YX=j4rA?+uO|Pfn$5u4PMsb{sTy&5`&I zt}1#i9#95@>%}(R`5&Xp(nJ)t|^^yWRMweMQaX_ej@O~X8Wxm3%EH8+c&;+nw>EanbX zD%I*X;oWp;;Tj_9HF#k1LP>Exh*B_mpe9?dbr%vtwY2331lyrbmt+iQRcnM6^3_Y9 zV+h^_7LDRgsEL;XIIY)bre!+;p~FPyj_3!GmQBfbY*>V+mempQRexzTyh zXTSv4*wE(sB>19awgrH+>8^?9k-fruynURZ8r81to+O9kAM&hwgKrHlbZ+!j#d@r$ z<~j>l-skHJH&v4a=vbXk&No6T>OWtoPBu#fZ*a6@Ym{I=%+`G zM>qs~O6{ur7}6JIP3+Tj0T(HuWlF9#fam3QyG>ChOP<|)0;gNDrH#x_ENj(1l{V4Y z*l=J*aqmqVPMSpOyEYK!%<#gd(&5>+MoB*u1X!FYP&6KLDg%_ppF~Zd;FQZ9yy(4* zaU^4kWj2EAb)8c~BQ6p0RN#jXMcfwjbAh7oTgj>?ob~Ka-HuAec(Ol|*{=Q?|Fucu% zN#2jhA^-vA0U`);9&*<@F*zy0y{oEXAYk(a2Rfm);d4m${<^A;v>3Ib*^WGT~ zfX3$6aL-?23~y&mle{N_E{mH`Z}d(!mQ&Pg%~NoBrAV~gpF_Bm#aODfH?(=Fg(c@WiV7ODgtEsRhpW;Bt?Dy)o>j zLkaJ{GI;^S^h^~fJ8Ie(-QZyMMt#zb(A}ihYg@ZXqS%#G2D#5}_C$M-y@8wrI{|4t zQzDy<{n#3*J3nIHb%h&hKdQl_IxVBH{8fdg3x7SMAYjp@;T?X77AyRYwc zLc88wQQCu;R#GxqJ>jaCy|mwe8wcW>*|pU@YLW0kjiwyt-S?~b@x}^*zyZ*;4t*DBVSw}emOd*mQ)7n|0T(yinQVIsnL;MhbR%5Pz5aN+vG zbs*^#6wL$q&%>aKC$*5GAH zEbQKYc61PnyXO%uwX&KYYYVrn4fw(YmpS0*;4+(1lbhPH(&2WWFo6~2#oxPk>-7lB zzL4HSP8dO=liKj;*C&!RHSED8MW%H3=z+cBGritZX>+E~+p>A(HX3R1wTv$J1ka=v z?7I~__7!2(UU}m}oa!{6PIm=oZn!k?rZ^9ZX~kw~57ASs*Sd`5)SUcyrtOWS$5N)< z`y1%~ycI)#n%6ZqRim@o95Zb>bQS&=XB#tk<0@)YJx-E5Q8fJN9Dlm7ur<*;hvuBX zD^y_2PK*3I3r4oMjqjRkS}ud#bcpcenJw*^$=GoHbxo%0`!~!v?TB5Q?5{=H(%T9z zs{6KS-FGgAJ?cjFLd{;(1z_8zC9c8aq9MZA9qBkurrJQ6&8(Cr$2&sWl}4Tk!Gv}~ zFx*C&QQ5^O9a=l6Ga$znp!ZnDaUB7KuyLsrr1`FTs8NmxHztD8q|g7S6DPp8M)Vd{A~AM-Np}WOkY2 zjXuQDF}mIgtzhXTmarei2`4$9SSamaznW?928`hcWMV^;j)V?ds9Xs%j)~P6_;a7# z5pYt&ErR(!uLXANT;7^{R&B`Dx$#7bt#cj8hXf|oslQJXaMloYCQCcfx%}?3Xkd4y5wRgT-9JMKL9!rmpv4Z`5;K zPAQ&W-Bj4BdCiunhFoF_VC@?HlSWjH)lTi=;li9Z{m2#@`i=|tHu$GT$}aSe4}um3 z#Lsr`#R#cQsjx^&)x6NN_H2cq#RZD?~{rO_Qxy|>1p`@p6= zHNBIg&Bh~w>>xv6i?Of8G*o<%!k+~cws$(?{%e-wsj;06qI?i0>tlDbFlX3!G_JU!a#;pmi4YH^vK3a066i?bY2%m_j_hz3_6a3@3^U8GSysxeHu z1P68ZBT?_|3FLBwPq3kFGU(yKTiE~!#4hw6YrKH+o@WbpQ>tv35{_rDmYboCF4yJx ztpIRCpQ^TVPN=6|axvXinLD$lsotz)r!kLffY28w7{r#evx0)+T{^pxeBAQfY28hS z+Z^?j(SSzj>Y&^?82nYvsLWp-t)r1r}$ zZv{6`6FAQ_>>Tr1VQjBF_f(^%eHBbJwS*mUl9=Z*(Rpyjs%~)v`%vv1=i?4@wFn)@ zh{j|7RJfL~h>%gcyaCe^x8GHV27L~zvuo-&5L|CrbFwFYLW3E~bE2uU)OPdg2tKF* zQQ9qS*4x%R71XM46Wva8n)fF318RH4WWd_VPI40yl%4jp}R@`Als5#m2A8jBPc&!M6yxVS#Ty*yG zQbBD&!;%=+Kr%{-CBXVky9+w-=%C<|bSmMw&N7}F_scSKg-bU)jQ&d44+A?|RJ%uc-GK;DqOP=?UX4 zY2b7!ld1Wl8<8bT+b!26c68YiIG=(IytJL`b;^dE{yr)q-n022BI(PW`q2Vp{!4i0 zKxJJH$c=cWjdT&jWgj-tuQB1{{na`x7P}6$yaWYvWse$`;TDROM^o`mswxN$?j2!s zJzRsS$R0dU(&@xw;JY@vd6^2sYZ!aaZ+TPhhaF>|G(-e>phz82v9dJ*ZyN{ltugrh z!K8zXbXQVkh9gx@nP9X;hT>r}a=_UUGJWX1jdr^7M7l2H3Eq!bQZ;}E7A2#KtC9?H zQ zNW|kl^k)}g!Kw|eCrh|tRk_mUK(un=noFM6MDEE((Z&ZQXqLRYy~#a<%;-?1P4?#R z`9Y)3Tgh%TPMRzmhcUqzdqiUA6xeivA`@6(JCRQH`nnKsIh{%UbWORMbCA2TN#LVc z5gHXXzyVuimu6G$r*9}$v_zfP94lXOdxsCf8j-I8J_z=DoEx=4gD#yVZh+tnS}`fE z&#SRbUkW;SL^i!^j=fw;MJ4kA6z+-}er`47=8SA?NZ;zzZ<2}&3 zjO|X8sfbt9I$$(tKFS=}gP~rH+@TWgI5MX~JrrAWqmnQX#lxDBfOI2*c8}|7JK#@E zQ{tgK}_s{7iV~_*FtZ3p}dM3gVzYOaLTgnz;|)+C^Y2ofP`tMG&pd| z-VYhX4N!NW1V*Sivl$m=3dF>7O{U`%&ld1iTT#Aj&g@OT2=pE1uG77kh3f|?4&T#~ zE@&ik2MF3b+$A@HWR~4HQf2%{IZZ6YYPlHV<&!?%C_V%Zs9a9@Iw5n*V^w2`-Qye+ zxJEiANW+E!2va@XE#nJwKyig8k+e(;lb$sKE#`nTD7-hMAqFv!RhH+M2~c#z#!-ON z(1gpN0%f%wg)uS9>W!mm?rO?s(o*j?OmH~&^j((4AO6Vv5p#)ij->sYv*NCd@LDX0 zGoeu*6h&;#Q>>TrMSzQVP;fm4;Q!3Kl;*(l2z?l*BnIkx`*D#+0hr-JqRgf7H!KsUjskNm4$Gt(#% zeT!V29B@O7;(9Kg3R>T91i@9h%Z-lDxihiN`rKCgKs^+R<`iiN1|Aay2#jbaC{D4# z5Cy!-bdY#KO}+M)XChJT+z4r$p-u2@$*^TR5dQ$>D^2Zp%4<&Ujv3WAK6pmmj1Qz#9*aAT_NaU^ zn9`ec{{H}L1ZSejK(+T3#FQNSTN)rW9F#OHcc)U0aCs>QyTt@Kbk#=)fEIvxFd@ii z+MvmK&I;E$tA~4tQUKl55TfoX&i7WV=ZT!jP}8r)XC47wd!s;CK5KO6fRqZ;11qNy z&2HqK74Z(%)g{6-1Pp{^+i18sHM*XdghRB`oGlM1Tfw|F)jA!Y#WqAcAx!EyBat(M zI4WJe!zeVs@jzcK*2W$SJK)Y^AvAyT%ps#kMLcwpogifkq=?Kc5N*f>MxmNgh20JZi%wAlIX1^N(wo~u1xzr+ z&VK}6%H6DREw_R=IOwChA$*jsC2?wyF)*^QGPlM36rS-Baz5p3;ckG~QioFz7LbdM zlM9hY7+n`RO$1?N!<;vX;E8)Tf2Bn?2U9wj(Q}N2NtTA&h~}dt_$RwiI3W%!JZ;3Q z?#B~3Lrkqn=oaXo>0iyoU8AQ}B=2%OQFff6T{71WNI}GA)F8oWkhSqm-W~`KL~=#p z(9(3)RLLmo;)370{QekDhKho9<~)pRoJ&|CqnF$Ej2o@*GnY`VZ~KCW4{wqkE@$Ab zX7f)G#X}vuJHI5xdO**?J+)ZsjXFc^f`FtAA?a^T%S%s1PK6^JuKxfqlx}7wFnFez z)ms=khiHY+PZ(G@LywA+j|DNW!C|xFfQ||vAPxcIh;B#Xq9tLO=O|!|XT=&-YC4n5 zS;+J#xWOGY=CMe)3}Y)T$kY{ULHyJ`uJA$`gPUVTb*K`AYL1%lL5-PMMhC@X1sYMI z$BKt?QctxI;RlCQ+az<9)kWc>h%36S*Vu>}afH?l2i>KlUfxT$pa^fLOP5~-ZB5@D z6t{Vt{FXJXsaI&I8%>0A)b#%VmAK$dw-(AZ8>sIOsN%`Jg64RrL#L2QnEPf>+VmI| z<38V-52J0a7$Yru$Q0{%Pv|bfrt8Vw@kX1;F6xV$QO>696ZsU%)SA`<)3|tq_7=9C zLyM21en``MEOR(1#GWvjN%Zne6vt~#-O7XYs+PJB;DL+3nH||#9@VFUGChlg#$isA z#b~l2H-kp2cXWN;=HbJxtF)(8%zt(C?vHPmB0v)y)Y(p%YlE5tXW{zM4$Y2bMwm4s z**x%~w})syG4&htdX}1<;x+D%nL)e<+`P;8IMa4oQ)$p z@ZZH2xC1=K9F0bUQ(}MbY4Ks;P_47NLG-vdbyk7roBOhV_^NNWBXo%4#Zs;!=Fay# zVI7LueZkig-Ra}xiNfs3-gb+-rmd9^Y&mh2&&3J2#+g%RiPdh4dVS^rmhvmkQ!~sv z>N(^0k+|0)owD(dq3yyrkg80tU9zi2swt=4G2Px(Yo$>2Yi(JIzdOW zY5Ft!)Q1D>H{_r6cDemdB=b*wM?)&QUm8y|&`+D39!u#Ihnk(?>h0OS~>ieoOI@N`)Ft`Jc8eQDfDx*@KDOEd%aOJ<$;o*>-SfWNRjT(_WQtSee}nm z{SfVG)uMRYyq!~L?l@$`N#o=jC0uZ8za;7}hqQ=rDfH%JL(F}|7@mb&Hn-Jg0uJDC zu06(Y5{c*J4{+Xh>p#TBD%8vW0O|vjHmU|gHJy6>%NnX|WLrvD=TF5JJ=W2tE_7<+ z`7H}U$hk~iZeyA*d&Yas)>W)y-6k4O6zol-Ly0^B8=9u>lHGB~_=eFy4AzYF`;%TZ z8PAe$TdyHS@_i{PUP1m*#ZPMd>y&)!vxGO?-v#^E``7QPd;b8BiP2&s#c=niCNgq{ zWxaeC?>)=+kQQotk+kl}%I}rlxp&ui4vW07=|BD&|HJ?(5CH%J0RsaA1pxs80RR91 z0096IAu&Nw5MgnFk)a^5!O`&H@i0LD+5iXv0RRC%A+Cy*)UJXEI)V?NDg>^CsZk>s z^&YQM9T@dbrlHW_%a_vN^$AjO8)@B0R$aE1RV;M(z;Y7M32xI$LS82 z82t&>zJh}WT)u?3L#0IMdJI&qij~mmQl&tZDpUv(r9gqvQl(0j(O*I69Re|9^dD37 z*HR1_a^S&((C7(KIv8OhN|h>CK`Ks1mx@P5zaPV;GP@9+l99dO!G7sa*(5 z>2P4d>K!UnNRc8+l`2%Ibg!s`2tp9({Y%x1V;+GRu8%@5qaUaxN|h>CTbBk5KCw|c z2@+JUl?Vw^rF{oN5Fm9({bZ<-B1DxLWt6Cq>2m(Cl@g(B?DPeF354o&9YSBw#xkWu zmCzEUN|h>9sZbz5ggOLB^eR-YsVp$VFJAQn0w+QGh%iktkB(-fE?pke!?s{`P74v9 zu9|EpI8qf*plPn@3$J?u8a;*fXXXN5sUIPXi&#`WBhUyz>I}c7=~AUil?GhCxAYL` zLJ;XvqDqx3=nTDcEHd;jL?wMHaN4>DmMf%uZ`{73z2_D#>-U~?^DIg?9?FkKUrUcdANY`jA=GuR{FTtl{{W2(RZSMU+6W!v^*MXZ_Jl(fp9&eZ(0aeG zNp#x6Z-yr!#6Xu9BkY7oFj(TR^_sw}_a7w=ORCt4eclf-JzYsBzQ;=gcv<9=z0+P30*2w2oNAZgb)xVO8S9Pph8rxhwCcCEHWKagR$OX zOtjqhW@3zx*t$+?b!Twnj&+Dt{7uVQuc=h(U_?sAR0^#>gew#>o59|ujk}h8u6a&6 zYt}^Eiia=*VZbBrEtehTDwG!=!q(e&)wD`)WSg#kJuVN?aOm_Q246#=DiA>g5=jJ+ zQo1Tv)C!dYszi^}2zE~FAGfroI;-8?<$3BI*D~&!7JiViC}ws;duJitoJ|Zjd=`-0BwCbJQy|KL5s^~eKIZ6g8WHl)xD@4Z~w|d3yt&eTf(99_) zoX6n}8NqxLD#_pO$7F3v+Gitg-nR<|f%1iCI#s4rmPH-m*Os%Bf9L1u&sk6(vMb8X1Yu~~$0@rSD=-U|F*vbQa-=o;5ok&6lL!jy!+L`LJ zVS3Hoi?2uKUt5 zE0@qUp0_fUDEOm}gDwmhbQ`?<(ELgk>=-9*&$Yjgr~}l#i-QPPC(*~~{&$Fi9S;t~ zpyrIb@|0&+T_aPpXcLC@2T7b9%ch_OyeJGFOLE2q9HZPaEL15Ck`|>rYq&?IFTybs`9An3WIdXX09}9IS{Q z*j-u{@flp$8~YKFo}*9H0tg<1apQCRIsX7iu*f z53c@@zn~a;7cc0qpajxf03h8wJbhJETU{Gw(Bj2{LxC2GySqb?Qrx|`I|M84Qc4I? z+}+(FK#RM(ySsJr{WEKFbyjZn+WW|BkN8L|iw!Obirz2l(fgf~Z;bBZTCrJbHaBqd<$~Dm@liagg^Zv4d9jOIj;vwmLG9s`HJZN0g$m`7(&3*mA_z~{2^a!0)`$nb!!glO-t*V+aGZN;O6i? zXD0S(em?0`CDmy}yHa^Hmuc-9VO+Fn1w!V@6lbECF5|aTlReYMn zVa!S}MvB)T?7Ui7_bZTpLXrpLl~I&;Ml*HETRHd)2#N&Mejm^<@u;K_RA9lA5jT&t z5c$zZRAb)XUdpfOS3o$-{%TbaTT~e%BVYU;&#U5h0F;*x?fv-?80!KX4U+^C;(rf8 z!4?Za3E_d4o}SfNtEIngY{X#@9>Dq;*n zopATDOWaR!_C8w${+4mSbUPlB*tE37d)j@%RGjlE1aX1J542;t_iq zui3@0PQUiGlR5aA z7iwt3z8mJil<({$^3l+fnoHHvRwik!ZXHzQ z<*?7#1-pv=gug3lZzBJMNHy_Pv!KT~C8PIVTVTmVUVMrA8+Z`so%3u+}AL=g)@`>nB4`$=||qR+QuK~m?0yh>m*le>2YvK zX`N!a`Tnwe%i5GcMx?XZlz_&0a-cLO>dT0M=NYscg%z@bz=Abuqe zYR1^+DrvpsMQ+bl$+~Awi2ly*@%v-U-|tar=|TaCPx*2ga71KscK-l0Qi@o0%JSE# z**P-C65BFJuBnxs8rO%26ijo%!CPvKBYs=>b&VgWE)jh`uSF%(Eq@m>6tP5wk9}CY z0p}b;dpS!pe8|^NBo~p#UhoabcZRXXq4_C-HlY- zvs=b{qz>%5s)l>Wx41Jz2eUpO+8!WNyEo>yrZ>Xq-I5V@p((EV90O+Zt-YJ(dBjm_pQnL4c+8f}r%OcjX+|tg?Bm$T4WD?5+CG!9XNrz(AW^Yu@C1)@>*= zYEMA;m^oK!joQohYCUqU$l-}N?hEd<(=@vO8@2i)K4#Nz`VsR>cLRzRKa`B=lfHXH z!-*o1&#cgvDbG2CNVP;O1z{DzAyjcOko?4!o#MWRQG7itbg}5SIOm(lcl{vJ;7L!} z_cnHxCoqkR+GnvS>{mM{88x^*M4n_*!8%?#wA4VE_4;M%{#8QXtdJEOR9V#)?+d010Hpi5`Uq?opHWHJ@}KYR*tVXICyo~ zhj(|`!CX@}hm3FbuQJ2v%5*9Ay;fL*0=HSvkkbSp!qFO|E8n|Ghzs{cR zwwYe&yjbLcn0y!18y56NT@tEkvBc`I4}1qLtWobd&(gLp`P)A@M{euCMk5CP@TE}8 z6pdwDd^-h2A=5XOvC$+>dnUlq*YmSEvwq&m=@xPtW&ugOcNbGP(adX?YBqeZDO<_w zjA(Fxw?lm_Lt5BC^Q}(*7uN+xK)GKYbw+gQb9b$l1UY+?UP3ojGxHRMQR{jc`IjYR_?(>LDov3R*+gej8A^bHdgByAlV0r)3>d z<;3EwIxtd}5_Q$A$jmxzILz{-XP@Zye1x@72$C$`cc{R%; z0qYI8R^5q#%9Nep)rQ#Y3dzET<&JcfZ4Xk?huaAIeB_^4$Grs`Yh2e#l|e4`E@l*F zb{ud#AGXH;smfEK;bl3oR(q6hRsmMFEOmG})jCw>O9z(?D}8fiO#T$amt|W~53LnJ zm#ZBX>@MXhdR#j#P=Vyg)xo@n!*2&QO5!Us#?dzi&qHNL$G{N{xE!&DRY&tUt~qTA z9c7zywi)Hmsuze>zhd3T*4$F$H?%l&9WPV#CH|})Ej_PI2*M9z?Snc#2G8KMRSTS0 zY1Y<$oAk|4(#z1Fv4(ZT(fA0D**+zxd~q+WZE!gR)=8IHgxEesJjvwdnOnNdy?`X8 zd2Nznt={?5I`!d=bS`(@)!vH*wNq>?7FTa`M)s_db3B-x|ocaCqOF(Qwt1*?QKVv|_F}x(Nz($v8Y`oI+pD5x-p?EZ1&>A9E1^@s5&gA@}HY-fD!-mpSs~Jjk63Mgz`lr0p5SOl%KOGT&g6m3SU+wU=Kv*` z>ShjDr?dLq>*1}qN-RCOZSy{?l%>C>*E1cocL+J**;rm@J1(fM|1G{~mR`rM=WH3A!$a=a5)!`ugZhT9o`l)~Rfibx&Ii+}ykQ z$eV=xr%QSPW-Ub7gukNXKIw4%Chy%*ww%^ny&g;$^Uy!zPt0)5&+9$vamwD69B~4~ z05O;Z0oEqDM;#HV;$npYK#l}>q@1gqd4(*as$JtV_s}=qmL@L? zioq=D_T$*P#@ZUoM4I9az@?M<++1zt8T-2Sw1Gv>2~ma5A&$IL4dlo%wMNmiGta{Z z64;1|KTjI;w!0eI1|h(mZoul<@Hv^Vdh7ZQRMK=H#*X_fR2rxI9B$OGVG99};twqw)F0$!vVnTAilhMp*iG z-$$P$)$`;w=7C%$%c@;1!M13@`?D++i=$~BNBT19Hd}l1bQ%SL9Zv&e^yTj*`XU$r zg||~G{%Dor$z>BejZqmjOPEM!H57jivIA4_JFX!VKLNjW*p0$Do58{30-w;wihd=3 zl<5YLJ+=y+y%=;ApUBU<~>OFVJx629hW}i^86ZJapMS4`bFf z-;ej&8VSmHV#7Cb?2rJ|gf$9zmiCn^r78ftIa@$S{9Hcj)1*s_mhrd?!MNl_Gviep z8^!_#T3+MGY6Xe8_c~KqgI1DWcJ)W-1H&~-c(&yhk2^j_R-7$*7uQgL8NFk$Ql@D> zqejopn>r{eH1q2$Do%2^{0WHRE^JcR>UL_;OaN7kJ>AVbgUxtswQgK^KTM!Ie>P^j zL&=C>0`plj^Q2~;IpQk`v*|cdR86TTMrD)Y;&asay0_U6f}yjGt^3H9v1~JyzBe{| zz3lx7zgpZuV)$(3FFOS6_gK; zgXcyWNOVwBDew7^78Q{FHgZi8>jnTmo3~AlO8T@d&!TFsp-8$U4M1< z5NpEy9RTJl`f33FX+Z*sl6$Ql!>XY_y@q9t^W(2-eapqH)q0k<7H5nUtTT* zYa2d+a*&7XGM|T$Y#qfQZ+%;?^es}n&=NQ>5h&lH%iwQeVkJC|!+~phpcqG7V9uU8 zS9J9Hn8?Kk#lqbN;Smove)#S+r02Sbf%tcs`+MJiVw%Q>%{oRDYY~k29qYR?QhuMj zeh4LC&<$Z)yM^X}y-WQv8ee7Vc52e|_0HMEtfg|>?uRd#e=@_}nsZct`d}8|d>aDZ z|C8?A_MFsTS-6%yqVSy3yl>EX@%QAaVZk@xr_}_>=}~~G#l>-i?N`1oi_fV%N6UL% zk(!eV-b8l$%8y9Q#D-Ny+Sv?EFdazB3fkdaZC`OTae}Xx1^0~XVswO5>P5sAUTfCg zRCVV2&naOJ1jwPpFg23ulza-y>&Ao{`C$!##iodCAhPYKsNoF?*i5#ZfQ4-{UBhFT z4L85iIpMMa#>|^&3q+F-qkL(Q<})pY*8`B;eGPeam593h3C{yB;%IlUmRjxCNs2nSXvuay?_8mFe zw9d^?*8E26&cl64Pp_&veAZ04RaOCQAQ)Ui>p)&U$9;!tU=oE4*E(-ur&5=`D`GlV zQ4NkEDn<(RR%?RV=ks)4Qd4Suh7#K}r;JTR(FK>v-hTj>SuMBD!B%UfI)}NRO!~X6k=;=I}J`(@9>p*$^v~hUSP0 zv2r>tBYwK;*z#nb94J=BO*)({6jL<5@EAcoM(r{u3;WkqV-61yNc(&+_8Vy!LnE`c z2Pow^0>2w=%blCTuWdhNM`{o(W37chBWIp57d@rKmRWhtl*?Odm&&Ai>@R79;n=Jv z<3!9cC$*Y0FLto#?M^GZmIfsHlNCEw<*a^2+m$2&2n?vSDl3GyqhDpl;vRLr1D42s zziz*3&32`SN|WWa@5NuIIt+Zxv>re)3G4Go+no=%a+sTe>r<8sO^W-n{+I$k^W7k} zVOhr%I}uLS=)@J65y<9|%wtZUZD@?Or-xp+KEGr;G@7)Je#{x!Q;hx_s!p72+!nQA zg^}ZGD7rSufyQjn@T(=mtXSkz8K?@GCR}K?Uf>)gB^{{z-s&g8>EbnF^F*o0^!qs@ zQ2x9Uu@5rseaVn9skMB7kc^8$2tHG>XUrtG)?~8Ea=_pHsZTL}S+e*3v|@0Utc==% zFY;@B(iHDkTAWOQRs8$fNlO^F zI+@4k;T9}A(Z5ysO1L5KJeq9ncz}*I zA~iUZPVZ9X`wdaGPC8@rCfSvlr=N9<-&v_CsjuGZbazgq(gW-UGHWl-L%e+z^ig_t zv*xX_m?*~mW4@f?yWy3qVEt0jpUk4@ks|Fws}`m>AF zcc6mw+oXTM>Tc$el0;MVqOj*(?WJ22Z*+y9U6cgl$@D`cv=Y?=R!5;TF!T%%JY+cP28`Tp*qHbgkqVSRevVF5&>18_S&RQ0zisn=+648$Oiv5Cm+`0bPMJ~W>d3@$XG|uZlyL3d*iW9viKC&jH; z!a4oZC526fetS)ZfS-@8zMt@Wcz|~v*<#h!<3xkhv0R%Wb0ol)WBoO;80otaQHnnz zo-&yd1e;q0MicQ&EmREXf))aEXsd4$V^#Kr3#h{i3B*M))VHO89qbvTL}+c-4(7|s zR7)w176XV&y5Ol9jW=3Em@(~O1oM=YrF`*(M?(2OK*%2wHKmcK1Lfa4hel@Fg~RzC zBsyEf_;j|S_PfIEH07COgHe5%?f(FY`y2~#S|IstdJKb~Huvv|qEWyvzlJz!|2GXK z_9I#-;Ul97+dNO1r7Fb{zV}gtA_P9HA*~Q@65?pcr>$fI%``&F!R=dG-@8xQt!yeM zbXj#pJ2orND=x#_tbaQf>}w;IO%!g1#S6;HM|+95RJeWvj1HweM7Obg{>+YRU*OzN zTkXxmUqSBBbX{Kq{L@v>nCnP7BHNoc=}OS(X;Mv zmL`)hyEjJJL5%c9%S5MFY+kl*A5WSgb^-DX$! zx8%%h5mo$AP-@^#-r!wLhx=;IAxVr;fNx0-p2qd-NKI*qP11pw{0KM;?m04HH_UC2 zMIx8U{q2;yhrYDtIx^PRdZTmX&o$T767PlCoJeI)-U{HFEGqx+oM8u+mP!1 zL}tL~PCcVOo+f!Y{y5&<#$h(f`uwiwoDN?&b6FNDX=9oITu_J*z{a!@gcnV_iPA~0 zV8=DZPdlbpbeZF6nQadSl}^IRMe==}1fO$XY;$STx>szCREBZ{o`@ z9K!6$^e`b=mOt(HABr2qcpr?4W5t}j)|q)jenN`rddo)p&>r;nT1`#o6Kc)#@MonAm*IQob@9 zkybki9jwco{uJtN0wRq)#+|H?IhV{Zk=ECybY|W*?{A4L`U*S+Gc3)C#PrgRxUo|FpJ`;Zna- z&50r8JiTMpQVXCgIR;zp6O%s-z!AuxuAE0q{4B(xO6Qorjo&5HCLXN%ylTkqz6IYF z4~Gr^xO87Ji>6p!7VyGQE|f+VhgJ9wuz51{i4=2t+DJx}lir8G>l}Y!B&Yu$;13Lh z_8(SBMWihatQ5Xre~4FV!#rwqeT}i+qUi-PWn{u35zwmRlJ93aQ7DEYM<2F2{IhW%%HpK)?C661LCE1_mt& zWsu%`GD(*(@btDwjVlYrT7e(Ey3KODYIECMURDU65eYfr3>TK+$(!N6?teQ`Eszm5 zD%>o6QeC#jK68MVsP;u_*mpD1^Lj_?+=5N7LUZ@Nb9;(M$428(jR30#b@BL=4da5l z?-ZDBPqDx8A_9s~6gx@$fu3tA+wweGvq7hZBGR=l9t~klI$7rRT=8LMx~N6k>V1kp z;zEhRC;9Tf=aJ(r8isl7YKoWGnGpwwH2eKA z|1!uv+mOfx?*_R z{5gPqdXrD6k~*){Ff`)Cxu-8}y}w_z#X$SNTUZ%C|1Cr$3e1=byQ32@kYx;LrK=DI zB4sh0<5s}hF1t_iCbCLHJlUVqZx(;|_TF*|DdBrH?$NCLkJYkSzdT?061xF!Cp!={ zXIefjc^?7UzJ>z+{r7@%L8HZpzNW&WR@MFxgmhWl{{bM*xvHc)m z(*U+*Fp=EH*?)kcC;gTuYp_raZ*HcNWi;W@S4q<-WO9HVmxSjO3 zu4>`hPml>r``+5~S2m>}d0|1QBl+`vN^r1r{3*t*=rxEU zj6MDz0C>~l=U6;+A2YL3-2@r*E>U(cc;gB>)<$lqFLj3m$ddM2EiYR_^-`Dl_Fn=q zb;q!#-CCPhM;#mBtfGdt3aeRlKrQcblGBFwkn}$Y1b`HxSr99uVAv3th|O;Q5#6g4 zO~3{F6N+TE2_m-m47tP>tVC8XmOv~qFe===X>m3qBr-AWhumaf!4ALb4Hw&dI2c7B zCkms*8FnQKL-}GLzyQGj1eos{wo+FkAkf7N&&gSCb~Z(o2X#C5cOoXoz0eE_4|Tkm zT&qRvIx;|nK66gkl@6iU^QKnb0pFYNPb}N9=&9EdeV1X}H;{v+KZf=DOkHc{`+-lt zB8V$PvEJh`qh*%R-5w4Zti>*djmX@}znm%?DU_KG4y)>JKGLWe;bTs* z6r?W>m1R{nI)T>fo-8}dY(6j)kmF`caJr5%#pjqOKx3{Nj^j41#ILomt<(P4J!IL} z4RII~w(_HA?chfL1HAI50~Vi`ueI%+`;zdTd;egzBgO@f8}?S-tz;Q3YyPQwH*|cI z@(rB*XiC)KMp=8E z2g)7Uee(BRfck)WxIxkBEWs559$ykweA?Oel<7@;xaXZVTk`Xx*dJ}1(O!2#kD*pw z^};*q`}#4z%dNS{WD&j@`bb-q5l+6Il0H~W*$XJ0{dgkYRwH0PUKhHVcHEp_$$U~M zpqI{6-|)^aOR3)SH?MW5txRAT`-x*DCl1EC+CtT|$>Nouv~%Z~y(;K-zA!m>ShqRw zw34K~V*mC`c&8)y18L2g6%q3}#I>a8??g{75BlVa2Z|F;bL^B4YJY{jYCYG_P3yk! z#>s**7ZQWnz0KNG#!*ghLI1;ni~$vFhp>S1YedpiC*e#v%VW{Azt3G1m!q4bDX)sa z1UM-1<)nNPNJ2kJkiVUKCdd7AHz^FwSb6~xqkSESd~L)op6 zij02~8$d+KM8Ybig5V-qm=TVrON&zkTioFysQ$*k5%kd5E$%}k^^8aKo)Q?E5e+Q4 zY&u^G^CZbPBiO`cTqsh=S2o|l4Nx7hHW(!Z7(I?Jn{gEtO4Xp<{b(@b>VI!(a4Un` z_x6}mqcO$MQUgN?sf1PxbyYk;&xotC5`9#NpadIC8vgKSP)3T-xke(08+{06+PRnT zO>sjoQ(LE-btK7^em`CvOKpN&rv}R>r#;K|P&Y($R}+sqvy6^l!vo%wodEv*4aAVF zb@z55;Gg}M{;-7TYy-Qy)rt#2l4dvdWyJ=ycMNre)hgWikCZT5=AVfsOEq~f0$*=o zsjz~3)rQi?*^aOQ`ASXk9wXGjD;DIXOTv<8Y>&sLK(c1+vlRtyqIe-D*J{qpLpl_Y z$Z#pY{&LNp2ezt;!F02}B@xiubk+_VBH0qImuRzVKCdqz7o?6^{OOWOF%pk`C}wJD zFtS|>z$MN-m=(9JjNA1{OnWW+7kx=xR zqEl1}#5k#XsJFoI8QJ{3+)H!iT_K&TzAKWCbYFkb>Vi*M)QB%?Q+*7rKzPb*x`+(g zoTZ9m3i-sZ6X|}pZ-bm023uYle8Yz#n?oNcs}ZGMsj(ZC_gM^EhCmSs3HzZ@4;;xi zo`?ma#hJ~bT`TNWEp2S7MmuSbWHoXhxyi>g2@0N?6w!bCV6G2yu)KSxDkCiIoduQy{|M z9HB-Z_D7?$1>69Xo+TBTxn>;C;|5OvL3*4g@BbW&=yCo>(SS!ngngR-_xq2cfz2*X zslo;$Xz_PSPB5!(f$z&L)F` zzRGr`cJ!%#fKWAuqHhx+LLcSlp4Os{mgU2L3?G7QOJTstshbW(D{FuHiopTU*V2o) zB8`i8k_usvi2$5%86kx?;6WOj09K-YXVeiFR~eY8-vPXpR(-htU`KOsyTaAtbkvz^ zNnTVH56=OSv84R5GQ()9sEI@4w$j1c;|{XzTQ}IAv({xZKXi(#EHmLLPIBIlAwK$m{wpaZFK;aif z^ga5Su@(2&EC3~>AMJhc5ZkKlu{8uQJW%aIANihmIYRv7*FSh=pq!H^dXc#Ph-LM6IOun<7#96F_LJeFkw6}M38*gYx!S~{x%^oJfXaQb zQzKt?e8hJp8y2*F60>(4|Ab_}|JE3MM!^3H=0aSc%ae4!T~5n-2A9 z5p7B*t2q?NY&|q-6Ovi}Ti~V@bkiVX?((8kEsjrZpDP$;B}N%mIBAB9Xi_WdQ_h~! zR6!JwWgA#y{fim9TX3fBL$SH|q^6zs%RK}kc50z%aj#7t9BnYX_(5cO49Iti3y{SQ zo1bo?7|jF||CfbMcxjZeJ7%$yZPAdwQ=911-0-#M!ImX4ureO|E>>+tPQX#1SP?(` zvV2UeyCUAlT;`Y8_;#gRFQWHK<3gypAOB2bLP=JYe*PH7Rk@nSR`?BB^%Zx#^$B|6 zn0@Hx-U51g8DJmoc5`#9KrD{%|FE)vU~Ol9^wS0>nt+N`0yk&fZ1&ZWtP|veXu3%~E_lTrfHGl)N$ zV|O?jQ_g0#YlgP$$|LR-@7JB;#-QJL`PXpW4_M|(k(($OHpa_s|x zaWzS-ACNcphTngf&E?;6BfRORV3?m@UqMl44mPMzwiu&T7p!79y-XNX7_+HOfi@fW5$cVo_PF7%A9f71Z-jyH z>LwWsTk=z|x^vQxaPkfuZSK`3v{^$WJkhd*^2t0!2mbl|&1U#u#4`ZLY?0w=2<>AB z3kku~J-5R2_X5=xm$xqVXHQt?2&CUU9RH<2ETlviR-@%MeugtF_l>@}kW2bRcy*Jk zt4_qw-V!9+b;Q41Zy0(|qZ*WFUx>O8<*Q1iz;@L9fH38T4``9Dn9-0SdS}NvHl0At zXlfLia7BaqqmAme=P#!b5O~<`-eK>+VnZtF757vWlHJI&+FGe^dURl`nlmvP{R2lY zLQ7t&YKU6rRogV>G35`>vltQF7X+){_YXaKEv}xqH=RNH@9HbhIl95JzgV7hbdi#C zJA2$b4H4WoMpQo@*Ih{61UL(S3O2@6Vk{%F_S0gmm?}_earS=4j%8?c_6gWHX-5@5 zWFnZY29jfKeC+b0x>ZXcJP z&kbE(IEKU%nhp`8*)HsetPMyHtU+^N1{KwBY6b;uoge165Sjx4&^$PGlx~%<5XpD0 z^&{dI_Ut^xNK1?sxyJ!nLWPP&{(@heL+{dYMIEnb=~c*ZV>gg#ZOz{) zvRz+4B{Q}mi&Tx*S9J1U`>wa|0L$ingNDtLsT4=kRS*$oE=WjLng#3&#jofi0JBi8?hu2rEkqz5BmJ~{tgg5T@5#NGQ z?rvS{L*4!$j*OJ9eX+4{b`0*MUKkJrmkMDS`0KI_U)P4yfHTMHEd`Nxl8!q_SN!t5 zz7Fn&KjWwQ4T2I7$G*c>H$~MUw)e%GT3_QNRo>{H1Pa0V-bSQi9u#C|J5pVTffI3< zQf6(7p+Kq_wqTBCL2RJ`9k=$O#^p&3XQaN{nhJFApWrUYZ<4m^BhX?~;y6UW##-?h-#)}(Sa`a> zpS$%)h2RFOpL#68`e{;t5 zCeMYJunIe3&=@MjKc|DJ9(&!VO9y@l4C*&t>6QcQOY5<_wi6+!kmfF&1HY8ljOY?a zN<-|Jegb`l%#kjU_CWoL>|#77n#^0esV=Nz=BDVc(xz1-Bv#kIL=x8WG|X;)zkK5L zIBa;`T2%NtIJUY=3H;_Oe@xnECF4+Rco-o;1>ul+mXcRl$-m#fBzu3J^@uu;u|76I z9nmals=hL0uK(B7eMT-PW%DlsW6Ej-hTsqnRgzVU`p~|7OR~iT<(GQ4fs;Klyg>Zq zzxXDRK}QI3cEwoVacKkh_vY=M4 zm>TNuxArZ-P%teYPDyR=vql$6XtC;yYHPE@Hwg|>>eg^GBx zQ?R6nt{PY;j@57Za?KaMkI*l-unj6BU9DG8EV2r+)Q#-{PUo;fOaG-2z{=oDs( z;pEZ5nf(1w`fE$@x*vH5JIA*kdo+trA2}2_nIkbQxETx-AY_y^bnGm<$i}=bVG~$a zH_dgSOp9Q-;+CIZA&8DdYuFwNLBlRX$d}|>G>K7b-}}F*XG7P$B_k}D<9>v!xx&>b z)S@Hn)HA5d6j%T;S>F8X7+7x~Qc!3Tk>MgG**}+mAh1Xvw&!J`!(jA%?#=T7bH@vm zDUIzBfz3!7rOkjqiGq!11>8MqnNZt$O>Csvt4OOQ{m$6d)Sv=z3KrK_=pY*$8gsQX z3zi8DbB!6iq4n?LjDpfVxLYFJN>D#vB+c$Phj49)q8vcFpUse_T~;EDhE0_}f$3E`nGdnrTaEytr5r&!sk$P*e zE6ry<$eK4%mKq+l#nicb3}kPa~GJRj(o@9Es1PNL8(JAPCXz{8N%Zx6yL+dc4tr0k{!R} z9T|QnmMp!u%|dogR)asXihFF8-#Jmtm!!Y0e29RF%+wI><=u;tBv0HIG-e@>;u-;D zg)U>Pj#Pwg^|mA{E6H(sSXgA|H{%9n;BPVQnb|Wq3hhda*6Tnkm`ub|oC&`hkCd9F zR6}pUDnFEp!LF_RCh%Lsk*$Hw>87M5#>L*IBJfJ}YwDdesD?x_*9uhn2u)+}Q^AxA zK2jM4jbQlbKx&;%GjuYk@{#Kt+GT4k6u5Q+7X9|o?O!;Wf7{SFVzZ~6%rIcWFjFbY z{I&$kkUT30kh3183m2Sfhod4Nh~4~y(7r){wc9$8Zd|8vQfY7Z7wz^XQj^aQ$`1ln zb>z9*bLS^!Q4uF%Qs&EJZ|a)=0CMfzY<*}Ddb%LqZm7|;7FVixsx;mR`V2~abzLw8P(@xjhL{2D;U0H!8z0#Gb8>; zUj}CW*<5AYC3lV)V^f!1;6MO6{Ri-)<{K8QmZ82fV8MdT&N_2!kNy7vTvPr5h%%PD z@5y|x+GVFVPGvIpzJiF6sTS z2$$rSp8*T|QHudE=fA-Pjn#-PETz=dlAQH>uToOsmPP>_e#0Xtw}GuwAb(+m)>zucy(RC*jj$FIKcxC)ghvrz78DCLU_SMgQC(s z!N~97V67rrEwoKvn@^%!PJ9@|0n+l}@EOZV}OAPLd-Td8SpTFs4t2XmJOj7nX7g_gx^`F}jn%0Q*Oxi;{ep zdE7=jWAu&a-4txcu;W3-aWWnbMmBzo9h>o9UK>1*MC71m#sta-VAzYXo6&hP#$$Tlr|~gq`F21t*t=b7MC^ zrE_-&q>@Q`tx0~?)=-I$#3*&^J3(MWl9=ge(4Ne|6SgU~xGmRT?{558} zu8|3GWQDOKFtb%^o-jIFcOxgQkE#*~XU$H(VPNZS<5SB>XfHkZWV*#?d^TGjKF5eO z%WsP(47^z}OI2-V+jfSq23wEJs` zjH+LuZ9u`Q)Ar_bxvXjfyHWiaalOxM7Q3$ak;1o7F=R$ZlCMT+#jw+GJKgtpVlL>~ z&YO;P7Aa(wit&$r(quX&_N72)F`8~7-IBm)=A@&-=+S4h;0qdTdk|&K*Ru?q?rAlt zE0GmF=sm_Ca)c|w((~=F7aGCxPE*Zzr`&jTO|<^;{!C${V15eafcM%fWUSRK-q?6H z%%xQxK_P_QU^JtC3hN)>%T0|L1?x<^QH~0jSYKkxsgi|e0DFTBagH5v7W`9@jVE=?#dMPG3$?IPUC^`&&oR1A$BiljvyJPaBz5=>=v6c72|6lwSF-!kE?g*em>e{ z3s>}9-EqVL#qi12Gsos3+l?vZOv94?@5AW9_5}(94YCeT$YvEfOgf>(mqlND2uuO& zEpYN;GO*5Bebev6PZPfT;lVfaMIT=i%-_bj_xXRSeB*F;3^SHW|V>YNJrqBSz=b`;`t7{^KQnTymRV zO9BnPu3hx};tyq#x4eZBwyi>9!w{xu!q6cwv1%SWuKE|143N>gJ1l0bRFUy5#7ZDu z?0*_7Xkc7*hd;Vsl8C=iVHo#L0J_^19P&os!U4uAjvkBWRrP=v8hIxh6Smz8bE@>p z%nMhuX>B`VK3;o+kB$gyL^Vm!cjy}&Tf^~FgD}oJq50!`C?=EC@1Dzm2*3BU`Zk|1 zb1R-Luzw^usaIm;eF2eM1>0ZDNhC-mIP^ejo~>?^fD{NU`Vd3gr&ah>XBjDuz1LWRoevmq)>njpp{eD+jXOx=@^LCNE_cu>2vSv*a z6=DqizemRyXm6a09-=iN8QLF(v=LW3vALa+UVF%<*J*@AhIc?S1ZE8E9};F!S6jP0 zC2AJm{Pr|Oo$oz)W%VL#h8{B6C@eBS0}OC~z*~6lEq&-S*_6|1LadrA9_i{LxqvfF zcM#t80-Iu&=);zbWI(Lbi8Bs_|6fens`v02Xf#w0vHQ6+o!RH8`QEP?NUU!g+be{t z-r~K19U_t}#2PC0Tfz0Z?wFNF;0*?(g1ypQZZKU(L3y4?qMDL778X-bFEX~?M3;eS za1iPMEJph3xcpV;i~ypL*#=gjMIxTa0rj_(#^6(C-S~TtWjzMX&h1Db&QB8R#d!4k zs-I9`av^+d@uZu+4Aub{!vdbnUnV zkMEk6h(KDS{gb8b!HUfz)@sIU?qh-=$QRR!;|llo#Ui^`j47sO1MoG%&n6Ole8pB7=MZ+%i+l zgt8PsVNG!XqF)S4hYRC!;(=@-M*6>kUW?#MmoE6<0F?)b@VIfPN|jMV+;a1jLaBRe zln(A3XjeIW$}kGStoG}*EGS$}a{PIgQ&3o>;5~YI`ijwcXLgdq+Lq%=qH z`$j88A3zVfFkxwan)|u-nKs^~4vMPF*0Op^^UaHB&pwCZ5z6lKe+MIO_WcZ4@TemN z%QH-uQHz(rnsL4@9)c&cllK>iFM%E*2yi}t`ZPy&eSc4BRvU}O<4yYC?qYaec=wEB z>KFI(5#}p2-_t&Gj=}j}H?4;_(@QsVqA=Yqn8sSH4|z;(4ce@4m%CWg6)M*ur5BHl zdGe`ktB1FH_uptB0Xus7*IY}N2yhrfg47^1r`&%inpi1%vioV=W9PKxa47Ce@u63> zA1MwDcsy!4#p{dgYXz7Yf;4onEKB81ORJlxMX{*y=#OQh~ ztAAbl%Ha}+Yu(OVr5YRB%ZssSqWyD?aL`^c9O3F4FdDemIl3bbueayMG&P6g+ni>z ze;I&PK%ii}-nrNcj`_D**m^wj{6?F~>bLv#+q6B9?*P#GwQ8focKwJ&+`pohBbY&moj_?BTcR0?!HmLOzoNL@ja+-j zg-Vqx>mCO_8QLxonwOt#Vzk|1KJ~6421uKhr8VwsbY*~pVQx)&HF;`ZG67aJpm!B5 z*4oJB!4Y}JjtIlD+9AL1VrLy1$89qoP8~gs_*v@Qy?D-&m+`3<9bKK`B zp~oTjKPR*j);S$+D$VDG&>57Y1E}-X7$Ta6e%Bp3rgU_R5jUp5@8d5ezG)a@0izCN zR*wc>9I^FOsZyXyi0)FXO>@rh^2EUgXv=k4wY~DtnuKg=ns%@b+Bu9Hk+aZ_HHrm733=GTH(dDZ^n`zdn5{Ff%NPhPq>ZePZUi@Am#}Dyc8i z&XZB)P%uF4=iUoO8YSZb=B6Nv6}-!FIF>Sk1T8H4Lky?1D&#eY>~ysz#Q-mZvz^A!vVpyqm%U-rP2#STG4L_1Ul)RN#Du1Do? zZ?N4_siMF-TdKZ#?F-whLb*gRJ_Se2P0!$+{M4B9%%*z%Pn)_sZzKZY6(IP zZeMLaSzdZ;SUVrx4@eNBJ8%JO=@6!_^;=>4bq8p_0cvt6evvT`>|^ zp{*KwUoRNc3!{B&_yh%tqXddZ8d`hSrL>#b?p;3ztCi%@gh z?JD`!d5{ha^*^$OTpBUw>R)3Iv~sSVc)&`4tfm`=Ss>L7beLunPJfR)sEw=?vey}J zOqvffOe?&l<}&HZ@B=ljV^nleq&BB)^u6N%=vyy7PVRW0FiIjYxlICEPhIvUor zD>fFl??&*wc5R&JCp-Jf?yH}Qe~sh^B;S8J$Cf_RIULk1X_@7 zj7nDHd|Ns>{C;Lpd5rtkk)uf~h6vv&Yw_nutkm~kj6$$Ld%cEy>n|uA1754XyW3~H z$O+Ea&Y0+O#1uB0uh{DXEu&4j>(Zl(9(4Rf7b{k)&^a4d_HM`1USz2p!g2Z2evuW@ zqa0cW{QE!w$aBut8h-8l;;r1~LaR1ek18>i{(0BlYAg5ni$V`ON)~9z*7@QhFZOMu zP=r=Zbouy}lR?wxF*w!dnn0zcOr;~uA__Ti+wGe8+d=hhU4IASDkEKMRp-mwY)3wx zzS{ls&sepau3En{A!`hVY{xU7eQq?!7q&Tnp}poc#B%-lwjmR4%11pfzMEQeZYwQT zw^w|JpmWX3rKMI(8f{tzd+i51*lR^?+vAmQnPjz5-D2rk>$iJD8pES)6VofM`VSF9INuGF>TgZ+AmdaqgO+=+O}#^mly)v;_Io5 zX^MHls@AM7>c%x{`)PW?BG#I=+o<0?JXw)#;V%fQTk3SPSx{qUwZ)}6`orH0v6=9aSKYsf ztq-Y>g-=-C4C$SFe&&E9*u2`h<#hg~Hva%|v*#z?C=RXS#%mSlt(^Pf%Ey+R<&kCH z?Y@0r(oO99XGk~s?{dNm?CsO>iF7=?%hy2uxr13ARm=ArP`94cyLx|jjzyQ^0#OqX zUA!d_%dc3#7HC^nu@b1|1yQ6Mmj@4D&aXdjyf>G=cl_zSbReuNHNW%mQC)_gJ{SjFpYN30Ci9Orh+ zOY5fd0%B>qT8WHa-vkM!>;3%oyK54|d(n-xHO71UL<)s=uA92`{9MCJ=2mm7-T*97 zorPLnPsX=g;8;P6UxC`z+;@h64qW9-g%js)3`wEdke+u!30T z)#~R)*Rxs1j9OF|rVM6^#+l!k=%5vD9oy5)a`L`gR5WLnpyX%N)2{NMfK{|nwPT*T zbi0Y>Jxc` z_U)~D;xPPOn9V)9&1%WMKfesL$yFHptvAax(hFT(FDUjX^D#0iyJK#Hi{&3S``D+T zYrASiDcx(I;r(m7@)WYUbUVw74rYD%%);K!o?;NtwdESt*Gn;~ySo132rDRTYon*@ z*<)LPJpK9k=`XI=U3qK2o|U?-f@ns!nnhdk$$9I}0~;wu@Ibbmb&Ab`U?%-K^U?F1 z+^xmYygI*lN`=8D`}Tpt_Vbp|%^CK;Uo*U;Bp|DWRAx{>&lf2r?Sb172=3t0$9R;t zUIJM&jenYb;THMH?Y}JgM<}zI<~hJrB{&l>G+*5J`!QQ4KKRd^`&?7$JA8Y_BbL5) zh`~jX$hzj%uC^j720CcfKkvae?EWtMd+QicuULlCpqxXMRnM=U(!PxyYxUY;4A_5b zmKEs-SdU+9IV)S=tZa*OdB-aCbNGw72Q9I*ciIilvuWDYL^?K&xMQPS9t8IMk zC>$CI$aisRr#<$W66trzT4vl8cdhcnAyKn_iN9;QtstGwPDS)}&fSp&%>x&T2hh={ z)igtfxPHw;$9*Yk2S0_H<(l=}}j$bZewW%dHv5?!3gjGfXJ2 zJkkdT&od8&FJ1Ei2tZKYn`kT7eTYFcYrf_0nwHI{oHdDDvnd&`T;rdc#ny*%%KgGq z%jEvWnRvsyj8UvCmOLwsSOG?S$INXHb6zTT;ym#~T`G51Y^6?Gk zetS%`&|9rtbpHTiEf}u(gh4^hy83i;t7fk&8ZP~-r=8`LxN>tI{GMOAakW2wog!tZOs2Rt_3s|5 z{Qm$UY5{z`DrG|P)brDv(gp5PJcMq`^|!bj$K}v zvq4Cj?Rlr3oo-6D*ar-BWkF#-zjzoGuHKHj^3o}7TK;-?vedSiJ7GNA32;zd>eIHG z^*KNa;M-@PUd{B5-W7l;$4k$f!4wjfQ@`Wy8ph3R{(ZF2t094lr!V8FD=cWu)xLfA z=PNvg>!4}pq(iSAdhIs28HDAw{$l~D@e+qu@BP{U)6SlH`}CAoveL93`@2FHK)o^7 zr@YA=J+a%LT>EJoVZNV>nY|l%&LGP~*EuSflO_U{{T+& z1O;h*{Mr~Qe8-zY24ZWP_SoyA@c~b>-_Y}v)dINF&GeS9qYDV>zc_;U)6F2@K6zEX z^AfZ?Z}AmVx2FF9F$flPU(|R-_m*M?1UOVVz~NI*q2W>!r=;l|m{(H}|MOqYF4+lsjM59axnP9jq$tT5au zBZx@LT=w%_V0LMon8&}HMG%_pob~CSB_)-7)!;3fn$oPv+1!DF&SJ?XwUBs@KqiL(8vBVig=0>G9gXS13-b zdU@*z<4;}BF&hO<>VUwTm)6HVJ%eDERHH#3QJ~69)!}rtD3M_Q< z%jGi8t2ugBY*RdokD_ph-mN%bCE?|;p&4(GPC{&x0> zt&`25%hj5>uT868yrp7;ldP?!Y?;1(YcaNG;}D2wa`WaDjE7%0ic@<2ATH%fmBSM6 zkk|R^H3wr?*Y!lVrkblyPH#_ioc(I<`N~%Z>ZwOYRh<&Bz$`zrCBn*B?$4FuEGf!+ zzt=~+#j~aFv3uvo5zyRq(kZbkn`zpNo%JFugAET~zg=cP8svMxr3;1?ruo4VfUGAb zjOXA!{iARcZ*N!>Z}kCf7pskPulXYh{ul&?QM;wit6f@U^eaQf-f_W`R9n*K~Q*EM+m0AM9uxA*f$Sz(15R(;NASynI( zj~a@PlUFW><=eiRskP=gzEo$y-S|CSpaY=L+8k?zeITNu1#J-_ye1q?T3%Ao<~?G7 zGq!hoVi9Xu?Z3Tstzuc8Iqqw}YcabF;3#W+lxkpI-6Gn&W-BZRYVI zPJLnQV_54po+qEERchqIu5bO8DCOr`mq#q?j9-1bOpTZAuZI1uDOR>^7&5JYo5eE$ zjccR&r@IN@Tzl<^ra3&bd9O~n_=<#O({DHT%*q^TgT_}{)ni2Q(?|$!iM+Y~h=>Gs^Z5#K=k4<5zZJv2kHPQ(x)V0u^aMyDlvk+?Q0YzD3tZyTn<$50i z_sjyDTe|vkJXjDo*9w&@jpha_#2RBUv{4NCM0&fYo?H^)sQ5))XiW`oo$V_nnLK7H z8toicEV=d41zz`l8h>*rP!*NB7RuQ(3Wnx`8e9uB$HW2{%{=+`@4QVbqMl}&-aBs& zz(2pP@{zZr=lO9v4Fa)6=e_>`kia^8bo)ydXZH&39enlvL0)ie3kMsu-yXWWw$fxM zgIu`rgtFzT>Cow?w6Ov8`+4mXpY|d~!(Rzt?CpP_j#BWN)$+0Pd2y6jxPUDFa+bj3 z4&L5rQlf)L`uWZg0BW*k&i??-VAVB?$DVVGMBDe<{9WK9i_J7?_|I-zOtp}$?0Nc| zZbn~Y7q339T-1yM#9i<)6J#}O1)o#p)IgEsG{9pDmnpn z>Cyqs(dFjy$FYFEPhav|)Vk9@=YQ0_f$NwYDpaT(Sez;$bWM{V zZ=GSq9&L}jXfa-U#rbJ&XsTZ8(zne;3x}3#A)5aHJH`Ovi#JpA=d4wT)6UUujLcld z+SRN8Q3lEt4|ncitpj!Eq`)E-jQGK-cYgl+z!ebH*t_K_v#fhL7w5bb&ZnMqfNI>v z>#QqVRJj&^Eo8nj=p^BY(lQ@-?Ua~i;1ng?JR43e8;R7CJz2*eo~hEdHjB~ zfKDv)%)z_m@iJO%8chSM`-lbCeKWs%^qMWU{K}2xe73#1NQ#$@}RQ zqn5vi8u;o)G=%)$>b+rtMz&p?wIHpc+ZA4x=JR^R#j)3DP!?}n132HE^KpuXw~NT> z214l!zWe_m9LGKrf^k7#%xz@tCgtR^J~t7ZTezd-}w!Ll=7g0D5aQFBdfj zmly*dJ^C`DJiPV%z>;I;ZX%U$h;A&EHrHO-nA1q)bNS8*fI{@U9eJJmKr&gia{Iz8 zY5jtild^NtAf<)fzQ2or9nC!DDMzcur9j{xUCWm*>9!7DZQ-oW-*M6F@!hTQy4=^) z-{u*i%lSOV1g-+8t?G>H%{xRG0_bZT{VwjGMbvTym8NM0FCL+WX>;{a~5E zT8)3t#6vA!Qae9y?ewc7yz$5CAem# zqUMoz^TuQw%F|RM0#pb}htTkNEV*+2hFgxBb+5ngR;_AKJLFovrRP&_6>`CdE~*h5 ztm@_4b4s^sjTIq_P&BOk-P>qLEa1HxAAvW+5$YOqIr^Ub@ehLXr{3L7x_ZXw$yvim*Yv^^F7l4! z_d`tuQd%7)V|CM?a>r&^ZbwqK?>FaelHYLTZxrcYXS54oG0Kr^zW)5<;zcD^wguki z=Tlr}DX5PTjaBSEkRhJNy7}4#ynOo01#L1nj?sk>zL6z*Hk!)WQl(1z1C7hz@V*ZN zh0B8yqMm2xpR8`M@=xwPAWD@emZv8(lY3oXGa6hZ6dQS&P~yv;Z&M#?_E~b}%a<-M z792I;eGdUk4bZ=Rb&tZwQH>JD+NY*z^WRt?(dKm1J9qm_8e4`e=IPsWTw4Kyqfm0? z2P+D;sBHJFb&VA;*RQ8Dd9{aEFx$DeGqz(Ab8zAIK#t|dy9Dpv(c zl`2%Iuy`>@F?ig$e_cx9TrMND2i>asKK}qk%a_LZ91p6vR|YiLdJnG8seNUr4r=fA zJ(!H(wVSPl@AxsaNY?evr;GRJ9vT#$_+Zvj>T-8KT_r?}Bx0pXl`2%JToo&Y#DO*7 z;TQe^^k2~b0M7Vaxo~B}=sv39Ql(0miaIfWkHZs{FSknX#Ue_TDpalmh^WO%l?BS$ zC2*?NI|y1@0>ANL!sYOOr-l7P1`^@G`k$;GV)*Lmo?l8z<5H!4DJp5g*=ZF?-Yd>q z!urd3$Av?U%a_LG@FT&O^xVEAA;5>!{{Z7SyikZtOiCpZkrI-T35i6aRIV4s<;(gA z@PFl82z>|Fa`>;&fA(cciNd&4sF5SWrAn3m04x6hol2Dg1h1vxfAxRr%9X;UN|nWl z#-&7`|HJ?%5CH)I0s;a80s;d80RaF2009vIAu&NwVGwbFk)g35!SK=H@&DQY2mt{A z0Y4DShv6&baJauL%swIEfnz@?9O0X0=0grWZx_XD4m^Bw$Bda@1=cHyxVY~riGhHbiMF8=@*^23FE4ZZ$DDB9ei-lm5$(n^ zhZx|e9k6c$S;Hj2-@;rm{Dtxhfj$=(th>XEUxM!~`FMQBkHdUf)=hDP2O))<{{REL z>*41Ee*u#4^v)kEAAyPdPkFJL%;AHBkBn&fNao*zfZxMc!s3_ZGG>@_@fkzn43zi; z!TD}C8{-8r^vmPUGk$pSys!A0hVjC1!rXFKILng!05w7Ja2r!aK)x#s)PAC<@_9X& zEHur2LyVcvIcD=7EPBE+xpB@IaMK;Jzl6Lr%YEjU>G0gcTz(@vGLOyVVa8C(nWG)? zct4K$^!PMpoY|g?{J86m{AR44Ln+ou;$xaJ;kPF7z^)(XRel4X!2IG+8MsH#{{U-| z1yqo;>f-x@UBmgyzljRDCy)HdIKIlXU5e^%SimR$0INWs<27P*h4?H49?&N;SRIQVn-mSFFH1BSoAEn-t0vz~3v z7-x6k%NzMEvD+o`n)B81SAPze876U+#74-v56WoCRXYpy5At;Q#9CRpXZrfecHNfz zj+51;aa6!?hN&mBVNAhKY2dnaJ=9Ax?6@YY+aGaX+z6b()QS*XThq;E5TM?LA zF+UFx`-U^aR5bAre$T5Hj>4jO0Dc_zhZI2UMviIld-x<~j7x_Z{byL_-v$@Qz#K0Y zKi~_zAAsdD7_e`^udjjDCHOUt3iyQQ0^l+DoU!;@@?RkXkDJ?uAAliTC?@{^+Q=Qg zu1q1}MUIeF#)`|O<#F-7^+wT~;A^}Bl=KFG4FCXsu*3wO=qd00GLU0vLsS!Xr3&+b zmLoz4UY&UXBqKO;rRIO{1%;=s@eSdY{{U=CuJHmpZ~`Gau|GI!@BYwq`&?|DpfxxX zZ|>^_E#ORF555>V81Ic>| zGI-@Pen+hIXC@(=GgfWI7`$F&C|`NySaZjJVz&j0}L3{N?s?1uOc z8Gg!wPtF2EKJVF%54>^z0J&hE!P)r5`Q9$W6Q>A8KJZK?FbG8skvSST^z}O{^pLlEJl}p_ z$4)M&8u9-CafA!uU;x!_msH`>Rh$N_5Al;TZiZ2PG{;DEaeym=Gk_|zGVj9(N#*F3 z7R*=L;jt^)JuG4@3*p=P=M-?$Oun=YH~}QT!P;oK$T}o@BaNbnN8ulPSYy9z(;d;tW90Ib8wg z8mC2agJ+<`DhXPu9DZ^1#4CnC% z7vID7)k(Se+Q0i5d;$_5~b_`u|0wi2 zADrY9-QJOP;Exo;CQ}6~LBrh1ita}QN{)vEdZlUe-`DHY%2ug(vlSDB^!oSy#J>BemFgYk)rFcRa9n;?L+RK|ni`~DlkB2mIV0}+K~F&S`v3pJ0yyyNAw zk;-S-ykT+yF5l=s!28NA2S6+6bN7S=1HQ-o>n&onEZ^reYSaff=n*;#_T1ijouMCY z7fQcSsQ9km8Kq$erva+}0FXMwQ>9>Yk+*xn+kF|!z52#gbQ&^8-sHwrC_|N?_L=>qj;KRS z$#7=`y3@h5distM~6VUF|?`=>2(~a4ZJ4iuoT~{9@!r9^Y8^cToCy{*3fz zK0YpeSmpJ`I?b5Rz;7yJ>)ouJ}Sy(3982t<0tkaH)wJVqP z{{U+Wkq3Y?Sk|#tx$5`-0B;p^&v=6I<;rK^Z=ApIBMNTS-CF*0hB<#s*^ez{@`oAE ztmQJu9{0a%PwOsLlW;$E{Y-ja&Up56ezM2Vi?^fChrG3+!*6Cc*0YDq^n4C^@);kA zk|GYjos0X;oEiMlu|}TTJek9(+x`JhX1)$$F&V(cG1SMbW_dXzI;Hy)62yor^^&%P z`d|FOma^!UUP=;YbPh(_IWmc?Hk zd&P%!$c*SOt=IwI3NDE9V_g%e#lTzNgD#qnE<2qbvyq#<>;C@$jE!3W=-2Z90310r z@NrCZ&rWE^;ydAwO+HK@U~dh5{{Zei{2=KCf051{d^X1pm?u~l3*+(UuLfYx1E9RR ze)RZENcef7oT=cCh36;EYMVO;ezWeF!Qz-B?!T*jV9jxoz+@cLoAY)GjwQ0ue+Mrk z*cS0&xq<`Z{D0%)@Sge4H^Y1Q9|?kwfj2Ze>U}2j?B(hhj-B8S37|i^@~WM%N7rxh zh%Uz~Il_SM5-F#Q7PzhPuCV}3xAp%3e|X@UC_3?gZzxYL@4i2W!-o+>wA-cM-}8u` zO&hPg5cnJY;7(VKxO3~l2}p0>kG!}*Pa{YE@M1{NI^yGS*};4K=FOMwZh1pUWTLzr zZLiJ$05~{&8fC{ECJf&-&9KRunpWM#$*OyP7-BqQJz$tIFkNQ+*O7h_Gk8Kry>A?& zL}B3f^lzqV+eCMYkJ6R#nvTI<_y?u4nT$2sQ5{6L)_7T{Zk`h$XSWLTniq?Od``qP zKfE13$?F6m1P9t;xZ_-LrXJW%1jAgXz}E+QX>}jMcsm{#w3kuVo_!duM48Ez4t#$v zcnHEVJ^FCE-$(V0=p`~d3O`s*(|6(VhP%0u2=`WoXoP)+hD(AD%EnO;>p zUB3fmj1u8*!LNrNSYQu{lN^~C@nZQ7CJkn}GB}eKqp|71WqnFNy z2ZLMz6<4BS7DY(4Q0Z~{2Uv~?i!{RqVBF^|%ZM?L@Q!xx5+5oU?T_h=;@olG6nwgT zG59-1C~vi=^^7IR_x1SLIMHNrB*um@C=*IH1rvq%tVA*G{_`N9xINwf0K7tyT?fDW zj1p!fMQ#tUzgNx*AUc`_!;&jpQ&<`qrn7P7aiU%ZYfw$wf)J$8pd7v&@WQ#jz}$CJ z-x@EV0{$@d92_?m5X2Tf_-IJ8z9>{HAw@ZBX*BpZvx^cjv|rSX;lm zYk7GpAB)a&;^gx3FYgu&792l++`~i;W!`ciW`XP5=-xD}K&v<>Mp*56;$v3hrWieN z*331A8)IK0IQ&|f!&v*|JNP}>@Az8B+XIt1!t&BwDD@nl?7^s*Qtgat?aK9{hveU2CJ?)@_N;tgS=@xo}3LQ)nad z#J^X(2*IT@{DA)e8LK3MZZBeEr6;tQsa;_VHHf%3dd)SCW1Si+D);C-x-i5wjNfS6 z*$){KcNMRp!T9)>kQvVbb5r9%#(vxf&IS*YiN&4dGW@yk&vrie`(s9IbJ%`f5BtU` z6o<&kC285-4IQ!lVM(;|B@t<% z>%kOD{{S-~U5`3w{{V*YT>*7dfF18fGHwgfpsu*!e(`UV7YcvB^vA@veYj2}K_} zm-G*uteJok9BaSL#+Zx9OZ;YmWj7J}AN5qmu zaWEJ$)-QtmWZ!}&Y{jTHtOJ$BHd5(sDAD7gaA$--YG`N#5vrm9kpL+OQY7k~2GLFe zB#9Cet_nd3tq73RiYeI|ibJZ0HvyZ~0u3<@GtmHP%jPzEcNlS&y&|4|mYM4HxD+`hb{s^%-1MI3cV8HEs^%530I<~!-W}a%S2i| zDNr@YAqIL_fPjlcRFEwYC{vZh2YA&SkxpmQ^k@)8(u#7bnQu4A+#)2U(3=nhl!StA zCDPI%CwtCZrHC_}6f{(FZ#i7kHF1xenQTm+Y{>*c0m~Xcc-^z)NvLOaL~kz-F(uy~Pze0E=EcC$5M% z&Kgh0))|<-IDFxA5#%v|%z``e6Kn0)jAHS56utfHEbQ##+oQc;g+BW+(0=YGzJq~% z{o~v`VQ?r_t(;=2s`joATg5H~aLA=S;K>nFYqI(_`+XU%aLVKG9BGVX&hpGyvqno4 z$4phlZ>`})y|1_wSQZQ2)Pw=a>{@} zyKib_Qp5W=Y`iFhX-5dbjr<<3hnqM2E3}tzb6-LD^RCrEj*;i2^-qm? zVNobyct7ipu$xDCD=Wz1F`r@iJQu&~1ThmA#xK?#V8M*kgB^q5J94f7w#LOWBQ{Aj z##Lvvh~%U>c--)1B99`${{T<#DiHAjvmr3aNEfun1rFeL{d2B6;06#PH(qM`H~7G^ z5&r-m-{%?$IZoVOME8Pjz8IVUcrkCnRrigzS-@~fr;Yhz^P8&j?ZvrnCB)3HUprlV zE_BUYynT7=4`zMmo#xnETjbC%%<)nOaMj1i5&2yj#ZM!L|i)ZGrCRHp(&cuZ^N z;4v+ck|G90@9VzFNw&`Zf&QErHSnf-PMwSpm9#&YkFKT zIeub!Y~|K$%^(i7OOKErmTzR@huOt+`+CO$^`!s<#~Hqaq?Y+Cde#ao+sWZ62Zv8C zBFuPDRd=h35QyzhRdNizjGD&3jxjMwx6t3rz1 zyKz|W&cU?Juug9G8B$V@m$hjDrKsdE4bW@FY&1~VRD|9p`oT=n&SMs7JR2FuF$aPs z$gsN_;}XY6YTA$iH^Y8;X*WU~EfE$&T0;WgYrxu?NgeW&f+4_2Y|^#~w)rWo;NJ~# zAQV+nz&+PDBgu_Gg#$t5@sG*CtiY-(L2VGX9(yW}krh0^Y>W??(Mbe05LdB)FihPy zW|-*+J&sMC@MzWl09WyXM~q|3R|k%4+%T?rKfIj(0NZl=1x*+0A(^pZ_HAFI^OZy^ zx%*G`iaSDV$JjR)^27MZRH6Kc(ET|&OC7DvmvtcE+;TNnrCh3=@u4OXxc>mEB`t?G z?%bku9l7cUSfnOBOx9&k-=~w7W(*h~v6IyMxv5av`hg0*w~E7smz}YYE3uq)o2O`{ zj+L-995*o2um_|E2k8FstELf(owNGEfCz9Iqy+Jk^hoUGIKY~lNz3<>swgIaAJz&X z!+5Gj*Dr!vI;{Q!_loB)fPO9Gju>%Jx+}}^dooD0sR2m?mXAbDtiCu9wsXXY!KB6= z3lj#@+)z9X)rx1;q=ErbN$zu7BLI}q1zEjl?PgjQ1_DKdQAb0qY{ln_OQI=9LWt^2 zX%?_7C`lAc3LwIG2L-}3*#O;eG;4eh03JdJ{TUyzjtoyw0Fi|1epm$+VM)_IgNK1Z zg4JE&O;M3~jU>9p#zAlZIfsKb;p-8KD3UC!1UWqSq#LwQ0?_~@FB?m^a5cj8l#&2< zxV-){i5s_t9eC4@CzphZh!T+2mL%rya-tgG0{BJ%eu64xq+Kz zsyZ(|g-%^$(mv^$02bR24GBmk5r&4jvd~K42gDpHY-9kSNkGYMJz%L#j@eXePYZO( zr5KKtQkdmDJd_a#5Cl=OhcH0!27{&$2^~W=*mADkn{b?XUDlpqkO+QtQO>#>6exv* z1DAd~dc_r0*&Tnz`_`}_@D}6l;81{etDyGfAt+t`vafM`2RQiSg&nE6CztkDBrLDh zKoi)3O{Ap4pjp5icw5=F?`It;09=502#M<@04Tr6f%yHGTg zx+J3+U3tN@H&o==z@mb#F8=`dVD{Ru1+d3+DjUX$Dn+SDXd~1GBZ6y);T1?df|qWq zf>^4cHg*NV@u`gYo3&Ne)o*KQltU_xq%`Z&6nD;O`$B~lvCt|IiA2DI6k=LbCr>pB z+}!tbSnYI(s-AlZd>Fq|s{;XPwKVh^Q3m#cE_|Ppc--`4LO|9vM0rkfA&8I)k>ZMMSH@VSq7AijRfz8EZs^GZ)v5{!3XpX0X~bH3K@>#1k~dDn$%aT( zprY+|gar}KR(NSP@J0&ooBMDO!Eq9ThPe^+>7w=4EU(d}obr}y8xHEg(IK^7J$o`$ z9ZkG+3(W1`9Ug#C8~}QGVKt`_bO2XH(T0skEpQpZP-tLjCr?Y@J(k6-X$(U}1FOFj zCi@_;yIp`(BR@&d6JW7jH63&5*kX2Ltz6{Hm?I~5^!CvYUJ zyebsywG&8!;OXXffHlFrV7Wz>fU|%h;#Ps1N(7%qstpnyxnT1gzyJWQ#~RVH7ZP-- zq$q7Lh=LO&V5=EjeO8EYJT4L5us92p$eF*hoJz#~r{%{N>AppJ9CCX1&Mgg1nuviE z=Tyi_%UPnjnLn{I;;W;_DF9Hlv9-letWZLnckF*zcw0M`9y54ItAa({QVqdjL=vR^ z!+mt~pbCyrVu%A|x&Y*cyGT7K)y!bhm9vl)rZvZlIHy1)1eS_vc0$R{1Q9AzR^bAm z(+H7PQ7{oI8-_jV(*h(`#4I#`g61tDF-F?57L%2Lyb{4OBiphgs5L_KTx#6pv3YS$WokGrY(pet$Qlh@ z3%HlZL1)18v0uQThPA#m=+% z6Qp%rQmCDq*5tW+Aaj#O?pGL0p{kC<^Rr2Eu%QNpG#J^sI^&-!9R|eMU*y-Xu@xXw zm|}kh{{R@e46~+Ip(+Dsc!wi2^9{W(5Q-0s4XP#sQ6yCzm4|`=3FW97m5y$sAV&~k zqw4{REjbCd2}IEdk~)P^Pzj{MH6aS=4&gDCB_2Q*!XZFv>I z;o=W6ktd~jov6$FMO4_q21eX4pdIN9Ru{aCRn_FFha<>uf*ujb)*cLs0;&SS<)>zU=5sY;TSleoJoaWq4d`oqAS=z`@47iV-t-$2E=mIKBtV=nV{5FX|~<* z!5w1>Nkbw?rD#cB_r@fUs06KM!+S6P05G*gWrJSJw39YMieG3=N+t^47pMbKKtxXhkET8F1PF!P0X#P_#nD0tBL6vdubVseQ`E=m2F{ z5yiP6sVX5g2_!611RE%)K#398D&=|75Ft~OH&I;@1aa59AZSh;wcvS|6OBWFhI>Mu zbmT~?*^VTWwA#?@;My);)c~+vu>`ok=%pGB5fCqZfvF~Fumf6;P&yV!Wk>+>K8Ij# z+nP{6q+TeT>!hlqqGpu@vI}B~$Qtf|F=8^hlcX=SXsuMtqbv#Rka>hrYXBfB#9|%* z9$Y+S2a}|Lbiq*2R7W7K-S^I&w@Ob)O6k10><~hfP=+QDTqlwe0#faC>|CmeHCl*A zlMod}DFzgQ%bFu0Fav2;OHrEU7nD6ZfU4~B#%>_!VyV;bG}Ok?;hDbVBj*@-TBK;E zs@h)lCTz_hg||d|JM?m8I+6$S4beFcJ9|o#0Y-|ug!eB1@kT}tT z(#CB{hG^kc*a-;}AsxaA1O#-~4SA@v)4Rsu7JfV87=yY4I;Q=?+_eHEB0@f9HvkK zDH;*mTo&GOB7mUF4hp(zp{_f&t^}xplI4nomd_zz(jH5p)C#jM7K#GUY(OuD5@0D_ z96L~}6eDX$@asg_;+L`HG?6<=oVUxdDXVmK)o*|W%nE1)mQdkMueu~tJvQ+R6U}tG z?+}=PR97p6*8Fvb3Ug`Cw^#Fp-mNcayhDCGPgo({FWE!;(~O58YLETr8Vk81-#COa z3L3YL`1<1wpjXd95i~4x`SpotxcmS{@0s5^!bmvaFlD!19J9zd*P}g(hp^TB%=N-} zMNoO-;02(*CRkM?U!ovt#OX)cDWb?OSdcFxza}Y&3_9+J?Ngryi<=Pfm{1a41zttL z@#rm*c@T9?BHY`AkY59fQts#pq($k9%7J1q5#G_#jk0xl$+vgpBYXuJwN^d|-1rRiFeqlb=f^^=41$a|x#R0!5bRsuF7}Fhv zQWXJm9WWQ1gJW4RCgR0j0D_3k#qT@xgodI;yIR)iQ@~1*C=19N85Cm(Iks1U?vA@ZKx3!QqbAa zT8}tJWCu`7T3XIWeKzA-Af^RcG;-6V+?Y(iV3vA}JdV4%KqVO4@9IZ-zL6mfD=MbO; zmgnqYk_7IU(JHh?lByGThPJzMJ)nSf5E4y-P2EtY1#Li75bOy}t1ycRy%kv+qpZ>%{{RZRN+?E4dKT11P_qL-~n9#%mWPDBhO6% zIV)t)I`P+&Fu17|*xw#hVa2vbVNEF-P}vL%4!f{YQ(>Z~4zM#6zFZ~4fb8T8oAm}l zXn;g)REQh4332p_qMeB7$r4q&7olUCJpn6i<&hU1gv#V2sI-B~WK-?Zq`@%g1 z0w4=Hd%nBEI0H}&XF=#X$z*eEF)kcF1B!LL%k`uFWUf2_*OBh2OahdN)LUe;nM3(;(r~oJt!VN~t@Dnc6Pzas-eO-p z;Mi1=sLO{7#!U#^4lQ5YrwjBHh2ywBmmk- z33W@^_-RJrB!;9#q7zKK_ezbvy=RxcX)hj2791sx4qkQ_;~!o18$AzYE6 zx0aJ=@j}OvaYe(U1SgTW03OJI8y0Jwfy^}a)17;20SFOB?xZ!BGI{g?K=WG%T$5*H zfCVHd0+F(;yk#_TL;}N5D9r~5;ZZ99(YD_CJ}`x=iixSqS_@>Wtq6ipIUaVY)mw{p z!4;Ub9H3jiDVGt-rv!xs;j0(MO>;F=5!T>>yqAOkQKqX^5+G8#**9?`AQc4!#H3bs zUU|(so(G*2j0_aq*0I78iWO3&Y(0O&j(iNTRetqMa1>5Y_AG zD3e4(cs)XFAq5?mYt3&4H^k^iLdTsf;GT9MG=T+sUrx8ntQgj$!`V2+!i@pw3iI#P z$6K_i<#A%JdSDpS#okK%HE^sayc32>enY{+np9K?rYDH?&T;UNwi;E4sK?imCCwrM z;St?cC*Xopdj9##>hGoeq3mJeb&G^f64Mp5 zwbB5t*AEutStyJ)0Gt zrmrBjUkqvnjQkLXO*OB0$`jv4uPgGFf|2!$(BuvQ5Rnm(WqTfb zU}MA25KyF>AF(-ZVi-sRA!@n+(52rFNkLCh0pNsVx;o*Is>i7)mYVB!=}qxUawb*? zAg-!+L8D#e?om7_5mF1&b>T9rVsOfDmZ2euG8AY!2vtG_d$~c|VFVJ1U%%rQ8g-YX zYjjsjKyVzG5uAdA$Aa^sXtNtRuDF2FN^X#5Lg!Ed0a+cYJh-&ca`#b9MBI%9*)##o zL5buLPcr8r_hAy10rEL#J8s0oDAGk60x=Yrh&R|;hypaMZsz=C%7g_C4$qU5hir0% z0%{{5ojbcaP3Ff(t)jN0NKQgsse-jC8XC3cZ=HGofk{;6X=g5t=UT`zU650>;GPHG zI1ns7w!V6QSs@JQ;`#f*VO`^AH!GWG(ON26r?m_H~G>X9F?9-G2c2?VjCpOAQ{ zT+>noNNb{Q9UjTeS(S$*G%=eApsQ@krse}tfuuT|k0|3P^mD%fKs22B;=nZ+1R|du z{{VZ)Y^bAR^6H5nI1pyY?QkFNeoaoN;^C_(gJjY_~rPlC-Iw~OD z-j3Gv4qSO;I2bO;5V|I`WLnK-3OHM#SU}!fi?XEx5n=}3!5%R4W{ZQ+F@)!t-V00; zpm_v&LOt;K3<@DdC^REcUApnOcuEYhH*q=T@K8A-vV%Q{f#H34%}pT+w7zun_&qgZ zHwKgkw32~-?+KrD6jp)@b=nNQWu1}5z1TH=*bebhovw~`N+1OCaYcYbQccNBH+FFS zxKWkRh`j39Lz^Et#ptxrQo0YZr+H38-KnH8$DMoAhCtJz(hK$*MqJvr>>(qC zviS>9)hip|;$%k%9H`nUuxKCb#?U4#0*3DPwv{|%R=GU3V*#T;Sq4z&Wy%|Cc0 zJ`EF+pR;+xHOC$dD83JseY~AR5RrBRM%H?fJ9-bNf0Dy-+^{xYF?+Rbam8?T@E9;> zV>HC#LcWUb-zSdoC1VYi|>ixzDT;Bh?{VcB8=K$kecSXf1gD z_|^#k)UK_G{7)IoUsAy#iAlBSX6~EBhrReW1A9ClNn=!lq%3?9&z>haSqN>EGK;bs z{LdJQkxl@BEO*n-QCpxO0~b1!(WBh`WgLM%-b3_VenfO#&}NBRxu%7iWR*e}H@F(k7f>*po=+?ym*9t>e zJQVCf8&MS0=CZmKqo5J)qg7vG=^SWuMIOkwVo=@M{r!ICI%1KuMP1>|PKT7}2_>fr}5-H302+{9Wj2qw~OAa?_vGj4}U z1b|Nv;oHfjyT3sLfHkParcQ_F02P`U7FqRx0-|7n=sGoO%`xQ4#?o&RgUEN!J!fXY znngBC1$(}*D#00ESK^`nvvwJXac+5osNni^dx<*q&YIKK`DDR$tkCHZwpmo z1h&>8q`Ll=_@XM<7`$(?+pK0u9s);TV7BOc#-Y_F;tK;xhhptc00(ZBSJ>$2H;ng} z&$cmz;Xf0{Dq*%=WK5;!*%9~5_29(AC5nLm09mDaPz{=iyL-K0!)De1B~EXWMae1fV63mBg84^xWbdEH zpkQpdB-z{9yd;mgw6;^do8LGSwIC7|2!&~R-8ZNZrqfH2B-}MOkPb?)hXFu6;+#Z= z14M+RUjlQAM1s0LPC1?^HxaPf0qVy2w)L(ulVo9~O(Iex*m(uc!0P~r5z#}drJaLP z8wFkkA@_Oy3d$2`P){~HP4CbiII(FqRJyHucru*6(LgZeN_pqTN5p3!EZ?mqG;RFU z@c<-Hs6Yl=y7h-oD%xRs=yVeFn4vPp{!oMe6ca-joo#<9VgXjC=GEaq1&Ds zCcPa*MTeo@^i!NtxWErQYW50n>2cVomV>|%HVtvI8)&NU3Qa){fyz8gEx#yWNVYr> zH2}p(@X(kDoCd(*!3&BbDx2Xdcz-zLTjc~`k0*ne_{E20VIiSB&TGhTpwR&fVw2il z_?=++>IfM#M&Aj$G~nLeTjJ6uqeTud0Sl-B(Yw^&?an6`}Sr>+d9`lhGW~wt!jY zksc|1VYrJ|w?RnVI}WyDU`_{Z;De7RuO3vFyeg^8Rs@97Mt=78TW2g*hbO=9S;a9<4^YJ5 zK$l=Ye0s+iKs=d4+mgbsJSXE2qy&~G>4BNgMnD1kn79-HBDA6APvrc_ApvJ)+2R~= z=f)*U)M9|H2&UJ}_md64USvvoz3XRr3{0FY^8>C7ZB+|i(|4XfA6O_sNvbBNyw7WRT-Ko!jsu61xiEh4y{0&j!fpUF6& zKJcnBK(r7d){umoz(r)q)QKcDtzPq{NDU!4%Bxg)9eelS4gkhL@L%Wu0MCW^jz=T# ztOwer|?7I3&W_ze)$Htbu_B*UhLTRb+&sX901$Wacl2Y@&x zoYh>e?5h#@*w4qG#t^7H+NeQJlA*EW*cqoFVxFJ+CJT`xq+T`I!S|M}5GZ(p#Pc5c zz|BSyf=K3s=Mo;`(|41p1^Mbzhq0HO{d8zenO&hj$g?1RU?cVe z)EkDPf&keD19xNRPM~-S1F_v%dt&vPE`gw1K|d3Z82KD@Nl{b7MxLCSrKYM<(}upz zCK&8M;H{xMoIYFpbJ7s|TU}F_NMRXd1hOA6ROG zfJ&)f;Kvj**_F%VxZz)r`47kEGLsWHeghKWvC%Ilt?4x2>pbZH04u>c*KQ5@CinR} zygJ9IR|oA)cgd&kSY9<)29UQJP6F116dm3~5`+b$C89+^=*sOU`%d1?^!yLRVGNzdl@aMamqmSFHy`&YbEB8WR2FYW!|ltX@kv-y4oAMiaeJ}kw- z%Xu{NIX=eUJ_M}mwCWi9N7ezQrzTFs-I>cyRPYy>KN_Q~*IOgI!0?R^aMs|kle2{= zTlf*>j_WAD63`C}qr*B(kNb`WM02z3-pq~j1dssZz$X$L3<}MNi%T3B-(fwNO(iIW za3`cSHO>ksODvFhiKnu>X3*PMYhl_5s&b^^Zl;JvU~X>jkIps{(pY)@>v-@<%BlH! z#G64iIn&&SH7>D?;ovo<%0lb&-UP=X6I6g;jVSYl#g zU@^p0M>}|D7M*d#iHLJlOe8r1D^;;PWKd_LD5;1k*b`!#P0J$_spfOgAm&sQ9wqMP zF{mUFlR)GngZ@$E>LL-hX&tX66d*&$IDa^?E4)P7NBjT~M|9I&GypaL&i5Minto#^ z#?C)GF~rtS)=8HPF8;=K(OY(h?=0%jgHHfak&gzO&RC@ATe1e!E5z9lz_&5hkOwWw zYKW058Ee$1A@WLk$5UJ&t!ueZR?62X+(*!>r#=k`?22G9NEFuPS`57@rjb4aP7FJE z2S2t7(SYh<sFF-Wm zyf~!cp0teVIlrxA){W3VZ5!Y3Co6&=lePrEoo@^PVNvM_{(RuY6em-#gz>r_aaw0^ zhtu`v8x`Y2j$7|G$KtczI9TMkU^7M@UmY;kIs7rK+{QCb9}tKd56FK914X1oIIE9U z_k&W)tIltXF;N)x;~}lBQ=usIUaA^H{1g?5KossD));WN7GYq}4bZhuDr@RE#Kg_B zZ}2W3fMB?v8e@xtgNB&A2nb0=(9)XokH)Fd>kWydSm9ECQt+H*;@>+s3L_U!Gri)B z_Fcr7>CjhtKczqG>$}KVMc3{GnQ$IlM@Fx;_EJ7fW8>v zUkQ(u)C~Ys-qw@Lt>S-xGoi*cj#&7TV~ZRu`4})@!T$gpZH^Q_cYg@Yy28Q;2sHr1 zt(X!h=}p^RnRm2a@WgikvHZ^n)%aL08*UkAwjQ==^EqlLjrXrrCHGFV?S|N41RR0q zJ=kQ+w?7l#BhDwz8*`q_FT8N%2A_SQhZSr6;Q8YmM0ymxsNuqU(BVp2rA}4l!eOV!Oxqj;&N%#EiM$J(uzWduJm6ub z7%L1P8}aFhiu^Es3mjXUVS%_gaB%kcNjbvv@xbva4Z;KgPDq327vY4W5Em2&I^^7T z&VL8H;nyAW?V9(R8062h43&ky1hljVD(ErIX2|fX(*zr!F0lh33qlgbv1*F%35X#Q zJ%hJr4*547V<_qilO%O^`W$o>fN3-u4`PI3Y{wl4X*Wcu2HOlk=?+6kpxW7LEG~rt zm8*evkN#q=TrsCM{{Rom;QM9a?}PaW;Tl{;BZhi+ z_`x@A+UEJWa23&&MSzgC{i3S;IJB&M?EA43{Pa!&n(N^5cdMvivO0SmAMg z1A{Y0CQTTwQtuK1O9Bq{OyM=b?*XKAJGftCZwm1-I~$8ZC01{IpKee^90)V2nJIMEsv_p3z2VYmbuYw?S-uGs=fdE|?H7Rx5OTjOB((GP7iS5I` z!q>uJ!SOo$4}manb%TR`Z^hOu#vD!#EMEe}#kjZN!GjD;44TRCWW>kf<<2taKPNvr zX44)l_Gh;}nWyF@!+gKMV~@_>ZE(qfgXAJ&W11NJ4jB9khM(Xk{GmgI#lhAa!GVJ& n7(PVFo#JD!gP-tnWS=KF!xls0XK%=vFE(bw;xglYKOz6wrm2Tr From 51062f499c212d558064148a3792492bb73f1ea6 Mon Sep 17 00:00:00 2001 From: Grzegorz Oleksy Date: Wed, 29 Nov 2023 12:21:04 +0100 Subject: [PATCH 09/12] ACS-6151 - added missing scope to a dependency --- engines/base/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/engines/base/pom.xml b/engines/base/pom.xml index 674e54800..9904403a4 100644 --- a/engines/base/pom.xml +++ b/engines/base/pom.xml @@ -109,6 +109,7 @@ org.testcontainers junit-jupiter 1.19.1 + test From 85c838d4752297a5b88a962670cf16eac2eb4cd6 Mon Sep 17 00:00:00 2001 From: Grzegorz Oleksy Date: Wed, 29 Nov 2023 13:10:26 +0100 Subject: [PATCH 10/12] ACS-6151 - added requested changes --- engines/base/pom.xml | 1 - .../base/LivenessReadinessProbeTest.java | 21 +++++++++++++++--- engines/base/src/test/resources/test.jpeg | Bin 6968 -> 0 bytes engines/base/src/test/resources/test.pdf | Bin 13857 -> 0 bytes ...ImageMagickLivenessReadinessProbeTest.java | 2 +- ...PdfRendererLivenessReadinessProbeTest.java | 2 +- 6 files changed, 20 insertions(+), 6 deletions(-) delete mode 100644 engines/base/src/test/resources/test.jpeg delete mode 100644 engines/base/src/test/resources/test.pdf diff --git a/engines/base/pom.xml b/engines/base/pom.xml index 9904403a4..674e54800 100644 --- a/engines/base/pom.xml +++ b/engines/base/pom.xml @@ -109,7 +109,6 @@ org.testcontainers junit-jupiter 1.19.1 - test diff --git a/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java b/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java index b200c75a2..b1bde0d1e 100644 --- a/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java +++ b/engines/base/src/test/java/org/alfresco/transform/base/LivenessReadinessProbeTest.java @@ -22,6 +22,8 @@ public abstract class LivenessReadinessProbeTest { + protected final Integer MAX_TRANSFORMS = 10; + @Test public void readinessShouldReturnAn429ErrorAfterReachingMaxTransforms() throws URISyntaxException { @@ -32,8 +34,13 @@ public void readinessShouldReturnAn429ErrorAfterReachingMaxTransforms() throws U env.start(); var url = "http://localhost:" + env.getFirstMappedPort(); - int max_transforms = 11; - for (int i = 0; i createEnv(String image) throws URISyntaxException final GenericContainer transformCore = new GenericContainer<>("alfresco/"+image+":latest"); return transformCore.withEnv("livenessTransformEnabled", "true") - .withEnv("maxTransforms", "10") + .withEnv("maxTransforms", MAX_TRANSFORMS.toString()) .withNetworkAliases(image) .withExposedPorts(8090) .waitingFor(Wait.forListeningPort()); @@ -104,4 +111,12 @@ private static void assertProbeDied(String url) .exchange() .expectStatus().isEqualTo(TOO_MANY_REQUESTS); } + + private static void assertProbeIsOk(String url) + { + WebTestClient client = WebTestClient.bindToServer().baseUrl(url+"/ready").build(); + client.get() + .exchange() + .expectStatus().isEqualTo(OK); + } } \ No newline at end of file diff --git a/engines/base/src/test/resources/test.jpeg b/engines/base/src/test/resources/test.jpeg deleted file mode 100644 index 33b9bc87ed944215406b4e5307f40a055e998eb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6968 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 Date: Wed, 29 Nov 2023 14:08:32 +0100 Subject: [PATCH 11/12] ACS-6151 Move test containers to test dependencies --- engines/aio/pom.xml | 5 +++++ engines/base/pom.xml | 8 -------- engines/imagemagick/pom.xml | 5 +++++ engines/libreoffice/pom.xml | 5 +++++ engines/misc/pom.xml | 5 +++++ engines/pdfrenderer/pom.xml | 5 +++++ engines/tika/pom.xml | 5 +++++ pom.xml | 5 +++++ 8 files changed, 35 insertions(+), 8 deletions(-) diff --git a/engines/aio/pom.xml b/engines/aio/pom.xml index fd3119192..97ef7d06a 100644 --- a/engines/aio/pom.xml +++ b/engines/aio/pom.xml @@ -132,6 +132,11 @@ com.google.guava guava + + org.testcontainers + testcontainers + test + diff --git a/engines/base/pom.xml b/engines/base/pom.xml index 674e54800..cab64abad 100644 --- a/engines/base/pom.xml +++ b/engines/base/pom.xml @@ -97,19 +97,11 @@ 4.2.0 test - org.testcontainers testcontainers - 1.19.1 test - - - org.testcontainers - junit-jupiter - 1.19.1 - diff --git a/engines/imagemagick/pom.xml b/engines/imagemagick/pom.xml index 90f56902b..dd88d8091 100644 --- a/engines/imagemagick/pom.xml +++ b/engines/imagemagick/pom.xml @@ -53,6 +53,11 @@ org.apache.commons commons-lang3 + + org.testcontainers + testcontainers + test + diff --git a/engines/libreoffice/pom.xml b/engines/libreoffice/pom.xml index f61f4b54d..1f7e97e0e 100644 --- a/engines/libreoffice/pom.xml +++ b/engines/libreoffice/pom.xml @@ -57,6 +57,11 @@ org.apache.pdfbox pdfbox + + org.testcontainers + testcontainers + test + diff --git a/engines/misc/pom.xml b/engines/misc/pom.xml index 3384f657f..f7c940c9f 100644 --- a/engines/misc/pom.xml +++ b/engines/misc/pom.xml @@ -101,6 +101,11 @@ org.dom4j dom4j + + org.testcontainers + testcontainers + test + diff --git a/engines/pdfrenderer/pom.xml b/engines/pdfrenderer/pom.xml index 4bbcbb576..3a2e11281 100644 --- a/engines/pdfrenderer/pom.xml +++ b/engines/pdfrenderer/pom.xml @@ -49,6 +49,11 @@ org.dom4j dom4j + + org.testcontainers + testcontainers + test + diff --git a/engines/tika/pom.xml b/engines/tika/pom.xml index 0e240a4e1..96f1cb90a 100644 --- a/engines/tika/pom.xml +++ b/engines/tika/pom.xml @@ -145,6 +145,11 @@ mockito-junit-jupiter test + + org.testcontainers + testcontainers + test + diff --git a/pom.xml b/pom.xml index 966808d7e..042ef471d 100644 --- a/pom.xml +++ b/pom.xml @@ -184,6 +184,11 @@ snakeyaml ${dependency.snakeyaml.version} + + org.testcontainers + testcontainers + 1.19.1 + From c31cc1ddb3228903e354e4c58aa4a761840a1dd3 Mon Sep 17 00:00:00 2001 From: pzurek Date: Wed, 29 Nov 2023 14:46:58 +0100 Subject: [PATCH 12/12] ACS-6151 Run Liveness tests in the IT phase where latest docker images ara available --- ...ReadinessProbeTest.java => AIOLivenessReadinessProbeIT.java} | 2 +- ...sProbeTest.java => ImageMagickLivenessReadinessProbeIT.java} | 2 +- ...sProbeTest.java => LibreOfficeLivenessReadinessProbeIT.java} | 2 +- ...eadinessProbeTest.java => MiscLivenessReadinessProbeIT.java} | 2 +- ...sProbeTest.java => PdfRendererLivenessReadinessProbeIT.java} | 2 +- ...eadinessProbeTest.java => TikaLivenessReadinessProbeIT.java} | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) rename engines/aio/src/test/java/org/alfresco/transform/aio/{AIOLivenessReadinessProbeTest.java => AIOLivenessReadinessProbeIT.java} (94%) rename engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/{ImageMagickLivenessReadinessProbeTest.java => ImageMagickLivenessReadinessProbeIT.java} (93%) rename engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/{LibreOfficeLivenessReadinessProbeTest.java => LibreOfficeLivenessReadinessProbeIT.java} (93%) rename engines/misc/src/test/java/org/alfresco/transform/misc/{MiscLivenessReadinessProbeTest.java => MiscLivenessReadinessProbeIT.java} (94%) rename engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/{PdfRendererLivenessReadinessProbeTest.java => PdfRendererLivenessReadinessProbeIT.java} (93%) rename engines/tika/src/test/java/org/alfresco/transform/tika/{TikaLivenessReadinessProbeTest.java => TikaLivenessReadinessProbeIT.java} (94%) diff --git a/engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeTest.java b/engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeIT.java similarity index 94% rename from engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeTest.java rename to engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeIT.java index 55aa4d4cf..5f18b3081 100644 --- a/engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeTest.java +++ b/engines/aio/src/test/java/org/alfresco/transform/aio/AIOLivenessReadinessProbeIT.java @@ -29,7 +29,7 @@ import org.alfresco.transform.base.LivenessReadinessProbeTest; -public class AIOLivenessReadinessProbeTest extends LivenessReadinessProbeTest { +public class AIOLivenessReadinessProbeIT extends LivenessReadinessProbeTest { @Override protected LivenessReadinessProbeTest.ImagesForTests getImageForTest() { return new ImagesForTests("alfresco-transform-core-aio", "text/plain", "text/plain", "original.txt"); diff --git a/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeTest.java b/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeIT.java similarity index 93% rename from engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeTest.java rename to engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeIT.java index 43dfefe57..e0a8b0f5a 100644 --- a/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeTest.java +++ b/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickLivenessReadinessProbeIT.java @@ -29,7 +29,7 @@ import org.alfresco.transform.base.LivenessReadinessProbeTest; -public class ImageMagickLivenessReadinessProbeTest extends LivenessReadinessProbeTest { +public class ImageMagickLivenessReadinessProbeIT extends LivenessReadinessProbeTest { @Override protected ImagesForTests getImageForTest() { return new ImagesForTests("alfresco-imagemagick", "image/jpeg", "image/png", "quick.jpg"); diff --git a/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java b/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeIT.java similarity index 93% rename from engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java rename to engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeIT.java index 21f076437..1fe37792c 100644 --- a/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeTest.java +++ b/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeLivenessReadinessProbeIT.java @@ -29,7 +29,7 @@ import org.alfresco.transform.base.LivenessReadinessProbeTest; -public class LibreOfficeLivenessReadinessProbeTest extends LivenessReadinessProbeTest { +public class LibreOfficeLivenessReadinessProbeIT extends LivenessReadinessProbeTest { @Override protected ImagesForTests getImageForTest() { return new ImagesForTests("alfresco-libreoffice", "text/plain", "application/pdf", "original.txt"); diff --git a/engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeTest.java b/engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeIT.java similarity index 94% rename from engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeTest.java rename to engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeIT.java index 50b104b29..1d772a37f 100644 --- a/engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeTest.java +++ b/engines/misc/src/test/java/org/alfresco/transform/misc/MiscLivenessReadinessProbeIT.java @@ -29,7 +29,7 @@ import org.alfresco.transform.base.LivenessReadinessProbeTest; -public class MiscLivenessReadinessProbeTest extends LivenessReadinessProbeTest { +public class MiscLivenessReadinessProbeIT extends LivenessReadinessProbeTest { @Override protected ImagesForTests getImageForTest() { return new ImagesForTests("alfresco-transform-misc", "text/plain", "text/plain", "original.txt"); diff --git a/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeTest.java b/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeIT.java similarity index 93% rename from engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeTest.java rename to engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeIT.java index a26b51d12..5a16b4556 100644 --- a/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeTest.java +++ b/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererLivenessReadinessProbeIT.java @@ -29,7 +29,7 @@ import org.alfresco.transform.base.LivenessReadinessProbeTest; -public class PdfRendererLivenessReadinessProbeTest extends LivenessReadinessProbeTest { +public class PdfRendererLivenessReadinessProbeIT extends LivenessReadinessProbeTest { @Override protected ImagesForTests getImageForTest() { return new ImagesForTests("alfresco-pdf-renderer", "application/pdf", "image/png", "quick.pdf"); diff --git a/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeIT.java similarity index 94% rename from engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java rename to engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeIT.java index a382fa780..dddb9e1e0 100644 --- a/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeTest.java +++ b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaLivenessReadinessProbeIT.java @@ -30,7 +30,7 @@ import org.alfresco.transform.base.LivenessReadinessProbeTest; -public class TikaLivenessReadinessProbeTest extends LivenessReadinessProbeTest { +public class TikaLivenessReadinessProbeIT extends LivenessReadinessProbeTest { @Override protected ImagesForTests getImageForTest() { return new ImagesForTests("alfresco-tika", "text/plain", "text/plain", "original.txt");