From 9b03a68a84e99148cb2f5913b39d38ac999f4a39 Mon Sep 17 00:00:00 2001 From: Marcin Pawlowski Date: Tue, 4 Aug 2026 22:37:22 +0200 Subject: [PATCH] Add linkability, messaging redundancy and churn percolation to pd; report Extends the pd Blend simulator along two axes the deanonymization model opened up, adds the reports/blend/pd report of record, and fixes three correctness defects found while reviewing the result. Linkability over time (pd.linkability): - time to link an emitter ~ 30s*ln(1/(1-alpha))/(stake*q): inversely proportional to stake, so a 5% staker is linked in ~2 days and a 0.001% staker only after ~27 years; - time to certify a node's stake >= theta from the count of attributable observations (relative precision ~1/sqrt(N)): sizing a node costs 100-400x more than identifying it, and sub-0.1% stake is practically unlearnable. Both are closed forms over the exact deanonymization rates and a stake-proportional 30 s emission cadence, checked against a Monte-Carlo of the emission process in verify. Messaging redundancy (R independent cascades per emission, R = 1..4): - `redundancy` knob threaded through config/rng/propagation/engine/metrics/ sweep; a node receives from whichever cascade reaches it first, so arrival times combine element-wise. Delivery and capture both follow 1-(1-x)^R, so redundancy trades reliability against anonymity and divides time-to-link by ~R. Measured: delivery 0.34 -> 0.81 at 30% churn for R = 1 -> 4, while a 1%-staker's time to link falls 10 d -> 2.5 d. - Redundancy buys NO coverage: a cascade only delivers if the sender could already route to its relay, so every delivered cascade floods the sender's own component. Coverage is flat in R to four decimals at every degree. - Near the percolation threshold the cascades fail together rather than independently, so redundancy under-delivers against 1-(1-p1)^R there. Churn percolation (configs/percolation.yaml, verify check 7): - the flood only crosses responsive nodes, so it lives on the responsive sub-graph -- site percolation on a d-regular graph. A network survives churn only up to u_c = 1 - 1/(degree-1); measured collapse lands on the predicted threshold for every degree (3 -> 0.50, 6 -> 0.80, 16 -> 0.93), which inverts into the sizing rule degree > 1 + 1/(1-u). Correctness fixes: - redundancy delay used the fastest cascade's own full delay, which over-states it (min-max vs max-min); now the element-wise earliest arrival, reducing exactly to the single-cascade model at R = 1 (test); - the "redundancy improves coverage" claim was false in both the report and the simulator README -- removed and replaced with the measured result; - per-hop latency is degree-dependent (1.5 s at degree 16 to 2.7 s at degree 3), not a flat 1.6 s; and the worst-case observation figure was averaged over degrees -- at degree 8 and f_adv = 0.2 it is 0.83 -> 1.000. Statistics: round counts raised for resolution rather than speed -- 8000 rounds per cell in the main sweep, 9600 in the redundancy study, 6400 in the percolation study, giving SEM <= 0.009 on every delivery rate and <= 0.04 s on every delay mean. The previous redundancy grid (144 rounds/cell) produced a non-monotonic delivery curve; it is now monotonic and within 0.015 of theory. Adversary and deanonymization metrics remain closed-form and exact. reports/blend/pd: the report of record -- peering-degree trade-offs across speed, observation, eclipse, deanonymization and reliability, plus the time-to-link, stake-inference, redundancy and churn-threshold sections, with 21 figures of record and an explicit sampling-error statement. Co-Authored-By: Claude Opus 5 (1M context) --- reports/blend/pd/README.md | 301 ++++++++++++++++++ .../pd/report-figures/01_delay_vs_degree.png | Bin 0 -> 147336 bytes .../report-figures/02_delay_vs_blendhops.png | Bin 0 -> 177051 bytes .../blend/pd/report-figures/03_delay_vs_N.png | Bin 0 -> 129186 bytes .../pd/report-figures/04_observed_vs_fadv.png | Bin 0 -> 141020 bytes .../pd/report-figures/05_eclipse_vs_fadv.png | Bin 0 -> 115087 bytes .../report-figures/06_observed_vs_degree.png | Bin 0 -> 130718 bytes .../report-figures/07_eclipse_vs_degree.png | Bin 0 -> 107051 bytes .../pd/report-figures/08_heatmap_observed.png | Bin 0 -> 67646 bytes .../pd/report-figures/09_heatmap_eclipse.png | Bin 0 -> 70939 bytes .../10_delivery_vs_unresponsive.png | Bin 0 -> 226681 bytes .../11_coverage_vs_unresponsive.png | Bin 0 -> 127991 bytes .../report-figures/12_deanon_vs_blendhops.png | Bin 0 -> 213218 bytes .../13_full_deanon_vs_blendhops.png | Bin 0 -> 207418 bytes .../report-figures/14_full_deanon_vs_fadv.png | Bin 0 -> 152990 bytes .../15_full_deanon_vs_degree.png | Bin 0 -> 119931 bytes .../16_time_to_link_vs_stake.png | Bin 0 -> 160541 bytes .../17_time_to_link_vs_stake_redundancy.png | Bin 0 -> 174585 bytes .../18_time_to_stake_vs_threshold.png | Bin 0 -> 167904 bytes .../report-figures/19_redundancy_tradeoff.png | Bin 0 -> 110830 bytes .../20_coverage_percolation.png | Bin 0 -> 227783 bytes .../21_redundancy_time_to_link.png | Bin 0 -> 169464 bytes tools/simulators/blend/pd/Makefile | 8 +- tools/simulators/blend/pd/README.md | 19 ++ .../simulators/blend/pd/configs/default.yaml | 6 +- .../blend/pd/configs/percolation.yaml | 24 ++ .../blend/pd/configs/redundancy.yaml | 23 ++ tools/simulators/blend/pd/src/pd/adversary.py | 33 +- tools/simulators/blend/pd/src/pd/config.py | 8 +- tools/simulators/blend/pd/src/pd/engine.py | 29 +- .../simulators/blend/pd/src/pd/linkability.py | 80 +++++ tools/simulators/blend/pd/src/pd/metrics.py | 13 +- .../blend/pd/src/pd/plotting/figures.py | 224 +++++++++++++ .../blend/pd/src/pd/plotting/make_figures.py | 9 +- .../simulators/blend/pd/src/pd/propagation.py | 87 +++-- tools/simulators/blend/pd/src/pd/rng.py | 4 +- tools/simulators/blend/pd/src/pd/sweep.py | 7 +- tools/simulators/blend/pd/src/pd/verify.py | 77 +++++ .../simulators/blend/pd/tests/test_config.py | 3 +- .../simulators/blend/pd/tests/test_deanon.py | 8 +- .../blend/pd/tests/test_linkability.py | 85 +++++ .../blend/pd/tests/test_propagation.py | 109 ++++++- 42 files changed, 1080 insertions(+), 77 deletions(-) create mode 100644 reports/blend/pd/README.md create mode 100644 reports/blend/pd/report-figures/01_delay_vs_degree.png create mode 100644 reports/blend/pd/report-figures/02_delay_vs_blendhops.png create mode 100644 reports/blend/pd/report-figures/03_delay_vs_N.png create mode 100644 reports/blend/pd/report-figures/04_observed_vs_fadv.png create mode 100644 reports/blend/pd/report-figures/05_eclipse_vs_fadv.png create mode 100644 reports/blend/pd/report-figures/06_observed_vs_degree.png create mode 100644 reports/blend/pd/report-figures/07_eclipse_vs_degree.png create mode 100644 reports/blend/pd/report-figures/08_heatmap_observed.png create mode 100644 reports/blend/pd/report-figures/09_heatmap_eclipse.png create mode 100644 reports/blend/pd/report-figures/10_delivery_vs_unresponsive.png create mode 100644 reports/blend/pd/report-figures/11_coverage_vs_unresponsive.png create mode 100644 reports/blend/pd/report-figures/12_deanon_vs_blendhops.png create mode 100644 reports/blend/pd/report-figures/13_full_deanon_vs_blendhops.png create mode 100644 reports/blend/pd/report-figures/14_full_deanon_vs_fadv.png create mode 100644 reports/blend/pd/report-figures/15_full_deanon_vs_degree.png create mode 100644 reports/blend/pd/report-figures/16_time_to_link_vs_stake.png create mode 100644 reports/blend/pd/report-figures/17_time_to_link_vs_stake_redundancy.png create mode 100644 reports/blend/pd/report-figures/18_time_to_stake_vs_threshold.png create mode 100644 reports/blend/pd/report-figures/19_redundancy_tradeoff.png create mode 100644 reports/blend/pd/report-figures/20_coverage_percolation.png create mode 100644 reports/blend/pd/report-figures/21_redundancy_time_to_link.png create mode 100644 tools/simulators/blend/pd/configs/percolation.yaml create mode 100644 tools/simulators/blend/pd/configs/redundancy.yaml create mode 100644 tools/simulators/blend/pd/src/pd/linkability.py create mode 100644 tools/simulators/blend/pd/tests/test_linkability.py diff --git a/reports/blend/pd/README.md b/reports/blend/pd/README.md new file mode 100644 index 0000000..3f99baf --- /dev/null +++ b/reports/blend/pd/README.md @@ -0,0 +1,301 @@ +# Peering degree in the Blend network — a Monte-Carlo study + +*Static-graph network simulation of the Blend message cascade. Simulator: [`pd`](../../../tools/simulators/blend/pd). All delays in **milliseconds**; the free-running mix clock's maximum interval (`max_blend_delay`) is in **whole seconds**. Adversary and deanonymization metrics are exact at every network size; propagation is Monte-Carlo over random senders.* + +This report quantifies how a node's **peering degree** — the number of symmetric peers it keeps — trades off four properties of the Blend network at once: how fast a message propagates, how much of the network an adversary observes, how often a message is deanonymized, and how reliably messages are delivered when a fraction of nodes go dark. The headline is a single tension: **raising the peering degree improves propagation speed, eclipse resistance, and churn resilience, but *worsens* observation and sender deanonymization.** The anonymity axis has its own, degree-independent control — the **blend-path length** — so the two knobs separate cleanly: set the degree for the transport goals, set the path length for the anonymity goal. Two further questions follow from the deanonymization rates: *how long* an adversary needs to link an emitter to its messages and to learn its stake — which scales inversely with the node's own stake — and how **messaging redundancy** (sending each message over several independent cascades) trades reliability against anonymity, amplifying both by the very same factor. + +## Headline + +A peering degree of **6–8** is the operating sweet spot for the sizes tested (10³–10⁶ nodes). Below 6, propagation is slow, eclipse is non-negligible at high adversary fractions, and — the sharpest failure — the responsive sub-network *shatters* under heavy churn: a degree-`d` network survives churn only up to `u_c = 1 − 1/(d − 1)`, which is 50 % at degree 3 but 80 % at degree 6 and 86 % at degree 8. Above ~8 the speed, eclipse, and churn gains flatten while observation and full-deanonymization exposure keep climbing, so there is no reason to go higher for transport alone. Anonymity is bought separately, with the number of blend hops: the whole-path capture rate is exactly `f_adv^blend_hops` and does not depend on degree. + +| knob | recommended | why | +|---|---|---| +| peering degree | **6–8** | speed, eclipse resistance, and churn resilience saturate here; observation/deanon exposure rises past it (§3.1, §3.3, §3.5) | +| blend-path length | **set from the anonymity target**: `blend_hops ≥ ln ε / ln f_adv` to hold whole-path capture ≤ ε | the degree-independent anonymity lever; costs ~1.5–2.7 s latency (degree-dependent) and a `(1−u)` reliability factor per hop (§3.4, §3.2, §3.5) | +| operating churn | pick the degree from the churn to be survived: **`u_c = 1 − 1/(degree − 1)`** (degree 6 → 80 %, degree 8 → 86 %) | site percolation of the responsive sub-graph (§3.5) | +| messaging redundancy | **R = 1 unless reliability demands more** — each extra copy multiplies *both* delivery and capture by `1−(1−x)^R` | redundancy is reliability and exposure in one dial; it cuts time-to-link ≈ R× (§3.8) | + +A node's exposure is not only *whether* it is deanonymized but *how soon*: if each 30 s slot one node emits with probability equal to its stake, the time to link an emitter is `≈ 30 s · ln(1/(1−α)) / (stake · f_adv^blend_hops)` — **inversely proportional to its stake** — so high-stake nodes are identified in days and the smallest holders effectively never (§3.6). The same event stream lets an adversary *estimate* a node's stake, but pinning it below ~0.1 % takes over a decade and below ~0.01 % centuries (§3.7). + +--- + + +## 1. Executive summary + +**The setting.** In the Blend network a node forwards a message along a short **blend path** of relay nodes — each a free-running timed-release mix — and the last relay floods it to the whole network. Every node keeps a fixed number of symmetric peers (its *peering degree*), and that single number is a design choice with consequences that pull in opposite directions. This study builds a seeded, exactly *d*-regular peer graph, drives many random-sender cascades across it, and places adversarial and unresponsive nodes on it, at network sizes from a thousand to a million. + +**What the axes show** + +1. **Propagation speed improves with degree, with strong diminishing returns.** The full delay of a 3-hop cascade at 100 000 nodes falls from 10.3 s at degree 3 to 5.0 s at degree 16, but most of the gain is spent by degree 6–8 (6.3 s → 5.8 s); the last doublings barely move it. The multi-second total is dominated by the blend path's *mixing* waits, not by the network flood: at degree 8 the final flood reaches 99 % of a 100 000-node network in 0.62 s, and the total delay grows only 18 % across a hundred-fold increase in network size (§3.1, §3.2). + +2. **Observation rises with degree; eclipse falls with it.** With a fraction `f_adv` of adversarial peers placed at random, the share of honest nodes with at least one adversarial peer (**observed**) is `1 − (1 − f_adv)^degree` — it *increases* with degree (at `f_adv = 0.2`: 0.49 at degree 3, 0.83 at degree 8, 0.97 at degree 16). The share whose *every* peer is adversarial (**eclipsed**) is `f_adv^degree` — it *vanishes* with degree (at `f_adv = 0.5`: 0.125 at degree 3, 0.004 at degree 8, ~0 by degree 12). A worst-case (greedy-coverage) placement raises observation sharply above random — at degree 8 and `f_adv = 0.2` it takes it from 0.83 to **1.000**, meaning *every* honest node ends up with an adversarial peer (§3.3). + +3. **Deanonymization is governed by path length, not degree.** A message is *deanonymized* when its whole blend path is adversarial; because relays are chosen blind to who is adversarial, this rate is the exact hypergeometric `≈ f_adv^blend_hops` — independent of peering degree, and driven down exponentially by lengthening the path. It is *fully* deanonymized when, in addition, the honest sender is directly peered with an adversary; that adds the `observed` factor, so full deanonymization — unlike whole-path capture — **rises with degree** and is amplified by a worst-case placement (§3.4). + +4. **Reliability degrades with churn; degree buys back coverage.** With a fraction `u` of unresponsive nodes that relay nothing, a message survives its cascade only if every relay forwards, so the delivery rate is `≈ (1 − u)^blend_hops` — longer paths are far more fragile. Unresponsive nodes are routing holes that can strand pockets during the final flood; a higher degree supplies redundant paths that keep coverage near-total. The effect is a genuine percolation threshold with a closed form: the flood travels only over the responsive sub-graph, which is site percolation on a `d`-regular graph and keeps a giant component only up to `u_c = 1 − 1/(degree − 1)`. Degree 3 therefore dies at exactly 50 % churn, degree 6 survives to 80 % and degree 8 to 86 % — each measured collapse landing on its predicted threshold (§3.5). + +5. **How fast an emitter is linked scales inversely with its stake.** Only a *linkable* node — one with ≥ 1 adversarial peer, a fraction `1 − (1 − f_adv)^degree` of nodes; the rest are structurally unlinkable — can be tied to a message, and it is, the first time one of its emissions travels a wholly-adversarial cascade (per-emission probability `q = f_adv^blend_hops`). Since a node emits at a rate equal to its stake, the time to link it with confidence α is `≈ 30 s · ln(1/(1−α)) / (stake · q)`. At `f_adv = 0.2`, 3 hops, degree 8, a 5 %-stake node is linked within ~2 days (α = 0.9), a 0.1 % node within ~100 days, and a 0.001 % node only after ~27 years (§3.6). Counting the same events *estimates* the node's stake, but pinning it to ±10 % below ~0.1 % stake takes over a decade and below ~0.01 % centuries — fine-grained stake is practically unlearnable (§3.7). + +6. **Messaging redundancy is reliability and exposure in one dial.** Sending each message over `R` independent cascades delivers it if *any* cascade survives — `delivery = 1 − (1 − (1 − u)^blend_hops)^R` — but captures it if *any* cascade is adversarial — `deanon = 1 − (1 − f_adv^blend_hops)^R`. Both obey the same law, so redundancy recovers delivery *and* speeds linking by ≈ `R×` together; it cannot buy reliability without spending anonymity (§3.8). + +**The tension, in one line.** Axes 1, 2-eclipse, and 4 all want *more* degree; axis 2-observation and axis 3-full-deanonymization want *less*. Because whole-path deanonymization (axis 3) depends only on the blend-path length, the resolution is to raise the degree to where speed, eclipse, and churn saturate (6–8) and to control anonymity independently through the number of blend hops. Messaging redundancy (finding 6) does not escape the trade — it moves reliability and anonymity together, never apart — and time itself is an axis: exposure is a rate, and a high-stake node accumulates it fastest (finding 5). + +*Method note: the peer graph is a deterministic, exactly d-regular matching-union reconstructible from one seed; the adversary observation/eclipse counts and both deanonymization rates are computed in closed form and are exact at every N (including 10⁶); propagation delays are Monte-Carlo over random senders (200 rounds × 8 topologies per cell). Delays fold a geographic link base (15–200 ms), an exponential transport jitter, and a per-node processing lag ({10, 50, 100} ms); mixing is the residual wait to a relay's next free-running release on a Uniform{0…3}-second clock.* + +--- + + +## 2. Model + +All delays are in milliseconds; the mix clock's maximum interval is in whole seconds. + +**Peer graph.** A seeded random **d-regular** graph over a globally known node list: every node has exactly `degree` symmetric peers, and the whole graph is reconstructed identically by everyone from one global seed. It is realized as a vectorized union of `degree` random perfect matchings (simple, low-diameter, scalable to 10⁶). The graph is a pure function of the topology seed and is identical across every adversary and propagation setting measured on it. + +**Blend cascade (propagation).** Each round, a sender routes a message along a path of `blend_hops` relays — each a free-running timed-release mix — and the last relay floods it to the whole network. A transport leg between two nodes is the **directed shortest path** with edge weight `base(u,v) + Exp(jitter) + processing(u)`: a geographic base latency (metro 15 → antipodal 200 ms), an exponential transport jitter (mean 5 ms), and the relaying node's fixed processing lag (drawn once per node from {10, 50, 100} ms at {0.5, 0.4, 0.1}). At each relay the message waits the **residual** to that relay's next release on a free-running clock whose intervals are Uniform{0…`max_blend_delay`} seconds; the final flood is plain transport. The **full delay** is the sum of the transport legs, the per-hop mixing waits, and the broadcast to the last node. + +**Unresponsive nodes.** A random fraction `unresponsive_frac` of the population relays nothing — their outgoing edges are removed, so nothing routes *through* them, though they can still *receive* as a leaf. Relays are drawn from the whole node list **blind to responsiveness** (a sender cannot know who is up), so a message dies if any relay on its path is unresponsive. This axis affects propagation only. + +**Adversary.** A fraction `f_adv` of nodes are adversarial, placed either at random (average case) or by a greedy worst-case strategy (the security *envelope*, characterized at N ≤ 10⁵). An honest node is **observed** if it has ≥ 1 adversarial peer and **eclipsed** if *all* its peers are adversarial; both are counted exactly by one sparse reduction over the graph. + +**Deanonymization.** Tying propagation to the adversary. Relays are chosen blind to who is adversarial, so the probability that a message's *whole* blend path is adversarial — **deanonymization**, the adversary owning the cascade end-to-end — is the exact hypergeometric `C(n_adv, blend_hops) / C(N−1, blend_hops) ≈ f_adv^blend_hops`, depending only on the adversary *count*, not the placement or the degree. Multiplying by the fraction of honest nodes with ≥ 1 adversarial peer (`observed_frac`) gives **full deanonymization** — the honest sender is additionally exposed, tying the message to its originator. Both are exact at every N. + +--- + + +## 3. Findings + +Unless noted, propagation figures are at N = 100 000 with `max_blend_delay = 3` s and no churn; adversary and deanonymization figures span N up to 10⁵ with the worst-case envelope (random-placement metrics are additionally exact at 10⁶). + + +### 3.1 Propagation speed vs peering degree + +Full cascade delay falls steeply from low degree and then flattens. At N = 100 000, `max_blend_delay = 3` s: + +| blend_hops | d = 3 | 4 | 6 | 8 | 12 | 16 | +|---|---|---|---|---|---|---| +| 1 | 4.8 s | 3.5 | 2.7 | 2.4 | 2.1 | 1.9 | +| 2 | 7.5 | 5.6 | 4.5 | 4.0 | 3.7 | 3.5 | +| 3 | 10.3 | 7.8 | 6.3 | 5.8 | 5.2 | 5.0 | +| 5 | 15.7 | 12.0 | 9.9 | 9.1 | 8.4 | 8.0 | + +Going from degree 3 to 6 removes ~40 % of the 3-hop delay; from 8 to 16 removes ~13 %. Degree 6–8 captures nearly all of the achievable speed-up (**Fig 1**). Delay grows close to linearly in the number of blend hops, and the per-hop cost is remarkably constant *within* a degree while falling *across* degrees — 2.7 s at degree 3, 2.1 s at 4, 1.8 s at 6, 1.7 s at 8, and 1.5 s at 12–16, each holding to within 0.1 s over every hop added (**Fig 2**). About 1.2 s of that is the mixing wait — the mean residual to the next release of a Uniform{0…3}-second free-running clock, which is the same at every degree — and the remainder is one more transport leg, which is exactly what a higher degree shortens. The floor is therefore the mixing, not the network: even at infinite degree a hop could not cost less than ~1.2 s. + +![Fig 1 — full delay vs peering degree](report-figures/01_delay_vs_degree.png) +*Fig 1 — Blend full delay vs peering degree, one line per blend-path length (N = 100 000, `max_blend_delay = 3` s). The curve is convex: most of the gain is realised by degree 6–8.* + + +### 3.2 Delay composition and network-size scaling + +The multi-second total is spent in the blend path, not the flood. At degree 8, 3 hops, N = 100 000: the path (transport legs + mixing) is 5.05 s while the final flood to the whole network is only 0.70 s — seven eighths of the delay is the cascade, one eighth is reaching everybody. The flood reaches 50 / 90 / 99 % of nodes in 0.52 / 0.58 / 0.62 s, so the last percent of the network costs only ~100 ms more than the first half. The flood is also what a higher degree accelerates most — 99 %-coverage time falls from 1.90 s at degree 3 to 0.41 s at degree 16. And the total is nearly flat in network size: at degree 8, 3 hops it is 4.87 s at 1 000 nodes, 5.27 s at 10 000, and 5.75 s at 100 000 — an 18 % rise for a hundred-fold size increase, because the flood grows only logarithmically in N while the fixed mixing waits dominate (**Fig 3**). + +![Fig 3 — full delay vs network size](report-figures/03_delay_vs_N.png) +*Fig 3 — Blend full delay vs network size N (log-x, degree lines; 3 hops, `max_blend_delay = 3` s). Near-flat scaling: the seconds-scale mixing waits dominate and the flood grows only ~log N.* + + +### 3.3 Adversary observation and eclipse + +With random placement the two structural metrics follow their closed forms exactly. **Observed** — an honest node with ≥ 1 adversarial peer — is `1 − (1 − f_adv)^degree` and rises with degree (N = 100 000): + +| f_adv | d = 3 | 4 | 6 | 8 | 12 | 16 | +|---|---|---|---|---|---|---| +| 0.05 | 0.14 | 0.19 | 0.27 | 0.34 | 0.46 | 0.56 | +| 0.10 | 0.27 | 0.34 | 0.47 | 0.57 | 0.72 | 0.82 | +| 0.20 | 0.49 | 0.59 | 0.74 | 0.83 | 0.93 | 0.97 | +| 0.33 | 0.70 | 0.80 | 0.91 | 0.96 | 0.99 | 1.00 | + +**Eclipse** — every peer adversarial — is `f_adv^degree` and *falls* with degree, negligible beyond low degree: at `f_adv = 0.5` it is 0.125 at degree 3, 0.004 at degree 8, and ~0 by degree 12; at `f_adv = 0.33` it is already 0.036 at degree 3 and ~0 by degree 8. **A degree of 6–8 makes eclipse practically impossible even against a large adversary** (**Fig 7**). A worst-case greedy-coverage placement pushes observation far above random, and at a useful degree it saturates. At degree 8: `f_adv = 0.1` takes 0.570 → 0.766, and `f_adv = 0.2` takes 0.832 → **1.000** — one adversarial node in five, placed well, observes *every* honest node. At degree 4 the same placement gives 0.590 → 0.840 at `f_adv = 0.2` and reaches 1.000 by `f_adv = 0.33`. So observation must be planned against the worst-case envelope, where it is effectively total for any adversary worth worrying about, while eclipse can be planned against the (already tiny) random rate. This is also why full deanonymization equals the whole-path rate under a worst-case placement (§3.4): the `observed_frac` factor is simply 1. + +![Fig 7 — eclipse vs degree](report-figures/07_eclipse_vs_degree.png) +*Fig 7 — Honest eclipse fraction vs peering degree (random placement, N = 100 000). Eclipse collapses with degree; by degree 6–8 it is negligible even at `f_adv = 0.5`.* + +![Fig 8 — observed heatmap](report-figures/08_heatmap_observed.png) +*Fig 8 — Observed fraction over degree × adversary fraction. Observation grows in **both** directions — the cost of a higher degree.* + + +### 3.4 Deanonymization + +Because relays are drawn blind to who is adversarial, the whole-path-adversarial rate is exactly `f_adv^blend_hops` — degree- and placement-independent — and drops by a factor of `f_adv` per hop: + +| f_adv | 1 hop | 2 | 3 | 5 | +|---|---|---|---|---| +| 0.10 | 0.100 | 0.010 | 0.0010 | 0.00001 | +| 0.20 | 0.200 | 0.040 | 0.0080 | 0.00032 | +| 0.33 | 0.330 | 0.109 | 0.0359 | 0.0039 | +| 0.50 | 0.500 | 0.250 | 0.125 | 0.031 | + +So the blend-path length is the anonymity lever, and the number of hops needed to hold whole-path capture below a target ε is `blend_hops ≥ ln ε / ln f_adv`: to reach ε = 0.01 takes 3 hops at `f_adv = 0.2`, 5 hops at `f_adv = 0.33`, and 7 hops at `f_adv = 0.5` (**Fig 12**). Each hop, though, costs 1.5–2.7 s of latency depending on the degree (§3.1) and a `(1 − u)` reliability factor (§3.5) — the price of anonymity. + +**Full** deanonymization adds the requirement that the honest sender is itself peered with an adversary, i.e. multiplies by `observed_frac`. Unlike whole-path capture, this **rises with degree** (2 hops, random placement): at `f_adv = 0.33` it climbs from 0.076 at degree 3 to 0.109 at degree 16 (approaching the whole-path ceiling of `0.33² = 0.109` as the sender becomes almost surely observed); at `f_adv = 0.5` it climbs from 0.219 to 0.250. A worst-case-coverage placement drives the `observed` factor up toward 1, pushing full deanonymization to the whole-path ceiling (**Fig 14**, **Fig 15**). This is the sharp form of the tension: a higher degree that speeds propagation and defeats eclipse *also* makes the sender almost certainly exposed whenever the path is captured. + +![Fig 12 — deanonymization vs path length](report-figures/12_deanon_vs_blendhops.png) +*Fig 12 — Whole-path deanonymization rate vs blend-path length, one line per `f_adv` (log-y). Solid = simulated, dashed = the analytic `f_adv^blend_hops`; path length drives it down exponentially, independent of degree.* + +![Fig 15 — full deanonymization vs degree](report-figures/15_full_deanon_vs_degree.png) +*Fig 15 — Full deanonymization rate vs peering degree, per `f_adv` (2 hops, log-y). Full deanonymization **rises** with degree (dashed = the degree-flat whole-path rate): more peers make the sender almost surely touch the adversary.* + + +### 3.5 Reliability under churn + +With a fraction `u` of unresponsive nodes, a message survives only if every relay on its (responsiveness-blind) path forwards, so the delivery rate tracks `(1 − u)^blend_hops` — and longer paths are much more fragile (N = 100 000, degree 8): + +| blend_hops | u = 0.05 | 0.10 | 0.20 | 0.30 | 0.50 | +|---|---|---|---|---|---| +| 1 | 0.947 | 0.895 | 0.798 | 0.701 | 0.494 | +| 2 | 0.895 | 0.815 | 0.642 | 0.488 | 0.245 | +| 3 | 0.862 | 0.729 | 0.510 | 0.339 | 0.121 | +| 5 | 0.774 | 0.591 | 0.331 | 0.166 | 0.030 | + +Every entry sits within 0.007 of `(1 − u)^blend_hops` (SEM ≤ 0.009), so the law is exact to measurement precision in this regime. This compounds with the anonymity lever of §3.4: a 5-hop path that holds deanonymization to a few per mille also loses 41 % of messages at 10 % churn and 97 % at 50 % churn (**Fig 10**). The two are directly opposed — every hop bought for anonymity is paid for in delivery — which caps how long a usable path can be at a given churn level. + +The second churn effect is on **coverage**: unresponsive nodes still receive but do not relay, so they are routing holes that can strand pockets during the final flood. Here a higher degree is decisive, and not gradually — **the collapse has a threshold, and it is exactly predictable.** Because unresponsive nodes relay nothing, the network that actually carries a flood is the sub-graph induced on the responsive nodes, and that is textbook *site percolation* on a random `d`-regular graph, whose giant component survives only while the responsive fraction exceeds `1/(degree − 1)`. The network therefore tolerates churn up to + +**`u_c = 1 − 1/(degree − 1)`** + +and shatters above it. Walking the churn to 90 % (N = 100 000, single hop, 6 400 rounds per cell) the measured flood coverage collapses at exactly that point for every degree: + +| degree | `u_c` | u = 0.3 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | +|---|---|---|---|---|---|---|---| +| 3 | **0.50** | 0.92 | **0.01** | 0.00 | 0.00 | 0.00 | 0.00 | +| 4 | **0.67** | 0.99 | 0.85 | 0.54 | **0.00** | 0.00 | 0.00 | +| 6 | **0.80** | 1.00 | 0.98 | 0.93 | 0.75 | **0.03** | 0.00 | +| 8 | **0.86** | 1.00 | 1.00 | 0.98 | 0.92 | 0.62 | **0.00** | +| 12 | **0.91** | 1.00 | 1.00 | 1.00 | 0.99 | 0.90 | **0.20** | +| 16 | **0.93** | 1.00 | 1.00 | 1.00 | 1.00 | 0.97 | **0.64** | + +Every degree holds essentially total coverage until its own threshold and then falls off a cliff at it (bold; **Fig 20**) — the last grid point below `u_c` still delivers to most of the network, the first point at or above it delivers to almost none. The collapse is sharp, not gradual, so a network does not degrade gracefully into heavy churn: it works, and then it does not. (This study is an independent run from the one behind the delivery table above; where the two overlap they agree to ≤ 0.01 — degree 4 at `u = 0.5` gives 0.85 in both — which is a useful cross-check on the whole propagation path.) + +This also explains the one badly-behaved cell in the study. Degree 3 at `u = 0.5` sits *exactly on its critical point*, where the giant component is famously bimodal — across eight topologies, five delivered to no one at all and three to 0.3–8.6 % of the network. No amount of extra sampling converges that mean, because it is a critical point rather than a noisy measurement (§5). Hence the design rule is stated as a threshold, not a coverage number: **degree 3 dies at 50 % churn, degree 6 survives to 80 %, degree 8 to 86 %.** + +The threshold also bounds the delivery law of the previous table. `(1 − u)^blend_hops` assumes the legs are routable, which holds while `u` is comfortably below `u_c`: at degree 8 measured single-hop delivery is 0.494 against a predicted 0.5 at `u = 0.5`, but only 0.078 against 0.2 at `u = 0.8` as the threshold approaches, and 0 beyond it. **Below the percolation threshold the delivery law holds; above it, delivery does not merely decay — it stops.** + +![Fig 10 — delivery vs unresponsive fraction](report-figures/10_delivery_vs_unresponsive.png) +*Fig 10 — Message delivery rate vs unresponsive fraction, one line per blend-path length (N = 100 000, degree 8); dashed = `(1 − u)^blend_hops`. Longer paths are much more fragile to churn.* + +![Fig 20 — churn percolation](report-figures/20_coverage_percolation.png) +*Fig 20 — Coverage across the percolation threshold, churn walked to 90 % (N = 100 000, single hop). Each degree's dotted vertical is its predicted `u_c = 1 − 1/(degree − 1)`; every curve falls off its own mark.* + + +### 3.6 Time to link — how fast an emitter is deanonymized + +Exposure is a *rate*, not a one-off. Model traffic as: every 30 s one node network-wide emits a message, chosen with probability proportional to its stake, so a node of stake fraction `s` emits with probability `s` per slot. Only a node with at least one adversarial peer — the **linkable set**, a fraction `observed_frac = 1 − (1 − f_adv)^degree` of the network (0.83 at `f_adv = 0.2`, degree 8) — can ever be tied to a message this way; a node with no adversarial peer is structurally unlinkable. A linkable node is *linked* the first time one of its emissions traverses a wholly-adversarial cascade, which happens per emission with probability `q = f_adv^blend_hops` (the whole-path rate of §3.4; the sender-peered condition is already met for a linkable node). Attributable observations therefore arrive as a Bernoulli(`s·q`)-per-slot process, and the time to have linked the node with probability α is + +`T_link(α) = 30 s · ⌈ln(1−α) / ln(1 − s·q)⌉ ≈ 30 s · ln(1/(1−α)) / (s·q)` — **inversely proportional to the node's stake.** + +At `f_adv = 0.2`, `blend_hops = 3`, degree 8 (`q = 0.2³ = 0.008`): + +| stake `s` | α = 0.5 | α = 0.9 | α = 0.99 | +|---|---|---|---| +| 5 % | 0.6 d | 2.0 d | 4.0 d | +| 1 % | 3.0 d | 10.0 d | 20.0 d | +| 0.5 % | 6.0 d | 20.0 d | 40.0 d | +| 0.1 % | 30.1 d | 99.9 d | 199.9 d | +| 0.05 % | 60.2 d | 199.9 d | 399.8 d | +| 0.01 % | 300.8 d | 999 d (2.7 yr) | 1 999 d (5.5 yr) | +| 0.005 % | 602 d (1.6 yr) | 1 999 d (5.5 yr) | 3 998 d (11.0 yr) | +| 0.001 % | 3 008 d (8.2 yr) | 9 994 d (27.4 yr) | 19 988 d (54.8 yr) | + +Every 10× drop in stake multiplies the time by 10, and raising the confidence from α = 0.5 to 0.99 costs a fixed factor `ln(1/0.01)/ln 2 ≈ 6.6` at any stake. A large staker is deanonymized within days; the smallest holders are, for practical purposes, never linked — and lengthening the blend path multiplies `q` down by `f_adv` per hop, stretching every entry in the table by `1/f_adv` (25× per two hops at `f_adv = 0.2`). This is the anonymity value of both a small stake and a long path, expressed as time (**Fig 16**). + +![Fig 16 — time to link vs stake](report-figures/16_time_to_link_vs_stake.png) +*Fig 16 — Time to link an emitter vs its stake fraction, one line per confidence α (log-log; `f_adv = 0.2`, `blend_hops = 3`, degree 8; linkable fraction 0.83). The parallel lines are the `T ∝ 1/stake` law; only the 83 % of nodes with an adversarial peer are on it at all.* + + +### 3.7 Learning a node's stake + +The same attributable-observation stream measures *how much* stake a node holds: its events arrive at rate `s·q`, so counting them estimates `s`. After `N` attributable observations the stake estimate has relative precision `≈ 1/√N` (a count of `N` has standard error `√N`), and the expected time for a node sitting at a threshold `θ` to accumulate them is `T = 30 s · N / (θ·q)`. Identity linking (§3.6) is the `N = 1` case; certifying a node holds *at least* `θ` to ±10 % needs `N = 100`, to ±5 % needs `N = 400`. At `f_adv = 0.2`, 3 hops, degree 8 (`q = 0.008`), in **days**: + +| threshold `θ` | identity (N=1) | stake ±10 % (N=100) | stake ±5 % (N=400) | +|---|---|---|---| +| 5 % | 0.9 d | 86.8 d | 347 d | +| 1 % | 4.3 d | 434 d (1.2 yr) | 1 736 d (4.8 yr) | +| 0.5 % | 8.7 d | 868 d (2.4 yr) | 3 472 d (9.5 yr) | +| 0.1 % | 43.4 d | 4 340 d (11.9 yr) | 17 361 d (47.6 yr) | +| 0.05 % | 86.8 d | 8 681 d (23.8 yr) | 34 722 d (95.1 yr) | +| 0.01 % | 434 d (1.2 yr) | 43 403 d (118.9 yr) | 173 611 d (475.6 yr) | +| 0.005 % | 868 d (2.4 yr) | 86 806 d (237.8 yr) | 347 222 d (951.3 yr) | +| 0.001 % | 4 340 d (11.9 yr) | 1 189 yr | 4 756 yr | + +So an adversary can tell within a year *whether* a node is a large staker (≥ ~1 %), but resolving stake below ~0.1 % to a useful precision takes more than a decade and below ~0.01 % runs to centuries — a hard floor on stake inference set by the deanonymization rate and the emission cadence (**Fig 18**). Note the two columns answer different questions: the `N = 1` column is just §3.6's linking time re-expressed (it identifies the node without sizing it), while the ±10 %/±5 % columns are what it costs to *measure* the stake. Sizing is 100× to 400× more expensive than identifying, so on any realistic horizon an adversary learns *who* a node is long before it learns *how much* it holds. + +![Fig 18 — time to learn stake vs threshold](report-figures/18_time_to_stake_vs_threshold.png) +*Fig 18 — Time to certify a node holds at least a stake threshold θ, vs θ, for identity (N=1) and stake estimates to ±10 % / ±5 % (dotted lines mark 1 and 10 years). Sub-0.1 % stake is effectively unlearnable.* + + +### 3.8 Messaging redundancy — reliability against anonymity + +Sending each message over `R` **independent** blend cascades means it succeeds if *any* cascade delivers, and is captured if *any* cascade is adversarial — the same "at least one of R" structure, so both quantities follow `1 − (1 − x)^R`. Redundancy is thus a single dial that moves reliability and exposure **in the same direction**. Delivery (measured; degree 8, 3 hops, `p₁ = (1−u)^3`) and whole-path/full deanonymization (exact; `f_adv = 0.2`) as `R` rises: + +| R | delivery `u=0.1` | delivery `u=0.3` | delivery `u=0.5` | deanon | full deanon | +|---|---|---|---|---|---| +| 1 | 0.735 | 0.342 | 0.117 | 0.0080 | 0.0067 | +| 2 | 0.930 | 0.581 | 0.228 | 0.0159 | 0.0133 | +| 3 | 0.980 | 0.713 | 0.319 | 0.0238 | 0.0198 | +| 4 | 0.995 | 0.810 | 0.406 | 0.0316 | 0.0263 | + +(Delivery is measured over 9 600 rounds per cell, SEM ≤ 0.006; the deanonymization columns are closed-form. Every delivery figure sits within 0.015 of its `1 − (1 − p₁)^R` prediction — e.g. 0.810 measured against 0.813 predicted at `u = 0.3, R = 4`.) + +`R = 3` turns a one-in-three delivery at 30 % churn into better than seven-in-ten, but simultaneously triples the per-emission capture probability (0.008 → 0.024). Because the capture rate rises ≈ `R×`, so does the linking rate — `q_R ≈ R·q₁` — and every time in §3.6–§3.7 shrinks by ≈ `R`: + +| stake | R = 1 | R = 2 | R = 3 | R = 4 | +|---|---|---|---|---| +| 5 % | 2.0 d | 1.0 d | 0.7 d | 0.5 d | +| 1 % | 10.0 d | 5.0 d | 3.4 d | 2.5 d | +| 0.1 % | 99.9 d | 50.2 d | 33.6 d | 25.3 d | + +*Time to link at α = 0.9, `f_adv = 0.2`, 3 hops (**Fig 17**).* So four copies of every message buy back delivery from 0.34 to 0.81 at 30 % churn and, in exchange, cut a 1 %-staker's anonymity lifetime from ten days to two and a half. + +Expressing the cost as *time* rather than as a per-emission probability is what makes the trade legible, because the two sides then carry the same units of consequence — messages that arrive versus days of anonymity remaining. **Fig 21** puts them on one plot: the delivery curve rises through `R` while every stake's time-to-link falls through it, and the two cross. The probability view (**Fig 19**) says redundancy multiplies capture by `R`; the time view says the same thing in the currency an operator actually cares about — a 5 %-staker linked in 2.0 days at `R = 1` is linked in 0.5 days at `R = 4`, and no choice of `R` improves both axes at once. + +![Fig 21 — redundancy: delivery bought vs anonymity time spent](report-figures/21_redundancy_time_to_link.png) +*Fig 21 — The redundancy trade in both units: measured delivery rate (left axis, solid, ↑ good) against time to link (right axis, log days, dashed, ↓ bad) for three stakes, at `u = 0.3`, `f_adv = 0.2`, 3 hops. Buying delivery with copies spends anonymity time in proportion.* + +**The trade gets worse, not better, near the churn threshold.** The `1 − (1 − p₁)^R` law assumes the `R` cascades fail *independently*, which holds while relay responsiveness is the binding constraint. Close to the percolation threshold of §3.5 the binding constraint becomes the *shared* responsive graph — if the sender sits in a poorly-connected pocket, every cascade fails together — so redundancy under-delivers against the independent prediction: at degree 3, single hop, `u = 0.3`, `R = 4` measures 0.902 where independence predicts 0.970, and at degree 3 with `u = 0.5` four copies still deliver only 1.4 % of messages. Redundancy cannot repair a network that is falling apart structurally; correlated failure defeats it exactly where reliability is most wanted. + +**Redundancy buys delivery only — never coverage.** It is tempting to expect a second benefit, that independent cascades flooding from different final relays would between them reach pockets a single flood strands. They do not, and the reason is structural: a cascade is *delivered* only if the sender can route the message to its relay in the first place, so every delivered cascade's final relay already lies in the sender's own reachable component and floods (a subset of) the very same set. The union over `R` cascades therefore cannot exceed what one delivered cascade already reaches — measured directly, in the fragmented regime the union was identical to the best single flood in every round where two or more cascades delivered, and coverage is flat in `R` to four decimal places at every degree and churn level tested (degree 8, `u = 0.5`: 0.9959 at every `R`). At the critical point it even drifts slightly *down* with `R` (degree 3, `u = 0.5`: 0.053 → 0.045), because extra copies mostly add deliveries out of small pockets, which lowers the average coverage of a delivered message. Redundancy is a pure reliability-for-anonymity trade with no coverage dividend; the way to protect coverage is peering degree (§3.5), not repetition. + +![Fig 19 — redundancy trade-off](report-figures/19_redundancy_tradeoff.png) +*Fig 19 — Reliability gain vs anonymity cost of redundancy R (log-y, N = 20 000, degree 8, 3 hops). Delivery (↑ good) and whole-path / full deanonymization (↓ good) all climb as `1 − (1 − x)^R`: the same dial.* + +![Fig 17 — redundancy speeds linking](report-figures/17_time_to_link_vs_stake_redundancy.png) +*Fig 17 — Time to link vs stake, one line per redundancy R (α = 0.9). Each extra cascade multiplies the capture rate by ≈ R, cutting the time to link proportionally.* + +--- + + +## 4. Design guidance + +**Choose the peering degree for transport, and set it at 6–8.** Speed (§3.1), eclipse resistance (§3.3), and churn resilience (§3.5) all improve with degree and all saturate by 6–8; the percolation threshold of §3.5 is the binding constraint, ruling out degree 3–4 for any deployment expecting substantial churn. That constraint inverts into a sizing rule: to keep the network connected through a churn fraction `u`, the degree must satisfy **`degree > 1 + 1/(1 − u)`** — degree 4 to survive 50 % churn, 6 to approach 80 %, 8 for 86 %, with a margin above the threshold rather than at it (the critical point itself is where behaviour becomes erratic). Going above ~8 buys little transport and steadily worsens observation and full deanonymization (§3.3, §3.4), so a higher degree is justified only where worst-case eclipse at very low degree, or churn beyond ~86 %, would otherwise be a concern. + +**Choose the blend-path length for anonymity, independently.** Whole-path deanonymization is `f_adv^blend_hops` and does not depend on degree, so the number of hops is a free anonymity control: `blend_hops ≥ ln ε / ln f_adv` for a whole-path-capture target ε against an assumed adversary fraction `f_adv` (§3.4). The cost is paid in latency (1.5–2.7 s/hop by degree, §3.1) and reliability (a `(1 − u)` factor per hop, §3.5), and those costs — not the anonymity benefit — are what bound the usable path length at a given churn level. + +**Plan the adversary against the right case.** Observation and full deanonymization should be planned against the *worst-case* placement envelope (greedy coverage raises observation by up to ~0.15 absolute and pushes full deanonymization to the whole-path ceiling); eclipse can be planned against the random rate, since it is already negligible at degree ≥ 6–8 even in the worst case examined. + +**Judge anonymity in time, and weigh it by stake.** A per-emission rate that looks small is not safety for an active, high-stake node: exposure accumulates at `stake · f_adv^blend_hops` per slot, so a large staker is linked in days while a small one is effectively never (§3.6). If high-stake participants must stay unlinkable over a long horizon, the lever is the blend-path length — each hop multiplies the time-to-link by `1/f_adv` — since their stake (hence emission rate) is fixed. The corresponding protection against *stake* inference is automatic below ~0.1 % but weak for large stakers, who are both linked and sized quickly (§3.7). + +**Add messaging redundancy only for reliability, and price the anonymity it costs.** Redundancy `R` multiplies delivery and capture by the same `1−(1−x)^R`, so it should be raised only when churn makes single-cascade delivery inadequate (e.g. `R = 3` lifts delivery from 0.34 to 0.72 at 30 % churn), accepting that it shortens every time-to-link by ≈ `R` (§3.8). It is strictly the wrong tool for *coverage*: redundancy cannot reach nodes a single delivered cascade misses, because every cascade floods the sender's own component — coverage is bought with peering degree, not repetition. Note also that path length and redundancy pull against each other: each hop divides the capture rate by `f_adv` but multiplies the loss rate, while each extra copy restores delivery at a proportional anonymity cost. The efficient combination is the *shortest* path that still meets the anonymity target at `R = 1`, raising `R` only if the resulting delivery rate is unacceptable. + +--- + + +## 5. Validity and caveats + +- **Structural adversary.** The adversary is modelled as controlling *nodes* and their peerings; it observes messages that traverse relays it owns (deanonymization) and honest nodes it peers (observation). Timing/traffic-analysis correlation across honest relays, and an adversary that adaptively targets the transport path of a *specific* known sender, are outside the model. +- **Uniform, uncorrelated churn.** Unresponsive nodes are an independent uniform-random sample. Correlated outages (by region/AS) or adversarially placed churn would degrade coverage faster than the uniform percolation of §3.5; the results here are the average, not the worst, case for reliability. +- **Exactly d-regular topology.** Every node has the same degree. A realistic degree *distribution* (hubs and leaves) would shift both the flood dynamics and the per-node observation exposure; the regular graph is the clean baseline. +- **Sampled propagation, exact structure — and what each is worth.** Only the propagation quantities are sampled: they are Monte-Carlo over **1 000 rounds × 8 independent topologies = 8 000 rounds per cell**, which puts the standard error at **≤ 0.009 on every delivery rate**, **≤ 0.001 on every coverage figure** (bar the critical cell below), and **≤ 0.04 s on every full-delay mean** (the redundancy study uses 1 200 × 8 = 9 600 rounds per cell, SEM ≤ 0.006, and the churn-threshold study 800 × 8 = 6 400). That is a digit finer than the tables quote, so the reported two-decimal rates and 0.1-second delays are resolved rather than sampling noise; error bars were computed across topologies, which captures graph-to-graph variation as well as round-to-round. Everything else — the graph invariants, the observation and eclipse counts, both deanonymization rates, and therefore all of §3.6–§3.8's derived times — is closed-form and carries **no sampling error at all** at any N. The worst-case adversary placement is a greedy envelope characterized at N ≤ 10⁵. +- **One cell is intrinsically unstable, by physics rather than sampling.** Coverage at degree 3 with `u = 0.5` sits exactly on that degree's percolation threshold, where the giant component is bimodal: five of eight topologies delivered to no one, three to 0.3–8.6 % of the network. Five times the rounds moved its mean only from 0.019 to 0.024 and left the spread untouched (SEM 0.009), because the variation is across *topologies*, not rounds — it is the critical point. §3.5 therefore states the threshold law rather than a mean there. +- **Single mixing setting in the headline sweep.** The multi-second totals assume a Uniform{0…3}-second free-running mix clock; the per-hop mixing cost scales with `max_blend_delay`, but the *shape* of every finding (degree convexity, `f_adv^hops` deanonymization, `(1 − u)^hops` delivery, the coverage percolation) is independent of it. +- **Idealised emission and linking model (§3.6–§3.8).** The time-to-link and stake-inference results assume one emission per 30 s slot with the emitter drawn exactly proportional to stake, independent emissions, and that a single wholly-adversarial cascade is a definitive, permanent link. A real adversary doing statistical disclosure could link *faster* by correlating partial observations; conversely, cover traffic, non-stake-proportional sending, or key rotation would slow it. The redundancy cascades are treated as independent given the responsive mask (a shared-relay correlation trims delivery by < 1.5 %, §6); attribution uses the whole-path capture rate, not once-linked cheaper observation, so these times are conservative upper bounds within the structural model. + +--- + + +## 6. Reproducibility + +The simulator, configs, and analytic checks live in [`tools/simulators/blend/pd`](../../../tools/simulators/blend/pd). From that directory: `make install`, then `make sweep` runs the main grid (`configs/default.yaml`: N up to 10⁵, degree 3–16, 1–5 blend hops, `f_adv` up to 0.5, unresponsive fractions to 0.5, all three placement modes, 8 topology seeds) into `runs/_default/`, writing three tables — `propagation.parquet`, `adversary.parquet`, and `deanon.parquet` — and rendering the figures. `make sweep-fullscale` extends the exact metrics to 10⁶ nodes. The messaging-redundancy study (§3.8) and the linkability figures come from `configs/redundancy.yaml` (`python -m pd.sweep --config configs/redundancy.yaml`), which sweeps `redundancy` ∈ {1, 2, 3, 4} alongside the churn and adversary grids; the churn-threshold study (§3.5, Fig 20) comes from `configs/percolation.yaml`, which walks the unresponsive fraction to 0.9 so each degree's collapse can be located against `u_c = 1 − 1/(degree − 1)`. Round counts in all three configs are set for statistical resolution, not speed — see the sampling-error note in §5. `make verify` runs the analytic anchors (d-regularity; `observed ≈ 1 − (1 − f)^degree`; `eclipsed ≈ f^degree`; delivery `≈ (1 − u)^blend_hops`; both deanonymization rates against a direct Monte-Carlo of the same draw; and — check 6 — `deanon_R` / `delivery_R = 1 − (1 − x)^R` for R independent cascades and the time-to-link geometric law), and `make test` the unit suite (`test_linkability.py` covers the time-to-link and stake formulae). The time-to-link and stake-inference curves are computed by `pd.linkability` from these exact rates. + +The figures of record for this report are the copies checked in under [`report-figures/`](report-figures); the simulator does not commit its own generated figures. To regenerate: run the sweeps above, then copy `runs/<…>/figures/*.png` into `report-figures/`. + +## Figures + +All twenty-one rendered figures are versioned in [`report-figures/`](report-figures): `01`–`03` propagation delay (vs degree, vs path length, vs N); `04`–`09` adversary observation and eclipse (vs `f_adv`, vs degree, and heatmaps); `10`–`11` reliability under churn (delivery and coverage); `12`–`15` deanonymization (whole-path and full, vs path length, `f_adv`, and degree); `16`–`18` linkability over time (time to link vs stake, with redundancy, and time to learn stake vs threshold); `19` the redundancy reliability-vs-anonymity trade-off in probability and `21` the same trade in delivery-vs-time-to-link; `20` the churn-percolation threshold. Figures 11 and 20 both plot coverage against churn — 20 supersedes 11 by walking the churn past every degree's threshold, so only 20 is embedded above. diff --git a/reports/blend/pd/report-figures/01_delay_vs_degree.png b/reports/blend/pd/report-figures/01_delay_vs_degree.png new file mode 100644 index 0000000000000000000000000000000000000000..da312c81cf568e83ae80dbad13560c5750db2b6a GIT binary patch literal 147336 zcmeFZc{tSj|39pRR46LRT3ISvWtXvp?6lgK${rf~HkhQ67NQ#ah%A+T-$|4hyO5pi z27|#E>+d<8?>V3I`Cj+^*Zt3Z-Pi59&ULOihne@h-p}Rnd^{e{cgQteHHHHx4^UB2 zF=(i(+@PYOi=?937qOof{>wXldt>;Qth=hA`%R>cyVqS;Ybu?)?#_-#cSrksJf7CB zZuZCrVj>qWid+=pv2%BKc9Rtqb^7NwM3AnwqON_^>+ml0&gw>PR8%5oDF5v7PEqir z+CxR9p`vulJ8o`}E{f%L&zB`-+sGj!-^jdHPIs)|ZSa^HVEd;BP>=26nw1Cq}l z?SFLkInAnS`1waXm82mQL3r40VUrITp+o51LbtLEK5l3lZ{fY!f|#<&F%&uuAMp3j zm!Ox}og;t0f`324{p&@->(WF2dAay}GY*q~9c8LN$jkWR+vy$)bfptI!@RQ0wA7WaFa62k zb|*4UwEBlXY0x&5zSM0B(-bWhyNfRhSgfI&2vgX(u&E>`Dt02IZ4Om1u z8PSxWQ2kcWK)0{RNie%|Ek?*NNAX^JlIjay%kM9X2=%W|DJNBGs?%LkL(x36E5T=# zkK?ne*L-{tcg7pus2wGoQGiec`(yJmWI!MI3KoR(-MFQIx@UTO~n z_(<{f4_6zu$V8{sVSkdD8}-@O4lx*Elg0$}4qKak8@nwFzjh7+IaEXh2CC`oa@c6A04J+LFFmyW%fx^jUfd^2?CoM+~79Jsb|@yv#3JvG{1-=MBG(_L}nhRNeUdd(+lM8OHs0 z$WyLU@m?`4H3nuL?^fn|Z&r~fW5oj}uCa^Ty)Mn2J|8vR`23h)GMrRuzLK2qKlhhP z@eW4B?0lw4u_R~Xy-&>7;d=OPrfL`A!&oi+F7~BAmR56S+ke``<9A)ijl%m~55=et z?-r;u)^npd=DQ&972`T|p9eE?<{=3E#mF||&t?C^y@d{u$`^bHLzPDyjyKEtZ_K1^ zSAFtc`mOp#_(M<3QclwyUQPCI{ho09YS<+mqu6NA=-X)^GjCW)_^#L)m3unf>Y-nH zHFD{2^360|4S4(UVf1c_Fw5(qvpJE%CXznzb*(y6bzFD0e8luIt9Q|zhv8z{X4Tg? zkKw!01)5_d4wl`8gW)F67Z2NwoNa$@P>CYx5`ABtl(3rnm7D7RyEos~nmF0K{EgKj ziV?TA(l@%ZNr;^9FRov?6cm2e=_sGJ)^LC0o}OQ z2U$g;G}AWM=HEaLLtBUAyVf%nrtm;ErmuVo zi?SO1`otzO>G$1Jh=8Hs6#X7*0pp{q#+*DIV@si=5t)Q=(b z!#HGaU{MP)Ge1AQF?DN}u!(Adztg}78EHQXr+phM>2w}hy<~AqA7))^$$W8RdS#4kJnY5*%q%*H^{h6ic6hxe>nlkYM!c>@PLtbZ6$ae zUZo;fo(=K-DslNx>)@M5X;a=GjF`?`eVKz0H7&^*aK#Dlk%}|Vm$pdIj=G@4yltFy z@7wd`kszkV5|=UUXvcZ+47Mb%VgKT{LPnRyadBd{x-pC&d(6Dz{m2uMlUI`kPnvQl z1XSG0HXj`IXpS(-x6#oS`B&VJxK6b=g^ofrxO$rfTerJCGF)m?W|EQP7Pq_hvzz8m z^ij=+CmYeW@ati-R>m7*ny8ttF20#;Qv6`jr-Xr9eqf@gC90h`&pNo)qP#F&_%sV8^zSQjhMUC; zHB^h}D?}3s$%K?GH1^+|FXpFWTz>(%z%xISH6c3Z)L-;!O*?0)DBijyPUbv*FO-M% z-yCPl#zHSY!rDRxb7CFtc&tpfE48v#8AxuBrxG~LJ0DhKcvha+6n1~QSwAY#EKj;M zBzN*(F>v@K1G}WQ*sXg)G{{1hSpNwfP6gklsEgOl1nLAH;S?XbLM2Rn*%y9B?Q|bj zEsRT|@rSkF`i%)}SX zBx}4$wr$1U$TmlG?)0tsE?vvHqx8wNG*9Mw&qXiyj6u800b3<(1~=--nfjSA?oMyGfYh9);tah+U^#sOUcTS?B(>s$=c4)W_G)b<_8 zA#X*@`qnnnQ)DIfuhlXs{D7XytIzv&>Gbg;jSHIrr?;%*Wjk_mSF? zP)yAhA)oxS#DR05sVe%ht=liO4aV=KML8J^=jdpz*nI@zXnQdHnpOLURla{b$yb!`7AOv;pGoNis93#<%^do}r#YDIoS1yN~ zciWV;RpZ-+yIg_>Sp~x7DAEGv5ZfhhQyW*;yoo`t;lh2tJ5sbTO!Dhrnri!P0o=Tv zfVMA5h?VvDTw4wBVTf51{%ZA8r5WP>&yS-QvZKXpX)Bp#11uGo2D88B5@^b+Y0n#P zD)ClX1QyIJjnxa+K4r-N32~k6pY1-=fq^zhE-(+1-}qRI$_4yN~wMr%xDo|5!80z!_sp>TXmwwZezkkue2`Yi~@Xn;Mgz z)Q&G{f%B(i+bSdL)bQLfLH#JF1%mACx7_N}tCb;7#@;Wmx5V?uaZ}KOiL(rI{U{`Z z5rq1&H}#_`a^@4vLeFG!CUK=?_H()rymTv>N>Z}5 z7|ssFHoOtotY`@@smcoo{d_xJw!(m#?xZ(KV&r!2y>H^AoYTFh&iD0j4k*89McDq4KVjW9i+cv8D>dwwU%R=vif64$yL$R`$;-z_pN}ltCir6})l7rV zjmllbQW~VW>W(}B3)|i@kMv>ILnrUt|CMuB5x0^?mrG<2Msqzd$yv zf1R~nYxR+uHpc5MMvl;880?*Wpd;E}+7{m&WPgOKp@~d4$X@V_T_2lG&-RSc0|@x< zgPyXihqM!hmbAPnRpQW-Rpc|f8dOaXg*j>BNB9}}Ot<8$?60EtP=qF* z7OX9Hd6<-YW==p?%`1Rn(OfpujIZ9^=^u0D*Nz%lbyRK2|xdyYDb zZ;2YwP6~EI^((Ag#SE=?P_>WN1`9)PxVYIom4L=heotGy2s2;Q=8(#!wD;I6DOo>J z3ea>ra|QjPVjh*aUj!=S+~=`4i8HIQ$f}EM>KmKsxSy?A)_(C?;!lbHRL%L#nQf`l zCt9S!+&{)EdLIx;=R){OZ=r@Nd@56=Ltn(vk0bGCmp_+gxBy zdG*_=d>@Yd>+W#-t$g>@0W-AMD#@T#RU+T0)!LLZUwljphwiuKCCzr>ZgF&2hG9w5 zOL}N6EsPMG^B1WbJqG%|@uOP-$XZ(a-Um~p6~gc^vrc=-!U&hK-;grV;B*`%VEjAB zIsxv4+YFzO_baI!jySoFw z6T@v~LF0PKrBg>L#b^?yh^M#TB=aF&%Vwv`SG+oxOjo~` z=0LK~Fx)u8($jUwY%}cstH0~K$G*R^$INIM34M#gq81B|3mX$)Y5#PF|Y)mo`o z#!c8+P?Fw%Kv`?W4fU<^{fZmoriuJ1IGQ%@J9t>>!wS%b{0uiSC|;rIvrY#(V9Af^X*f9zX=4IAWY%1{&!_gS@$2F z7w!Dz)_z%X4HE%Ir5X)6WLHjh+M49syy81|?%Z#I@B1Q^MNe)jiC0;KH_;|s_R3NY zKCx|r+CX&_BQ1hg)6L3@EChO5*!B@Bh@pHOK&;?%IE2}zn5LLVeDmv%&0Ej<-4y69 z*=X+W&^q~;^u*0Gws`we$8fBn4CAb{>6+!9tFk2=En|x#H9?(1dZ>xbD=6La^L(r= zW6q~JM3V}2uH+H~z9LmFWL2*9y&f1}K5nYt(#sNaJ5{-|MA=zpaU{=k%SD3Lil^W} zAhE)f#v&>A?_r*v#-N_DnRYFO=#e1r-%-(XQoToaXGlBx5??dQznMQ2j=y?L)Io7b zM(hRwVSfS9o^|;ssjZ_PQJ|twY%p-}IbkHPoUtN{t4#0yTDd6aqa>f!hElhu0jzs0 ztdCOd`DBodeR)zsQxZ8OBy3!;-$9U(L%MC0Oo7JpeT75^E^69CuK@-0VY5w&btN5t zjr7QUf5~>HH_w_VYZkbdhBA#YW(ynT)s3O9zC1CySaHAW^YSuIbhE(x_UBvS2IfBB z((I4)C*^Y2HIf8PXM3_mp>-D^ssSW6VG;dfDBrcYbAU)a*LOsW3x1?c=wRiHJQoJ+ zQCJBF{nFi?O+Jo=a)NyDl)~;-K8&CPX`~1JMZ!9lrCVDYeXw2W29e&2Ks0D+YChNN zWIQRZ{`}~<--~@vDY?YpPLZ(z%MAh%0(x8_7-z2F>h<3TgQozOzk{qCNLxK`R#s2} z_>Wm5#JS>GiqmgGRl>*WBUK%EIuxJg+t<$R1l3Ru8OPSvIGHosn_KlS}Im;B`Js zR`y)+6aa*&95d2`;1gOOJ<%4e^(Y2cUN_W^b?dSjbmfP){3J_!nAq_M24t7WUgSamw-n zH|XU(pIguMM#v~{y`sXr(pLl64}UCIt^nj!hF|s9OgKr#R#p+yX_pNca&U0nbBld| zZzenQ;?l||Feb^)qhFaBq1#FcEa(G6^9DGN?le*;7s5Eb_!k!cD*fuKlcjNz7FB-s zdpmP=k-r9jjS85rZD9?_w`smK9Bzk3-kU&u-u$5>HOSk}4Cw}4+X@gbV>V)A`a{IU z4}{1AWxL}|(Kk<@Iugp7TcEQwNMc!)`f31}8B-g~lqR$A^aWQCj6v~}{5xy&{k26+ zDjwwJ3GwWiS6zxFv+CpbciIjA?rV>OX#FHc#$Etlsa5lc28R6+hcGULpSd{q@7yAGUj6;#kGt;x@>7`U5{#Wc$7!?>5RWjmOotc`wU{vH5o>?`& zCUn_#{Mn39BBwo^<5(w(l8|KC#}50}gMg6OS9!;0Ix$!qd0{^MDB}xOQAw%94Dr_y zF)=6GDpr!3v1=a>t~{<|pSPYKIEWim&7qx*_gEO{&7QE=Q>uKZy7l~fz+u7RY-d6J zjHp^S3*U~}Z_$X#8kgU7^kIZ{^UnZQP%+r-(IlzrmM!JMTdvWG77+?jwuSM-V8|Exw<|Jh0)$Tztx+bt~n;h;`@_>tlC#qKf;N9 z=P)@#&Y`_~FC@L`mJ?oaJ%)Vpl{M{|>wRa3inOHHQCpvYqK?sYDRrG#CU3txe_PYd zO`$t0J5G>)W;NI?wMhSf4RN3{!6wk95ChHQtxRl-TDEnv{U6$hLIO`hp-icn988nqs-GizU5^ap3CDJk=d6? z=S3iS6(_I-rsJa3Tfa%0huQxseK?Dl#7(F;QCveYy{XkYzIoZh7cI`8PkMl#5Dt@De%4R2BWQ2BKG@hv)rr-V_8<(IJw3#B50zEj?prhN z7u0~oJnDntW4@GDCl0yrE8QqR^=Fn@zrMbq!WgjRHuAAmdZ_dD#v!s(FIX(5zZER( zmZ6Pic7XWE{21_8S}BS@Axc-kxGf(2xur7A|9YA(r`sux2mh-c=KTz3JUT-%r*2xS z3CXprZzQ%VBuqX%yLamIjfb?_dq=nA=dVqj_h$L`T{P*qnZJ959DodbZD(pB)9DaJ zbMW}DP;wuAn~YnYU3*fhF;?N7R!66Y8qd9niiaq>Dy_$Eo7YCouem$*6`a$lzxaxE z8u5{W`?t)q4RgP)5quA|qx5~{mc%QrixXsIn5yp%&+J{~_iWXDcp`}vDH||a*kkU{ z*ftX$@EquFKvmQkBT1b1(-Zm|AG@^ejI(G4tr>dpGvv-8Z>=oW@|fOVXlDny9u~c_Oa4oOeb41tTzv;PjP+k+w+5E3XKE~I>x0h z&Yu4I)NmoRy_kbE!Zd04_m<-J?3qUSSCfQa6T-OgarON!h1_ZzC>Fut&Imp&O>xy_ z=?p3Ny`%G}qv!wY&eT|)qBR!j;r3;)RQR3}5P(QioSr6Rg}#{06blrM8=lIl^Z!?S z8bJo1opLRzsTv-X(G$W z5G{kYnyxS*ixeA&?%7-CTqFX3Z+%^4 zFO8ESi|M~f&&6K(RvL-K%K7Y#(R)u&c6|1yVu@NzGce9?XYlzIkSsqU9m|sha@PdD z`6kVMwtBY#{fYDYn|5|NY+j(UMo%Z!#a08F+0?EmhC`hhM|edK$Cl4_~kWyGtsi~JGwcc`kGNSoJnNG^GC zg>0}NY4Vb3b1mJWy=d+`!x!8Gqa~fm(|uQJ$>p1- zL5-&selq`@wz81LG2`IWe@F5iXVJ4&)BYD;G5j)!Yipq&lJ&TX$G&m9Aj9=^NO6v* zY$d`FD>zK|CgZ_(pYur;5_ z`LTSV3^!VA7%USd=@f&rm&ox0x+It#4g6TT9IP6nUAJ4p+BCf5}8q|h-c-I z{cWuPdF!(zqmxb%DWO#v-^RJ#|mX70|*SVeY%`_i0(29&)!iBq6VkEn<1yDiKY8_hm3TrjA_7ytycc*pyYRPsu zJdp6lc0Mp`Ojp#r;+Nwan5%zKII%pgI2^a}Hk{m~VdDJJbBP-}CFeCxz(`i%r#EI) z!5Pdl>U{*+U&mE_1ZzLjrT$jW-Jp!nWnkgqt7RBsda|EwhNZ@uM?LF%h>OS!^UFsx2W91k zK?+KiY7y{gVQs7G%d>t_cW~;ZmvH#+Y-h}p#@lTkt}2T%?FN8y^G{d&|ADO9R@dt_%H1M&{AJQGkGw3B|H^V6+qp1U&WSBQk7IyojBS5J`oX|E_4r(`)h>gy(l2eyY%?LD$3{88 zvNHX8m}pdB7hd-QG&~u(9+rJ*Cy>57-T+~=w7A_d^n8tzzQFP;z;5JsgOFR!HKp~l za6AjnHN=TXi>ty8y`Rm>JsDY_8TYB7y8Aj0ifzV<`MQ~je!s$Y!49#HN;24(T8vzceKf?>4p-1JoJ{sX{N!1NH@_d^YpW(7i-w3E~y5-C7!$X{^2|sAf`1CP?H3U05V^*&Jp4E zqxQ1=ABnE>DDo^r94IB{b=LGtrZsjKM{7GB1r4O=Ywva>YXlgmv>m*S0yl@fNZE&_ z%8+1!z3=9B7vY7??&jFaOlK;q2k(Dkt)erxeU8#|Piq7}ZtL(}GY=q7M74&#pzE`5 zE{%Kdh6$5unG!s9{+4>@DDS`WmHA+g0SqyoF+QNgsL&od!2>te15{73HeJQs^Kk%0 z)gLOHv-m{Y5?~1--ak(8iN(x0ew*X7@e%=+zGe;&hAPPpZUU`zowMt zT3>&l@>Tn*&8qx*_r*~+jK3t|Llt?y7ApIe2V?e6tu3va91B4y&5$`dN|Q^m=-{#- z!yHl^M$`gp6CmNxeW-Wi)b<$&-BFlV#RWFjVk8`nFH8C_ePiW>iS#Rw@hTHf@0Q4| zj|4Hc8f2T#yOGmY@jbClNAy-~f`|?IL*i?EmMWs(-5uYpoTbdd=<2xoy&bwVRhX+? zL**wG8C3ZrFj5`c-LvI{Dlt~Umdc>(j zptxd2;JwXZV@@>_0*#@4-Xn8|Ub+bJpzA@cxyE--|F3x721;*TB4Eq=W>?LSM2{)U zGU{5*kelm5T`K3D!iaq%t-AYp;~or_&9IfuU$5|XsUAX4G#qq%DYN^WjbqX~c1#jSD|pFa7=&khuwFBO(9IwZZ}T6RtGe+jDPf^YpV!XL?+9 zv2xKi{-lLLyyphUs7Anp5H9$`NF+oN_ewa-L+ zIN~$=DNP6l@kP9J;^rf_{#{_jFwV|9%|*Lrzlxk<`$-^0HY^XgwU!R3RcvEb0qi5| zYwn=c&iHf4`>p5jQB=TANaFTO_v-d%|6h{585Bu50}q<#i4_SQ0Owo2yFh(+6c~Y( zffFl*92$tgg7z<|!%mSpr^%kvZKs<3JQ7^Jc2e=}pskA&W*`=|MQ@U1Hc2)(jBsj? z)O8G7lPCSHoO;G7PhW5b!JFpXt>qX3P%#!&4%AqXq*I@Ch3L6+4NfKuY?pYOU5CIb zrd9BlvNCy76s_T{XPwQ>Ht@tPl@c+8r_=N8!t! zb2)Je=pn!FU|2HY@?W_Q#mUIDN`UJT&i6Y0{E! z&)*LU3&yUK@QP?#y}1C0V+t49S`e8{@n)cqQ22$J5G${(!4QJ+Ax=gUmcW$M+#E4h z9~S#!&!B~P+rof6_&F|ZKHx<-h>67|Od-vlmA(%h~q4u-HDd5Ng|*rWaNU z7?qQ5Ot>WDDHHdCE4rx}kSeEAa%RQ!4pw1!ggGwmZJ7ptIK-noMS6q zLYPQ4?ZaY!F*m38MSk$`Pf2JX`wz*!9Q5pWf*5Xz>s^L3GE6#mk|Mlnag*9AG#YChv<3e^K9R5e_a&%EG;K<t z0EsDAq?T=7dAdlUPhsUAuW1}QpHPO+de}oz9@czH!?!5Lg^&}b-9xRQ9lQMqKnvdf zY(-zZ5>WB%yCnTYRRR`$=Fuv2Vp$fC*~SE)MytZ7_c`&CW)oSt<+33saf!sMmHdm(2cA;`3V zMXl|_LXt_2or3I9>qrM`M-v3~?SO<(!H<^Q-(o>BGBPf5oasRU(|HDh@9l~ZbUYz+ zwY%f@J=C=8+wz=ee5TtHI{*c|&IoR49rQNrTWDx#U_MA;?!$J6Dp6h`yqstB>aXL$ z=30j#L)D`Z7fA?ZSO@N*evZVCsZN_wfme5squVCqP|mU!i&SL;kLcYw1u*NbYpXVmSX52%;oN;Ad+E7pI%z(C1Z zFWkB#rc_w>WGz6%q$pz;pTQ;w0z&cJP~~NQvB=C6nIZJ9e=u{~0+;b}t!&FGod1}J zo00vev%)^V?`tz|2CunyUwocnsgyDW!t?@N_<8_MUn(@d!tv(Vo-_}N|H>Ll>7+j; zbAD8@_l;e0=+3amq)i0gdlJC(0)&t}Ge0u6XCt;xT!`<4a{DMLQ1KT!u z-^*cA^RtO5UxUs$aD@o2{wu3tk0Ux2?nBF)P@K`DsVDCyLH;`$x-uee^} zdd>LaQ?12Dxv1UkLkQX#=ipplm`1SCn8>iYLZ%MxM>uu$9oooMn->_ru4QG}?%>c* z7lF&J{yuj|Ek~D$*7*Bx2(F8CSL; z(^c?ZyrTuxT!>E#BhGr)`193%y?U;Wf| zxA%DXtaYHAW%@Riq^m7z3T7z&E{fS{A~p8GCE)rTW>q6GofQzs&EB!blRBb5GOnI31a;dY7Lp`b1%eb`O-726?B!X%i>#W}BlZia-pCYP6wFPf0Pz};5_f=clUzNd96 zk@-qZC$b3B$&T4i)yyE?*VyQXHAa<@keiRy;I_2A4)a^9Wx~lr| z5w6k9=;k9FbHp$`LbP)@fMIzi*RYb$I~CqN=A>z#%B@XRsnmwO@sHTdyEL zZ4Z^ApS0WL%cFw&+M(PE4^U13I6J_Q{V~fRsWUGmQq-adVNvRulAM}))g%73cfmd) zllS#kcM{On7jEZXX3y9};q3=RB zIvVVfNH25-_|-jB4_l#7{$AVyGy6MG0NWoaK4QP@nL#lNuE~Kf1WcNhAG2;IS;p1{ zgNa%leB(~7tir}`Q$NricA%JPp_91$Fctx61AO6*tW=8YKvVjkxNzqo;~R%^8#F$% z7*+|MS^oJnJ#faK2QkXiTL;O%SKSdL-*>iHpYNlE$Ayj6H8nMVcAsm{)%h)oG7=0l zba_LU`v62US5QQVUZ8SK0Q(WTc0O=^FV%jQ1)3BllOji#6W=x8s6wYd-sN${4+b$R zstQ@uS_Z|n$CwQRns!#%?0I7*bv5^wR`bn%fUgr$6Qqz>amQb6iKbP)BY|{Z3!a7q zJ4NhFG{+hY`Al*46RUSNw7^=-(dDsME?UMdb)EneV0-l0t2uC(iQnNcl`m7@UuDCu z2Ah+pYku6xoveY?8)+Hn2@U$)E-S}D##}@i7v%#8D=<3rBTgot0zKFKCK}&SL^#UD z`p)InYd7S>x`_R7Rb|2bF3s8QOhJlL44n-JE!7%mR{oE2P;n?u`HrR!_MNGhU=N}J zgyCEA%D%Od8i#z1%&P>q55wKrzFxUWlO_EV@^+=TxV*# zx8?`O&vJfxUuMk@^wZ8=3gepOH$s< zjuM-qORssU8YYV)>sR^NW-JFW$&% zobzX5%nGb$MN<^82CFq{9`XNtfx`+Q^3z|T#(|}_XbLKQ1RT8T|NaH4dmUi6 zod97TG^FETjMOVIpnE3hho-7hpsMHQsdC<-UEJOyy+iek_2vIJHrCRch6I#&<77QF zLFN~z595xc#NEyoIR$(Ocg-fT2-NtOKS7Jh-IasciPPL122mtx+dRN&EJ@%R2< zIctE1Akt&%#(;YsD7o*Sx4)-K`@&6y<*pl0BILRJRx9XEl+kE?bqL_dkLmUgIyo|j z!Ko1e9twT=opsB6F09p$*Gd$d425y9!eL%nt0pqk-d&yTf}(UERdv7X{3qCvf>OSy zA}B+ldSH?4w9oQ*VlI^e+}^$QB)XAJY8C2w?uP`XFH3Za6+9&zqa8hv_pW3lsF0G; zjjGR&hQst2t8K&Z`B!Jt1fawQu#ZglxO&LP%X&muptrk5Js5sb?DT2=+58}l9^Yn@M(y!5VZKK9qgJQIzp-UG1~s-WmMy2YT#bBT6Ee637&s42M)K0mT0%t(+e3gRO zL0NJbLy7=n)mOY#~rX_ zf65+>dnUCKw{LxiiUa*{{VSRM3xvcvbscNVFx9?CO%u}XdDdFNQ$YU^H?ZJ*kddo~ zskeewHFM9;KT}vCEJuV`KPhGSr-(i@yy`5YYj-@O61cbL-|j65mdt&6o1YKVkarv_ z?tni#EYkeXPwvYR*EnggzSI(7deQ{=GN7Anxesi_Uq%ZzR`Ht^a`D{(J6e$<@8Gy| zGcFXK`uk6*4&(QW)YEfj_n5;D0YbOh1Fs*fXal#rb{#hadnOit7Qr%xN?gw14&40r zhlaw3Qdn#btOeMsxY8`Zyjx3zaNDTVo+3%NzOjCi_3!Tkn3r)2=1+?4Be;iR%U(iI z_G)~bePAFK64d@znW!skYB%5G?MYs?_E~9H<22WT9a6ymD8FHtf;q4dFa3nnmUn`Y z^*(tSZH1>!k1dxTboHK*lqtI(X)5P(Rm7r%H#*M-BUJi^&*DD)xohbeR*l#v&Ho(m z$ljWX6FtD48C7`a);dsD#US~c$2Q}FqJX&~p?YO?^V9ykdtx;h_ju@-xK{88*tm&M z@fiJO-+S5N6^BugS(a(Z_#$#+Zfo?W>wWy5UWE0N@ob~3H)3vuXZX0OIQjqciT94c zCrSd?^Z@|K0W5G{3eZ@CcoeKSa4wJJ5#@~Zr~BG0l!F=H0cm&UqfeZi&kaD?A~S=% zW@^?1rWX^9r7z6Wy1oz-X=2BJG|or3I&f;74;MX+-%r|{PSJ|wb+ci-{jeG$F>q{? z8md!L;26_LH3GHv16*p&+eKhEO#Q@jLi8(T+&-(ybb|w#T zo8pa=k&(&3)uLUtGz5Vvo#T4QI*=Q79p953nPpZEB9eh)_KcDTtX#=g4$GYQFi}V? z6Syd@hdEXz`I6R53Quq1>+yheQRae6h@r?X0X6wdVDJf;Zq&E5N*y1fUH! z-cG;aasr1QD5kck1>~`BcZ$-6sC%ZK?GmLJ%()T1Ki5nzJA!RZY#g`euu(3{%%f(& zcPSL6S)nXu&t>}#Ua_G((Kz(`*7(a)UI$H3)1|QjxC3VFSA%HF@~t$g#|~P^x#%D3(eT8x~yk%yvgi0Hpa%^7}o{$=PlWtTX53(Ap>Wmh(5)z~ z>pAV)`QUwrx++CB8-rpN-+UzT#^C~k%Q@$Y(}s|`KRv^Gh{doP7yVcUSuh~efBYGG zU!>);wT1SPVMurmb8Zl?DVuZw&4Lu8;r9bekwldH95dz^R&vDvmOGoNv&`hZu7?V3 zBH7~a%=l>*d^#1KCtxFb`+q9Y{>S_#&0z4yf> z&m|G^-EZc-9$Rs7vS)Y?$H$^6Ylk?Tz&>KEGcAOB=$trSrXRLvkH`8VxT}aNUSWGB% z^@?X+zCnC`<5B{Wv`xkHbES#|Q-4Q=Zuh0v^4mxrYL#YSD}*SNTCD>l^jmNZULNte zANC%cvcXN$sxOX{w{~EkAHE7CZJAHOsZcX~ZhJ0Ood=V` ziYF!RTVW!lkmmVwpc83+dwz_vkI8>{<^^1z7EE2uV}M4*v*&;1Duc7_3{-3kj2>E` z%u%)zCrevQsH1_gi-a-j31u43NY}6a`TPZ-&G3F?wV6#*)T!LlZxc+w(x?aPtPehG z&2G7~&rG$z=0m}QLF22T95Xi+e|1S7=&FK@J?;Yv4xfZX*C7|9kJnBSOFgh4EU8Zs}D&(&V)(ttCT1=M)l`rEEb)*A^_M# zrclBiL0V419O|w3lb?!?sO72Kd5&SbDXu{-GmXchi|6gsCnfIfcp8-w9$PUgS*xIb z3Sms-=c3NHFT$E?1A2$Z-S4I|M0vypeN_Kpma_+5#E23psuH)hl2(OL8?{J-{AcDJS&<*0@2Akh@kW&niRJeYp+9SvZ0 zkPnzf2_-F5OiemL2C(M2W0@e|9`DNdbuHk*wl*v{yr$SlM?ETw(}_Pl+k^dWsdVBHLo`lJRJpQ;lxnU1a&4ID=jMRX0kc^>;eYV7WS1O;#6&)sC@GZMeze<^iF09DM zO8@E%dbVcVIb@<=rVAsC_=J+7{(Ap~xRtu=s7<38jmWhqtuT><^0R`p+7W`MPM~Bg zyPIxoKVghGcR3~Z!$tXU%;}Cd%XVn=L+{!@L!I;1p5F(jkhv)hZRqjr=HL&NCtcE9 z$a^oP8*D!l&c5>GK%NiLCb(xsJ{`mJpfmN=IgJd^*ZC<+36yhP0>1++#mX5Nj&al^L1JJ{>iOtp9&a!NsvFWRg)c?}E1S_K#a`HfU(oS$vPVA|GJ z-DV2le@pE4-00UNNX;&b_y78g-rb?FL#1&@&>AOz*(pZ!P<__T-tF<|5VEOM%Ov!S zpS2xjJo6au=0J9Ab}i~?8u1$PslUtJK6g*pA*=tVCiNG}1_GNiLw!|R!u5U&dkrTu z?###b7SXpzX&|Mw`rpI0 zo-b5>`5>I}X&*p^57Oxh9Y z3?p^T9I8yW`_L@Vflo`=K>dj}K4Pp3lK93s7bH6~U4;Eo{dKr)uB}Ov=B-nS>s-GB+RKN(O{-hlF z`cSkOja(Rf^Jc$4C6elJd4XI`@d5vn;$51d`X@&i#M!-;#~X^O3&lMFZ&p^Nfu_wb z*r%DFQQ7Weq9s&*6CSS6KYUWXkhXHZ*H&ZLqsQz)y+9Gu=~?%7=FhE}y>f-5KONq)PBoT(*+Mdv^rh?=Q-vV3xFC%sz`es}OQ^v3=o| zG}YNlk!RHFZF3Z+X|zy0WM#dam4}}#Rqc#ewyQC--PF;c)Jc4K9vpPSgPcMbRkjJk z*ZJp$Q>~G9ofprp)a3pCz;MLxVd<=8rZpj>(ABC}veb1nqLqNC9D5x% zP+;L|Fkbf;ZOo%j@$jV0#A(rR!&)Ki%+ZR$qg(Ewc7T(K3a*};8VyZjZdsedvGqsF z=*wy+d3;ovz)!6fX1Gc}{_W-v?I^7DU;+%Dnz%TJ$)W}J#tpRBUMIaN|7>t-rdIgE z45WP}Dzp>fF?)-c^BErMQGgsahlg+6m6f1UEI4dR`+C9N9^b)<*9?)A7+>sga&_<0 zE%pALVOr(fzArXA&Wqc5NX-A;_~&bn=dAynJ+n&lz0xyPO@sBVjj77J2OraNuS zisz5oq00J56ag?V5+224cRmcL41=|WL5EEeJjLV(1!?>r#@;)g>i7QxJ|d-((xi-v zN*QHl6P1}#_9`5EWpm6_8bW3^Wn^=3Y|^lf5wd48l9hF2->*yc`F$Vv{mvq%Zg?)u&YjU&~VOGv=}$;3~ctSiT)_CUN?A&fDdnvINKBzH4lx>brvO z-)z4u)JJdxvwQrctcwwS!Lmn<^_4r-KJ&1&%4l*Mkn{%u&rmu3_T%B}4;NNf=}*$A z91zuvE}RCC+ub93BY%MON}{)|-;Gb*y;*emwQmnp@2O89Fv6mZ1;Q4pyB~`lE0D(aIr9%FH4P( z+cmuck0-fVy7SwJB2rv$XEUgA83myxZ(fs$pPrbkPy?Y{aEpljk6Ycj2EHP|FcLi1 zKum@OEt^>5F3i1E)bdSLUis1W5k5{#Z#C+oOg(6p!owrgLUznnArvRg zW7)$Sm%N4uNzd>LDi`91@ZeK=H9gCACs`%~$tNt~a9*1gE5DJa_g$ylb;-gL>DJ)) z#M`A&H!e*de(tVBJ_g>;OS6TmaPM`(hB_|Cy1V>v9_{cgG-ZQr5yVzR)Qn}FVZoUb;;;D;I8{d7PFDau3|Sqhr9 z2l7pW^=2#G1b@$uZ{}=epui(jE+y4$T}!!3HNp&)T|eO@(YX>LOsrbmC*0RQ{4d?f=H-0F3@ zQs?mKiXpMC5FV|wJk|KH4>v#gVK0`ey{!`FxW5hsz6_W+8r2I><`z2c=Ux_C4_ZZ4 z0N1Vzi@_^A{IbDygv9sRe55{Glwt7gC!WvXZa8XYqG&(BRel8}R@9WLP5>aq5e^rW z6Q4>e1FAm?Cdi|+uWQDi2D0wHk|u}p9y>{n*#En=V@*+vxSe|@AWjR~hT zm@WFg|B&C3FC~-HbkFFL9rC2K<{I3{ULZm&U|pGt=0MjbV|?fnGJ72m7YfJiNT&Bg z4+z5m)6H+IeR4iO=y{hzn{L$1Id)RL_t4RE89hP=pLri37%S%BI^CraDXdES{PZ|7f1FB zL5R~cUh3lkOyUC+!+e(}{Ea^PpAcxuS8+|ysOwpg$g2}=v2=!gycU>s_a@Fxg&(j* zoO$Q2l;;Si&V|B$$0(|K*SA%cIz~C(Sj_Ij@PXgolxs7C)84VLo0vji2)U!R|Mfi3 z&*;}ve_B?#T0k@uo(%zipQ=|`k=nP6GNu4qH^NKuUA#m7oF4Oa&e5H2vIwd(f`o^W|Ik4FtXs zyIKF3=CHO;0m>a5oXnb~b{s^W&bkYo_?F0G6rV+e?W4gX1VWJV6!ZIB0qswOjUq_U zZtAh4J;RyeX3SH@dVO-Lhxo3F-qj5^LHyT^E}|gua8Np<8Dr4&j^*>|yD9wt7t8kg zPD3ln%vxq}WZW9FLsG*6V-wVxpVqO*wwE)q+|8Eg(esaB$FLlR@X{d`TvcCC<#o1z zX}t03h5z^88cksXx`|qKf6phl^3PaF*WGt{9SFRXm2AKF*-mx} zlyKK@M=;E3Q0sW@>fSpZw%#tkCGdW#dSD`*rIWnTJ;3Cc15a|pl`Q&h{LkyF!Rt$4f}W3sy0zE-&l&*-JcfdY zgm>SK?lPu9HD zh8U&VS}bv9cM}EWj>b3s`4|uFe+@}?S9(^itO4kC%Dfq*v|VGku?9NXyRe_(3#1YY z$3gRPnxOrt8r+*GqB9iyZnaQ4Vu64}b%h|5Cg|Zn0T7`4K;gA*-e&{_Ba(LwABX2; zxA#cMmJt_j&!yRjT)7Jay{}1s3It3bClWM(g7^D_NKnq#f>y^6A`R!i-cgc;9SX(G zy+U>-3sJI1`(YzxmR2r%SzZ?V--=0O0v+C>Ir3f9y$uk%0EF|g7oTYfOFIsTp&KC` zbZ1_6AWgSgH#YbAfA2bDvSLn6kJ|8%x(+|kY6(O=$X{CWquV+b)OxuQ)Xx3yvben7 z-#U5%b2Yl$&7zUBxtmzJU*4bg-%=7ObsH->87HiIlYLc^lcAqgttlqRuiH*;%#D@B zssCnB$~VyMd7L62_PUY_kH;!?7c|In~rTE}Q+L(1PWg;6UV4R`;}7|t_k zRQGrzYNU0}eQax0TW|17>FX(mji(Wem^YH-^}q*Rk~C2B#^Mm%2;%6j*f>GE>j>!G zox$pL3#B_BWW=rfUKO=bkl*d&78tI7fCz z5YLIN1U@q9X!lfey*>yG2@+h`dj2y@Bk$}!^PSAm=U-4`?$_yZa@KTAISMxp(4{AS z5PfNa+kWAp1L^~tx_fiAMaI?AwZ$CN36;Ita^eDtK^OUCx{iuMT9q4kbHSNXSqoUv zD9BHg0fkS6U>vrZUT}NlaNq#g;R@G{K--rDS|eMKPsjn9R&L~w23jj! zf>poSCWJ@jL$8r@7D#vJ_(ACnubzXJ)pflR=L9stTC6q_culG z+(1Gd0Bi%{bbgKh3>aVv%A?emd?#KwLjz&MfgtUO$n~OO60;C1^%yu|RU`=oBMT(I z(3qTfY&O`|ybhlr(qaI*?TF@#Y|xH0Pbncm3rGv(0Zjl*?*eTA=-#kmFJ^FZz56BH zKsKh%-l9u|`Bvz@*0+!e)9-AtAn&(?YKP9P-_ zh#({Pa+TX)hJ-7`C5HZwRZU9DLM`ndbsdY_zl8;T`?O=RJU<1dgUS`kVq?c8_R9yQ!hJka&#`U%1OQ^ML+e3wq1f!(I5@dpw_y z#(1y^@B4I(jM#^`4vBjpD3JQCgD{xAp^R;JMOP#C(ys_pO9iAvY9_MAN zlk7NNnZacRIaL6;O&E z(7WPE{(Cd=Snq)8Y2%KKBh&3qh3i63$VVJAzGmSHL-4lhMJa?4s^nWj1Nr{57D?C)zWAS(I()mc7O0J2gGyyM5HfS3 zB*6JCT`vl|in#6BYgs7!ZV7TzPu*hL%|V^*ZFiAjO-mSydCCPvE1)SI4GTpb^v+^= z!bL%9e@cjFH;JO9duG@gPj5nNrAWwfziu9%|0$O*C!W z{5vaYPF@*u5RA-CBibIhSFl;?f5xJ~=G)b9);D}IW&oQ%DWGK1*%_AUt-P^}_~3km znSH9u8`G;#CRPG6enRXN#z0@)# zUGc^;i$TfibxDphR&V|;=h%ZtQJ&3SBJH1#zS;KP3Lp;Ao5A9q9=_~`9BK^b*XCP6 zQNfMPDsM5hD*9I0KFNCkkYtFUeb`F{r(@u4zgP+=ea#6zF0?LLRmvJPE-a#m(7FXO!Nr8Me6N-SIl-+#$owYY$Z$?sljHyv} zI{z=Ecc$fl^&(WA8(N6TQ2|wQU(=b_j`M_BkZ=-7%Uagu*oPfL`xhW#-?aKY$=4{w z+-4x$*C3oX?LsXZCpZ??^DJj66 z>i8I(n&b1e;E&+<6b|?8$bIC{fOWDQV#5h)UY#ojFzd&!V$o2J!jv^B1om|08jKb5 zG5_?>o}REA#ErbVVF;>FZkr*Ayh;=PT(Jz^wnDJrwpO^~4q-Ymwjy7cOZ>lOMiAx5 z>xBlKU}t+7Oqt8Tj5?IQ;%~KRCkF-DF6E zi8T6%Pa>6OZ3w?HID=%d4-vNQJ6>TFM;Vz!zo%ur?*eGS#AeTU6H?MwD!^=scU!SN zWYY1VWZH7DLZ@Q&=f#P>;yh@eJN(`kLY1}WYaB_RI#($1 zv+&H;iy(R-7U?AzJ=Y%`N>l*~nuiRjvxLe(GG%wx{K{9i#>LL}wot)iVY3}8_RxdE z*{K*1YpIHxm^VJ)BRFtMP;Mk#MD57J6;$hXGj87*mgCeEvUr;;%R2}t&x;BO$60gOr( zFx{J_BiuU(r!O9JT@)@_*QXvR8N4Xh zon$|{!LDGqO;Hbm&J@g=o^?e!w1>q_RuwBozLzUSMIl#=3#3upe>c8yhsqZILdq~c z+&Y*$UxD&x*P;g5C(!j_4oC{h9S-bMOLC5W^0zjkRSMg|nq)XD8+1yZam!7@vmuAh z-7JdPgdq-r&>Hu|ii6@yY#ImJ6(ztg!yG)pj$;U$qi%T0TGWh`DpdWlJc>|nxi!Ui zE~EXk{XuX)>OXj`2ec8lpydnOYw@=l>BS2Zk&LE{aZrmu= z-dY=}xQa;j_k&QLTeSTgTTMeh~^ zXBh~pZh?b|eM0gXEo&kOvk2pm^b-hq1J^6S;pyv+ngd&i)QTFyyHlC1@h?ahT3=d= zC2WAXNFmG~fPE|o4~^K3*XH{oEyb+*uAo-H^5g`FOyvP9Wa$Bl`!w{XIVv=@k$mZ> zL2HF>!X%sC>r&mxEIM+GHt{yzYa}b=^f~^irPt-!6KqwzRVbC2*rp0G@Gmf~3iEPGfW+~Bh0AaW*w(!b5{M{;6fEi5)V z8x8%7)YlkYs~laO=JxiqIx2i5KN3Fzi6m2 zY-#X7oPC8w)TY1iOdw#ks>A)DOW=U4fDrJ05k)%p>GwO9Y(U3nzM~*A(^5&VQzF;# z^snp7g&-e#WH{J1!S~C0+AY5KdgnDgr_cwPYoML`%+dqIe?&5`Gs<}MsC2ad0xg4h zEj-lc&v*2NPhkh^*|wi%uf=QRpV|6-Ws?F(GA*Uzp(FK*EatDC2MH?OUhs6!%2r#q zDU9HJMNX6>Dx3eh%X2oA(vB~xRj??f`!noCXdcaD!(y0?<5xEiT8jLSlk|!0+;#Lh z4*S_5nL?`q!bzXygJGo>Wbz6|_=OTPEe&!a{cktaY`}IC#Au>n(OBD|JV=t%>E|qY z8BI=vu9q(<*StM#v~8Vl_ZDCu6tD>x75mp^Y!#;TO7n!pkP|g+HGRg=jDb%(rls#I z_1XjGBPO0-4kbBy>OW6ml}JtMNB-Nk&fQVAsv8`>&9*SCkos$YGIeoIcl#?&R(`K! zbp3G(^245qKtG0R;NIgOHHC^mB!?P_;DU6?id(JtPm!SP@6?NGP~rG&p+l$#vV!gN zI>1d47WX--+`uAp4VwoxeF>xHSPnh+rBGhWp05;anaIXp&C-GS0lo5Jdm|_ImgZEt zkFaTTe`g54sMd7O^O0ZX z=1u;jLcaJij}2EB$X_70qQUG|rIcs?I)XXy>VdKHovm<=(m&oAdJd**DNc-G4j+?U zqmzFgvSdj$(Uq0%DOJO{n9R#V~Ej9u_McUE796iDR z#o_DHf|L03k(H>hqn*ts&TqJtG?IOysfJa1oDt^|;9u@$?DI714_Ydb(RS}m>rl2G zm41?UwZsn9gx$8LV`lLSxgMOJhuM^+cO;SBQnN1`wAmH%cBR44j!XuBs9!jPy?!8%;O&sSyOMP}Ep}XA%6U|8 zSh#PW&gegVXtTW?*1GO#aKF?xdxl@6Fr;qERlSU+{!D4z8Yba?C*pW5Nux;as*J$X*CK z_h#}>;fHw#3S$}AJ|9~70R{NU(&s3<`lX(94CXfEk7M-D;{??npSHDa^H}aC^4L#} zuD;Uc`}5T$U=cKsV*-n~ujAmww(bB1Q8RX>#LV}9=#i(q=<7(?hH--aqJMSkKg<<_ zISoUbFrQxQHVt6NRed>ARmGcD1G9p-Vhujo3(^1gjWHP7V_<|UwVw!r14RlF zqAeJ~_{--lpN@QL1_7c+zm&m%gmaKZLRIGqtgJSQE(&Nvu4%V0iGBbWkhHaO5KVH} z9xnw65vU9ZZyTu(l}C0q*!M%B@Y_}9|4REPtyUKPF{@hf2U}YrS?3{jX;P#18EmOG z(}c=Ds2)QF5$K2AfEh-BjH@EC`cRNNLu-9czo?*5OK#{xrMue#n>mk)mQNP zrHQnnPG`_TU1Yh;xo!n*gY=$4wplz5`J%M1g}N z)PnmlpsPPFO#@vC9Jy64Rt1zzGDrrDwr#3CHLZBeR$jQ%Uo8$=s^}9O7Fqgwr!_^1 z39hZ*J?cwZXj;;#y_`TqY><`DK06m{EAOB6i*rV6PHb! z1h_}7X(|^FX%lGJYj$uKC)f*I;hKJ0sQte0 zsQZfrZbRD>pLg+q^sgMzUyjn(8`*;&dXgWHTmXwoUlQ{Q`kTT+P~wzAZiDoj^Yg*L?vT^=MvQ_1(QOKsF#z(yty64~{Ra0b*z=7Tyjihog{{cU$l1&j&;XN`n==Z`|BLe<>N6PQ6sLD?Wb_;&F$^GC{eNm`juM1auivs z&&4`_$bRkc=aMcV`iIK=|4JbLiENV5t1 z-d`$BwvQD_^Qo4*MBysJGCmr)_rmr~@lxjnd0%kf8whox#jhX%9qQ#bk?5Kw4KUd{ zSQu~cqNvTu9X*{7csDCbxuQ}7aF&~^=w_0z>RB+XE2DVC$T6iOa%g^kOy?Pe6e zA`)i0?u53e{G+OTkf{62-&A}@tjg@2&ig&4c!lDgze~N!98=c zwd%axc}P3A)}M`-SgY9n-L>t9SXzu8xAEAmonQ#NvWc1VS`dI*?0{@!nLb3H3)-FB zv$OozeFux%^s+uC%htoXB@nK{=@0=PKhK=@lY?L|heU{ofy=NKn@uC&1k zjL3I?QAB|5&x{{UgX5p+7V!tp!7ms9cn!Q!<4;?92A^W6xVg=~p6@jmihbg*2YJ<} z0}L)tK6@kTMEvz>MYL(buNwbGQi-1TN5JopwGzCo)$r}*b5GKjWwOlWYv2NWeOKOO)0uuS9w5Dxfuk9v*p5 zP<@SJF=a*C-WRA2gS$Hy0ldj=Pc*^K3OZyJ6nW8cAq{giV954i+hrPFyY2y?ahSf8 z@v3J;)DIxy2sIXnfq^gl(Q!BjD7iaAZ$SkpX1oI=X#=xM_8tMHttVb-tMdMk6a^7o zi!L?Ac{@0bKinbVKc7B#%qn1V3Tqx9``$yrh>tplIjV>nb z4LW0|$`%$P-*YVcv{OhLXK|jPd{@H94Bkse(*DnJC~o(EjzgF$Wl39KhTWJMDDT}@ zmnv%{N8UuQT>+=p4qbk)+A~GbL-wFWXOu;{F?hCi@p9?yAT}ixfGb#qU)c+{JZu{o z+4@V84PSiE4PRQ8RkG+-Bl{DNAhsQkAZaos;-Ija{rc>8ey+=8*j?k-2+?Av?e<%S z3#c{+mJ&N(g{KLG1222_?n1Az&`%r3gpy9I9;5o9YqU$Tj|eH{HibSLqy{jne<0w> zVk^PRLrj^lr-P<7JvG`D6aWi7(7GV9i^jPda~j=9JI-h5^o{ayNE%+G7CXt*eh7xfyO8N4u^;>mWSNq9ib_8NKf$Ij;9*+PzRy~shXr57Oy{bZl= zQ5yo={kC1GxzM7Uc3Ne}5KJwkvH<7`k4B_*e|j}T)(Nih2rwN^7r=I2Ld`kpT~qA$ zq%wN&PNK}KcU*gS=WE}}9ZO}*3#S3sBb#DcwZmV1#k0feR+mS41f5ob^k#+KHvM?x zxV4iDX4t5ohlENKfRlw?TF>zB(E(*eAj-AxvxXtKo?T%$s3RjT8$3a7Z6h}gMWL2C zBfz&VAZH!WyeqtMHyB-{k$!ozV^6@+&kX@n3GrqizD%AR{hF|!kNobq`$D6DJj9W# zYpUr8a9k4s&o?UKWbrVM@)0tsAxEn(ZF|en`sPg7$&7-cc;j6FieBhm68i;Vg3OAM zymO}NQck_+@2(9%?WMp!i?ZvCD*)FU*`}afJ&QdyR*fp=L~iC1UTzdMV}|!ujZ%z7 z7igy{vjQ?B`KeP%iE?U!>ZLGb@jP&@fatNx@bPuVahK}`8WQn;D+T6_kPjVxSWj}I z>T1RQw#tyC=`|MZXBOrXS#Ua_bfEApBv!8ly6OVhBP?WmQt0EM0v8yC%pyDCj95-3 z-=Z~`_Nj27GZ^%;^>D;A4r*Rd_X&ZFnM6MZVO92{@{tou3nGhOq>xf`h1V!+fADYA zu49UL7PG6Xl5#HNX!;1M7{(HLTVZ4cTJTSaMX&OXT zmj$8NDNT99(rrm63jWNGeb~~JKSi*6UkEoAijD(!Nw#@+1KLbT^DAdkOboYIwSHIc z#pJcSdwR7f^P0}Jm>e~Q)zC+|oFO%U=Bl>7y+H%}hFt9hDX0-TDX#PbvqiZFsU?HI zrOnQ@gS1rf>>SKL8RhSC21`Fm*oBBXQQh$rvaf(^6z^l#;?S$;Gpq(>!>u>0U*m9J z-`zfYu^R|Cxx7bwzXnq8oD1k}gIK97^PII?T8Zp2z zW|P@6zxu2=HV^6)LpU_yq@iCZjJ@sfoQvD`>~XzS|hn;UMN1rojO3+MK0q%zpB`{0)EjlI=L7u5_0s=iP>zi#oG z>teu6Xv0Cy2rVAZ2P-+cyPi=t7PTuk%lSM7M{zhL%0w9+Y*YtDl=Ud6nZ^czJd?kp zb1P5ACqW}ws4s3qv;&c+A?AqkZV)w(xlTMW`EfNC{I0JP_P7@-z4N|VzALM4ClcxA zgHE`Qyz_kurCg04ox!Hggz?w4Qq70Gp$INTiTu5GjScM%EiPu&S(NsCXVi#7lcLK& zH%n{_1LQ-^Rdd~MsVyJuzgZFh;V<Xu5fb+zUBc9R^Cf{&$bmbg=ku6LUancFEzIZ(7zpO=pc~7$Oe)X zPq;wy$$G0~gZG;vPi*8Pz zxUbQ^l2Q+6PB}yiK7~c%}#rcY6G*+c~P*x$n+VQlvE)1qyN;# zG$*lx*uivrTIVbDDLmrSmWdI~&u;QO<}2!oyJ4wzVt+gh)oIF|WL zQBzs)RwP}TMg{5n@zOo)T6_?uYuKx4%G@JXJLaz%^;JQC9FrbuBm>9zBw-vJ9gc$i z(C^IJ1fX0l(;Y-rWC$(ZMXw0#ujcbUu@laKfuKLv+^Hh3HK|^$3flBVQ+J1wd&{Eb zN>)pNF0Ao>HB41bVo^2C(I)R({nDIGH{Ri{D_;lX;GkbhCIb)VQ`~DRPV<2C91jwb zq!w?8eHDGn8=pqrmy(%n@WX9-RE}fiIyYsjAlpGN3Qy$!if8e6J~-4y30^G?d4(Tt1<|<+0hLA}W)YU|CW6nA<+MTI zmAt-rcF8@tC*~(6>jGo#e@n^ZOpHp(kLfyBb-W+m=u9Z+;m1*)5l)Z zRckh;w~hUFI;aKOQyj{npgk#O%mNp6QoWuOS91&zE=lR_(1R&fXBx%ge)1jw8xK!h z=64qJItOZtNrD+rK}z54gmlZ!h1bo z@~QsPPQOf1uoB(bj6S94{hPL62*2rE0nXoKibr;{hpB(S)oxzL{PdQ_v8~LLPb+w? z1BhZ#UC}ivLiTj;M@QRnx~LC+ z68zO~`d;;(fWr)xJ)uy8sw3h{%hZM=A~Vh%#)BTzmBKur)9!e1Fj`*4L>0f^Hk-WI zy!q`tQwhx)?3Wt2F4i771!X>Ad>vCplakkoSS3)qBh}=qc-9iW;Py~}uo4AtKWKVb z&>Cw=qATz=I0KhUSTe50EDtRWR}O-;~+Tq%joeQO@2)um|GSW zLu^J-4jo1%8~Mi~JQzjQ&71kClg%Tjagca$`TLU}-hxNrYM*hs#*`Osed;d^ok&w* zq>X|XzPT_<@t7s2@SSNB6z&*YaXuvTAvAroYgfs1&0&(Xud-j*EjKGgE1<8NdIt{0 zbkJ*)2m!y5t+O1IbUgmc0K=L-p@t=#>Y^j=Q@wjJfq@Psa|iD}l6^!2;wnwW;;fh^ zy9VfOI)1;*wxnYA_92qIu?*xAH3RJurdQ;5!Gt!B(hTvtkp=5el=M~;ekG--zcU$| z1RiOmEnjo2w?BVXYD&pQ1D9$_usoj^*55)}Oj6|gkrweCmSXJ0!Lb1F%SW`bM;^)O z{-UZ$tHYFK;+XGGb6@<)wG58EyFm^#oT;2o^%puTQs(iTdn(W{(^i9RlNDh2On&Q> z8W~&c8GBYMgM$8yDWCFKlk4xwCFJIw{M>X%td4A-(#1tm9G21gd}7>ka&p{pbLx*} zvE7aD-R668n%BP7J9!-w>NGVu?&L)}Fm~J*FR&m`M(KoBcC2-F(Dn}eSe+Efj2MbF zxwVG!(QY|IeuiZgmSNr=65scKHz9v&d7HsbLtf9ECJNB*>-NQ~QmK*}?k4YVkv9oB zUUf~0s3Ijv*q8kTMIq0R6*HrGAeJnvi#jCI?XH(xjBH6axc;L`M*bxQjNZM5k}l{3 zZ4+TQi8`nVW^IKy7?1?>P%XTjT?3Sso}_tAHg_T)FYoqVcT+5*^VG1V?eGUdHvWXT z=!(N`5?sb(7Wkr#J3+$fvqyG(kI6p57IX0eWe{5g;J0>q?V3-D0gFJfHkIRtp4Z1z zWMxxQXG-3(B-fMEElm@nQ{ufWPhQj!pG9fz{s2%P6#mdm*IYpeu3XavN_-UVxB$)M zmk^=FaU^sFdmVq=B&dHtEdgUIrnBNyQmFYdmFX{N)_sjtjoEoX{LRsoR$aahrfQQ` zCcWvE1<0tlW)a~k(K=*!{^7!AtV|b|8jslq+pb~%uqkI?3oM)Y3|s*2PtNxh%V5=A zWL5(t+-@Ev|56>9ZfVamR$BNn&)k72Bo(##8R*1@-47_ll1XB@1k%q&Rj*r@F&XMw5?M&^}51yZpz7Vf8?dS>Pw!# zKOlv*SO*(WO-nsusvlTD%}d^X!u)fyb8=j-rh_t%0m7NHXIof!*A#w(INJrZEBGH( zGdOzo*^bO8Iwy@;anPYxhlF)J!b7NJJ@3;I6Y$)#e=IcTlL>DwGf z<;=Jf&lvKY?UQ zjL_wgLV?F9kD+eU4M~lIP!=x4%-}^~;)a(9Xmucm#o)6rgSmR|1R6%V7!L=3Yr@B^ z>Ra3SBJeCXioGH01sA8_U4eFqbVvGMk13OY(T7nVrgDy8Hq{vLShMVgaaP39AD3RP zy4b(Ievu=X!BTTxOIXe1#@@A{;imnddPd=xD98oxG^^V?2_abe3dWn{GA|mi7@3i& z(a&0}NwO++ks#;z(@wF1W7eI?1^3yWuGA$ry28F{I$w~-n8$$KoNY?FL7k8WWGR(} z>DWACjNqHA*EqDp4z!X1P5T94v|d5>^3DQ<#!VfVIE-u*V=Iu9lmu=(qp2=Hg5+R6 zu0p&9IRT`3!GQmF51e>;YA1AJr+{C=?+gLh-wdb7a{~l`hCTK4Co}G(__OPlsSn2( zQBRH|9K|Jzu3D2@bNOK7ul8v`-IRT&-!6Y$bk}^?69pVa)QYeEVB63fxHl{q(Rc`N z6OP8rh|fR=UEZ=%^7%SY{m7pJg6=NGuhIe4zz$h@0yG<9CMQgWbU+m%tY?x_1|p-| znsykJ_<@-a#T7ey2>)Zy%hYUEEqWX34YyM1{hWJT6`EwjRpqug8S^kv0#M0K7AG1%tV{tyw}0<+L!y^|M&s%PMEGO9lgezEU>?3jkPO*j+i?}7wM zXzamYg*z)fAokrILZqDZIS1e*xKMsq-3N%y+PGVMQ3Ib?_o3rKia8M6whh?Evz?AD zmJ{apG$zXIEBAuRd};vf)lm(G91&RzN3}EG&fL%(SO>)-f53?0R{glIJfuE1x)wsJ zDaAs6OY>d8AYH&wVhBVIlIvT&SAZTsr zwV^07-}YE)YOD{tglp0+i?t0sB@_Jwi#;EdJjXhzV}A1EG>)XHNy<4q&72xVrfJ4} z*Wsz34|n|)_iJs7`!TN)VVrna&e9e1x6&Z zO9TbFt?JwktU1*f@T`$IdU}g=NWN>v7G=iCLkFUytgKvCaYLS4izfw6eJlK1_qt2% zYme8KX9XnX%D1wruoo@W6i4u_mmhy*Q;yS`AhjzuX`a^h`4K6YA*rNBrsI_R1liIm z`Nr-I@|DL;A@$j?TP#5Mo0$d1bq1ylAJah0ZPW)TkVCN4JpmGdAlt9M%~d5QT% zc#Tl+1duWi#(Nf~s&+Bi3zz###ryO_6zh3*sI%9ZWOymU5B26clwuduJWDs0_eF5a z{cIEX{I!eN_y5Uc^^qQ8D>`Wnmnkr-UcVV;(vk{EGp)*?ccuYGoXqYcETsA{%qk~Mt1t^d z^udr8^$NFQ1iX=~2i+E4(sk~@&^`-Wk~JN3QTLL1@z3oIFZSuajYghdW+cDm&j&rQ z8G_z^rmuKZd}}3uE?lxk{vB+TKv8fJ=1%ADDcV@X1fB=||Jl0F|3h?p*Rfyz36gO_ zB@(JRmO$rQ3p9>pbE(6m5oKXvct{8fGNzyecvCqma*3-@Hz|cS8f=k3gP4zY?sI}~ zCjZt=T>=Kx`&Ixg0a*|<`&ghZPidUPNEm*$uvq~U8=(@^rz4If080srpuG7PPX;7g+NNPNlW6u`VsX)s|V zM$pTCdUl9V864bi{H5FY6imZWLFG%KXhOz*Cb5(FB?>QRqAuqc7*D?$vGo+~`A4sN z1w*t55is|LK_QWI7?wy_Fy`^U!2~yEy^+uqd@g`Efzs;M02L?+0$X=@TlcPand0l1 zz^DJNp9C|6G@S(#*qtvg$7eh|MZlYWEnkfc^X3BFVn~Y!g>fUVD`DCbJ4|x9$~hoO_By1yNG$6*X?8eEj0;?7u`eiAUQBzL%Ac4 zyZ5If{R#|?vSo472o`HB0Qip&8J{8C{P!Zv1h~w_pjaSO zE>Crzff?HT27(zdcOJqFjvbN_bN&@?842iz3iRIJ96bOU$=%S&xmR^5OAwP7JT)q> zX1JyIKW^aTG@J+#^U8G}%N5IpO#_TVlAt3oSSti|B^qB0Od&v5gbf`iSuSPrVLqvm zY~^^GyNSDwS)Kkrt<@(-8x3j(p}UaYFyv4I;A%ZMfTu}=aCCBjE)g%f%*%mc2?B-I zKc$iv%!uNISPYnOuLY9WAM=9+`$(WTxd=o@NzIDi@yl1)kG`08ft^>XA`5dMfZK49 z73Y$tZTPo3fonpmJEm^!4KWuy9rM6iV8JZ?`+Zh@6XP|pLs!^guqf*c^Pb4BJwZ(Npk|dxaFfEaI+{w zvp^1>Cw7!g0^8P3-Z+r1_`3CDmjNg-yAe$Oadp!@579+-+!3Q8^La zY#y9+=bv4-p3a!lMZpmJ0~LybY~~49kkLeEqmgic0@pM5euvI$4mud-+oSRvlKJwK3O%o6_C^3tZ|OD=U?7Hg3bT$#O^P@L9+FrMjJHrZ>MKLU4H|QF;xu#3Z6e`RsheUi`Ng5z47I4%KOt1hU}45?v2K z&_AM{XI+1~rvUlG@9P2mUWx@g8|hDB)%zW0SO3DU79Mv>iZX6&Zaaue_3zq^tb{fJ zsuDfWuAPUzC`iO*{ADc@eBdCu^e1@+YSOcb!>_U`Z`@iH$1KqvRT`lVD!AN0$$z$Y44zt(}O zi)hO0j7FfL9EG2J=V1$%*fxom0*PT%R0{=zJaD~@?zYCr{|gMo4P^X|>u>^B6awE+ zV??DdG#Fe7@j(qj(otDj=f#)NyuvcxF&hXO7i>J_ci8 zicDF{Y5ETD90cJcB{7_Wf*SPv7U#Lj7nN(5jWJIr@m*=4LgRK_G=Xs47lK_n5d1VI zktvSHc-0zn8FPj78n9(;*md0ad;ZICk(x9whBxbis4KE6V?mY|^zY%&)^*?gV1K0V z4#J?TKEnR-#G)APBTwCJ9T=B;LR~eIp%1jCrUPZg;CT2nzM@xRFKbmidKAUs5;5tm z^>Ik%N@ayx0L(-lmWm;qfv}K&LYs|7VjkMp?%*GG%X0>Tw<5b9ZW~rJV<>nj6X+V~ z^GWTnjW&23+5W=SQn4;$bl@9L(wIY&z#F2*#i&?%NV9`n(2Tux11am+WjHn#7+M@D z4{Yi4+jUonI6`Te1o2(T0=EDKQJ{JX^9o*) z)6Qn|I-9E$wl4aN*56Il>sI$lFRfr+r$gX*ZFX1$6AZpm+}Tol1&G}nHyRz>SXfg= zf`g{b%O{UVw*x@+|8oFD=ukmjv zUjY1~kK+KH1quvC5yT2db0{Ui(`LHEQcnJ?`4@YzNsINjby$o;RC^CTj!#~N$I+o% zv!~mmJG*TDdA?<@DiTcF>cR@;C3Y|;hlYLVh))UA>S)l_;nEq0gGaW|s-Fd!$bmaC zBm}$P(pWy|uDI+2kVeG(P-Kf`{|(+VR{(TKmhuvShqR3CG9z4cDW9Je`f)KC-ZS8A zkNS2MIE(v)S2OafD+L^VE!a(nu^QeR(+qr7~jE$aFf|s=d+ht38?WBwmVJ& zWd4a|p7H8Bv`~djD%Sv)HTEK3f~Xe?>Wv?h1@ZlQc(yBBH;+L(vAyAAVMcCZhiRlEYyES{ET_%dctd`!hmyDIt@52PX4O?(+E|h_3;Ox6d z;li~&mIK>ks3e9S~!2zfa&A1aXyKA`0emz7^<4Nbb4#z!?gC`)3ZQ7dQ^ddk#Az&aZ zq23LjXD|qk>Oux8U6^=8#i!$>_mG%{AI{8ocPRZiegfj7`#|1sN>?5e^aGo_^!^u$ zvy7D`l{;cEEeyEsVDbh2`lPn4$(?(*uhs!8`uA<`-`UwH^?R&Mb3@av0yCj*74IP)OdB6JHw!tp~TaIq>1oKm=2TX_}@Qs^#w^ zxHD@LrOa)51#y~j(7&`HgU~YqkU<=FnGsE@2s)(W>K4q&$j>M_o39a`;%(k|mh_nN zy-)u#!Fq5e$Gs1vI!4Dqf~Jfd`_K47rXIvVlJlmBtD5PmwfQ(lK z$Y9k8Wg;bnj(3E(kfePy;Nal)L`T=K4BJX{|}b zrQ^nhVg{7*JvpL3%oP``&%e9$3>Y( z?Zbm8sEDqC2#BbtAQDPRW1@l*N~fg4P|`h!s~ChzH%JdKz`zV$qI5{dP>M7|cfRLV zai8aTfBdzd{p=3I9p7`#b*{K*KY{Hk7vat>;MCJuE<)Df_zvk>W3=PqwK3Ozplhu1 zrx|5w)as#$xonJe?Tz2x64TrcW%uN!3=|P=a;{Lvj4=`n`VldB8-+RmZ^ zcR%vn(~ECGH7E^X9QD>J;z5vAcgi_0)O6jgxN>sntjLlT?;mN9`%Lo{`=UL|t*~D) zqnQEGn_@$x_=Mm;!*6^ZnA!qs-3d}}ihR?aqtWj>v@E+Kc?NGxtTZ$jdPclRWlYU( z&h!_DM_{WU(C^?KV?!MvolKnQP*#^BX*^al4onlsOwNwcPtq3+{(80t3WS&e?v6{!1^7}xEthSm%%~95qxZZQB2=;RZRj% z9*8&&)apJro$)Btr%RZ{hj{yhoXnsOnOWtw9W3;8W^1ZiOX3*6akVsn=0r0;4kheL zky!n=>~1ibV7S>XT;3tk(y^A~bAD1xHk%E&ymKPn0)wq0k$5UD@)$l%jW`~P#?6Yz zVG?LO;e9aN&YNgU8JRCOkkqLsE*{fdB19CDok7NQHR8BUNhhTHAgsDMh!R3H{qf-Q zJRDQ*IlksNaq^#uh4ncok+mS?t+%c>xR86`OAs`=V7yIQvIn~X4@OE#)IaJBysPhv zHX5leHqUVU+2CALg?Rg_#Ifv!3~ORaiENYv7hJk5@f@SDwb~%V^^e9Ab$Kp}5MX(~ zOFsp|1b4S8e>eu~aE83+F6Q-@J2JE2Jk+mET|D<~$);~hy;&d&d^)+7G5bU`__9Fe zq3eN1(hMM6pi8&M7_llA^+Hd+p~_6t=Z3P-JD3f%=_8^pU>8z3fDGI~(7SMMp6Y#R znISpCfJ;0^QXS=fqE6dfS&8VnoencZ-5=Ywe{`gYDa^Bm+K?@xd?481Rmgtjiqw$! z@z}KUkCr$;vO~{0*G# zRjK;CU_vbNAR)(Sm#2Q=B!GyoICD?F^#R)|Hn{Xo*R;X^WmV(QE|hzxUy0KgSW4LS z7Od4cR{VBoD`f(OJ){O5v7I5k?5^>{+djDNGeM2Jwe5r-St;{H-9kFZFjLw3=Ea}Tn8I)hCV@zJ*tJ?D z+~PjY!@7DN%ZYl?gUQ*6ClHJE1k_f*L@^n6c2;(()sB;O};UT_o-UV89V~<)Grhg@MC$1VVs-o3QHwz;*A&ctB z{`^7^^phf0u!{GrfdBo`k@D`$fE9FF1`r`aWO<4R0>kDy*twjaI8|#$7HGfCNj)`d z`wL(?t!+>rc9WyW^@Zt*UZ5)XW{!WlB(FikIl3ux12EhL0P_M;X<%pHN#+-EOADkU z<`4Ra?$XuA#?qy&>F$D;4Au2W~9`YKLlwzRg)JOliIFjwsGb3{16xbBWnfZ7&QPg3&pfE(z5~{Uah2} zHPkX90v=;z3$CWA`!5Kwa&)AbI4RPtPa6aN*4s;zHhmlmIL2+Ppl z?_Ao1UTg@~O4;5oO~Glx_=3A3v%PBNgLc%jXq!R zIDj~sV{THviDR-TRKO~(>PW3q9ugaPAA^>o96~$};;7BKvp)b_&>dNVWFM4Hny@sX zECKv8J)bGyr;?M*V-pFh1CdkKa8&$6dP3D_LX*0jrahkd6y{zUlS~l#h|YyqsyjOf!}mU zV~lnN^Ijxhz8SJ=tyvH-8%a4s5=hGzqFm9kq zz6QJgMLet0^b6Ts#&T;JZ*_1!;|jxt3?mJ0wMd6+oNA_?QCJ;pIVRbbY;>AsclW81 zE_S-g<-Du7xe!Adgk@n6vWA9Sko)p#wV~)}b-wU49OR=Om3$+})#M5`N+IrrfgA15 zu#0@-_NO7;?~DC{^BfQ{!(@*yk)C{cefaRU1nO>OnISqo3~1Ob{!#E-UtS!EmfV7^ zZPYPtO`+}-YE%Z`_ubi8({0`7B*Ct2sFOW29M$1Jb*9n3`r{+sRBvVMQ!kzGZhc=a zlT+QKBs%otO_tT_=i89f^Uk0;0s*9y@)a!`SxqzF-1qa5_;>51HP&ISfNp$o!yjF|3nzUjV z_~R~IW4gqD4L8*4dNDZ?atA>@>L5QfMsZ8-K6OxRO-B_MPj2EFwuac z7@b6s4-fK8oH&Yd|Hdw#^hSQuRZ6A%9DQuVTScld+|VpdR!e!kk)pOz?%#m;T} zVvL$aV|L$|zWw&}>*n~2g4eEVeaRP;w_mhSo9J#QzLm6n_s&-77!!voYLEYgqN`&u z)HgWB%!apnCXO7fx_^W>WX(;yQ7q4X7+gVQbMtN%&u>OvfAMpl)I|&ZQ&TV_NK?8? zy~YeiH|qH z`!sSr&5Y(48GcGdw>OpKL9Bee*M}1n>K2c8=X)RdS)u-;LAspD%b@{Kv?MsVbifnJ zhIE1=H}I=@tH;bk+tp+yo-N{Y5#7S;S0s|{KhEBh)#o}?8UQ;z+t4CYS{jAr5>0K` zm!_t2&es=b-uIZTIC^dI*(U0V&jj_r8im;N^+WR3fT~{M6Z3xD2Wr6j5@!aC^LDx00-q6s{4qaEh?K|&lPZbsYL-~#Ms5ZQ<8rqrwtHay+ zdb`g6x?WH2-Xe)s-^Bw=5CTuH`IhK@8XCS!d5lBt-VZy=%F47Ix3B1NR}l0K9y3YG z4C=bvEnAuKe8zmD!~GdouGI!g4E$mLISoox=E-(2LtkPV_&`PbJ^-O*5#r*zQKbw^VgN7y`@)TSFX0+w|kfO=D%y>~nb@`vfD?7^`6blXa zHmr+51snwvOCt19js^z+qHTumf%m75RUhSktxEe~8vWSJqTkNK5@Mta9657c znn9{#7}%6M`sv*Ql>4OY>}=Uam4^>M!Q7$FD&-{)Ed_wPsUqSmsNEv0&Uw|}aI&P6 z>xOLqeUgK)@17tQmznE(sJDxM&cpIK>56_u5;#&i0p-0eRZk_8L^c|m0DN2yzELaK za3w=lwSUp6BS-Xns8RA)85IMH!gb>O4GV(ZeqR=dF%Pcvs0A$bqo8SLG+>^}4qF3d zFNV=l%Fn>oN&rBWB3MU*U?*U1ZVuaKZ*Gpui=0Qou{OUS!pH-7P}kgn__TmE^`&fP z&>;b-GaThEQm2hGArI+z5rW>W9^UzF1MzNh%uDXjFOP$1XETgfNSv1mIBU^qU)@y( z^7X4MR4Hv(xXdZgj~M^yw_$420W1126r%2r8Qu5FtDgZoL40kYPi) z@F=F237gs2d>5oM92RcS)-HbZM#=x%A2VSTisFQ(1fm)k)`t-;6s(IFEOB1-MtqbF ziAF3P|7Nz&!9#RSo&hEHp-Ai}Cvz~NLN`ob#-2S!=gyv&p1HQBJAXszyIMV!VK`3& zJ8tw9yB3^s{COCfsG9SeU@6;O=LH6Yo*-Ad^B6uW?)tRg{x>OlQRZ_EQlS(hiozYP z({+5cp-XS!u=y6(qJvXEbgQTp(z}koQkTd!JlGd1A>E-Ajcw@ zG*j5z{18C~*I;2z08wo`MDL7x zx^l*nStk!n0`aNG_f)>B)z;)dKh5|&e*03fhPA+G+pERk=O$G(H4mRX%e-;p#xZ*O z%5VyS(nZQ}VH}J51oh1BDM?hvA=L6&LNg^U_s4$dU9!5bk9OaE@SqJ`A{$m5SVapH zAk6@aNO%Op(rSoMn_A+7w6VbNR)daAa%9&o4rj-dw^?(SEFNd2oSV<-khXrO82%wK zJnk6tmagCUvT52Entb+bZGUI#9oPA5?paPwsORjG{nsylJ#<2?9ZK4hm!)%HE0T!x zQXzOmNed1JF*Mw{(UZ2Uj$6;EPkjU8_m@2PYwFI9RcZnf4a$n2T9pb2WF1NNCm53m zubodvDf-|$Pd)a>B0McPWuHiZx3>n-EcHA1>n#Ton0XCeALrI|s2CZCv9KL%nut;1 z;hM37`g(fD=#+{kOY7?H&pTIFRk1rauqSW&Vm59be>ar9gh(r4?GS=@)lV~x<#&LK zS{j+ct#F*FuR{4D_5mi!(C9+cJ{imRB7IiRKWPY9t#+bx?x+dD#U9wATshuXLh-AT zp^CxHAHLz2gNF{KFA!iw+&-2U#&7)aiEGJ1vkcv?3@JN&EGqRotb5zxU0DRZL{Pwh z8)PLdcB9kxOu|)o`0>$cXN55a77Lz>ZBxcFHtoIi3TOXP1FlAM5~+pubFQzknR>gU z9k)U4&rJ1Lj@M`3!GpLAZELU*?viZ-R$F3JmBkH3pu0x>-zP-DW>p$j;mWnL{VrD!RgZiY~=a_-CkY?Zr{G0 z47%X)Z!s^Z4xUVU$5X5dXhDiX6p-L>8U3KWX7sHUG6J^V!S#h@_%avR`BiZTc&J~# z%FXyod5{NteTrdNHl{DE0;L0?*UDR3X5fm~OvEAm)dc*+2y1mUHQ0=P7(*C+CtCGo z$u0ejdv=Gu@4QQwFqE57vNve)&k7!e;(&`o=kM?T6kIPTyeAPj9+n@Sr^Gi#-|#FEIU*%6!dV{#mrqUT*5wot>&$jza;A zU{!+zUKzC>r>762sDW*)G3=()fd#3yJ~?TMeSMn~RzPixo^3qwsv=lvpYngYTO-NZ&13!~eUxT3d7c1WTLZTRiNmg=0`)P!1WTg#O*nh<7=c~dmOBwK7jJgkXFzN zWq;D58)Ree(qKe4a-5xLU(1)TOo7qg@ZsUwB$qR7;HaTRosx849^7PtbJcR2V&KwV z?)5xy1dcpDU}FIDxzQ5-u&H1TH`Cj9B{eONn zz6(wiG4TVtGpHy<*ez7vny%tj-`^bmp@kngmi&E&8?U^j#CB7A@Ol)R*oAhvxbfJV9yS(gbE_A7r!7P z(miy&^AYk;wzY!rJ2?fHkF7v+`!b6XO(ic}cy)wjCN)>+W&dSW(S9v<=QrpY{U>Q8 zo}r*5vcRSR?c%t`N%;{kFT=r`xBRVl!Nsuuu|)}YDzbDFnR5mtv^Rs6k%r4xZ0>cQ zGU8N@J9G1u{8TF~v@lNsYXv<%urY+x0&5GGU355(lZTHlt71gVmfZjQTPfbS;jxNx z(XvUA8h5DO(=BfHMtc6OX7iKwbWg&3Z&cgV+V%Z!4%*-QBg}(_QggAnfbRJ5agg&h z!Dh7$l-xyds2ZLRQ?Q4KCk0&$@V5_=pc%>kyahXUv`aClHidq_N>1*psRcX_%Zte= zb%Mm*D$~RO=gSX76B<;mn-Jeg?b|s#3MFzi5sv^+*B?rTPR!`u0La_miSKPGpOXPU z#-xmC&S=Cha{oHQf2cP~X1qsi>Zu_G+W z(Mj_2DVY{xn59^iq|FC6u}X9Km&Gd&Tpl@j*S27Iry2iNr3G{EypC#tXC8Fal};4ts;dymfq27g27}_CA7%K#87t8+LZJyzEg-k& z?{8!{UlqXs!3nAD{oBGo?=4V|uYqNG3LUn-gmdE+u^adw{z!YvMS=x>PAU6a=&Cjaq<~WAl|xC3s>4iOKGU4bq*8$xHaG zEZa(EdqoEv)Mt_P$*hP|9jR)3^G~ckDuiwT8j729K^hk;YwOyjN^d5Wq5LmfPTZ&` z6^tk21XY$F4VGzP+a&aBuajM-pID0)JA7C@;& zrjo$+-JFlw<|JL^{TBgC-6iPV`Sdf@TU}baOoa1u6gZ-5mh#pg5nRVz=n_UQ5AA%Z z-O`q;aTytxp}b^rhOHvFMj`;3;q49PIq0p8)%@X5bStzdn?pPp1hDvN;dOunjjGO* z2;0C0$!(X-&1p;r02~3(GQ?vTJ+!=#qUaI@%>k& zD=iXZnZ;59o5N`=KB%?Gd6|Q<7C@&~c0aS-ec%T@yI(EQwrq485P$%Q8tOpW3YJ&Q z1lwaLaMJhgy@8>K`BXo^TbnSQ3LNB&Iv|aZx}AmsRE{w)sC_4V{`|QGn&8LCl*cFY zpo1SZkq+;SvqC*n()`a4`_U&J8ER-eOJ2IKfgQYL&$qbqdXr?sSWGVqx5CtO#Sw3^9SqJ=w?pzwMDU(@ulRPp_DmMOQz~!{ zv%Rj9rJ0#IoW=^xVhfCc{C1P7e7VMVK|076=Ix%{B|!8p_f)Hq zl9~cw^eI(U~p`UoOC0~a?&{(&w5@V(-f%N8(-Lf7D)K9h{^L~2x)KV&R2BZISU z0ldj3K!Zcx?qi1!D;So1|Neb#LTB3~&`hvKj|pbDiRMg7lvpLZb?=X6?fq%=$v3k) zWRzS|IoK}V7VXoFK6sT@`DqcmJ?&pkZ@N*yA%lwu+XoE#!t(^DVL761{8*TSLprC= zDTUz}BH%aAA4@RV6IfdS6{D8e(%h`c>xOb)ekvC2*DZVEw2XkXHhr9d@j7Ps;`H5D z8WlU`$vtO&yv~sIU1!z9K5!u_7etO1@F#%;#<$+yX>F_OIp$hKSG<@Ys&#tjFSNRfR`$w9Owo_ z071po;XS*4UFiv)0_CD(lk#d@%=q6M6DnGB-7qS{GpIbSURir(=b8IwFY;lEun22H z+A^@2xed!&te-W+{bkCo?Lj#N&AiHl&xm6XY7q6GD$K0MZR+42DoEjuc-s4Y)qB=) zc?SZVVbo^P6vV&b$@_WaL8O=(y_U^~)b{)b#4UiY#m4OF^BI-~E8?i7%A;4v6qgtvm;Y6=Sy;Ou&+EQ16 zuW==brjGM(q1*LRg&MG0OL~3gp$jhxlIjIEq45%t6n;cXY*5*1x}W3qcc_&^Tyd`n zFE*OTAH1p)9X<1&VbA}P`V@bd8?feBrvM8@R+Kfgz8`nyppzVAEt+UA=DFS+6Gv)Nrx>DsFD z4O8?FNeK*E#6@0tEkd#RnFt*4^CjeIeq9}ZsVvPb}<_&ENAGJuq_tp5xVt#U#2y(;Sk3gREH?jI&}LW&>FEGg{=y1aX{r7;kFoq*6oGq|0#aP086WM@0Y^ zt|P;cs$BJ&3N>*5WyNi53%Q)G1^0~5%@Ue*ow`JWt)RXlZb$y&;?qGD1aV!OMAx!C z^om`@Nl8`T(aI@GK!LXJ+Ct);JPrfL9Drc#ruPe_5|s&)2bHr!1=;p%Jb1c*%dR_L zDe4EIY{<*Y3r_|MHs$UF7eQ+`x8jzqR|lEZiABI#2=W3j{Dpwf-L%T6#4j;gDFSCg zNC(j)1(GR3iSGM$bSx_e(rLLhI0NxySa?a3zI^%OZ^k0-)M|`*^X82q37A38s!vd$ z*fIT3X$#b~p5Y8OH%|@UohsueJ6IR*Z^nn*`g_@Dx(BQPVy`74HXO!bD=RB_GPE=z zFVnK`mBIA6RnC7=1d6#!806eN$1k#Mf+FP;4i%r zvU91@hv8C5xUTt|!7EzaEC_bIoTNx#ibI_*-vSXe8Bc~5JKr=Mg;KnLS97(EC6_|Qi?w#V|9#vLd>nWI1eo!_blNNkg6E4QFka0;%-_4nOD)~5uzMaJ zjDxu>-=z?R3g_UIP>;CaEpIa+r6lL0C9={h!W>$pZAThg{u?eSR*!yB3v?L;h_0w3 z!=6JLy3<60@O0rk(iP%2A)|T}n!KweZtw)JEthPkAw2>}eILCXG%uW$y6OUG-d$uC znyI8Y)*ov~NEqyFW|m$v4Ke*1e}4y$EKS*6D+B#6GGz!-ejOVdGs;+b#bhp&)(aBc z1Yp<)k<--)H7-KD&@u7Cac*u%d+=dc%KF7@?KmHO!d`xD8nZp|Ltz(6Uf^BZr{P#9?AM{9 z^Y7womW2NsP>OawD}4Y^7@(G+fl4_%2s65M=M<1AnqVEJ8gt9eQ9(h$2|UN@QMM2+ zG;a9?g%S$-mi_`MYJu;gITEp#1xPUOpOSu}zEjaojSvho(Ix;U0RzSlL^?5mZB4+^ zc>ke8Dqvz>$J#P`H_39*%O;zIquimb+;>PVtZQxlZJx(Oj>h_NEJKUD)&Y( zj7OD5y%czTg|be8i%GG!)4bz(2-;?)@&TSio;vY6y#;;=-9NBtEPde-`?+;CFb3N} zaDAvFaI(d&UvIJ7B&099X%d26WrsKPE(c)7eKUqMYKo_G+_xbL(utPx`k1 zs)rCHrlU~WrFsPH*Z7g7)%c=wGHv9n<%Fk|VKh+PCVal{T(N7gA4OR-J6vNUL|ncW zIDnPhR(k(2p8RO!5|3~>m;TPVwww4^F2VtrF>`T%)Hp3{z}+~~pZ4;G-e|@?>YtlZ-W5-VY2>jblZbZRuv#jitr~nEjQF+8b>0MJ1ojQ-S zC#F-?aQ$e3j|ntNty>jm_IrC<*1~c6`)A7=a(hrKdjZ3_a5Eoim+Br{E6w@w5jG{~ z{V|-iT!T9ocm;+4_)mk^p5#3A4C6^suAcajDu$fE_~nznh@3&%Ky_@CY;`gJaZs@bNjxBxf7Tu(e=(NqQS-Rua6Zff3 zj8M1{Zjwg&3yC%E33~MK;X*oQQ)YX$5#t{ks&345r)((9JpbPM(x&$Q1rUxtvazv= z@TPOO7Y_DI9uchXxZ~V@F(+=+UnPqmDyl@|JJnQQ7iA}AOOw=Kyh|1F0z-8 z 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