From 6853d3dd4d753fcbdf5f874689cdcffb366d6383 Mon Sep 17 00:00:00 2001 From: harehare Date: Sun, 5 Jul 2026 18:19:22 +0900 Subject: [PATCH 1/4] fix(storage): fix large-block index truncation and multibyte title panic Index by_content/by_lang entries used a u16 length prefix, silently truncating/wrapping for any block over 64KB. tui.rs's document-list title truncation sliced by byte offset, which panics on multibyte titles whose truncation point lands mid-character. Bumps the on-disk format version since the index byte layout changed. --- src/indexes.rs | 22 +++++++--------------- src/storage.rs | 28 ++++++++++++++++++++++++++++ src/storage/page.rs | 2 +- src/tui.rs | 2 +- 4 files changed, 37 insertions(+), 17 deletions(-) diff --git a/src/indexes.rs b/src/indexes.rs index 7f17a11..e81806c 100644 --- a/src/indexes.rs +++ b/src/indexes.rs @@ -270,7 +270,10 @@ impl DocumentIndex { out.extend_from_slice(&(content_entries.len() as u32).to_le_bytes()); for (key, indices) in &content_entries { let kb = key.as_bytes(); - out.extend_from_slice(&(kb.len() as u16).to_le_bytes()); + // Block content is unbounded (e.g. a large code block or table cell can + // exceed 64KB), so the length prefix must be u32 — a u16 here would + // silently wrap and desync the rest of the index stream. + out.extend_from_slice(&(kb.len() as u32).to_le_bytes()); out.extend_from_slice(kb); out.extend_from_slice(&(indices.len() as u32).to_le_bytes()); for &idx in indices.iter() { @@ -284,7 +287,7 @@ impl DocumentIndex { out.extend_from_slice(&(lang_entries.len() as u32).to_le_bytes()); for (key, indices) in &lang_entries { let kb = key.as_bytes(); - out.extend_from_slice(&(kb.len() as u16).to_le_bytes()); + out.extend_from_slice(&(kb.len() as u32).to_le_bytes()); out.extend_from_slice(kb); out.extend_from_slice(&(indices.len() as u32).to_le_bytes()); for &idx in indices.iter() { @@ -321,17 +324,6 @@ impl DocumentIndex { v }}; } - macro_rules! read_u16 { - () => {{ - let end = pos + 2; - if end > data.len() { - return Err(MqdbError::Storage("unexpected end of index data".into())); - } - let v = u16::from_le_bytes(data[pos..end].try_into().unwrap()); - pos = end; - v - }}; - } macro_rules! read_u32 { () => {{ let end = pos + 4; @@ -391,7 +383,7 @@ impl DocumentIndex { let num_content = read_u32!() as usize; let mut by_content: HashMap> = HashMap::new(); for _ in 0..num_content { - let key_len = read_u16!() as usize; + let key_len = read_u32!() as usize; let key = read_str!(key_len); let count = read_u32!() as usize; let mut indices = Vec::with_capacity(count); @@ -405,7 +397,7 @@ impl DocumentIndex { let num_lang = read_u32!() as usize; let mut by_lang: HashMap> = HashMap::new(); for _ in 0..num_lang { - let key_len = read_u16!() as usize; + let key_len = read_u32!() as usize; let key = read_str!(key_len); let count = read_u32!() as usize; let mut indices = Vec::with_capacity(count); diff --git a/src/storage.rs b/src/storage.rs index edbc14a..cd27575 100644 --- a/src/storage.rs +++ b/src/storage.rs @@ -640,6 +640,34 @@ mod tests { cleanup(&path); } + #[test] + fn persisted_index_round_trip_large_block_content() { + use crate::indexes::DocumentIndex; + + // A single block whose content exceeds 64KB must not desync the + // index's by_content length prefix (was u16, truncating/wrapping). + let path = test_file_path("index-round-trip-large-block"); + cleanup(&path); + + let big_code = "x".repeat(70_000); + let content = format!("# Title\n\n```text\n{big_code}\n```\n"); + + let mut store = DocumentStore::new(); + store.add_str(&content).unwrap(); + store.save(&path).unwrap(); + + let mut opened = DocumentStore::open(&path).unwrap(); + opened.load_all_blocks().unwrap(); + opened.load_all_indexes().unwrap(); + + let doc = &opened.documents()[0]; + let from_file = opened.get_doc_index(0).unwrap().clone(); + let from_blocks = DocumentIndex::build(&doc.blocks); + assert_eq!(from_file.to_bytes(), from_blocks.to_bytes()); + + cleanup(&path); + } + #[rstest] #[case(BlockType::Heading)] #[case(BlockType::Paragraph)] diff --git a/src/storage/page.rs b/src/storage/page.rs index c07e4d1..6cc1d30 100644 --- a/src/storage/page.rs +++ b/src/storage/page.rs @@ -19,7 +19,7 @@ pub(crate) const PAGE_TYPE_INDEX: u32 = 5; pub(crate) const PAGE_TYPE_TABLE_DATA: u32 = 6; const FILE_MAGIC: u32 = 0x4D51_4442; -const FILE_VERSION: u32 = 3; +const FILE_VERSION: u32 = 4; const CATALOG_START_PAGE: u32 = 1; fn invalid_data(message: impl Into) -> MqdbError { diff --git a/src/tui.rs b/src/tui.rs index 215b828..3f0377f 100644 --- a/src/tui.rs +++ b/src/tui.rs @@ -526,7 +526,7 @@ fn render_doc_list(f: &mut Frame, app: &mut App, area: Rect) { if title.is_empty() { String::new() } else { - format!(" {}", &title[..title.len().min(18)]) + format!(" {}", title.chars().take(18).collect::()) } ), Style::default().fg(Color::DarkGray), From 7a50f3b9539f9430cca306f47eed553d5a079d58 Mon Sep 17 00:00:00 2001 From: harehare Date: Sun, 5 Jul 2026 18:21:49 +0900 Subject: [PATCH 2/4] perf: speed up equi-join queries and bulk indexing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a hash-join fast path for equi-join ON clauses (documents JOIN blocks ON b.document_id = d.id), avoiding the full left*right cross product the SQL engine previously always materialised — a join over an 80k-document/600k-block store dropped from ~112s to ~3s. Falls back to the existing cross-join for non-equality joins. Also speeds up `mq-db index` on large file sets: the page-file header was rewritten (seek to page 0 + write) on every single page append; it's now deferred to one write per store save. Reading files for a fresh index now happens across a worker-thread pool first, since reading thousands of small files is I/O-latency bound, not CPU bound. Indexing 80k files dropped from ~18s to ~7s. --- src/bin/mq-db.rs | 40 ++++++++++++-- src/sql.rs | 127 ++++++++++++++++++++++++++++++++++++++++++-- src/storage.rs | 3 +- src/storage/page.rs | 27 ++++++++-- src/store.rs | 5 +- 5 files changed, 191 insertions(+), 11 deletions(-) diff --git a/src/bin/mq-db.rs b/src/bin/mq-db.rs index 7f12ecd..de05125 100644 --- a/src/bin/mq-db.rs +++ b/src/bin/mq-db.rs @@ -14,7 +14,7 @@ use axum::{ routing::{get, post}, }; use clap::{Parser, Subcommand, ValueEnum}; -use mq_db::{DocumentStore, MqEngine, SqlEngine, block::BlockType, sql::html_escape}; +use mq_db::{DocumentStore, MqEngine, MqdbError, SqlEngine, block::BlockType, sql::html_escape}; use serde::Deserialize; // ───────────────────────────────────────────────────────────────────────────── @@ -231,6 +231,39 @@ fn is_markdown(path: &Path) -> bool { ) } +/// Reads every file in `files`, in order, using a small worker-thread pool — +/// indexing many small files is I/O-latency bound, not CPU bound. +fn read_files_parallel(files: &[PathBuf]) -> Vec> { + let worker_count = std::thread::available_parallelism() + .map(|n| n.get()) + .unwrap_or(1) + .min(files.len().max(1)); + if worker_count <= 1 { + return files + .iter() + .map(|p| std::fs::read_to_string(p).map_err(MqdbError::from)) + .collect(); + } + + let chunk_size = files.len().div_ceil(worker_count); + std::thread::scope(|scope| { + files + .chunks(chunk_size) + .map(|chunk| { + scope.spawn(move || { + chunk + .iter() + .map(|p| std::fs::read_to_string(p).map_err(MqdbError::from)) + .collect::>() + }) + }) + .collect::>() + .into_iter() + .flat_map(|handle| handle.join().expect("file-read worker thread panicked")) + .collect() + }) +} + fn load_store(db: &Path) -> anyhow::Result { if !db.exists() { anyhow::bail!( @@ -340,8 +373,9 @@ async fn main() -> anyhow::Result<()> { if no_spans { store.set_store_spans(false); } - for path in &files { - match store.add_file(path) { + let contents = read_files_parallel(&files); + for (path, content) in files.iter().zip(contents) { + match content.and_then(|c| store.add_str_with_path(&c, Some(path.clone()))) { Ok(_) => eprintln!(" ✓ {}", path.display()), Err(e) => { eprintln!(" ✗ {}: {}", path.display(), e); diff --git a/src/sql.rs b/src/sql.rs index d7e3b06..fd675e9 100644 --- a/src/sql.rs +++ b/src/sql.rs @@ -130,6 +130,31 @@ impl Value { } } +/// Hashable projection of [`Value`], mirroring its derived `PartialEq` (no +/// cross-variant coercion, `NULL` equals `NULL`, `NaN` matches nothing). +#[derive(PartialEq, Eq, Hash)] +enum JoinKey { + Str(String), + Int(i64), + Bool(bool), + FloatBits(u64), + Null, +} + +fn value_join_key(v: &Value) -> Option { + match v { + Value::Str(s) => Some(JoinKey::Str(s.clone())), + Value::Int(i) => Some(JoinKey::Int(*i)), + Value::Bool(b) => Some(JoinKey::Bool(*b)), + Value::Null => Some(JoinKey::Null), + Value::Float(f) if f.is_nan() => None, // NaN matches nothing + Value::Float(f) => { + let normalized = if *f == 0.0 { 0.0 } else { *f }; + Some(JoinKey::FloatBits(normalized.to_bits())) + } + } +} + #[derive(Debug, Clone)] struct Row { columns: Vec, @@ -514,6 +539,50 @@ fn cross_join(left: Vec, right: Vec) -> Vec { out } +/// Equi-join fast path: hashes `right` by `right_key_expr` and probes it with +/// `left_key_expr` per left row instead of the full `left * right` cross +/// product. `full_predicate` is still checked per candidate pair, so results +/// match `cross_join` + `.retain(full_predicate)` exactly. +fn hash_equi_join( + left: Vec, + right: Vec, + left_key_expr: &Expr, + right_key_expr: &Expr, + full_predicate: &Expr, +) -> Vec { + let mut buckets: HashMap> = HashMap::new(); + for (i, r) in right.iter().enumerate() { + if let Some(key) = value_join_key(&eval_expr(right_key_expr, r)) { + buckets.entry(key).or_default().push(i); + } + } + + let mut out = Vec::new(); + for l in &left { + let Some(key) = value_join_key(&eval_expr(left_key_expr, l)) else { + continue; + }; + let Some(candidates) = buckets.get(&key) else { + continue; + }; + for &i in candidates { + let r = &right[i]; + let mut cols = l.columns.clone(); + cols.extend(r.columns.iter().cloned()); + let mut vals = l.values.clone(); + vals.extend(r.values.iter().cloned()); + let combined = Row { + columns: cols, + values: vals, + }; + if eval_expr(full_predicate, &combined).is_truthy() { + out.push(combined); + } + } + } + out +} + fn eval_sql_value(v: &SqlValue) -> Value { match v { SqlValue::Number(n, _) => { @@ -1807,16 +1876,28 @@ impl<'a> SqlEngine<'a> { for join in &from[0].joins { // Joined tables always full-scan (join partner) let right = self.table_rows_with_hint(&join.relation, &IndexHint::FullScan, None)?; - rows = cross_join(rows, right); match &join.join_operator { JoinOperator::Inner(JoinConstraint::On(on)) | JoinOperator::Join(JoinConstraint::On(on)) | JoinOperator::Left(JoinConstraint::On(on)) | JoinOperator::LeftOuter(JoinConstraint::On(on)) => { let resolved = self.resolve_subqueries(on)?; - rows.retain(|row| eval_expr(&resolved, row).is_truthy()); + let left_cols = rows.first().map(|r| r.columns.clone()).unwrap_or_default(); + let right_cols = right.first().map(|r| r.columns.clone()).unwrap_or_default(); + rows = match find_equi_join_exprs(&resolved, &left_cols, &right_cols) { + Some((left_key, right_key)) => { + hash_equi_join(rows, right, left_key, right_key, &resolved) + } + None => { + let mut combined = cross_join(rows, right); + combined.retain(|row| eval_expr(&resolved, row).is_truthy()); + combined + } + }; + } + _ => { + rows = cross_join(rows, right); } - _ => {} } } for twj in from.iter().skip(1) { @@ -2311,6 +2392,46 @@ fn flatten_and_conjuncts(expr: &Expr) -> Vec<&Expr> { } } +/// Whether `schema` has a column matching `short` (an already-lowercased, +/// unqualified name from [`expr_col_name`]). Mirrors `Row::get`'s fallback. +fn schema_has_short_col(schema: &[String], short: &str) -> bool { + schema.iter().any(|c| { + let cl = c.to_lowercase(); + cl == short || cl.split('.').next_back().unwrap_or(&cl) == short + }) +} + +/// First top-level `AND`-conjunct of `on` that is a plain `column = column` +/// equality across `left_cols`/`right_cols`, as `(left_key_expr, +/// right_key_expr)`. `None` if there's no such conjunct (e.g. only a +/// computed key like `nxt.pre = h.pre + 1`) — caller falls back to cross-join. +fn find_equi_join_exprs<'a>( + on: &'a Expr, + left_cols: &[String], + right_cols: &[String], +) -> Option<(&'a Expr, &'a Expr)> { + for conjunct in flatten_and_conjuncts(on) { + let Expr::BinaryOp { + left, + op: BinaryOperator::Eq, + right, + } = conjunct + else { + continue; + }; + let (Some(lname), Some(rname)) = (expr_col_name(left), expr_col_name(right)) else { + continue; + }; + if schema_has_short_col(left_cols, &lname) && schema_has_short_col(right_cols, &rname) { + return Some((left, right)); + } + if schema_has_short_col(right_cols, &lname) && schema_has_short_col(left_cols, &rname) { + return Some((right, left)); + } + } + None +} + /// Decides whether a whole document can be skipped using [`ZoneMaps`], /// without reading any of its blocks. Unlike [`IndexHint`], a wrong skip /// here silently drops matching rows, so this only returns `true` when it diff --git a/src/storage.rs b/src/storage.rs index cd27575..7a8db27 100644 --- a/src/storage.rs +++ b/src/storage.rs @@ -156,7 +156,8 @@ impl Storage { entries: &[CatalogEntry], custom_tables: &[CustomTableEntry], ) -> Result<(), MqdbError> { - write_catalog(&mut self.page_file, entries, custom_tables) + write_catalog(&mut self.page_file, entries, custom_tables)?; + self.page_file.sync_header() } /// Read the catalog. diff --git a/src/storage/page.rs b/src/storage/page.rs index 6cc1d30..bc53cb1 100644 --- a/src/storage/page.rs +++ b/src/storage/page.rs @@ -77,6 +77,9 @@ pub fn make_page(page_type: u32, page_id: u32, next_page: u32, body: &[u8]) -> [ pub struct PageFile { file: File, pub num_pages: u32, + /// `true` if `num_pages` has advanced since the header page was last + /// written to disk; `append_page` no longer writes it eagerly. + header_dirty: bool, } impl PageFile { @@ -87,7 +90,11 @@ impl PageFile { .create(true) .truncate(true) .open(path)?; - let mut page_file = Self { file, num_pages: 1 }; + let mut page_file = Self { + file, + num_pages: 1, + header_dirty: false, + }; page_file.write_file_header()?; Ok(page_file) } @@ -146,7 +153,11 @@ impl PageFile { )); } - Ok(Self { file, num_pages }) + Ok(Self { + file, + num_pages, + header_dirty: false, + }) } pub fn read_page(&mut self, page_id: u32) -> Result<[u8; PAGE_SIZE], MqdbError> { @@ -195,10 +206,20 @@ impl PageFile { .num_pages .checked_add(1) .ok_or_else(|| invalid_data("page count overflow"))?; - self.write_file_header()?; + self.header_dirty = true; Ok(page_id) } + /// Persists `num_pages` if it changed since the last write. Must run + /// before the file is reopened from disk (see `Storage::flush_catalog`). + pub fn sync_header(&mut self) -> Result<(), MqdbError> { + if self.header_dirty { + self.write_file_header()?; + self.header_dirty = false; + } + Ok(()) + } + fn write_file_header(&mut self) -> Result<(), MqdbError> { let body = file_header_body(self.num_pages); let page = make_page(PAGE_TYPE_FILE_HEADER, 0, 0, &body); diff --git a/src/store.rs b/src/store.rs index 5ce6dd2..7481c76 100644 --- a/src/store.rs +++ b/src/store.rs @@ -180,7 +180,10 @@ impl DocumentStore { self.add_str_with_path(content, None) } - fn add_str_with_path( + /// Parses and adds already-read Markdown content, attributing it to + /// `path`. For callers that read files concurrently and want to skip + /// [`add_file`](Self::add_file)'s own read. + pub fn add_str_with_path( &mut self, content: &str, path: Option, From e020edaf774baea9b26f8c49e531e5e6e7397166 Mon Sep 17 00:00:00 2001 From: harehare Date: Sun, 5 Jul 2026 18:22:09 +0900 Subject: [PATCH 3/4] chore: ignore local work/ test-data directory --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 967a11b..cc48c84 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ target .cargo *.mq-db .DS_Store +/work From 0af22986ba3d7433c05d3a994d594228f810957d Mon Sep 17 00:00:00 2001 From: harehare Date: Sun, 5 Jul 2026 18:22:19 +0900 Subject: [PATCH 4/4] docs: add project landing page and Pages deploy workflow Adds docs/index.html (a single-page site covering the pipeline, the interval-index pitch, SQL/join examples, features, and install instructions) plus a workflow to deploy docs/ on change. Syncs README's mermaid diagram theming and license badge color to match. --- .github/workflows/pages.yml | 23 ++ README.md | 7 +- docs/assets/logo.svg | 24 ++ docs/assets/ogp.png | Bin 0 -> 123329 bytes docs/index.html | 589 ++++++++++++++++++++++++++++++++++++ 5 files changed, 642 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/pages.yml create mode 100644 docs/assets/logo.svg create mode 100644 docs/assets/ogp.png create mode 100644 docs/index.html diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..0c82311 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,23 @@ +name: Deploy docs + +on: + workflow_dispatch: + +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + persist-credentials: false + - name: Deploy + uses: cloudflare/wrangler-action@ebbaa1584979971c8614a24965b4405ff95890e0 # v4.0.0 + with: + apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} + accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + command: pages deploy docs --project-name=mq-db diff --git a/README.md b/README.md index 2f6e563..cbe3ba4 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ [![ci](https://img.shields.io/github/actions/workflow/status/harehare/mq-db/ci.yml?logo=github-actions&label=ci)](https://github.com/harehare/mq-db/actions/workflows/ci.yml) [![audit](https://img.shields.io/github/actions/workflow/status/harehare/mq-db/audit.yml?logo=shield&label=audit)](https://github.com/harehare/mq-db/actions/workflows/audit.yml) -[![license](https://img.shields.io/badge/license-MIT-blue)](LICENSE) +[![license](https://img.shields.io/badge/license-MIT-b3402c)](LICENSE) ![demo](./assets/demo.gif) @@ -16,6 +16,7 @@ `mq-db` treats Markdown documents as **structured, hierarchical databases** rather than plain text. It parses Markdown into a flat block list with an **interval index** (Nested Set / Pre-Post Order), enabling O(1) section hierarchy queries. Documents can be queried with **SQL** or **[mq](https://github.com/harehare/mq)** and persisted to a compact custom page-file format. ```mermaid +%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#f2ebdb','primaryTextColor':'#2a2420','primaryBorderColor':'#b3402c','lineColor':'#b3402c','secondaryColor':'#e3c3b7','tertiaryColor':'#faf6ef','background':'#faf6ef','fontFamily':'JetBrains Mono, monospace'}}}%% flowchart TD A["Markdown File(s)"] -->|"CST Parser (mq-markdown)"| B["Block Tree\n(heading · paragraph · code · list …)"] B -->|"Interval Index + Secondary Indexes"| C["Flat Block Vector\n(pre/post integers)"] @@ -525,6 +526,7 @@ struct Block { mq-db applies three complementary index layers, cheapest-first. ```mermaid +%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#f2ebdb','primaryTextColor':'#2a2420','primaryBorderColor':'#b3402c','lineColor':'#b3402c','secondaryColor':'#e3c3b7','tertiaryColor':'#faf6ef','background':'#faf6ef','fontFamily':'JetBrains Mono, monospace'}}}%% flowchart LR Q["SQL Query"] --> ZM["Layer 1\nZone Maps\n(document skip)"] ZM -->|"relevant docs"| II["Layer 2\nInterval Index\n(section scope)"] @@ -553,6 +555,7 @@ Built once per document and stored in the `.mq-db` file. Checked before any bloc Heading hierarchy encoded as `(pre, post)` pairs via Pre-Post Order (Nested Set) traversal: ```mermaid +%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#f2ebdb','primaryTextColor':'#2a2420','primaryBorderColor':'#b3402c','lineColor':'#b3402c','secondaryColor':'#e3c3b7','tertiaryColor':'#faf6ef','background':'#faf6ef','fontFamily':'JetBrains Mono, monospace'}}}%% graph TD doc["# Doc\npre=0 · post=11"] secA["## Section A\npre=2 · post=7"] @@ -581,6 +584,7 @@ graph TD SQL predicate pushdown picks an `IndexHint`: ```mermaid +%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#f2ebdb','primaryTextColor':'#2a2420','primaryBorderColor':'#b3402c','lineColor':'#b3402c','secondaryColor':'#e3c3b7','tertiaryColor':'#faf6ef','background':'#faf6ef','fontFamily':'JetBrains Mono, monospace'}}}%% flowchart TD P["SQL WHERE predicate"] P -->|"block_type = '...'"| B["BitmapIndex"] @@ -597,6 +601,7 @@ flowchart TD Custom 8 KB page file: ```mermaid +%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#f2ebdb','primaryTextColor':'#2a2420','primaryBorderColor':'#b3402c','lineColor':'#b3402c','secondaryColor':'#e3c3b7','tertiaryColor':'#faf6ef','background':'#faf6ef','fontFamily':'JetBrains Mono, monospace'}}}%% graph TD P0["Page 0 — File Header\nmagic 0x4D514442 · version · page count"] P1["Page 1 — Catalog\ndoc_id → first_block_page · num_blocks · ZoneMaps"] diff --git a/docs/assets/logo.svg b/docs/assets/logo.svg new file mode 100644 index 0000000..c6c196e --- /dev/null +++ b/docs/assets/logo.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/ogp.png b/docs/assets/ogp.png new file mode 100644 index 0000000000000000000000000000000000000000..21684652946e47382a30d9a34b66561cb96d4e05 GIT binary patch literal 123329 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Ξ@;%?eYw%* z8G~(VQ(w!GUXl&W{$#)0V%XcCM^r_f`)9rFAL~rM5w9oxW5+Eb`O_b|B6Q+3Cw}KM ze_o&7?&m6=J2>Z27*4xykIvhExn?CbMWKA3zQ_Zrl9ji`J^5<`@ELA?td*Cq>iPJb zCYEHr2ZVb+@w)Xr+)>c$=Uqh0!01mkywA0cj3bjZ8a9<;Ra8WM>OQ<$+aXGhtC$O$ zL`Ozyb-Pd8gb}cGf^kF4k67t;nO#Ppe7}$cQVKfDdLEZ4S$6n4r~CWKSwm*Q#+mG! z+OOdyB@RoY=;}|CDMRel+dBfhy;nWT;>CtT5a?AcKqIVDtC4GuH{fEd<*rH$m=gED zw$-xAteCAsR!`&qc+b8y1L*ihB?kWENGBn_ny!0<^1o=FVp+fnhr(U`DuVo(*~3^= z3|mR4S7cd%&@9-(1=hsG1QhZMq*m#6JL$2Oyl_PyYFbmHP05t2 zP);um4GCr}F5yi?{47k%CyDw~PUJc~fcg>6gf|7F7r6tneUavuF8`>}Y8}SOX0pa=>S>5QW&R5f+<`g+YE_#cv2`d=R5Mf+T2WEg?(%6^Hdj(~UN} zF%1UGndfF^iNp{C*$Z`+_2$`Ynzt6UJkgIS|dKG*Sja-tU2a=v;L2 zMLOejXhJv-2l5g9tioSLu0M94{B94AX|4d3fGCj`MJy*1z}mGTq&? z;=r%R|7UYI8K886S2y98zB7wOpcak#zVAOxl(Huh@mA}00q#d-*<0+?FJ?xTukz$_i`C;(0>@6e)r#dur z0@mtpPZo-zTR=kzqa2u+hprS=Azcos|Dv?+kPP_4Tehp@?Sy3VqBt?o@KTa;P;iMq zFfdhOaRg<1BS70+4rn3@3iZ4sL9=M(SzPdv1lmIbFU}{a`yCg3XgD2DhypR?NIb#hHop(e`0RLzLXB3ZCa0qh-ZTs0 z*oiwfPO^+Gkg<_STRHT<&=nmP2;ca{NyC78htwfZBdytbyB2sbeLs9nGJRj@JBa>w zdm#e$N_Lr+RHxls&Q^fkX+a(b`H6+Abs8Lx*>=It@>j#(EGa1~J>psD0(Co`6OIHS z!*!dC!IPQ(?ggL@Cr(xN92_I36B}k>QD@2W!t3>Dv)w z*gQ)~-Yq7%X03iC4Yb46FCgfYqXG^=3To)S#Y$-15b0Coe;dNJGV|Ul6cL@9PYa`-HfEtV~UEH6^!(zwzM1QEwqnO#a zqJu3=;2?*8+u1HkL^_#$<|uELYwGBx(P&2EPaUU}w5Z-Qu%M7(zYi1R40I{MW^HsZbyC>`JEkE!Li?mrKDWBBYt=TX z-)xWBm#W>PhFwN0D<#@-CsK~)td5Sw%%tYXi@Hqs*&KB)T1VJYh^Z5n6lsKNzxl@~ zBN_ak2*@4}$=(E}E7nH0q?B=Ixm?w2r$1oZ_dX{os;dF**&~{XEgkZdNbgBWU(bHeY$0L4z@uQm( zVl$6=TYPK{!8Qlt>v0(gLVPKnf;CW3P-%Bxh>1|?HK(Q~#kl?bz0J)nAev2!k9q&a zd00YPGMpW?E7l7X&8?|@Wn(5GVS9YfU@j|=j}E)JnVdJLq5JGaxWWi1J!^(;DV5E# z2OoZ{*^sH55~f1Km=VX1DMvS~v&58>l+n4F0^ zu2E|TEiG>yZWkCAtn$^}+}QQ?`yvg|GG5fKa;9coH-C=ws+u>>P|3|nv~fhNTwWfQ z)EYVHbbwW12Ir*9jTjX=PF(C!EeBeR2BNsNMMb2ai;$YwK1s>&hz;v4iEcCsO1_M1 zbU5A*hQQw5Voav&;~2jsC3W)Vz}{`GG`_$c>ni$!hnbRW=KqRy!FMdUk@QLaY1?jYB#ID0#j0(*+3i*E*ccfsmxG z?s}@Oce%)1UYS*-<%9~2SZ3co{D?snQ8$)SgTeqw*3ThsNiPu z1>L-#1&hh$Hx$V8UYrzRh)7~fIJl^=d7a)K@%{?c9o|Lc00>zaJmFK_B`*F(h&Zf( z@rLqQT`qMvSWqP|n>G6qn5*oX%`Ug=$wTV2It_=rVaegWG(CJ)i}4+r!+8=@*Xv(@ z_T%_#^t*D0nkiNoLivVx{%V4()oN8@Nys)#fA)R9(Rb_BR=ai2qQ?FA&x)L5l>(!Y zTHP)%a7fPh`UTpiCMHc;ch91YJT8~a0*rjhg4~_Fij{odAiAy2$Fr57h9Vd4OI?xH z^s`B-UyUKE-G;z;Yb+MeIKtEvmNuuY(EqD$2#gV0n`Kq?UOu51%jz^^fJeLW7=nSI zu|u#VNF1WwVzVW%1^jX=(;_p2a~_XFA*sv48@`Qss-H?N-@#i~u1=1A~%liSN38W7-edEAl8 zF4t&3?aT8SMZw@l{-AgV?W*?45N{sHu7XU`G))x*`*GNouH9_Od0>+O<7dOe;E z$QgM+9EZzoMnjMR#L7Nzf7rWecPnXZluG}5;r1Xs&rt?Ttf^M1cL5`f-q$dL z2#jC?nIMQ&8u2z<-#^Z;k&u90e6|B5ncKZRz}$G5Uz_857(O&;F!uJ??S6GzEEKL( zt=413SqSmjH9-A&JipfMbS1M*Ru{p-NJ}m*md#?L*K9OdUpy?6&rxb&olHu9J#G$Y zgCAZqN}feqpJHXE)g9NHN?l_4!OQ~F;&yC2m$X!9Yn`^a+5FJ#HrD&L8m$?wuF;b( zgK=W#Y4e&)smx}x$p91t!e(J%pFZP0r?7P}qvvO(g+E8%8vdBC5qC3^&gSxf@r_0s z@Y@aayT2=_GgSg7uKj``Q4oD~`;^@=Jl}WSYv{J^#V!>Kx}b)#DWA;| z!0~ZCDB9(EDJLaU3~i2a{O}O%hw(90Uzv216|wEje5-AP_sktRQ69}*)O4~fn#Bgd zeY;u%HcZwnm6PZKYBgiOERUa@SYWdvh#Sh~qCoLHj0@YvVC7h|U5c*i=o(&(5%>xj zhuMZRqpi4r;VlbM)F-3oX#%%kPv7_TF*z2*GsTsn;KEA_0sYgOdV>MT9w4& z8TZFVt2NqlonjG((xRf3Npp{r4;4!rZWi(ge+u9E?~gujhT`5HFGi@w-BP^qrS?eT z6LNb2m#;uQj+uAsqm#DnJ?AIWS-SB^&4PBeYz_y<-<7H~m%#YiutEJ80(^~i2ljoZ zDDLQ>_;%^JpESyJa24evqfbCTAyGg)ZdtPBWP3z9jRqD00fCah@pah}o&1j}A1;r* z0zNr=A=Te8P5uLk0Wn#cZz+9}aC9&*gv{mjVl%_~h~H2UuH*pH1ZXF}+kOd%F7=Ht z`S&)PE}T_jd_#6Olf=r3t9QjRMF zUf13H)<+j*dH4}`5#FOk=908BTQ%Bkw7QKZw}oV5aRlP{A*gX`$dm+cppNNQSo3!w z{$>sJ6EiuHP_v{8JO<9pCQx{Titz(`ad7ti*FJYF9x zQT3MN+O~0-ZGW=pb?okzdSQN@=Wu;kTVuTT=0D|L9OXNU#7Gj^Rs6HP!^XhSPtVY7 zK8L^U^Tr#EWxcorRMB%z=n?7a2|BeD{8ARq1CcB55ICt1I`d;}~I@nmweu)_%Q2TvLQ;@$&F$ zwnn3hT&$4gsmh?K>HF%ISO^$=37Q2f;$|qUn^l?qOl{1snG0;M_O>ZvY)29DI;RV{H_q~)anRvyaZjA`$uR~>h@oyP?9UCgGDc>AQ3*cl}W^T_>6}4;{@SBO5&-> z5NEaRx?9|DjaKNyL2A%yFrmv&{VF-*Ur&bO8WbuzacxuT=~gUHR`q?eI2?#eB~nz4 zb?+KHiT35Q84Q0eTS^qN@mTOzbOGfZf1j`JuUak7G#ibOIs$c|V3-pMRj9E=<+gi$ zKC_w7*i>>RL%%YeWUo7Mxt&`j(NnZ{(&_iUU#wGn`$oj*Bv6hsa_9KOgWk+vs;Vnl1;$JWJE-CuAmC>5M=k;P-RAJ}1fZaP29M%Il82PX#nP?DOaRUadx> zR{zNiyyB*pid-*$?$)g}D3<{#{D_9}3CoSvnX-L8&6~ME)he}pHv>DwQ=zu2Eo>H> z`F01Aa0C7jaxqSsG>y(1pOO2={tr+sm(fD88SH2wAOVWia#CKdNZ%WL|NR__K@ij| zI-HW6>%8xi#^fr8$01T4mn>%Ffis#=tb={q{k-eC?{~+t_Wr`k?Uv8}3OjL}*jHHG zpE7VYqW1HPuVARHcI$VG#+nCqeR9u`;eVs;AhZT8hqKD z^rS`(gTL9eZ`Jz_GSnnw{|76RPfV*5Ry{)8$2yBhcDlUQ+K*p4-d>Y)te^wA$2d zI4c|?l6m~;gy(&IXc)71jcUt%X?)qr8FjxRxQL>JXWPn z5mc>(ygc^fuiU~sIf`r$>m8#c+q!M-O53(=+qO~3 zO53*WN>ti*R@%00+qQ1()6UuN`R;drMr+X)=8RZt&OV;rhtLIWd4WYRn2{pR=h6wF zOXv?gfkrpk5{mC<_mJA!$_7=o#AdfGKI88$AA#?OD7_)FoE(&5ugrH zqSyi|=(rM!9&VOx##DtY=Ev*q<8s>~>a3`@KlJ^iO&f6nU!Y%&N`l&y`uqot9C{M7 z$OgKCacbUnU({ReZaM18HuAcI`vN!$peafW-J<%rLo_F>M;2RqD|sSuaqhg#ccrKC zvwyT9w(h3huj>_dNk0tkClx2Aw?5yVuD0z~^9L0KK4D`ghjxt&IZE~YHq3H7-yygU z!$}-ogGwpWI^Um8H@m-IPf8^Se50KT8{lOC0`13H1w;8_^>I>`P&X$@v-c@8uc-$v z-BV>{1WH%$q4G(Lt@=<>=s+eCQvC&W*pI;gS$2MW_ZJ}*gk8g7n4ryW7!2F(Iy|22 zQ&3k~AlNjG0*Sa?uhJOo%zEB!pYN<{J}-xQqM$+H!*<79RknO(BKkMAB<@e2>L*z21mPFHhDm1OJE*8VdLNdCqP_ zRoOsuzwmpKFUhr=ar@5*;lY%q>+Q!K5bIev;2gwx<_G6h$I*bQxIh*VEPc9-q@vmFJej{|UYkJx)eZY|VK< zVMt@}>+SKp;z8c#WUrX4Nr?UW`C7mq0iSlub@&ofc_597fPGRV z9AoZ-Jgan}N7A>{_O~F=Bi8H02p}qy#S74qF76QVb!!DIz^SN~-{+n4XE2|1L9v28 zQ(rU|3%NHR(oJ3^l7S)N6ujRKkR5~F+^bqD7dnP30Xn^Acxp9+0yY`YV6MjXmb7-r zB$u|%h=9i#DmqSRX!Bd7Wz+#>P_{HEA@b!~bGOaR5TLvZkP=6b|FMV*Y%d@(&2peqd9)25r}(Odz0C7q=Rpp|eT&UN?uSLJH`>@(}e0;tSir$6-j-7g(V1w)EKVk-l&XvoT4R&lnE zXN$+)v{wTif6GP`!1EMxx?rmlw6)A~0lT`Vt@fsh)We(A<9!~t%dv(4ZGNzjiWU)w z4v6VYE+d^m##)*#a@@c#w3{Bu!Gd*^lk9iXKfI{;RP;^q1-{uNEVpzOwUXQ1f`tg_RO|vO) zibXzQvB}h7G$4gvX$1_$e%B2Q8J)n)`XMLfdp{hsX2qq8g?6Y740XUX%JP^Q!<~h` z^oi{+k!oASv!#^isMiSkDl!FuO`9sFA7xQuIy~OD)QC+p`CNe6%KVEyzKJ(7`J9eQ zwu|A;7Pu~jJ;z=z;Iz>lHo#61SHaFjo4cBG!i8{`b=Iuk0&!2<{HB)>1U?{l1sO1i z>0C}1yM-Ug--)Nsb4MTsCizYRDD=a8A?{T1X)9AO_-m`O1rAWOs?wI0T8_$l1GfaWtF`G)T5pksNFMX`jrT8WJ^sHgLH>%&g2#y^$ z)B0UG98T0YuT3r?h&gV=R(e`m)WqZ>>Q$zf zj>%{EybeHOOl-r{*o*ZMCvVuA_6Y2^Gm_^J}dU`ht<>HQss+*qh1YNHO`LU^}xah<4Ujt&Q z&QAJu?!65HB}ln*q2wT{6}F!eIlhc8h1dafKq~{n*b)wKsUq_KAkP?-d}-Rm!M_h#M|ADF4OH^Uim>Xa1B?+vE2* z+TPw|$LwpI+b?*N3+;OCBvS(fLZb#fJOVCsBqi&-kfh(G&*@fNXQf)WS&%TiWWA+d zC2pfi??``U02x@Z;Ae7Swz2JWFcY9K)Rk^elr6uCXfUcPIm+$JPS)82T!We$Ma5z^ ziH3fcub?v(nYb4GJiag+7}kj|%`dI1oD-9x6?B7X=S(a9TN<<)54ai$tphDesSEMQ zJyb6O4K}6&n0uK8ZiubF0uINO<2W!Hn#gWcr_THfuL>sw%**TT=hvqfH_k-(&d8w; zU|G6dQGn=_sU!Cuc#x2m{J5lm5}(6LKx$sD{fGe9UE)|Pq3)X3Rf0r>G~0TZMuGpn z^NA2${{so))_6<-#najL5br=HKFFI9Nt|};>S|Y_&1Iw3G(<_=h+%4TvB=Vc;ebUg z*G#+N7a?s5qQahF;lNWWk5hS_QZXod)6K8xNVJwdnGwskHZ|eSo`GSLof|z{h9xv7h^s+XZAo1%bU;%opi`XW)cGvhZ zXQ56mq;Im1(!D28#Z?6!$Hv7PkoJ$y%g*D(U`#j2A&)u_KUL%vi~552`h+_zlqy1x zFn93xPIvJcTvelZZ_-i`uVaXnW+8-hyd<~;Ym=TuhpW-}?VlF(r!cLjEDbKa@Oa!j z_a8B8%ko3CHapW<%j>OYy)&+u!UF<)+4@0Npp{%)UYd>F`!beFQ~c$)mFqGow$WK- z*$7fJQ8Ozuc+9p|nzx7Q;jz+-7COZ4XYJyuRhscFnCdgFllh9c+wti&KoBRfr#=|qUPh`YMUb?>bQPZ?k(x*^_^8K zRpYAuk!%vJUEnC`GT~>DxmTW6tI>e4DpW5b?1d7s3S*b+y1!-0CRKGwCh=;1xL88( z-VUS=`4;=ucX59YY2lPMw7Ohqb!tapUi4zGNBmGuG}gUQx9z#S1u?tzOHTFIxV+{^6KMnPxng`Wg+wDbtiE!rX4mLIb29pLb%TiuM}|XQwOqE8mwzT)CdpRGX4k9G*T}Nr zO6SWU#vWd^UpwxSCa}0eVaOLGg#DH@H84Pn&@>ob3b(q%$Pq*zkd2i7L8Ny3^mrR+ zBa_VnthMdyL;lUQN=Z}UjHGw`%?GGkW~*!LT3J5YYd4#+Nu!$ICsHzJ+Bmt4xj5DV zu$VmTJPnffzFIgyds1^I4vO)!vrL*yG8+QaJ{|f>8p}x)m|4U#^vE1c$juHzMSnoj zAPs3$M^^fTE|M&zwrP^Eht5p^xw>YaIkeNfPk*SVmzQag8De=T59$V-N-VZJDY7mI zub54dHY~9>I+^+b1{mo2-cE99z*3Cq*QAC%K>tB%C#wh3jdJQ>=;Dnm$fhNOKBuV9 zMt8({UZTrtI=Sf;QFmKM3jh|eFSgxm2Q;}|`>E3BJYjQ1SV>W#(9TJ-Nwr2&4NCTK zbtIQztSX|bcGuX^mLOa^3chsFI89l3;?*CZ@b;>5lF#* zk)a$_;^ViJp$yFz^9l?uNJ|}Ab_`8oo4{nKB}fP!TzQ`K_Z8ch%A!8f8r3^@f9vXuezB#;G_GzH?QU5IwDXBE<7QDn|bL8vf z#dp5}s{U0}IJve<0YkkjoC!H(WZJ)Qze705cnk?|1GHQot_u|^$1&p_w>PIuKcHW$ zM2O`q{(a>Y8mtbB(i;O!q2L>rJF2fJKv07r-dSt6z2zPv>@3@$V#~fi-uM?R20dkY zhSI(0YgrE{jp3Gx#VL2fIhf0%@m=}hp3qMUv>FLG(^+|-@%yMdyjAC2o)zN(LZt@@ z>8M82hnd>+?m$2dOwc+9fZgT0&@4U}MB?S(k_#w#(UupB7)vFOAvSaQ^grPVGN{)ShFyBA05~2JTX`8d zttC;mQ%zf)Te!nYRIuL}*`(Ce02xJzJwEaTSg3DTc{}#PP96Z*1VD7e25Vx$0#~M- z02zo{wg7K3i)QcPhH;NhyQxyCp8P{3GM9OazpD@XS15)C4`D)o5T*H(pQkQ=Lx-od zqT(_it7?ThojgnW6r64^vD8XWO&sm~k!TkdplP+IYP~uf%GaV_i&NZ7C#;YmW|@1gl&iMY@% zdJD@}u$OJ`@gEn)Z{!WEU@d`hYO>c0Z5@57zAEh*;j!b|RfYU@rju(AsF@#8wBF_S z#%89w4A6Fn3mQuEu)SBh?ND_=Rg0l&()(*|zw4vaHP(tA;qlh`q0nrk%i&ft6j||< z0QwXsx-o|}cJR8k3oT5~;a1^!x(!xtD3ayW#22@bFT^Lh zl=qr(g@@CeL`54JEpzh8c-01+h-`S8;D71fKz`5v_^IF;M|n7?|;ejiCX>g!U_hWj4qSf-y5}w#)~MbhZtCsrEt%Hu1e)UWH<$CUO&;q7m;!W$4-5`R z&fdtVu&S-haNz$UNxygBNpkRCC+eqv6eKLDT?UfU|BvAyU|e*kyBd+W05pjvEY=J` zLg#VGc6&5Hkd&Hqe=3Wo(Ry>PZmv)K?#X7obzF#n)%*bpKCkGKEPkN^pb2&h`Bei3 zd>|*U9;63NG`%jta6r_M7qV3Tb37Y75VILjDZH&arlYTh`TpdfVv5-9@8~D9wy!u9 zRwRFcPHMbbAx%}1++s9JtobbLkBf0nl96Z`&X-Q6p0S%ReiT6vc$o)OovoH8ZWrdl zbrL{*h<50f7p+o3RrfkIJ|@<7#BM06M^pX70c0#2K?jx;rE>m*z| zJA%Qt!%{rpX++)npDGUNQ=0I^m`UumYsLk6NVk8rpKT|^=c#Ew4#(9sVY$oe7p2`5 zs--zTk4g&#y(ZJyF8Ed+!ly^p8qaTv$#Yx*g3ZL06ja#INZ~&2$-ckOAjG&sLG1RN z3W8g6{0^c@^$ZjidFA{DsMoMfQ1;ul3QE^YB#(8=PWB~KF^9iMz@qPaE{~r3Az8}3 z7z4`i$7u7vuAY`RNYt849UuH^Cz$Y^4HQO`u_Rp{w~VVABb;EduQQBPh{01K3EAUA zN0_vjg`#8*Ev^QQH_-f_QRtIga>g!y*%TFFO=}Hzy9;ZSrRUKp^a%=&i4i^o?ne6g zJe?`PEewT~0n*gjQpNG1nmG%ta$B%~XmE0H11r%r@wx{LPj)*t2|jSc2?6GaR9`2- zH5(osNTVX|%+c){ozs6B8SHW~ui5 z8i&`I@h`dPOj3BCbTqL_d%OjW2K788Xun7|&}SWrV+;{F60G{;`62=>hI?HHRPvDF z>)|j!bu`A^To9&l$c#H@9gg*QZYSuvf4--Qc*sml_BgpQP*H>UYGp!bT-vhNVOE44 zLgI-LPHZ=fESmV}Nm^);N)(Gi&p;Pf8gLz3Sm++q+bFilfJUPp7_gTL8jYP!U$nw^ zx97aE)HUs65oje-D=Ij`=@zgSyWFTtTz4*4ugdS0uUj}UuEyV;he+)u>fP8YeTzD4 zrCzt_@WbJ-sNCu`zo06}Z3{23W6*0b29OfBo`=GHO&pDb1p%A+Jv)TFa@JSCY;y@* z|IR68BV;NhZc)l|#Q>?RzMe7^P1XJ7-a#c@3v_z}H*4g2s8TariO`ap{I(+yeoW8EO_25TWrF%^+9G5hgJ_lStK zMtAc((8h&e(-TOHuC2~+dm~G?q94k49j*5owA#LB3sh=5;&(WVzx=m4poAKPc()fw z+{B+K{rgl7R$BAoPkc?u5eg<08sB?N?lCR(>tL~!=^tqF;|1|d8QWbhmt1ai zMOvh%rnj#R8-*xYrnf!3E_jT#O+>AWnFQ+W6h1tO+wli&Ed-&TwY=J}B$>r2S4gWd z=`)Q~3^Q^0JSSAiL>#2iD_TSerbFRyR(RMTZcFQD)5g$4hj<4>#{SrC=kW=-HOK-i zxhHhPv1qs0Cd7C#ylqCquJ%1qd4R_n<><_;Wf@d@|4syd1ecN**@goGexxd|29`-R zH*6K6Wo1P&gBO%3e1hrQ!`0;qUjP-5f2B`kfP$*(LPObnHr6XGe35{{8`3YOuW@|N zzY_mFPd5ZYxuVQ+X~V=kBo$`U*^}uUPJ}PSh_Kka;Z`TOQQ4^b)|#fpm&p#)p$mKt zdxaqP3E*t}k&9Lfg0=Hcca0jP=45;%x~-SeIl9vGPsB`fY|aR-O97iqwn86qy1p!dxfJ~?$mKE?s`RIaViGloFTz&Y zf>aAhEUjTjl z*Hl|Savsu05-s(uOJ~i!bvmeQ*~zd*)?6$L?o|el&;(AAm@Hz3#P{@E&zBY_s}ybK z&-&u_*xGci*&^pp%NHvm97nZt|DmS&#XVlLPem^s(R%nvz7%rXGh zmQS4SSb;?41%>Wj(Ny*RbY77yNZ%AhtzIcTMd}nakveNcfcrI*u4YwfDxyxy_VYjf z%VoR(8U{(-XL?;=5Xqx0UthN^F7x}LNmKmvK37$$4rPFH-B@q@q$Q*-NH8%rwj@fQ z@jJY!T<}QqOxT%5pP!VFai?Jw&JmH~0>Uz=)BX>8%om04(UHS>0W?p(tG!};%ui&* zcn`a-)^7mO{-evme?*9RsH^0Z@deq--NWK5pE{b84;uDx;1A!_eHSvGxGiNiQt3AR<&k2ogLGMk_sQ$R#ui7u5yk%2+c8K zDBvLem%|f2NRqJxL!#4vo>Q+8Hte(or(KGPoNF3jO3QKoh~SXuc6h%Wh#F)5X2m=o z$Nkralmri2D6Gi{@8KcT+xt{)BWPF~q4iU7@}PU;*cA0^!SP^UCwNIHchFEws*)1m z`~!{RumITv7bpp|@tp_$Zk^yo6}BzHIHHP&qQo#)g>?99Gv8$M`Sy6*F2cz!EGni3 zD$#U=tMP|EE9SWD2JikEfzr~4wop_IIE9%vR$i4H4m;re?RA;nh>J@xo25 zH)IT<9S~zj(g1~HP*oz|lNlmm;tCh-Cd;4vtf-7OFRu(A#xj9M0Vw3YpI=@C6FD3? z^clVc7eYb?J$~npv%NySS#8ckZMHRq6aR9+f>ffpn01Y)j^2-&!thRlxB-g+01BxP zwpw%qqBsPpLq7X}Jj&b}TMMlnDhlQOv)Eab<_aHjwbdF~PPLv0d*9aTRE7bjH}d*E!&`)#=4Lnl{E;eK9S!q1=2zLc(t4$u z&bzgK1U}x^I4ZzXHG~OZf7=Z%wx+PZ70FX!FK3H$*<|fp`)|MB2T0RmJGw3 zT!Dy+xCwtD;E$;h7)s~si-{};Eu0y(ycv>BnBxuF1G+7f1o6n>riFe)4_fz!4^M1L-!qW zcA_|0rk)Bi7Wdta!ISib!};!REZO7(9V#lod5zP!6DDPd;4~4`?smBcE}&BVkhX#) zhD)+fs~m_4_VSKnQ=&@2ZM#1dLsBk=DWnn+1w%SFH>0KU`?n~qVMX$2kb+mgcueW| z<$YGWbKR||8jZ3ez&On`JDcej)K{KdLD)xHQhy=z0r4sJ7z7qNQR)>6_xTyOz4d+5 z$^YpIfh5FA@n=`Oo&6Q{goXxxC-omfeTZIgmgDZvze6s~227?TBkckqP2@!B1u#H6 z5b^=cE6M)IgHE`7BrVgd)xHo<1#+Jrh+ZX*HIj zpxG|PPbg@}db{dtg+Em;m!NSQC5` zNQ=(_^h##Y$ey@lo<9?=plmxrwwZj66cKr3ebs(Zg6gP~c~ou!o8=PY;xH!0klT9G z<;se*Fv{bEvt3}D8gY4BOFK^ckTKzd!!!P7M6IQD;3-{)c&qf*WLCu)*DE-@Dp5*w zTn+>UuskIB1pBAm>ty`%aF-VeRbdLeaB0rQ41P+%{kCQn530H+09oIDV!Onjr&* z^>c`rhA-&z&-zu1(Z}(AiCoUxZ3)4qz{eLlotC?&=j~$;+XAN^Hf@J)r)BagdA7PJ z`M-#@;u#_%hNTQ%1_!zbI*i-cxrqOh~TX9VTg_O34z$kxJ#7R`FBGXo#sJwLay z^v&ZQsQXD|kjU61e-vEPwFR&TEZS`4d%+U;`rR*8{hd>mV$nPUVIixNUr}to5_v9?Ilh1_Sm!>wx9#`2x!{0`SZQ0mXr;=rIH?%S>FYsy7p~Y=eL>RX za+Xh5N5c-r)+H%rIH5>n%~G5SQfPiLKQz;b&4( zQitOrHAPgi*IBDdHuc14cBkhNRV|GSVZ8R8tQ+6RfK`%FH2`Ur4p;EUeuv*|b2UK< zXrf{<;Y_@mx6(0-@SsVl`a4U4o|XS%z=;P~=G(<$efBFP7R!A*0ao2De8~zB3H`E6 zK>aEu@)bZ~vM?jE|9Srk1Kz*xhY(=R6#)N6Xh_;NX73fhhOgabTe3OgU_;h%Qhe$! zR5GMS5@O;Osn&yCg4!G%$rk^e@COyy0*)iAx8&cyqq~HF4d8b*x!laQu=;*D-Wvpk z!aYbwsiU&}F3slibUiK?rK^`DR+!T%NIE z7#45}j!Xy*Tg??p$z@5Q3>K>#%TFki*d}fN^{}#DI0d*AMACpa_*UBFtR8>mNokvK zk1tMM0=Rx&&W}8#INq<`cY?sMrvy-}CZd5(&N1C|q($PZj`!*sa_`6S8iD7l&8P^2 zfs|UsS*6)xPxmx&C0F_XwglQ*|JRrgBVZ9%Dr>esU0y_han647nc3E9-+Hui;j**5 z^$`)eUT!6?SH!TRXlUHm(+u#DDe@0vEPmQ0^3&YT%iY<<(;BxN93(wFz&@B2vI_U5 zNA_9TQ35Q&d^<-##eew=#BV;s&yL8cD07({>8J30LK2NtV2Gs0cSR&_ti-7}cD7Qd=x+l5;dB-c zhu4wyhkTw01Q#DBDzY`LMZeSPheaJOw|jVoUJJd;*a4N(cXn7LV58jweaOg{CE70z zH|+O{h2$(3T5N6Gf^{4JKbvdCV#HcB*>Tn5YJD@sCq#^k5d2=r7RSM{Pp{|SwZkOB z>#z3?5^;F-32{h5H-^~E0GDorjc!zkBulzzsb3Vnk4HW{ zxuw7#h8r*i_0Xm-#a$Sq*ZOPr-#cYRa3nw&(QYm=4%!!Eq5FA@e;4?hTES3^UH87L z3KGF6h}Q^4j$fLA0D4hWM)C>^=tM0N856BNg-atgn=J0AqmxKr(BLXp5E%GY?)~_5 z_r*rrwoY~w zBY7(1+MNSV-L^mbiOV(Wj~U7x`;hjq*{lrXm_uOHKx1ON?wi!kQw&0BlwUGkt~N#= zDrsR=Fs6tCkEy5XzUBOs?2i^q?$IY5fX#GL19T{vO&>60&DXr$ZH~Z6FcEj+&bubv zQa{So%2#B6WwhOu{AU4#16Xs?Vj`LSQ6*y+>AfcY7W0*sLt4&qkkLuNc=AI;*}J6> zN95UJ{rGVP8o*jC|CK0+EpCDQla!6?by!MZMKiIM$K`s<2asAKSHux4V`!%eS@o;l zqUsJ(E+2;fb>Q3g{niW>0XSzzD6-*g*Xw%QYkG#O{)iCacI7-iLCT9P=Jk)tvgBkc ziD+|XCYcO+MNMV(5}+G>IGb{`rfJ;+!OZmdxXkwX#Rcw_9}KMP0l$P>3wK}d70^r0 z{%`JrR}7SDVmIt|LHK-9Y%f#s(5(*t76nvkR%l#QIfG!2a?aK^7007!EST@t;f7R; zC}NbNULl1G_4Wab%G}zq-D!dE$}*p1dPcf!zvrM8r{f308B7BUPXK2|=2hH=g|hQd zHa`srZ2|OZTjYZ;zlVfdwd8Z&*>RfY<*{0#g)k-X`UKiSiW68WRU(;pJq4o>{{AqE ztOyH3a&97tW&hNMEgV?J;`er!S7!n@(2_v8nk@+PjXe7a#^gIUkI(1j7!xeV z#19#R%~7u07xd=&E zXu0W~2Cyl=J)JbqvoPbzVxq$x7PNF0l(I0Yt!*rzTVJ}|JEs0|`L}>%pNvRZ=INB2 z-hE~KIv%4I(7mTrqA;D!wtiI8K7{`YI()pN?L{*gf0J5g=QP?< z#tJp504T0B=lCN1u2_sL%;!gxSa`XZpANUObD?>l8YK8DRZp&yKJj^2jEtX#ODo!; zLWaY~VwoPQs5%sj<#n9f%kkWOn37@Va}p5NmG)xO;h5vKSgs})X90vX1j@UexhdH& ziO954CJ414d$cu(gF9nCSlMBebwVQCQbZW8F$My+4{7{(Pxm z==S|u#dzVMQ`1q90KznF2Ws5TW{!B0F-EPX7&fO(r)hy#BC%xvG9m8|d4V~#uozZp?!EQ7z8`soxabKEy8B^jY-*T#1;qYpU)Y zkf$|QuNKmehX2U|KsZK@T0-gWiJZp8up1i4WZ9DiV&*!Q?c4f`tcuHTiIS>TP>_GY zhJ-frk;E{adHd&osdg#Joz{14r5W~p5`1JrDs zR}<4 z+8WQ7YV`dcB#qTg!Dq2=BSlc@+x>EFC-@gqUOx-r9bDbvVbjkEw4SoI=e#m-jWfzYo$ozxh%TgIk*&&{p7{ zK|ZJM(RLAgv&%=~qV?pSscw{t*ckFF#j?8r_)ki%3w)f<_vJHz&&%xZL7Cjjgu}&z zehGA1&G3Ox;$AGGEo^Ov`?f09ijd-nuVh#`FfMB zcFV6_fdA+VV9ar~>wC@57X*^eH7(b;Pl*i%HKKqqbexONcC?kJuV@hp@+`kEftx-X z(ER+q$b#@jQ+pb|zuS`WI4x8LmO9aG^UwcP)55;gc(JDOd0lQbNMGGqZ9`X4ZL&BR znN+l*=xGNe?2ia}+PVDvwat?#do(!#1C)>03X)^IHPLyT{od}TH)S`~di>P^nw=Pr zh_HSfd52nqp>S)KbDx|)g`%aDy*E4Ed81=!NUS^4ymyXk;(o$zy;95KQ<7)V2+cgr z^_=N6B~Vi~Doj|=Z`u6%ouP1Ej{O#jxJ6PotpELn@hMWpkej7~;eLO2*Y)->9>@QN zfHpbT0^E_DjK=3liY#Bo(8E;^lQM-dn9gQJdkl;5e7Skt@ZR6)P-rFBd=L7FX`Wr# zyzQBBoP^E=>k<%%%gcLD+rPxoE9)52ax|GWUIEmIK6bIudj5XhRZ~%6l1Eq{_(#Z9 zFP&3K(c90r{nsu^oWQ6yqYZu_R3m=Y?TEh+$a*X&yE&P_zbSh=;UvE*YK~$~>)da` zaxmHeC*)}e5I9(|`LM=;jHaGw2@MtBx)K05`MbaSO$rgM+o9d+NayC~Zd7X*(a5v% z&=zG$v1DuXq;4JRR#&+IF?5)?<@Hf#loriA#qxaD)n3=JS94-cX0MiiVmn@kGN$?O zaVgU4_9__R3@~*chbwG9?%}F$!jE%2|8exWwFXWeT40R(_VfU;;CnTE`vYn6K7jR~ z*J1fhkB;tE7d4iT^{VC*5p(_A9$A03=+1fa^J@kBIBjpubJgoz|B>z2ddNU}2}%P} zuGOA8PAPtIRn@$`v@l~n0u=#|nc%+o^?vF%`(IgA{Ewn`6_06*Z3tUl-*v-Z@*Xbb zrJ+VRYr>>wIA^Ck+BcK#*5K_SDwvJU)?42FE*yI@v!N@5!Q`o?s>UxT8Y+nyxa{5U zn_w^)^nWK5rClm*0tHSlJ`pzD9$l92$O8u=5H_9#*J2yi(zQ_8S@V31Ax}8rz#t%4 zx@ft)P7=Z<3MFaczADr!y#X?xLu$o}Wiu>=GthyGvU0ZfTZB*$#5@@yiq&hjpF!_O z2=Q*!sNS-SAg5)Hz~cu5zBeIdsmnDe{Zs}|TuFomSJ#_Z31@sUyAVX;??k|ejsl{z z_#SrpL7~oZl&5<$`=E4DzMh)br@5|q>ziYs;=7E73lOFOp%!F8eR&wdPL!}X1Cvwo zXsfHM>I!u}fRM3&jNPrq2rsDTA^U~tueTJ>a@{#VbNa_Rmq!_Poeq0aiL~8On5*e$ zXBPAH^#_TF%i}dI-b34FnoEmoz*wgHQ4Ad~gU9;iAjjuXU_SOUA;FM1_1v+YK;iR7)^uQPpA!W>#50Wnj$r|5O z0vvXOW62##j2d}LOMm_{yxO>J4E_2sb^M+6IvYkH)JI3*Urb8DDjL-=7zA*)up`Uw zN$nSOMY~Sr?*AU#51!m)hu;wMI8qiCUcRNs?gU^9PD}nA+KUo1rDC?H81g8r{1?=RrY1 zYxk&Dkr61(JoN1F?1LI%LQF06=Qws>-5Czrd2t$ahaeb1y7U{}Q5fIGxl)9qX!-VD z4;NC`6E2N3(O?WdSDj|u4*Qunx$}`_6y_tM(lYA~w}TiJ)0`t0TUoa&(Zk^wjnU+b zq=acfL_McIqeU3n#r?C;=L##7dnE)I-5+-}56zcQH4Qt%%`+)nk2zBA90YwIn4(CFzCxiQ`Yn>RsWRnXR4Y}N#8#Y1O|=fz3K5e;QRaWG*dx6 z{hy5jDzW_qvM@M^m4DXuKYCX34~hf3?%SR8AW4M_xD-OR?E?}fC5}yRl05(PthJ{Z zWmq7ip;)f{XqNnf_IQQgY95iJO2c&UurTlfar%ik8j-&o060C!mgD%O+lJ5a4v|Rh z3gwb3&6+N|Jm+pON_fZE!~`uh?a<#|Ss{J_E(v&iil(*x*pKzB=8}i27(YRa?I0kI z+h7z;%%Ol)OVR$*!g0TjH-*h)<8!(ceQcMi+52h*EcoaSr)i$!g?R-KC%Ih_&b&4n zPE1>=aO`u)&WyV^QTG+LWj#Lk)Sj8YL=VFhq4Pghd;(yRh#yef>ctcr>oV@3ynD++S*ogHk0_ z|3pAgrXpg1_kjK+5-P6uX@d*^KlMF<)&T2tLh>=a*+v}^s|j)9j66`m{oDbg<-G?7DYL&)7N|=ABsxE^xw25N zQ8TX~5Ch!G#gz+m3<3MYqPH*r#dIx|so=Wpy*k6LHG<8(u*kquA(b(&ylu_VGw8=4 zed_}njpIikUK(-R!^AQ@!pV#g!Xce|6y=bh26;cf^eE^MIn=lkCV3_f0u8}p+N zGz~q6TQZC^kir;bNGE&lpNhjctbiCbT|*thT{A$%L|T7#8|^~5{5WF_n}HE}04Y=8 zkvD}ueeuR61V4bCej_qcniMm{(@#BP2X3~kBn$d?xvZZ+1`Vn4Qsqzgh1Ln*Hu_|Tu@AmIC8w9Mda89#I>36de_c@sI|o>E6dVQ|?i9892d%ErHLq`gP{3Pk0Sl3Fd4eVF#Xd`9 z9UloA+~phP){==T7>C|dv)agh*r$Z(711wqL>Z^lP}r15Ri-3$0nd+}@&^phUoAD< z#F}kQ)~9~~DHv#I=xS;jyUyW&M9FYS1=))TGeD$O8foGhsG^*5CWX`SgozY|8g>RY z(pH6rf_IR6q`9zFc;8DM*N=@EXB>h&*`7sqb;#f#AsB?{pkalqInS!x_K7rh=Na2s zMR!e1q4JcsaEXY4RxmKm&+u)dAaqk;>$OAZi0DXTy2F(^qX_#Url|5YV-f{~8r=n{ z3bqCBJ)|k+(m(1enz@Jd=4-oz2#g2b`=K!%Rqv5c$?D4|cF?#OM^63ydt%On z+pFhGIjHUzV((>72ozx0Lc;DniypB`xPwNtYh5)EAPztv6`=;st#u93%=*rp3U;RBChq|Z#6<$#hkg!aqsGgm4aB$EY1cB5`C^h$uX3JVA37{gk5fHc;l7X zDpd*MP)x2_DpZux!XsK0qlm@oNoLh-E*wz--_c*0Ho$Y*R|lO@&XXjiwkU&en~Qjt2+8kNDmS043X;X;+x&h zTY}jBNYfV%W>-N8OjqdK@?(L7Q`vvgMd7gmf?}U}4pNN&zq#E1(tModh=h$kUd!>g zYM$THV=Et;#vsDEh2%&d$!p1z|IdJZeSDzdtIYBgQm}4st9-DO2@BK*N&$=r63Zyd zO|?c7kHxR#0}4`)9)`U7&<_Tp4~_VUud~#-rQWRi#UY_(t`+vmv5J`THhd&7^S4x+ zW~YFf9MbLpr?y;t-nyfJoh2r3JYL_%ZaKRCo2U<=S2muxvUTMgf02*p@@=UP-lj2vsR3mom0M*~i+coPON_%-=rM+vpwRDK)oGeZL zb@?PvHqNvBJ>A%NM4yyd`3{>VHBf|DBlsK6*f`pdfNztf11^zo+}(ht5I-l7i&f&6P_2cR}=TCj_7fK?y=a zCKhx`YJ$q@7Qu$@l+t zMq0#pd|?xy8n_y{-QlFK&M0xfdwM`Jv4;A>|ve7e=Px7 z?11#B&Gfd$+R{?}?ylwyM;U9K%Js{u_|U?55kdc12hOyorr&#e02ZT0r^|4;T6b}g ztt6BAaIB)bmIrrE%^mXpQ1uS%b%t9PZW}Z!P8!>`lg74fvr%K)w%ypaZQHi(oVCxn zzV3al{DA0rpLeb~?lDHOlO9UC-l+^cb4TUk#$s!685L^sbGq z6I(Xc*0a;J9vDD11i0(^&v8TjcVoPN|Ho-sFk%8rG^q<}Vh#Y9$+JbM8r<)6w^?XYt_{{tR0SaU@UNOuzG8nP3_0@ z>x7zS;-#&x&5?8HxA6t4-gS}kR@qL3&01+vK3$fKj6K}lHMcrOAM>)`jNb{kkx0_7 zffrB{|KBn9-TL*Pvpo)grZj6hIy$OS>onNu6{b?Hq^6+VA@mL5=jXS;l9s;A@Za(wi9io?52{$TcajVR_9T$h%{*?PB;%$vA0 zD=i&;K8^RZ@AN~W)cds^d|yk-+obmp_FfPkyv0UT`=!_9(E8aJr1SXSo{C@};G+`! zEv*JBNyXUsplj3XC|!Mvk1_3TXTF$qzy z$n>Pkc2B{h4Z-JaAsN}m^Wx z)poo~-@gI8rG$<*y=@=DyR8q5w5lWnCAH1j>wYo>0=J0+lsLr%<^bj2!-uU15c3v; zfNAPGd4D+~q3gU>u(qZ(BBG~9SW<)-P9*#V@*Oa!Y17GaR;J#6`Qt|@HDg?oGtit& z3d*`Hr_*|pit*N!3GeGWr55%G51?Ml(x`EVfZ3|`X$OG#sB5Nl?Sw+udw*`?A`FX4 zs=a4^C(&$Dy4WJ?DxtoKMf-PdZKVkCT_u4($k0VpbhM<@Illw>B|paO;`bD%41j>c z+rt?e4iXLmLia0QDpTQJ&ILf673;-tme+&Kd*G+LUXB>m>7LIZ+v4Kl{$aiRpy-0( z0V6`o*_l)Oo!iZ8!(;cMn%UT-Vr@xjZDsNF6zLb38X+;=e^-3y0^P61?+jpkq7Dr; zx%&Mfh`L@6!a6!Y)Boz&mrFr&vs$Oy6~K&>??*UjRmWx8+!Q;oK*y-Z@8#>mf%FWr zAif$j<^q7&Tz#ATS#NWxnjdeTB+6cFqcLpP9A);{L;*@~-f|LGIq@iJCwiLdTwqy=HtV!Fby;IR>+cirhhYYQ83mlx?%e}wXK_97h_<8pkbY!g+UXL$nl#=jT)=Mw(nF?axhz*+$?KXcBiPN zf(?X3+^P%tE-oyhpv4ZQL_(-Xt~`}uy=l2-`iv#`2a^%v6H?OuNviS0Dx% zg8R<}@UA9_Rkp{F_|rQc(0$|Qw?~$>4+9Gy7LND6)CRHXQbxoq6(cy;GrPY1Y+V^p z+1x3`7JU!C#ZcLmX5w+d-q#C^0Xql4{c*hDxsQ5#(|t1)tsY|>UYwg3OYNqe@e(CS z>B2OsCHSA;9vMty@j{IK|9z7HoqaxQ8)tr!z;A46|I5!{FW1l5yabH9vC?l&>9)Bq zPBCLA7EI7$De4*0JtYSeDtudtJ@sw)q_Di>+w^qBk=VbI&?MqwP@1^|kF9et(?%Is$t*yjq?eB9Fi%|#WYx1)p zs8PVm2HHN6#@O~DHDRy+88o(=!hx4l*G5eucRax1C)j+o$gs}BXGfyDQ!3MaZ!O5* zRv{Q{OC31p{MO;1D_2SH_2+TJhk?KtS~Cma?YXUa#i8)Z+!UTXO9W!Q;@N3;l~sC9 zo!%9T08&`yZlETy^>=j1E#Oc5#J>q;8(oC2l7K4+Lf1)~&{l~+uP)JYb6HK@{1Kt{ zkcOE8d}~R*c7$xb!Nc@*aY@&boX!w~_^th}%R;xXt@5(?Pn)YmqorAC1;d#?8Ef8_ zPxo;O(aAVhDQT9{e{bC(R^aKuUE8B`r$c0yK)@F_v7$jt;aOK{q!knmvHBV1SDx|= zdL}8^*!k(Lm#?w*b6p47=GzT%G=+JuIC<|)1bux zoXeFK=rXcHnRljyn-bA6*oLd&9Xtrmj!>DnL3!u;1n&MVRxaexnOn{Jzu!s-*VktW zB%UgR%<^D4gs_aZR7K+cCm9b>UE8jHZ@%E;ZxRVu}Phd=8qW4ggNA{4i$`aJ?9s+q=NU*DVuN!0^yzG`%YVymGKM5-wrmQ3Ic*1`fA zh=B_-Q)FQtm{}J+RH~d$%ci}}|JoIp-(kx?-hfiNGeXUS*H)IVQ`gSifAsTqxfosj zH`TF&0N5Gr%A)w{L|er}{QFL--`-SJmy}dg=C38+ftW<)px&P!KU%d2G_EIxhTWM!y;|r}wxG=wdMD=fG>WcQf zyyj{jt4nv{$9v}-zPiLchab$Wtf(lc`$q=}s6fX!*kC`I!&%m`UCZg&*_t8D%7s(W zoVuo_s8D9G&|_>nLy;`}Er1_mZ7CIZ5=oUXT61-ZtunEVOY?da$za16}z z<4P;3s`{H4GhMy>98g?*3=An}C8VY+v$pheSM!-1c%OZZI4=zf`V|0DFX&tRp+Vq# zldBENSo~e|Vdwd$am!dSOUnkT1%?sMsAxJKQz%z_81$sJE`;F?pGF#{x~T}+$Ayf$ z9D*wa1^#UVwo4pd*v|<^mm9sNzSWI;H0jgRX`%CMYv*T(wo=uqQW^>c9a|R`{*b?a zMW1@N1LDeW{S~7LZkpDxon#G>dgAY8svCmbZkAVY@@9O#Azou3@F8Ulir~S+Nr}$| z)4_?3SJ$jPocD*}<%S&<%cZfR zSpDVaXC*@>ol^~OW!`sqWUExZqNb|?H6O%UVs^DiwZ&VCk44XIaLbW#eO{Pm!Bvk- z$_oqrqt+Rm8^yN4;|P7f{_3xbV4riUONWZ)m`IL6bL_|yWQn!e@JT(yk2O$G^8@@< z5OM|&7^*YYv-DGoZxZ9ColLHaARywYM3}}>YXT#p@EYIr0Rcu1q|#+`CwK_`tSKIl zZ7Y_KwpoY_FCNS^bYHUov1@PhfVCL99vje%MNJP*?0vkb#n#R#;^)qqmw_t>+-sZ> z;3r0QY*9tf_m*G)3L2WtR-^ew>jSo?qT<;ZmRfqhuXaE!Is;THq?m*ZW>SX3`?N1o zG#&;r;`ewCJypG5hy-vR(uZ;FQO@AM;#vcl=h5f5iUS$A%$F{!Rh5+stYqJAh6cic zSHH6jX~KDurgh6r5-;0)iDucFVpD$S+oii?5_L&c*>7S|UMNm%Ad%hr`1-q0Dr+{x zYX8mWXu1Q~VL+|j?y(YApxKz8l$^}M!aD0Z&MN#pY+0Lt0BJBfo6GoiSpKhpfdOXC ze)%usl_-1{SXc}UcNMGUX8pb($KOjR$jExPkO41OH-M(XJfPQkKO~ljR0^H_3CbKH#j9(EA~tuK0T)m^bhWI zPtYvssY{&As`iI{1zTb81~wfa^wZuf)*Q62`P%$ZoKY}1p_VF*TC|lHb>i$T(sD%V zGOYyCQ;|50#J0RP5^w-CgOl@VE-@~|m}O-aw{{YXHk2EU1&mC8N$HX+)`Y{c>kaC_ z9Yf*HHrUElCGJBQc0At%$%M8XA#_oj6BFAD^H3dH^&Vu6b-lae1&}oO4>gUd_CNmy zvkPjQmFX09AsasYRT&?GB%ZrGvau;9ubNz$>g^i6SfhM0nMd8HcyCwMw5tg!x`&iL z#bL70Qd5AkpAWX}(F3MyN;uNt70z;13ARRJu8^gI2jCXlS?TkepPuHy{uaN~$jm$_ z^7#I%kBIOMHjMXXzxjrY0)Sl&J(v|bw6;S$CS#@VwbE!ckj|!bxgvdqj>s^2FOFes z>f)kiw>6#BA?At+-24#{BV$@76ugZifw2jSy-eZ^q%STQnW`Qc#c~#5kehh$>4`O6 zN{nXk)chR`e3Z%~2t+;2e`ZHfoZsqd#P4$1tBtEjPsu(mmqO2_;fU;ggN?vpBd}f< zG8N0$&w56np!+v4@?iQq~)J*#d`WX>n(RcVOk1ZURoMfMj)#7)hz{- zrdtgJ6tpF;K8S#TUCLGtq5XJq&E{-_tRQ!DOoy2YoZ$T}V(9Z@^KF=6eE`S#6{G0m zPS=KYzTO3(DFI*s0l7{!GP(RPzmWxo4X?JlLf0ce;Dqh)V6s@uck#N=;nROJo#Om* zdjjHEWyQq++h59U5-6bQPykz*E}K^rRc-x}B0hY4y{)WqV3efG;!+(H6cj^LPrwhW>jc!e|D*mZ7G=psua1Ow!`!x89Gp6DxjLW3ku_K3Uol z)|;IIo9pJGC$m2$GBPr-9h)Dt`Fe`7T~GbOX)W>T0GIs1ACp}h55R|yb46DMBD^zf z2fG0%^zpuV9Bvc%A0s=PgR8u}nJ4orPSBJt_(Dr~&(W|+dmr}%rD6Jy3%&uemTwRu z{2Hk4l4)tRno2v%Vdhkt$Alsnmh0h|i6*E`D-}tYYgA_kk{x+Jv{LGSk-$lR_oP{v z4ElaZ{mJ@NgeOK=YV@l|d06X^|M!g0fjMb3YTopI^GUQ5=Yf>|6W+0zwY81OW^MLu zG7YI^ZA~lYF0qFM;0aU0O@^Hv4ljBG1(VZFE1Rkk@`|^3Wk6Isx(K*lSkLaPqM?)% z2fzQRLb06Fl%)k36&}rFU7x4T6lfn5?ne1Ow5L9gH?I(nH&c`y}CWX`>hQ@lfSn;o%5h zu*d@H7FvaRMDtT|1T~hVxFk0V1N>ycyH8G%nfNd(ed&8F=#Pibk8FeJY;w}9Ul{jx ziR~rQEXpmCXjkcX$|sLXsN#f?hsQQla!RPg?V(iPcXlAjvRB<#l`Ai~fwY)F$Oatf zxCTAhTiXju%gQ}k;6ofrO{CTd<9+jYwoewj>FP#fw=-H^@&8*JZWoJmuW7NDDsxjG zRAcKAgnK{loD^lP)DYpEWe|~*127Q~F*uAz_q{&e3_W+|Uw7W{?CkAP27#NpM%Xdx z4clR0Sbx{`?j4b6v>z!>5@q3Nb=q#;Zh>U7XPfQJXd+d3xFmA=sIQxax>5!3N-Hgg za%%Z}SX=`J-*SoMrrPdO`9HQl?@A6uvRea_ZXKkz5)3$BfY|2Qf3ic;Q^g%e6@4gU zm{;@093AEM+$y0Z!;^RU`Il9vi-vGLEeFC-oHsm86%-V(G7unLKy*Dm2h{62`IWv| z#-+%EOs!wm03BJJURqL?QeHZnz&Hw^Ge8(GQ6vNnNeSD_Yii@^5(o%Aa$4`T(nGCr zeXA&JJ-lez401=J2%E&zn*ZC{`+Xo!0!4~>WNgfRFWbfrB+F`4#b&j)x347pERoVG zxyZj;V24(_wOK$b%{ygrhLV~(;&fdYPMawN#MXLXU;s}AJ57dsqPyA7>r;Q~=!;^b z6})x`Wfg@#Hz}CD^y4Fe=RYf*mlv{Y^2g41%&}SsXZf81mKKh;L$3y#&GNK&tw6`+ z4;mH*g1?R6n#O&vA)TPBIm#B|8hfFEN9XAu3!N`p+o$p)kZ3P91spj5UBV{(0}fu# z;H{J9;H(gAdUTNfE-=0)LVk+k=+_$ks ze>77uq7V*js+Q}h?#@zU5Y`(fw%G?1%^h=S+JzkgZZAw}+3d&uFhmm+hOJW|yAY zRi1<$(hZqMXJ|&#iSqS${y*4mR^!|=2okq0u3RpNW6m4Az)$aOGCUjWsGozg_4D=K z9V*RED1k3JjagI7KdMJ<*_2dGy*@Zxe+O^A=mC>{I@xLBuqde>CtvKQRI`EmAVQ3o z&^h{hl!W;bh5A1mtD=_}PD}m_f1}yX%!~hr^U6`g*L$y9qDbITBVqViy}RkQ2Mm*P zjZCz|Ozi!Rj)wL$J4P3U$*JN#a^!!{{?zc%PopkS}<2AG_?^qvtyAdTVjB zQ(I4;A9%0<2u{iwtu?W!CM;{9h6c`F?>dJ|*)^AwmF+)gPYygw^+04L-H#S>ow>-> zlAP)83sU8aWAFO%w6ovasI92X(Elo*Bq(g4efFQRDk%#%>_zd$)+j=kN%JM1oFpY@ zmrxC>-ZnRS*<6$Uz@z&Mzl5TsEm~wA;_M}N87a%lXfap^CY=6)g@7p2{xOjp&RV{s zsmyCi4ik)wa}yNnl{=V}oQ3((FR9NRZ>AdU&-G9A;4>BCGo^MCc~~o|BkF#+5yj(u zI=@4Jx6@+WMXo-X4Ap4cNJ}p z2LA>2b{|gHx!h>wZe~VaF1VFPnh_3^C0tuvfswe45`#*=Lp#mR1*pao=jZ23Z|zbP z>cB~ltH12&I={jG4I8w&mX^+7zlj~f6_*h2Q5np_;@NFxn&kQbHYj-LO}44M7C+7Nm*I;oX*t7QSm4(!UJj;zMr2=!@@_~n&J*(=9YVg44)34mV z{Q#oQUC-~(X1Sfhg4!RVIneO%U5Bq{h1#qaCuG^L`@GquaLT~rMltwcn&oP7TT&Fl zq8$)+>cS4rmt(WV)3o78_LcdMdH`ojIxF>dO|6F2v}`T7X8`ihHjrJQZyUGarKK~ykNXUD#j!z8X6$jbeVFg3 zb1*MN5dJ&I59`A6a>E{U#8Q_pJ!$r~fSOA8b&Y|w_cj>3&;Zt5;oR>BoO6v`z=+IJ zVhLat z3hqH|>55&^Z@4RU>pm)yS5O6ZMt)eG@lTyV!G=VX(ovb0m(~Uen~Tyr(G^mp&_KPd z+WLw2g2+7GX7h_9a2bP?5!9~NT84xsv>E+rqA=~9^8gp`9RiL@vs>Q3zx+6?k5i)( zLrIZWuK=5GLN9AmJUk=Im_q%UD* zfs4RGoNun^!nB?^DT}}Sw=+8v(|3!9pkJ`oP;+&Rt^7mB$^0wi;8`yTWc>?sI&ym-V zF5ZH1i$@Ma%>uijJugljIh`--%R?r`N5s)*30Huo~0$5RNEZ9=qX-Ii{{O^~A&xdJ2Y)K@EWr7vy$@ zrQU`d21v4u^($Gn-d}QpR?wI~o-wjLVVrxhO!h~hNPy^RC`$(MGk60_5}OV6ewgtXGZK|+zu(*amv`b1Ol%CeY7axs4&JIzYHFUz>n5+qU)*B|MH zh5jgk4lu?|S#EIjp52KvMP0X6E^gTO4pJ1J?V#7|{Y~!4P9Jd;WF$>ZwdP0Pu2{$) ztR`jv7x@T^QB)%Gl1<_4)AjR;sxC2NO4tS!`T1kd0T$0s+lI_00S}aywK%$0ZaQ#A zQ%~z-PQxAp4cr(NGJ=lVr!A(lx_UNU6RQfZReCk%`J>U_?peNg6qA6@9O!+XyJ~4FA0NJn z0rgJjc85C=tm=4N<-Ba|qv&0Jmz0p8u3O?`#V05=mrgKRU9_s|yrmQXOILt<1+;Wr zG-?{|?rE;*jnVk!RJNavy4rsQ^TM9ysmOaPoB<6Y{S~WCHoTEP1>-|VKR(~CVBghs zXIw6Ch>3}}w*---sTyGL<3AE7_|U%l_M6T~hraMxA{^hpjz42=gM9H{p+Tb|tR^LS2o zx0NoDy#_|J*~^kj_c5P*qNr*`*$3HI*+G1Le`|1fQ{nG+vP2qNxDP(|FkJ5!|EOx= zXy5u)16deH2bR8OxuOW4|8uItw)^2LSiE8ey`vp8>n}`Hn)K9U@#JO|e77RiuE8mz z!98DWykYU^V)LYdI`$tA<~qc6X##Hd!24t4$T-Gq=c#wIp*9;nlY0|xgA-_-k_2CB9Yw8++2Q!Kjm$pu#q&=oC#9iUl$QmpP80YV0UNlT}4%p7mD;VH?uKvdU3lM>@Z#jPU7(MUi*}4s>Wb$*e3DY zMm{v{#Yb@2LOrw5i8)l+9XyQLpU)HG8}4(PtEZte_e^hwu!eQLA>^;}Kzk~uf^>-F zmk3)IO#T)N*TurekGaT$wz+V&%B4Q&m*3^&WCRE+4l979Ua6}O=p$?IJ-qfTx!!zD zOeGaExYie&&?9YP9Wn%EEaVKANAMQjuMit`c#0!O;XtlGLXnt3Il@WrH2-i28GoM} z8}B0d_Kh%u0w4wnXTM$>lxi1Zz^bXFl)wNeFZlfYP^T%vxx*U${_>~Ak4z@xo2=Z1 zo5{>{dyV1HrrTRZJ~7Hp@?}tdK5^ZrmcA)(;BUwufHuPho!p;=#UlZnnJ&AbhEaG+ zW(`X4QL8}j-k-feiv-y+K*WB#I=gr5rzgh|=bZCwz{99Wyd=Mv;fA&u0C}UF*Q2Dl z7?5O)%UGF!jMDMB%F92_M}#<%_`9lul$17V(;Uch+uk~yEhZw<9f~{*j2{_oaO{mU zxe-5BV`JviXjSLHxzD6iqVMbds#34}u|$O<)WAK^81N5^ydIiwF~@SC#+JR|r%f+f%uNS^M<4aM|l+5Vh0JdLmuENSF12u!xz z%&Fz?5UyP8X}@&3Jt4yLf_g#=YTni!UDs>SoOxa7Eo}s$x46FcnWiU=sL}u4Wc5UL zRn+kT^#P*e`8^+8NEo*5ZHGry>&Uic`HQb%b;X$9_M4)h9CeD?QoQU_8dh&GsgpI} zWQHkU6Mifd#!L^|RE%BUt~dYiYlcXqt@Q~ZzcsL;#4@JAqV4M~cY5uO8+tef(tcl1 zRv@@};1G2?nv~^*W1JgWjmt|MO;?60&7IP92g&cye7;h5jEu-9-9vf>QRG)3aR5D~r3?*TdSPVG8`e+}JkF z+ik^y0+Alob+s%n5goWq`j7X+>ClGjztODHj8A>sXo6}9!(`Y}KPCOpJv@&MwS+=NoD z!tylGmh%2zj7P@DXNLS7j1n(D>=~8%Nl&idMXkkI?zS4^n$EEqF(-wv*WHj+ndKoz zFj?2jwR%~vV}-frO;otT$4$Un{avJsU4MZ1a~w!7VG%M>a2zCzB+)jTn16m+mYAL- z@katfiZGs|mxtv|Q_U%JaZ4mt!UWswx{(ly%S#D`7Gc0QUYur{@+)U!+T+JDBu)pxJbSR)k$GCekoamypu$&aT&+BlXP$kyF0`yNrsVnzbtJr+AnA z_Uq-hPEn~txRThNhT$yKnuY&FoM#<9c2z>pQ@_guu(Ne@_$Zw&_iey}sZG=G@CSee(Gosw;-c;`oo! z!m?NypNW(qk)|{Af(jOuf|&L$`Qv(7pdRxVTB=Oi5+M|afq9r+| z2ohrT`h+PjC<>vqM7I9AkVV3tppWGP(=r99n-0pZt6fApIXAaJy%rfiPQnRfmB&~;e2nXE$~ zqj|rN1I8h#eq!NOAB)Z5(mYJ^_YE_b^PFM$GBD^y7_YKhU?G!Cs7M2@wJ#|S5=nOU z7|&VGw}^y6C{>G*abK zVGW%{rc{*yGToQt}muXiXcLfdULS7je+Y;E~; z!$T6edPPi4;8F!N7O4q9=Nu>mk3~Tqa0U9a*?AHTgNgSiO#d2(c(@+p@z-SpCZp7p zK0X$^OxdGx3YH@h-D-y@J%^sOB2J?qNaAUE$0014M!i2QD~axVFmSvGB^%HL@nrB@ zQHadyb!m{bB{tbe^5%m5numZU2L}U{dflkc52r=KJUxn=s3J5haxvb61u@R?I~Odb zqY_$qUw)8>$y0TyvI|xvz-YToqGfH2A~*e}(>aYR9uPOH8L)>16b6jc>}+DIgK(@n zv(#&iV5y>`MhtA@7Bwvz;eUH@^aId}NmR+5gm9cxt- zkKOgW?^$wE9Xs$-c8k2-TJEs7fbuL618qI4w*9y448EVSc1W@XIovo zp1yD;qMq8?K*f$W(~06SlDdD68x>(Fre1YRH5P#mSI-YbB(omv%TcbExm7# zPuyhp6X}yytgQ0nYAy46rqIUyx9!8eY#$RA-uCH$KkN0Ic0qjFy>IvMVNopKz`J@; zT0SmR1FA;4f1m_wMl(&FxlSt45GyYv#!c%r`apR5Kk^C5kxM??W@1?1#2%JDUg$r8 z?5yAM-ynfgv9K|1a$PvvdiyOYLEcG7^AH<=wX}4 zs9R*e#ZGNH$dsH@h;OW`{l;8J?WzCixqb|Mt5cyWq!r@%q|>pg9(?diLJ^+U{@!h5 z`;yOWm_jI#)K5DWKvLDtpiFN4zbpVzhALkokB-ht%OO@!=mIDl$f!v8i&UfGE0TQI zqjM`2k(YtzOP4Fy_Jp7brjUK3)d-LKR9w@nGXNYxk#&>eB)ZGp)_D(YP$xA_A`Qeu zF(bsXDgyBS*3`^hYL?2~=AtuEk>KdXc)Zl_lDIodR3W&P`j-tL$_=6eZ4>2Y1ux8h zJX)PAxaDycnaaf5C#k3|ADUgHsxbSaIMo+FxFLx6TDH_v4^$xs@Bcv031PQyM@L0@ zJUDP;k0sSe(e@vlt~Q)KL+(xS99eP&V}>e|V6V!;yaK~~ zx=Y42rKkUuR?;{IR8Jt`EUUr%2 zm!cm?7ie<|M#BLq2|}sX#NpHd)QC*_x5(zDZN=`_u~;?~phZx)%OqHC>|fE_(S+$W zAbkc8DQrQvesd>QsAsfq+KAy7y$=4tN<(}{%skm0U>@!w->c4HZr*j!)aBjp)3e`r zBh0%To^gRUz7O$=%;7@5V&);uwMy6p4XO0UH_erk>O%}^_4g@>->T~z6J^|A<>xIa zmtCZAOfHzb-qPkIxR5Q7)K$#cVoV`(W3#~eRL`nUrknc1njG{{Sqei^$x?@(UjSZm zd)V8r2h+eZ)f7;FjNfU;&J)?7y~DeE6}UA$;4kNJ227DGL?~$q0_C-6zDoClo|Fi3 zYYT39898LG)~viw?5TRdwJ<;Pk{NtSlFs4On>wjotI8%Q9E-(Yz(4rHpNR#l6Cuk7nU7!YB^*EdrIDkEgs^UKlb0 z#QyXc{C^D7Amg0LRzF5Iz^+*G8|0|wz=*#PY6t4utmF~ugW>R4z22XJdDp4-8M6mK zJ!B^x+^SD(XHBcqlEcRz%gAojyr`d~|LiUYHvtoQkd>rws51HsmW8nnnR>5Maq^h; zz+s1w2^;;OWyQG7Ne%r2myIEQe}5XjEVuDNRLn$rqVmg2PS>Ee4h3Eo$Ta4cpg|jI zv*|0z2Za87R*jFR!B*LX7!OzoLIj1tvd}L)`gpbiE*ev`V-xBjz;-_Uz8!NIh3jFJ zH`M&lIqI07+Y^n^-}fPaS~90tyG;)c4730O6d3bzSARj_*lGgC?@{?^y2bd(imi?C zOZS)=OQ#Z-IQx2~R-uN>X9^oG-C}18h0zY!paFfo*FNgUL@I`d6j(B9-er9uwrR2X zLvc@xm-!R<5w6yJLoP`>E(tr*U=&t2KcM}L2+Q)R2}9+R2~efwfF=YuCq))hCW8S( zp)dY?A;#V9$LkyM(BBqkAS*&<1hhG@40`i9+lkNF5-A*Nu?8T&=MiWL~}E zV)W)@bpL&k&f)7>{c^y3SgR-=jji`Ytf!ZsnB3mak=}7?@_GiBkKTA6SHb`21!uF{ z7t>Gtxtb5w&&swm4+ac)M%M_2uS459@CFL5LyJs!=WrYSa2^dNtYYdK{b)nC!k`yB zM5$!giRSN$2V9uFhfZ*(P|&W+kki&oj1U3zw&kh$x?RTrLhPcmf;n0OarmPkuNk+~ zq>3`t3X@>BMe36_k>-;OjylL!5@@ROhxWV40f7ZH_GNp^vybq@#EWI?gFHko%9mdA zv?@WmjIaT$rJnV1un4MH{~&^CvxKuV%}m3DBf7T|+sMGKklmd5v-fbnT|G0@+{WwR z-N@hK$2R%gVUaTAq*zgBXjXZ=ooU>U?G{uVC~2f`wFAGRGz1d62x%7Wl0VM;u*>S*~-2Q%$;ppqFz=yPI9y z)zbi{Kgf2cSd3j+kdDmo7&!W4Jz1u*$}#uW0-?4haWR(*YVy?hFk#r=?w+ib+D(1} z>I6f9$fm)%0;(*9x|P_Lghig0cRT+duf}$W9g2lJ=5!kGf!WqL0h-4K;h<-bP#jOL z6}ePxYQXr5KBBpexY!u14&QZGOa8WR<^d8xhG?Ee2O4{<}CDF>8<_m+-K zS_pXj=9BuH0IJ46hV$KoOtTDmF0~Y9F|8mtMnpfi(?CnQ7w!W@n-uP`8F7gJy*?Q_ ztvP5gsH!WA#r$@}tZcWNCU`Ekk=trvbYYyzqX>yq=9pLS8?tKDRWMO3aOI?Q+ zDviRmMn4WOLtYp7L=M-V=oU#Y;_$dwgxv?@?*!|IdJ`HXQn8u4+ubI~nR);UPau?j zZk*gy4CP-^MNYL^y{H;DNGlj6NX4xyU^PsJOUZ<_KO@%|kuG8MH+60ohf;his%hw4 zPM9r4K~4&0v9mDEsaGzk(7KdP*+Xbm`2frgVaDd$idlWlV<%mnX{M+sM{Lwir6D55v!Z^oT41!&LFC4 zfe3!f8Z1mr>gnO0>MFMF!z4u)hyb5=npxQ!dEZrhzTW<7qsrUj3vYt=NLN-tE!UWY zVQa%omB}ApdA(&aQ%h`6tyU?jbBto>Zcj3^v}+b}$+MOzGk0pye*0@2fnFEllinG;-%bUHwC|FaNKp{BOH~6lf z$5AG_mcw5kBd&tJHwbFM5>4i{OZ;eC$DCH8nU$py8#@_VgAxcS1dF$WGDrci5`J{P z)8{d<=0lqC4;F^S(mzzC|3>|~P7*%wiw}v-KdLs+pIfepDYy{URqpgOY_STFCM_W# zQv}acYj;@#g-+KC_l#=-g#y$j8iOTDPa|fjlsTImoAc=i?>IKqaIYc^lMy@hhX4TI zpf9vSlX`{abx-O1*NKwktYq7LfyI`NfwQN_NX#JV0LD+hRSsTiphYMzwYB@lWEn{5)%tZkNUs$Cdqx>3z8}Q z4G1@Y%s{1>rx2Ny5ZA?`7tpo_=4rH%kiKfX8Ied;b7KPnlFTiKj+CqYx?B3CLMe=i~$MKE}akFfp(hqxf=P@=8zAx_>$m<3rUv6Lohplw;$` zWG|Ph=%6uSnF6fi?o1}nTfE!eWHP4eWv)gg#K`Jm;(U_g;uvoNLdDn}2EZsv$3I>~ zrIhQeU<2_xWh~#UANeTXRxiH12r@>cnADh2(q@DA$&*A}*H%%1=0!Pq6Ri|c9F?}f z;Gw9@ZQ)a9_2WJ3QSDbl!$ik+pbgqiO~IyP2_V>EH1s%off}G9_V5(V`-ky&>$sF! zb!K@7;rVpGh;7_nr(qxHSSV;@$>fG^t)u<#X}$2zZCQZveh$HOP||OmuE1oQzO>Sh zH|pccY_+rD%82Kj@zq+fDt1St*!rXxMv;Ec%jI9u2P&hOHdA>j@@{k7d&sA-J>S4Q^vwckHn$Fq@r3Y z-W&x@$8`0xWe+BO48vja?dNsD$wWllrGmj7)``9S=fdr_f%Y}@Ls-RedY7!~dYt<5 zxXS+yn1!~2qsi_AC2brEZ`b3oo$tH;A8@^4* zsHi4J=O>FDZ3N^>RQ3Qe;#2h&j{)eZu4=ChHy7{>qzn!OVJa}SxHo1F3JPN8`kWlS ztxZo34vuBj3*rEPkdTKyX(C{WKpVQreZ5Tk6vR2I-FVW>>{xUQz|(LT{APMp>@ruh$$%SclV%1?#5eM z4r|aC`C4g*Xg~3ojV%x{ux}cCClHjaRp~h%uc{HEw~~ABk56H8<6>EHK)ND?ejne+ zhmnX&3j}i8p)^>(?d+)!vxa9e(Ali>4v_P>%GgrL4sjs`aQDN`ZB~8d6lGFjj6P1h zKWLiCojq@PaP^pYm%{AJI?Jga5|2V)q>We%@6r*maH@vK5gaFIcMnIY+2`MVJq^|H z*quPu*D!D?)XWWupz}2~eG^vS2iBmp9NGa zv{?Skh8}7{w1d3m!SJ0({`~PWu~diaY4k(?chG?Ew)kYa=BM4*a4bc{?`EaA{B%mTFPR7tqvj7KJw7=k7~D>EN}2HN3V_;_*UDB}T`9esFo#L#x%OW=jk z#^j~*eg}^B5f#Enic|+zPa*QSWIx5-1e~N*f2G)`R~W6KHu^L%kKUMfpHcURCg5Ir z-gT8wQPRf~Mrf!A20ooQS8HJs_E zWCrM4T1i8ssikqna=KfZoF`SeSPpAc0Iq(^=l$(I)xz9fM0hgGPtj}vq@)GF9c*sV zVTy7Edq;QZkP2QviwG<_VIiJ+Ehg4)=-URyASC{acT1rKAkpfJZ@L2y6TRJnz%?BM z6Z%pF2D+4-+}ir67g@$C49j>R`p?_wKnUg$wB?Y;Q=d!e-RXMqHm*1|{%O+K8X~ES zF8Kk(zW|Mh(Bo;r>iX$wGC!(kR8+M9_{aK^b-Kh=FltR z3kCP3?wwydsODds1RK&T$u~JY_z>Zj9;e5?f2s^m|%rsh??Sk5_Gnpu@DkBndHGQ2-q*7)4 zi{HHm6efWHz$tDNtJ(qzCs4BW{ji7;q_3pP+Q;VJ@e0y(i40R@JO6U(EO3{5&TMsZ zc0AJ;Cxgkm$76^T4=S;Q)VpEv)5e`~_Bn`S<#$(LyU=A`f&l$fhruna*1g?D4?Oy-_{M@+i6FL`w+b&b5D-n zwfenxYIw=e_jpiuQik=<)6dZ^(?&L%VfdjL=}1S{5~W zRF$-8aeL9NG;V{|B`Qd!`=7+Ddm_D?rH^CP)(^~IAQ@Yc@9wA5(1o@^UTFOMHp(k`mRg;`E3nTw z4QT5au+wS=7v1ROo`};!-**@mWzKf%nLj=@W7_(04fH4#SZ^BGgVAa=7Z+EfKk%8H zf*;-8<+NJLp%^CAlcTsZmbXL}QPBTVQHMAd1_)Q2o^E7&;WsMQ)gIn-#cT+z7*Cev zujA4}5M&TAEaAKnF&;*Qf?NNptfr+-7o~ zN`zB)%d^UKE1#Xse8Xr|BiHI!|4BGV=(e9Cwky10{cPp<$nyxpTwm!$>|Fvlc=#;M zl}FV#@p#0Oq?OR`i5vhCD9R-S6-9A^@~wa*EyHNav!jJA9Hc|Gp0Me=pL4;m{o*pYs$;YZnn+HAEwe4Zc} z8DGdsN{&xYt9C{__o`H>)f$hRFppvG&(K#QU~+EP%$1r6eSFxnrw_|_%4%AH>tmsp zLLc{_EM+~OZQ0%?j<$S$GnlQZt8)M_$+9UM!yYo|QIQeV?c?!&KJOu5KpL|Es@_0Y z?&O_&YE7b{1_?L0k0g;VHQUTe!w|$IumbwWW|Ba?@1GaZ4-Ew}F0AnB9quz$$|!&F zZF%X`IHWOn%ZdLQ`o{A_V-$-3@4dal8eLqZ3kUv{|6mGskOwT8LwasXuy&BwFQ{O7a=@1n4CL}lQ+hpp;KzfI_p@5 z|KMDOBHlij;|lP2N0z>`;HTiG@GcQQ(WmMbBX)^TQ8!VqNYEK@MWCntRwYRi}FV0y^Hs2z*#MI4}?}+kc-G@Ge(s${x<<5|WHi zBBJ1+2sL>S6#o$fjwoXDdbWG~Ehi)#^~j6&eiKSiz1AECxg?K5PKq}_%q^BqeBPE*l2sZmU3y@`v2WRTCH z4YeSazI3}PW)p3ws=0G>ogroo34Lme6{g3i=3HM)V8iPPsGFzdJQohVDCmxEgn#C_ z3fTKLg<<6-=P4DrGP$j*tB+I!2Bj|Gc@4Z(;o-(DXf#@Es-X$KSojvdG(r`q#14k- z^8Fg`k&89Ks8Ns_rg>$gY+A4W2I^GjqDe zH5f4%)VF?DnGyttIAo^1MmJ`*^VSfyk1yV;zZav$4;OcS{5;6su;#o_KRVeqcYq}z zX&fLw8LL@JNlCI=vwC3%%QOcNN9>foq9-{P*L-!g>c+t>#%F@+EmM`aV)4ywEC@vG zx7KE3j>&x|5%0?9?-_{WdYi9!*?Kkz4A>=ig6&nORyeF9ioM?Jts9$bviA9e-ehC6 zTU>d|J20v{aec^vK2{YILv+ia+bLB1b+P_@PjXIf%O*u!iKHX#gq#pHU=XmRF=J4i z7A8712_OEeK6@g}?}IB#-LY#-x3&;vuHYM%;^+oocLN{oq>g5!MRYpP-7 zYnE8#z(h%`HrX=tGh=|0L^K+g!zNRm0DD(@z_PllxWe-mQQc!{#q`a=xIq`RVQ84L zLVp}|D}zPA7jnGOYWQ(MHJj{&KT^b3l6%<9h0KXeliUepFT;s^aYa4(uu(l-O zfe7m9M8;RV=#M*7TMrY_&3J-GhRoqhC`Mc|tX~hTB)4+k#3I_nds0$AFLB%@eHutj zgp?_x`UUqXgeM$Y`ka5SwCYSy&dPt4S4b&6Ac@l|MBeH`-SC-30Eu^~rIWwDK_N(9 zZUAt67UgZwtx6*?U21n+7H*-f#JCJA(XLyFY+k%JHXLj1kfJU-+$~;D(eDTR%R63o zPbI`ZqA_6dZGnN`C!TjvE(0_z=MmRmzdQKvQWyFa8RSl5dQ(i(t>u;fiM_Bqlp#e6~v>`+S(t0{)lLNcFz^5xtk#s;RuwGu@(G11eZ1WO(|-Auc#RZPaW=npkgs%QwPJ zh%<6cv<_tvV_E3gNqMlWPBpYW`da27VMB0p>KMg@1(-)jALF#{Md4bE;DU~ho;^Kmlkx>nJT`Rh(9as2sp5EH@)>n%81=|_1gyv>NW`{5GsH+;p^T}NlEGH za)X4JWZQvkaPZ{?{9H{>!4@330B7^NE2utI~6XlC-WmCy@`gnfBLG1;7g_;TCn?7#|ON8HAOa0Sy^6fUe_mJhGW(F zc0YA-Nh0Qp+d6J_&J$$aQ2u^nbXP9P6hHd2FS8N<^DqNY=D4@d8fa&xYKJV7$!UK) zlQ(0+GCII0O1lgYa^bl~-3beI1*#+A{4*|_j{;Q%;3C4T?$vG=M!2rD_PsN%^%`FT z5Kt1yte|(W^YcFxmDHn84%YkMM1{t#=UK7L3@KTm1Lz4vMb+PUb9s}{xcKP}rd^58 zuxZBY(Wi_lfQ+|bgMF@J)uc`Cd$}7fCVkIy_#u6f`bK{$B&3kI1i`|p60tb}bD6=5 zg=2A{H%nQ|>jMyU5kJVK^4N91&v-JooWJbu7MmmA2uWfeYTciBt5GaukG4 zqz80l5p)Wl%Dg)~^8mJPK?NhY!I)*^XUamZfJ%}gEOPX`+U6f_SA2HA($7Cm2tH^m zKXGpk48g-7*eKNROzTnf++ST90ze%>mhG39b~Z^nqbA27BmV%FLh|g}6@7d~-h(7wC1?U1dKHI<)13=K+M(Z3roR(lk81w<*gfdO zfur4M*e|796o@~bdGPJ#e=4~;X`kHFZ(CATrk)b5UV+R$=Zt@Okm|D^RE>IsquFH# zO~ce;m2-77)RU?>ZY*ciRTK_c0|i;Mn@2}W_XUMscOH+BRk_$&`$()`Sj-FZu7io2 zV6uW8trHm0VZk9)Yp&%3z_Ei8WCUC0A}T$*U*b_daY%m?v`$rJbm%$8s;<-p{Rep{ zNqCQK8Y0Z&Tqn0=>+NkiOYU)A2>&)SvE6Ggjx`vMnd$fFM~bYdnmKF*KLCF$8nZUKw0A|cTdTvTMO{xy^j*H8SHEjs|k5BWQ>D_vHx@a37A z8O!Q+h*hcO>j(eoW!*`I--KK3A#%m#bqpQpd88M>bH6J*jrhzd!+ zuRGmI)2LPu*G8pnF@HZNa$l=#&T+bxD9Q5CsMg^n%42P|I+?TWwsvvYEh|XPljmc8 z1<*IYzk}Mn&Ph80-=QVi2Ztahw)=c|Oig;{)syyNvA9g^6eq~9J-YqjAta zHgXpdp?0}c`}*UJ^g&4N2~9;>3@@2p-bXIVyYrm|KlS{eeNHc4Z3j>?R`!d{*@(uv zzj~9pZx8YXRSD+h(7s`9^erZWfs?(8mRGulyux%4i)_M78Edl67Ac$$t$l91sXj0# zP)_QeND+SJr$0xFCW7E}seuJ-zECbX>J-vG^=3zx!8AQma+%su0Qd_FGkHfMdY&5Q zF*VgLX@e<4dM;gbTOG0`;&#r%gJ;(}!|h6tT*s!Fy_*nWJ1z&a%Q_f76?-4xPlCwZ%h)u)aCW7u3$Hr6m3Ca#pzXGsUN0rdK@M zXVlRj)teRc>KoMbb;hHenl>#@Hda<1gnrP_M6m);Upzv$@g0dN7~(>NdWKf(I8`lA zo4>V4)i>&l)Z-V=zS>QT3JN@{jiA4^oCn8vUAAhP_;R;%*RybIl3HincD}=6r9nPs zx;@by`3X36thYG!y(!E?fPa>@CDZ#C7L{r)P_!wVsiVnseFnWc!Nm{;)_T1}E-n`c zi{%yXGUVFBkvVl9aW?t;Pr?!b#%uY1e#x=Vff-CCr@`vJs22h zA6v9nZLR;A>Qr7n;moqB+nxPVkfJMCO$aQg2+%W%;}Rdu2nq^X{H;Rp-DxC$b8wu+ zbn5eP_cryqvmtLLU>7mfG&GnNlr(9jVUvqNJp?)rt2@cm6WSm#zB_d6C#?VxVwwdj}B?B1@?s^b<8= z7sSm;dSw{#9J_fuuvf8{c&y45;8>dE_sh#+a+nhW-51DU%OvEqFZK!iAgN$5DI%g; z2Ur?aRUN-oS5>pA2xeYeMEx9isVsG|E4ih$GPK*_&N z0%Rdy_S$z8@!>Ez7p9Uhg;ZWr7oGB|?SsuCOLuFrc5$HC^T85}Wj1EU`qe$D@?eQCII#SA=Eq zvIo5~3E*8F^8T3GAO}w?);4P2FC@(``9u7k zHVUlZD=s0y>w4*>rKJTRdsV6}o=y$eS?@t=v``EF@A2E`g| zK9;*b$cTvzK3?Gt(@95b5Uw^mkH*<7t*kFR?$70A3EBJf-HKnT@GqP1ZUH(1&YB#Kf(Xce{0$_3D#9)lf^F?J>Z5roTV}>#$J&q!Tv-Ixz0yeRFv`@ElBA zw$0`mtv*b%*vy4e*K~dE)%yBF)H5#WB>v5eBZi=is3 z3D#R)T_MqXSM7BvDhT$cPCK#pTJhXDEz0J+6MIQCL)U7ZD!)Bb=Vw`!4HCAB1F!J$ z8XQX?P$;H|Lr8@zV}GbyB@@37iQ9mhfC)7+u8pvoPq2HpcK~B^r%=Y?fKNX^$m~jyl=3j zB?5!&ncQf^q>Iz_^7$7E)6J|XHTst-v~;zynOTm{haWE+8J5QcPJTBLLsASL$EB<9 zvv+7IB|iX*9bvCpt%bg8V$I?lG@6tVal+)g9t2H^Px-q};aANI%K#zzEBLb`Wans{ z`2FS%iI_|lQ@^;E@B!-$FG!W50HQxfD@!L6oR}phcATVJM(XmG`HCyyPB7G_T3m{$ zdjISKMa*#(p6{z9B;ZiI{kbxDc)>O|x&-vdT9T`RYeh5JH5;2v*p3Dcda=-HcqGIB z)u?)epM;jA9{QMkXmrwM(7CyMY>qU`{%U%~2^qReCuOrPjpzMQ2Y=OXIqN`U5rNp} z;p{w2ku!E6% zkf4{39O*#geoxm%`%d`wN1s)emp45ru-W!V_oG=eL%gQXf$Sv{?3(2(BJm-#V~Nd} zzLNNR*X#H;Q-T@ao}`}~_pZPXLPO&VRLo4r*B|ChWPx^c&+jxa6_ih>o1tAUmdjnN z{8z8p)^Houl%i@P#yvGmanoOaRB}p&U9#O-i zOXHYUvIEDzn9}IeciYkP# z(s=P(+A^7pTx$?&^!YL55)XRWYjFvx66DzM;^N>Dxu}t>%xu4<7Hz8CUW7cPe z+oQ(iRIg{6A8jQt0qIYIi}sVU7)?jZkT~qXr3jcqcq^x({oavgU9BB?6!z& zxlms6;MMbIYASm^q`ld8wN9T7Gr#RlCz()F-_-K#^l+)nGDaSy*yU;wgT03aQ`mm9 zGLu1-md|@vT;>t3bbjpjN1$eL=ib0cjCAT_DmnTx*zXw{vaC@S148Ssr#D}n&U;6( z{z=c7>ofj$+nCK-UH($#4g>lSbLJchpjXq>k#|fcK>qPL!fyK&vQog*HBUD}p;WiH#E6iMZ`7SGt%9TB zN)Gid7P|Bfvtk%m^li?MThCxV?I_}ELd=1UZij?Gg)C!}y|z7%wc-$bbdj?Cx(g~c zUP3oJIyvAnC?760Z=%zZe=MgNW9EPVxajAWzA7s8IaD^Kn4V?n9Gb4PcPfsmqX#-F zdFRczWv8R-%ogor!+}KC6x5s{p`kg~-Vhw}o{%c3Y0`to$Hq9jkFZrUp^1QXSoV%< zcV>%|XG<{Q~A^Q63(sF!7y+$LNUaLDr6ntSWGW*ZNOAud-}QjI-~# zU2sxe(9bh>+CCMMFb+oEh?7TW_B)+97|z4d;%DH^(^-IwP7n z-9$;AA*j8^vnt(^fv)tslZ?KcS?JkZPFBjbMR74FDe%$p8Kg zlM^v(hV(TWS_mpS)#zji_Gl`H+m)V*ii@A2x}hSnKYaZYpo6gn&}HAF`nepDU4DT> z9UQW|OANz76fULcqxw}~5Hd+9Sk=fuZG%k{8Xei%x`3y$*9LVF7LKpJY zgC8*3-R;x%%1bDI8?>-jXJack8Tc6{C;79gL|3zw)9?u01{#C8ftElxt&{gj6bv38 zpV27Q@(1@UC^8%pc0>_2y%1H?@X9nThO z2aI8vB9u{)c-4-7-P69oy3o^Q1_lJ;W1+D+C6dT11ox4?fagvc{t_W5;Ucq(ny}r+sBL-or*34Apohpf*no1jQI|M1c_d-de)g!tCv;VWR#?+G`lpub zQrDM6%VIJ>#)I3lLjcgF6^lOBfU}We=<8Y0aM@KL zz~LqKueldX8g!J0!jA2xA&S*raTp`bk=Eb@Tgh}pW(V9MwOKalWA7eXsg5x+#I!e8 zlx`(Im2t@?`l%m4eHSXIf7-J2JmFAA5SxwPUz!J0&^%~QMCdKO{D@LBSa{kWk!_`b zf_%8&<|Z2Mtuy9bZK%4kWjJx8oCTGEXzJ9I3sM}OV_|o_J)aPc`CCLX#A~|+mN{;b z;3pQF_oj+2o_`Jmj<$|QVZ@Wtq3j6>SVlxGuLQSKzP}AMowM}x#zd$EfiPGs&6)o& zlWlS#!zxSRd*x%SB5)hiSc z2P%>8-_eT%J6?bevnXETPDE}?i4y!%jkG0Qs%08_%}|<-4ctOUF~q7N1G~14Xh;HF z6ZcwJbLn*?wx(BX7O~E(%cu@Tq$u;azE;F38P7Ui-AUQ-W3fUsqR#&!YT38TWm1DT zesT?Psh+swr)03n&bAdY71l)pAQrf|k0zj}Mv%^Q%@nIH@h`Yrn$2T!WkK}ASgu*v z(f7^iK__^9+s5 zYPEz%obf6Imac|F2P4~m2uQTNMjKO$*hajX+K^Mx$4BYA*OG%u*w<}M^nRCf_u*TH zkVB%TX@znlboipywFt`)a#ATJ6OAyVnva&p zFd(m~C6lpQngw0g71M0F>Sd$FwaA*4m@zy1Z4EM1PQCjYHbVC4uT*k|zaZOhj(0?K za=&}FO!G5bA6g0TDESj#ewHpkW5v@gR>~|@`ZJ7~=C=)nR+sbTHzK<+*qWtPZVz|Q zAA>Ey&4>Q+QiQ?0VLNHw=ZJbBBxCW%)l=FM2n68+5Tb0z#LqDOK0Y=#QD?zrR6(}D z6JzlP8k1-kk5xA7M&c#hFRv@DZ7}$tnGoU3=;KB-e&toEC9SDFLd1AON<|s;*B4atJ{U8= zSz+@Rw;-ynfa+m`6Vy7?XNowH6r_vu2?B`}8U|&+wk-=OR4G$tYeRtf=3zy`2!fXs z4t7X7tJK@0b|r%H$2lGh%HX;C<~p^QuIz(;91MLM^@-Qw+0w&J_=gbD8asA1%$pI* zt48S}rQI&J0Cjn9?5HM9&}jolGPaJS70DOOPu48OL{QYeO{$8S1~F7vj(`%bLUc*g z&Iu%GuR!ynLn`UV5Y8Gz!rcGIuc(tGkO?=zEahV8ZUE>B31PGJK;o zjBhH_Jxf_ZRSOyluC9ADrw2BWi^vLS)3L;FW?iQiOqyA-cstDSBS~vbrogFE{K)^W zz#fdhC%iv^tD)nlO$f>9ipcNmq%Sz)^X3Tw1_n0nC)fJ({IX8gcW>-o)u@4dj^va? z>-8Fc$as4Jr`{2sDRmz+mo)OIO$xZS43lMyHu0S%Hj65pL>n4(gI08K9PW>HvU85|JR`EzZzU+39q`s z0haOt2M-pNBt*So-O{?UGe)94(Xu65F3?{Vt!&EBx; z5(3wqU4Ds1<^SxLoi1T+e&i;`Mq$`HK4MK{^VQ<-qv#86sZ-G>Zui@L+f8rV^Jn`| z1bmI_l_O?g*WaDjbFh~>*#|{zI}g&#<<fNGS=(S$!cDM>^ND*;eNy3o7X)lea&rDAYd_^z^*rCY3`1gw&pYDFy>5oYsaRN09uN$3 zzp;>@b=TD~cgduEKftj4TnC^KwQRkh1Qeu|{>d!;ZH<X~z2nZ~t$<%-6x&H2r zTP&g+dLLvNhq7iD9UzVoqj{p)2-7Q;D68D~91{~x^=j>3HTHMJTXpX5Z z-w_l90^BNRA&c0`@&5h!-(i0kU>Y=IB_{uW?~ngVul?6+#s6wSc=e`y<^Ox?FFR5N zg+utB2YutcHfSeFiq zrvIxyaxi(j|E%Tz@$_{paV~0KXv3az{r}ic{&|4{6dJ-mfB$F0{-LOVCC68YSDpU9 z*3jSGOB5<~`#aG4zno4SE8=4$)6hIR;7nRe_Gofya&<0Kf!P6_uP-P1KP;7$loiE> zgM2y<1hVACh@#<-{H3Z%Re=rkv-AJ3&!sS!l3dzb%{=Pp|IwDvwhbX*tlRzbsfGU) z0{>qlvmOdX8GOxm&MH#(pCkQ`*;;V^`q(D7bnJf^@SoZ6MD*8&kH9S*SMh(%k4p#; z7uNzrVA1Bkw{mMEawnJuMFN%>~^`L~A(6puJm&zVZi zbMxr_H?m)9dyTA2D}i8L77_o|HP(QhzzTpm*2>D-{B!v2?U3rQC{UZL4?rbFEW5P) zFYzI(OloW$1qCg6`IFPr*GU{3Q&UrG!?i>YoRU+U4-45G4NX-QCDy{rO(x((sLh)C zy`1(boKlXaL@jM?9UY(M^!MCkP!#~h(DMAe?fQt-&f!wIa_Mn<`_rr`P`FiLK^mF3 zL^^fIQWnHAUfJ8~H$6*BOG8stZD>o?^;-0#?Ji*;e3}mLwV|b@m6g^!^A}4N1T!cb zSG&^kQc5bSJX{J>Q=RnsPCXXSx7&DRa>|g5&IChc_fEDVlZ7y@rjBw2YpPAx$YQ9! zjjapm52-?ABr-8QzSimJsqVfqqfgS=(TOuhAf-2-(jQ(|=Q*q)==gZCnHC?vQ180c zbU}=Rq$%Of!fp9UL2z_*Fy(%_@`#s@Enzk1a#vlN`}TM)Bhj@~pqk?nchM~&e;Di= z#c@A%7TF4nU#=n#vsRLwT7PIX=yvJ|Kt6gjyxC9s5on_2^9k)3X^SVqrcyv zu38YkPsKxHb#sH;+Z#}1juk$&61%^=-p6L$+oeGXixAcXRB(83NUzy(JXRE8oNo0x zCaa488`Gl6Bgz0s9C|KCR~i=;SrvaHU@HbNmmF>g)^)bK6qgjukT7MnyF^C6kb})g zk1iu4oNr-ZqM~x!F`F$V zO~b$-DJk*m6mvs-7sBGVr?s_6XNe3x@9q`BGo15yn^5=4d@V_+Vtkc|>nSQKu2rq9 zL~L^WLaXJIAJ8~9iQZgyDExW5Gfl}?PcMG9Yh?;BfwkB2VB8z5qTU%Q*I4Z_FlN6PePfic<=Uc}){4wtAOb(qNvGWbSKM*h? z3T~)rlT2eqD=5Y{Tdyc-yh6d~lTaBon0OrC}z}N>PBE4Oy5$#uolniE}_Z48GR;X$B~NmJ%=at_s#+?_Uz3E zzUB-j$tyAZ%5rw?sySU=WLdSuoiGWvXW_r4iBJed<*G$a3fc3h%7#ww4RG8g(jk78 zk?F|xlQ;MH&vU|gMM7g2&y3+8+Sx6j90#A+26?ya%=0;qo|gDCjs!w<3cL``bIeH@ zGFKjce`C$cPE2gE|5zo8`F1s1LJ*%R!3Bp@kU}+YIf@DE^_!;Sro#jJwpT7XnBMZI zyobLU>7ORQYSBpSz!w>8%5?G6ic))n(lDcYCce~Tw-QGlYHz-u0M0YJ82{-@j|D|CmWgn<3odcq(F26($>p@Zs>4 zHe-y31SZ#Yj(4-2vwKO90NkV16NjEBQ*&_A!Dtm0XC#k*ET68FFd#TFwTpby=Ys@r zpkd@nw~IHuJi`PBxZ|Fh#E7mMSYc%6kEhV-wmP7lyggj~#grpD4=7)y*KKhHn%+gKLJ>9FWw%2`^IHp~P*ubH3XLLb8ncNz6^0 zkViLSx&+pVyGasWz*HwwW8`oTg}}F$E~v8vod~?ZsG_UFknC%2r)SSroM=3jBR-_c ztiU(UI7Cxk=rtCnP$wgRLO>a+ZHhb(re5ZiOFTwPM`z5P#)``eVf)45;Iw#c`1pJj_TRnwsA=Y-#Dxq8f)* zDrG1_@wvH25JmEgXEPRP;@PhKNjdQj{mYlE*CgzmjGQj>5ykcmA(?VXQR{frncayB zN^1~xit6vrAI>TuY+_rJQ~h+!DCx@@`I-wEXlQut-!VJHK}gIJd#YmvJ6QqZWd$gX zAPFHd5D08N%*8*!YDf`D)4VCeW1vChNL(^@;|*4KrK(rdvcn}Hr~nnz_uQNU5GT&; z$(*sGCE;U$WgCNoG9$23e+{Z_0#c{WefbHi=MOR3`S@59#lkB7N>=v0@l{nK2)-+h zJbah;j%6Mng&~UB9EnVkzvK+T zPMr$+S`GiZ0V#qL0l{;usGwidAtS;v9c!UKKHs2-NMWHRDb1LM)TaWTSu+zcX4TeAEUcuS5Z}F zxfJg|GI^AS6oZtNl})b9;IIt{X>aG|{f*M!LP<^AS0k|qkQVL;1rp^&$%0-xR-YhX zZ5w!}{ZmlUQP>bPmx}B@J)D~Tq$h(mBVcf7Aywy;&lCl482@r+pYTAEi(=oZu%wAn z-M#LHoKxs^a9M0XA|^k*J#7xw2Udf4FXHq`I2U>YI(#NiB{8Nk*1IObx(!YYmdaDN zb5m;=$C?}KquT90NAf_^u&|O0@E)R07Sd3>E7V92Z4KTR*=SP4M4bm39o~{BPfpCO zNk}MU(wi(^keABsQOJp&PbEoUcc(5iWpa3W$DtF7YkKUmt+%rK?J=efHrs;xW2$Y( z={G!_u2v$-GaALm8^eEc;@=}?EJ(|Ynb%MI$T#e?oDVfstxIdLH zcuvZ3v04j&+%7bad3|}AH3F6q0)e0}^uI|c2I8bMVB>YN`&yYVF=E(eT`cjX-K;^S zT$7Yv@O<9(PoRiCFft_(_FKG0BFShPidYYQyx0+t(eJfh#hh)s=phpB==7G}_vti8 zg_Q_pi+8X&$i0{W-|%=mpKENdg*B5@S&I7bbfM6e9Ds<3#X!bh;&;)Lvx8cBn7fBu z39n|a?8bGSEebws5Hodm^Y9PM7T^QgSfoioxZFyK%l^r=xyhG`1Oe|eP$Uwuu)qIc zscO8@;_u{eFjnOIxuuKrt9UxSpPfI|PUE&`llMlodV6=!bKUIikpOYFEs8XxYflY3 zdfxl>p=6kAJvA$7(YB|@9)*Hr!0){m^sS0);OO8We^jsdc(GYGv^3g7n6kSj*Y6zB zH{&)7;BlVK7J0fp3TrBeRF9XH+B<213RFq{pPNB+s#}wY}MV zE&37^B?L{o-swh&)s7r7RSurDO>evyuC#dGWFp?@_WryKW!S}LYn7VSYB$mRetCEL zsDMW*hwE*imgHzEJMU^;YXb<&$B<&eD0C#Ku>Bd$DD@um=S*fw3M6e-yVJ#NJ3<25 zYtK1FPRI^Ydmj3Go(exCeCSLjz~@E4Wi3?A@i9A*BNIdP*~Y>;DaCR!dn=8O1ee}J zzPo#IG;Olk#M~&8v=bk>#9O=BjJ#ZMe;$z^PxkV!k%f0;HPpvpzUaDH$YMz0XvoZl(5W zhN33UXi^xQ9h^MgPfW2AhNE%Erly3-jA+j{Ybza>@ndr7Eiy#xP+6`wwYe4I~m8Qw^POr9Au}H@mcZ##QnvHJYr{u9rSq}6i@s2pP1VWeT^2nh)t zclW~&<&x(OjluP1;eI=g6Q1BnD4sfAX-7ak9aNCfS}$_-{m{L3|2>2FuGiTKU_7|P zXm`2TtkDM@uHSlo!RZe{D55h0-e*{@&}^`qZM0nW<8=`@FP$ymdwmi+cmCY1%yB*2 z+)%623BD1OnMHJYnH#J{A!nh&TkU3`I3h0!ZnlvI0+D545RIAuu|6>`qot8Dc+PKc zYx8F*3D$gtCeSmiJyrkPVb+C84JUlUc$h3$TEzyik`-~P^bQ2M72ATDnfOXUzJK+t ztMYVoFjt#ub!Q9KR;2LMSA=-9)a%vcNO+|`SgH^O5%JYg+wokjpC}$pXJxP*L6hpu zp`xM^uGo>DY~UK@#-%7wqm!m0W@|nF{QNCOp@s}+|G}Q zG(u7%1d;?>K?oxSbmwLLEY~>NQdMUs<~49X`GTA6oZFpQxIf1ZSSVzr zviVTp5aC1p&MRyCwD}CqbLb%Ee6M4hJr#9qM)v1t4Oqqg?cq z{gZhL3h6ZZ(HYG#P*VL&!NRHm^uk~2P-Eh4+Y;T1=fw}YbvXe+Fv>H@$>|=S>*|jN zCj2ko)>Uhl6t8rgD|GD9uT1P zLSX|>lW0<~;wcl3rZP?TAQHSqHC7MCQ)bLfC(@-+?tx2D9G3}z{GlCtJ7W9;+blHz@3zpO)$#KlCXb)X90R;<+P2{x#6Db40?dwCwhXwfyG$1N`^TghG%&ZnYo z-dES)!UEp`C7@YCb^>|M=S@Vh;Ad=fiZQ73^~UAAr8wr$&1m%D89~H76Fqr} z%c=Re(VzLS%xbghEeiKbO4;Cl&dK}TB7|~2@AOvReO5*$!-S%(<~wBDh=(MI4pEpw zY)z6&4##2v7-FlF>@imM9XRfrh%!GUw8hFJZEqJfaM-QTmMX0*LTmx!{(Rza<8ac8 z)oLD>Pb%KVq%wY)C{3^RbV(jEiS2C4JflC!^vcO~yFMSIdVC7d<1>rl1D%OTgmaPO ztBkz!=|FA1EfFaYUYnWNVk%JAB7RIfbxNeCALydJN)A>vSZXptQkKl zwcTN@5g5KWRefizQ6u$Bx`10j@I^F|Wde#13`F?bEQXNR&bW+0PZ74^=W@FNT`AY0 zR4iN=Er^!M96$$`6l*3B^r-Cf1IiTKWM-<>Y@|AE;q2CVKO+YfSR{yF>}d8}y`=Pf zxe5y}qKro*6BXWU^e~ZDLSFn=-het^p%}NYDo-F7I#cY{x4!oG9U$H31(Z?qNWDZ@ z;v%9N8 zy~8IH1=FkBL_<%HKH)O`8nG_nAR}fC{s+l!OFq~=pul6)Ft%R6Xi{|@Wg({4^aD=- zQcYU0JF*1~fiie5n0je&NXLY$geoRF#RwVM0UYe2Mq(ZjKFa;-pMAkSpz-~}1D>b< z9F@Q#4O-l{&fsof7%>g%Df*rbzC9V#8fBw6g|-%T1Yq%xw}Lx5Q_AJa-0GOJ&dlp+ zMCs!rI$);$1J&10cik67SUsqdA)fa*d88f%2{2WhaQ-WZ#M^F<80ze%FsEcP%FI)a z(BZli%E)ZaOb`%gOkR)W5&j-!JF~O}Ygj{b5x6SFpx5S#4vMXAF2ASAG9$U6*=5B| zBP@2YI)C$zFg_)t!|^L^z7!YQLr6rgN5q0luj>Vi-K;yS3m4`#txAJ}Tu-OP<_^)o z6MV`X(977x-2)5R!ZMJ0J$Pjq%2j)B>j9!fi72(?6e2)FFpQE^lH^pC)us}Iw!olV z7AA{jJ!5eMqo3o)gv!{g#_lh9H8m0Wf9^g#$b2aR%1^Q6ascP;BJd`0(8pSJ$hZ5< z@3MYFpxc99+LU=4l-f;J;?j=NeSk{B;+$PAff1@S=p;+Z*04OuNSVE-?8IdS`zDsm z>Y0O+;}rikDdYtQR|U_KkRB#?QsI^09HQ$jF?S|G<1n#C2fRQ&3q2bvLQ!K^vC~j> z4+BAZ#DXi6>OfG5yMu|f-h>Cr!scVoSv5<_nGW0L{^a?wcFAW5u+s2s0&mgTg{=h2 zM=wqnf{}{LnuZoEEh#6u*?dJJwO1P`O6`v#hQs4=ISjqSb94Ujy+70_lh5OEzugND zci<3%l#gGWFZIG+L&!K~KrP4*EoQ;MKR z+HTKXsIYG9{W8fIV*;qVO1n5kKfJj8eCfyq&H;ws=!f9<6Jql1nt|6L#M{yme^KH3 z&a3x;$m(xI#JIGR-sK+ixTZ3NpBsZ832~s`gRB&4>E0=LBiH|NA%sLAI6v4tc#Jrd z+o6jpQ^+yh35Iv5(Cn~bzNW!1EF6o?JH0xbBAL~v{Fv(YJCm%F=~*Z?eNy}1bt@)R zy3FVc_`=^{sbbM!!_Nd=-QcRD@rA>BFp`ixcQf|E%%=#Cyp{m94cw915`*U_Ht!~+ zF<2PbkLQcHG0a4$tt!w^1j$0ZE+_6Pa3|Loihi@2prPoo6AQ2A>fsd&>K_P%kG_ z9B7$`hPiSIqC;KIH_WytHeixuFx8wkP9_u5(F#OFl=LF_G&EHG(q^O8-0Kzn1#u?` zVHLqMW?BftheF}^NW2zIi`*#=s#Uo1RGv2)Mn0;+0Gw5O4=Ve8Oi{%%-QO=J@4u?sKP5T~TKZ4Pb^?n0m5d+|>{=0!gh`vFiy34UR zbNT{e2m~z7>*Wh%6u{bw-&fw*U5WwgS!4UCCH!aFAO}P?^QAss2W+qPg!79xhloD` zIc3Ggv*7`BAc(eGjc-*k7nWy5O=ddF5EUWGK!Hwy_d!zUgm}tY+9*pE7l#T0UJqs% zxwTM(yS?<+FNKlamD)I?OawqtmF8arKh^IWmxViBza=x}kALMxO)m3ui2y zS@b})`9iY7rezLPgj~*G)N3_*F;P4D#BorV7FVE$Mtp?)jx2{EEEBaFM)yL*(Z|n9 z3uv)xRC>@S^Zq3u2|3pn^9_e*DwL19Xd%gSSi_CWoUTNoL61X{aRDBNKyU&|3pv4; zwfGRQ2nZer8HDqu)l48)+D18a-u156>z&}ZPbP7KAskYm2`Y^GTxpq^gS+v2B;62u zBmkVV{x0F?)!Z;7hG}@U`uaa3Syhlvl)F?@in}{R!ywCV%AZj=*t?w0mwu`MIG9Yn73$#8XpCHT ze&iiGK|w?_2=iuv%8MZc`QOKjBT)`=AFt73D&h;yH$d zNb(dMbf{=WpsA%z^KEzc$5qljOo%juU6fd?va*q92C6b5s0{(`hwo2-{URhhHR(P2 zvk;wLI&02Y={4jno>+Hg?BUd+uYkgV z@eGd3<#TAKro6S^XR;rL`*wf&nwQb|7}FuKN|t2|nkWQf2MELdTnSZsL`jXxwvKi> zUkx%HfkHl?F5s(eEF^r_n8_Pz0Oce-9~km^+!z1**DJNa@A)z_HTARig?L(Y(ux#n ziHXhqXEy2nbg$eImFvavabDOa_j9;24w2hi#E*FfqQQP}{ON)8PV(p7pE`|Rii5!@ z>twZRk@i18mjEx|05gTm7ZAW35+W7*5jfb3qnH|U0jvNfBpwMf9P+brih*xjtvmh! zeT_93ZtVPo z5sH;*(cSs+)aBBj5TFaZ7NTHru~y1WA!%XYkDL;BXbSRu^~frMtzD?_&V1@Ed14#= z17K?toiYq%(p0c!$*EUO9g_{i<5YO_o?(ozj=K6=j^o2LfQ)B2QuG(Vxs)yY;$|M$ zax_g%F?mAbwFVE3Mhsi7`f^rADIx{s4r&4QN4j-IiNYh!F36r(zCLg618pbYYi?Jw z(?8ZT0df8LBp%TmL<{=#<)O>0oA( zJa3z=_+rcU=w_P`&IWO0*Q_J^AwK-sX3xLp8XcrqRFs3Et>&6vRNpPFLl^AOT6i5u zu+S_pgu5yq{=z{WSET&>DF*u)v}uR8e~u^+n}xMlDiN-H-YDyY$#O&xClk-2@V8p+ zcDe)LL5gi-f!N8Y`ps(TbrWci5}3gavyOoX?v0(>?2<#Lg+b6rC*%(p|F#e@Yf>_y zxSs9?nJ68TK*hg~ENxM`_U|28=aCx>wW+%g-w{+`%IeAb`AM_d6QOf+Rmy5in~Q_L z{Vw^<#G#J7Q4kG|Mo}PjbZj&{N=H4B?@j0E9b#L2YxUbC$^(WQ9iN(sii?p~XAv65 zA}f2+gfwpxJZUY>SRB`?VKI-nV91i_dAxp~$ts3OUq3Xx#lDW~E~=#Jw-C{z3YJ{} z7BD~n`=QfOn@0OJ z1d6atx0zQ=qZ}`R2H-&y9>n>MvkL0v5vVIc2SswseCzFgGJpPOxXF%+$t9_n>|O>l zbFkJkEYu-}tW_{%xQH1v+pJPBPVxQ%D4Kz6dD#fGVpLFnC47_To2?i>>U1WyTc)v~ zAmWM+d(HApUvp!zw}A*uT%t~38KSSPE(JlG@immgkp?+jT#h(H&{&p(>#3jyBC9Yg z=^*!V9}0NJ9sce0mSnMe6@Xd20QD`LeA#O66J1H8Tw{G^_s6b1kA$0Uhto>Su=Q&g zA$Rn|%WK2onBT*0SM!MGhn^pVtvZ_o42^TwGybG(%UL*mWvVZ~=ks7)7JV^t(HKjS zGJDwvlS^lNr_pLJDLD=Y2?Yifbbj7NwBN z?=7h6BSmm!UCQ;aLe2`zPe8} z!3cOlkP_rC*Kk(RNz#b{1a>UmIG+n+IlAOlI#z1roxb{Fue$|#(vsty4f345)k5wqK1o0x2OknTg_5K zg+kqzc7M%QC^syYdvB}gZP1m&!!`X7q`(G{|4`NE@~K$iOd(a+$}el)vy*X zq?aD?z+MoHWI)@)gCTJRQX(u&%XcNUzj<)(pRqV2=z)(&*MW(0{?{7d94S>>ag9U> zP#g%P9!sI~<15lx;RF!0swyt?aA8t*?lV8%m)vm*LG2?^&!j5|7-lESUm#6>hAwOj z&Pp&Z9NRcDvdoTq9H}`Wp!%)5ZsYmuvMz(ulT|MuEs!p-Ptb^4Nn>%4VdA<9@`ID1 zVGeP*JuabZ4}01fXnx>L5c-*q0w@J1<+_aZG!d3HO!w)HN$WEGLTL`iFuY>!hOSqu zdgpqk0ToX6$B7{W7Vyh0tCY@y$%;8E(sMuoKLs1(d_t4m0k$y-;VfY)Jns;?F(Qja zZi1@F?<6!dnf)~7U2I4tr!u;DYsn_>M06OLX*Q$;X>jB{Jg>rsMzBi&51(k~%TuGB z95u-bYDCq5JaD^-CsSu@YcvhH0pVQ%Dp^m;MP<3M_U={YMf{6;h(RYaLkN6<6#$}! z^8{UqhnDu?{-HQkRvgaZP$=J>#r1j>zJsuBKfz?w!`0*C;_Ec5PfGq(~uX$xpGM ze^XM@P}7_sr|mnNNCW|oyZcw?Q-x)P^;-4SZqF8AMO{$VeSsK1wmg$Po$X%=7Nw3P zr1`<5cMHK!$R~_)l6(^)TR(yK*)lF7N=8U`P9(ERLAXz+?WSJnQR0-J1N!NCYdWj5 z$!fbgJZa`>8d%7H7jXgqW<{$G27##q+Po0ll_}{j^S?mPUcvtv&*fRXznfMg(RW5+ z?lSd;v>Ob@vCu*SqQDi>M5fnljNu9`i4K~Aq#i-g2308KiAtTL&w?GHp|S29|K{cx z)ar+Hp=~0_%d`^^Kko+y28@u{3n3%;>gwwne3|egv{DT$qZ!k5tVZ4_GIAQ+sk6Yk zgtHYc<#WHPE?AwKLN6ctL4&UX?H~x@6f+A)yM9Z~Yr*0%YYRgohnXmesm;TdAyrp^ z+3Zm!>nzs4-&e@y*L)54GxaunR;Sp1LVFf#gE)`A9BgQ(BM>1<4^oBQ!9x0Sc|r4` zXV&3+Z8>)!XCum2pe&K2xwO;bs;th7|toM8$ymOVyGw4%xBjFj9?)tlx2+lxIuJKO1`xAFoK zc3uD#X9#GpC{A6N*Z#FtM)@RwWNKkVPX!5qttVO@w&{=69L6h5u;bFm4b65w#~Pe<@7w?V+|q- zNHQ`A<;M5m;fJNcuE*wOhRJLI9LJ=3>$u!PNci1Z&knRf3h^!1D~4=d(0kj>mbva+ zY$UYsN`Hij4HNl)jr8Lg`hI?X(+ktj6c6e8$s>>^7jzU%9@3ugS!tKZ^&!iG9IZe3 z!iS?VK4&8x!@Ju65BF$EbEIymx!-huU#lrCR)exBj))42etE`?B+xtxB$8*nh%{L> zC$G<6r22lJ+~j9y=|$_Pl-8_nT9~l(_Ikurg8dK1_*RePmWd{KW-#q{|HJ?=KN2Vm zq$*M?5|JsiG4|?pHj;t0fi{({uJ&no3*-Wl0dIGr!>sAXs0|ecR%|>v#`Q)=5>m*Q z2_zDDLXUYW9wa4Yp>C;Ki8hrYs)v>C{ zdI8lX1mo8!Wvu)*xnfi5k`+s04&*Y57(*acAwG0e_Vd2Rt|5GTkvtWS6F=x#Vr+s( zKuEa5e8jNa)&1`ogDZ9E)3F3}@>DPs(His)ZABGl4TJ_w$7|SoC}87|GP^4!WE^pq zajQ=eh5w$ab3m1DvDu)ot8ga z(_;i{Q7eRsgbofN^4lpcqUBVR7~%I+U{eG%0pcSmt|cWD1%H$ojl|!d35n=XTw68K z6z~Kq9}rh5*9lZO7(B@0ZxX`l?D15NY z0URYO&=BzL#=XDM{k7=9nrt<)cz1a(3{c35*ahDT#)o+ z=ZO!sz~g7^95MDCKnUNatL_;O&Hg3igzpY7Dl)-AzQewBkFm4AL$~V`17l!d5VJjD zm~~B1(gbJ5Wl3U!%edN5nU`j%c(3&?$#7S@+~^6j%vjGVFe*sQ+Zq#lx%kUTOiav8 zjr{_NCZZgOeJUL1z9?|10_B|^Y~@k6q1y0aW)3N;3?4^z2tNnMu5f&S`24C3>+E^raIm8e;&N4K@+O^=;zsItj0%y(@Ri_$UQ}eU=aRv}Snxc(Ma~8m zRUG=93gF4qs?)!M4axsw49C~*g~@n3cf@x#4xI#T7DX4^N3wAd%{tD<1mIUyi)x1~ z;AKKXE+TKrW;G@zCQ-Sltswd9h5xdBz_G+EE1s{4_~G_mwxEl*2-3vjA{J#r*;q># z;}$$Txej1|cPJUV4keoKDuk62*hICKhm?yZ7u}Kh4R`4H1Z#dfDI*KD91Ip7LY&XNVg?}oXVYKnE9}4gw=zY za1L#yHh5o8Q+H}!Sjo%iI2J>|ijuZf$NXF(k9$!qcY5>mFFgfCLS-qJB6#$G6)D z&G5!(D3zUU_;|T72kkWM_m4m0Nh$L_pdBK&>CE;mILNw(yM2m<)48_T0pC}k8qP*2 zj^g{C!S#sQv}iCiNi_fq$hHl3AW9$TUQ;UbY=%Vc?LE7a$TJAKm^5NAZwuuT@nY){Pzth%jny z@aT6VLHglT0fAYW6Rq7x-;Gi5tALYIF;N90Po~q1&w)xumW*y++AwgIzO=_9jkHUT zREYf#m1b{ObZ<8BsYmjmO$zxzpo(jdkp${G(?WpGOzsP8v0tX%{$&=l%Z=EJ7#`_9 zmlqDh?;Cp!v>ug?Js^~7i7nW_^@@k6kXXMdp2*K)s^)g(h=iR?ew8V(J`I|4D)O@0 zhGdpB%I^xinpg(MGmdXii4!MwvCCyig5#`!oBa&OR!m@396ePnUubxv#bj&W$4eNR z$^wnE1{fTZEn>$95)wi5fO905xlO=9-x>>(K}Tz!Tlx}XbC-q4pXmZ@N~^<0dhl3Q zbr|x>@vLx8Fz;m|bq3dhy~kfXM0ebL*lX_-&axdT?gR0LYBwRu1t;XF3jTsPH(Ix; z)pbRt@E1{W5mM&3M>z?XtC6_y_inTA)k=GmX~AE|%_9aF6x1H1EwqpGVEcV0+?OE7 z2=MRV&tR9d`SUQu%b~3%l&dQB%AyQ3kU69%^b!B8(e|VGa9#+t%2L`r1}@vX!8vt$ z1CeRx$>MWdOWnwjcw*f@(WcTqG-zO`=W{*?g}pTv<0CK5n{}w z=>i+p=jA_fqfQJ^w)20E?|;kNC~G?z55BilISWTNg+sOKb-5f;UJC$#JWgP`v+6TH zN2IgApa*0>fKZxkb{nd7F^&0*zXrv&hv=KMTF;b+Ewd!(7mW5yd&Z_ zm>t7JKd@g8?0~kCWW)J8sKE_brvJ(RXXc8r1kwh6uq{ib4^^}yho6AYql{U$rWmv7 zb}9u)lzuPy2QVG=KOm)oILbqdyf37=P+sNw9HgyIKFDkP>4dJ6n!j8;ID-OA#Juki zp5N6071jV}mmQR89Oht3o9# zgL^p}e|4k%ii!$A6%EH#F-ijipuEU?J#I25@U;q>ji*igU9C+tMEk^x4g3?omx7(m z?OR&2JI^0IJq!_3mZ-OpVkja~;0xl9gJ0%@fFrp+xFBnFni9D%sDLb>s4~!ITifJq zZQp)vo?y;!u<81)L?s4e!vxl^#w2;r&zr)fFd33So zI*2}%er=NIko`o4>ga@pwe5C0;%B{_s)pZ>1GMDuS?x$hQIC|AW#p__v~^;zVWlU) zkcmUvxt>+j#2*$!9YkCoBX2$@YN)OyF>)Q%)Avc)?NmbO0PM+EKBP z#$sMBWL+eJ=;yBQTR2$mnhB6TVNE}b9$r$mfpw=W6lY9-L6%^8M6NXB_3svgCSksg z)ePo3hrIvKlX#k0=6B0?$3ZEdF*@>i3g`FnK-i%SLX9n{rHW8HItq^Pg|VT%Xi}Zf zOR);22igkA2_QnMpQ%qbHG}Zud6H3>V)Gj*>-!400g<#E+DNmkr+a-eZLDaXJ8-x< zodh415&Dg{++g(w1%|xlre;QO6#UwfBGI?n)n#YO`c$cdWotKvL>TNG{35?(yxiyz z#f7zGg5Vcf_e8VVKuU_H7{TeoQE9B{w`8s!u#wA0YyvH`p57eJpMl#jt#gV618j_?6vIO-1+yG>M^n*UKK zDJwM=l#Cu_l7GeK(#6nJlJ6gi4GM+Z>UCjtQ%zKkI`9Iu2SMWtbUo;i`%$LuiGTn} zc!fvVDK6=&w`R5hkkf`_M^hpo|F0InGJ5_Hd}10;h=kl@T8k;CrRTyQpDW08+vW8; zIFe2IQ|fBlOCBDjS>31%$uM4r>-50Lr4A+xdc+80dxesL&FGP%+I3zp#@v zm$gHgU?K4WY*E{wx@UdF~S985?5Bc@?Jh^`W-VQ5i`-% zgzr8)WSFLZy9rRiXJ`{^Ay_Pliuv@>fx9=(MuFtA;YDV9$ab)V4OS{JnSHQ^QfyW` z^F())mi)TB#H?WqStfUE+WUcUjMTIIY;4%`O_~$86QX^*`~gF*38t2E6lA`Hx1OTF zgLX6L;6@62S9hWAWvCVXKPWs8WZ`J7c5l4E1V&H-{R*HlT0URF6i@iAHVHgVyNy+9Sw`ttTa@kZ zpKr-ZxYc9gC9;C+Tr9ZZX0n@rDvCc>Z%WT%S;+*Gx+*Es-Y7ryD$HB;koOK7S(ycW^Iqy^`N> z1Y$}D`j~GDnv4`YBCS&9_`szUB9AAy2uR&C#(;?qRgdKje!=C$S6T{euQaIqLna-| zS25xxc66|ydVz7miCI!19|`e~ki|7C{HLEDHRw-~nw&1gZNVFiBLWJ^pauS&t<6YU zv)a8Mz>xKD)TA5dyPw^z85eCq4JNREiIx?EXBoHL#UycS^bXQ~w+75s<7JK4rEz>@+pAVVT<-l81@-?b4kP>?lc9 zV5ig(;sk5L#Z#CYgU63y3rQt5x3O7IP4pG;YqI)B4UFOb@o_n@eYstP=);Ma>=38Q z%))&q#H+T}*#DN6P3RUtZa&-4+iDwhPd-~L1V2PxTFTYq{f%>nqTpn2e=W2Ya7;e; zh%esJ(YYkHOJquV!CHc(4RJ>3hz(}~2^ZMYAq0LRClfwqe;Go0>>8rC?v#K_d}w#OId)eb_mlz)kyBNoFexf( z)(ORR_8Mm0noDF^^4}n3ImYNoIAL!NqTKB6z#qn$-*v#GOj)ANbgtZXKzToTan7B4 z4A;Tw4@XPUT*ICm?};uhu2E>$O8pvp^UWq76AKS4D2vC z?E9NIfows00fzi~y!yQCD%{c1Dx= z#PdDGUmLgxyab}agoX)Y5r;qQT4Il2Or~wQJ$re!Ivfp=$iLHCP2BLgETBH3LBLK3 zXZ+APOq7;*uFYCY{?Q!r;JUo`H!N7btZ z!vR$ZAx^!|BNrL-xFrx}q1E>Oj}S+|2RQIWW8phx@eSr+mQa}{Q}afixVS+Oa!S0A zmi8lv6a^-3;zZi#q^#?V$ zIHUy;vn**W^k(r@lAp*{ zYi+9IqDB&@0yJVm(#g{tahW%`1hOP-VGyl^Nh0X!1@d}HnXQBd@6#{{&&u+8C^rKR zd?Y!Sy9A0Lj&GaJTv7eXcx9Zq+vo z0S^HbmsJF}LvFI5SsS7pSG{`~8%Q0LP#Q%a=#=3WWs4K42yIsKqC7JqTsK*P#S9{` zAZ-wRlv@&I&LC=7(_7luYM+r@rB@%smbk~`&m-91QP347Mozhte}B!W8fXXPmkoYi z|2p*R+;r2vRI({!JC@Xg(ZGlX1;F7@?5!EAO=}8?3SAj#400V=;^R}eSA7e`UmcJ$ zbZKs$9TE0Dd(wUi&agp7LB+#ytc69(k)G)AWJbb4!H&*PE_WbjzU{fr>P}u#wm3e@ z>EoCqPByRqrg)SZ^)~@d^8MWwsB+<1;%S`7JXF7o$M1Bs^YaeBv;$!7e80E#u@Fef zv3y5zXOHn*&pTP$k0W?^T2dgg#dO!x#)v%qR+p?;B0?d5*zcgWQ5Oy3&{4*Rt>x3S zzRv}DOObIjotd6C#mrZ$iXRF?{MpO+=l(N?_`_{+OSI_V>YqQ^02;>k{F=1PaLV+d zNfteP!YAr-2_JD4abTQkDRkmo=vc@>`~U8PfI-}n%ddkt*u+R=L8>tOCS777)qT_v zzpAFCSdJhLWjoC38N<81XnC8ei#0I<9U|tVVN*Y4SUTj_7$rZc{-%GHzyQSgFA^=? zhXRLp>(k=m(27DVpgJI|=uzyIL%vsv_mv^oD>Nc=N7EAFY|yaAsAQ@`MMTh@)5(JP zTs=CD15H0ogGFTE!ZDtjpx8AjQpL`RNINGwO|R}XOmK#OFC%6^BnQ)2oT`|3zE!v7 zfHZuxJU)a8<;DQU4}XR}$jotvuZzojdTz9nP_R?YS1@EU)rR36s&1KrxyQrKcx>yL60=?~?M{ZgIv*j~q)zVxKl#G|-v6qy%Y#Vw{%Q zO|D+iX!H#xFAy!pnJg?U0^xR?J|GJo#Vlh_YI<8`Xt@2*d_p93H~%`OnUkByk`R#) zcRb2xK+fd}LO^H6Mp5p=kpt{*FR<%j$_WO;F5z+9P_(+jFjxtQdIn8l@-1eo>2;b)O z{{9AwM)$B8lFn|vNg zP)lKHK4_wuB1tRT9^7QvAdV;zv6?~6Ah(5WFfPd4B!&VzM(}J-B&w;^n4&)^B#o&? zT%8!(=j!H$({Z!;^)(oA_s4K6)fRWvKAp$Jvtu0*1vL1#Jmc!oKrmC1K?QP(PL|7; z1rX_2a41D%hI~+UENhP{*{~QHW0tdj7Ai)_Qj} z(1KjR!Z^X4D)0O0q0WevhCQSF7n9Qe;Zpbn{6|b?5%|5az%BF*H)`TYc9k{h(fHY3 zbCF%TTBA~sEmsJt_vwZ4*J76UN))>vleFc%nu7fuKjW{>^FbW^_d_F@Yi1Q2zom9V85 zyGN75m4^+9LdPOYqM%fRF!4mt?WO_h(+Ob!wm{TY0YL0o$VBOA41KHJ5EoOozlSU~rzxq6Yl8dAN&4F9N0ytiV>oTt@utVv1Xr%E5OaZS z0sOqj+U=)rL%2#D9@x5i=gW@E&eio~#w$W2yEer`JVLw+sGJi4$$-a=jtj z)%vk@X@|E~l~2hp^yB)f)$(Pv<#*WyZ|!oXtLM-sr_CPrs^S!pt4dFNH>KP8V1~{%t*^*;J6Z)R ztTH=YK5|uOwd_AWV=OJ5ODTFaYopg&U5s6^+h;OsWwx*gJM`|8eW$H)+o`IVy-KmA zqh8lt=644pTWxkfhe>|fd>)C{(` zxtn@K43c<~as*@9isXVqqiL9}Xg06?WRHE(UJ~`DYQb$cX4a-#uwkKy{QWVZU)_lw z3t5HLkWbY>I-5J+THh8Lm^~FEDMUBh^^5kRGni0N5*f05j*~4}Uwho^cno@#u*un; zR?71vd%S0NbLv{Pcv9`ucG`_{68l1FP9-dUwJs;UeyylqbSKw37ki=l-Uf~R_4v?Z ze-rZU%{5y0G38-=;wcNFDz_Y6zNpPA3ix*p?ow*<7ZuX>dvR%m}sOZt=TBQ?~&k<-+D1Qyc0w_z_D8DwHJt)?$ zLd~tCG-Ki6?f?}vI?AjFR}%B88|gOPzjSbsPBJp&J=3zjb8PaekZ44H2ctG4{;`9? zbg|$1m+r-_AEtJ5xG;8sBT+m8PQE--$~JRryc{IprB@gn$C- zr1}%xPS-V5n;Frp8GO$3i721;n%jQg|92>=(HD5C!d-Qr? zrS`W)KJD|1792DHDXzSVvy(0W6P64{&Z1=DEX`w zppu(#SQS&O2k2xV5U588VE(XtPSv8eRpFNgF8kli-w>5;x#Z^|fWrUz#(ys6l!kDi zhyTA@P(*uSAYdYbd}nOfz+gy#{`fx^CNQXAZ^Zw)0VongCqjBZizwUp|3d!fQ$YO9 zf7b#CS@xfh{C8})|2NwI#Jw#NDu+b6SQ%3BmB4k=E|r0TdnDbJN7jt^@1OT*^}nD- z1!_4s)UQ~zY}nA#(+dj=4-gZ>Sm)%Ti*xx@+BTOA?aw!|QHh#8t1#!!F3+ zH}}@oHa3dD>e(J{JekeZ4CuejJ2+-u=CT*C{r6ux)z6=jTKclvy|*+}R8%oJEWL#P zc)qT!u6AC(Qd&>~g@n)G@{mzgjYcW-60H_qU2IIG$8Cxu;MZ2sD+x!*i)SL@=`;}O z_ATsWx-S+0_j=Y@$RX8<(3y^n4SsF%#(a0NsG0Tw7K@mK7pIpSz3=11lhRaJhTdiq-vtOY zbaWXD9`%6+6D^Zb9=w3cApo>D6aiPjXwh^{nEwfV8Ch0VCe^1ybFA}qaf(mv@{L+D zz+o*GU#HDxdi<2r_=qa*Fgs7(0qwsUy<4e24YZ(eq|3gq!}?$B>FMc)hCxyWw<0NO z96ooq)kxz|7((yc`4pny^9}$=ZDL{JaJ$J~)m&OpLCsEYJK3Be?UR_9mHBdXx!LPu zJsSX8*ZX`A`q!I`k7Uq}lcgXuIy5-cmEBZz=-0<@g!YeJ$jZv9Qn{?!woMj6w;#+X z0VT0)Hrq}Z%e5f$Xu1``8vdkQ{;QI-jwqG_rIOjuXsfJR7)}A@a~FbTswpjPPM3KI z0_sVsG50h3B1#njV&a1HS(jSpk17}5nsZIs2T_gVnMEEuGmJI0nH^Y1-g@TKwxys> z`yrP98gsi0drbj~*oX500HXdss{0+^u^rShc|@khY?H_Jy9`iB{x3hj-9A72-S4kM z3OUtaF2`=e{jeKa_*h)Q{Z`)V$S4J-xr^m9RtG~mcr^Z^}W5dB^}}}P>6^c z@H?DK95j+!Y;0^)OAujT7x`8hUiP`EEfQN)dRbW&>$l%0Jc>S|IZhU0V!^Iw z&G(%RioZFQ*SNF4nkPFuAyvbeI62}Nz*0(&J9$!06lYu%o0Mun;}Vr`90xKndinI5oZRvZyKT0Qm4l^iU{!aCoTT)#!3M8XD@h>)lgbZ91^?V*S?BwoAo84FeCm)kXQwFYhx4 zf%&HO4H-Fs$JxMW1qa~ove)N)7gb+Bx?|rQk_o6>2z

