From 94908d5ee2fd2ff9f35167bd651058d2543823f0 Mon Sep 17 00:00:00 2001 From: DemchaAV Date: Wed, 5 Aug 2026 20:20:38 +0100 Subject: [PATCH] fix(templates): Timeline Minimal renders the whole CV MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The preset dropped content three ways, none of them visible in the output. Per-module caps kept the first few lines of each block and discarded the rest, so a fourth degree or a third employer was simply never drawn — on a page the fixed-height axis left looking four-fifths used. Prose was cut at a character count, ending a summary mid-sentence with an ellipsis while the column still had room. And sections were matched to modules by title keyword, first hit wins: a second prose section was shadowed by the first, a section whose title matched nothing was never looked at, and the ones that did match were relabelled, so "Projects" printed as EXPERTISE and "Additional Information" as LANGUAGES. Everything the document carries is now rendered. SectionAllocation hands each section out once and returns what no module claimed, which lands in the main column under its own heading; headings come from the section's own title, leaving the preset's labels for a module that matched nothing. Content past one page continues on the next. The body is a row and a row is atomic — only List, Paragraph and Table implement NodeDefinition.split, so the paginator cannot break inside one and a too-tall row raises AtomicNodeTooLargeException rather than flowing. ColumnPagination therefore estimates each column's height from its width and the theme's font metrics, and the preset emits one row per page, letting each finished row overflow naturally. The axis keeps its full height on the opening page and follows the content on a continuation page. What the masthead takes off the budget is measured from the identity, since the contact stack grows a row per link. The nine other slot presets still match by keyword and still discard what does not match; they are untouched here. --- CHANGELOG.md | 29 ++ .../examples/cv-timeline-minimal-v2.pdf | Bin 37590 -> 47126 bytes .../cv/v2/CvTimelineMinimalExample.java | 9 +- .../cv/components/SectionAllocationTest.java | 133 +++++++ .../cv/presets/ColumnPaginationTest.java | 164 +++++++++ .../TimelineMinimalContentFidelityTest.java | 226 ++++++++++++ .../cv-v2-layered/timeline_minimal-page-0.png | Bin 73907 -> 103773 bytes .../cv-v2-layered/timeline_minimal-page-1.png | Bin 0 -> 17271 bytes .../cv/components/SectionAllocation.java | 131 +++++++ .../cv/presets/ColumnPagination.java | 211 +++++++++++ .../templates/cv/presets/TimelineMinimal.java | 342 +++++++++++++----- 11 files changed, 1158 insertions(+), 87 deletions(-) create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/cv/components/SectionAllocationTest.java create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/cv/presets/ColumnPaginationTest.java create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/cv/presets/TimelineMinimalContentFidelityTest.java create mode 100644 qa/src/test/resources/visual-baselines/cv-v2-layered/timeline_minimal-page-1.png create mode 100644 templates/src/main/java/com/demcha/compose/document/templates/cv/components/SectionAllocation.java create mode 100644 templates/src/main/java/com/demcha/compose/document/templates/cv/presets/ColumnPagination.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ce9535dd..9f2e6642a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,35 @@ All notable changes to GraphCompose are documented here. Versions follow semantic versioning; release dates are ISO 8601. +## v2.1.2 — Planned + +### Templates + +- **Timeline Minimal renders the whole CV.** The preset used to drop content three + ways, none of them visible in the output. Per-module caps kept the first few lines + of each block and discarded the rest, so a fourth degree or a third employer simply + was not drawn — on a page that the fixed-height axis left looking only four-fifths + used. Prose was cut at a character count, ending a summary mid-sentence with an + ellipsis while the column still had room. And sections were matched to modules by + title keyword, taking the first hit for each category: a second prose section was + shadowed by the first, a section whose title matched nothing — a user's own + "Awards" or "Publications" — was never looked at, and the ones that did match were + relabelled, so "Projects" printed as EXPERTISE and "Additional Information" + printed as LANGUAGES. + + Everything the document carries is now rendered. Headings come from the section's + own title, with the preset's label left only for a module that matched nothing. + Content past one page continues on the next: the body is a row, and a row is + atomic — the paginator cannot break inside one — so the preset estimates its + columns' heights from the column width and font metrics, emits one row per page, + and lets each finished row overflow naturally. The axis keeps its full height on + the opening page and follows the content on a continuation page. + +- **New `SectionAllocation` for CV presets.** Hands each section out once and + returns what no module claimed, which is what `SectionLookup.firstMatching` alone + cannot express. The remaining CV presets still slot by keyword and still discard + what does not match; they are unchanged here. + ## v2.1.1 — 2026-08-05 ### Build diff --git a/assets/readme/examples/cv-timeline-minimal-v2.pdf b/assets/readme/examples/cv-timeline-minimal-v2.pdf index 3840770768c7af03b1990069552207c501c18cd4..08b894964b21741b1c9b39175180cc6ba7fdaa6f 100644 GIT binary patch delta 42227 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 W!inuLaIBonY)mlZ4FF#iLyqD{a6 diff --git a/examples/src/main/java/com/demcha/examples/templates/cv/v2/CvTimelineMinimalExample.java b/examples/src/main/java/com/demcha/examples/templates/cv/v2/CvTimelineMinimalExample.java index a3e031cc3..7fe9467b8 100644 --- a/examples/src/main/java/com/demcha/examples/templates/cv/v2/CvTimelineMinimalExample.java +++ b/examples/src/main/java/com/demcha/examples/templates/cv/v2/CvTimelineMinimalExample.java @@ -16,8 +16,13 @@ * grouped skills sample data — spaced uppercase Barlow Condensed * name, right-aligned contact stack with PNG icons, and the central * vertical timeline axis (4 segments / 3 circles) separating the - * sidebar (Education / Skills / Expertise / Languages) from the main - * column (Professional Profile / Work Experience). + * sidebar from the main column. + * + *

Module headings come from the sample's own section titles, so the + * sidebar reads Education & Certifications / Technical Skills / + * Projects and the main column Professional Summary / Professional + * Experience. The sample carries more than one page of content: the + * remainder continues on page two, where the axis shortens to match.

* *

Output: * {@code examples/target/generated-pdfs/templates/cv/cv-timeline-minimal-v2.pdf}.

diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/components/SectionAllocationTest.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/components/SectionAllocationTest.java new file mode 100644 index 000000000..fb0a999d8 --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/components/SectionAllocationTest.java @@ -0,0 +1,133 @@ +package com.demcha.compose.document.templates.cv.components; + +import com.demcha.compose.document.templates.cv.data.CvSection; +import com.demcha.compose.document.templates.cv.data.EntriesSection; +import com.demcha.compose.document.templates.cv.data.ParagraphSection; +import com.demcha.compose.document.templates.cv.data.RowStyle; +import com.demcha.compose.document.templates.cv.data.RowsSection; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +/** + * {@link SectionAllocation} hands each section out once and keeps the rest. + * + *

The behaviour worth pinning is what a preset built on + * {@link SectionLookup#firstMatching} could not do: notice that a section was + * never asked for, and tell two sections apart when both answer to the same + * keywords.

+ */ +class SectionAllocationTest { + + private static final ParagraphSection SUMMARY = + new ParagraphSection("Professional Summary", "Builds pipelines."); + private static final ParagraphSection PROFILE = + new ParagraphSection("Profile", "A second prose block."); + private static final RowsSection AWARDS = + RowsSection.builder("Awards", RowStyle.PLAIN) + .row("Rising Star", "2019") + .build(); + + @Test + void claimReturnsTheFirstMatchInDocumentOrder() { + SectionAllocation allocation = SectionAllocation.of( + List.of(SUMMARY, PROFILE, AWARDS)); + + assertThat(allocation.claim(List.of("summary", "profile"))) + .isSameAs(SUMMARY); + } + + @Test + void aClaimedSectionIsNotHandedOutTwice() { + SectionAllocation allocation = SectionAllocation.of( + List.of(SUMMARY, PROFILE)); + + CvSection first = allocation.claim(List.of("summary", "profile")); + CvSection second = allocation.claim(List.of("summary", "profile")); + + assertThat(first).isSameAs(SUMMARY); + assertThat(second) + .describedAs("the second module must see the second section, " + + "not the one already spoken for") + .isSameAs(PROFILE); + } + + @Test + void remainingKeepsWhatNoModuleAskedForInDocumentOrder() { + SectionAllocation allocation = SectionAllocation.of( + List.of(SUMMARY, AWARDS, PROFILE)); + allocation.claim(List.of("summary")); + + assertThat(allocation.remaining()) + .describedAs("an unclaimed section is the one a keyword-only " + + "preset loses without trace") + .containsExactly(AWARDS, PROFILE); + } + + @Test + void remainingIsEmptyOnceEverySectionIsSpokenFor() { + SectionAllocation allocation = SectionAllocation.of(List.of(SUMMARY)); + allocation.claim(List.of("summary")); + + assertThat(allocation.remaining()).isEmpty(); + } + + @Test + void anEmptySectionIsNotOfferedAsLeftoverWork() { + CvSection empty = EntriesSection.builder("Publications").build(); + SectionAllocation allocation = SectionAllocation.of(List.of(SUMMARY, empty)); + + assertThat(allocation.remaining()) + .describedAs("rendering a heading with nothing under it is worse " + + "than skipping the section") + .doesNotContain(empty); + } + + @Test + void claimReturnsNullWhenNothingMatches() { + SectionAllocation allocation = SectionAllocation.of(List.of(SUMMARY)); + + assertThat(allocation.claim(List.of("references"))).isNull(); + assertThat(allocation.remaining()).containsExactly(SUMMARY); + } + + @Test + void nullInputsAreToleratedTheWayPresetCallSitesExpect() { + SectionAllocation allocation = SectionAllocation.of(null); + + assertThat(allocation.remaining()).isEmpty(); + assertThat(allocation.claim(List.of("summary"))).isNull(); + assertThat(SectionAllocation.of(List.of(SUMMARY)).claim(null)).isNull(); + } + + @Test + void theSectionsOwnTitleWinsOverThePresetsLabel() { + assertThat(SectionAllocation.titleOr(SUMMARY, "Profile")) + .isEqualTo("Professional Summary"); + } + + @Test + void thePresetsLabelIsUsedOnlyWhenNoSectionMatched() { + assertThat(SectionAllocation.titleOr(null, "Languages")) + .isEqualTo("Languages"); + } + + @Test + void aBlankTitleCannotReachTheLabelBecauseTheDataRejectsItFirst() { + assertThatThrownBy(() -> new ParagraphSection(" ", "body")) + .describedAs("titleOr has no blank branch precisely because " + + "this constructor makes one unreachable") + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("blank"); + } + + @Test + void aMissingFallbackLabelIsARejectedArgument() { + assertThatThrownBy(() -> SectionAllocation.titleOr(SUMMARY, null)) + .isInstanceOf(NullPointerException.class) + .hasMessageContaining("fallback"); + } +} diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/ColumnPaginationTest.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/ColumnPaginationTest.java new file mode 100644 index 000000000..ba6d71243 --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/ColumnPaginationTest.java @@ -0,0 +1,164 @@ +package com.demcha.compose.document.templates.cv.presets; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Timeout; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.IntStream; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +/** + * {@link ColumnPagination} decides page boundaries without losing lines. + * + *

The property that matters is conservation: a preset reached for this + * because dropping the overflow is the bug it replaced, so every case below + * checks that what went in comes back out, whatever the budget.

+ */ +class ColumnPaginationTest { + + /** A sidebar-shaped column: 148pt wide, 7.5pt body, 12.5pt heading. */ + private static ColumnPagination sidebar() { + return ColumnPagination.forColumn(148.0, 7.5, 1.0, 12.5, 22.0); + } + + private static ColumnPagination.Block block(String title, String... lines) { + return new ColumnPagination.Block(title, List.of(lines), false); + } + + private static List allLines(List> pages) { + List flat = new ArrayList<>(); + for (List page : pages) { + for (ColumnPagination.Block block : page) { + flat.addAll(block.lines()); + } + } + return flat; + } + + @Test + void aColumnThatFitsStaysOnOnePage() { + List> pages = sidebar().paginate( + List.of(block("Education", "MSc", "BEng")), 600.0); + + assertThat(pages).hasSize(1); + assertThat(pages.get(0)).hasSize(1); + assertThat(pages.get(0).get(0).lines()).containsExactly("MSc", "BEng"); + } + + @Test + void everyLineSurvivesHoweverManyPagesItTakes() { + List lines = IntStream.range(0, 60) + .mapToObj(i -> "entry " + i).toList(); + + List> pages = sidebar().paginate( + List.of(new ColumnPagination.Block("Skills", lines, false)), 200.0); + + assertThat(pages.size()) + .describedAs("60 lines cannot fit a 200pt page") + .isGreaterThan(1); + assertThat(allLines(pages)) + .describedAs("conservation is the whole point — the previous " + + "behaviour kept a prefix and dropped the rest") + .containsExactlyElementsOf(lines); + } + + @Test + void aBlockCarriedAcrossPagesRepeatsItsHeading() { + List lines = IntStream.range(0, 40) + .mapToObj(i -> "entry " + i).toList(); + + List> pages = sidebar().paginate( + List.of(new ColumnPagination.Block("Skills", lines, false)), 200.0); + + assertThat(pages).allSatisfy(page -> + assertThat(page).allSatisfy(block -> + assertThat(block.title()) + .describedAs("a continuation without its heading " + + "reads as part of the block above it") + .isEqualTo("Skills"))); + } + + @Test + void aBlockThatDoesNotFitTheRemainderStartsTheNextPageWhole() { + ColumnPagination column = sidebar(); + // Sized so the first block fills most of the page and the second + // cannot start on what is left. + List> pages = column.paginate( + List.of(block("First", "a", "b", "c", "d", "e", "f"), + block("Second", "x", "y", "z")), + 140.0); + + assertThat(pages.size()).isGreaterThan(1); + List secondBlockPieces = pages.stream() + .flatMap(List::stream) + .filter(b -> b.title().equals("Second")) + .toList(); + assertThat(secondBlockPieces) + .describedAs("the second block should move whole rather than " + + "leave one orphaned line under a heading at the foot") + .hasSize(1); + assertThat(secondBlockPieces.get(0).lines()).containsExactly("x", "y", "z"); + } + + @Test + @Timeout(5) + void aBudgetTooSmallForEvenAHeadingStillTerminatesAndKeepsEveryLine() { + List lines = List.of("a", "b", "c"); + + List> pages = sidebar().paginate( + List.of(new ColumnPagination.Block("Skills", lines, false)), 1.0); + + assertThat(allLines(pages)) + .describedAs("a degenerate budget must not spin forever, and " + + "must not resolve the deadlock by discarding lines") + .containsExactlyElementsOf(lines); + } + + @Test + void anEmptyColumnStillYieldsOnePage() { + assertThat(sidebar().paginate(List.of(), 600.0)).hasSize(1); + assertThat(sidebar().paginate(List.of(), 600.0).get(0)).isEmpty(); + } + + @Test + void aLongLineCountsAsTheSeveralItWrapsTo() { + ColumnPagination column = sidebar(); + // 148pt at 7.5pt ≈ 41 characters per rendered line. + assertThat(column.wrappedLines("short")).isEqualTo(1); + assertThat(column.wrappedLines("x".repeat(41))).isEqualTo(1); + assertThat(column.wrappedLines("x".repeat(42))).isEqualTo(2); + assertThat(column.wrappedLines("x".repeat(130))).isEqualTo(4); + } + + @Test + void anEmptyLineStillOccupiesOne() { + assertThat(sidebar().wrappedLines("")).isEqualTo(1); + assertThat(sidebar().wrappedLines(null)).isEqualTo(1); + } + + @Test + void aWiderColumnWrapsLater() { + ColumnPagination main = ColumnPagination.forColumn(348.0, 7.8, 1.2, 13.5, 24.0); + + assertThat(main.wrappedLines("x".repeat(90))) + .describedAs("the main column is more than twice the sidebar's " + + "width, so the same text wraps to fewer lines") + .isLessThan(sidebar().wrappedLines("x".repeat(90))); + } + + @Test + void aColumnWithNoWidthOrNoFontIsRejected() { + assertThatThrownBy(() -> ColumnPagination.forColumn(0, 7.5, 1.0, 12.5, 22.0)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("must be positive"); + assertThatThrownBy(() -> ColumnPagination.forColumn(148.0, 0, 1.0, 12.5, 22.0)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("must be positive"); + assertThatThrownBy(() -> ColumnPagination.forColumn(148.0, 7.5, 1.0, -1, 22.0)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("must be positive"); + } +} diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/TimelineMinimalContentFidelityTest.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/TimelineMinimalContentFidelityTest.java new file mode 100644 index 000000000..a0bfc2f77 --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/TimelineMinimalContentFidelityTest.java @@ -0,0 +1,226 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.GraphCompose; +import com.demcha.compose.document.api.DocumentSession; +import com.demcha.compose.document.api.DocumentPageSize; +import com.demcha.compose.document.style.DocumentInsets; +import com.demcha.compose.document.templates.api.DocumentTemplate; +import com.demcha.compose.document.templates.cv.data.CvDocument; +import com.demcha.compose.document.templates.cv.data.CvIdentity; +import com.demcha.compose.document.templates.cv.data.CvSection; +import com.demcha.compose.document.templates.cv.data.EntriesSection; +import com.demcha.compose.document.templates.cv.data.ParagraphSection; +import com.demcha.compose.document.templates.cv.data.RowStyle; +import com.demcha.compose.document.templates.cv.data.RowsSection; +import com.demcha.compose.document.templates.cv.data.SkillsSection; +import org.apache.pdfbox.Loader; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.text.PDFTextStripper; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * A CV rendered through Timeline Minimal keeps every entry it was given. + * + *

A preset that drops content is worse than one that fails: the PDF looks + * finished, the page is not obviously full, and the reader has no way to know + * a job, a degree, or a whole section was never drawn. The three ways this + * preset used to lose data are each pinned here, because each is silent.

+ * + *

The fixture is deliberately denser than a one-page CV. Content that does + * not fit belongs on page two — the engine paginates — not in the bin.

+ */ +class TimelineMinimalContentFidelityTest { + + @Test + void everyEntryOfADenseCvSurvivesIntoThePdf() throws Exception { + String text = renderText(TimelineMinimal.create(), denseDocument()); + + // Tail entries of each module: the ones a per-module cap dropped first. + assertThat(text) + .describedAs("every education entry must reach the page; the 4th " + + "was the first casualty of the 5-line sidebar cap") + .contains("MSc Computer Science") + .contains("University of Leeds") + .contains("Cloud Architect") + .contains("BSc Hydraulic Engineering"); + + assertThat(text) + .describedAs("every employer must reach the page") + .contains("Acme Rendering") + .contains("Northwind Data") + .contains("Nikoplast"); + + assertThat(text) + .describedAs("every project must reach the page") + .contains("GraphCompose") + .contains("Ledger Sync") + .contains("Spring Cart API"); + + assertThat(text) + .describedAs("every skill group must reach the page") + .contains("Languages") + .contains("Frameworks") + .contains("AssertJ") + .contains("Build") + .contains("Datastores") + .contains("Messaging") + .contains("Observability") + .contains("Kubernetes"); + } + + @Test + void aSectionMatchingNoKnownCategoryIsStillRenderedUnderItsOwnTitle() throws Exception { + String text = renderText(TimelineMinimal.create(), denseDocument()); + + // Headings render in caps, so compare without case. + assertThat(text) + .describedAs("an arbitrary section title matched none of the preset's " + + "keyword lists and was discarded without a trace") + .containsIgnoringCase("Awards") + .contains("Rising Star"); + } + + @Test + void aSecondSectionOfAKnownCategoryIsNotSwallowedByTheFirst() throws Exception { + String text = renderText(TimelineMinimal.create(), denseDocument()); + + assertThat(text) + .describedAs("firstMatching consumed only the first title matching " + + "the summary keys, so the second prose section vanished") + .containsIgnoringCase("Open Source") + .contains("Maintains a document engine"); + } + + @Test + void proseIsNotCutWithAnEllipsisWhileThePageStillHasRoom() throws Exception { + String text = renderText(TimelineMinimal.create(), denseDocument()); + + assertThat(text) + .describedAs("the summary was clipped mid-sentence by a character " + + "budget rather than by what actually fits") + .contains("closing sentence of the profile"); + } + + @Test + void aCvWithATallContactStackStillRendersEveryEntry() throws Exception { + // The masthead grows a line per contact and per link, and the body + // budget is what is left of the page after it. Thirteen contact rows + // is far past anything the other fixtures exercise; the pagination has + // to absorb that without dropping content at either end. + CvIdentity.Builder identity = CvIdentity.builder() + .name("Jane", "Doe") + .jobTitle("Backend Engineer") + .contact("+44 0", "j@d.com", "London"); + for (int i = 1; i <= 10; i++) { + identity.link("Profile " + i, "https://example.com/" + i); + } + + CvDocument doc = CvDocument.builder() + .identity(identity.build()) + .sections(denseDocument().sections().toArray(new CvSection[0])) + .build(); + + String text = renderText(TimelineMinimal.create(), doc); + + assertThat(text) + .describedAs("the body has to give way to the taller masthead " + + "without losing what it was holding") + .contains("BSc Hydraulic Engineering") + .contains("Nikoplast") + .containsIgnoringCase("Awards"); + } + + private static String renderText(DocumentTemplate template, + CvDocument doc) throws Exception { + byte[] pdf; + try (DocumentSession session = GraphCompose.document() + .pageSize(DocumentPageSize.A4) + .margin(DocumentInsets.of(TimelineMinimal.RECOMMENDED_MARGIN)) + .create()) { + template.compose(session, doc); + pdf = session.toPdfBytes(); + } + try (PDDocument document = Loader.loadPDF(pdf)) { + // Collapse the layout's own line breaks: this asks whether a + // phrase reached the page at all, and where the engine chose to + // wrap it is the visual regression tests' business, not this + // test's. Ligatures are a separate matter — PDFBox drops the + // glyph for "ft"/"ti"/"fk", so "Software" extracts as "So ware"; + // the assertions below stay clear of those letter pairs. + String text = new PDFTextStripper().getText(document); + return text.replaceAll("\\s+", " "); + } + } + + /** + * Four education entries, three employers, three projects, eight skill + * groups, a second prose section, and a section whose title matches none + * of the preset's keyword lists. + */ + private static CvDocument denseDocument() { + return CvDocument.builder() + .identity(CvIdentity.builder() + .name("Jane", "Doe") + .jobTitle("Backend Engineer") + .contact("+44 0", "j@d.com", "London") + .link("GitHub", "https://github.com/jane") + .build()) + .sections( + // Comfortably past the 245-character budget the preset + // used to clip prose at, so the closing words are only + // present if nothing clipped them. + new ParagraphSection("Professional Summary", + "Builds reliable document pipelines across the JVM, " + + "with a decade spent on rendering, layout and the " + + "unglamorous parts of typesetting that decide " + + "whether a page is readable rather than merely " + + "correct, from hyphenation and widow control to " + + "the way a table behaves when it meets the foot " + + "of a page. This is the " + + "closing sentence of the profile."), + new ParagraphSection("Open Source", + "Maintains a document engine used in production."), + SkillsSection.builder("Technical Skills") + .group("Languages", "Java 21", "Kotlin") + .group("Frameworks", "Spring Boot", "Quarkus") + .group("Testing", "JUnit 5", "AssertJ") + .group("Build", "Maven", "Gradle") + .group("Datastores", "PostgreSQL", "Redis") + .group("Messaging", "Kafka", "RabbitMQ") + .group("Observability", "Micrometer", "Grafana") + .group("Cloud", "AWS", "Kubernetes") + .build(), + EntriesSection.builder("Education & Certifications") + .entry("MSc Computer Science", + "University of Manchester", "2019-2021", "") + .entry("BEng Software Engineering", + "University of Leeds", "2015-2019", "") + .entry("Cloud Architect Certification", + "AWS", "2022", "") + .entry("BSc Hydraulic Engineering", + "Kyiv Polytechnic", "2011-2015", "") + .build(), + RowsSection.builder("Projects", RowStyle.BULLETED_STACKED) + .row("GraphCompose", "Declarative PDF layout engine.") + .row("Ledger Sync", "Double-entry reconciliation service.") + .row("Spring Cart API", "Storefront checkout backend.") + .build(), + EntriesSection.builder("Professional Experience") + .entry("Senior Engineer", "Acme Rendering", + "2021-2024", "Built rendering services.") + .entry("Engineer", "Northwind Data", + "2018-2021", "Owned the ingestion pipeline.") + .entry("Junior Engineer", "Nikoplast", + "2015-2018", "Maintained the order system.") + .build(), + RowsSection.builder("Awards", RowStyle.PLAIN) + .row("Rising Star", "Engineering award, 2019") + .build(), + RowsSection.builder("Additional Information", RowStyle.PLAIN) + .row("Languages", "English, German") + .build()) + .build(); + } +} diff --git a/qa/src/test/resources/visual-baselines/cv-v2-layered/timeline_minimal-page-0.png b/qa/src/test/resources/visual-baselines/cv-v2-layered/timeline_minimal-page-0.png index d075ab258c2dc8157a344e275d420be4e18b07c2..d010bdaaf56d30e83926daa0256d8b7513067ca6 100644 GIT binary patch literal 103773 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 YpYK$n)*Po9kfFb9p*dI;Qr)8d35P&UT>t<8 literal 73907 zcmd43WmMEr+c%1IcZYO$NT>`A0z-p@q=1AdE#Uy7bi;szl%#|pN(s_AfHcxlLrV=H z3?Q7%eLwG7XFVU!`EbrR)`-lW{lE5g{c2CNzODudAtNCM1_p`dBUM8T3``>o3@lB2 zOz=u6gUDYDj5ipXs!GQG)_-!&{AlFr>)YCPhbtdEU##00&Y2(~(V39?_>n+oSZ)Hz z{K9Lv1DRc@DLtzShl?Yy?Nd5VWc8ERgRRpnoVgd!Xy zGNDtNH=>NT;0K-w8DY-6+tY1!h4G9x`R*DT z8P&<#w!iuDN&!IteEjpRJ8vF}R>kS#IR*FRLaIaa_p*qN$0J6LjBYrDB@vvZZQ4tMyUPe{YF zRB8V0U?SifQAmh%qRHE~tf2T8?XeGmXvDpvL|K=>@hAy^e#(BQ}#s6(D!8@gJYl~R_ zi24xTaCUxVpX~nc;krYx`V^*tA|vw_Tgaps!KsZHf!daWOmE$%(xME}zVNG{jvl zM(dtWTek%2e2~_WdAPO(9wYK0dl3#1?P%(lzgjWsoXf4+@;hp-?)jL1aqKo3fv8mz z^`Ze3`YOu&>e-)UP7Qp~7q5(Ti;IfRE%GxZo%ZMIDux6xPP91`0#IB{UD1%f-wcw^ zRQ<5;puY)b7_9M$L8cRD{n;-t{uZPcZ+(CiHSw5_%5qu0gKfI$sP84l=cC@AeU79G>b6;q@ z!>O115V7@m_|M#rfa6BbHL-iLv0=7h)z&SHjeV~Dcs63jNg+fDF);hyxaj>$;vjxh zN5IttE(xQmA2p2*gLk=6sqW9Ld$Y?j31h_BnU7PV)Z^%r^YU2Ztv-z#>g3$7>)uF+ zqAEM*US;P9jNn-M?#;_wHQ=@16`Chdg5P>*{quv2Xt08uP%$QAj71m9<2w0C3A>zu zbOeE5KkQ=-DH@FEYRRZm)mpt5fI>R|QI5YWf1h#QH*GwI?r~sX(<<*@3MV+?gxd!^ z{PU7BXiLaVtII^m>F#tNR1F;BYbXjF=Q!EZohf_kcALgJ-`&ShvBTz&n_#I|AG^gE zIhytHNSV)1r)>x<8$Im6i>W*5Ho-?_%Yr?eNzs~8uf$m(Ff-f+@6F+{pdKVb#{KsX z4}VNV+no8a2=vE(+6U9N4S>qmEJ{t zdp=#|u{@M1Nsz4&5)A&BII$oD>5o@?bAC%fk!$B0KRGS#;_eDcM{AlLY&ui_A7Vj5SKDV>?i;7sFakHs4w7%dn|(^NKmxD(*8xY z_4?nXhF^DDzu(p4os1Z;zSa zt8kK=M8$l1QsN5L2%PZVe+%EelRe66jl;EZ`#`g3Wt}a78uhSM#rXPiv1zf% zmk9!srOJ_DQ3Z2FzyQ2^@HN_LRW&!ay&}G+rSmak7uZ>ibI`&$Rt#Or?)&XS{jWA3 zqmGZCPnClXD{A#mTT?T-mruYzb($+H@0t}qU_#R(%Z77XF9waDgZHWxg-@km2 z#I6$4D^P%);tmc1HV-#(f+@P<{t*LtftGNDaoq{%l;h9~ryVBtyxg9x(T^%% z2Plnj);X6l#OnIuB4&TFopIXYT3`DluMYzex2Z^ixF@S~W*_4(S;_1}iUbWx47 zp!#wFwCi+L%cRS2wp>f#so^8$!D~6>^Iw$=YH7(dPuJQ!`A{p7HS+$4w)NXoO3H}H zGnGZKxQ9=>@xPez6bz`ea%v=WE2l$wp&9K<=dnCdFtDq;CVb3&ln*@3I9R>$bCh^! z#e^RJiX{Zyv~y&Q{Gx)6eZcap-J$&P(-ZV`Rw#qLRz(H&zQHS=vbzePQ%gP@nrZap z^!ABkYRf1oD&k6H(3g3+Ae*u~L9z>~^Q!|vTbO+DIJ<_8dQO_ zd|oOy5&ZXJy2>hZMDP7M&+AOVHR=#}jyX}w!{N&)CA+~(Qz0Mj%oSs)_Xy+9J(CLx z!Xp`-w9znf&tH}1M06r29!-7+cONqf{X6Pom30E6h?o2<7G2A+{9gD;J#ll)S+9*) z!2W{V=bUciyOVZ$s>;_Xz*n=Z4f2` zuDlJ$YMZtQ2AwP^{^J6hfc{8EnU`1p&X(E$8v1v6cJKMG6KWwH4p!d5wsz~1E;{NI zy)zyD0MH9PpOk4!SsRGs2MKiBE?3i1N@YSbcpBfP<0>DH1JGDw*A)TKBxS!xuX5+Z zY-v3Rfqh-j<*Ul7cJG_(AcfCuV5ER2+fhpUbOB(oT>00%iL7J|U%!6!nDjs);{nD< zv?A{P5*~2*_j5nqVH88-r3Ag97x{;p$fEHF-OLr;>op!OY&M(2IciJT0(X#w5k1p? z&c~6*#9f8eMx~^9F$dzt8L+0yb%iR5#s|=Qu9JLwY3O`DG^UK{s%V%l8yZG75!5HU zo<5)nS?{&HMRsmt{IR`!;-D$2Onku`{winYao-OBH@xfB(7|&?HtlB`&)+sr>0LlW`&u(pMQwm4qR$oe!5g zg6HCsiAA+n5q(lt70>NN9)Gq7hnIe!PD&xSY;Vu}N69*cTSM%<9QjS@IwQ+>_g9+S zm}nxUB81_B->4)EOE4a$v?82$?(RpU$DO7LSyUxfcv#TY^U*}9fsZt#<4@Vd7gp;hP|rq zI$fj*KWW!q7SW)$}ug=#J{rykql zI#`XJMD}#hG6KsbpHh?R{auGdW0mS;G_O`ng>08>`XNCi+i*-)kCCQDNf;>wK{~Q3 zjju!-d`e1mXLX6V90wAN%_#0Hm@}9@HD4`%ua;?1w;Wy`v>kwH)bMfauHN_HmT&_#D}ILa&coJ>yCe|QK4>ects4Gu=tF(Vy362PXg=nZ9@`PM$m&%H` zgOzCR7O^b`Bvh*=SLf&Fd#?5ReC&VcWPOWGe=kqcJ(@V9yhj3B)RZa#n~lEzJu*pb z0a_7Dz6Us6s|rCF5>Fal>I~5eTMXqq@B>6x)=<1b>{)iHUyP)X$8+q-Dys*>T}N7K z1pgjPn?Y$LU;+0FmO^fFWLJDixF|dUU~&53AuX*YoyZhED+x=c@M!D+t zYkcE}%_nuEKTcGk(J|jJOLI@6Ewg^%jEGn@g<*9yU!3mJEmB}ZMW6l+dIk7Kv=%+O z2vGDjGuX~I88O^K*yZ27^PyXs58pmcv;B|qfjG(3($@a)Bxdy?!Yr5pefw{*yMPwJ zdG$nstM69=@!&koWpJ`9l1$t3r~;bovD6wANy>r}gax+(`np4Rbpx4J7kYwO=&;?&Lwhk{Yhu>|A3*dw5rR2wF zrwAP!fWL6eDRh++GV=09ZlT}I@@QaQPB!8gG!NsSaJ^y@g_k-}ZE&^gKf)db34l?u zhsF1+EK+~9YJMgE`fuEVY@r*NqX#oJg%H*wx<F6LfS)`g^X_pE9Ih%mDyf0?ouU zwjBZLON0ATtJ6p>nE0Z;c~)I(=6`CRPm9ot*>z%@-Fr4fPnHOXG{9}g0ISL-H!1~k zWWm@bfaLJ%&rFB(5EBp<00kMzmDjFk_S~5)!*E&Y3{O&Dg0_2GeD~sRL)HfzKf?s| zlbM|j?FS&KgDKgx(yRs?aweIV`WVu(9FBJ%yb{8A^2PQ}xFrBxIOJ#y`np04i%*gs zgVj)=1p$mzR#rwQVrhE-*nYI8a0D^KSGz9UxzJT^Zf*mkrN?eYT&O<_-@k=Sl0pGl zOM^aod8?0<2(TrSiRx64vd9Ng&nQv^VNz9XU9O?fY(D|H?;s-{?fmdXNpG+#4h+&Y z$s;<_P{VP6XQLeylh2p2mA`yG8;A;6?T+qvho?e8jvpCCP;=M|W-@NWBW(eBX3}`u z6p^si3Km%p+wmgJR1Gnp3elGVh@nx#&bl%gtC&n?+-3TeQT%CG_GHlIUvxuTRCV7V zC?c}cQ;vJSNWNO!bJN=VBv@$kpILzPV2()(Umdm49qN!~^fKcABb> zcijU1{>f}*B7B|ywklj%C*uzM4Ku^4|N6!TC2K!LW?SQ9UcKC~sCN=y(=7qBA&P+I2*JkO%qMB?DQl*!9E1qHC@Cq~ zKqB9W)K5%I@V{}rV_8T0>fFT5!X9*A|Egq@fK2Q-mIv?G7;hU#86iGd^+Q3-V3(Db zn0NiL)D*2;Vy)9On&uctbi$UmmTs=kC`~_M>;XmYW>=xu*zSM&4H4@jJ=0*x&JR~! z&l827)K`M%zNck)wVpr7|G)KEEe!Pd`1ncuAD}zPhg@fqv=K|SiiPN9%ThEBF2qCt zGQQrR=?nG{%quWQ6V5^DoUMr3v|8@Gtbznxq{dfPR<>J}{&fL@W*eA6Sa_s-&vbQ3 z<@5j>?TMiQCr>Wu;snfum%o1?M7(6Zkoe-7t8ny#KBo{Hv>Z) zbaN(vSwSDm3%=L}az%|9@r-l&_0HuBfH{D0sr}iajt83IvC@gtiAPM|E^S$9R5~0* z!5NHRPdBM}3=U-S6VMI-gL-|sV^VOsJ)yxG|G;<0c-fiJ+vb$>MPOhcApASi)npA% z_n%-F-5#E`-uO+Rx`4$3*Z?%$JgeR5YF5yKf$D2yXehgYU0SG-`1Ls`F*lX&jLY#r zFl9k!W-9-W0xn?EC~jWN#~xe79Rc&$0-aL)EV@w)?a_Y=$mmO^cFrpjuk{5Bz@!!N zIB@$)(iB0;av#jM{^clxFHO)i0@3hdUK*ALWM1cJ15IQX8+g##gQlViepn06X$dcIDKTcNF?geXu^B0JrzaYTTPzXHXdxT|m&IG1+ z&(LbH^Y<}e87TLG`EMIZCuH`!O}YK@E?)e#HI?dCY|hD-HqFm+{G z86xn<#(s4ABNq%JEOHIhoEQ2eL6HP=6zo3=IsiVZOGxlC!VcOYa8_HTGLP&Z9Gvhg zpDE7x6Lhkb+`4nJGbKo_&2w=@Gi%5d#73A*FhTx8(0g6+&dDi17+n%-#vJIA;&6jP zbvs|6_dW`%t(A%sn17v(arY$wu3Yohlx{!Xy_jk<7IxO}phj4qkMx37-Tqe-DkTWB z=uxFA>W(Bcu`J#v0FuKLBD?$m`%6ttJ=LXQW98!xJ3QVTVY+SA2;;KA>nk)ud3#n@ zp1r>cu>AGS%{)2ph&?>AyP&4&$~y#X5xrot4FjN(B4}E*Oe(<0j)Q{(&cLr)YC z)nmy~{{eaMZKl-z$TolA&4d7V2QVD}q_E`&cV#`=|7)wc>j12GLt}c8^l!8Ozb{ok z0)Go&lqcF0FPApkyk7jroiRF1NxrRf=#=(<#<@gL{J`MgJUDZ=13H2Ed+@)&mQOk4 z{}~*Jlc{aceL?fZSC~PKgj^qkUmEkL`JX>QGYJMcK#a0>onc@Wbd&@1BxL;~;}A>^ zoR>j6KsMof26S-HU1fzCrJVJ-R5{Q$S0gt*dvm9(H|LRG&d%Cya@s;J=a)n*8_DDU zZU2v3_|~G)V+G)UV2UMcn`xKfncW=ve^81pw1*akv1mud38O zXcm|VckL{Em#l5}-b|n^9U2)40g42-%!Dk#BTQ1~-;Hz^0s4&k?AAeG>1+7mfQ$mfED+%zABXH>JK+jVg!{Z<~ zYj|n3jEC8^LX-60J*A;=*jZ|8gPcfvZ$N`G@1Rx+NLcPmd9Vq=VQwk|j)U*fZbvK~ zPr#H2ikfZ@#kv{%?H~hA(L^4fKLDj0pyfXV>w!XqA6bD0fN$9rEPtdCN6(I`2?9hl zo=N87As9i#zda5J2?=5OlRpByU#UT`ZSMT{c^NCM{8jo&K*htw&0Snl0(gKs05@Tx z7Pa_%pc^}Zii`;W9TZ@AKm%4;M9jZB03Z#-uUs&=LDLH@zM0H1u6XOBI^ zTUuPqUj(R`Z8hi%d2P;4w*PerP5JN}z$XS8=f50aS%97jxw&8ZKac2t7paNp|9rld z|L4EJ{RVcsy|*qjk5O@dE8^wtPZOp8Ul`MrimfV-jmBq;6#dhxgM;3QG(oh^mv>FV+%e7&_>!~xXq{0r1LD1uswh}MzZczeDNu9R|1FIe5X5lczBox`FC%g(EQu8pW#Gw z)O%}viNIat_5jW0@1CHyJbF- zEsDO;ypYUb@4uST0|4=WN7Vg=L&A|$byN*tSE4>+D`<&pMOgB!lnudtBQ7!PJXh-i zyo(q(khorl*`{SE0s3+QcEWZV03(7c0LiG0-r8YH^w0i9YHMjdT?6|yD!x&f+izN^ z9-l61!-#H`kB0fY0SB=rw1*B2IQZM|rEOsJ*_2*S+k_PRxu~ZlC$pn&1*CZbeI>|6 z#x+NYjw-;j4}O#ZYz;7HmF0J3d^x@%pw;BUhGrgVlb$>H%w-g2^+$T}bs@1#2|* z&}&LGm=2}6Aj;tm2=AA(hNWP8CdMPs>GhNWfb9JX=(QTeDkgQA_Th0z$CIHu+hA1O znk=m_Ia0?VIg_x_I*^uFLEr^H-ACaPqzjo-dbf z>eX22AQ$Vx)RYCGD9YeL42yT`95|u?@sV{?>c|YP!O4iJB=6n3=i>n{yDwme{2*?R z+eK4BVVnvZdJ*mYXGZ+h_V=`9DnvuzsVnIV$WlY;VGzXa0v!I%GxXt#N5*QB9>{bU zEcchT{k{X>&-bc?>xqfi+gQPbbIW%a|q z<`1U+WEal$$`B<&2A~4z{;&>KZ@6Rfttbd7#P6&1x$U}Y^*F#=D}fs4{)(2)PdFPuEK{-(B>;Lv%A#T_;Qp!ZQZQGXn?^&3j1k^GCM;cQZ;31#n64 z0u{MhjC1*Fj0!|P1`Q$}$j!|g)S&24lLt1iWHgrEgmb4PT2W<#=+OCU4^fIDk%zM0 zE$m3hu^u$QmzTbJjMdf@H~Yze^VBT)08nzUpi9$IKO~3{g$&70m3?Q)u|yWy-mlI5 znY@~GJIloVO5e;SzkeI*z>{pe0*=39iaUr)-Osk{rA&M&VWI*M!a6l9@ao)CHmoB~ z4nGo>@DUVvw2`=pW&-5zlsW;+g) zkdC;Q*DEXAFOz7yj{BhGd@T;L34K0qOvl#_Kn? zDJ@RU!u)(&u-!zoLXBSQT73H<0O@@M7!JVfb%18Zg4TZlS_9xZ6A4N5(?2sc@19yV z`S3Hhg24(HLxjpe_0d}2bIu130Pa|v+u*yPenUq?EXrb70)UC%#!x1pKo@niYg-_} z1KeWbY8TXtSm}>-|0>p3Otd)$5C|al2TMs&TpX^bV0s6yAa6hhud4fO!lo5g=6Ho^ zS_dSkf=jBB@hs!Il25=wKMak5fj7J9u1KQKbx?L{g`vHyt*vod)3vKXkt<2n3Pka& zhpDTql@HzZ2TBt3Db6s_Gu|Ik%ju7Cv@$$EaggtW&OE(o1t^InfXIMrE4~GZm7?O} z8VVh9Y=C_Z<{J(GbQ4>m;n82F9R!WVLrSU$=mS96Iq8n3qLyGLeZN{cN?~)0`g#H3 z{x?1YnsA~=RBq8hZJLo895CtQX8)sAU?o|AaSnjtb)}=KfDO>6vc&8#TO3F8l_qb8 ze3a@8K>y3FGEyL;;M)^M#Myis2XI#Noh10O{mv3hc!5@GR>@MJ3T-_gRs~au(pz>( z{?QYzznhwQhWsKC2!QxA+ah*#FYUuQZ5S%vczJtgUK@6Rdb6+7uBEXCn32DAhW%$J zeIhoG>P!{khp2Ny8^!v)pl2M672m$(^=MvN-hefl>_0LcMa~yv%;IDv~n@zY@^H#Rjn72m=Px z6+uEBvGXnV@Z`iNp~?-dotxoxpP8wan5)p1`klo@CU_7!6Cli)1;vzkkPD&}F8pFT z)8IjafxY@Ik|-wC*W-+}>|@R&V91S=fY>GQM!PTyM@GqJ z)zWRhhO>aNB261+y>i?)pHDT;>g==%%$@9s$eeZ2&9_z#y5FdDP1!%{4I3x6G;M@V zccKgWT0?Gf$8+!dYE?YP9sanP9?UHOq?9C*4H$IM_Abswx+06QrpFzAg+fJS;WPqW zh_xj_fU7Ic9fDTk3&)#GZGy)#YW{ovYSLwBD4@irvli zKPfhnRfGnWc+=G0tTwxmkx^OQv-eV@cyo=Og>7>k^dDKaW{@hrpG2wXb{@TSeG&8_ zx+&@XEBu8F6NJkXEoHfTYV;Bg_;{%2H{)-zCqTl{&?x5P1Xs1e(m?*qIjseDUZIDO z5U%5cRaJ*61CpLG-{3M9xXUXNR!H`q*wu`7J@p5X$U;pT=R2Kp!O*h>AA9(u`#JKSu zP}X8YNK>!6@5z)H$CuB;?L!gFe7MK2ZInqh?D}mYOTxH>YQhLipZ05YM?EZQI zSk4K3)*GWi8+w&{oklbk46I`|^B-}*i7PkS^pbO zmQAiJQ|t}LT1>~s{#9W*BEv8{{tXefI#x_CKuCv<(oE+N)S3aTU6*E&ab7E`YI79p zHuC1hgQuW$j4ad$MA-$%)v4Mmda0^^g<|M*@E2*MuoLqzFX4ErD@-`M&DHXcIb$a$ z>Q-yYVvK$GE>W#Mb5hpszNs>%3Ux^bN4khQzuFd9Y;#f=>lLa~u zl=xpfd{`QRfJ^YP%TdAY?W$LH0l?ip^kKRoP$blJXgUEzZp#=sRP#u!bT!P-mQ;&u zB_9Y4H)Zvgqxrmf${?5sOi!({EwZbNW&-A95uJO$3)GR#NebmLdX(JH@W@s@^YPRB znX$mvm4XjQKAHLbH?AOT6#@VUTQ>saClJwwH$dn}ROJEsP+CC1} zRo7S-bo=lWh!4O32v(e^iM1ZHi=JvH46d>w1wrL;vGxIayDs zC@5F)Dj&Uhf-*E;H`feM2KdN4rf!8 zs~pLGo=gs-cVAbcRZc@nq|>_0<557jp1hKH-tLGgKhKrGVs=`yPsm zF|PD#MrQPpuQSOo=3>{#G3Mso4uY7UaT@YTSYyMr57pz|8r;25I3`1lZU6f51%Q0! z@Nb$<%X~u$vV_8kr}@>ck4sgs!;wa&9Xnq7tF~fg_@!?Y6SU#uTE?pA-O3|vqw{S> zO{o_Jr_OeUW4S)Yb0qI*WxuH-(y-!H(r322%SyddlCJeCB$5zDtfiOA0Mg190u|5U zk9cyC_L!payKxYF&9*>fy;f1lap9EyBuB-XoCwj1jfHWL=R{;=8)Uw_%>(?7mZWYp z;6-^3WIj;AAHH)W$0u~;Xe7SX$Nbi4_>HN!YO8uYqo*N1mM49CYFKhR{WDRlXpS)= zK!~B(UVo)drK1R*fxaBAlISv;-ywO%?tVc+B@>v@uR)}b0~P-6i64ly&PDJq4ikHS zgQPyOgPfhU?$!>;n>O+^c<&rzwAkPG{T*%A<6T##daPb&<@}nk3B@I%Z2O`xH$_MR z&hXK=gOTaqFFFGxRO+SU)7O*{#LWRBvdJ6q4jM^qTKpo4HFZAr7pPTy_ z2UtPhPRSCR;pW_jd7{L}yD^%-)ZgRlOGE?L02!QVH`>9Vx~rv{Tv_NZ$t-|Wl=SHydzwW*<QYX?##i+v+`f1cD_iuR*1d19_AJsKDnqQc-jDQ&u0<{2a}g+ZPUU}kM;HX*NXmvTllXRHrapqW5e2=o z%8tTEpJ1Dx-?@L_VC4UG_0L3~&nU2Chvgd`_A4*;U!|bytgSjp6y-#@D!UPkQ5W zC7<%Swp0DY`|U$Wc+ixr`b^4$luD9pRWfDU-Atst{Yu6AxA*>6>3|)PSV$3GAcDCo zavNKj3n?ns&&#HX)KpuH4%ick$KAg&q$e%Pd;k{<(a*!KeSTk$2DSKENMPN?%5sL~ zCe4C)!tl(2klR685mBQ`?{h@|;p-&21oGLo?5lxMiarJ&?w<-P5U3yge6?+uaKC?mi%s(-td<~b0zsl|Whz6l9hUW*U(n-Gg`wZ4LP2k-LJ>>6{ekZZodHEG z{V^#?(F2+^zZ!`sLmwoTr=lD_Y^O%t6|P>u^z(~m*St3V=_h@G^$*V`DP?PPh0;|K z9Y#z@`IWt)BVBBz9202|p>(P>ZG9Pb_u$&AAbpo~X}U~{XDN?6;y%@rk{i@qn^y;u z)yd_zu#SSyhh3f5`wi@kQ8c|2nSd+iiJ82WIv|J~t-shoZ4z~>zf*o|0&ZlDjS@!F zPLQx=FFS?Hv<()DI=NL~prJM&%L#z3Hz5P!5@j5>E>%hSZFN~_K5q>Bn_gbL-%{Z0 zY>>vlUI0|(wW89}QoQ}y!Qy>S9{Ki&^gYoh!1{XzVn{I?zL$SrjPKZe0h5$G0Jt+v z0TrbqzL^g^(ow$OO6LY{-MjKC;1Ezwdqk@XXo8z7litrgCqdN0S%13;n92c|ZNP#8 zDW^{$=nt4SU?fkqv<3i=1Q`JvpwOu8j()_V-@OeV`AaA$v;m#g#l;0gF63VQ$+)X; zUFSLlE@p*V0v-jjTDKxfR3qSyc_G*4WVEJFf?gmeWdYCp- zEnF?~O1WX_#8Ol0M30g)YNe1@Zm~!F zF+hD9v(Q-y1?h>NX%D+vl~|xa7_@*mNj$xH0g(AUqTqx>z{rc7$1VoRi8&Ban#-wL z06Q?A;sJDApp0h$1@q`O#sZ=qO%$(hEnh!uIk$7CX3kZir;h#bqY1#T+ZQ?a#tQqu za|4kEUeuVoEcs%VL?p@kmzIf)_Xtt{ZY9ju-DOW2L_$v_{{q949(6}K${87p`>)LK zjEG1uu9=lU$ROMN!b$4HNYyV!g{?%(BA7d2%O&u16<*X((#cNDEuU|8Cr8$E)jJo; z0G=Ii7(NMM2{%=9QT$Y(;sXNv?%_%oSmK+ImBUqww%``)NRkDWZ``f+YkB4A?}7R} zhZfx~yNLSI)AaV9+sqfjQ8nOae8@c(G8$CYhS@TKQb-tMl6(erbrtBz0CYbj^X)|a z33--ZXBa_qPN(}?no&<*6t@0pmG(M*bNO*6LCj6mPdbyQ{SB2fj3QwZL7}u^^dR~6 zEJ|F?p+D)n_vVG^7xpD!7j88IduXlF!?08@PnUUEMue``o^}>oUTOcVAp>rffje+M z+vDNH(Fcj7pV}SHb2Lb6e6|gn3_ws0OQ!ws5c912bAKOhPP8!zqZAu^&xGV|=m*?R zV-67PNi3v7P3S4m$ac85(NBT$h=+~ki}I89X-;Fk&&H8{Hj?|(4Yy!)7MSj;eTT`J zSs<7bDWYoHtw!s(Q5x{wg=7exnJY8;ScYZ2od=?U4|&mUaC-}Eds8mo$b-u z52p;YIV^gj64oCWZ{`%Lk|g}y&O0+?0wPr%!a|aab?pC#CNh8Zs>iQLT(iG6m-g9P z<=m!^g%5!pC1u)lRwS@Hx%*KcHMWB7esxD-4e_di3j1Zw9W7nxVgLa%o80qk zQTMl8ExReHsjBv0r)5x#4X^Hmvv-26lasnfvt5Ub|E>M;ZH99;wnc_(3XQx{5M{dU zNBHA!r~(XZiEbbRY9r{H*0Hu}Tm@ZKHv%V8RYvvize8#|+`H%7!EdpXy7&I+AtyI1 zU-WZWvgp?cBHt4BtqZqzw1Mn}$t9(ZQzF@v0P4Eb+R{5Ev`yw&4P72KWq9A=<>2Mz zt+r}@-vZ=9UC&){bs_^k)MjI7bJ!HPT(_`bIa~|OiM;yE(#Rzz!i8AXRDG%zaPDq> zd>}N^*I_n1dv>0$-m1lu_fVke4yR?cDG(6N#YRzy*`hsR_syh+A#nPB4dw{$O==^r z?#~YWGxiB;k;V$hA!UtzjhjhKsuNbIf_$jGd;lt}j0V@@7d%0gEs8@$T`0c&WcVHY zT64OmAXzRle+aFc^&C!UA1d5sXhadXLBVUI)N&ff-T5w51ZV_>uPl79OxZjt{Pjgq zcA^O^JnG1`#>p)4M<2*-L~kVCaY;NItoCnTNPTB$5qAyh|Cq>Bg0lR0@k6+o2cr>O zK`E+pkT?GZp3QZu_HReo=$}wli4=>?xY${ISW%JV|MvSWndKCH+d#HeHr+63J13;i zs?Ig7zhOuiv)z**Wb<*{WS|~=Vbz0kv2!4G7Op3ny9*Py&7|VXe%~>P`;vt<2ZvOP zM`>mAv7#@q7&In#(VGi`8O*vYSSUxi4jN~j7Cz~}Im7zP?{fpJ8VTvx>BU_&((`-z zlU~-(er_rA3&{*H!dNBO9qjKGd@)0I3}Kz1BLogrNSQ<_<@DRC^%oTKgs%)KTRQ0* z)i>P1O7w^99*HS$1Xb) zrDTOs-kS4jJP>Q2QJ_|i)0{gB**)FzMk;#Y3Zp$r9BqutJuD(fUZ=fR8HL|}VBj?~ z3#JVSmPkMU6$eqRw@`ZE^|8#NECr##+9l#Gux+2!^sG5t!8T1K!=DH>^tpzC+IkOw z{U=+-L*WcHCxZ8RXY%`8gS5Ld9BS>IJGG_I+IA=R1L9+d-`Bpk_Cy_}M+?)!VV$Pq zoq~^V1;sM<@Q&aynie<`(Kk98>TpTVl5rPBOlT@=1kqb0)Z<{i=h#T0dqam7<2Zq> z7p9+KopCW@C6(DNH-6$SbEaZ^pZrKo6|xf^U}7OWZnpeeW;zX_wEu*`OhnkaFuSW@ zs8;NqsVHh9u$hG>^&_|}wlCeS+(0g=4)1u>(TTK2DN)%Ge&Q4^L}tq}{5+h})oX2+ zC*M@y*rs6M6p#(KlO4FZc4^4Tzn+W-e$P!E>8Dn^9{p7DVeRv*m)@Tkq^WDPuK`kw){b z!I~c?&R1eBP_d=!eYV*Y zf{=R+g;^QPl!!hbYr!vKSXAhKR(QN-k7AeP*J66r5_4IdYXhS4ck+e?HID)M!+kBq z`TfPK=h*fOHIHW;1(Xr|7_VdDi3nCHM`^{4?rGzkw=QqBRdW1@cJ{q1lmWCeH{qmV zH*+NxuhaIe@Kc5ucF4uBurDz*T+~y#{_{++FZA5v|MJ6RY8T$$H|BD`{M~a(={~K3 zwi9LnYYw!t%mDOMQxGqz=}p(-a9-DgNxAr>YJetX3$u^n;^JstX1bxqM0iH8txaF8 zOzB4d%6FeAVh&7drlpC5Wqa}jxFX+nnvAMKvX_l{E%LjafvdO8X}w5#mQ3QxJCazX zE86K<^pn7H<(HGLcT7@ZH1#(@*RTdUcGk@t>kbbpw6h+gDyLdnIWq_V(HL;U6GJ-= zZHL5SeAZU#F0);hTPX^kZ$l(#;daq?#?3la_g^j16E5`0T&Xb62z9zQ(i9o9tP0vK z_ln_-mz#!q>(BJ~2On?foSTIa6f(;JT5EcUAa! z3AG5ob8~eaYc$RlC2kywBOeccKkee9mlKrv`Zhp-Y3hyzwR^+s1mX|)jEIS)O)Pp0 zb+UJ2lD5j^vQK(zoK+Iurj=e%$JLv#nM{O!B~ri`wE6qgu+EEyXT;{Xh#pzJk+b?f z1y5|1gXW_#vy{gHV~vg-@L_fJCORJN)IF?vSV744VoGX9#M`2~cg)1WNjlDaPgTO)YJ`we@7B8Z_m zASSMPrqV8RZ-x5Jgwh;{(ecGovlMuN=$46U8nksFy^ZgTySv}%{s_Ckp^&38VT9ae zfgmPkhQt!|6U;6F#ICXaimekgd~3SWUzOA8=dXY&753;7EqX(*2f7=$ZaLV+1_BVJ z*4uIP!R~J|JP{Bx9B(kH3f}oGxwz-e)16rWUdWal#9jV0n~4ChR{j zb-LU)knRC+Og|U_Iooe<4hNmz4@9&G&9^j&oZ!9@@m3f{U!%Wlsit z!42S~_O=@BsP}06g*6mNYCym@fq+==KZ)pE7|u(Qhee{%ukF_B7>$;#Sydg*fsqa} zxx1VV)Mny<9nORF72&(fVwn*>BycQEKU=5;v{N<%GNOzE_l>}}g``OHDr;#GqM7Bq z!pf7G(z2vqWZ5)+1*A(01-@xRU#ACP>n~pG10Y>_2L&uW!(0%tseaO+dwX~M<448R zvm0>lh!2B3usQa;s0oIa2tEY2cL<#R9)fiukq$9nK?+{Knk@mjEzMfaJim|yzW9r1 z6;g}gBzSQtYX^IAfm`=U^*TW`Q5?OAyqLG5br; zTq)$A;9|y7wVtR({%Qzf`0dHFkr8pGYgT}I=ndNhqOPgRE_mC(zE4sJ1-=)>ro#Ax zQ9X^R-&+q$W0dw^7=f>w_+6e5C6F4>Qq}lrk}l|Bi|R&d4qYUT0FxQ!?cjhKEt_(p~<0(!+G;2#zq?@v$SFIWipJbXC#Wm7Bv_uaLv z!0DJ)rOhId71vHIVKja4zwf|O|Ff>hJY3DBiTyc&??)MnD#U`!?>*)@l#~@x*;8}q zQ>F|MqBEW}^_|t1bG6aNwM^W73K2`pd>%%GF{&HCYkm!w+~?RDC&cjoJ!G7JFM0L> zu*iW66FLP*vXRA44B2m{)z-xyWlsPL0HlV1NKWH=Q3<{+nTCNH<7B|Fh`JrEaVA1) zGaTRxHI%;jepb88OH~W6d+LhtC^$hnAxitnF+AoRWCcZuvF|EMoeWl_Ao`+@E7H@{A$4MpWX&7@FVfyJF3L6P z8>L%16{K4lDRJoT5=6Q|z@a1@knR+ukxmtC0i`>n5mb&J2`=nN)&Ubs@9y!TC9KRt# z$!OO-n!uZ#!t%QauKKN65|VZlKJVir!3a-L>Hs(Ut50!!?3c_B^Gj+41jNvLy=CxW z4wK~ZdU%gCYU}CsIDs0Q0Cx(QKhI0*_8?I?mZ7TI0!WvN@gAJ)(j=M`w0~e#VKhzW z#|AiQTuT5et@X^B_}g!r(53~4CNTL8cayuVO8j9)tz!HXM*w?>#M+a0IF42y7{J%8bD+`JZWPTCusak%) zdZQ9VYzlE)i@O|_LKDM2BXQXoPviPxv zauK(fij9N7lg$w9M%MTmdJ+}BkG4THxPSlo_lApguptw#e!O0{cbD|DidpTN1x zKA8RF$?rBp&4RHn@rr(-*Q}OxMwrIkbVE4Jc%(z0B$E&DYx=Rii$*cinirgpB4IAe zq2kpr*Hk^)muI2)X%@l?BlPVIdbDi5&hqh=7D`JZRl3X z{X>RtevELMB_-%3|Hs1dcjEa*$5I;2c+Xi(Sa0~}@;dW|tK&}9x%`<5Q^AKj>`fcD z^epUm?VmGJhev1$(tCi{DdqC@&T*$Z49e`RRw^xe;7JR6(Bu~?iq*^FK0g(bE98bmfO zzP_(Mt5U%8D;xD2L^suT7-D6ZY9yC+vsEMhfrdA{jkda|QH{894r71b{CI*0ElUHP zr#3#8wjV?&-GjNBsG37iGoil+wW(Q zqz+xU3_4}4oUV&x))s1W9Wfe}#E6j{y_#o;5gjDcVXGdE3EFjzL+E$Yruo!=sl1gP zg-RB*mSQIqB{*VqiR3QlK=p|0wgPJ^+8lQBOS-*x>QQpGN&;k+@ z0c6hO61MfuR$PKrH`UoKM0$h|D>GD~u4GeH$HW$oX@NosqUxtb;duI3bX5;LMH3J~ zJ8V8L&YSOnJeGT)c#@DkFYi9E+zX*)nK;R;3QvN)0U_q2mTjkNCySHe5SpE6*w>salJh{x z|GaQItq)cn?GnJ&J^1d=A<6ZWDQL06CYB>WEjgt#_$L6|$2%sX9n}p1 zuR#3PzZZtl%{9ECrM(r=-i@#_=l=TyLryfw{1oaG@)fy1f#j9lR2HpXS#pa-%& z=%c_qG7bhaaK|ln9f1E2hBr`(+BEsDK=b(aKJgSg4*QNHcuVYR;SJL8=&nPSRn{h; z(a`Vxc?oUpI)gN%2iY-%Pt}FHfq?`}D7{y@`Zl4B13_Iv;iE^&b?hp!eB^x?*0FDy zvcz0OwD9JGY=<|VU#N3@!0ducK*n|f{bFQ2n3h2kdV~>UJEogJQRh##xk)A>jj>q* z(UI;24$*93>p>rk3Y4z@A$XwJJ^~vb;&`T@xA*J+kRvLs&;nv)b?{Z5dn?)4v0=pJ z55YJOpa18i5Dr$ii2F*Ve(#)z=!GQWtMTP|^z!leHK2Ol|7jt0n$G}Nz~DzPf&~W$ z1AoCIjyHiL7O~fbag0K!o!}jg%xSoVvG(8%uk2CT19KCe9&M>7gxnq>{B6AppJAtY zoe8RmDT8A0m6G*-XV~IrMk{E<9}D=fY~C}&$SzF-9y9K`CwPS89krWLax8!xO|=N{ zbGU^*XEuO<1CpECEeNZ@-_I<*?CR>ehDNuG&V7LQx~}*H6^&k9wP{2~v|$a4m|prX z?Mi(7tDp=LX?{C+*Qg(~673QsWJl3v859?ftVJ0`UL5*La1_%!cGc4LM}a>5@@DHQ zeC&XCmVQgjvc0Pp`rv=5D~MMh)ZaRFpnUuBrgx^zKLj`qK$B_T_1bk5i>|Sg_`%6v zA=>VLAkNEqV!{6S_b@p5^^yt}`EjlkO0>z%z-;t3eh);n4`9ZC0So+VSXWb5NV}-s ze!Tt#4y5(%h*3BNZ@lL(yMg2vYJqhQcN`g0SsG!2eNZ0gL*XZSB@BIfX8D#R(S#8P zEP`0m@Om1=31lJsAZeeku~S!92XR#`KG6cm_W#7Fw_So6kH=&h7>nxB{M@=U0myaH zAA#px!QgzaY#|w*2M}c6JIH@hD_QhZ6?i%x69;HY^Xf`5X^6F({|#0Dzy1gbJAf&E zHLeC*Gc7GGNPN9P+l>h|+VYAG0LK|nA)epf2`MNjFza`MyCqY_+gteCl67$f9I2~gnsM<&;+LpIS{>gd%0R*a0DUow=iwAfy{rig4{Fd^nHw`%M!yy&S% zS#ib3j~|I19}P(=f0MiirIOJe6CQ!zqJ09YH^m0W@!QBV_ z4-CCG8cDP{Si`Fey}rK56L%*0)gBEwJB7wZBIMeLs3Jbh^f`cpHl`c0 z#>5_%y^_g*DURG8>-GBrnuAN3+rX{TCS&|gN$<*p-w08~Hy~%XC2Dj3=dpv9KS~$~ zpk5@@y30|m5E?Q357MkaAj^D&K8AypnVES-(hYfb9B|qe8Hsc406drp1i#|P%G5|v ztuS&WJ@x&q%lKQlu zmPC(DkU{at=qu>1UgkVoG=!!Q&fu^265`^sRq1$%sEQDf^0IZTl-&;}vDh2~q|TNN zTSNhMsQCQtRcR`=n}qm#%<+^~X!y=rK%fjFVM!LMSr8%bL9kpW`YyQoe^vb|*(sny zgRps2^hoh~CHT>=83L{PuTm$+EfZ=Hb+HtatS=YukgKuS|2@lunzQY1J9i!8_xAQ) zCc|xk<@+MSy7_5eL!ktj+#$A*qBGng$GJwisOTSmu#(~HUlQuT+UFYpv7m z*GU-Z<;#Jqfq3}XY=N%xA&1}}%mWMVt^;(}4cc^>LEtLmqy7=MBOkp<8Li&t2;TJq zm)x?EW52tE{sNG{X0me2@n#j1sB&~OcPRJOXt_^4dG8BlG6ixHcAzZw= z2#&2AdeM|LpnF$|L1AJaJq}S799_^fOd`(jK0MB*;rvPy6jp18R^rZZt) zRU9|W9LQobW7sW)Yr-0cem|SM_;uiY;Z_eyIez-VU#(pAadENj06oTqh>?oQ&;gPL z!}HPa58xK5Gkfark}+%tdYM^9NjJ&|06ChxcF{Y3=QbYsT3543F2F$_O1a~G>c+do zr#HdPx>f^4Kj{0LWbrL0wL*W>UG+Cz=o&@LcrlVO~>hg}V16C883VuajZ5R_H}eD5DM3?ck0GpMwD&PWB4_1=)K8 zbXVoyT2;si`5j@g!UQ3e_?hxYHATA>k#G?vH-#wKBFRj=u(BV$$-(B;h9{G@c&8P39g~kD71iaAzW$h>rU;1xl zfQA3=&a}BPrn(52Jk~|nJAVHd+;+N4dIdfYJa$ivlb@AuRYvs<*ep;NXaAJqQ8a~V zjecwT85G$&n7ISF%29mv_kqDChy;jqLP)uZGDKu$^N^53u@w5q(0u&n5g)}BOlD^~ zMagk_5GIRbB-23HJ!txB1_eRp4)hQR%;ySWD8&z-mdZQ4JFlgn|NDFX0o+#5@b>oF z8>)kOy;=+EXJ0bY9>#KJg7a?~yJu0Fm$$FF==xpyDJ!TT_kV%?7W!;?@XCSxmyNj< zM;K?)t4wUXcOP;e@3n_xBcAi8!ci#{xqXrQ;o5C*k-$tCDIH{T`G|;?2ZC7k0oKhh zNTjtvXLim|Z}5r*_8328XFXrI*LFtl_nw0PQ9rNy2-ogLqr&M9uHQ4FBd(jz1a~19 zD9<*;_nPn#*WY6#G{^SbxhTLCr|UQ%5W#658bp>m?eYwyF?s8g)oC^qt`mC9WO>i zukCvJQlT1xxnTz%SF@_xMc&iDn1UA*{d$-maVM2+)w?HS2cAf1-q-a{moF1||7o&_ zM_FJsy)7hyufY4edJU4$1(tNw#5r+y12-TE=zv zuw)$d*D!fOXVQ0uqnUgPkJTZ=R~%QWH_x<|sLtQ^N>-rGj;}9;Fg$6qz>|_cf{-ub zJgBpUvVJ>M3AJm7&_)ctIfh2=@L>ok<&Uz2Q!vn|w!+tGBKo4b(q7lOZg-%X7vV7C zI2lX-n?D7maJEk)%A}YxYV1o4US)MBH@w*PJiu^;PmzjZ*VTzVm}!cWdhBL_a1U zdBF&br!)VvAux-nwkay6qlgX^gj`0=9d*2p<>g zTK?f!l6&^UcP67B5BILpKB9P2=;!cARk_L=PU#TL6OJ)9j_wdgqg|5+7Roiw_qi%| z(Wu7KL=@z2W~5msXXVnMyIwjv!fXpzwtbWl=dRcT6Xlk7_TqU64LEbQT`{tUJxL5u zbLL?V(bWYKAbWmdb66B}V3JYSra)8@zff(!st$JsCKSEltxnnP4-E|1T)TbLp9*D7 zp0-oI0($0e{q5HTe2|mH=ohX7EzJ#a;V-EbV;I2`s<;&amT)^OWj^B z+F4pFFK51irjgy3D!6J|%8BpY`$HtU3<6&WN_nl&`r~vrkDv*Rw$*$D*#>-TJE5() zA8yq;ju&raLu$wR>`O;OxucJeL%K8o_ic0TkGl!~jvPj4ped^6+RNp{NV|5#>Ee9h zr%0lTMQ#P9%s|~tg``50>!vH2U@@jhUnIu=eOC`0TL13xKs*KW8ri)KXfH@^|DdG} zli!8-n4b<{<||OF((^odYjbAOF#&_2J^Pgq7mEy8dXqQ(Io0jPGVuQ>_-Bm+t7Un4 z<5J*-JB6em_M^SDD?@9@-^+ceNNqLJbL)V37apO~S0O~Q($dm}lyb2{uv|CeZ3#OIfva_V%y?gI zrViuP;x0WszdP@<55EJ7P_@dLr{$%#DaokE z4bZxuXlD#$QG#_4bFFw3uESUYJ#cC-a-!L!=Kwx9P=lze=omo@Q>H}xDBA<>p>@!U z4emWgEO%+P;oMrZ6NUZ&`hlazsvO4<%?ESG7eKf%-of$@Nt-J}Ip-%bwxv+A-)ve` z19_qGk1p|cKcrukm8!jkbl^YwSr_oOGqwx-^kuI{+?a!}?o66(s1{B+Ig_}mt^SOI z7`F$^un?n`5Sy)HiiGT>uP&|Yt`WLTZ)6@MOq9KSbI0ApI6-RQ)2EbJIrsTsez?iM zek!_QzQB1+m?RjoXWiDTlbD=*eRrX$%e%I^wl)esfAhk1`{PNS=DT-iVXYFp!?Kwy zEPc%BMn>)7k;F6vqIUFt-FS()V(dIlTnUaN4wuQ|YtC#8=F<-L-Mbc_2sIZ4T)cev zz}(#YdEIXt^XK2^&0f2>f3&c*EzZg5s{-6XK;o>{+2SMpH4DWgQL`b3?rR56Hug+V z{nBBlLBateMrBN`Ioa7jeaXW(32mHNCw<)O^Cn7-lTfPi#fAPC^&yC7CJitZ=wiXCC&o{>fS< z*&*RU^$1cstdBBNMMa7rKG)jH>X{B*v0|E!e`CG-0W>aJXzDHjp}D0V?pS-%!Gj)# zXVdDi_=QPg|$wf?VXoK%lo~Uvfrw-3{8^2ysjwVH!~Dxvi#3 z*O+%O5DYCkoZv0vKVqz|SE^;$?5zfRdh;$>&*G_}@y7t29O8A3Y=MEoFTaz5BpNj} z;;zS0AgR3~S6fpXozqJRU4(Ehz&!%ti-S{!;o(7WeN@oW(FxhMGT$SgZM^pIaEVa8 z5#pUZVWmJry_^9;h-U`cL4!?w^Bb9ICXs%%_4UHYaQ3;5naLDpwqrspH+~NND{5hd znt%}Z`1#PvFe5tYkNUfEwa|`>ZykC_taz)1t(ahZP}m6myZrG$%}3l0D*>X$rrKll zq7gqWY;5W~#jf%4uFaSa@h|#`6@=zhrurSYbkXQ=BPey{(%?s_C z6&XD@=<(NhXIN(NbEu_Ea4NWp8cFut8U*l(_sP6U?-O-1rmE(vEcsviyBDL~qz>a? zZz?qJMG6lQ8Yy>O0m`zt0U76m)oT01H``mc!)+H)q&W&VMO5v1HLMC6hmW*$#G;hH zYa-+_%M~xigqu@)C!YG_NUmg!-BvAMzki&9D0P*I+2KOtlTifS3di%yRWeihUz87-Fu$oGiG)5bQ z=w?t7#&q>*(VdHA7w_}_rU)dPrQP#MUCQ|rScsK)Boj$yBExrx2wTRJ4VJMPU zNIwlX$)=X1ZAaj_qVEGJP%$?zXO#8hUz{*68_tnJWB3e2#rnm-_;qsxBA) z_`3LWjmrg<*u{Z+vP{J&uS_be@8v*LtLBDF7~3v19UIkN4Yq$JS`^8C4{xXFAUac` zfVxrK{_6J>`NA8}ki$Z=EZqwx{vvqnN*7!)9bleyA zQEijw{rt#_QzdaB>0cKqtJJIV{~k8^s2$$9&QZKjVd+NBzWwc1-kQvW;$y|M4UV3m z*r6cY5Chy>x|RPJ?;!cdJ=#7vAZ)Y91#eQ?sOS1b^(q$9A&lN_yf7}w*!DAH?*DgN zTg+B+dSCmOE4H(w3w+q&`v3Yq7l(W5LL+VAjgG}&Vt;-#R|5I`)QRg zNV6Rao*>zOv-?&CG$)OuLLw27)##YfE2fGL2?A8NpMOlRO~e(!bmcAi0w(--GWJ3( z-M2d$FU9*B64kwk2z9?Em9C$-Sw^o;XGhU>dQoC;#MY%9uk#QmAZ&u-C%%l>qj8}Q zv4YdxPXCf^ri9l$3ZYdWK1FOv4wfb{a!;zuQR2oQ$tlIQYTXu36 zASjrQzGEV%qir&uz_pt3KEW~jNqGX7 z__ff#KW}px(bO(}SP=U%cmwwH1e_UNG@r|fVEqUFE^n4+G*nhr*3@7&LES6(wi0>( z$ka!DM2kMHKD&X3hsWX*=Z0s`$nJTR^BF>mUB9~Oa)Hyk_8$$RZPgQj!4Oy=j1J)4 z%a<<`EiP(@gdD?_2{K9`4!!~123b+SNdwsX2d*WUuBMZ@Ac*#CqqFil1ckaMPH3xA^n1*b23)EQ9ca^LUiL}uk!LlfMzDdWO0Ylb37%kD&5p;BP`Tnt#@1TGHh0@Kny8zojrVNT7V}MhBA3DNapoh0A z3qee$ba@9r_NzBzU_4j?d=*GUD)QZpQhPQ$U-=`cd*8{>;o9&CurI)6gDV|6j%oV~ zpe%oC1SE2TeF0#dHzHh1vCOjjHs_DhO5b#LChfnPd&w7n&~4Pbt)Or8xh zb`jBM{4Q+8E(9B&pI^~?0KA9u{f!AVG^bMqy`}cAS;avZi}LgH*;q}(2QwTLB>v~? zg)+e0b6cN#63d(8x!Q@#O0!F*$Cqyy93njPB;dMY6fK+M6f~HbqUoq zPj~kS6^NH%l=imr^V`GhbUJVuDZFiF)^jV-8cbYON>rne%*O|_Y+xmgp-~=+x{IpW zDBl-HJ{PYLN-iM-ruBDWBu2Kmuul+iy=kWoSR-ZWMjrn+9qvRR#FZjU5;p6vgEm;`kUjQ)# z#Nrt5xYsXk&-T%{wdErue2`y-`=x;@bo1!cetn^4a&g(ib(d7DvH#!iy*eQd z@^R*BI67xt_8Lid{9+9bwEX=(#D~0H9R;A|Vr)^N;XXI(xWOHD)&!2WxdB^4)(n)Y zHECfyPLn>P&U34#iIZ{~UVVV{U19i7PaDczw2^T6;|Gy67>wN+6Q>E8d@^nv)KY&E zzD+#rh57=DTe8%skS~AW%Qn?;PgZAVwLPpQeu*w+W4F`NoM9~F z(XO-J6a8tKt+FzXPve6ImzDD@bOKJJ6&a)UAQqMV2m(MqeoyFiVC3wFU007L%^{4o ziSFmlV%C67mU;l5ivI|3a7*X zrZ(QNjL-sDf9mHe8|EAL1cWRhMhbtzy`gwCt8G|sUW2cSfI8Jto@L1BbN+X@fz~vQ zwzu0ZMw&{;gkY`*OiDyDF4SDcz0*wJk(?&w;PseKN<~El5~s#MrX)+9;5c!@jcC4R zlHl9U1Hbv7;m52bFB6J;dU_&AQDVuDzQm{~#>E+MjXWF?9$qyqjSC2^rPO257&XY3 ztYr}$uSZLSN*%|eugLmV@N}V@C!P($B}kFheNZH*EnOupA>qRckABB02%j;Uh%b*a zGkun=BH$r%qA9j|kpD6FF5^tvkMsv#US8bQE{(Amq{v)IhPJ=2^^g>CRDVMaaJz|% zFNYz|iQC=s^~hYBzMfSgW9g^^K;L*friSKH`}b*zm@&MFR;@*{_`VTC>{0E@>43Ioe33ssko>1z zal}X?Q+5&KhMlerrXXd^T~7rqTS-}_eIemv4`NJL{?87^ilnmb5EbpjpYkbqbKXa zc5qGjA?OytUnqbR_{!&24PIdox*_Cw$v~~z6?f9}qWZ~8a+ji}j0%_si+v0D4Z_M*p97$X}`cv}?t_H(!6{}2n<|L& z$p3w2@z0^_&st6w7zeB92;LBvMGwSLbZWSTI5VfXSo{sV0b#z!KKEsCq-ybQ^2WUW z>@?W?ZDZlQ+cJ_%ef@YqQAQV$vfxaYN{|CpxXuB4nD)I(bMD%J21z|$PDBB2VUT(u zf;&9Ic3wQfKT8TE((LLMcNCU4#`olO|c3*$OH0=2)s=UVOye+$D)Gujb1-Wb%Po^L6&c zX1I}nisrN^dnt64gjMML=z&IhLWF!U(kVU7-?IuO&o&adNiLIt9T?ljvyy_weJ^=Q zqlB_Mli~&;?8tPh+{B5Sy{+FZc}V-SJ8cosiB9s56evro$x)5D@gh4m9_9bmGEw0m zR;^!Sbg^5^7(LlNcNp^OOaJoO3rE$-b(&@>(>F1wtlERqaBi>tm5&TZvqn!9u|$U_72}3;H8k8SlSGe1 zbqVK-M`4=B-RC_kXiNzQbWrjh@pOjV(0NN>7+yJ-I600Sa}jrH&A$2bW*vfbw? zUNu^>Q}MOGcC2zS-^JHF6qZW)Ioub7-jA^!7URvdzpY-X9tCnMK)&`|sB!(4X5T!r zC-$PnJY;dPkH`6Q%%?!nuK3)fY!;t}|3(>3ZsdWu2fdORkz!|Y>_xU~V9P?S{dIy9 zLOrbtl3%HRl2Ky0Y`S`e5sB#iN$I?B>d`V@9UnRSZ8kC($=Doe-ew-L6fG7Q=zES8 zf1XMTyrpBt)@q!D=5G@bg)CKpFI~c>+JftRhydQqNACDcw0%28VUy(}t@lGq{njaM z?=3c)s^R~}QZf`G{TbLTFz@K35fb%0WZ3xTyUyq1M4qQDxAlo9%n((^IRa)8sEHN< z!#mTJ{tV?L1UJvm3w9@o{bR^!_&rKQ1d!H!!DTaLe3bQ~AIBD&BOZigdj`&v8V!!h zKGRPs9L?HpGvTjh${v$|uG7QKE!~W^(?+0Be`k%ocQQrJ&ooKfQFLax;s#;F4Y6pk z1Fc2Hr;0*I*BI&m0b>?dwL^Zwzh(4A>2iHnWsl^SXcC6Sdu;(}yuWn$-$T|g!?QNG z$bl(>w-QIX+w|lahf(oLL2j&KI}{(D8)!7TDAUjGxMqLmtSi?cZe&*t(%rLJ7B8j5 zam!$9mc2E9e+WmzOo264|D z{5ye3!)j`3AkYDRTar0FvY&IHlZ2_F z?6$4ehpEq>H;)bibqo{;e~VDINS5~%pWm3dAc+EZ5oK`GTEI9(i1kkjH8s}t%GJOj zOoj%vxeptLll}}o3JW0LQelge>Baa@ineBRzp`3=wvIOP3Hnd)3V;T;djjWi9C#ey zPFDfQzu_T9z(l9|a_C0Yy9r_1n!LsZp%z`5#xRUv&ddzsFW>hV-+$+e!cF(dm-s~ zr7}+Wpy*GE%gh6j78}lLTdp3b(}X|RaK!+vGvr~()z>hk_%_}fOL+=IV+8cQH2;dsF^`MP}Noi zFse)N3qb@(*$Z1)cNU+kUx@4tisaO!A&WllmSE+;a~vh9<``>O(Yir$`2bv>D%dza zF&n5-!u=xQvTp}YENhIzlUv#$LCKSf2G4vt(=Q;|+8F|CdwR|bOC6bNGE&$xuBwvF zaU=x<1mG|pC|}=&C=zQmBceN;jtm}CiQTmI;ZGz67cSa0e=@DO3{VGNxpKuhYUEct z-M6u^k~Ne5-avKhCn(xVCOMpcZiP0z)g&V%!t^89qF*+RkwEL`z_R7I7k9jjoOF740vO<}@9DNt&u9w-9YuA>ElyUS0 z$T?JmW1JnRbD2P?9wkAkOdv#!L%n#3P_5yUSk@QN3}^eIEAUOT42_JaonPUw50n91@)q*mel6_4DvHl>QGCvER^#n&6WTAaZ%l`N4!JRUKV!gxNNGomYG=U{ZOxX`NL7KbnKp+h`9X z+9}xVb`;_}1Pm$s0w{T^o2PXB(joh9mwaU6LzHeHtxG#Dz1)V;|GHP=@B6V}c=HDo z?Xk+g*wUU`Y5~ZY@=;>qZ!+vm_k4I15qcZSzvLnpGbal&dBvF?!iFd<$ix&$k97{`8$u#^s$`;ly2bqK%dh_ zPtF9fLgeyb&eUQPZ=rB;`swFcshQ_U;vS)&5@*)|fNJsIJ5?@%s30ba)Hb{Lx`ZSo zw$&z3R(O0|u(7sXzK}L&4#<5*ZHb^6JpYJ-?bL8$Mx!CX1^w*Pra#dMPBHlR1{k9Wl=PPDkh?F2{m zLG0Ri#WSkUlzp_P`r^)bCPno|=8_@ORA^C{_+5>sQh9>CK*54qZHpsg+vsp6)7R*ZX2mK za>rtQJ9yKZH;OS*Gxc)0^jVT_L^4jo^)E$TeZm6idz?(nM|kV%lWL#WeEEiW`N}zhM*kz1OiuqXmsUT)cV` z%wsYKU&dL_%D}%I> zRW%Cht7M`m+E-JmnR7K}-w)}DHf$t($!Iwwk1iqoa)^H5?9A<$3R*mq9$;3kT)yn@ z$cbzq*!qr(WdjE!1`8udj&*wxCm?E5E}dJE!5qO8b+uRe6t88`YVXTykq&NJ-nvQa zvv$1}>|LfS_6kMeUNBjb2{UD9l+oSiquB)k7cwu?*zH5U%0NWHz5IHtdy*0I(YdB6 z*vW4gXN~STS>t4G_&v_p9^FK_HUDW#{aTDVr?8&9&BSI$8;byMHpAOu8%1S7NMqme-0Y`kKe2@;m`mhj(Tk_?Sj8&i%#%)>T~HV z*rZ{+cx(64!g(`njQNfo1PXB-Y1?1$p&d-Q1q56_I@7lHZZn1&k;xiUvv$++A}d> z{Cwqb+T0fZ_XrwRNU$`v{bsKzUOxh*1jzT_zI_X8iOws1!y>=I3L1dQEBCh-Z12qj zy7s6UaM>x4QI)_(A-tP}_Y!aa@5@UZ34@6RDnB+Z0kfQcd}GRb3ZpQxVO<%)(FUHl z7+x>pyYScWIZuxg1zP+ z=nwv)3aoJq0t*cnn6*@EESta5zW%>(JLGTEJfUM?=&AIU*mSDRVReW5OTt)?{tP1s~(4CPG=2tOJji4XE;$V>Lf--&oc!C5pskSd2 z@YmW|>%;$eLyVYmlCFDL=6iRr$DCL7JgEKnac=aW?n^(cEMUDI5g{S9YpLALc)hK) z^*h6Xl+T8k#r}%l#>Tscs@vY4s*fK(&JBfbwEcExE6^{O>x`)iP6uro zcl{k^!!G@|8wbE&9AsYgTxex!qqr*i;WFMx7V;sA~XWP!4vdDbF zR6R12H#g+NLjSc#ynutXZJ{yjbexI7WsGiQ-h<_d-75Juwi9!*MV{>(-k0FC`+n|GM^I@6QQTPtGol11ZEMtw#i4_I+_oU_iO7)6ffpzY-=1q z^6R?*I60>TKb*5EE`C@!Tjn(P57a|i70lwc5bqDw5@p+nv=0b4fHR*}FV2a^ES18G z;hw^OEtYJs`{Nk9fPTVZ64)4b(r_nRJ6VWrccbF5ZM-kgvj|1Q@$s$IT`}8SR6au( zbo>z~cOshkE`SFBHl~~G6Tx}2<(!;GL;>q5G<Cv#KlXZT*! zeENHAWLv-C)s2|R0Y-PgCT0G&CRYEu@#kbJDQ6~12X1N*xfxC=H#;B-@A>)pfjQ|= zcD;h~(gisq@{EJ?#36l+kI$}`qHJUk31 z^EKyR6`ad-r-8!^_0~epTiCp96I&o6d3i+i>xB z{-ex}xQo%w(K|y#Dw3Dx=Jhi~jN|Xa?sW3!CfZJc9@TfkF3tjRZgCcGbiqO=%>95M zekccPxKQ=y%Pi8~%vT}S6bqMY=LOzFr`X7JENK#bkY-hC)WnM-8>NdR&6IZ*#8}ap zG<~ErG3{SLS9e#+HN)VsF{uwP(%8sS8%O)k84Q2U`U0XsDJTwMm%F=eXTdzX_6q!# zdRlZ!AvO{xHLE~dU0tFQ*3v52CPO9FMdtlU zaZZ%qgd~tqy(Ib(uYKeTa$2DQ{@~ph(vDS3U}NB~l|aJN{P8PQ)M*pE@TjdNiHtcV zHehI1s1LZrLA@YTGr8yGC8Wqv_~_o_ZP;lbPR4fJ5enjbswV*1>pW$C%|I5e^#sMW zTs8CTc2wN-@oEI;0_5iJN9#nReyXX)aPn9L7om2rx?eH4bxTo_n%Df9N0;kva(KoB zQ|;OdOk<0Bl4er8gSEpZEYR8h)V~t?t6Mjjm`FwG{K`Oe%r!+?7JN?Fh^Yxns$%a; zk{}*uWu>3LlWia-1fyJYCow`S*G^H9!bGHFe^lY(nO>IP)@Px2k@Y)TyS?)X$+ipD zM?$L-p@#qau*U6FpKs{3$NrlNyoeXE&psEPkcgnvHzH3+Nl7`DAP(a5TkK2%X63l} zXXT<+-dm9lk~focq~X}_YUM(uZs2?OAnsAT+h}2FGb71Nljn#IGtN23EtmUR6Bzw> zd%?h}CUI84st&6C^jk=%r-$VL8w;QHt{g+_FUH|`5>Vllb{Ph2G z@q=YCQSJZU!!R-&Jl#+kY&$&ISfBaJy#P-J=XPB1+c$4c&ri0Y7KVm;TtF#PH?}dq zvm4Z6?$Us%Ab-xHXFc71*nsLdiKoTd>)Px2eW?fQC~_sqgQ8`tU7F_BdN`cmWU7Qa zI;Ei&MYQoIt*TWER$F~mReRGvYC+pb{aq%ZiGk@2L@4;)7%$*E9%r(|PXu~5_oRM( zd0pMq#H9Su2mj@Jekq-EL&HQBCOxmH?=BSh9v*Mr-34lViH4seT+Dee3&aAIs-MxTVja1M0;oaD$c6y@$n01!A9V0wV|K$6B{(F(I7hLn_apqB0&X$CdZ zZnzcP9H9DK>^yx_oTakZ=sho|m#gLebI9OQrhOOKa3qc1MqdKWnlnReFSuX$fzl?b zsjDmF6W@9pD8=Fv`B{cxcYCgh1{cGZ!t#{2@z0^LXg%`yTn~39NS|z8hd6YB7y(Xe z`O71y^zKQkx!JStyA!_4z*<7!k$^uR(49mI=QG5v9=1ppe1-e$PZZpk-+p!@Bc9K; z!LIC2da!*dcsO&bFBYgKJNsGLWfd`BkTgWxc|t=v?JjxAu_l$#Iw0Z{#2v@SAta?o zGA19NXXnFBM!gWgF;02f_!&{L2`}eRvDwKb_qwVoHjyu)FyeLMZf*S4s$ZaKv9r~~ z7Wnb@FHN58a1vPyF8VEGM1uf#G{i0by*lFEZ^B~zMJ(k)%Pss^lA$R1;y zTRzUqhmDK;O!t%r;3NC7Jo7Oha)>MJBpxgs+uwm4lfP?gYdahJM3fTO zk*>w>b&4_2dYFQGQNv zUP)(V)|o?x^$iTxXn4lo?-P93hY{zz;+|H;OG{PaG=o^Uy7shmTE6M&=#-CcXnD9Y zD@riAETLr83mHwD-Nre-K5a6i+as3PC-~K)KLMSE<`dXbH=fu1CH#}Y-99ZMH~T9^ zSi~|MC|@=}DXXX$tp~>vd93a)W7)IQ`MAl@d-epqdfTYg9`MzXSH?c)*|TffRW|Q@ z)!oN9Tl|NjCW+Y+uXYK%o1n`IKPya^j6f_+QndM#*k93z!yOEd8tL}*T%5h$6jM{u zYS_)B%u222fc4q;<(NA&gXfR-j684jiwWic1ikNJO;QBDD}L{Z`(J;H+8p7PYbzFp zB5{vsFVih3g#LG5pQ9(SGXL;=KlMU8dTyDskl4tE%vB0s5jL&YZI3P32}b5L%Fof{ zu#UuU73-vitDJaz!fq3O)K;wit2;-A)(We1RG6163YA}ILZkjeX$P`*QdLgQH$RJV zD9D%C$TQf?HZ%_XmI)NU8|HPEr%HUN5u>#9Amq4S6Nj+$dO+wFUv!J9Z%~<6hR7Uo zxB^cb8l0U#SjBn@4Z7tWP8 zsrv0|#_{5gk3C5nsA}~5vyPcYI(WI2IWPC8Yx=WiSiUd`)oJ6u^4$d8^{D;1qne|v zU$(58fP)B!z5zn*!9G{@rD|;MAJ1g-?RWVT9RkVmT=VbIPXC!~kRO(P)~}16e03#R z$3I-gPex4A`R-z*yhk@btX{O4%ejoHj|7u*e0a@StvYuv9d@n1tT`L#3rKnZg74Z|_V3Fc(UMfV z?ku>h!lKdL*c(q0PFZp|aws{q>$%lCtbSQ}9_r0T{Q!xuOT{_|?a^!u%by#TUwDxW zykS;meh147e{!w%o}jW~t9u*py(@3B?!BZ#@Hcidn2;y@T)&7fvssMDOi4G8PVFx& zEPPf-^x$ffSqjqi3F`3rGOuTsmsl^wwpv`eZIs*a|HImQ$8+8HZ{t=XvV~Gsw(P8A zW$#r=vJ+CIlImkdW_GfQWHqHk16dhGGAbHY5|X_>GVbGZcAn?=zJK@iyYKt)``y<+ z*L8KC@%g;puh(-N&*M0r1;SiR@0hrG6pA)Zyx4zChH;zw$Dc!#WB$e}(UF~v1ZkEI zN=F8A!FM*c)v0reN%68ZI~)2_RxPcZcRa8wZ?e9wFi@kpJ0h0BI&Vh>fA&cR7j>tN znQRU1<({TfTV_rv`AvL@5?^HGk)h5dnC3YPCo(=3O;04B_x*6HVx(KYn-}*IQTZ0+5W0YTTZPkX8zXac*e<+NS((v*V*sS=IH`rDS7q*7 zIcTn*?rgP|oY}xoPG!%Z?duynr;{uHmJn^(qW7|7&&G_nS6U34^{%`Ls~z<*t;HAE z*DM__l%TAo#<2GXW8uaKU6<|eV^*{3w6AbmZFVSqk=QnO8^})t<)H8PP4$O1PP9p9 zNhtUjd^r>3?^80s_LL$@pRf{kYv97Sjt+<8Db*TR?=R8VQC~Vo*nI6!KVbwttVpWZ zQ@d$8!ym7y#FozKPTNJVHOB}~IP5d5KAxO@-|ntmvwz3$;v0+KJU{L=UTxD;3AdtI zqnQj|oB_MXdHQO|IGf82?g!)5Fdn~1%h$K$rzj(Nr`kjr6 z%GlwaTV8BM>%=oNBYWyLynChps{A-6UEFj&k$ac3u|-DR_L;O#rC!X)7WR?#AD76h zB)4ubU5eYE7G1N}q_rW`<888#u$E`O%~QeiXRSi)2Va;Q7T)){YiRLXNceTvuj8^m zORwQVu5`yIqRQwBFfx6{UL4lbeLKg>S$yGlwv)_`T=oZ{pVN1mUqmdTg&DzFT)XoPy+ zN&=j*^xmSy3v8W38=hlcG(avt<9eY|j@EAF<(VLRX|t&%4Srkx4EQ$_JKt;j{^(>W;5yUz)7zs^jkWe#rp4uGT=kokJ2E7JR97% z*49>(4iGt6siq_+KlT~WGT*p>N6apxsc;gavR$I0d>_)W zoz=;S&x!RFsdR5k`8hg;5v7`MaSb~gTY|%$5AWa4BYPj=Nol=#T8hJx`c zsr^(6cibg(1WiL}Y0B3{u*@)e#HQSF0F?kSypEKg+wFMs(Vi8)oS|R=I|Be zP6NJsis9R`a&v(4gE)>r9Xy{0yL@N9JB{K+l4q5NVL*4E?$j`wHO zQQm$H=Xpht&rTXR)K3#J-9PpqQ;<6n*5LPb)(;%X7xF zm{(ivp!nO{HqFMn9B1!qD5JKHn@r0aq^LJ6BDhkokNRmE;oj59%} z&UW{ibgh*C`I*s^!s<>?8TFbJHmTZ6Q&OM4e7Z7{5NucM`ImlC8QC?^_gyU@H)WGw1slpV2Ci!&7IIS8Xx?M71qN|Zk&4g;$Ku{ zd&O$^1YQP}vD>s5$vIhI}%<1Hy5XLT?ssJG;9YGmJ#|I~UV zpMhAlzIKtK3MQzlpWAh3zyY3qjOq5|i=@2U*WUvp&RpSs!R+z;_Cwq2{88R)uJZ%7 z+KI=UL>}hn3uf^@nNH-AiH($7p%*)P`CPpG(1~9GnIfB2bge!YD3(zyRi0tJv!OWl zyhE~aftebXBx-ZvLLHi|4zv4isJK7{M14{PjWYGGHRHFMHBE>nmX#Z(UJ6Cc#zof6l z{tKUR5Vf zdKagprz?B+s;;x{4Ol*dn-sMEyN`GyIeE5h<7Q)?|Kg430hy|rRxao4`toI^;m2#^ z?7wVJz}{D!!E((%#F)R*&Ywqt7PB(K*4EbZ_;JKfD?lgUu>%y)J)MSyGs05PJ>SP; zpzsHx^e*$G`4oZ=wK}FUKKN0e?x2I!-6DkDE~1GJO0QfYSr0&>JMn&-FjF6xFY?W# zKRQABqy6wYa}}Ka@Zkff@0YFA!v2Di08IH0ZjH51g$RW7o4mZfAW12GuMMXI4m7|< z8hXwB^%)_r2+rnz3E~F?wGGFYDe#Xx74a@!t}c8A=$(6;#~w47J*1_l^S_=$qYNND zIwoef=+w-h-X;1Dw{Y!B-JYtt27IBY{NBCTmPC3dyzet;MFF#Sda?)E z18ARnoT;mTr_Dw|GGM9b_`H!N(c%1gB8b!w=XQ5>v3>QzA zeGia3w5|FcfL0VqGJNB|3Odiindl)=5s`zi!FXGV+-IAuau3UVr)l?G+jW?FT_bSk zC5~`B5x{Dl|TJ&SNsH_BuB@>AwGgc(lk z$7T@v0S(a?u8*_}sG(?}IWqS1C!(yf?@$xiu)FLlI2T47I>*PoDDJ^7uX?8l%iDcQ zyIZ0HfXEr`$W6a<=MJ31mM-Y1`B~Gl?Z#LSo@yHRFtR8kZI1@mvZWj&sey*37yDe&pUSXXri3DdJtGXd9!<^q$Xj5T*XA6(@0TX%329T zDjw*d3uo#XWC`DqQV^^BU|KWBH_g)+`ut&be_9~CL98*%baJ{WHP!Zap>;~A4>y&z zkc{yrt?E;3Lw>+zYJ5XA-Tye~GyvS3W=iP7s-^U1s&7E1^L=>Oawbj21-E_UU6@Pz zerwq5P#jOxcRlA%=BPoj^PQ2~!z<5gjkYs$YDVH9SATs@5Fqxmnk$2_qRw|tM`uGY z5o_<4!j9G4O@mjAt*zl<=?)Gp;g#9!bt*4ws$_Q|b+ejYGa!Pd&lf}IUf`@Xx` zJ6#=ux4S!;Bir|we7-dDO5VLng)bsSH7{Zds;Oz5v)Yr$1FT7&0U}#N6X&E8Nj9lm zaZ42I|3tK7Go*=N7xSZjpT8WzQPg0a=;}jFr5a||>shMjS#~n@F@+6W6F3i_@Tlj! zu;<(u5=GmOq_m9ZVMLRm1W7G9kS)&02+%hXYi>CH?7~<9cgH0CLAAl zVJ1B0{a4e_JW{kQDPew|a_yScR<`pXux)GBI~>^^S(K5PiC2Edcj+0NI;-qn_+6mIJN)6p1r)6EVN$QD^Pl_uy7Q6`253350WHEMs0xm7a!+l?BBZsG z!Y3NVyc&GR3)!u;^#cIgpN*RgOG7wFH;%filt5BuHIcLD%G*izas}_-zn_^n@C5kJ z;e!Vwe+V*5gs4#L;b;FML&O+Un@IuXiwOJMee@}aA40WTL!aSTJ-+%-H<8s@e1J}q zJ|V}m<0kXyCLW^JK+0vA=ianl{oH<9bgRh`%3YR%^NoNH3Q~X7+lL_ zY)z)=a`fz9%M9~uZ#7NZi{(o0p4+swfB$$k|HDWcT*>%+KYj-YfSkDbY|re|KhZqP z!93l^QzcAt@``^NSp4T#f#p}w27@KiRQ|sk93TSXIzYe!N5T<@2Z+&_p82)s>SVN+ zl$4ORwYLWtlOjB+5kkoJk(81uhPfZ!-#DCko;`e+Fo~=H?qAT6BS$KF`Q!pr{$wiX zEz4nEkJZS}YLVt~YV<}S9uGUOTh(Uy?^FUg7fCoHD@zr1F}mro%@frotMB2GA<%aW zJJbIDwM-B4^S{HD6fp}Sas<9`P;0CKbH_)4_~n22cS$4$S3xMYHhsx^A9ewkb)_w6 z?KDhVOz5xQxSIU%qQocnQ2;*c*s^tznS z<5)H1v8)*^wEuP3&MtO!U>Ll-FnaiIO@)8_`0?kSr~$2B(m>z=c8z5$`=N2tOV;{? zIWqOVBQF+kxK{F%F;_VB)Mo&ut`r}$-~^+)7*+mnQH82908Kt#5WGk&AT5S7&6d{b z!mAk>(fbzFA#e=D+eTRVoq{xZ7IVULS=X;`W(!a$(@{DHC1GuCtx-o3mm2xs60_S&wBpv(nPBO{b8Ty-BXqd@GCwtKrr9tt(gRQKE1=qXm{ z^aU&)kr&_(h%8X2Bh77a%*=ludo!fMUaLp;_>lrSuht8 z+Dljh|ND2N`Wmy6w;Hm3lim@rR8^)8dt#!aPxe;Oy7BTH*5n<2-_`Z-4P>MqUWX2G z-7nyIo25*dZeK+hJs}V`-jV+X4`aU^g9*s;twOs@+;lTD+94el0Nhevo z96_(nroS9c$6?K@4(3oukE_7it!pW3{WX*-V}J%o2iEmM#GtVnZ%rGrKNFF81IrF( zo$boL+9+-@RpahWo;nT^!~Fa_S-gLEcjCw$@FxS}` zkFK%s)uVz)PfFq!u@vpm=O7kc%O&G`1Y~NNsIn4TGodN2jEx}SruAT!x~&CTuWW~gj9s(BNHc}}$<;79pR4U>^Mv`r*XYA5dU z-(ckDdTxJX97KKLhx-V#o4GA>*0;|$N^VPSe#P)rjenyP;ekjjc3 zW@ErNZVK$93f5DWP17VR5lXmqt7&rcftJF_x%Z6fD-J^)6jAoB8jpyX z+=Zo;mXSgYLh!%E$?5hs`}bdcnYopDh%&joOFQ{bY>p-T+C^a!Bp`q4PvP+YI@>1g z6UofHINBj-a?;YyZUv?E36#Z9Jr02MwxTTtHMc!Rx=v05$Q!21@PVNCp&Jj_nI815 zJH^F);9vFc=yZU0p_Nr9ltNF~x2v2f%E`&e%^ig17>NjMSE@0K5j~L!bxyPy9XyD^)JNf`pCw48ngR}vq zn0n%7&r#FKvb??j7DS9I!Qx7Zsi_AJ9lFgiQ_VMu{xq-n(BlGBRp?nn#Km1Y5hI$5 zpIMW3#B@JLKt@#+O%Vp?$8nNb?ULSQOa_rug22VQ6H^by8*0ZSlU=)ZrTC#Ug()L! zETgiaB{%AR`03N9=g*%5y`k4PFsM1?vQKH>L3D(1dB$ndPO#nW{sQ@H7Q< zbs2awi=&+zH(hStXcLGP_U=?a<{lR&_nL94oDqp7_H|qec4zdR3imOetg!k9yIUE? z%%I=D6!i@vFYng~7wcwYsO9AucjEBexqyadRgxZQy ziBTE>jWYDS01_`1SnGn5XItjQC7}uu-}x*$pS{oCWo^*d(E2;Syvd1LWK*(~ zPjPXGWRCt@oUnDcT1s28W|HSkt+sq@)??F`e+C~OKXNywd<4e~=i&L=vV1%})nkz9 zK4daX)ThTWu-EEFOQ()#8o)jqVt=&^WBgjZ%8n^~Nbf4*FhX#t?NF!qx=*5GV(`)x z8HbZ6Cr}Xt45B_n?X~swyum+B7cb9)^rhzHNpOw8{tVTq-!Dz6_O>YgnBlT|{1LFWs@XTx21^sSUKb(1r^V*4dr(&=I+{%QZ~)u9 z3K8ip879lnyEGZ@f`KG|f9Ec36HZ;#AJ;O?5e4gWJhzYV5AL)?u=McrQy3Dkv~C_} z$aVLcY>DX6qD|rjU0h%A9X9 zP+lHfx9f`g1q9^p@{vTT0AkH1pcQ)Xp|-c@w-+J&PE0pm%}yvzFq^y2c)5}eLey;F%jMy0VUBP98N)ja4xJ$bfdFX@HU)`&l{qmF~w zvF|-NuxA9+M+I9xLn?_p)OLN3p6VT@XRH54lH%L9qozbMme)Fll4b7RxwFZXse~A` z*~J{ZWTyl2yG_9rJXor-(swNP-`DQYua)cG(fCf-x#6?+L(W6aihoDkyGsdeb2k5m z<9~cR{&OJyKP-M%?1W`T0t)+8{HJmpI*NW_G_r;$4JS79!-uzhT`(ND{btP^Y0j4D z4p=B-H;KG&lq%6v>cJWg60g41Io(naYRd1YoI&9UvXJ{&q1eCg8W-uKc1y|V{P&RF zT?wcx)7{7R%;VyNT}!fze=cELD)O9o6;2lw_|5KPhf875i_t?CwjqO14X&}2Llx!_ zi;zh3_JODiTm8A^N7^BobftjxGRCZ}tiD|!Y(msYk{oFds1M|0B!gxNiOx&=cb>q_3Ngl9ICQ7Yzj7=L&gDq$?J{p zgM*rpwe`8Vi=Uq#D%PS(v|;s;%;-%7X1hPn32<8&FE~#v@X~0mjCd?=bJo#E_-jf7*HLT?NnUy=I1gcW-h;ngF;& z(85KN$4#6vhsS5HkSq^>!@On(q3lK?Jf8`o(L54mzBI zU8Rw=qEzlgE<+TY9^K$}n6wn+n@ej|^#%Ukg(&4C(+5^8u*Jiiv?oc`$}G9Pl~ppf zuD+9e)J|2!1AO>kLRM9g*DlmmtV{CLZA-0muJCQ3C zvWM37OEkRbgNp7mg+JXCS>->ib$sRs)>_?_*HF9j^uqj|4}OLG?!q(oZJ$INo?1j3 zYL$M2;FW(i$7oTERQm27tQ!)DZ&Gw?;hZuEtPX-+4sHc5I|;AI5*fvkBYNq+%$Uh% zJNGPiHFGSr|8pV}7;WJ-u~Al&VXy+gA>kYlmj08JT1r*b?6UL#1yK6eRIYs%-yv9q%B=oa{{X_$R1`f`kU8Xe z$H7vf$^c<+URNsxps?nl*ow115B%|Rgov4Hp@_lp692()C(gPR)ux-s2hb=38i zhMJ~qWdxVcH7$3w>l!v*=n$ma6@T3NFVW`bGr;}qg5-A#4J=<%CciXN)@Eex1DQg< za)rbmR3%;8c($w_{DV)t-?+06N^K|y*i5b%)EkF6Yx}ov&b|&rB8nGP{f@6wQ6O9X zFTemb+L_&oishxH5Og@>D;2BP9E1zxX9v519w)WA$BD=X7t+3;NRq)j^Zxy2Ci~H! zYG~dd!5g>l!j@9_7XdL!ybsgucB{3?d}JQCqeqF^;o;% zFj$^){Kl+x``4`CKVJeMi;b;qMrtbDfCcUjrDp%I}vgLJMzaFgYdk5#7KIv6K^-I#gzRe2QEefhQLc5=pMTcz6Pbj~uz) zdnFTgdef{u9i5#$XRz>2ZFkfNDnl9`M2!mAp87tzjXpBX;?SY=l$1Oh4&6QEUx6kx zdEI%6RbnXZ<}Jg#`+@S`zGe$PoW?L3@QgBy%iRm_5bKjrr6f0*8CHuKI!fL7O!8AY z`i3Mtq3qf8_4ak4cfx1B;`5D!(F;3#EBvp-j*6sy6r+1Ct^RuOIonaRIx8InP!dy& zQ6>s@L{lFMFO7PX{X1qnZm^Yz?b&l!rVo(zMs~Ix=c5S0kE^P7*guk5x_AFRuDVp8 zCf#`$$k80B9imJaNRxtUBW)6JBRr`|J5Dg;k~Szf`MIn$NSN`9%BjKn_5G7gh2^5C z#2DJ(y}$q`eE{j$s09$lifzeNFVP!_BdTyzRQ&4cJ)1;Fx!W(`xgwZ-aP@Gl#4^K>xDOC6DU8n8BW91%WLmLZq8vX=q~drPskf=QH#t~x=@cSzrS zBatjv_IFfODVbJ(lZ}N%O;w87Q)(SDMkjt6(z-ec`Y)}-d{9{DvGwkLXhl#0!CWz5^boz(c96tct;xV|#mromk0Ok01HV`-xj4$W9| z#Qu!O)MRyQ01cU1Gy_apcFizbS*r2L_P9SCX3OV8{<~$lHSRigstBay+xJDA>HQ1$ zMfwJF2l8CI!n#piW5W%g871rorVUg?u|Ok2Bls8U&cQ)c@#x)Oo}YDN@Bbi5>FJ&uZHcU!Z2$iYUwSJCB2XCE>7JJkPoW`*G&=KV+S{!>%*TSmXDQPI6 zlBb(KZSZ%{IK}Jmn~sU%qr0b_PM!`~;bg{-*_Y+(@ihHxKVBWz_29I#v*R{d-TC(` z58K&?QOT#Ou<>jT=Fj+yw{DwaltpSD3eWGGx%AftBNiK41GP@QYyY&z|5xfUfRR_P z>hyZuy?_5J=0nJ8tIl+&4D8EKUT^b3{REyi8pUj1(4K2+wbre2qcL&;ZCtxU!1G(h zH8>R!`V^-C?7{HZZ+#Y3X@>h;Tcp~dhmPcxn%Uar;o3jml|UW8lIJ*Uz~zF`+ho2{ z0^?3sH#aN|^TZ$<-;&lFI7tUS0B;Y>x3A_#y&zo1ON9jQBtC;$J|-4=lR<_kvWkj} z<9F&pJl~2uuV>YlhjmQI`#M&Ax4|9>!aO-ce;m#7IIQv)YZnTU4GIERrG5!{!O@HLS$Y*c18;!^w%hm)QqRhU#q4Wq21Q z_bCbr=EF+Wx_doLDS&%3dT#VMufX&PR0%VMgdu0hx(!$C%DIXh}1$ zZ#3DvRcXdz_vWEJ7pE~{$pt?6kYj2BwF$nm#~W0HyYKGKrE)Yj#2w{#q40X)`#pO7 zkfkLCA_p+cS|`&Pw8@EVmG4ZBA2}qLz4xMmb+_I>gY123-10m1&CD>CA#5X(vCz{s z5&$lf*`ocX<_tUwKUpV(xiPG`vG{~wwEN0DX*ln^Qmr#j87E`5u?fB(Mp)u#R8TQHC%)w!QG%+%aKQNpw#xzuVH~Homm8x3@=I!N()B+4^pA@!}ArwYDSb$z?R-t3el` z-)FDTRpVrR`s7NPS5H!U`gstZayAsvbkz{dwT(^8;$3KpSzA z!;D>XHf`dQ@hRb0IQ}XZ7jhIXZ z$2=3_bm5XNs)l`5>`i7*blz;X^w!iQS0~>|^*z~16C?y)p2Tcnp8fBP4IBF7Uj+ZH z?*P>xv=A23Oj9)qS+Wn(nG%}3f$0Fc20rxaKC6+Y=oFbJrVyK;T_cluMVP?S6KoMQ3kt>*?DT*IT;jUER&w?o#}RO>mSJv8y% z%nfA9p2BRDsoH^5#(A^hpF|_h&=h|6Ssl~ScI@|DS(-*C5z~sVO>bBFye3Mh(>T@I2*A)X^d58QbFaJf3(m#o42>LYW#0q~pT@xMo=g$!~|Cjtcl7k2W z7EYF=ZD|p(uG_agu>GXwF4um*@|ZN49!00L?J-BDmbDaJ{)Kr%GKM~4&)mv{&swA9K~SQWy`_sGG42ufPq_w3nuuo&_f zx5`Jhp^pQ#N@{%DdBX^(J7N9R+T1)Xh{5VfC}l}&{JJTGy+W^(ktECJ(Xt_fc;CAnwyN}} zfK|4fXOJ98M>HMC@M81=8ATr?wt-a|3l7STr>zoaRm_U_xTFkd1tSur_g2T%g@f##BA} zfHxL`H^`NF4+Gpq1HP>ym&W2NxGJbQ4%*mkRJCS~iY9hjTUt`gLZ+h;+*FldCU<3Z zs*bUrJa@eBC6C)mag?dk%!cCLIN{;ni!awVCp)&F0l2-2hfV6&y`nqz8ar2ErawR0 zDJ=V>RM?@vzzJKFd0T&w1cH$PHF@uhS{5Ob-n>H<$>kOb!*whW8r>AUQFRSmg)j@T z^D`j?m1Afot&dn(@XZ8Zxy+a`y}}G>ryV`mZaEz7QN6n^F@^16p3#}`W3jCvvny=c z*xSGPW(#VN6doayv&(Qfjf^<+nU#h%mE?^n;U02rD1z`V)I{4Rfm*A&X>icFa=R2{ z&X0i#*Bl?3U1X$GTz`Z7ipC`nfjQdK!{erXlU~z?{x`2*FNyBC#6+x?Q$3C;+H~nr zK*dyk{mH>BF5MgKAmR2!|J1EfNkG?p<;)?i9qNbZ#lX247TOR_IHMp*}&_jqq$A9X2C0R1U7*$AS>rlHSdQxXyibV ze#q8~A>4b9cVbhF+Od|jnu*u<#@knBew19+$UPHw#@gkkAhqHys3!OQE=1q(=O! zep|JX`r_wYotP1-hRt|9w;Ircw<~-9E|!`2yV)Z&EjD{1*R|)V3)eoGnVE4P%Vy2O z>2Q>v@BEumpmusD{h!Io|1L)Uk7Tm{7*0E}h(Wb4x9P*)<#pv7?HAp+PixSM>`5A{o%=jP_RyE(UEGsf!bYTOHTEdvAEtK#C~ zFP=a5YIwXAw!FW@u`_W3NZz+^-)`Nywa~`-y1Cg&8iqk-cYpH~1))s5abrisjG3H_ zjEu6f=x3yPSsSUxTyIXlspk?qy|TJ`ItCNqqpfYIV?}Qx#1uf+1EA|jhkiKL{ogOL%PTEa%zraPTHBv#S%JJ7_`g3dRSrnGKeUgKc%oF}5l zgBNdvivCF?K%A$7Ha9mnNSiNR+`4Vs`oTr@k3Z342j1S6kWW;q1{Efk49dn$zJ)o}KmUFtHLY~-UJ4DEVEl$88YAG>aMaBx6k2@9j5ic*&D1m(BA z8=yyIY}d^pfLh!!daZ8jT?9zY3VhF;nM0Iq+7GDp85$~_#4_jT)g<=S6hp4 z+p+2q(*7O-E@Z-y8#ivWgiDSj?i-PLpL75I3BXzY&vSFNZak_d0v%O9J7x{X-A#(y z8VPuXBt7JE*MO_%Wnr(UL73INK2E>WS_k$Ug0d)5;6O9 z?v0%HrO?n3hS_$uP#HO%I1enf@bq-vxgf3-9~;Z7f9IyiR&9NH>RXN@z!W$@*5<7f zVs>_~kIIa?!yS1=Es;nX9_&$5Q!8rkC4_{8pnr06ENwQo5dBn_W9`Us`p`39!7=Ae z#t~NadoCe;%A}#@HD5=(%wql09D=T)l#8+In01AEbt9(I+c`NkLgbq~hE%QIUN(`- z&J}s>FyK6U>a4Em4BHL-^cfECQz5#vkNitL)E>;IupR&sYjho*Lgw_7bfWp*yzc`8 zA$%|rWo2bO(XcU7pKjKPA#+-r@7~l+;?VJDu!)v{LDGkojqEq=o3D$Q+z<-c9_0Z3 z^}#U7ceLyiy_Ij4l%qXm#abdFye?Y-jZ{=na4Yk0Q>&3D@r_b-TT1vF$sl}c9?-UoJL*qmZn~AVzLVSZI5NY8V!wRHo*!Av8M_F3 zy9m*_2RS~b#k)JJMT-C;QBqO@NsEqO_`#>05Ail}*Jc!jgf7344;|QgJu~wSJNM>( zxdr}9OH2OG@;Y(~3x!{FW6>42w$|L}uV1fxl%jmaTr@MZaw9{AwC_CT;yCJX2?H0b zWVX9uK-J#fe*OA&g}U4FI-FM-m76mLsOcH$2Kg>u8Ec8Rr`xp2eY3%f7cbsW61x+G z$6&r;EHA-pZGN zwGupg1@gj@Q?s%vutK=NSRj#_v>R&YnO5bRCvJ2OjJxqFKfKyK{Ckh1M3x?#_^w@N zzbuyX?HJhA*zxkp8=gQ{<-Z=wwMp+PR8j>6LgxeTIkW%sXKJsa|AZz_wO3q!o*zeA z@vU3?QiX087ngI<6*sMpV-Kj!13M=dPtQ9!IsMQmV=lR%xT_kiA_)E11^%hKTS-n% zKrsMgcjYf$Yx#>e=w|558avu9O@r{Pl&TWm(q7UPJdl33?jYTtkGx@6TtXr?I+|p8 zvvNUBL_|bd+ULTB3$Cv9pFjV`kLKg!qot+AM3Ds0oId?{wFHs*ZBtW!5&C6gRvsRy zb04q7$A7jtJ+b2nNL$aC-_c@tgMMMV(e**7yD{R3%crh5QXLbQe?a5UrM^NODqkA8 zVjV$ba>B0pwBpLjujl~R;(P}Xeeh}>AQTxUQHL@83!R&uzL|*H-uG$1(Uu504;agG zBywXzm7*ftJjzS^@c(!0*ul+B=&vTfaOT{(axO*H{&slG_B)>5ESDtW5)&Ky1(TeT zq!VUlW??5DT&cA{lRhZo7DDXKc?(wfkWW@?2qN0H9Xs4~5pHYditQ_%rDL;7Wb|Ic zKcNI>*2qFaud1Q0;gYWFg%SJisFw(5PEJmxvw-Ch&Mov#=656aHy+r#N^bEd8M;(q z{in~VAN;1ybz3k*)MRO*z4hhAxwf{pcu!Qkdi1{PWJwxs?i#Y$X^eeMUwwImR7Ewt zmgo;L(9=6Yow1ebJgRFn0hy=b37B|zsQJ1=laTK1>zl;qlyUj;W$+$gNg^jI8g=4X z`qzcP6KuxZ92_=>4~xg#byCxQrG#C|yzfP75?h>|okNMAdiw_6N(@cZq4Qoxzsz0h zPjh~4ZOwSIiR{rw+utiiPfzwd*3&(BEA zD=%HTgjTST;JW*eZSs+)CI`A%W=+h@vH>5v4DZXGc}gi-BYE@YP3v1GhFDN+>d0@) ze8)Y6g(YvusLaL1rn2}BxaEx z+J5<_>^a;1@zpd3sylzDejcY+YvM8wMtx83;Aku=5>a64KqDf(WuUFXId|i|V6S(S z&Y-u|^MGIP$T6Mx(*GwqLd*1|xHyK6UeN6D3`O{+baZt;#cpUD3IByc*p0=D(kdz$RX%(rX$zxqbprhS zDtq>v@A>rUbyRMGS9I6QhU-f~JpbJ1--bY`H#0KsNv+x_-cQ}wVa6YCrJ;~ES~t1< zL_;#S+HCWAo^N$+9xvG_2D9US>HSHx#8a({9z!A84zB^v7+4QS6frP$tqtqNtnU?X z{}Y@J?9QGE_;aoiqvZad5o>q$AibxWj>Wy046{?ze|;RC)ONQARNq5+7uF{`jomSxZYx9B9|~C5#9gT-&!l;VM6S&d*O}Vok2- zz`=v=Rk&Wmeb40OZoxSd{xN2K*+6Q=8*>+xR1bK7n-4h}Y7+mMp{M|&aDVJ-Q+et7 z_0GE@(K7)ksmx7XU560Vz~K%c5CHNaQfVL2!mV1JadYPt7A`C=w>j`=jp@N1{aQB~ zFGt7fQ;XRawzkWiX6nt48GOcGuCIC@qUfR>33wIFF5grELBsZQFCz|7ZQO_l-smL5 z!A){IMiJT;G~9=}Ma}8MWZYkmU~ubfy7+;O8#bH@Se&2#_48*;TpaH0X|RXg-Tzwi z_WCu+uZf*~zoq3PsP$SfogKvMF9wm>1b9bekzNb`kM_v&@^e~R6!V`yeVTID(9m#n z><7mO6f7OO8LwMFG-jE#A`Mf2x{|h$c{!>*csoOtizE$*BbD=0M+bk*A-TMV52d%p z$HaUtaoJcWmpxPt6!Z5I7OC-gYD{8I<5q3m5Lw!mX7D^JD#}<+S^3ZooBDf4_nv&b zA=63CuX#2}NiLSuw6x^EdsJx80xrC(_X~OV;l$iE#I*790u()-8v#rgaBuzxfmi&lEEamQA(a(Gl5<}P;kR^ z7BW3lD+f3IvKRnG6Iirn7QfckYvB*co54waqriJ)aO*}(9$}C;bIk1KhniVkz2q9C zVhrDWi&j-tHNSU>NE3-1OXY0b;Lo`u9Mxl(wK8qd)|9H!VZsi>wG_$lp~}oBv!2@zw~pr=E=T^gg?VTd_AW>*sFTSh`A8 z{g9ZYsi}t^YQ$2shS%+S(BDKiGi9ccBo}3i!-pTa(k}13$R{i|G(4P3Rj;vU_+x~# znzj;TjR><$@g1A%<-Oh&zkI1qDZtm<$;rtVo)(`vz1j9^!J|iyBCoo~PM`7fV|mMY z!@7Y0O0tL;KYwU5K5V;N8l%;qnD4flL}g!UX`by@Vq^6)OZOe;)<3SjPpGLEEe(@y z^Al^0e44ZqbGmE=vaBh>TbK<Bx0>^$-{daUY^vK-^x)}J&VAZ;O27w#9CqmARag!5Z&>nT>GDZmZH9)F|&X-k(y(Vs>>Tt<8mh zJ)I{z@Z6u$?mq-dl#V|qCe+X=VVUSkZ6H)Q>gww_0Kb0ys;Gdp^)vdqsV)}bE?l6np1 zh?e{Je}6i8_~x(`+pFhKs|k_XC%^8q#)S~sR6PFW*(~}U&Ie^>*uhbXGq0#;ii_1RE=ZiPJof(1e!Or57@QBgRZIuh2Wmx7 z%5x8zyLWv2xJZ19A+sgMD3@>5U<%z_Y{1C%t_dZjdfDsPFH!>sm&*rCf>*j8<4`|) z)^lpHTg&;DNSqP;Y++$xtq^3vA4wca)&8XU%hjCW8H~6tdL$_6zcCIA`F$-% z)Pv)KVI`P{>BM1o zi4}-?m61fB{hFE~VRH7)M>}>L$sFDjxbpPNf%pjb1waq7ju*#UBbr-U8iOsEbCc$u zrYkk%zQCySO-PsPhvDrJT0ueTR+8f47k@A8qA)Tt`gVolW@_>*(3N|a&CeGt{!y5NWnQ- zN0e3`#X7_$S?WPmu4=xF&po}p*QYw)CMGf;N(?J42isEY;gti^sp-Tp^q#L3&v(h3 z)p--P%Qr2JG5p;c*1jjOO2x#)$Ov9EnT0uWhub~Ly(%iv%(Tbo$%K2P%CAgGcSZ~+ zw;YpG8$Y^?0r%4c$sy6rvDq2&k=wbhDobTfUl$Q_;b0xw>66M-m_{k^JtU*&rT3zC+EUe6h1coR&+QiaJI_~DF2FcW-^fWY_ z+}zsPNGRvmR+J6o;p|7`x4C_3*n@oFL~jMxs@~QFwxee`d$*YPWO3BFSw1op7A8T_ z6%aQFwa8F6)D^k_1 zdVi@quWtPZj?1Ql!Qjf&=RJiric6PxkMe9;Pk}8#MYx@TH|NM~(E3dJQ$KrkioX)f zoA{$@AGJ6Ig#(7`9GQDj`iuuz-6Bx@Rd9aK_EP))^G}?@PyZW|{Qpv|Rt2L^hb1ZC zDj0r34zLO`OWbZY9g9H!F2d^{7&2H|TX(?>Vd2-|Os5*?lkThlUF7yu`+oX1Ca!BM z&jOn3>#3UCsyi5uf zeqLT)HZ~tYpBWdg?(cW>@sWO?r-#_=?L7%hZE6N_-);Ap61^Gm-*eLkRyxFJPuyC! zo@xW=OhHKrKx+{YLJ$VFaMmb_+k^*K$gmA1EwYuH3ucGDG{fJd1cA&AC7?C$S2jeg zCjyw-HSX(ub-}fCMx%5_bEw(uA#soppqc5A?;9H0dHy6IWoMui3-gPMSPR@U-ck-u zhJuQUiWiTJgSWTTGarzVzJC4MaXqd0!GpLw5y990;K=Djsx0AfFz~aFQptY4IEyXK zi}2w+DzJC&krv^m-N=CtO;kz)>Iq&yhK5!^RxdrUfB(^oAhb3#7OpD_eHX_uBc=To z(hLyxu+9=wGc&o;5)v&7y@ZL02@=o#{{4LI7QIbF2?GO8_$7iuLNhjF-D)S*Ao86E z-9QI_y|3szhU*?-xc$h6`04MfFPFW#NU+-?dg}CPf%N&gxwLG*40g4Jy?tmxiJ2)W zJHvxKt1y|Lx;6o8IuQdSqs~cU)!sjq=9?CdZQCw>ay)Y;i$% z>`O=`?&WFs0o^TosdN_ZeO^mMB5W{Yu4H9#%kTtwhzSVPjq4CE{1b-yVEKBir~Si+ z%L{1oyPtsj2+ACZ2KRxd^f?MX>2WxvFp#{!eanDkN26vndK&joQas6vuRDd!;DrGB6UT@q*~ zD$rC^Rt%|5%|Prq^9T*{2cd9afUkAI=>N>{Yekgd$DIccCQt+V{eHRapC;hrhYw}0 z%}G#lq8G;GIGs^!nG?4GaZI*UPS(uxv zz#%s`H$QRW7w~}t_YOL#2{rHJ;|oy`7ZX#Wt*fh32aydI57~cgVj`}ndtrWl^(&6U zoWuGu$F|YY(Sd;h(g&PT-L&>8He&BCIQ5{)h`U;~@t=>`n4it$Qbm{^-0<+j`vPd zx(2SQkVn=A2L~hfwbb{*wi|Rh*n9u#E}^`c)Qoin8ZS$O&*qsl@W!{W&ociGy>v-* zd~D1XE(9)6BF4tYAKSvM{|zMeM9QO%kzDJE$De&!zfA;AF|{{ie0;o~;L9eNx4YpX z{1kxM!L*yYxwooHjfGDxcPpjaN^DkggZ|Q+YWI4ttkX@01}oatJdzBY)Wn*WxY_`8 z(OlEsw~QHXVw7AB+_p`h#>dA8xSoLv6A8FMeZ`&{Sx0Si8Vp!mZR}}@@<56L^`IP@ zl$HpaUWB2~-Y;)*oj*zWaRT`fAvnY2l!VRs%$tDCBqRr^NB~kNO(NYspY0g^ux;gC z#q8b%HMDiX>dcJqbKqKhHaA&)u^s+Vy2PlyLQ9LD9`1PFp)<7>T@c-4i}}qxU)>V16P8{D%M$&FbP zKP!%i{fWXHY4P=SSC9CzQ21l7B{BAd4RE0#?PdIMxKJfFGWDCRrA4v<_r>$h!r`X%DhfYYg$@* z%4Rs6d;$UX6pa8TYmI~<=^nxKHn)1`GfnqOGFttAYCQS!#qOSz+4tQqH?YmhJONxL zBbqBbd`swhhtg+Ejr_O2>JY813z9u0BYr4B;g{aef4?^)ruE-WXb^xmrxT)dgy`t$ zVg9j>$SK3)r@0MK2)a?*azN|+z z{q5|(0P1ze+F}2ym_%GA%vL>8H_2=HSK?X?rZiyh$!p`I+g$mxHsx}z?VF{y^qWp9 z=>9o58E^Hy)3%|F4A3DbOEmxH;HZ#ky z7E(+y(nPwRJkvC_GyXZ#ALJCn8zbp#qbi?VX5!Uhj`mNV#7_FK%XfeIGJbH3ALm|N z$dA3^{Zdxnmq6yfuFD%m*}jpHk?!s^m(gqc1mwRTT;^K&E@gUE>Q5g^)E%~3bNUnS z|7)=G@h{>r(jWpDIWwB`$u=aIGiT1Eo%=t9wNNjr(pBubSG9*~EsT1BVZ1-nbzd;Zg-|RL`&vKkp$=jJeUl zU_vlHKRX+9<;r)a7QH=>LTQ{gCDcUq5v7HcvVv=+U~(xIiXDgQcnR2TjI zndGsi$s?MI%dz@J2sn5$otVjzm}Uh9ZV<{_FB#IMuLb-aCo-k@`L(v_9)h}b-@Z#} z@i9*cWSpFwB8xlwgYnrzLdccB^b%aF5c6CO0?N?&0@)K2eb++JR`Jra!X-$Ij0%L+ z&jG+`40U_0b5?=5R0XbX)q!PzOcFW|Q2659Jbav;wVun#@oeni2&}zsjeq0$7ySq+ zgCgYllx5O0?^2ZG5#CtnJP78zw6Cen#fy7>kvPVvX6ajc30;bpX5yp%0ilmn_$U5+ zk;cd>;ZT(oqm(#erv8gCJG?n5?Zyp-$^aQ=}2fwP>lm1Cg4w<4=)6_$b zN;&D_aAM2Z2kJquwrI9Ax_dYw3j;oB(Vy@u=ZbkFy(5(OrUE$mTijdad8)2`w;9TO z!!wqt{?ANG`%R2XqgoTxYONMjfG{n4R%jFOn12E~p9BtfWokLZ(dGqE0n+()I zw{~YvyVHPPaq0(nS^NS5r*4MnTbH7RY9LunkSH92bRmNZ&s{FHJ3m5MlA+!~Twy;< z)e_xClQ9=l_MJmTUXrfN$&lKBE;b~&K}p#zPk*~>7X06XO$`n2+`s=SZuo*%-}ZmL z+HcE;Ha0fbTt3eM!|Z#W?>g|MZ_g(pN)xtxopW z-~Rv8sd4<3%Z6{AM-#z)E+`9>KHT)4YsRLgRp)0Ls_Mfsa3!wgn*o4dEy>Tq7#)*) z&So@6+>2ao$|`{HOu%^k9Q#AW;L<`K>S)@O$9M&NR%;A1*hYwc zTl}?hvdW5!SwV0ekn;}>)pd&fWb}9r4Oq~cgD@`xV22-&NKIh#T(oG>bX5@45(AuO zYWrkVVHH9P!~waXSiT-Tu?`wNaJz*;a38GV=AO>nu>g7S7EsrHU~S3mU++C%=Ft@$ zmruW(r6=mr`Vl-N$|KJ4_V)Iqq$DpMPR>k>pKhl1_Gw#2E@X>PtLo}f>+9+sr>0WW zvWbUAYLag?FYl&@>A*!yxGksz9iX5$h3<9?Edf;%!6 zUx9KbIx|DMLd!xNC3 zvb*{?sVeL=c$@OSP`DD_HZ&N&0Ff;}y1JMQ<(5jUrlEBIHJ#X1sh2*L-=~u0`Y^HI zV34T7eEy$Ikq2?)R
97;BFXK{?!M~%pBs`&!23`D4ZhETys-nFqzd=SKnqd z-xOTV5a7b{8iJ0M175i&KPa&k-dx5dWg|0T!*ZTx+=a;k2CZqMHbSfe^$hRIs;Ynh zmaBzbEv`7UlGe8uF=zHbASjzC*&pnK;lw68VW9yPT|_qehgg!RzLAl#K=cV`Qip&b z)xw8MPMOPGhh9co=$D_McW$kbz&kyr&mscD7L)G zaX2}uDPn2)*yo=9wYU%f4?W66;VK=hZ{N61nz*d2aVZ2li`GyqLx7lmdIHIFRnJ9| zU0&z%mVyn`gXgOIFsnJqi0Ewkcx(i-2pZGrTgiblvWd*x4`nrH%aquxMUtOm4xZJW z?n$VRqHjoXAa(GS({7B#ZOIQfCgU~LDEZMd`za0&6M4XB=?&)J9F{s)SkGe7sK33#N?#XA-_(2ea9)>dOqT43d(+X; zf%c}Jd0g)=2l*93I@$~q*@ANsbrAoq0uf}hW$}AE?M-iNU0r3Bl0+93ZQ9J_blY)h zilU!x0)Do&Q&8A+NwI1|I?`3P`<2u%s>~L*7Lf5hZM66g-GIo#VGIQH>~7UKCl{Bn zB8jN}Z<;HOMMtPEqHp`>?EoJXU*QrM~L%0HH3gQiG+( zLkzBQ*W^Y_-TWos3#O9G&g(T>?~`P?n3cE-xQLPxDZ%KNJ{6@8G)7I z5-@bn<@^ks=hpL{((xeXjouv~P0`99*Ay2QC(gA`e%R*0&&vzmhWFP&(1wG6;a?7d z?nN|D507#+VY~ycBqby=eW5JhEKTe#0MXzC%Szn07Vk^Y>1>3Xd5+j|W05Bb6k`Gl zd+?wsy?FVOxFvh{O3;hKOW99CvwS@w;>`jyRrZt^+-Y=+YHq#$-ZiNAneX$8?O12@ zeHS3E!lC1$<@x+I)nZ|ZFHBecKHjwSK!~7%5nU3Zr1tEo$IryC+fv{Hy(fI!;V&2A zw{X=Obqz8IVhoFN~)-nc8J!I8G$AnH*;WFpbGh7|GYg6c#~I8aeY*$*IM%gK}KHTDOXgLM+CD{(5SIZ$Nvl^at=FxRt)`qyFurW5&N9 zUn8HVv0-5sQaFwx6;>Jr5-}TGWEp&5ABLr}7Qib`o_zHD`SbQeV#@sJH2Aini3r_x zz}#GNvvuCo)M?2b%X)Vlg`G2ExvaoV*qUlj3I4n|f^0LtfPwhtE7*N;$Oqw2EiEk< zE-X-cl%5V7o}e&}uNYIicy!+N8t&7#bMByzjrTe90q| zG(e3z=u$bQh$)A(>BXbFbOA;*WU?^V@Jh5|9+Ogwu7u>ePp$ERap5+g;V)<*CaWv z(QQ04(O<7P8fT0UNfhLONB8K=IZ+>2)!mfrDb|^CNA{L$@44quCSxD@O7Eu8mf)^m zS{ZaIIU^`g@zNMj;6=ZX-QC@t!RbnwwjC*990E!!cBnO|Y@Hu3>+B0`p39VS->fw5_2V=eAwOFL_qO8slUE(MS?&x2$9`2D z!>A3D(Ni93k?Cwou^nSQER5+xy$ygvU%lF5CVz!nx61U|J(}5a?2m6 z1phrLOjsNzefV~`v@g+b{=YlzNqwX9STHKkf0tUBuTag+%@|gdvaZE?3!^Z>P3D_6 zSw@-LhgLWyriy9FoNr40r7xavLAM%PTle5b&6)OXMRwt%)YP)f$-46D>ZrH1b8{=} zh+B+hNpbIEAS6zRi0C%`t~g&v%`Hh3PxbsL@Oy1@EzC;iAQkbxSy)(z@VHoMEiEm| z)vHdWO+wX6)Mqy^Ffc&pi?RtNq5q@gWE-UAO|-9Hf^ik6*0AaK<2X`N!EP%mdSW;Y znaT5;oAbf^+ZzK@aC`6+s*A<!VmTN|`G4O$N_{ z{QP{#`54Z60LZczm5`{giw#x!@ZkgE5WV62esR~8T3hbgg-|0PnzcG;(jk(6)F3x# zYq_c||H$VrU$lxQMDBuAwabLk8R|+wFX{>oj%}e3hZ9hlSnx0aN`PUF2lwq;CEUBE zNwgaV^r-7E^Ofe|#lRZM!TJU7&qQ!sO-oDLriU#$pR#J-=0XljB6W0-&F@vHu?73n z#~61TuPh@}lGS7pUe=8t?5KE(3pViWm|cok=5>c1UT$M^o41l3R@SeA&k(p+^(6~Y@EjFOx=nD^)uImWMJO=d^&a5C+24|CzdS%#HuIw$-mRTNgcd?;FjY)Z0Z=n(9OTqO$ z11Mr=JUvypc=CVM;1a5En(LkZwY&Ee9X6#L5%=2!R$~%vEsjg*7`LZ4Xs?k?+)~kH zR3m0FXB{lHA;LH1c|DX3My#y#uA&2?>inHdE;bG?AB>L5Ab-?tk4%0nzMwx3jP`z$_CnrfR zS4~3M>n%Kexm@pD&n3ePJ$;`(30@M>-x<2^uGyfqir=p4HXPA#>(*~pdc)|nrQML<1N5 z{`h+Ep4JJKQ2EQ3RXu~2t2Zu^NB7awD`Oba=eO5Th`-OKQu($8@9#Edh8ri=glj@o z;r{8O%t_}96rkdK`uQXrK67J5JFCUwMrqrJtqPs5&KJwoHM&RXyYiK0>(~4giCxF@ zK6CQ%bZP&5sij{7FjzR>#{B~fa>Y7BZGlu5$bNuzX8mx@T#aiufrrNlTuxi3^Ixo!T(A;&vc<1yGVZqb?&;@0z&X%PU8f zzk0C0pOOq%PdxwmEMKpvW?3V94u*Y5*IvFQ0du&4^BPZ2l_1jk98x z>6n4zSY2)cvq&rza5r9{FvUGiI*m)&*udLtNVt4j~i~lW?U`ZlMQ3=N|9Eg?R4Ns+n5c1VB_f2jv=21u?kAtj`DS z3>91b?O130y?y!y1~$^efDdF=4Dq6L?QMzD!q+0wt5_>CMIPxOs8O^w}2&5zgtY*Bncxiy5p@-5IZ8h9_Hqnof<0Y4l0}tTBY77 z`bOS4`?wV73J938n>sr3ki-#mDn7JTs0ySEF6v!J)#6`P11TAS_unfjcII*&9(jL{ zL#V<^3M&6BWr6kKI}VSf@WJ*hC70B)h}N*yA+%jb5@T`a%QMn(JFDNfwe4EgD{~`L zX&3Usq@sFtrIHzGN1)W?<9;2xmuu{zLv)AJ(vEgslq zxnH$XAu(<3l9gX$IVHxRlwrMPmvTZ@fI^FDSaC&_L7Z%7N5!pJ$<%mn!*5R+$tpS~ zhAWQ!F@W!^n{jbF4@8y_UQ*e}&`|dAWk#0qpjWI_HtM-W^xdc+PZNAo?<3q>K*|s9 zNCo-ZWvruD*h!9D*#h*?=Hx2BN`3c}QP@?`x>cG8a`Z~i%rsua6R+(+T`H-hwU19c zQ7vgdJvOQ`+u?w4rmUjQrHnYiui-D~J8u7#Xma>4HnQ$KiUCvsM~In>j7}b~h()Jd zT{HjEEmBe4n!tBS@cYo0FV<>l;kj4|Dxt3afsY;t& z@AN-tBL7j7|MTte2{4YJlfsNKbp`Fqs*V?)fy3xmo>^O2p-IH6T|7mQaAjred@7&1 zx&Q=YuGsYybqCXLmMcc|LE`Z`VrEvMw4reb!!i1L0DY)E@SN!Ggf6ZAJUqZMs;Y4b z2?kF%IXTh9QN32Z#|N5MMotq3K_ID9S0LBB!|}Y8^+=6efeU6MONQNOH2j0njm}L} zNyBkmU^?xD3f5faIJ6eN6A(WiovMO)igAMM|#BA0rke#BGT}kE+{i6ECf(_*Nk?F|iX1HiP0I($n1ugf20@ zuBpi#@L|gc2E$hgKxohzv=+EG$Hm9LA$!#h0Su0Jn@AF;0U4!A{k!jtx__JTV%IYu zX-$OYBceivn6Le9_hDf1^!5FTCWk_`=Bka1nJAQ4*icqRSw7_!RZ~u$zCH}m&(T{X z@Ayg>i4^QZbX`^F>9d2foxmkn9HA+Rg6Ybl`Z=uibC`NtJIIj8O>DQdu;`>vUxJJ0 z?KX~bfF=c;NQLp|<+OkUnCI_bu;0K2*t6*|uEWzm*J0tph12)%-n~2lf4Hm#nfwYo zT7s(kPz~zV;K0Dn3V@ee6%rX$lu-9qtyyD-?+b()xWtoXb;n3aBGJQxgApBos?H-c zf*`yOGhn0cQzSMT^%{9}ZKHtkow zZ%+AL4u7oUxLy=00|e&hL{%T(fp~1lc#LLI$(PH}xD}|viBf|yLYDkJj9ATO&E}lL0DQ8pz zsbr_mobiQt*h+p`Ct^9VP3h&KpF)CymgosYL_}bMXF@Uru@=gVYtlW8vIBGQFoA9L zLE|z62pf)RiH#exI&D2ku5GI!|8p^S%0uC*uit|K6mb3=-g>ACBgqF4WyZrZ(9;tc z9sLZZ57~Ekh({4(z{fW=EO+2B~*>?}Wf(%>Y zty>}2u3?Mnhj_&kErE3ZQ>eO-2B4+8{RLWXSoIneSNAqN1;WQy%S0_YYEz6xLso#{ zJmjT~>(!qJSgVaWnwrP z5E?4>9h3AkNDFS%*=Ohm-9&#_;7KKu1zWCd`nBa3|h>g$5Hj$~Q9S6i;UYmr>qlw?H61^cW$2h4JL| zF_K-4<>zJB8<$af^uZYN@IwJa$W%11?p|zn2ElDW++_B~+s;nh*>tk80fVfIm|0|p zL~qO{<`8ULh20-ApT6@7;J{s6cq>!zApF_50qt9|Y?|J}v zW70#++GzW&NE9{G2iVWLX>M#xW&*wd9sXX`q-5Me2K!*8Rzka1M%dgXNl%mo&Ijxf zr*KFlo_6!XwqjnuS^n>U3*1ZIjkNIXn)WOVvWHfcht;c6t@V0U8@XSDTf3&^6)-W* z#}KWf=LHhiNrq`+{TvXbq{WVMKJ=?5)n%&5%d&$rR4;;o-X4~dsHv7hGB$0S-TtSU zo4weZvFxB@dJp%ai;4;gw=ZIhTJbFBdymr6T(Wzv7?E8Q!m9lPjQJf#sYyH<&mU_I zYFZAxI7<_i4NNQU0Of(0!JVmSbYUNCYHk);V{_O^`zoyK9Q}7zzWUp|C@z*{TxdsT zIX)*t`Fu4Uhq+#uiRL2frPC~{IZe=N&!9pMu<74ab-((`f064Jp@^b5eXz*eg9G5L zF%DeDzLsT7P1D&>XKu@5Q0)n;wky3=ICn{^lMcX*tqQGgH>XK|=@Q1ltu0ZRC~W8HVS$Xvv8c>O-nH`E+$D-W53V zKoo#m?aO*3{G#^!WINut&ywXwz$;A1TSnExz5megF=8 zx$)iI7cbhnvf;)Bde#~vj?X=f1`a3)G!hTe(pp}4J}gT2^YaVM?UH9d*neRn2!t$m^o%3 zHECw)l%;O5WuBA0{j|$lg%if+=0m17v*qtH^$2x#>0;`K*XNbrangQZZ8m;6c4hmM zCy!*?b6$bFNtQ|bIkawgZH|SYD+FPY6pi%<5c)v^P+MIM4@~6usEpS*;ZY!)HG2Re zf>C&_CcL7x#M0p+25nB#BVT&RDaNV4 zL`-49kV{8zZ*u$YV@I%GDK3W4pciAB`g5a6#qvmhh-Y8k!m11!LU^N`Kr6Fs0?GRv zl(O0axhKs@GR2Pmd)_r_tAcP}1xCnS%a0qt z`Ie`F>DBDoD%*IYH7g=hs>1kWAwCRZ-a+~@JiLJx&?qAy6u_|4=atBjibFT|2_MSb z{B|rUHuUq=9R%UKc#W*U=JF5oTP9W%~ewIzB^=tM-f23 z!n5^p>3V7pM>AAu56~X?KeRdOB*R75=AvN@6?cD^+tsz)-2Mz$FLO$MNU!{^L^W2l ztTa1s+g31$p6OZ7RIUG}!Z|DM$G991~(=3oa#B`1>VWNfXZHNm5fhUL$sJdB zwa!fR>6?Ay`Kf`ZaLvi+*jRA}Ehq7%o9~z$(n*@=WxN!at9R{(qvYq{ReFpf6|$C2 zyGFB%US$aKqJx&J4GRlH*+LV2_vqTxFf;ieOd)s+T~(H^aIer&DA(p*alF+00#)Eb zM@9O4E(t!TO>6b&vK3ekCbAZuFF;Uv{WCKUvkQ8vNnm=+5(9-aqr)f4QM6Sxl{}s363PH92c5o7ymP zz_q`>>>LveJ8VXVIS@xUFtj;1IsGM*_VD48$B{8H?;9Gz(cO`pv6g)hBqX|9a1l7w z(2RqwO7voz0l+m0V*vvqWRiM;R!n(f=qI)W0JUb4*nr3yHctZ**`SfDp|Q~obpA|4 zW#uljF`8B{%WeZ-d;4fcUJtLz5;UcdOVSoWO_YRFcqtf{f>?ma>k4<%ub&8IZfZ#i8x#Yffp?Ck77pkD2k_ID;{<~a0UB&myjb$U05&Oc?vEz!Mn|?GGdEU^gEj_r#TbK zbdFQ2+yHY5;ENEU%)qotGW^j-Z>(jS9h{w0&7Miz+09hIyI8eeK|q&tPDJBF(5n-6 zr1jE0Mmu+QWxE)*_=B8rMC%w$DYhaRIDj@k5nDI6FgN{=jq-xzrP*>L=u-*3X6$7d zKQ9i}_vaEsj6}*9#r+}*3%9FAS28NLK2sKO!Xk>iG5MNr)8p2=#DB)p(+sv~zAj#O z+iSrN-q*LjOYQN1^aW&K3*V-=& z`JXbc!HjgWv`zsh=UItRuctg)i$8HVCMipOVH9N)EDVHoN4%@;$IJ2Ft%Drb{k8p< z7r`zVQJT5J{}q z`jzJ6-LXM=B9X^B5!6=f`)%Y1t!uZEb+5{eif%Z~Nve^4TSYaWMCmJD^?Sy(`H*(` zmw|yhjP6Y{un{Tt#pp`?;(CMWc}(0p@-|0KPSL{_A?tO>^gHJsNxFoxGFRYi5r68~ zFV4ruoEGk@?HuoHX}PWDoAn>q?m{9wl*m=RR7dp9&|QEx2n%xoU_Vp+ z{_Wch`iYhVMg)f8d z;exdNzxhkYRY}U-g5k9aiMgL+$ZY|_JI^x~LIgGS?OPRtfYVhv+Bd-u7@8ri6`KtX z36ZkMGY9naXKu=ayGch^H(cN-L^N26Os__fGcxD+Q*$S_cR11!{h?9 z#lQby&+&voW>|h2H}k!>!ZXA`0a?K?2QLtOVv3@oREU*ODS>1F76u@)qDrO{`4g(> zl7eCoyUWbR#>UPLn8y}gapMT`X#h%#Y+)gV&=^gry^w-}hrPWx{7rV4mUdf3md&-Y z(x8DnhFM|q@SZ)}_QtYP(3_n-f4)b4X(;a=!@c-WDZSWD1wId<@ORD#2qdBk*lp)t z&dM4T7)YC#=+^86#4WAhpBl$SL8|aUwHm}2i$)F(58LViw90esxjOVc_0Lml{soSK zjUUQ|MMM~BH({}61=cx>78PXlO*B-{puKHEeep~9`RTme#R=je)BFBJ|Wdu z_LeLAdJ8Zrq5E%?+yKd(QsP*x4$k-Jg>ywmBk0IoaCdV9bYvGligg8EG2wzok{<9u z=_TwJ9}^=+)#^Y~0Vk{djnf%U5G?V=)|r!LP_VU+YS$V-YG8WcfX=$suk3$v@?2P4 zi5N4a6o|+tP&_#p?gwr;15{eFv9r^NKVr#*E3;1523|C36Q6`4-eInlIL@2ss&cYh zC}ATNGm9-(ZZHEf6?R(MN7%`(d?%Zqwvr~xz3&=HT}_Q+KemY0zVsSj|KT3J1%WIj z$gu{6P(l`|g^?(%*CpA3G$CNU&6An`d4sU-cw>}C_bQr@-le+)a?`h@Y%#SbiGa+u zpd;I^w0`gyDQnfB=0Q_OsObPGpw&VHg=&$>Qx|(Zb-YW7?y@3gOioep`W`*oORMax zxR{d0frK1ecVm3>S|!ayz7S4`SH}6yvI$pOVn$gnplPN3LX=HZRJ40v{Q59F=g02R zn8eNa!-}U{tE94ZtAd^+Co?WvvB{PI{gIm!MOoHp4Yj1SghJf{!{v&Cp$85gv_9qj ze(UPr6z2>_HHDQ=|GF>7-!EJh(E87x(`K!9(0@HGHizgs71EiFJk*c=iGn0@8S%Wn0&)Wdn?vxrxNX3uIG z;jbEyLh^^Gqd|srXs2ECc7|+BWjXLE165eLhH%^K?b;Q8>z19fsVTRk5Yyl0z!d`6 znrJEY%u4A5!V8lRA3p4`G_jt8${ssD+n!>jpWcJdWP_uY3#*BT4tZm>GV$^=1@Wv zZgiWn*r0NiDCjXCL`{j;sb@W<#Zu1T41Xr`egaFW%(ggs)bKqNI{t+|nX8}JB6P^$ zvKt_)dZtBpZOs%{Jtky|-#z**N#B!dfEzeoqgOM@zC%HV-|o3WZ7F~;;8U?jAYvM{ z;#Sxc7n*NlrBqB#SYq}eUbf{1`&~V%by|Xk0}oP}QWn0s+l#+pa4`l)P*m*s{9mCx zu(9vkCvqYuV|V>oNSqFye1@2ap6+gr7SKX61WjVQpUX9V zER>f`Y+qNN677GLzGvAXREv$~_VOfYtmYFD=HKd*kYStOvh=JWpXA4ewOVQj7%(hqbJAQ5u^sK$ z$PcA?HVY`qrxnf&#n>t)AF#XSlEM?;pL4i|)+DpH8>FQX%Xia5Z?T!rj(4%RyIiY} zNt>0zUB;LaUZ>|)zB;CU)j>Lb81S%&^xl>FYYTn7xC-l~=VZ7J6Pvl{ae~2ak-U*NklticnHLs1o|Uy4L)W4!KleXUcXazat$yVQe)%6(I?Z zZ84^-e71jnLG=0-m*_*jbpr|tntMZ1eA)R{u32-suX42l?W3=}!>6e_VLCU(JB8LDFMJVBqXGX31FO359!2A3?_$(75v~NmfeTS z8qiQnrcjC6@5^j~6d4@#s7SpdU$K7>AR;t=nHRgD;O(!DqrEJwudfH83fpH@RTc1V z>2H@e9r)9%_maK<3x&YPk4O%vf`k$B7AQuXKsQQU0_)Z()+nQh;s7GFOz{7^orwQG=Xi)s*jJ9kO80oS^`Ndvc+upN_^_i=daa^ zD{NS9%e*+!zKnTGNCxw&C(I&;V{eb=FT98fTRY2Q)w?`0?#B6$&&dy89*Uxy-1`nS z$85d@Y3tUypPN+D%WjO0j#@O)b;SkhzwlNP+hIXEdm;ttJiKyF3r9yrfcjzrtED*I z{Mg>kXGAy?mz>goB-BXgthcwu>GNgJM!9`K2j}JaoIRVHlj8+}KWSR=rmx?`!q<6s z$gC!$+c6X2d;VYi`@M41sE68*UL&;w)8BUd{NS@uU=KcbnP4BoISB!l|NZy>hgTq= zX<%}OV;gRsW#GiZj2-j^ElK1BPR67K&%^~59FAhYu(@(c!J7a5-~YGEQuTA|#n@=y TE1szf@XyX2hT7?xmY4nw6AfVC&BnV0`5ouBaDvAUIq_+TKLs3AbNhqO*j+9UW z0V^sgta@28pNhgrDD`j>m}eONTY}41faEXU!of!`gul}ZW@DuzV*?AtG^9cP5n&tua(}QeVp_^3p@39$qngRWN z%TDn!M~|{5+0NbXhl1avXTDjN`RKTDLHZ`8?d#X)+&f_KZOnT*P>tsp?M?Es|Sofcy482czA4&@8@|f^56F( zEz5@fY7Z*Wx3IC%p~cwPxO#ct*?{5Rv%&LUiUSvBGx{4E8tj$T)YMv~d4FA@@zLKc~&jjJ|GDuIk_ zTh6zeI5f`SZe4!W%6z|v&8N1uUMFpBZJSj_i=0CPCO^5(Z@SA^o6UA)%GgxuO~t2_ zIev6GsI084q2aIvZ<6X2JlE6PD~lrb$b`+cD!Wvu-IvEK+)f?k%#9K1uYcY-ZLL8l zQnazG+Q`{hbbl(>q&GNyubSVlFV2hAgO}&rru(@V ztaz=}?bdcoX^TH|yfaE%+2x?5!|d_4oLv3c|6d-jR#Ed|Mv4L3OoRq2cmO-;n4q|s7htrxAisOW?Y zJg=sBk9QBZQNF78#v|wHgHs}QoO+guiVA|8QktHAPWk4Sml^6BA&WiI)Hq2qpSw2s zb>_`gRaMFxMSS>q?lj6N(E3TiY=3G9d%BwH-e1+qCStJN1NDL4&%!cCe#9jvj@fuE zGSQ_NN<)1;rei8FriOve&5LhIkeMT;sYu$a<}TmdHzDx7x%%3N$loI$r<^dD`WaG- zvd{R%){+f;adPtV-ER5LwJe+7xAlQ@b{wBSv6e2HbzTp;&ya8>n9j~l3KyPf=)&yP z>S{Wju336B;zvAEr7yvzB5=;BIBex|QrX1Jp5r{fJ+T`Gwz(R0lbS;nxG_d3X*A-DU7K z#CkvD#<;n+vZne5mo$4+tQrOe?ATAm#5ChzWN+{%++RM=zHd! zL85Pqgdxp4b?*9&8zdx0LG9M9TRqFSI{KT(RI6{cr;Uz|YOXp5(!56+Lzd=k|0;q$ zUQSF)qTJFDs=;%lX`6&9lh%@0@(qbYgm_;m{RodYX?vW<$|5T$DU>;Gs;&J%Br`K} zo$Z(qGY{v5$*KgpoCij8R<}I*#idFS|EniBLcM=bzU)rq1KDvjb>#@SqNa2~lkt_J=M1Zjoy& zDlGJN8-jK^Gf4B^;T!Q%&A+6boBuF9yf%V|N9*`{TK9VT&(E>$)(^~h=!13sUyySe zY|mSK?}}BtN1qRTV`x*ELg246tfzW=jw6l)TzghA7eQzHv3~! zlYOn%hcWKn2m3CeP{rq6gNp-y|9H@ASLaupp8i^*rIUBiopo-o$3(~}$Hdirs6JmY zCnv}K_0Ski`<{7Hm0SNPA|<`tg_nJ5ZscRkv17+vP4X4vcYDXv zZAK6y84=DZii+fE>xxT*za}TU^c1pE#;jV%Ij8pnmQjJU-(pEK|!u@a&AZ{cZE&wU*h56 z`W}?Ujb6qhaVAJ)9|KO8u%LxzEWWq57be;y*}=8Mp|NDMWk?7~X^KuaF)&c|r`sWs z$YG^Yds0`>wDlB$_ITGZ_d#OL3w6vwhlCz&uH-h#%F2JFDQaOMz-?sCfyr3-Jpz+d zSXfxf!O-wY0s#kC>Ks9tgQnfp)unKjy%M;Xe+I2d>vkMOpg7EDZEYqJ=2J_HizRlo znHdcMzcXLGy66fsPN52Bc#N2$!I&4DKA6t^!w82ML=h{htF2=7WUf0oO>#Q-nv1(u z!uhebwpQ)=vh%@W$Ic8l`UwyYheIOpGeaqSTV#NFmHS9g|cYj03 z68xzQCoYV{XtV!kXS?AIP&Aj&YtIlc zMWNLF=>x}*X}9{TjN4y?y5vNc@EWJ8lKbU(hG#Yza}>h5Ds@VSUGAu6&##Y1RvbBE zT*`{suVJ}CVBgsq5Lg7`@Xiam-VNz)eltTPXueFQPwO*t#I*O@`37LGy1 z69|Nob3uGoR&A+j{vargSpj{pKxWA zOZJI;Z%R#3kx^=gX=Qt6=AZr-$(<7BSS)tHVWGUdys|8lHT>pY;M^!$MPA-aUV~=V z?|kgRg9nr^d`RBe)qvdFQqSDwt3ljeh%oaSxHza>Pp$DhpXG)|*M@N$nzBaGQMRS$ z_aiWuBU(Ox*8k0QYwygq{0M`S{CHtG>|W14AG;_AU8X=bX<|D?2i3ECz&rD|>y6=X z#6C@r2Yh!gCML%venhh~GrG(Hq5hwnrl_a%LZcJ9sNfdw1?4g6F%m0xh_YX1LmrkdTm;mX`kH zRXurSiA}AaH1P14S>n=7#p@cIR6;^RhHxuq$z*bIaj~W}Rm%AbG)PL=F!q%Whv$Cj z_PCih_cnrtnwXdX6)!-PmXR@@;J4uvts^sbc4A5laf z^ziIkF&gjo2Ca(?@zPcWdrB}tn&vY6{QNr6d-MC&Zbtf`RPQop&f@e9qZZK0smZuv z8-hXLMeVqpM~^lUZZ(KX@jsnF#B_9;X>vISn)Bu*8NPMHS*dPQQ2LU7gK zE?0;Q=yv*!zYa&YDTBI+GU)e!83~7o{*DnYs=v8j?8(Dok_5arsA#bl&C0jFo@Bqd z5cP44`=CH+p3{PVgG^R3CR^z$o=jbZN6Rv6fB3L?t7{wnlxr0h1Un^vWxar05tQV2 z>Gd?*vTNEXRH{`&UfyvW*PB#{I|sX^+q`dTa(OXUvN!j_ zjqBH+iYvR{!(|deSAwWhRKEfYXfN#9=^>J>t;8a}HWY zd(7s1#((|#1q07mg!Cl4X6jiWPT!vwt&aU?5u4BKq;;-=wrT=oC@A zPiehDc>R2&sv5*}PA%tG1#LflkyaPXb|2;=Q1{v|WJ1MQfe4-y5)o-2VAdLOk%^3{ zmIABO3yq$rYwr8{HII`rdij`1O2G0$nUf*5D{7B?Q+#Pn%~zDzD3!ZfU1jCub78RO zVC7BYKkJA@1?!%aOLHp9uL!PvlgGu#wccaqh!2vovUEHylmce1POsUv1I*_%#IE_xsWuqP(hD^7cdjdfe+)rjeMd(Z916kqtd zR^@Qb{!8<2#svy2Q+ehh-G0{~pPiJn^sZgI$cI0)qY|?T1Tt!%1@-=d+imKvk&?nS zP1ri1rcJ=b#R4mJ$ z9PCUIvuEk2eEj|Es+-2^>)8`|_EN;AtT)cr3c4qz zr!D+_MZ{h@g%9oU)xpNQjM>aVgIyCdZ>E3lI`^-}(mobub$zx#&_r|k*Dv$xxU%6T z4B|%D(!;FA^EsILCei+e7?1$U8a_K3j_)O!)Z-B36{Ctwnh(@Uv;Sx1RMRQcG)Ww~vp%PPpsc^=YeN z5`PyoDD)a+xyQHi8&FOll$-iWP~!EeI3+!O{mph2;03^twBj_vz*y1PYXY|QQK>}+g;pyFTa@)Z;nEiX=$jxAZ3 zn{VB7IvWJgIDa3gRB*`Mv(VT^dXERs5WkKlJH#>*;jbs(^Y-mk^%)085$?M8!vb_% z1b6P2Y|4sd(EPxzLN_MHFs*KWmv zTp-u%ifKx2>&{=w#jzU_Z6F2^OxYrOkL< z^c6~Dn%lOefm-h&KGz`|gav#!1DDsMQHJDMIH`3JLF$R#tHOZygq@RdXt2{1Q@Zui z-dov?A_Nk)Axcl%R4VRxJo3~__28kMkgzoAH4| z;k+At4zSM2c+$ExS(n|wdF(iH3>1?lR>_S5a(aMP5%PyOLRs2^Ga%Y7RY<9QSPhIQ z^{!uL=$BMAtB78Gw4fAjXU*;JT5K6ZcaO=~eM__7-$5gHE*Wk3`Du_4vgEf-f2<@a zPoSVoa;R~c@#IG_)1^%nhC^{@(qx&~(3%bBW!X)HZHO%CEi9)ON?}$@E6FCz!-W_i zR$Y?&HA0sk;f_YDru6?RrgguCTOZtzq5bcA<OudkS3^ z-MNL>&h2l@H^URR?Tw#-3uCcZl+&*;*iG<$F3YQE_ekTKGXx~1G-+n;WFG%-Q!ih_ zW1GMA_0=1-`|S=0wxNdqG;knn!~}lHt-!t&#et5lXhJrjbziCXu=WZ=cMlCDD&;*; zR8$0?NUw{f=*c$6&#TS2SS{Rz)VHDHQ)+ts09*iU&Jf{XXZg zi%f1=sp?jb4O-{hEB1ozdR1N6Jv5NJ8e%~mlf$KP0kll*@$SFB{jb_KL(mN5RtmIi zZTo@lWT-^7Yb>b*%nrkO?S&e@jL5kGtRhhsb>d8hOB>Pqcj3=P?T(DCk;wkmNB!XLYEEQjBPONnoujz=CV zQAr85!OY0wq6?c75)(HjAY-*|$N{50bm*O%-_rc_DaR&f(rCAA1bqghD!I*q8+<$Y z0sp`5v;llAQBIJ-89Po#J#o3SRPhb8p29aT4-HQ$e@|!U_Yl%Or^B*(^q4@weP=rg z>+OFiemCP`{#mj+E-ud5D|dsCkdU(>DP1Fosi)bMVieq~P)HzHw3>O6KPh(>vkG8szplUHjFmh*9*CnQ;B0x1Z)9Z7r?@rsK|6PwfvTsm2pH_i(dYbr78YbM1qz`v zEy)+yM~@sqkASfUy)cv1Gpu-cW(v-WWSlu{ zN1uRIT`i>YXKM)w3-gtRY!p6DX<@4&)c^jZ4sFJ3RC2; z9SVUgj>fK}l$7O6|eN-y->(||tmtr@J z@?Slsrq z@A7Stl9H+~%qzNF_BObE6XNX5bWM1@^iH00HJda!l>Yu*J9iGKZSL;s;@`3bnX1Zy zmJOgDhPRZjJqISsU=Gr}p{C}H+h~co*I(3Op|{tvI;pwZtzW6yh=bU-XV0E(+qQ+f z0&FMwx3Bx_gCip&%PT4pWo+S8RRdf3`t>V76$k`6P~>0D@zVC3o?<9_K%y6E{k7is zANU77J?1MwVsqz*mF7k<#3zi9vrLDSpFe-<#_X$YDJEe!r{(1#EVmdlW_tLX@ttZ!@#1EG&qqf;9lVy5Zz)kfZt#t39N z@0v5gIeEE|;Xw!~88hJ7f8oM=HZ`mfSVtrCLvYY9 z_?}T={t`bM^D{GlIB*xOfN9m$-e^e>mbP5){_NSaSHJ;YD>n2|Q-$1aJq~4TnY;d^YLLqp}SKXP?s(-rb-(vEiBOYz+R`*rvz$LQXWJNy^NpSlW)d4*JtRKB{O&Il*Iv3n@hx+Yx6M{>_Zvk z(z}}0deOTlPo9t@1ooW%35}=<}n{6qbp1ya9fvd|L@QKAeS@m)^$bl33pT2zQVU(ci05^HT zobd0%NB(V0;pCGxz>z*-S97t|mf&Kcqto=Y%n=a4nXpyN2anM&NdQ-&%FL8>V)hk( zSy=XN07N#K+nk|Dw~s%htn3dQ9j;2M7fxgJKJ~?Sf*L=^#&or{Q&oMX;OP2GCi%|{ zr7C-*?PPT$HERFJ!vGQK+wEgl+|wk5YtBwXn*+5s1k^ZQ4Ms|)&hS@@0?Bd6m{r)YG62bqPISOqZ1WB29RR8(&=i*R$HJ(}avV)1U`NxrIXMfM9)4-(~ zSH$hYaqGksJhw_w!SwhfDtUi4KR~E|Q(9Km*&i>Bi#+2-sf6sW(B&_@>6LRD{Y@Gt z0vtx63i|Z4K@2$y)KIpF3lDUaS1{&|`xfNyD|v_R%1^eLh|Wtj!YX_obP6_jlzbK)WOey+-u(DMqVg*YF+aZ)6bFvu z?a<=!$gCh&4%An^*3=`ZoS@u2{ov&yq=&3S!)a49Gq|&X<^07PC*vgd^I(30gftBX z{S)y0Eg#{6vhZf(_3on{O;)s29Q)Yj? z_KrBYN4eLAf-leNuestrjY|j&W34s)M~hipTpXH{{{<7*D~!A4=jtzZS>XIH>)C?F zViIYP-TsSn{%=R!*WJBKLPFi?%S%bK+!H8bWn-g8z!NHjBPPSX76t|eM*#u3Q505~ zB_sy2<6tgiHJ(4-L%ubmBO@$GHLR$*nhg^$-1W~t{}dAwd$@Ja&YG?)t_aLS zM8Nb6aP-;6eQDf99-b?&0j@wdDY#CjI0AOVl7KSQumd3yp#e9t*%e?R8s8q`R08T% z{=<$#IyK7PRRn^hJYWJ!M)18aVAkCSYM!U0U?7lYPdq3uKTR5K`tSiaKF#->-vrgUYa{jDRnQ>3WC(-gmnsd#0(!*F!Pxodp;_ARJrUrusoYSFG*+pLb8|ek8X7R*gC@v|@nFF;F#*iK^^cfnqLXXO7pd0U=aOGsBy}&{>~0 z8nNbsf!TS`n&V4Eq>_GQB#wAAa7L@Cq1{si_kCasUx)KTX*&>H;_X*HMv3DYQTsLQ zpYK+5iDS$S`cnhzAj0X{z~OMPY6Uum2`5Z7dW)>*V8-rM5AuO#KqC+QZQkQJZi@v{$C`@2@l)JhT z%%+p&PeQb^4cXqc$eQvkf@&{#D0k#&E(#CNI} zJ)irIWZeKPbmnW>$kI%s6-TJ;wFI#+PV!cByh!CnJ|wMM!FTuPo@wV zwE)oaDS=lwK3Mv8x{D&{$VG>{&3LYQz(;aGw7j4@B(I8P<}dpbL>$I=une+PLa*} z=g;43&JOH{z{ieL8D)@r0v&RZ(~}H7aJ)v9C_ex8!4}1|*Nl7`oM^JSTpnhURA&?A z6dB}XlB$|>Q=iuDthk4KCMzq86(=>OnwZW2|7#T62N}n>kb-$@jK;Fn`M>D*dfFVP zG$k|XBTORTVx%ou&J90gA7@%&K=jEF!JAAyiHyXo3f9+^HhWVehV6~Whg(w=2zJZDoA*0sR8?8>v7!r8r;L2< zgLe8{WM2>6z4#H{H91e=Q)Q*X%GiN`Ej$b34{|YK24qu}yM3#^l*fL+yk<=G%*|TM z%%2Z0Z9m8L=qN(%vSYg+wYVsJER^SM+eWGVh(G>A`76$CS#u;B%@J(hiLRVs3j`J7 z&U;pWy#6?yC5v0C7@&$4tn5xqO&#p*6{*R^<3BE4y2i6f6f`yrcU|BC!SlbMpb1q~ zZ2-O|LC@tHb!q{Yv9jvBi3?Gp!tTfwB91-??O`@Lw6wI;1LAjjurs$Hy|!f&;fi=)wK`I~L#oQB0oX%9y> z=l9UiP}s_p1NKx8nY^Z@0)u!=1q*WQeAzXlr{w`S|d#;LM@D=Kz{ z=x9}_8gKj`d7kM?HGfQKF!3 zp-C7kD3F@DCcA&kqC!In%eis$rbDgQkwb^>IUM5Mq?;j0tweWUb95Y(Yp7?CdwZo& z0Pe6ugA7=}nS;HoymJO|{6FU$4tqm9j#b~f@9de`>hz!mKm?gtS%(fCB6u4g7j6XQ zvN1tUQc^$F%n}CE!1DPr^QOvl)D587Z{m@HfZ4_xxho#V)*uSXK(J09p1md;S?TY* zdwzkr{j)9r&ZHIB3rsCa%diKGs zh=ERq%YebGj6m4WZH+gQuQyDT1xlH!9&AZ7>tb%#HW#l^p;p{%kFzk|#@k|LZl1j- zZ4@Jgd!Yi?!Mjo5@X@16N=iYZ-ubYnk$CkT?%$a}Eo!)bFJo@bYWI5T@9_w9&mNTxFkI%5rhX1`D#My?7`W@F4}khK9vIC}W-_(2Lj_i<3%683In zB)@;z?wR93>3`x^&ceFX7`HIZ#eZedmo38|G~8QkOCX&t+MMZsO4Mzn1aVK}Zyhf8 z%g4v(7Nt^BRaJF7d2V)fO^)3t!z?WQr!LFH?B4WWaE?}=n%6{G{iMX2AVtlTRaaM6 zRLrs25nq=CPw0h(acxTt^I73bTkS$wlkwHd=&Zkk1|Zu2y`TfLAlG}tCKFVE?n~fNaYcGhJ_E}H!@iOzg@2=f`bJ9n@lL~XVt-1OnbZDKzY1SM2`mKQuFJOQ;MxXP#taEPRd5BB~| z>S3`4r{b-%1-AFh`B>Pz^=rt&6+lLM9~Cse%uNVHLd?u!r5*hJt0Ob(dJ5|NX9`?A zJw4qG-O_byOSdyhu8#(z8o;lB-2v7G^b!_Gu!_-QiY_1*REd}HnNS^H-5el!M|T}A z?m_LfxfikXUrz?%YgkbN zA3a4_0I>}v*7o_csSJ~%?%I2zxJO8LTixyNcVDDiKYCjQ3s<<%#R*6nv0CW2*}I*+ z5}rTLxFab=(Xs9l5WWNT5V+9`z%dMRLQxVGF3{KP;**^qze0+LF3g_&X7djqC@Rrcy8g`gpIs)bwnVS2M zjv2Jt3^2#c(cRUxdspUL^f!y?Vw#y*BP@4<9Sr!mO=YcwfJGs=Q>6u2`7zD@zrLO- zHgy8~mY3+o<~xVQO~VoD&NZg!(7J<2<*rR5@yI>hCJzN9C|zBrZ!`;iXxBdSOe{Sq zp`EMN1%|>!kbbvEDmM25xaOcMkn>p~@US^+E5!>C9H)>C{lBo>Ah8+nmr83{+;!va zWG^ek^hH6zfee!l)@4DfHo_}NO)Lx~yXGl@NMyS*6_fQiG5WN}Q2lF%O4z@<6R~wq zrb>#y&$K_uCJ~k~R>d|sT%($%!c?p!?CXTCu==Db+quRdXe zMDKt(pTsQn3|Hvy`T#TIdMR`F@mo^3AK6vLSOtCSE+kv}0%^OnN|3cbt=rWHHZPq* zJra{(fBj0@4Yxr#8Lz zFOUMT9M)GOjn!G^&R4`L1SUb&9uq#}C?NCqd&UX_X;!g>Wfo%xpNg_FQ-9bDKu3+* zPDa?*fr4%JT+@WfAH#0~>KrVVG49Q3E8>>SQGiCX=|Bn7O1sa6X~I{=U93 z_sMvx7_XM0{oi4?PCtG_`jv&{gFQmV5?*!Wv-+++i8h7tbfhcT)9Pi1r0nR)dKfH1 zs3YCe7vsICZ+`ZUUx3w`i!|>k?K)raDW>mTO7T*0QU8$J$jYL540)4<8ZK~lnOILbb+0nZkV!67BmA2 zy&My!{uO{+PmfUjygJ0cjjZw$CXS9HOM(O#ChAm`Z=IdLKjL>q{|z<4KN}^TJ^~v* zN=lZ-HbkEZ&;g>dc6lOeBE=u}Vc(G4u77%VaL0}vAnW*tKFmm{c)btVy=)9@1l&2K zJ~Ls<{NxY;(hs8|;70pspRg53o+@)pEpN`7q!Y zvfgi3IC^C8_B(`ybK*hGgISn$+S1G! zPpycKEh~W0VX|Z^g1$i-8EwTV8{fE*qvV~q-YgbYIDC9O%5xqk`i&#Z#)pWUevd{; zN8;2Zxe%Bl+SS#YCM_wc0szXwB0j;_g<|9gN%{})!M?H(`4%<}58?8^*J`W7 zW4rSSp^F9ka&5`V?Mu&+#4henudV%7+_!Jw*f&LMpTs+z?_ixLy9%w8zfK+EL>TM< z2-e`{S>|>N7ucVs7%lZZVL&6crSs>MVn88$&}t zaX-W}&|7V?l2r%5M=R)C^eb#2dqPA-!IxKJI9?LhKsQf56UbggR|80SA|lfzmYVuv zW{ztBud9si_(%#Dop}c>xP~VES+j57z6Dxy#BQu4x}bTZz}_`FIiI_y*e?&KTIpBV z>T^IFg?zM5#p|bDDhpEaQh43%DBQ1@zaEML&1|;eXmNRB~M~kF6inO z9vMpD|NiRgyMgjii;wGSsDCc53+-Qv0O47qt!!3li4NvF_>8;{%v7hk6fDiAV5^;4 z#cjQp2+$P@Rv<+G3+nibUWc$xF{0N@879%RSp+nzuHDS-#b{^ej<9tD*|WUe8NNTT1uobn zgnR(c!dKX)gPpF(q;=^(^Y#Wk_LpM@X~sN$oTTK2Ey(RNV4V}sbD`6g1f9iOpD`%~ zn^SVHQSOc2#L^X%lvbJD$h9e*0u~*79k}C;MM%4pTktZzKE9CH&cZHe@oVRM@84gL zDSU)|4>xR@f1D`&3S(P!tJBBW8y1-SA@NKHM;4D%lmPss7FkdvnabApThX`zf?xH% zU)~{N%ln$%$=j62CI-RYv8JsEstqDa6OT(w#DA_F#e~zk?K)7O7sGG_K`ngl=E5{L zoW?Z0y5@~IxK$Zgtj4sg47QL)&hOem%Pud!vzu^TVOD!b%08< zuSQ9W*UWSAI+~ModT);zA2|({(gqamDwC8N#_(^XKihPK4!k4esDgQt*FKgP%et2C zj&_W4aO~#wrCXKQdE!fT(W-@Sq{nP(g4rdRKdO3$0F72A9koDkE53)m>F?^gWM}tl z&cRG)q({E!YS<_LD3>dAm(%-F(}NLz9C!*Z@uU`4`*wwT3);LseE^CYjS2ApaT!g_^QL63q7icXS)vYQY1s{NPt;zaIlvb11b?LPRMGbD=fSb z+wIn!+r3$nGoZHfUSC55HFQZPKp5d(fP&^(fO87IE_m(?zcmN^uE_rVxcGST*RSJ4 zKdoVcUcUUbr^g5I5rjdjtD%F1eFnvyQ%;(in(*xtHpzdJ9Oi`tWUkg6xFDelSnrk& zSZgF)*vD7UcnSENPJ#M$3V@9rFxl)Gszdp8eNWFar8$J}o!P(Qt7q{LY_H}1z!fCn zm>>24OAPCTo{1+ql>qZYU)XX2H~I*)+Lj^FxBr?2mJMqOxETIrKBgU~!G-Vi49=V- z992~G1wIH-oCef23=fzir3^x4S&L25?lxSGuEE3Fzv$=wz3BOW{yM)V2UaA5ws5m!W+R8HVGh3%{(lS?;ffx`%)Vps z%%=S}fA{R4kN+R~lHWfM`kx2=-}xodf6muG=j)&I^*`}-?SCrmpGy0u(*CKm|H*$M g;{Q|6;c!Kn=NCQ-mV3cJsKKMJZE~SR>&o5#1u)WohyVZp literal 0 HcmV?d00001 diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/components/SectionAllocation.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/components/SectionAllocation.java new file mode 100644 index 000000000..560c5b94d --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/components/SectionAllocation.java @@ -0,0 +1,131 @@ +package com.demcha.compose.document.templates.cv.components; + +import com.demcha.compose.document.templates.cv.data.CvSection; + +import java.util.ArrayList; +import java.util.IdentityHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * Assigns a CV's sections to a preset's fixed modules and keeps whatever is + * left over. + * + *

{@link SectionLookup#firstMatching} answers "which section is the + * Education one?" and nothing else. A preset built only from those calls + * renders exactly the categories it thought to ask about: a second section + * matching the same keywords is shadowed by the first, and a section whose + * title matches no list at all — "Awards", "Publications", anything a user + * invented — is never looked at. Neither loss is visible in the output. The + * page renders, it looks finished, and the reader has no way to tell that a + * section was dropped.

+ * + *

This narrows that to an allocation: {@link #claim(List)} hands out each + * section once, and {@link #remaining()} returns everything no module + * asked for, in document order, so the preset can render it rather than + * discard it.

+ * + *

Not thread-safe, and not meant to be: a preset builds one of these inside + * a single {@code compose} call and drops it.

+ * + * @since 2.1.2 + */ +public final class SectionAllocation { + + private final List sections; + private final Map claimed = new IdentityHashMap<>(); + + private SectionAllocation(List sections) { + this.sections = sections; + } + + /** + * Starts an allocation over a document's sections. + * + * @param sections the sections to allocate; {@code null} is treated as empty + * @return a fresh allocation with nothing claimed yet + */ + public static SectionAllocation of(List sections) { + List copy = new ArrayList<>(); + if (sections != null) { + for (CvSection section : sections) { + if (section != null) { + copy.add(section); + } + } + } + return new SectionAllocation(List.copyOf(copy)); + } + + /** + * Claims the first not-yet-claimed section whose normalised title contains + * any of the keys. + * + *

Claiming is what makes a second call with overlapping keys return a + * different section instead of the same one twice, and what moves + * the section out of {@link #remaining()}.

+ * + * @param keys candidate title fragments; {@code null} claims nothing + * @return the claimed section, or {@code null} when nothing matches + */ + public CvSection claim(List keys) { + if (keys == null) { + return null; + } + for (CvSection section : sections) { + if (claimed.containsKey(section)) { + continue; + } + String title = SectionLookup.normalize(section.title()); + for (String key : keys) { + if (title.contains(SectionLookup.normalize(key))) { + claimed.put(section, Boolean.TRUE); + return section; + } + } + } + return null; + } + + /** + * The sections no module claimed, in document order. + * + *

These are the ones a keyword-only preset loses silently. Render them + * under {@link CvSection#title()} — the user wrote that title, and it is + * the only label that can be correct for a category the preset does not + * know about.

+ * + * @return unclaimed sections carrying content, in document order + */ + public List remaining() { + List rest = new ArrayList<>(); + for (CvSection section : sections) { + if (!claimed.containsKey(section) && SectionLookup.hasContent(section)) { + rest.add(section); + } + } + return List.copyOf(rest); + } + + /** + * The section's own title, or the preset's label when there is no section. + * + *

A preset that hardcodes its module labels renames the user's content: + * a section the author called "Projects" prints as "EXPERTISE", and + * "Additional Information" prints as "LANGUAGES". The author's title wins. + * There is no blank-title case to weigh against it — every + * {@link CvSection} implementation rejects a blank title at construction — + * so the label is reached only when the module found no section at all, + * which is also when it has nothing to render.

+ * + * @param section the claimed section, or {@code null} when none matched + * @param fallback the preset's own label for the module + * @return the title to print + * @throws NullPointerException if {@code fallback} is {@code null} + */ + public static String titleOr(CvSection section, String fallback) { + Objects.requireNonNull(fallback, "fallback"); + return section == null ? fallback : section.title(); + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/ColumnPagination.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/ColumnPagination.java new file mode 100644 index 000000000..faa8ed05f --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/ColumnPagination.java @@ -0,0 +1,211 @@ +package com.demcha.compose.document.templates.cv.presets; + +import java.util.ArrayList; +import java.util.List; + +/** + * Splits a column of titled text blocks across pages. + * + *

A preset whose body is a multi-column {@code addRow} cannot lean on the + * paginator: a row is atomic, so a row taller than the page raises + * {@code AtomicNodeTooLargeException} rather than flowing. The preset has to + * pick the page boundary itself, and to pick it, it has to guess how tall its + * own content will be before the engine measures anything.

+ * + *

The guess models one thing — line wrapping. A block's line is a logical + * line; in a 148pt sidebar at 7.5pt it renders as three. Counting logical + * lines and calling that a page budget is what overflows: the same count of + * lines is twice the height in the narrow column. So the estimate turns a + * character count into wrapped lines using the column's width and the font's + * mean advance, and packs blocks until the page height is spent.

+ * + *

It is an estimate, and deliberately a conservative one: a page that + * breaks a block early costs some whitespace, while a page that breaks late + * costs an exception. A font far from the assumed mean advance, or a single + * unbreakable token wider than the column, can still push a page over.

+ * + *

What it never does is lose a line. Everything handed to + * {@link #paginate} comes back out on some page.

+ */ +final class ColumnPagination { + + /** + * Mean glyph advance as a fraction of font size, for the humanist sans + * faces these presets use. + * + *

Taken across the body text of the repository's CV fixtures in Lato + * at 7.5–7.9pt. Being a mean it is wrong for any individual line; over a + * block of prose it converges, which is the scale it is used at.

+ */ + private static final double MEAN_GLYPH_ADVANCE_RATIO = 0.48; + + /** + * Rendered line height as a ratio of font size, before extra spacing. + * + *

Package-visible so a preset sizing its own header uses the same + * ratio this uses to size its columns — two copies of the number would + * drift and only show up as a page that overflows.

+ */ + static final double FONT_LEADING_RATIO = 1.2; + + private final double charsPerLine; + private final double lineHeight; + private final double headingHeight; + private final double blockGap; + + private ColumnPagination(double charsPerLine, double lineHeight, + double headingHeight, double blockGap) { + this.charsPerLine = charsPerLine; + this.lineHeight = lineHeight; + this.headingHeight = headingHeight; + this.blockGap = blockGap; + } + + /** + * One titled run of already-flattened content. + * + * @param title the heading to print + * @param lines the block's logical lines, complete and unclipped + * @param prose {@code true} to render as running text, {@code false} as bullets + */ + record Block(String title, List lines, boolean prose) { + } + + /** + * Builds an estimator for one column. + * + * @param columnWidth the column's inner width in points + * @param bodyFontSize font size of the column's body text + * @param extraLineSpacing additive gap between lines, in points + * @param headingFontSize font size of a block's heading + * @param blockGap space a block adds beyond its lines — heading + * gap, trailing rule, spacing to the next block + * @return an estimator for that column + * @throws IllegalArgumentException if a font size or the width is not positive + */ + static ColumnPagination forColumn(double columnWidth, double bodyFontSize, + double extraLineSpacing, + double headingFontSize, double blockGap) { + if (columnWidth <= 0 || bodyFontSize <= 0 || headingFontSize <= 0) { + throw new IllegalArgumentException( + "columnWidth, bodyFontSize and headingFontSize must be positive, got " + + columnWidth + ", " + bodyFontSize + ", " + headingFontSize); + } + return new ColumnPagination( + Math.max(1.0, columnWidth / (bodyFontSize * MEAN_GLYPH_ADVANCE_RATIO)), + bodyFontSize * FONT_LEADING_RATIO + Math.max(0.0, extraLineSpacing), + headingFontSize * FONT_LEADING_RATIO, + Math.max(0.0, blockGap)); + } + + /** + * Splits blocks into per-page groups that fit {@code budget} points. + * + *

A block that does not fit the remainder of a page starts the + * next one intact. A block too tall for a whole page is carried across as + * many pages as it needs, repeating its heading — dropping the heading + * would leave the continuation reading as part of what came before it.

+ * + * @param blocks the column's blocks in render order + * @param budget height available on one page, in points; must be positive + * @return one list per page; at least one, possibly empty + */ + List> paginate(List blocks, double budget) { + List> pages = new ArrayList<>(); + List current = new ArrayList<>(); + double used = 0; + for (Block block : blocks) { + List pending = block.lines(); + while (!pending.isEmpty()) { + int fits = linesThatFit(pending, budget - used); + if (fits == pending.size()) { + current.add(new Block(block.title(), pending, block.prose())); + used += blockHeight(pending); + pending = List.of(); + } else if (fits > 0 && current.isEmpty()) { + // First block on the page and it still overflows: take what + // fits so the remainder makes progress on the next page. + current.add(new Block(block.title(), + List.copyOf(pending.subList(0, fits)), block.prose())); + pending = List.copyOf(pending.subList(fits, pending.size())); + used = budget; + } else if (current.isEmpty()) { + // Not one line fits an empty page — the budget is smaller + // than a heading. Emit a line anyway: looping here would + // never terminate, and dropping it is the bug being fixed. + current.add(new Block(block.title(), + List.of(pending.get(0)), block.prose())); + pending = List.copyOf(pending.subList(1, pending.size())); + used = budget; + } else { + // Push the whole block to the next page rather than + // orphaning its opening lines under a heading at the foot. + used = budget; + } + if (used >= budget && !pending.isEmpty()) { + pages.add(List.copyOf(current)); + current = new ArrayList<>(); + used = 0; + } + } + } + pages.add(List.copyOf(current)); + return List.copyOf(pages); + } + + /** + * Estimated height of a whole page's worth of blocks. + * + * @param page the blocks placed on one page + * @return height in points + */ + double pageHeight(List page) { + double height = 0; + for (Block block : page) { + height += blockHeight(block.lines()); + } + return height; + } + + /** + * How many rendered lines a logical line takes in this column. + * + * @param line the logical line; {@code null} or empty counts as one + * @return at least one + */ + int wrappedLines(String line) { + if (line == null || line.isEmpty()) { + return 1; + } + return Math.max(1, (int) Math.ceil(line.length() / charsPerLine)); + } + + /** Height a run of lines occupies under its own heading. */ + double blockHeight(List lines) { + double height = headingHeight + blockGap; + for (String line : lines) { + height += wrappedLines(line) * lineHeight; + } + return height; + } + + /** + * The largest prefix of {@code lines} that fits {@code available} points + * once the heading is paid for. + * + * @return how many lines fit; {@code 0} when not even one does + */ + int linesThatFit(List lines, double available) { + double used = headingHeight + blockGap; + int fitted = 0; + for (String line : lines) { + double next = used + wrappedLines(line) * lineHeight; + if (next > available) { + break; + } + used = next; + fitted++; + } + return fitted; + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/TimelineMinimal.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/TimelineMinimal.java index d78ebe386..6bf2ededb 100644 --- a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/TimelineMinimal.java +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/TimelineMinimal.java @@ -3,6 +3,7 @@ import com.demcha.compose.document.templates.core.identity.Link; import com.demcha.compose.document.api.DocumentSession; +import com.demcha.compose.document.dsl.PageFlowBuilder; import com.demcha.compose.document.dsl.RowBuilder; import com.demcha.compose.document.dsl.SectionBuilder; import com.demcha.compose.document.node.DocumentLinkOptions; @@ -16,6 +17,7 @@ import com.demcha.compose.document.templates.api.DocumentTemplate; import com.demcha.compose.document.templates.core.text.TextStyles; import com.demcha.compose.document.templates.core.text.MarkdownInline; +import com.demcha.compose.document.templates.cv.components.SectionAllocation; import com.demcha.compose.document.templates.cv.components.SectionLookup; import com.demcha.compose.document.templates.cv.data.*; import com.demcha.compose.document.templates.core.theme.BrandTheme; @@ -38,9 +40,27 @@ *

The preset stays a thin orchestrator. The 3-column body layout * (sidebar / axis / main) and the contact icon row are preset-local * because no other v2 preset uses this visual today. Section bodies - * are flattened to a list of lines via a preset-local helper so the - * sidebar can apply per-module truncation limits — the canonical - * shared dispatchers do not enforce that shape.

+ * are flattened to a list of lines via a preset-local helper, which is + * the shape the two narrow columns and the fixed-height axis need — the + * canonical shared dispatchers produce richly-styled multi-paragraph + * output instead.

+ * + *

Nothing the CV carries is dropped

+ * + *

Sections are matched to modules by title keyword, and a keyword match + * is a guess: a CV may hold a category this preset never heard of, or two + * that answer to the same keywords. Both are routed rather than discarded — + * {@link SectionAllocation} hands each section out once and returns the + * rest, which land in the main column under their own headings. A module's + * heading is the section's own title where it has one; the labels here are + * only a fallback.

+ * + *

Content longer than a page continues on the next one. The body is a + * row, and a row is atomic — the paginator cannot break inside one — so the + * preset estimates its own columns' heights through {@link ColumnPagination} + * and emits one row per page, letting each finished row overflow naturally. + * What it holds back for the masthead is measured from the identity, because + * the contact stack grows a row per link.

*/ public final class TimelineMinimal { @@ -101,6 +121,45 @@ public final class TimelineMinimal { */ private static final DocumentColor ICON_COLOR = DocumentColor.rgb(58, 58, 58); + /** + * Shortest axis a continuation page may draw. Below this the four + * segments and three markers stop reading as a timeline. + */ + private static final double MIN_CONTINUATION_AXIS_HEIGHT = 120.0; + + /** Gap between the three body columns; also the row's own spacing. */ + private static final double BODY_COLUMN_GAP = 16.0; + + private static final double SIDEBAR_WEIGHT = 0.74; + private static final double AXIS_WEIGHT = 0.12; + private static final double MAIN_WEIGHT = 1.74; + + /** Gap between the stacked contact rows. */ + private static final double CONTACT_ROW_GAP = 3.0; + + /** Gap between the name and the job title beneath it. */ + private static final double NAME_BLOCK_GAP = 4.0; + + /** Job-title size; read both by the style and by the masthead measurement. */ + private static final double JOB_TITLE_SIZE = 9.5; + + /** + * Slack added to the measured masthead height. + * + *

Covers what the arithmetic below does not model — a contact line long + * enough to wrap, the rule's own thickness. An over-estimate costs + * whitespace at the foot of a page; an under-estimate costs + * {@code AtomicNodeTooLargeException}, because a row cannot be broken by + * the paginator, so the error is deliberately taken on the safe side.

+ */ + private static final double MASTHEAD_SLACK = 18.0; + + /** Heading gap plus the trailing rule each sidebar block carries. */ + private static final double SIDEBAR_BLOCK_GAP = 22.0; + + /** Heading gap plus the trailing rule each main-column block carries. */ + private static final double MAIN_BLOCK_GAP = 24.0; + private static final List SUMMARY_KEYS = List.of("summary", "professional summary", "profile"); private static final List SKILL_KEYS = @@ -155,9 +214,64 @@ public void compose(DocumentSession document, CvDocument doc) { Objects.requireNonNull(doc, "doc"); double width = document.canvas().innerWidth(); - List sections = doc.sectionsIn(Slot.MAIN); + SectionAllocation allocation = + SectionAllocation.of(doc.sectionsIn(Slot.MAIN)); + + // Claim order decides which module wins when two lists could + // match the same title, and every claim removes the section + // from what falls through to the main column below. + CvSection education = allocation.claim(EDUCATION_KEYS); + CvSection skills = allocation.claim(SKILL_KEYS); + CvSection projects = allocation.claim(PROJECT_KEYS); + CvSection additional = allocation.claim(ADDITIONAL_KEYS); + CvSection summary = allocation.claim(SUMMARY_KEYS); + CvSection experience = allocation.claim(EXPERIENCE_KEYS); + + List sidebar = modules( + module(education, "Education"), + module(skills, "Skills"), + module(projects, "Expertise"), + module(additional, "Languages")); + + List main = new ArrayList<>(); + addModule(main, prose(summary, "Professional Profile")); + addModule(main, module(experience, "Work Experience")); + // Whatever no module claimed — a user's own "Awards", a second + // prose section — goes into the main column under its own + // title rather than off the page. + for (CvSection leftover : allocation.remaining()) { + addModule(main, module(leftover, leftover.title())); + } + + // Column inner widths: the row subtracts its gaps before the + // weighted split, so derive them the same way or the wrap + // estimate below is measuring a column that does not exist. + double usable = Math.max(1.0, width - 2 * BODY_COLUMN_GAP); + double weightSum = SIDEBAR_WEIGHT + AXIS_WEIGHT + MAIN_WEIGHT; + double bodyBudget = Math.max(1.0, + document.availableHeight() + - mastheadHeight(doc.identity()) + - theme.spacing().pageFlowSpacing() * 2); + + ColumnPagination sidebarMetrics = ColumnPagination.forColumn( + usable * SIDEBAR_WEIGHT / weightSum, + theme.typography().sizeEntrySubtitle(), 1.0, + theme.typography().sizeEntryTitle(), + SIDEBAR_BLOCK_GAP); + ColumnPagination mainMetrics = ColumnPagination.forColumn( + usable * MAIN_WEIGHT / weightSum, + theme.typography().sizeBody(), 1.2, + theme.typography().sizeBanner(), + MAIN_BLOCK_GAP); - document.dsl() + List> sidebarPages = + sidebarMetrics.paginate(sidebar, bodyBudget); + List> mainPages = + mainMetrics.paginate(main, bodyBudget); + int pages = Math.max(1, + Math.max(sidebarPages.size(), mainPages.size())); + + PageFlowBuilder flow = document.dsl() .pageFlow() .name("CvV2TimelineMinimalRoot") .spacing(theme.spacing().pageFlowSpacing()) @@ -173,40 +287,33 @@ public void compose(DocumentSession document, CvDocument doc) { .horizontal(width) .color(theme.palette().rule()) .thickness(theme.spacing().accentRuleWidth()) - .margin(DocumentInsets.zero())) - .addRow("CvV2TimelineMinimalBody", row -> addBodyRow(row, - List.of( - new ModulePlacement("Education", - SectionLookup.firstMatching(sections, - EDUCATION_KEYS), - 5), - new ModulePlacement("Skills", - SectionLookup.firstMatching(sections, - SKILL_KEYS), - 6), - new ModulePlacement("Expertise", - SectionLookup.firstMatching(sections, - PROJECT_KEYS), - 3), - new ModulePlacement("Languages", - SectionLookup.firstMatching(sections, - ADDITIONAL_KEYS), - 3)), - List.of( - new ModulePlacement("Professional Profile", - SectionLookup.firstMatching(sections, - SUMMARY_KEYS), - 1), - new ModulePlacement("Work Experience", - SectionLookup.firstMatching(sections, - EXPERIENCE_KEYS), - 4)), - TIMELINE_AXIS_HEIGHT)) - .build(); + .margin(DocumentInsets.zero())); + + // One row per page. A row is atomic — the paginator cannot + // break inside it — so the preset decides the page boundary + // itself and lets each finished row overflow onto the next + // page of its own accord. An explicit page break would emit a + // blank page whenever page one happens to be exactly full. + for (int page = 0; page < pages; page++) { + List sidebarPage = pageAt(sidebarPages, page); + List mainPage = pageAt(mainPages, page); + // The full-height axis is the preset's signature and stays + // on the opening page. A continuation page carrying three + // lines does not want 620pt of rule beside them, so there + // the axis follows the content. + double axisHeight = page == 0 + ? TIMELINE_AXIS_HEIGHT + : continuationAxisHeight(sidebarPage, sidebarMetrics, + mainPage, mainMetrics); + flow.addRow("CvV2TimelineMinimalBody" + page, + row -> addBodyRow(row, sidebarPage, mainPage, + axisHeight)); + } + flow.build(); } private void addNameBlock(SectionBuilder section, CvIdentity identity) { - section.spacing(4) + section.spacing(NAME_BLOCK_GAP) .addParagraph(paragraph -> paragraph .text(spacedUpper(identity.name().full())) .textStyle(nameStyle()) @@ -221,16 +328,15 @@ private void addNameBlock(SectionBuilder section, CvIdentity identity) { } private void addBodyRow(RowBuilder row, - List sidebarModules, - List mainModules, + List sidebarModules, + List mainModules, double axisHeight) { - row.spacing(16) - .weights(0.74, 0.12, 1.74) + row.spacing(BODY_COLUMN_GAP) + .weights(SIDEBAR_WEIGHT, AXIS_WEIGHT, MAIN_WEIGHT) .addSection("CvV2TimelineMinimalSidebar", sidebar -> { sidebar.spacing(10); - for (ModulePlacement placement : sidebarModules) { - addSidebarModule(sidebar, placement.title(), - placement.section(), placement.limit()); + for (ColumnPagination.Block module : sidebarModules) { + addSidebarModule(sidebar, module); } }) .addSection("CvV2TimelineMinimalAxis", axis -> @@ -238,16 +344,14 @@ private void addBodyRow(RowBuilder row, timelineAxisStyle(), axisHeight)) .addSection("CvV2TimelineMinimalMain", main -> { main.spacing(11); - for (ModulePlacement placement : mainModules) { - boolean bullets = placement.limit() > 1; - addMainModule(main, placement.title(), - placement.section(), bullets, placement.limit()); + for (ColumnPagination.Block module : mainModules) { + addMainModule(main, module); } }); } private void addContact(SectionBuilder section, CvIdentity identity) { - section.spacing(3); + section.spacing(CONTACT_ROW_GAP); DocumentTextStyle textStyle = contactTextStyle(); DocumentTextStyle fallbackIconStyle = fallbackIconStyle(); for (ContactItem item : contactItems(identity)) { @@ -274,6 +378,38 @@ private void addContact(SectionBuilder section, CvIdentity identity) { } } + /** + * Height the masthead takes off the page before the body row. + * + *

The header is a row, so its height is the taller of its two + * columns: the name block on the left, the contact stack on the + * right. The stack grows a row per link, which is why this is + * measured rather than assumed — a fixed reserve is wrong in both + * directions. Too small, and a CV with enough contact links pushes + * the body row past the page into + * {@code AtomicNodeTooLargeException}, since a row cannot be + * broken. Too large, and every ordinary CV loses page space it + * could have filled.

+ * + * @param identity the header's data; {@code null} yields the rule alone + * @return height in points, including the rule and its slack + */ + private double mastheadHeight(CvIdentity identity) { + double nameBlock = theme.typography().sizeHeadline() + * ColumnPagination.FONT_LEADING_RATIO; + if (identity != null && !identity.jobTitle().isBlank()) { + nameBlock += NAME_BLOCK_GAP + + JOB_TITLE_SIZE * ColumnPagination.FONT_LEADING_RATIO; + } + int rows = contactItems(identity).size(); + double contactStack = rows == 0 ? 0.0 + : rows * theme.typography().sizeContact() + * ColumnPagination.FONT_LEADING_RATIO + + (rows - 1) * CONTACT_ROW_GAP; + return Math.max(nameBlock, contactStack) + + theme.spacing().accentRuleWidth() + MASTHEAD_SLACK; + } + private List contactItems(CvIdentity identity) { if (identity == null) { return List.of(); @@ -318,12 +454,12 @@ private SvgGlyph glyph(String iconFile) { return SvgGlyph.fromResource(CONTACT_ICON_ROOT + iconFile); } - private void addSidebarModule(SectionBuilder sidebar, String title, - CvSection section, int limit) { - List lines = sectionLines(section); + private void addSidebarModule(SectionBuilder sidebar, ColumnPagination.Block module) { + List lines = module.lines(); if (lines.isEmpty()) { return; } + String title = module.title(); sidebar.addSection("CvV2TimelineMinimalSidebar" + SectionLookup.normalize(title), block -> { block.spacing(6) @@ -331,9 +467,9 @@ private void addSidebarModule(SectionBuilder sidebar, String title, .text(title.toUpperCase(Locale.ROOT)) .textStyle(sidebarTitleStyle()) .margin(DocumentInsets.zero())); - for (String line : lines.stream().limit(limit).toList()) { + for (String line : lines) { block.addParagraph(paragraph -> paragraph - .text(excerpt(line, 76)) + .text(line) .textStyle(sidebarBodyStyle()) .lineSpacing(1) .margin(DocumentInsets.zero())); @@ -365,13 +501,12 @@ private TimelineAxisWidget.Style timelineAxisStyle() { .build(); } - private void addMainModule(SectionBuilder main, String title, - CvSection section, boolean bullets, - int limit) { - List lines = sectionLines(section); + private void addMainModule(SectionBuilder main, ColumnPagination.Block module) { + List lines = module.lines(); if (lines.isEmpty()) { return; } + String title = module.title(); main.addSection("CvV2TimelineMinimalMain" + SectionLookup.normalize(title), block -> { block.spacing(5) @@ -379,21 +514,23 @@ private void addMainModule(SectionBuilder main, String title, .text(title.toUpperCase(Locale.ROOT)) .textStyle(mainTitleStyle()) .margin(DocumentInsets.zero())); - if (bullets) { - for (String line : lines.stream().limit(limit).toList()) { + if (module.prose()) { + for (String line : lines) { + block.addParagraph(paragraph -> paragraph + .text(line) + .textStyle(mainBodyStyle()) + .lineSpacing(1.4) + .margin(DocumentInsets.zero())); + } + } else { + for (String line : lines) { block.addParagraph(paragraph -> paragraph - .text(excerpt(line, 136)) + .text(line) .textStyle(mainBulletStyle()) .lineSpacing(1.2) .bulletOffset("-") .margin(DocumentInsets.zero())); } - } else { - block.addParagraph(paragraph -> paragraph - .text(excerpt(lines.get(0), 245)) - .textStyle(mainBodyStyle()) - .lineSpacing(1.4) - .margin(DocumentInsets.zero())); } block.addLine(line -> line .horizontal(300) @@ -414,7 +551,7 @@ private DocumentTextStyle nameStyle() { private DocumentTextStyle jobTitleStyle() { return TextStyles.of(theme.typography().headlineFont(), - 9.5, + JOB_TITLE_SIZE, DocumentTextDecoration.BOLD, theme.palette().ink()); } @@ -472,13 +609,14 @@ private DocumentTextStyle mainBodyStyle() { // -- helpers ----------------------------------------------------------- /** - * Flattens a {@link CvSection} into a list of single-line strings - * suitable for the truncation-driven sidebar / main rendering. v2 - * {@code SectionDispatcher} would produce richly-styled multi-paragraph - * output, which is not what Timeline Minimal needs — its layout - * relies on knowing the exact line count so per-module - * {@code limit} can drop overflow without breaking the visual flow - * around the fixed-height timeline axis. + * Flattens a {@link CvSection} into a list of single-line strings. + * + *

The shared {@code SectionDispatcher} would produce richly-styled + * multi-paragraph output, which is not the shape this layout can work + * with: knowing the line count is what lets the preset choose its own + * page boundaries around the fixed-height axis. Counting lines is all it + * is for — every line produced here is rendered, on this page or the + * next.

*/ private static List sectionLines(CvSection section) { if (!SectionLookup.hasContent(section)) { @@ -607,24 +745,58 @@ private static String spacedUpper(String value) { return builder.toString(); } - private static String excerpt(String value, int maxChars) { - String clean = MarkdownInline.plainText(value) - .replaceAll("\\s+", " ").trim(); - if (clean.length() <= maxChars) { - return clean; + private static String safe(String value) { + return value == null ? "" : value; + } + + /** A bulleted module, titled from the section or the preset's label. */ + private static ColumnPagination.Block module(CvSection section, String fallbackTitle) { + return new ColumnPagination.Block(SectionAllocation.titleOr(section, fallbackTitle), + sectionLines(section), false); + } + + /** A running-text module — a profile or any other prose section. */ + private static ColumnPagination.Block prose(CvSection section, String fallbackTitle) { + return new ColumnPagination.Block(SectionAllocation.titleOr(section, fallbackTitle), + sectionLines(section), true); + } + + private static List modules(ColumnPagination.Block... candidates) { + List kept = new ArrayList<>(); + for (ColumnPagination.Block candidate : candidates) { + addModule(kept, candidate); } - int boundary = clean.lastIndexOf(' ', maxChars - 1); - int end = boundary > maxChars / 2 ? boundary : maxChars - 1; - return clean.substring(0, end).trim() + "..."; + return kept; } - private static String safe(String value) { - return value == null ? "" : value; + private static void addModule(List target, ColumnPagination.Block module) { + if (!module.lines().isEmpty()) { + target.add(module); + } } - private record ModulePlacement(String title, CvSection section, int limit) { + private static List pageAt(List> pages, int index) { + return index < pages.size() ? pages.get(index) : List.of(); } + /** + * Axis height for a continuation page: as tall as the taller of the two + * columns is estimated to be, so the rule ends where the content does. + * + * @return a height in points, never above {@link #TIMELINE_AXIS_HEIGHT} + * and never so short the markers collide + */ + private static double continuationAxisHeight(List sidebarPage, + ColumnPagination sidebarMetrics, + List mainPage, + ColumnPagination mainMetrics) { + double tallest = Math.max(sidebarMetrics.pageHeight(sidebarPage), + mainMetrics.pageHeight(mainPage)); + return Math.max(MIN_CONTINUATION_AXIS_HEIGHT, + Math.min(TIMELINE_AXIS_HEIGHT, tallest)); + } + + private record ContactItem(String fallbackIcon, String iconFile, String text, DocumentLinkOptions linkOptions) { }