From 17ac17d5c86a47b4709934700e47d35d032e26ef Mon Sep 17 00:00:00 2001 From: DemchaAV Date: Fri, 3 Jul 2026 14:21:42 +0100 Subject: [PATCH 1/3] fix: correctness fixes from the pre-0.3.0 audit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A 9-dimension audit before cutting v0.3.0 surfaced several places where the library silently dropped content or diverged from its own documented behaviour. - Tables now parse as GitHub-Flavored Markdown. Flexmark's permissive defaults (column spans, multiple header rows, trailing `[caption]` lines) were all dropped by the mapper without a trace — a caption vanished, and a header-less table mapped to null, discarding its whole body invisibly even to strict mode. The parser pins GFM options and mapTable now surfaces a header-less table as UnsupportedBlockNode (rejected in strict, shown verbatim otherwise). - List-item continuation blocks (a second paragraph, code block, quote) kept the item's left indent instead of rendering flush against the page margin, left of the marker. Nested lists, which compute their own indent, are unchanged. - The custom-renderer seam the docs advertise for headings/TOC is now reachable: RenderContext.headingSlug(HeadingNode) and tocEntries() are public and TocEntry is a public record, so an external heading/TOC renderer can declare the same planned anchors [TOC] links to instead of allocating a desynced fresh slug. - An undefined [^label] renders as literal text (CommonMark) rather than a numbered, dangling superscript with a gap in the run. - Heading slugs stay document-unique even when a later heading's own text slugifies to an already-generated -N anchor (Foo / Foo / Foo 1). - The built-in dark themes ship a dark-tuned alert palette (AlertColors.defaultDark); the light amber accents fell below a readable contrast on the near-black surface. - Case-folding for custom-block dispatch, callout variants, image-URL schemes and inline-HTML detection uses Locale.ROOT (a Turkish locale broke :::INFO dispatch). Tests: TableGfmParityTest, ListContinuationIndentTest (glyph-x geometry), UndefinedFootnoteTest, HeadingSlugSeamTest added; full suite 188 green. --- CHANGELOG.md | 47 +++++++++--- docs/custom-renderers.md | 8 +++ .../markdown/extension/CustomBlockParser.java | 2 +- .../extension/DefaultImageResolver.java | 2 +- .../markdown/mapper/FlexmarkAstMapper.java | 19 +++-- .../parser/FlexmarkMarkdownParser.java | 11 +++ .../markdown/render/BuiltinRenderers.java | 2 +- .../markdown/render/ListRenderer.java | 10 ++- .../markdown/render/RenderContext.java | 24 +++++-- .../demchaav/markdown/render/RenderState.java | 16 +++-- .../demchaav/markdown/render/TocEntry.java | 2 +- .../markdown/theme/DefaultMarkdownTheme.java | 4 +- .../markdown/theme/packs/GitHubTheme.java | 4 +- .../markdown/theme/tokens/AlertColors.java | 20 ++++++ .../markdown/HeadingSlugSeamTest.java | 71 +++++++++++++++++++ .../markdown/ListContinuationIndentTest.java | 66 +++++++++++++++++ .../demchaav/markdown/TableGfmParityTest.java | 60 ++++++++++++++++ .../markdown/UndefinedFootnoteTest.java | 41 +++++++++++ 18 files changed, 379 insertions(+), 30 deletions(-) create mode 100644 src/test/java/io/github/demchaav/markdown/HeadingSlugSeamTest.java create mode 100644 src/test/java/io/github/demchaav/markdown/ListContinuationIndentTest.java create mode 100644 src/test/java/io/github/demchaav/markdown/TableGfmParityTest.java create mode 100644 src/test/java/io/github/demchaav/markdown/UndefinedFootnoteTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 01eab42..a355bee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,35 @@ and the project follows [Semantic Versioning](https://semver.org/). commit's detached-module build; a release-prep commit can no longer tag with the drift. ### Fixed +- **Tables are pinned to GitHub-Flavored-Markdown parity — no more silent content loss.** The + Flexmark tables extension ran with its permissive defaults (column spans, multiple header rows, + trailing `[caption]` lines), all of which the mapper dropped without a trace: a `[caption]` after + a table vanished, and a header-less table mapped to nothing — its whole body disappeared, invisible + even to strict mode. Tables now parse as GFM (`COLUMN_SPANS=false`, one header row, + `WITH_CAPTION=false`, append/discard ragged columns), and a header-less table surfaces its source + as unsupported content (rejected in strict mode, shown verbatim otherwise) rather than being swallowed. +- **List-item continuation blocks keep the item's indent.** A second paragraph, code block or quote + inside a list item bypassed the marker paragraph's margin and rendered flush against the page margin + — left of its own bullet. Continuation blocks now carry the item's left indent (nested lists, which + compute their own indent, are unchanged). +- **Undefined footnote references render as their literal source.** A `[^label]` with no matching + definition was still assigned a number, leaving a dangling superscript and a gap in the footnote run. + It now renders as literal text (the CommonMark behaviour), mirroring how undefined link references are + already handled; defined footnotes number and back-link exactly as before. +- **Heading anchors are always document-unique.** The GitHub-style de-duplicator could hand out the + same `-N` slug twice when a later heading's own text slugified to an already-generated anchor (e.g. + headings `Foo`, `Foo`, `Foo 1`); it now bumps past any taken slug so every heading keeps a unique + anchor that `[TOC]` and `[text](#slug)` links resolve to. +- **Built-in dark themes ship a dark-tuned alert palette.** `DefaultMarkdownTheme.dark()` and + `GitHubTheme.dark()` inherited the light amber/blue alert accents, which fell below a readable + contrast on the near-black surface. A new `AlertColors.defaultDark()` (mirroring + `SyntaxColors.defaultDark()`) gives GitHub-dark-mode accents; both dark themes now use it. +- **Locale-independent lowercasing.** Custom-block type dispatch, `:::` callout variants, image-URL + scheme checks and inline-HTML detection used `String.toLowerCase()` without a locale, so under a + Turkish locale `:::INFO` lowercased to `ınfo` and missed its handler. All now use `Locale.ROOT`. +- **CLI `--version` tracks the module version.** It hard-coded `0.2.0-SNAPSHOT` and had already drifted + stale at the v0.2.0 tag; it now reads the Maven-filtered module version, so it can never diverge from + the pom the version-lockstep guard already enforces. - **Footnotes cited from table cells are bidirectional too.** Cell paragraphs bypass the paragraph renderer, so a footnote first cited inside a table cell had a forward link but a dead back-link; the `fnref-N` back-anchor is now placed on the citing cell as well (list items @@ -20,6 +49,13 @@ and the project follows [Semantic Versioning](https://semver.org/). link — a heading's single anchor slot already carries its navigation slug. ### Changed +- **The custom-renderer seam is now truly open for headings and the table of contents.** The docs + advertise swapping the renderer for *any* node type, but a third-party `NodeRenderer` + or `NodeRenderer` outside the render package had no way to reach the planned heading slugs: + it was forced to call `RenderContext.headingAnchor(title)`, which allocates a *fresh* slug and + silently desynced the anchor from what `[TOC]` and `[text](#slug)` link to. `RenderContext.headingSlug(HeadingNode)` + and `RenderContext.tocEntries()` are now `public`, and `TocEntry` is a public record, so a custom + heading/TOC renderer can declare the same anchors the built-ins do and stay navigable. - **The HTML-entity decoder now handles curly-quote and guillemet entities (all modes).** A literal `’` / `“` / `«` … in the Markdown source now decodes to its character (`’` `“` `«`) instead of rendering as the raw entity text. This applies regardless of the @@ -56,14 +92,6 @@ and the project follows [Semantic Versioning](https://semver.org/). manual two-pass) and every label a clickable jump. Heading nesting indents the label; an optional title row; empty-heading and no-heading documents degrade exactly like the default renderer. Runnable `BookTocExample` (paired with the page-number footer). -- **Book-style page-numbered table of contents — `BookTocRenderer`.** An opt-in alternative to - the default `[TOC]` link list: swap the `TocNode` renderer - (`MarkdownTheme.builder(base).renderer(TocNode.class, new BookTocRenderer("Contents"))`) and - the marker renders as dot-leader contents rows — "Introduction ….. 3" — with **page numbers - resolved automatically from the laid-out document** (the engine's `addTableOfContents`; no - manual two-pass) and every label a clickable jump. Heading nesting indents the label; an - optional title row; empty-heading and no-heading documents degrade exactly like the default - renderer. Runnable `BookTocExample` (paired with the page-number footer). - **Vector colour emoji out of the box — optional `graph-compose-emoji` support.** With the companion artifact on the classpath (declared `optional`, mirroring `graph-compose-fonts`), `:shortcode:` emoji render as crisp Noto vector glyphs at any size — no user-supplied images. @@ -373,5 +401,6 @@ are grouped by area. theme-composition tests; and `EngineRobustnessTest` (code-fence `:::`, unsupported-content handling, strict mode, theme immutability). -[Unreleased]: https://github.com/DemchaAV/graphcompose-markdown/compare/v0.1.0...HEAD +[Unreleased]: https://github.com/DemchaAV/graphcompose-markdown/compare/v0.2.0...HEAD +[v0.2.0]: https://github.com/DemchaAV/graphcompose-markdown/releases/tag/v0.2.0 [v0.1.0]: https://github.com/DemchaAV/graphcompose-markdown/releases/tag/v0.1.0 diff --git a/docs/custom-renderers.md b/docs/custom-renderers.md index 7f7f3fa..d031b27 100644 --- a/docs/custom-renderers.md +++ b/docs/custom-renderers.md @@ -178,3 +178,11 @@ MarkdownTheme book = MarkdownTheme.builder(DefaultMarkdownTheme.light()) The same seam accepts your own renderer for any node type — tables, code blocks, headings — while every other component is reused. + +A heading or TOC renderer needs the anchors the built-ins plan up front (so its links stay +navigable). Those are on `RenderContext`: `ctx.headingSlug(headingNode)` returns the planned, +document-unique slug for a heading — use it rather than `ctx.headingAnchor(title)`, which +allocates a *fresh* slug and would desync your anchor from what `[TOC]` and `[text](#slug)` +jump to — and `ctx.tocEntries()` returns the document's headings (level, text, slug) as public +`TocEntry` records for a custom `NodeRenderer` to lay out. `BookTocRenderer` is built on +exactly these. diff --git a/src/main/java/io/github/demchaav/markdown/extension/CustomBlockParser.java b/src/main/java/io/github/demchaav/markdown/extension/CustomBlockParser.java index a84ee7f..038ad8a 100644 --- a/src/main/java/io/github/demchaav/markdown/extension/CustomBlockParser.java +++ b/src/main/java/io/github/demchaav/markdown/extension/CustomBlockParser.java @@ -105,7 +105,7 @@ private List parseBlocks(String text, Map footnot Matcher open = OPEN.matcher(line.strip()); if (isOpen(line) && open.matches()) { flushNormal(normal, result, footnoteNumbers); - String type = open.group(1).toLowerCase(); + String type = open.group(1).toLowerCase(java.util.Locale.ROOT); String variant = open.group(2); int depth = 1; diff --git a/src/main/java/io/github/demchaav/markdown/extension/DefaultImageResolver.java b/src/main/java/io/github/demchaav/markdown/extension/DefaultImageResolver.java index 54f2dfe..e0c4d96 100644 --- a/src/main/java/io/github/demchaav/markdown/extension/DefaultImageResolver.java +++ b/src/main/java/io/github/demchaav/markdown/extension/DefaultImageResolver.java @@ -76,7 +76,7 @@ public Optional resolve(String source) { if (source == null || source.isBlank()) { return Optional.empty(); } - String lower = source.toLowerCase(); + String lower = source.toLowerCase(java.util.Locale.ROOT); if (lower.startsWith("http://") || lower.startsWith("https://")) { return Optional.empty(); // remote loading is opt-in via a custom resolver } diff --git a/src/main/java/io/github/demchaav/markdown/mapper/FlexmarkAstMapper.java b/src/main/java/io/github/demchaav/markdown/mapper/FlexmarkAstMapper.java index b95bba3..69f11b2 100644 --- a/src/main/java/io/github/demchaav/markdown/mapper/FlexmarkAstMapper.java +++ b/src/main/java/io/github/demchaav/markdown/mapper/FlexmarkAstMapper.java @@ -246,7 +246,9 @@ public List footnoteDefinitions(com.vladsch.flexmark.uti private void assignFootnoteNumbers(Node node, Map numbers, int[] next) { for (Node child = node.getFirstChild(); child != null; child = child.getNext()) { - if (child instanceof Footnote footnote) { + if (child instanceof Footnote footnote && footnote.getFootnoteBlock() != null) { + // Only a DEFINED [^label] gets a number; an undefined one renders as literal text + // (below), so numbering it would leave a dangling superscript and a gap in the run. String label = footnoteLabel(footnote.getText()); if (!label.isEmpty() && !numbers.containsKey(label)) { numbers.put(label, next[0]++); @@ -343,8 +345,13 @@ private MarkdownNode mapTable(TableBlock table) { } } - // A GFM table is only valid with a header (which defines the columns). - return alignments.isEmpty() ? null : new TableNode(alignments, header, bodyRows); + // A GFM table is only valid with a header (which defines the columns). Rather than + // dropping a header-less table to null — which would silently swallow its whole body, + // invisible even to strict mode — surface its source like any other unmodelled block. + if (alignments.isEmpty()) { + return new UnsupportedBlockNode(table.getNodeName(), table.getChars().toString()); + } + return new TableNode(alignments, header, bodyRows); } private List mapRow(TableRow row) { @@ -452,7 +459,9 @@ private InlineNode mapInline(Node node) { } if (node instanceof Footnote footnote) { Integer number = footnoteNumbers.get().get(footnoteLabel(footnote.getText())); - return number != null ? new FootnoteRefRun(number) : null; + // An undefined [^label] was never numbered; render its literal source (CommonMark keeps + // the brackets) as plain text rather than a dangling superscript with no note to reach. + return number != null ? new FootnoteRefRun(number) : new TextRun(footnote.getChars().toString()); } if (node instanceof Emoji emoji) { return new EmojiRun(emoji.getText().toString()); @@ -489,7 +498,7 @@ private InlineNode mapInline(Node node) { } if (node instanceof HtmlInline inline) { String raw = inline.getChars().toString(); - String html = raw.trim().toLowerCase(); + String html = raw.trim().toLowerCase(java.util.Locale.ROOT); if (html.equals("
") || html.equals("
") || html.equals("
")) { return new LineBreakRun(true); } diff --git a/src/main/java/io/github/demchaav/markdown/parser/FlexmarkMarkdownParser.java b/src/main/java/io/github/demchaav/markdown/parser/FlexmarkMarkdownParser.java index 4529732..403b464 100644 --- a/src/main/java/io/github/demchaav/markdown/parser/FlexmarkMarkdownParser.java +++ b/src/main/java/io/github/demchaav/markdown/parser/FlexmarkMarkdownParser.java @@ -53,6 +53,17 @@ public FlexmarkMarkdownParser(boolean smartPunctuation) { extensions.add(TypographicExtension.create()); } options.set(Parser.EXTENSIONS, extensions); + // Pin the tables extension to GitHub-Flavored-Markdown semantics. Flexmark's defaults + // otherwise accept column spans (`| a || b |`), multiple header rows and trailing + // `[caption]` lines — none of which are GFM — and the mapper silently drops that extra + // structure, so a document could lose cells or a whole caption without warning. + options.set(TablesExtension.COLUMN_SPANS, false) + .set(TablesExtension.MIN_HEADER_ROWS, 1) + .set(TablesExtension.MAX_HEADER_ROWS, 1) + .set(TablesExtension.APPEND_MISSING_COLUMNS, true) + .set(TablesExtension.DISCARD_EXTRA_COLUMNS, true) + .set(TablesExtension.WITH_CAPTION, false) + .set(TablesExtension.HEADER_SEPARATOR_COLUMN_MATCH, true); this.parser = Parser.builder(options).build(); } diff --git a/src/main/java/io/github/demchaav/markdown/render/BuiltinRenderers.java b/src/main/java/io/github/demchaav/markdown/render/BuiltinRenderers.java index 91b5d4f..0a61dae 100644 --- a/src/main/java/io/github/demchaav/markdown/render/BuiltinRenderers.java +++ b/src/main/java/io/github/demchaav/markdown/render/BuiltinRenderers.java @@ -419,7 +419,7 @@ private static DocumentColor accentFor(String variant, AlertColors colors, Docum if (variant == null) { return fallback; } - switch (variant.toLowerCase()) { + switch (variant.toLowerCase(java.util.Locale.ROOT)) { case "warning": case "caution": return colors.calloutWarning(); diff --git a/src/main/java/io/github/demchaav/markdown/render/ListRenderer.java b/src/main/java/io/github/demchaav/markdown/render/ListRenderer.java index a3af749..636e431 100644 --- a/src/main/java/io/github/demchaav/markdown/render/ListRenderer.java +++ b/src/main/java/io/github/demchaav/markdown/render/ListRenderer.java @@ -81,9 +81,17 @@ private static void renderItem(ListItemNode item, SectionBuilder listSection, Re for (int i = start; i < content.size(); i++) { MarkdownNode child = content.get(i); if (child instanceof ListNode nested) { + // A nested list computes its own absolute indent from depth, so it is added + // straight into the item section (wrapping it would double-indent it). renderList(nested, itemSec, ctx, depth + 1); } else { - ctx.renderBlock(child, itemSec); + // A continuation block (second paragraph, code block, quote, …) bypasses the + // marker paragraph's margin, so wrap it in a section carrying the item's left + // indent — otherwise it renders flush against the page margin, left of the marker. + itemSec.addSection(contSec -> { + contSec.margin(new DocumentInsets(0, 0, 0, indent)); + ctx.renderBlock(child, contSec); + }); } } }); diff --git a/src/main/java/io/github/demchaav/markdown/render/RenderContext.java b/src/main/java/io/github/demchaav/markdown/render/RenderContext.java index 860bf61..4da6a52 100644 --- a/src/main/java/io/github/demchaav/markdown/render/RenderContext.java +++ b/src/main/java/io/github/demchaav/markdown/render/RenderContext.java @@ -192,13 +192,29 @@ public boolean hasBookmarkableHeading() { return state.tocEntries().stream().anyMatch(entry -> !entry.text().isEmpty()); } - /** @return the planned slug anchor for a heading, or {@code null} if it was not planned */ - String headingSlug(HeadingNode node) { + /** + * Returns the anchor slug that {@link #planHeadings} assigned to this heading node — the same + * slug the built-in heading renderer declares and that {@code [TOC]} / {@code [text](#slug)} + * links resolve to. A custom {@code NodeRenderer} should call this (rather than + * {@link #headingAnchor(String)}, which allocates a fresh slug and would desync the + * anchor from the planned links) to stay navigable. + * + * @param node the heading node being rendered + * @return the planned slug, or {@code null} if the heading was not part of the planned document + */ + public String headingSlug(HeadingNode node) { return state.slugFor(node); } - /** @return the document's headings as ordered table-of-contents entries */ - List tocEntries() { + /** + * Returns the document's headings as ordered table-of-contents entries, meaningful after + * {@link #planHeadings}. Exposed so a custom {@code NodeRenderer} (for example a + * page-numbered book contents) can build its own contents from the same planned entries the + * default {@code [TOC]} renderer uses. + * + * @return the planned TOC entries in document order (empty before planning) + */ + public List tocEntries() { return state.tocEntries(); } diff --git a/src/main/java/io/github/demchaav/markdown/render/RenderState.java b/src/main/java/io/github/demchaav/markdown/render/RenderState.java index 02b2e5c..4f0adba 100644 --- a/src/main/java/io/github/demchaav/markdown/render/RenderState.java +++ b/src/main/java/io/github/demchaav/markdown/render/RenderState.java @@ -30,6 +30,9 @@ final class RenderState { /** Base slug -> number of times it has been assigned, for GitHub-style de-duplication. */ private final Map slugCounts = new HashMap<>(); + /** Every slug already handed out, so a generated {@code -N} can never collide with a later heading. */ + private final Set assignedSlugs = new HashSet<>(); + /** Footnote numbers whose {@code fnref-N} back-anchor has already been placed. */ private final Set placedFootnoteRefs = new HashSet<>(); @@ -84,13 +87,16 @@ String headingAnchor(String title) { base = "section"; } Integer seen = slugCounts.get(base); - if (seen == null) { - slugCounts.put(base, 0); - return base; + int next = seen == null ? 0 : seen + 1; + String candidate = next == 0 ? base : base + "-" + next; + // Bump past any slug already taken — e.g. headings "Foo", "Foo", "Foo 1" would all want + // "foo-1"; keep incrementing so every heading still gets a document-unique anchor. + while (!assignedSlugs.add(candidate)) { + next++; + candidate = base + "-" + next; } - int next = seen + 1; slugCounts.put(base, next); - return base + "-" + next; + return candidate; } /** diff --git a/src/main/java/io/github/demchaav/markdown/render/TocEntry.java b/src/main/java/io/github/demchaav/markdown/render/TocEntry.java index d908d5b..22d6e83 100644 --- a/src/main/java/io/github/demchaav/markdown/render/TocEntry.java +++ b/src/main/java/io/github/demchaav/markdown/render/TocEntry.java @@ -8,5 +8,5 @@ * @param text the heading's plain text (inline markup stripped) * @param slug the heading's anchor slug */ -record TocEntry(int level, String text, String slug) { +public record TocEntry(int level, String text, String slug) { } diff --git a/src/main/java/io/github/demchaav/markdown/theme/DefaultMarkdownTheme.java b/src/main/java/io/github/demchaav/markdown/theme/DefaultMarkdownTheme.java index baff561..28255f7 100644 --- a/src/main/java/io/github/demchaav/markdown/theme/DefaultMarkdownTheme.java +++ b/src/main/java/io/github/demchaav/markdown/theme/DefaultMarkdownTheme.java @@ -4,6 +4,7 @@ import com.demcha.compose.document.style.DocumentColor; import com.demcha.compose.document.style.DocumentInsets; import io.github.demchaav.markdown.render.StandardPack; +import io.github.demchaav.markdown.theme.tokens.AlertColors; import io.github.demchaav.markdown.theme.tokens.ColorTokens; import io.github.demchaav.markdown.theme.tokens.FontFamily; import io.github.demchaav.markdown.theme.tokens.MarkdownTokens; @@ -129,6 +130,7 @@ private static MarkdownTokens darkTokens() { DocumentColor.rgb(51, 65, 85), // rule DocumentColor.rgb(96, 165, 250), // accent DocumentColor.rgb(15, 23, 42)); // surface (dark page) - return new MarkdownTokens(colors, typography(), spacing(), shape(), page(), SyntaxColors.defaultDark()); + return new MarkdownTokens(colors, typography(), spacing(), shape(), page(), SyntaxColors.defaultDark()) + .withAlertColors(AlertColors.defaultDark()); } } diff --git a/src/main/java/io/github/demchaav/markdown/theme/packs/GitHubTheme.java b/src/main/java/io/github/demchaav/markdown/theme/packs/GitHubTheme.java index 8c55fe9..7604548 100644 --- a/src/main/java/io/github/demchaav/markdown/theme/packs/GitHubTheme.java +++ b/src/main/java/io/github/demchaav/markdown/theme/packs/GitHubTheme.java @@ -3,6 +3,7 @@ import com.demcha.compose.document.style.DocumentColor; import io.github.demchaav.markdown.theme.DefaultMarkdownTheme; import io.github.demchaav.markdown.theme.MarkdownTheme; +import io.github.demchaav.markdown.theme.tokens.AlertColors; import io.github.demchaav.markdown.theme.tokens.ColorTokens; import io.github.demchaav.markdown.theme.tokens.FontFamily; import io.github.demchaav.markdown.theme.tokens.MarkdownTokens; @@ -71,6 +72,7 @@ public static MarkdownTheme dark() { DocumentColor.rgb(13, 17, 23)); // surface return DefaultMarkdownTheme.of(new MarkdownTokens( colors, typography(), PackSupport.spacing(10.0, 18.0), PackSupport.shape(6.0, 1.0), - PackSupport.a4Page(56.0), SyntaxColors.defaultDark())); + PackSupport.a4Page(56.0), SyntaxColors.defaultDark()) + .withAlertColors(AlertColors.defaultDark())); } } diff --git a/src/main/java/io/github/demchaav/markdown/theme/tokens/AlertColors.java b/src/main/java/io/github/demchaav/markdown/theme/tokens/AlertColors.java index 1486545..6ee8021 100644 --- a/src/main/java/io/github/demchaav/markdown/theme/tokens/AlertColors.java +++ b/src/main/java/io/github/demchaav/markdown/theme/tokens/AlertColors.java @@ -68,4 +68,24 @@ public static AlertColors defaultPalette() { DocumentColor.rgb(220, 38, 38), // callout error / danger DocumentColor.rgb(22, 163, 74)); // callout success / tip } + + /** + * A palette tuned for dark surfaces. The light {@link #defaultPalette()} accents — the amber + * warning especially — fall below a readable contrast on a near-black page, which is the very + * case this token group exists to fix. These mirror GitHub's dark-mode alert accents. + * + * @return the dark alert/callout palette + */ + public static AlertColors defaultDark() { + return new AlertColors( + DocumentColor.rgb(68, 147, 248), // note — blue + DocumentColor.rgb(63, 185, 80), // tip — green + DocumentColor.rgb(171, 125, 248), // important — purple + DocumentColor.rgb(210, 153, 34), // warning — amber + DocumentColor.rgb(248, 81, 73), // caution — red + DocumentColor.rgb(88, 166, 255), // callout info / note + DocumentColor.rgb(210, 153, 34), // callout warning / caution + DocumentColor.rgb(248, 81, 73), // callout error / danger + DocumentColor.rgb(63, 185, 80)); // callout success / tip + } } diff --git a/src/test/java/io/github/demchaav/markdown/HeadingSlugSeamTest.java b/src/test/java/io/github/demchaav/markdown/HeadingSlugSeamTest.java new file mode 100644 index 0000000..a4339ab --- /dev/null +++ b/src/test/java/io/github/demchaav/markdown/HeadingSlugSeamTest.java @@ -0,0 +1,71 @@ +package io.github.demchaav.markdown; + +import io.github.demchaav.markdown.composer.MarkdownComposer; +import io.github.demchaav.markdown.model.HeadingNode; +import io.github.demchaav.markdown.render.TocEntry; +import io.github.demchaav.markdown.theme.DefaultMarkdownTheme; +import io.github.demchaav.markdown.theme.MarkdownTheme; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * The custom-renderer seam documented in {@code docs/custom-renderers.md} must be reachable for + * headings and the TOC from outside the render package. A third-party {@code NodeRenderer} + * needs the planned slug (so its anchor matches what {@code [TOC]} / {@code [text](#slug)} + * jump to), and a {@code NodeRenderer} needs the planned entries — hence + * {@link io.github.demchaav.markdown.render.RenderContext#headingSlug} / + * {@link io.github.demchaav.markdown.render.RenderContext#tocEntries} and {@link TocEntry} are public. + * Living outside {@code io.github.demchaav.markdown.render}, this test would not compile if the seam + * were still package-private. + */ +class HeadingSlugSeamTest { + + @Test + void aCustomHeadingRendererSeesThePlannedSlugAndTocEntries() { + List slugs = new ArrayList<>(); + List toc = new ArrayList<>(); + + MarkdownTheme theme = MarkdownTheme.builder(DefaultMarkdownTheme.light()) + .renderer(HeadingNode.class, (node, host, ctx) -> { + slugs.add(ctx.headingSlug(node)); + if (toc.isEmpty()) { + toc.addAll(ctx.tocEntries()); + } + host.addParagraph(p -> p + .rich(ctx.toRich(node.content(), ctx.headingInline(node.level()))) + .anchor(ctx.headingSlug(node))); + }) + .build(); + + MarkdownComposer.builder().theme(theme).build() + .render("# Hello World\n\n## Hello World\n").toPdfBytes(); + + // The planned, document-unique GitHub slugs — the same ones [TOC] links to. + assertThat(slugs).containsExactly("hello-world", "hello-world-1"); + assertThat(toc).extracting(TocEntry::slug).containsExactly("hello-world", "hello-world-1"); + assertThat(toc).extracting(TocEntry::text).containsExactly("Hello World", "Hello World"); + } + + @Test + void generatedDuplicateSlugsNeverCollide() { + List slugs = new ArrayList<>(); + + MarkdownTheme theme = MarkdownTheme.builder(DefaultMarkdownTheme.light()) + .renderer(HeadingNode.class, (node, host, ctx) -> { + slugs.add(ctx.headingSlug(node)); + host.addParagraph(p -> p.rich(ctx.toRich(node.content(), ctx.headingInline(node.level())))); + }) + .build(); + + // "Foo", "Foo", "Foo 1" all want the slug "foo-1"; every heading must still get a unique one. + MarkdownComposer.builder().theme(theme).build() + .render("# Foo\n\n# Foo\n\n# Foo 1\n").toPdfBytes(); + + assertThat(slugs).doesNotContainNull(); + assertThat(slugs).as("every heading gets a document-unique anchor").doesNotHaveDuplicates(); + } +} diff --git a/src/test/java/io/github/demchaav/markdown/ListContinuationIndentTest.java b/src/test/java/io/github/demchaav/markdown/ListContinuationIndentTest.java new file mode 100644 index 0000000..a47d6ab --- /dev/null +++ b/src/test/java/io/github/demchaav/markdown/ListContinuationIndentTest.java @@ -0,0 +1,66 @@ +package io.github.demchaav.markdown; + +import io.github.demchaav.markdown.composer.MarkdownComposer; +import io.github.demchaav.markdown.theme.DefaultMarkdownTheme; +import org.apache.pdfbox.Loader; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.text.PDFTextStripper; +import org.apache.pdfbox.text.TextPosition; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * A list item's continuation block (a second paragraph, a code block, …) must keep the item's + * left indent, not render flush against the page margin — the regression this pins. It renders a + * plain top-level paragraph followed by a loose list item whose second paragraph is a continuation, + * then reads the glyph x-positions: the continuation must sit measurably further right than the + * top-level paragraph (i.e. it is indented under the item, not hanging at the margin). + */ +class ListContinuationIndentTest { + + @Test + void listItemContinuationParagraphKeepsTheItemIndent() throws IOException { + byte[] pdf = MarkdownComposer.create(DefaultMarkdownTheme.light()).render(""" + MARGINWORD sits at the page margin. + + - ITEMWORD is the item's first paragraph + + CONTINUATIONWORD is a second paragraph of the same item + """).toPdfBytes(); + + double marginX = firstGlyphX(pdf, "MARGINWORD"); + double continuationX = firstGlyphX(pdf, "CONTINUATIONWORD"); + + assertThat(marginX).as("plain paragraph x").isNotNaN(); + assertThat(continuationX).as("continuation paragraph x").isNotNaN(); + // Before the fix the continuation rendered at the page margin (same x as the plain + // paragraph, actually left of the item marker). It must now be indented under the item. + assertThat(continuationX).as("continuation is indented past the page margin") + .isGreaterThan(marginX + 8.0); + } + + /** The x-coordinate of the first glyph of {@code needle} on page 1, or NaN if not found. */ + private static double firstGlyphX(byte[] pdf, String needle) throws IOException { + try (PDDocument document = Loader.loadPDF(pdf)) { + double[] x = {Double.NaN}; + PDFTextStripper stripper = new PDFTextStripper() { + @Override + protected void writeString(String text, List positions) throws IOException { + int at = text.indexOf(needle); + if (Double.isNaN(x[0]) && at >= 0 && at < positions.size()) { + x[0] = positions.get(at).getXDirAdj(); + } + super.writeString(text, positions); + } + }; + stripper.setStartPage(1); + stripper.setEndPage(1); + stripper.getText(document); + return x[0]; + } + } +} diff --git a/src/test/java/io/github/demchaav/markdown/TableGfmParityTest.java b/src/test/java/io/github/demchaav/markdown/TableGfmParityTest.java new file mode 100644 index 0000000..b2f65f0 --- /dev/null +++ b/src/test/java/io/github/demchaav/markdown/TableGfmParityTest.java @@ -0,0 +1,60 @@ +package io.github.demchaav.markdown; + +import io.github.demchaav.markdown.composer.MarkdownComposer; +import io.github.demchaav.markdown.theme.DefaultMarkdownTheme; +import org.apache.pdfbox.Loader; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.text.PDFTextStripper; +import org.junit.jupiter.api.Test; + +import java.io.IOException; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * The tables extension is pinned to GitHub-Flavored-Markdown semantics. Flexmark's defaults + * accept a trailing {@code [caption]} line (and column spans, and extra header rows) that the + * mapper does not model and would silently drop; under GFM parity that line is just ordinary + * text and survives. This pins the caption case, which is the one that swallowed user content. + */ +class TableGfmParityTest { + + private static String text(byte[] pdf) throws IOException { + try (PDDocument document = Loader.loadPDF(pdf)) { + return new PDFTextStripper().getText(document); + } + } + + private static byte[] render(String markdown) { + return MarkdownComposer.create(DefaultMarkdownTheme.light()).render(markdown).toPdfBytes(); + } + + @Test + void aTrailingCaptionLineIsKeptAsTextNotSwallowed() throws IOException { + // With flexmark's default WITH_CAPTION, the "[CAPTIONWORD]" line is parsed as a table + // caption the mapper drops. Under GFM parity it is plain text and must reach the page. + byte[] pdf = render(""" + | A | B | + |---|---| + | 1 | 2 | + [CAPTIONWORD after the table] + """); + + String text = text(pdf); + assertThat(text).contains("A").contains("B").contains("1").contains("2"); + assertThat(text).as("the trailing caption line is not silently swallowed") + .contains("CAPTIONWORD"); + } + + @Test + void anOrdinaryTableStillRenders() throws IOException { + byte[] pdf = render(""" + | Feature | Status | + |---------|--------| + | Tables | Done | + """); + + assertThat(new String(pdf, 0, 5, java.nio.charset.StandardCharsets.US_ASCII)).isEqualTo("%PDF-"); + assertThat(text(pdf)).contains("Feature").contains("Status").contains("Tables").contains("Done"); + } +} diff --git a/src/test/java/io/github/demchaav/markdown/UndefinedFootnoteTest.java b/src/test/java/io/github/demchaav/markdown/UndefinedFootnoteTest.java new file mode 100644 index 0000000..da67a35 --- /dev/null +++ b/src/test/java/io/github/demchaav/markdown/UndefinedFootnoteTest.java @@ -0,0 +1,41 @@ +package io.github.demchaav.markdown; + +import io.github.demchaav.markdown.composer.MarkdownComposer; +import io.github.demchaav.markdown.theme.DefaultMarkdownTheme; +import org.apache.pdfbox.Loader; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.text.PDFTextStripper; +import org.junit.jupiter.api.Test; + +import java.io.IOException; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * A footnote reference with no matching definition ({@code [^missing]}) must render as its literal + * source — the CommonMark behaviour — not consume a number and leave a dangling superscript with a + * gap in the run. A defined footnote alongside it still numbers and renders normally. + */ +class UndefinedFootnoteTest { + + private static String text(byte[] pdf) throws IOException { + try (PDDocument document = Loader.loadPDF(pdf)) { + return new PDFTextStripper().getText(document); + } + } + + @Test + void undefinedFootnoteRendersAsLiteralTextAndDefinedOneStillWorks() throws IOException { + byte[] pdf = MarkdownComposer.create(DefaultMarkdownTheme.light()).render(""" + A real note[^a] next to a dangling one[^missing]. + + [^a]: The defined note body. + """).toPdfBytes(); + + String text = text(pdf); + // The defined footnote's body is rendered in the Notes section. + assertThat(text).contains("The defined note body"); + // The undefined reference survives as its literal source rather than a numbered superscript. + assertThat(text).contains("[^missing]"); + } +} From 66eff1b3bad80e5d2e10588d040cd5c8ba2c1fe7 Mon Sep 17 00:00:00 2001 From: DemchaAV Date: Fri, 3 Jul 2026 14:22:03 +0100 Subject: [PATCH 2/3] chore(release): pre-0.3.0 release hygiene Housekeeping surfaced by the audit, none of it changing rendered output. - CLI --version was hard-coded "0.2.0-SNAPSHOT" and had already gone stale at the v0.2.0 tag (the lockstep guard does not check it). It now reads the Maven-filtered gcmd-cli.properties via a picocli IVersionProvider, so it tracks the module the guard already enforces and cannot drift again. - README status line (two releases stale) and examples/README install line (claimed 0.1.0-SNAPSHOT while it installs 0.3.0-SNAPSHOT) corrected. - The scratch sandbox project GP-Test/ is gitignored so a stray `git add .` cannot commit it. - cli/ junit-bom pin aligned to 6.1.1 (matched the other synchronized pins). Verified: `mvn -f cli/pom.xml package` green (7 tests, incl. a --version assertion); the built jar prints "graph-compose-markdown CLI 0.3.0-SNAPSHOT". --- .gitignore | 2 ++ README.md | 2 +- cli/pom.xml | 20 +++++++++++++++++- .../demchaav/markdown/cli/MarkdownCli.java | 21 ++++++++++++++++++- cli/src/main/resources/gcmd-cli.properties | 4 ++++ .../markdown/cli/MarkdownCliTest.java | 21 ++++++++++++++++--- examples/README.md | 2 +- 7 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 cli/src/main/resources/gcmd-cli.properties diff --git a/.gitignore b/.gitignore index 8343ba2..e38f514 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,5 @@ build/ .claude/ # Internal planning, audit, and roadmap notes that should not ship. docs/private/ +# Scratch sandbox project used to try the library out by hand; not part of the repo. +/GP-Test/ diff --git a/README.md b/README.md index b40729d..77a4f7e 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Markdown ──Flexmark──▶ Flexmark AST ──mapper──▶ Semantic mod types downstream) ``` -> Status: `0.1.0` released; `0.2.0` in development. The API may still change before `1.0.0`. +> Status: `0.2.0` released; `0.3.0` in development. The API may still change before `1.0.0`. ## Showcase diff --git a/cli/pom.xml b/cli/pom.xml index e874094..0a79c8a 100644 --- a/cli/pom.xml +++ b/cli/pom.xml @@ -30,7 +30,7 @@ UTF-8 0.3.0-SNAPSHOT 4.7.6 - 6.1.0 + 6.1.1 3.27.7 3.5.6 @@ -92,6 +92,24 @@ graph-compose-markdown-cli + + + + src/main/resources + true + + gcmd-cli.properties + + + + src/main/resources + false + + gcmd-cli.properties + + + diff --git a/cli/src/main/java/io/github/demchaav/markdown/cli/MarkdownCli.java b/cli/src/main/java/io/github/demchaav/markdown/cli/MarkdownCli.java index b28ef7a..1c34dfa 100644 --- a/cli/src/main/java/io/github/demchaav/markdown/cli/MarkdownCli.java +++ b/cli/src/main/java/io/github/demchaav/markdown/cli/MarkdownCli.java @@ -21,6 +21,7 @@ import java.nio.file.Path; import java.util.Locale; import java.util.Optional; +import java.util.Properties; import java.util.concurrent.Callable; /** @@ -31,7 +32,7 @@ @Command( name = "gcmd", mixinStandardHelpOptions = true, - version = "graph-compose-markdown CLI 0.2.0-SNAPSHOT", + versionProvider = MarkdownCli.ModuleVersionProvider.class, sortOptions = false, description = "Render a Markdown file to a themed PDF (powered by graph-compose-markdown).") public final class MarkdownCli implements Callable { @@ -177,6 +178,24 @@ private static MarkdownTheme resolveTheme(String name) { } } + /** + * Supplies {@code --version} from the Maven-filtered {@code gcmd-cli.properties} resource so + * the reported version tracks the module {@code } automatically. Replaces a hard-coded + * string that silently drifted to a stale {@code 0.2.0-SNAPSHOT} at the v0.2.0 tag. + */ + static final class ModuleVersionProvider implements CommandLine.IVersionProvider { + @Override + public String[] getVersion() throws IOException { + Properties props = new Properties(); + try (var in = MarkdownCli.class.getResourceAsStream("/gcmd-cli.properties")) { + if (in != null) { + props.load(in); + } + } + return new String[] {"graph-compose-markdown CLI " + props.getProperty("version", "unknown")}; + } + } + /** Resolves {@code :shortcode:} to {@code /.png} on the filesystem. */ private static EmojiResolver fileEmojiResolver(Path dir) { return shortcode -> { diff --git a/cli/src/main/resources/gcmd-cli.properties b/cli/src/main/resources/gcmd-cli.properties new file mode 100644 index 0000000..a80a5f7 --- /dev/null +++ b/cli/src/main/resources/gcmd-cli.properties @@ -0,0 +1,4 @@ +# Maven-filtered at build time so the CLI's --version tracks the module version +# automatically and can never drift from the pom (a hard-coded string read a stale +# "0.2.0-SNAPSHOT" at the v0.2.0 tag). +version=${project.version} diff --git a/cli/src/test/java/io/github/demchaav/markdown/cli/MarkdownCliTest.java b/cli/src/test/java/io/github/demchaav/markdown/cli/MarkdownCliTest.java index 4b1b1e8..b49415e 100644 --- a/cli/src/test/java/io/github/demchaav/markdown/cli/MarkdownCliTest.java +++ b/cli/src/test/java/io/github/demchaav/markdown/cli/MarkdownCliTest.java @@ -76,10 +76,25 @@ void unknownThemeExitsWithCodeTwo() throws IOException { } @Test - void versionFlagExitsZero() { - CliResult result = run("--version"); + void versionFlagPrintsTheModuleVersion() { + // --version prints to stdout; capture it and assert it carries a real version number + // rather than a stale hard-coded literal (the string used to drift from the pom). + PrintStream originalOut = System.out; + ByteArrayOutputStream stdout = new ByteArrayOutputStream(); + System.setOut(new PrintStream(stdout, true, StandardCharsets.UTF_8)); + int exitCode; + try { + exitCode = MarkdownCli.newCommandLine().execute("--version"); + } finally { + System.setOut(originalOut); + } - assertThat(result.exitCode()).isZero(); + assertThat(exitCode).isZero(); + String out = stdout.toString(StandardCharsets.UTF_8); + assertThat(out).contains("graph-compose-markdown CLI"); + // A concrete version (filtered from the module ), never the literal placeholder. + assertThat(out).containsPattern("CLI \\d+\\.\\d+"); + assertThat(out).doesNotContain("${project.version}"); } @Test diff --git a/examples/README.md b/examples/README.md index 75cd3db..d23e8ea 100644 --- a/examples/README.md +++ b/examples/README.md @@ -11,7 +11,7 @@ From the repository root: ./mvnw -B -ntp -DskipTests install ``` -This installs `io.github.demchaav:graph-compose-markdown:0.1.0-SNAPSHOT` into your +This installs `io.github.demchaav:graph-compose-markdown:0.3.0-SNAPSHOT` into your local Maven repository, which these examples depend on. ## 2. Run an example From 74180415edb7e7cf41772eaa41a78ff8c12f495f Mon Sep 17 00:00:00 2001 From: DemchaAV Date: Fri, 3 Jul 2026 14:22:18 +0100 Subject: [PATCH 3/3] docs: note the Maven-Central caveat in the manual and re-render its PDFs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The manual's Installation section showed a plain Maven dependency with no "not yet on Central" caveat (the README already carries one), so it implied an artifact that cannot be resolved yet. Added the caveat and re-rendered the committed manual.pdf / manual-dark.pdf so they match the source. Also adds ManualTest#regeneratesTheCommittedManualPdfs — an opt-in test (`-Dgcmd.regenerateManual=true`) that rewrites both PDFs from manual.md with the exact composers the other tests assert against, so the checked-in PDFs have a single, drift-free way to be refreshed. --- assets/readme/manual-dark.pdf | Bin 43815 -> 44666 bytes assets/readme/manual.md | 4 ++++ assets/readme/manual.pdf | Bin 43702 -> 44527 bytes .../github/demchaav/markdown/ManualTest.java | 14 ++++++++++++++ 4 files changed, 18 insertions(+) diff --git a/assets/readme/manual-dark.pdf b/assets/readme/manual-dark.pdf index adb8189995621cb8538134f4bd6c5befeceb4659..a59ac744e7892b276a7b875822d82739df2bdb83 100644 GIT binary patch delta 41930 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�kz%|X_aV})pu{v z3`fp1thlZkNP%pxBM-_Jw!Y3&;>%*JR9fTioMQ8-m0##6-j9=#fe!QA6R`&gad~ zkin#8FQ2GveQ+YtSrCtch@MAal`oh5=>pRuHJ5KJb?^dYS!bt(!3&cvBMTN{&GS;B z;wf(IWHp%Qlm@D>9z?`7U-P)>9kNaRjRkk$pgH!#D!WMeCk@HS=(w}h4a}FSn1!QB z(r(MkOTxo9cK)Kr>Ovgjq|#8=IW-Z#c&R>k&Vm)L#usgjBI1ft3wIoDk#`Sl1a+7q&%?&lx&D>TU1M6BPMmU!dX=xK~ZTQH87J227w^`?0mrPy>*FX2Z= z$8ZznmlhU0uOe+yWt!$AV70p^8NGG*eDdlReAKY?05NIm<=x(S!hau_wEjGrs{TPq ztr5TVu=VBV`sUF6>RgZn&MgV$?7{K^-BSAe9v}@kR+O`|{!95$cYUO`O!kNIWpn59 zDU0x3WUlugN}T_1YkzNUOE1UTXV0d03{HP==K$pEPahA}cnLp)NNB$n5Ci`CZhFx- zqtlZOIGloYFT~riLE%VYdG4vx>`?l6a>ovOSFl`DG3u)G z)OmIQcP`Xo>)*qB3HfHL)k;V8zUl6C8QroO(8{A^{c{WD@is;aXdSI}?|lIO*loz` zVrvYtFhAAF{kEch=@+?o6d$sPax8cpc**1L7pz-piY_i|&m#lVm#oZmw)vu_RWE4F;n{o&ifzh!0MMbULzkn*3FMIQ%B0 z=5!GOr7qq0C!`uYe@J9fKL{aLUM9ORp9EvbbAmxT7M$I|c0#5@uR~stVTtxTtWe@F z&Ka(B(>MY{#b%UgljuGly+sx?C7U8}tUiUX;?8j&^P#n8>8q_DY9UiM+;mkI^02eH zqkq+!1`vVZ1(dsp6yDN%e5*&!wW3r{(67ZEPr2nGJqZqKTC+aW4u8=}J|2Jwo|OzI z@-VU&F3GY_@szROt2E6W^_;IfsnGvU-Z{l=`XzX=5J1mpKCmg9QGZY(p~eTq-FBz3 zcwCjlWcpHLMX@rLm|m9*TT(ds*>x{MC7okKmOvK$w0`% zq1URcF*NM*zhs)MZb6?D_^>Pfs`y@N^e{8}&;suV@#*${?G6lqf=*bPxPGUQ)%@w9 z26GhLEfeGB5qchIrC=cLeQS~xMod(hR0{PrmTT@^Ud!GC-lnMr{+teVaa7}H*chU` zk-iD*$Y>O}f=8X)kadTmn}{L7e;{cqW5i`#aJ@(Ej)9s$d>#qikgyyO4gYHdFb7ne zxn)3X|I5Sl6z?(N;7RcN{U+dz<|A;|?^@iHSJ+JBrO9G=I18lMLANfMs}G>OSQB!Q zy5w(*QI-z@J{mrvoV?H_3!;vZ-)=k1)Qlr*S~V-+v6&2Km%|gJFqc+%NSa)-2C;U2 z#3*JbCer10=WfuWR?XF83bR%;lLBw(TX!@3a$AD=l?#j*D7s^qFUQ*VP^>K?qzfn!*I6$QsJfX>{Br1n36NX3 zw8YaaqZGihvYD*nP%s+s8;l7jR)y6ki&R3Kwt7_wn!Vuw=qkkrF(W@*wI$@SCuCifZxl77cYVgp|f1aq#wgo#P=p7X%mFF{m)tF6zfx9@% z;ie^BGyzUD#3mL6N{F=X_)I`ywNr?LBFj9|b+B`Bw4;v12RF%cM}&J8 zNQS#Hb#)HYU9@~?F>eYn;SA_j+VMeU2d#cY%K)I5Ju!ky8dE17nA= zivgzVBl_;N*Iq8rJg1`M5w=3>2Ib-0%+$>G`+p3AQ4q$+1p`>)g%ABnJ}W)L%Ngox zrf*k5Nn0WLN;q}p12(eNA{wZ?w7SPkC|P~!rpVmIRPE`I^P?wGNO`6cyt5AYV#8^s z-&bXJIgC#sPkh=*4;$hsWwWVUjH}vDV8Dc^+91}Z^tgH)8{<%d0Ir2tFtrJRX@7Jl zw3gc?Jfp*3=+MIFlmhGH@jDVev}c56npU~`?BCJV=wYDrVq|pZ)Uc+>&SCDL%Zw!u zs8#Ty$sMWnuRZ0YQ-#!<+5@TFYYre9Xk+|5uhP#H?2aHgthA(q* zlnu9m(62LXf@<06=%R^AF$^+tXqy(2YXog|ydv(15_-)b{z=|4CyrTjf&fMY=HD8`rKd=^g>`2FcMM zc&uR#%JU=0GUXYjP$>B7vDA|l&~@lmJvBK8Ah0RMIc{-6cHw!1TyMb((tj(p7S50##iBSjO`(mI(J{>CPpT z@YH&FTbS`sef3(eWa@}G8%0S9oC*57z|B$RE}%04qcFIs)Cekvofe#J6>tI%HfX9Z zR0(|Ofr2JstXccAPSr{e;1U=XQaE}GYqMqpzZn>aNTK>eV{;@6CFu(uJW(2n5$ln(uM-Q`)1Htqgc}1D zj!!FRV9}nKCK7eb5;=KujJRwht-HiQddd+_ge1=36Rnx9ie3k`8qn+wvR{!*;wh3H zXu(6u2tMPz>HtlrLQ+%ch=hJgqf06gGcZGRR-V0DkFE7kw#mm(3KI#|i(#VjPYw6= z>SQmUC{p<%dr3TG_i@}SrScuJo@O~C4FuE;i{1?qC4^|mLPN#0us8|ok{n>rMr2eP z!CGyy6hJ2KwEe@00qjTIk;nKlw!n3SIGGjrM`Z64`y?%*dCY2XLNem7N{B{~_E!22 zZ?Ib37sGvT4sJ07f)QWE#LS&?!(x6#g9cEcihpT{E%+eJj>)M~3DL8PE7See3GIqt z=9i^MR#rumTVguEYA~WuVK3k^KK!6sCALzfYCH@uKt9KU15^=`ukJ}GO3e$%sp&NR zx~abs*f2G;Splk$)a}*my=ML)g2FCEXzENEQE4~ode&49I>i#Kdj5Ja(nGgVO0uZX zaSTN%&S>g9S`ZRGKYQx2gxdzNST~^*Q~6zFL~jQyQ}6IfBQ#F*r3K~tUl2YM$p>2e zn)$k1ss7m_0K!Z^3kwUiV1E`hX|8N(SPe9Ly5z?RC@R?8Zdi(>lkA6zD;S^QBkEcx z*mwiU;LTxnm)9G&j!0^CG=A7Mt9AgP~;LBi&sMunNXRw;4~5AUDoa= z8j8nZJqD&*WhKl_Nwt^)pU@u@XwL6M@}ta@E2%%u7QM<-3~o=mjEHOvJr}tu`6kAu zKo;v+z*bs7C9U$utL`zEl;+_Cw7KcYpa+Tx)yxD0P5bm6#&m;*Ok>EFkunve{XX^4 zLPfH1SH6LRiU9?V@FIjGT8K+bk{^+#i2fRUXC%CqHpO9gI1T7HMJK*L=F0CTDt;Y9m3e5$b0F!x@=4pS}&@zOhgR%o|D|QfgAA zx-gkXi#hVWiYgn0i?(ziUM-r5HaXjWl><`?CkbT%)T>toh>Cb4fdkkH=E_c@FmSF@ zK3}jLT*0a-(lnD{+k3p>6lb67A+ujTNn8d`q=3zh#1U@(a2lnZZ*@p2>1-72LPFc}z3LW5W@XO_q1 zL+@JyDjR>ReQS_4I#*TbQ*$wq4Pc{UKFZX&9b)sjq%?0WoSU_kJix^^tADE~&yl<_y%xP0sn!LXT}RwERgsG` zqlA!GlRO@==NEWEevICC0`Oxib4s?|fVE`k`ed02)og(d@XzRy7mGVcK(lB~DQAUg zS2=SQDzw{xlI9hufvEqJLb|K`Afa%67MVD)k-}|OhOJPX2y*ZVj9Z;M6*#Ru5SKLr^+svbtgjwA8=C}&CwGQ0>=f>>rJDPcXy&nNsdDk%wO zD@!hK(ODa9zH2Qb0$#3P8F>W(c9se61>w7lL8EQu2)*3EH$Dx!m)OELh028c)2`=6 z)#K-t+Sq4qAGr>4VEKihi~p15+}lq#_dh>}9ul8-JAud3jv~`SaEmmT{`i~A#EK)| zrpnINx9g=3&&MpWW||Hx^l`(We~u{j2pcVatN#+$47#=UZcX>EhU2&6cG5&A<->lj ze4Loo3HUy)iN+KuNyEyGe>PoG=ZM6*pmEH9T_kx}+-(B`eq-^b*cAB(H~%q# z?qtX}Tua z-rmmp4vcyYhf!F0csA?ds;#pCz6!q2p^gm&+j%p9R&&;Ol_O(c!S}cEYT4Il*y~f& zEZ8}H5d$%x)fDbZ;I?M}G5l4N#P@7_2KVARYxes4M+pSt{C}-nwB%Ka8!$FjPNwAC zOj4jlZ^LDO7}cV|_jizi*Oy-by{HK^O3TZ-$^laz*^J#xc znJ-inCw1+3?KH<52Y;C*#Lv%w+ppuZ__gM@V@5&w((`D(iC9+`P~eU4gSeXEuNi;$ zDCO&4ujH`-Ep}%ev+38u^y-xqX#IFiWtb$5H;X>QKcz}${$;mHdfbwg8#Ef zR4`y@Mgij*#B*vttMo$J67UDKhFHwHIb2ZfW#`~*Ff`rI!QZVE(Rq8lJ_laxJermO z236EeEQT8KTL5DqyHKtpcE2bciod-_@tzI(TUa9wT4SKTbS^M$JglE%D7DFgRtlh) z5+&^SJQv_<&Z}jt&PEFz?Ft`A*V}QQiA+3Zsf+!U?r+H5^D7e}ilJ_z>?~{S@tc8x za*J?k-)`#HTH)tC<4Uml?+Ih2X|}I|YTHUbTaqW#dO~IpoJ}TwqbKac{>b3683y~} z(KwY3&!>D24tgZ~QgCF`CbA5S$X39uvFoup-(YzDus`NsXW39gXs!QINT~LmNliNm zCo$Y{HJwPqA=9*d!{=z_o8#fxsl%&xf1i6(COv_bIDzm04d-A!R@Py=J+&BjmNyld z@GOo}8g`w%u+kx)%-N)lIs2d*BV;NGj5PM0;vDE+nt^--zP+#X9Clal#Ld=&I~_ngM$)9y7tw`JyftI9o#V*x?f!Y2^PU=5RmqUGMyTh) z!AMy7s5IU^Q8?P%QZsV1=%Y=ENMFeaZwODGu-HaK(_5N{KSLpTmQ$oZ zdl)!rA&Sk`SxiK->A`{8=`uDW%uA8_d)Q00BOVxGv=>MY?+#L2G4|@e5MxR`(=b8W z`GpDyT(S8Ok_m+{7~r9ZGl(A5Y29WIR3?k>5h^OtR%Rtu;U-}xG3A4+&{f9SA&xAI7#?uJi8D5`@BsH)#;Zh#kfLHi)0-0ID z2YP~hUFFKxHnqq=f@A-GJd*oXE0q@QCV0ye)P-t-Kds8$eI!5L{m~r3Ruo3W`0ERW z8RW;p;wuvhi$_7%C|`bDK6}1E(*T#e617W8$Pjcj3EB`$JZf$sO0t472)&pOH?c=G z;TgA22-ZEp9PkE8FcqZ-Bd%l|C5&>ZBqxyr_K3wR%&cGndC#1xC?Yoiqc%Mb5_t+v z^XARHHCZL@>VXIo2qNC9oBbyymP%hklC3t{7|8Knjg<{sGl;9LI#p72!vZyd43F{> z3(NFU49k4TfAPDZn?vX)o5NPdHKja3qHG9$#hN(w0uVuyVI+1pMZ=9h6tB5;Ec)!~ zd{KO|=ezkKTN-kMPi9>suxy2;XQZ1;a!zV|5gu7QkO?NCdOAh%H(cd(CF|T#-n1C5 zwznKC*mqv*s=V8+EL0(;(>&Gv1yn&UVaV4@i(AeVNl9U<3*`X^Y~>nynat{6^=yM~ zjF58Tz$~6*X#Q>=6Qj{KDsRULd8A|n^EI-$Tqu<>PO~V}Lj*Ir&rCYZKAFe=n$(hp zi8_Y=+s}=wkSC_mz~|N4I56MX(%Rth@Yq@BIVlx~oc?zb29CK&L|g>(A#@x0`rnAT zwgV3KagE6T33&e(?^2<`tCy;`08g;a`_Fwwb(i&wo_9Tm)sC3%55AQbY(~M@;32eX zkxSdwkNuRZEPiF&91P^kGH`U$rVzzwHC-O$8LSWN8}b=dTX^)*fEo1y`5#OQZ{eu?21aM=dE#MfIi9o3SPhx5E>i;Be zKdaG>^uhN2Ux|kUX1I#zor!BE zX8`lG73GmBS>8Sy7=`*=yn)djz1(Sj5la~v571rKszdEf*OdA0&ER#c zXCfXaL}XL76eq<(dh_D8BZ4z?Gt~dVL{>%IA;Ae~{UYPX*k|Ttr@Pxmp3d^z?^`1Ft#<@d<>5<;RQXsT$ zoffuF!*iyI>#HAXOpujD?O6746?6IB)PR#V{iVjRIjkA6Zb^LAH5mt(-!@SfjXBXe2ezz^r;p5#I6R|4oB)&k;+%&@+-XX3I*Nx;KqTNusQp{3*zW z@fwIb$^|WqdBa0`i)VaQt1}Ud>$G+2l27jt3?;xs06W)Gmxd}KM6Jo<$=Ms2&`MB& z^D`=jPv?f6XnYIjH!k1l^e02h=rS`2y5q4VKo}H36&Xqw!<+Ly&{6|E4alUwTHaBH z;*h%R3ZE{C-h@cgtMxlqc`T{Wh|Wznxcl7D9P6`h-`h^jve0%UFUY;URxphE*I=Ey zveOL!-%P>&v-S|LyiBS1bRf`_)YyIB_D3_5BgNuf2fOy%=9p{?*A`({DB-IwlM}`f zWwK6Ib7_a|KNH+al0KVPzm%x>KYg@%WV;wQuEte6wC>pZ_1X1n$B9NJzV}_$e%Z}K zEZ}5--U|M1dpzli@Gt7U1suYzEUFy(>!)u3>NM;X{x;u~Z_+Q`dCn406jIw<(v63u zF1=ed0Y{7l3)Q`-u#9AabhWI7UYaTt`nW=w3JtpFT{fzVY>505^88(o1h@?WeK$r$h*1lIOn5e=#VrD&7L#rO z7FkG=6zxhXnr;StQBMpUE~MlP*{QrTys*eUB+RJr3hP#*)+#(yK6I-xSQO`iM{V7) z;g17D)>7%7B&6uHMD#^T<6B&laC<;C3QLP!caD-v2VULLH4lE>LP}*vEoucmK$pAxNHQI^&)(yA`iVDB$lC zi8#_mmmMJJY$ILAxphxJb-A*#yK>gENwy;G$N*%p16!MSEZP+Q#wRq+R(9zIJ*F$Q zK|3why{|_zV})l7+8&E}6Ln)84bsS~4%-8I=}l)_6K2by3z%9-KY zt}Ii2zLNoCNm2QHVcJ3l^KO!#m>J_wKMo@#K?g!4*1;pOH zTO$V1Sp`o@ZmoiJ^8c##UfVE)TV&q!&;~q}q^8{Tzo1+($Kzw2p3m;DOs@-Rg31o0 z)Z{pb)F+8s+-g5(y9B&Fzs>=>96Ql@aU0dzym{7Ck+z*Vs_W;iFOJJfa1G{qc(`k2 z7-~67Z8$h)I$O_?&*vqNow_zWptABfCEemfb#lleK)0kV9opU#SN8tSFf73;c?1`H@=M+q&gE4Se-y~JrCK|0D>lrmc2=UcXSMWI^5mM5$_UAVlH zZP^~g-R~T&r4YNyrwc*KNCq9?*acPR9G@Lz!B+T53gsJilM0ZmWEP5qEhGMbOZ+t+ zDdc7U!#1t{^Mu%*rKH(L9bSoR*A?aq!`&83VD3zU5-AhK6B#a7xHgnIl|P5|liQi7 zd@M5F{hJj6`Ef|9?H-Nh*ye#_XnLv>Y4<^icFw0ry?(Al_l2Yw9>Yr{W4VZAqGe3~ zyzFMz_OZj?;2pTxFc5pGk*qgAF;n+dIR<&mP-<7Fr)k14YY1Yv7iI$<& z=vWu5-ByZ6XwU~$+l(!6FXW*@zEz47zE{Qyi}^FpUjlqNnk_6J0-;WZp&ImdE5?@y zn-k+0c)xwB?9{2!YZ}$-AKi7$VWT%T&*mz@1^eK%Yr74WrYFqsxdS46hB2djH{5j& zlq`oZ*hxpD@aBkBiLSBP2ccd=GR0pAeqnmQD2P#rZwK(sMB@?b96&XaP%0kF0Sb60 z(RltB(JXxbPjPH$+!a_zg0g~hFuf@weNQXSsA4Qy&3w?m*D6VEj39mlu_uaJP|W+6P{iMt zANe3kEXgtfzCDgLSKXb@YeXO_jpO3E@&5YVK3hKS*Fe|HQm_7(le_cl%FgGTlk@jL zc7|3I@4p$FmvDLFjls_$SXZWSt^JG%=2ubZr|Oi<``xR%A>f(u>u!&b5?(t?H3dVC z;bp=5oK-jKG$C1Vg5$?XZy~Mje1AJ@);?wPv7L?lNAc8K_O#vY8h_i`j$g2aG%u#; z5Mk~&uit$Z=F?4)T+d&LPFrl>#RkTc+aXTY*isYN4plmbtToc9#|VWIbAoRNL=HTI zfL`*&!0$l186cy&>DJ6+MP#)&WDAZXSI&ioU*6x*yH@hyI45)F)(l1KN8TS{lWjM_ z6oNEcdj7gIgfFiR#oYBe!yYLtp;pV5pi@LfLu>v{)$8goE9T>M5AmslpLQqFKrbKQ z<>~o)xO)inyj)If*NawFIOXSUe65UBt#GcSaUy0B03tOh(zo}%FGnD(e+aV#69eU+ zT0+~birmHyC$M$Li|C*%AAh18H7tkOzbvrx*!{9(e^V}KY37hF0>7NMqQYpKw{aX; z>0~)OPL&XS4))8SXp$T~*RQyDok&Y8u7XRa?hO`XFwCW877<_#T)zr_uQ5aAj#WvT z*mQ!B1E_JYJiosn*X#}P9^%9AujA65b)i+1*n@uLZEb;vj2v#Qeh3GD#G@J;j- zdeh3AvVL3+O-&=fCg6g=Qyv!`(-inOgcOSE4q-N?I$>?Kb_pxI1t|5}Bx)^)-pr7m5E zU325>A+yEx*Pl`$OnEA)2@b7JUL!l-|BDbbd~*4hOV3#gk8*VqJf0c#>8s$7%4SXB3sZM7s=D<|Ztt zUT>!V6jbo4f-4Ay+aj%*O^2T|tR;B^Cg_guog$hlY-T zyqN?cXPeecUnccKwEr%N+7u*N2t@CCJ%-eR(0x{~FC%C+i<|Jt>hr|`GTx_C3vdVq zAF;4`oaSsDO0|(qC9$TWDsDv>fE;%=VK({~)Q(hSLhjsjwrKm0VhY(7W&rOu9)fvb z{}%0%Z$?k#n09~Cg0;3%VWYUwi(q*XTLGDRvl$~^R8N(Z5JD>izCwOB#-uTqHjVE| zRSI`T6ud*@xS9eT76CMsu6%ak1*2+_aJC)jEE~Fb<7v;g~}>|y8IOBMzb{%+S^iJw<*E> zY{UKH;wH@!_XuNfpnP7@CjHwj79n-N3FouixTl!|`v`U&{=PtK6X(ho73kS!UjZBj z{Z0ayCdUI&~6V_W1jpm5km+;?UQr1GzSfv3#I#exrfWb za^+5aH1;`gdH3d7?o}GXuPYZdx%kdNo)SS(8^K zxoJaX-CGqQelV?`{5+=Pc!S7V`^U|}1Cb3=Q*sUu!*TD>JjW0JUl^K`qJ+R%T$8f2 zPoRyL;9;I*j*;N0PuGV}PQ0ohT;$h^aZ{?vKj+Kb-W31W%Z7W}+-ww`Iv5j3EsGQT z0FE2;P?1fdMGxc+ah^-?J6|hL@s4+{+Z4k@r!li)bzP3M?ldcK536Vd9z$Ut{wSGAVX`-hJ} z@#kfXqmYo_*Pno{?)UdkyAeTt*gmu?a;6$%v4o;O7}#r2J^7Nz0SQ9Q*cfao2CYef zpva})5w98u`1DlA8)<%G#81&xGy*Mz>EJa7JU}5jE<|sT6-sb)>j9GnX9K35k9GkM z8x}A72hTOSUg@6)=7hbJBz+;%_M!?~&t=_oiN^J-9}`BN?P=zQN93_V z`2dNqfo(sHlcl_NlG22!g z9k2V5zAtaW?>l>YJ3eoZIN^ETe?T)_G0YG$2r7i^=<|P!bYAx*tfUdzT%mV-d7176 zyk4e#cSwpa-W?X{9;uGKY`w?N0B92*PfO24dqb!Zo+CAnb0x1&(HbOUQd}cvKB(V! zhV>2C-vREfuCHf?0_*c>gg8@!mwAT%-?o#tU(~cWb>TffWc<==V%)iz-391U{~>>R zeSLl1IQjk&1OTs}sAo@Z?54Mtb6{zL?(E;!6$~XLzD~Mq*sF87dkI!ktV@?1O(48-3U^4L3}4k#qV~n zxdx?O6wzpO>l#yJ14ZzOn#=GropymZ^u&T%!FXQ55n;ywmG{dRf_AW8E`k^+W?FcJ z2+cgl;>prZ$IN>gaqkW(|U;HQ3xXG!&8F zRy=#xth>J4ef%7I&`)M+fA{?-ypxV}S3id#mrg!ZwhRKkf8YZFkf&b$f_M|rLHW+a z_woywAK?87^A$p*JWZf96Y>)kQIvDJIce}0hMeSo-1gNc9cvqcAmQ$aK4>6e@ZG*t zvAkyvp<>%tk=o2F+z}mzkd)keWMCXd!1#U??4-=%>Le5knZCaorVb(O~pwj9=KpzWfb!5W;t5-^{tc0P0 zq7PAAqdX`&9ri1FN~0EOExg=n8=kT{WUM`_2G@47}(Z!tdnc;vA7H^N*(v7GVDy8sz|FK}ntXxr; zN%S{?2=Jtlzh~AaG^3q(4YO8=_W1vC^-WP?1zVKqv~4?S+nu&;+qR9Hwr$(Ck+yB7 zZQGOg-ptSZ-*wljI(4e{KDBF~q2_WJ7?D3Lb2R;vmS2X%VPb>}QaefUFsZf;L6${b?aj9mJMC+dbl3$96y%rBOZ6hrQel0EOL z7@7g^5eP`s>u-ONzEAA$-^=&%+pAfL-aq#N8n3+AD83?DO;Qq2{L+8q)U6NPck6TE zj07eyEu2KsKt&Ij?)#D26Y>6`rT!Jnb13Plwc0UiO9M-bwyojtg}kO<+5%n#^_l z>2KofVH*B7B_37@ZlxEEnv-epH=T6dV*}G5XTBe0avh>HNW|fU&`7j2$j$OtRpfG9 z5+#PUemJ_8hOY%s)CUa@S!_QsYp%nSK&kurIsH=(stU#Abb1nXg282LBEJupjPMO! z%^h@%!N!oEr`eu<^@PokS`F^F7yT!&re=L?rm<`w{8O#6fbivqA}To+|4+5WqWv)+ zYPRd4@aPT3Tv(v;qw>8@XgW?PpRnDVEav?a5%`?f)ARipP5~{MQ2yZH7}T1pvgHV3 z1E=kalhf~78zU+Alhg0CYzvaYF#a1C9fen~|L;E+HSe>-jP}C}yMA1qQQUxQMl0y! zxT52UN$=^*p+CX~WB&O2lCLV&`HcNv1VrRU*B9x_=k;aaWAEzgxg(Ap!t%2+^G`-L zqpbIzW3fm>bc9ThCjNWBDb}aq6xjPi69PiI@&RtW<@oD`sYoM~ ztI#0U{FeN@>b!jrle0eq{cABHkIV6Ap{mlsU7y^S@0r1TUmGzf*@|YNNYQBN9iH5R ztx~q_2@vz#y?+a=;4wPMQt_CpyeW@|N2)Mm7y4VXb4Mm-@=n2Z1n$4*ESeS1-yXk+ zGt4!i&1eNA5hucnp94;ZDwM6qm8a&b$hR6bG$4VSCs1UuT{Ap2+|cnKX;bw(=v5P$ z(1_&CLfk=SlBB3d80X>>?h{6(WBQt=;=sjk1tvAAbcpXW#>EfSpk#@uc@45seJcB% zF0UvaP-Y;wvJ&8NHmO)r3_*Xv!E7pm``qOV<*Oa*#Pf})i2w)4R2JUJA|ef=?DhKD z=A=d5APQcFAEP&`hMg$jeau>e)~wPTecu0wcP#X*so(b+TE|b7*SSM1arqgM+HXXr z{%U@b28xHZDBmscjCAS|2%tHI`Yo!Yp@gf2Fw;O?7iENqkEP)HW1+$KP8k@>(s8}U z-q&xHv04fVHUOzn?rs7Bccee!oX_7hFZoSRAWX*`M`4+Zn1xP!COL`TDwpss)W-sZ z7&hyw&`*6N7ZDz3@y%u+4|5T9^u>!$SDcCPkq%G#@g=L~?QF6X3q@us4|o_61(VS# z7NOQ)AjGoGjA>TUz<+e9@#=m{Q>Pr1DpnjBkMf&wgZ6r21^Mz8cV6YSCUOvmrJ zav8bsS2ZoMzt)ycxaInE_H)4+r~$`TD>WkErsb|9L#8j$(uU9jk!fG9d*<$T@?dd@ zAvR!OQiHJ4ZxVWc6A#@>|NGFeEP4(Wnp6DTe(M3Mu%n}=%!CIF#vTNkYDNHx|0gBr zsg9;(AJE+(JxRd0J@yAdTLG!QVjMZh?k_eU&TCj+(tmcmfAlc1+cvm9@|sC?;fBnH zdi4#vj=QlfclwCc!#xARwyT*nn1;nrp*)726u@G#9YG^DG;43TNPt)Tk)XLpbF`*8m( zdXn*y>Rh9DIEWK9VkN~n92T~%Ot1~bfcjsK$F-P(vDp7FG2R=U&ch^~++wuKVkBWS zv4!$QMdCnyb(bcWFxu0r)p}AIO}mfxx8yX_8QXqiX1%9s`|b=D4wQv7i6m$tU%0%K z6=?dF)1r6cSI9d)VZ1yQb-*H@x<2qfJ7J%%%`s(#eeW+WHn5>ZGn~lDJi1?0(}VYF zM>e&*qg-#Z>vwxXY*{X8qa#$M&gk-bnT9-0tXRkH`Ul%SEgOdQ^fvjdxwoELu1xV`9hKwkb3ino%1unX#~@`f}W0- z%g0SJ;z*-3%GZyVn_qH&y}3TuqZl?waGOXP()JOrVp7%zbS{ths}XWCl|I+c*1tN} zES40^vTHZzCo_9&{Lu)R11R8j6h>RRok4$Mxz^ zD-$|hn$!gEs3px|_n^e3-WlF2CJdXNC?kQT9Xh0UD>n!|ka|OKk90QHo^QT3Wdh^! zG1Lo34QyS~uYtM+7I<3p^EkYNt?oW%iT9xgR=Hc3X%G zd(}+oK9mlF^p`cCPX}t`USJV9j{LJwDs&}Pcay&Tts&@kr1Mg{KHQ((n5zC)(73T; zWBR+j_ep(67MTr>viLl9iUgy?=0zAF)ZR~}`ukaGKw0)q7qybt7VV%rRZazygaE@& zG=e{dm1i2RK-`TVoWKyNHLJS{mLv@0vAp$E@^b1*s*z*py?m8+D~)uqzI_nUs~eMf zYrp;4`u)l)M&P7L<`kH&)ojB{Y^HG)x5;mHf)zK7scq(S3SuHVW6uMi4#qX{W?xomT07E zOm-RI)<_;@nnOc#==1=-i#JVp&S6-u5J`jd0fXgWWkbU}p}&dQzey1BlNwUn(I=Sd z_o%zT*D44iF(}8tN1#`YY6U(2R@ew|rDRcTE{?}C`ukwl-M7;bs$W`S?3t%sYLHWKLf}q=nyH}_ z3V?c1E}~-7FN4{s@k3IVNKHh8?%NaYXHfAHOqgDHYE!`h}GsD*B( zK2C=O(L!Yex+v~K@)wh3l{iTcb6f@SB5<(s$cA?}gxB`V73rX>u8>KD0B+UK^~Gqn z;xn5c)i@1Nk-a;-d%RNf*W?*btZJY__imdM64THEa>_#<=kKMUA<^UST6k94*nj>C zJK4Y~DH%oMb%wK6cAUJ?oS5FjwVjMD#)qc}+!te{GulpdeD)PNu161snwQAG z__ZTG5SvjG&vXmoODV-o6e9stdS@z%BYVo+0zb=ACFsTtUvdq0n9=fY4S>Q>R;NER z61TgsxdE@kj#>qI{UZD(HQv1tEz@{3U|!Dn$h%@(4#80CHbnLex(%_J&!Y>-Ri9{rImgRqcI0>9W&Q z4Qr9`pg9yJACoC&cJqBw$Xm_$4)}U4#edB!q810w**ltwL`g|n0 zEE%acer`4A4Y^kI+KMi@4&x(5GsMSUDAh>BziGY5wF&}jw_^ekGD8`&2TELXn064R zj~X5edaE5(Nfn9a2E^u-fugy;e@kBTTSH?zpeU{SWfn)T$N5k7zZO9xty)KglRHEy zmu76@{`Tz$*lDRf9)mrx%v@ghG-eIl?t0&PsaGW#DHC?osnHEC_bo5+RB;}?? zCs=tjJpVe9j&;?-h1wda%w4k_jJ5n;0gl{j#Ki%#;}6U#hRKdZ)0lc60Y0tV|7^*2VPl=V)(FxI^`R2@qA%vq6CfcpIX2dI>ynNyUVfPv zpdpn5hD0+!(m{k%U=8a-U}UsDCWga-LW8vurfroUDMawtSG?w@te%-H)UlBM`#Huh z3ul;%CeZN5n?%iDwUfnJUWT2~aNv4zJ;AR?$EHRK3J6$zQg<=ny?W-(TVaicTZN z3yR>Zr?L>sx37oDBw|;bXD3_52=dRYnCquE4~8&)bx}VM+UD@*t|dsGMYe|D+=LvPOwQk zxs&LVxG#(j_sPm1W@00J~<%|ECbEeb!8D4B!rr3A!Lbf08yTzQz+BNdHS)x6W)HqvZ#ulQCl zTHJ$x2+eXc>!ik5EBoz$<2Mtjj{bBBbfCCwOl518|A>U(6f2<&ON4R~G!oMiyD8Kp zX1>80t2?1mGOBQ!m~K482(ZW^u!ywKO*DJp9sHJY1A4&TMDPB6MxAh*7-2c_r|>!=PHHW zCFv{QS)hocqGlfnaPBo)DTZVG1ubMp)-Dz`zk3@wmdn6 zG)(TF)M77AE!K^Q74VQ7XGAH6kk7}Na~hx9wL^0K5O%GCF|E;nzc8KfPjcE6NE9Y7 zQkDu;SvYr6%kTkT*Kx+Hi**E*y8DKubJ35OcPXIgQi69M;a)(JCgpi-5v7^I&}prO zcIJsRIxf`nwow=4>RxqgFzEYwj1@2gCh(G+ZVoldRVli(2v7}}C-Em)tT-MUE5VAWoNZ=aG-+NkoFl%Bdg?Ddk)JrMkL@iBCI_gSzcN zXF3g^*ShBE1(LW)G4e`x(W3(fR!G{3{1`bbOC3o>843?QA%%R1ZotFRlt%xwC+|U8 zkFCg3X6kMjZ3H3&_;Xk`{uqPK9)K>FHQ<_mShX@`YHzSjr#YdY9>t9xNF7rXV-eVm z8%P!7a|B_|o?_62Cxok~RLjZ7)`!KSnM!rcr0l9dQ1$q$^s9c(nVkO8Jw|Rz7QYW?C?e zhcmi(qkyncU!?pY0er;Kzg6cOs$_(|5f_#b_Y~I9Uv%H#V$oi|U;C#N z!i==g6#}r`=JdmFX}Eg9eX(u(#-+XfG-sz zT%yGQ!@O2D)TlUH1)MOsKmNxJAUfj3Km9%C8@+dh3wetw?WFkq#3Id1@BS5Oowlw+ zQ9(Eb))%)EQj+pFSgm@m`S&~_0`d~ZW7dOLDglTQ94wTknXwj5L*6J7O`?d^{B!UE z3^=fnBIU;NC&x&^mU2ye`UQo>AbM|f$$N{iISa$UdP^24^s*+X)x*xie2^OG{S00U z8nK=fSq?6jGLH$EQFntFNUoH#*c30>?}H<1ZNHFoW07b3JDR1f=ZF;ipK+mv(Kv3O zDFGk)$9Rcm!jjTXX>msSbL05dB^5r`{4kbxmWYENXcE7Wfce`rYW~&M!wQQfxdQ=l zq<%0e3T2M&!**j6q;9Xi8ImLD0-bWM^=Q;!Bh;jw)mo!=X~{{UsO7-P84+WKpK+^~P(yxS9DqAofj^{R&nmxNTRE6Se zG1*5`U2P5hWoYB8O_rW)L^RYBO>VYHDLODfuq4(^t8w7d!`(bGy}dG%Q*i2Y=S8nC z#uXKB=E>~yWX=n2fq21%+|JKEbPcE!6~uT>nR(coWj29Qk(idMV{_hIcpHMlEoHh_ zpoEwoBwZZR+!;}2w%-^y>}b+m})n+*%#LZeO8>pEZN^VGRaS@Z5w{I*-yi4Js~(5?g2?LgP0YA}ryR-ibcUW6SRj=dkMGM6}_3@<4)FV_H(w4VG4}XpS z@IF-0y{8UAtFxuw;T6#H+ECOLty)`MOC>!x$-p0_y*vwO6=adoSm>gl{w=??ic;z0 zxp!{OYAt_v)p6Fj5vGqB(R?AucDYbS-WO$mpUH8Hnr~3o8vwk|)yqA9S@B>`qOC_N z5}@IO2We$!lJOULNW<+moBRCy=K^N*qbOWKonEA|))gChgWo2Mpgvls1$!#sw zP*s9B>2H%TK110Kwv2D|Jx4ZVwQ;`o9xwl07&I3I-$9(zIT_}jEho%cME ztaMLT+Hf!wiF%ldweojMQ_PLsVP_BF7T@=>3MaTieA+p{*yB8Zzhhf zlBonP>;op49kKYA1!S2Xug1k!UJPPfr;1~!0cU3GwsiSZ`vK~s&D^~MXreZ#S}Vhc z9^sKGb_0jWxF-kglLSFzVx4VLo*6>b_+tc*YsB=^r;Ird3%eh-dK8W6G5#0@W+IQ$ z{+NNiH7ZG#lDdb#4SC51^{K=U%UD(&Bhv(W3jke*k2mI(YzKla+52Un(5 z1b8E;Z3xu_DbU=H#+xhY8I;jDuT0fmLlQn@|{))Clh zj6tAIm^!dzB8Mo=-5r#0;1t_}q^E{_ZieSU9&<8|1K zOd~^SNVb?=i*>?{EX5-iIK60L;!&c92k!BA#AzyQ`Jeks$L}jW6j+4|)>@C<^+U}J z#3V|oefdH>nrc@)cC0NP;$+r$;}epyGR(idakr2>pLxh)aM5LUob(K-(s0Qhvw%@` zYSb&Y-%*`RRPv8c(b$wxDLxx{rfcPGa4!9^-1lM!d?`=fjYMrL#!-zRvqxnMi_ykI zla#xN9=a3KZ{ou3e7e~Z%;^nDQGp}h2lG8Uqsh{TMq0xnvr8UXeym!1W9dqX`i48( zX(@`^uYaC?M)7R)Xy^(PX9UHr6#+?T6_@&=21eFr>F%C={=p${W90cv{-v)=h*(N= zkx-|s4E&FnvoI4(L0XKXJSdfu!MKtM?5nI7FNXpg3Uq(QlYSk5@LsAJ;~GG(gBZmf zhuaDwKFmmq6ikRMlImIN(DfjJDzDifhK8(w^V_Cmc5WmmebhWPhifm|A_2y=1S^~+ zm>DKo>%kh?XUFQsT4Tr+DLVV^;&XIre|)aHsx2&-Vu@zMM=EA%TXZWV|KvML+io>E z(dBbAlX#fQgVRE1l_Tq!kC0h4bTUz`v|M-1lZUcMhnU2;J zq53#@rhsyB$sj4Zip%ZxcNY-wAL7;@BT35SND8Ec1#KLZ`pYGnLNms{qBuiZTYCCCFk2O+bz!( z?li}*%ZqiRx9FXt?z!uZ@%6LukdDWXKLtl9VE8x`aV{v#JGXBB?-woH{^Xu?*ry?g%`dxIdqwMRkP%2JK zTa>`D66N5?uA6EYQyV`)#QLGX@xZwAUCbZwy?~Qr%V>M-|o|qKx$UbzOeq zPJSTThBj1h3s#r0E(@TrO({-IDhK(!wdZdSxUR?XZU&J`d9B>TO_aizjoN`@BlTys7Li zt5T!`cFYV6Tk&DuFw&fyfY5=y^PK}JEv6OHh-^tLBTm7myt~d=|H8sU%$js8)b$pg zmd=>ql>oyS>z|T1b#iWZs&g2!^B{-Mh}E{5uDM2EmTxi_L_R^L7(vjBDT|U z!|wsr8~@fjzp$%$iP zY+*jS+2hrfO|tZHX5_t>*(&Zwkeky*v#6UWyqXa#8OtQ|H8ajNGr@TczEnB)fT?K8 z)Lxk_qX919SNNYmbdDRFTjv^{xaWNEcjT*OjBKo#7vpxVc8=n`6qG|s$|#19D(AW1 z&Y&-x9p7j2GfoiLQwWxY-BR4?S5w+DJ7E}Z-a@Nbux4e;^9F;mrKUkQLy)Tvg41X& zE+#x0F^j3Db-taF`QmuY3e2NMI0~NisUGosgeeZznC*RSPHx*ZBU;nZAK7fha|1m- zl2`AGFK)w8WL@t^{qJK(YBhBKbbfxzPTqhM>=X)l8TzV6M*P6Ii+ef~&zXg!uc5bR zz}pvS6=ufce_I~VS>1rKF|afJ_l?J@ zhf|XqLUM8r#e=7G<$U5%_@7r(!XRN_?HuzwB+Cd_1f`x6vLq;oVPLT;?|Zu$S8s0P zB44+|SEdmcBI}Jq92^0BJ`q5utQO-s9o?D+7xNa&T)OOJCPtLg*4k=uk2~OVbA<_L z|BJmrds-V+{JL)hQJxRE`H{XU2DZi+z*GW?kC74HG3bSLUyO-*s;$!zRucwFbY4EQ7 z$}T(T>wSmHWAHSMwb>yb6ma7?M&Hv6(mhE`IrgRws{2EoA2um{!M)#m^>%UVs`F~@ zJzpc$uct#s{q@b}JH$lbtZh{QUl9rw3k~P;%F>keGOMcj^Y~&Ai@t>){BMcpI!An= zA_avhma*?~So!%AyZ#LJaSB_nxwHlloD^N@j31(69Q6T6rt}7&`T&OdCd{Nf2-|9Y zP^5Y>t)cN%Z|wqgan7snam(PKPAUaI)U1bPc%9&sw^1yHw=xex$g*H7Lo5AZ20Q!S z+k*;$0+!&+=%#z11tRj{VoD}9@bI|(O95k#!M0fsecywp+6}!?=hIA2$nGfO;I$cS zd&+KH!hJoa!ndW(4v3z>sY;iHwckQDi{kcK;wDtH8+Pg0O43=`MEsa1iw0FR--N+J z#)c}gKmA6Vsk+6Cc5E9rQpF6Hq#9dj-YZ#~VX!8~k;)IJ66No1<3AM%W1P{yt;E$H z6+iK#59SOS{FE!Vv%&vM_m@n38GbZnF>^uo>y-Q{xmC!!12B=}Ey*#QZd}M=rue}V z`)WECTSb25Kw)AQ0!sPEvF>A?PB`cmCPY4+Dt8z1^+m@Mu->av}Dn%LzP@71Id zV@0M1V$XolcMh(;cy=!TE-8ZMA0Z;vml|gH+uj`Iih~I$SmdgJ;QmvD9Lq2?Ab#z=VOs*qBpbh)9|_)Y_mjd&2GVHAglN?) zoNMXvhc(zpuYqSFFNsQ9MNkZikkB_!7?&+}Me}EY(WwC1!2%A{OH$M2I~%^Y<<+N; zvlrhLbO2Z`gd$H;z=G>nr8xJc3pu#hr2F^?(ewmo`GhrtJ_|~Sa;~a$>LPzMtlPdE zLcibJN6@}X>6gi@M05qgM>8|h6|aRvGRTydBMi}a-xgA>&l)Qb^@ZW7>Gl>Me>=Fm z^cVpMmz@U;T7_n^SP0K*?|T5*5=?T}XSC%_;C_1&)6SNC&)4U!b?9n%kN`FR?`=q; zoo$UAUTpKMDy|=PRGjYcw$x^w2yDn$ucG+}i!!45hvj3g>Qkx;;@4JV%;V|!$(Ps& z1hpOY{`}rJWrI_{+B;+xVX!Y2rX7PqsWz&Ozo6HnWI(HiXX^;x$K zOcNZ>N4(`6Eysp!$Bxp=T^>LN3;JC(y>$991>Q9*7o0>^Tj~6a^mxVI9QXBg`g*X` zHBqeH29%0l*EZo2N|h7{=hEV_0aTC;Eg5{)sClV!-E=3KYgY$^gxDK51F)GhtKWvGaR z(hx8uat=8sfFg7bI|1}1rZ8lg@h|klhZu%$pY3fYY7reT?>Y_P9O9_5RvFR(l-&?w z>9P6*%-^^(2u>K@2|t$)%jI z_;Y<00}SS3bMbmsxSZXdHXvHr_u2onu?~zbYk6)}FY;L~Vm%eLy zdb4St1BjvGL)6^7#^6`d%-;w2_O%9h#Xk?|A+|DU$j0|z)qt*&T^%vNnQ4G17 z;s(z(4#xp_O#-2YYbb|KIX{Oy#a`1e5xhqVU?-jz&~TTOC~hylt0pZvDkK!%AEaq> zMBvx6)+#ZBa}~1ITCjq%7dFLiMKBDaQdLDbj=DkbbdIQ-iVV%Un|ycx$_eKNAXDjHw@W$m?eJOc!DsJC zXDkAy_a`7_Z$dsENih6WLoajXWJ*?0>R*~gl%T*dB~#6c`wd8yB}L+OjPx%s!HWy< z;G{$iEY-0?g7T2+s;-%r-~tmQVzGr+j9GaQFd;zW`%HrQwL21kt?O;NuU4Z&_<5sK zfhA#lTJ8a;*(M@*4l%2#U)j8#?U=VgYAGJ$!OljPJ5iakVdHjF;bbt(B0BLPcq9#!m>sjv?eQNex{(-=k) zV;6LrJgh=O670_cLN0Y>PT2E--1R>ootE47OYL@JKXD$-`Jr+eM=n>I*X78Ccom1& zW#!l%dM37M?T$JQ)G^#9mf08SI@=BOHf)CQpwf80XM!tSj}Cw1i&-=om*MWMKmc*Q zs~+c+k>3oe9(r(XNxLeSntPE4V4`crokDaJlAPRuyFak< z6Mgz;5YSc5dGA5rY7B;X8pKtJ9o~-pXr~O}ML`?*_ySNi)ekCn1=Fc#E1}Us#3B~h z9fy3^S*gx%6hTk0edDT#@@si zbKYOk`?m4&m-H}&dE*vFb9FJAIGwjO@-Oe^&LdYf(b%90O@Vvd=8y|-fg)`DIS#pC zqDg9)qdTiC#ehvtJ$LYT8*6+smDw(p zKnby)?9_aRSk@I%lLyOsin1d-#cXE|wCv_=;ICRr%@Jr1Ev(w#RUr|sl1+bhLiFNx z1bPin@*nyJN4B*z!QX|&=+g7WQ@Rp`WH9Em!%StQh33+R{&qpXQJ#bTEx|vLo931@ z$s3(01d7fF1!7N)_e_RWE9Ec?yLIR13ko8I6W5TKgekH?&_iHfFir(d*Pk>Qpp=P8LXitEL7F_z_(MLoETpdyZ%%LZwzenT^yHQ;*MCF`+xdpx%4s?HZr5zxCU|7_uJsMr zln@174p^h^O10_+YzMoe(xqIz%H+^x%1U`nBk09mzPb0JfXx5e#@K;ndPf*a>BHm! z?yi%9Sk&@0P?eq)-Ipvpo)uw|36lqBnGy9gC{}qaD7_qzx)aUy*&R%uJ*~Hl4hs7H z5@UNQC**IQ7wyekk!pKFg4WXDU?}qwza7{tn+U&17(2w}u?_4?s11-LN4vUPBsCfF zXvO~g2{l@b!lK_ z`g|h#%F7T`K)!{UNxRgCpIGZ*bWe`6)PD}z($E`Jbj?z}Re#Ej#Mw#K1@yJGZw|I@ z?by~*&Qv@d)ab@!EIzK1kCrBYaI^=(*8YO3^?)l8EQ;!Pyn%Si2ZtHm%z#+|F2@Gj zwpD&%rJ#BYtu^x%iIyS}`B3Jl{@_GI>KsYDVUK6y7d+lmzT{UkeMP&ahtO5#HaZIi}5 zBY_?uAsVGrmnWf{g0muLoQQ@3ly~x3O~tU2qHbF|>s1S5;wSL>$P!NCRE$h#oTVMy z8SbsTr61wvmHzFHiLawwN-2ir2=g2dW#L#3;qOXPSm-2?f-dz4S6@;hifVhiU)~-I zZVaOOM<=Wb3O`6=>5M%Ss_C88&*A$7Oaz}1Kx%G{jZLNYJ#i8jF^wkX zK(@kcDhxe>aH^V+)-Z5i8b^U~=r^I35;Mf_>nT#RNIxQE($NyU@kj#-BRH{n^LkhF zi8PT&#tF|M>rc3kGyFYx zx6RegmqQX);IFaOP0?By#&;uLq2gN}vsxyq0zqd1Nj7()ypy&lASUQ{s5m_i?V7qW z7E(x(C{;3|tY@9DS$w+Y^z@(3_mOIMCa7^e)o{dx!$y{Ph5q|gYciEKtswd_E`k#S z3+ri|ad6|}!STpZ@}Ocl_V^!(JFSktqQItG9r>dm0LT-DCv*O&Fh`ccz*>PQb;e5Q zaZst()m~Aq=NU4um*;SKHWFb87{UW4mmht>oCe;V%%cAnl53t|{9K%|BknL0KGPWVA9>}Ct60gyhEhsrE=Y`aFI8W;2Yg)o1E$&2`&Wfz4X-@FNZ`pUqw<3e? z-1Z+pNXvR;_#Zwf;Jt|Z4#cw;@k%94++A<_Ir+!;Vh;V~tD9R3?q?KtVnq^IRb@b% zbihmL6J>U%6mD^z$UTZI7Qyif$!9q0?Q1)xS$Px#aQ+~j63xr&|nOf z*OeBc@ZIX20%Gid4GLLWYhdKm&tRdWlFw_WH-!5@#m2fE>ru%cm}xMZ4iCiiSu_CS z)SoFsKE~0@^(_rOO>C)YWCqu%wNydF>UKQA#oUS>EB%AX?XT@BJ^ z6P$Lgk4Ef;EpmN9@tKdw)z+pM^!NvV+yr
DHxi1H5>qr;{qC702c2R#l8X<6BQU=Ms_6w60e=}(jjz}qJkpPpF<{fNS z_Yxeo-7q={KYz+ySYFqEXEZP2F)F%py&PB59db@Gm&sKhW zw|nnh0ar&R7jxb|fO8W29ZGYB~;EX<7!%hOcS&M{&?vNhDaL0 zEbIr4KI4Cf*BUW^cV~8U0xdTNyPMg8XJg(4wDs{wQWQZwpy*AiK7r(;pNw0c9RFS& z%4$Hed97_*^NrV8R9|Gr_fD{N`)V%#T|U;%_Tj6QMIDT8@8)(5(rKVo?&;FjQBf^Z z@!DgwEz*s<&F46;nbe{4@!HA#h{tZ%O!(p(z@WZkc)JC!q)Ovq=*7<6j=>#2#~f1# zX#6)(7)2D{mCF{ruY$F}hlR?fR`r{Iz=Cr%q}LNd)+z6~93O=h@l_6OryS@!$JH1v zw>;f3_pAhjS&0XE!xh$_;SA>ydqXT!c$-iZ)ZZnjFFO-ABIOo<6%HeRCvQ4IViags znD;PPs!~CdB14LWCxzlG5AcKT$paD;-p?x!PN9$M%c0`(gn|{#Qf*If{A$99C>5DM zJE5>eUk;SrG`!Q9->OMg%2wxHzaB5_^+Hnqy_v4##O3U~D%~o?-BuaQbfNKBrgt@> ztiNz0#N@d4=fA;|K9MIGc4Fvcu%~gHVUEH3e}hFJ&5*_5NJSBW2NZk{{eHsAn3B<& z&?D>y4=juDDj~S`Y)yXAs0AEc=(uNf=l925{Y-SG+zx8roKUNHIkc)Q;<_rteVkC- z;ldY;_=SA4uCKl|O7tFzIaNT3L!u0eK9FeFPDf$|ZO>AI8VE_RgR84XGQ#Fbr8?4n zgJw1cUH}b-){Mfb4e0y*u5-`HQmFJ0k1s=xCe`9M6CFLy<5${N=i2{mw6%A%Rx2|t z!=##p;!9Tlp7^W~NOZUmUr`dA>o)#UCW7LQyitS>)k%r%uQzC)mzrl(I&gImyl%o; z#dp(Il&~5Kg^zJ{qU$6`l0D4NIeG6NLteJR$s>0-`;$6;1RxqhRKy{0{%kT8{YOFT zIV$pP(Yq-kNaQQP)%X~{y2k_FPwOqxZ&}rE(XDn8^XRr0ObLG$73F?r_U`l`JMJ4D zo6%$Kn3kHribl}yjvD?kS8)i>$$9aQ`yZ~J&uwPF>^g!K?Q9r(ooCkj*SFQ!bWZUx zUzb5YrWiv!6m>d+|*9b9yscF|Gar_V|@q!Er@skL-@i`_4DHK{iR`L|O zRzoSUz6rEnv8MiZ<4tHA{R<^5Rg-GP-j--37{mksF@p0NpX~M~^mQcMs>GAO+@Ih6 zbQ^&hr>NC4;^nk;UEDPGKB`>1u{}Jvd?=~Fi6P^{e@5l)e&<&v)Vcx9o4~fBUcO&-TBv|ADsDe|jBv@2NSv z(;EkJR6h0V+659MRs}So1+DPVJTc(Gg(4q;Ou`8>8UpXWX&Q?-$6q-77b_Kk9dC(giMX*%!npxD~Wgk@TrrZnJHGMm=`VM&^mWsX<_sUt3xe zV-UpRpA-kzLr17;0cY$0bSj7-Ml#dvDnr|1<%wpi!|Uv-d!9JpB)`rigw2d?JxxLK1VRTCo;e26I$$mHEzX%Fft|M4sOJn6W`0V# z)?|tx$|0Gjvlw>?dNw64Kp1q$5RtEX+PkkAJOLL#GV@JM^*vtJwdXzt*S?GCLikV) zDF2D8(zDl#q6it%3%V+ub*XCHHV(c`&xW~~p{D2a)?b0$?d5R3RTHhoex<8D@kH4E zx!vQk@-SKN^;EV##Xb)ODIggAiwz?Fi`ifM93v#<%1#wi3d3~y!Z!Ng=qy4C+4$w{ z!Ltca$3JmfW*!u?WKz_>GN*~CwQMA`k~Og;yf_^BTUmX8;WS#fb;PKbmY z>ucz4sO#a>usO9YGj((O^m6Fg#hs}x`0;;>`;Gvmod3 zX@tAawi$C=f!l+^B28Fea}TdI4djqgo`?w0I&id=$Fp4Ffy`Q~TPpJ{B>oA;)8~vG z!q1q?P+AZD)rG3}+2?S|@r>pasgze1>v6{u@Ua5?d`9>)W>Uzt|tT z1gLDLpLpSJH0vjHOW%Gd24M1#d8x!$E3K@AwshU@;5}Y(d=8J?BdvYhd&OW#PR!lM&2&NQovDQ15hP&T6tOvc;a2hB`2OZJW(PpBYhLn20e6#=JFV;9 zU0bxgk-!c55CNi|4gKfcp?K%lv{9Qk%(Wan%jN3R`Z8t;-xQ$Ll|!i3abbM3X$a@t zweItcf-e$y*hJ7U=Nrh)5+;_nec6kv?ryHw?;=oLl0r)MV&Ty@j+Rv_PB_;yUQ!8T#JIJM zu#c}eV`@ef4Qe@fvaBl8<%eQ*x^rGc-om%w2s_O4wD3kUHXEt*p40D;u zFV+HctmgA4DVK$0y1Fn?5l47cC3Fp!K}6@mk5yXALPd<3hfb*x3vQ56_%)O0R{eiRgDVKmZu$uA9%X0Oyx1hH2fs`k7 zU(@a?(n@YV=SU0+>6P{o#aYevl@c{BH)xf%3^RB)TcR!eP<&s_y@!68d%AJ3$u0+; znRkFs#k_q%Pj**!eHbMEC1v7I9^N>Bi|Uf@S^-sUMB({dW? z!?+yp$3tso@Z8zkg?fvTUuR1P#G$KQ|3RT?i?QP^tUpNyjin=ld1EFBY>M;99GR&b zHiqcEaJCS)z^RE=UftJgW@DrXZAGdpg;;H^f)R9%3p+Ej%+MT7LQTYm=lxh`$;UMv z;h&>Ra^-#LbhhM~hsl z2b(M~Bl;c>1Y`HtDeUj6*Zupc=D(VhtbJaW@B8vP>Sqk+Y$)3j`G*K1X|jaNk0l}P zAa|ZhSLTq*#Q>(ehbKg!PcGj>-C5Ajib6+BJM2s1v&eWL@{c68hp$2$W*h7gS8woiZS&~Sd6vYvxmRR+ z@Y$%s0(n4DMhtz^+>0upy)TIVH+f>aVn&jFm-tyv72lKXVE+xU{H3w%Zi&`+)xu|G z;_vV>&-&nXsDRi9L=A)Y!k$dMW75L?ow$_$6sj;AQ*I;g)bRNN?ANMI)~?i%b;0)G z@v9aS*!lKr;b2zkG}xyP^zv|G-$15RU55Si6W9DQulRCIkWoKxg`eD9O~_Ye`MK4A zH0>uVnb94jEvBQp)n{Q!;f$j~Gr=N=CFZr%#kq$Fh<9{5vMW;*utbZ-T)H^uwo}s1U{oz!4xN77nw2f}_6q{x9W0K=n$zR~n z^0FL6zDe)ju-%Ts6^KQ@W$kdM+e*r`fMd@~{MEgs@ceeR*zxAmqpirYEnjo=diC}c z1yo-lOU2(KeTM(n{?3m4-DAd{E51MK`|qw59&8mgfEryQ`Nulz^!tlV6x6^o6&klG z#DVGPNdh;v^kz!akHylS{u8DZ2^w*ch!!Lk4q*P+WXMN!Me*x1ifE-%+m9y}=&49F zm%M1@G(!p!{Xte{&Md;~UdjRMcBrHrO<{hoA7bfG3Nby0yZic&7bz-}}FQdx`{DMG{rf2y&U*+LmKMBG^PZ)2f$Dc6A}dKTw9z_G)e)PGUi)E!$Ud0NnQ5noTv&J{k$(h+ zc)qK-bhtSSb;&Rb8tMMfwFa7Oxk!WRS-X>C=5>Lyk&c5pt_^?okjZ3a!OgQBR4DwA z#Pk975xA{}Y>G6wT$uJ_)S@!#7#PSsMv+pqmT9sfd%1;HUT}VORO+a8KcGAEV;`f+ z7=e+u|M0sA!?>3@!by~8^*n3{zV>RkMORcbgTfqm+3Zm=>cxcJE|-Q`{}5%Oe+t1! z4?F?Kal;^=8#6@D-r77hD>uFl5aABl-5g687HhY0P|OUGKqskUq6(^{x`u>b7lsAm zfJIU|kBMDb1W@Pj2IL%qPX@6t!i@0=#0pWtzUI~VXD^1JOXFF>I^eEuasnPPqc=RO z;|aCf9O;sK2U;vF$@&5*6Q*gjqu|aeV%;jPfs+H~YIl4}!=M?#D3+y%>w?IGFfCmI zT_EOJQo3MFzm9U;F{UTFJ*3FSnY3YmnPf*al?zSPm0X8X*B@3yg#eaWJyuBrWo_Kk zHS_a1!+Emr1&{_Ojz&OhG3zNtW*I;8Noo23gIH(6 z$fmZm?xt~)#28akbjFA0H_Vt7|0yOZcR~JE17eO zIsUz$!EH^{*!d7ec07Wp$s5QR2ubyb&_$f(rkid0XTyuR+6M3fDyysPODHq*D^FC! zp823*ec%?FFxI5G#QLBW(e|Xd3U2ZyDKNAk%J3+WNAHl1)DZOvT&uh$kL_ZQhPA$b zVGZAQ5_ZGLvHNYq3)y6dA*Viti7k_kuC2wM=2|luof94@|E4;)22?U99~)7dV>ETM zZWK??Kap1z9;Qe$DerxAmTCGumn}s}s3@~BoM3E@nq0=0Igfmi4U4>Wyj7JcN9vUq zqkKpm>ZJv*H6lgB4zA!?4LP0}?@zfv)2N+M(#>S3m@MnThFBQmo}{KPCaCIrvi9+X zT0GLCv!jaZL<~f*?9@vzRT&gE?1=~Q2Da#7zRFw5(#HmU^>TCfBas0q2NB6J{Zwv6gxkdmmI;WV8wG4t=mShBH3aAC1!tzE zGexmxM3+(OAQ?=SgNKRfz!90mfoL4GZEC4}rTzVVIe$6%PX(1tBH7TffGR|K0yQSd z@jFsu8VN9|RJAUfkYJK8=7uR%G-}z|BI29$&%!cN7uh;PmuJGDn)@A+rhT#Cp@BUI zxTN?74Ei?=No?ewAVwMf1+wA(Gc{d|f*({Ut8^Xk5H?T#AH|}MONJikb=28vs!TT& z$Y_d}t)J;8PB?z_WyCwex%A@M7S>qFLAr70RE3K=7&9+JgLOS{0wq@A2DtO&grn*( z%$b<&PK*91l7>)BEpS4AFqw~BW$+_J1+s+*`Qx?sLg5e36V6VS6Or69N!y?zV1}{? zK^L}ALjq^}MQ=}|rDtleCQwqaE^#+KP5qK1et!w5a#Ey)$w82*4c7#bEy?Vn*XhbB z@c*K0B{N2(k;P*2R%{ICo6XX`{T-h^KtG~OKM0LPK^U=dS!5Wp3?+80re)+1K{J-D z8#o{)E|;49Xl9f#~+LkgrD{hzd$1#H7t$VX9LapXbHAlR+XP z3n6w1_DqBvh)*_AQ6aJ1WL_&`MM@IF$v%mUW8}*B` zoCtxY2#{*cAe^K!z`;<_4;*k$(C%aj1aaVP!y?|P?&lZE?mp#HXffsT1z{iRg)i=w zDY{5}cQGxl+GYNZ5xB1@DI%|vcd!A2vH~XkR?Pg=bMm8iwb0vR(X_|nu%bvC|IV{|B=G+;l`oL4zh!K z>;6kOfgSJ}0jGhHoyKHW_=YVo36rqyq^8y5*Il4#wO$02=o_Nkf!2N|JtggTWD}1P zOryexMX(Jf9tMr2sgpF~V8338CWB5sC?;eJ=aTSpv3x;Amb`+^u>@_9Nm{jSAJ_`s zsd?l>ILW_l5)Qa7XH$KKkGxfhg*3Pp!s1dvLlY5+Qan1%DO*{|ypB}sKayO-VK%>8dHr=g{yjg7bv38#5kKyfCH91&I0 zSVMef8$PL{FcUTEsWzVv!lSIHqT~ssru>lF4^Xp6Gh&k_3pF<($OjYxDU?gVAS+E2 zxAaGwqVq)Y3{XOH46~8jZw?hsmm~K|EXq2jsZh)Rl(0We7^BPdSr$NE_sD;*nqJT+ zKe*SZn9@RMaLYOd+Vh}xvKu7?sA%WLt{`X32CQhD{*b*-DO;n13`(1@v&#Hqkc`e7 zR_^yl5TM?F-?yxMJP~h#e11w`<1q)CisaV@U%%Qxn@q28Z)5glJb_vMaFTxu&2fT($nPhq2R8zJvg7k=BrHSP_J+K%tScU_1mm@}5+xg6i)`BmS-$ zQcqE(J2*Aq*vg@(ZS-L!+DD=1$KTgHemZ!)BsR!U6(hh-(~3TufpdJ{ zE&1CurT+9>SL}wm#p2XD5)-tO*1lkz08^fw^tFpqCfU%xFBL^v1(Jw!=`WjTi)Ho0 zn7(gp39%`&cX=tmr`AZuOzkhWtQnVd!&8I!mPAY3iBd;t_tpH9u%(!IY>HvI|OOF59{ z-#=P=s1rHCqE)7mvdle7mvxYHIVNycWtj_jC~?~gp~E(UxGXf#+Y(dRi6*P?X9ai* ziE5Oe6#Wn>DQ1E#5vy=k{6`k+=m3d?&SB|uY+jBvT@tyN9$yt&f#S&vZpQM5Sbn-6 zr{KYNhMU67>wf-x8yV}MMVA(4X{Bd2Fr;HZwk*TnnUF!!mdf095D^{)&mE%(X{Jn} zW<*$bADk16%WTp zWN8|zyTzHP)u9KG-a|!4aV^7aOBbFIYmR zyQhb^;G{1#KQuXw;-;?D2Mc;_Nl{f3>x8$Lf>)n8RBx-%{qB!`*dui9(~Q}&E7@)! zex72zs&{z^VT*1J5!XsGIjR^#%LOTiJn)~Zs${`lF$vc zBHWb8ibiO#`RTfp($Xm#MuesORU!ilCOr#6Tz{i9AD8QU%V|>ZRl>9kD!;Y2WpjEP zAnmh%2F1ep5`H(z`5sP5`T(Vu_qL%=TRX79(EK+I5hF+V%z63ioBCmdXk&;nQ7gxY4H`gZ{NZo z*W0k3+>n+RTc<8lo^B%ct_jDc4b~6-?z5|zU+5qAnC%_CDb*4#>;p{P=Ddn4>+;M) zWO~p)GJ(o~OO^OBKk5*lNMTenRYEC-Iw@eiO){TOG7{6pKFZm#vLrXw{fhK6SxC0H zaC$a+9JUrC^ouDG6FLaZg7vjs!W*a)X6j{~U4M9NpK$DVkr0#_>y?MDJ5qtB^^PTD zyx)=iCY)BS=s&uGTh80j@Frh97S?|-t@_tha|IOy0}86xL14PSUD!@^s zs7-d3H~|(w?2;|oWk`a&z{ALR1uOSQB(D$d7=s(0SnCsqP<1{neK;(@8^ZSG7~sK} zfmULL8xGw8vIIaA!2;$fWT7*Js(!=Xp&);YJ=TF03MTk>%R6F^SvD5xn0Jl_Ni-Je zR85&9H`FNJX~9OIk;K&m>dn*weSriu42dk<^HF4a77K%0g7~IPJfK8$Zg!_T(7LdJ z>C0>0#(B7$2@c&EDvDzcE?&+$n+ zEAH_aIsS0eCj_LQk>ZmA5wP?M*=Q3(<8fV0oP(9=sY4OyhwJv(SQ7gUl?ez&L0FFo zpI!gG1L&3LbVFo`DdAaOG4Jg-tNGV=x7F~~v*$*ws8xd_I_v8xs?;8ll|%E1JO+p; z(UaW4&%fXYAI~NW2_NLZ0X8{qLmfIAQQtN&ju8uMrP6 z-FQC@NFtQ(wRIQhCQ-eXBhhjzR!~2@7Jc>yxcqyr)6?IoA$%Fj)2Yk5IaR+&U)%N> z<;miShE#E>)EuI;s*|UpnE)(ZGt`+ea_3SK`U!Knf!5NqMEyr_0?RRl3 zq$aZP8FO5q6?rHw*cqH}AZ2+GcGy82935pFkviBxy#JkaH(Vf+>~WJCN4eH$9xcqP zyeL>{K(zlvDooiwM0~Mx8H}kRIE^akCOAcoVYR!1o#`mG7GJRmW;F`|t9yuk3@V%| zYm>@W_NSKgW1rI75`t<5cEifJV0^oG=72cgWYixTkIU5Yx(bU z`j##;-u*N^aQS}lz_X#7O3kzE4;fK4oS@w|XGmi)#A zt7>n;jP#P{>=EthkCrcoLAFy<+qL{kJ*|x(_HJ`gw_ery^J}Nw(fD9Y+^-Rd=dIjh z+Nj+^i)O-HR#ukN!HD1DZc?nl4)&}AM)q-Laa4n*&fT8HZBAR+n)PTq0hM{{uP+@> zyAWtxUld{+Y237O?dLHgtq9k)W?Xze?H^;7`T-)-TTTqQeBA-4t+l#2TwkIo`XD$0 z%f~Nl0tSwKflz6db+uK3`02Cij?!7Q7D*d`EXp)PUt2hr)HTuFl4TTBPNC^j zs>g1G)HNAIRR)7&=j2t^-WclkDp0b=n;^zjY-#!Fw#U4iI7fb}jM;ta+D>7~d_pbh zUAUxwl4Iwf_N1 z1oXNuIv_2(16TG!x*S!kmOAgGH510+80c4(IEx0 z7R=4jtMUJ{9e=5WjB7+3vGhaJk;lZ>UTRvPoX*uhw`%sg=&}_d;{beBjJE*4Hn5!D z)xWT6?t5~viYDS}wi#pSU1L(FD!j!Qb&NVVEt<9D$;4h_nxBEe)xTJNCdHM+^H`^9 zL!L?ft~e=B6&_)XH%5z_jwlH-t!M3HFR3J0PVehqh=P-H%M<>JXv^8mQ(Ux|6gdY^ zKSm!io4H;oWTrlSZpK|)nxmF1{7r?woRN*p_!W#|^mi?5c3x3dmK?wkBO$LPQ2zT% ziJmLde-kR4D@r-H5Gif1emo!9AK0+%nr|8-Z1?%=Qth02VZ>&JJOn{A+R#_*m1f>W z%06*M8*h^Zo7;oS(wAeq=-Qe3gmRCu5YP{X@X8Y{4w+ln5hJ4nTKA~k*X;ku+X3^N zkNt8$cf<>NpZCd5S$J-)OudJ>ek-P|_Ephkv~a3`h~YT*W9sUSq%_3F>rR|O+f6@?OI8>2 zid3N#hFcs0MT~#+)=`EF6r;nw)Z&J{mcVy*FPxSM6Wi{<+VX zdU}CZd44SgbPdiQ~ClmMuX9KL#adS7sra!ZZw=yj(hY~BdRr)*!Q#_MT z!zDT7%isqm$4iwg_g3+q7}fl#qh&7nx$dt70a^>bn7>xw-ZWv*0)`i4Sz%FEn?9a zKspbE8pgn15G(MfcNhjb@>Tkxy7NR`&xeo7CwqhHiL3akz ztEsY5azE}b{Q6$vPJrwW#>=2+9ynWlcU-r#2{0s%Srvr$mRorT&$9M@M2p&0L)SGm zV3(}veeADbTE9|5oWW@8*@_jlG1j*K7MgdToQLiZMZyYs=ES|Xw`Mo+VG*vY?QAy| z8*927l5|*>d+`y4cCSP37UIVY`*xo5vbCBuJJl@EIQPeX#R9`z~&yOP8=SvPP_P~v_o2Ovrt>l?9Kb{)cbSgGIu&r>ds5JkSjE9 z&)ar=trMqCn4_7BP^J+9KJfOQL(f7DoWxS3J$hFr5s#*A?Pcq3>7NPD7Hv$y&+@WA zyGapq)9}X)j(Gen5k_oB^!#(?esTYfGoKus8NxJKBg)#No*dE5Yo6T(uP#N(JwW;w zAEl>9@HZkA(}nrbiQG-H|CRolC!d{F@^~uUa)u8bef?s48@4ui?OreFVk{R(-O(mD z=Tx7hiNS352VsSb?o8muq;dmf)ZjbAD~0gFm4OrqLfy3nxG*d;Lo0RCkz@{~*t_O_ z5+Lm=_4izIIgz2D2sbFya64jmPKXn_$yy9o{@C9qGnmFz4=gA4 zA#az5XDsK9_s{*LQ8;E3w4ZaxhqA8&+TUL(4||nXW+U(Iqnf+%%x~u#=$v1h+=m>^ zMlVYLgg+~{SQq}jUKGd-DW#)4u_y`W;T(iO^)5Sw{Ns97tu!#Z1fxO%zTAm5!(mlvGeKfi8Z(B!Ef2?FB-*bQ~_W=ggio;jM+lwi}rk|k80x&(myBPq>zrq z&5=$-mkF%IP_{)U?4|A8iv)y@WiY#r7091e<-b02`UjwZ*~AEBGa*=^?Ae&?-|@f| zi~}wbH|Equ;Ai)68VQQjWtvrsA+}V?HTEBcJJ8W zw{4R=QCN_14g0{xPmC--+9$3O&Y+A5Ft>C1xZq)fe+UzpT~2e1Befwgr3ws8sWM_d z)0~Fmu8)|sG5WH;VmpQARv)!_Zp8YsG7W|16wVY@zKgI(azFqiDNV&*a7+YcAEKD^ z4STXUB*^I=BHiz|jsa_&gR(Yux!qgGg)ZiMp~-H-hXr>Srah*Ri9BVnCp&k6_8#K` xTeksmKD(R-k3?D4zaT7LqZj{uIe5-4MoumsPNrr^TwH8yY)CXT5=xRt{{gHVV!{9b delta 41070 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 diff --git a/assets/readme/manual.md b/assets/readme/manual.md index 2a2eaa0..60b15fe 100644 --- a/assets/readme/manual.md +++ b/assets/readme/manual.md @@ -45,6 +45,10 @@ The library is a single Maven dependency; the GraphCompose engine comes in trans ``` +> [!NOTE] +> Not yet on Maven Central (first release pending). Until then, build from source +> (`./mvnw install`) and depend on the snapshot, or consume a tagged version via JitPack. + Two **optional** companion artifacts unlock extras; add them only if you want them: | Artifact | What it adds | diff --git a/assets/readme/manual.pdf b/assets/readme/manual.pdf index 1b45580f031699616470994a571c42d74bb685c6..8334fa9d44117b925489d3f454cf189a6bf27580 100644 GIT binary patch delta 42909 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%0AUECY}gy^ane`CC@6 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 a@omuhzwvlZDGCxdCkGN0mAIk=(*FS3anz^) delta 42082 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�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

pBEP_jpCH#r7!WkIkq*D zAVxrEc~%q_*c&P3S|Cn5mwTrG3yry(G$ePzTwiR1_8r1k2>xR7yChja=c+J|T} z0p4%)QX7-Zi*Pt3l+n0g8U1V*3X3l3y~lJu|J;iW&vCm9pw*HHcyQSN`8z#M zJ2l_k+aH8VmRAj}tK5>f?1X9?sq}rqBSJ+_?Gxn+u=J$I+t|;uH>4eG45^w(+x|n} z^sPH-4cpFd#jWYR<7ORRKhzcE^@zZk%457W*>et+SB!jpCh~Sihm?&R6iBJ&*AXk( zKUix=^0;sI+>=QdGceyE?XX`jP9_>Hj;5vx&Y-GxeGM{RG}!JRN!FVHD~_Ww_e{2v z{xn`;d&Y7s3ok0w_nZv-9OAL}!PJAZn!=$lss z_p!kLG|lQ3&3gfo6tblYhtO~+N~1bdJZy_|>q|YjqKwG8FBI{f>qFlVWc)2kAxl~G zusj?PrwSY}7l=npQc{wWomY$v#L2_MDaFeN5@+LlZ;=GDNpgTB#U$Byr1*e55@H;Z zoIHH&QWD}kQsVEux!Ab4C4|WZ|1VQ8{C5t+|L@1?s99Q}u&Ud5TavQ_IZ#+-zgbv% zlIyd**VrM^TTbg`tv6R><D-l;BqvMVQasR~%=VVV zD@#2}?oe=s(5WTaGf;jfMD`%Vne(84YWy(Tl=g=A s3O7VCxQdQq`OV^goag^Y|M9$CTuq%_A?sC$C~RCDC^R&Z%2Fu*4~2V=7ytkO diff --git a/src/test/java/io/github/demchaav/markdown/ManualTest.java b/src/test/java/io/github/demchaav/markdown/ManualTest.java index ef9070a..4d37a82 100644 --- a/src/test/java/io/github/demchaav/markdown/ManualTest.java +++ b/src/test/java/io/github/demchaav/markdown/ManualTest.java @@ -12,6 +12,7 @@ import org.apache.pdfbox.pdmodel.PageMode; import org.apache.pdfbox.text.PDFTextStripper; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIfSystemProperty; import java.nio.file.Path; @@ -51,6 +52,19 @@ private static MarkdownComposer manualComposer(MarkdownTheme base) { .build(); } + /** + * Regenerates the committed {@code manual.pdf} / {@code manual-dark.pdf} from {@code manual.md} + * using the exact composers the other tests assert against — the only supported way to refresh + * the checked-in PDFs so they never drift from the source. Opt-in (it writes into the repo): + *

./mvnw test -Dtest=ManualTest#regeneratesTheCommittedManualPdfs -Dgcmd.regenerateManual=true -pl .
+ */ + @Test + @EnabledIfSystemProperty(named = "gcmd.regenerateManual", matches = "true") + void regeneratesTheCommittedManualPdfs() throws Exception { + manualComposer().renderFile(BASE.resolve("manual.md")).writePdf(BASE.resolve("manual.pdf")); + darkManualComposer().renderFile(BASE.resolve("manual.md")).writePdf(BASE.resolve("manual-dark.pdf")); + } + @Test void theManualRendersItsWholeFeatureSet() throws Exception { byte[] pdf = manualComposer().renderFile(BASE.resolve("manual.md")).toPdfBytes();