From e994710938846bc2f6f44d2b6fc0c926036cedc5 Mon Sep 17 00:00:00 2001 From: Ali Romman <226877337+aliromman@users.noreply.github.com> Date: Sun, 25 Oct 2026 19:39:35 -0500 Subject: [PATCH] Independently audit the PR5627 interface and recursive invoice --- .../pr5627-interface-invoice-audit/PROOF.md | 91 +++ .../pr5627-interface-invoice-audit/README.md | 31 + .../RESULT.json | 111 ++++ .../SOURCE-CONTEXT.json | 44 ++ .../SOURCES.json | 24 + .../pr5627-interface-invoice-audit/TASK.json | 100 +++ .../VERIFY.json | 30 + .../inputs/PR5627-BOUNDARIES.json | 255 ++++++++ .../inputs/PR5627-PREPARATION.json | 45 ++ .../inputs/PR5627-PROOF.md | 294 +++++++++ .../inputs/PR5627-RESULT.json | 597 ++++++++++++++++++ .../inputs/PR5627-SPLITS.json | 294 +++++++++ .../inputs/PR5627-WORD.json.gz | Bin 0 -> 107885 bytes .../pr5627-interface-invoice-audit/verify.py | 211 +++++++ 14 files changed, 2127 insertions(+) create mode 100644 research/pr5627-interface-invoice-audit/PROOF.md create mode 100644 research/pr5627-interface-invoice-audit/README.md create mode 100644 research/pr5627-interface-invoice-audit/RESULT.json create mode 100644 research/pr5627-interface-invoice-audit/SOURCE-CONTEXT.json create mode 100644 research/pr5627-interface-invoice-audit/SOURCES.json create mode 100644 research/pr5627-interface-invoice-audit/TASK.json create mode 100644 research/pr5627-interface-invoice-audit/VERIFY.json create mode 100644 research/pr5627-interface-invoice-audit/inputs/PR5627-BOUNDARIES.json create mode 100644 research/pr5627-interface-invoice-audit/inputs/PR5627-PREPARATION.json create mode 100644 research/pr5627-interface-invoice-audit/inputs/PR5627-PROOF.md create mode 100644 research/pr5627-interface-invoice-audit/inputs/PR5627-RESULT.json create mode 100644 research/pr5627-interface-invoice-audit/inputs/PR5627-SPLITS.json create mode 100644 research/pr5627-interface-invoice-audit/inputs/PR5627-WORD.json.gz create mode 100644 research/pr5627-interface-invoice-audit/verify.py diff --git a/research/pr5627-interface-invoice-audit/PROOF.md b/research/pr5627-interface-invoice-audit/PROOF.md new file mode 100644 index 0000000000..7ad43e7382 --- /dev/null +++ b/research/pr5627-interface-invoice-audit/PROOF.md @@ -0,0 +1,91 @@ +# Separate replay of the PR5627 interface and invoice + +Ali Romman with substantial OpenAI Codex assistance. Apache-2.0. + +## Result + +The emitted word at ed4dc88a09a7d201971f6603b8c2074e95dd9c32 has the stated +complete normalized linear action. A new interpreter checks all 565504 +coefficients, every chart transition, every public input and every owned +output. It imports no predecessor constructor, local verifier, native +compiler or pricing engine. It reads the frozen word and controller as data. +This is separate implementation evidence. It is not independent human review. + +The audit reproduces 743 public inputs, 535 productive helpers, nine owned +roles, eleven owned lifetimes, peak occupancy two and 25448 events. The +local paid histogram is {1:2200,2:456,3:494,4:91,5:163,6:18,7:15}. +The helper histogram is {1:2,2:4,4:91,5:6,7:5,8:16,9:411}. +In particular, the removed rank-two helper target is not still credited. + +The literal caller adds all eighteen full calls, fifteen query shears, +and fifteen whole idle jobs, each on 208 fields. Its diagonal gives all +3328 main targets. The complete bill has 66546 paid calls, 12958 targets +and rank-mass surplus 760. These are exactly the source counts. + +## Exact interface interpretation + +Each row is an integer vector divided by a power of two. Initially the +full matrix is the identity, including formal coordinates for owned roles. +ADD and SCALE use exact integer arithmetic with a common binary denominator. +COPY requires a live, zero owned destination in the source chart. INIT +and CLEAR replace an owned row by zero under the inherited erasure contract. +MOVE preserves normalized values and changes the chart. Every public move +must strictly increase its binary span; every owned move must strictly +decrease it. All scalar operations require equal physical charts. + +Induction on events proves that these rows are the exact normalized action. +The final public row is e_r, with e_(r-112) added for the declared main +output roles. Every owned row is zero. All helper inputs are independent +coordinates in this check. The proof therefore covers the combined effect +of the source's boundaries, splits and preparation without assuming their +intermediate witness equations. It does not separately certify their +constructor or their discovery search. + +A zero final owned row is not restoration of its initial dirty coordinate. +INIT and CLEAR use the source's owned-erasure assumption. The receipt counts +the nonzero rows discarded by CLEAR. No weaker erasure contract is asserted. + +## Separate complete invoice and raw ceiling + +The invoice is accumulated from the literal controller event types and its +output diagonal. Source receipt counts are comparison values, not inputs +to the computation. The native rank assigned to each strict nested chart +move is the absolute chart-dimension change. This is the source native +contract; its phase and implementation proof are not replayed here. + +The rational power engine is separate from both source engines. For +r=2^k m with 1<=m<2, it evaluates log(r)=k log(2)+log(m). With + y=(m-1)/(m+1), the first 48 terms of + + log(m)=2 sum_(j>=0) y^(2j+1)/(2j+1) + +have a nonnegative remainder at most + + 2*y^97 / (97*(1-y^2)). + +The same formula at y=1/3 encloses log(2). For every tested kappa, the +argument x=kappa*log(r) is in [0,1). The degree-17 and degree-16 alternating +Taylor sums enclose exp(-x) from below and above. Monotonicity in log(r) +gives exact bounds on r^(1-kappa). All calculations use rational numbers. +Only the final displayed intervals are rounded outward to denominator 10^24. + +The resulting target-minus-paid moment is positive at the claimed and +tested savings, positive at 0.00310440547057 and negative at +0.00310440547058. A separate termwise derivative bound is strictly negative +on [0,0.0034]: for positive signed counts use the lower value of +r^(1-kappa)*log(r) at the right endpoint; for negative counts use the upper +value at zero. Thus this interval contains the unique raw crossing in the +retained BIT range. This validates the raw ceiling of this fixed invoice, +not a compiler or multiplication theorem. + +## Controls and exclusions + +The verifier rejects a missing input ADD, a wrong SCALE, erasure of a public +input, a missing owned CLEAR, retention of the removed H2 target, and a +missing whole idle. Normal and optimized execution use the same explicit +checks; no Python assert statement carries a scientific condition. + +Native phases, actual physical caller execution, the finite compiler, +outer predicates, precision, tape bounds and all-width admission remain +inherited or unchecked by this package. No source file or selected result +is changed. No new kappa is claimed. diff --git a/research/pr5627-interface-invoice-audit/README.md b/research/pr5627-interface-invoice-audit/README.md new file mode 100644 index 0000000000..163c803ab2 --- /dev/null +++ b/research/pr5627-interface-invoice-audit/README.md @@ -0,0 +1,31 @@ +# PR5627 interface and invoice audit + +The separate exact implementation in verify.py confirms the final emitted +PR5627 local interface, all its chart and owned-state transitions, the +complete recursive invoice and its unique raw crossing. It imports no +source verification code. PROOF.md states the scope and the rational-series +error bounds. RESULT.json records the exact evidence and six controls. + +Run `python3 -B scripts/research_package.py --package research/pr5627-interface-invoice-audit`. +Python 3.12 and the standard library suffice. + +## Sources and credit + +PR5627 at ed4dc88a09a7d201971f6603b8c2074e95dd9c32 supplies the emitted word +and the claim under audit. Exact source bytes, paths and hashes are retained +in inputs/ and SOURCE-CONTEXT.json. The controller comes from the pinned +main package. Ali Romman supplies the helper split and basis composition; +flyingviper supplies the shared and delayed relay; Scratch-net supplies the +preparation; Pierre-Loic Doulcet supplies the PR5565 cascade. Retain Cinna +Davis, David Arias, Gareth Davidson, Jacob Alan Sussman, zxv, Cao Yifan and +the complete source notices. This audit does not claim these constructions. + +## Open next questions + +Independently check the final word's native phase inventory and physical +caller, then the complete compiler and outer conditions at this exact head. +Do not transfer this audit to a successor word without checking its bytes. +The five framework assumptions and helper-endpoint contract remain. +Separate code is not independent human or proof-kernel acceptance. + +Prepared by Ali Romman with substantial OpenAI Codex assistance. Apache-2.0. diff --git a/research/pr5627-interface-invoice-audit/RESULT.json b/research/pr5627-interface-invoice-audit/RESULT.json new file mode 100644 index 0000000000..f5d14c0fcf --- /dev/null +++ b/research/pr5627-interface-invoice-audit/RESULT.json @@ -0,0 +1,111 @@ +{ + "complete_bill": { + "paid": { + "1": 41160, + "16": 416, + "2": 8208, + "24": 416, + "3": 8892, + "32": 416, + "4": 1638, + "40": 416, + "48": 416, + "5": 2934, + "56": 416, + "6": 324, + "64": 416, + "7": 270, + "72": 208 + }, + "paid_calls": 66546, + "productive_fields": 12958, + "rank_mass_surplus": 760, + "targets": { + "1": 36, + "145": 208, + "17": 416, + "2": 72, + "25": 416, + "33": 416, + "4": 1638, + "41": 416, + "49": 416, + "5": 108, + "57": 416, + "65": 416, + "7": 90, + "73": 208, + "8": 288, + "9": 7398 + } + }, + "limits": [ + "Native phases, physical caller execution, compiler and outer conditions are not replayed.", + "Owned CLEAR is the inherited erasure operation, not restoration of an arbitrary dirty input.", + "This is a separate implementation check, not independent human or formal acceptance.", + "No new kappa and no selected-frontier change." + ], + "local": { + "endpoint_coefficients": 565504, + "helpers": { + "1": 2, + "2": 4, + "4": 91, + "5": 6, + "7": 5, + "8": 16, + "9": 411 + }, + "nonzero_owned_clears": 10, + "operations": { + "ADD": 21234, + "CLEAR": 11, + "COPY": 10, + "INIT": 11, + "MOVE": 3437, + "SCALE": 745 + }, + "owned_fields": 9, + "owned_lifetimes": 11, + "paid": { + "1": 2200, + "2": 456, + "3": 494, + "4": 91, + "5": 163, + "6": 18, + "7": 15 + }, + "paid_rank_mass": 5986, + "peak_owned_fields": 2, + "public_inputs": 743, + "real_scalar_allowance": 220154 + }, + "raw_derivative_denominator": 1000000000000, + "raw_derivative_upper_numerator": -235999800675475316, + "raw_intervals": { + "claim": { + "denominator": 1000000000000000000000000, + "lower_numerator": 2571624799184360834, + "upper_numerator": 2571624799184360835 + }, + "root_lower": { + "denominator": 1000000000000000000000000, + "lower_numerator": 1115959290001074, + "upper_numerator": 1115959290001075 + }, + "root_upper": { + "denominator": 1000000000000000000000000, + "lower_numerator": -1315931759985787, + "upper_numerator": -1315931759985786 + }, + "tested": { + "denominator": 1000000000000000000000000, + "lower_numerator": 1355679274148871187, + "upper_numerator": 1355679274148871188 + } + }, + "rejection_controls": 6, + "source_code_imports": 0, + "status": "PASS_PR5627_INTERFACE_INVOICE_AUDIT" +} diff --git a/research/pr5627-interface-invoice-audit/SOURCE-CONTEXT.json b/research/pr5627-interface-invoice-audit/SOURCE-CONTEXT.json new file mode 100644 index 0000000000..8a525a21b9 --- /dev/null +++ b/research/pr5627-interface-invoice-audit/SOURCE-CONTEXT.json @@ -0,0 +1,44 @@ +[ + { + "file": "inputs/PR5627-WORD.json.gz", + "commit": "ed4dc88a09a7d201971f6603b8c2074e95dd9c32", + "path": "research/p104-helper-subspace-splits/WORD.json.gz", + "sha256": "162e6f13a6e3805517946309bd6247eaa45b337ab9c39621806b254b415075ec", + "git_blob": "b60955f312f76d08ee4f86ac2ad664e3ab4e46ea" + }, + { + "file": "inputs/PR5627-RESULT.json", + "commit": "ed4dc88a09a7d201971f6603b8c2074e95dd9c32", + "path": "research/p104-helper-subspace-splits/RESULT.json", + "sha256": "f24925b2f549dce6ff404bd9d35fb0a19e5ebc5fa5cbf67996fd4064e450137b", + "git_blob": "1e90afdd0372980c68c1a444a6c0fe5f1e7da7c2" + }, + { + "file": "inputs/PR5627-PROOF.md", + "commit": "ed4dc88a09a7d201971f6603b8c2074e95dd9c32", + "path": "research/p104-helper-subspace-splits/PROOF.md", + "sha256": "85c2fc0e87c129b3f5cb9b3c6ee6a0ad64b35f04cd58af912d500b37c2913da2", + "git_blob": "594b26982f6f81037e8649ba30da01221ee3bd58" + }, + { + "file": "inputs/PR5627-PREPARATION.json", + "commit": "ed4dc88a09a7d201971f6603b8c2074e95dd9c32", + "path": "research/p104-helper-subspace-splits/PREPARATION.json", + "sha256": "72aebe0407f7e1566ccf50d8a6e971cb05d53c82e1cab2e8303fef49bac4d6f9", + "git_blob": "663e1f2bcbe9d9da566a7e4c3cb1201beebe3cd8" + }, + { + "file": "inputs/PR5627-SPLITS.json", + "commit": "ed4dc88a09a7d201971f6603b8c2074e95dd9c32", + "path": "research/p104-helper-subspace-splits/SPLITS.json", + "sha256": "adc590f754105902cf11f4695a0d167de2d832fb75417745a725ecd3b89af396", + "git_blob": "9a9aa0c46013c63a58f456fc4e4deebc61925775" + }, + { + "file": "inputs/PR5627-BOUNDARIES.json", + "commit": "ed4dc88a09a7d201971f6603b8c2074e95dd9c32", + "path": "research/p104-helper-subspace-splits/BOUNDARIES.json", + "sha256": "e5dc3ff85d6c7a104c0f02c03a9f873b3e5a8df46d240141024cb505390274e4", + "git_blob": "c6ce5174bd7d6908e47f7fa72b8eeee5185d7091" + } +] diff --git a/research/pr5627-interface-invoice-audit/SOURCES.json b/research/pr5627-interface-invoice-audit/SOURCES.json new file mode 100644 index 0000000000..d02d5aa872 --- /dev/null +++ b/research/pr5627-interface-invoice-audit/SOURCES.json @@ -0,0 +1,24 @@ +{ + "schema_version": 1, + "base_commit": "6cf7a683f447b9f1e2333791907fd92be5009a63", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "fc3d4ba105e1f097d0d7d051a308281e86ab1446", + "sha256": "66974efdced4083c00025f97d95d83909a226cdf801edb9301c195c6641f6903" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "f126dd2e2dad2b669e75d1d0d0bd05c600725602", + "sha256": "f7a48bfa2659b88378282a8eee7d9fe52cdf505594124c4d1686b58510fffd72" + }, + { + "path": "research/p104-productive-controller/CONTROLLER.json", + "usage": "input", + "git_blob": "cc539db709cf7a6c42872c4380902736ad453af3", + "sha256": "a84f6bbd547379597464e56c420cc665f96bc43a9a1351eed4b7cd0fce3cc4b9" + } + ] +} diff --git a/research/pr5627-interface-invoice-audit/TASK.json b/research/pr5627-interface-invoice-audit/TASK.json new file mode 100644 index 0000000000..476c0b0f8a --- /dev/null +++ b/research/pr5627-interface-invoice-audit/TASK.json @@ -0,0 +1,100 @@ +{ + "schema_version": 1, + "task_id": "independent-moment", + "priority_revision": 7, + "base_commit": "6cf7a683f447b9f1e2333791907fd92be5009a63", + "original_card": { + "id": "independent-moment", + "question": "Does a new paid-profile or mixture-ceiling claim have independent source-bound coverage of its actual changed ledger?", + "starting_points": [ + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "research/staged544-mixed-fourth-entry/README.md", + "research/staged-fourth-mixture-ceiling/README.md", + "research/r437-two-window-carrier/README.md" + ], + "methods": [ + "Independently reconstruct one changed paid ledger or pooled dual with exact source and model binding.", + "Check a genuinely uncovered moment implication with a different enclosure method and semantic controls." + ], + "acceptance_gate": "Demonstrate independence, source binding, positive cases and semantic failure controls. Name the existing checks and the missing coverage. More digits or another equivalent evaluation of an unchanged root is not by itself new verification coverage.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Choose one uncovered implication in #4088 literal mixed fill, #4091 pooled dual/model binding or #4067 changed frame/host bill. #4091 pins an earlier #4088 head: validate word, capacity and stock equivalence before applying that ceiling to the later fill.", + "scope": "Source-binding orientation only; no scientific replay, theorem acceptance or supplier admission. Budget any heavy replay separately." + }, + "first_experiment": "Independently reconstruct one changed ledger or pooled certificate with a positive case and a semantic failure control. Compare exact sources and name what existing checks miss. Keep this separate from supplier-boundary-audit (ordinary/outer dispatch) and uniform-transfer-audit (all-size proof). Stop after the chosen implication; more digits of an unchanged root are not additional mechanism coverage.", + "bottleneck_link": "Independent pricing prevents unsupported frontier claims and can reveal genuine accounting slack.", + "allowed_variations": [ + "Reconstruct either a source ledger or a numeric enclosure with a different method." + ], + "scope_change_triggers": [ + "Importing the primary function and calling its output independent verification.", + "Calling an aggregate histogram or source archive an independently accepted physical supplier." + ], + "overlap_terms": [ + "independent moment", + "rank histogram", + "exact enclosure", + "2979", + "rank7 joint endframes", + "paired extraction", + "joint lowering", + "4088", + "4091", + "4067", + "staged544-mixed-fourth-entry", + "staged-fourth-mixture-ceiling", + "r437-two-window-carrier" + ], + "existing_checks": [ + { + "scope": "PR #4088: mixed local/owner/phase ledger and moment reported.", + "evidence": "research/staged544-mixed-fourth-entry/README.md", + "remaining": "Independent binding of changed construction to paid histogram, distinct from full admission.", + "status": "author-checked", + "source_commit": "72d7efc181edb21806a878f174847c96dd410ab0", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4091: sharp pooled ceiling proposed for fixed THREE/FOUR words and inventory.", + "evidence": "research/staged-fourth-mixture-ceiling/README.md", + "remaining": "Validate dual, exhaustive pattern scope and exact source equivalence before applying to newer fills.", + "status": "author-checked", + "source_commit": "a29bdd8f56cd18b805917775cdec09ff935eddc4", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4067: paid (2,2) to (1,3) exchange and fixed OQ4 host reported.", + "evidence": "research/r437-two-window-carrier/README.md", + "remaining": "Independent full cost delta; remaining caller/precision/stock obligations are separate.", + "status": "author-checked", + "source_commit": "a95f11c52e3ca1e4c5171b3c20d8f4b0815aee2e", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + } + ] + }, + "scope_status": "refined", + "actual_scope": "Independently replay the emitted PR5627 normalized interface and its complete recursive invoice.", + "scope_change_reason": "Take the released exact-head review handoff; use final artifacts rather than source verification code.", + "bottleneck_link": "The strongest current conditional gain depends on the combined helper interface and complete target debit.", + "budget_minutes": 60, + "stop_rule": "Compare every interface coefficient and recursive invoice line, certify the raw crossing, and retain exact limits.", + "outcome": "completed", + "evidence": "PROOF.md, RESULT.json and verify.py", + "author": "Ali Romman with substantial OpenAI Codex assistance", + "ai_assistance": "Substantial OpenAI Codex assistance; a separate implementation in this session, not independent human review.", + "open_questions": [ + { + "question": "Does the emitted final word pass a separate native-phase and physical-caller audit?", + "why_it_matters": "The normalized scalar action does not prove native implementation.", + "first_step": "Bind every final MOVE and helper endpoint to an exact native recipe at the same source head.", + "blocked_by": "No native replay is included in this audit." + } + ] +} diff --git a/research/pr5627-interface-invoice-audit/VERIFY.json b/research/pr5627-interface-invoice-audit/VERIFY.json new file mode 100644 index 0000000000..f4bc7608a2 --- /dev/null +++ b/research/pr5627-interface-invoice-audit/VERIFY.json @@ -0,0 +1,30 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/p104-productive-controller/CONTROLLER.json" + ], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 180, + "checks": "Separate full interface, chart and owned-state replay; complete invoice; rational root and derivative bounds; six corruptions." + }, + { + "argv": [ + "{python}", + "-O", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 180, + "checks": "Separate full interface, chart and owned-state replay; complete invoice; rational root and derivative bounds; six corruptions." + } + ] +} diff --git a/research/pr5627-interface-invoice-audit/inputs/PR5627-BOUNDARIES.json b/research/pr5627-interface-invoice-audit/inputs/PR5627-BOUNDARIES.json new file mode 100644 index 0000000000..c6ce5174bd --- /dev/null +++ b/research/pr5627-interface-invoice-audit/inputs/PR5627-BOUNDARIES.json @@ -0,0 +1,255 @@ +[ + { + "source_step": 0, + "anchor": [ + "ADD", + 653, + 652, + "-1", + 120 + ], + "witness": { + "kind": "boundary_basis", + "reverse": true, + "helper": 652, + "cut": 11382, + "frame": 120, + "output": [ + [ + 205, + "-2" + ], + [ + 648, + "-1" + ], + [ + 649, + "-1" + ], + [ + 650, + "1" + ], + [ + 652, + "1" + ] + ], + "cancel": [ + [ + 648, + "1" + ], + [ + 649, + "1" + ], + [ + 650, + "-1" + ] + ] + } + }, + { + "source_step": 1, + "anchor": [ + "ADD", + 346, + 341, + "1", + 240 + ], + "witness": { + "kind": "boundary_basis", + "reverse": false, + "helper": 341, + "cut": 11167, + "frame": 240, + "output": [ + [ + 93, + "-2" + ], + [ + 339, + "-2" + ], + [ + 341, + "1" + ], + [ + 351, + "2" + ] + ], + "cancel": [ + [ + 337, + "2" + ] + ] + } + }, + { + "source_step": 2, + "anchor": [ + "ADD", + 597, + 596, + "-1", + 1053 + ], + "witness": { + "kind": "boundary_basis", + "reverse": true, + "helper": 596, + "cut": 11400, + "frame": 1053, + "output": [ + [ + 188, + "-1" + ], + [ + 592, + "-1" + ], + [ + 593, + "1" + ], + [ + 594, + "1" + ], + [ + 596, + "1" + ] + ], + "cancel": [ + [ + 592, + "1" + ], + [ + 593, + "-1" + ], + [ + 594, + "-1" + ] + ] + } + }, + { + "source_step": 3, + "anchor": [ + "ADD", + 669, + 668, + "-1", + 1051 + ], + "witness": { + "kind": "boundary_basis", + "reverse": true, + "helper": 668, + "cut": 11471, + "frame": 1051, + "output": [ + [ + 115, + "2" + ], + [ + 664, + "1" + ], + [ + 665, + "1" + ], + [ + 666, + "-1" + ], + [ + 668, + "1" + ] + ], + "cancel": [ + [ + 664, + "-1" + ], + [ + 665, + "-1" + ], + [ + 666, + "1" + ] + ] + } + }, + { + "source_step": 4, + "anchor": [ + "ADD", + 685, + 684, + "-1", + 1049 + ], + "witness": { + "kind": "boundary_basis", + "reverse": true, + "helper": 684, + "cut": 11515, + "frame": 1049, + "output": [ + [ + 126, + "2" + ], + [ + 680, + "-1" + ], + [ + 681, + "1" + ], + [ + 682, + "1" + ], + [ + 684, + "1" + ] + ], + "cancel": [ + [ + 680, + "1" + ], + [ + 681, + "-1" + ], + [ + 682, + "-1" + ] + ] + } + } +] diff --git a/research/pr5627-interface-invoice-audit/inputs/PR5627-PREPARATION.json b/research/pr5627-interface-invoice-audit/inputs/PR5627-PREPARATION.json new file mode 100644 index 0000000000..663e1f2bcb --- /dev/null +++ b/research/pr5627-interface-invoice-audit/inputs/PR5627-PREPARATION.json @@ -0,0 +1,45 @@ +{ + "helper": 573, + "replacements": [ + { + "event": 13651, + "old": [ + "MOVE", + 573, + 3, + 595, + false + ], + "suppliers": [ + [ + 572, + "1" + ], + [ + 732, + "-2" + ] + ] + }, + { + "event": 13676, + "old": [ + "MOVE", + 573, + 595, + 603, + false + ], + "suppliers": [ + [ + 572, + "1" + ], + [ + 710, + "2" + ] + ] + } + ] +} diff --git a/research/pr5627-interface-invoice-audit/inputs/PR5627-PROOF.md b/research/pr5627-interface-invoice-audit/inputs/PR5627-PROOF.md new file mode 100644 index 0000000000..594b26982f --- /dev/null +++ b/research/pr5627-interface-invoice-audit/inputs/PR5627-PROOF.md @@ -0,0 +1,294 @@ +# Independent helper splits and the complete cost + +This proof changes the helper input and output contract of the exact PR5601 +word. It composes released relay and boundary changes, nine independent +splits and two prepared queries. Every main endpoint is retained. Every +owned operation and removed target is checked and charged. Scalar identities +are rational; the native check supplies exact phases at every positive width. + +## 1. A split criterion + +Let a group of helpers have the same initial chart U and final chart V. +The complete source word returns each of these helpers unchanged in normalized +coordinates and has no helper contribution to any other output. +Let F be a strict intermediate chart, with U contained in F and F contained +in V. At one chronological cut, let P be the scalar prefix matrix and S the +scalar suffix matrix. The matrices include every public input and output. +Owned fields follow the source initialization and erasure contract. + +Suppose a row a and a column b use only fields at chart F. Suppose c and d +use only the specified helper group, and + +```math +aP=c,\qquad Sb=d,\qquad ab=cd=1. +``` + +Choose a helper role p at F. There are invertible scalar matrices G and J +with + +```math +e_p^T G=c,\quad Gd=e_p,\qquad e_p^T J=a,\quad Jb=e_p. +``` + +Here G acts only on helpers with boundary charts U and V. J acts only on +fields at F. The construction emits these matrices as ADD and dyadic-unit +SCALE operations. Its row and column elimination uses the unit pairings. +The emitted program and its inverse are explicit; no dense matrix operation +is assigned zero implementation cost. + +Apply G inverse at the input. At the cut, apply J. Role p then contains the +independent coordinate t=c h. Retain p as an output at F. Introduce one new +independent input z at F. Use its new role in place of p in J inverse and in +the complete suffix. Finally apply G at V, with the same role substitution. +The suffix state changes by b(z-a P h), so its helper output is + +```math +h+d(z-ch). +``` + +The final change of basis gives + +```math +G[h+d(z-ch)]=Gh+e_p(z-t). +``` + +Thus the former p coordinate is replaced by the independent z coordinate; +all other helper coordinates and every main output retain their required +values. The old t coordinate has already been returned at F. This replaces +one U-to-V target by a U-to-F target and an F-to-V target. + +This uses a new input, not two outputs computed from one input. It does not +assume a helper is zero. The early output is a public field and stays live +until the caller returns. The successor input is public from the start and +is first used at the cut. The split itself introduces no new COPY, CLEAR +or owned lifetime. +The source's owned erasures remain charged under the inherited contract. + +All three basis changes use common physical charts. They therefore commute +with the relevant chart operator. Native normalization gives ranks +`dim(F)-dim(U)` and `dim(V)-dim(F)` with their exact phases. Scalar coefficients +stay outside the tensor substitution. The frame induction applies at every +positive width; it is not a test at width one alone. + +## 2. Five released boundary relations + +The geometric input is PR5601 at `8f7e870b22885a367b347dc12791da98fd53f83d`. +The PR5605 constructor at `4a57d245ac3918ccc9947a867ece24573605e243` first +reconstructs its exact relay word on the common PR5580 source. Its eight +changed intervals give paid change `H6-H1-H2-H3`. +The unchanged PR5612 constructor at +`faa9f6dbe6b8cc4a996d3edeca71823056453e1a` then delays helper 696's preparation +through the complementary component in helper 700. It removes the remaining +owned-738 contact into 159. Four initial ADDs cancel the nuisance input sum +on outputs 159 and 222; nine full-frame operations restore helpers 696, +697, 698, 700 and 703. Its exact source and output hashes are checked. +The paid delta is `H4+H7-H5-H6`, with every target retained. + +The combined relay's 13 changed intervals are disjoint from PR5601's 21 +changed intervals, including insertions. A strict merge rejects overlap, +retains PR5601's frame metadata, and replays the complete result. Both +sources' input corrections and late cleanup remain in the merged program. +The retained PR5602 constructor and witness come from +`6c224aa720203c4f4615e6538d8038a275387db8`. No coefficient, helper, frame, +cancellation vector or output vector in those relations changes. Only the +chronological cut indices change, with explicit event anchors in `BOUNDARIES.json`. + +For a forward boundary relation, the complete prefix gives a helper input +combination after cancellation by coframed fields. A scalar input basis +makes this combination one independent input. The helper has no later source +read, so it can finish at that frame. The reverse relations supply the +corresponding early-input rule. The source constructor uses an algebraic +transpose to derive that rule; it does not execute the owned program backward. +The final program restores the eight COPY opcodes. Its complete subsequence +of operations involving owned fields equals the original chronological +subsequence of the merged relay source, byte for byte, before the independent +splits rename owned roles. The final preparation adds its own owned role. + +The five fixed relations use helpers 652, 341, 596, 668 and 684. Each replaces +one H9 helper target by H4 and removes one paid H5. The complete arbitrary-input +interface is checked after every relation. The sixth PR5602 relation uses a +frame-597 contact absent from the PR5565 cascade; it is not used. + +## 3. Nine independent splits + +After those five changes, the first split uses the cut after zero-based +event 12520, chart 306 of dimension four, and pivot 259. Its helper group +has initial chart 3 (dimension zero) and final chart 127 (dimension nine). +With e_r the coordinate at role r, the exact vectors are + +```math +a=e_{261}^T+(e_{256}^T+e_9^T)/2+2e_{259}^T,\qquad b=e_{259}/2, +``` + +```math +c=2(e_{259}^T+e_{61}^T+e_{265}^T), +``` + +```math +d=(e_{262}-e_{270}+e_{265}+e_{264}-e_{256}-e_{271}+e_{263})/2. +``` + +The complete prefix gives aP=c; the complete suffix gives Sb=d. +Both pairings are one. The boundary basis has 14 scalar events and the +local basis has four. With their inverses, this adds 30 ADDs and six dyadic +SCALEs. It replaces one H9 target by independent H4 and H5 targets. +`SPLITS.json` gives every subsequent cut and all four exact vectors. + +`check_cut` reconstructs each prefix functional and propagates each suffix +column. It checks zero support on every other input and output. Full row +replay checks each intermediate construction. A separate dense-integer +transpose replay checks all 565,504 entries of the final 752 by 752 interface. + +The nine splits are two H9 to H4+H5, five H9 to H2+H7, and two H9 to H1+H8. +They add nine independent inputs before preparation. The 735 public fields +become 744, with 536 helpers and 208 main fields. The source has 25,132 events; +the relay has 25,179; the boundary step has 25,184; the split word has 25,440. +The split step adds 256 scalar events. Its helper profile is + +```text +{1:2, 2:5, 4:91, 5:6, 7:5, 8:16, 9:411}. +``` + +The verifier replays the retained PR5580 and PR5565 words. It checks the +PR5565 paid delta `-8H1-H3-2H4+4H5` and helper delta `-H8+H9`, then the +PR5601 paid delta `-2H2+2H3-2H4+H5` and helper delta `H4-H5`. These are +credited source changes, not new discoveries in this package. + +For 00. +The preparation below adds one more strictly positive term. Against the +consumed PR5601 word, the complete target-minus-paid moment increases by + +```math +18[7g(4,5)+5g(2,7)+2g(1,8)+g(1,2)+g(3,3)+g(1,1) + +5^t+6^t-4^t-7^t]. +``` + +The five boundary relations supply five g(4,5) terms. The nine splits supply +the next two g(4,5), five g(2,7) and two g(1,8) terms. The relay supplies +`g(1,2)+g(3,3)=1+2^t+3^t-6^t`. Preparation supplies `g(1,1)=2-2^t`. +The delayed relay supplies `5^t+6^t-4^t-7^t>0`, since strict concavity gives +`5^t-4^t>7^t-6^t`. +Every target debit and removed paid call enters the final invoice. The old +components' reported kappa gains are not added. + +## 3a. Prepare the rank-two prefix + +PR5606 supplies two exact value identities for prefix helper 573. In the +new split word, its input is set to zero. At events 13651 and 13676, the +complete normalized rows satisfy + +```math +r_{573}=r_{572}-2r_{732} \quad\hbox{at chart 595}, +``` + +```math +r_{573}=r_{572}+2r_{710} \quad\hbox{at chart 603}. +``` + +The suppliers are live in the destination chart at each site. These are +checks on the new word; they are not assumed from the old source. Each +rank-one query is replaced by CLEAR, INIT, COPY and ADD. The helper is owned +from the start, and its final normalized row is zero before the last CLEAR. +The rank-two productive target is removed. Thus the local paid profile loses +two H1 calls, and the target profile loses one H2. + +The constructor renames retired role 573 to owned role 751. Public roles above +573 shift down by one; the eight original owned roles shift down by one. +All main roles are below 573 and keep their labels. The final word declares +nine owned roles, eleven initialization/erasure lifetimes and peak occupancy +two. Earlier frozen inputs retain their original eight-role format. The +checker derives matrix width and ownership bounds from this declared inventory. + +The final word has 743 independent public inputs, 535 helpers and 25,448 +events. Its 752 by 752 matrix includes all nine owned roles. The final helper +profile is + +```text +{1:2, 2:4, 4:91, 5:6, 7:5, 8:16, 9:411}. +``` + +The added COPY/ADD work and all three new lifetimes enter the scalar and +route bounds. The complete bill uses the smaller target count and peak two; +it does not retain the old target credit or one-owned-field bound. + +## 4. Native maps and the caller + +The exact signed-Pauli and phase verifiers check every paid chart change, +every helper target and every main adapter. The local replay checks a strict +nested chart relation on each public move and the source's descending owned +moves. Each helper target is strictly productive. + +Cinna Davis's p16/a7 controller and Ali Romman's all-forward implementation +from PR5544 remain literal inputs. All 18 full calls use the new local word +with fresh independent helpers. Sixteen backward main interfaces use the +retained signed exchanges and central-square translations. These wrappers +act only on the main pair. They do not alter a new helper output. + +The physical caller check retains all 104 central ports, 7,488 boundary +contacts, 53,248 central-square column checks, 3,328 main Gaussian targets, +15 thin query sites and 3,120 whole idle jobs. It checks native routes, +spectators, exact phases and every whole target. The complete counts are + +```text +paid calls: 66546 +productive fields: 12958 = 18*535 + 32*104 +rank mass surplus: 760 +maximum target: 145 +maximum paid rank: 72 +``` + +The invoice is counted twice, once from literal events and once from the +controller path lengths. Input and output normalizers, added scalar basis +operations, routes, owned allocation and erasure, queries and idles are all +included. The new independent field count enters the completion-tail bound. +It is not left at the old 12,814 value. + +## 5. Strictification, compiler and outer transfer + +Two independent rational interval engines evaluate the complete moments. +The exact raw crossing is in (0.00310440547057, 0.00310440547058). +`RESULT.json` gives its rational endpoints and the strict tested margin. The claimed kappa is 0.00310440546 and the tested saving is +0.003104405465. Their gap funds the finite compiler and outer parameters. An exact negative +derivative bound on [0,0.0034] makes this crossing the raw ceiling for this +fixed invoice under the retained BIT cap. It is not a global optimum. + +PR5613 reaches the same signed recursive moment with a different inventory: +its word has 72 more rank-five paid calls and 72 more rank-five targets. Thus the +delayed relay adds no new moment beyond that released construction. This +package retains the five fixed boundaries and nine splits and gives a smaller +complete inventory. The tighter compiler reserve below permits a saving +0.00000000546 above PR5613's rounded claim of 0.00310440. This is rounding +headroom in the common invoice, not another physical mechanism. + +Power 1024, cutoff 17, target floor 18 and tail offset 1/5 are retained. +The extra independent fields require a different tail bound: both charged +tail ratios are below 39/40, and `(39/40)^128 < 1/16`. Eight such blocks still +give the retained `2^-32` remainder. The fixed reserve is `10^-12`. +The complete normalized cost is strictly less than one. The old cutoff 20 +fails and is retained as a control. + +The compiler checks its finite integer threshold, initial range, shifted +exits, complement capacity, logarithm power 1024 and predecessor integer point. The old logarithm +power 1000 does not meet the new complement-capacity inequality. +The ordinary BIT saving remains 0.0034. All 54 strict outer conditions and +four functional conditions are checked with exact rational arithmetic. +The scalar growth bound uses fewer than 26,000 local operations and the +retained per-operation bound. The native growth bound uses the actual sum +of local paid ranks. The complete ordinary-work allowance remains below +`10^9`; the local scalar and route allowance remains below `10^7` per call. + +## 6. Scope of acceptance + +The five selected framework assumptions remain: native implementation at +all widths, owned erasure, uniform compiler closure, precision and tape +cost, and analytic integer recovery. The source helper-endpoint contract +also remains. This package proves the new finite interface, the chart +identities and every new numerical condition within that framework. + +The enormous uniform word and complete rounded multiplier are not +materialized. These are author-side checks by the same AI-assisted author. +They are not independent human acceptance or a proof-kernel theorem. +The final exact discovery screen tests 46 boundary groups and finds no +further candidate in its finite basis-pair class. It does not prove a maximum +over bases, cuts, scalar programs, +frames, controllers or multiplication algorithms. diff --git a/research/pr5627-interface-invoice-audit/inputs/PR5627-RESULT.json b/research/pr5627-interface-invoice-audit/inputs/PR5627-RESULT.json new file mode 100644 index 0000000000..1e90afdd03 --- /dev/null +++ b/research/pr5627-interface-invoice-audit/inputs/PR5627-RESULT.json @@ -0,0 +1,597 @@ +{ + "authenticated_inputs": 18, + "boundaries": [ + { + "cut": 11382, + "events": 25181, + "helper": 652, + "helpers": { + "4": 85, + "5": 4, + "8": 14, + "9": 424 + }, + "paid": { + "1": 2202, + "2": 456, + "3": 494, + "4": 91, + "5": 167, + "6": 18, + "7": 15 + }, + "reverse": true + }, + { + "cut": 11167, + "events": 25178, + "helper": 341, + "helpers": { + "4": 86, + "5": 4, + "8": 14, + "9": 423 + }, + "paid": { + "1": 2202, + "2": 456, + "3": 494, + "4": 91, + "5": 166, + "6": 18, + "7": 15 + }, + "reverse": false + }, + { + "cut": 11400, + "events": 25180, + "helper": 596, + "helpers": { + "4": 87, + "5": 4, + "8": 14, + "9": 422 + }, + "paid": { + "1": 2202, + "2": 456, + "3": 494, + "4": 91, + "5": 165, + "6": 18, + "7": 15 + }, + "reverse": true + }, + { + "cut": 11471, + "events": 25182, + "helper": 668, + "helpers": { + "4": 88, + "5": 4, + "8": 14, + "9": 421 + }, + "paid": { + "1": 2202, + "2": 456, + "3": 494, + "4": 91, + "5": 164, + "6": 18, + "7": 15 + }, + "reverse": true + }, + { + "cut": 11515, + "events": 25184, + "helper": 684, + "helpers": { + "4": 89, + "5": 4, + "8": 14, + "9": 420 + }, + "paid": { + "1": 2202, + "2": 456, + "3": 494, + "4": 91, + "5": 163, + "6": 18, + "7": 15 + }, + "reverse": true + } + ], + "complete_cost": { + "compiler": { + "H": 80511200000000000, + "N": "2^80511200000000000", + "eta": { + "lower": "0.000000134230972128213080564458", + "upper": "0.000000134230972128213080564459" + }, + "gap": "1/1400000000000", + "integer_test_exponent": 57508, + "logarithm_power": 1024, + "theta": "63/64", + "uniform_saving": "86923353/28000000000", + "word_materialized": false + }, + "full_forward_calls": 18, + "gain": "922773/50000000000", + "kappa": "155220273/50000000000", + "kappa_decimal": ".00310440546", + "margin_at_previous": { + "lower": "4.488346782018422611631558671661", + "upper": "4.488346782018422611631558671662" + }, + "negative_controls": { + "old_BIT": "Rejected by outer inequalities", + "old_cutoff": "Rejected by completion-tail ratio greater than one" + }, + "nonrecursive": { + "fixed_scalar_growth_bound": "At most 2^(16*26000) before native factors; a declared constant, not an attained norm.", + "local_paid_rank_mass": 5986, + "local_routes": 5175000, + "local_scalar": 220154, + "peak_owned_fields": 2, + "raw_budget": 1000000000, + "raw_scalar_upper": 184647552, + "tensor_native_growth_bound": "Each rank-r Gaussian has row l1 norm at most 2^(rf); use local_paid_rank_mass for the whole word." + }, + "ordinary_BIT": { + "admitted": "17/5000", + "after_cover": "69/20000", + "atom": "1/250", + "before_cover": "3459/1000000", + "ordinary_saving": "8590884599/2500000000000", + "prime_rule": "odd q > 2^26*N^5 avoiding all fixed denominators and rank witnesses" + }, + "outer": { + "functional_checks": { + "actual_new_BIT_stock_sublinear": "348599999999253/350000000000000", + "fixed_halo_explicit_metadata_branch": "26950000000001/350000000000", + "new_BIT_row_stock_sublinear_in_active_group": "1395799999997009/1400000000000000", + "new_semantic_group_guard": "3/1400000000000" + }, + "margins": { + "boundary_algebraic_matrix": "6084634707195653832353/1960000000000000000000000", + "fused_gaussian": "6084634707186961497059/1960000000000000000000000", + "global_coordinate_router": "135817739/43750000000", + "group_bit_router": "190144834643342546783/61250000000000000000000", + "group_scans": "699999999999/700000000000", + "main_transform": "6084634705795653832353/1960000000000000000000000", + "microbox_face_corrections": "26950000000001/350000000000", + "polynomial_products": "1399999999999/1400000000000", + "sparse_union_movement": "802334634707195653832353/1960000000000000000000000" + }, + "parameters": { + "a": "135817739/43750000000", + "b": "4346167649/1400000000000", + "beta": "1399999999997/1400000000000", + "bit_saving": "17/5000", + "cap_xi": "1782334634705795653832353/1960000000000000000000000", + "complex_uniform_saving": "86923353/28000000000", + "d": "1/1400000000000", + "epsilon": "1399999999999/1400000000000", + "kappa": "155220273/50000000000", + "lambda_": "79751647563/80000000000", + "lambda_prime": "1395653832353/1400000000000", + "layout": "1/1400000000000", + "q": "4346167647/1400000000000", + "r0": "1/14000000000000", + "stop": "1/1400000000000", + "tested_saving": "620881093/200000000000" + }, + "strict_checks": { + "actual_bit_above_effective": "12932261/43750000000", + "actual_logarithmic_gamma_guard": "1/1400000000000", + "actual_logarithmic_group_guard": "177665365296304346167647/980000000000000000000000", + "alpha_logarithm_absorption": "1/14000000000000", + "boundary_algebraic_matrix_above_kappa": "5595653832353/1960000000000000000000000", + "cap_above_band": "802334634705795653832353/1960000000000000000000000", + "cap_below_cell": "177665365292804346167647/1960000000000000000000000", + "cap_below_phase_cell_power": "2137665365294204346167647/1960000000000000000000000", + "complex_above_effective": "1/1400000000000", + "complex_below_one_over_32": "39403832351/1400000000000", + "complex_endpoint": "1/700000000000", + "epsilon_below_one": "1/1400000000000", + "epsilon_positive": "1399999999999/1400000000000", + "fine_prime_halo_umbrella": "7/2", + "fused_gaussian_above_kappa": "5586961497059/1960000000000000000000000", + "gaussian_above_main": "695653832353/980000000000000000000000", + "global_coordinate_router_above_kappa": "1/350000000000", + "global_gamma_power_slack": "9/14000000000000", + "group_below_dimension": "1/700000000000", + "group_bit_router_above_kappa": "218342546783/61250000000000000000000", + "group_gauge_power_slack": "177665365296234346167647/980000000000000000000000", + "group_key_fits_record": "1/700000000000", + "group_positive": "1399999999997/1400000000000", + "group_scans_above_kappa": "697826916177/700000000000", + "halo_covers_generic_inverse_radius": "5", + "improvement_over_user_baseline": "686717520400418148631/500000000000000000000000", + "lambda_above_internal": "1/2800000000000", + "lambda_above_sigma": "3/2800000000000", + "lambda_above_tau": "1/2800000000000", + "lambda_prime_above_lambda": "1/2800000000000", + "lambda_prime_above_leaf": "2795653832351/1960000000000000000000000", + "leaf_saving_above_effective": "1395653832351/1960000000000000000000000", + "main_transform_above_kappa": "4195653832353/1960000000000000000000000", + "membership_arithmetic_fits_record": "1/1400000000000", + "microbox_face_corrections_above_kappa": "2694891345809/35000000000", + "microbox_halo_volume": "110600000000003/1400000000000", + "new_complex_uniform_saving_above_b": "1/1400000000000", + "new_semantic_guard_with_C1_one": "1/1400000000000", + "polynomial_products_above_kappa": "279130766471/280000000000", + "positive_layout_slack": "1/1400000000000", + "q_below_effective": "1/1400000000000", + "q_below_internal": "1/1400000000000", + "q_below_leaf": "2795653832351/1960000000000000000000000", + "q_positive": "4346167647/1400000000000", + "short_record_fallback": "1395653832351/1400000000000", + "source_axis_superpolynomial": "1/1400000000000", + "sparse_union_movement_above_kappa": "796250000005595653832353/1960000000000000000000000", + "stop_below_one": "1399999999999/1400000000000", + "stop_positive": "1/1400000000000", + "strassen_integer_power_gap": "1951441519231", + "support_router_span": "3/1400000000000", + "theta_positive_polynomial_power": "2", + "union_header_fits_record": "3/1400000000000", + "union_tag_work_per_visit_fits_record": "3/1400000000000" + } + }, + "paid": { + "1": 41160, + "16": 416, + "2": 8208, + "24": 416, + "3": 8892, + "32": 416, + "4": 1638, + "40": 416, + "48": 416, + "5": 2934, + "56": 416, + "6": 324, + "64": 416, + "7": 270, + "72": 208 + }, + "paid_calls": 66546, + "previous_open_pr5601": "61719/20000000", + "productive_fields": 12958, + "query_shears": 15, + "rank_mass_surplus": 760, + "raw_ceiling": { + "derivative_upper": "-740697379185468431509527785786174826824653618646482726012475981/3138550867693340381917894711603833208051177722232017256448", + "interval": [ + "0", + "17/5000" + ] + }, + "raw_headroom": [ + "1057/100000000000000", + "529/50000000000000" + ], + "raw_root_interval": [ + "310440547057/100000000000000", + "155220273529/50000000000000" + ], + "relative_gain_percent": "307591/514325", + "strictification": { + "alpha": { + "lower": "0.999999999994326766581078689953", + "upper": "0.999999999994326766581078689954" + }, + "cutoff": 17, + "delta": { + "lower": "0.967529831449501193014279307231", + "upper": "0.967529831449501193014279307232" + }, + "floor": 18, + "gamma": { + "lower": "0.968053457228490967558213760766", + "upper": "0.968053457228490967558213760767" + }, + "normalized_paid_upper": "1048576000976562501/1048576001073741824", + "power": 1024, + "reserve": "1/1000000000000", + "tail_block": 128, + "tail_decay": "39/40", + "tail_offset": "1/5", + "tested": "620881093/200000000000" + }, + "targets": { + "1": 36, + "145": 208, + "17": 416, + "2": 72, + "25": 416, + "33": 416, + "4": 1638, + "41": 416, + "49": 416, + "5": 108, + "57": 416, + "65": 416, + "7": 90, + "73": 208, + "8": 288, + "9": 7398 + }, + "whole_idle_jobs": 3120 + }, + "limits": [ + "The five selected framework assumptions and helper-endpoint contract remain.", + "No complete rounded multiplier or enormous uniform compiler word is materialized.", + "No independent human or proof-kernel acceptance or global optimality is claimed." + ], + "local": { + "endpoint_coefficients": 565504, + "helpers": { + "1": 2, + "2": 4, + "4": 91, + "5": 6, + "7": 5, + "8": 16, + "9": 411 + }, + "owned_fields": 9, + "owned_lifetimes": 11, + "paid": { + "1": 2200, + "2": 456, + "3": 494, + "4": 91, + "5": 163, + "6": 18, + "7": 15 + }, + "paid_rank_mass": 5986, + "peak_owned_fields": 2, + "public_inputs": 743, + "real_scalar_allowance": 220154 + }, + "local_helper_delta": { + "1": 2, + "2": 5, + "4": 2, + "5": 2, + "7": 5, + "8": 2, + "9": -9 + }, + "native": { + "distinct_maps": 2916, + "helper_normalizers": 1070, + "helpers": { + "1": 2, + "2": 4, + "4": 91, + "5": 6, + "7": 5, + "8": 16, + "9": 411 + }, + "main_adapters": 208, + "proof": "Every signed Pauli image and exact global phase; frame induction at every positive tensor width", + "recipe_payload_sha256": "39dc742c360be94a585dd25e3fc37d5a3ef2f505e2bd6c152ad184fbad820133", + "wrong_phase_rejected": true + }, + "negative_controls": { + "contaminated_prefix": "Exact prefix functional; no other input", + "contaminated_suffix": "Exact suffix direction; no other output", + "extra_helper_credit": "Every productive helper has a native target", + "false_preparation_identity": "Exact current-value preparation identity", + "missing_central_translation": "Rejected by the complete Laurent endpoint", + "missing_input_basis": "All public and owned rows", + "missing_output_basis": "All public and owned rows", + "unearned_whole_target": "All public and owned exits", + "unpaid_gaussian": "Complete field and call counts", + "unremoved_prepared_target": "Every productive helper has a native target", + "wrong_boundary_event": "Exact boundary event anchor" + }, + "physical_caller": { + "central_square_columns": 53248, + "full_calls": 18, + "main_targets": { + "145": 208, + "17": 416, + "25": 416, + "33": 416, + "41": 416, + "49": 416, + "57": 416, + "65": 416, + "73": 208 + }, + "new_paid_jobs": 0, + "physical_contacts": 7488, + "ports": 104, + "route_payload_sha256": "7f4f0ca768ffbc4f93dcff575592c4c67411f46b4289e45b73f715a2ad47b142", + "tensor_rule": "Factorwise native maps; scalar signs stay outside the tensor power.", + "whole_idle_jobs": { + "16": 416, + "24": 416, + "32": 416, + "40": 416, + "48": 416, + "56": 416, + "64": 416, + "72": 208 + }, + "wrapper_sites": [ + 1, + 3, + 5, + 7, + 9, + 11, + 13, + 15, + 17, + 19, + 21, + 23, + 25, + 27, + 29, + 31 + ] + }, + "preparation": { + "debited_target_rank": 2, + "new_owned_role": 751, + "old_helper": 573, + "sites": [ + { + "event": 13651, + "rank": 1 + }, + { + "event": 13676, + "rank": 1 + } + ] + }, + "published_source_delta": { + "PR5565": { + "helpers": { + "8": -1, + "9": 1 + }, + "paid": { + "1": -8, + "3": -1, + "4": -2, + "5": 4 + } + }, + "PR5601": { + "helpers": { + "4": 1, + "5": -1 + }, + "paid": { + "2": -2, + "3": 2, + "4": -2, + "5": 1 + } + } + }, + "relay": { + "delayed_paid_delta": { + "4": 1, + "5": -1, + "6": -1, + "7": 1 + }, + "frame_edits": 21, + "relay_edits": 13 + }, + "separate_columns": { + "arithmetic": "Dense integer rows with binary denominators; reverse chronology", + "coefficients": 565504, + "columns": 752 + }, + "splits": [ + { + "cut_after": 12520, + "events": 25220, + "pivot": 259, + "public": 736, + "ranks": [ + 4, + 5 + ] + }, + { + "cut_after": 12442, + "events": 25252, + "pivot": 432, + "public": 737, + "ranks": [ + 4, + 5 + ] + }, + { + "cut_after": 13913, + "events": 25266, + "pivot": 722, + "public": 738, + "ranks": [ + 2, + 7 + ] + }, + { + "cut_after": 13629, + "events": 25284, + "pivot": 14, + "public": 739, + "ranks": [ + 2, + 7 + ] + }, + { + "cut_after": 13630, + "events": 25302, + "pivot": 76, + "public": 740, + "ranks": [ + 2, + 7 + ] + }, + { + "cut_after": 13630, + "events": 25334, + "pivot": 345, + "public": 741, + "ranks": [ + 2, + 7 + ] + }, + { + "cut_after": 13618, + "events": 25384, + "pivot": 573, + "public": 742, + "ranks": [ + 2, + 7 + ] + }, + { + "cut_after": 12071, + "events": 25410, + "pivot": 405, + "public": 743, + "ranks": [ + 8, + 1 + ] + }, + { + "cut_after": 12603, + "events": 25440, + "pivot": 225, + "public": 744, + "ranks": [ + 8, + 1 + ] + } + ], + "status": "PASS_P104_HELPER_SUBSPACE_KAPPA_00310440546" +} diff --git a/research/pr5627-interface-invoice-audit/inputs/PR5627-SPLITS.json b/research/pr5627-interface-invoice-audit/inputs/PR5627-SPLITS.json new file mode 100644 index 0000000000..9a9aa0c460 --- /dev/null +++ b/research/pr5627-interface-invoice-audit/inputs/PR5627-SPLITS.json @@ -0,0 +1,294 @@ +[ + { + "cut_after": 12520, + "frame": 306, + "pivot": 259, + "a": { + "261": "1", + "256": "1/2", + "9": "1/2", + "259": "2" + }, + "b": { + "259": "1/2" + }, + "c": { + "259": "2", + "61": "2", + "265": "2" + }, + "d": { + "262": "1/2", + "270": "-1/2", + "265": "1/2", + "264": "1/2", + "256": "-1/2", + "271": "-1/2", + "263": "1/2" + }, + "ranks": [ + 4, + 5 + ] + }, + { + "cut_after": 12442, + "frame": 516, + "pivot": 432, + "a": { + "437": "1", + "20": "-1", + "435": "-1/2" + }, + "b": { + "432": "1", + "20": "-1" + }, + "c": { + "435": "-1", + "21": "-1" + }, + "d": { + "443": "1/2", + "434": "-1", + "432": "1/2", + "442": "1/2", + "439": "1/2", + "435": "-1", + "444": "-1/2", + "438": "1/2", + "445": "-1/2", + "433": "1/2" + }, + "ranks": [ + 4, + 5 + ] + }, + { + "cut_after": 13913, + "frame": 424, + "pivot": 722, + "a": { + "722": "1", + "3": "1/4", + "67": "1/8" + }, + "b": { + "722": "1" + }, + "c": { + "3": "1/4" + }, + "d": { + "722": "1", + "115": "-4", + "3": "4", + "372": "-4", + "370": "-4" + }, + "ranks": [ + 2, + 7 + ] + }, + { + "cut_after": 13629, + "frame": 462, + "pivot": 14, + "a": { + "52": "1", + "14": "-1/2" + }, + "b": { + "727": "-1/4", + "52": "1/2", + "14": "-1" + }, + "c": { + "14": "-1" + }, + "d": { + "727": "-1/4", + "14": "-1", + "403": "1", + "126": "1", + "402": "1" + }, + "ranks": [ + 2, + 7 + ] + }, + { + "cut_after": 13630, + "frame": 252, + "pivot": 76, + "a": { + "87": "1", + "76": "-1/2" + }, + "b": { + "717": "-1/4", + "87": "1/2", + "76": "-1" + }, + "c": { + "76": "-1" + }, + "d": { + "717": "-1/4", + "76": "-1", + "227": "1", + "188": "1", + "226": "1" + }, + "ranks": [ + 2, + 7 + ] + }, + { + "cut_after": 13630, + "frame": 391, + "pivot": 345, + "a": { + "351": "1", + "345": "-1/2" + }, + "b": { + "712": "-1/4", + "351": "1/2", + "345": "-1" + }, + "c": { + "93": "-1" + }, + "d": { + "712": "-1/4", + "351": "-1/2", + "344": "1/2", + "205": "1", + "350": "-1/2", + "343": "1/2", + "93": "-1", + "347": "1/2", + "349": "1/2", + "348": "1/2", + "345": "1/2" + }, + "ranks": [ + 2, + 7 + ] + }, + { + "cut_after": 13618, + "frame": 603, + "pivot": 573, + "a": { + "710": "1", + "573": "-1/2", + "572": "1/2" + }, + "b": { + "710": "1/2", + "573": "-1" + }, + "c": { + "573": "-1/2", + "572": "1/2" + }, + "d": { + "710": "1/2", + "572": "1", + "498": "2", + "306": "-1", + "499": "1", + "502": "-1", + "457": "-2", + "249": "1", + "243": "-1", + "242": "1", + "456": "2", + "252": "-1", + "247": "-1", + "115": "1", + "311": "-2", + "205": "-1", + "126": "-1", + "573": "-1", + "317": "-1", + "503": "1" + }, + "ranks": [ + 2, + 7 + ] + }, + { + "cut_after": 12071, + "frame": 477, + "pivot": 405, + "a": { + "405": "1", + "42": "-1", + "403": "-1/2" + }, + "b": { + "405": "1", + "41": "2" + }, + "c": { + "403": "-1" + }, + "d": { + "415": "1", + "403": "-1", + "402": "-1", + "405": "-1", + "400": "2", + "404": "-1", + "414": "1", + "409": "-1", + "408": "-1" + }, + "ranks": [ + 8, + 1 + ] + }, + { + "cut_after": 12603, + "frame": 267, + "pivot": 225, + "a": { + "234": "1", + "224": "-1/4", + "81": "1/4", + "225": "-1/2", + "57": "1/4", + "92": "1/4" + }, + "b": { + "225": "-2" + }, + "c": { + "227": "1" + }, + "d": { + "229": "1", + "226": "1", + "230": "-1", + "225": "-1", + "224": "-1", + "231": "-1", + "228": "1", + "227": "1" + }, + "ranks": [ + 8, + 1 + ] + } +] diff --git a/research/pr5627-interface-invoice-audit/inputs/PR5627-WORD.json.gz b/research/pr5627-interface-invoice-audit/inputs/PR5627-WORD.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..b60955f312f76d08ee4f86ac2ad664e3ab4e46ea GIT binary patch literal 107885 zcmZs?1y~zf*EWn(inh2HcXxMp3dJ3Y6=>0-K?)RicXtmip@m|>y|{aD3;O4r=Xu}n zw_JDbSvG6-9?RZqCX`Wc;Qsj_;GT4YYdu8ba=lnWL6G2Z+N0jLvb}7dJQL3^ePQT}`o8|h!7D7(DTCUwb{!q;Jyl^ z)czU*dU$>AGknqL-37H$w!gG4I&42}0-hKLZ(0+_DQ#_(g#e4tqFjk3s8xV#VoK7e zGq=d_32jr-s5(rjUdMk!Uj(LJ#QmWegT8cGXhFc2TUG|&`hx>QQgh#cM} zBZdA8Z>%UZ;OnO_FQFwsWP}O#6TJjVfS1Bp`wet?V(@nViTPhk=lVdNe>HT~QMTp! zs#VV=$L%xf(>eG&>xt+d|6VNs;|U`miSjkP;^4*X4^madGof~E8U675%i8RHUH@Xk zgBcKbOF8rSnqUpk8Y?Bf&1 zTQ-Gc&wd7*m#JX(I_V-L6*falzM%&_b1mQFs^7nSept_Kfk|GYC}P&2eTitnBuI{S zNP84{vH&A@+q-+(w&)LM7j^Gt*xocE&j%YscTDe5y7}2NMPhyioP_RyEPG!X!n3we z41i9#ujsdqqBTc@=BCZ}ePKCoFIV7F^P$_V5-+ZXt@|z0u~2As&g(|q9@aH4lA9Ui z=HaouV94n*U1UZ=@a1B+y^bySbb7pQc?rC~B-7|tbU#>@WMr_L)5WmvMw(*a#kEMCfdDUwr7&0 zV&oqYpSCFhe!g#ATc#+Dzd&hRqaoZ9=Ms+_4!BSGa)(d9#(uq?gnVoLcFp{Tm@+Va z0#$lw0^9YP0dTI1e(_6z%~Y*BZL^BwD9^v1ZOZ}Gpue*KCZ8Lr2~qS|-b*FC2%$_1G zG(M&??{wDCq8cQ4S@G-kyEwWC8sDspoG;@9hxpgzyR~Pl_sF!|K3HDb0UrLCD8Dpu z(8oSYS!Q~km%^?IBA?l3u!~eD*gMXnlW%3Th*1)n=8MrS|8SIQ~t|x_YzE z(UZSRHMaWi!=zH|!k@Pclt1EcFQgneh&{=~#Wl&Csqn)m4BueIVVF@ybF!C${TDFM z^R8#K5&WjZ>23xlE*St)fNjaw#3i_mo*P&ewa*z6ih zgMYQewqC&y_GxH3h)5!8!=%1$)w1L+!$!Y$?C|V0}y_1Kj=!k2ecDuEX%KnySFQl|J=xd-{vI zF8wfHcnqRcBo06sy>G(yZFAq{1L{Q)E5TEZ{3%I&R|{8ti}UJiQ{w#fW`K!D`0Hsb9^eD&=I{qUTz|F? zJ-6M5>{R65a!nkR6YWA0s}4N3$#s>Xc>BLQpFV;dDV=4(>whd=04)p8wf4eB=MQYg z@83bYJy!{0i~pu>8VIp8t#Iv|g@~?4(`$iV+sN#2#b0+dEGS1A9Jb$W=yX94{q3$~ zeBD|uezikCbJTO)?3;_E%2)&tngahC?LJs~*Xoxj*c zKepmDm-^yo#k4*JH~rXOxFcN1Two{IciCKvvGCET*e%FDS0j{OxkSx!)4futuag$H zGxGomg6sxA<`^`69T~6-=I?+$7Oi64}w%3+;2RG zr#XLr-VEQ#+V{$k;v{VTdM)o&T1Mg0{hs2$jm`9B@3>V{ZDBpt2oO8)hbgRgyQ|q& zstWt>^918IeO&MLRQ)-?OVwcl!Q)CF zkW(tz4esTI}XU&hkYFgEI^Dn^eD+^YxpI)!?xX)lPjGp70}U?P582 z4-W7bH=wG#fBv)gd>6HA{aSCFm%M!y#Thn;)cbYXLf46@xFON$)|_+@66_xkkm z5cOA2D{8^m7_0&UeO7!jG^5`?>Gol%T&QEwCq)1B)PpgvcU-FQaYfk*8KI6tTxjfi zP>;#w@lHMNiS_hqo#UbGN1Q~L;13HABa-6Qi0_Mfb6u|5oL+k+7$;c&-dJ$@guN~na?~<(=&x3rnQ7c_;?Dtk zevWPqvU}ftyJby=5U)Yz9a$bIt-U<-`o-@l>afKZN3C~n?AtG+ug>*0*KPb?e7E`} zpk9wVuYREZ_Saj|!b-r=z^iL~8aQ}pVf^SVl9}(qmW!@iT|c3PogD}gmr;APYp^pB z@wDwmaTb5o9hyU$e17Ub=(A^j=v(Q>LE)iwBcO|mZ&YY4#fYF!-QS$x_3Pye@+sAm zD_r&1apj8P{aN!pOBf~kE`Jwg>_juelRIT}CoaJ5! zI;(AF*qI-%TT?0^7!LByy*q&d(_5s~R2@X2UO9Mn!#H{=Yx7<azC)vES>u-o`9L%=2c^B!ikMJN9$80=Q(NyqJW>i-PcJ8RXm6kZmuPhE>0 zS%~$^t@tiP4O)qD6Z3WQG#&73kDjtgF=LnV-TR&m)|WZR8G4^s3+MrL%#Xgbmvv#! zuxix;(-&+P@_HnE`#WB*P0sX^JN^8=KihwdPGlr_x~;waPBU?oP1RR=MysC+prr{- z^5(zpCW=lsa>Lh&(v>{PPy(yGnS^!=;2K+ItHybDDw3{EGdRoRV8kBSI zOk`U>GA~g#iLH!-`e0Qm+_i|T9$jjLBY%g^)cN&*ZC*AJ%}g3bOq)+Qh43>!h6$1(k#&OW$L^u!9?Hk7Tkas?R^V3UtzP7xN z9e)X~TdFSI1Tq7H*3rJ-sOxpU{uQ5e3{RXVqLe@?sDD7658zW zql~K?16SSe<#8=&$XleWu$*|GJ7VnvvF=T-T=`ZqThN1Pj*d(+Maa4CSr{wi-`J}^LAOyX@#oWUiD z>v~_I1OfzAjqGbO543gV(iC;cSIlgsEM(D+vlpG{{FsCFejOKu)34ViOw@_HdY;`nYg8N`udnP0{33nG;fb2_ z>U_eQxD)j~1E;2(KTp`AzEhEXeX{j#0_jD&+B&g!-epMCx#WJfzp%jwyrh6@-4vAo z-OPkdi4qb77e#meDlg;AT1QN#J6^P42k>LQ^!f*oq*7M z({~k(!k60|XXf|!`F?}mrUX;ua~&WisGD`1%ExZkyy?5(M|1FGr#9i!aU4&_?1|G) z|9-&lSR>-wI-M|v_Dvd^{IwzaeG6i7nsqfl1K*jN%h*0Y8#&fimB-Vyyy~s%%$MeX zSNoP_ke^=;4e3ZsZfW+GK-ZuY`i^XkXkW#9nYF5z1d z^3$a^{<0{}l%qEjU@FSa9X<@-7X(w{5YJ-Yv#;||ZNiz53xk!FgYK0h%G}Gdsr#ML zYT>bpBtUtO$;kw9%;2WqE5znu?up-Tek5fbJnz(&y;C=0qH+e_&g5VK50X58cbIAI ztN^ID?NSmq2>Q`_&)cFu=JW`L`UwfI?W?77u8S{1Thk`4N$UOpW;*9Nn;g?q?5nP8 z_E`Z!=Cyt7R5Pv|e$*E9t069HBp2h6KB)tD@4c`SCkps-=eV9V_bHEBKVCFTKC?0@ zK#lcGulPzAW;(o7*axpJxdOfdZp+Ui);Z*xA^Ah!{ksknUL#p+gV$O5!DA~RH`ttq z`_l#XzWUeOIOfoe8yT&{kISZ}1AOkFvYxav!G+9?IQlL{y{4EuX8htfg*~GSlg%I^ zon0~36I*MtysGP}s#t8(mf@}{%G!*$7e+I`0iFb}lRSsj(}IVc-a7^VHSy7X(Up5K z+PmEEW zNaC;O(@Wa92M#~i;OXW)CCy|uk1)Hn70!F{$tJW}g1B5Oe|@C#u~auJ`*yS%_UydU zrf|shn|)?1Kw)zm>NFv!*#1Dus*HWhbKZ4!H6~A4&Xv zY#Q9W<(EAH-KM-*dkgUD#dv&;OndZ&zZaE$;?6TwIU~F@^Z`$x73~_gCzX~FzmCX0 zH?HMA-?!e}CgfNE3M*=hCI-LLFL%>-H461Hq}7qT|ApL|MJ>kB^sd>;4Kj3KaGQaZ zA7Mk7F}hVH4+&(y#r9S`s3WFN2GO%)^s4aoJUU19$$Z(vJLu`z`7L!-U1;MgMF7xN zo(0JP2@E^L^Tk4f%+2 zzU=}JE`djt(Ox|(0NUA%i&Y>Ui^5VY%Pc1b?=u)+=zIcsbMOfK*rWS!k1Ty^8F$aY@^ zXk7EfN(jiS;I=%g@2~nuEa!L~LzKzSE?#vVqMNKH?&i)(6HHgTN2LH+TD`?H2?gm=TJw}dXWQBDJU5mM0K-g^^I5IJL7q&sYaH~01L z=YULj3EyXI^t=7stXq?F-z!1W$H7(mzrM>*5!M$S{{Uy&W62U=D_kI)Y+k+GDkMsRjCWV=D&-LVM4MYqzk z-B!)+-$-izo5xm$^GB3+2GR3`;fIs!B@q$oTHN(FH$SXvcMATR+mJ6lzclvr89sv* zzD0FSl>76kugkXfaGO5Iio{&x7(aGsoxL3t6*)6Wgs=?1c8jnrCweu$SQ9qL;6Ax?*pEi3CR zpvpQiRWpkQH+*5eY#x(N4i>NK-77z(9nmWQMLL<*12k+1`eVrZ=)g~M#}9oo+p&z{ zVH7O7jwQ6P;Fcrg68_bUfq5pOHoGO`@S8ZX_R9+h^m=yo`uOt0vg#(s(vp|# zu|~ausW)#pUN2o<&j2qLQ_t-}txelo(0Wi2yqAH?&CHia4U5L-MMnUtk&|QjGkFZJ zeZh0Mq3vP%OR4AXFABG>xp-4g`=4()UiV(13$IUk&y=rQF0W9~lkNUT5D*VZ6z zeyEf=de93swX$@xW?#5F8C_9=H?nR+bJzi z_F>=rXcWVTA9@x2o9VH-_X+Z}%+z$lbhP3-KI|Ub+SGaUH*Rksx=}EKFYD!L`R_VG zns(0E;{Jf+TD0K$k@D42J8t^73TXdl<5*YqC}`x;s8aTR)QnG3-H$4Z*f7{B`7-tj zJ$pF>Wx7;8?dCmkyzT%V!9t!IM{akwX@Kjv*9)`LyT=#vyEKqG0Q!56Q%GXbB79(v z!qpNqIjOmzITP=+b8q%K2)LGb)c_!uHnj0v$1zcp_}-Q&p*X0R_UOlhQWsQG?D-Z#rlkDcrN&>fF^V}b7yK4A>FBufM>QZ*25 z1)oX>R2pq@FPZp*l~11JN)rtGw;X1o=j_@i$Ce?R(@3{O&=nmYo+H8M{T2NzpfW?b|9^{R>7B*5Rh&_9&JOJx#v~zyZ56|CLdZ(lZ$wVcw zx^3^fU2Fw?K56E7OQvh0jme5Og;Dhve6y9u&MY}xWjUa=0sm~SYV-Wkl1i9A$Foj= zfhDFs1^w_2V+M@|A;aUWxeiIPEhn>@-We^punonkz&=$CD=Eoh3S;iO(9A#Kk)g5m%g_0l{b$)tV=M-pvNuF60U$2N3mHPGQ=(&&mGdC;wgt|a?qcg% z*mEf+;?7j9B@7~g-(qew0E5(CdyZH z8SUYd2sncRmjIkxQ<2EGozv|?R$af5m`Vq4X;mI`bM^WEXh%bEb{4gD*{qO>S%&nR zKj=oS7h_lQ)(qIvyC=q18irKzl^f3JW*M#4VDiOjp>NmsVzI@V2`DkB9)76uZ7j%g zwCn3Wcs8F>Ioe?qhMT|TF6J{tiT+U_VlIi=Yua$&Z!!h;{Z=s@Dbs9XIP=GYR77X& zwb;SoOZ%x)#oLh0fDlTCq1%^TnY#m8#8hedBxT0&N}FL$$FNQA#V8OZik7~f&WM*q zy-{|ALZwuqGfss$O_IGCPmMW43Xxl?CYgU_1*#(A0DA5 z+rv-QL zP8s?D4AlgRrDTFbfWcP{^AbhNUT`Pj32}phXsW=Uk!P`i3;+82jcAaXI2oW$=V>u}m z&{cD;Bq^UnVFv!Ht<-I|X?IasZul{2I%8CeQqW!6?3iQ(8rB2`%&B4U%OPe__Y-3N zz2*nmcQ5w}+nJNgetW#YP5_}KfRxG{CL08G+XI~F`N_i968Io1xz@kYXFiAu9VQaU z%}I9FleX0t0iWwck}@NJvskeQ zwd7MK!fG9!vR)A0!wsj?4X0QuvEXs*Q*D8Eb@z{M6(Ldij)YREgi>kj!TC!9R&zI% z9j3bTRStivlIt9xnX$Q^IfpAZFYU+Y9^o;5F5L6$ROlTt1lOWdbw{P!lO`_1ot|*+ zU*X&pJx*~H&&+w<$(K%-au0A=&xEPhJY>6MWV;;Q3PXgZ{v*TG&ha*g@Rya6kbLm< zHdX@U6hK|L$l{grX_abkvRThM5smOy;K8rSfr0pd1o(i2f@f;P=n(jUU&XlXRy0zp zz)jBL1?#{CYrDE(+K(QHSLV}Nt3ME}1IH=yn^4K1BuhI)!VFGBT}=r$wB*P;;eCpT zzqw@c{7G=!h=upKd(U{RML*+}3y?*Ud}VZyw5F?P=9;7bYVM%p&uFVNrY#~xukdZn zCUC}5$FBY@=6pWN5)R4I0+&!FNnoATbOi}eq9W+41O|B}B~B%!@V$gk=2zNVJT*vH$T<4CYhV?k48xOyikdra}>Bp-XoPJrE61ZBsxlmPFlX^L87 zbrkL@WZL*##%H~-`dRR+KmG7c25lN@oH3=St02pXAxlTJiD0>S+S?ha3K2$+@cQWE z`e<7xhmKG8Q~JTxL)DlZt|M*gV_y}=&Z&8HyUUdz!dx`{<=Plr8#~@C9Mkp(rFupS z%*!5%18PQswdAzyIUkY=^b5&ZQ*dYAbBIY;#*NP@Lky z8VI?SYrht3SO1hjXm$GNCM_Ks!Kc=eLPJC$$Bn0k?=FYlc$T5N;yi++`>uq}q!|fc zQ8S2EU>Q1e`I1W$l6)Ec@IxoZ;h}Bbke9cyESi`)V%7uJ%-?bkqcNlho#B<=#Oj zrE(%5PB(I?c!OPpMPQS^{j>RrT7_s45T$rXtDclzB;Mtu^awFeK2><_%A}L1dpGK= zZ~2g!q%S&^zV>Qj`aIT+r-{qLKNRjGqBCCL`e5g$t}Vo%*{H5!cdx_M0RzLtWjyS*yWF8RrO-CyQ$Rn8dC9)n44m?L|QQdl~}4> z&9TJ-;?9vN3}SMmDY9KbBG-i^6yBXlHE#E$z;6jCyu*_>^Pkj7I;c>A^MUizD6$BM z)XuZGSEgAkT80VM4((stU)qF4l5doO) zsmC5Va+~4k%=U8o$(O%1TQ09BlMgQp-x2PX6@DL&lAL~ty=dEO zWz022(%^7p>FhpQrNT0> z0n3|c`6oE3W4sjE(}$=;<}z1Gt9Pfj(nSU!VLtqx@*XWN(j z`LYWPcb~~s9$&c0$hu|4KKxAK!58-$OC6>o&VG98Crbo+jvU5*w_=sf?@-HCRXlKpjQ$ZQh^HUHC)Bd5SNbG5FO_$R8> zYN|>xnt|_catCEPh_52|yDoP`{ktJ|FY(UbGq>!Ian4)B;=S zRow8vU=ru%ya2t3cOK|6JpL?sA6S;aK0TIMJ@7Qz<;Iozd3;dQ%2dpb05wjvI`125 z>JbgJXK1v=-C}w4B&J{<=i{-hF)#hVlPJ+=2a5JYw^Bn4s(n=-4?0`DXL0NVGLvgx zfTFWi)T%Fy7*I^dWGjOvma!X&RIZp>N>55E2d2BM z8PHeX30PD$%qELx3Rqh=u#d4!Wi63ba)G)gf^BQC55vkDowle?uAA!Xv}^muD>`$#OR9FsU?b#r(__W7mp|ESBSN#z+sIM-eQFIMI zwjQ+BQ%bC!^K2z7g!^gEP4aJI3wYnC9su=6a|@Es{~qE|fT)E!F!$5FrWfG^&a{&? zNLz-LFbGcM@=uuEERKoOCPIlbWY+Bnb1_u7U_^+-oGu8J;Fz{Sh9?DlL}-VSF#e&53%ehY>Fpd5M3WUWqwp3Re)=bqW7Y>rhu5i}iF>*iNX6=*!ZDj$ z#+8l(oyRnPfo z_pK434`@h()6v`#B02SN6_~=wg-~^AoXX9Gz^a)KW1a5z2a>Zv4ZK_kHL^?a$@KF1 zvp6IDZ|Z5xzWkKOq*9BPtS}O}$%gqoq*K)2)F<{LMtLMI7GwY;-oZLk9Kj`JZ>c(4 z?gi5suXFgh5abF-ipV2NsA$xp;q3bracTbBl@wTxV(FZLdRUCdn0^*f(7!!_X`ysl znMCk~z5i_Y!{G;Q64mMcH#o@S^2PW{7T1orR)wJi4EC1U`LGN>oKxuK0}F5VYbZuO zz0tgJ$PcqC(bl46=$Q)yexij)GRK5Uq9^bph+LBY6z2RSwGD^cZ|pXhd#sbAPCaZ~ zquwH&uT%apPeid;EmX28wRMP3P*cVoZdFdBA8oK-z1WO+Jkw{9x1%!15`LZtmK1Y3`)i3hvuSpW`^m%H76O-vbhrpsL2)I z7BOKUD`hHed{H!vfE^BgJbFW{4I{f`!=2U>Du4J-e3^XHz3Jv6Z<3wcq~YVF3FPy` z$|J?_>NyeIx2jm9;aCzqrHxPqFpUcNWJS12Q|%Vt3-4$#?r075zX1lRD%-1Sc9f&b zi@r@K!gWtxsL1#|6mO1_;oiTEG;_Naj|Ms8&%kNv!Xn4hT)<5}64tDI(=7S}>uo63 zNJ)*&a%FTkT)WOfv9=LvdPL$*%9608p#iW3D;X(uNqADaI7Bj&Ti8{T(^Zr4UuJh= zTQ;-tQ>!;eCv>n#VI%**X7Gt5!IN6IGYAeh(UOOl_oLV?8VN4Xw1w~wZT2gfMCM1U zJv!UDLv)C6iO{}OKJI$rJGNf^-8S~wAe}`+^p%NSWRjp1lEr$c+zx{zKGeXDZW=4! zb&oZfL|V{|U@?J%U$!Xh0QJVZ%o(y6mQy*SRIH^~46gv6T!Nop)HO1lS>6aFNN-l$ z&0oU9h5lfej~oylC9!c}!#Nfz&qXANlUCzUtC0+?XqIHw5t1huDf#VFs#=3Q{oYZ5 zswd`tnl`O;URr4*IRS`sD5;%3IL+0l`CgDT@e?&&jbpJ#ij{Q`nymJ_WaQuhO{`et z%CX;m;wpwIL7x6CD#S$S?psFOg~&u;8Qvh_cxGGmK+7ha{CD~lL6}))C8?^KrKw1U z5kN%7B01P?qTEg^kQ{0$!|U+oa0D&6quGkovr?TQAvvgF@+~zc^Q@NX;Ydc@4wIgG zpg~k|pB(NgDN#_w&SQi}I^T2}?uU6dO)*qfiqK5cN7pUn-~ZehMut@KjhU-$|8cW5 zjP&Z8)AaBTH*+w+dSOG$CMz6|x7QHcg`|vND>JQJTa;ay4>Bvtr1g_Z@0hVmEU7#fNSpvSLu0Tiky@ z??crm5+C|~E+s@F{z0J+b=U4bpA3^SzGxHH4L{A;u!xu59%Z z;augLf0U)g$NZRX?8QZqTxAd86yaaAW~)pORN297brYr-nhWBJCL-i#?!s$_-@9fG zzn5W;Or66Ek;D#)-c5+Q5^Q^Brv7$?ccQOoESc+SX8pQZdsf3T zylp5?uFaTxD&Mxje6+0rPtN}+sxT$j1`|jloKN>Y1`P}hFbZ=9iIO4623>v7HUw3T zcw}Is@0RAidA}siSpp%fOl(7NQe2iYEPxRH^#&J{Yn6?RU<^v4zbWA+LzK<< z(PEa5TQPl$?(`#8X1#&E`B}P?EZhpGpr}iFdGMn#YQkx=za(0iMM2bFNsE~sO%IkI zPqcFdgizT}rI4O^s7=QbgGR^UF_b`7B-w#i4;I9zq>5_*vrKnsE(HW@FLUtXGOO|!Y^9t{nLHX6=WV$@j`-*7+ewEr>)$RP{1WJGref44oDe zt-p!bc)6}qTUTM_m5A#QA>0yMfO46IAWreFCJH+VGCRrt^8X6R>gKv zqi>R}6FXZgZ0yWNGS&G-@AsVq3i4q+fvna$XNW?H>i_^l?_zhHW+2?I?25C3Zn zyd$IS*#9skhKhD3q?l3&hhGF&r-Iy)-q{bd?Mk%mD*TsW!vD%J%YTf)_&DWSh(=WL zrLJ6+ENX)G$Vf|X3sIs;SyiVQIJLYfrG7uYdB3U z_Ft%b`@jH`|HClhKY*$KvHXYGJv_}%-_Nu=s<%7F{>w1oe`T2EzebU}2ok<}d<1)D zmK^dAYJ%Nvd3G#6NjRPBIqfB0B1RzIfy7Et?7Geqh{eO@t@}ZVy-YOrRMYAk`C<76 zHoR5Wx1#^2`NEwP8&}JaO`zs2k}hK>1fJbX#<%tK5P73GZ;aI$~0;6&0sUkRV+-~(`mlkCm3DAyi()FpEIVU39W zrW}i^p_#+wIy#5k$>bkujD(ZL$VQ`sI(IkCKVvZPSP5nj_x&0rQvW>gm6IoIrcr;ibmRQIU#`8ZoyKOGxwbmuwFziqPN<^bMR*`h=U)yNP%dd z%9GiBBalS@=%9BI8)um3;zqexpAj?Skti23RY*)&QFqcIsClW@FEAC&7D3!cU4$tl znj&$a^V0hfim0)RE&M-9-%xzk2Yd(Kw3~t_DUR=`Z`_~(y+-+*X(~n1q+`3&^|L55 zmG0@_lI`lF6vYP3Y%rn9zOMz`}}3l2^sDfpP?;c&0s=c2icM4WGaMi@v1b;;q>sNP#*#uwy9V~9% zLC|G)&&MiOR$~VSD#G@(j;@3x?L_|qOM+)*jGr%O(4$>JsA3j@Qb!zu8ZuJPRv?1) zfR0{@CuRP-byZx2ialiNZD|kP1yMCk(lwy=MYV3iLYEKGSDRj^*iaP~T+5{*(v?K+vi44rNP1M^lfsa*n$`uB^9)XfXxQteq-_3-6pJ1q4Xx#nS+Bde|)8w4lFE5Y#E zq=(O6Ie?T{Iz1curg26Pdlvq}fURcZ2dzTag=KW7FNlBU4^Rv7r_{AEzw8IqaMc6I zeWk>A-Z3^ex#N3w+-_v+UoM5f?Q*Z4vi!tfi~!=vHZ1YNy_h zys6P&kJRSdS&4U(87Dtx5tzUfn26z@P&;l$wxq#k)pgD#b;>3Em$T+0(2MuN$J~nk zMc|{B*u++Hz-VoyE6Lk4pA(&Ca9MwSQVAozKKP3q2dDTV_$rHDAWl28fr6+ zn3G6zx@Lk1(uIWEr+$fa_evEXB}XzW$@vDCH!?&r`vzMv=N^2sN4>j7_{OW7KIU@= z*~m5hkh)}UIvn4Whp&cQ7S zv1z2^HbBSKIW#9$i%>0<4Gh`wVAl06NBn~1nW(pmvG3kqm(n#25R-yxlKiP8G?b#v zKu=ZLwADGx(D6}EMklb7aSv3zY@~~1;sA#9J|Hy723)8biX@qim#6U@?q(0!P%x^I zRiyJ&tVLG}Bpr=KbR7n5jS};^iN5>EGibjz9HqYOq=9>mS-+z9#~`= zpJ9$WOGrzvh^#`h4L=)=s>wqkIrbfnZ{~j$cR0TPhXYAaoXog%YN{LNbqZgx&w8@h;D@>H4`r3q*?wbmYd zGF^f!9pXBITP2ZJ<~tjP2#kR;@mMqsW|T#9>%JJW4CkF8_u@+=5v^PKWWh$%mBfOgQWg{K$ewK6~RucS1{)`YK zSy|b2XIG%(P>IC96UA+l%=FP_?ka1r8}7B4Xwwzhl(AWsDnVJUhqm5AMqhsR`V0F} zNzAtC65V=E~!5Us`(8%B$tVt4d+Jqe*GT4xZoV1X%5c5HI543Wm zcuCHP%hr!fXh|-IBG=lh`g|lWWD-C?>5KtWs}elUU&H#&g0Z;KD-fO zmUsgBwiKQ1XQhQ9C+X>Pah@bDXDz;@Q#juD0dYybC-fz%(8RtG8x=+EGXCUttX*!p z7sEoiE94NkwQD1DVY}Yd+pn%5D+y$c+hms7$|<@RMNB9f7|4v+Ch6mGX0REn zx31e@6&|9^xOzFAtQND(IKGhHj&VZ|{;`o(Wmq<;tMgF1m4Aw38);iuXM&@kCajt< zp2L_U-zc78xj}O3uCRfGtHr$VRlpS!b?Ijv;<{?`2;WMKabM8qjVj|lT%fAom^lVB z&F7#HqHXJWFK!JT$Tgv%BqKCHM!=`gqLAF)SH=*v;95$xh>(o_NU`d69KGg4vUrqz zGIi>en_CYYPa=UV3umefGpq_GZ%)@^La(YB%^qUr8x-az0{c_uw}8h|oG`z}BjCq?&3wEG(g?b;}!sc-e9IUh(nlk^s z2AKLbfh34mU{8-@0%xQkzyw{%Z$zGg;ZoePA)IM3V-`=a6+}@kg4R1N2o2+DWVEvVr1IM?v zKsAP>;n&+DY|P!@Jy|NZ!gwLA$!tdVVn)I?J3+!WI3CFpA%zT`Pg*DocL)vp**3xQ zIt}y41aPZws!3+irb1nF(N_Y5q;>(~Y^A%$t1|v~(HiELZGe302CCl3;t<6gMY*kW zgt>%gNlaqB_=-YR2;6jPd@@Oc1x+My6WP-N&3jlfAI(}D`;Z;@PPqIGCCO7L_}}6M z`BFWZY)4n0Z}}n0>|a;3QzRo;N&Y>Lr+K!LIsS`!sOyq;P>JySa$usaqOBj)Bm)of{yhU0+kpdI-fO0R43hg z!Gd1mPcMRr)k+niJS|_tbX9Uauz-^zF36t(yhp3}Y%Eyq94(OO&qUtL=F7q~cbp2` z3gOJz1M22b67Jd$ALTNBgf_s2(6c`=NwvsT9o)r?@-Gqk=YcS5bTnx}$b&PdeHx9v z0a1|f$nj*@^lyDTt@pzpmt&lj&~@51NmmnFG(Vs83MTcAB+ZcgkwF;i)k7|0u#>GY zW`?)qVMMnoK$ETH)NNKNnbQ3n#D8=Z=D$|14{J;Phl+Rha??`9v+qZK>wjQ7h2>^s zJ^e?1n{Bb1Mlc}#KfPKn<(`se0X1?W=nxMMPZC?~M02{!6A95^J(6ItNZ_!_^vr^rsFMk*bfI zOIy2uKVS(VN0H|(tJfXMFl3mqU5prV8sm8<-|5@8+AY?a4MCq9mnw3UP5L#(jpWRZFDX9~vZ$qg;eOUA{LGd`wh zLRfvttTh`A_Jo1CB@IKK=sF0bu_}7nN`}L-_^{5E^o)Og0JL>snFfwc3(i-FCa%6 z+TO)_$Oj1V!2$8X&i{?gnON~UFhvn_{sp<%Kf?bqdG4_xV|D1pzpG5VYZsf}{g8}Z zM)B2?T@w0mD0SC`oEiA7KpQ;`R<6OV2&lP-d!+vFwWga*_kS_=9$-y1O~WvRUZsRy zq=rBMA@qQnPy&ROgd$Zsgep=6L0(2A6OkqYDk`7?0xAM_{SSEG z&-=XJU#|bU=Iq&-ot>G@wmG|dPI`==kl*{13;5JS^IMOBEX^?4^Ub_sQNjH=1^XsI zPjkL>v2(uFA*M+41V~)!@`V#Wd*1aQfu8_H9rP>Tc*|z&<%jb|i2`3S&txZapyOSJ z5%sUGDe2Z!Zt+Sfw|zlnC)8zMtwT|xv0{t3wAtKtK41l&z#8Jg$c|Y-EJ%HwUi8vE zLxIWkSO#T=n<(?R=-P5vFvw1FKeF@K10KPr@wFn#B)TW9_Mg!6z{L2UMUR3)!*b?F zaw;Sw3mHMKw{KjY8oxSv$PL_zYFoj95DRH+;6Q5jd@ZmD-_Q;YWVWFCg(%K8sF1Gq z;%g&=Jj%!LwZ+OL%&9*rv&6FyVnG%5)2v^WZAn4ssm61Jwq>sRf>3NDU;!YLmGYL- z4hE(8I=HYC@fuoCI~R7XYj@V&x>y;$Q86Xh0?s_sSUL@9a`p#Us@jRxMZv z*eh|hu4f}e_ezJ2^y?G)Qz!KQ6Oxaf#QMfSp8G2-`YV)H@_6W{ov|>^kkR5Z4{iHY zbuTY6uMfnZE|TJy!AP_RaIrMGqp`5v5tm-mCHCVx4j;+4(*3}Wq0{_~tf29M zQ$R$HwUCi5iJn`@ZhPvJVrO31Cp=veapyGNO` z3uKpIhOA6hs`Jj;PIc80p4-7gl|*$4vP!N_YUPe-<^Csxno}WW_*ynMhICg3bBLl{ zoKq9z`LC6k@Pe|!8*DLu(xd+nlI>biN()i~A-NcBGpnv&HUPB$vY}LB`Q;StG!2zR zqzkfgF=#Ur*~&a#e7+^V)<@B<9jxTUE}%lf6dIaXP-#_Ipp6g|?SSTyBuBdXkK**a z|3P;-<#ssbFn~1x5%{sSM&(GD$G~f_X0B(RY_;53(UZ35nOUvq@D|El~i@_#G= zg#1eeEcuV@|1$8ekiRPb%09GY>GY8=tnIu3fH!)v@z(IKV?CB0sP5^bQzJ*G*7T&# ztmc;Mmy3T$+)3q5M{~2?8yQ`fsi9*@oR*%Nls@}%rSfW+2ZR3HP=J|kN8WQL?OjvN zU)$k{-=y#bR}6ZS0FQA|Y)bOTAIV@={7bNSK$We=UPh&a&-7ASbTNCz&GX0oX}YuR z`m|o(5qj-a4u&a0Em1!yG${OD^-yaoW%$^?vB=`?*}OAZRNt;EG%2)w;1Cn+o+`o)JX3;MvSq z(F|4mk7zdf0{EU}gyxun1lNu^i`!+rk8$HuQi_q97~|G<(2wNYqpf&;t*6sY68(%h)U^XyeLEPJ)# zNzr4BTWkPk>~GAlWsJbe1^(uYK)a|MCqJ3ycT}PG`s`1*u&%}V4fan=%LV7JA zP&nGt%*mYk`Zzxt*lp>K2`xU%z&KydRYg?C4R1ghfa4gD8a)NBEIKOI*TZp+d1wH^ zDG1EEz&VA~o7!p+MDr{?$7M}5oE9e?HzoJlq=)x-EPIBTsqiTAjX z8qJ>-y=&QqCAKFW%#}%C!8s((>^cz@?r&=z4IQ3jdLrH6RnHvRhGi+NTWtm{Kz}YPUvE z+U1NDJ#GsSz=rESuw71RN||EH^r*v{h#~a2Eo+rOD|OcrAWEl9Yml&rMfTEQ(gBA? z3O26VAUkKsP{Et(KXxenUy}}$0fs}I&89{TvgyQ#?L2D+*~q%5zGdk0W*)+03m|8i zV%N-+W~*^ESzaw$nH=DgZYgWwA?gI08R08Nr}7@DNV|j^=>O=)*&qKPYx@`cj>rL0 z@$fF^u@7+0Sm9KIEJMjcs7*iLYQSFvEq%noL(EC$*$8yi)BJ6KCE0(J}7AO9`HlUr4WC2>pWye^Sdh_YV~?1kmD0 zGvETO@*L<_TL!YLWt|f?F;HGN;Ie=NR=n{NHo+*9?`U%uWZAwO>xG}zabmNJ%^ZG@ zs6X!9;uv+}SPy&o>5oHukWSDrN(vvHOW@2i3#5K>4Z6+Lp(OGp#5O)XBRZeE>vMQg zI=hwGx)iQj+IjYuHor2f14v9DP)!tLqQ+~sV!Onq)tl;}kegZ_X>1uL<;XgK(&`P&8h%dv#B~fU5T{!jas?=9%Cpqx3|)?AU5zI`_sMVzw?}`J4>Tv&n#E-Mwqs4dz@zT8#)0Q}OPP zv#k-$L-*(IVqo@mprIYBaCswN*gI=EHqOA8Q3i83;3Z^^LEF81P*VP;`n+T<*V<&%|TpqDdCaf*y9uu;&rrU%Xhi2)n) z5R9)Ts!m{NJz?~fWJp#tw4>LI(z}dgsbIoLXwEU`2>H)O)fEy*INnjF>G~KGIVMLk z*mtZs&C#6EZy5$x5K03H0gnX6fzW&bFH0`<+HVD?kIdFdUlTRlW@Q+pw|z*>Y@9CL z7M_S?_eY!~a@|UPThz2dX<7j*L^ZN7L^jlm(d_Cug}=RF{2i3;XUv7GZHQzj$rqcy z_PmFv?PV$B%ctmVA5})`k4L`!D2Yv+=V9{Aqq;v|vYxG#r-H3@n&ZTXVSt z;r!?!dM~53dwdUm_S82uBI~#gmRaDFTf%G6?2-CiM26tmo711Qr%-M>W^%5n94h_3 z9!9#Vaop_Y3JZFW1-+th4wAiS(u1xmI!_T7iT24n-|y?Jvd@y;=P%dnARenA*N;4= zGzt)yhQ8}Pc}fnU2aaNW-H?i@mWoLYZp>2@ER}YF_0UstmNy(DA+|Eu4ZSoS{|p`f zk4`LUl%^7MQ4ab17A(AOD^LA=2>^-!sIlAJ_=zZj z&Ua9qOI2tS#oFyd{ zj$|eA-2F4h0RODH-bs(O(%wqJisj!O0D0qXP4^F!05&f%Zmcg4-Eh`A0!nuRI+Xow zTHtfl`*LV>b@Q3jfjVFl4FSCtwLA;*RhF^E7B%fT5=`2q7g1g@xsI2zJ{Ra!VMw`W zyTfbj>gw_=;Xc=-V*;t%RfWb??C*9!V#H+Q)+7QGu`$2LEBS7ZrPL#dVtoNZ@`7|k zjo>1xn%UO$t+h(K412!OTWcnz&LZji#gFUnK*{pnjR=SKwMyQw2wE>15T1f;l!b4p?1+k&WkA-OOz5osEbA8`~L}l`x~32zQ7=7JVfrTRc(8)JWz>Aaz{Wfg_%9N*u zB#($YLucx1upcMVkz6Px;g3F^))!2wjgJY$q)vL4cHCg!KnM*l}RRCBY z!gkorME&Dln~S}jJ@g(lIKNi%guBf&atO~^_PonE(eiZ*sYbTM6YJ*BgkX3k=225bNrp0$2ptFM)z zV#(n}Wx_FkfBrh+U5@8RZ>QCu8i`zb!4wCH>rsmT06mB*Tz2^!^!N-)0n1h z$WNdfiQIeI(G6-GDDn+A)L<{rpp`3e*;ff{N=4=Dy9QNZTxz8^QrJnikOd(;Yf?jS zd%4LB0t1x-J43^3skHMd+0B4B1WM{U5wB&j3KJw}3?zzCmk#{pwQ}=DFEn2pRH@y7 zE@znch#si~9B7`a7werAQ@TQ#;^1k&X|E0`G48N&AyYW--XuiN{t!PdfunC*mn^Ajnwoc^dEPv zIPMCBe&vl*;Xe|zC0U-eQBAQ;SHchEE-FE1qUqne|DXgPH)=(jl&E0ygHx~&k zPe<4mC)pN(5CFoTxwYK5exnUwKkWdb&pdjqYt--Znh&uy-Doa9PX^BF)~vp$$0sEt z6}l1T3|GDwKa7`QaqD|>d}^aCEXt*q#k=Os zEHoRd-v%HB79ZY~udnB8F1Pzw9suWO{NLa4eS60Tga9;dv;B%l{~3|)@WuE>e4oon zew7bwhstPgj_X0Zr@oi{j!d|foLYCDUXJ=+6&q;0b&&(Cx8ieamX~SEqYFGzvLTo; z=(nnTg?;#n$~_NeOfM(JPy|YXW7m8+YObh=yLWy}5`i*lVA*}k!DC436_snJJHyT| z^sPHjB4>zDfg6&A5pe+O%K=EZrV4h0W*fzZ6wj;(SYJM+d*bx#ujfcY<4DCKA|A>> zTB-?)yWaOHfqnRk;{T}IWhBk;gL7=Kx+hStBX4aOo`ptVec%4p{K@v$v6K}Uzx9<) z<_%qNDMVi-Zdy6)yjdT|8^9ctA|)9QWvO!2gYq@dRin#4rd@x3GkjkaYZ3{PFy1g$ z3ccs#ftn`PGI;Mz?;5r^2ARP?68vC`B@hlG(9Q;|;qxz=Rj0z!_riz*<^j!G;=wzV zP++l^Pv{vl^zAoL3yDQ*pxpf3?Dw4uUyv}e7gbYs@6ku1;G?eE+1sS)^Yg_^jy21?JT&jbz9Ed9WZja*MXr-JZu$wF#ve=_ndKo>SB|$71N$$q4!kVpjeZcz zV9${(VzN^^QUM>u>!GjKY3(;w9ah0U zf+`edm;PSJcF(RKaMelsG)RuqnEaINws^&gOgJh<*v|e;UjBNJ;q480 zrr=1Wej8NES5O7~MkUK3_m}u3fTHGlb0Bn7<{B_Gvbvrg0OSDI%bvLx0z}#g z!~&=Go{aM>H14c?-hg^zc7(}Q6OO7>tSPHlu?fe&rGsaJ8sx$N@4;B{rA70*rday1 zpuMeDuw32w^*&V#RE1prt_a{G%+d!#@v`JyZ^39Mc0O>bVPff3ca=VR2%q`T(h`Y<8`+IXtiBz%ARy z>q4ibw&H>FXk6d`EcF798Q=P_)h3(OrhFd}Vnw8*!ejc9fHT>ctb@gqeENWTGxmB+ z35X~t6T%q1s?WnzAahKSI~N^x@7k4pY~(k=8=8hyZ0fyetJ&K0CX4ushV~MhnRHJ? zMG3Nak@PJecSa0+y(p69hYV1EZ_c#is-at zJNSvf8eOw39+oP;n zYd;xSBb1HkCd^8QV$J2Ba+myO7u8cZC93zp1`(=W+Pq$L2$be^0D$=4@IR6NJMq6c z|Bv{8MB!!MeW`n-lIm8kxdVa`9dUa;f~6*$lmAo^Qf^bbj{NyY7j+9I`W!ENtetNK zC8c74k$rbLA_KIQ;un~nr9u{?l?vNh_ynhe-sjDZ5FLbr5WQ21y;Gi-&&Tmr)*MI1 zD!4J$}#Z=lQek>-#D2CoC0+rx+~nl2~%4OoM-zx70Gal_iqWQW00E-$hj*x`?2 zsAQI$=h?}4f+qh&YEYDJ*%7_!xK)&8zX6Vlmhq)RbMy{_97bgHdM)bKnAwHI^smty zdcT&=C;y5~{IC8pYIdP~R!etsS7VkNJlQhQ@(&JZl4|wkCiE2lN-y9R?NS zMb^!c7%6rolh6r2$lw?R$<4#u}q`wc6i9S}aXB4Eo7;*ql@GkJ4K6&2~1b zpXRs6cRxvM#Zfhrp8VS3P@YZVvIr>^KH~LUgPJ@A8srw|Wgvy4-GpxBgEdN3IKhI> zv7Ks%NcwBnze$elFGddqA6WJ`7u(xpq;qP=eWwu-a`giPB}B90!Fwwi_+tV*LB2{ghlz4(|arna7z<(u+gBA`Lq^< zB>yX^ZUIPKU25fQYJuMkO)Ze}tYtPPL|0}tTyLrjRZWy)Q?|d5==2mlYz)#ehN(+3 z;vbI|nI#IC*G05X905Cc)_rEEw0C^}6IsX0(b$I$N)r&aatPBbIPf1T@LU#EPlmG! zwSvmE+hh5ma~(LhrxPBTqYAP|LcS_vs~#~2ra34@9rVj?gSf=kZIj$ljgEo(JXTV+ zvP3a<<)d21r6M#Y%`VQPK1Oa+ALY~8K2d=_$|v!?%#tZcAutc^guhKz^)D;;RkCm3 z;n&S?)n8h?EngQ)kZKd#m7t5%A>1Boq196tpSY2+!=P>cG zx36_yjrX6OEWWgosBvT%jq&aXHyzeSsAPNUx`^alfxe#=I| z%960cG~IklJ8d>S60AawJEeGZH`=G%D?%4l+{#Cg!OH?JR4RdG2rW|wwKyR)mUkqh zbv2o${4Ehcp#YlJ>Z4{LXhu@HWHI!k>NAS_%K5~8`4#!8V%78sA6Ml_x&Rv4fv=sq zo8SXi1*x!2ab^W9fv@Sn$MSkR9X%9cvqforS^2m^%g#YVPezNUrYA=B$fKRW+3U0@ z!^q6of}-v}Qps;xdO*{GA554ZdJ_*^e>Q}D{IMO>QYL5hFbG$DUWz?46MkGU?TKP@ zu4ofI!izkb<_Nq?%2x1WpS!Tn@X1hha#i!BF>r>;q?>DsJ1g6mudoj|Zx?VQx*05p zNwCc}3zEkNUc!*-e@Jp8aIIL%E%Lpclt1*th7i`!H0#i`136T#4l!EAA>@nEf-F3V zj$*Ri=<@|t&Dg*+b`9%zX+)efB3AlNCs@$2mMmJhNI-6?kb3T6EMGnhi`>CQ?j8aV z`5XTm9@qevrySJOGOZLWQ3@`-b`S!i0ckl62WT$EzOmJ{Sy~SsLe+5*MQH^X2}Z=H zf^Vmj@nWEY+vk#ZL|EQvaF6?o7d_U6UO($`Vx|220q>uqXFfCqjdB~Y{LVP*eI{~U zg_Qa_n3oXG0bhB_|9@T*7O>p5vw_Y5d2lMy@13KJAf- zN0^w)&_F{*;9e+Myv%5 z(kWweJcjZ?tkhO5MiW^(!H<1N4_=+gG%=;6?#bREv)6(o<6BT*&%ZN?M5b9ZgE=Xb zPPW_TOk(s?R)0XWyXoMRhY26n>E};JMvxO#_?m)W^+k~(_n#h#731nM?{!OoA;480 zepX431z{Lw?m0#S{q0xlXIZX08tkVJcwe8-IH^DRYMsc8ni;&xc;zRP+{UjID?0cd zcX6H0>04Kf*o^OAFR2P{#_u)R-G|wJ7@EDSz87kDU(EgkdRG5*@c4=V^eS{LRTZ&J ztB9az;x${2eAd=Vja!6%P{epSRkm=xJo<+J_DM_+#vHa~Q}HXn^4PS1;#fOmiWl=$ zsr0>~x64zEYX$Iy3=DFO8_WgH20sG(W(PLhgto%Wiu>9cx4ek%I2+tFRQIVMk1rED zzWS?YSEfAI7EMQE)B!mMef)hR9kMKP;qF?M^=CGwM95HKhhl3J`f*R6Gq^61|B2RD zczt4nReF?``tkAc*|Rb;Ys>@MAxK84ApXy>YD|GM-RMMo&6l@GI!Xu|3MT?ns@n;Fa{3ceB@Du>NPf3bkXGE zY1UD_3iJNxA zu$fQjsCzhxGnT_*Pd=d|#UGy%Xw0H~TYe|%O9#PVo~@2H_b=2Z1+Tqw8)2VjW`RJ? zQCn#3R_e`1G*IPkw(QdoE$wi%fUc=XUXkT%DC`wBMN1L9Oxq4+q`{!&YAhz$p^Ps< z@=D>Xtyf#PiBpB>d)U>2gLJyabu4;Z2P(Jau3j!Z$f1 z7`u4tF`CZdyRFQ+@zrfDkO$4OSZWdwE1yJhl+0TbMIA~nE`W_JQXEh5i+vuqlz2P_ zC_2>sNJnOYKt-P-R7@@!W8{9Ar{Cv2?%u(OU980DKdZIY^xMehiudlfc9SW)qTu}9 zx_!5lu&yu9=QZQ<4K0Y&2RR@$}|nw=tgJ&AVYD z_gj5;4;b9gH-it6vBErb)AI3B-rE5$MJU(PEVq>?%}x3 zSoVv}d>qoeCjRyM{sz4o7C$zJ>&&^ZAfF+a!Dnu=!4XD8;l}1>jMYVaK#l^k;t<# z4eP@#&|K#%KKpwZoLCN<5yD*h)I^k2Wt@xNSuu`XXe)o$n^3^cV;WF zcP82QC5J!ZgCp+yYjG$B%v-~h!N;VKKR-SVLcwN?9s5sd=4xy0zZlZIhcgL2EX~NZ z$jYHl!6#TesFedVeL6|}39^njo2i}?*Px30wmzXMLjz_S40W6^e%mUqKs(FqG`5?Y zFwFN13)W(R^#rO`N?+%)kh2jq7X`hWot3Pk{E&9!}^xUB;At#8}Me^^!Y1 z|9h*d;Md)r--ntnz7!sUl5KlFi+mqxKDJ7dbDytII=1RldTbN8f``k>*VY}GWMxUu zf|-1rvvl4lI-8d)51PFu+qt95ylyFK&n+7-K)jBxhCk@D{`13-`>Enc!=>ljU%IWi zQ1wIdIEs@^)ts&3v$2L6y!@FQ+IXjEN8`|Zo;M?@P>20E8oQ>R)R)5xb{0|G6-Idu zvmVe0TNRT4gQP5UQy4|{<^Rsv;r|%R;ix35(tazuHN;LZ`*voey19J)*->>_b31iD zEQqktI{KCt@_^$bF zP9}Z^vCv}^`Qf5_R|(0*?Lv|nBb%``me*s(f;mWuOKlKpGM64%*&J259sX&Wu zD;cY%)||VKPmT}N+mGRI6YZLjRtVQaS<4yWbDg;E9X0RiYhW%@!>Xz0I$2dY*ow?x z8mr-3p*h6yN>QykbkXuERH0RkvQ9t#Q?eyR%J$V7p+vl8b;RJv!eH?l`qA!eqMEaa zXfZh8`4c|iKyH3o6+D+4d6zXHfvA3~ zJC}J8;&>*@CpjZ2J3&a`3OL2&?MQ}2Qs12zAH{qcMWvzG)WH?6iKAq3TVDnH2A`d) zBn~*68eD;?j#JFG2wjBUkoS07=}}&3 z+0zwP3H=4%Q#)soO_STs?dTinoP}Z*;=cQCTn{^IhWqa8D2}J>ko2K4qeQUW1YI?f z9gSvN8V%cAU}Hj!J)c72h6J`0*9ab!WMX=P(331gppCKqJgcKqJS+t7Yl-?jgL;fe z-npKmJzX8fTaft8##F-uwr%6#oZD(M*L=*J(q=bA0_tQB9@Jo+2SG3|- zI0EoM$%Jipg;Ogod+K(!RulYG<$S7vLXvDcyOL(Eb3>T5rzUWC0sEtd3jF^_3YcTaz1Khv@ejVP+s zokhJ>@bH_(RfDq!uoU5_Tys!Uag-+B8M|Ef)HYb}n2LRaQ%vdH`lH8$WI|a5LAtWG z^=7&EORF*(F+sRsWW!``ZDUua_SXx`5{gs)WF9ezbm7*4mv<$T4dnI~zo6y0C-bZX zcAur;^kxp9iC6&NVz}M0&NsEEeblXbd#-}NUV;ViH*hG53M=BK>0+E6;+~xHJ(KMa z?Rh0}ZDIv;=5xK!f|lDtJay0OL;7sc;u)Wcf(l}DBROvxt(C*ab&-!kNFHxmHW5GN zGbAn%(LWWN!MyJY85rrCZ+ragcT|QhpNX}I@>NzYb zwvg&Uec1>OS?$L@c9nKYEkuos^eP*ns#SF#V%y0Os&cZR`!#Q|5{Vb{mYK&UTCyMI zga-Q!Ug74GA9PBs_;FPtwx&I~K?nNKG4NQTX6pyReYbj5wTEFOUy%&vzD_g-BlbiW zqbcqu($uVMgj?>C(Rgddz&-(g%g#<$%;Q=3ntc@R>Iqo--^FX=9M+cSC@SV&Q8o%X zMo}4u6GR4H_?jQp%fRb>spQB7KhAwV|B3_oxCi-wW5#p1o-fBb>rfEZp!Awx z-#1mC;%(1nI#CTu`L9!qX_WuO7QY#b*V{ICjc#^u&6 z-VKslgnp8`s)EGF;3(%_uNg2f{8HtYQ3Z^lgtbFoJL39UXekvYY^IrfIRf(HdbgUS z+PLniI03Vft73p`<&;LQUX$>8xdscr#>!R2Q?3`!+W4jPTnM>M>UGnKY3|j_rxlY0 z(HZaJi&rh#bIXTiP5m~Rhw+!Q zHKd2p0xv_}!EZmC@O4fcZJ^6{3auc>xiauGsP_2eJ%gGJWzV|9Z#-C4=pb4dx+J?* z?_C++IJWy+4CP4=$)6qaEnL)%{*@hnCPCdE{O)K5pZvhLOXYT7WIwm6{lThDet=(2 zeJBvSxE*+LzD+xJ5prG8dHxcNq1aS*FJpW|AXXgS+5)m?8w_VEj!z>wGAV|SFln)A z3l4@~Y`H$roCSU=OHtPVj*4RjM)Y zf*m-wS7g5$w9ura1$g|zG7xA{k)pL24HJ%UVLnNTVpt61pUV%pA6x*=u95?G5LYZ# zh8BzqQZNt>jC?**Ro+4pel!?W=hIqlM+m8GUNoaJccibJ1etj<<>rkpT8{>Y)clJvQ~EZJl1_8G&cEp)JvoUE*}MIot?{eESt6T=SKRWRYaTu}ewYeWj>)Jw#D@ZWxX_MKi20Aq{1) zbKQ)IR8wmrUbv#jXs~$$nEM9cX7*I_OgB3MgSnfZ&d%Z&9@bk?K{|g6&XTkr4xNXN z*kyy|MPV3CX9}SmI^~F?wa|sDWaGOAGf5X3(n?1M z@nvtm0j9&FO_X-t={1oNaiQlAr*PV9#b+N;V5$!^?_DuMx+W+FKR_$`0N26&-}pZ` z)!&OFsDuC8GFj7_hI-*g>q}3^7?YFPz){jNCk52D(3%iIUaB^9(Tvjf8(R?y^xK6 z1zaN+vJGvj4&;L4pjF`Lvo~Zfe}S^zd@j%qpB^$xR;c`{8m5!8Ap^{g{UP5n&@$CU z&;Z}cY%xEj(0f>33LloLivro&oVp^ph)PAmq_RX*TMbY z_&@mi`n7TEcRr?Nsdl+zle})3Wo&)6sIO)?zOzd{9Oc22w!TvD19LbTA7vL;ny}04 zIUE)o=X~IE70|NJ3s;)}rG^vkna~sXqabuK>~2&$|@PV@@pfflN{7EnhMU6 z0Fs;vK6jAo+JThA9RJ07U|@bbblS*>EFqe)IT#E$lM+)}fX4A@853C(^MT$&0eouq z%&kptN05}kSZCCyhNR^HrolG$j2Z#3jl0h7W|WZ)3|eN7HE1mVs$h?FJxf2>2Fmbf z0^4vv%LK3nD&^Xd_TfN(r zvK-LccUfLRj1z3Rd3V&7!nz!*&XZ{QvkSBAR4_23lzuek?la3eI9Y+=cszWv4YLmSJ-RQU}FNV7?ZST&K(p8UcR!PYsym zfP#TGrSywUJ(u!WEz_hmaxuE6!ScUL4I0)K`ZIo;CzKcQi9Hn;840J%x-aXsRvQOF z)1P4Z8mV#)M&|9QhSw8vHW&PvWPgRpgcvHE1qU~n6Kt}Q?E1oNvS`O39>Y_1tDg#3LWNib=E&HhDMAiC%4SHu z`7B$ct49X!!i@p)eT?|}-y6S$x|fV%DzMCUCzDorQ*H2IradTPm|4TC+@X^5iHbAr zYjsiv{3(|?eLk%&IB_5mYxKhpx^K><@O{47g(a7HaG9g3`hL7WemTf!UooclRp><% z+1F{y=S*R;Az9!CQY24E>b_9=ii9u7m?DJ~vZaaZd=Cw| zG=(-p5i633qs{mxsa)8+=fB+PO!u7NQg;FBJ5NXDv$bsQY^SLfHF1dK}A_z+TWH-h1mMZOxO*OxRkFs z!xmW;oq;d;sfhqA4-{@nMeTduYPJZ9g<2EjY9hsNwOYkIxat@LLX(8V5C{%zA#*r2NRzB{RrV z>DJMX@-j@HhWXbKq#*v)sx$Dd%k(`h-pkA|;7dn}Wfl2u!;rf<*3l9rn+U{0R3+gB zPV;(rWb6BRpQlr!P5n2%u`l0l@{VvDetRcpB1)p@Gy zmpqt74@8Z_E+iu5>WnE z!2dD_Kmce^LNFQn39`(P&&j{H5(zDdkz^ubwlMa%6rnP^3Lg zl}GZoV>Rz_!I47_+iR@dMK6L`^Xz2HXKM5Mh1dT4xc+D6&z}2lkxA+6??aD_F?vI4 z2{|-VozM^0cfm8iAGrifleFQ_ztHpUhCU`OYE0(W`KL5StF%6uNHy+AiZG6q8nbgi zD-|m%41S}7HBT^%xnJ)T_xU2_FcUS>VltRh=*otAy>B$y&4+ld&?un)gIPKtPN_Wm zTknK+9Ao-B%tT2&{^-bT4-$Jec9iLJ+cBR6?T#yxbTDbFFQYSdrHZ$HB8R%%bH^VF z9g6_A7b3VlP(JJ2AL<2WG|)?s%fjz*Yno&8O6K;j<#)TkU&X`4*7I{1Fcre_9%K)qM~;V3 zFeX4)=}2UB+@BxQUw!uV405MVTpksNsY*uFe{bmg+RC2TIlkNU;m0kz-Gk9hLIbD6SJR zYFM4J=b#a(2!s8co}_2aBZK@2n>@lI!fK|Ue{Kk)vd%5D9v6wZ#5JAYazCwv#W7Cp zm6qzJ;<1KAq3Bg1kq;aT6C{1ECEXjv9u))r(V|FtBS}Nw_Nle`r5^j56UY?qAOS*( z3A31bi9(nKEj%ce-DxOe- zTwLXg-`$!^aD`D!S59+Iu zBlY)h1X7i4#n`8GvGM1}Hyg7%f75$k>d8#(K;uSfQkT6fK`#UQ9WPo8;3aaJXaDD(BQhaOZ; zOOe0KmfFk-!#NgZDfeZ?4N34F>0J0mk2LTgU8EwKCp&rSxK2d*62(0?iW=v|RJN8` ztQlxw;2__|-q8Itzp^L4Xv5rc&nyBZ&}EX>VNBbSWVvRR@*(Y`1aEhLUyS2d?so|7 z$k)-en-b*X^%0(QK3{V@=wlXSTm)XlELK+p6xt~|ZA^b>@rCnn9w9(bWmGt$0%F69 zt6K7)omn(4$~$Fl!ft-gJ~g;7$E4#p|3&j*;O^&p^&QbiT8x{KYL`nuM;BOEcpbfm z?)*v!xK~^f^sHB~Fl`hBxvSI*@8yiH@E+Wp|ACbdRujt*X8(9D^usBcUzkdF?Yna& z-s6t;IC??JaThUjx=7y8Q?V^=4C#|53}O|6#H$cmSh}#&>dH5IK5Y&=rB{i^>BnU4 zJEX2c~c4;D0Nuaz{N$IDLQ@4d130^O5s@pAPh#*fZa5U7GW@ zS#JTwZH^olIdeI9INw@-I=~dM6;>m$-QHgst!u0|tDd_r-G=35rrC1?JN>86iAfGT z|FQbxpz)?{9Z@oQm@K2i2<#S&^mudec-5zg=ugRoywRUt$E-4VEaV(K$oqPU*DbbQTopKbHD_-OBu_zBO4DaI z4Vz5%3r_tUg7pP+Q%!|ET`x*333zPA~-nv_s@?LG9D~roC zXD$&%#E(-WKk#pN7D-GVmAW~5_srLG1#Q`NSXGOn6W(cIwq)1JnZ#{)^VHV+nB^|k zeeLBKpSsM4Ckm6wKOzg0(v-Ys)$LM;bs8q3lYbK4AC2FX0zRIgHvEt#robSbM5*;u zcI^_$QjYS!d=K2$m%Q+r70GQRlp^;kG5YJ&g=bBjHr%gI$y_#E#ibdr7n=6&KpiES z&`$1&4?aR8OayIN=fY%_TaR5jefNzZ@UQI=zCH*KX#cEqGT|I{jmonoe2y1uk`Zy5 zIYEnFKl`)psR{?4bOB@9F~6l7D(Q{|oFc~%uM<}Iy`y77}742TnGoC;2y8EomJWFn}>&L`q z!)D{=v=TlwVEEy=0QbKz{gnW@FuhN>6dlVclq+u-?Wt^+B(k}bV-lhAW4kGmo=daG zr_#H(wUr9Yl8nyspn0+%dU|}4*>9Dn09(ky;MIBA*U0J4QbND`jcXy6q&zFnI8NSB zr94Xn*IFwvJM^7k%KXU@vevMY7?5SfCZj%{Za9C?Ip{f?OV}=D_>UV zi~D`TZ%X&c91enSr{h%bbA*-C7fN!DjHUi$5aA~ju$m#wH24GjFbo=eSInUO$@J>U zw##Oxt72Y$e5&N1c$-Dv#a-RFtIo_|U9iwfK}&9`_D+M4ShI+N&m;J>5o z?L`j#iJaQDg>ucmgQ6@0!`rpPLGjaoXFPnHTi@7bXkX^^hRo?POYSJbvCXLihk{!d z80a(S1)!M~7YZhLMj1TUdxK-?pdKSe&}?nzsKA3-3lQdiM4#O};vwtz(8Tfm;qU}> zGM9r+7KdG>N(l=CeR^DwYt(b?F57&7tITcDwj|32DgMJ+Gf%CjjK_6!`Sw`egZK4i zE`&-`e^s;1-mo21^>_!H7U11EmAfAU+d3AttTBOyvm29`3;54a85^VvDY7Vl$X7`m|T%%YwjZk+FI z2sT@l&Q&K0rqe}}G~06h1aA(!| zysnn1tDMm;-4}Iz*Kup5L^oB2&fnwoAIzv-pPyhgNOjVi8svFbN!IRPcZ0cLYVM@R zCeJxuHJyV_=e9VQn<1eM{7SmgGcAt>EPR)%##gbIw2dxvmuFB@p5f3xh;GDI-HlUg zoKyoovT5IrnWH4zL)l)a3*U|ql*2?YpVa{vBH{CCgW>!Emx@VnxP%%-Wg{0gdmOrp zrJE%hdH8y$yJ*UpmfwVU)SP8{7dXpq&;qjA9UPDE_`ity#^^ZSKiGz$L^AChV<1n~<0AAJ4ZW$i#Yy8CGE0QpV#}#?A3a2nxXyqqhKLiYyrk7I zqyq7n-f(1^+OH##)Kd4(FOCS_3zqs6S9mDQL$i}`HIGomUxAjEec$6i?Q2H*O{T>1 zdo$N^$DJyjEab!dNct4CByi$xny3&39_~zFv3qRx$7FGBD7>xQD{i|;DBx10&Lc#A zQlxZSJC13pCu`Jnzh!U$6$KKcp^@N~UnESO1UMN{-tR=_+9W^hWl@S>J7MY?V}Ief z<5f@A*eP(rW1Ezplc^mjvpxTJF501b$j* z+9K=zafxNnrf~DYQWEKO?!&M5G%cBn(rY)uegPlr0=lf~Yk!6r7@FOXg9*+)q?+Jjfbf4@YVT#jyV7 zIwP>M3hj}xS^BXV*hwDW#X@sMaA~O1g>sSTXQ;!Li&V18sdo3|-~r`;PCI*pHE?pr zCTRPeY$F0|nCA=H#e9rm=BD^Hq}TOh|0B41>IIT2?l(4LYUj3er<$0=zSU96mpa83 zoer@hfBIg^7ylsF!JA!>&a??I@9+NiVE4(9S!O6#8?)$V?mlfUg2Jou+vPM=U+@#z z4#1}5?M&UvLqWowS8uLd)70yB1l!&e)@ma^UOt{GuQ>uV@vjL#dXaWM-ap=AKAtxB z3o)$^fB)9}Cf_4uM(OUGIk0Twy%F38wkZ|ht)o4wq1$n*Z z?&7SJDy8NFFGZZyl{}%y5nC2?gY07&CBV>@k!qKF{cwB4R205^}Ta@8iuFbBzYCo#B0E zJdklQ;5^BOosr4Y`XsDV1-OK813AjfbZ)ci=wB3t?4IdZ?H+BNFVJWY+oRMH(~Cjq zC=}3=+Jg2S;Yckjb#@LYgg)BrUFPjvPA|^1G55M;4-Qw(H>`<{f#@Q_-5%vQLm3HK zzMa7iPIO{bJFtet4mx^xy`8kV*WEj4jUn_z9O6jo-(4ec10Yw2n7llVpQB_>O{pc5 zvX=6d4nJ4F!RkL;ZUC>Z^^W$Hkt~nX+Xo z;oIefbR=&lqtflUhx7iRBw@vAY;^Qe?7H5q{xpxr&1x~{HbUn3dwb{20b9uEAtBOG zllvg37!~Eoh+YIryH?U@Q+il<-z8RU$m>(Lo?{8w@-@_%oj6uevJAEq&h`M5)VQ)L@omf|?neOj;8eMp+aPLzp*pOCtO5f}gIz-Jr38GQ_ z{!n*tq`MBT2(3lzs7}N-`i1R&Bf4Jt+JMv%VU~OztM;#*!9}{920JOczyWkRb!2S` z2-|(f`O$(pA8a5UGRHi?L>b!p)T?=}{Lb$ev=+w^dVF(_N7}P`p_}NIgD%DL$;jaN z*|)fhoQ(dqn685^shZ@)pR-z_YxDhF5w6MapGUgCEeTabJfdI3zW(>sN=TMvPoeUl zRynaXsxHH{vOqHdu zvQ|+^kupsp_%@OIn*^_vgA*^pN0b^x*^3C}fmZH|vm~}UxMk^zrvpH3Y$buVcELHc z^vFE*<=#0Bn2enuwJP{AN@PD)yQJW+qyY*i8?5>SEb3*({RP69UVimt&m7! zZgUb5ZuBvTY__8J4ErGW`Qs0I^F*d5Y6}P2t*hD%&8DzPP*Ia~XTaIP%k^7>tHYo! z% zGbaY%PlM9dm*}Cvg|EQL*UJo@Ra+#zEEW1Z2gmXfJz0eB@oAhuEaS_ZTBG1!5^0_B ze#mLEV(&$`uvag!zrZ1GMK<|c+Ps8Zc^=o^tVRCJE_uHij3HmA0pZ1>ic7ZF&fOC{ z>HfT-@^O>ad)Z&|@2Fp=*K;s^!3Re=4r1dpFF~B&U50RMjSOZ3#iC8s6$^;!a*+Nb zLYPYK{83eV1r_#>51s|=-R#~M8;dEb4ha>$%X4!Dz7h5u7g{K@L=n|FQ?-ENVC94Q zaSvzq_-=&Sp^P#!!_vhHBjRep1Ta!JMHZHrKpAD`=(v3WA}$m(d${b<_Xc*V?mJP zF@^BX!Fo=TcV*(>WCRJ0RgO!T41>4+K5b_DwE;ZBAziorNyzBZdEz?3Wcii76+H)u{fTs4W?~8JEeAGzBo5nl@anHniZg7TuM*3K9{d2fKjXWE1xC+4( zTq(1f%Wr}L{-n((K{CW>@D7Hv8{3Mc6Y!P6hEyws2|eaXx_Gm3x1Z+07e#2}5ss5+ zLJGdGo5mr}xnWaqxH!?b1117vD-JJUt2qO~yajk9uQmBT}W@Xl(959iy*5Zl`FO4mYC;s5C5SyW0=HAPdY^F=jH<&I10)`lZ`hp#@v$=LsHv&yCUikfb( z**ms-@0GEbHF20v!ZsSV4rhIcx4uCO55(HH!c0O)_e=KoFm4uyIFbX=D>UfX>x2o8 zv$){{VbU2CfyDY|G2*!Wz(TB(&6j6y?^-CTPBKd?TGf5;H5n15-7k~@IKxL6NEc)y7!~09g;@> zMsEtke*+_$+7|+jQ$L7VmnS2_mMv2tC0{T}8(+b^F#fO$U`}8^#G)M$>ixd3`pN?m z+#*hc1Jm_pPV<4!^5br12Ar4qUGOYnHQ;Jb*;|GW64~E zs~LYOA8ox2`|t1S8W5V+&dWuDs2^|yLua50s9g6{XM|G(S?M|klnfT6f+@d+duU0V zQLaWI=hd{IBzqF^k;$E3NcTYDt2;^0&wV%6T5RAOjZxV4GqzhbEJ(?bTTC)z#EUQx zYpv}K&fTdIG|ckI1X4Ka#f#?83|W;cc0HVpY-ni%E09|{QuS1#Z7jzER9imBu(Z9! zD*v}KD}Wb{TO%%qL*NigPZcNOQYCe;x;2UpxrOgg$;6+feYTa5@Jt(ykL8o6Kle*5 z)B#xn9H6m%vL3m`eui7)SOD-yb7FwU17(WV(cy{rRijuU`JU#;3z-MXI37W}n=D=u z+FU)q4e1|{cYg!+KQ5+zT_XR7;ue(dtc^~KSahZ6lrAoHU}yff2~`ociUT4*&qQ@K#LW%=*!)CfUh>V$ zcHc@~E#09?h7#s%$RR10?je(9jLWleR?>w`zGH%`YC7GRA%@Bf*~4btrLZ{pN3FBy zFU19w^$QghwdA@T>r_oCTkpl|?>gJ9A$zJR`^Nj6(Wc2@p*g@gWj`eznoL&Ve#A2Y z4k{}#;vzl}WZ#-hmiyOLU-qVfVpfhe_;{=zCd}x`x9}$&?@`$-0i;(k(}|;yhmjSX zjMz^}D6V`k@3o*d_Nyfy#-EvXI#9EkqD7VQ7_nIJK2JAk>ytcog|&2|kXfiK$tYwL zd0-hiv*?(b>%GHh!5k;<1*#*f9YD7gfAvyrH^Hf%skD8a|8k#0(5>x0SeD1YaE!N; z9c@GdB7hBmL&k*paf&}PYv)q!V&d$n;dHq#5%74iT5I!Y`Mkr;N}^T?s%A^zBe!ZpfM{BkK`O=Z5%1ih^#|9yx@ z6#e0eD6zENKV*EN-o=27+{0Dl?IwZSGOEoMOuENKbaO}xWS7#E5#ZxjU{2@Y?JBQ! zLG1K*oH|Q6N8Y_N*2%)aO=Lf2Id{;LKP{g8?>q~O7?&*VLN}F>P#0Jo3?V!E5?;0X zva~L1;q&tEGnzMp8I=IbndhIKqp@_oRQx%_;5f`TTHu=#s`z!I!CrT)1aUi7 z;_*RG;M5h0yrZ>M(mEo=fsf>HmD)#uP~pwib`PiU=U4!2Og|72)g_`tl>JB64R|hU zd%VB5iae`&v;6sprub80Mir1rNjWCcERLnaW6YhDHRGbORwNqJc}IopqbuWjV;)*ciF06gemU>p!F)~=NdyHiCXU5UG3CP-khR*}vnU5EwI&}N&FC1K z9RT0X@1)}Q9&c*|1^%3;UKOI+Wf0lbQ=^RLkpL*4NaMt}8Pl@ic1puw7Fgn_7hZbS z;$7&I)rN7~zgkV-8%N<-43ie1olN7TPJ_N__v41slEr6amo>^PuOy!L@Muyv# zD!!`@NF*;1_0I%j8s1o(pff=YGD*XWYrPU$6KBSPxWUK0GSko9D0y60p#Vg3%dU1Q!U)M``J?J*OXC=`4 zoRK{?MAhhM?`S6L+sM+fwL-k)P*!$01!TJP8Gk(ABpAVaBB3E|+Ts(7V5h-h)&oNP z!H5scLC8IcUnnf)#@Ixd2a@(tTa-$a zOy?0?q6hT067L+ac@SNXI$RJ}Y$9^4AhI0nP?F_6&pHzu%mG{eYsfWy z=9k4bX3x_2RfuA`B)O5DDg1qGQ%G9>3!<7R2js7unT8 z11_;02d|EG z@6Rp!SkYK`jV)QmigUo0*-m+KGn-}TE<&m^88P@sa{OckMv4Y-^pAsS6s&8tR2*L# z0L(#h2d+jeVMxRL9L72zh~gR}!X|8SDk|aT-DJqqxfMmUS>7t)h}hi}$_4sA?KHef z3$ilDO5&h@u%)y zXi#)<3u&9}FV7B|N|dogy>GcULK$(qS#N5cVG&qlNS|$Ka1yW9z1Z)#gVkTR3_8Ti zo^_9AVM0G`&$LMg94D~|0id;f?z>u~`1oAf>n|+Or1kT{;_nNM+l8rIuy|oRCKQ1B zJ!s0Qobl+{_)?o&>j)>?f^z*vzyt71bLmC%iQet+^AHJQhBPzU;9ikE2SOl6e^V?u z-1NQ6%G@3P!*}C;vYGPw@%U>j-^nmF!vNLQ&wWLBORVwz+M@k*hRxgK3kvM_Q6l2$-rg_xU<;%!w8G;B)Jwp0+kA)48 ztA{+No|M^9;cdwCZybcFEXzrlEc!Wn4fZBF zN7}58->1sLl_7;na-ntX!)@o3yz?FW{1J_z)f%mHBk$*!o_(E^`xMwDg67iYK;spo z5WIWON7ji|wvKHTRIirrcz0AQy5*{bmcZL~$FkU(zzf=tQv4+5f@HSnCrhm5J?j?2 zjR(m_Pgh>)D5#-O{za{@!5y#3?gK5*bkp*VWPG#8E*Z7#K>YMVzY*~7Ea`-1BwlJ-i2?!FSk zmD5-D6ph!~Nl)mF#;e!oswG_}k$voC7iPr;!v@Ox2CM7Wm0+0|PLFSMGPB7n%s2H` z<41dY)$nLXCr+GC9EwVBO@b5!+@oJ3(xogttT{UnZidvt<;DgZc1~$(c@<@*(Qk^a zuC~7~u>0mYK7QcIxKKzK^VFB?{k$a;jrElw<{C`+d9ff-v~I7a#<1D(Rk8KW{+YR= zc?)(W@WS%PnbNmUIgZ)0hoyC>`?K|0SCK_-n02kA-H=X>Z`Nf+gSQ|%9bE(RiUyWJFl z4}Jtt8iQvX3BNGTvUY%E>$U>RTZGU+8EChiQ1sI`Nuq_&`6ub&FQcIjxL=m3jx?BN zINFud&`!OWT}nILL=V@*ANUk7Yw!6-F`A~`>-c20H`>a~sxENt5*Im!@4}|Y1qzj& zEs)CfcSd3oft+68&|C+Z0mdllCPSr(6<9^bB}I61gSQ~@FnH%yu9q&`S%1=12t~aTDBDpr;;-Q2U(`h_P zlcvOEp@VN7+j{(j`|ofQWT=cG$gFCFU{~z&d>lU@(`43qpeZKsLjEarwUy9}96k?N zFk{B5)%)Ok=sDw;iHKRab$p)sCeIe#J@XBuo%sb;NBil@?zdM%LOotpEe9UWrfXW` zyL_hzxCJI&0q!xnU3>V3%+ZPyPCh?Z$KLD*2Q<|fI|MKXUsH(?i<$2$|!{+$`HW8B=lvMQ=^^Tqi{jQ1g1E+$obqfsrUWc##J- zZlZwSZ8i5^JG$|jGH5(MJ2p#5Te~rC(y1E7o1{qy2t4HO992EhDLKIGIsM5t{EIOs zd^{M%ELSo3eUngily^%_@hw)JT~Xa_w`57Ox#DGAx1C`l>VrGKx`U`6 zXXu9su7&8&sib9_Kwg33ePu5z`=o3fm>g4ydios?e0?W|AWz_@3Bgx$V_xKQLg8Wp zqwvZ-o5_F|nLR=N@gz)-o4lzRbHWjVl!8|)5UU=>k220>$R`-}G2!zkSO_xQfe=7C zaPv2)43=(f8&r8b1NB3|?`ycpp;tx^^cF9FRtU+iQVWS#*WZw30caw~TzqMliGqCN z^0ih)>^N_9wcH#vTcALHeQ<6^AmDSB;cG)y_}RYac9P@M;Il%HF}D9Dw82&XVo+Qo zsO!ov2@BljTtIISpM{P}kdWVEc#C!nbk+)HInu$sriZbPi@t)1%;H7(YcdTrxfw!yzf?tJK3;#_ccpD zJYxV@fiYQirehT~InaJHZJg)N`JB-^j%4Bey$kgn^)OHhSk7s%+t%sH`qUJ}U8A|o zzg4g>KnH!k{j4|glejNt{$=RIgb zr<-2wd&Zh`fFS+^C~-pye1%)Uy>Ls>`Kj&da=ew%qK*(Eh~cavenEh>T&qTE+hm3= z5siWXx9ZwtsAr**TZvhpoiIuOaguu9jo@%sM;Fww`Y>|0H&1;tY!todcVB&*@a^rX z-?Lu#So_VWg~tlpmB@`-cewQ~i0U3kPoz~}IpUmPNcp%vi{bX%QHQ_=kci-b&}99M zE-r-XsTGcTNt9Oa&w`+L6>vqBTt(j`bGgVYU&Qq((VGsvVmTf221ZhulhP!=)t%TtrPPMf7* zI3K!S^CfmyEo0dfd)d>~WwO!J74FTMzhVBx=&2YBu(P6#RcX^oed()3wy)(^3uSpX z2B9oX6EoGrG=)GGL0YIq2vAkcgIcFYwiXuM4!Z7P+ZebLvvKD+9>=Y}1Mo9m zIQ+*1dp%GcyJ+G#$}~EZz$ss09xh0tdwgrqQh|aRvwC~r;J5aYtns`U__=EClTQ|O zh`QiinhEL@eDex!U80Y=RkasOW0dRC4>L!Dq_s3HWVi81cYEThWnh9v(Z_7i4wCZy zb=z~RsYcA#^D7Z~+~1T*65&$c+w&Do*0RR2vR&xrAwL=|xCV+XR8?pIbKD zO|h;u;C4cV`;Tgy<*%;6yBl2OF0HCe&V9z^&Ai5X(o!}w?W*3DvoojA>7Ir7mii%6?t=|BKFk3%xHNyN0`nz5g@S zm05F4dRDx&+sZ~Ztn!-ifo{28&34nNRp$p6Zz4`(`dK5XN`x(u94=X zKbOlAe8;=(^~fUi;of`BO|T3<5mJX9;eOq%3)Ow%`QeVy{Im6>hD@F0cd38L*=y$E z_4g=ILxli;Xh>4NX#Sf3qd!}--^_~xFhPg8Q1nd|`au=4t zfnQ+Fko_+eGJ-62GSnQ)xe*)C8vF|gOGPS*P+ZjZ_=UY|*POcvHjL)WVc`R7E+A zG^6*ZKR@kxtjSgTczgK$`x`Tz{aDEAAtC)xm-{5Fm>MOV1|iP0jbtyiZKBrK;LX?< zCvDZE37T3939yOI7$-2d!^`&y{0XVVF&!e;($o}Dr~b@#YiG_<4<~Ayj->3BO+?qe zcjgg6@0g#Y*pctJ%ba^w|B3anKH<3$Tpr$5(~^y%V}4lwRdl*3ifPj38;(?Z9B$I< z!Bg2|5t!6pG|O~|!w_O^W28B}IbI+E#;DP_Q}PadDt8l#F$Er#aI0$1gR%c;`bBg| zK+-FZd99)1mvR_V?0-C67nqxm0(0|*uy({1RD94IU~WF-ji{!Q&;c**C-Bu(EGhgH z$kY=va>B9!N8uBva=drPJhC)KeT1dr$aS5Z#=kCVTZ%sQ`hB8K)P83!bfK|&%M>k1 zwcZn41Ve}Cm?I5;eq~Y{VpdBD%~66H_jRscAvnDlvn@Y zkn9G-d1*g$-R!2RUJ^Zdt-P+D0SlP9|OXZl5bi>j$3&r{nK%=p<`%hL*UwJG=@`3mD#~z2!`zP{W!s1RVzIV*Y z3)>`KoAYvDlxx^p&n(*R*u%+qwe2WMtXg*u-))&E;;27BPkXkIO)g+1Lopbd-e@wd zXRr>RZCO`x;s|+Nt)iNWJs_*9@ijoE!?_e1thFHzmvP;P4` z@L$uEM2iU@LZZV#MQ*qq7)2O&Ou0=r>K(;s@fN7RGiqhin696*rB)t=b00Lac5ojq zDE63cywTrJdnEGlurDvT8{I+cvdh zN9CEXfEBP@jDh{$gJQ7QI1r??q036x>D{tj-dIUq)9KAr)}1fi|K~F3aQ&_^fyOt} zxBt686vCX_`unsn=bm~|=y%{teUkVhwA&eZ-E*xfSc7KK1^H-OwiL^1!B7vtLKkm& z@EF;bc8t(E@}uC>ZkFgwWzxMC1{4a8^K&47=jA5BLX`_{Jm#fwPj95MDkObUc3f7l zA$f)PHAL>;-`NJqpt`R83*e9Oa>_8TP}s!=X=u7o)Er84lf@{Rgd<3cWU%;UJ&o5r z>0bhzzY9b!=Z&Dlms+`HP6@vmvPKCZd$Xi`L=*f8H!Bu6I6kcMWP{!r9klF2{qZ% z4GhOIxTi5jr-zckic~&jDf`vDqR?|vy^IG9b53Z_oYE$oRHIA+P z915`vKL4IJQ~h)m=#&F7R;Sz`&giMt+FCmdmV!FAh>(ThTf0|UZi8(pG8@o=(>jTf z!!l&MJ(t!D!=tc|Edqp=9rr}lH}cgjAUyznE!IyQpsd941s6E_VN=D?DFE5E zpB^K}tM#bmpW?lxAjPq7<9No%Af{;-F$@0^)d*R#| z%BKkbEV+s0b^gB!%qT^CdwIFqHva!ue0|g*Rg%)317nIT)JdoA*Ji2l&79tAOIw#% zoBVQM;Qb?Yk&5euD%TCOV*(O8Il=m=S?Xx7HQgC)kk+#tG!uT?DJx;tCxnr1@>k;l zYD~9F@jLkwVB9LTMgj$??gAvG%}#Tn`+}Dq{tYE4FkktqnYO$EEInuL2k^(()et86~*h1q3*-`?uJ#E|Qb^ zYe8`dzcC!Ct_Nhk>f2U`1}bK<(&LsTWsAX=IHJsQP+#c?^T6==6> z?op|E$Cts%q)K6a^iGtDl+<_-U;ln(o6^4ISf@i)S^RRHA{Skzt-S1=2qukaz7`gUyyVT@$npi^pb%n{d$-R2uiC0%*ZZnBU0Mk$4MWGKmw^Dg3%83k&=g(DT<}66$~ZvW2)!F8VE)wP0^=weiRqcf4(flj zmL{&7l_o4>r8!uyg#M%J-&^zX|0raCjyPHa#8~yGDoy z62n0k=oPF%*POH#D33&^1s|7cbz}{BR%2h;e>7l$@xON&q`CHb#k@;U13r}KzI6K4 z1$}EyN)pf_jLu5qqlYq(9OD*EUUWT=%C%-6=p|7#A0`j9+3$~pK5cf9 z92*qlPn%sdV1nfT+Uy;#K${&bDIW8GHoLKR+@&D?7z4ZrP?X>N6Xl_`MwUb{#=lAH zYu^a`X-W!roz05ZIoRn^Jc1{!fLgm*h6{}+MKx!~)DN%Gc|Ty%{$qeUu?Vxa_4#r^ z=~yE9A5^n67To(sF&$aue*?zn9ObDRxXsVyAQw9x-?ToPZtVDu7Cy-t(uA_B<-m)w z3lx^pjOQho2oTU(;OY?t`k|Bz{A7E9-LDuVT1fNS<6|L{g4_yliksZt5Z!jr$6Vgw z-*)A6Bfr*Kt1WtvfBcgoe1B~}L1ym`;QyKL8QFF4#j2;9?n}u*0gPl{n~}Vi_A+TrRa4)40J~^8|8N_936}18ZDDMu79R)F zv9EvJ@<`&X_Oxip(9hA zPx-5j>up6#wk?;peaABXM(ZPO5@Cs747wISkou5C*^6z^VURJ=U%6urSsu|9*8j@O zf@hjk2(8ct&V3M3nlk=@!EL)UTU9*+d(lCbe*c@&oa-7kTuYG_z@1 zEtx4$vaw{CgR4E5@%`?Ik#PDi3~9O(Hw4}4-Z<2RazdU!nmi~5CDfdZL8p%%k8Xvv z;)2CU&{}s|^?-f41U0$LO_+VPId6T&E3M(GanY0IllQ;sZjfCceZ)R85 za^8;gd1NXX>$gFsF^cBo;>Oa0Vgh=1g?nWd;AFg?^|ro1kU=^JC_|noXk>iQbvW;?*k41bLLqs4F-lcW z$xq!dc|3$uvi^|4?lTx{HKRx~5P>oR0^y+iFRi@}It|!S(f$=gmzbbQQy-Znw#WMb z-rH=}5vx!8O}LhZ<iIkGxRv92ibkvj)u#UAqQ2Pq7Gqc`}KmP{%64 zw|0WLJJ4!DRh^$=oTkH8vfYnJC&ivOBQBDiE=s5=w&Qvry;-4g|0}6$13=3taUeVz z85*L1{dCd8Ix@gG_LP_8B34-9zvhd+5B_XULi_#&n9sL=*zFWlU69YlI^dO__$+V; zo2}?o?Ob^>4zlC_oLGU<5_}}E2(ZBOZ$tY)uCU=6k+&B+gztem0nH3*kLf+=qp8{Q zj2GXv2i(&fdcptKi|Ho|pG>5vjdgkQkr^ZTjLyk&Fo-p-y^KECfexw>U`^z1Y_atq zqQ8WJqR<$x{K0z7e8j=+>b+J2waC5692k0GLP$e#v|gh`Am!USU^LhD&ckh*FW~3m zsMT$_Ey`W0t84^r2CIR#|07=F60w zW3a!$>Qt^q&R^^wV|JLhDt7E^95-f+h#cVXz2cseSICw`gts+6LR`Q-v8zg;ybZfTuQr7}2u41*wYV4fXrbG_fX`1wM)8an%I(NuWo<%9_mnhXD z^BNm=*VPIeEN2}>J8{Q|&eZWQeuBOmSt-joPQZrZ+5^4vQsh~%2N&XfiB+E{q7N{u zh+0FGh0xYhzvQUg3+H=!L307NV935u%R86}5#s&$OT{6rm)$`6=dnMbPVsLIRO|BS zbj8U}O91-Q>ct&bk$U?YjWLfLU4`-=`#SBfs@Geoi+~~J>0P<7C-CN_`o}<1%98hL zueZnFI1$Q&#+B*6&KGj;2AbkqAGpNfKBalgr!*&#&_}kCL*~k%$NB>Z(u-BWC{}P5n=RNVX&ync>i3D40Nq)w$`&C z3;JdpA2nz8uK^d4J#<9l!KBmx%+Jl?Vw!K4SeA+KKT~>{1INOcuTEE ziAh+F-@;N}fDtjK-;WX77W>1IKZL9#9N^D@y1=aFP*Uk_LHpR~;*R>OU=J<^d~020PaP zRz1(vc)Zgl{)o)+7T2=1nSi_?yLemJU+w z42FOzbb8W4`rUo0@ANAcg8~Sf6Ia6ZuuZ2#LWd&M!hLA z7;wi*g$;P){?2zhd_a38kjRq*huyF&BmlzkLIl2%2Z4r-PIpE>j)!f=DSHxhb8!1# zg+09xjBIoiQ5D#ZJM{v#{J zIRDHi_8Zd?|9Fsb8!u!xsf|9_@L6``rYEuV_~;+pupmrU_G^VYVXZ?*f4#A=0*2(G z>{9g$P};AJmn;zuUIs=r8(4sq#p9XlAy?0HA41RM9xWYi){8plLeX_?5UQoCSA#}6VF?;>q5tj(x%|BsQ043H0(*v-ND1o9#X~|_^@++ ziTAccp!W0PHGrI% zik1d#xdc&1Nk+Y}9v;407FJFV=<}-|)&Vkha`DChtW1ohm`1u7k$mgqEcxO1^W%7GGP+XK1Eynu z$KNkU8Z@?5;#bwiMWP9$tFG>4;-GZm;bE)P>H;KQXQmv%rvB};eJ_*bWK)LA6+G+< z2}ets&#HMB!M6!}kZPb3rIZt*!SI~=3DH4azU71tH1wv>+`m{Tvaf2$0olkT)A1R! zHN;_4zlBfP7w~2eDHcZspz=S9Gq-A#$3=&rBBMACldS)Cv7GW;5cfta&`IQ4eD~`bDM3LwjG@TFoGUOIE?&ah^oCm2GD);bT z$Ln;rwu#|H`d`jAVc$(SMM4UJwf>sQ{)Oq`S3V^kxBekW=f_!11t0|$2Z26q7IfYxprl|?2QLhKu@nngqrqb z{u9(Iky2wLjt*v%Ti?&W?_-SqitJlQ*CP0}`P3G=8(Me3OE+qW_ypKyA_?V969Y^vxp^)n*p zgtOLubC32t>bgGmC5PN@QIE=Qcyllq9PE}#@ezLkgNB3Jz^b2bR!N-Y(m96|Q)sG4 zL+qlws5N$%VmBi6!K=kE_g97l2!?!tu_BMGvp^5*%CqKEmy z%OWE$?d~=1%g*|lu6j(HpuYOoybD1NT(f8?q#$N6hlq?Q--nwhdfehsOK2q-zPF3; z-+O|YJKRcdHrt@Pgs8ZjYN6oY%YGMsNUQOicp8Hp>_4o!Flzo5-=rCfotzk?Wuy`#a5&+oKni zjmZib-->&l>_mJOeaE-Q;D^(^j~tWbld6}}2&}kZGm`4%;0u!AJQ%xi+0eke3nnjI zvrQ&B#-k;o#)J+QOR-}<9dfH9Qr+^lBOzgcQe+|aXjy*Jkn?I#N5vPuK~(l&Z929#BVr+Q3z$IVgL;mexP;25uL=aD#z?6;eI; zZeOR2aM7Uf&?XL#86%jL+QJ+$!$#bP|R;bJ|ByVq} zEYlrW^@cc+EAr+Ka`b(YqZjBI(-ZI_C|+kk(=ndQ(W&vnCMdx(|A6=D5rXW?{t#g{fbO^Qni=A zIElDjr%hVEjj}O?W)1CQ$&BpCBi~F}m-(q%^Y!xi%x?`acVj%+=rz0J?Trsj z!&TOgw`YtEyq&+%sM5_W#V46oqc2u5_5~yCzg1d3RRxO?xVzDEmXrQ^F7QrJ=!zq< z`BnS^E*XPScHwC=zw_$_LwZ5bA5_LhVZVN5Z4&$^+d1qHEqZO%8Sj`lCkgGYqx-14 zU!Lv+0*zcIGlL}b9%z5uvuSX@v^SSt$zS1T;wz^&LcX}Wmyj5-+VDsr6ZS9pFu2t+ zi_SPVy;pdmSn({pi4Z`9h;#4|AWFBXUGLLrptM<5-oiAsJ$9Ji0XIzTg>_19tciZ} zmZqTM0W194c|O?%~l`GJ$)cNxeUD!BqhRZ+XcNItA0kA)G2%T5AarGpb@NwvURm02j`S z@Et+-9bsb32)mMsG|9n-sK*0Q@Gg85i8uwl5IQ^?SaEEx{?evQ4+uGyIp_Cd>dwp8 zotcFxwJ{auE_uh}{W^()q&$=*o~8TCOzGnN$mNNr!MPLKM<5ZAFkB?L`RjYVcA4RDIWVJjc|w zEy&ERFX8Q$EeQ6@`-&ceYMr$lg?(jG#W($mO%gmBU;=e=ijb6K79Sg-hG+Mdp{EAP zMIV-!c*zbMe0M2VIRN3H<4Z<#G2iu45veUxuYIXxyY>gCk^RnLGEmq(z=l}Am5Jk6 z7>(z*3)K+ySu3TThZuvC!cC9z`owL=ON&-V`yxt{!pJut3sY?zO({}GAT;&RKBhRi(+PAz2RJ%yEr6l(*XngE*CB>* zu(90%`!#Ol``4>)oAqqX$vZRx5IUo);*y;*T`h0gT|elE)Gs<^^EWfCwYI2q@m@3* zzHu2LqILb22PtH_KFO9p3Ug$JC=Df_b1#{@_K|pBSeiY4?c44rCUYnjNR&_r(mg*K zeq(#vSrwt*)DnT+-`mJJHP=@W8lDV0eZQ)YbaIN4>h>mJ=wP*8`YksZqggON9?lqA zo@c7#@S?ewTBdQ8=-E-uUaq<$dFyg~Czr$Ac158Ivz^}LZ)x&>0GB{$zxd-_Zoa<6 zmSAo;51FrZB)KoOxvB1bxxmRoW1KHE;~ zbw`@qNChhf%-kRNJTsh`heJz6L8WA5oC|o2cf*$qxQ?&KLrtgoby^>)*N;o(4>x`O z_&RU8i5u9GqW%Py&5{3i}Kq}wO z*M+}}K=~{L^|OwB*0Ikz_SwKb8;BGzD#e-$6#Z_GkgtM190=*XoP|l1Yh_#ks7xzk z3P9!A7|+IdHpa8Djygw}I>*EdQDFuc!EDt)gGzVy05sx{Q8R zMq4>;W3=s|ok^EQc>vZ2G`TuQxQfl4vNcF=A)h0)Twg-hDj-a=$UpnZm z7gPkS?JbqHwMhEE2>X&<+j=Icclqa6wcOi7RH^|I0t8HW4FvDc-I3`&(%<9^PCDIf z+sn=-LXCn9_7TDx_i;oJi0zz$xa-fQ_9vi7@J@Or2=#bQm${3Ui0K`ag| zn-pm#4PJcGLN(TwA4y;72!}x>`EPh(3HGlXYkxh>}Xzs2_C zFAXnEY#ogZpsBqNtRxLiWo?(9(mu2g%9bK)*cWO|N3WLKg5OEm{Fham_8jR)ZPniQ zPv}#Y5)BDOisf%o4!PD3^_d8icH?<$+OL$DO#_pHIXmRtJlFcfN#*YPz0q^`(Xb$> zqvEr`x+d1S`IWnV82l88tg1JhG z-6PO+lJ8D6-w@*-k?PrPG1v6Q&(Co`R8wkpR9s>ZS zsONc!$=`jgUv2UG5h<0+_OpBLj-Gd$Qq>JWUfiJaGGuTTrO5Sw%9E%JDG8R$X|ys8 z4*hfn>5KRG+ZiFA4i{Hb_*-q2TPpB>+}BBbS+@0DaCT^@4=*dTe;ATg=$@*UX|}dU zgs4i5AW#vOr>bR%h&{2H=DNm5X0r&nks3+O#t$QUhUsbQ{qbzI=V<1emM&$+JE+#D zs%dY8ZhPul(%*)$^LC?qvo!9F@{)t@`h zRFziavsFtf&BkZ5mQ>nJ&vw(Z-SlkNSQWo`!d%So>e!{sA{id4-qnXHTCLx!Ra1&) zEvYnX>Poxr*{*xG>z?g8!^qkOB@cPvLYiA$C|Y*+dMi)u(zQ3`rS9^5cHQk+cjMYi z)8%ufxV^>bntxaB&v6ZWL4DRTnqv{h;c#e2E~5sZF(z*a%ZQcSh`i;}ab9Ict>FBApP*aW^(?ask4yi4;uAH(O|@57P6h!FT!cz*x+rxe*eEG z!E112WEpZI908s2$iGtxw&-c}&|l%eCyM^q5ITL#KqtZ_8+kX-sV^q7=o|?1i~!yk ztHekfj18fI)`i)`ARHFMzh(AWNDs^d2*>Kn2RTJ}nL%OY9O$9tFiWdyrWWmAHuuCy z-L0ptzPu&%NrdG>Pa6&&ZWs__Q)08MIaoeWqfHcOhr%20eJIPKew|x2a$CUiaTt5VU zg_Nl$uDM?EQDFJ4+_Eg&RXgn_mQJDP=x0~-4_k@hHT&n&S z*&G{>TONeLs5RE@me;Etn226)TL{o6Hg(rSiwj%aQ2%D1H}*lmDCErh+@kiG0pGN^ z-t>C4!->$*YYIKffAf!9S7M0>&~|e={N_^mhGB+emt^fROKPT?=XE@Mp z5nRAvb)Y@bJr7i!l(bh2kO#t(94&LciNIC+X{_=2>8MQ+&((lWz0aoKJp4@UXsMiw~TkWrerY6G-Yjn?SQ8+DSj}6u$ zmGya+xIS9i!hJK4`ThIX+{Utl&l1`~z8LVgdR90T~z|MfrrFWiH|^soQ>fBWzMyZ=vuB3AGF^s=+^0f5KaJPFbA)98;Di=GK_9 z)Zx)@;+2-e#PGf4mbhb4rR^!boRa-l5=C$L49!MWdR05uP@a=C)=-($1Y-@AL7%k{ z7tA#@vl356gl_e0mF}HRBLMlicfesYL+;yAvu8DTRsU2CFV*l=jW5;sR823{#8l@G zRpvj(4^<~C+xVes=lP>_c=h7p8=dRlg+_m;&R7Wf^*iNJH~PMRq+MY(ch&M#tuNL3 zRBbQS_EPoVLlqR2m+JhT>ip;Uo!Vqx8NX8}t6NxE=FilY?X>?)nxT}xkN!+eSzsVP zeq-a<5!^zkih#ek?P;KZFm}`ckb=)%H?tFI6?Ga#b;_ zo~q-Q`bm!Z+&KA}9S$cyoQnRwoV)V4*Fz|(f0%B4HCvy})>pGNzEsCS#yqGv$VQas zajkYfJyfwnY}NWwtuNK^>Tq~<*pKfrHGqa!t1#RkQuOomU0n5=eaN?o9MB+t3tcnG zYTxFv!v$W-eZNxG@>H$wcI&g(p*^)jdo`Wnqt_|E8crRcjiwb9uWuXu9gk-X5P9~4 z*)7HT!R)lA?QPV3Jg&F!$G@chevzg6c#%Q)P<@TM(oy%-7xW290>s?orQ~E!v{CDk zl#z8$BrGBl%R++_rx$*R}&k8jwmoXJ1zG7uKG{0j9lo4`=ulV`s| z838+g3#{Z!Wylm6!Cw}YnQV4Qv*`cpuC^fJx$rin)==m4lRkyXJkh0d_UmIXu5aot zTTK@E>*O?-&9!I|ncuh*1>q%(cVo7;w-R0VW3cF z7mVeyrRq5pS%g^CGJRvl%Qz_eheZe%Eg|bF$ICdVsw`p=KgMJ{_4zh;$*N?Y0D#}3 zjL!Js5gJLTk;Uo++}wPa+VL`asWv5Y@>)iI&^^!umMv9gp=9`K_%xK$1)qR?iHm1)}D zprteHvLr4@b6I$9cQmT3#vM!B|ATgTYKN}9DQ`W?mehBt(QxCTh-yI z9G(pav+D3{S+tYYvg^`E-L@G0&hJ5ItLgAm7E6{l)1GTjsb<-dkmk0eJ@5IFfRcS^ z*MHD%Pwm#VH|4Eo-jdcXSBsx7uzkH((-N@%FR+vUHZqayFI&IzUQFJ_v$xM?!Q$UzZHvk2KsYa zN4>Loru@{-|Dau-+NEo6%4^T^XGwFH8ZEbH%Z+PqO*^aU(xqIvy~XIbH^rrk?Yd3n zUvO%U%eFn}f$b&SEyAxs zSF7p7l?U~UA$wXQ`H# z6k!5(v(ODjv#ks5iY=*hIX*`ld9zY+w0<7fKZF$Q6};BVXXQY9%`e^j)-5mH(sftW zwNrlKWX)Hze$u%ft+rRIZB%SF>#Sx=moi}+s?O@MH&ja({xK`|#vD710_X5!KVe;| zo9nKuSPsZWzXOhbkCIjQ4!x5297mxBggnk&@+CNHI?D6@!Sk9XM)BB0xEX&B92$)% z2{Z){5hbDB4*oR?O9w_N9CW@i!}f;q9MnOep|kB+2C_%ikS+s=jYK~ zf9L}vN8>*zO)-RinB`86;`BXw4e!bTd_Q~K?*`fNqYkeV$!hbQ~ujycx!q9+Wmxe zQ{LBfXLx0fOA)U4rqLY`hyDS>2Vr)rw!3_6!EsbK1)~g!?j^wL4BW*X!`!9vfa!zK ztx-HXQlHn41Z`M^ZUuZj+SYqkh!iX0uW;_BBLiCR;xyU=!j;qGi1%>nuHbNfKj8{h zdLsJiB_L9SMhFL`bUY|4H0Ot_Lbw9A9@<`0Uk&`ipRjCWUQO>|#J|w_sP<&`WS}0z z;^Qe4L*T#FTN?8G9Srf}(%hxJQ;Mp1?BUObMid|SG7$$ese93*;|fvN-{9bLsWzOW z2v;t)1JTiy7pXghZ9P3s4jnyvD1#HC>DEZ3ofxQ-d$W`W2*Y~Dmm}9A+9Brq@rox*00w=F=bB*WRrP3pAl>lO!g<<(PT*P(FhfqsrXYzEZ!ks zvx7oidwt-n$TISDA^e2P`Qwjepjc;|KCEJ+FUki{UmXMUl$J+f?Xv%j?4vazdVd`` zOB0WhvMpM~-fO~L{(=!{%O>3CAch~PV9{^YFpZ*k?vGG88WRC4z zJflaTLcV+L^>;eNJyKGCE2%gfKLmb*>?wl6r_-F-iS2c!rP_EcY@LW?OtTO_`(&-_ zZJN`yy0qKb+BTTuL%wFWZQI7@Ymw-57ruHiA(>uff6CkHE!URRMZgX!ZM$6ZWz)J5 zN$|JKwP$r9P(;Vt=OlY;SGziwO1t)*tOiQ8CBHcW`uLS4Y8k2gxUxVQkBi`}DKD3F zSug99pJ3rtXA@sex_gAJ{@1Fc(O`Q$KMoO1> zUFqva3gP-mb=D(4uVfpAX#AjC&m&pLRUIMLCe4?8J!-d2dSJMP?jp$)!p(>L1YYDDKB&IT0X9Nt=4%7$dMI=uHvK(wEY=oXCcO~lVtqkN|2g<4 z6bq)>-%wncV~^9Ndq|gKwdOpmKWV*Y9TVy(;4IAi0K#Liu`=mtwc;i6n`L#%SbND| z^7UBV_forl*6FRIN0)3RO3v`po-5{f$;(M}C6DV8G(?1K8TO;7UF2lf<%5)#jn zv2%Bt=ERPt-`!by<&CQSdMnvq#fZjdm3M332=l*neRlE* zn>*)gN~LQ0ImTL$Nui(P9Jckce~vL_GhUjma;%ojctoJRtn&RB1qmtkHQ&<3&80%q zPq&qL>}jVV$Mm6)aGxH2svQkNFA13)zHmQ98FXc65i3tjKCHZGwa0&x6RhLsb6S(U zQ0C-(GtkHroDz@39+RHSXHeA4b$c*`fN%%bp28oKz1mC}Lhw!9_An&vrPS}f@rg!m4k&Xw0q-L3va7~Kjt5FM;u}BNuJ2PE6mWO0;Wt?Yg4+_;ZoJ+AC9tfl+8s|5@>Fk=1|**`uKWaH_~ z0#PGOc$wpx5ME4lh*Vi4T~0E(IL1UTvA-iW!uM2@fjWpX^EWvHrZfPE`nglm_^ug= zQ7^DX?HxPE;}023EDkgh^`{=cZN=pC7sHQ*%uupm$~el%L5|-$%wM!zT|=*s8A>L$ z^qXO2H$#kUTGVR2eii&6x$>v8(<#qvRmhL(#uw;V60YZYBZrqy`pgif>wKT|_T5Vk zou_;p@}rbXysWsnjgBZ0CU zo&0Pavipw8*N-dn&xt|9*itzgKkjmn9p(bxmpgv~jGf9~0KTr<^>_hz-)-cLoxkE# zaF=+2OC2Z!`G6+JM7P{GwhPS9CpcQv%*3c<4Sn+-I%Cp5ZaTso>PNbX5e;E zN16Fs?`u`Fp7;m#Cyc|-dwxyB3w#!wE~cv_%wLL{fqnOzw`SBm(yj82?cctY0g2o? z`>$9Ssyvp+_$AAZN1yzF(V&K|*nj21!rL*X^_MPtcsqWjEKs%d)N^5=kTRO+pSt{3 zf24MQ?G2rmV9YqWUA|!KjWOfp3)d3Wjz?qLVY15?jTJh!T{-dv!kqGCt$s|$Azv2C zw)+1TySBBi2I>R~z3M~0Yw2KqK|wT*mwY)I{NRc$M=}hyX71?VdR;CY?RT;D^af2(@Lj3SuZPpPW$z;@;akDJPg}JnAn0hrhVH=XMkAllgeG^Q9!l5 z}KvvB0pQPzP_nXJpK5}c|OmseEq00@3~lqmk_vdg8R0fUWdI~*K)S(W3BH{ zZXXNV*KwZ`#MC263fRhbzkOB=$3wp0{-TU7#_d3l>9Zr?A(ROCNXWN@G604U<^%&V zg=-T)(p?Rs)#7-Z!KW1$mQw_EKd3B=J1W-;MP{ha$iWJexSMJtMFc?@;GX+=#x4D7Z8p&!6E;kfJMss{DqxNY;d*zlEL z$$n5r8Qofbue`lr+}jJrJ-5*>8d=;lsqzr7b+^&08zEk+rjBo9x8gRyQjOzCJJ8DG zg(0t%Q{M-YiE)o%3BOS?JmyigKgR*A;yz8s7hXlR5K)Co}~tM+xf72X9YM zilwJmQ`M+9R?SvER5j(Cr4T{rhqof^8AMT2{(`481Xa&qRXvur=AnAJaDT!&H1~C@ zxrBjbyg=yd?C*YDD)eMv*(?zH5f2ykRFG-tJ;%JzBrGI?BTu}rEUXlJuDDda9k)2Lq+67gJB^yjVGHFEx>WWYtf;hC zbi5Gy;jcZ$8zm;HDULSD5h;BG(eCyR)J*M0R%nEa@6jaq~D>`+cKY4=u5n$k}u z8bV>=^V~Dv>0}DsD?jxZ=Y$=bMZp3BUADi&a6k!#J1ILKwAjc4P;Te5ZQJ7uu>Yq8`d_9!YA< z4(w4Z!f{~>`uL#}vUhfay)PZ!^gI9zDf+^$;ChvRT zcBHT4da@NSQrC7)7+%{ z149YS=~Rg@^0_L5@4e9P?ZQA9C12)hw}hUqNe1OQ=?lvYgnCSK#&(oUW!w%d+)RYS zvK#hTv(y2YSR|PU$Fn5tkz`3B1_E<|iEy~0!|no03fmHx6$e5$h~mO-#Yqa?7MK-B zgu_l2b}LR&u#v!=#3CF&e%L+4$@S&THUhE`KE4qE=>^2E5_n!!Q%tYI?qX0cVea2; z9`SAgEeFln%nIsNSjr}HrhBz}!X^;RvM`%F4i=V$yqxjq{FKK+jR)`6r_;!m41~ja zcMKI$;rybxp0JL>cv@JlC)CA)D&DX?(=#b@37shjN5cOxS4k+gK@m=0Eozu5?Aj^H zvrqdus9c_blKDXx!=Pk4RQ0P&S>_;|FYtq)&Zj}{lnrvUFzB(v?yo4$4`p^Gjd3um z2}a$1plDV&)fHhJ`}0)Qt<4GDem}w-??LAlN0;gTt6HXa`B;_uj%sv4SFJ!B-c>_i za_k_3Fd5qjS0*&W@tspFw?Y$#Ye#DS~4ND#Q7r+rJof$C*r7 z_GIOxP*0KBmPMHQhav99<)kR#k>X}UI7}AtfMpH}$>r!w7JZYd>M@ZD$VH8_5Do`G z+zn|dD(nKYaf&d{4(}T&D(Vz7If-zvHpJcJgsTex;0g_S#;pj+3x$O|Lp=4)`G%)7#AdKC9gD&C(OycXZQr3=|c0j{9D zLun>Du54o4WvS>;4{cVyPlZA$7Mh0s^Y{TRv9K)kq=1Q1?J-YT2TOmP+|d$Qk6?s^ zr7`i(TpXLb7?sCKAyoGC^`w4zJ|OTiS|ci|RT6(wr?I!IQ8mi+ZXJuGqf4^AojMD% ztgGX=Qks@Xj}!=pD=Ho*N*<0|8Y&!W)wwJzR9FbW>s$i+VW<%WkuCuU2X9t9mVgGW zM*0Io*yfP--&Z3FBK;8{9Mk~u_zfg1;5XXLQw2)*va^g_sH2R`#>od;I?*soLyd?w z@Pm9j?un==j}RxCZVz=KdZ$*^+_a2#?I4@2qif7m41!)?XV>=Sr%2&c7s5C!!I!F6 z-j2d^{b5`yx4c*GwTzDHpoMN@R4kPH>qdX!vE5_2@x<1i(bNbK%EDO549ZYxZmM~$oCiHt zb(xi%3^MxY=5KlQT(2*UE(2VB$DrGRT%*gAIfoz|ul%_ChEg3SSel0rkzWHJ4~r~= zdh~Nd``4uUQ91p{{eJ%l4@{=)xL(U><@*_^II)Sv-a;6MjW6x7xBY%nC;$L-#bV9^ z_Cu!$?%~e4p5ZnKdMFeE0DaQR8xOaME9XGjVE|I?i4IH|9`|8yO?!+d%$8Vzg(3(* zTWsp=>=yO9Krom6^hRJDj>1wnM#Ze31&Y?vJ3s2*&(WG*M9PU0DX+TX>MI;?<@ZrU zkQ759fO;I}y;5%2C;&7SjzR!9ADE6<4lC5-i0dqS0xJwwuxAyT$|DTY_ z>#WABbE=;#r?q(R3OkG;k6~-zIAG+?m#D=BSFb+wbQoNeu{2SG%TE}`sg@4bucjwv zp;!V?Mzw{xcc48WP0H@walZ>j0<p!Haz4tV#abaRg&PLTo$;F1jk4aE_Fse3&E z4kQ7DZvwaLqYt^1x(Vkjun?F`megONi?T!KhlffAH87q9R$7ns+wd!QbCC#KYOn() z>m}dVO1^c5!o^miBcPu);0=Uy7g!ig(n@?Y=Rb_oyjFwA zBuyuNtryjRggewn7*D(8E7gG8I^Qm;0fa6zem^MczAo*v$OuN-XgLzdVIPM%gC>yU zLx4|2p&8^q^)%n$M+!L}XSj9K6!MU}i=@yLa;UGgHswqqk9z-cAAK{I?y@-L3qe-d zj)eor3dVSR$!Qunwv=37Xc{?Or6Uitw0PZZWKEmOamBkn^g+NSo@<(hjvyYrA<#T@ z*Hbq2w@Vjg5d3O?CxwQ14R8HfV5JpWNxpvNE9M;%r5(~v;UJ`$ymBcBm$*-mTkcq;wTp8H-k86QQsXsV zZxXaf!Tb=ywQ|Dz%3Wkc@XA!0(wo%aSU-!bXsNt@H&+o}h?VE_3J!g_`>8O6Rk${e$&y83VnpN?54B z3-lJU7V1m0TvsBw4gD2W>ryHA$+JX%_=Pos{a5I|68*|ln&FEpU;Qrek{L5De09(7 zl@DeG9ac53GuZvi#vswa<7-`a8-pwhFN?#v%g8n6EYL&7m%zDSk?T~H1JQl-IWHf* z=I;Va6x56k_!T75*D+&DAsq#%=kMg{@NPZ>uM6cF^wK<`s>tTzPyKbTTf!q%6Eu8usr-O5|t*JAzl*B%F1FH zM12@I>mJL1uq?RuDyP|k*;eM9ZB?ibzj56&&CqGYbyb>a2Cs3HIcM=qP#>Pgd|Ozhlu9!b($pkPjgz z6U+61dTg`ueSb%$gsh3@u(CtUr$z=$HNG=&4sF!;(UP2tGH zVK(aDzr_f0!tIdeaY&>-J~}Kr!HcnWoUR8kCL$}V z8n_a1Budvkib$X%aMsWWf62j?Wz`Jii8w#^N46!5u)l{vr6K;3$caxA3tfkLoJa5; zyDoqYSTi)vA7Ftv#cQ-69pdmk)FVh4FVf#ytI-T4KomiZ^vayqP=dP0>*wxVEcn{~ouhfiRUuS4-R`fRoEky#^FMJeo^<()F7UD%sJhkQH=(bMVE^9*!p{PDNtX4NKg}ZA?1G4r`YH} zb(9(B)&Y|5Yj+pI2yz=T166@I<(0f}$5jD92yTa!#?~Sj zO)j65q6h#eE5~|0Xo?Uh^7~*{&QpZ`gF4F0`j3cooRt_qO}zVh z2z8~AlmaI)f;8&xoRg#u=M8O$QN`?CJAs3M8B{YrI9h-7F((ZS%_~xQJqUy(&;7SE zsh>iE0C8WVIA}2OuY{}h@KQ8IV5rnbfrx|ndy`h`qi9-W)_&~!s0c8Xdniik_xw!v zebh3u{{0?~@1S&_ZhXWY;hs;u2w+|->#3dNg%*ZhxR1xdz`6vwzpq$`V##k_oN}Xz z$(MoC_xPUuS1HCCqKvnv&;he1p9cJbbn}O-fMr! z+-2nF)WSFJ?@+|=%Iw%sPa{XC9)@f<)p0+hW^9SQ#7&4Au@MtjXV3kGRwtheZo&>7 zL$j7(;Mt`$9HN$RLE6dZg72x2x^G*A+Z*=G#2J1fNp;4|NexA?WKSNg6`PTLzF8E^@4gDK9G8l#sC-r?`In7m3~tm zVY#5BF<;X%TKTb8vpRPwC5%DXt~|I3-K$y4Xyv=b3yJ&qR`4J%xPI{9Vo_dDPt)mI z2}Bw$sFW>6a+YCkqnMLF^)!vn2j(PPFJ8VPd_@+05uODWpta;@eAKZZ5mt_`Y~>ra zcAHNP298r2VWzc)3&%-r2$k>Frna(5AvFO5H6o&GjW=8k4tE;ag-kQCJk(?W+N6Qk zP;0sYZPb^@7YP8!Igjpb0L3HY$p^-!gVeytvuccPdM0lFcu8*u(Z)skS}T( ztvuZrP&n8*>NX5cu(VMei!W&zt^5XrL=?{7?NzPdU5VR0ORT7oOZ4vk%@Y)O+$NeG zds*uxzhJDS_w|b4lHjes?ecw!p-CtehwrIcs&~I#fjAO_<39df%_Fe)EU{qUtGv`u14S4?EVVGYJ|%q znOsq4F9;NvKsjeLOlo=2XDNWJ z$Q|zCG?fC7sq=+%q*4G|Sd__$0`UaAJpxXU|EJ0<(E`lNE%AU7kcg>rVai^kMp(cI z(i&B{GUc#h{Tu-y`FBjJG6RypAw2JCd%#BqC85M*d`vm5AR|XWM+Vg+3Fzp`d4(A{ z0yZ)taq%8v0T~b@DuV@NJRwewfC|JGt1??*xZTYg z&K~jr&@3mR9&CmE#1p>$2x$Nmuqv|^=JE<)e}pV#|^+bHGnk4fi|5aqh_7{SHPLRc5PGu%8NduV*AkL7BPF zA&&ER-reUQQ&wfRIt8_}aQ8Sk+f|t@PvoGKY`DMi{1j!jJVRdaQV#!i1_ie0vegNM zrn; zja9YxwWje;&hV~54i}qh?`ut8_RjE~K|b-q58qkNb!fAkaXI$LdkvYGaT-TRUy zAxgB_YC}xh%+uK2D_PRyM4NU!s1t?xPqM^4=*Zb}6X=#;_(wq8J@nav13Ze0hW`WX z+`ac~#np~V!5kbQG5&i-e1-=D@>mTI1}LIco4F_;kJWHdfB?E{vlRyvk$FYkeGs5` z?%M2hYoB@=n3Ex^x%D%=2#}|_({?XHR%7dDxCtOngSqr@6J#~Eeuf_aaySE+A0Vr- z^)n3pkf+Zu^k=cP24~svQ6R3y(tW*%u@e!VjjGo*pZqY?XGu5J*4c6c>&KF7y`ONx zSgQK$h(m!jA$C9Gyz5jMjT0ExPPWuozO$E%b zYbS|u&#Y>c#8~N<;wA6(M=dk!4;MrX5_a2X(>F=|(ZGm_Yn)y?=#2Bghv5wXybH)) zv;o10SwURR2GTbsh^EDj+S&9goGaGOIrH+K4#Apwpl<=3i%)$#5xS14cgQ{XinTU{ z*g)!MvCmMiv-j>Yb-`MdXr>LkZ!mR530=C8caTQjCLp(Qm4qW_G_Ze;qO8kgH6UnEzY7CzAjTEC=BQnuYu?Hmbj{g2fZNq# z{d|B5Ez$V(L_3X@*DjY~Fgqp6i8%=4 z6b#ZIn?eC`n&Z@8z24^N{lICN*|~VZXaORN4<2u|Ul}@fXb=0^F>WUqQ^D?gRuCZG z^_UhUprhM>*aG+#UlRcbaY@FSP=K#8D&Nx&;Pn1ISv>!G2^mSg5NU2w-v8k()a(bgH5xG{-w1l#HY~il9@q%v><#f)^7gmFB8Nd7=$e z170kSh_SZEGB|mDhho((n0M8z9k6fPh5l#&vH5aHb5IeD`{z>+Km&8;gNAhRnOE@A zWX^mzut~3(uRTQID;D@E>Zi-n3B6>$`CMz#X$EDZs3O9?6>oW8lTORb&bJFWO(1|8 zCrXx0Awe3^E|lIDFIhwfhtf(nbCWHgR%+0P^0J~WmIoLvW>IG z-)L+Ss>f>vNTD3iv~FZ-Rjc;mH7S8lx?Bj8HRsU&j42m08!lts1WA-5n$9`Qa3eAO zobc$zw}FD(0Alg?#No>kq(5QYhK{v}8v#D(o(I%sC9-Iq8Vx=zGgnKvVCn=7s&Ue1 zL4GZld_k#;!`0XJ03?T8XZcNe@Ox3di^c+!ppG)L_vu2w6R@e;EK&{B?pH)J;F?mdG`n{{6e!PUPyC_ zGbSGT8)W!7@yNHpU5hSDX zTBDdaUfw6}k}v3kKFqm4t_7cR;xvwl1Cpn7%lldLX_?vkb|D)I09!M7p=)n|1+hWj zkC22Gj-yh1IiFQK5Virp&1;9RXT*ygwRaXK!-={0elcuhvVG0b|y>8x{$QQe*167SOO$s6_7HtTh# zkIRivqwarN{8N5C5W9TTo9nDMo?a3c++nF-toSbZ+l4ZJH#h4|r+36n+mG7l7Xv;@ zoUW7E-!kjXmsezjC3L67;?Y2f(`7O?)}$CdRhwFOH_Pr~_4TgZHv2gbdDh!bb381& z`bPRri!Vx?7T5GboFAOH%x^ud`)=NXoI8!{E`PUiebzhY zcUOh|*1N-qxfnRzc4>FV2WOsoyDChtFk)^7%*D9rvb*iFv%hK98&7+-Ti&+*G;I3a z4s)D4VX5~Jb87K55ATYr!J7Uwy+t4dPJ zG$fYOnC4u)jcN0OH_ypU73NzvLfHMb8S#JrrQ5bU_eGr-rg9oS-F%<9dfF{f;A^|Xw+a$3d~6Antum(Q_}%lOd`RYbCjJ>y2yawwTTS&U0s1MI2>xhizst z+_>UyJK|gq%YJL8mCdz$Si%-FncM8b{#g8N>90SnF|O3ZDzI1#{I^+Cj(uF__ia}d z2g5Y4rPEk|5~s0XUc~0U*i@aI5B0DEEJgyioe%!FKZK>f;WX?xcN%sU!;CA$Ff;et zICl zP1PaQY^2-dxXmx((|uVVtjGN3G#{*+>hGQ4N61@F`=zC7iTO}#M}O;lsBQHkuWqD3 zxUy{;MB}d^EnPnQJMIsMDp(VS)i9U+5}UQee5f7gL(21^w!bfMMVJrP?GQ!wf!`ji z$N8I=2kWMaG?cL~a^BZN))J%Me6EMt-%Zv1d=!456X*18^*Svv`}-aB&WGiu>X6YwQ$c#K|pUWyy&21ee{qOS)0((bDO%^ZvBiLD-=g`&7&dHY?G!Np)a4v zf0zJ65VW$x_a)Iq8KgyIvJ^-3i~AW|PY}_V3oUvE8*2J!M^XiGo!1+0?vU&;d{lZ5 zSXR!|^sops1a>+Y)fRyax8uqxwO$ERxL>sFmlX59mmw~_Z1nry+zE}W&xA7?uN#gJJ;2(NWn8tXNzBIiN7TM8=tWa zM3Q<>0h-tZJHIBv5TH+IYHc^U=7dx-*`VyeX7!{_%i%HfuC%$Gql_qA8Ov6`3}*^K zO#4UsxLo2rmnta7+y?z@)%-gD30!GH8@k$uy*sn6{<=U#0ODKxTj5^?$4c_@V27K- z?FNt1x1U{5L=ljaxPg}QjU*N3L?`Mpq)Lj`(qm0g`}!HID7q9Ea$2-Am*Sg%Z{-%T zBv`L`@ix;m0E|%NJ(duvkPrF@sVKXa1;jQw0^anCvw->sA`vHfQiG^J*`I@pj7H(b zK12o$UJM{whs9Doq>AEJE~hsV&H5v=GX@40Ve$)YF~98DwoZ4!&VF`8*PY{ei-ExK zK|=qk(eH1ox2>yRZ`tNfS$5ZEI3AAYf1B~I%CM-$<)6%u5a*NAh@=d8XEt^*;&HsV zm3mr0YAVP>0Ihaf&hfjU;{|-2aUj2OJPy={5-B*1Et6Ag%U}Vv`;4ubY`3tsW-fpu zkHC7P?Fj%b_kTJbYJID8sNN#Rq|5ztH@)47E!Ke=# zr&BC;BZRI0sxOD6k?Dz{Onw@Obtai`!ePIPbOnWb>RT0Yq1aUmCwYny9MrC@bl3?c zk>)j7$8CcZFyZnKJAa&KPmbOE`$rzf=RT3npVzeQWkqn>FCmBX$3%Rqw+JECHZ8AH z0e=HEFCANb;1IKdop(msBD(Ja-Fs-D680237003{iI0=?&0TDLociK|*d!e{{7yZ= zNSi0B13!=G@!2TF_4h$&LLWUuF@xCz+OMIxi;IXB*e3sCaL4%MbKTkRQ4QD0>F9Kv zf7MXsOt1V7it71_!P}jW%hAC(Moo{nsqBrzBL_HnAo!JdG(0gk)Q1UcQx(sQC5x;W z;P~e!CYZh5&Qs`qk87~pPrz_VtAjdPNXS+Y?Cj0MDf6MfUeCc z9UUn5m1OD4=(>4_Y`y5#{fVGKSl+WG@*ZOyQhvvp^8J18B{mUnGQ6j)s|I)cB?LFI7C-z67Bx^=rlrzh&O5Wgo>L|66I!dTz* z7x)b`S{3vlOcJW32t_?+y^sHz%`@ueklN4ih4EP`cc!B6oEo!b?5zBsu3X9bzpk`F z?si^i9j{)HLS1a&csgGSyaJvE7S!%NsE?I_>VGVnK=>_Nqn3VpJooC+;bNI!!ZkJ7i}h;q@_PDKt2WE`1dxr`a&x4E#vFV<6Rw&N?hRK zOb!X#Ml;F5=40dH-DxO@e$4tZnOg#BuoTiLHml=iL->7s9uZ{fa9L;iT0}ixyGhaL zPU1Ix(dVrWlte+?3_mx&c8sNB5_uSVq}nRND0^(SyEWdxSn!wCWh#+dKHWzt(xvei)<1s$QGi{1!vC1~ z)O}{)UF+*XuGieU%74_7vNzSroUEhh*<3>=c^wm2Tc`Pp)8%8>2H7$>-!N60bf@}! z@`;vAn6B*lxMgyVp7*LBUZ~5ykqM>w5c(@%n43abCWGVd6Kr2vWP@|MgCpm3OyKC> zl3>l0cjAk8$El`VsQ!5o-6DE9UuU~7%%+TKU>O?^kzNCwHt+ZLH|T&g^v z)C3$RjyxpBTUORiBvy9^;pp(1{TB~*&myE|b`?$SyDqhJ*=Ig9Tv#9gT~<+NM> zB$5W5Wa&BViev~6#zVh`>QGS3xM3%-1HM(cB=!n=-Ce=I#eqAmzdcxP$2>RD76PWl;7=<)uc z;5A8rI_!Ym^O|!TD=H*>I5hGwROr3%^JyXJrV^fsTJIv6o)EHUJIgkio>!HAF03b` z;#*o{rp;K)IPA1&+LL>G>zPt>JT6C)T?Ka84={3Gs2IUdgapa#4TDAM=CS9ZXu--R7CK1cM8tUCL z?GTB{nB#L>a?(9rm}~91I?{3tSd!3G8-Z76Y>uPC6#nv>WAvZct5b^+38FnWIupp# zv2C3$!!X6p$1b&^j>uZ?-xq~ z>$ifL?G$s~=}CF2S(pI(_2b7_(M5(+z)rj*Kr)CCjYKoA820=4uz@1{j*wC+^`2&J zII-vk-4W)gA(=zFS9-5CGN7P2xEJLJuKco8J6ClaSPkhE$nu z@`U57XFu1lF4vJUAS1>Dn!F?FfKAAo63fOjW`uTmTJNDtY$WpsrIxj!k{nUgH)M_D z)inTKCj>^eQ^j<)7$g7b11xl~c`oj6Z6WfHyd{r9wLvH^#NXEGt|OLuO&h{J2E+Rq zrK_V0ca-JPSTs%dZ^(f(Q%VJFwRW{om!ko!9$d2BFwuJquEV zvyFLa^aa-m`XE(nbfROkP9;-tX~07Wh18@D&D^M47T36 z*ghww-&@M!C(o~;jW0{|E#l{IF?{JC0WUxBY+VO$`%UaMT)hjw<2(;3!7Hr=C(z+s&Ygpq;fA^rMEh&T=3G}o8^>cWT^Armo!!>d{Bs>sQ$HT0{=ma=*^`VLeq=Tid0@!nXI^)V>V`ZYE(xg*-{Lf1X7 z22#g%g#2Z0ESuB#P41$8rawAa>Q!01=$$S&*%Ks}4f2WN22Q4PFyM-z^FV1lna0Ev}z zZNOyk7jSGVVE|Kw4-%I?Jz#Ok$O32-USWNON*qIAeUz%51 zZ8o+&@OhVuu*Z;#^S2Pc*8Ltyp6~lXu)<|vjt9>}c03jo;0Q%}>NCE^RA=Mhd|TIg zZ`@RVJI^Z@vgj2Z$H01R;oak4w;^1;MzSaAXrX(vOPu*KzA9JxfE2e&eAYQ5&B142 z?l->2xB_8T$ny`US!S+Z-qQ*TXwG`43ty|di6}v-WK-j%Bd?JK9c0ZZXlu2o+z1!7 zf?TS;P2g}mMWR*A8b1}Ub$6|Ae4KCHd+yK^FF6sF0FTZ5Ob{elSCy7=Snd+@i?>}Y z*7QJC!k%u=?PP!=^vvu&{z>zfcbT2s&saZY020LSc&Jw;6gXW)_NSv$B2>7C0iMm# zhT5MUEui+N`>1c~Z5&lluqGev?^@m<9l5!BuR2E(O)ihms7L=Xz|Q6Mr(zuKc=E)d zXuytZTiw9z)(T#*;fu%{2HkgTl%O9}f)g;yy~fA@zmSi(ydC(TOdndJ!}3UKh{6>O zE&^2EHMF9T2XwoYZN2X|iQcdDXjHT?NTx{1yXQLvh`Z;6eDCqUbCng2LRYr|mdp8g zydGA6PHNx}P=KD7CLPi1UY9vF#eP*LdEt*XIHz}hn<{R2d&uf7P@!*#=F<_;&EIx< zd#`FluK|aba@R8(*0oV5X>gi9OaqxCss}=8^Q4(x5HubgwF}!a^S{&lY#&Dm{eBC^ z{)xF-BpOB6i2VzVErS%dF^e_21!Y#NGN%W7c8$ z*lggpTXjm81F;wg!A(Z+-e3BJ@fG^qw6{4aAosDWEk4{{-(+La2lgQu(XOr1LG$_# zlGtoUiY?&VH$gi5+^hbcs4@F<9hgTd?Iqpz?{p5Yjzm5O5`#a%u0Drme|UQ&VgiYV z`QKTeBi<&paWS=Y{2-)OqgmgzuE2d?GO5$o$n7W(Jg#`#6mbBcey9;(v`3{yuAA$_HU`98@>pImdW)4=Y= zQg#E>L;#E$Mx+CfPIgzZY2{Z=qNV}#{Vi9dTgw^>(1 z+4nsofc0!(`{5b%?!%})UR@t{PbLoYV0qQJ;9dUyvu@gRzoUrsLLaLAbjM_eGp>Qw zfpM;ASRd-=kM1pJqMZZ{&M#Ps`=8OI6d7VaUF6e+e@0qff>_8g3iaa^r@R<;I|%SP zhXGu?tW^qHsp1ahFONJ0>=Swg&n!n2 z+!eol2O-vbItQd^wrZavjnaz1mA%xHQgVItkU}15G!gS#Gx{xthY!$bCmIbyn5!6c z;0kfjNT841t@ZEu2enl{T?xd6EnvB+W@@9Fij(mNQm6~?PqO*{kndxPswA2y6Zvd% zOI3pN#m$-AwDasQiLb@|VYkn*XmJJZMFF zjh?|e!SrEv;amAjeM{z%H7%SnThql%r%mjKdzA$;GvWIchz|DkJSOmaVpi=@OchE{ znFu4d7JO2`JJB)8p3=Q1bVvTzk)A(qAE35v?PLyGElr}iWD+8CiTC%ybv>{L< znr#4E!ihR@@4{xxoFHlYm!Eal(g$3YR1Xdo0jiQj9!+AU&EC*)(C;lijj?f#IY&sY zz9YL*?ty&Xs$Y_>WfL3FmapB-5c*K&P3BtrJXqPUGHG`oFWva?*xZzJqZ0f<8R>93 zQ#BwZ7_)soB-DRnpCVlK=1kw!&7acyayAbwzsnDsN0_}YPQQFpW)9Gt>MUbs(|TCj z8m5-NJXpA3C-8^zI9RWOVD40sJ^4)t$yIGH1hULx^=B@3rLT{<>GK8(<@3`;&dr)Q zg(O-B;loVCZRfB@+VPf6Z84Xn)T-P;nJCt5@;e;Fy)ziNqkK{#MR8@{00#E3?{wIp z+cdp=tkC!4>r-8Woz^JZ_M3Bg_jWt69pS=M@?w|gOElk)pw!d5wASbUY_^vd7Mt_~ z+Yt2y+fi5tREH(}q>WbY5q`Ae zS`|}Ub}yCxF%jyxu3XjAw`AlZIFs%Ss|9d=GQNhr1v(0_)^S=XVR3#afA!2h!tqhNue%9C09*gi6}5mHv0nFgI+qkvysI}P zCd6n=m8+k>bpwg-@pX8n@iGI^J#`4?%DG+xrtH8wKSl zKRpo=lJtQ@#ODM)hEKTq8r+Kl96k@^d zhcZ)(3qP`1C0npVXlp&gY&(6X=FYJJi`O#}Iu(4k$mG~rP>!yoK* zlQ0T8zNOpi``XqSFf=l9@=r_Q&q10Rz8d--iX!Mt4X&tryoqytmfTF_8)8@ z6TaC3s8I{~$H7|g1pK>pWTPJ(#`JEYTl(<5HD-Ohv=7Gc$gHuws6TDMjoGVOv&>TL zYk(H7=pNV`_dGa0LG5n~+{#@8l{ap8cs|%JJt|R;(s+D4hfC*mtjEgrul!)U%+!-+ z;{A(WVQ?4}_$cJw7>sr1{U$`tHjl`!`ht-IgPM#YHj&JR^jT=I@)~8nSGP&vR;+iB z4orWE5hoGrhM&I7mrwM@tnX^ST&m0} zcK>=2%$C13c1twH`27BYA*)Lz`V`=wsNx`&^yq;S8+w3xcLAX_HEsWi!|^_NHSmqD zKcArp)v7n=#}(JG-*)KN!6LXlB8L;WTe8zR(GL@_E($nMz4lc?kd50dY|exc2JjWfn)>w@l%o7+~Cdp=w@zdrKY* zqq`(-nBM)W@zal=humVQ*%BA9yTDu@w*FT0)2$hbqU`XhU8#@suWAy;4x!Xo)c)EH zh(xK9wO3CZ=U77p7nXI1)MWiEX|?XDoA2n-cJEX|jU|Ss4suY#&H|fF$kA1UHrp1y zAAhc;sZYzWhe?@j6S#-;ep0#7)`Lwie02pkHDdN*vOQd1EwHN}QBpujQa!6#f^i(C zQ+2AVFiQz|$SYP;BdmTeCF%l2%O-LfYH#TbCm%F_&I9huF6v8lahk=4Y}u^hv_g9e z1VwaY_Hu>$G@6Jy6x{Wh)7D4g*%3@4yRE8@mUQKUm+Kk$- z-&CgY{=5cW+-8WOxvbE%JTHgC@qoX4={*r7F71b1pYwz7m6KE}zqd|_u;CZqiG3%%8EMVTd-h>`u?eAMxU-RQsM`)cht(qH*)MRS#`Pia<7z$k@S8=`QW zUjt|>dOkn1$AAF&J6WsekzN?gF^N^7jD44D?v@E!$F^;>8kZ$g{oHw+Pcc z1yi57an7VL8AhY%9T~Th1PZ_RbigQBZ9|H%{)P%}#@OLv_>3QB_~(X>$j!4=h(@wy zYenK5?r8H?=SbX}^RvXnc@p|I@7uY;!@B(M5;{)xLzja%A|+vNrzo){zg5j3o}G&p z7H*l)IebbN=Y-^?b|Ns5gNpJut|j3UmFY!aL%A?H8{QA2t53ZcdyyN4*gil`b4ZjmmD zTikN)SaTNimKv#$6MTI{N>|-cGYH_S5%6#6;u4thq?}=XJM(~Dwy6Xfe$zXxnLIre zzJ&z~MAr?Tr-gfsrZD%zRt6F`Eqq4-j~j(5LnNp1&osM(!qMhnHK&6#U9qB6YAIJl zU)f=*72UJG8K_uV+j@BYS4gZ&e~wkl}|m8FXGcw4ubb& zo22-yTL2l?Yrp-vte#sY16QPtTmwW2A`VVwJ; z&yFEvYNhPj?R=A&A%F3>`4Hly?ALjeWC$g5XsHhQ@kceOMG+6)Jj#FUY&2;TaUfT$ zYc3)j0F%`VKrd4H{#A#mvQzSMLh;R()4|JpkLa*v=Qtxgmqb;2ByW-}4c;_Ma#sIR z!bG!ZI84FWlJS-G{w$7t$5mKxNh-cw`9&*ooZ&8#pqDmBaXh1fS$+Z|dhf>;gN3rD ztjU#8RFF-qthr&`2YP;@PVD}O<`KhPbub%9sK3I<&0LDsPWK#u6;G}v(AP&}iqGm5 zkw(tau=2pkSc7ZDJyXlNsj*ZWL&?f3pxXzZRC$O~Rvm~O--9=r+(>&YCwF;tys zqs|}>rsF6!amDAMYPmfdNkyM)>J_kA#bL2)L_T<8gf zF`5V7Hl~d2=}gpN@x18j$1c%HI2@k3v9=V`0>;enzWsIMQ5R!K+h}q}uC&1dN_Sd* zGQ*k&^rs72p=2F-h0?cSD08l+a-n7#BCi~|_udXdj+!k!{37 z7t+-W)Db`1aMi);E$2tWg`^H`2AfSX=6?80LRtkZx5S%g|2V8>4|6{zE@YLN{}wL0 zW(ky@QH%XB3>;_rX%bdIpm%r|-Ir@&eYB*_GH7KF92K+)TO?szF>9Zy=Z&@^YaXB$ zu?kiGNl?CWbDui9`FI~CfWUk4sWfw<+l%R)-oK>;oi%lnU z*PnKfV@1kUb)m`MdKjA-{%?yn+@o6nu_CdynC}x5O8WDqoJ;1NDSCTq<^EC^cFm72P2zteQ7SVi`NA)b z+EJpQoaZn;7m@5QuD`paPQQsy?VYixlYz9VmFD!JRdno20!*2Tac0EH-aY0cVJA4g z+w?8G#rJ9=8!vTU_4nDJO1-)$Sn-cGF;acge;!(l1VTTisK38Y!U*dn$JS&Qi5{ ziGhq=lDS7?HJH0zIMr_NSvLiTvCi}+WzUi8y9SlO!5OVtM!G9AZ`nRkw#BSFw89NK z0rw#wS6opb_52r^)!v8Vk+XNJa1g}aRmU7gG(rHSW|bWDgA2Z=usb@0=Ngiv1NQJR z57Wv-AA&@mg1HEuVKpz!_8n4DjBIPoX{~KNLl@LoLe8B>8#7~f&&*O9s;{N2JjFNE zvMO9kwkRq#4|ve@+ws?voi-x4nA6O>1_@*2pxz3BqbW+1r`?|!_2Hepkvze&h$<3M=eqawFX_ae*$8x{K9PEy?-}{a(e^1Sp zev4O$X8AYn``vDkkZ&noU~A>)4DnWnE`fe2GzRu~sq*Uash&=LIp-bgAhUOyzCR=G zfaTwXyR~nx+EN#M(lBot(momQKEUz}XrJ}JHa?m2t83g@%?QM*SRYnd4(R1*$WxB9 z%=bqjVOX1{#!B0trdNn{9zOjZOl@UII>ri_|Si; zrkn^uTv|{DKFgH%7$&XV$(7dTkwS zu)sB5^@njp+F_y(%rn0>%N$5wu(d#hcmMVJkraq)(L-C13wrH8i(6;;y??3eKhJ#F zB(f*+>N_b*`ZNjf&Hq+A|3DqI%bp2?6>q$|*C#c3ytwpd{`bWKGEjR$j!-xBNm)L1 zg?g_^G6!spk<(9J`&~ZUnbCV;{=z7{(u==J&U~*5EYiGXJ-xVMD5q5`GIJi$Q7x-| zq1?y@h}Idu$^?_Zsh`Bw9a9v1n&sw&riY(X160c}nOoPwX{T^9WdoW0d=knUg^9^h zm~;byERA!z3SE>a9ZQ&~ZEfa*XBvHdH1I8paKm~SwGvb66e?yUQ77xq&w+Pq=|@e` zs_(;y<$#ylnvXf=!y-JGi6SzmG$ z7vcsa;=k3r0u2)mmM9i8HHI=*8#0%z7)v=Li0nC5V>McKgLtDmt`#fCB4#-@Ay56< zEwz}ecvgX1l0A&~SBDq}kL+OZdnTmiu3&gFEr%>y(PHQpzDm*kd?e#*dI`G^t|Cyv zU25vSG4J>4)*HupTmcdB*5&LF!5#YzYyC`{_W_v@ubOjQzg z^W6-v`5>x*UtqeL-)1sPnpp)p`81umD&H`)GPwHC$f)++Qp_2`pa;-HtEfgkR5OaA zkgY66RhS|as%f-NWGjY?=5So)3OMyG#V*!DA=F|_XcNmo{cCarBjv=JU61t4L=nW$9>2iLddNeQ2>(=x=aq zgtm5Mv7`8606Ty|FGR=+*@SkEwbW9spMf>dCvw>dB+ZEqQ4x-gXQ?%>R zc;K(mn$|*;am-1<}Uk8#&_VAQ6HKm=_^0%BG-46-nF*~KP z1XC)faqSfwmScHJ|EOHKj<;$oVRfgje40z6=v7W(aDAIFuWY%F7i-rqF>fqsa-+6p z=TkAnm6$wrveX^bde^JiR%-C4o0##_weo-nKMl8Q3qD*TNi*otK|L^vG7p%{ z6YvXSE}9JAVj8qoaAq}{QgplrB5x6ac4g6Q_e?5u?MyfkP35%XiTt`u{Ll=DM6A|>nafEqOvRWw8tHl zy|7FT?3VO#M?4|Aew}Kw;@Nqk+Fs?tlMP#smh6<8Z26f|MM9Z<0mJfb0_tdDl}AXb}eYcbFCGlH#`~OHv?QQl=-ur=8=PH6THr- z9!nCgvFS>UkR}b`m9b~R2AGT8Iu~F=qjX0oh45Owu(Y`AF$mAQ5-TyK?7J5huWBnpufxW-`KXT>&$Zx;ML;oY!(u-MC z2Y@(dU+~I3eWOaIF0q9Zs;Ne%yo}*>v6TSo=}Mit*i=S!Ph%U7&Cn(^|gflC^D z&Q*t^rxyc?OsI!xbuI-^)<%_-h{*>P&(!p~R?Sx5lfDE z>Ui8Qr{=vXOs#xtLQ8+Jc02+C^rSH!D^?&6&B?CE_B{5)*23l?!h+Y`wtD zJY%+6)(c#kGNVhq`ajk1pE!!_EmkucUUTK-N?+r{W}#OLaY}8Fyzr;?jq>dO-x3uI z>d~g`HXGL{s{^xt{1IBCsxw({!QT?u^l$TS_Nn9KJ@F>) zENG=e4L#=~X`*J$g&#jz+{{*5_9|Mc$DX(7lc_+p%WKdpxsJgz?;mQ~#z81T8gN1V zP3VSk^!Ukog2atp1(y|4Ija^wU3d+~J-0k%KP3LxP=GvU>ZWiVrj27M(e43jUx6Bq=mL zXbp*sa^RfqZRW!J%CyFO2C`FH3IB2E;Ll#xcbwr5ykY=*aTf;yHRYIeVdqA<#bkfs@=QZ_7PJ*v8Sc#^=!qosRqJg8Y45}m`35#smrLz@OVtM6r^F7xpv{BdYhVWxHk=3MQD5V#0 z31+tl?Mok>9;EJFYzp?RjCC)dl#`HSE?h~sv5egIZq^3Lh~>P95-DkmTz(LZti>1d z8m7s(8AiDnTq4h6I7{OcWUP5h1#}zVUawQA^X(bY z&XA{%cNozGBOczHUnEdj!^9CQsR&%`wnsLXcIU&)#vZpRI?^H*(Te0@`~v;9PuMNa z<#;=tZH^p7;eIYZB^bJ_vc}YgS(~()MJoG8GxH!tz*kQ-$(P`w7D*f3P+`FYNV4eW z^HcQ?y^V=%d#f0jMr*c8cnoMk>AnC)4vx+nr9zjEmd=LGQ-e?Hq_FT+KM2EMW^Q*V zmFaRrPVilMUES~R>ehDWV{+y_J`0|2>nr?8Bj%}+=cR9K7>{#)S8lNtT#JpYvys(8 zbFHWizqxB$J6$ZxNhJ)&#QkL~K}d7{?M!ly|J(n zT>WL}YK{6v3aH4YY8rQD3M#fVJ-XY}=*@503c*UWzmDUIAgqYAZ}u8(VD}>ITb*)L z<;l+*`kp~As)l(JP!g8EFkHJbDnPkhJr~PvGVsbdW&d}TGjHp!dDMj<0O4X!Of?PD zm|GVXhyQTS_|B7ALO-H#Uu#t8FnNP0JGT%S6VD_suwatjHix}~x%=$N%96NlFx39Y zbW`$*bIVTDiT-@9DD=#gxy58K)u)ER713Z=&o%0i)2;2m!bC?mc(HK*jL#99nU`9b zJmP&(#O$_W>AUDscX=+1Am3wMBC9GvXXX-m`i)9{OgvfBT5^@MjgpG+8HsJ?G!05B zn%hA=kl=M-jjq9*5Izq-`YzZ*9z5T^-ei({?VRqWz9TjRsa&GFOma<_hNuOSnK$fU z1=?`L`9Nmhbt_E8Xi;9Cur$|I#eZjGHw`})I+crfv`l)bN{<<2{wP`dkliA-^m8s1 zCMH{UiTCz>Ep_Jm>;B=4dztc(t>$@5WPJnFyx<_nyK@oX^}H!`ns^%`2l?95H!7H@o(8fhvNXlOtF%c0xli| zJW!*vT&*5BW~85RbnQ4QbMc3>+Ab}>RJm9vb(Yx`>IwJb8T|QyM>4(W;wN0apW(Om zOM1E63Z-?ejQ@G|UI)ZM(+Aj!%01;v^c?Ka=JOzva_n&u2c%66%Y^W;eoC&F5(Uaj zu|+O7>^W*Wl&#SAQ$)~LI;F^;%bqSu*a$4eV5y2puCKD&EQl!-m_I}e0pAjSk5b!F z5R-NlVRb4H|q+KG(N_Q~1c{P~kmnF1z|h*XyU1u&VH4*TXXX zps&yzyJu~epv32R31;vvh4wE;qQ1Kn9-knDFqDu+s6x8|;mI4NPJ#A%o0ps^?r*Bi z=k;u1AJTSfolRM-*~RjPV6WwN6dtPGbN6{>(9x8yZ`VKOx}l{T>9iVr4m|xk+VKHj zOkHS2>yG}iq?DgW`1L4!it*h|kt0HjojjGWCd*Jos3BN|wQ#h7(oWr8rN+E|u`@YoAjb?61Gjc56&GpuC*wFdo$>fp0R_NuHeE-#g>TtT$gTp`_Kt!;a3_m(62 z3OUP*I7QQf_*@h_{Px#Wk&?83>n@~EU5ToOTj&B?^A*;>1bf!lF>BaY_VTl=MxlN4 zF}hR|0LfM3$wim>rADTZXHQOg3pHc*W@CknY8coWhI0f@`HFTMrCVk3u=;gTq^8% zUyGpn>Kvx)NXbta&|Jme1v2csv(cY8O z#AB}r77Nk5UP{ec0kgS3Bpgg;>-Zt$Ug(DWZhDFMsHr*Va*g9)kWa>OPB;&cyz^oHvIf)*>IJK2-fZHZbiOVx{CYJLEKc4_Ke*z|4L4(?CW(WZgTF>RMDy? zwmOtiA4o2@I;;8xLtRRKd7KPXW0pdhxyD@L$-$<|hmEmh30l_=mdgfwmii2XvqkF`J#%ZrHR zqX&e`z&UlF%Q*0=lDh4amgjim>QH+JRHK7NJQ58!1Z` z{$u-B9+)unO6thmkITh^|aJjMg&>Ez6ntmQsP<~in=4$-{jxs%Xi(U@u+`zkpGh>Gmu`${Ez@+4^iXy(7as~%leD^(nD;8OWPwwq1FR?0 zMrYHA9&>kzB=62IL)t)$5g1Ncl_?C61Y;Wi5~6ABX}&FF*3Xw>S4Vx@);WX8<-0D` ze+h@!2KD>Gzrp#G=)wi0P?ocJZ~@|CP6xNF3&UIOnXitrh*w zrKRLUQoA#zD7olnfP6gG4h(yUP5sSB6~$#&0tch+lY3C1L-Fc8zVWMZz2PucK?cYp}E`Jg4ci5@MQWJdo10f+P6hC z_F|k_Rq-&^ZF7f%Pxdwk)$)DsNFaNggRXO|jFK>ycoA`1R2GmGaZ_uxO_`<5*?N6k!pUD30*uKEnG{iq_On)$n4i|0!fgw!V1 zMgAB_Xe~cXwi-$APi@+Tu0uyi{`63)N`$f;yk0QaeiktOAVs`S(|e%Fe!@f~OyOJi z54X$1@0w`ualiVA!_Y^8zc-wmTr7O^gyVX?f0{D4TB}IE(#asO2?Rx^ZHE-ml2ESe zUF?i5{(QMAblVcYj!c4QL&C9#*?fo%2ZkL=JNPclzR`^X+#!-`K0o|Mugwa+ zlSHuwyENpm3!L!UublS^4)W+~8<~Kc&t+FB!Mw~d7)zjBv-2hE0OR#*C`%6FZwjQU zG=_cii+IJ7Z}C%`fPLjW$?|AjP9ztJ1N}w| zK(5b`5Cf=+v{y&WWlC+Iwl$qrjRtm>Jpq&#TRxcR!R)6BMdk6^8D&P+)3A578-U2R z%CxW=^=gUdRgCkgAUZ}8Sl@iD^ApS2gzekvks+nPC7Yy>R856u4Py9F6aCRIECUvz z7;xjyGLDzBR*y7pW`*21ue~_0B>1;+c%QL0MEEx!KR~aYru_Uv;4dIA{_pK~;2zi? zeAPMDvrZhVMJyruJt2ufHkL=N^f%$sX8&zkv(IH=UiTRzYF%B=oAPw+sP&r#{1oMu zSt*Hxm*i?L?LUWW-n}j~6B0ye# z2Oj7nAWcy<0${v5>^P~lA+Lgm%-(d#NI#EgV^0#0Y|rSW&^77Iax?uR6+=3v$L8Z49x&_x!~l%VL4JwkP>lM3LRq^}XU zD#a?VdJAj~^MsWTdM7X%MI%>jdVgA_rT0onOKXJqdjFwj-YK#Dtgxlo+9--nl6eDQ z8m|tjh$$7xGHpmYrkSs!fBj+A&S149$ukb7t~6J?Ue+*Kd~1n}*x^ejrRzT}p-yPw zdoS9^_aY6g_85K-7txuhh^gt=@9Z=H|Map&c$d`oprvK=p51AfsR(boA=&x0`KO{H z!kvF;V5h=~(#QM%0DM4$zX7rmyP{yVlR}1t&Tae_R&gfM6Y9G54RYD=13EZcY&*Y+ z5B0{4N>vWZB`rxiw0bnDN|Yp$_)LiZpzlp=6B&Ek4d!^MTt~x0#zU-@${O~WG#bn# z8SvjXpr zHS3#>cV*T3`mW5EOuF<%Yxzg4luKZPl@U070Yjqd?1+Yl^us%sBP zWK_Mq%#mHH51LiV0u6h-_tF^+YWct`;`LQZtkOxahm%X;{X?=Eo{ggLo7mgRS!LlF zHxzn^>Zn+->nocn8*IBBo{`5J_f=(VKRY759hQ`}TS;e?u4GBfU+svxxh)`j*3sAt zgGa}>L;Fp1RAEzFywp0$`eV?SW}-Gh1FUPzr>uIwZ^F~Dc7uOpuDu%%&<J*TO1BA-)W& z9LDi|j_u>+)%iNK;f82xu-ht0+|}3`S>N;6QLW;;3xSQmDkZ9qw9;0J9J5~DgOdMq zP0q;^Y`@fttZ(30)DxhqG1EJ=1Cs|7WbB7>MSn}v2cAFh_H4ed zu?GlOUe)MB8em@=lXr$cgs<}h7s5Yf)9x@PvCs~zHaZTD~v)DqoxATN{#gL`mQ}35*54zcxe9a(gsfbS&s7kZ*a= zi4hzZh;JLRmHd)Jk|2Udo7nAUHI2JpTQ7mZjZiNS1XfaBr|*z zew00$toQcUyn+)eRSV84Fq>(`hBaZb8=d$%iEnhd1rd3uO{+;KXZ|CSP`g@IY$hhl zjBUhCBsP#K@>=)PhZ&p36iJuot<4=9hJmxjMsaK+NI_uL3{>%r>)Wxm40^C-k*=v_ zH~hM6)x1#=n5@D5@D+7*6sf0Wl(n*UA<_<{_7YK}gZf%GfL@BCQO$NJYSsz%JwC=*SokqWZclTNmyIglkJCvj%;=~44A7AaR4sj?4fuP_VYpspRkq1VJj-Ir~!DQ zHx?d>Xt`F?8aa_4x=#iBbi!5^r$HnZu3EDmJ}J-50tL5&I|Or&Vho}je=P%I^A+xh;Fh4ySGdW zEk)d=x|xV8&ongUF%jjt-A2@uYYjy5@t4|~@!<<*s{_ONLuqtTJj^vq^q3?X7lp;2 zze9z`2SqOB)15ga9M$MIjsi=|7) zKSB2DnfAqJvawq1OR0!GF1(Y&SzZtduz1 zeiEbQL3LbQkriv&CfJ11uzvu{&?#m}GK;AzPzdE0RHoVhkgEs##H${4BFNL94I1h)p=gsQp>CW+jDWH6XnfMRTe zR4G%VqfLwf1dElVg2gUG2aD~SHb(`8xHOB$ugN-rA^22(#dxubjK?Fh44DGBy}VT+ zU&8B0>+^%Wf8ZP0yH`#$SxWk-o(=eB{8zORTnV;t(FP$~Ro!5)i=xWH6E`1*G&R)mk7s{UMGHDxg^B?x+`s9&Ft|1BK-y!%P#rHQ`N zZiTbg0p3Tt@f;t_A@L6$oZb`K$|IQEmnyleM5hKPF&;G$Y$nh?oGXxb1XBCEZ^^t)QnwvSDY5OUP;<5~k>=c}Q@tk^x*y5K zz1X_r1OKR7j48^CxaD?rxs?$ufF8>gi`iX3;$ycWmxls>??Z^@fh1bA(G#`pu_OQ&l)Ma-+zT)aS!JM19+R?>y;ooWy;f|! zHip+n<0&S8F7xlt{h0k<6Ypf_RAoGrf zfi>)l1EE;2@SvNvN-4w}B^&R!=t)3t9S4!0(ub34@<8h!MqyVdB;928LUYeF+9!-( zEXlS{3E`*b`AL{ta6h0jwz0)#Zv$U9G=;jIsb<}fH0{(vxfN;BSmY<~L}PC?&Tr&5 zt&6yq4VagT=mTqZ4qRw;9ltR*k$1Pt!4*HphuIIFH3Lh^68FsHi^=;0y_UXUOy-B= zBXiSZAi4Yafn__DXqJWh5C`CbK3k4%Xt$tPwQbSqJM+qp>x$j8>l*E(5<6YQ@(}IX zMM1@sM5tE_m3erqwt1m6ZW=XzATt|Tjt5<__~}z@Ayz)5Vs*_q^uvw>hoEcIFw5?AJ3 zE5mGSc9(@Xi@vyVRI0~452%DA-T%BnQEW;R4ghUlt^sul7x9(osd6Jih|O>nsoSj} zb)%J}X0uBrfGt)ixy!PA22UAQG|x}|r;dk~D(P4rQni_uq_(6`q-Mzyq((imUp9&& zP3-Gj(CkFUi~71oNP0(bmg6==0B7=_s34pey`#}G@%95Ssk-Mqt$NoxY?`OL*uYTj6h z%|{V>GGKWQ+Fnwb3OG~2P9W}uVQ$*;1ZOI`s!_X8hg*?-6RTwSSYu9Ir=Y+K1zwN9 zRTUuw*b4G3av$~+7zfA0Wy*S}qkIGao~J{FUT@rTiMMiE>hrj$@KK{|-0vYlwt?Kw zLuZY5Y`tw%`RI*cUtnn2%Ot&4Ca#s?#BgU*tK$P_(b=BrCfI8@7br&~QLjIr#FHB@ z(p=yvwnjZsyI|~j)QPb~JpxNGHsh6G&%}3=Ov6*VONqBTjQGRpu4KcKS`|k*2ESoR zElF)XCrh#n0;y5A)J;oji7updr@8eTZXgATk3Uq0%hlFfLC*9$!s#!(DE7S0xZQO_ z(YbTKL2oD4WmSo3JHfrz56SiizCQ4Q z_z5*smm4i3%Ce94)%F)YNp*Gcpw^X<+#a#ZVe?$;gNt=^epRf=`wJJ5-k#3tt30dU zB-JQ|U{BlC;Y3K&dNyuBd(!HwLPaB?u1-?@ftjE{GK&}Jcos?Uz{Y2TexHo|1Fvuc zy*w30uaeJOzKUv@CI7Hs&(}Zj!2ocdAKaPTbD;~h+1wiPKy+);Q%_dToehkAc8oze z?G$I99g5Zy)+p4+amXXl>-uXnS&H<6Pi~*3Vkbq`+kU^P{@bv+uvAIs{l?sAySU6$ zx%v0QH%R@vNu(2ase*K#zE%~IDJVT2Q-rAGK_dCxslh|sojUChcc(&Nzd044-|s8F zCj>Mm^($93G=6z6NKb^NszUIpN$q|mS~D=N1xd+BYbS6KU!NOd4`>;)I^-Mr#Z@@A z<28)t9xr_`yotHb{(-L>kKkS(^6;#*5A3_?Ov+yV)$^vJ9CW>`lwR3oAe@rjQ}yW9 zJs*$m`YdnbE575?dL3yXa}TnUJ)0W`)$hTjZ1$K~j*6d~Y36=zCVN(UBhl+f!rGtc zWqF)@FflzTIGJLTW#*ExROXTkp)yzbrVgi+ZSo|1);oG^?YJMvCzE@j9Kb)CxAP<2 zd`Ic_1BxSvp(p#VR#kp)*|6_EwOo(XVZ8Xij3GM5kc>S!xbBtjxMi<=Q>;hBH^oEx zFx&7_^LAIFn_prWZ4=%;aF)Jqg6#%-OuE6=sO7d3 z3s4I>87j`V0@kf0(uBk?qDdyr#o_=6 zk$f2>NmoXc7|*z`cR+i3Lc^lh%F}ActS@xQH+$oN;re1FENQ+tQGsss zGDRYuL~K>C5*0fKv|+;?C3C*Au6#CR)(@l0Qjt{27fX-}W>6|qRTN&t}_w^k`WzY+(>OX|f zv5$E6w#tp^*Qk`dQ|3H-*an-odB7+vY-mC&5U&!>?M)r&cG}qR6<*`lpAEOdoa7A9 zglI-|vslsIEjlt7Q>mcYdNC#TS7;#k$XGTjVvrspA5!4;r{@BsCj< z7~m?*xW6^UyV;D?@Yc6lJE9G-f>9njS=8h{RH^i3n#=M@x$xeYg4FUL%K?` zzi+I>2GeCVfpS2(P(7q-ok}qB?j2j6$ojHkfOlcIQPYpUa%>_3GxLyK>oa`v^_vS^ zRUx?uzIRdk-YfL+uOxui{~^=UA^f8vaJF`DmdsDSyS~t!Rl;bE+1bXH(TV^qvbkJ>kK^b(Y4i zrc}DbYt3c)&c7Ck6+dWVOKR)8a2c&SOJs!kT z^vH6y2B&!OP!m=cG;;e*=upe~ zMJ!l-QRz;z%oCm)lV9OI$o_$&8a(}JJAPvVoZYGBOhKeT?oLya*No)droIxrO&Ae( znfb$I624e+?pQ0_u~C^ExqB5f)$=|!>7}D3x-+Djt&_?72l*g!D@Fz6mGx3LkEwgh z{C{t89`A86-%EOrl4JaygZum@EO(aAFJi}ay>?txI;K)W>L;lGV4}RQqk&MBDBD9A zeV6jJzSM6p43@mRe*!jS#EqK%m&@57E@!jL*&i+k(p^y7^+UG0ST+>h!f#1*tE{Nh zdYr~ax1f1X8nV(@FQYt?7g1YLu^#Vm$DC1RR_qJ}vw~zm-f+AuP=~lLVafN#cvO9d z<5*nwX2c-jN5xzmRqnVpq4g0-o(&OP7_JO=lni^-K$W&r(%>y~ zPVpYf!LH&TG~>HFe`-}bsDrCBDTB8vl;E6ux>@^SvDnji&KPk z3t7#yHP`-JE)TkT7E4tFg;C2Tvfa3eIH#ZJh7?=0mbR0I`mLd&(uf-0E$-;N(Hfhx z8todZ;Wp+w1oQ6*{cE*)k6E}@y~?XJ$a1V>Nq0lE1KRVU4Hv5(EvF>5b&*&zNyPS8 zI>P3FC4SH^0w)^?(zeDrVe7xm-PhsfKaxBSF}&dh7q_o?N7?X-vf=hpwmOKfZCvqn zvnYDos&3Ps)9d)p)fCsdh8(oIv?0`;K$=}-dwUSwB#@+uOz&|YNxz=4)3hWaqt4|+ ze5GTQ9v1f2A5>@ut8n&{j4Oe37bCG5{Y-iDZXR! z132C5$xWBd{n~n%%R3r+o2}u-ojw;52~XctxBc`@Dy8vY_Qdd);Dzztn0+BrYB*lC z!Fc(({eL;%he@4oDXycl-1X6TjNU;JD=xZt+{Jo`gYRRFFB9$$`5~1DjadZvGz&qK zq}Kug(1GX-(I=(KeYNp-ZvN{5Y(3L8UeVdZZgDGO$pi)F72oCCpmC!CHYH{&J;}A_ zTOP4Y+%bHwY&R<6B@WDAV?B{fR`tB9!q){!A2>!A6HkUW!ato7kCQ9rrLR=5iNqSv z?&2Qr!7#RL!DIlJByF~q0+v%6feX0m8B}Wltb+b4S#qsigJV`wkkz);&01jx?d2_L zV=lr8O#sIOMyon|Ag)S|n8XU~x=nk)sK5$@ZS6-`@r1EL&5klY@P}UKC0@(Fu%GJ3c%dJNNFX(cq;9IjAK#0W|%m1~nQ0t%x>6 zN#Y89_2EhK<#a`K5#t_`KF3ZfDV*KLE}4!%K$cXXE%lx~6IckW2NbX56`}RKsq7GT z5Vc@7DbTFCb@htRu3>CSM0YgLbcypdI2b;J**7XKmo-R~H9?~`SpY4FRzy1q1>G@g zkbG_6G@4&pFg7v;b=Pmoz$&b~fs6nM!zivB zH#W#@U$-VMZft!k8K3J`y`5?DQgdsj7i-! zgJqG#Vyjn1fL(^DLy>JF>%j9%M-aCD@RslBA@#hkIrHaZ%%tm-03 z$vjE0r5D$z-8bwmE)~vL#M2)5Y1n+bhHZNyW%8^6onlr%uLzVc!oxGol^P@s3{vR&C@JMs~1% zM@4J4jR3%tI%GQmKzVLni&)hu+a+kuE3>Cb+%V42Yxc{^C6|kn74nwG%!LWJd6PBm zYsDdmEH8LD8C96DOpV#&kpUh=5Sr^zbp^|#7;!?OTkIM%zajMIWkH5ILGA=j=*X(N zBdYm%E-P3J zoc$VYAH?mT;^QnN>gC45$al@u=XuBc$^h2{`t_$^ox&1`^=3FD?*^!a<|}3SQ!z<8 zl2&D7iF;z0+Vyu+o#O9-b;CiNkETV*Vl_qTW2}FaBhVlAP3TI9W<(ctw(hLQ-lF(5 z=Ut=j-jSTUV=0rLX&*lkP$RIl#n}Uap);lJt=qH$l~&s}u3S6sx}Se$w1vCTA*y~l zX$`$@eefL~ne`j5q9mvj4^a{nnx6dwf2y5Ub!H0Wr)sRm>(l%W=lJ+hjI1?WWU}f< z_^yf=V>w98`Des>9OR@+#16D0FJvkP+v}8qLdGKEipn0(Sc<@`TOUnSIF;)13a7f| z*GP4RQ*A_E;Z(|Y$}|^Ihxx}qRh4F;&dg$+I?aH0n7E#`8>l-PXnn~;xHsJ~FUzXk zkyQkdsT;-tg@2WV*Nl?j%n|q$36Ogo_t|2T;Lc@08Ckh!v6RD#)O~{j7s|U4y*`+b zk#nBkh;?+n;iBA~{BG_CmA zhB7c~8O&oeV*!2>s@W;~OY$nLatt8Jl*8=!U_F6YfNI$2$Z?}pdm0IR`! zvUKbF{{xCF-6}6()0jaHGd^G1^?%@Zbzb&WuaL(Z%&5|9?$(Cm) zaKTZfEjSga9mz?s{&c6uTV{uwm<~=m#Dp+(3Zs{#Kj*ShCaZUd#8KR#73Jz~&SJV9 zR2|D^GBT2-KG(qrZq4fJE?=F$75L|K8M4W!7S~R?(S5I z&*_dfQ+!SbLy@WBk_hZDe{B&hNqYu8*OxRxd!zo?0UbCc+mCE;hV}zBg&oY|zRTy@(3D4&(lAHI`fz;m!6fVo6 zd%Qk|v!KFC{TPm#nSHGv^bK)Oo>%b94%sj6-Hy3GzW847kNK|*o^~Za8)U`WYU6f& zx;2<1@Ck=ca<^c~IprI43ldkT`J1d>sN4HK$=Du`B{+DHpuPT+d?&YBHRD>KH?@+Q z{IQ!NT?I%jN4Z8z){M=c2c%DBgX_F>6^Re zlUtfAt+MRzy3vsM{qn~!x9y)#l5I2l^}&98;Qa&V&exyLw|HJ@YEQSXVXFn8W%F79 zAR7!Sj(9`9{%O@>d9jR|VA2D%e|=@+{`CbIt;N5tFxu~MDnE$SUpOnyd$5T~py!P-7i(k!;@->6Y*Ua;q=zgT6^9!Zw{DHR*yxw>Wj}P*N zJwE_$41Wk$Gm~#5KecM6PM63QQCa#^d1Zc7 zUYWA2o?XOSR)Tn0vVG{o{L}ONAY7C*0Q*a-G*-4=7D}*Eqpm7Nx=Kj;xG{C&nQ#4w zl)SC+$TuGNhU4CN*qbhgN$*-Fur~K4!AGbt8n~i1Et@dG zgT}E=KzoKRxiL35pjubKvx*<1ym%FxMZzwxmbR2WE28;f9DZmv!tSso?8VrG)GKqB zU$NB}Ol2Bt%=y$?Tew677*$eUmB1p8@b-ac7)~#nq0m#UZGBX0Q(Zfi;ufTv5MU=m zI91#hR$5y+2i79$&ZE&MwcY1HbOJiwX(ubdEvx{yxB}eb5^fUitj{`x^*>kOit}|2 zHpN`GyR!vnF%qv6i2ab>C;F)cP=ec=678eaBXt4rDl5Xf>dcYEY z_XSrQN69r)lSTK#HcOgtf~GQ|wIcPaq7D^R zHQz?0lNwz>*&pzax?bsV{l!7jHUQ84NvC{B1%k>oxRGxL(n@^m0>1vyR2n=N8j9Aw zj77bB1x5H*QBn2;loM=ayaxKGiLaU@ozT;PW8Ji0|*;|W;|3aQYk#$;zUWLvzGN-5D2UQQ@=V;pN@Nw zgEx8S%u<1q+Fa0PeRP-ARe%8d&9(^-Be0RQtnMTfIH8y0(d-glKoU+lmLr@#_XX~{ z)1HRg=jFc;n{RuAC5bKbkKV%GoU15%;b;ppZ106fp$^Y5zqDd&PR79%C!aQO#i^%{ zKwajjT4C&De>$pPC@j53-3u1JqDk|Ks-Nb*Hf%&CR-}Gxr7eZ&AWZ+UK9SN!wK<-C z{39Yq0mWwRUKEHcp)(U}3(65avSjUsMM;`1zxJ6`<`$s59pNSh0vC z+A6)O)xJ1ri&KstvEtm{YBpd0UsU(Pz$|Jq7#OFnH)yobwJ5U7c^qLz>^@wY9{Y|% z+G6jad-=2~4#QU0Iqzkg<{>oOTSHN(ci8~eO>7G&(EJO?J9Vq(LNw!k8C^Vhh`OpQZWR$VdKrnMqA21ajqlFpjpw*#VpnC$t!kn~t!^ST zY|2nlU)u_e4PGuf}KiEg#+{?dABQ4r7(}*O9jh4LDK`9?n`T>cW(Ks)2y?`Mrg&ziM)T1 zbL*YCcQz)=FNHYHph2_OR(imDuwv@q$zRuiLAAWwF!j@iXGy})pAA}l;;a6yq5qY& zyW(^GUH?V=e++d2Xgf3o+QfHMuF`H|ReW>Uo)>G0l*l4)DnvJrm;cV{(Teb)nhei0dbTi}i6Eb`|g72l`b(d@bx?!qiZIFgDV1SsU?fu!^$>CN41h+6l}*c3q`}Ef1+Wp6*!(IUc?uz((@5FPtXrh?2l{5{LrZ zhfSju7&jESk-&`vwy&84Nx_}O?Wp}uovE+(!|L`;H#=YTi@;vpYTIDK?VTABx(jf2 z=dV!r{f>$#XEi&<_LIH39uvOurxT!n(7k z(C$>#J@!EMXQu@3r+>tYO;k5tU)9n+YT`ahzQ)fC`^HR8VSwF@_B+T zM{11csZ}yE+UPmr5VWl#ZJ%VI<7Y6cbPHLWuK3GR0ot6-MU?n@*oN=tCZRSZMXP>Z zn(0V1(>1Z;>r=%^)uE$m)!z&YurK1sjk7b`G-PT1Vkg#Ec3 z`$tS@#5d#DoCjZX&3b}Aq`SIBpoIg=+uP;_8gCu! z8=Twcl$PtK2H$>-+80_e&eUoy$oBzTI1wc{UsR?1&rc;r&AvzIV zB=XZAb)6_JBBMpv*G`=C`&zIHaNM9=#~)OE84%AO_$yinSA_dScs$hc!N35u%!I6G zXLw<^&$hkFZT(CzD4x(&b1wt6R>nZ`vk9-b39qs)-1=Z%vFBDdM&k`61+184)(K7kVLPqXS9 zC!Zyp&u0=IZ{6S@yA;uNJPGI9k z8)+%w;0&Ja>t6iG3GHa5g;R*m8jtaZC5!#4`+J!~H{UX;Jx`_`wA{`#ZnQsLm75_|klD}A zA^JlfHf0UwNBiPb|Rfb+6$uCY;VwP2boNTS$|=xCY_B*C$+i=+yLf6U?uR;(Vv1_lE{<>6g960 zmam3}I10Q1ng^Vw>PB}bbRccp4FtBk_W_lcxaAG3ubDg=UWRC~n%1M8!i@%tPs!F+ z%Ni{xvBerFncCK4dwr=vq>YXCr8{d;3bIwSihdnN5?pcIU!kJ|v!X?|=m-s>G1_6- z&;=zXqGYOdA?KA5ZMsJmi!)Rqw?%9>inMX~>V_#&_h8x;!*|Zf>mhGbW#GITL>#zX z4-`FbY7Z7Z9ca|%youxdGY5>E_0$qsU39Y`l3%@mL+0UyzN$Ozeqcf(zsa&I-uNan@HT5cmVN8_q>T5YSKy`8EkFj zLLgboMm=q^rG4w6s&r7IFEwRiJM@@un2ohB8W;Ph5ZoB<3~Qn5i0uD4u_;pp4Xp=_ zPjoipc9=nU|G>u&UgAm$2j4;F@>4}X<6aG5a?$Avj;WvC<@!&Q?bFK?IDHfK>B_{S zns?`ys;@A;wtUpQS1~pQGycKT{Xa2>{;S_6N*5eBp#RtKHBrDo!l!z)W`8P3gL%;C z`ni>aPsst<_fu9t4Q_eKBilK(*k#{O=>f^TC*oe-af>YH6ib(ub*dN0#{VVzQnk_n z|B$XS`OHK<%CAwXszI`Ir^14C8K=gA#OsI4ta*{uogxjI{rX_Pk^OO~h0BEvop7ol ze#%S@{UT3+r{0phvU*Wj)=gHosk+%y^i7p7ZB)*67+!WVsT{*J?NGZP&HK zAF7<>g=V!Fp4_k<^Xfo4J8`Xa#U@b;(gCy(dMP=pt#3<2%0jh){cS>7@4C1A|M*E* zc@|&$$@*0q_m!u3-sGP!6;NDW*`{7MiqxFtk!#CRl+L?TMX%Vo%$HdDCdaq*K1%Sa z^>r4C;!Rh2%aAFbCfYoUv_fwf9c^j}Rw$u7e2C8yOfet)8873b@%ll|mD|qJR|)s3 z^iNT%w?Y|199BhfRJ-FfKUu9yJ)?VPMNum{m6YPg5vbLi;Jc9T4*9;WOD>hhjjDB2 zkt?M_q#H>W$y7F?6Pk5<5R1m?pUcQ4o(0pAQicnz zQlM#1av?kA31V8I1Tn4XGww9Ctpc>}abM8xkDm;{OdzUxph(RUBBi)HmOQHo z&^wc$s*R&j`nZR$@Xgm{$}ZA1@0k2w&Nt~Omm{?dz_@YcoD-FwA?EJy5|y7J_(SwM zKX4YlH70Kh@$qUd|08`tJSxLKYl-r|Dcaf!j9C5X)qIumM`uaYlJ)cncU20|Q`04p zd}0B363``GL#cLpog*jw$v~HMg-6ZUGtep0P9O?gC!!#5eHj<>e9EYlmQGT(q~3jR zKu_Yeq<4mWt2+)~pD$7T%ss9u9jP%-_NMj(XZgNFJmCbszIa!B7l?Zn--2}hY+_V- zAVZaXJLyoX>lH81e08nBN2H-v*NU>EL=zNoJo~$wHiCtg-_N%6<*2bzl?HP@mX`*G?8vNPAXSF<45_OuA^>qYIEl-zN zyJiAAH9E%EiG<4RlpGhgEt}AKqoN#mUMeK-X|$@F&aA%omNr1OIu^-mzEldemgZ}# zXodAh+7kOBst8?9xDudoc4`RWa`Z=y*oxkI0^&^xQLGdhBW= ztYAMI&UAC7?6|CP;q`8R8M{m6N-t+A-E4n+uv#5%@r=@3`xb%EjyrLQdcgze^w_!$Dh>#k|yZCAT@fu@*Ma)cVJ0q$#@Q_KieY?c!wZ#I}a3RV21IUOWSx-(8x`5T-sF4 zgF(%fhUi9g5!$orik(IcRfROEnACZ|;Mn5Y1{t>ED|ly`{_9TH%`<$>xgT*v44kID zra(zlLanG1#`ciLGge}qm<|FrfISg-%PJwvu$Hp4bI3Oo}DJYO^Fs)~eDca;c5+NgzT0@}#>=Z}G_utm)~)4XdXA?t!I z&w7tljv@o^F3(V3k8$N1=dp1kh@YrD-lEPBf9+%k=wl^2lzeovYm!?#Z6zu_mk%)jQr)q`b;8SyAy9GmzU+Q-1b5`PU^{K>LX5R^=# zi9}WwFgny`t^?r&!cJT*$BE$Dp+(DXBAGto#4EE~bu0GCO)ktvM#ke2O1KV4WN#vPO5a?65tSpGBaz$Z}F2O_dfqMMq~GtKE?L;oah3 z?Axwt7(`xgWz-dWMFV#ncb}xKw`a-*i$ZglPS|6A>EMjrrS~?Bwtwb(+v**`vDm2| z5}c8UpGDPEIw{(%+ih)KRGG-(I012csN;hG2mgqRhP&YwpA>*xa}w{lh}cdHH1V3) zvfc1idHCE*{lQCod>|X|UY~YRS{9}6Q=4|_Oyjayzf;y|L9`;;Nhs>hNMsleOf<`hM!vp%}7voi3*3bRA19d2@S(APKOxgI1 zLl4JFL`o+1F_*0*7Wt8dCgykc(s}x&J&-T*6sIb$you_QX3u!te%SNtsCjlM6gj(y zbXq`oeR&mVN2i*yp6{3lNb*RK8pr?my}!sP;vbr(@}*87_3wy6-O)?h@^F^XK?3yP zAjP+4L<^!7(N029cg!IP6}vlXGT+O3P#NZ~T3rM_lvTJfDN=4|6A4;fWD+)al$z?b z$lH}7INPKk%{HM9aGUDpVGvpiq79mLW12c;De%pj^hD?i(5{{(NS!(1yOUxmCF2UD z!!F>$JYYA}M4C=W(n%>gAwegl=cMGEl$sL~bLtVydi*k6XJm+x5Kz<5mQcUt5Z4tEzUq^uP?(OMbzJVxkia;CN+9xr2vuID{<^?`qF+% zVV6hfw0V()jR-q|OLOfDg6-!|n<{&aB(Ax_kk;H09f(ds>(IKeX{kZ2ew&yQYZ9}- z_6~tfkAYToJxSCL^YBQ0bfUH#=6ZD7))w9isIiwxeEZg#>>KQOWCY13Mn*l_-bqV5 zetP>)?1Hvj?q5g|5&O5Z%(3GtGU8KX=CsO!N3><>RPYMBoR(x-3lKIU>;x{!)jW$( zocR@r4Zxd=CkN710xjd>J_HHn!=Dbj^Kc2i?-qA9ngG+!X(F<+n*(6{cSO?Iid zojp%=7zf$U4`kfdjf$k)4y&Zx8f_jem@)4*FyAcM({>b)3tjd&MO|R@L+D1l{b*ok zkzBqYYu}S;$;yY|Jd(brljN3=M)u2hb)=Pv)C-&T5MNc(HIu&WtXP{+-DD)hdAx%q z5`06muZ_fOu7%31FZVw(2{__Bb1V@!;`sw#pg7Cv4V~YG;mR<~uet}*Dz)9=2bRcO zm+N#myzy!eDyk10)^VPH2SqY|&DYK*B-$4+?nruF!7G7%)(E~nF9fB(?@~InfdLdm zGNaf7?;Cg58%zbdIdySTu%>@P8T#!u`z&iA!Hjwq2B|*2; zndKl~8=>=g6L+9$>o@hbaNlI{00x;EQxW3dq`Sw!#+)%v_OfQIEZO6r~(Ji>gVRHi0xdB{>z)T=mme)`c!tO+b4G2N$=H!G6sE_9mE>6;EOMcI< z{zPHnLuL>-ShOd*$>Mr$OI49ATeYTz`&`u9 zXDc)%T#B7*Z&?s(={BwAlU9Kre2TA1y(NnLQ5{kV7ES|$VkhyNvbYiP0AdS^0hEoU zve=Jc@*yS>Gw+@l?$mTA!7T35&=m(xsu8xRNey-l`Xe{pn+f)6Ax09+SsUGIn$TXs z3p1~cY-T=2AulfhU4(YjQhhvI;L!Wl+P4E8-Rj8N2h~vtY*P94b$j6z@R$+b+qrM~ zzUVnZiZ3}7)SjI=?Am(}q;RjbjsU4<{ACxJsZAh*9*_6OK%sD?r z8nEY6Tu0T~8PAN2^651_9;1PEj7Ckia4x^~(RGZDrB+Lnlr4$3RHHqdMdXkqy`rEG zsd(+=s7lEuz;5}wl6tVw^U!^@rTPKGi{>9SMz78`;-zY-?IWecvemo<>yK1%fIFa_ z7$+pnh*EbN>(NvB5k7I08V_Pm%)Ng|*ZT*)Krt2zDHSs+ft?gS7Ld+Hq$?BY22#&T zCmC;Qww9MRT(Q2hEh2tQq=&SNOrWCe*2)G@f2LF@I8CZr8Z$4bZ?c~8T2J(K7@bHb zfuZ+#&V|$q4Rge$YDZf{1u|<(fqn*1bx6M^geHCWUn#Xq)nWZooS~VT`3pib5=}UO zaA~YQOoh#AumaaeH&5J%P71ULEr{ARwM=%OUef68_ax39&63m;LC>m~RICfK_Sgp9 z@=OeO)K{6H5`P<>@O8It*{_< zn>0($x31Y@qwhx~Oo%*SgzGcSM2_K3Ls*9x!gm+10;T2+>H@eD_P6F8t4ss#`?(JH z?Lb_7Dc>o$8{nFldu<lDW2lj>Ojgz-Z znAaJHvtA8W0vmxKt7Wtkn3w9-8=d-Sy{JmvABDPg;KWbUV$(s?naa#L`O6*Z&{DIxjW`4RFrb0~fVI6<`L?KW6wrN5=ZS1=yF`#>pWr~u#cMD>y%pYHH#^u02LS^Z{O63_C^QD< z_chvctgFZC`v;@OC!bC2l>oE1{0?@JghZn@b{(qrwGN*QBb@OWn}aL9mNamQPsW8! z@x`DQRl3ClTqhBN0_p}V>jqoabgckZ!8}?A!U=k7(2HJxuvY>ba0OA{DG={!6SO&Q zY2!5SWIW>$N$s_PaYb70(98^jIjp3yO?uj$z$v-b)S#y|4b8TuCFeuUkFYg7Q_GJP z)~(V2X&qX=4uf}`ufuy3xBMt0%IC2jZA2MFHVHK!-yzOZCAI+5Jbh8oRV>aR@TP2W z$h`7MzM|+*E=+^akv+6H`_XxnIl8B!+w9LLR0iUURxJUE#Ja@B<8w-U>Hc3)pS#np z9=6#Xrudfm6{Q4k$|aIhEBmnPM+M%P$UjuO&Of9uuQaC`wED$h9)^wBHWX9)U{~?X zyA{AHG3`M3=tjgaDZ*ZWutSTz0^xu@_NFnrE0IhafkShhAk9h|+a%5I1Ww7-zKM#^ zK8YG!0A}40`yOh-O5gyl(8-LVZVj4~tI7dRJv}^!@nu~98!axV>0n$@)3Au`2CzP0 zQJ%G_4RU`Z3Z3gKQ&yoR23M72@1`Egt+#N2bKH8Pssl7X;wc(*O4u_{NbpY>5_Th0hvcDc$ zo`>09+WZ40n_ad({dk%&XEW%d?=r!&!av6$mza76gK_CjzlEy%RbL zPQvm!HF?$!g7omwvcv@!2N)|eYN zP2ZI9diNaHZa<_dBur~$Pg?B!Ot2o8eLqW*xazwCN5gOT_;FTKhMMV#RV#QxuU{>| z`s2C96G}}=>!kXw?&6TJ48*f~&~lu7tZ2}p-i-(NDwX`WR`g6REs%Y22L7F43)@n0Owreq%fDYMPa{^L@qsQ_-$3dfF zEd3B~5CF5)*{JI43!q1RkE*O_1Fc7rYIGrroNW@S&e~Cg1iJ<;C1l^?H11Mj-&%(X zyB5xU>%vf7Wp=nGq6Dw6LErivco%7A`YlcL2KrKK-|&E3aJ39BeT(D9qUpxaU9|12 zlEyN)s1_G!)t)3P1=!|F$ZEMgd>lu-f>m5?b*jNm;MP5{b)gXUTDVR19oh$rO?Ao- z&HgDpCAe*@kM{#bUDs<%w74WR4pl%TX)g2C zg@}fOHQpIJD4r;b_R39`#rINS*Y|Ki?yV*6%j{FQbok(cv|O5J*Bz{@5@k!O zmSKo2Y(Qr)=}0<(v=;)Y(cY-hjv}orHMFXRnufZZ6OWaO(}M+%MMa&Yz9lqH&muQ* zH@3rCBe&s4*xiL0QXWBLwns5JM(;~5@l9I54!XR{q{l8S<0cRq5_!g!230fK(L2Vb(5o3B5cwmMwQNM+~X&b z!YN4VY_#CB^`z!erC-*;!rSe96UHAcP1u2O0->eX84!T3!KRz+S{(D-3Y#E}xn@ZS z4PJg(VV7@}SO)A7w8VZ@fo*|K?YQn#-Ckk!-E-O(7vFU-uDyE*;|i7z#upfeu!igH z=kT$FYi@w&)Xm!2^-UWe&q}oYoQanBBt%r^tViCHzyjw^_ZM0+N^uKskcA2oa5MaIRd>Tt%*)D_0oawN#v;bk`jBN&h| zO!L0JlthezU0((uzI-zf?;DN%r>0y_v+*ZoGK~7T*6sh1>M1C4Jo?{BTt~Q#^gZUN ztA!iM!yv>ho&SS(kwDgd(RS`(4%u;jP+$lAr=>l@O{epY(7FhnlUY9D z!QIC7&5>Ze!9S&sF!aaJIJ#|D6^5j-qFLIe?a<{NZ_EJpGB7u;O2OQ=HAFR-3;(;) z6Gm0;OTUTFM@wZ{?9sQ%bnWLVy&P_j(=d$BZ%dxA!_&*|+#To3P zqFL?+Rvga)?f3Fp#$QN%-n4pp!|wN6JAeODWesRvK9(Dg`{-;J^CpkSZoV$Rg=RZ{ z{GW)OIrBEP6>qL?w>{%aOjk}!-5%=E;%_ui??<*F-n5*a_uAt?7N76pNsFFN`!?ww zq8n%}6vdlu;z`RfCJ~C_U5dW$_5J>aaPDMiwh1D5Fgy`{y_;Hj)XH9OAuZ_;Fzwg0cDCB5C$kC#ZqXi*Hi$abTg&ZvkIa&~MBrw}KDD2u2 zs0KaURS{Oe8ej{st+D;jo=PF zv%Lrqj}Lef?-}Pdc5oqBfp5z^8nbp1y48y0t#!m%C7X#^-8m(st_!JIEp0GdKgd7e z5B65%2k?(6z(Zy=2{mI$3kTfwxPj&nhcMR&j*`#sqAy?)&#z7Ol`+m^a((i`cX1+gQc38c#mGQK-+e{+=`atkf!ivVgprw!XUt-6RzCP(6 z($)3h^HBQnA$>A^2k^>!EExZ)^*b=bYlX6)(>s<)0iDCWiHn=jZ z7g7cfh8K1We1KJ5Nywb+-0>W5@Jy%h6*OFDLOgg!*(#Ga?eraRV0Za`IIkR)oF4NHV zG2T34eRIdr%zeABiE&IuVV$tXdt!%+Q)uvDq78R;8qC^4|A3t3zPEUKjxhORBexm@ zpwrAA(Gv8B8&G$7EPLG_GYr3C{Eg#Jd*W{lkN4(Y4K{~5_|yF{U;~Y*eb{0v?5s1} z(#LmXe$4KV>B}pg&feUD%B3YX@jBvoYIfv2ek7cdGSu!Ly2&=M(r|An>(^MvAXJT&?15xn-J_2d4%* z<0z8Po_R~oojG^pJc#pP&I375;yju21kPjI`dk+dcYJGn-t+*g=`yc<1GIkdty6ky z-iBb$UOR~9(}fg$GGXx63rfca;(jJWc%$Yk?2HW0AMEo7y}Xilbf9qXY48-RUwB6L z@=D)Oc`@%Ot95;-Wq;wD*u(k61#1Uy7Nrl{9cFWGY>%a(it$;SsdYNlltF0*FnM(V<+Dh+AG459;T?L%v=YTh568mRF6rSOm0kGwMyZs0J6G$+ zJo<2bA26CT_iVBQ`1l~;T$tSQMr)mH4w?ORWoyWVEggwbVIOOQmDuUAyX~m4{9(e_ z^vC4JMaSl$8oZkN_`>i4`@`ENob;1t)nX&zfo4x#KGt{%slS{FFVa2+8i^6h_=XD#rE_R&trmvwK{uq_-Y!xCecbbHaM(y_(ODknB6`O zvkgaMV-L`HIB}9}q+K}q7tWuJ?aqcU>XN5zMY#6D@W-?rU-)DzVEe9LHpblBhmGkl zjrIi9X!4vsz9gvG)sT3ih3is`#~7yL2txl`-IX|Mz5mByFH!KS&-?PFb=$Hx~HJwnI9 zS}57%wb@|X=Or!MK7XgN-OL}Z#jXUxG8%_vv_Y8|tyAnG**-`ASo3|X2^Y@z&Yflp zoa_X7E%4#_>1ez0b#}w+>}y_71ij-TcGp1gRgO~b zgZ;!VeQ0zi!;WR5QoSb|hIovQBto@n8o#7AW8)3Z%pB%V1 zIWTWld^_kcGw1fsz#Fb5XT@trhd1%o z-&CKt48xYnaCqlpINWO*4)>ZD&Prcs!vjq?Bke}5Otiue0HulBT^+PQ@UW4Jf7-x4q`iHk?|Hcjs4t4zV z&E~-0XZ*tU#B%ZHx$^Yg%p2kPF_<5dua^(E#~+N3Py1lUvUm=CEDY*k@{h(pb_MhZ zeO63fVK5p5+?P9Vv={!4R{j?79xfxixl?k%bd57y!5R!VxQ;I*hZ~6tPb?auMO?BN zSeY{{3mosjyD{&^3e{g_hdaXq;r=mNdTZ%0n@ay^98Cd^b&PtjXoHPmepnJqzCK{J z`*ah>@rK=}!xea+c`v}4HP}&IJm-0sGt$Br*WnLpG=i_Wfn7$BQsI3x5i5Qn2|9ZWv8~-W5AunH;AD#JpI)SaM!fOk_P+EHuD|BiRae zd9l9Oo2QT2+?hA~x5?H`hhmQNP_x%>?5JjAGn^lbQ^qTQzaf36!^}PN99U>g-1K6V zqOl<3jT2yWHbb6Vg^g6%K}r2y)c(=9Ts<5(iwr;sb1^%-Kj00#^`Y*8ClTu-UGEkP zmPxStqo!JJ*s^|$;&96hvr^i}VCz#C$2YRq;WWq8Sax}tdSvfth=@+^7i+Eah)FMP z=sd-jrtz!Fpzfhtm#NB zx6#J|SJnx``k3j!JYy641D)gM!1=>dq7mnh*7>`pZxhZJ0C}S^ENr-MHl#S#)_c@G z6qeb-^?~JqKgbuVOrLAJ!Y3~?5G}}hF>&RoE8^(S1i;xh@q0Je4%nGNXx_2kj}Jhu zAM`xdy!a~RW1Uey{LcR??96rBh=DNN=P}d^<~2Oh1%|r>0aB!MAuAg=fD9}oxb(Y6 z z7Blf&J&P({Kxf$MQr-$g7w@4??!svsGU`UcugYG0dHm3+KUgcqiu}u)}0+0*rAZ z&LXXq%?-wVkl6Z%rndpbM2u=oXFq8Uf)2y>+~0*I-abBaR}X1hTPM^Lnzocto-)}c zh15;yLYfFoc9lhWDrzGseqm^?fI=hs;5VwMnV*!D@YLbC!wctP)}lRtc*htgdxJHt z+(LnCwLRaHLjm;+)7fCy%niV1QBb;V`i(^sgN3Cl4vTt23gcV#HmH0WOL7!sO;+<( zE(xa_N@k*k6;%u=su<5i6ZVO3d`nYp4fDi@-GlPXd z8(3ki5ZXX6q&+%hRl|Dq2N+~5nkdbb7Dl}xnerCH_Wb^=+2i-8Z@(&@t|(kx% z{&MR>>m-m;;csLIG@jQ%&^YG`v?moW!2NyIx ITuJo{0P6H%asU7T literal 0 HcmV?d00001 diff --git a/research/pr5627-interface-invoice-audit/verify.py b/research/pr5627-interface-invoice-audit/verify.py new file mode 100644 index 0000000000..64af0bf9a7 --- /dev/null +++ b/research/pr5627-interface-invoice-audit/verify.py @@ -0,0 +1,211 @@ +#!/usr/bin/env python3 +"""Audit the emitted PR5627 word and its recursive invoice without source code imports. + +Ali Romman with substantial OpenAI Codex assistance. Apache-2.0. +""" +from collections import Counter +from copy import deepcopy +from fractions import Fraction +from functools import lru_cache +import gzip +import hashlib +import json +from pathlib import Path +import sys + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def spans(vectors): + values = {0} + for v in vectors: + need(type(v) is int and 0 < v < 512 and v not in values, 'binary basis') + values |= {x ^ v for x in tuple(values)} + return values + + +@lru_cache(None) +def coefficient(text): + q = Fraction(text) + need(q != 0 and q.denominator & (q.denominator-1) == 0, 'dyadic coefficient') + return q.numerator, q.denominator.bit_length()-1 + + +def replay(word): + public, owned = word['public'], word['owned_fields'] + n = public+owned + rows = [[int(i == j) for j in range(n)] for i in range(n)] + powers = [0]*n + frame = word['initial']+[None]*owned + chart = [spans(b) for b in word['frames']] + active = set(); peak = 0; births = 0; nonzero_clear = 0 + paid = Counter(); operations = Counter(); scalar = 0 + for pos, event in enumerate(word['program']): + op, dst = event[:2] + need(type(dst) is int and 0 <= dst < n, 'destination index') + operations[op] += 1 + if op == 'MOVE': + _, _, old, new, private = event + need(frame[dst] == old and private == (dst in active), 'MOVE state') + need(chart[new] < chart[old] if private else chart[old] < chart[new], 'MOVE nesting') + paid[abs(len(word['frames'][new])-len(word['frames'][old]))] += 1 + frame[dst] = new + continue + if op in ('INIT', 'CLEAR'): + need(dst >= public, 'public field erased') + if op == 'INIT': + need(dst not in active, 'duplicate INIT') + active.add(dst); births += 1; peak = max(peak, len(active)); frame[dst] = event[2] + else: + need(dst in active and frame[dst] == event[2], 'CLEAR state') + nonzero_clear += bool(any(rows[dst])); active.remove(dst); frame[dst] = None + rows[dst] = [0]*n; powers[dst] = 0; scalar += 2 + continue + num, exponent = coefficient(event[-2]); f = event[-1] + need(frame[dst] == f, 'scalar destination chart') + if op == 'SCALE': + need(abs(num) & (abs(num)-1) == 0, 'SCALE unit') + rows[dst] = [num*x for x in rows[dst]]; powers[dst] += exponent + scalar += 2*(abs(abs(num).bit_length()-1-exponent)+int(num < 0)) + else: + need(op in ('ADD', 'COPY'), 'opcode') + src = event[2] + need(type(src) is int and 0 <= src < n and src != dst and frame[src] == f, 'scalar source chart') + if op == 'COPY': + need(dst in active and not any(rows[dst]), 'COPY precondition') + rows[dst] = [num*x for x in rows[src]]; powers[dst] = powers[src]+exponent + else: + level = max(powers[dst], powers[src]+exponent) + left = 1 << (level-powers[dst]); right = num << (level-powers[src]-exponent) + rows[dst] = [left*x+right*y for x, y in zip(rows[dst], rows[src])]; powers[dst] = level + scalar += 2*(2+abs(num).bit_length()+abs(num).bit_count()+exponent) + while powers[dst] and not any(x & 1 for x in rows[dst]): + rows[dst] = [x//2 for x in rows[dst]]; powers[dst] -= 1 + need(not active and frame[:public] == word['final'], 'final charts and owned lifetimes') + live = set(word['live']); main = live | {x+112 for x in live} + need(len(live) == len(word['ports']) == 104 and len(main) == 208, 'main inventory') + for i, row in enumerate(rows): + expected = [0]*n + if i < public: + expected[i] = 1 << powers[i] + if i-112 in live: expected[i-112] = 1 << powers[i] + need(row == expected, f'endpoint row {i}') + helpers = Counter() + for i in range(public): + if i not in main: + a, b = word['initial'][i], word['final'][i] + need(chart[a] < chart[b], 'strict helper target') + helpers[len(word['frames'][b])-len(word['frames'][a])] += 1 + return dict(paid=dict(paid), helpers=dict(helpers), public_inputs=public, owned_fields=owned, owned_lifetimes=births, peak_owned_fields=peak, real_scalar_allowance=scalar, operations=dict(operations), endpoint_coefficients=n*n, nonzero_owned_clears=nonzero_clear, paid_rank_mass=sum(r*c for r,c in paid.items())) + + +def invoice(local, controller): + targets = Counter(); paid = Counter(); events = Counter() + for e in controller['physical_events']: + events[e[0]] += 1 + if e[0] == 'LOCAL': + need(e[3] is False, 'forward invocation') + targets.update(local['helpers']); paid.update(local['paid']) + elif e[0] == 'IDLE': paid[8*len(e[2])] += 208 + elif e[0] == 'QUERY_SHEAR': paid[1] += 104 + for t in controller['diagonal']: + targets[1+8*sum(t[1:])] += 104 + need((events['LOCAL'],events['QUERY_SHEAR'],events['IDLE']) == (18,15,15), 'caller census') + return dict(targets=dict(targets), paid=dict(paid), paid_calls=sum(paid.values()), productive_fields=sum(targets.values()), rank_mass_surplus=sum(r*c for r,c in targets.items())-sum(r*c for r,c in paid.items())) + + +def logarithm(x): + exponent = x.bit_length()-1 + def series(y): + total = 2*sum((y**(2*j+1)/ (2*j+1) for j in range(48)), Fraction(0)) + error = 2*y**97/(97*(1-y*y)) + return total, total+error + a, b = series(Fraction(1,3)) + c, d = series(Fraction(x-(1 << exponent), x+(1 << exponent))) + return exponent*a+c, exponent*b+d + + +@lru_cache(None) +def power(rank, kappa): + loglo, loghi = logarithm(rank) + def partial(x, degree): + term = Fraction(1); total = term + for i in range(1, degree+1): + term *= -x/i; total += term + return total + need(0 <= kappa*loghi < 1, 'alternating exponential range') + return rank*partial(kappa*loghi,17), rank*partial(kappa*loglo,16) + + +def margin(bill, kappa): + lower = upper = Fraction(0) + for rank in set(bill['targets']) | set(bill['paid']): + count = bill['targets'].get(rank,0)-bill['paid'].get(rank,0) + a,b = power(rank,kappa) + lower += count*(a if count >= 0 else b); upper += count*(b if count >= 0 else a) + need(lower <= upper, 'interval order') + scale = 10**24 + lo = lower.numerator*scale//lower.denominator + hi = -((-upper.numerator*scale)//upper.denominator) + return {'lower_numerator':lo,'upper_numerator':hi,'denominator':scale} + + +def reject(action): + try: action() + except ValueError: return + raise ValueError('invalid control accepted') + + +def run(): + for s in json.loads((HERE/'SOURCE-CONTEXT.json').read_text()): + need(hashlib.sha256((HERE/s['file']).read_bytes()).hexdigest() == s['sha256'], 'source bytes') + word = json.loads(gzip.decompress((HERE/'inputs/PR5627-WORD.json.gz').read_bytes())) + source = json.loads((HERE/'inputs/PR5627-RESULT.json').read_text()) + controller = json.loads((ROOT/'research/p104-productive-controller/CONTROLLER.json').read_text()) + local = replay(word) + for key, value in source['local'].items(): + actual = local[key] + if isinstance(actual,dict): actual = {str(k):v for k,v in actual.items()} + need(actual == value, 'source local result: '+key) + bill = invoice(local,controller) + for key,value in bill.items(): + if isinstance(value,dict): value = {str(k):v for k,v in value.items()} + need(value == source['complete_cost'][key], 'source complete bill: '+key) + intervals = {} + for label, number, sign in [('claim','.00310440546',1),('tested','.003104405465',1),('root_lower','.00310440547057',1),('root_upper','.00310440547058',-1)]: + interval = margin(bill,Fraction(number));need(interval['lower_numerator'] > 0 if sign == 1 else interval['upper_numerator'] < 0, 'raw crossing sign') + intervals[label] = interval + derivative_upper = Fraction(0) + for rank in set(bill['targets']) | set(bill['paid']): + count = bill['targets'].get(rank,0)-bill['paid'].get(rank,0) + loglo, loghi = logarithm(rank) + derivative_upper -= count*(power(rank,Fraction('.0034'))[0]*loglo if count >= 0 else rank*loghi) + need(derivative_upper < 0, 'unique raw crossing on the BIT interval') + derivative_bound = -((-derivative_upper.numerator*10**12)//derivative_upper.denominator) + controls = 0 + for name in ['missing_input_basis','wrong_scale','public_erasure','lost_owned_clear']: + bad = deepcopy(word) + if name == 'missing_input_basis': bad['program'].pop(next(i for i,e in enumerate(bad['program']) if e[0] == 'ADD')) + elif name == 'wrong_scale': + i = next(i for i,e in enumerate(bad['program']) if e[0] == 'SCALE');bad['program'][i][-2] = '2' + elif name == 'public_erasure': bad['program'].insert(0,['INIT',0,word['initial'][0]]) + else: bad['program'].pop(max(i for i,e in enumerate(bad['program']) if e[0] == 'CLEAR')) + reject(lambda: replay(bad)); controls += 1 + bad = deepcopy(local);bad['helpers'][2] += 1 + reject(lambda: need(invoice(bad,controller) == bill,'unremoved H2 target'));controls += 1 + bad = deepcopy(controller);bad['physical_events'].pop(next(i for i,e in enumerate(bad['physical_events']) if e[0] == 'IDLE')) + reject(lambda: invoice(local,bad));controls += 1 + return dict(status='PASS_PR5627_INTERFACE_INVOICE_AUDIT',local=local,complete_bill=bill,raw_intervals=intervals,raw_derivative_upper_numerator=derivative_bound,raw_derivative_denominator=10**12,rejection_controls=controls,source_code_imports=0,limits=['Native phases, physical caller execution, compiler and outer conditions are not replayed.','Owned CLEAR is the inherited erasure operation, not restoration of an arbitrary dirty input.','This is a separate implementation check, not independent human or formal acceptance.','No new kappa and no selected-frontier change.']) + + +if __name__ == '__main__': + result = json.loads(json.dumps(run(),sort_keys=True)) + if '--write' in sys.argv: (HERE/'RESULT.json').write_text(json.dumps(result,indent=2,sort_keys=True)+'\n') + else: need(result == json.loads((HERE/'RESULT.json').read_text()),'receipt mismatch') + print(result['status'])