1{Cx@?IPn6?Kb|6;Qt!IXU@-yo6dKz+$w9Qy+bS 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 Rg7D=p literal 0 HcmV?d00001 diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..3a23bc1 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,589 @@ + + + + + + + mq-db – a Markdown-specialized embedded database in Rust + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ +
+
+

+ Your Markdown
+ is already a database. +

+

+ mq-db parses Markdown into a flat block list with an interval + index (Nested Set / Pre-Post Order), turning heading hierarchy + into O(1) integer comparisons. Query it with + SQL or + mq, + persist it to a compact custom page-file format — no SQLite + dependency. +

+ + + +
+

the source, annotated at index time

+
+
+ README.md + block_type · pre / post +
+
+
+ # mq-db + heading · 1 / 18 +
+
+ mq-db parses Markdown into a flat block list with an interval index. + paragraph · 2 / 3 +
+
+ ## Architecture + heading · 4 / 17 +
+
+ Every heading opens an interval; blocks inherit pre/post bounds. + paragraph · 5 / 6 +
+
+ - Bitmap index on block_type + list_item · 8 / 9 +
+
+ - BTree index on (pre, post) + list_item · 10 / 11 +
+
+ - Hash index on content, lang, depth + list_item · 12 / 13 +
+
+ ```sql SELECT block_type, count(*) FROM blocks GROUP BY 1; ``` + code · 15 / 16 +
+
+
+

1 every block gets a pre/post pair at index time — "is X inside Y?" becomes one integer range comparison, not a tree walk.

+

2 the query planner picks a BitmapIndex, BTreeIndex, or HashIndex automatically, based on the predicate.

+
+
+
+
+
+ + +
+
+
+

+ Hierarchy checks
without a tree walk. +

+

+ Most Markdown tooling answers "what's inside this section?" by + walking a tree. mq-db assigns every block a + pre/post + pair (Nested Set encoding) at index time, so an ancestor + check becomes a single interval comparison — + under(pre, post, anc_pre, anc_post). +

+

+ Three secondary index layers push SQL predicates down before a + single block is materialized: a BitmapIndex + on block type, a BTreeIndex on pre/post, and a + HashIndex on content/lang/depth. +

+
+
+
+
+ sql> RAG extraction under a section + under() +
+
-- all text/code nested under the "Architecture" heading
+SELECT b.block_type, b.content
+FROM blocks b
+WHERE under(b.pre, b.post,
+  (SELECT pre  FROM blocks WHERE block_type = 'heading' AND content = 'Architecture'),
+  (SELECT post FROM blocks WHERE block_type = 'heading' AND content = 'Architecture'))
+  AND b.block_type IN ('paragraph', 'code')
+ORDER BY b.pre;
+
+

fig. 1 — scoping a query to everything nested under a heading, via a single interval comparison.

+
+
+

O(1) ancestry

+

+ Interval index turns "is X inside Y?" into an integer range check. +

+
+
+

Dual engines

+

+ A custom sqlparser-based SQL evaluator, and mq via mq-lang — no SQLite. +

+
+
+

Zone pruning

+

+ Per-document stats skip irrelevant files before any block is scanned. +

+
+
+
+
+
+ + +
+
+

SQL, joins included

+

+ documents and blocks are + plain virtual tables — join them like any relational schema, plus + self-joins over the interval index for structural checks. +

+
+
+
+
+ documents ⋈ blocks + JOIN +
+
-- documents that contain Python code
+SELECT DISTINCT d.path
+FROM documents d
+JOIN blocks b ON b.document_id = d.id
+WHERE b.block_type = 'code' AND b.lang = 'python';
+
+

fig. 2 — a plain relational join across documents and blocks.

+
+
+
+
+ self-join over pre/post + JOIN ×2 +
+
-- H2 headings immediately followed by a list
+SELECT d.path, h.content AS heading
+FROM blocks h
+JOIN blocks nxt ON nxt.document_id = h.document_id
+                 AND nxt.pre = h.pre + 1
+JOIN documents d ON d.id = h.document_id
+WHERE h.block_type = 'heading' AND h.depth = 2
+  AND nxt.block_type = 'list';
+
+

fig. 3 — a structural self-join, one row apart in pre-order.

+
+
+
+
+ mq() scalar function + inline mq +
+
-- run an mq program against Markdown content, in SQL
+SELECT mq('.h1 | to_text', content) AS title
+FROM blocks
+WHERE block_type = 'code' AND lang = 'markdown';
+
+

fig. 4 — mq embedded as a scalar function inside a SQL projection.

+
+
+
+
+ CASE + aggregates + GROUP BY +
+
-- bucket headings by depth, summarize per bucket
+SELECT
+  CASE WHEN depth <= 1 THEN 'top-level' ELSE 'nested' END AS bucket,
+  count(*),
+  group_concat(initcap(trim(content)), ', ') AS headings
+FROM blocks
+WHERE block_type = 'heading'
+GROUP BY CASE WHEN depth <= 1 THEN 'top-level' ELSE 'nested' END;
+
+

fig. 5 — CASE expressions and aggregates over heading depth.

+
+
+
+
+ + +
+
+
+

Index

+ 9 entries +
+
+
+
+ 01 +

Flat block storage

+ +
+

Every Markdown element becomes a typed Block with row-polymorphic properties.

+
+
+
+ 02 +

O(1) hierarchy queries

+ +
+

Interval index (pre/post) makes ancestor/descendant checks a single comparison.

+
+
+
+ 03 +

Three-layer indexes

+ +
+

Bitmap, BTree, and Hash indexes for fast SQL predicate pushdown.

+
+
+
+ 04 +

Zone maps

+ +
+

Per-document statistics skip irrelevant files before scanning any blocks.

+
+
+
+ 05 +

Dual query engines

+ +
+

SQL via a custom sqlparser-based evaluator, and mq via mq-lang.

+
+
+
+ 06 +

DDL support

+ +
+

CREATE TABLE, INSERT INTO, DROP TABLE for in-memory custom tables.

+
+
+
+ 07 +

Function library

+ +
+

String, numeric, null-handling, CASE, and aggregate functions comparable to a general-purpose RDBMS.

+
+
+
+ 08 +

Custom page storage

+ +
+

8 KB fixed pages, checksums, atomic writes to a single-file format.

+
+
+
+ 09 +

CLI + REPL + TUI

+ +
+

Full terminal experience, plus an HTTP server for SQL and mq over JSON.

+
+
+
+
+ + +
+
+

Install

+
+
+ + + +
+
+
+ +

# downloads, verifies (SHA256), and installs to ~/.local/bin

+

curl -fsSL https://raw.githubusercontent.com/harehare/mq-db/main/bin/install.sh | bash

+
+ + +
+
+

+ mq-db index docs/ --recursive && + mq-db sql "SELECT block_type, count(*) FROM blocks GROUP BY block_type" +

+
+
+
+ + +
+
+

+ Set in Fraunces, Inter & JetBrains Mono · MIT licensed · © 2026 mq-db +

+ +
+
+ + + +