From 7eb238a3f5483edd75185af99f8a9be9129c7242 Mon Sep 17 00:00:00 2001 From: forhappy Date: Sun, 26 Jul 2026 09:21:18 -0700 Subject: [PATCH 1/6] Fix diff sizing and streamline Compass sidebar --- editors/vscode/package.json | 65 ++++++++++- editors/vscode/src/commands/buildCommands.ts | 101 ++++++++++++------ editors/vscode/src/extension.ts | 72 +++++++++++++ .../src/test/suite/extension.integration.ts | 7 +- editors/vscode/src/views/treeItem.ts | 1 + editors/vscode/src/views/treeModel.test.ts | 19 ++-- editors/vscode/src/views/treeModel.ts | 46 +++----- .../src/history/SemanticFindings.test.tsx | 23 +--- .../src/history/SourceChanges.tsx | 52 ++++----- 9 files changed, 254 insertions(+), 132 deletions(-) diff --git a/editors/vscode/package.json b/editors/vscode/package.json index 092f8cac..74ea3630 100644 --- a/editors/vscode/package.json +++ b/editors/vscode/package.json @@ -57,7 +57,7 @@ { "command": "compass.update", "title": "Compass: Update Graph", - "icon": "$(refresh)" + "icon": "$(sync)" }, { "command": "compass.refreshWorkspace", @@ -69,6 +69,21 @@ "title": "Compass: Start or Stop Watch", "icon": "$(eye)" }, + { + "command": "compass.startWatch", + "title": "Compass: Watch for Changes", + "icon": "$(eye)" + }, + { + "command": "compass.stopWatch", + "title": "Compass: Stop Watching", + "icon": "$(debug-stop)" + }, + { + "command": "compass.openSettings", + "title": "Compass: Settings", + "icon": "$(settings-gear)" + }, { "command": "compass.openGraph", "title": "Compass: Open Code Graph", @@ -114,6 +129,20 @@ "default": 5000, "minimum": 1, "description": "Maximum detailed nodes before Compass uses a community overview." + }, + "compass.watch.debounceSeconds": { + "type": "number", + "default": 0.4, + "minimum": 0.05, + "maximum": 5, + "scope": "resource", + "description": "Seconds Compass waits for file changes to settle before updating the graph." + }, + "compass.watch.poll": { + "type": "boolean", + "default": false, + "scope": "resource", + "description": "Force polling when watching for repository changes." } } }, @@ -136,10 +165,42 @@ }, "menus": { "view/title": [ + { + "command": "compass.openSettings", + "when": "view == compass.status", + "group": "navigation@1" + }, { "command": "compass.refreshWorkspace", "when": "view == compass.status", - "group": "navigation" + "group": "navigation@2" + } + ], + "view/item/context": [ + { + "command": "compass.update", + "when": "view == compass.status && viewItem == compass.repository.ready", + "group": "inline@1" + }, + { + "command": "compass.update", + "when": "view == compass.status && viewItem == compass.repository.failed", + "group": "inline@1" + }, + { + "command": "compass.update", + "when": "view == compass.status && viewItem == compass.repository.watching", + "group": "inline@1" + }, + { + "command": "compass.startWatch", + "when": "view == compass.status && viewItem == compass.repository.ready", + "group": "inline@2" + }, + { + "command": "compass.stopWatch", + "when": "view == compass.status && viewItem == compass.repository.watching", + "group": "inline@2" } ], "editor/context": [ diff --git a/editors/vscode/src/commands/buildCommands.ts b/editors/vscode/src/commands/buildCommands.ts index 57b8b93a..8e643c26 100644 --- a/editors/vscode/src/commands/buildCommands.ts +++ b/editors/vscode/src/commands/buildCommands.ts @@ -29,7 +29,8 @@ export function registerBuildCommands( if (!await ensureCompatible(session, COMPASS_REQUIREMENTS.initialize)) return; await openInitializationPanel(context, session, output, refresh); }), - vscode.commands.registerCommand("compass.update", async (repositoryId?: string) => { + vscode.commands.registerCommand("compass.update", async (target?: unknown) => { + const repositoryId = repositoryIdFromTarget(target); const session = await pick( repositoryId, (candidate) => candidate.graphState === "available" || candidate.graphState === "failed" @@ -53,41 +54,75 @@ export function registerBuildCommands( refresh ); }), - vscode.commands.registerCommand("compass.toggleWatch", async (repositoryId?: string) => { - const session = await pick( - repositoryId, - (candidate) => candidate.graphState === "available" || candidate.watch !== undefined - ); - if (!session) return; - if (!await ensureCompatible(session, COMPASS_REQUIREMENTS.watch)) return; - if (session.watch) { - session.watch.cancel(); + vscode.commands.registerCommand( + "compass.toggleWatch", + (target?: unknown) => setWatch(target) + ), + vscode.commands.registerCommand( + "compass.startWatch", + (target?: unknown) => setWatch(target, true) + ), + vscode.commands.registerCommand( + "compass.stopWatch", + (target?: unknown) => setWatch(target, false) + ) + ); + + async function setWatch(target: unknown, requestedState?: boolean): Promise { + const repositoryId = repositoryIdFromTarget(target); + const session = await pick( + repositoryId, + (candidate) => candidate.graphState === "available" || candidate.watch !== undefined + ); + if (!session) return; + if (!await ensureCompatible(session, COMPASS_REQUIREMENTS.watch)) return; + if (requestedState === Boolean(session.watch)) return; + if (session.watch) { + session.watch.cancel(); + session.watch = undefined; + void vscode.window.showInformationMessage("Compass watch stopped."); + await refresh(); + return; + } + const configuration = vscode.workspace.getConfiguration( + "compass", + vscode.Uri.file(session.root) + ); + const debounceSeconds = configuration.get("watch.debounceSeconds", 0.4); + const poll = configuration.get("watch.poll", false); + output.appendLine(`> compass ${buildWatchArgs({ + root: session.root, + debounceSeconds, + poll + }).join(" ")}`); + const command = session.processes.startJsonl( + session.root, + buildWatchArgs({ root: session.root, debounceSeconds, poll }), + (event) => output.appendLine(`[${event.phase}] ${event.message}`) + ); + session.watch = command; + void command.completed.finally(async () => { + if (session.watch?.operationId === command.operationId) { session.watch = undefined; - void vscode.window.showInformationMessage("Compass watch stopped."); - await refresh(); - return; } - output.appendLine(`> compass ${buildWatchArgs({ - root: session.root, - debounceSeconds: 0.4, - poll: false - }).join(" ")}`); - const command = session.processes.startJsonl( - session.root, - buildWatchArgs({ root: session.root, debounceSeconds: 0.4, poll: false }), - (event) => output.appendLine(`[${event.phase}] ${event.message}`) - ); - session.watch = command; - void command.completed.finally(async () => { - if (session.watch?.operationId === command.operationId) { - session.watch = undefined; - } - await refresh(); - }); - void vscode.window.showInformationMessage("Compass watch started."); await refresh(); - }) - ); + }); + void vscode.window.showInformationMessage("Compass watch started."); + await refresh(); + } +} + +function repositoryIdFromTarget(target: unknown): string | undefined { + if (typeof target === "string") return target; + if ( + typeof target === "object" + && target !== null + && "repositoryId" in target + && typeof target.repositoryId === "string" + ) { + return target.repositoryId; + } + return undefined; } async function runGuided( diff --git a/editors/vscode/src/extension.ts b/editors/vscode/src/extension.ts index 62893854..d5994073 100644 --- a/editors/vscode/src/extension.ts +++ b/editors/vscode/src/extension.ts @@ -120,11 +120,83 @@ export async function activate(context: vscode.ExtensionContext): Promise ); return picked?.session; }; + const openCompassSettings = async () => { + const selected = await vscode.window.showQuickPick([ + { + label: "$(settings-gear) Extension and watch settings", + description: "CLI path, graph limits, debounce, and polling", + action: "extension" + }, + { + label: "$(folder-library) Repository scope", + description: "Review included and excluded paths", + action: "scope" + }, + { + label: "$(file-code) Repository configuration", + description: "Open .compass/config.toml", + action: "configuration" + }, + { + label: "$(history) History profile", + description: "Configure versioned graph profiles", + action: "history" + }, + { + label: "$(terminal) Select Compass CLI", + description: "Choose a Compass executable", + action: "cli" + } + ], { + placeHolder: "Choose which Compass settings to configure" + }); + if (!selected) return; + if (selected.action === "extension") { + await vscode.commands.executeCommand( + "workbench.action.openSettings", + "@ext:crabbuild.compass-vscode" + ); + return; + } + if (selected.action === "cli") { + await vscode.commands.executeCommand("compass.selectCli"); + return; + } + const session = await selectRepository(); + if (!session) return; + if (selected.action === "scope") { + await vscode.commands.executeCommand("compass.initialize", session.id); + return; + } + if (selected.action === "history") { + await vscode.commands.executeCommand("compass.openHistory", session.id); + return; + } + const configurationUri = vscode.Uri.joinPath( + vscode.Uri.file(session.root), + ".compass", + "config.toml" + ); + try { + await vscode.workspace.fs.stat(configurationUri); + const document = await vscode.workspace.openTextDocument(configurationUri); + await vscode.window.showTextDocument(document); + } catch { + const action = await vscode.window.showInformationMessage( + "This repository does not have a Compass configuration yet.", + "Configure scope" + ); + if (action === "Configure scope") { + await vscode.commands.executeCommand("compass.initialize", session.id); + } + } + }; context.subscriptions.push( vscode.window.registerTreeDataProvider("compass.status", workspaceTree), vscode.window.onDidChangeActiveTextEditor(() => statusBar.refresh()), vscode.commands.registerCommand("compass.refreshWorkspace", refresh), vscode.commands.registerCommand("compass.selectCli", selectCompassBinary), + vscode.commands.registerCommand("compass.openSettings", openCompassSettings), vscode.commands.registerCommand("compass.openGraph", async (repositoryId?: string) => { if (!vscode.workspace.isTrusted) { void vscode.window.showWarningMessage("Trust this workspace to run Compass."); diff --git a/editors/vscode/src/test/suite/extension.integration.ts b/editors/vscode/src/test/suite/extension.integration.ts index 3bb49965..46d4f23b 100644 --- a/editors/vscode/src/test/suite/extension.integration.ts +++ b/editors/vscode/src/test/suite/extension.integration.ts @@ -12,6 +12,9 @@ suite("Compass extension", () => { "compass.update", "compass.refreshWorkspace", "compass.toggleWatch", + "compass.startWatch", + "compass.stopWatch", + "compass.openSettings", "compass.openGraph", "compass.openCallGraph", "compass.openArchitecture", @@ -33,8 +36,8 @@ suite("Compass extension", () => { assert.deepEqual( viewTitle.filter((item) => item.when === "view == compass.status") .map((item) => item.command), - ["compass.refreshWorkspace"], - "Workspace exposes one read-only title action" + ["compass.openSettings", "compass.refreshWorkspace"], + "Workspace exposes settings and refresh title actions" ); await vscode.commands.executeCommand("compass.refreshWorkspace"); }); diff --git a/editors/vscode/src/views/treeItem.ts b/editors/vscode/src/views/treeItem.ts index 55af032a..c287f729 100644 --- a/editors/vscode/src/views/treeItem.ts +++ b/editors/vscode/src/views/treeItem.ts @@ -9,6 +9,7 @@ export function treeItemFromNode(node: TreeNode): vscode.TreeItem { : vscode.TreeItemCollapsibleState.None; const item = new vscode.TreeItem(node.label, collapsibleState); item.id = node.id; + if (node.contextValue !== undefined) item.contextValue = node.contextValue; if (node.description !== undefined) item.description = node.description; if (node.tooltip !== undefined) item.tooltip = node.tooltip; item.iconPath = new vscode.ThemeIcon(node.icon); diff --git a/editors/vscode/src/views/treeModel.test.ts b/editors/vscode/src/views/treeModel.test.ts index 174f12ef..c519c84c 100644 --- a/editors/vscode/src/views/treeModel.test.ts +++ b/editors/vscode/src/views/treeModel.test.ts @@ -23,12 +23,13 @@ describe("buildWorkspaceTree", () => { expect(nodes.map((node) => node.label)).toEqual([ "repo", - "Explore", - "Maintain" + "Explore" ]); expect(nodes[0]).toMatchObject({ description: "Graph ready", - tooltip: "/work/repo" + tooltip: "/work/repo", + contextValue: "compass.repository.ready", + repositoryId: "repository-1" }); expect(nodes[0]?.children).toBeUndefined(); expect(nodes[1]?.expanded).toBe(true); @@ -39,11 +40,6 @@ describe("buildWorkspaceTree", () => { ["Ask codebase", "compass.openQuery"], ["Codebase evolution", "compass.openHistory"] ]); - expect(nodes[2]?.expanded).toBeUndefined(); - expect(nodes[2]?.children?.map((node) => [node.label, node.command])).toEqual([ - ["Update graph", "compass.update"], - ["Watch for changes", "compass.toggleWatch"] - ]); expect(new Set(commands(nodes)).size).toBe(commands(nodes).length); }); @@ -57,10 +53,10 @@ describe("buildWorkspaceTree", () => { expect(nodes.map((node) => node.label)).toEqual([ "repo", "Active operations", - "Explore", - "Maintain" + "Explore" ]); expect(nodes[1]).toMatchObject({ description: "2", expanded: true }); + expect(nodes[0]?.contextValue).toBe("compass.repository.watching"); expect(nodes[1]?.children?.map((node) => ({ label: node.label, description: node.description, @@ -69,7 +65,6 @@ describe("buildWorkspaceTree", () => { { label: "Building graph", description: "repo", command: undefined }, { label: "Watching for changes", description: "repo", command: undefined } ]); - expect(nodes[3]?.children?.at(-1)?.label).toBe("Stop watching"); expect(new Set(commands(nodes)).size).toBe(commands(nodes).length); }); @@ -160,8 +155,6 @@ describe("buildWorkspaceTree", () => { expect(nodes.filter((node) => node.id.startsWith("repository:")).map((node) => node.label)) .toEqual(["repo", "other"]); expect(nodes.filter((node) => node.label === "Explore")).toHaveLength(1); - expect(nodes.filter((node) => node.label === "Maintain")).toHaveLength(1); - expect(commands(nodes).filter((command) => command === "compass.update")).toHaveLength(1); expect(new Set(commands(nodes)).size).toBe(commands(nodes).length); }); }); diff --git a/editors/vscode/src/views/treeModel.ts b/editors/vscode/src/views/treeModel.ts index 348c823e..9da86390 100644 --- a/editors/vscode/src/views/treeModel.ts +++ b/editors/vscode/src/views/treeModel.ts @@ -10,6 +10,8 @@ export type TreeNode = { icon: string; command?: string; commandArguments?: unknown[]; + contextValue?: string; + repositoryId?: string; expanded?: boolean; children?: TreeNode[]; }; @@ -81,8 +83,6 @@ export function buildWorkspaceTree( const hasMissing = missing.length > 0; const hasGraph = sessions.some((session) => session.graphState === "available"); const hasFailed = failed.length > 0; - const hasWatch = sessions.some((session) => Boolean(session.watch)); - if (hasMissing) { nodes.push(actionNode( "workspace:initialize", @@ -152,37 +152,6 @@ export function buildWorkspaceTree( children: explore }); - const maintain: TreeNode[] = []; - if (hasGraph && !hasFailed) { - maintain.push(actionNode( - "workspace:update", - "Update graph", - "refresh", - "compass.update", - "Refresh changed code relationships" - )); - } - if (hasGraph || hasWatch) { - maintain.push(actionNode( - "workspace:watch", - sessions.length === 1 && hasWatch ? "Stop watching" : "Watch for changes", - sessions.length === 1 && hasWatch ? "debug-stop" : "eye", - "compass.toggleWatch", - sessions.length === 1 - ? hasWatch - ? "Stop watching this repository" - : "Keep the graph current as files change" - : "Choose a repository to start or stop watching" - )); - } - if (maintain.length > 0) { - nodes.push({ - id: "workspace:maintain", - label: "Maintain", - icon: "tools", - children: maintain - }); - } return nodes; } @@ -219,13 +188,22 @@ function repositoryStatusNodes( ): TreeNode[] { return sessions.map((session) => ({ id: `repository:${session.id}`, + repositoryId: session.id, label: path.basename(session.root) || session.root, description: graphStateLabel(session.graphState), tooltip: session.root, - icon: graphStateIcon(session.graphState) + icon: graphStateIcon(session.graphState), + contextValue: repositoryContextValue(session) })); } +function repositoryContextValue(session: SessionTreeSnapshot): string { + if (session.graphState === "available") { + return session.watch ? "compass.repository.watching" : "compass.repository.ready"; + } + return `compass.repository.${session.graphState}`; +} + function activeOperationGroup( sessions: readonly SessionTreeSnapshot[] ): TreeNode[] { diff --git a/packages/compass-viewer/src/history/SemanticFindings.test.tsx b/packages/compass-viewer/src/history/SemanticFindings.test.tsx index cd7b2d8f..a025650f 100644 --- a/packages/compass-viewer/src/history/SemanticFindings.test.tsx +++ b/packages/compass-viewer/src/history/SemanticFindings.test.tsx @@ -1,9 +1,8 @@ -import { parsePatchFiles } from "@pierre/diffs"; import { flushSync } from "react-dom"; import { createRoot } from "react-dom/client"; import { describe, expect, it } from "vitest"; import { SemanticFindings } from "./SemanticFindings"; -import { minimumDiffHeight, normalizeSourcePatch } from "./SourceChanges"; +import { normalizeSourcePatch } from "./SourceChanges"; globalThis.ResizeObserver = class { observe() {} @@ -26,26 +25,6 @@ describe("SemanticFindings", () => { ); }); - it("reserves enough height for every compact diff hunk", () => { - const patch = [ - "diff --git a/example.ts b/example.ts", - "--- a/example.ts", - "+++ b/example.ts", - "@@ -1,0 +1,2 @@", - "+const first = true;", - "+const second = true;", - "@@ -4 +6 @@", - "-const value = 1;", - "+const value = 2;", - "" - ].join("\n"); - const fileDiff = parsePatchFiles(patch, "height-test", true)[0]?.files?.[0]; - - expect(fileDiff).toBeDefined(); - expect(minimumDiffHeight(fileDiff!, "split")).toBe(137); - expect(minimumDiffHeight(fileDiff!, "unified")).toBe(156); - }); - it("renders source-only changes as readable evidence instead of a raw report dump", () => { const container = document.createElement("div"); const root = createRoot(container); diff --git a/packages/compass-viewer/src/history/SourceChanges.tsx b/packages/compass-viewer/src/history/SourceChanges.tsx index ac6dc637..a7677ade 100644 --- a/packages/compass-viewer/src/history/SourceChanges.tsx +++ b/packages/compass-viewer/src/history/SourceChanges.tsx @@ -1,4 +1,4 @@ -import { parsePatchFiles, type FileDiffMetadata } from "@pierre/diffs"; +import { parsePatchFiles } from "@pierre/diffs"; import { FileDiff } from "@pierre/diffs/react"; import { Component, @@ -29,13 +29,31 @@ const DIFF_THEME_CSS = `:host { [data-gutter], [data-content] { - grid-template-rows: none; - grid-auto-rows: minmax(var(--diffs-line-height, 19px), auto); - align-content: start; + display: contents !important; +} + +[data-gutter] > * { + grid-column: 1; +} + +[data-content] > * { + grid-column: 2; + min-width: 0; +} + +[data-diff-type="split"][data-overflow="wrap"] [data-additions] [data-gutter] > * { + grid-column: 3; +} + +[data-diff-type="split"][data-overflow="wrap"] [data-additions] [data-content] > * { + grid-column: 4; +} + +[data-overflow="scroll"] [data-gutter] > * { + position: sticky; + left: 0; + z-index: 3; }`; -const DIFF_LINE_HEIGHT = 19; -const DIFF_HUNK_SEPARATOR_HEIGHT = 32; -const DIFF_VERTICAL_PADDING = 16; export function SourceChanges({ changes }: { changes: SourceChange[] }) { const [preferredStyle, setPreferredStyle] = useState("split"); @@ -204,10 +222,7 @@ function SourcePatch({ fileDiff={parsed.fileDiff} disableWorkerPool className="history-source-diff" - style={{ - ...themeStyle, - minHeight: minimumDiffHeight(parsed.fileDiff, style) - }} + style={themeStyle} options={{ theme: themeType === "light" ? "pierre-light" : "pierre-dark", themeType, @@ -224,21 +239,6 @@ function SourcePatch({ ); } -export function minimumDiffHeight( - fileDiff: FileDiffMetadata, - style: DiffStyle -): number { - const lineCount = fileDiff.hunks.reduce( - (total, hunk) => total + ( - style === "split" ? hunk.splitLineCount : hunk.unifiedLineCount - ), - 0 - ); - return lineCount * DIFF_LINE_HEIGHT - + fileDiff.hunks.length * DIFF_HUNK_SEPARATOR_HEIGHT - + DIFF_VERTICAL_PADDING; -} - function PatchFallback({ patch }: { patch: string }) { return (
From 35e68e01c187274986089f9b2ace1f35f712ef4b Mon Sep 17 00:00:00 2001 From: forhappy Date: Sun, 26 Jul 2026 09:40:36 -0700 Subject: [PATCH 2/6] Redesign comparison evidence as tabs --- .../src/history/HistoryWorkspace.test.tsx | 29 +- .../src/history/HistoryWorkspace.tsx | 349 +++++++++++----- .../src/history/SemanticFindings.test.tsx | 36 +- .../src/history/SemanticFindings.tsx | 181 ++++++-- packages/compass-viewer/src/theme.css | 389 +++++++++++++++++- 5 files changed, 835 insertions(+), 149 deletions(-) diff --git a/packages/compass-viewer/src/history/HistoryWorkspace.test.tsx b/packages/compass-viewer/src/history/HistoryWorkspace.test.tsx index 4a8bf180..4cf43156 100644 --- a/packages/compass-viewer/src/history/HistoryWorkspace.test.tsx +++ b/packages/compass-viewer/src/history/HistoryWorkspace.test.tsx @@ -34,7 +34,7 @@ function host(): HistoryHost { } describe("HistoryWorkspace", () => { - it("puts a zero-topology comparison explanation before the graph canvas", () => { + it("opens comparisons on source changes and keeps the graph in the second tab", () => { const container = document.createElement("div"); const root = createRoot(container); const parent = "b".repeat(40); @@ -116,12 +116,31 @@ describe("HistoryWorkspace", () => { const explanation = Array.from(container.querySelectorAll("*")) .find((element) => element.textContent === "No structural graph changes"); - const graphFrame = container.querySelector(".history-graph-frame"); + const comparisonWorkspace = container.querySelector(".history-comparison-workspace"); expect(explanation).toBeDefined(); - expect(graphFrame).not.toBeNull(); - if (!explanation || !graphFrame) throw new Error("comparison layout did not render"); - expect(explanation.compareDocumentPosition(graphFrame) & Node.DOCUMENT_POSITION_FOLLOWING) + expect(comparisonWorkspace).not.toBeNull(); + if (!explanation || !comparisonWorkspace) { + throw new Error("comparison layout did not render"); + } + expect( + explanation.compareDocumentPosition(comparisonWorkspace) + & Node.DOCUMENT_POSITION_FOLLOWING + ) .toBeTruthy(); + const tabs = Array.from(container.querySelectorAll('[role="tab"]')); + expect(tabs.map((tab) => tab.textContent)).toEqual([ + "Source changes0", + "Changed graph0", + "Semantic findings0" + ]); + expect(tabs[0]?.getAttribute("aria-selected")).toBe("true"); + expect(container.querySelector(".history-graph-frame")).toBeNull(); + + flushSync(() => tabs[1]?.click()); + + expect(tabs[1]?.getAttribute("aria-selected")).toBe("true"); + expect(container.querySelector(".history-graph-frame")).not.toBeNull(); + expect(container.textContent).toContain("No graph delta to draw"); expect(container.textContent).toContain(`Comparing ${commit.slice(0, 9)} to ${parent.slice(0, 9)}`); expect(container.textContent).toContain( "No structural changes from the first parent. Source or configuration changes may still exist" diff --git a/packages/compass-viewer/src/history/HistoryWorkspace.tsx b/packages/compass-viewer/src/history/HistoryWorkspace.tsx index bfa964a1..0a8b7c33 100644 --- a/packages/compass-viewer/src/history/HistoryWorkspace.tsx +++ b/packages/compass-viewer/src/history/HistoryWorkspace.tsx @@ -1,5 +1,16 @@ -import { useMemo, useState } from "react"; -import { HistoryIcon, SearchIcon } from "lucide-react"; +import { + useEffect, + useMemo, + useState, + type KeyboardEvent as ReactKeyboardEvent +} from "react"; +import { + FileDiffIcon, + HistoryIcon, + NetworkIcon, + SearchIcon, + SparklesIcon +} from "lucide-react"; import { WorkspaceState } from "../components/workbench/WorkspaceState"; import { CompassGraph } from "../graph/CompassGraph"; import type { GraphViewModel, SourceLocation } from "../contracts/graph"; @@ -12,7 +23,13 @@ import type { import { CommitDetails } from "./CommitDetails"; import { CommitRail } from "./CommitRail"; import { ComparisonOverlay, type GraphComparison } from "./ComparisonOverlay"; -import { SemanticFindings } from "./SemanticFindings"; +import { + SemanticFindings, + SourceChangeEvidence, + semanticEvidence +} from "./SemanticFindings"; + +type ComparisonTab = "source" | "graph" | "semantic"; export type HistoryHost = { enableHistory(): void; @@ -70,6 +87,10 @@ export function HistoryWorkspace({ host: HistoryHost; }) { const [query, setQuery] = useState(""); + const [comparisonTab, setComparisonTab] = useState("source"); + useEffect(() => { + setComparisonTab("source"); + }, [comparison?.parent, selectedCommit]); const entries = useMemo(() => { const normalizedQuery = query.trim().toLocaleLowerCase(); return timeline.entries.filter((entry) => !normalizedQuery @@ -91,6 +112,7 @@ export function HistoryWorkspace({ const countLabel = timeline.hasMore ? `${loadedEntries.toLocaleString()} loaded commits` : `${(timeline.totalEntries ?? loadedEntries).toLocaleString()} reachable commits`; + const evidence = useMemo(() => semanticEvidence(semanticDiff), [semanticDiff]); return (
@@ -213,103 +235,244 @@ export function HistoryWorkspace({ onExit={() => onExitComparison?.()} /> )} - {comparison && semanticDiff !== undefined && } -
- {comparison && comparison.graph.nodes.length === 0 - && comparison.graph.edges.length === 0 ? ( - - ) : visibleGraph ? ( -
-
- {comparison ? "Viewing changed subgraph for " : "Viewing graph for "} - {selected.commit.slice(0, 9)} + {comparison ? ( +
+
+ + + +
+ + {comparisonTab === "source" && ( +
+ +
+ )} + + {comparisonTab === "graph" && ( +
+
+ {comparison.graph.nodes.length === 0 + && comparison.graph.edges.length === 0 ? ( + + ) : ( +
+
+ Viewing changed subgraph for{" "} + {selected.commit.slice(0, 9)} +
+
+ +
+
+ )} +
+
+ )} + + {comparisonTab === "semantic" && ( +
+
-
- + ) : ( + <> +
+ {visibleGraph ? ( +
+
+ Viewing graph for {selected.commit.slice(0, 9)} +
+
+ +
+
+ ) : buildState?.status === "requesting" ? ( + + ) : buildState?.status === "running" ? ( + + ) : buildState?.status === "failed" ? ( + host.buildRevision(selected.commit) }} /> -
+ ) : operationError?.operation === "Load graph" ? ( + host.loadRevision(selected.commit) + }} + /> + ) : !selected.presentationAvailable ? ( + host.buildRevision(selected.commit) + }} + /> + ) : revisionLoadState === "loading" ? ( + + ) : ( + host.loadRevision(selected.commit) + }} + /> + )}
- ) : buildState?.status === "requesting" ? ( - - ) : buildState?.status === "running" ? ( - - ) : buildState?.status === "failed" ? ( - host.buildRevision(selected.commit) - }} - /> - ) : operationError?.operation === "Load graph" ? ( - host.loadRevision(selected.commit) - }} - /> - ) : !selected.presentationAvailable ? ( - host.buildRevision(selected.commit) - }} - /> - ) : revisionLoadState === "loading" ? ( - - ) : ( - host.loadRevision(selected.commit) - }} - /> - )} -
- {!comparison && semanticDiff !== undefined && } + {semanticDiff !== undefined && ( +
+ + +
+ )} + + )} )}
); } + +function handleComparisonTabKeyDown(event: ReactKeyboardEvent) { + if (!["ArrowLeft", "ArrowRight", "Home", "End"].includes(event.key)) return; + const tabs = Array.from( + event.currentTarget.querySelectorAll('[role="tab"]') + ); + const current = tabs.indexOf(document.activeElement as HTMLButtonElement); + if (current < 0) return; + let next = current; + if (event.key === "ArrowLeft") next = (current - 1 + tabs.length) % tabs.length; + if (event.key === "ArrowRight") next = (current + 1) % tabs.length; + if (event.key === "Home") next = 0; + if (event.key === "End") next = tabs.length - 1; + event.preventDefault(); + tabs[next]?.focus(); + tabs[next]?.click(); +} diff --git a/packages/compass-viewer/src/history/SemanticFindings.test.tsx b/packages/compass-viewer/src/history/SemanticFindings.test.tsx index a025650f..9c0da541 100644 --- a/packages/compass-viewer/src/history/SemanticFindings.test.tsx +++ b/packages/compass-viewer/src/history/SemanticFindings.test.tsx @@ -1,7 +1,7 @@ import { flushSync } from "react-dom"; import { createRoot } from "react-dom/client"; import { describe, expect, it } from "vitest"; -import { SemanticFindings } from "./SemanticFindings"; +import { SemanticFindings, SourceChangeEvidence } from "./SemanticFindings"; import { normalizeSourcePatch } from "./SourceChanges"; globalThis.ResizeObserver = class { @@ -29,7 +29,7 @@ describe("SemanticFindings", () => { const container = document.createElement("div"); const root = createRoot(container); flushSync(() => root.render( - { expect(container.querySelector("h2")?.textContent).toBe("Source changes"); expect(container.textContent).toContain("Cargo.toml"); expect(container.textContent).toContain("+1−1"); - expect(container.textContent).toContain("No semantic graph findings for this comparison."); expect(container.textContent).not.toContain("\"source_changes\""); root.unmount(); }); + + it("renders semantic evidence as comfortable expandable fields", () => { + const container = document.createElement("div"); + const root = createRoot(container); + flushSync(() => root.render( + + )); + + const cards = container.querySelectorAll( + ".history-finding-list details" + ); + expect(cards).toHaveLength(2); + expect(cards[0]?.open).toBe(true); + expect(cards[1]?.open).toBe(false); + expect(container.textContent).toContain("2 evidence fields"); + expect(container.textContent).toContain("Affected symbols"); + expect(container.textContent).toContain("resolveOrgRef"); + expect(container.textContent).not.toContain("\"affected_symbols\""); + root.unmount(); + }); }); diff --git a/packages/compass-viewer/src/history/SemanticFindings.tsx b/packages/compass-viewer/src/history/SemanticFindings.tsx index 8187cce1..b1513561 100644 --- a/packages/compass-viewer/src/history/SemanticFindings.tsx +++ b/packages/compass-viewer/src/history/SemanticFindings.tsx @@ -1,48 +1,141 @@ -import { FileDiffIcon, SparklesIcon } from "lucide-react"; +import { ChevronRightIcon, FileDiffIcon, SparklesIcon } from "lucide-react"; +import { useEffect, useState } from "react"; import { Badge } from "../components/ui/badge"; import { SourceChanges, type SourceChange } from "./SourceChanges"; -export function SemanticFindings({ report }: { report: unknown }) { +export type SemanticEvidence = { + sourceChanges: SourceChange[]; + findings: unknown[]; +}; + +export function semanticEvidence(report: unknown): SemanticEvidence { const value = report && typeof report === "object" ? report as Record : {}; - const findings = Array.isArray(value.findings) ? value.findings : []; - const sourceChanges = Array.isArray(value.source_changes) - ? value.source_changes.filter(isSourceChange) - : []; + return { + findings: Array.isArray(value.findings) ? value.findings : [], + sourceChanges: Array.isArray(value.source_changes) + ? value.source_changes.filter(isSourceChange) + : [] + }; +} + +export function SourceChangeEvidence({ report }: { report: unknown }) { + const { sourceChanges } = semanticEvidence(report); return ( -
-
-
+
+
+
+
+

Review the exact files and lines changed between these revisions.

+
{sourceChanges.length > 0 ? ( ) : (

No source patch was reported for this comparison.

)} -
-
+
+ ); +} + +export function SemanticFindings({ report }: { report: unknown }) { + const { findings } = semanticEvidence(report); + const [openFindings, setOpenFindings] = useState>( + () => new Set(findings.length ? [0] : []) + ); + + useEffect(() => { + setOpenFindings((current) => new Set( + [...current].filter((index) => index < findings.length) + )); + }, [findings.length]); + + const allOpen = findings.length > 0 && openFindings.size === findings.length; + + return ( +
+
+
+
+
+

Inspect behavior and relationship changes inferred from the graph comparison.

+
+ {findings.length > 1 && ( + + )} +
{findings.length > 0 ? (
- {findings.map((finding, index) => ( -
- {findingSummary(finding, index)} - {findingDetails(finding) && ( -
- Finding details -
{JSON.stringify(findingDetails(finding), null, 2)}
-
- )} -
- ))} + {findings.map((finding, index) => { + const details = findingDetails(finding); + return ( +
{ + const nextOpen = event.currentTarget.open; + setOpenFindings((current) => { + const next = new Set(current); + if (nextOpen) next.add(index); + else next.delete(index); + return next; + }); + }} + > + + + + {findingSummary(finding, index)} + + {details + ? `${Object.keys(details).length} evidence ${Object.keys(details).length === 1 ? "field" : "fields"}` + : "Summary only"} + + + +
+ {details ? ( +
+ {Object.entries(details).map(([key, value]) => ( +
+
{humanize(key)}
+
{renderFindingValue(value)}
+
+ ))} +
+ ) : ( +

No additional structured evidence was reported for this finding.

+ )} +
+
+ ); + })}
) : ( -

No semantic graph findings for this comparison.

+
+
)}
); @@ -74,3 +167,33 @@ function findingDetails(finding: unknown): Record | undefined { ); return Object.keys(details).length > 0 ? details : undefined; } + +function humanize(value: string): string { + const words = value + .replace(/([a-z])([A-Z])/g, "$1 $2") + .replaceAll("_", " ") + .replaceAll("-", " "); + return words.charAt(0).toLocaleUpperCase() + words.slice(1); +} + +function renderFindingValue(value: unknown) { + if (value === null || value === undefined) { + return Not reported; + } + if (Array.isArray(value)) { + if (value.length === 0) return None; + return ( +
    + {value.map((item, index) => ( +
  • {renderFindingValue(item)}
  • + ))} +
+ ); + } + if (typeof value === "object") { + return
{JSON.stringify(value, null, 2)}
; + } + if (typeof value === "boolean") return {value ? "Yes" : "No"}; + if (typeof value === "number") return {value.toLocaleString()}; + return {String(value)}; +} diff --git a/packages/compass-viewer/src/theme.css b/packages/compass-viewer/src/theme.css index 9d7bd052..97406821 100644 --- a/packages/compass-viewer/src/theme.css +++ b/packages/compass-viewer/src/theme.css @@ -2935,8 +2935,106 @@ body.vscode-high-contrast-light .query-mode button[aria-selected="true"] { font-size: 12px; } -.history-diff-evidence { - padding: 11px 12px 12px; +.history-comparison-workspace { + min-width: 0; + margin-top: 12px; + overflow: hidden; + border: 1px solid var(--border); + background: var(--vscode-editor-background, var(--background)); + color: var(--vscode-editor-foreground, var(--foreground)); +} + +.history-comparison-tabs { + display: flex; + min-width: 0; + overflow-x: auto; + border-bottom: 1px solid var(--border); + background: var( + --vscode-editorGroupHeader-tabsBackground, + var(--vscode-sideBar-background, var(--background)) + ); + scrollbar-width: thin; +} + +.history-comparison-tabs button { + position: relative; + display: inline-flex; + min-width: max-content; + min-height: 41px; + align-items: center; + gap: 7px; + padding: 0 14px; + border: 0; + border-right: 1px solid var(--border); + background: transparent; + color: var(--vscode-tab-inactiveForeground, var(--muted-foreground)); + font: 11px/1 var(--compass-font-sans); +} + +.history-comparison-tabs button:hover { + background: var(--workbench-hover); + color: var(--vscode-tab-activeForeground, var(--foreground)); +} + +.history-comparison-tabs button[aria-selected="true"] { + background: var( + --vscode-tab-activeBackground, + var(--vscode-editor-background, var(--background)) + ); + color: var(--vscode-tab-activeForeground, var(--foreground)); + box-shadow: inset 0 2px 0 var( + --vscode-tab-activeBorder, + var(--vscode-focusBorder, var(--ring)) + ); +} + +.history-comparison-tabs button:focus-visible { + z-index: 1; + outline: 1px solid var(--vscode-focusBorder, var(--ring)); + outline-offset: -2px; +} + +.history-comparison-tabs button > svg { + width: 14px; + height: 14px; + color: var(--vscode-focusBorder, var(--ring)); +} + +.history-comparison-tab-count { + display: inline-flex; + min-width: 19px; + height: 19px; + align-items: center; + justify-content: center; + padding: 0 5px; + border: 1px solid var(--border); + border-radius: 9px; + background: var(--vscode-badge-background, var(--muted)); + color: var(--vscode-badge-foreground, var(--foreground)); + font: 9px/1 var(--compass-font-mono); +} + +.history-comparison-tab-panel { + min-width: 0; + background: var(--vscode-editor-background, var(--background)); +} + +.history-evidence-panel { + min-width: 0; + padding: 15px 15px 17px; +} + +.history-evidence-header { + padding-bottom: 12px; + border-bottom: 1px solid var(--border); +} + +.history-evidence-header > p, +.history-findings-header > div > p { + margin: 4px 0 0 22px; + color: var(--muted-foreground); + font-size: 11px; + line-height: 1.45; } .history-diff-heading { @@ -2946,25 +3044,41 @@ body.vscode-high-contrast-light .query-mode button[aria-selected="true"] { } .history-diff-heading h2 { - font-size: 12px; + margin: 0; + font-size: 13px; font-weight: 600; } -.history-semantic-heading { - margin-top: 12px; - padding-top: 10px; - border-top: 1px solid var(--border); +.history-findings-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 16px; } -.history-source-changes, -.history-finding-list { +.history-findings-expand { + flex: 0 0 auto; + min-height: 27px; + padding: 4px 9px; + border: 1px solid var(--border); + border-radius: 2px; + background: transparent; + color: var(--foreground); + font-size: 10px; +} + +.history-findings-expand:hover { + border-color: var(--vscode-focusBorder, var(--ring)); + background: var(--workbench-hover); +} + +.history-source-changes { display: grid; gap: 6px; - margin-top: 8px; + margin-top: 12px; } -.history-source-changes details, -.history-finding-list article { +.history-source-changes details { overflow: hidden; border: 1px solid var(--border); border-radius: 2px; @@ -2976,7 +3090,7 @@ body.vscode-high-contrast-light .query-mode button[aria-selected="true"] { display: flex; align-items: center; gap: 6px; - margin-top: 8px; + margin-top: 12px; } .history-diff-layout { @@ -3113,8 +3227,7 @@ body.vscode-high-contrast-light .query-mode button[aria-selected="true"] { color: var(--vscode-gitDecoration-modifiedResourceForeground, #d29922); } -.history-diff-fallback pre, -.history-finding-list pre { +.history-diff-fallback pre { max-height: 260px; margin: 0; padding: 8px; @@ -3126,16 +3239,216 @@ body.vscode-high-contrast-light .query-mode button[aria-selected="true"] { .history-source-changes p, .history-diff-empty { - margin: 8px 0 0; + margin: 12px 0 0; color: var(--muted-foreground); font-size: 11px; } -.history-finding-list article > strong { - display: block; - padding: 6px 8px; +.history-finding-list { + display: grid; + gap: 10px; + margin-top: 14px; +} + +.history-finding-list details { + overflow: hidden; + border: 1px solid var(--border); + border-radius: 4px; + background: color-mix( + in srgb, + var(--vscode-editor-foreground, var(--foreground)) 2%, + var(--vscode-editor-background, var(--background)) + ); + color: var(--vscode-editor-foreground, var(--foreground)); +} + +.history-finding-list details[open] { + border-color: color-mix( + in srgb, + var(--vscode-focusBorder, var(--ring)) 58%, + var(--border) + ); + box-shadow: inset 3px 0 0 var(--vscode-focusBorder, var(--ring)); +} + +.history-finding-list summary { + display: grid; + min-height: 58px; + grid-template-columns: 28px minmax(0, 1fr) 16px; + align-items: center; + gap: 11px; + padding: 11px 13px; + cursor: pointer; + list-style: none; +} + +.history-finding-list summary::-webkit-details-marker { + display: none; +} + +.history-finding-list summary:hover { + background: var(--workbench-hover); +} + +.history-finding-list summary:focus-visible { + outline: 1px solid var(--vscode-focusBorder, var(--ring)); + outline-offset: -2px; +} + +.history-finding-index { + display: inline-flex; + width: 27px; + height: 27px; + align-items: center; + justify-content: center; + border: 1px solid var(--border); + border-radius: 3px; + background: var(--vscode-editor-background, var(--background)); + color: var(--vscode-focusBorder, var(--ring)); + font: 600 10px/1 var(--compass-font-mono); +} + +.history-finding-summary { + display: grid; + min-width: 0; + gap: 4px; +} + +.history-finding-summary strong { + overflow: hidden; + font-size: 12px; + font-weight: 600; + line-height: 1.35; + text-overflow: ellipsis; + white-space: nowrap; +} + +.history-finding-summary small { + color: var(--muted-foreground); + font-size: 10px; +} + +.history-finding-list summary > svg { + width: 15px; + height: 15px; + color: var(--muted-foreground); + transition: transform 120ms ease; +} + +.history-finding-list details[open] summary > svg { + transform: rotate(90deg); +} + +.history-finding-body { + padding: 0 14px 15px 52px; + border-top: 1px solid var(--border); +} + +.history-finding-body > p { + margin: 13px 0 0; + color: var(--muted-foreground); + font-size: 11px; +} + +.history-finding-body dl { + display: grid; + gap: 0; + margin: 0; +} + +.history-finding-body dl > div { + display: grid; + grid-template-columns: minmax(110px, 170px) minmax(0, 1fr); + gap: 16px; + padding: 12px 0; border-bottom: 1px solid var(--border); +} + +.history-finding-body dl > div:last-child { + padding-bottom: 0; + border-bottom: 0; +} + +.history-finding-body dt { + color: var(--muted-foreground); + font-size: 9px; + font-weight: 600; + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.history-finding-body dd { + min-width: 0; + margin: 0; font-size: 11px; + line-height: 1.5; +} + +.history-finding-body dd ul { + display: grid; + gap: 5px; + margin: 0; + padding-left: 17px; +} + +.history-finding-body dd pre { + max-height: 280px; + margin: 0; + padding: 9px 10px; + overflow: auto; + border: 1px solid var(--border); + border-radius: 3px; + background: var(--vscode-textCodeBlock-background, var(--muted)); + color: var(--vscode-editor-foreground, var(--foreground)); + font: 10px/1.55 var(--compass-font-mono); + white-space: pre-wrap; +} + +.history-finding-body dd code { + font-family: var(--compass-font-mono); +} + +.history-finding-muted { + color: var(--muted-foreground); + font-style: italic; +} + +.history-findings-empty { + display: flex; + align-items: flex-start; + gap: 10px; + margin-top: 14px; + padding: 15px; + border: 1px dashed var(--border); + border-radius: 4px; + color: var(--muted-foreground); +} + +.history-findings-empty > svg { + width: 17px; + height: 17px; + color: var(--vscode-focusBorder, var(--ring)); +} + +.history-findings-empty strong { + color: var(--foreground); + font-size: 12px; +} + +.history-findings-empty p { + margin: 4px 0 0; + font-size: 11px; +} + +.history-standalone-evidence { + display: grid; + gap: 12px; + margin-top: 12px; +} + +.history-standalone-evidence > section { + border: 1px solid var(--border); + background: var(--vscode-editor-background, var(--background)); } .history-graph-frame { @@ -3148,6 +3461,13 @@ body.vscode-high-contrast-light .query-mode button[aria-selected="true"] { background: var(--vscode-editor-background, var(--background)); } +.history-graph-frame-tabbed { + height: max(460px, calc(100vh - 230px)); + min-height: 420px; + margin-top: 0; + border: 0; +} + .history-graph-ready, .history-graph-canvas { min-width: 0; @@ -3199,6 +3519,10 @@ body.vscode-high-contrast .history-comparison, body.vscode-high-contrast-light .history-comparison, body.vscode-high-contrast .history-diff-evidence, body.vscode-high-contrast-light .history-diff-evidence, +body.vscode-high-contrast .history-comparison-workspace, +body.vscode-high-contrast-light .history-comparison-workspace, +body.vscode-high-contrast .history-finding-list details, +body.vscode-high-contrast-light .history-finding-list details, body.vscode-high-contrast .history-source-changes details, body.vscode-high-contrast-light .history-source-changes details, body.vscode-high-contrast .history-change-counts span, @@ -3238,6 +3562,33 @@ body.vscode-high-contrast-light .compass-change-badge { margin-left: 0; } + .history-comparison-tabs button { + min-height: 39px; + padding-inline: 11px; + } + + .history-evidence-panel { + padding: 12px; + } + + .history-findings-header { + align-items: stretch; + flex-direction: column; + } + + .history-findings-expand { + align-self: flex-start; + } + + .history-finding-body { + padding-left: 14px; + } + + .history-finding-body dl > div { + grid-template-columns: 1fr; + gap: 5px; + } + .query-composer-footer { flex-wrap: wrap; } From 70d881c8dd8ba2a8b2d6b0e9a22758f30f7c3452 Mon Sep 17 00:00:00 2001 From: forhappy Date: Sun, 26 Jul 2026 09:52:47 -0700 Subject: [PATCH 3/6] Fix source diff grid rendering --- .../src/history/SourceChanges.tsx | 44 +++---------------- tests/viewer/history.spec.ts | 26 ++++++++++- 2 files changed, 31 insertions(+), 39 deletions(-) diff --git a/packages/compass-viewer/src/history/SourceChanges.tsx b/packages/compass-viewer/src/history/SourceChanges.tsx index a7677ade..5f37d183 100644 --- a/packages/compass-viewer/src/history/SourceChanges.tsx +++ b/packages/compass-viewer/src/history/SourceChanges.tsx @@ -19,42 +19,6 @@ export type SourceChange = { type DiffStyle = "split" | "unified"; -const DIFF_THEME_CSS = `:host { - --diffs-font-family: var(--compass-font-mono); - --diffs-font-size: 11px; - --diffs-line-height: 19px; - --diffs-gap-inline: 6px; - --diffs-min-number-column-width: 3ch; -} - -[data-gutter], -[data-content] { - display: contents !important; -} - -[data-gutter] > * { - grid-column: 1; -} - -[data-content] > * { - grid-column: 2; - min-width: 0; -} - -[data-diff-type="split"][data-overflow="wrap"] [data-additions] [data-gutter] > * { - grid-column: 3; -} - -[data-diff-type="split"][data-overflow="wrap"] [data-additions] [data-content] > * { - grid-column: 4; -} - -[data-overflow="scroll"] [data-gutter] > * { - position: sticky; - left: 0; - z-index: 3; -}`; - export function SourceChanges({ changes }: { changes: SourceChange[] }) { const [preferredStyle, setPreferredStyle] = useState("split"); const [wrap, setWrap] = useState(false); @@ -231,8 +195,7 @@ function SourcePatch({ hunkSeparators: "metadata", lineDiffType: "word-alt", overflow: wrap ? "wrap" : "scroll", - disableFileHeader: true, - unsafeCSS: DIFF_THEME_CSS + disableFileHeader: true }} /> @@ -339,6 +302,11 @@ function useVscodeDiffTheme(): { ); return { colorScheme: theme, + "--diffs-font-family": "var(--compass-font-mono)", + "--diffs-font-size": "11px", + "--diffs-line-height": "19px", + "--diffs-gap-inline": "6px", + "--diffs-min-number-column-width": "3ch", "--diffs-light-bg": background, "--diffs-dark-bg": background, "--diffs-light": foreground, diff --git a/tests/viewer/history.spec.ts b/tests/viewer/history.spec.ts index 20398adc..64f30608 100644 --- a/tests/viewer/history.spec.ts +++ b/tests/viewer/history.spec.ts @@ -122,7 +122,6 @@ test("comparison replaces the full graph with a readable focused delta", async ( await expect(page.getByLabel("Visible graph delta")).toContainText( "nodesAdded 0Removed 0Changed 1" ); - await expect(page.getByText(/Viewing changed subgraph for bbbbbbbbb/)).toBeVisible(); await expect(page.getByText("Cargo.toml")).toBeVisible(); await expect(page.locator(".history-source-diff")).toBeVisible(); await expect( @@ -132,11 +131,36 @@ test("comparison replaces the full graph with a readable focused delta", async ( page.locator(".history-source-diff").getByText('name = "compass"', { exact: false }).first() ).toBeVisible(); await expect(page.locator(".history-source-diff [data-line]")).toHaveCount(6); + const diffLayout = await page.locator(".history-source-diff").evaluate((element) => { + const shadowRoot = element.shadowRoot; + const gutter = shadowRoot?.querySelector("[data-gutter]"); + const content = shadowRoot?.querySelector("[data-content]"); + const lineTops = [...(shadowRoot?.querySelectorAll( + "[data-additions] [data-line]" + ) ?? [])].map((line) => line.getBoundingClientRect().top); + return { + gutterDisplay: gutter ? getComputedStyle(gutter).display : null, + contentDisplay: content ? getComputedStyle(content).display : null, + distinctLineTops: new Set(lineTops).size, + height: element.getBoundingClientRect().height + }; + }); + expect(diffLayout).toMatchObject({ + gutterDisplay: "grid", + contentDisplay: "grid", + distinctLineTops: 3 + }); + expect(diffLayout.height).toBeGreaterThan(75); await expect(page.getByRole("button", { name: "Split" })).toHaveAttribute( "aria-pressed", "true" ); + + await page.getByRole("tab", { name: /Changed graph/ }).click(); + await expect(page.getByText(/Viewing changed subgraph for bbbbbbbbb/)).toBeVisible(); await expect(page.getByLabel("Graph change filters")).toContainText("Changed2"); + + await page.getByRole("tab", { name: /Semantic findings/ }).click(); await expect(page.getByText("Fixture comparison", { exact: true })).toBeVisible(); await page.getByRole("button", { name: "Exit comparison" }).click(); From a050c09c8aa90293a3622f0f4dff1872c3bf5476 Mon Sep 17 00:00:00 2001 From: forhappy Date: Sun, 26 Jul 2026 10:59:56 -0700 Subject: [PATCH 4/6] Add Codebase Evolution screenshots --- .../codebase-evolution-changed-graph-dark.png | Bin 0 -> 94383 bytes ...ebase-evolution-semantic-findings-light.png | Bin 0 -> 80633 bytes .../codebase-evolution-source-diff-dark.png | Bin 0 -> 118191 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/assets/screenshots/codebase-evolution-changed-graph-dark.png create mode 100644 docs/assets/screenshots/codebase-evolution-semantic-findings-light.png create mode 100644 docs/assets/screenshots/codebase-evolution-source-diff-dark.png diff --git a/docs/assets/screenshots/codebase-evolution-changed-graph-dark.png b/docs/assets/screenshots/codebase-evolution-changed-graph-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..922aec2413a0cf4e486b6fe2ff8405aa0ff6bf81 GIT binary patch literal 94383 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 literal 0 HcmV?d00001 diff --git a/docs/assets/screenshots/codebase-evolution-semantic-findings-light.png b/docs/assets/screenshots/codebase-evolution-semantic-findings-light.png new file mode 100644 index 0000000000000000000000000000000000000000..25e95fac803d52d2cdefcf4d0598a5937934add6 GIT binary patch literal 80633 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

Vj;;D8s{Lqx;#VQ*vOsLaeydmy%sYjC&<2e}J_ zqDvcPrt$w`?ycjZT;G0CT`qO02#O*C0tQHflF}*?LrOPDOH0GRfJ+1f2^koWR_R6> zhETe@Q#yz4JlD8>?|yf@`?L2xXYX^){NYDY=c)U-@9X~7b;H(VS4lyJ(6?uGTsY9@ z*oIj;rgG!%PEl+uW|NMfKbWF(l?|y>v$P;;iEHL}NS{SN=LfUM#XlugUPnyE=$;zq zli2zAEUbSSg0ebVD9a_}0&G9Xxg5XId={0?O7RN_z#JPDi>w_oaHOkdspTP!7(D(? zrYwIq8hK!S@GP#uF>e*qYCuYwY;nlhe_|dCB@KfwQJsQ3)qi#xyCa!a{)5^QFgw-R^KFO{STB(3{o~Ec z*`2-guXW>L`X0>4%#_X!4!&K*`A~xQK;A!A%iz=VzE_SUh=zsl)tm13va}Y^n;z=- z=f1be%A#DIIHFCZ4iS778v0G$54tn4K^d9MxL8rT#^4OPCp65~ZJafCOnXbvb{VV_ z&s3{2BNHQaeACV^*A+Mt$(99obhbTDOB@LV=K{b=O`AtiohmJqRE-5HNrvkS!pCK{ zI5A%m^4@Ii;+JQ;`RYpi@#Pi;h55q7N5OPWMQnlCJs%S4nPPk4BulUNl&Y|Am+8bv ziV1}`cCXL;C5J*L(u^U(Bh8Fg86Dm@U*Z`|WCsa@m3OAlWOFunqe6r|D!ex5ZW9Le z*gsG$WLC8vlQ|w^i)Ks4BV>OAV*crRc_dTL7n;*od!*NHU3XdiS{apYcRAeRy|`GT zuT`K0Ra?7M4O*g`L@jb#LF|xrCAUXnbu_ZinosAgPIgf)GPpk7=e_9OfuMBjSbH23 z{BJV@E)tLYvuECh;UW3g%~Jl)Y04U+x;KM8Uc!U~2xCm=RY|^bA-;zyP0-*hq0NqM z-dV9cw9_54fT^-VJt$K{($a)5!g-EY)15S~qL`SZQm0(Im9xo* zg~X#A<(!H*b)13GSxdSPVI%$iHDom8)>Mw>VhP!(WJ8wKnyDde4c9jZ($FB zH~Rf`|2Y|vL2^bS2BbBY$F!EmdAbIhD=xD$R`h_{M+VQz6#P3Yvs(6}GSBuupospR zp7@Ur@W0H*{Lg+}AIP^(Z(h4|>kc{9b&|~Pg%CGGOUs$p)^oFy(<`$X_)Go4^bACF<(5^5*?O4avt3e-Lo+z?t7G*0|`s!rM$;=#I zB-~l)&NglCb2>UITpdyVCS41bAcoWj%@y4xOPvPw-KAZmaBqU&;4tYQ(PD5+`j2>W z^2{eIJUD-Uiu<4+N^yXHyS`6LNK`kv1I%?Zt9l6BfjDHqMIy43;~IpZ@ceKojvwY> zC7rM5E)o^34j8qMp%#bldzF8@$zWk*v^{cuYHI3m=hU!1YZMy(IypMFMbb(+LYut| zbxe=T{Cznme=_| zeFoJuqsr|%+S^yB&Yr{JmN7Mg`i?g0FK>m5?P)*9->Zf9On4$=u{&F=@C{FkloeN{ zX5n-f)B60nfrrQGVs9F^RnJ|Iin2H&>Vw*~ujj8!s|o{q;1IPFvq8exSKjXfduHV; zMkk}Y$d&_BD_?dJ^M26Bbp(UUt=Y|sk;_AO!$)Io{`(X_{lVt}mgI4-N&u}~^*iBK z?Ymr>g=WcPOGU=GgU1GyArXM!>>Pc`ZrOr|uNc1D>ljEW%pir}-zMh@;UXWObOPwT z&yv5XB`^j%(_J4Fcjt+-nsK4!IN7ypcR9L#C5!k-)hGN6NtUGuLl-FwWY%AVUSW^( zjnx*$P=`i?c)}yuPBoPqCh(PUk1sT{lDQEZ!S*NpMsy`B~Oo|U4*4d>~oce zopz|7d>(mu(Z_pucrfy~0ZM4k3s;TXqO%et;3ncl9cLt{;eG0gp;3VW7i2MUZ?oVE ze?wWMoCJx=WQFIT_A?k+EMWEB8!fo4U>Sg$_kGFJ+bOIJ=EDKouMFvJzN z#BMjU$b|@QJ4NXYbo@NOId`hJ5mYI7rQtmm>pIMxX((n}l(p(;Yj6J-5z+2;Iapqa z)4Lm6j^aoglUbs8AWv_XXFO1qn0kFI-bvSm$xB^e#3Nd$yCYIBQO`HPpK=%FwJ|eY zU_WTSX#JIL~ee*R-xg#s;&oCuiMxKfr#izOp=KSWwWMgw3^0!Xcq=V z*uln;iqmia{MO@3XmRZ~KS$IRR;KJkHoio3CrhFjLO;ySW@^qfhx4N*a|{K6PpS30 z73?haoW7czluhf`uUD&!i+na+O1^(basv3|US6=o-IJ|bWVuuna9C*GPZc2>yQe+M zSKz=mT6X@*=*S6moeR6$ys+9~a=MbD2{-8T|fS^&$H{@NYqoeSFAjXwXhoW} ziW5;c_Kb~47YfuWx*Yp^eWCRVZ_H)>9|A~-x)bs7Hd>Cn^7*t2T{oAY#cUF#To zPnp|H8ehn0vs4#TgpCbi?^$_E1bbu8;2=mDdu2%}_$?1IDpj%wi9C>%Q9`V3IbRY~ z*+bZLbt1%GByHs(RkQc$F9oTxF)NyzFS(-*=}m)$b%h*~o}L^LzY-M_+aD{VwQde$ z%?t}?Q{^r>!z350C8^Jhfzm4{=Y8giO!la{4=EK#{Yn)E0AzH{8yW@lR z)DNiz>}jNK1wp(>%f6}i&9rB7y^I*z;1WnUXvb9c_VehXA|iEg10{#yx*i@y-TdN2 zxX}X35Hue$h82N0IodZw9?DjQq|uNL=QO}ZHs0vcc1b;P$?8FF=Cna zI9009iZ~>q(kem9%*w^`SvJhlR7LT-)-BxdA%y^xlvjVlJW9=LRuKZl7ZMe{!PfBa zuK*|$kYs~ZfR8ZvEmC?Z+@I0BFeAAFVLuVQo5>|t4&1iBzmOevTE27K z%cC&x#a%lB+}>*Xk-_nmLe6U)1J?DVj0(2k(3fPaq1Cb8o?oAm3TO4;cdxQrGHG9- z?G`@O091{2YJ;!9tYK>t=+eybz3qY3gB@z;$!UfeU3%r*_b+VGk7eTayL(JIZm}M4 zZ8z^Mj4CF{L{^R_p^~ixg&u`UneSgF(ag1v@bSTht8z1}ziGE9JTLBw{aoWSSoug@ zi~M)O(_PdXJhyCnY_mME6x@3`ZI=L<(q4|fE!CAiomI*{ySSJ;*-jfrc8L|UTv)g_4Nc!Mjwy0JJIAB8^R zi0u(=3TI;4F0vY)I7K~;zp#BZE{s7Dxzj>j8TZKL*RQV|g$6#3g4jyytY8z4TbJ@~ zg@q;c%caJZmXxq+JTlq)Ag|~i9Xr~b?pl;ZJRG5-*pjN8R|jDMPRk=CWMtc|pXEng zQ7K`~^x74+M!@xLpzSSM=7U8)-g-RzF6v`<$d7A2(>GF*kL8li-Dl)`C^Z{O)kuV2 zRZhJ{Unu$iao4kCaY;4l^$917?M|+BKEstNr@eQ$F3F8Qg)#SqOjH zvnn+f*0d~tym<9$MXO|a`6M`}roO(J&MJakT{96k%XJA!BPrRXak*!yutiK8I=Zy6 zwwdCdUWQTya6-ioe$p)3g+~B>qg^m8ipcu5QR*FvHCZ1=U{liF$tft9EK9N2(cp^@&Hw1@d-d{FCVBdx-?MV+r@kA~UQkjbgop?Qqjj{&qp}B5qI|N&CEqGz zbE;3wud{W8y58@$MYsqE2!!S%UX2?X7!cqoCk9zg$?20H)jOixbesauZ~cy_zdH&^DiWlNnDp{ zM;-wQYcnEt8qA_YWBdHFI<9AF3gF&&2=s9%)f&uwgTvR1Z&lxdNN&x8SfZq4`qE#7 zR|v1}5(RZEY#|sy9EE7W(B`FMqyDMZv;Tz6+g*lB$qmW)qrUb@{QX?ucenp7Jm$YA zxx@ea|60fO!#`zy{zh_pV$y7Co(K5t7)lg;-5o zRU%VrYSdeeztX#K&=!MhXwG$sK7jO12e#pFe zdlMdBM@mP|nylc#($r+AJz(Z}^SgMKwayF3PmsCDwN7?>XzcBMuSARCWeX)%A?VoH zy^AfM^XO$hW{l-1f4i1P4am1scj4&b(MB&t;2q(_qbo_CJ5}e<&*Qo^n^3VuuYK>R z%Kh<2Xn6gy5Nd&meXRe#J`**jGhgJ_o0zUs-pF&98?#z1EXvJ!se=J(H6(oFpcq!> zEY!s)o-Dde-Jsjw$}F-+-_o})ZE{hMQ)!Qmy7Ep>gD8I9~cAlg?j zb6h=KSbIi|Vb-Z}?&X*}w*9rX4j?GC$3S_C(=&$s?I6ss(`r#s9!7D{I3PB5B73lS zdoR_FyRQ%B>X51R)#A0gyD(wfE09i|WUuP_wN>)*Xl1M&!*Te7$aT6gM)BK^ z5D-T>?=_4I=K#*kez#5=v?Dz~f{;y5BM67u1TXfS4Gyr)aeCr1tM%fAp(nBc>4>U# zz9H=tck=|b&@>dFndts8>FOA+V<`WWeZ$r{lug_A^lLn5Cxqrttk&<3!T8L*m-`?g zH8)X8O+(GS=dc{!6$XwusY5ENh{GMET-y2bKGKmw{kyZ4bSB9s<=94V3O6DZ*_U9T_&|S(L+(gaup4FXUGZ=-S-2Ym+OAtf={2W>=1VV%0|~$#{FVZcFLK zk!PnkZZp;$_Aig|+ANM7`vm=Q&U2{1YQk=Gw`Z_&2FromyUUx>b0Pa+k9^fUuiABZ zb!?0G3P{>M3+u+V3oR_oF6z$*4a#Fs z(Nc0?74mc+i?nl;l%!#Yw?0W&;SeWgcrsv*wAky~+rEV@ByVDdF7_bWbgKHnecGr` zRbG{B)?z}1x?K{=V|2G~ zNM<-8GFrP?DedZBPW_Rnl&8pZ6PXhgN%sg2S_G1IZq2rhVJ2X)mwdOHfR|&ue6=HZ zDmh8!Hiy~Xmqd?DOt*GHQexuF5!sFD7Pp_-&C|F5wYnMLH?r$Ehl~N@jTl+b(Fg{-HG`=j6#u7z& z2V=32$}#72b@6aB0}&i7kKLhS)}r^Q6k3%cydSS;Y00t_5EvL7X;3GZsh)|pNR>9y zK@fa4+!UrB@z~hwycqQGz5RE-nB|PlYGL&!uDLNWILb;_R(c3u0h{_yjPkjvq(pYaS+;vPZ?r=>E(v|5jFl}KmE^KS4CXHY)^DlWlrsxJmK z_A!r5my6=PV|bmO>5DT&W7nMcHHXjVxjQGfYEIF$qwj%6qzE9#JEo}8N~T~R8xsN) z_voU0wNUW27o{`{n8B}MCj-O7%~l(%pXF|a54@g#D`cw`L1n{(Qx@a^~@o?d1Dm+T>hXi#cus_ zN|O+#XSsg0(rh#rfwuNpW?q0lcW%eTnVeiBrOu`zGVV8jG>c_Gt4I-&V&Xa^;n*6usv4oS1VHClP6Lv<$g3;FLSY#Ji2$*2a{-2)P@T+q!~1u z3PMvX7DaKPM-z1RRKQ#J{QO3v8VtGi(PY1ph1_^fj4CPm9VPsxaA zgAJV%W1tZE@~eYusmR;Qhk{TPGbm32&9ydQp8}mS4sf63j5-ofyyzM1o0CbSyd^Hq z?O&Y+gVEg9T$t9-0}i?XW%MZ(hDE!ox0e=Hb#i5YxQ-}bU;2yd%b5McX$vjX&;cx{(So`wd#QQxbtfHJ%68j>oZcbQ5y5r_ zyr<#&%<9A|0myXq>X8y#df$F!vbc{)Ema$*43$E%Y>GrdEoPo*OAMp@mT9(yrIDGr zd3?n&toc5HF`=7dTD)aF=rl}IyJqo=u1|+V)T&u)K_(<*yY)?7lG$=<9}^QJJhb<0 zmx*kj>y%4+z1!b>PpfkYU92#iEMjPIBfEw!-*`WtONxmj;I;-g{}V<;=mi2w<#IF8 z)j#&NqGK{b$XH`!lWCH)y;C*xcQd5GV7lnplH^Z~+NxQA6uHxrxwLE{YUa7UBv0d( zMRmFxI|h?)KU1=vtG=r?tk&EataUo`>#x*uCd1S%b-@;9>PeP*1-4P;r zt`PaOnCw;Q>SDZaJpHovPIo4^gjI^A#mVXEJNQ+Y5E1yeQAlAdxsKqFr=;AVj3-Xn zy)AwmO<?TqJ@J*tkk@`*hif0-e!+SC-mj zfZlV?Jt#J_>b@5y^4L#(m`3o0xl-!q=}(Waj@^|S_;rm3bQ3?!O*_$*(J?Xj!T`oN zn=rOi59UtWZ_c2FfC>lV&9)P3(xSpN zsr`~XIBD7+In}2vxzR!xxHwiV&W<~Fp977;z~Er&pkMUB#XtWft4DxbH!nX|!FoL; zwMEKz!SCHWky|G_CSJLTLWc?2hR>i*VQSAq?Vdp8v-Y6@Or|%b%2XPD*zZQLS{0rq zfr~uXrn#+k*eQEBA636{Y^K*ZDQb^IdGc{3R1-gutfQ&_k;(5KGgK+~t9qrP=qNN_ zN-w2#n{nZB*a6Cn8RJ^d+>Nr7uK0^R0je$D61&;I{vzORL$?H`J?^&l(V+J!T2@i- z07)CI=wP{kk)7kiu^sxThp8dx#Z`H9?Coq$jP7IF_4emzk^30)@Ey6BV@dM4r z<};B-_L=WHz33JPZQGUyE68~UJ3F7vR^HzDejpEJVgJ}UBe6D?-tO%{+!#6c0rpAx zSZk|8PmWwd!s*3T4}O~=S8AFTr`O$Gy|wDbj2JeK*L$C@iwLo5=MJ2znwh#BO%INT zXQK0F4pLzdpuXMyhoxpMF(g7 z@Mv${XEcQQ9<2eLY=~8}2A|Vw+Ur3H)+!H4hZBDw;Mc#JxYXJ~5Zd?V5A1CHNRgMcjUTD}8Cy z?pMyAYV0rYd;YGr`}Y~ez@e$Nz0IV^=@EI0*L9F5^J790$O}F+&?narNZBuNy&9^? z2FzsosJm&t5Bi%bLA*2i%I&z;MSDJTbB+kSilDq)8yyLV9a31s7Ge*+#T)ccD@tAM zKKV?Gc&X)9HeppT4gQveNxO80MuI>_c1B4J30sc%L3wl=or_j@Y7ar=V$`ZfhI+Ye zOr)}rL5MjwSG7^$X~^`i>TdVPB7F#O0lx-`6~CAAQCk zp_d{PL8!X8Yf79t$ltjAbD5{=uE71S&Ywb!pA#OXT|iV&nsZxim%Es}tb{H&ovEiy z^uFV*G~0^%f|7cPsYiYcvmkcJ7~OM}f_=LG@_E@uK>Pn#l59H{Fm;BXpC7>_-QF9b zq!^(hwW2k;Vp7uJPkG*fsD;Ww7CD(YMUK~U znxJF*{yl81fpOnhF;6V-m}ge|(P?SxaIbj`Ks8;trqwrxoNR5CPGW9)4}~tgNpz2U zxURo|K_Br{{aBv;*ZCK67v|;}x^-<~B4*Fg}>ziA^ss%pMC8gtmOZO$L@cY)BO)@ zk&y*|oLTs_Y^3`ervCI8?0LEfIXtB#iacHaeMW|Nphkdmh7aBw`TIBjImi8fjDr66 z(=|VTrmMb{t}{L8Vsr)N*P7o%>sy`xF9p^hgDA})r_vxK4VwOEo*1zJ))3goeEoJ7qXSnO179wmoF>mlz93C-Vw4@!e8WC9kgQkbbZ0T^tq@M znGT*J&6n8kfBsJ70s(oh`7YIr(QOXLk?8#^3W}S$S-U?yeeCAg1l;c{>kZn)2%%K? z>>$T-1{3wfv?-|D1i#rnGxh|e14sQ-7vBq9{!8VA3#1qsD_N=8x?kN&c5p)yZkvZ) z!pQCY*X?bYCAPCK*<;_GzY;CvK2Te$jz6a}GLx`2o<2ro+aDBniEdyRB2UN563&~7 zYe*fZUAfsX{#85b?C~KX8RyHfSRp&HBq5>xLpRPZ(q3u6TIsdUvXL)8ZB8mR8XwSu4L2VwA$~Ss#oynle6nB(skQcPA^=osjZFRc0b&q zOyxz*TBP2^(JXw`Nj^m`JDDACdg#8q(z^3VFENNpYB#~H00lEO?_bCc4IO)zCNnZf(6$S%OS@ySc>w=kTq)x zODhsf8x}Gd`@{5^nQSbdAUC&4lM!P%npl0|o31;C5A>!|R@FgN{H!0PzHX^x_x~P@ zV=v%!Ixz_PzAUM?rD-J*09ix_fu|1d^2bz7ij@>CN z*c3}qu6v}qVf6BDi_@3bg`FGTq`IvfjRQD;`}+0$PM`8@t@4NK0Ye{}ILuYV#p}7u z`4?vzZGV9!*g^a^-vlA@<8ZzE-0(3#^9^0PimsUM3|Y zGcEKnn-Tr!!6g4pZCziK+hU|le}<7Eg4>{Q>ltz&=h-o>$5Dy?%;JVobHk$J%Fu(j zSV1S9`^jip=n8NN_1BfFnCF+uPP8hX_o<~mKY!_$ahq(zuUHtY!&oHlz=<#4&dG_# zeifvo)I>*0+mXPReP0M04d1hy>G5yEghLKy&D@!FWGIDNMGLQFJbbnWfir@r|K zsD;ndzHCd6b?{?4-y8ViqumpTHP**13%_~uRpC!}lU{y(H`9dSby)O&!D3KJ zrJZhk6R+`K|oG&3<{n z*N>!$g4_eh$0<7LjZLg;eY@Nkw{_pva!I8O1)FM8zT42usH|=fmFbWONOi~E)$gXa zfu279AwnHiY|{rIc@A${bwrxfthLjKr>o?R^_pJ__q_^C?-x0t!h-J*brGrtC@WL$ zH>88P^?1ory8Ht$sNQ!V@5wfI{#E+I0(#gjZ^<6EdlLi(1?`r&qqc_}&I!9CwFly) zZn+|n0I)BWT#PR5eu?_@p2REr%&G=bf#R7E3)X6?s|+Uc5}<(vFw_k|5*;2 zYV=RUI8CSP+S*qQ=x&W{TC^G~?ae_*4TeEqIP1|u?K-W<0bLW_p(=+k6-}wg69}OKD85vpoTHz78q-}ONMU@j#Ya;IP6$f=M zC+e<_b7zj3^(SErSvNK|ns)Y0L}()A*>)lfY}Wq`3kU{sXKd`e5%SnO+vaU=vEDh~ zXhL{SOFNd0U(=K`kLGllWGGb6WqcF89EH!ulAav>8^;18iwWu;x$sa1=yYRV@Ac}G|o zBJ&z4>1l@X^B67O8;jyE#F~`&M)GYQAhHcBUj6-t98dR1)}<>~LL&5Q{hB!KW?Rg9 z@N50AR_GgWcPb6|#69aukaqY1SF2NLW0y^}I@hp5J5za_`^93A-HejL-276>L;q99 zfeyJKO5w*g8$HiNyt!V#WV4PH*f4z~@gXXG$@AhR(i=0f{uTtbb8X6{N{y&PqJxp* z&NB5I5NVYcFfMsiP%)iFiJfp&%yqQgM{_=Etupl;pkvOI&MMv4p{ju#$N zIGZjvqS?B#SHHOs2Md}er}=&BR_<8aaheEnA^n~%qh>mpefd7k;tx)X6v1bt*khnC z0GLrt+9Ry#!)r42Jdwh!GW7D*%%0L#R>Y;PnmKP~77N%hYbl6$ZwC8pWWoDqdv4S8 zWZ&G+T|f<3e+dZK_aKGr^I%ipT=q9f!;Zd7BRXBR$1zu}yS^z86ULlse3xY5#7-=7 z>FT05WV^mU6A@CxUwqkDDEbWT3kwT9g~_f_QJoxi8G+Pj9~XWe{55l~Eneq2vcya5x{9}mjm`%&pjrg|To!ZSz~LNqY?S!07{3 z)$mTx8yU>482IdzU`Uu>b?%*J<&I3XFkSNYpNbP?YG+=B znc|!A8bx-(I8NXyXCHQMlI~9L;kiF5YmTG^X{MsC`h|O3um@`K{+yX z19b>5k@uG51D$UY=7jSj_=Pg0~Cp|D)<_9ML)AG6zS>n+D$D^E_x{I2Pp$%t*4EX7qBsU``ZE*Y;9rtwY$w)kso8m`6t z&R&CHnrafYGx=6(icT*7oU^|lNE8gA(}Qr?q8$Y9KMZJQ7&UD5io5nLDyq(0b$m>z!6r|vx9Z8+MU|#4A0gPwmFEtX*E)6e)M?) zNRWhZsiAv>)yw? z_Nc=?%YVtr@H=&ORuejLQqs9EzW`G|J)QD)-(8Vncc`7K%R>3kxR%;)BO%<-daMGr zCw9v<5qwRFFxQl)o27&))r2^=w-&U&yith#r-gpyyX-%kTlm;cE? zk=5V}md0Sg;n-vGKC6+3qj=yKzrB0ge**^Ysg9dl*#n$Q#AGvMQzeTUG0f*URh$xs+n}1=mh@$--c-Bw?PK>Q=ux z)?ob*dJZ?2dA#}p;hYokK!r$5E2TMiifx+>f@gJizBfzW2txOH%W`>n`A#a0+wMSH zlXdLwT~<~rk4ZsqVx^g;i5a-@#qKz_5<4=h8ICYI)j&GAKR~O&L>Vh!5Ie0;3*KTI z$2846vlwz^k*X>SOACd07h8-`Z&I#)UN*`aFHXeIXFryF zeTvWR1sORwq3&F>U1^e;(GA&>)R2;C1tJQ=q&*ogCqAU6i8XONoa{dF4qC<$Qw0i5 zM)?vOxEM7v%7@+zW0hA@NG^)xVz;Up8_SZa=YCKb`^wY^!zL$NkTVY8Gmp#cWFk|B zWrjGx{(yZiR07oY9=qx5ibgtNjPgChb#+NfzTc<`$?wsEE(6585?|*OI7*tRcb3`R zH!{Xgw6y6xbP8&!1vhsUJ#205b8>SRM=Ah~f=@Qx#}6sD&p*9j*V~^h-FalHF}-Xw z&dJhc*|tqG7b~PIV2B**+isfQK7bCU7caVY2Te{*#T)1=Z04c5Bmmv~Q?JeoHt59G zi8-P9Z0Uu0d0e6M_6N?iru>bFueM6|`8Gw0mG|%mThm9f7H^x6a|$@{WYT@U48UAN z1MC#;+{tKhH`LP$ZtAFSTD!yifFW7c?67VDBeC%+BQ)_PFXG?6;fp$yg7~jGbLPK{ z5&Qk4|1Y4jiNEDetF+ci;(wpP+BaCh62i^89TueLu0Df$=PS(a?$QbHI>ftt9~<*Qc()dYYmr9 z-#(34Z;4FQS|A2+uxMojSZ>?Ry6prCh5fbfiXh&weUqd5I^u8PKAfLM{qL+o(td(&oBYkbD%X$f+}f8RT3_UH&Z ztr(uA72=|uu~OGMY|^G18VNz5pY{RM$L>-$Xhwwhw`#gCDoBN8N1Sw5<>ahAsF%A+ zwr~0L)u)@1JzQ>EPLOtp-iWaCP%pFh(s04mS%LvNxWnw{q;SQtUTLVrukHTDtNgnU z-y6Xy{ZRe(0><&rKmXjKctp>|&i9Z1bIJfopCRiksbm{1akZ`^ z8aHg4?#q7`6X$*+cpqT;&S%dPVL`D?lv*BhDhB(sl~tDK!S+VEi)&ADBlWJ!_!A|x zZMB<{{njiFd${XTsgVd8wcVZ0GI>8yC~auvgCgn9%pS!j+=AInc<#7bE0#%RAseRwr+kCCp`;FT*xb z^1YY1#b5=Ui6a~I#$Z@4anG|zokZ(2x(#;G8ZNpn1(xmwL=`#V`12jRcciVdU_>Z% zW!MPPiTfbB=lW9Bxl{?+&XaSjh+bF*Fy|j#z#;Wz5|-XVkvRYpm877BkZPh>jF^mO zmR5P+OUuSCBL%f=`8;s+G!Fmz^y#dpcf&h{TZyS6pZ$%nDM2t!=42W*rlK7 zZ79)B6!tZMsy#IIWr0z;BfsNH7@DGj2Sn5NStP#VXGOzT__h8%k7{^B1HFR~d>+xO zQIpbf3_IZ}?R!o7$2>Q7dImQc@;l04rGP7?od~t=2qt7c2uP@m|6G>Ts4jPimVf#8dOzR=Q%q^ z3)_{692NrLMC0R^Ag@`38z{Ew9f>oRjpm#IwAD;TiYZ-?zsM0))LjHID8u0EU|q%? z??&7(5DPeRn|`gHgY0EQt1cm}L;d3(AqYLI51mklt*Rp4D4V&! zIN4-=yPXkDmPl&eVsU)cz>W`8B$HqNHg-KYm{@gT`@kWpkceCe+L)=JR(km@HNuz_ z6(A=}IQsb&7#*RieatKDaU4G3U;gbTS*5I63o%S|zG~oC zbTczB2;o;HbXbq=j7ZBY7)H*8G8-i6 zfJBvpXGj~nyLWgonhzzG*;lwdtdJ?1hexAlEP?Q5QcYXyZ&HR`S;$RhM!r(f&7>tB zt1v^e;hh-RT&l2jDB_0lio|!V0s{lV2b`rGe-L3emjIbGn$YenK?c87Yxv=O0m^)O zr?xwzSo=L(5a#2lnx2vAzC5_;X>o#YI6cNjta+?yNFd2Msa>7M#xs;oz3(|GZ8K{ue{bCoa{dQVa!d61RQx>!wM2d1#$>}J2stjYIt)0}^KJn;Er5!7B@kp;l8a=Z_qL^ z(e3TRm$d8L)%e!j$Yj)5nM*IRoSd9*KJ=sit~Zs`DC}lkb{Qd`nGt(ZjZVZQvZ^H0 zP|@L+qE8ceZ0-wrU*_N!*?_k{UhTG6nQ^bnukI4Wsbsy}*#$-a{?Y!%?OD+Ubgln* zn%^zfC)NkMkW3mFNLUx4y1L81JAWXnrdAvkmHxG3&3~tE+q{`+ChY5V^FGVhfax8) zPJ<$i$Gqz`V3JqKd-4i%Ba2>rl}+Zr_CUWRqtq;IzI37=3W&z7h`h{<48NN@+*w*s z8G>=-KrA%`FUg`K@I6Q(0FUG+`25|cJVWNp~=&AJ5=9dTJ% zS=U`0o8s5ShE9XomPlhGqrogoiq+>{X?-c0-_0_Y`mJv=s{L4g2RT~DHg(I4T#L&i z<@GPsiezIT0nYJt|Lnq{iTJOS>(y-9r3zUJ+fICyJR6(smv1$&dG(3y-o{S|WMTiY zMt^~O?!eE^X3?!-D?jr}N79E6e?e6KRE=Wz(`=zyVO}Ik%icaT-oT97@)j8h?c;f= z7G-$H-fs2T{mj%oyd{k~&X0Y?h$sD?GDdj6?DJL7X=-X>-(JA{a>2oY-!lArDknTU z_z8F||JRd2{~xfH{|a-3l+adpsR;k|M!_S{r{}U zp&5@VBBJC^rN70MrqU8l7aof55tY_{bz3ppLLI-gI_epO7M~#ZlWZJyC6bNh9sg$P z`QyhIh{sCnwXn#5d|^^*>Pq)bLKkyW(+D1?HU(P0rlT9DZ=rZ9@6FfySB<2441&8Z zC248tf+iA>nWhVMIail*k(AlofAF9^T2K`dsUQyJ2oO)jqhjnN*wP;?Zw9mHnY53IR-R)J0i+ediubE0ZvuS9JLhWTzKKBiaX5*^_)MToP1*mlO&Z_fsY$sC< z>xz^bMUO(UB_)zZ@H}YQ4~yFm2?=);)F4xuxc2gC?sPWjzB4T|#;wLAeo|yY_{4?+ z{shXd{e}@ROp0BNjSKNVABeeeJbpw!!12*X!~L*rR1Y*T{b7`@)0sZ5Nh7>=cLd!v zCX->CtI^9yq46@kHL_^nr7bjMXdT{_Xq(Y~4l>kONj`Xvx`b33)qb&Lm6!Q%R_Y)az6@YHuWshh^q| z|DLLgEe*wDO;*MdJzET0C$su8wBwsV@VvZiVK=jemm$7>mI>)uujor0M*(7yFotF& zp^-v{&5?;>7{4wb7_$r=k78t} zq`iE%8BK$v#5V15HuZ1C<>jOE*_GO5Z*+eCao#&Tj$qQqe?+~}Hf)|p1 z3F=NBslX4^w|EFm8p`5>9Un4iEwa*4>II2B_FLUgfByU_B)1a1VGEmlsWjEpYqxGy zSoWU)>_J}iMTKKp>zl!Fkq_bgjq7AC6J5%*4u&jQ?J9q=Y;H6?R9AS&Q#4uY$7MC} zqpdAV-)kd?N-!)aEL+WCvkwQ<=IT(ncvY$*xQ==4vQz>VVc`xt9>$vNdJGET?=0SZ zWGGG26grY`>9iW;)9AJm&D-O8j)j@n>fSQ{{FMkcmEw+u_6wk%G$UyUpMxC%1f?s5 z7koNp@Y85*>atxQNxdZX5G|2zu|N#{OoS|}ZWm}YF~{njk9=idVDPypSMtDGc+BfE z(x~|%2e5kT6Vblr!av^m{e>v&ZR`a-IVC>v>_z72C=`!_*J0t6Vi!2WK2t%ZE*? zlUipOmE(3dt9tVB_Oz#JFJ9ErpJD$D$qGh(NsHkd1Z_GyGTrw_XSH-~Ru)oSe=mK` zxOw7vD1ixRk*KQfL1;`S%~W4sFaF}i6W;5wFp7R%?fh?+ydRY&F%88vjKPCVU~~Bg zjgACAApTbV7s1y5Tb8f?PX74sWBreS0}#cq$6gU~`VCk;-H^Q5l==F?Z%|m#*j5h`=8n>*;4bm&QGw^rSd1|;iadix%+6o`MdD# z4fZnDhjKAGDX$r(`r%y9{qe`a)!PYW8mEnt-PP7oCr_N$a$1=8_QR(qqi&9@m6zCV z57EdZ#`y$Mp?3Bq@~A~cMdjl5Lk>(PN-hvl&Yl8kU^tgGiV`~5JJ_Z$ULv9tnglrW zKV2V#KXe@Z!So7p*u}U~blD;x*~fIfi)7nORrLygk+pLEn`cve0C`LOv27E#3&xw? zDv;7DLFo-UY5-8ERw5L1KDImPGD$UqDa{E$Nrmqji6p1CYmpEP>v0++L_kE84HB4C z10RU}x3tKh7H~`Xr5nYI@Ul?JaEIFc zc*xIQjTKyZ1dW%BEUQ7Ev!3D=~3=NYoQBTHqRFqX-OW_)ED+bj04Cv$_FZ`eSgP z1NM-KZ9@(e-X7~l;Z}l)Z@>+F{rdGf76>;u2Fh5G_bwv?wSeK?!~^j}1HKqpN!e(D z-V{@*R9@?!&#Pb4nYO-K$epp9J+>G?K_r7>y~*M9&-}hZ5ff-q?TEmE`Xm40goc(@w4VB4P%gL=>H{b^1zQZO zFJ2|<%T?yzE@kPqc{JKJO~?&vMEC~~?TL{R-+HL1N=mwInJ4Ceby~Q~mTt(3;e)0c z(*4$hF5t%^G3RDzpPF4{H{Tctj=M^~sJ&JMFv+Ui_;Acx6D)SB*(x(FzSV44g1Y&gkaJt>A_3%m!l>Dd(5=Ny`MjinQz5(ON$l2Ti;K$X76ZlV2m-<^9jr={ zJwvxLoqGJ=3Agc}ky^P%!Tyz72w%pE((R!V*HxXTuYS#Ln-^MX9WFt@dzNlESFC_Tsf6C@rb!_5Y5g_zOeD1C zhbnvEJV+x+|4v(8TW#m^(9sKbtmm~r<_<5LmoD0 z5G+jWZ+ejK?1Txj8}~G{iwB0a4i@rGxKD^2I%3#VRW{-?haD}nip*BzI3P;R7P352 zJCeuWa%YZ*on7B*VZ7*XBR96xwI5F;eEVSG%f6j)1Yr`ovIV8HH5RN$>$P{0N5C)}Gt;S-R?rLerh-uG|hk;`Qd+=d&2}9>Su-&UOqQ-@?pGd7U|PEe8|7JAW+S+u@&o)wdgcBH9Ck-jT?5#N ze9@4DjlR_tR31w+)BXDjvw-z&;fOdk=2}O;I$ROI=rce6`npmIh81xLXH{axZQ_0I_6zx|h!fKUmKig%X zL}92hU*63VC!8muW!N0fWu=9>7$y9>s!48C3QVhu7L5Bu%L70|6Sb$H4%+X*V7V(^ z8z`BZix+TZgY5};|9(g^!j9zuK2zw9d8dWB?vSCOyTcSte<=@el>nL%fNj2d1&WK7 z)~)dAr(K#z_L+iV{1-n&iXgSMt9#4SGzY5fY-A}@ZQ!eW%Hqa!)XjAVLht|y&ZIv~ z-g1_>Vto(mL8TV`)>rOjY>BlCqz>p-noPj@_$mTG(1r4)!X&+=*F%|I43%?4y)OP%EtbkZ0TzLR88vv)$w=f}nfb5l!2@Q>=tGaxy=rW6?AHfA zE-;OYoSn^Qt9J?2e!liQ_t6sos?X^9r8nxh1MMADIh90Ap>d|y<_;@1 zkTneRu98Hn{sx^XFgk{1N1664j5TonLc7ufvA&~R;az`ds1>TIH%~KRj3?)dMBvs| zZEcS!H!bo_In|$pyg#%r6`Sd0JHQY4n)ljdRba@ZC5D|i%$3+R@}Y1)0DO}_(^s%I z9N8b8F_(l{oLB;Zzyf~~1E0#`>B?!$TVsLNuNQkY5^N432tpIygcoZCH(mxOxj8^B zMah%kIMdM^PfJlF;wQ7r%3ih3_8|m%79$aBu(;$clRX*5#J%+J*Jpy%^K_?371c<3 zxYTYz8+%|F1hcQn?3D7gBPZ$NQeR#m54chgc*kPhIaRB-1$&_83c^ zRR_37t6dXE76bN}Xz-4mFAmUZK=eL!WrBP;)c$I{HX@vUCKL4j%-|2D_&4bOK0H{| zye)sg}4>*8V;X+>LmDIvBY?OB|de zH3jjO#QCRkkMoX1N8?D)YEH)+wxp_iw6xFE#Yj%G+37=qON7R8B$?`8EdM^oy8I@+ zGj=O9PRB-7NXWOL)|PhV0pOhhT_z*KVXtLraT{@C_v75z+Zq!s6D?$ui}Fh!&DBZ% zifSJE#Jhm=Ws+&0Uf|2JakqZ8n`uL}1sogLFG<;$!cdWpob$m0pE;&gA8@1zAxFl=~u*pB9IBkW<)H^wBPt1r6E)NBJz&>d5wd!uTf z-ID0^Eht^74D4Lp*E~VPu4<-aW!>>C$^dIhM2xgX!Y@vRNLAIA`U&o|?k6yP;0SCW zaQz+NGAhq&ob4}3h-|w?3DaU7%{5!ZccjNfMfu#`xdfzsBt)c@D^Caf6FPl7iE3AS z(m1vIxu#ol#T^2H-A69VC`VU94_1B7Ckb?h{KH_0weW8Epg`+n{5#CzLLbO0Az8II zt37QKKVz}=&%I5e#03NeEoblmN%JcQ9mAn>*L^(YD+1_$bgD^8Y0WP%a4n=E2tSdbSGl{wE(M zOvBwy;d2EADo)gI&vSr#Iy{v<=7*u3Q5?-kIpWHmnu7OBXqJ zAd52%$1&##(9g#Y6Id-n+eH5zsmPCF~WX4Gj2P5 zraB(9=Ua87$Q9o4evRfoi;2mnby6=S;_L1cf6M}Q2q(93tNX{v^CUNk)Z1Wf?Ucne zQ9;q$f)grEJe0@K;Y_vTZ_Kw(65MdtJJI%V>N6B-^m8|l7-^+C)zO$r+;mZuv z3Zbe9wGVnB;2Z$vc4AfEFg=4xi*6%%^@WEw z;PP4d9xrVxQwYf$oZaOdO0vg(mK0rc6x{{imJG_~&5vz{Wb-NcO5%VN;qkPM!pR_2cJiybZ4h9fyEpqzl>@i}F*Y#Or=D^S F{TBd`l5hY3 literal 0 HcmV?d00001 diff --git a/docs/assets/screenshots/codebase-evolution-source-diff-dark.png b/docs/assets/screenshots/codebase-evolution-source-diff-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b4e0c8e47001da91e0886bccf2c619aa6d1313b1 GIT binary patch literal 118191 zcmb@uWmr`G7dDC_q9`CTfb;`M3*1OSW&yXpeJC_w%vcXlj*{V-CewQ5UhKTw7!ei z3J_1OR|UBwHz0#2(Ce#-w^N)Z{Xf}eO`4MU=yG$cJ29H6+b6qUjSfWL0nP$!XOy<2 zfA%mie54=WA^!V8#r#3Z-~AM2F(0hI9}r}BU;N$A8GZ8MzXM^s$@If`^!Ep5u6ytQ z?kncfH2=P*-qwrV>z74`5t5 zwyT9a{&VW)(1oV4!HxgITk+S<_~S{P4*uO?k%C!M(tByd+Cxf$h?RVM~br;x9pHC`KbAyfj^ zs6B%9fy8TzHv9XF*_Xpj?0-&-(dO0mAOL>UK6arv!1=y1U!k+skIEhyAK|KIHcA zv6?C4Lx_0c3=9n1f~flcI}^s$tHuv_FW^N#M_4{uk7dz8T_4e?;`r+mHNKee>(gRt z=-=hzh_ zupvqC@W`$9w3$XqYUw?vM91cY_52C!j&Yr8PBt=@Y!fcBhAI&%#Q0G69LL)ZS zXSUPEGLb`HIPHyk8QQ^O&(=o%m_qPtH;a1lM{>)Vnn2x3(63Ql5tIJS;RYW z={Ptz=-4cTM?}O|*@i`wmz!GEolwpe$CBP#l^*G zRqmv8FVRVi6{?Hy^Ix2mrayf;Ye&ccm=-e=69vD!tb*Rcuc6lFW(+L>5B~f6gy7O2 zV=U2`85x^nHqDiGMM`3C-!9MVRHZY@PfyJ-GB614?<+x}dKJc2Tv}TD^C~JTW?~Qs z`xZ(IA4aq+iQEn$s^r`4t_bHsP312+IXPK< zafhzMA5&91La3(d?ZjX(7?F$&+v#m|{?GeefH5vDm6er&Xt+!#zYXW}6zj=IOUK2; z8Jn26m`^xg#VC>VClXPaoF>U)^(JyfxMyKlw2yYp>*}Vtlaj`AT=aH!qGnTdPT3Nb zp~|QavVFbJ{(B@o3*#grzKSZpoPTu#o~CX+Pj~a+?NFj$rrYrWJ!?gUleBhzM#eig zIoGAt-xX1%V5fD+sk=HBdQAz*Jmgb($N!Rrvp)|b0 zg2II+kB%rA3)|hJ+^&(V)6F>v2*lSMk8*OLGAJN~jfp9xC4x~{r|z@_$;^oRLTk#4 z;b%v=?_~9RdLyIEmi&8v9V9-_)Tgaob(u@_4$Ofu_ye_Q=l%Ct#A>Ve-?Mvpfu9c# z4%#{v^oy&2>L~bN99&!#kO*;7Qc^e^4!VBM$XNc%PdPk7q@KiBTr*D75+9kGQ-wsn z#=`Ptz}>t)yeB3vD%xmTXmGqakSvt`T}D$gZeU$Yy~1oFRZP=-GeLtB@EGrz9V-9U zRO8ZDudKAVd0xM^oU7Ei{q%(*U*LFiWMV<#*;q|YEt}@c(4E*DZ)@w2oWo%<&!f|1 zUL*54_u~vBLndC2v*tv(sn@T$rf>@j^M^TJzkYXBwn9Qx`6-o#b#--h3X`R^uF9qd z6;br^f8jw-X$T__Vy7BbQ-q?|qI0MHSd*w-Z`&v{VJ+Z{-ak3$?(8+4F5p|`0_-VW zRd_x$p3BDWptnY#sA{UFh^l%)L0UR(G(bP4oP-Sv8=J>;QgM`MCh4F!U!ASWbga82 zt=so-U5!<*y=bn?t3&J*o6CGG?FMWU9{D{*+Kkl91H0qZF9u0T$&%J+=iTXF+T~fH zRj0@K>P(^$2t;tuH`nuFmu}>STs)70*h+TgI>N zE;N7Wt=^B+RdPG-Cfa6(N6a^QEEGT<85ykt-o0-i-r#l^$G^UxArV5AUYLG3kiu$w zK1^?CXIG)EP0X%UR8$0;*y(SmvkrLp5XvCm+1;H+x54w_gSGYUcI*gbg9x1d;|J#D zBzK+5j^U&0%OiL|K#{S9OqUJ}b~D~bPVM0a4~dA1X48G}@L^PVxcOL?oV+uhDly2D z3gU!Xgl$$@H(bcYahZ^lfY@ZVp-2Spe(U}JJmqZ17Bq&-GVlKL>jvN-%MrS-d<}}3 z8gTITSoSx*8UfLij^>Bg<(gcWJ6p8H2h(T7WSSYeaymjntU6c1!b%)#0Oq2tvY1 zc}LtJl;#kT!5{m$kpymi@iHO|k;rf33sPWarPpW(JsIf;WlIp0J^qyi0KuM~{{Ad` zLs!%fo%pHl4t%r@pUYdMTl$*SCYLo$cZ@v6nE>x#a#}tCp|Rqu*idL$UfjZry8o$V zM1=aY*Y>o~7`N5^^U=dgo!-e3h%pj?kb7Nm|U0DfZDsdyG9!2si)R2 zk6!%=r%jPgs_}azgTS?{&2)Bk;Zg{$0ABY)RJ0fWrN?ePqk`wGw$A0z4hb>w<~~X( zpif%c!pvw4sd3m)=K@6NSBQ4@M;ytSn4;L;+1h?$LsS+Mm(HVNO=Xh;DC@9 zRR@geHXC{7o9KmlLkyT!C0>6d)6Qhc0o1glG}adpoM=jf^?F%Dl~k=infa#dG=)I> z;qHMO)ZW2fwvW|6I9a@@B=S{hpPJ?L&ad;u&GQJOqc=~N^|=e)zww2&wma`mE!@so zI6sfBCd778s=|${Fdr!uxE24tiJ{ z99J_}z3qI6(?B6;t{gp&nSANGy8h^v?#HSD6rQ>BsI7zBy$OH(55-~JNHIYSgjY$^|IzE`fyn3XQC5&T{82s#tR1)?J*0Y zcIxhX9o0FlYS$n{H2P|Bd-L8yeT+=?)yBq`PR1TRZbmaOH7oq{Bq&KxfVcT}mD8r% z^j$s*%37QviFJEwlXMw*>@n>zC|PN{`%@HVT@+WFwNN*)-SG9tr<=ppX*-cSrbpJZrUXRsOu?E0hF*YaofC<9=tVS1S?^is~u5R&`a+4wR&?YBS(sZgA>PHkQ^J^b>(jx zn=JG8?dQhOL?P!7^DALR6Ks{}>G)6Hb@nGe*Hi;@Qfy4ORkr+ZIWVps1nk?@aTnt~ zyfD?b9;z5f>2ipIt95m;ph%w$hvwCaPbHT0q5OMxTR*A(1TC2Fp`;GgEK?}X_gg*E%(6|F?^NH+eVXD)> zBWOG1LswT1XG<5J$gKoZ)n32!lsCgncUKpmm!VA`KQ0`9?%#CnlN`{JuF1v*qZXD; zdO3f6bKOVIvprq&r4g{LY1Q(IW1vpEM(ZGFYdqL1t~>^Wix~&%lN+iXcl`YP_Ou3W z#QXdSp3bhEE>GUf!5I0$puoo)>wsI$Lb8(w8;^I$0@RZ>!F*w_?5p0HUcEvsa+ ze|)?-VKOn_=+R_WzSdiOST6BlD7u+b;}?sDD-^2|roc0q@=KI4mV3=rwaw`Y z@|u#Dk(+Ar60?*AVJZfI!TE}8Vod@^JYg`s?YxO6b6m1D3RpHYpeCcxjI8IR&tl7r zE_AFXGPBpe)De87Awr8L1nW3y`rXF@={X%=NvU!jy9aA|x}Hj_#6F|e%BY%6pqTdH z!e+cM`Cc7^S}t#iwj+2?^ND(k$IMKv4SsWPNX8*QuSL34%>D4d&1a!*_uB8}ABWl+ zEl>@Nnkd#K7^9f1iiYJZzMqp)RvxYq@AGh(qnd3JG4JJNG+Ec;u{Ja`cH9~F+JGYr zB!X4c)Ly-Q9TXT?=ehqDC|`(KbxtO?4*QtK5);{VdG)g8b+9EmLK5o~G54=eHbQ%c!&!0b^-JRugUHKLjH6A90oj*0rH&HN^ zu8xK>hKz^==jY^oJ3X0*t7wZ?Y6!>$8##nhdngfC{zA|7k@0}6((>|Zom;bdgC6rw z_3P9YX*Xn97s^iB&(@q;s zYn?Z%4%sW~>-bdk3CeN8EZxj`J?rvbYdcd}&{M!O3UyyYwbYxW$IOvY%H>DMNcwUH z#h>G8R_n(->y$H9@}hD(n*#oc_DMcCp(myHHQBp7|m&+ zg?&H8zC2&op{3WiVv|dGWH3YTp0qy%e{N)Syu!&gjT&wQ*?}M;DFd0O$SzVB9=M-h zv~kK=C7$SbKwD&*jK(a+rLJAdw6(*io-J)395{z?F$i+^UW!yzZ6I@QSQbt-frRm|a zRS5N2{PbTNoKzu{f4RJV`YB2-j=RnQVCpsiDraW#Y>3XmxWC%&db)o{i+rNE&ax}b zz#o7A+>;Q>St$x^p=^n2FSKe6m)>5G?2609l^ms?s19SqU=Lt{A#XfLf6N}-yX znn0Nq9i3eo5Kv!#Ra0()iiboO&6yTPL^yo-@W$G@fAJ0`*;u}V?QP?+#e`x*gIHIp zs97Jt2i!l}X>k4F2_FCI}SiahPt=kv8q>y^IL*icc0}BSbY#UP` zR(ZnMydqv4fJ&~e1Vb;2R0hX~(jz6Lq%ystlOj>38z`mKU>OsO(IN@6FbyJ$6Y=;w z=MaSk>bACbP`9BVyCB=Aj!U@0p}X^0JjZQ>?CaCV(zD+QVAQZ~m{+Fdx3nCA3HH)s z`rY3)6^}HJenN7%d;Exbq2ALO$TgNd>%zKxQyMC0)OJfqiKL92n(|G8kFaf>l%1}k zPgAWQu@0{D_h{54{9AB{eeQ&$xLQ;{6K`|!ot#-u!8uBcYDcz&oe&tIjW)lSckz@e zv6?C?jz1YaBSV1(N1Y`7wX`ySui6PEzaJ~bT;27Y#ljYe!ibH_oH&pZFX~+{nCKOa zsKvvmVp{x(PDnZ6cnr+6^_|r+c9HKysy*^Gw(z1>WZ0C;iS3=$DyHV=}V`j+YtDSL?X}Ra|y-7#F!K693eV#!Hq6Q8x!8>T^;J{ zYm4y$NdC&oDtm%Z&jU2u_ABe<=U_0{S&S`vrBphT>+)#huxV?A#%Xg{Rq(c~l!(EF z!gL_q0ua0yn36?_XP}u!;hM+yT!@KyariiyHPx@k@o?^=1Z_j%S0g~mcF9@)P zBS_U575($)kOi4sg?{heZHF|2ow|*PL5gsSe~72gi_Dd z*;l@G`Ecio`D%7{XDh0_32j$8l&1IHEkfpjK3rY5&NdDPubOQ#NY99j%!_mPw3H3o z&Xr`OKPkzzb*|yKhkX&)0$yspa~td2fW$pKyIRI(&&%zEJivdb$>H#M&sa=YgoQKx zr(GjzsEPO#a%Q ztaP%pe4#~mp?i3Ey{+{C5vjt^uUla9;hhny)lz2`?dj;ZcV0N@Tj8;>cIcCe&OJpV zB30=yl*Rm*1EWr{&Wk4?Lz9P$>Nlv<{#-R34L&zB(y7?Mn>^ie`TZgkRM}JPZP@qE zX|z_7Lf`N$m>Vtji@V!SQMWh2S(R*wpq(74eCJn61ih!+5OUS%y~xA~4-8#mt&_xHG9D@syWznlIwlqO??XH*-RvFSVaRGo+VyPu472ES-$;0xuDrRd5^yvr-m@!SZ;O)k?xo8~vu zZFMd-R#rRm$^2bKwXRE^6V`J8J|d)~)NvKj?0WUitWRG*O{>y+u1E}n&)Jz&8HI0R~frau4)%5!ldy z=^>)DO})7xGPB=@S-?q-^3G}yXPpzOT!$p2teK7%*EB)A)=+A9XE#yoBI)ARGc7*9 zi}M?l+#iwyMnZJn4RBTl7ACh~!61$lj<^jJ>KhNQ%YNDC&u{bBiz`rub09+bpV_?%t zv||JFL1fWWo{RxG(l98gnbN+{u$0&7k+i2oOC4F*AM?h*xT2k!no>wUi<~Jyx&n6O zcm9e=lbNT1xlV(0g9v&-dM(?;@RzOnfN_KIt0RPMr^`pt?tcUo1}rkCQ}TWzDeap- zH-~XH^6=hWaMEi`JzuuDP}qAx@xOdkb28g22JMNTaji=)_g0x2(jIkQ{pNfAY>Nuf zN#T+rk5$yFeV_dI9mc;6*1Z{C*Oi!=Yizub5F_N!=y2`Ert`)$E>&p9l}ld|k2lZ@ zknivR(*SLz#;AI7w;A7VwO!82igKvu>gwv}*RMNTRoYF?h;wER4h~f-OI`~32;)Az zi;Jl70`cHD^UY0_mz-5+dpDGaePmo_WzN^)`*E|gvx_MyLv(&dhK4VjBrowOT?IGr z(F*_#8}!GT&x%_gyudi4sZQ{|b_@IdeQDBy5Wm!U3ON=PF}HPAhMakf$ZU*Gl$^qcv@c0asO?WiogJlckJ99O>iXVI27 zy*P+Er4G?Rs}L=65E&6+5D#>0Bh9tZHPG{{d~$>q(h_0>q0hYb z4|R1FN$sN+I+?HaVkBqOP$|veKB5DkpA&Da=HI0C<&vuI3b?+9$^;fJ044NTuO2ey zBDG?EKv%ooUQS)1c$@QJ|70EsqtqJbdC4^YVG54mkQe&P1*lr@;^$UvRiTkq6G=kP zfQGTA)8(!gbLca!IQg$+L8LrM%pGzuuIN;34@&Fm`QLG6$KPt!rn%W6x=7K0*=DLS zUD7bCpulsfTNS9?1-+7XXDhI!{%8QM)R$)PFs`2Gg28F_s^sy(T9rV%tBgH3D0sqp z619jz!O%qj8JDRZX;_*+?Shizva>4%DmJCmvb;QIghHZ_jfDjx4NX`=Lhmmr=x+Jx zB269;^*`FxJeB<@Jyxb_f#VL4Cpp9Y^EWFS<-jgdT0-65oZoT#-L>LT>yqu!(XmN? z9P~s(@#|==jQUz~Yze$Tr^4MTpW6yVM3l>eiyI7)i7v%%%`%ggmR6w>wvUXf<>vx; zv_x(L26{)34M6-2y~@eAu$-#=f+sfWy1W7g*oo1Y?uxC^%n^bGolxC|<6~S?)?>7G z`C1tw{|`&;b4v>_+IyH%(o#yU8M&EU?%UOyzM;K`r-$jQ-D4I^#Q|`5o>sp24w*d7 zj~_?&OW{TUNL%{&aWutfYg~4z&(6=6uChN#n021j=sgHu>Em+sE7o}KBrY#aAYccy z{FK&aB_UZSR{GC;f-)3%v55^M4tL&B&`r1`z^o>}k zzwZ2~m73Z(kQV}9r_2^=1QKuaaa+umctpzsoJHGZYJquw0VzOJ&6Qf^mj+15${r21 z`lI*L7_P-P<_{_d;4|3bsBZqU41*Pr{pB9Y?2zz}&% zuLgJl4je}?>2(9eV3o^jo*{p!m0Y$?H-7HhV2@DUP1c@_l2WNf)$UP5e0=%Gx!OaMfp0wJK#N?)+3_jM>(@W$e~8Lx zX{khfe=BQg?X zIdAVo#bp&W=FbMkE4SLVnbaG8kq(DZi! zUbIX51`^3DoNz>pUj*((yKG(Yq|;2Fc03Gji7VI3bq#ceQ*( zq3u;*h4e-fg!x7D#n+&jkFyvLQ#fM{V&! zCr25X_4R_6i*Esg+LUi`tG*JhH)#|F9Qs7bZ)xeaJ6yNP9g&=@;Jf3ErsA+X8{Oc% zIH6V)7m3`G0)?Dt)_87w^76R868@Hyz%<-wAVEY#l=bq`fLz3Fx%EHe`^fzI?xPK& zW^~%{O(mO78EP3}5&4Q$tHK=Be8<~nf!ljX-virU;B*$M48?u?HFWs!*y{&(qx>zZ754S78!Zxx*KS(fM59eKct5HE{$Z>5{Y)s}bhoyxtzCH%xm-L3 z=u?#0>YZM(v)innSoKENtvZJuaG9BzaT`B=QMLDoA zM4kwY@dv9@*V=3>@@(QLDfIBl?>`2%%1^p;t;b06U1;&M41`-D;l%8uxY z!lk9##oKRgZfa`yjH-}jm3VkKY*kZLDL&hSL%*JeKb63ztcC3`k6F%FHUMx0IdV~< z(>+NF^D$v~X(E~R=Ijk5~ zhAz~*>4ZfAr2b2hXGXRF+8XV(+%H=lG42l!3;Sqd=u+p9y^TvpN84@PENu7(a4v@W zYCX7v(HMWn>r&8jF$sal%*kN_QhUtz5|fFAz_kH`Ms0UZO>1jB)<1GW9}%kG@Ya(D z#22vEa3S6o|N1{!S<2w)!xDgrm6ersJOcbElarHE?DOZe^mLZS8lVH3JTTC8e&aCm z>=_vYBYkFeHfK|0Y>k_&qocU^{lhOqA%HorudQ*2_|^K|_iqgd4gBw3F)(0J=qDd? zbMq(i^#DSEQ}D%$^1XJ_Y%(t3wv*4!3{6a;8(6W}xGcu>lPMH}(epJCadF+AB7gv3 zzR~TFaIF!HnMj#PN7)`fQG9%K6d8#SsrMeZdgj>Zc*k42*$`S7m+|!{&`xA&3~(CD z1CjzD!O@%h^QT%n_F5wpGORy4{LbK{P7q-rP=DW_22~| zVMIZ%>;efpd{pG*U~{sjyeLUmWrNNF1OfrLUDEa?M39e<&jmfNs-$MDuA!+hH9aLI zB}Mt!A@Gu+F{dmA1q6J9q9ZV`ru3%Vg8B zvi7YXQhT_Izk8>WtK2p`9mf_~TkEcAo>x`n@^-0w1|?ZgSXlG)DF}VE*WJN9o8JV>IT)mMD76jseh2`e&ZupXI-cdDvfJUr3DDnK`Sl&FCO zz?P}_m^*><zRe0PyU*NwhBcZ@9_@cm7h#o|cENn(%OqvO-P^x2=#^GAXSblz9 zu92}}$!VCGxfvgy0MzsV^#jw0hzKV%C!Ch1TY||TEhZ~37?=J92t!FNvnXqAA4RYe z$p4CiJBzpda^FBsP7bj5$p*!5;#?q3pn6tpeh$NMbVa5Qet!aoaP0(NKLOXdxLTrpI&UygbnN)s;1F%h@xi zD=#H;+p9`nJ`$qm^z<8@VCFPXd*2wMj5T_?g7nj3dxZr^r__WIW(i7DQg#^V3vS_H zh6ZOuf*>LrW@e5WOnte!4YhmQj!s~obSf0+F)nVP-U`rVbc}Pv^7QoVWqpBqnN!x8 z$+9yY7aK3)e)jz>Kfj&3i&tY#~{$3GY3lBB5 zfP6sQx3aq0GoPRw0QBUQg!OeQ%;n|#Te0y0h}+xO$H~Dl8IU$#58HVkGb+gRn3w5B zQbs1d9VjTJ0s>mxU0j@}Uq}}-9pd0T&aek8F{t20-J`t6`1sj(cYG`Lv5!k+W#w|K z)(4W5_@>5G_4JZ)0FSS4;f{!iD6gn6A|Lrwia0qr0YdXT35XK%T|f+qqCrqFhi7`c ze?Ez_7(_^(pOM1^6Gdr)_s_SV(E`kiGA*;B!O$5)7=R}^d{f6dLaD(&mWV4e-hbEU zVg`yRU19@%-%%B32b_3Kq`7JawUC!rZFpqG!>aIT6YP-EchN;i3z?0l5O}1m(gVpm z#PnV&Qt|a3mr-DfXPH@f%#G|9FH6=T`-Ime2scmRL?=Lq93YTpoOa(aBr@b-$NRR9 z5qupjOfj)(k}(-6Y2|(=06qNA=mi(ZJ{TDrGsBHuF9UI^+iRDKs~W&W(6j0{(q&{k zX7(pXW^*msq|Q6@I-^0f_;4BXnrcZvaB%N#)?PpF(47)24UMUcjOUdvV9~LtXG|jc z2LBKk5g|q+K}vvvk!Zso2SgLF7GuJ)fic-}1r&S%r%|fUR)|*Cp}jxHSJqdhq@vt? zy{JU22XmBwE@BRK_XfOodsjQ%4}xG$8!>$3DV*#Tn-tYP&IASnkQyhzHy27ENEJFv zTbXczes}GTT3ndZ8o6S~%33&(eLkQDbdn?A1h|}?^pUe#?T81HLq&k{Pd6#a z(w{bS=Ub+>D<)WnPzhJy?$$;GqrAL)Vx4m)=E?p^7V7(7&QGMP>i&Bm5KK+Yl#AK_ z?CR-(YT5zekfRb1m%n`d+Hif~0z}0I)D+5fm9}fSG0*t;YG_-nOjT73M~M;Ef4P9? zt0W*QK+BlzY6E0|G$uK5aX;m!&TsQM6dz|C4HRfahAC;k4M4bxsH8l}lf*eJ{JESe zL&Ekz0>a13t5$roF_L}c9nLUqLnPC)u8@5H-aSRh(E>=|Fn>BoN_5*akSAqOLO~&v zGA2u}TYDo@M{DzY@XiW2@QSgD8FSU5%4R;}bf|YWq5qrwcez#G)tzrv-__1wbJfmr zpsrHDaqm7V7Au^tAb)LYyLM#uKl=cJBDR|A`}csups09=eK}Y)E8wAlGB+kn(15d= znsL>9r7YLpcP&Hb*5TcS^()XlT~VSzFh=Ea6ETrcMQsOQ$kf0aZ&1Gd)5f` zGcht&=FUz@d9zx%Gd<>L*VWyvk46)Qc1_0SF?poDJ?5ZZdqzMY>Tj;E|CXdgen~|G zqF8DA!E_R-Q4U1afVEQQG{BWU5m2(W=>q8{jDSGa&3rs>EKiP{`KzxV4vrEZBab>1 z8qx6!QAwxtMNl}oNPMT(X+s<3wLM%IpBqcszy$~)Qtmbo*p-$pa7q6sqxD&6tqN(T zRq*soNJtcL-lf>zAjEnS*{^u=ZUYfj$-RoV>>y7R78iE`WLTV%JfeP1$a$L%4^P(1 zn-3-m*+Fz7A`6E@bXm3>FU+Mr5?ZM)e`n%wXHzs|Z zBcr1``ssGB&q~w6pOXIsFq)9(p3gb#^OrAHmX=K6b@t~6buMUa^9gPqp6rox6gruP zTlWPR9MBSXflIC&i_>;VkSOA-=kD&#=CnBoen5S8hL*~WX<3qS#N7x^sot9!$?m`H zwPODre6kg6ScuZn(yoL(ncN?@&13NgX7$CpYz=(@Q|J-DKhuUxf0r+ZuJ@bBC$rf} zEaUFZ*NoH~^~megDtcMUKEC|gJvgXn{zfDX-27i;Ukq(gQsH?~71kgVVLwxHiixxC zIM5pu6lBP_lr{M2AcceDMV2k?b3hylkeR*uJh@$+o!^X;^l>`Sl2TFtxQ`r)2XeQ6 zPv50UQ4UU8E8B44UaSu&`Pw5YAMMMZtr);c!Y5%DuB^a#do<6t_}1H+ng!+6NJ3t*zQ6k^&A1lR2P;?dtDCwf;eG-lRYti zW3*3&5_^kQG9$r(yRLc_&vFC9E2*%?-sm&wkpJw;WKuWR)96cjB(;Ruu z3<%+gVg(+;5&*zw_*N)0h(_-28 zA@O^l3d1p6hml)qbBF4u@LE-@^Q*fzw<79KhYxUS$K6P!?*6zXl;y*PN|E~37mSuw z6$;j!(E_DRoF;#4ENQQejIy+}7__bv%sZABAM<1&WL!lV5KDo#E=;#j8>kIN`ky3v z^mHuw1!+;L+ZQ<&rmO4g0gT7nh~Dn*tM+xvPCzf94oPCx($9RLa|c4dn&5rw8;M8{ zjx2jbE%9e^$>=zVk`O&B~%0`#( zba00ly1_SYyD@Krs#9nGEl<#`v|PwkI^_1nH)EP?03`l7d!!)HtRtFdWh{`fVv~D& zv|OZaDRV@^OVHQhfwCHxeoOD?&sRi;S!MZ}PTNsoQDmrF(Rv3we@@F;m2&3sQ72>Z zix6Cvsjo5v&89zpk^-z1*PgrUY4;SN$`sPc-?&hqWN56^OJKgqO`{!*+?g$hMG&9r z6fZPt9^KyrI#Y34n$V?SbU7eVL@0rWGgRx=toW5^z^`B|tCWmh*E+RtRbT*AOvE>S!{`L!|z)eKY zd-ZY!DR}^RD7rhHOy1!aovx+I zY@$XZ4W)m^w49@Xt|034r?z@?*~NS<v$d@Qc5oJq3G$+5Dml%=pts>ivtLxJ!lt4MU?_X0%s zCq1WcGZ+{uHMY|6Y6TQKFOv9lH8rE083E94O}b(BC_6M0`Un^A*-Os^l&O{zirIX; zM1w{A%y!=1Is*ImgFG_;;sM6h6AHYEk0@cH2r}@;M$sys48MmRojEZRMLYu$$^j41 z5i~AUj}CmROk-b@>lF_8C5%=NdI*4R(#VqP<9bHphr6fkY;-Vf3VP%MS?y+|D+2Au za-g>tZ6ixGEqr&9-8@Xqw#?1924&!-7r2z^83k{1`%13`a8H_-av|Xqm^z;B<)~3W z?p(K5%vyV2+!x^%#qIp`Y52KsGIg|ja9j4>f1!X6?aRB5Fkm1+jxn%?XGTz*k1x_Y z-kC=V8iQRPtuqs6Qc1;%Yt zS=<1n@qRbd|5Wi!JE%XO=zQZ4RiE?C7H3pC|H$1ox*=LoVc{j)+F|fTa?4w$p!Ajw ze4D9Bd5Hm^qQX##u7U1<)VNQ!W6MZ5x%hI`8vIl$3(Q$)XhdoL`NQ30z5ym@Mc@m* zSQ-yMe&QLo%QRGxHCL2V_EB%~_sIRoPDe#Ok$>!llACPx+6Y4%=*>xnx)loQ_P#fc0{)FEf)e%1gcYwxOlh@-uyS$^dnLPPKW9`v5smHNpu2n=Bsb%{nF@HY8D7OefA^-4 ztIDsa9kxVaGSH$#1JIvqZI{ngu9$AzA-8vEyiw!oj%k;TjSo+7+}d=@vYmEv!-6!O z+DukBen7$p1}Yp1l$O`jxSeT4sRJkK7HVkd+v1z-M~-}13auz(TK4sT@tw$uxoSt_ z{oehVaW)70+D02eJ!>h+8!>BJ&Y#98nSu z;0KwiQPonSFyZXIH3?!YbAznjea9w3iuaB$o;83uNv?s^vZjma?=kDr*LCA5@+zvFGUJ*+hIQ7S9`@?%;DRbK3YibK%eoL{IOi9X9qXSzp1HAsX%N4 zVS3-?W0f&6FjQh$(k3t7&o&k3S-QU9)mSdOt>l4qj&)n`)Rz7^6Ll=Nw{K~#o3g&( zj<4K%HTI-q)V$Rpv)Tx8K}nu5H9290^+o~^WNLBa`?N}vXc^ZmaLGmFG{ueA+Y#HJ zls-o#MTw_Arq_sUYyd>bKsYJ1h>FqD+}b23UYPw^-|f#+44=r(&Mea8z3v_Isw&pz zt+l~!Q`U$jE%kLs5IH^vQ_KvVpFKa9o@R5Jg;8gdS6Zp z=zH>w<#8JJ8nRmHWNSJBO2Pq<{C1n4MZkWkrFJKXA;2*}Iv-h@KVRlW!u(DGHas|L zJh6!)H8e6VGvage4JapW@;*G6_8pOxDoPNryFfJp`RyCe9&AOvlthOKm}vm?&41Wp zCLQ0q1>Zh+8@|UtP+unv+ps_%s%+H-L}}vf#1$Nrn~I#a#!hiCyI-(*-8*-yFsU9- zMk5eUs5ToVijDF4a0$(fcKl>?M-yCMwH%sGXHTel6cB(`W^gCxP202}Lh+|2>z#Sz zL<_$m+2@Isz8;fAkCTbf@sBto`C)`6c^0M+$X6%@wAk)ZUIslPH*2;i4rxBHYA@IO z0?6!`*YjJbM>g<`!H(8BR(1tm3Mq(cA^N*gqXIR0wwjrqFRZLEuM)3M)1}^Rb#`q` z24J{V$GBpOhh0$5D0RNDdb1J-Go&X?5vWQ_GZUJykFz8!O37%&+#!msOWe!IBtk^C z*<^xpXL6>Fuvos_y;^AUn#z?BIf2yI>&^^`Vy_ab8H0U>oVik*_bIG@;{c3 z1Mv}%bjf(3+5U0?j^Ih1Ku^!xwcWz}k2Io3t?TPqna`ok9Uum4@vN4OL%mDkbV(UC z`6T7%VpNh09i;`jo%6Bl#6$MIV^v60c1@S=~0m5D$$?@0n-eFFwC81Z-5_R})6 zoQzgsr)9Y~T5=tU(UDn5zfI>@3%BEDR3@d4}dFHm2h_gPbPCsyq#I#I>Ns9IraKGM`y=> z1mFaYTe1p1|54vXC&yZ#U96K4UHVE1f7UuAUN{-=OY0J#;YxL7GBDE#ew(me(7T*? z=_+jNoLjY5+_$}to<_#u07Q~9jdY(Ta_i@+^sGxmKVE?Q#o5r;*hi0Wa8PMGGmS|& z+jIo@JJYnAF9l!oUL}tpi;QoF&^jr%*v#n3lJLT#YP9B9|Hqr|U=`TqW?PTRe5UGr zt^Mve(GtU}p)g?lg;JMSm6YE{Ff^v3o0 zt8X1o(WH8@l&IE*)xU((n{Vm=&v!taO4!_OQ<}_3%_Sls*I5a3;3zAb(jbDj0>euU zcB`L}qoabbB2(e47OE9{hqAW1%*TQHl?e%!`we>z=jTKomiiE&SZ39zGH9#MCEZBI z6qfD==Bp;N&xj@(7M^JEozr<#BF1S12Gqk=fVr5rVo(8LHnpqH%uFK?Ae4PL)CHsn z@O}ODwp-c*9JnKCprJXv8hp@KRZ%emBk$Sx0*n9&&7mWQJ_fi9 zD@CbXr769PCcM101Q@xcogR|jXhM;*G8PD`h4xR$d)5VjtVM;d1n>VXQ!xHaG~&oD z8`96aRjYj7nT?l{wak0t=cx6YUh%`^yTj4zihi7Mr zeeS#q%$ov_ zQ~&H`53_2Lum^1Oi1gE&=HI8q!0==Z0wz86vf>JNrVdGFD$sk~r)^W5*}yk_K;|nfz=Yg^j)39^m~Yc~QGAoBU6?c_Wg_q*ic@OdZ|5JUkyh*O0}Xk> zed-0*UDHT219Nlt^KMma>`Q`Hf7nnZ&@Hf&`{(Ds&5QMGUUuZe-6B8arojdX*EfOHJQ&`5Vk zH%Lkg(k)2G(9M9fbazNMLkwN##^-r{|8>q<=f!z(=7npy)@Ek!edl#w-|y$@ynB9B zs9f%R)~#Y=*h6pL>@5~Lp_tbeZP=ZB08j+X>7s81W5bL0{G`<|x8_{7J8_)X6>4P+ zL`B0nKzQ;2@}cxcIJra~zk` zhW}IdzrwplkLMtP+Xx@1&~Q1UWlYvAe#sCEoB3UBG2={Oaf9HHfX~*u@mjBaD^3?h zL%YW{mS1gqDv@~yXaN_Z)EQ&IDQ6{3dTy=+o)V5^9_b+v7^Yb_id|2#Cn~|uu73d! zC-X897SX#2G3wAe0+YV&>0%T+X(y9|Jo$fAJc6iXQ!0#yoZnp|%3RO3xJSy&WM3HuV; zQff@B4l&&Y(m<_|wjU|%8QmQtd?om9?ZvDZ7@(b<1-AMTT1=Gvu*nJq!q0!7AOG+3 z&nwjS&hQqtZXWFK13x}|eqmvKUEb9^spc>O>xDliek0~@y#C6{P5$E*1~tY+!Lfnj zvqHD?O0!AFtqyHfJD|rDe-vO}pr+siWy2K_kG;ug_U)()$2y?> zGcqy)CLiRL3ze@JAgsU&=lE)R^Gewt1AWwOhQu+u##G5@A}gh z(R=Pc zUw?SFKHcJ-EOqdJC-eJZ;@KWepF*-^gEq7f&Khk>8nyPBbR6~<3*zs$?@?Oj_WL)!!1uw27ODxvs&-(o8;!&QZT94)fplYgFIPn zAXkg+r*PRZpu4!RP-!ud4bKwWCL>Fyl!_3{@;Fv`?sIHNi64QtZ0Gmeg2$FOWV4+y|qmf zyNlX=HX|oGx2whHAv*7sj6nEAk{95Fe2fT>Uctfq9mj9!?(G*+S6|0rIo-IpS8-h* z)c)O|eQcbU3vec`8WC=|y(t+n_2-9KN1-E0)M2}>D7mt^F}PNWfRoo_z|2rP7?T*- z^GAD-!si~06*!>VE{~xvKKzIm)96T0v}(Ld9hJ42 zP@>8{)$+3i%f)oIP6VJTet18~c3qr=cDikh!21f*_!bsU56rk7R2VNMEL0l`VJQMA z>uW@P8Zp)jENcIaku0SDQ>5ig)h{Ijef?q^%k_CKi&>*n1c{h2XDMtuWfzKKNPI3xN!^g{E|1&st~0 z;bQ(vhsr18J!glT3ePBO=B$Qe_ds5DeSMuw?1||>-Gpxt&@$XL&sCkPbr5|0_Md$4 z$-%|&t)Q-D0rxX?RK(TqGdNBcAVB4wtbojMI#QbgO}WC}9t0Pu@R&Cb5CV+~5LlL_ ztz!1_Qpd%op7_dFKxi1CD+Wc}sp-m#NP$1fPzYde}OL2nP=j zS8adoZ8)lot>W2B{7!5cKMLYc<`Y%gTRs6cD@>^={olTYH~W!OT++q-P$pkYG5#aT z*97dnfM7+yVPSnSE)ND4ng10IE5FB4_jai1_skv+i&=^FsI2z%obQx@qmvU8L;IlF zx4KeOUkA}fpPi+otl<)pOTD9xO2^31?~JqCJWq2qXxY_PT${S&_E}}qMHV4zZ|NEGupbp+z4$)<;)jNu(A>L*V9>yV*S{)D z%6?}2`0>SYwXIEb>$aS;i0_|o&qQN4f4}{^1@)-YdV6QHXA=fMaO|wC$cftHeW(Y& z>mSWu6Nc-xN<)5!B6DC>z>PS0TC5>VgSv;ivv2Y@hKnz+!!g%%E?&| zPj4qA+=`0Cc0f+Retvd!^{S|d_N}fqN*vhJ^)D?g@xvsE3J?Ds%1Z{)$B`JmzW%H@ z!Xf45_&2PeRCea2XVkc%?a0{`7C_q|56}jt`_OZ!UKa|y4KQd zd)Z?X5kbOx?|OR~o$k)3>(ePQ8L{Jc{(Ad}%(o?|ea7@J4ZSj8Yl9>M}JSL{W`jYazirEG|2<*b- zTx3(Sf}-iu@j|2CVn86HTz{cvLH)q3!IVd20hBU=NdxR?AtPMCOj z;-xbeS}3t=J&qYE+!m>%cP8?V%kWqW@+OO#Tig*Kz=3NVjDgSw4TThAGUei(srvk# z*4UWF9+uuQSLt_tCnxt!tHPFf#8SC3o~AA< zET;%~Fl@IcZ#Iiy5r=Cw7+iCKl|@B47Oqj6+hTY>VwK4i1Xl)qi8~5;E5M$#{=qC) z71vmp$YQn(VHzWofKF9h<1klGnq;W253I1Ga4onjQZodfozLd1rJN2|lJ^PLbDFvw z`<9{~qoYdyZ1Yl9VOMH}(0R9a$XP@NlMg_#oM02XFZBz70Zz;hLIrhUFumH>0WEB(?WMo1S4+^KMR791I zfQvmRCr7s}#E_NcjAIjMo7&U;Ej1e|%F8z=YGuP02S$d{%{44%T=y<~z0-B~vI-zq zB6E6$n$=QoV$yZ(9uH?L$cqOc1gE&U)PZ;%a|O@EVk)pw7oA|hBaW>I+e2>X=D@o=rgD3h2Wx1C)U=0K)aU z?BiW|=`Zizh4dwJn;Yqs8D0x@RtbA~SDH`I&nh=wY>rlAg?+0R0Q7|SA*ER|m!=0^ zUg)cR@}I`?or1{PWk<7BHbXbJflx1CloHrv6IcRdJkIhb>d#Oifr0ouj-P1!HRex8 z8alyTrdnYk21HdcS0sWUTCLIcKD&ulo%W8BHNzaXXPY0ko7e#yq8B1Ld1}T*t#Ugx z9w$!;h+z>*VEY08`O|i{KirVwu<`3mH1)}<>%qancSwX-7@@W=iRFrm=m7y!Zvv~NjFLUz^E9Eg&OSTRsC7OB^K6Z`_hl7x`akn;YL-n~mno^jZkl-6o=wnIvo`#m9=tudd<#Mp$4 zmjN(_Q>h`p%MmIwZwk1MD$FL=)(=qYFH!;)+h(om)3dY7%=Sntc?;DGKWGv+fU}h^ z&0;WsuKOOH%%Qt-!kq3}S5MPdbKJl9rS?2H=ezM(S*?4$Z{MAC_iVmYOUu3H1Xd3r zKvYoWFyE4^Kbt%x!0k>Ti!X>|B&ypwHf)UlYBmLMr!a&vR#bfDy@A6(!U$vBSCj}W@&FCj0!b8Pd_($VZ4?6)9=v#y`~?f`~*ikO+Z z_3WsWTb;M>w}zffMg^f>J|z;6kd$O)WYnw^y3ZR!_u&T>mQ>%)0zho){v;E-Oyl&;kBShaZn3AX zSn#X{0t%U<4|Au@U5PB~1G*%S8-VXhQW74^6i}!jgA>pIUGPb06C$t9;FQWpC|p^U^#8 z`;UsH|`Zz%}thw!0i)y zkgYD0#8vFN9s!~;=H0mx-POWF0uE-uws<>&3iG*ttZN9IPBlmwV zovNyFS}q)%lC=kCd|NA=A_|NHE_Hq6AIIH}0kJT*rKP3p9$?PZ*Vhk`mMYY$Rn@Z@ zbJ@X#t4qqr*f%gGws4a1Ym{xwYH*%WogF4{aGDM*Ao*Q#JYZu}%fx-(el%6j@;VrC zf{}lwg3x2G2O7!RY#}gNy=!a-M@*VE_KOu$^@F04#gN@jx{jgSU&jdW2>Rk#D*?7) zo5%KNFnz)JJ0OrLudtYP1Q-Z7f*YN-fYWl;eZUr})iQJW>j1Zk=IKp4{qaBdx+U56 zuFW_#IXBqp z+*jBzaZUq5DeWwUOf(Umi3Y>UiqPIYNEVe;{KD~kb9EC|fnkLR4c2-Rnpy#hyqN%9#B z`;n^DWG!2T!hooJUQ$Jbw?e;PW8^ALcjfcmh`cT*g85p4jHH-Ps-HMWK5=4NOENZ12vgTDZ`a4}4mROX6KBaJ-B9p$n)GDo?3y%oq^)V`?$w&t9n51~KD2uX{CfR6)7gJ>J`Dx?cj;-M zG*H};u&&E4qZcj=nVqg(vbhQuymDzDo97(v zG7(DYB|J-l-CVe?p&@2)_OFuDbMF1=?dZffS9b%1(JbBbuKUqtC@sn-6-Er@;jB@T z;!Rv+w>}L*u-5&*TvOLI{C(8j?@=V5#5*OI43~m5d59cBd2lm~(o^N2@~+A+%fl73 z`!NFkUU>5l4$OTiGA5kq4bvNE@%1PRP7PW)X9@xOpvk3-Rp$R)HU~Yutz;nQ=acA@ z7D7q@6G;k^@?fI>nguJ1p43A#1n$>=KQ~vt6bwjNO8Pk>qZX-*lkzlZR3YK|;>pf` zm+T%u*WRqjuaZU)MuL`&sfyk(W+?wh?00hwqVlnHZSo}zuaR)-grW_e@Wi+&bJ}y| zK#oAw?J}DBwDMuUzbU_)i%(|Be=bMT4Kh;EQcX~a|B?`DfPYaUFz+#lubDYyi#Im# z)xU3v(Yf38>8jRoaFD}(Btu_s5CXY(=l0#*r!+T*n0_PbmL4wLFyo6R!v6ne8MTLrD8*J={EQ8k` zn}vb#HFoUh!6+1fpjBkH80gCl^oxssH9)k$%>LEM%1y&uf8`r_itH;KMAUy@K(-m) z)6+vUAa^DgB|ML`68y3ecTJ7yKa_FY2ox?rjygHc%V9dS2hc|OQr*y}??cqewgt`1 zlKiBRvvu#8{6mvA{-{d|$>#_k3(Wr#0=!X0Zk?uJ!&zczejdgv0U1rr9~SAEKquBFn>FS36VoSs_CfcdJl_VWGb3vzb}g~tbm{Ue;Vxllup z@&%kE6d*#hMURdU3)Wb!DyQ4PZw~@Q2~v|}wlsvrS0t~pO;l_H4@ZG~L3$#7@5HUG zOI}VuIE4#@ zOxn@dvVj7RfcA)Y6#h|MW{{HwkNq=cIWsfdS`T^jCY>t4nU#gP!R^qi9wNPWM#(U> zJzEnkfQ7u)-diQYF(%%n2YYXe8d-Bw49pg=?tFV!Q6$|1AX{1f-Vs!#Q<0rrn zDP_FAHXtcYq@j;90^a*Y6an=dc>;{7_xEqc+5Z)bxQMyfx)p?|gsAG7naq|!T{zz6 znz1i{JYZd28s|rR{5S(c{WF0>gU4hH=yU{+i?X*C=Vc@T;j_};1vI_2!W|LCElOB# z3J?i?uDAa&*7)32;Cie0u1xs`Elr*k7a@=moQ%Js&>s=-76b3C|9Xbt(WBo$1`WC| zpWDUS+APtN3xO*2o$TMGa|q|>gnwk2fbwW8ld?duU_@M3vxO-vBRx*1psw4X}_bQ!@2^4{G}}a z{2Kj5p`RqA1>~C|TSyP9Z1tP%^2#J!O#ePPA}9s_6SzfQZW`^)_>2+4MCXLyY#(+J zAAhugu{WI$E!26)$mlpt_RZk_7RkpmOE}o55UDf)U+&srmxFzkYAVev?IC}QN)t{a ztQR=ipY$TWC%Ktj%dn!;W!gPZHCHb)qgp;BATZe#(3A96qZhA6!}Dxq2rN6%}7ifPBE27zGkIFmhYZ z3HhCl0LXa9!D3L1T2L@W2Y#!;VOY@Zg0$)V+9Iw-EELDG?ZO0`;%62m4)zkO+~dGf zUs%p~rJH(9$$Sk|HKU&W@AJ>K%3>7F)*qRVWsF6XPuW-lih>357a2U6S0%?phIpF6 zy%FTeu6sj-MP&=8vhgTXfDV#mwmzwS6_U(u&`D_WjDW~)^=#Q%b~-~dU1_^^|FjxA z8W=sxkg7#y&Aq`WTl;AxGh4k%gm*%j8Bm?cl1wB-KC{#_K{)nsV8%c$3PrOMfut-R zr!5?)lrr><z z!Wb(Uq}?v~yC9!1-ZgG2 zHXV8s_!LBy7C?jIp&|ddLD0Ae-5! zUr1VDx-tZ+LH34G2{bUVHPDONMbG3v`JV+QO*;FtgaYAReFdcvdUx^9>z%%vO2$zq zqkr27`xs|V+~bIRC)nztxGDvlhLM~3$H$O&uc@*PS*6MJQ&=tJ021)-4;SLQ!MO4OHP#q%Ac@h z)tw@#B~D!0IXLP;h)=?7VymFQa?os5J+dQ1kOObt?MYHGq78mJP0 z%SBPRb`*ubpp-7ItTY`h6R+lfMSv&oT>g0|nz;T9=)`*B*wd$_YixJ2v$CdYEw348 zoFya=&@f&#UifuONrO01gb9}+KBcQ~d%C{36_&@ItgG6ig6+EhIovzr&=fj5&ElW8= zAU`K16+CuPuArjAEg+x?UIi0V%Jw`QN=LZ04OR|dXagBUnr9CwWnPWdKqXCt)fhBO zwtA*2MeKRpHkO8mhe7_Jm)EGVb2 zFdAS5whw$5HTIG$lp72dR|udgIB$Ib(hGb}3&*RA){>{^bR4IF zoZ0HAFWmM^shODu5+)lbkG>oB#DdiBM7<#iPti@<(=e8k}iZSOV{K7VYj1=(gcrOSyNQH!bds!Zpl|ReU*4Q8YT8Z1Zs8@S)SA z<7GO={V+$ZzkL|-@J8q$OG-y4DgONn;wopza2?%aPM|)=dNNX6MrOp#H93*rVYadH z6F8=j(w56eOM4$DudZHaRP;OY_lu-lUWHJr4OE=Th?zl8Vqs>csJ76jPtTT_sxPLK z`8&g++1S|x(C!s2f9sd4fBZpm#UQh|xY+EpXUYL+k3{f+xfhhd`8p<7Wp&j=LEHZs z9}i!%&Nl9p15jT_1_v)(#*)Y2bGAFf#X^@i^_D>OnT%oNRyBI$F>o+##mXzDT74^I z)iCFIs|t85+3#M1)-Y94TB)lpr4hvwbkC2E-x$=V+nI5wtSn9E%iFq}DxIAIgU=N) z0eAyF13kj+1y2qsE2mp4fg&SM1W*9*Ih{$VhzF!)h!GQmQvh?-%AZh7%%i=%N0C?5 z)YK-~c@QJJ&5FGETw1p~aS@EX5J!(}kbyk+_BZTJq`Qi{XgkhuJFmbl9H=OR1onZ1 zwERwv+xmHv;vdrM#N)qmv_CBat%W8 zK|+%dQw%E73eswenG90%p1AhSHFlf*gP`h;oA@swU@3n0x~MFFuol+W6$4K^KW_Y9 zUwa)Ly<%)?3OVigaha22yhtgP_J^K{Da`!c{m1w%oIlul1_p%c3_t>Wc;z}__h4cGS($?B4uYFO)jNQ|n%*(_^F9l!_$>=MO47t+i4UW3koBc754&6?Vcj|p%!F?6K znL4tbd@KtH4dqD6Ibn8jbR^=ouM3v$nD;&hDah~9(GvcFwkIhUG0WHz|m}QDs}GR zp$#VHk2pOxjBrORyMZ740VSHObUWU;Tq&3mY0i&@J8N|u6(rCIyr>Tj4M<`xO$@pi zn#H{tOP)+#K)C5n%Q5|9E8zL;RO=7RCJ=vY@U+*@N1CPs4KqWN)^;t zieb`1yYJsGE^j6e{H){ST&jSEVP9K>LC3&w89gq!KkuzIk?;+q*{Wvh4Iv}WASVJ8 zo7Ik|ERb2yY~y`68t;xuKZqS(T|S_r>%t_Ogi!D*g+4$3S)5Xj#l$=1c}dSq;YQg2 zgn9=DS~X@OU}4XLmi{n{VeIW~a46kwSa5seFuhZ9P+N-iJtB6WabMQuzo`z?$UBLe z_1MjWRrY?JZ*FRC2HFxJ8lx8bC@GnzI#L5xOlYq1t|K1@ljGqTMmg&E`h@xQr@@xJ z$w}2nq3#sU)nDHJQx(YR2FuE`hAg;%-5EUt5m1GZaXD|@Q(Ip@ta7Pj1f;!^66+)T ziZt6l2dc76XEfG64#=6!;bONLp7Im{z~V9tJ0=nM3fIS`n^pbqETFxEoRYG{yF(f5 zCLSCkA3b>z&+bBe(6i9Ow#MDZ3i(k%Mdn?Uy1Kdp2n1*=Tt-b=_cML1C9QvVRgt$rF~SS-wC9XE>|RlM zO2}zMx!7@Gu+?kX$!?XVgrCv$8pS5dB|!2EVvC^t`zEKyq2@rslWq+td>aRw0HHaA z-f%GV^!~jm^wn`jQd*w)8l3uRk3XLZRM};S1p!O$p;Gunj)3cKt@|P+g@9tFx_4;7 zv~*i2v55Tpaube9OU?8cP=x3b?TG>6SH6l3r-gE*wXap~VMj*?uZ06EE09GB4phn_ zf4`t|4gC6y1MA_Ms&pKOZugozsQDH-@MLW+j21*C9F`Lt?$faa37iUf{$YIC{^vVS z4SHfLEW>sKeSLlBK>qYZCS6x&%~gbHl|i}816gPa^Eoz7=5h*5>Z>*TXP2e*W#Ltg zQe;TrDlbYqPYcdi|GCWMH_Lpj`o%x58Pw?7R-26h%T>Mek#g0$SeMMKtn2zbpTxDP zxfpm=hv4ep4caa0yEj?H+n$2K#ZkK1Daf!XAN(xxR%RSZh8DX0Ms~2_+hf{Diw0c~ zD0$QH1K%hrMoy?@(|#1zNJ@!;)g6?C$w7n{ZOHeMsPjx-HvH6A=c#!eIaFLpUBX2e znwI9ZRx^;n<@m|+!-pjxTRURY2tU7f2H!3&9wHqgDe8RFnMzfL>Kx~qda+x&CJQ+pWduPDeAvBratt9nzgCWu#jIFIjvg?Lg zotXNs3n{-XU9}=3vALg60a0#F5z;-p!QwmC++S(F=K^AZm*%gKGX|3VQ9oerdr&2S z##{m$LJJl7TdlA5XKq7zaJdUFxf9alvw;l9KUYPPF*2qwcp8++)eWv*PpPVQLEGBi z&Z_m%wdRp7|9>~<`hdOaDJZW`@a53(tS$V5{x?7=rNX?HJ!{)+o3{d#n+g9%7kby*$G*P+ zr4@X#-vZ_Qty?P%NfEAOU*7FX4$`3^|61Z3Isg2hGvKIK|8J!~DUHpRJAeWocIS&{ zR}?jMhhZwVt=osN#uxsQFb?%f;1sL;8z}v${l-S(9DUVyP8akFSeJJfW?2Lkbfl`{ zE8h4wYo}tPpecn4d(QvQ82o-Rh=1m^oFzyv0V3CG9f4U$aC7I49t11@|9CO}@jKl7 z#{b=1@&CPmDLLLP&p_r1>;HmAcOLNFa&G|I;lG1KxaSRC?VnGo!gl@f9i#IjF6Vv(CF?Hb+WE2a7evOWwWy_)&(WMz2BZBili9@a9Oj zGVF5Pj_H5lti&<;O5^?^I>vu?G?H*bZc#m7ZeTq z_g!iY<>lDj7ISDtCm%#V8IqGvRoo0b@0w8SRgPOr)Dm?R#_U~;lJEn^SwS4gR71fX6BM> z>6tfF*kvABQZRM7kPv31QR5OPaasLJhUB#yWm8LtOBm(Rjo?+)8L)$6L$5?zMnTKD zR{w<1nF_d$;{sg1Fl>$^PoIp2X0KDQu5YUW{ob98Z(Z~16MO-^6uka|+C9boeV70E zAHmx>snp_r5FHXn%s?Y)0&TZ9>&yHh|Hy@juYW*}r`CdSHQ(R_y1tHbFAjYkKvb`}b5Mpx#SJV1>rrJ>@T1bcXi-b zEO`P_OJ84Q`P)yh@*G2|H@}D~QD0ZPJPW9H_ymiq41?m2Q`}RbB=6HQ3vqXrx2uki)idMzF=-q=CtMc2d4U01jz|0ML?61kx2E$65o-fJ;h%q-z2RpSQ&P=6 zDV8TZTJvp)@Y>30Xrm{b*lSCN1?1pu(L(q!R1y2vE%pfv9F{N>(dg_tXNA7Z@?2|f z!Xt{9bEn{`(&IN~Z>U*jCnir0GCJlO0`r>#)XB_D% zXqc;X-EtoVe@&0gF^Q>8BeCb8PT>@i8ErG)m;ysMz>9noOhEShFQ2GZjg2woE3psB z&kzJDxjhNW$jB(>fN=ee3@%e_5v+#Z&&V|7cia)X?;;Q5N80XTtuQT;%+iFpJ2S4)mmk^a~&$ zd%t2@z;ElF5+j&niQXA&;erT{idGdYsDwZlOE=r<1!|=V-x5#S%->%AU~m>6v(rFb zQhgkL-=fxlGQ(hc&%OPjn4*4=(#(;w@UQ+}CvVlUQr;3B@H`OXrB3iLU1%RTl26&D=i1X;D{b-%ECX zdy{wk1SWa)z|i>L-KXjx{=9rIKBC^L`k7_L*h}3)DD)nTC#9LL15;7zV4z!a0a{1G zar%3Cm8f=yy-N3TfIohV%WZ6;&8I27;&2=No)<&A25YHJPR}CjOC;X!UGn2=mpkMofa}H%L5o|X~|jKml1ia4=QK)(wPqJCoWqjcx8cf@wr5j(L}uy z#+mkGBy(cvvYE`z^^2Oa?k&wydnuCf$&X@}NY-P2+gziBev!7#8=QQ;d7_QSy|JZz=rwx#h-`QiPubeJ{Ep!hWc z7wb>VpVoSe!-LB->EHswe`jA$^P=;yk=j{e*uVFPZdczcHAOQ%k^sO5=D;YU0_9vRrz^+G7>IlsMx%x;|%yRLXjJ}Jk!^CP~ zEy`<2dzdytqMHE*(of4>1N71qlSl$%thdWNtV@uCJOFEiquv)&e} zYYMI4O64B%27Z;Mbs2|!uD;-VT=#$eigpb?D{u$ z2JA8WV$QqusGG~kI->vAssFjmJ^zV6tZ}GMZ!x!w3ZFZ?$;;7M#570RBLB&Mh|^oU z8c~7|l-&LF>{HXcny*P}#0H?@G{ry>aoX4S=YQT?K`o#|5I-1*M zvH@B)16rnl7~AG|DKa8zg}qSQ+_bQ7+3M9T=8{1LXmFVbQ$es@eD!!X?bS8f z)TrI|I9i}Ji``a_G>WZ-GYdM%M^j-2CVv5g)=hRr?1b9!*!62upY%dM7U&?YymUa% zzc2BM0P$&*cAhI=?M%IzFIkC0O!TDt*R*mRQ~YtRM=j6e5*Ck?dYG|kAgFe*=*&@I zl8K9#Ku*^TiHuRP*%kd@hIO~`t($5sn^nn@xCEw_v!^B_;e@!1U(7eaoN)@7S>0(k zc_tb~M8IpoWt}IoZ9;_4E!skE%xn`2_MXpfiGL7M%%!2s(90ipD6gn@nj0-&)^nPY zt#-4R=x1i*`SFo|J1to^swmqBOfbTvFDeqPGO+D>i;gxr_XqZ9k`lNy?2qfW4>KKE z|LsHwAFmQ%rF-*$42HN_po1UD%8Ki`dom^4Ct>Bmi7iF6I@(c23LuG8#5Pz_$(C4i zrRQwGQNK0bF;Jb$d|w&NC&y;;5D5v=HOO@CfO^* zHJRDdXN2rO9BgW7(NJw#E+-LKkI`r;h%llWjzCTD60#@?3Ubngh$9WhcgrfmlN{L= z;wg;m`cAn|ABI7dzNsNrCCqek%X4-j-5GMEp^zD(ETqiZkos@}0;pZasDNDWIXp{t zvMs$*(C33ZFtE*kdclvOe_w@PI!Yx$X453sN0j2Dgq5V(ODw#;e>%cDUwLO7oc%8; z3C)dT5ewo#Jp_xswW;PKMg{hn`Ek<_A*Hk5wSSsnd~|Bk?m}NqZo}AzBxSnvhUl6M z#QA7`yPKP))GRM<;#N4?t|l{>COfz=zWH_NinB}kTIcF3rY8IjjHIgA!20RqAK89N z6d49`h_^OY37_lZ3k9vaK8m?b?9hSDB(~y!Ou}eM`1h3%Rr_q0AbfUnDP1fDB6d^yw5PZs@(K*^3Exp?8~u)c)UM{ebv2PCN-Lk#l?QV*1E2p;1cbCkKh0Fp`Jf0T&luQ<|0vgRDa=r6Z9`6VgYC z9zbO8vNwAGB9GOj{bNnX{<7%uKrg~(?Z_p4fmZU)E{VQZ!z)*%Plw;=o7}(i3ngUE zr-hc!ZR`DI&i`Ia?WYe9uKSJ7#q%28YxH zrk3S_T`1TgM&jtv6fdkU({*h@UoDO5!y${wHK1&||qrKOeR zI-4opOX<6=wG`9E#A>vB4ATS@54pOcVw z#ogUY<*C_3(w`Dg2zlc^dVtB68H2NNYC+~}s-Eu=dJh`j`Yu}hBuA%e!oBdI>nsW! z#dc5msr;pD{?&SRAKobAYkCeA#yE}hK|$B%0X6fD3Hev^I;IuNElHcN)o)#SJ#MSn0I?Ns-!$Y~)GS*%yrM=y>V58s zAGY18e;YRPTT}njU-F?!eoPllD^HQnu%EYwp6Wa>ajM7s*(V;*6RQDuOH`!8`eA~ZAfBVLDa=h~AormfO!W0SkSqj(`G&CXs zBLL=?;>iE=OnWgiH#^5ttAUi1-iJmi-%mD{m}|4_$STwhhe5?KD3<-=<^E=5jp zN6L)Gsx8tDu8?zb*C~BX9kzh%7ilQ3CmM41QgCao_{+wF;8!5d;slk3mw%;GsVGm7 zx3uPF=K^MnrFykz6Io!HUq}ig9hGGJXaVw*MC6f$n(So}5yExFW@DFlGP*a&lA!XVhRw^@bK~O1YsGcxuzMI9Y5{QGReT@Mx{^3}u{PD0I0yf1-(x&peP!jIdcznnI4nO$lKhicy82$i3$@YEnv&LU==&Bfj?MjMBy|s zAw0>WLePK_{B2%bC1FhgAKKhjMyh=~fkh4pAUnrVeyrhGWIYG%662{1su55u7BXvlyb=XP&tytqrTNob%UJ(F;^V^?r_)VB4F$Zmx-LdT z)ejgBPEz398vO7F4#s)>YNKmw>r+tpuTelL3kV4P$ri}MvUiv3vlT8o!f83t7YZff zzqA!&;c__POeh2anwz)PMs)~8c4)ghY`-L1XB%~qs3-+O1B;=B54 z=TDs{8`U7F(Slv*uIzGV~$F|4>ZO15m;E@lt^B?E8o2=I8f4kcREFYcx&=*49P%N z_K)urZiB>p$1i$v+a4ZZiweG#z>bmA zpOE6i{loh%*Oa_;L7muv6jT&IhxoN(-{rVwEcN-1AVb!Sj>Q9tjGx^M1z_|Kn+_*p zYAWm>kZhE=7|6RReyA$Ex-P8%(9V(kp>L0$B4-T5GX6P>xUhFO@uY|!5Lb$iiTbYg z$TZO9a&Kr2$KRGc5;9oIQYu)C)VjzT`6r$>|Mpbv2ZI<5_dL{4U* zU=B6a_aj*|W{Z*Mdokk1ab@Ux_$EwL&0W8H=mhTKD$-($6kED!x?k;5JZOQ*w=G@w z1#fL-eT0e&P%xCf+cMxeBkwP%4#H?v@X|Syn%_d|DiMwjDLe|hx)vssnMEO7uYCj4 z64w}qu@Wxdr|^aGVDk3c+TDs0-mx%TZIpP7g{Dj^G^@pS2XL%HpUd1+MvXy$9=1+^ zlUHpx*603%$Nm;0ru1ZFpxn-jLmKtS+wzR+K!s+4DI?KI8;McxaS%vLz+o;j*6>d5 z-5146N`}_E`C!^C_HBQPT-Gzh;SL61wThkbnaNQEAY6huQKi;aM%5(H=citwvR+$X z&-~t%VB~&pNY^BfGZ|HHa2VZuro3ou&N5KOaaas6vXTjlNY9)PT;khpl;(BrsQ83_ zCw)60307;T`}66#%gYV>w@d!n0ya$dA$-3<`51t5QshHx*4IJ0mu@o*4s;bNCVsn; zmZ~caZJyXpDs_JL{-}*gN(!3!LzZ`Slr-$=sXud4hoRW65+o*KB;E_f*lv6u)}eSk z?l=5`ILl}FgdG>Gm_ft2Q$-@Ry^0SXU3`=Teb=nMI?4*A^09vv zT}CAm$%;Iajvuq=U&Z-u|a=Ng_sWIxa3>Kj$He@MNQdg*ZUyC#nn;QtA2tuwsU?s=xgoQmjwR= z818&$StxvV(*SoxC^V=t4p_pV1OzMp7jtJB5M>vxYZNg+z#vpgMWjo*1*E$hq@}w{ zR6ts~yJP5v0cpvhks7*V=!Q89{l2|V{WxczKj-}gBQx{5-WAV!*8NB0N=ofvO>mS* z6Hjgf2Vl0L+Q%PiSq;_X7g-v-`IP zy`E*s0f3w2d@H(%*u?Wu`*ogy=^@wOHF-GZJRX>C3{T9J+b6R;7x$R(<;y^|r^lYF2Jqq@1PHso({uszr;%9CHnWXUE7?rp%=o04 z<0dDm_;*oPrIqFMaAAOGfr>432PbrQclXl2F3x>PP7b@odIU5%FjBG{D#{Giy<^}` ze$UZ7JbVH31xwhMgwx-#2jt(J)>jOSwwaC>$=KG&CsI<`$EY$T|iPE`Tq_vHFpcf}Go-WpR*V-O#&^OAB)3SBr%z z^Z{ijvnhO~bxNiAR?G7mOC9L$b)Q7QsBdtBk%6h_$=IkuQvHBiq3u|3&MHwq6A zCx**}BymfzREP@-etiKT<`GnRzI9PFAL!||YlW{0C<=Z9;uA3p>PI{>Uzt#?r1%Y% zqh6&Kl>-|FRa4o0v10U7PFtcx@&x&sCC(2HhHW^vad}HOucCw=qFgdM+gJ%+xi@`! z3Q%DOX~q-#GirFtRaSMJbL~Z*TO%qo<uO&o9MNL1MlD%yk91Wd__%|1z`+eN5Ruk}z#iwHt+nq;$4ybm?Gm5zl zy(IJm3n-tG%f`_Z#KF&Nk9$}zrqdKwg^xC5ZI=)yx?L@31l8t? zVh88PTl0=cerxO9L&^v`t@^OoScX&?LhzWe_)#OHlvpihSlxG1^I2Jkjr)=r94i_cT6E0DS#lS{6A~_PWA*~${r{R; zhJS64(vURpTFXkzex9X5j~$e{OU<(Z<)69M8PSl}6WBWp$jp9&Y&i^g90KbGX1X-t z+F@V5d?ATsysG(Y5|#Q8M@8{bb62@wul%(jX+o~fI(>zTb27d1_6GJSgM|NanB(V3HGTPo~l9#{sY84k1WmvYv zQQw}f+U__q!+gOCtTvA>oDdYg7dXW55*vNfh{VXH#ce6IXCA0!rFk8fntVr;-%xf} z?>o+<>+Q7g+A+lHI-_qWik@1BMn7jHS+3|NY5gNSL)lH}?pXvj%lr**-wK~12Gq!| zTHOJ}COloFXqfM#U2RLL$W~Ll@#<0uJw{JT3R+A`3akoe%8i)T&d!#@Cm5#HKnN_i z7tWaEQ0MJ_Ba`B3H5%4h>z$J7>}QNNNudz91s51~`-&8m#|lUh4kc{dL?or($*%#9(V00pCx~HchB^IU^~&Va)88Dw zsi`P|N6)~#i!-;LC(8}KF2(zr;$nwDPqw-#F6-Uw!T7Q5SCnMs+`8I!Q*FNZRFZ zkz5tSYlPO7_PS&~w6wNR=p|HJ>w0=Nx11fAL^y79)xe=J95~nd_OhYDr?yLZQ1CY= zbNKYF%^x;7%4u*U4}={}6?iW#*x-&1?5ACLtR%=yMgfzjOu!qU1T~m9q z)Nnz1EBw_BP}B^HC(>PkI|Hz6cqjak(FZ#S1lZ!z*GSZ102Wz85l<|HGV@tJarz@% z__G31NbIF<)PGPZT)1IFBHU_O+U4Mpv9a&bz;?+9N*uoCRR3g+<7@512y_^hKEd-oxxok&dD% z0jpKoAr%+b1)zRZ5CW6btf*075g1LY-FEpJSdAQMn!cOuC|ou$e7bs>81!0AJ}Ts( zHhidTqhmoWywKNQY?x8;R}dx+EWBcC>ctp|fX~21z1^^04+NRUg-b57w0v}U`1h#c zGvbzA4a)mvCFg^WJl^ja^w#E*rm6wF&1pI}OcC^6g{oU*Y9}PFr`#tFc3$i@`#4qm zU}?2HAu*rXt3D~m2mSK`^I47EI58EU=ehe?ep9ZuzkeQpp#XS3@Zj~|$n#@d>?oh& zml1t>ED)av1!!HkBc&b8~j#ammgpmZ1mG7RdrffGk*U?};7`KS#R3 zcmphdljbA=t5@aXtk(MVjklhrFsCD0o715Kt*ZbPqc-=4(53=sk2Pr1a0ahp!?oXz zVy0tKo!c=<=9jdv$6B{Y_4TtOo$}d>zTvdaN6ONZDcD{NZIERJs@T>%A$-u4(x7nD z{-;_4Cs>rk*Z4DRX&9n0VP}jt_;xCKH@ACOeoyfUHc#g5^cDcp$f9Q@vE{)?4lHpr z%dEPvkVYm{gvE4hi_cmXOzGE9H=x0Batzr0YL**WTJ{&j6a$o# zqy?Ztw95p4dE=e>IsM1vu+<(;{rPV-nyA`}4 zo8kvu{mEjdNnTzSR3Tl8Lf!U-hrHaZZ{KG<9W5_A^Vhgb%zZ?@J5h3j8FzuD$Y(Pz zk9~GUVQ7GfRQ;_fvSme3s-vwOfVkGp(`{6=nlK3~vQv3r;zDKI;m18O&B(`gAcDZT zc~+kE{*3c=Z^shDuT7p(f$djaP;aRB%>bt7y62|e(bn-@rK7X6+$S0`HBjb-NS>dc z$BEg3d!;I@(xt0r+FeuuY5|+p%*e=Sj&%I#p+5|SBovB3c$`L30E{|{zR9Y?TfdLs7}1I zqih_%a)QoDpu<0Y%z?!8@My-84L|@cH!8Gf^-#z&L;}!EGi)Yvot^fgYDh(8CG&&A z`;MqNAs((2;-fV2i&`UE^71%2lcN_(3H#;pq#n{tgdsMIa`r#zPp~swg*>K$Vn6>@ z86PQNRbnZIEKZZPZ2k^~Q{Fs;OYOfk&)wqhti7Dh`M3c@ddTHypNtkT3&b@GGBYEA zr)u1N1@?D=(diBT8=z=dKsv;_P}U&Ry5;Dw<%Q!Rp2D+la;`#XCl@CaKi@Ghr0(yA zWlUC>bzbEJ=e~zGx%EVT(P}4#0B_v-O#P4Ku3pF;t>>+ucvQwCb6~^ zT714boj&)+ju{L85pGelmGvbASB5{yg79QzY?E|x1oDF8;Y`lzkVYgKl#hveW1VBO zs3#9pqlf~?u=*AD%sM_)p|D}ALNq19G#ax{U2D>YS%hzv=KOYfVH@uywGMlfYe7U5$vt6KFLng(8G;Rv1>fFNZwDRJG<-oC;?DFGN1WoBjf$FVG4U7S?U?D&V0&@C!k zZe)sLI;3Y7PUqU_gGQ~l-&USvH<+JsR?AcTB^8)MDD)c$j4-$rbz^3%qTz8K(v9~k4rBlmdZjz=X_zNb)ci&@BUH9 zi^)Un6c`NMZdM{MLieh9D@X+_hBuuFW!K}+f;~c~%`S6mAY{f3U|in4V*=zvY2AUo z&GAoBp(l%AOeJ#L?Eu~ntA)==J&$#h&R(($_d143(V2(yY^pA)tIJ79fr0MaYg$qZ z#2mZP^qp><0CELf`=#A9o2PG!W=bfTm=u(itDI3W6INO{+Bv3QJf$;eyGuo&V*E`% z$#QdStNDJ8#=CNYlBAs6_Nd70B{HU0io@AxqnqRFB9Fs`N8c(+V;)2eGv`DrR&6)2 z>>NoEtou=OdR9o$PD{H4TcL)+4i{NQp+pa`$@wx(^IU0OmOW`B z>9vRS-jdJL;4GnrupiMmx!=28S?c`i5Ok%y8)rhCTp&^~()`gNjms(Zzyu9M97E!h zBQNQxX~|iH+bixyMLpayP(1Wpla9Cz{kxW*dhX(YkY_}hR>yI(1CwgRY#`OJU<`*U ziObIQYLZ2f$#^BmSSAIWG8}Ksh-mZA&!e7<7AQym?pozKz2@whzm2*|deMvvVu8+Jc=7_K}dKTsfkbjGpn zTIsrv!@{I@Tbty0j**;*yl~ji(+A0g$r4uR$$Hw_n0B)YHzPFf^oAbm#_j%V+4g47 ztx`7aMD@$zDN&SqlxuVnKK`!Hi33#vyF?e&J^18%u6LI2CJUD%x8CSd2%Eg1l_-Qs z1!j?^-SOufgiJ7zllgW>7T?T+QO~4v^k*Du!Hi*OXAi6`L67_^^>kMu6mk%}i*n5X z3LAA?FBmNJcn@hb8o7GDoUIoYOp1zH&o;U!WG2f$0bxAwuFP%$tj~~ScH9?FhBC~I zfzjY;4g20_F;I;2g?3PJPsg}x9~X>a?5!C)U|tNiBUmrqF$0HDjn$BL4cjaOgGdJo z-8AbD4cg+;LSM)`;Wgya!b&N6_{WZXkI|(JMjw_dfV0&J+&mD;U3J6vzyF&HKx)@$ zf-rn=5x>VH2mGDw@Y4f3ra%N4^?JlhzT($M_LuVershB2gd`17v+>Lu@BCRvQN#~H zE#~8ow=VrXJ5e^do?w^6l4J<=DEBBAJ?XoZl9Iw_H#y>mJ^fdF^O+B>;!fU92zG0o z{-=i~7h|-qn)!RN7hNyLKv&VIHYq4BMqXcC)H`W{W6yu&ET>c;KA#JX2n(}W`{}uI zFEAj8yTpqAA2G@7!-$%HbtUh!e8D3A&qa0PXaCRj|ElT*iL-w`>3{kPF|cTr$^WUW zUb1F?`19oDqx($1dc35+?`c1NnyTu=c#Fv+GiH9tdq;QPitxg7RxIuC-XR6 z7bS54VtJeu$j=!Ym@gnsfK2xDnJy?%1lvoH;{f5EH|4=cfQ_`>TnU~_eVNT25;9tU zvQcRb*9@dm`iBe){K@z3YSo{JN{iQRI{Mu@m6FZ=fkPCZ64Qg?j{PK@n}uj`q4YMd z$*xD#vDi&>eJ(y$uzHm_(y>}wyw=%wr5hLxY5a81uT_7vGhEzO`4>L=X(aQ(K_w^- zvYM%NLx!!+>vuwvxiuO$=vVya_nbk&&8N{isfj*jW|llP=s9LA`ls1Eg&t*ygTqlg zixs~HFuBAxVX$mzo6ittL}|jt^7|@ztC94aJ&L^-J%#zSQT!tFrfGkwTmX3}FkE%G zo>pUGI!K1PDTp5Kdb>F~ItsDUP*8lDEb#<*Pk%EWVjk0>RBd7453K~SLs%qyz%A14 zbj}-0O<2!)6I)VGPfw*b#~GXamnHD5G^>vb{+?}tZ+X9bi1F42`vF$1>)C#^6oCve zpEQzJt=QYzd2p?CaffgJ(DQf!IIjb`wxZo;|BS~y?DB-(xTZNki~@$r)Z{}F5=-V4M z2CdRuq}60{fT=RCad4253MxxW3n}@SUaOaf zJjrG8g6ww$0Ph;Fk+~lJ)cR=iFbv&;s!kuD-a~eag$qnyItUKtuD1AP?afFPs2CL1S1l z2)zh-+(jFnq6wh^Frh!J%|^dg)4ze+6P#Q)DwX5WQkKPWSOkPtpCoH}&AP1()=IF2 z`eB=lig+QzyH7 zE;qOAmbDEzLRPbLW&m&}(x{$pbW8bnf;*i7W$@Ho)Ld^_g{8ETV5=wV6G^7P0n)@} zW6MR3fXnS32n_A)?0`3^o}Q^ViwG7G4#Hq2epDhFqFQA;I)qCN2D zM3(A8bBty(H}Ac z16``#p`n0icqsIf*s4-45``*C#~NcE)#)S+^&YV06c-oI2XKAGr%#>;Oo(s4 zkWMF|m%+~Wy57ozeiZ~0Vft%Qu>7=f+1NQibn3@`%aMXg=;fs?Zs#?IK`L>VXY-M& zO0g~X@a1K3iEx#6irW7y=wBVOp{AaiwTHJUr+}xi2Xwe#AuRQ{&>`h;vnyl*p>9<7JzGLk6LD z|7NN_&$f);Q8mI--oie>1emk7)dP``=Mv9{wW_%yAv7Ab-SFl;fF%qizW9Zk&E$to z44C>Xtcqh z0Z@35${8=zL9QH8JDRHi!<8^CW;3|nz>l=2^%5MXI8qoetUp;*NRWjUI)bJQdl=0GQmy(kUBL z#mKp|)?>uX;+iVdB`}&+y$aNO|E{zXF*15f+JHGg&cy||rRTrHTK_QGPTD9HLQ^=U z44be?`jdDB=dtRkXqfFm@j1>(p*l3$wch4x65y!CxgLgr8tCS$i)}vp8aG(-)fDe%6tszgB=NXagc9?9n$9$tkvO7s z;_^C{)DsX0^FX_MHwa8$3*_iqZ$k(KSwI2$3>5KmV4gJhU@7y>gqN^B?&IA-O6x51@Kw__=~H zPK+C+KyHd((AV}^e}JJxz~z%>64Bv-vQs}KHLuC3CjW%^<)5V;Ws|xwLfQU~vi~}6 z+H}B1lZ3Aje=mNP${VV8WkHoXVcL%aqTO}4jT>eC@9F3nI;Jhq_J|h8w%jsnx2r?f zrrRJ~$GtouoNs-Bmh4`y@HPoL>4EmrA{ zCten6uvr#rlQrBUOrgGM%Fiiz>9>@hpW!5!dR%}?xX%F@Yo_zzSzmo0Zja?Hwik@| zr|^IZ9x=7ASy9%mjh{oW0mgR8wpJkr_G!Ap#IhfGFpHT`4IH#{K8|0Mj$d+=gESq$ z`GVXd{iFK`49m$9UeuRHJ=wwaC)+w;OA{PlnXlpma@h-e&O*E@-Q84x^ex2!#s(Gy z^Wnp19QOBlP5wM)fbT;sEIXj=F8Teu>>0RM0sDikpowymIFJI-jdmE#$0n&6?zxLe zaI`h55zuKiQ64SMzVJf)mNscAc}%)a#z!wR`}1=Z`osIVDu5=v zYlVh(R&f(UkY%>s#RT=`Aj0zsgN+W%w_0p((djhI$=8Qeg@hy&fG79&epJq6US%4X zF0b$`vl8&?p0n}BJOcc^Bw!>_hI0G>*ws}n9h_mT^rw+fRcsD~LE^Y|FB@m-e;+G~ z_1tVshEwn06SM!DYKpBkg z%;aKc$WRYBs#}QobNUZrRT2<)D+@e>8-U)vG%wxr*nzJGyiZZJH@lw;ibTgzn!=QKO3laI*5h`g&mMQB(v6DZNK)+G~ZjOLBl4N|Pnk>z8cU<7BMHz=yWYOgG&$ZIo|n zO4-%5Rj3M>-#CxH^KB|Q|k+U!Hb#;-Mik6nr0s^;Dkq+^` z(d~SfxR;s!)cdujsvqRBO_xer~oM&S51SPX71q3Jo_h(^j#7X{7w}2wAU#GU>8tuLv_zi z=CnzaDt_iZ^ryQurl6y#M#`|5(I&2Ev^@+gqgCf}8oCd9!CdG_mLS(ZVvtzi%SDVc zSM9XPDV`U=XZ%A7Nc{iZ`=RWjD%wAB>Mr@9U#M&eZ^fgiwyn3}IL(;#y13>~uBcE_ zs$W`a`(E;B&%_=j)0ta}HVJ5GwPPXWW&qgg!T9&T`NZWFfLEKTzWHPrsWH2rNhyag+;9G zNj*dT@vM{g;I#kTLQg~93c#`gM-&X99erO>`2cf}k(ps`YY$bE&S~!ZgAH|cxyLEF z2Lv(wyeE4!@SuOfJ`V3E`TynuPO;D8Q8r<5#ab$}19{3xKwD^pFO8v9@2M}bX&Op0 zQ*Bqs-;76w|G%RDn%q|)Vw67KazG)xy%{~MTtUUn{A;8oAiOwGa%}kO}AJjX4zzo3}0AYSt6XNPikCJsd}-Ok#$4=W4%c6 zi!W6R&x}+o<|pkZo+4QTNP|Kl%!JBgAeeeJ644nd5VDiP?X;fZR*k(i&Ft3oLZ2zH zWbVCsROBNsbL8w-5t$9R)h~ZkFM_yO3-wA_IXM>)`uzV0031Q-0j7~d=~@ZO!)!ZU zcG2D4Jt|f4ukZCPimfg$@1d}6oaHY+ipcSFEz0qADd`ARBcYCf&=zq-3RJ3A;S3yz<2Z*(pCT_fN? z#e#>kg#ChJetl6y??wT~C<*1d~+22(*K)fg z*OS*~$n3<_{{;wOWGbT;n#E*XUJ~q`y0a$SoItwW6S1SF9G!2wD5b$GIQgubEtvII z+6&l-yce&0gNGMsAXi{CZ?T|{;0BK6rn7N78daN-(cxP=>kxS=wjwQDr&VMQH7nMG z0+m^0sE#M+E=*d6gipMNqHgkHd<@Za-CHL)bjzqfqSzCD^rGpL9C8M zWH{q(!%V3gNqk9FRhnCtyj(uS33|>}EF6=xnlLOTg?k zc^R9Y!Y)bMo!_mj|928V(SBL!iasAq9n+#-m2|TH4$7Yr5#_M)JMFLnr<{s%R5w_- z+;Oyw4W0p(x;VS^BJ;k!Ei)6oj2C;A+~P#^c4e@8eg!K9GTU87vI7?dsfb zX=(g=7}%(-L=h1eG9@nK!EhQim{fO?^})QSm~Yj<(Di&oqhv_~F9FwP;XW!1^@b_C zD#5%r7#?Ns1s-PYaHq)u15drhBIjfPr~P`@ylp7)Z!LEv7QK%T1;Tzkb0BMrNqiMG zeAUduCDOzJu?vm)bTGBMh)xxTyF@a1Fs^~<9W*hK7%4o}Q`jL zy<6$+LM-}w%d$!@p8bac#W){{2i88rxAV0OM0xSFF{8tis*1^ZQ?s>!Uq9k|2%*{q zI&**0dBgf@lP(OEJ@)-X+inRKVrs1NTtd2O;#o9wX_=op*#PxE4`=xWiC3lR&fx=r zFx9*t_%SiAs#PCeK9Zj^J9VorkVn2EjJ{GN4+&;m8(%hMiphDmvd32z&TFSu z*vh}N(S;xiBXyqb&bBO~R=0f7)tlZ#Mqt}+@eAD|6 ztNx^k8C<@23{76+3S>9r{+br=?!G#4Rce2Dx0Q65TA^~Q@L@a!u1XYWrc49XyD(C^ zP^V>igRUoPATh)Ou`ti*Pcfo;@2xTcFw3Fx8lttM+U8F%df4Eue#eT~h%2szw)utq zZ>MfaZbwfgXe8^W&uTgL1>zF?RD?nrWH&%{uN z!=Rk&=!G4eAjzIoeRG?3A`Z>r@H-zEgr8RjneLZt-~`|{sx!xU*R77HG(z(V&-Ixt!;P; z*k4aKIG&w0^JHzrw3jkn`;26piSrh=?eKXOkEhOK_wZT`W(%rrI^s|>o8ZA49Ne({ z5@HfOE(hS_9a4jzMn-P2CfJc}TsAgUA3bMo>FEqTUbWH=3}N?l-mgEvwLM#L;A_|$ zdl)5uwirO~3uT43422tcZvEVuVk_n;gK6Jhe3exlwGoa@Jy;=BFmg}K%Tim$Zi~(S z4O&Lzx=cKW%*#iF6V=q5`-Q=fnN2I{3;}WDF@UT{m+B0eaixwzcf}zZoXp1@y+o-s_m|o(buq`FJzm&AE7+y+`?ZKvk$z|C_5COpRB*{F-#d#!bze z${x^-0+|WIMV+dcyG`y}1MuZQKB`|Z{Q!C2>^=?cCPD|=b3K5@Fwb-ZO`9dfbQj&6 z(T{c>hp#YERgdv(2Aj(fVP}uztH7Tz`zgCIKPrJg%>zwJ)WX=e^U}OV3v53J4ESsB z=16|$voYj#fs8Wk1xe^8~ z%u#0>Xqwf*CxV?Hed7ob2My{mm8(Y7<7?`x7$JIAl zb*f8dsR_lw8R});UfVK_|J5x@{|mNi9o#u`NW}cb_D56IW%dvJeYD$Da=(@<4h7VB zkNg;kjq}UPO0z7>Cptz_6;mMQ=8@?7SGIJQhsClatzXjWrUh2Eh>piIDuUvgqm?c1 zC3n(p+dq_OGxn_>!$uz;K0eN+`*SGeGJn5q>>+NgLs?ap1TfVGz#H2*z zS@OPCUSm5{a*{zbOmCIvgkX`dTzgJy#ba4bbq!CA^D)$gy4h>2xhO@I`dorrk*FuwqFjfD7wYq}x z@OxdV3XxyGhR8J@v6AL&Ujxe!+~t7r&D2W7b)n#9XsGy#AVU^)4(E~)_5lIeH#tAUWx zy}}|tuOhh&ITiUPP1m!CyXZ*7x3q9cZ^q;)C0Cg`1CXpp5>?vQRXR`17-bC2*iYes zT&i_jY7-!q-vI(MJ2+mL}M?*6TOf#m}oxZfIG~wvjW1*DH2+ zQ+;(MZaQ@CqV?lH)-d2_6b7>!o$24}XW_p!&*1m+|L)Yf_r-r=xBk~R92hb@W7p(G zm6iHrmmZvN&QZmjtBq^%Cuz6aR`U?$b8WY@L?owMsVdFgR8HCK_XJ84w&o_XP^!s4 zsg^nao9{g!>*>iRK$UGR`CBL!%aQn}!T#KvQ3v%T_~9=v;J*W4#j+H|c-{Yxbj!!0 zniKu>=P0@QKQ#Zo_|xuA&ZB<}5>P&?-2jsRxs3jYkNMAI`Hy4&d9eOjZ4pSHmF%px z9}VB}YwbL56!Fb@9JRG|DU|E%yI_^kh8EBrN1W$DQ#MppOz6#~?{Ct)%{k)*Ezh&}9CT(|oM?`cEC~f|^ z7|hs#PBeexmz(FqhE(eSia)Q%G7)np?kwq^_TAAQ!_Y-NxGvnZqF&+xs>rnL zDY;EpHved3rhM^^gKkx6#FISXuo#y`22>^es)EsP*BHZBS)-(OdN8?XTE*k_=E*NP z7T63_M_YQwd2hb1mLGIzmM@M@>y75h%fl9?6z>W<$sP7(e;Gz0*5YM}^2Lr65VJ<6 z#DVR)0q?Ntu)U1w6IzW^yL%lg-w7d=*5Q%-c0$VDq$<|m@OZUyHdykP>=K?ko31n* z-)x$CA9?ybLNWcS5YdRm&l8)jaR26Je2;#;b?4=y$Yo5S|CpQ?qw^dPczd`N^f1h@ z{0fwnj^;4H7w6&X!vQ8SBLX9^or>H7d-)@}f8?_(=Iz8pEfTf9OBJ)} zSBnptSdUsN11=Q;TUdNJ#yu0{U0j7WBel7XBJybai*_)-#&eg&R|Z=Y94F;jy)Ml( zte2L={RRwc9tGrUBTE}{k$E>aY>IU=I5DGlyvMX(Wt()Dn7g-1`F&C{Xik@rPU1lx zoMYznCtvIr81|MkIdpJc-@=SD7S}T@phPfWVq>3FzlE;vtSBE-=F320<8zeoc4@ab zJ#8yn(+imSu?v3h28#{zU7Lj~nLE_e@ksi7)p40=?uyI91*@wi;bdaot(glf zbQAbS*eI1cMDQ+l{MAmcalLw+7j`;x689%6f7R(%7dvs{@rT3=_JiYm4Oegxu;FI; zcxomYytjM24R=a4sdL$MoY8r4`0MTPs{3@l7N`vM$*HzV@ovq3Qi|z%=8%`Iw03sIQ9f%z!aXb@g3Qa|{l^Za2TS=EU&=at#=#m~0UK8RCF zTk=`HBbXrq9V=8@>q}sZ2#=89$r{aVe1g%#h{x5&ata&Q1(47oA?aT|{GT$G2?C2`YDJ2unZMbAsyytv55*ayI z9NgR0rFOW!I>tJtK;9$-vz%yL1jS_IMcP`I%R>Tjz3}E&4Qj)?$`Ia*OAHBWY8T!4 z%UV0>WOhq^{qpPaV7j6rbf1MDdfr*6nM#*X)7jXPib!y}5KzHO5wg8q_O>~>*ftq% zQahs+dcfz7oT1+wmzzo%FLJWBA2F@;GKW{VPmCjAaZ_bVW&|1$EG8{Ao8v`NiHBom#ZA%&q5icj=c8fFFv}UYUY!!zmyd9kR-1TS zhWZHDx*J~+(#aH$N73d0XIY^$zZ^La)Ao^)1)VsY-_KyNhL*?Q)2cGzk+ErLf%&iPp4=y|r^L+@`XBmFH04J!dn-<0%;ZgtdKj(Khb^LPxU^ z_O{6m>>6 zC9d&u%=6B4!h_Fj&hUMNZb^a3ss4oM*DA)&Orsd$mBqnf^xL-1F|$XhKk$jUYI59C zyb0+}1lqciye`F$bO`v`o8HhP^V%mS7BLJNCVFk43lHVZ29&@DEHpgtoQ@{%Av_GE&sf^JBGB*?|A zgWS$2vi{X5_I*NLQ$mQ|bg2NW%;Hp-z-?MZFVM&+H! zn4V=OqsEKz5Q}Bjyd>nv%~WE90ph3kee(DQZ-g$DcjtuRSD)f#SGdo=2YqMC0g@Z1 z?FkXF;aHnRdhMDY$j1fysHt zZyOzYt#f%q@?GflaQb)VWSSuu+jmv3=rZ3LLQ#Mz(o8`N3vIO-cvjw-&>g>MlgF6Csa@=y7WhV#= zxz%eg&17w>Q-l7)wZPSLtQY*)ls%#zKPs$`r;wLtZlN)E<+5Mm1SD!sk9jtkFNgbh z-U_C;m!`BkSv;lU-}@M~)sw^N(bIT6z0`$Gy9pw)6}ocw6ez6H85Vx> zaX~CHvpA2>+f2&7xaT)Ht+ICW-w}9>yMO9#x_@>V7uj@&&CKTfG!3mhrwv{^>J__J zcND29>sq=fs%oWJ2SZbE%3vC_~Vs%c8_O%QJ!0VP%yl@^pldMh4 zYZT7VK5VY2sb>Tkv0A%L&Mbj5m)e8bxDRT$khk3lxsz-D9gv;jT7<0lX!-0%@pwt1 z3}lnyuV>f|u1uW!G(Lv6(|!;~&;0nb`GQ4P+cXJ#~b)}q_R#=)mLmpRjOMccC`E+62PIxGTlKPAt}52C9kyV zonXDamu@+GnP~`R8l?RmJ}%4ny8SGKnV5Tsojumkf7NrBc)Pg~xkEEt?&*1?ATPf{ zulftfTpz>Bmb;#IO364NCa9^YH(?eUCUsu3@OCE6CQD2-Q$A!(oz?}`p*4{EP(_*c zH=I>f$xpUdRxl@zL;&%N2W7xpV1ue&ZK6OypP9p}R`XeW#bft6?jVeL5aNbSbz@&W z^WnAJ)N#kxsPKsJI>$|EMnY%>P%JRQ9uTB3_zBM#P_i)mCh45ufD)9qk>@T$W?ReJ;DRFhE43swr)kP2>Ca__~s|&@h1))$d{qJ9Vx5kmiVi zi6{7Nk+6vTwBz}2{`hPTutI6o6AC>D{2C!)Db1?DQUSaa&M!8{tqRr3L$o8CKYlco z+iO5gCh~E+`VaTC~KiMKXr_9+vs|jByQy74|KzKtOyQ);9tpSW<+6%!8Asv*lO^*DsXdu-n_482t7GL7`D19o!*kdnMnX&IJEM_gMS^+5 zr;%pVi-_GKpvdgSEN(gxHV%377K}nthP=fiQpB zUZt!n?mJ7Oz*c>`nqUz~UHN9jh=f;+h4f=os03JxD1_ccIiH=&`BT1-#f3(g9wBF8 z^BEoY?x2Yz@kN}!q|6n|%`0KQywC8U{@+}{5T4du4Q(9!eP`}T2FVBb^ZRG^DN!ce zXUuGDMbYS6;ZAM_J{sl9V;vgI_f_9Wc@@&pO$5B!;rQI2x4*ThGIuhBhFR zV90R{vK&IXPG*R59@0ZuXWtl)L|c=iz~Q)_iHL~sOwtyXWOD6kq^B(ZT7&+Hx4)BTtE5%k4R_ zU!BvpHdBpEebp+FrSfe9V4!perta z+eZY4k&vh4f`7pS#M!O~Ov4IXM{5$BD@Q$o!i|GPcA;`l;o0ojBjqFA z-IFUR+f5|XPz9@j1iE|D0vZ*M1A>f8Su9`RxdCHr!{wqe9}=&j3>6*q93Y#fj?!ji zX;620y*a?fR((NH<~hqD=|4--n|IjTtk>vy&9v&ZvbH2JtUOkQbI&+43*P7w3_ng7 zryEw6{e`iPS?K zA!Vmq^-2xiO{}Ttq{S1A6>pB_Aeu8eSzZKh%w{kJg#JvwT*x@HFpr<| zyqM$YSi`F5V!8S|1}LuXPvndOUT+Q4c8?#|Utez~M9mJp#<4vEcIel9f-7l)4xU$r ztt0D9{lda=0u{EKKjexVF0T`7wdx#ZtCq2c+sma>I4i9X$)kM5S!W7XdE|=ENbu`V zd$O`oZjQ<8TdNK2BjeK3`!k~dv><(p4nA`Q)>z8gmn^k$xR=4@b{-8MZ!q8 z{_$4wKB9>e*qn+m8-`Ux^!_Y8ZL~*qlg7Ci%=4>Yi+VD*YwGNy#VUR?uf=!-KumfQ z56Mg7-$x#;BH*sZJL$z<1G%Hw<+mj!_j_PG=UC`i7Risi=#TjQ+i@NIjczt0n@@9w z?x5+m!|;|?`!BW#TyeV|?BNVwj(37%K10ibQO3;T=2X5)iiYh=yFHOc7}Tl%@aZ=j zzx+dFj6he1N=r8EOf_d%-ukKCB30CYo5T6%|o?;JSx`l-{7-fN-tLNVBUl*RJ*or-~wl^j3|lW3L&`)MNbh4 znu-zM573$OsTY%QSL|o;ammV6|Bbn~4vXsB`-Y95g#tfmNkx$cX=z0Pr6q5v|}V}PN%<5{TZe$IWr*Lkk)n6C%$}LO*Iw(pKJ^Vz z8rclS-#DP!&(0#VH`kP{q-qIWZ2G;^mg`pux1+pdPoU?I05)q{`F5$%pHNVLjttss z5k-iP<#~Sfs=fJCcn7-4(~NtpuaBK|BS}-i$?0Tu)eKovU+kS~X9pU+;@Z|Vdl}@g zY_Ll;Ux(%90tqv?wL4imb((@joe?yBZK1A+A8&YC#gQkrG8VkTWuR|<6spPd#&}HY_e=l(p@WE zyZ56FCMA~=)N9H}37TFiEk@3V%Dd-&)z`)6eO*%=KXGdWb8q+KUgZ(M#MN z$LkvDNWD;|26I+_6T6(DHJK8$_)PAGZ1GIg*e{$qQ~DCSl`vthyM|TZi%>obZ6q4R zF&DzB$PIqQeRwVCjag6-Ic)@*EpV<$rPhr5gdP`}l^>-@0a>{_?Nk0B_Yxkk(Z&4EeuQBz1`3Asm%5j0`@?Q1#0#~g!DtWdK zepL+BZ!Y06rHMcvgUcTaj`%Ko=YFsMpO74&ZvJ!pKgp;+|0r(O2fZ=73JSs{m|#aD z_hS@}H)^37N{ob_H+YMx|KyF=#XbbYQzrhCaBg{8d-qRl&zRyS69hAmB zaPp7Q`YUAS3ar(NI^#bG@1ck!5U+{2`Qnm%_voAZFeE0_`XujvJ3_TDlh9sZ zZ)3OzGFDLI!`3u+Vb1=J5JHaJZ|O;bPJ32%mcTSKx(`za`KKft#f}}^{7xt9as2EC zZ*`6J1opGrF-mO6Pf1=3qK~?0etE|J@DUFs5CPST%9RCl1G?GYbflyBV5lV?ss6mN z5|=Z7wz)|Xmz4$V=GgDwD}9@En>F6XjoTh$CAjD}egjRij7mn69*ae|KoC6K;(rLV zZgS9~H1k1OO(fu4a(0cjbWpyT=$v`sj#W|}fJDAEBa9bb$-kSm}T#k$Tu>NAIpD}K$^O&7?z21Qdv3xFGSs%_2 zWU>iW)6+|>1aVGp`a8lAshI2H0Te=Zvn{17U7FRev9sn=JpBUV_+E7eCIm!sI{Icg z3JTZ8RoN*}n0&WuU=583Tb6&(Am+9<>BPwMl6v75Y4 zAz&8W{qd#yJ{6ycW*SZmpR8J``72i6g%^7l!}}Q+nh2W060T>2O$uM#-5ZL~IkOwI z?1U)`ocO;-)^wBzxC^B}(nemiGz%JkUe}DqPWJ&5ID>_VY8VtzUQ#q#YCn~GFlj+R z@?39pOp?e=Otv%nY_jg9yQ*!t-v3b7(zqfxO9ItrPn6hqd#cm1$yVK%nb!1y+gbh39Ry@dcZ zTku(7SsAq0)m^f8;QKnj^JXv=>q8d|C9t9MX8#q=`;*y9wddE3Wh%1wRI}#B!egwPzCDt|w=>>96WC$a>$gP37#CcD$mZ%2^~3G0#o6uhWhh!)5X^N4FjZHeodg6SJ5-@(9g#ANJes6 z3h0}72gYsU-cAfISYTdq9iD!PO7rq3g&o5BFHQtz38NdP`0dI0Y(4?C-EJRg#gwS?V^vH6+OBR@<|`I|rAlmguR$I-u! zCghUxoK_A3HILBD`ZDr_>cDnWB-yerR8s@yrt~ioCWZ$CLsK?pL(T2&zV*Zsh)fxq zU7AYP2e@H=%Q1b7B5gsCoV3g@>8#@73gNHucZiu%on%=NN;wyI>*+Kr9p^5FzFLrv zd#nTK!5n^wNe-0kN&qo9ffcqP*O>Y%yg_TvOIwU(y%NA&D;^3b6w%^vE70u!0}JqO zAfR9s6Xdk@30H9*CP3O%QVH0QOi0mib90Ag!A|!gl%X!L(?%W)L`CJWt>rEbmB62< zEI@Jt=?DrhPk?8q`K9ekIN?gU@tEBjYi)otOi{yZHG89GZK%Zo6(;vyAkLqftlfpK zUFY22VcW{THq?-gPp!QiDp+Z6ZI3YOVvqXTfsT%@s;H1n;LVY)vMblqU3%2?0;XO@ zSLxZG_Z&&h##ZiYDC31gCIoBdr_sv_zDCNuywfM?$vzVL7N6cd_j4L3gqbp^ZgsN54<~b@7OAP9;I*CN5{Hgq zBW2VDa%f-u^N_zpJHw5XiWteBDk0C2Rrc4M)A!&GZ9%*nDkf>M z|5#Z*fG)HsFTl<-JLX7)fR4&d2`<_F7(RQ1PquiKy4KI53+imJMLEeheLk-No-v?`7{n2NLIsB zB@I8LX)~&v5bH*#^}J~c%4F}P*f2~gj-7+Uuq#rG5Wc@I{Sr@KtUq0fTTrPwbT&=1 z$}S8Jn4_oFylrhGsyPGU*{bbcwx+@-^Li$G4|y>Sj@G^r0FYkS8br)(Ib7~@JPlGa zWaFO;p?|ph*Php-w0dL#;qF^-Go=r5Q9JWK6G$zLB`srJ{ z5zb|(@&10sM>DQjdMRcwn4_~RTun_BJL}rS;=BOg;C(DlA|R)C7A#t*mlcAMj+#w$ z3$GoYAbdh5;h^;JxpT+;)-GfI^uj`XM1=Y>MWRSl?n72qL@=+@;SJ30&kzcaCf&m4 zW>2@)xqdHyiN^vzaGuIM`s-t~=u0J;)r#2Rou47Tfq@*Fd({M3@$Ko#jW+bV;>io> zuKl1kMWtj$eEpzolz{E*>%e%VP$W-+xl}LBV(rm!PB39`NJquCOND3J`wSXT!70xi z-0b*aKo;{SzpndI`jkl@s*Y}sH|4X`6D0&?j&@=zSbPwgRinkq767#Y1CNr|reK*( z6^(V*>ISt>YrWV-WQ%s8>Q@0_@96(_s+aF_#7B?4ly{kEH13@;f;(qx>S|!}!VX>( zs?!K5JI;=iY}G9sHq(QPV*l}MaeM??O%oz{2J08^LM7hO*;?_CsND3@r<2dd>F{9d zsa-93LhkfinzL{n2vA{Ld25ln3nI zHG~%4`n*+@JoilMf7OVJx4?JTPG@4u6H-49!IS}t)LqLJ>5C1<9}q}P2qL3s2db5- zo_5wt_XBxG93FN0;GMtfl_woSnsmb$++e2!a9eq&Te22YfPb)jKHe-HbFeJz0gAw1 z8jkAsZx3qRMWV|Y;3je^Ib~9vnVm{_DlD}LX8ji`oaK)dG_4@_tYJ!CQQ9e!qodQ4`5T6W}k$}an;;BBS| zORe)3`OfO*jn9eS49vLIGy21r>@9bOk#m85i!%MYr}j_T7G_pt7ddRzFF(1$(ZRFK z$YnZ#;;ZAA3d_>uwGTsOoxjSO7hIQOAOq=~cM8;hJMJqEO`aj0PwDDR25PJiYOWtS z|3HrM3|$mdzb*a%U+(bSP(TyG_)6A>!|FqEi4iKLtHq!j8ZK)>kls{LNm17?3SJ(o z$>67I$tJRV4}KOaTO(xYu#uH=D~mTxr1pF_&)CNWG{5S3_T?!+86#W_e(J;jNeb|E z`A*n9Dy|yK{%3Izr{&=v?p5~Ts~@sx7zlkw?$!*S3_(oZJcx~RpOa;*F&jz~FNdC0 z2tWCgR1`<<*-j>D#0&$}i%7WeL0EH1q7uL_C} z-|ko@79fh8rH-lHnkWVhotf`mn404yvWz;a1S|@fX zP(QFezlStVgUCV6yB=%lA&<{@D;=EAed_k%y4gB zavWG1w8r&uOZDDJwY>xkSwev&nhaw zLfJ)=Ut*d9o}nIN7<$oduWej@#r!bSa(BD@w9?BYfSltk3u`Ku(I`$<+b}%`W+MHs zqwY?!e2vN;AR~v*>;@28Oq!JX8dxnH&R7i*BP%1sWeIM3mh>49DDeKOEjL*&p$`M; zhXlQpLTQSS!OK>}X)e<>?qYIcAg)kVhQ%CtjEi)o@!gM=R=#F3Ql|IQKSwmrgMj>5 zv$j4_6A@LdF!N(BG>~K&dq>&Tx~!b=S5>O2sCjvmzV{6%_YFiUR5woWmyOpru5CB% zr0@DJ?Rm*ANCnn71Q1E%j@e`0R^YAydVWp5{f6_|sifU^6rK_TdOgl+Iq=T0;ATFyRoIc z9-KIC_)rCz{5++*ZpO`g6kN8bn@HE`FYnO#*P?Zn-BUe_r_L99F|O|~gb@KQeho8Np44!=wSx`_i|P__&zA+caeRp$x{Z$R zj<}1iCs-Sq9^9^KJ|%B^21WbziGR#(WpD$RIeLUjXu3I#)=c} zU4C8}KFBKCfX+vJYS2otu{!4mo|hVukA8-ibzfZrz!N^I#++b=s92zE&ZzGI(_e2M zHzPrL%zkW^j^111mwSSzP>=@6qGP-?>m(YLU!Z#3n_%<<$pTI7?dcnJIwiDgDg;(d zKvD6G&Vv+MVe_M{Da?vxRI`>`b!6l-EzX7#13^Xr`7=@GywUz551<1w?yYp`HFpka zk07yKmpVmOrA)<^9Ux#MQ4dOJWw%1AB4jttU(tu92q{qT$Rdz#urT6wKz?_{2_?>zyn+u90cx@L4fE4*+9#&?h8oHVTu+$FtV^@BtmphUF?g<^Sqnhe|ykF45>mmWp5 zq@1kgN>vKGE&R1M-{07la?3lw`SD}Hu;8HJUfhW8jFa4-HkI9-oo}nD#83818m6+G zv=~N8T|)eF#52}i=%!n{JMvO-vy(kU^UhfflQbiUqYt|7P?4n?b{uOK`j624k;en(QQrV2i&&t1Ohp80HE0C1x zZvt|#(x4??irzX29dnF>Fovr{W8Dyaq+G$c6oe>jEav0(R#=yk7_23ADZD69eidC_ z?RZx7(&F|V)3@(PZ>WIwKsxPa$aGc0T46vjO7+@~OUW8@nWS&qtEZipTfpanjL>Jd zj&y%Gb*h(Qn~zq%8j2@#)p(mlsxS#r6Ohe=s0(P?DS!z#Uo-{>H0PeY2o~gZ+NMLB z>&(Dz-gC;6>~__1VJ|<-@}AN`VthCBL915byn9&2M14%o&?-!?y^ca!$CxfLO#QZiZwu^)Q@{*~WO@m$e z$>$ms4xe-bIA{Z6`QUZ+eeDDf6pI>f`hO<9;cYhdJ%1zdesf6m_;}WWg=vkj%jq+k z8|nBz=)Pe3s;FW*?Q9QDjoKt68BL|%S#7D*)_?~Zs88fV3;yt}sJg+fn(sw{3Bvj` zm+Y;DG0o0TDcLmpc)o?Xp*o03i$G1wvJzPI_5)-nCu^El-uox8?+&n`yZRf(79~(O zu%1h8Kt<_QHH5xg-R5v$gd;LgNpnT zrPsrFp7#AzW605rZ>$tok- zE{xx9MbiehTAC3^5xu?cOyno(v@M*kqMQAJX4%=uA*MBXYJt&Q(g_31hQhOZch0=3 zMQDJHHjJLHjE0uKxFGSP1dHaE#Niby)RDZOklVr`S%^XPNw02y=}eTj{l>w?PDTV` z%G=LBVo*lXQEvNKRX+msG!n02Gw$xn1Li3Yk5Y0jon?DT;WkhTFZqSRkzF=S_eKif zP4lWdL@sC7rNv{P>sDGhiku>|HkgO2&G!bDTD>Qu+_c_j9b}uec!<2a&_P5SI4utD zrJh(eNq3R+6ZA2i_FK4u4nTN;9p$}!^E!s%7S)%gAhT%H3z~_i6g(Q>WYAfp^dIzBXQ|8MHFXI`l zY+t)*FfFOKZ6V?477l0s^;)p?~wL41euhd@d+9^%u zOkVdY8i@r9v8~;X!%7@)E$ChQ;0pBppC)P0D~E*tWZ(IZO_}HH3C7=NLtz62KvcBH zC7SVC`eN(auRnjRy#60qwEiW%c?oa)KK{F>>tDX%k`KKOP!oAtTq3_Fl;chJNBqq1 z{tGav!~gBJ>0|U}vCc)tu$3+WGu5TxjH6-hu158BP-k9#UftazX}2|J!@$em`PZ3f zK6Rq#ux#HKlcWfs)VLHb8jHMjX>Z)Ts{*Ll4xBL^GXbp#0kjK9}qilZt z{@w8}FtwdU_%eXK>@M!TbRWnX{}}IccCK6p%XCdI!`qjRD{i0{Ir9#Xirs|_Q3|?F z?JojFdPm-1ntJ)VpcB?#*9za5VHMb|O&G#podQAJ6jj(H`)XSaK)8i-&s?pHv`Gor zmK)G&W5YE9a9y?b>+UaE349%{T~){`2!~alkv`)J)GeYfUW`fi4kQ)E#8sqYhMHxK zCo2VaQUMAea^MW#5_$BSH7N~9&Z$Un75s2$Djn@vD|nIuW|naEymxconjdvWCUK=NEZ1tX2v;%bgwv~C(E-}@}n z=ZAJAa{4Zj-vAKfhKTQ<3?9^4qVWbc1hrK<$|$nN++Y(9N3*;P4^FpNq}59x^kHEd z?b+}N|B4@rcXM-L+dEbh$m%^lK^NY~jC6^;<|_!(V_XUhMxncRM1N{(Y{%N#`>V5i z$6Qm(r0UL^GAbNuHhZQ*C48~^^Q%&aPy}(iM5o4+aEGJA-o{;AqW1SUCTsSri`a({ z(D<+*bKs#hZ)a-X3&xvuRohCF$uJ$Q9{8w(kRP@OfEfUKe#4*+Sng0)LB8$Pbqe*! zWJI{ugR`d-D)=8FY69yjn`IbXdv#o$+!S>(Sr|2k3! zn)t|#0iH;^TG(|PjQy&rDshnJj@v}dhE{NK+Iw!ZS=W-_3@H+dF#S5JwLB1Fl@bp#O;kFdK7F;oV#WYF*qHyDh05) z$|OX<%!lXLq&GY{Eh==kK1;7a-mZ~HswEAr^veg6fz9|!(eMOWN5}`GyUO;mq{BcE z>Ooxyau|3LTx|B|djW(9VjQ#pe!yunVA|8Ot4sgw_%(DIa2$0JT(%6 z$E_DTa?nR}xb$xydw?EVmFJjo`@clqb-TWbOn&tRlXvKR&ZM42L8JA1<`%f&B%VR0 zoGjgM66Ra;CjDgcy0@yDYJbK$zV|^O>4n`0B!05S)3ZpFO3LrKW66g0oT}@tPCQnv zX5|tna8?ElKl-CsQdPe<*3ULXg#=KIk^%95l|X|QRqaloR)ovG4j7C;?HKm6)A>?2 zF&Z8bF_hy}uIaXR@3zrlgRJRf0)MyS`HI)x0}LjC`B;UH0AiD!_!425J%-V{WnEN^ zH>-zqUQw3Mv+Q3WxKg?@?rz1%9U~p}&gG&ml5B{MI~nn^4|vE*(ai%!q_!f_rQdDO zwo8}%UP?!EnULezZ!+{SRMwWml8v%VH_lOOvy%F2$2<1N%L~)%6oJ*c zLzp>l`g*?rfyEi)T+Grc!{4_7yz+*+@E#6Kh6ZetI8#f_#w;5G8I9xras5D%GMFhz zIG98AB1<7DcX~eP%nWC2VG4J@$w>Sm@WrzTo^TnFs5qBuVAZqt$z#ZtR)5|*P8Q-2 z>}(%(@DD|WrZzZT*nuW*g3<7E>`Um1|Lz{yO(h{7j>|3~CNZe40P5^C$(p79;*(}A zH_Sj)V3tN6_j%zUv8dvyxTf{8C8+3+yOIu*W1tF{OU{T{MVX^_c}ToI)tA^1_Qgps9P1M^<+jU ztXEFCC=b)LT*Aj4qi`h8$v~)JljaC&_69O(;`zls(^^ZK<>~df-Az!%Ch*yT$b$l0 zBIYz!Pm;?u=ZXW?ZfRwNEOOTSa(h(SIP<|zc!q5E<|v40VyK3-D7Vzm{Eb!2-e_=-b?n>uM>yP(O?F=9C$=&!D=`mlv^l`DuSHw} z5M17%WX@E|2BSPqpjt~;=WYL1q5T;d7tw8xU9K-7lKxtPg(_;xAOT4a28(eJmPzR) zAegVHbb?lqD-{K7S*=p{9uF`A{5W;M$hSkibVKTZdCXQq@~uJkS6#$uwMHey=ngS6 z%BFt0CrB?}Ljdpr*P?4vitqkjNn~fh{solxQLgIMw%#lte(23q1np!XwnhIZiLbPu zKRkb6oRy|_bbQp`)s+y#Gml<~tVyN4`l)%dW3X%TM;qF8b)xx^&ffCL#a4&xt@9BK zW-j7yD#;Vb5UV)FIX|#2I9iC``u5>Rs{fm_W|qrisX~$qg)i z;NoNFtlsnXQ|_?=o7ioU5wzc;T8Z(+3^Aio{C2&Xp!Yfmu@JhrxRuqUQA;}fBor#s zhQ*2VPK0MM1VN|S7kazEXfx#{$VWhEY_sh==g!yUGT;75$%@^#vMcOnSpB40Ef0Q> z(zH9u!O=InKKYx#nx-!#jRn~Pzp((2SJTnZv554PT;kyN>m2>Qf9sg~2$2_)jy&k4 z?SKG%35;wg380hSpK91sBNN^D^;adx!;AhBw zaR)?!(ngwyyd6~bTL1|S;Mf%5m!A!-BffJf&@-F^MQ`Pw=6aiS&w+*g&+&hbviSX? zOzfNPGxTmImit3tUaNF1Cmi+-``jo)AXiXySb^O3MdVK9XwdFo*Fu7J#^p-xma`@n1V3)Dy6)l6y>tl&Ex4LJa+( zwl`;W3r8qj{Xx@>I%@!CK0^N9+BwWT*gaNzespu__wM5IbpPR&@_&5s>7&O5b_P%z zc_(jBViO6!FCMur{uR&nbr>h6Z-?fhPTS-;ctqh#OY@gXYk+4OUlx}$2&KLP*B9D= z7yZMrTYG{y572I* zZU)*}3=f({x$3j(ao@Z7Dgt^ocu^3WK4yz~iEI41VdksbiKe)rG9ZS`2a14u4FG$! zob&o|gI|gmlHQD4EHPG~eNm4$~OQwCsP$8mL>$3vf1pYKsW> zkR6Y#V!*+=f(%~B)8A`QH**Y&d}X&_Y$rjQay-?s$xaEmWB}jGJ#GDKehpSGEq;t# z=`XlP?Ao*%$#%W6f0pH-tXv*4>px zD8gQ|-m8FjJk*bWef2nXwJ1~PEMkGr8|VGKV^n7C`sogR*gP#XJY#B3eKZC>ta~i1 z+X6q>cYb8KYmGyu5lL#T)AUi^n#CTYuazr4)(ee$is8ZvsH0w-95Jnxrmx!dZETs` z+TO$WeGR5g0ZL(>mgfYZpnR1ve(E83{BYVT%_8g;@dt!2zCB^ld#jK++6;p z31ktl4IwmYt?1c=_D`emXJGvDcLce1OWCHF&r%<<2AaeRxf*RUrpQwAewf{?VYBGe z{`HVeJ2sat63VXVSB5IRZLhMbI>&*m!5$Dj#wnW~*$IxA%rKlVaP)~$A%HSC%nQ(v z?;}3NyQQMf!-DLY#35;oInBT7=BL4MwaQzfOzUrELN7jgDvHdY^71xr)f5RBw1__# z!nJa6CYvG(g=%VWY2<`@c8_-ujzx}EmXSP?tVnB>psNkDCn@DC{{FauWb`L*oU1KD zEL_t>73b3goiN{pv{pJ@W_yh_JLAIZEK2Cev%-PZ$GBYzuoyMGq_F_e|mto$t= zGwVIpZ_Sgw@If^21e8M(gckBRL27=YLxB&KK_p*w@E8AsYPRyYIdk_Vi`rE&9+BKQFpiYBToo!;qM zBYEwTX~xk&Z7MNx`)yQ+#y4kwJjVQ1hLu6fIJNarU56~*#U?GL(%mBR&+z$)K=z5{ zgP0bQdrGSCx8nO39QuO-I1yFoa<23%enkukaBM&ZXdzr*xI*(K(%u)Ul*w0tqy%Mq z0PwOXb24UUy~}aasPRzaf=x1TFmv(HR>iwD0P1S$`0AhiNWyl&VygwAntcJ6v}qrT z^GD%qC2}sUW60n%Tm*N3UepthMZx9)V}FA@ghrpDE1Xccnps)Z%0FqiWUNgB>1zAY zyZj3kLXM;R_N71yhSvfoxI^JmdsWt~-|n2Z5Lqt35#Nq|d?Ax1Q(Ia4vKE(DAPAaa zXUfHX)*fG9!oQErZyI*v=nk$vCyl!P`1AK`_(X-N9HOG(`To0n(j)q5T9a#IdN*VA zPV0Yk)xJ6nQbOCYuTNWDe4?`U3=f*ZX0-3pk1)sM*5{uPcjX^GWXNCLTM-=NwfWfC z76|n#Of`{Y4UdTvWm7N^i-zcFB!6Oy6)3t`vlos9R4_S?J=maSZq}_+^a~%VH>Qc7_HYSQGc=S{1RUJnlX(wVnIk#sOLoAqGt3sh<2^@;1r)-e+Q-;)M2; zoJO;K(v^H}&LNA?+YFD}u?iBDq0|N}H9J$gd&|#$WQ-{id1ojy26vspEvDqX znoQV_X=C6sU!jQBx4yt4lt*2Q&OJNWXX*Uzx_RNZ^t{k4Cw10v$N*@{TQ3X7Bz*L-ngBsM~on{-(Zwt|7 z^)dhg`)YW5A)&o5@21dK0WtShs~7oeRoxa{JT<_C36~YydTbU%w>k7*4$z5t+4n*Mmnuq0(!+1D)+Pm8=CwQ85289p8lb0Um`l3WW zdII~)^aHvmET!btg{D zoqJi&MbDtA>i_&j;IaXkoPur&?mtSm;tlkl4Qj`Tr*?pm>X@WAeu*&_2Ds~Q{HsUA_&S&{N=F(r?2mOrWG0oq{|Vk5 z=Ht4_i6G*x2(!K{$?`$i*aP3wqV+}4$%VmetVYjUCeE0ehsS=;p0Pv?mUTnve4E~K zh3CT;clYZt4M{v}%V8b&Gi3j4M!3E{{#%^`{J7y^{zd(?K_mR^goLpA$OL6As<{<) zi;fMlgN+fFxn`~`RK9HORbUfTVhGzc%i&&wAGjD##k<+9opNl~^XAD6SxirV-QCUo z*?ujZr&;Fvhx1j$%24(|G|L1$R>1YEP9aFza9A1a(=e3CW4VuM14dGN?RV|o{{su4k57^E|6D9sb-ul|w})$FgV9a(&s*!c zk1#vY+lhBO$FUe_ZiYyxst`cuO>f?#R68<5Xd=lij|rsZC>sqxIUbK1 zgfIoIPVEG~L`)%9Sk=|lKfRFC5a!HnYHGb}RWbhKhviu`Rk_)uid{TNG}Cf~*=&LD zG7MDyy|3YF(U6?5(UIN~kkZm{YyX{*?N+^`zuKB|?Mq7+wQ(Ok@sJQaW4`@KO}KG$ z#1vh@Lt){CLFq6F+wH^Nj~~5gA`V+4gx?=BdgHDKRyrgpEV9fnt539*Qk%Own)w5Oo`N%Dg5J+_-tr2aryqn0M0Gobi}1GTaz)5X%X zNAJ45wH3ABRi#H;&AW0|K@=WXL#;G_WR1d)Hlmya{qqI^sl&_I)y!>jR);n16jSP`b6AkgZqmJ^jGNR2R@JLn*8B~MF zDPRYa(X1>adHQq#l2X_FyL5UXUC#x!?l^_z_Rp=Bw0AbcdGfXRZL||Gq>BU`5ANL* zO4yj4l_(5|D981DesXYXO}jAoZHASj*^F+iYqI7!!}jLx>cApR|E}lGB8%o%PHFp% z5x@9jS2Pc2C;Ed?d{YOPCS?u)Y3WJ|3Jz!c1LVx_jjwSt@N63pyR_?QUDy zup5}*Kb1~Dk*+-x(M-NmdyH*FUu$vf-^aH6ENp2PuE2o-|VR^wLd;=)k? zj)Z=#)~ViY2VMu{T)RtVssm2R!*&-=(V?75 za+kLJCFeR_d-Il_*o~H!-V$Sa0%bPQA0q`3;^#X<0ZyXIN*Oq&rD_?;v3_jlL`kqV z(a7rKV=|P#tuTU{0IdOLQF+Wo1bS&cRgq2tl7EWsUja|0DD{}A}@bSZEO_#^b!o%vXY|clNk{tba7!_Xr{C6*8WDCAw35eeQ6|g zY%}MpxC=MDJ%E~fWTP8ty=Z3#fow@_@9eNbpIcO>5$cOc$9UQ<_rca=b2$3?rEP)r zBa4}^&n9rvMV~!Ngr&T&(9(`A9&LZNOb7yklH^)-iyNZ7Gt$z+R_DQkYt+^Ij@URU zJxvZG>e!#j)4Vpe(~ZW9aFUgf0-|I7CaJ6b*F<$K&3cE*y8)d8G(k}T!h5ed=TFPMnbRn#bj;qQMQ`lPf3$U1%#IPWYs zOS4;))JUNGRVpMtEnr#`AOTUT)u*r4TV4-ct^yAHzHA(!t3MqM&Nwn;VxQZEijc?2 zw4k?0++XGlL^DW5az^zfW3LPrs4~IBbqX_mmZuV~<+hFo3b8oyO|q^GJ{b=@*vjKM z4O6DqOg=JGIpMhR;;~qbSoe9&mNG*sr*9F5`;SC9I#=i!67xMT*m>oM>#k|dUSQ{i zotZ?NXJ_}4sB+< zIeWomRkp_8_ZkYFT;6~X7^*8d9szd}E{tfu;eZisRRKk0M9JUGa7M*|^*qC9p4X-u zf9!H4wDl2p?`fIPaUOS(2StPJyEyEEFYYOGJ@+5y<>mtJZNNm@6}mpff5GGmc}Rdm z!kHScbr!qIR7+OjQ2LGUVgFt&QtLo$%o%ZI(QuQHjKnCV}4bad*+2l(f~fYT9b zSp8iI^e6>R!ri?HKgO(Xv=t5B9b{#Ztl%uVScQVm&K$JWsxEl;`0+%2y;aLTbJMLj zP%^rMv3g}WTkUqiFW6q4?!%F56MN8``BmNOT?dnP_u%gA&~{<&GqL-)f|ABEAY^{W zMk3ycj>yM+qWaxwkB#PjMnp`Ag23AJw90a0T@fe@DlmjQtq~T_$c5pDjaw=E&8C%O z^84Pqmx19xjB@L8r{_n2C91KC^o>vZLQBu~Da%}ow&8WABbD1h}t?VxAXpBNts zte^CtlDLwMdwC`L<3U2H6vYcKV7w{KqC?`baeda0=3r+62?Ju6=le+<*lAEK;l})P z@k8YD&d+{Ed#9S5P_1`74&;zm%6BF_s{7pXGY)o(h?J)y{$?Wb^S^)fN}Wc5@fGa| z%B#H9%ctuVOT#%>1LZR(YCDqQo5Q&;_&@p0_qseQ%`-aRZT}ocV}ma!P%q zK5+XL*_ArK8*cqq>&Wj^j4Np#$C9!w92WFmKfUJLk-?2E%%N-6_@!_UwidZa710nq z+Hw>Uv`(mGw5oG-w0UgWd~5$+8S5TuGrViP&*aV2u=A&j#agZja?J7e7+3%WOf{|| z*2Z57h6iE_b-!91JZ(b%Na5R6ITAx`G>;rUhv*BH)yQbvukB+XjOTr$I>56Qcd@$D zvxyp(+0-)}(qE(8!uO^b4Hv#JFb~hUIXK0}@ZrVut5@nD-5tz!mXFR}<7oB3e^?*~ z#kfg6Ct+WiZn~s5e+I?Ltv(F587^|&4ien(EM;@~Yr*=t-e-|Yi;KMs(|2=Z-s}T; zs9S67Q_dW*$<#O}cMyc~WpNP0!w(AbG}6hlJGYqpYT}s~tB8BxGZiau)4KVXtgA^I zToo<$NNq>EY;O#86@P!8MSf*^1Yd&rFg)3vV^G|+yt~%Tx_`^m>xXJ=q(Eb^}L z8s%qF`=0zoVRJ}Kf6=$@uGaox^)1Tz%*E5_B?ffhs`gNwQmW#L>;%){oZ{eSncc*z z+`CH04@}n)vD3`cMbx_QS8xo!uCMm|l&#m{;K3)%!A)gUJicPzn;0(7Dt?U$l%t2z+O%YzU)&#bM55A?%lRLUSmZq~tn^Af*&YKdN7+)t=ir0uzKb$_*>@K@1 z#Wk`QoDt(`X+OO&{Q1TryHRpQh>=7A=Zp5**sZBe&c^O#e=%>Y~N`4qxwBcZHj(A$+;RUQ1&SEZqyg7VxnHYR8Tl`*KTh zc(Uc#Js^H>)g#I?npO76+V^uT;xjRzi`ilrhK>m-5c?{C99s zT=!M-4fI0KYiHN|km1kD7*A%EW(zOXrgGnGit5<%JsU`5!V^BIkg@Iffm8p|$$a?< zAH|n0vIE#^<*NsCmArC_C3{kKkWY4#&985nPFAhpljk|g-(8=F$`FW3Ln#hM%I3R% zK$2?k+6%1SkM{H2wShMTd|CbKyw-iIpS}-kn*dq7e;zuph5GP;k-qc8;FX9DOHV3u ziCIg^6NmhrLPrW=|5O!Uq5c>N1B)8wS!)P|%xcZ^q6$Q5x%*aMh4sk^0fTLvaP9Ne zF~(O7aShJ7fRuNTk+T_amgo-kD-4D9zA|BtPnuQWTPV{5)%$0_))3mjQ&*o{yn7e_YJ z*`UzbyV}fV7`e>e@=?4Y3+4Kb^TC;}WUDdAMDUys1)xL-cYGxmsJ_^jOdmk)Ve=d1 z>1Aw`5@LRbI@)KYL0Q=0PzN`y@jjs%JXc#N5l~D1B)?P-b2Ke}fY`6aeAA_5D-ADun^HR}ujW^10Q9nYM~%GaDI2 z&Gz==Rt%;uB*&<5QxzI;UP2(cU46aHcl)hIn26O~6|~rBG^$t^u9nGxC3f4-L@-t^rqF*AyBvQsWa_9-OIghnvJ6gXx-vqyl(z^x5Z}B%acZ4h7 zdxoI2h3_6m?9B-{B|WA#HaV$|^Y$lnGgxsw%rmIYpJZ>dokc4Ks&gF(c$O9SAp&tf3iiD$9n|o`Dhj*i+>Re5I|+CmWSi}RM=@KdR@#^zz=BDP>2mF z?0CRq`W?j$2=&l{>(N`)u2G z6ZeIR;P8*DzV;c&{CI&YOB;f|tH$^J&37yRnv4k1PovMf#=Df_WR(aKcr#JU`1+$o zu!LZc1lX|SbAvQ)CNIvu`{{f?v53pH)Ptfhuo6Y^;qWc z2`v8-e03FPE^%VrqzdT-f$I$^;ZO1xI~i_Uu4u?uXrw!olvKJ$B!;1DhA!#u?q=xjcsKq$zZ>V=bI*D2 zy`T5K`=9YM?ipt9{r#?IJ!?H{t@<lV#9FSa0UASDa(uC_SOuix5dg_v%TC#QK4(pm@K{ie4hQ}j)mN7skYqkP0JESp)H?QK5hzfRivNUeD} znWP}^I6&27BBAU@c?c7lc)ckoQ+XgIKx9dS?)Csu5aYoJ45yA}$xkb`jJbbXpX+tb zK$y$A>ZOaCWz@!0DkH@+Rj$1!BVNiymkAWQkh({^BPKaXQJgxR!5kH( zCApSGJlrfGeveDE=^H-CwYk8zn}paHgEskd^4)s`W1$WWNoC<`_IR!?%f4Ec%Xfky zwH&K( z67gn?v5zX*wmw7Pj!Aott9ct@ps{4KcOXa~ga~=M*%59Gx88u{kSD%Zr|@f4URzH3 zAaL@ApR3e%Ja)W|cx-B8hMB!1wz{R4=)QT;QG@UcA~F&piCBCB5UX>UFj4u_)v=&g z;^>gmT$jYv(S1vOhZT#i5%UreU(PPGEyjgHAzmqUehZLVen&Jj?b_;3fpU zi%-v=>CwMuj)un8)yBPT<@UieRQB?p%{v(wk~}W&m3=9 zFUmlS9EcXMZJ};vi}|n9v%OAJN`q$zwxX?l%jR8Ix!3--Lo!-`HC67beyiSc1_cQx zy`x!9-S+{0*0E76PLis(N^^In{l-al9~H%r%;>guD;X)Ol7a7`X$zZB)m{r^w-cDj z0~9r^BgIIQ^Cw`12CC^;Sdojao{T{IL?IYiCIWZk-pao3+TEKIp!09_yWa+&ymJ~}-4XDaDj&+38SWO6+Kpw@L~1Q7P@ z5C7aRHJg3pvV@AP;G0%#%gZ3;#mP#}^0pAvLJ=592Y= z>|^Uf8YAS7Qv*V(GG*LItMk}u^zVjtVii9s6{X9^>8+*>v~xJg@R&iow|}M zkvDd=epb)uCYodN4A3X?m53mt1K5uuS&GplaWg9rk7sM@hakV-o}C{BgT{oiCU?nf zlflwS^J0Gbp%t=ZE(A=hX5rIB5k-l!Z&y6WbVB34+_)bmecux0x~-}-B~MvGy=x-l zafwUzB~6MdRO2*cy-5hb$RzSy&tdB!@hA&>pf&j6^tS@cpm}n?<}^W5rn8Zo$`%(+ zxuCs*13QptYcFVkKpFlDJ0*KH{;?E-1OAc2ZoLh}ZU!`%C}>LdqM@dJJhhbm3+KJI%i{_%`{45p(81g4_2>zJrF4b6pK1IiDFzkj zvO6a?qlC1iqar8UjjFaM4pRG2ilguPM?zO~6#Ll=<7J~YEs|`U^TxCKfs~44y0;v5 zb=t~I(80IqjlHeuiTxuj*x=MSWuns>dZ7FuUjA&4(jmHqA{=a=(6e&?-BAQZ(vQ~> zfzMdPqat{IMvNm0tqf zHm5H;(E04vwU=cRLElbUXo@YVPm53JTJ7H+Zpwz?%M~3q(Ae(>=bwyI!8J8?pw_ft zSUN7d)4#`B#PR%=Q-EJdWVz^xll9~w%P7%ii&Dr@x^%lBKhHC1J0c;TA9|pdi_0HP)X?Jlg~Ozvb{GFqap-V-dK!VLKtA zkj?)!R|a)+LdZ*1tcvW!L0+Ll&t%rLYGLs-BIUlSJJ+-6SW&Yz_`+YV-RpKXX) zdnZ1yQmc?WS=8z}wsa(!gB%DyBZYqrm-){8IEb2pu#&5D;~lw=Dqqo_<|QyZm;jOU zW0ah?$(sw(&X%Jr6fgE8-PgnxLmXYC)_{p8cHg|=Cdh0{@8YdUx3m4v4#Cc7nlO9y zZh8lcqsx=4p7f5+k72sktMBcv)u+YF?qYmq5pSuHvLE0ikuGjPFb&GI-?p9_>Idt% zhpjlCqz+nLWBXS4^yZrF6K>0il7clHgP^sgH?qA$ETiDtV@{-x$g`cca-}~OF9E0! z?!qOD&*o$|0T~bD!Bq1(6?<9V_RUy&n!X2hpXX^I%PvBIQUWGQ*CM~)HFhSi)GS|L zmy^m`4+bVYHxsy*(tc@nTAwfLYF@HCXARS(J(aKo#a5jl{ky?-oCRldElbryQ#eiH z%Uv5=K$9`M%k#N>%e;H{9dPyvGWC;g5HT$$KcX;GZN27<-&ZnEB9dr{^yv67^IiWJ zF%f=Pn3GsS)hcexM;Fq6*)9KulLR=qn!4;;KDT@6&bhV!&FgLffns&i_v2+j9LWY) z7KxL;H}4_9$!${}BAR9vUw;4M>J##sJ|Ot@E}M1aR9)PfMYmP~k75p6>VgqtW1EYw zsz@W@r8~&f)uEXIR)|qte6i!X(?>!6IXk-{AuT1CD1EUI%m|FgtJW1Owb$xM3+tp| zS;o!kqos)KCyl9!4%T`PTgv23{dpD}@PLUfQn&=7Bo9(B-mgoF`et>qh$P^2VLjgs z-Jc{a3b_E9$J7=z&039jk-qopOoQSuhcfL}xJ7vQNUcPDTs2$@ey&*kW5PsJi8ml& z4tro!j9l*=teIOvAPsqyU8O^o6!qS~VjXzZG&OQ#)^MU9J$Cu5wzW`Vg(uHF*dd!b zfC{~Tm@XLE^+1=Yc&?}&=_Xdfvbe(~R=yJ;m2mHGP>}BvNL`vxB=j7w#6z#|!?n-D zbO*p(?T}k!U8fW``xbmyLMiXqSO<5BDz4cAvTkFMqq}8S7hl@{UvQ9r;T=pR)jcVi zwM6lKmt$Xdn~(aCRfW*=_o&-+Bx zthPwt!73`4yM8xU@YMw<^^(+&Ax2#iPR3MPA2R#WBL9b3vglWoNm4J`iHdDMe*3sc z;wH@$cmrXTP?ng*4b6PXZzBUAq-iTQ80V+P0J+8x%Zj%6kV|w9x9+x41Ra@xrYGAw{D(H|en>Pp3m5Asb6G+6KJS zvtpI!6@2jY?TmNd2V-(^1lFYkOARJ`z5}(K?u=7XH%^~)=`vrbw~RV5LbSz=r(cm` zwOH$`!l{o&5a&n8Df;oM4;s9}#nwwUqZnSFoR3?z3NZ5wFSz&`x<1n^6b!2JFmPLyU^kb4dr;F?OWs+xc%$4f_;rQ2ZQ^TPGP9swvOfxt#?Zb&$9(VOQ8qZ;kU zBHHJ=!q1e+T_HE+ryj)of5}Q(n3nO|3Ab{Pxc4~Dd5SlnoYLdjg}eEB%=DPd92%EB zc$)an!Mh_|nSK~J*c57}ueybzxBn6gc!|IbwnyFw5w`pq$@%kW7U_H5K%b6Ls9)^<`m8CF-Pu{1fgv=I$nc;)lPtY_#Rk{IETneU?W5fU`HlhgZ zyx_!KKA~Zxi~vVyaa{$iq^CQ`K($?B1An2OJP=(B;2_D4+G?&s7N>|KpYUlv3iw^JpbR*kQ+FFci7EaWnHpdA$9`Xp=KR6+sGct z7P^aNXJ=_9Q!9kq-MS@gAOQJ_)QkjeBu(TEP7QaB3nTYorr?43arMx77&R|DU60hv zQzu(W33IwQfvQ4n$lb~JxVYwr52q5Ok|Yjhf0?I(|Coa?(Zz3ZA6Y*Tw~h#iZN^pa zZqrV(QO7Ygp@g{5ZN@|vEGk_mL}uS;iO^k!dCWOzN-&*V=R`2`3>Ntgtkif-d9J!W z=0A`hm>8`0Ibh``=>4+USdI*kDt(k8q-V|Yik#SG<~4z8*|<;lNRB4cn@RIj!R{+xR$~T zCp|Nc&(Yg|30>!*b(uaz)tywJd#M2#qWgZxLfns8Vx5Ka-oloT%VGQ5_>sx#WU=7F)Cs)w z2_$u*WQ%1H=+rtOTVYLp$H`s1i$!sT!tWp>SrQgJinQJ$?F^IN+@~EL2#n=(8_G1dyP(>6$ipGoEtl+mYm%BCnLxc+k(1~}wL~1YDAMao1;^Ye>5}s{YrrtHkP3WBe=;N9r z=w_)^i~=j>svFViWVYr;^G?zSRowJwCZy+t@aC5N*D@!kS9HN~B$>U$^tZ{-qpQ~S z`%3U|GxDoK4=~C3)<*BLV6$l@iH=$E6-|`E4V-Yh9{aK5{PKhET(ic#M!lkF2nHYFH9IsrMNNfD1 zIu)HneU4ZNs5F&8!4}=w=?WQrD_(pI&*pdOOx)Kll*!6*_u?vF(#$;p{I72Of0b2H zP=9Gv3{)L#ZV#riFh_EPo?B2ZY9&7^r%ou3b$a$8GVf(cTr@%GQ`qqhJEUCmV~?ol zHS@-P;(Ml+kNsfOvazHt!0RxHs+NQ@g*f|V(##OgiMe`1gcO?%KCRuUo>vuICXK~= z1Uu(=9SHXKZAdt|hJ;!0hU{R+f0Py%%jO3LB5*io^sIO#G%P>F2AQ~@rYQ4P+`~@F zf4Ru}YY(9VnuAv&H*g?sq3FiDKLOnG<|-40q-NT2!_Uut=7lvo_-%tPyfB|1=LC3>O1U=|1D)s9dD^GETL_%RFVwT+BE zY2Mcic~ix*-Jivk0hz(L#ldYd61-u36CVb~gd{x9nEr2QPnukP?@7ar;I8eVt_sMb zT@-dQKYE|bXqz>uYU!y_q_u&4oN!dL?yu}-?bA02E?uG(*TXzX5Q$a7hU~ooBj>3<6ra<0?P3tOh7nMb^ zzkOC^93ip689&KgTPOp++HhPNvB1GmYT6^uZD_9<4>!RI<-VmFj9T5Uzby7wYtpzA zP%?#Dp4)i-9k+WQ?-Yv7#nZib&y041)bJfTI7EUDu|QD~bu~2T+cq z*M22~D{w-0I5U_n0P`CGZ+r71RkL8!QYtp{os63~Yvb!7T|oieP=VT#H_032$GTrD z8b7~108ndS&(-H}p1c6Exe%q{tq1+Knb$p#1&k1Ro}(4!v?6^Sp&dXBD3q6273d{J zNJlpX`<566?F4`N8J%Lo-pYdg6S9x6Trqqprt>m(?CNmLdVDGUvB(=2%K1Ah0}VVJ zj2e+lc}8!|h{(Gi)*XX+3gEnj}r=$w`gsbqe|jR3Xd`hj`Z;pWN0OrJT#f(~NjQsUJ-@(ObLR78ul zxO3_eX{`E3BlTAXatgq9TqMz03CJ*I`AL5}0adYSmkH^w`8Jtc!KGI+NkKfvSyWZ= zwViN>(`qz8`Kt8bNlgM27!Aw(dL}Z~Id}(7TEp;x_u5DKuM(aNI>zMv05K!Hbia~9 zmRJ&Px>;je=U6%A59EaL3?FyoUI@%(133uCR2Xi4lJLJxy_kwe$^SE{m$A0oE~$6% z4Wr_RXn>&T4FmjN6Q4Uii~Nxc{jU{eGU%6Y+QNYfUhYMi95*A#8yE*ZOnKmby5R!8 z2?eF74Q+19_MHN(f|<$?NPR5d1}0PdK3?hl(~Xd> z+bCtMB{UMU3sUW^FMuMCiQfZ%%S}-2?(}EjH-z$?_e^3R)>s0mnL+GdStEeZJWa=W za-DV=Q;5*~5<^n=x|5g~NdG82yRNEO3T!qk0;kmw0(vEh1E;^6h1nCo!>$DwM^7j1 zezaOfz8lt#gC~%he@X-v;PuNXzE-n#eEZt2F__j3$I}bJCFQGSs#P$0_P_$gv)|!g zAmUq1u|CtldsRv{G{D~l4YJM45Y)qM@AezkV&Tt+v`+>`FMElb?i_$`)Nyp3F^ z&0MW-)cc%0>jx98MGV1D09`Iw;Fb5;v{DJB7~>SQs=EAjr7ue{03k(+KKSyhhMLh+ z@#OrOJt6fZ^(kH2dF|X2~}4{gl@w#eWj*;_@r5jPt7pC9tKL%%{!wa!eyM z35eXs%Z_5cr^j1p!rwQy)8vGlxm%LBLC@{AU^jc6 z=BtA>9A4_Fb6^GpAd_0VKs{aKF)P}gE)H&=Q`n?U>Jlf~zx>E(&6?*QkDA~b0Szb% z5-WvBxSSe(lCm7Z`g5($n4bsBLO$&58u?smQ82i`6{ z%5FP;_Plx6H+=D4h_ig_dS{7{YgcCdmq{WK_9Mih{VPpw2MZ6VU|R0pGLfH~i-A$8 zO-!g_nav|kr;+0IQ|*4SYYh^Hka8z%U!v@>I7-nq|e_1P`n>FxQ`v{ROGtaVU-DwCB(2NSW;!!oZ{NyNt?Y?C< zEPUy1YC<}ntY7R;i7})_8at+q@;N$cWZ0Oen~nAWOBAH|*{BT1 z>sJiseJ@Di;;6<`F8f7QZ`+zx^9H+Ca>~6x-IO5LVD&VI{H5~oJ>_*NMbrDVTyf$B zyGhAIvIRah&^D6kNvn2vHadg32k%#@`#k>$nGu<8-l{S?f6C3Kyhueb)ve&|2!^wk z^A*L(C5xrt9u@}$wKI+PYz!K6`*fK0-9XCBu{q6d;5NSkf}RpqjuXf|j9zUU6zm;! zyR_RWOxaIZa%$y$of38Dvzl>{6Xg|ei@Puj!zod@MY^_}C44Nd8RlshRAbDDf7nUGlG<%qT=NC9<^ z>QIo5zrt)BX3HZ_0ZmCI4F&3TUrh9eJG_*{7Zrmu8A$RN0x zVFru3Zk{OV0{@p>84W65UPtTe}hxW4ED;xWNZ50AOR$N(`y z$V+C}|2V0M?V@LX98+Pu+cLu2AM2Gog>Q&z&w)A_RXm@ykR^4i8{GQ^6J-1)7b5Ry z?E+K)5|yvKbnrY;*mPDmOEEK&3mEZNphBPCM#fK z%#iln*F+Xh_}&#MA$mT^5a-3ehVe&Mvc0d%3*D2usa;^fUBWh)J^55(Zl2*sYIXH} ze#>zmX3bKKZk>V(vomT9&5^vMtL7XY!i-=Vd3tV_x!MbtMPzX2Yxg7^>)gIPoE&Gq zj4vfIow~h{xed@;o;mTsTWX+f?H z&KS6|=e058z{I4RKfzI+Tb$nbz~&=Dego*$X?LvSq1wPO&v>g*ZEN3V$Npgtrqvh< zNRoDS*>K%d6Fc)Am3b5OtY3_wtT}hFrsTkIbW?J5j`>F<3$&g6@x6h1>B|5-tD0vW>;nzB|F=$ z7fyzsq=%b;$Y!5uke}G(@w~*(*7!warzCTT=OKR+UJv|>gN1rINK3Q#^BB9G*7#s# zHI5wWUb_6Hs%3EefC@Kzk8izh8eMUh?k2M0gc90*Tpf;0t*$^N54Xd&f+R_ZN16(l zZmc|?+vSv~RuwpsIBmt;ZLLci@0w7O5}5vPl#;b5D<9t=y0BOzkco-==*oV*Y)Bvm z>8>6R`O;Qh?-?MNmFVodN&$=NH7Cr7m)+B#M*pek$&WXI$Zu`C~Nap zYpgJOr**QycQ^fRhvu+7ju`V3=21fzN#SS_Bbz<@sP@iXmr(wuI{nEgR*qN}1bA#_ ze<|K}5}Y1VO48)ZRZr^^eo21>H;avee-R;zznK02Zg24+u|wA1r@w#>($=YO}9P%6}h4zFI)%rt&VZna(r(*WFUNa$lft zZvo_lrZ{q&!RVGg^I*sKDB7JfUqI_sbzQNUcnH*{=&qvuDqWEjLPh$+@#y;#zUctJ ziS1f`r(Nx6#vZTOHT=^RNa4Krdnp{|YH#2Im=~)w-J3la z4#Hh0Hq%;#&oU%VrVW0r24f(MPS1q;JN3@V059gRXiIpQ^ogzc#9l?gQ@D`glHS@{ z1Hlemj@)dl7a&ycpE~L0$NeP@6R@|}80w0JD||sNcGtwlFJ^u^a0tR8dvM&-Lpbw< zV*DJBCGTm4FoSbWg;DwKs*pdj5`U{~h4%7}MBR{@-vnMvp7nk=?aNnZqk837}xl|NESae{wJlGJ?;a z@7x|zu5m?h4cgc@U{EwqF0rUZ+);$ji$Z)XY<{hV#a0A~GiQNS5d$-a@U2_SgQ;qd z)^yA_fIwAFBbfk^j&qXXp|AH7>78w)91*R6bndwOi?g5Pqis7=`^MlF2xP%{J;xE( zdcekA(l&Be#6I721|*kx0J9)Gw*r|us#R=K4f%jBg4m9frM3w_g7KIO?fh7T9qf&k zXp;Ft;=cq8V)hY$+&n9cWW?do&#o*201*^}Yff~fI@G%OZ95ZWAq&2c_3g5=l3|a4 z8-U8Ai5U3mJWNcbfc6Nu%YVgG zf;?79gN+hxmyjZ)9_gp+|BvKg08df>=HqgP4(8~}nrFT)Sb6gA3RYtK=x7QW#Sci% zt@o@I#|nd{?-d1D5-9RGa#^mSvR?^&u&s3MTP@u>O7A^twLG%pevrtqIX+_N_qxf> z=6i0;Q&SFb3%#sk0 z+Km%9$Z zpt>WY-hLhC-qSwJp`yZtA};!&%uTy9`M<;hq!^pSvHdnaJUr*&Wh*9-Q94*`%>E)G z7r^9+$WMEhEIe%@u3n>Ym+4H+k0%hI`F7$VH1_8^g$f;XjIkb1rg}e5yG$a!)lA2Y zH95W{W|;H)bTBNO&aUD-d*Nm!es(N&yr}g^o}t~qs&t6|)2xlV#cRAjwwQ=Ex@YX1 z4QE!xVW%Q3krt-`h@=Y{tTI2bh(dxBqhQyh@EA=qa9gq%C|JZykc(Lw+Ed1NAoKSsQ` z0Qu`kRx+|&*$gicy9F#KNnwYeIG`jibT_Z(?&L$M$&Sizscp&;YMt!?BH!d) zKXI$U^@4y|BnQYj)IDDWM^Jr#SVl)MAMk2=KZhxuE|i+oL;B-d;yF8`t{5ziDz3>t-#qKV(|T{>D!gk2~t2vmCzhYspm2q z_7U%YgX4mr_5V9^Gkwu&&}U&Qia=v!rrqp3dC?v6<{--IKo6SC~Xvvq)^Kl?0-m;UAALLbTo8e zZZ856Zd~rBoKgGUW3S=L+%liSnjF&$Tw`U4hI+H}%qKldy3_S~6D%q;?}ZWSK^ zWJXG|(q_I-@nkoEZ~zHE8_Uf#i`sbr`rn$5`3TxZ9P#ns4uY`3WL*abP-xo`eAI{;!k4!DqjB(v_bo~p`=@@UP9uAd zSSU|LJC_Szwze@05Jby33sD!}>91ECjg`2cAGyuST_pj}O2rX*KFd>1yEzTeff*F9 zo96+m7=}uy{-RE^t_qH>MY+0KVZ!I<;uJh02R*eqb$X`vG13l`d%KisdsprkJ`_3T zpBVZIjcFV}BNBH<3TE}K(!uKqKDTI`lbnZ5Zb@UK@^B1X;E3$SCQvs)oVMzK71c~X%n=(w8!8rR5PJg zbuU6QcImoqMC1B&4Ut*A-Dd!k^LnW#*a5WG=*DITKJ&++-2|NS``@16f2h`fn+|A? zKg<=#VCF5jG}@{N+F|hr{??f{@?rJuU{Ct=IAS2b^#!U3T zNRejqWB&$4YSXLvN?1K4u9+*%HTHcmnq@cm?bJV7EThJ1(o|woebIR)(V3J91R)fk z{yUDuK`zutusbn+3YnBpqInr>Qn*Gf&4E3?Svy^D8@tP(=e-S0Z-ln7XM_jWe9f$} zKXi~Z*eq30O7K$?KADrs_7ZCet{uL~K}VO%iI%W|;s7$h&|&-Wqoo9f;bKh!bI_N6 zQKel79B$s?&U`I>ep!Wpz}w`g;Lo2^q2G8sdRP3bBq_lIHT=iT8wj5vJhj9qLZ99t z!YgF(e*5@lJ6cFTBPVws_rv+&vHB41UOCNQmL@Nfb^1opy@0h+|wlaXbDtl5@4q4CSC)MT(;QPD_6oheg9 zpA2H4p?i1N-uQ@;qr=aFb-4;`X^-z`whldQ>uJgGs5xv()1$GgRxWvoM+8ICR|2ED^wgJ9(@IfQ zP|8%=*m6<7{7;O1(~Fe}k25>#qCuwv=n<3aiQnx<67ymAHS-9$ZHte&KQ_`S zR~N9^*VTxkd5U{J)=0bBJPo+;G4H2y30G7C{R}^qJg*N<*^KQy8Kaf%f+BZ^dP@C^ z)o22}21uI|w>kti_}q@7X`mw-T$aGx2icbfCkWyKEvS)ZDO~-`!-MaBU{3&e5c@1^ z>n!uf#m)Rn)&i}fNj6md4^ja@VN9j-NaC&Lu>E9aUVD0t)05XKlbT5rs$}Guu~nBd z8)CgSH1VBRN$#prw~=tW^v zlr;`ANel{z?adLv%y1lpaxTsU_YU-aT4TivjDRo3O;ZFWz;68w{v0Jp_u}Say8FJ` zi>noC0x?QyU-h1`rpSM8^j-_Ru=`PYWj+{=J)cHlQf6wOju$1{s(_WMx9Oa_@eEo8qT?ZvJVb1+e&Djvg^L@LiJY;(Hm&4LU1LG zgNDwz=*}Zcb5pv(6N2&R3k|ZB`KRf;h#9}D^Ckm_Bul45x>(&ywxy}qG@eieaz;zz zd`CWp*6)PRU~|H1!H5I7bnQVjuQ8N;9?!(-nz5qPV8t-v(z)D5W#m$9?JB|O;^@}Z zno9k`h&FQ~2`Rb0UHRp56#7#n=VZzcTa4hJHs-jC%CUi_Idkbs$ZBmCDp{r%O6`#6 z{_&-z1r@nLcc;{bRty$nwanGFDnPp18Fxdg+|8cVjG;Yw@Cw+Fw0)pROD%`~(50m` zElYBuN6{{)5uK=ea&Wb;SSR*>i3KF!M2{!x-^nXbC0~YW-o@Q&8GyTA)|8TDrGM$07(kv;_n3%DM_*`6gWPU~j;NARu z<>C;$GTIz}1ts3ZG;AIr-@GYgD0@h0NfJx8J8-tBYh(~0(=1}r@XkmPi<$Nj=5R1h zv}@+Zyl8{gKe^N=sWLr#cRVMmc|=`0|Wm?mUXyW-oO4;#S6V zy3j%ba^gr)$XP;0*ew6J<|>;qhdWL8Gp(pZ_9n?`e;&+IItH3F!o>dG09lbMjb#p? zU{Y(I>8L|n-(}a^9lEmY*4Z+oU)M=+ab9-srY+N`qpP&Bm*ZQbuAY|9BwJhQygQTW z18S-s2-*m-l6Wn1vYmy(TSgYn#f476SvjWd8vUnnDCvY{ zK|XWR6<4smnqc-3Rg&^;E--F4TQJ#!?5~R@6r!}e1{ZtHG>tK+EiL5>3#lMgTGPP* zdAq~U@&qMP%mEekkGvX(<6pd2G0&|?KTk+@*9=w&~70 zt*TyZMpkI8=aD|7+;0lg-#LPSqxicsC$)OcL){SK9^`Zw`Upv!odb^HeV6r`O4qN= z7sJmdxLZ?YY5V5hd3d<>6rosl~+yJG^|+L8g7J~EBD4@nrg-4WkoEC1-^52GZCzT941vW3qeoTo)@IH zt%?qq=1JbuD9c+d3tI81jBO9MJNQgC5rlAZgY&rtDJYpk%41<=_ggPHTW^`}PNraZKq@2U5>D>>~ z-*QJj70sc~EYOeSaK1I^BO z5T#lh3>b?la<}r%B)};dU*%jY(ePF>b|{PIUfb&;uO zSt2i$#geNy@gf8l);`H!^>EsEfX5_$LxZc+zFhDIn)**NCAH=Ltj$6;FkA9l;Cxle zmPLMuGc~J|3uXDTG5K)7ns`;pkKUoketN}olbfENKhdyj4K^am4!i`rIO=zCnX63B z*nyw{sj2zea-pf99prLRbJ{u(r8s_oj#J@=!+tZv zLZWuXwYR!za{Ye)MGw%Wp_{q(#)Fv#(|L=M@io(>U!ORuyou&HRSSILi5?T$uTw{X ztQC`v=j|uj1w@{}XHo8(W-T|+zDIB8J-Bg4Vh&*ij^cxg_Mm_-m~zqB#q&|6rK?nz zR01h*BL>cV53woq@2#pdII#Z2e+cPOuT||{^H=+Nnhkj>OSMYC@{k%0t;>sC1?|Qo z7xWe2OWb?UZp#=CKDv6P3|Q0(^%JNekp*ARkR2Y?BX^H?`LbFz=L1u0(5pGSr*gU^ zbS8jibHGivX}_t{>&(v>Gk0v5LZs0*Hxa5TH~ji&!)sDwym!R$LTfoSWgXbvZ$+sN^)? zKQ6{im{vj#0eq!mSh3EoX&ELct_xgQRODiTwKMu2+rwK5JxQhgH6i}=F9!WwTaCzzQCY#?QOk0kxsFtPx6-(;btRX^%L zd_Y|s;6$I*Q%VV(DWXn>?0XB1?;ZuQ4908_=Pe>56a1R|!7-Xy1DW`L*E`>6zTg?d z33ES?UYvFZEb5ILz;3(6e|Y11ZA?O|mK#<;7Y@V9>r7@YxY`X*!jHKxlShZM%k{P= z3KH`YcNfl$=`8OD2Z~nM6>^GJSxuaDsV9MpXC~{#YhJ2wJ{|impNYTAgY9R=l#y6; z`CaLxzu&t!<}1VyN2RQ4zw5r!2Bjy$#NIl*lgqX9GHd#DcC#Qo=(*Q0LZf7Ltq^5N z;eYS)WWMU(`Ke`gbg^<#T2Ky0jYIgrAUG64n3EL#@Q19uwImq6%AsqG3JHCV_U6sC zhl~5F0d`iDtQ!_iVd`5lb6b-2f zqg~R{+e`$P?}-l1?nYq*4)@DFwXTvl&z7?_V>3p^V7IhHxz_D47WTmk zycq0Y(GnkH6cb0bWLZf0&ca!2p(OEKfLaNs(7?TPnN0B0wXck72Q8SXl-W+v>>KHtX&RuD#7B-Z$7ov zwJz2b?~N@PRMIIyGa`fV|D3RCX#3?)G zAKUCg_W(fD0qoB~&Mx7Dy}AO^cL78VrHC{OD;JJReOx8n5zj5mEQ-|+&+LTo1;kKu zsaph24l6WH{Nhc1o%Kx{IlwC2 zkyyX|y&q+JDzsH?0Jn&6ZDaTVVBsz1jNODcb_sHbJ>JeWRcO}saZ=UCidap6-CaY- zD<}Ry?a)7Q#S<5RppRhfe?b~g%WF_N9>IPC0FA8&z!hd}?g2)G^DjmOm;kVk0RZ3) z;y=J*vl~crIp6&^O9Jwa5Dl%$8(8GE4Zrtl4FGGJ01m&=*8Ss;F*#pDWP85J$BNsr)FnaqM0Z~=GE~3dwZCK!P$A19Lre!k_57C}@=HCQh_fHUY z5lmB*KCf4ItL)vdUi665C_V7>znNRT8{iW@CiQVFQH?_VC~)|T=ojPc3_BGwxuY+{ z{iGbYo0RF~r6yV~WCWz;_UUHP}efA}^zEJ}0-YXUp-@YDvT0Bm<@OFEQFL}4_a?tchtj&2hnx=j+e z;v~p}sh|mtOY;?TkFVF}=Njz)e120lk^~4XzRO(B{GnI^lQc1ym5Le6I&l2bv@fW5 zcWalLa`YP1@`sK_-CVc#_2L5?>KfkH_t9ST>wdP8Vn;yj$1_&WUNitpxDlb`FkXU} z>#{VKx_{~H*M2dJ3xi%{?z@^+7>yQtyEMg`bQ}f^TaSx%z0+%;m&j8zQ4C<4j;g6V zOZArzuaAL2iK5#oQuTYQ{v1!!*0nO91_WC~lX?~(z-v{OP zc{sQ=Uj7W(LXU_Ha5w%!Jx#Xhx)DLMEUo5bYNY;tEGNA2?P~CRm&4L-$B)}v6q=_( zbwBZXF%sp{zD|QV^BphHO+Mr1X7HT2GIyg~Q7c-~WABZAet8vd8G@5rfyL#bZd{2(@?4Zr1f`MNwj ztB9hTUX_oA`hCj2Ga`U57RR*T&h#kc>|%OXz+LgTm+_bVTz*v{{c{36nv$!-j$6h5@=*s+SIgGZwu;1@I`1D zFyyy5?iQ z2M`ad4!z#{&oxQ&;BYP)WR>CdF19WAIK3@nq96}deUdI!q3l7z_Y}S=Q`Wy}bSB+8 ze2;0`W}PTc8*c1|3GH7pg0pa3sd!ZPM@a;p zsiMy}Z}h6qfo2NKsQ~{f%{JEXb>(C&JQ_kc`I^^c_#!7hM~Y({C4C4>lXj zDQ0froQSoYkTfm)B_&SYVg4lW!bxeUl(-6OSE?edaFg%lPF$)%JXVo3tA!e`AUz(l zrE&S_CfS~DmzH7L3Zl))Se6CDmrmb!<9tAfa#7&GU?+>?ejglPS4Bxd5AP;to=0(^ zCI5#cyJ1A$R)k{a{FP%MiU92v#$VG@gA=a4Ms1E^=O$z~_0DM=*Dv#2y)j$B@4_?N zt^dLF&gS`r7XWzgiZk@X2L{E(n4N=TIP8LSzv8FME5>(|oce>q>KBnC8ssU=D&{uj zBx(tXc?V@GRq0K0MpmWV0+K|;dZrmV&bQGnb?%6-Z9Zz+be5l|2j zRFtV~*>xbYWrhth1!V87A|N0`*;|3I0))MX?7cT($P(GIck(@nfH>N(?X~yb@5|{q z<>V9_^Cr*#|C?`yq}*~jPkl!faX%dd8QbF|kDIaVDmd1?RC4@RJ%?TgrOn$vZLAG-am8XCpvNQS5K?I&vbk zg2R34uvLha6}R(3fPJHwHXaW4?JOh$ zdz7h4OteR4pu^2#g4}5%123^3B+aF7{s*93!wu8Kb<^B7&7>{l)Jb>LrCl_)^G1Sv zd-#bc*wUb)a%yqP4A7EGMtSMz#&ei0kK^g+XA6@{zP)~u$qQQrX67^V@`5qLk7p_TyR+}U%ZEoE{=Fly(+#u-v^=EaPSd$e*`f*TBF83elZ^JD z5QjvbL2W^b3JpJ2a7heQBOmA(2iDCDNc5hFme#y2swT`20w)6`g}VDr`9`Je9v>O%)`!#q6*a!E?|YeP;IUD^p|%GK1}M8 zH7$KgisX&g>Y85C0Rbm#L=l`O270BpXF}NDI4wy8sKn7WZmla$Fj;#J1=#5eZ@5P}YMZ zvRUj3THFePL`9mYGDyX>pfj#8}7CFA>$eEh>#q;qe*_nZ#q3OrPFvG2m-GY zjFcy7%>zD-%aTE_HeEl|hHS};CquNtc6kU4AcGW&C|jJnR1 zFOrqMf}bh+KxtR{&aF@$w_x5tKUM;8stli*&I2^>j7`^%?ViRCD=b`RRm^S?o>bM% zFil%c7{P*3mv>X$g`ZrE@f17us?;=Ll5vju(G^Yp;{ozQ0ql3xQhMK;GH2c3P@XdR zM64PkBOJw}j=GXGn?}AJ`_Mo43s!R@?g5&CTfbgVnP;Q<1j$$P$m$@8nV?c8_wq#O zgx`fjQsH=Uo)QV>;jvbVQzrNxS&gEGy@@!Nt-w`I0g};)z@3?avcSS>7DRu1KLbqQ z!GK_%32!3rzW5m!-Ug#ofneVtdnb<`u6ukFfQoD9FavnsJS@a;AC*_`ja zX6a2Ir*?9%zzeYu_sJSmu82FxsU|2@0 zB3H-V8D4yyD#?17^!?98D(MtGyl9;0&(yBIB zN1>J@%X<4vBQH$W@5aUK0vz938|viX*ewGE`?+RizTam|x5=JH z4igD@xjDx8@V>lVC9w1P`3(4H@dPp_6RzlIg~%5<=*r8dO0v${u8jBwU2Kr@5b%&Q zw#ee#^b?{-5t+=@w}$a091qB5k|_xHKNW9dQ{o*-r0ds1H(NQ8S@V(|0Q`;cBSscu zE1-Cd$*(q6ERM^~B)?*Z z0S4GOf-4pelEu+4$a0==Fjj!9=`4}#eKo(lL<-bqH+EMC{`q5q=grsVV1NozzBuK9 zed=+YP^-7tWj+%dGuIo%G(3EHXQtnGLR@<=+}o0SN7?>~n(1lKw~IIFY2pW;=f_NJ z@=2=`jwbgHndcTHC&3=tEdkKAM#O0Ro1&P8pyRqNE)zSQX_;Qx>9j{?Ij6M-d~N_% z-UaTa%s?;l34k_FZuixW1@YpNq^<380S4F3F)*_!gc|1c5a1=qrplA+1^)# zIu?`0c2S|0)1Ly;)xplm2r=Ia@aP~nmGwkBlHKptu{t*$8jDBOc!RFvw|_Y+EP>og z6(_!wsb8SexAN9>zU`P`5&4K0iZZjvDdi)=LH@!|Shlq%{5$)vyy&+Rsl_^)b58O2 z0UG!^(U04ux#p714-dQMp|q3%&PG&!2#c_1no)U(kV(Aqp z&v=yRgtT>Z4^P`BHC0S9GZXL$#_}A2pVmpDW9Z#d3;G4?BQwvj6w9MzXaG392LM;e zVjEiS%Uxa%mVeb4q=c<{e~j(P|&@4tb0RegN$UE15vvl(j;aIq&o0Ese<#-`tg7sKK-*)-K0amoq9^V2~Uu5e~3 zf4rb}zbaC?_M#A((V>QeiOU6^IS1pLHV)j~ow-{EBlC>Deg*cpSa$d*+~XJC?kIc6 zX)f0Jm&D|UD%>2^BIbCCC}U|ob9CiUFC??u3V{w{#_LyX`SQ7MV5OU!O9h2lL?C^k z(c(MggWe~wmCP!!)Hk~0vHtCu^>&*o7G35{EJ~;@HcE=Z_pV75bK}UZ!zcGxS+1D& zhgTA1i2a!o4Hr51c(&x_g+h%4C$|RU9dSY&7^T7bb`y=CtM^u#h#NtQIb%a+ve)#8 zY|CV1$pp1ll$IknM}Y`Pjf}W`+aSEz&;17u+OG4c!8v6sA@QwJIjpyr-O)tt9yKxR z^HO?()ujRgm8LDqQ=ILjj;+jU4@oj>xUxzjTA&j*dXZz6B zvCs~M8^sW%bB$#7WxZN#K0|*LY{qhastws=*XFn>hucR}#@g@>6PZahtPmDaqDJrg zt=8rC$EIah2?uwiGW(CgOvwO$)})H&ZT2((L2d@i*={4jWR6tU;u-zXcQT8>S=MYB zDTf~|7Uvh1_-|4mrLzOBWE1eY=xD-uEH@8Z;R@^b3&i-2b&caF1=vxUnRNox02_~f z_R#kf*1NP4KsfJ`LB$`opOS1oa^RINY3HG(=?+CG$PSt&u$U{jeaL%$KcJsdKP<7q z{<4HnPGuiQy6O1Kgt9SO90GVO^v>jf()H-LN;!=z_k1I3J>%%cA>-nr*js&yxrL)X z`K{$8!=`NmY0i38x)t*_xqfZpr4_#Vwogk`Ei}1q$lZaJF|#O<#zTB1cP{lj7tg4!6d-rLMYd%5#RBhn9LJbe_x);zc0+of0-kdc#MMYuEcb9a-spZ*+ zr!U?tL#513+}k(qmUb2=Ly!g&V4mpW+%%eSB&u~7dh%l?rKzB}64VO9Z@0;DILREs zAJze!ZMpqg{rKORlvr2+IDf!6-bKSry@cH($TCqZ@BRb+ZHDvt@n)76>j3>hDpMSl z1-A4?i&N&?dN(n={A5G5+Gf%-`QCipV3SJe<#djjWRvlzFHF>922fLC$28z!jIokTX${0U|SS3Ci-6#JEc1Dre65FiY+` z-YraHO{CPBH;20i`f_HTObm~+4QDr%3m1sI>15aI9Em{Ml*FRwz&Nb>Y8>hxpxLE5 z!6Zy%A!~Wy-y35xKy^mF9mq?b1e@#9X6IDQoX*Hsd|*}`Xs36(DIO>yrN=!bR!&nh z1Uxa~RS%CzBSMoa3ADy_?dYW8@u@fD&e36G8PG!%g#1uSyO=| zxhsHf589~?Uu3;=%nko=75AWnt%T=|`w3FOb;C+SnP51DYlSMzrY8I$f+QD3j3l0P zB90)Dbk2HM6e%)^R%t!t%Bh$};J))aZ2rC=M-ogwX7u#iVFH%i2d>rEOqbH)!t1QH z+ujjZX6fY`v!6RCZwy-ysjW>$&e(lsXv699+qi7Db0rcI7b;`3{Y+^Ddg{!t!*w}& zC3>%~XZ9Vy7ape>kX7KRM%33W(id>+^NHjqeOz4b;9H@T=fQ1!Clhz(wA=UUMMchqoX|Zc4V)THwyfgfIkQ2!KCPQmBy_7T zJfZe0u-3(-nMjScQ?qBa66g_(N_BeFY`7jL)2|mw$4gOm+R7srK)tt!@Ns!=E~D3C zkd8+VLm>;I$EB=_LlJgVHa30HvLuMCK}FgyD}$IiZCnqMW*KuK@WxVtH+G-QZu1cM zZASbREL07O+U@>2O^X~%Qqra;YpOq&Vr(-JM!e9=gQeRsJxUQ`vKG7zDPAt?R}((V ze+aIduiw$7(Kg6=;%uV+HBo(9&*L5SN)8`aa2L)8_vQHsQP#nmhzsa8B_}5n!74A^ z#E;!_6{=5^x+W?D%O%$h0VIhonk4zS_g&?(m`>lumpv$f%1BW$(Kpes%kI=HeieV8 zy6OiEJPm%L2$huXFj-trf|f}`505UF2}z*cT`jIvP|(F^T@G^Xes-rYP=+?*z6qc55AL-1$foD{$t_G`PaAYPKx)8p+_?alx8iFa&}G|*YTx#j z3wo*E4e89Ww0(ro<~TAL9^rRRt2t0FIk)Tu4y_3NW(|yKjw;^3Vf=N+ELD8EHJH;T zF+$%l)QAUo6wLK}5R)jj+R{|Ci^d(C4X||_M6^=iRTsrI3-_Bm}atzPL zli4?u`_6s!5ACspSvct%TG96F)eiTHGo0csFlGZ5)dz22yT};eJx?C?fk{JVL@4o` z05M=u1qZ_{wTA9PZ*g}##Je3i4i{Almo=^X7^k?Jt)Io-|A_d+8$6#Ve0jIddJ@a3 z4`+69UZDKYM}t}IP6$CB@$WmG- z87s-P0}l0wtQ-fASqtB~sGaQAq_CqYz=!_$9Wv!ujhju)4}%xRz5IGF7@c$I@Iago zJbwe+SPHdqH+uK?u07)M_g1qW^ST~ zcw(uiu&|;%`-y@UH*g$w3MJ=}EF1Wxzj`!H{4p6dV>-C@jN z;&yRD)Bl8pz}TYv-{`=J^ah~;;0ihc_ozz~!Yqkqwen!He)0u4Sc_JF0((S%8tlP` z$F$=709k_v*tE|C@k)5$S~bo|N7agw)TUL^LEnqVk8OM4+4Jz>N1J7I8!I8?!j$LT z|FMa8Jbd-qfpNN1j7bT%ZPKK90DZ7Qgtk)I?k);8xMB5lX#Zeh01HmhgTzE{-U$nh zTMemh4T1ygxpQmH@)YJ{Jhh=7h%i7SB{u-GU!fiOGLI(IOCk5*nLfgd#|a< z&)!7FR!XO17={=lP(I3Ff4b@zLNxrCt zfma9Q-I15sFlPE4!jal>+><1GG!M^ak)zT(Fr|d`1y>&ZzfYo^Tv-_H z9R6^>VS4$n0qVlso0=r~8sD_7je?S?G*M`Bqcvyx!{t!l6CUD|p3h67Vo=LR1gR({ayMr;Ij7L z1AvOfDl@5l*XAPFXRZ++t}n>^@L-5Gv_PPIc)@>XnC>T zLY>k6iydx3dCC5#Z)T-PZSq=d4Y&}^(=Edk6cS;$DZT&KJgA|o5pVY3-wk8}aW>a= z#W#{3c_=pFhtCi*3@917wF(4!+xh)Tnbg&|h2+gX|m>baY=#t8? z$NiflvZLRr_j*(yV=s~IB8w>2Z+u^j%YDXquJ)B&NMXb8T2%Anpha?E{gFk_%zsEf z+^2E^YyReMHX4NPjR-WBWOMoj>!&2N2BAgxY4y0f ziY@!*M7Bw!_)KwExXVuBqFuo18RezM*SU`~!@EvqUs#rPcpG6dXIw~P0k2u zjbt~cUy<|Ge`R}9D4ro4xtVCz6Te70-K_zggj}0DQ#{QKPP@Zs|L-0Sx2Pc$0pSlT zOT|vXkVAvlrKPJQbHZk$h|^iN>*UAsy^a@J-Gb0DV4@d_L}oSTD`rib0Ky0j+_mcb z&P0@+@yYu*V+Aa#q2}^K<5MuNX^FVT-gJNKx>K=*ywVAmv3?^h*Fp=?yX?ZCUF0Y5 zhhWz-%I_P7CG}XV&e7A?iD`G}Ra`Oe<6t05T&6Yq6Xa*+OsY?*S(8GD?||~0VJ^?s z&{DdxU$}uDA#I4iVbcu>kDl;(IeqyWtA{TFohC8`k_1xUBNhU{9cPVnjJp>mTn~8U zC1`FQ9rSfDj;q}q>zkG6L5xr|Om;IlS4YDL&m-3EE`87j-%H&694I)aN)9!VaOl^V zU0Hc=@dA>Rlj~6F4Mb*kWsb3$^)~4NA|k?<=2PlM-qs^Ii($E7FqP!H1lWtE7~aXa z84Eo576iw8lgYmt3YsTaUkx`vY(0$&riBX(DiMRHWH+N*2}jGPPy&~ z=8!p8wTKybHC5n7tkb~|lMw1D#Bd{Oage_)`OJFAS^UkT9I_$6sdFpo+z(I_|Nc14 z^`&5HuKZ%Ts+iljj!nu3MMXRiRD6vUoL*@ zR<&D+5L4*E#7q@zBdDA>wH~V9^pKh);&Wf_b||K(NxMt>riHH)e+!OA>0caEHln}q zPB89rqbuihuj&?B7H1&A>T28*HoVq+I6s=s_K5UNO?@C0Ub#}RX*cGKa3*muE$A51 z$zo$2@M8f|VL%bbd}HYw0Vmsp77FJ(P0A4koarC@hs5${4f-FM<@K;!xOIhsk2>o# z;6y)qw$ST96%5R1wj-}+mk#Bw%-54QRoR)!l|~v-Bni+nuq=6XUD`*9x<0oOY-=zd z4C4D*l?ga-p`j2=qi*S|pMCnYUKkQ3v;wLC+C* zo)O|eo8pSU8u8!<)`f(dtVn6`>WydZK>9{s*xw(CdR6%^wUEMB;k#CnMY?BIM9^?- z*W>B!ESbWIz12t9E>RT3M`rm*0Y7V7GTP6|oObC8n$+&Sozo14CzYR0_G~$mn8l{( zLEG5awV{xxB%x-MaYF$R@vpx0vHrGae%Tb*99POT$?ppjh0{I$U%@2J4w$r`Rbo{K z11uclPTnPEFeaHFIONb{>D)fT)cOFB-k-eKZ{@H>$0@-nE^o~tP) zvacw80YC51CEm95qtN5GQeo&;?CLSs+vQIXW8HwGJg$pA4<#(ce%>Q=ujv=7TuDEg z%~?P<1r>HQI73Zs-`fFgO*q_eb|j5MLn8qBGtcLYA|mh`Q_laIQT)=CqgzJ4T4;z` z0e5r+ZfU#IU!m=*+wW7>6511>oin#)vn(r;&W;U^T@gA@zTSv|joK9@Rfk1+vU2a8 z6B1&g32Wt{rMNLZ+7wctPmFIj_)JDEB`;^?LcwplTtH{3^ zi~xQo?&oOTbC0bbF!>B05wnL@8OuHS**0nhlK+NYxPqEp6mZA3(tQ8e4}*zGnNy`q2V9FJ4TSt zI91X@E=Q6Kw!-USwfkBoxEW7|c*haq!NwR*l?(S}b}K?Ef0?7zogVHmhZp3}sI-y} z@&}o$4i&>OE-Ca$AXLCYS0oLAd~)Ks444F;Q1qtHD9WhS*MBKDc&~e-Yq{0H^I62h zFyCB7aj5~@dSnBiFe#5hpWp5_tf0t;De|nqbJ%w!iF@|6f+f7_Fp8ry5 z3OA@e;?}CgX)ZDK@vgtuCH}#Z92@e9}LO`euS{l zkF%?OKs_|yYMGaIf%UxavxM{l@0Rk$Y&porQsFPe-wio)ip#-n0hm?go%v?+ip|nH zCNvR`e+>&fm((qup*j1O<8D=)pK)PF>XLhD-w~JbudFl`)!ofJNrI@BOtEVC7v#nX1hkKQ~B1=iRSCxflpQ%Rjl!Ct%pp)>x)$adfqoYizh4f zaD^a;iIc62V0HSCxDFhRs@kF+kdxRT`d#HUyQpC&&QL7F#o2jvS!f45TA1rfDe_K5 z@m&tdvn-@$r;i{Xrp9y#rY8bXb5CE)ND-BaefP58Ca2zce47VuQcF1x6M+J!^lTJVG*L8q5DqC+W<9^soqb# zabsm2ITB(lNBZ#L)-#8&{uO1x;s%bj+3bJ8O(UIUfdP=#`h4;2Y62eSrEZxI_{)y4 z7Mm=U6=$wKVcpXFSm0nJ(~t{Kiet}_M++JSYgqf;J{Ao5hIM6AX-d6JYtE@@xBTT; zakPV}CbMX_MU6O?kd4U->U*-{wAi%B>h$usNPJo?am0XhYwA^vCg{NL#rV;A$9-VZ z-ad1HX*Rh1ATDw)&kraJC1~FjIhyfR-(^?xMSb_NtNQL#VR}RxLbkSQf;n3?`p`O*~rVJXE`mVb1rvOq$ zniiS==M1X97wHEE)u<8SiDCiel?}MkwjBOx@?F+@$8(MrSk8TAvQZ9GPPOY9tGZPzMfA%}D6V(C2v5`qEx1&%m~9-G=a`w9$IG+2 z>e1AW$f{^D*0-b5%ui${gAEiIa1VTVWR!ERahGbnQT(q#%fB!!^XBzyCojq-yld{f z=ro1DzAbnpNn7{!Z!S)Byb z>k&UWEv6s`8Xu6O*ZjStq=Ly$ z-HnocvGGrWQO8?9KYn{zi8w%`=W|Pd9k2A&@&-Z3m&G@KM8mqGoIc~s&!O_w zntQrmdUHhN+j*Y}t!?9!+_h_%m$2!wMgDVGbE|`zqrJpAYXn4b7rQH2(d$jA`>DNx zo>>&#dg&M5oLaYtR(pn97i(ooa2O9E%IRK(kx*OEgg)`byavprKyVd5Y_#$A{c zttMu@xo8bKc>pt210Opd_mEv{zHxZt=76SBxYwI4Xhiy#Koc_EpSN6e%!m=<-+@np zMgTbbGM(Fzt4Ad^8Xn9`#p~I@UZX`ykNDJ^FW(HJHqB)h8eSwe`~lunm)O+K_HZjQ zxRppRqo|;37D35Bl&6&}EHDSR$mt_R8gBH!1)8$6-2H_GbF@O^D<3sk(q<=(ax&em zFI|#@N<(E9_15daU0iN3vprg0Dt~fUQ7V1g$)J{pO>%78SbsHsddA2{)9jJUznQB<<}QvaadRxt5qzdCD92yB4nNSzJ66RNgg@+fbz0K{Cu^_U{^{ zYvW$4)_)RiQku0r)-`~$XF!B<(76IM&I~xX=lFB+w96_chp9|P5D+|S)JsmZ$nOK6 z5U_ud9}cG2LOKJ>bwDG}lN#VxeIxDpza=SO6d086ashuLRavL%>;Jc`JlV-X*Jol# zk=xqf5@Ga+H84bnbJJ|@n03EE|#v%d-!-NHXD7qsaC=pn~1poIlFi%yvz%bPMh^=pj&eE*Iww+)ZWt#{7NL{jO4hR2 zb>&(UO`e8jd-A3{t9+P#7S8i#*P0eLT3+4v#|zXD6SW1(e+zwjnq7L4D|Z-uE)D`*E&qr4MPlwqIXQH z&r9ko%6gHbdX*p ztEmWRp4b9q_N6e!!c*n1YfXOcFcRo!Tx5dl+9j8c*vyi<64%|FxhNqxDfhm}E+t==gNPW8nhHJbqqJDwIlO8@ zjmSS^Lo2|_l^rEHNlyS*S zw0T%1DLAZ8-Q+kp@FuhEb8HeRFV?&>)9Xsw$a}OAa+ut)V`i)-siNggaL*L(0P^O* zZ6EpUSCks--)M5`{4Q?Y~MzUvV?0_Fu3jL~(^47vKEANtjhMztP_=q-*){-|QYYjnT(26_kE2NO(DtKmn#B4bzD4#b-h-By+C ztP4^s`2PYb84b#UTX453G_u+BXg9k!{}@vO61HTj?j5-s{FC2A2iI$6;yU#u_Ih!| zXc~uuNLn=WFBV8-NuFD$HbgRwf09V{mFf}^y}{&}iVKuNu?gIZMWyDd{-cJuwC0fS zCOVR5>3sbJ6z{x%PDY~xj-QJRFuOkRy6h$_Y(z60W;>etTCdq}NLl<&#lZPN6T;ju zkr)V8vjwJP?%kp+y4eQP7ia5^_HOO<`2cTh1X|1doC*Yi5LWc(;`7&Yx0YaUVsj9u zeH94lN1@BV^fUedQvP-Y11YD%X)w&J-GGe< zfRr<#ardb&JDlCA7XZnhlQG^m9N+)kX|2T9_q1JW`=_W|?bMo=1h_9Dv*#BW+tD6K zS2Q)dr=Sj)d_~RLyM5il^MjnP-)fgk9{HN(g-us8Z^o|ZZ6f_Nz?lJm0HS&Or0DW5 z@#GO%Ul5lnJr$M3nL%gK4=E!MnXKh?rVTvJ%v40JRlDQ!nf0XtZiflI%OvjND+-f# zzgNlARW(zsosDl_RJ2je?KC+KnR21AU0bVUEw)~hYg<#+E{od5FJGW=*uJz!_F6(~ z=J{-#bV;Jjoup&uhJT(HZn*s;lb1IF10Tw;LmlLV3>#}=R@(Myn4Oc{60iOtx6jkf z3J7V9PCN|!;~8eCIPY%(W@SX_zR2LJ1DNT%fsZ*+1ANXPvp)S)MO5vu5w3#65~=LJ zuX@#rW%bV)VTD<_PbW?`hl`;W6nYiw%ua4E%^%p^0{$orX+RW~h}|(`Kh*Yt8n65} z5M+8H@&ofBe>)JVSODC)T(3+Ue!ks$KfA3*#$Exv17J-0aJYv%yrZK7bGUB4Q9kn> zJ1qMhE!~Xv^E?^``e$$GX54}rvMG$`Km9TOpT9uTCW;5-PSf%RIgoPBDfj6^dRU1u zm*tDzv0{~*VjC~2^mRxEsux_js)%ak##J>q7R8fEjQR)dFH+-I6<1HFTX!V?-Qb9c zlj0;6*0Iz4cWz4l$qz}B`Rh^DbGPK^&HtKu=liwl$=*-^ z5eV&kQSAX0@ByZKvEt7k$clOJ9(z}SI_42W>421p$2nCs59$9DjkE$WASNhE;LZKn z?L~tyX|zv6_xBN~jmU%D_EXTeAl~%sj*F}gXqDEgigW)pm06BGNT~x@WUq+TP{ix1 z^Sia^mKVgUopy}A9+t3Czj*}V`l-*Z$@<~9bv><4luCSLF?Ry`HRHKKpv3wK8BJ2Y z=$ZV@P~R`6!z^BdpVGjFR+66oA2hk5A#fv+fd7Q@ApVC*>@ zQ}ALy!hb`GntY{o5_Zt$qCp2~yqMr@Oy9)~>^6)j~x5bjmiR zNP91$?&6TBgQCGzSR;x_cVQt! z5IKH-{D;-zHGNx)S8cZvD)O!0wqvTadF=^=Yf)(^233t(>&W3x7nvQPQ58n6rs5^T zs5#I0b54I8gkXBQ0Id1EQ?DxA_vHq+D3EhuO|w;PqNmS3^+j{fx&FZagRSVHT|B+` z7BmuZnFkCMX!Mf_bP-svcj=jD9k!Z~688P3X(_2R%IMuHZ6NT%PdW9MaL!5@Gi5^p zo-fudm_)mm=qKxOfViRH0Cxk1&tFoS)T95xT9nl1CKvH$Y3%)gPN^kt64<&q z2}i0XY{@E0DUPPLg5>4gBVKd4?g}deyQua=;MzF?G*bK*8)4_cojkzJy|<{JIpre2 z?KrToetRu=)=by{Mg8muHs)RCP$Mmy4I1kwK;P*P(c!`QFe(Tl|g zeBov0VGu+Fk7hO7Lx1-F1b!9$E5Pnt32qyVc?2+luQ}$C6a9By{Ga|Kg)jf~TNn78 zffWlp-dTV*#gxCMMFI2HJ$8QrN-8if<3I7*{`|H2(|_In=09>91>R{CYW~;aNbtiU dG(I?h<-_oj=iQyB1?Y>w&nt2#`IgGl{{gXmd5r)7 literal 0 HcmV?d00001 From 10a3ccb678abcf0bb4e1fea8dc5983a9b8849820 Mon Sep 17 00:00:00 2001 From: forhappy Date: Sun, 26 Jul 2026 13:43:04 -0700 Subject: [PATCH 5/6] feat: explain graph-only control flow changes --- crates/compass-semantic-diff/src/engine.rs | 54 +++- crates/compass-semantic-diff/src/lib.rs | 1 + crates/compass-semantic-diff/src/logic.rs | 253 ++++++++++++++++++ .../tests/semantic_diff.rs | 101 ++++++- docs/guides/versioned-history.md | 14 +- ...ntic-diff-real-repository-qualification.md | 124 +++++++++ ...6-07-24-actionable-semantic-diff-design.md | 8 +- 7 files changed, 532 insertions(+), 23 deletions(-) create mode 100644 crates/compass-semantic-diff/src/logic.rs create mode 100644 docs/superpowers/reviews/2026-07-26-actionable-semantic-diff-real-repository-qualification.md diff --git a/crates/compass-semantic-diff/src/engine.rs b/crates/compass-semantic-diff/src/engine.rs index 554eba4b..7b566fc4 100644 --- a/crates/compass-semantic-diff/src/engine.rs +++ b/crates/compass-semantic-diff/src/engine.rs @@ -8,6 +8,7 @@ use serde_json::{Value, json}; use sha2::{Digest, Sha256}; use crate::SemanticDiffError; +use crate::logic::LogicDeltaIndex; use crate::model::{ AffectedConsumer, CLASSIFIER_VERSION, ChangeDirection, ChangedEntity, CollapsedGroup, Comparison, Compatibility, Completeness, Confidence, DependencyDelta, EntitySnapshot, @@ -645,6 +646,7 @@ fn classify_graph_fallbacks( findings: &mut Vec, limitations: &mut Vec, ) -> Result<(), SemanticDiffError> { + let logic_deltas = LogicDeltaIndex::new(input.source_deltas); for node_id in input.changed_node_ids { if matched.contains(node_id) { continue; @@ -694,19 +696,45 @@ fn classify_graph_fallbacks( "Inspect the source-level signature change.", )); } else if old_body != new_body && (old_body.is_some() || new_body.is_some()) { - findings.push(base_finding( - FindingType::BehaviorChange, - node_id, - FindingOrigin::Direct, - format!("{node_id} implementation changed"), - "An implementation digest changed without supported semantic evidence.", - Compatibility::Indeterminate, - Confidence::Unknown, - old_body.map(|value| json!({"body_digest": value})), - new_body.map(|value| json!({"body_digest": value})), - node_evidence(old.as_ref().or(new.as_ref()), node_id, "implementation"), - "Inspect the body-only change.", - )); + if let Some(logic) = logic_deltas.for_nodes(old.as_ref(), new.as_ref()) { + let mut finding = base_finding( + FindingType::BehaviorChange, + node_id, + FindingOrigin::Direct, + format!("{node_id} control flow changed"), + logic.explanation(), + Compatibility::Behavioral, + Confidence::Exact, + Some(json!({ + "body_digest": old_body, + "conditions": logic.removed_conditions, + })), + Some(json!({ + "body_digest": new_body, + "conditions": logic.added_conditions, + })), + node_evidence(old.as_ref().or(new.as_ref()), node_id, "control_flow"), + "Review the changed branch condition and its boundary behavior.", + ); + finding + .completeness + .insert("control_flow".to_owned(), Completeness::Partial); + findings.push(finding); + } else { + findings.push(base_finding( + FindingType::BehaviorChange, + node_id, + FindingOrigin::Direct, + format!("{node_id} implementation changed"), + "An implementation digest changed without supported semantic evidence.", + Compatibility::Indeterminate, + Confidence::Unknown, + old_body.map(|value| json!({"body_digest": value})), + new_body.map(|value| json!({"body_digest": value})), + node_evidence(old.as_ref().or(new.as_ref()), node_id, "implementation"), + "Inspect the body-only change.", + )); + } } } Ok(()) diff --git a/crates/compass-semantic-diff/src/lib.rs b/crates/compass-semantic-diff/src/lib.rs index b02770aa..9b6d3d38 100644 --- a/crates/compass-semantic-diff/src/lib.rs +++ b/crates/compass-semantic-diff/src/lib.rs @@ -2,6 +2,7 @@ mod engine; mod error; +mod logic; mod model; mod verification; diff --git a/crates/compass-semantic-diff/src/logic.rs b/crates/compass-semantic-diff/src/logic.rs new file mode 100644 index 00000000..27da70fb --- /dev/null +++ b/crates/compass-semantic-diff/src/logic.rs @@ -0,0 +1,253 @@ +use std::collections::{BTreeMap, BTreeSet}; + +use compass_history::{SourceFileDelta, SourceHunk}; +use compass_model::NodeRecord; +use serde_json::Value; + +const MAX_CONDITIONS_PER_FINDING: usize = 20; + +#[derive(Clone, Debug, Default, Eq, PartialEq)] +pub(crate) struct LogicDelta { + pub added_conditions: Vec, + pub removed_conditions: Vec, +} + +impl LogicDelta { + pub(crate) fn explanation(&self) -> String { + let mut changes = Vec::new(); + if !self.added_conditions.is_empty() { + changes.push(format!( + "added {}", + describe_conditions(&self.added_conditions) + )); + } + if !self.removed_conditions.is_empty() { + changes.push(format!( + "removed {}", + describe_conditions(&self.removed_conditions) + )); + } + format!("Control flow changed: {}.", changes.join("; ")) + } +} + +#[derive(Clone, Debug)] +struct HunkLogic { + hunk: SourceHunk, + added_conditions: Vec, + removed_conditions: Vec, +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct LogicDeltaIndex { + by_path: BTreeMap>, +} + +impl LogicDeltaIndex { + pub(crate) fn new(source_deltas: &[SourceFileDelta]) -> Self { + let mut by_path = BTreeMap::new(); + for delta in source_deltas { + let parsed = parse_hunks(delta); + if parsed.is_empty() { + continue; + } + for path in [delta.old_path.as_ref(), delta.new_path.as_ref()] + .into_iter() + .flatten() + { + by_path.insert(path.clone(), parsed.clone()); + } + } + Self { by_path } + } + + pub(crate) fn for_nodes( + &self, + old: Option<&NodeRecord>, + new: Option<&NodeRecord>, + ) -> Option { + let path = source_file(new).or_else(|| source_file(old))?; + let hunks = self.by_path.get(path)?; + let old_span = line_span(old); + let new_span = line_span(new); + let mut added = BTreeSet::new(); + let mut removed = BTreeSet::new(); + for hunk in hunks { + if !old_span + .is_some_and(|span| overlaps(span, hunk.hunk.old_start, hunk.hunk.old_lines)) + && !new_span + .is_some_and(|span| overlaps(span, hunk.hunk.new_start, hunk.hunk.new_lines)) + { + continue; + } + added.extend(hunk.added_conditions.iter().cloned()); + removed.extend(hunk.removed_conditions.iter().cloned()); + } + let unchanged = added.intersection(&removed).cloned().collect::>(); + for condition in unchanged { + added.remove(&condition); + removed.remove(&condition); + } + let added_conditions = added + .into_iter() + .take(MAX_CONDITIONS_PER_FINDING) + .collect::>(); + let removed_conditions = removed + .into_iter() + .take(MAX_CONDITIONS_PER_FINDING) + .collect::>(); + (!added_conditions.is_empty() || !removed_conditions.is_empty()).then_some(LogicDelta { + added_conditions, + removed_conditions, + }) + } +} + +fn parse_hunks(delta: &SourceFileDelta) -> Vec { + let mut changes = Vec::<(Vec, Vec)>::new(); + let mut current = None; + for line in delta.patch.lines() { + if line.starts_with("@@") { + changes.push((Vec::new(), Vec::new())); + current = changes.len().checked_sub(1); + continue; + } + let Some(index) = current else { + continue; + }; + let mut characters = line.chars(); + let Some(prefix) = characters.next() else { + continue; + }; + if !matches!(prefix, '+' | '-') { + continue; + } + let Some(condition) = condition(characters.as_str()) else { + continue; + }; + match prefix { + '+' => changes[index].0.push(condition), + '-' => changes[index].1.push(condition), + _ => {} + } + } + delta + .hunks + .iter() + .copied() + .zip(changes) + .map(|(hunk, (added_conditions, removed_conditions))| HunkLogic { + hunk, + added_conditions, + removed_conditions, + }) + .collect() +} + +fn condition(line: &str) -> Option { + let line = line + .trim() + .trim_start_matches('}') + .trim() + .trim_end_matches('{') + .trim_end_matches(':') + .trim(); + let branch = [ + "if ", "if(", "if let ", "else if ", "elif ", "guard ", "when ", "switch ", "switch(", + "match ", + ] + .iter() + .any(|prefix| line.starts_with(prefix)); + branch.then(|| bounded_condition(line)) +} + +fn bounded_condition(line: &str) -> String { + let mut characters = line.chars(); + let mut output = characters.by_ref().take(240).collect::(); + if characters.next().is_some() { + output.pop(); + output.push('…'); + } + output +} + +fn source_file(node: Option<&NodeRecord>) -> Option<&str> { + node?.attributes.get("source_file")?.as_str() +} + +fn line_span(node: Option<&NodeRecord>) -> Option<(u32, u32)> { + let node = node?; + let start = line_number(node.attributes.get("line_start")?)?; + let end = node + .attributes + .get("line_end") + .and_then(line_number) + .unwrap_or(start); + Some((start, end.max(start))) +} + +fn line_number(value: &Value) -> Option { + value + .as_u64() + .and_then(|value| u32::try_from(value).ok()) + .or_else(|| value.as_str()?.parse().ok()) +} + +fn overlaps(span: (u32, u32), start: u32, lines: u32) -> bool { + let hunk_end = if lines == 0 { + start + } else { + start.saturating_add(lines.saturating_sub(1)) + }; + span.0 <= hunk_end && start <= span.1 +} + +fn describe_conditions(conditions: &[String]) -> String { + let label = if conditions.len() == 1 { + "condition" + } else { + "conditions" + }; + format!( + "{label} {}", + conditions + .iter() + .map(|condition| format!("`{condition}`")) + .collect::>() + .join(", ") + ) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn condition_evidence_is_bounded_without_splitting_unicode() { + let source = format!("if {} {{", "界".repeat(300)); + let parsed = condition(&source); + assert!(parsed.is_some()); + let parsed = parsed.unwrap_or_default(); + assert_eq!(parsed.chars().count(), 240); + assert!(parsed.ends_with('…')); + } + + #[test] + fn empty_patch_lines_are_ignored() { + let delta = SourceFileDelta { + old_path: Some("src/example.go".to_owned()), + new_path: Some("src/example.go".to_owned()), + status: compass_history::SourceFileStatus::Modified, + hunks: vec![SourceHunk { + old_start: 10, + old_lines: 2, + new_start: 10, + new_lines: 1, + }], + patch: "@@ -10,2 +10,1 @@\n\n-if stale {\n".to_owned(), + }; + let hunks = parse_hunks(&delta); + assert_eq!(hunks.len(), 1); + assert_eq!(hunks[0].removed_conditions, ["if stale"]); + } +} diff --git a/crates/compass-semantic-diff/tests/semantic_diff.rs b/crates/compass-semantic-diff/tests/semantic_diff.rs index 12feae27..2e9755ff 100644 --- a/crates/compass-semantic-diff/tests/semantic_diff.rs +++ b/crates/compass-semantic-diff/tests/semantic_diff.rs @@ -8,8 +8,9 @@ use compass_languages::TreeSitterSyntaxProvider; use compass_model::NodeRecord; use compass_program::{FileInput, SyntaxProvider, merge_evidence}; use compass_semantic_diff::{ - ChangeDirection, Compatibility, DependencyDelta, GraphDelta, NoTestEvidence, REPORT_SCHEMA, - SemanticDiffError, SemanticDiffInput, SnapshotIdentity, SnapshotReader, SnapshotSide, compare, + ChangeDirection, Compatibility, Confidence, DependencyDelta, FindingType, GraphDelta, + NoTestEvidence, REPORT_SCHEMA, SemanticDiffError, SemanticDiffInput, SnapshotIdentity, + SnapshotReader, SnapshotSide, compare, }; struct Fixtures { @@ -389,3 +390,99 @@ fn graph_only_additions_and_removals_are_classified_before_digest_changes() ); Ok(()) } + +#[test] +fn graph_fallback_explains_control_flow_patch_for_changed_function() -> Result<(), Box> { + let node_id = "libpod_container_getcontainerinspectdata".to_owned(); + let node = |implementation_hash: &str| NodeRecord { + id: node_id.clone(), + attributes: serde_json::Map::from_iter([ + ( + "label".to_owned(), + serde_json::json!(".getContainerInspectData()"), + ), + ("symbol_kind".to_owned(), serde_json::json!("method")), + ( + "source_file".to_owned(), + serde_json::json!("libpod/container_inspect.go"), + ), + ("line_start".to_owned(), serde_json::json!(66)), + ("line_end".to_owned(), serde_json::json!(160)), + ( + "implementation_hash".to_owned(), + serde_json::json!(implementation_hash), + ), + ]), + }; + let fixtures = Fixtures { + old: analyze_typescript(b"")?, + new: analyze_typescript(b"")?, + old_nodes: BTreeMap::from([(node_id.clone(), node("old-body"))]), + new_nodes: BTreeMap::from([(node_id.clone(), node("new-body"))]), + }; + let source_deltas = [SourceFileDelta { + old_path: Some("libpod/container_inspect.go".to_owned()), + new_path: Some("libpod/container_inspect.go".to_owned()), + status: SourceFileStatus::Modified, + hunks: vec![SourceHunk { + old_start: 80, + old_lines: 2, + new_start: 79, + new_lines: 0, + }], + patch: concat!( + "diff --git a/libpod/container_inspect.go b/libpod/container_inspect.go\n", + "--- a/libpod/container_inspect.go\n", + "+++ b/libpod/container_inspect.go\n", + "@@ -80,2 +79,0 @@ func (c *Container) getContainerInspectData(size bool, driverData *define.DriverData) (*define.InspectContainerData, error) {\n", + "-\t}\n", + "-\tif len(args) > 1 {\n", + ) + .to_owned(), + }]; + let report = compare(SemanticDiffInput { + old: SnapshotIdentity { + commit: "a".repeat(40), + realization: "old".to_owned(), + fingerprint: "f".repeat(64), + }, + new: SnapshotIdentity { + commit: "b".repeat(40), + realization: "new".to_owned(), + fingerprint: "f".repeat(64), + }, + source_deltas: &source_deltas, + changed_node_ids: std::slice::from_ref(&node_id), + dependency_deltas: &[], + graph_delta: &GraphDelta::default(), + snapshots: &fixtures, + test_evidence: &NoTestEvidence, + })?; + let finding = report + .findings + .iter() + .find(|finding| finding.subject == node_id) + .ok_or("missing control-flow finding")?; + assert_eq!(finding.finding_type, FindingType::BehaviorChange); + assert_eq!(finding.compatibility, Compatibility::Behavioral); + assert_eq!(finding.confidence, Confidence::Exact); + assert!( + finding + .explanation + .contains("removed condition `if len(args) > 1`") + ); + assert_eq!( + finding + .before + .as_ref() + .and_then(|value| value["conditions"].as_array()) + .and_then(|values| values.first()) + .and_then(serde_json::Value::as_str), + Some("if len(args) > 1") + ); + assert_eq!( + finding.completeness.get("control_flow").copied(), + Some(compass_semantic_diff::Completeness::Partial) + ); + Ok(()) +} diff --git a/docs/guides/versioned-history.md b/docs/guides/versioned-history.md index 4f6551c9..9ab33f5c 100644 --- a/docs/guides/versioned-history.md +++ b/docs/guides/versioned-history.md @@ -267,11 +267,15 @@ exact source patch and the meaningful code-graph delta in the same report. The graph visualization focuses on the changed subgraph; its node/edge lists and embedded JSON remain exhaustive. -Semantic diff requires Program IR v1 evidence. Rebuild older realizations with -the current Compass binary before comparing them. Static test mapping may -recommend resolved test callers, but `partial` or `unknown` evidence never -claims safety or a test gap. AI-generated summaries and hosted PR delivery are -outside this deterministic MVP. +Program IR v1 provides the richest behavior evidence. For graph-only languages, +Compass can also report changed branch conditions when an exact zero-context +source hunk overlaps the changed function's recorded line span. That evidence +is exact but deliberately marked as partial control-flow coverage; unrelated +body-hash changes remain indeterminate. Rebuild older realizations with the +current Compass binary before comparing them. Static test mapping may recommend +resolved test callers, but `partial` or `unknown` evidence never claims safety +or a test gap. AI-generated summaries and hosted PR delivery are outside this +deterministic MVP. ### Profile compatibility diff --git a/docs/superpowers/reviews/2026-07-26-actionable-semantic-diff-real-repository-qualification.md b/docs/superpowers/reviews/2026-07-26-actionable-semantic-diff-real-repository-qualification.md new file mode 100644 index 00000000..5e6220fb --- /dev/null +++ b/docs/superpowers/reviews/2026-07-26-actionable-semantic-diff-real-repository-qualification.md @@ -0,0 +1,124 @@ +# Actionable Semantic Diff Real-Repository Qualification + +**Date:** 2026-07-26 +**Binary:** local debug build from `codex/improve-vscode-diff-experience` + +## Outcome + +Versioned history and semantic diff completed successfully for arbitrary, +non-tip revisions in Podman, CocoIndex, and LevelDB. Reports contained semantic +contract, behavior, dependency, affected-consumer, source, and graph-structure +evidence where supported. Graph-only body changes now use exact, line-scoped +branch-condition evidence when available instead of always degrading to an +opaque implementation digest. + +The qualification used immutable history realizations; none of the source +checkouts were switched to the historical commits. + +## Podman + +Repository: `/Volumes/workspace/Github/podman` + +Compared: + +- old: `d8380c9c80d9c4acf5afd59b65c4c779aaacbbf5` +- new: `7ac3e837075460ecdea5ce59e607cdaa6b6709fc` + +Each realization contained 119,293 nodes and 262,724 edges. The source change +removes `if len(args) > 1` from +`libpod/container_inspect.go::getContainerInspectData`. + +The final report produced an exact behavioral finding: + +```text +libpod_container_getcontainerinspectdata control flow changed +Control flow changed: removed condition `if len(args) > 1`. +``` + +The finding records the before/after body digests, the removed condition, +`control_flow: partial`, and source evidence. Two JSON runs produced the same +SHA-256 digest: + +```text +1a3434e316744ede6c9ef44a55bc586d2c139ff4a0ffbc7e56d33ff6bdb74ee5 +``` + +`--explain` resolved the stable finding ID, and the checkout status before and +after materialization was byte-identical. + +## CocoIndex + +Repository: `/Volumes/workspace/Github/cocoindex-compass-audit-20260726` + +Compared: + +- old: `90571539fa291fc6e6b248095bd2c8a2ff68bab4` +- new: `71f9cc9dc693080310181a2d011fb737420f7907` + +The old realization contained 17,729 nodes, 40,237 edges, 91,163 Program IR +facts, and 10,931 summaries. The new realization contained 17,808 nodes, +40,412 edges, 91,537 facts, and 10,981 summaries. + +The final canonical JSON report contained: + +- 333 findings in 12 feature groups; +- 9 source-file changes; +- 149 added, 70 removed, and 9 changed graph nodes; +- 247 added and 72 removed graph edges; +- public API, behavior, dependency, affected-consumer, effect, error, and test + evidence; +- three exact, partial-control-flow explanations for added branch conditions. + +`HEAD~1` and `HEAD` resolved to the expected full commit IDs. `--all` preserved +the same exhaustive 333-finding JSON contract. The removed `--detailed` flag +failed closed with exit status 2. No temporary-worktree path leaked into JSON +or HTML output. + +## LevelDB + +Repository: `/Volumes/workspace/Github/leveldb` + +Compared: + +- deadlock body edit: `78a352f47ed6c1e9d750545e9b242289185b87e1` + to `4a0c572440c7df2f56a6f5fb5aec9e366d522edb` +- Zstd addition: `bfae97ff7d9fd0ceccb49b90a1e4c19fe7b57652` + to `1d6e8d64ee8489a85ce939b819d106d2b54abb15` + +The deadlock edit produced one explicit indeterminate implementation finding, +never location churn or an invented behavioral claim. The Zstd comparison +produced 67 findings, including exact added branch conditions and retained +call, reference, and import dependencies. Its graph delta contained 14 added, +2 removed, and 6 changed nodes plus 45 added and 12 removed edges. + +All four revisions were materialized with one comparable, deterministic +code-only extraction profile. The LevelDB checkout remained clean. + +## Verification + +Passed: + +```text +cargo fmt --all -- --check +cargo test -p compass-semantic-diff +cargo test -p compass-cli --test history_cli semantic_diff_end_to_end_languages -- --exact --nocapture +cargo test --workspace +cargo clippy -p compass-semantic-diff --all-targets --all-features --no-deps -- -D warnings +git diff --check +graphify update . +``` + +Strict workspace Clippy is not green because five unchanged +`clippy::needless_borrow` findings remain in +`crates/compass-graph/src/analyze.rs`. The semantic-diff crate is clean with +warnings denied, and the complete workspace test suite passes. + +## Scale observation + +The Podman debug-build qualification completed, but history publication peaked +at approximately 4.7–5.2 GB RSS. Initial materialization took roughly six +minutes; profile-based materialization of the adjacent revision took roughly +eleven minutes, including source-realization validation. These are debug-binary +observations rather than a release benchmark, so they do not establish a +production performance regression. Release-mode history publication should be +measured separately before adopting a memory or latency SLO. diff --git a/docs/superpowers/specs/2026-07-24-actionable-semantic-diff-design.md b/docs/superpowers/specs/2026-07-24-actionable-semantic-diff-design.md index 1248e6f2..e8b28c64 100644 --- a/docs/superpowers/specs/2026-07-24-actionable-semantic-diff-design.md +++ b/docs/superpowers/specs/2026-07-24-actionable-semantic-diff-design.md @@ -376,9 +376,11 @@ adapters cover Python, Rust, and TypeScript/JavaScript. Other languages report the exact before/after signature when available but use `indeterminate` compatibility until an adapter can prove more. -An implementation hash is only a change detector. If the hash changes without -sufficient Program IR, Compass reports an implementation change with incomplete -semantic coverage; it does not narrate the behavior. +An implementation hash is only a change detector. Without sufficient Program +IR, Compass may narrate an exact changed branch condition only when a +zero-context source hunk overlaps the changed function's recorded line span. +That finding remains partial control-flow coverage. Other implementation-hash +changes report incomplete semantic coverage without narrating the behavior. ## Relation semantics and bounded impact From 4ea50e48d6a3d93d956a975686130fc83842ad7c Mon Sep 17 00:00:00 2001 From: forhappy Date: Sun, 26 Jul 2026 14:14:45 -0700 Subject: [PATCH 6/6] Fix installed diff layout CSP --- editors/vscode/src/views/historyPanel.ts | 2 +- tests/viewer/fixtures/generate.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/editors/vscode/src/views/historyPanel.ts b/editors/vscode/src/views/historyPanel.ts index 46ebc70b..7c954a0e 100644 --- a/editors/vscode/src/views/historyPanel.ts +++ b/editors/vscode/src/views/historyPanel.ts @@ -526,7 +526,7 @@ function html(context: vscode.ExtensionContext, webview: vscode.Webview): string const nonce = randomUUID().replaceAll("-", ""); return ` - + Compass Evolution

`; diff --git a/tests/viewer/fixtures/generate.ts b/tests/viewer/fixtures/generate.ts index bbfa5f0e..fd5189b7 100644 --- a/tests/viewer/fixtures/generate.ts +++ b/tests/viewer/fixtures/generate.ts @@ -414,7 +414,7 @@ function historyHarness( graphs: Record, detail: unknown ): string { - return `Compass history fixture