mirror of
git://f0xx.org/android_cast
synced 2026-07-29 07:20:00 +03:00
docs updated, most probably related to pdf gen and/or url shortener
This commit is contained in:
@@ -15,6 +15,8 @@
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## Table of contents
|
||||
|
||||
<!-- toc -->
|
||||
@@ -57,7 +59,9 @@ The draft defines a **standalone URL shortener** at `https://s.f0xx.org`, separa
|
||||
| Priority | **Post-alpha**; medium severity; may move up if BE load stays low |
|
||||
| Slug hash | **SHA-256 truncated (12 hex)** — reject draft interleave + Java `hashCode` |
|
||||
| Auth | **Bearer tokens** for API; **signer** for permanent TTL; operator **session RBAC** only for token admin UI |
|
||||
| Placement | Submodule `backend/url-shortener`; dedicated nginx vhost; **opt-in** deploy |
|
||||
| Placement | `backend/url-shortener/` scaffold in repo; dedicated nginx vhost; **opt-in** deploy |
|
||||
| Admin UI | Hub **Short links** card (not separate admin skin) — SPEC §20 |
|
||||
| Infra | Git remote + FE TLS **live**; nginx snippets in repo |
|
||||
| Stack | PHP + nginx + MariaDB per draft |
|
||||
| OpenAPI | **Required** in v1 |
|
||||
|
||||
@@ -75,7 +79,7 @@ Questions from draft §“TBD and open questions list” and inline `TBD` marker
|
||||
| Q4 | Java hash vs SHA-256 | **SHA-256** (see [§4](#4-slug-algorithm)). Java hash is 32-bit, non-cryptographic, JVM-stable but poor for URL slugs. |
|
||||
| Q5 | Interleaved URL+TOKEN string | **Rejected** for production. Deterministic `SHA256(bearer_id ‖ normalized_url)` instead. Draft interleave kept as historical note only. |
|
||||
| Q6 | Authentication: “app-wide shared session, project-wise token” | **Split roles:** `curl`/services → **project bearer token**; console operators → **shared `ac_crash_sess`** to create/revoke tokens (same RBAC as crashes/tickets). Shorten API does **not** accept PHP session cookies. |
|
||||
| Q7 | Submodule remote “available soon” | Track as [open item](#14-remaining-open-items); scaffold in monorepo path first, push to `git://f0xx.org/androidcast_project/url-shortener` before prod. |
|
||||
| Q7 | Submodule remote “available soon” | **Done** — `git://f0xx.org/androicast_project/url-shortener`; monorepo scaffold at `backend/url-shortener/`. |
|
||||
| Q8 | OTA-style “invalid URL” on unrelated services | N/A here; shorten service validates URL scheme/host and returns `INVALID_URL`. |
|
||||
| Q9 | Step 9.1.1 / 9.1.2 trusted sub-capabilities | `can_temporary` on bearer; `can_permanent` on bearer **and** valid signer required for `ttl=0`. |
|
||||
| Q10 | Cached hit when TTL “exceeds given limits” | If stored link **expired** → error `TTL_EXPIRED`, not silent renew. If valid → return same slug with **remaining** `ttl` in response (draft step 8). |
|
||||
@@ -99,7 +103,7 @@ Questions from draft §“TBD and open questions list” and inline `TBD` marker
|
||||
|
||||
### 3.3 Shared session (operators)
|
||||
|
||||
- Small PHP admin page under url-shortener **or** a tab in crashes console (suggestion) protected by existing login.
|
||||
- **Frozen:** hub **Short links** card (SPEC §20) — same nav shell as Remote access / Builder.
|
||||
- Actions: create bearer, revoke bearer, list links for bearer, purge expired.
|
||||
- Uses same RBAC roles as [REMOTE_ACCESS_IMPL](../REMOTE_ACCESS_IMPL.md) pattern (`admin`, `operator`).
|
||||
|
||||
@@ -184,11 +188,12 @@ Internet → FE (s.f0xx.org TLS) → proxy_pass BE :80 → url-shortener php-fpm
|
||||
|
||||
| Step | Owner | Notes |
|
||||
|------|-------|-------|
|
||||
| DNS `s.f0xx.org` → FE | PO / infra | **Open** — see §14 |
|
||||
| FE nginx `server_name s.f0xx.org` | DEV | Mirror `apps.f0xx.org` TLS pattern |
|
||||
| BE `url-shortener.conf` | DEV | Repo under `examples/` or submodule `deploy/nginx/` |
|
||||
| Submodule init | DEV | `scripts/init-third-party-submodules.sh` update |
|
||||
| Licenses | DEV | Add QR library to BE license inventory |
|
||||
| DNS `s.f0xx.org` → FE | PO / infra | **Done** (with TLS) |
|
||||
| FE TLS cert | PO / infra | **Done** — `/etc/letsencrypt/live/s.f0xx.org/` |
|
||||
| FE nginx `server_name s.f0xx.org` | DEV | [nginx.fe-s.f0xx.org.snippet](../../backend/url-shortener/deploy/nginx.fe-s.f0xx.org.snippet) |
|
||||
| BE vhost fragment | DEV | [nginx.be-url-shortener.fragment](../../backend/url-shortener/deploy/nginx.be-url-shortener.fragment) |
|
||||
| Git remote | PO | **Done** — `git://f0xx.org/androicast_project/url-shortener` |
|
||||
| Licenses | DEV | Add QR library to BE license inventory when impl starts |
|
||||
|
||||
**Safe deploy:** nginx fragment only; no topology changes to router/FE↔BE path. Validate with `nginx -t` before reload.
|
||||
|
||||
@@ -320,7 +325,7 @@ flowchart TD
|
||||
Items intentionally **not** frozen in SPEC — recommended but optional:
|
||||
|
||||
1. **HMAC signed GET** — `&sig=HMAC-SHA256(url|ttl, bearer_secret)` to prevent query tampering on shared links; skip for v1 if all clients use POST.
|
||||
2. **Console integration** — add “Short links” card to hub nav next to Remote access instead of separate admin skin.
|
||||
2. ~~**Console integration**~~ — **Done (spec):** hub **Short links** card (SPEC §20).
|
||||
3. **Response field `qr`** — include ready-made QR URL in shorten JSON.
|
||||
4. **Click analytics** — increment `access_count` only (already in schema); defer graphs to Grafana/nginx logs.
|
||||
5. **Custom slug** — `&alias=` for operators; increases collision/abuse risk — post-v1.
|
||||
@@ -336,15 +341,16 @@ Items intentionally **not** frozen in SPEC — recommended but optional:
|
||||
|
||||
Requires PO / infra input (hard blockers for **prod** only):
|
||||
|
||||
| ID | Item | Owner |
|
||||
|----|------|-------|
|
||||
| O1 | Create git remote `git://f0xx.org/androidcast_project/url-shortener` | PO |
|
||||
| O2 | DNS + TLS cert for `s.f0xx.org` on FE | PO / infra |
|
||||
| O3 | Confirm BE docroot path (`/var/www/.../apps/s/` vs subdomain root) | DEV + PO |
|
||||
| O4 | Approve QR library license addition | PO |
|
||||
| O5 | First production bearer token issuance policy | PO |
|
||||
| ID | Item | Owner | Status |
|
||||
|----|------|-------|--------|
|
||||
| O1 | Git remote `git://f0xx.org/androicast_project/url-shortener` | PO | **Done** |
|
||||
| O2 | DNS + TLS for `s.f0xx.org` on FE | PO / infra | **Done** |
|
||||
| O3 | BE docroot `/var/www/localhost/htdocs/apps/s/` | DEV + PO | **Default in SPEC**; confirm on first sync |
|
||||
| O4 | Approve QR library license addition | PO | Open (before QR impl) |
|
||||
| O5 | First production bearer token issuance policy | PO | Open |
|
||||
| O6 | PHP shorten/redirect handlers + hub Short links UI | DEV | Open (scaffold only) |
|
||||
|
||||
Soft blockers — DEV can proceed on `next` with local MariaDB and hosts-file testing without O1–O2.
|
||||
Soft blockers cleared for BE nginx + MariaDB local dev. Hard blocker for prod traffic: **O6**.
|
||||
|
||||
---
|
||||
|
||||
@@ -353,5 +359,6 @@ Soft blockers — DEV can proceed on `next` with local MariaDB and hosts-file te
|
||||
| Date | Rev | Change |
|
||||
|------|-----|--------|
|
||||
| 2026-06-11 | 1 | Draft → SPEC + DR; resolved hash, auth, schema, API paths; task graph + estimates |
|
||||
| 2026-06-11 | 2 | Scaffold `backend/url-shortener/`; openapi.yaml; nginx snippets; curl appendix; O1/O2 done per draft |
|
||||
|
||||
**Source linkage:** [docs/drafts/20100611_3_url_shortener.txt](../drafts/20100611_3_url_shortener.txt)
|
||||
|
||||
@@ -17,112 +17,112 @@ endobj
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 716.2874 124.373 727.2874 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 36 0 R /Fit ] /Rect [ 45.68504 716.2874 124.373 727.2874 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 705.2874 144.405 716.2874 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 36 0 R /Fit ] /Rect [ 45.68504 705.2874 144.405 716.2874 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 694.2874 138.629 705.2874 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 36 0 R /Fit ] /Rect [ 45.68504 694.2874 138.629 705.2874 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 683.8499 115.1325 693.8499 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 36 0 R /Fit ] /Rect [ 59.68504 683.8499 115.1325 693.8499 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 673.8499 93.87004 683.8499 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 673.8499 93.87004 683.8499 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 663.8499 162.645 673.8499 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 663.8499 162.645 673.8499 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 653.8499 144.705 663.8499 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 653.8499 144.705 663.8499 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 643.2874 105.709 654.2874 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 643.2874 105.709 654.2874 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 632.8499 168.9 642.8499 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 632.8499 168.9 642.8499 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 622.8499 121.785 632.8499 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 622.8499 121.785 632.8499 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 612.8499 210.9825 622.8499 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 612.8499 210.9825 622.8499 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 602.2874 140.837 613.2874 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 602.2874 140.837 613.2874 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 591.2874 91.48504 602.2874 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 591.2874 91.48504 602.2874 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 580.2874 130.613 591.2874 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 580.2874 130.613 591.2874 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 569.2874 90.14904 580.2874 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 569.2874 90.14904 580.2874 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 558.2874 107.485 569.2874 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 558.2874 107.485 569.2874 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 547.2874 156.853 558.2874 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 547.2874 156.853 558.2874 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 536.2874 94.14904 547.2874 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 536.2874 94.14904 547.2874 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 525.2874 144.853 536.2874 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 525.2874 144.853 536.2874 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 514.2874 178.189 525.2874 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 514.2874 178.189 525.2874 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
24 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 503.2874 138.613 514.2874 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 503.2874 138.613 514.2874 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
25 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 492.2874 97.71704 503.2874 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 492.2874 97.71704 503.2874 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
26 0 obj
|
||||
@@ -134,7 +134,7 @@ endobj
|
||||
<<
|
||||
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
|
||||
14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R
|
||||
24 0 R 25 0 R ] /Contents 68 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 67 0 R /Resources <<
|
||||
24 0 R 25 0 R ] /Contents 67 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 66 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0
|
||||
/Trans <<
|
||||
@@ -149,22 +149,22 @@ endobj
|
||||
endobj
|
||||
29 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 391.5722 464.1984 399.3562 472.5984 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 36 0 R /Fit ] /Rect [ 391.5722 435.3638 399.3562 443.7638 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
30 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 414.9242 464.1984 422.7082 472.5984 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 414.9242 435.3638 422.7082 443.7638 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
31 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 424.2482 437.1984 458.1002 445.5984 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 424.2482 408.3638 458.1002 416.7638 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
32 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 423.4642 362.1984 431.2482 370.5984 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 423.4642 333.3638 431.2482 341.7638 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
33 0 obj
|
||||
@@ -179,17 +179,12 @@ endobj
|
||||
endobj
|
||||
35 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 405.9572 242.1984 436.6942 250.5984 ] /Subtype /Link /Type /Annot
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 391.5722 107.3638 403.2482 115.7638 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
36 0 obj
|
||||
<<
|
||||
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 391.5722 136.1984 403.2482 144.5984 ] /Subtype /Link /Type /Annot
|
||||
>>
|
||||
endobj
|
||||
37 0 obj
|
||||
<<
|
||||
/Annots [ 29 0 R 30 0 R 31 0 R 32 0 R 35 0 R 36 0 R ] /Contents 69 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 67 0 R /Resources <<
|
||||
/Annots [ 29 0 R 30 0 R 31 0 R 32 0 R 35 0 R ] /Contents 68 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 66 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0
|
||||
/Trans <<
|
||||
@@ -197,9 +192,19 @@ endobj
|
||||
>> /Type /Page
|
||||
>>
|
||||
endobj
|
||||
37 0 obj
|
||||
<<
|
||||
/Contents 69 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 66 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
38 0 obj
|
||||
<<
|
||||
/Contents 70 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 67 0 R /Resources <<
|
||||
/Contents 70 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 66 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -209,7 +214,7 @@ endobj
|
||||
endobj
|
||||
39 0 obj
|
||||
<<
|
||||
/Contents 71 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 67 0 R /Resources <<
|
||||
/Contents 71 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 66 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -219,7 +224,7 @@ endobj
|
||||
endobj
|
||||
40 0 obj
|
||||
<<
|
||||
/Contents 72 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 67 0 R /Resources <<
|
||||
/Contents 72 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 66 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -229,191 +234,181 @@ endobj
|
||||
endobj
|
||||
41 0 obj
|
||||
<<
|
||||
/Contents 73 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 67 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Outlines 43 0 R /PageMode /UseNone /Pages 66 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
42 0 obj
|
||||
<<
|
||||
/Outlines 44 0 R /PageMode /UseNone /Pages 67 0 R /Type /Catalog
|
||||
/Author (Android Cast project) /CreationDate (D:20260611185331+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185331+02'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (URL shortener service \204 design review \(DR\)) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
43 0 obj
|
||||
<<
|
||||
/Author (Android Cast project) /CreationDate (D:20260611175416+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175416+02'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (URL shortener service \204 design review \(DR\)) /Trapped /False
|
||||
/Count 24 /First 44 0 R /Last 65 0 R /Type /Outlines
|
||||
>>
|
||||
endobj
|
||||
44 0 obj
|
||||
<<
|
||||
/Count 24 /First 45 0 R /Last 66 0 R /Type /Outlines
|
||||
/Dest [ 36 0 R /Fit ] /Next 45 0 R /Parent 43 0 R /Title (1. Executive summary)
|
||||
>>
|
||||
endobj
|
||||
45 0 obj
|
||||
<<
|
||||
/Dest [ 37 0 R /Fit ] /Next 46 0 R /Parent 44 0 R /Title (1. Executive summary)
|
||||
/Dest [ 36 0 R /Fit ] /Next 46 0 R /Parent 43 0 R /Prev 44 0 R /Title (2. Resolved open questions)
|
||||
>>
|
||||
endobj
|
||||
46 0 obj
|
||||
<<
|
||||
/Dest [ 37 0 R /Fit ] /Next 47 0 R /Parent 44 0 R /Prev 45 0 R /Title (2. Resolved open questions)
|
||||
/Count 4 /Dest [ 36 0 R /Fit ] /First 47 0 R /Last 50 0 R /Next 51 0 R /Parent 43 0 R
|
||||
/Prev 45 0 R /Title (3. Authentication and trust)
|
||||
>>
|
||||
endobj
|
||||
47 0 obj
|
||||
<<
|
||||
/Count 4 /Dest [ 37 0 R /Fit ] /First 48 0 R /Last 51 0 R /Next 52 0 R /Parent 44 0 R
|
||||
/Prev 46 0 R /Title (3. Authentication and trust)
|
||||
/Dest [ 36 0 R /Fit ] /Next 48 0 R /Parent 46 0 R /Title (3.1 Bearer token)
|
||||
>>
|
||||
endobj
|
||||
48 0 obj
|
||||
<<
|
||||
/Dest [ 37 0 R /Fit ] /Next 49 0 R /Parent 47 0 R /Title (3.1 Bearer token)
|
||||
/Dest [ 37 0 R /Fit ] /Next 49 0 R /Parent 46 0 R /Prev 47 0 R /Title (3.2 Signer)
|
||||
>>
|
||||
endobj
|
||||
49 0 obj
|
||||
<<
|
||||
/Dest [ 38 0 R /Fit ] /Next 50 0 R /Parent 47 0 R /Prev 48 0 R /Title (3.2 Signer)
|
||||
/Dest [ 37 0 R /Fit ] /Next 50 0 R /Parent 46 0 R /Prev 48 0 R /Title (3.3 Shared session \(operators\))
|
||||
>>
|
||||
endobj
|
||||
50 0 obj
|
||||
<<
|
||||
/Dest [ 38 0 R /Fit ] /Next 51 0 R /Parent 47 0 R /Prev 49 0 R /Title (3.3 Shared session \(operators\))
|
||||
/Dest [ 37 0 R /Fit ] /Parent 46 0 R /Prev 49 0 R /Title (3.4 Trust flow \(normative\))
|
||||
>>
|
||||
endobj
|
||||
51 0 obj
|
||||
<<
|
||||
/Dest [ 38 0 R /Fit ] /Parent 47 0 R /Prev 50 0 R /Title (3.4 Trust flow \(normative\))
|
||||
/Count 3 /Dest [ 37 0 R /Fit ] /First 52 0 R /Last 54 0 R /Next 55 0 R /Parent 43 0 R
|
||||
/Prev 46 0 R /Title (4. Slug algorithm)
|
||||
>>
|
||||
endobj
|
||||
52 0 obj
|
||||
<<
|
||||
/Count 3 /Dest [ 38 0 R /Fit ] /First 53 0 R /Last 55 0 R /Next 56 0 R /Parent 44 0 R
|
||||
/Prev 47 0 R /Title (4. Slug algorithm)
|
||||
/Dest [ 37 0 R /Fit ] /Next 53 0 R /Parent 51 0 R /Title (4.1 Decision: SHA-256 truncated)
|
||||
>>
|
||||
endobj
|
||||
53 0 obj
|
||||
<<
|
||||
/Dest [ 38 0 R /Fit ] /Next 54 0 R /Parent 52 0 R /Title (4.1 Decision: SHA-256 truncated)
|
||||
/Dest [ 37 0 R /Fit ] /Next 54 0 R /Parent 51 0 R /Prev 52 0 R /Title (4.2 Collision policy)
|
||||
>>
|
||||
endobj
|
||||
54 0 obj
|
||||
<<
|
||||
/Dest [ 38 0 R /Fit ] /Next 55 0 R /Parent 52 0 R /Prev 53 0 R /Title (4.2 Collision policy)
|
||||
/Dest [ 37 0 R /Fit ] /Parent 51 0 R /Prev 53 0 R /Title (4.3 Draft example \(preserved for comparison\))
|
||||
>>
|
||||
endobj
|
||||
55 0 obj
|
||||
<<
|
||||
/Dest [ 38 0 R /Fit ] /Parent 52 0 R /Prev 54 0 R /Title (4.3 Draft example \(preserved for comparison\))
|
||||
/Dest [ 37 0 R /Fit ] /Next 56 0 R /Parent 43 0 R /Prev 51 0 R /Title (5. API and flow corrections)
|
||||
>>
|
||||
endobj
|
||||
56 0 obj
|
||||
<<
|
||||
/Dest [ 38 0 R /Fit ] /Next 57 0 R /Parent 44 0 R /Prev 52 0 R /Title (5. API and flow corrections)
|
||||
/Dest [ 37 0 R /Fit ] /Next 57 0 R /Parent 43 0 R /Prev 55 0 R /Title (6. Data store)
|
||||
>>
|
||||
endobj
|
||||
57 0 obj
|
||||
<<
|
||||
/Dest [ 38 0 R /Fit ] /Next 58 0 R /Parent 44 0 R /Prev 56 0 R /Title (6. Data store)
|
||||
/Dest [ 38 0 R /Fit ] /Next 58 0 R /Parent 43 0 R /Prev 56 0 R /Title (7. Deployment and infra)
|
||||
>>
|
||||
endobj
|
||||
58 0 obj
|
||||
<<
|
||||
/Dest [ 39 0 R /Fit ] /Next 59 0 R /Parent 44 0 R /Prev 57 0 R /Title (7. Deployment and infra)
|
||||
/Dest [ 38 0 R /Fit ] /Next 59 0 R /Parent 43 0 R /Prev 57 0 R /Title (8. QR codes)
|
||||
>>
|
||||
endobj
|
||||
59 0 obj
|
||||
<<
|
||||
/Dest [ 39 0 R /Fit ] /Next 60 0 R /Parent 44 0 R /Prev 58 0 R /Title (8. QR codes)
|
||||
/Dest [ 38 0 R /Fit ] /Next 60 0 R /Parent 43 0 R /Prev 58 0 R /Title (9. Security model)
|
||||
>>
|
||||
endobj
|
||||
60 0 obj
|
||||
<<
|
||||
/Dest [ 39 0 R /Fit ] /Next 61 0 R /Parent 44 0 R /Prev 59 0 R /Title (9. Security model)
|
||||
/Dest [ 38 0 R /Fit ] /Next 61 0 R /Parent 43 0 R /Prev 59 0 R /Title (10. Integration with androidcast)
|
||||
>>
|
||||
endobj
|
||||
61 0 obj
|
||||
<<
|
||||
/Dest [ 39 0 R /Fit ] /Next 62 0 R /Parent 44 0 R /Prev 60 0 R /Title (10. Integration with androidcast)
|
||||
/Dest [ 38 0 R /Fit ] /Next 62 0 R /Parent 43 0 R /Prev 60 0 R /Title (11. Estimates)
|
||||
>>
|
||||
endobj
|
||||
62 0 obj
|
||||
<<
|
||||
/Dest [ 39 0 R /Fit ] /Next 63 0 R /Parent 44 0 R /Prev 61 0 R /Title (11. Estimates)
|
||||
/Dest [ 39 0 R /Fit ] /Next 63 0 R /Parent 43 0 R /Prev 61 0 R /Title (12. Task dependency graph)
|
||||
>>
|
||||
endobj
|
||||
63 0 obj
|
||||
<<
|
||||
/Dest [ 40 0 R /Fit ] /Next 64 0 R /Parent 44 0 R /Prev 62 0 R /Title (12. Task dependency graph)
|
||||
/Dest [ 39 0 R /Fit ] /Next 64 0 R /Parent 43 0 R /Prev 62 0 R /Title (13. Suggestions \(PO / dev discretion\))
|
||||
>>
|
||||
endobj
|
||||
64 0 obj
|
||||
<<
|
||||
/Dest [ 40 0 R /Fit ] /Next 65 0 R /Parent 44 0 R /Prev 63 0 R /Title (13. Suggestions \(PO / dev discretion\))
|
||||
/Dest [ 39 0 R /Fit ] /Next 65 0 R /Parent 43 0 R /Prev 63 0 R /Title (14. Remaining open items)
|
||||
>>
|
||||
endobj
|
||||
65 0 obj
|
||||
<<
|
||||
/Dest [ 40 0 R /Fit ] /Next 66 0 R /Parent 44 0 R /Prev 64 0 R /Title (14. Remaining open items)
|
||||
/Dest [ 40 0 R /Fit ] /Parent 43 0 R /Prev 64 0 R /Title (15. Changelog)
|
||||
>>
|
||||
endobj
|
||||
66 0 obj
|
||||
<<
|
||||
/Dest [ 41 0 R /Fit ] /Parent 44 0 R /Prev 65 0 R /Title (15. Changelog)
|
||||
/Count 6 /Kids [ 27 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
67 0 obj
|
||||
<<
|
||||
/Count 6 /Kids [ 27 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
68 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1045
|
||||
>>
|
||||
stream
|
||||
Gatn&>>O95&;B$;(%YO._Sja-]E&0f'%0+9IB/%6M48f_lsM1Err%j]0"Zp.#$I5F._#"\4?bs+&E/C^^T.k&UkHX,$C!ie!h,2Rb"F]Ep[7b=e!3KsZ6G8@aRboinMJ)Zn2,t/(8imKGa_'H!@1Io1ne<G4a\T)Oia<`:kA^BSHNFt@*2$3YWThpAIXiqo1Q<'D$H\e!@uA`<W\SGj\Q=8)[/]IUpu3AA2[f_mmHmib&;7gmphIU)F*\QB9]3qjCq#[)25Q7DolLPmb"Lc$*6n_%UAkj5')/QQKEi8q%i>q$Y&sQJUbpYoMTf)>4bD.J$f@M$7`0>IBXcCfFjh.O.Y`=D!OR"lBK*;K;cdUD?SUslaV64!/TW2!0"]u=P[j_%D!>_mRCUiWKfso12O?`(bpU%EEH`LA]:3&E)je`7QYj6'VFQ]$*_0JRA@H,IY+84,.PHQ*qZR2*X$b%!X9%&1W"BMB;)_C=KM&[CRiAp]!5@4YVch2['?f(o)V],RKsAT[0!F5mJK^ndr@<X]P*J3\Ac'cRLiT.@fsA\[#r8;o2,I==++&+"FG2:.d=t7#Su<Y%p5:2M5"tGLtVreKa)"*WnV\i"MJ\ajl'Sb%8@GPbja-_idl;:3r3mF)r[)+m,O?hB^]6QNO2l72,+d=C75j=mHS0HBA<-^Zn\<G[+MaQL>p8[bkSuii\VDlb'=Rk3CdZ.\,*?sJ);#.Wg2Na$s=X/Tce;;a4b#=n^("::qBT4$s_];/KUTQp!uJNs+Q=H&V1=K23$9@WqU11D?,W]FiAd[ehdl'F^3S8Ck:1)2$ba8aJ"uA8oAQ%M.4E&KrQ0p9@C",-toiD6S[XQ`hn%(=6NI^5N!*@2Gd%N);u)&QkMs\?qcF#IiXkJWb*%IjWHUFiCTo_*0R$bT!#V=7&q7;jWYic/a.]Y#>'rVjO49>f\+2]FuB^kRS"P#MeEg`_K?OLN2F:6g$Fg'hX,CNcIS\SlINhc2Rd@AE&B]^\+('M_Q`/)`r*Qk>OgJkN8cEaa9nPNadZ@e]g"mH>Y4~>endstream
|
||||
endobj
|
||||
69 0 obj
|
||||
68 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3816
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3805
|
||||
>>
|
||||
stream
|
||||
Gatm>=`^(T&q801kc4NS,Sji&Ju$\E'0@Seal5bPe9u;$C(+U/(]e&1[a2.l4i<:^SQe^\T\4X;rONpOAGdk8?[E=Q@1A,j$7IC*mm5>I*S+TVI/W?^.j^[a0."M@auZUt;d*q%NpCX$(FmC1WjIHP*Yb#lJ&NF.0_pI/pdA>RSHX2BVg]'EF%G3%L@n>^Y*_)!ZYR(ASPeNeICQ-ZQTj9?(3A&F3&+M0Bd7;&9(GU]\d=P@VVjl'5!G^]$#I$]6YrI=MC]^(ZI(R%jDEO%LgoYu8;a&!&MtE,QS\"UUpbX=g*ChD^R[oM;gN-44!R:$Y$TDn1D1df;jC?m/fSk#)0*6*r!%d_&h!&0r)ABK"1P;AJqt'&)=E+__LTUHie9GqmQU7k=%L/3#X.2EY.kuCY@d]eda8/Vh"^]$ic!=dPPplt2+a)+'gKBAJh1Ud=m;NNEeRc`4VMpO--Ko`"N+,q#n7@m$>4mhk1AeBeb^j0S3Kk4M;87;QL+>kH60f-JMu##TN:6cdcC1LQe=>Xo\T6i!s0A31[3+c9RMV?JPY7nl`X,%:K'_.c;u3R`)"!)%b\J5Jk>_-dutJ6gW#Zq?o0,@g'HJ(_&d']`f:>Zbp+.t@j:\e%O;HYi6dO.E(<JfUBUCE3#"jhMbeBmbgu*`Mi^DTijo$j4+XGJA7<Qg3<?bn?L5k[O7,+-E-cdQNSlB,^KU+bk?Fun(ECWO4[Z\!,dABV1DeD]P/2RRZ37Q)b!D2,WnL>Q8[AhNAV.9mWg9gWUOAh+-Ba/m'\.^o$9:EW^;2u.-_DV:gZD%96QMWQfd]Xs/4)dBfm"gP9c;Sb2[B)rOm2Mt]KSf@n?&SQW2N4k>=1$FH:=;2<pX3#WLfj%lkH@tWKJDD0A?10UDZF;gXs0M!B6S;bN*!=pIM-,jCRBVgu/b#Vqn->/ZmftXm3(NZA9i]eYd<D4m[ka8)mD$4oR^<@3;/k91!Ud\^>a)E<':j1W05VG1*:>WD("tNL+HiLL+Tfegn/WMg&J(k4@hB>oMK[q1q^hPb"MTG4[6$CaC=sq"p9/ETVs\+.\un$*rPBHm+83djeZ=.K:5E["g#%CFW+TPB[3lQL\R0Hk7nLio#CaXEf:*3m\DP01/JqO?30FfttT&*%7SoIh)QDP8JdfDEq@TP%N;f:-UYG$[aU]4b>R7cJJ6Qmu&6qC1BrKDI4Hi"cOA^XkF4$X?:_d<@tc9#>X:+B&L?I2I=L.+P<5,a6VLf*ON[_6iF.Q5J^c`(4.<b+H5Kd?XG@/lHmlc\ig;0^u]+MN03TA^30"dQ_,qYT$hDgKl85Wak6p%9W?_<>XG!-e;o^fW7)so51Q?5dpIqN;5^D7W4%Ji9]?HZrV9&@eWmjJT_X$7k:;37Ns2--Q[tAcH>k*`jQ_8#qcU'qXA%m2LuXW_&3f5D#WaF[pll;jC:gUjj7O>(H?fi]<<hqgEP,=6?-<FOeOl[S:F[E+]!&\Qi=`I:9@LK$Lo$tAZ=S3W&PH7Y-;;Vr<!b??(3g(k>]bK[r(8BtBc7r1Zau"X:&D1cl.Jq>E0[&ZU@g?Ph5^;Yj-[:SE$et9SKdQ.(?;VO``sUjq2r/'Q-EP8';#LJZ#5)`_e'&c^@FGiYaMD36a0_BQ-((P*X>%i\[i.@U(-#2J9*GX?tWKGL3Js.(XT6#[8g7C&tu\(5-V@R%/(.j,tWbRaGSm"#;f_U$JYU0WMI\bOQ;[C]k#_N@9g>`_#h%jljct",q6F2HI5%1BU\9B_Zqhd4#B[')C2Mt.pjUOVJj'^8<0H8fAE0q"Tlmu*9o7bC(Qb/r6J,aZ_!>PZI\.eX^4sr1Cr+)NF9c>VC#o?$\aKY[F/fkPRu9q4769hcUG4_+CVV`jO3&0;$o(*>G,M[HH75gNIp3"Y9it6+;dlbUJL+;OmACH(&MP^:Q]f?1q,od*B2)3M.@7saD(JJ/VEJ=7h4/N4C<_2d5VCNjq^UugXLnF/F13$eoZUHLD>-j[X*(#8WnT/<fnefa;U5?#Hm38X02;=X5%`L:TikX*i%]Vo).N0+Go-uR!bYPM$fg:mbJ_^kN:q';^%5a0<cOCN'@>-&@Jusdu&-uBaIPC"4%WL%1!'^[@bW_?(,]NjA*p/HSf#a;,f\E+!i^+Zb=dV81*6&'9"#9q&)KH#s/2ED_dG4'cS$Qm!B:I.6:aKUIFSqk#:8b_!E)tP?`P<QW`dGj9:[(8^O?5IZtN^Osqd-V\&G/[NS@$4_\e,C`@5>@gC,<8Y<er^G7P8CqJ2eC+Znrk%]D=[8#f[#anKGQIfV7i<To%Z9$;;JLYM:PF=bKMFbe5RZ.b/HGeW[G?rYc1=4PHSQdP8qggu@UZX<@[LigiY'g@YrqSHb6?I15`+[!NIB+P+m/Sfmp6r'l9s0pi/Vh=>Jo*/ug7#o@)/n+kr]:&h/<9QF>D3oZ<N?t=rf!D7p5UqP;9=[s-aC4cPi.KEA`sVL#do`\&@DP(iANK[NU,Zf\#`o^YM3UaA)W]P_crbX&u6)6la)rk#K^YF+<P8F_X%a=6dK1N3;/!7W'&@M@.0BZEk:VL/ZP&KhJ9]:rnLE06tDN@Mg7_@8/TVo?&&L9+_.&_+dP$;1?&AR8a,A,R?4>P,BQ@koAQ.kC\"0SiAM%i:VLW09>fL.HM&1T(5t]f(S,M/f;N$Tp;iS2g<i/rfmTOq'fd5Oc&^#&2I^Br[]%%AhU/;.NcguH)po8QE8`YLJsauH."[XO6k9>aP\"H%3;Q:RVnf@J>`H]lPV#]>*b`d-9=u^cJ]0)d.+suOLMG^/SB!`K%piG`JZ^!r%kd6nLBG6.2Nq7&0T#&KQIY#Oma8%5P;j-*'-<bL_+8FP#34GM?s-"<IM`7H"mC)=\o5NnpP=%7rI*T1`4?K+cd=F3G[0qsB(p2]JSCKZ`%0;t>dLkVr,/d\44=R2^7rDcCm(eoWq`(-,'kd(BJ/MqWUT,"U0gW=L?>`$VsjIlI>VJ3fh3XZq?Mri+sMn**NF,=8(833J_[:7.tKFgIIV`*$9K0RpI.kA3t;B^8-%[LQ0BP!\9,R!'I$P;BUhISCWc>0q`guc0?uKOdS`ni_HBY%.9p#n_O8.(9h[o>Sk9>@`4)2$0t8p#]=CX&Ep$o-E5r5Q2hm![2hb]SItQ;f##YBf8ZcQiKnf=l+UOJM]t"o;;64Rp<YT*9PZ/a2QTV"Dkoh`Zj3TdZrfAMK=;t0YCXf?E0nlX,gO:EHapu:g(`j9Sn6Vur7J^Onl7gl%#Q-GR\47a'j^]H\E=X&>+W^K7RAO6;h![clP<qBkU19nU>rUsH]tCj=Ds#-k>U2f7Hb@TBTu2;C!/XG#@M/^@LB%>VGbS(U+PnG[g_ce/EJp1=]$V=/>tYD4oAgG`&c1![g)"2QOA3Y1s3Kie<R31JAS+#Hf5jVIp*B%WjQ*'DLnB%N1+gu0WKi[pp!N-/rAD4W9hsRDWO)[$j/=;;3O-9>=l"mXO/bSB=:E=E+h8Rjl[;O9dcfcZTBZtO(.3,E$-F?JAuAMpk8KU/`N",qb72_M,-tNae=*C,fi6L;*7a_UDQC(m;AJ<f/KRLgC9isO'd#(Mo't"CXJ./,VTIY4I4D6Gl'B`QY-e[%/pE)omV]*Q5s;[kfL3[EiHFQ[m6'"Eg9G7=Yf2*jT<(<NopXk"QDS3#*iGq]g:t*(@a,u<q3B=.C4b<:nAk3'+)b.HX#G0Z+UpR=-@6.FA5oeJI=7:!+]:nDbe3Ki?DaaQ/'Yrq2EZ%]+)/B'A.IOL8oM@0(ur0U$l(43qa5)G?D*a%=!SeZ'ADRM%"]ZsZW_`b?m%Qc<l\&A?MtClT;Y*~>endstream
|
||||
Gatm>>BAO[%Y!lM^s'NgD(P!*X-nB,S+JO#]d0l/R=3/8LQNEX-aKP*P`tI;?]_QGQ=O,jG<DuPP6=/O"RlH?5fJd2s7\DO*u?X0XF[7diW1l70k'S]/f/GT^!V!Z9hVa(Q>2"-RjjZ^R^`i_EM6F]dM3-*)phRSr=(4@0G=Rhq+4Y,EY3ZOL.30X90tkUKuH8s?TIET/oKY9jFX[F'u;KX#5%0JXdl_B-^_H\:DZCD9Mo0?cofTOO+O!e#N"I\O$,Cd6Yrd'R]>)1[PX:Q)D9](:-";IWpjXbJ4J@>^!PmJon%t7,<UdWDC-5rl/?XB%q*e*?8';+_V=A*<Sa7Fp-d@6lu(Ol+WsO)``i9&-:E9ldrbmn9)KKMLf6iR`[<$*ec^S!&lN/";RV[?,`71e21T&OrXGWt>FGcoV8_tKl3H!SaR4eWX/7+b5;5B'$qJhX:XFe]>%Z(`;fPcZeh]TjB"!,4$[_$%',i(C1a+#J0B=@LlN5KK\9t/[`e,iHQ>JN*I5rnpgGTR[B^DcfCT:pMhDkW+ksH"Z"pB,'fr=FnE>&'mN$A[Zh0t"IFu>OUGd.m8,_'!=T!/aS.8q;;k@Z)9=,f)8^h?&4]L;7N`Z*jWNL(9dStn1TgSF?/&kJ1U_Ge8%E)0%te#@;N35j:)n^Bfg-]>sQBgU8X$%qH(S\iW'MD,WQ:'".@#Q$R^q4ljicEFF9!OB+,`@,;%aK<q\98ODC5!cq)BAAD(4!2kXP:`<7Aq>Z:Wf7^8VAkg%MW*9h1BYV$FP#$\era'HR`M5(kaHD,"I5LO!8eqonL<T;>1X`_&i?<X?*)Id[8gn>*L'jACW[7+Nd6klV8%Uj_`]IUh0t>+N*a(NER8bgfCW+p@,Q@+f4GAJOVD&70'DGu&))kXk_cLrY9J@FEKm/hD\0)c&9kGC0Y0;Q:T_@oFW/38f+0i;6+fq@/KCUnn$T=A86.d9guFp@7YVQJ.s\)0+34h+@e?R$!l9NY-Xf\r5d0munB\"b$mK>a1\TJm0O)@34kT:G]<d,%im>7!?d:%1AIHg#@9OpCr!=ih9qQV9@jQsUq#<]E^@Uh[KFTl8"D.*E^63>ICc.95S:?EEg*;iM2-)'e)'9t2`uZgmO"q[TNur)SRcbJ)&,Q(-.\,T&H1:$d/V?P=Z?-L$B+X)ZiV7b`!+kiHFE79Kr)8ea*//[`-$]UPDh88o]'9m.4lfZ4hlr2e15@qD>H98]gQSbmPjLX(OE5o/$2()&q:"IdR7A;>im:3M!YM`a0TGRSgbbd+&3[pSNHb&sZEurUEPa(he>29V,`E92%.q[?OgrU2Nlf#"P1c*debtT\'[i?7^1eU/+Y/X'8FpdA8]?CC@U>lo\Ri"c+M)oh?eP8JjX9uLFEFo\%f1"C*3Q#kF?k)u]=_%F&H2qpl@'CfiDr-LiiIE(-m@`Z/Phql#E+0ZTpui5eE;i^HQE;\hW'+l1n*q,QYS^"IY.=`SYQ:spa@+QmV;V52g26o$'!;m%FEn_.!eO9AO/reVOaG.[U%8Q/,oG/NAAs'e'aobIJ_&(9REDSr,bm!:Z=*^\K"N5"7"ahC2IEsaoOgQ^TA%*@l]36CjcR2M]p;MCErUR$oiSR44QN^Q.?0/W>NFpZSm>0`IP\3LMk^GhWK,BT^-Ku6#kKHTfDA_+_Y>a#T_^R@45ojQD3-R@45nP7QFm&;UlMlV(<+ckia`t7dqq'9[j^-ED0qI1WAV8[T,\.!S3`LT,]TJR>l0PkWFjD`sW4Hp,PHXbW$*%E\*$n3R]<S`Ka.[Mr=JpVX-!-/>/K0R^M`,JSq4UE"&rfAf\INl9HVjelUgQk^l-]g,8%!AUP)"*MBLZ?GWs[n#^UlJZRG5q[puWj#GV=%?B73hVFq$?0GshUCl@t%N;<Yfo#'nmVAb-aNIT=,FH?*,_naVl7/7%3Nq0#(9]'3g83o76)]Mm)PQ"-0$dQb)c(W#1Oam1JnT:q(T@srqD;`Wga04Xr6*90nSojNe`cRgDI6-sV`PE5fGhY`n=#*%<@sFfEmRFfYu8CpaBK&(l@f85&dB5KbsX6=i3f6Canl]F+YH"\O`1kJ]6gToQOH/a^);>g7upP<OC-Gj8N]LR4Dp>$m$freadHZHr%**gnpLc5"@W@WrjZ2u8F^^3G$J3%>HRHHe.c%mT'21nB`5G,%jPl@aXW/L,-X[]+sSUIQ_"o#YZorJcZRcu,CC!<O@h>Y@*f-$R?-PUN:A)`\.f.:JE-$bcYl%7$Fp[Wmnq$u;i"mcs8?lmek!-/iaa\P6WsG@,RsqFV(*AGk_kXO3KJ%Hl2jIUo`T]mN9-)NN%mRR"khkUl[g8FKXHu2G<;(t!,*?aS":%j;I)3q<r89[S:r+?DbW0dd%AP*g^d-Qi\WpYZn/7g'o/VtWlaln6&`[HUj5[1Rq.B=iE]f:ERq_LVssN.SXMuIVQu_<5G;0Aj72i&3C)cfabm[#/24r,_6+h=5bV@oNE$uqChu1K2Dhq2%=]b\FiAjG^sFJ'6*5hS`R2Us?P4E`;Ne*`mhEM8rI)PYlJOkdG_=E@el=,&;IR$!]s=(g\r_8K*EV,KaBk,h=C61!hCj?WH2.OZ:]%`,V&D4h;iPZZaqlA^2Th@$cSY>O:\[Nc/gtapmSJR5YC-r/)UK>hG#r8npr2p4lGnhVmpuE-l'85$qX_s0[8^WI0i!RdCc"f8O#2u-G)_HSkO:/F7klYIe0cHEpZgTRYPZ3rWm\T6HZaE-gee?tbc#c]5t"\),g#*rn0tS!$J$jc`9L*jNe@IR&it>A:)6ZLJ?A$@4rdF7hj$u(;9XsG:O[!29>fLnp)5id9GpR6!BT1KY$F9i?-AT$XJ:o?mEQ*I<)JH;T"J&joIuV$DTc5^mqnVrTPaSE>KX,@;CJFl(X+>AP[\Yg:$G\*&61eY0TQ-qCab)lJM:S*LpAI5_'A&8\AW[COY0`2E@&VV4Z*&ujs&sHoap6+,16)CpbAH?mSFoGc("f9@Q`=hG)suUe$Pj$/?d!X"JPJ_/<0s=]/r3j?,TUH.%TP2%81%3r53V[]YQ9jJ<\&uKc+5E\U!=T8/U`C\"qiLN6r<e,VIgu<?g.CG@FDKV,,4YGdfUnY2f%OIkK#$JA6cJDM)V\O[-oM=cl((c(^GWZ=?l/O5oN6O7l=Qq<<t)3NQpeccS13G2%T/#T7$%WsUhD<0g9JqauJ"Pk$Ab=Ar!s5Q3kHG'1&@Q4?iR27hgeiuV:IGcGg['0qs8)GK8%Seir21:$e67hTha?q^i\.)e=&_/4<44VB>,h'?uD]]lfT7,8#tZW?S3AS&?Z,F^)_2I.^\ZFNVGO1SJNdToL6Ak.hT3=l.lNmR<hpG<d'WP^=&>"NH[fhV`FfuF5Q_\;/SU:W#G,(9/5obji_/cM2+l[cU#2&[NB4b1W2O:T_XD<`E;GqIj2$Ka0>gIfAi/hd6GI<Bni7)O/s_,:6+B`+dlAY0Z%Aok9q`B`i75_aUd8]hM']5*B>A%X$Pq9J*\4:A9oUHaNi35O)LIHjD\!Fat3cS1j`J$pD:HJW&30^MoAQO#9',k&qkm%XsH00LsO=$UqFNFZuSFEc=8lJ1kEW9Ej&gOn(m(2,S1]*2@c,l0q%+gYp7MIo\58?IV7&#e?WF=J'urLTlmDec;!4]V#S[PdING,nmfdbOdrCdi<O[qJgEZ1ltMG1Ae4D^t4`Jiik0RUtP,.aD6^<!"mU4#\WD?9T(`#Q(ZmW[jt$o)c/^.^lIIqVaAdSSH$_^8msC5)PT8M2^*i)R%/sI:p13l`Aak'gM'RX?lf=X2]>Pk'qT:^IJ~>endstream
|
||||
endobj
|
||||
69 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3902
|
||||
>>
|
||||
stream
|
||||
GauGdBli#ep3V5lVR*mE[l-[,'Ic&kmJ'LVB4JuEh!WHg>n'Io&n?f,!7FA!a`$&A?BTPhUms><CdS3Z_`R?_6piGOC%6CoL!\L)lM[Y)%AVZ<dL=)[\*q]-p=6'B>.W/G/*<M.)TWg*PeK=<?lr([`bYfp`_%?/Y)oO'TC66N!sqha^\@jN9Jt![mfW,0U.BsmobV:fE/8Br_I><(SF&M-@T-(#[)/&fOhE#F+AR<>XepkD!0)!`+<jXn#:Fj.-9n%Bj1^A96nGg`*?`t[<Wce#7sC2:b%Dm0VnOQ1=5rc;[urNhi2__sej*)>`gstt66:uF3o=_lZZGslE[AgN/!=^i8jZ_:i6t3W\c08BQ91V\6f8gk">ZklS(@59%=+iD;W/FPH9kU@`S<X+Sl^GcGdNJQC2nM-"GKJ],+J@`q;*ps820L`,5UAX:b%t(U4n\<GF0t.oSKXNNrh[&[cB'5_<.,1^`u4sgG-[oX-o]V6->BW_@_`]nq0Z.kR'cmGMuKW!g0Y"<4O>4+C()m0n430\IY>tJca%;RPS7a%e]#f/9ZoPAcW&X0(VLNp1V@1lHD4douA@1h:OFRb/uD$J0V4Q:]1jD^IcC_-V\aY;C;DFfGr!l6l*`679D[XL]ouSVp@dF,:V\"SHmE0jn+ch!SBX_24)bs\-#J6,2ml+OmQ+K7h`,@Z0DSqC&mTq<.]*E4`#]+d_<")q2r#@.nn#>\gt=D-0&EC#E,X"_Asb1E\f`]MdTXhSK9,T6')gM5']D&8Nfj1R5*>G\44EFJH`!-c6Ck]-u["M;qp5Y7TMA_b+:75rmZr]haqF\&uTl:.R62i_!%U1?XE0eium=hBbCMnV:lp!YJ*t>5D,[U9H9[qSg2OVd?RrV?+munbtcU28!D']o'5?X$:l"3m]XN[lk0kBjn].C*>NKbVM9eIX_tk0c'R(&Lmb&S6?A2N_WcIQpGE'UgZh+=H@ntkodXrM6@0%:9RJm/56eGg^#U;sDR`*>7b]!CmbG2`_gTs\W.*XH&,#Z9:?O?#@+K52L"%*j(hTZKU(SNd4?JWOS?=H;\NN$.!%jPuekE*O-id<Y`p\Zk5_"-K?bP3,SadStL9<-VPKW8NZa8'DGVm]*Fb%n)SRHi'h+%Jo7<ShZm]G"`LV"r+V&Q.YTEj_'cn0Xn)$!\\$Qu*0de[sp!hUcK-#fqmqiIf)fa!&$%OH8(d=6$da.nQZ$YAE,Z*uck;<VA\N]KeWj2L6YZ@_R/acF?:mb<oO"gRs>L@iULS*SIH2BI;A\Ph^>&oY*V&:rl+l+dn,"+p)?]$E&3cNDd-b;`Ok7ROF3c'"s/Aq?ffoc<W8'W:O+=/0KXIU\gm)EHYr1kpT/E,%eR"lj"G=3ZKT)"qa,2>]6udEi')>oDdqTIcE6p%Ri91Y@\7J/':rhVd(+_6][cRE2,6h+0(A6djOaBf1oCWW`/>/a:_`Q4AH!b\YV@^4(jOR80B]q)@eIm,:,%GO!C]HTjUj<B\b!Db\@VJYf*/6bTE<VCWa$IF*<kTE"OU;$U4llU]EYVJ6R%@eK9<cm1b<CboLJJ#H`aS*3u'6&3kc>6$+edNs<H[7#kf)6!<dh4tQ#iPJ94\?KiegpdoLP@./'V(.^iqR^759TNW__aK@>Q;A(V>H:4shc*Rrqf:V+R)A9B=PMHf/U8JX(fV9>cC'mH?d_(BTJ<S[-h/U1TNMS57rYCo,,uMgA%Ik/\u(#'NpfjPh^2/;>1Ra9FKYEVg(rk>kJ`0CemT[;+hg[?L!Ujd%>4"ZHLOADkfsW]AY;%Z]-I,\$tAEl6k(+;$]u,Hl`hTqk_eMSJr2gfj,/0#T!PFYpp\"C*K'paq:l.U\;N]G8BH99^UdpDJ@HVf:ttn.#h]\7J][3`HOT]Z([dj[\`%TcS%9iSAtVp-`geruoI#3FSXjod/m9es>IJX.T@WD]<ih#3FB0>^<b,&UF2\B!bDK1$QFHAPj""\k/YfMCim7.a=5_IJ1]OsgHQ3lJBG++>S"H`c+04^M)_7r)J90P6J5J3*%Wl1^7bIp'2C@@#2?DZR@ff-AK\"`gH-%;lKDZ"dC*p$Je+k,Wr_OOfWJ30-27#2+eH]j'@#prmUUBV&R-32rqRB"/>)H12Z9t2)G7tF.^c8YuWE@/`h0V1D>aS,aFQduFaGBso(11aDDO_g^"OqXQB07f4GGeR1(Y?mSokl#ALonbIoWVHi//?+=,9P)g-1PRNn0^!0V17,KOuN>\WSAJc4)$fCQjp;8n_14p0OH<dGAI;Z>GbKf^/nVbN#XdHH)rE)6qSd#J"Mb)MlYjC=W9seY,8#Nh9aP<>cCB.:U4%FMd'H[@Uu$1-DuO/JsE+=Wl(cf\r5:de`7igK3m!GAJbX2Ut5thRhaWL?.s>"D;XL?GHkU[JVEab!\3=[7SiL;Tqc""B;C?'%nptn*c!fU(?/doq-CV^?nk?Vh\j".]N6\L!=u7mrdtO7@QuKMT>c5Jf]B5GX/b)]2_V[W6ep-59H'CnqdRYgJLGa$qS\;9!e@fLFe$Ol-S$YJ@_;VKHDmM&oanY8&UWb?.IdYPPelGVDXeFD^M]gi15tN(OZ^#W.;@7'^p<E>R_r=<K;F&j(N_3eoG)IoEu?pSil\aT32]?CV"S2!b,nhF%C?Qn[q.Cn`hp17C((D<'3r4+gM_V#2tMM9FA9;?]kdV8R[&uck:g#YMQ*'A5X3Qu]6>m^='He)2Nb]kh4i+1$>$A(4Xl=CIYbN.]qX"lISOL0Z*q$4'h\p!MisLnOhg?IBK[McQuq-m9+)./!FIGrif'0#?1/:Ar-U,7JY`3HJ4;N$AEgA+/NY_Nar987,0"#2hu]3OEJ.Zg-q'jaJsr+\:en)_/,htOO?GQ),PH<Or]9b\8^As]\7(h%^6W\)U>-_A.$lS4R.'B8oU@=#7ZfK9rTIaD#nY[<VDWDp\#BZKOuIYr^f*LKbb(#F#-rQ7fZFZNS?iqC;:<V$A'Qm?&Kj*n^l=m&WhsphLEDB=,q,_*A5lNTSegtM3f#i@[qREfMP"Nb$#XkQE_&&^Lh6uafnd7]n\F"31FJ'^%t[&F]LMM6o3uGi`QGl(m&B$$c?#gC3H9M>]Qo\mfh1,0:MmoYD<-U/C6dN8l`*n<%5?_Y2KN1VT)_Bh0`e%3kM8b=olZRZ\$BP7A]Yc"'62/>jFd(1[CN>M@Ds,pEGZ8\R97;iJu4X>'U+MZPe7\4;,JLu>^BE0K++Bf."Fmf[*W/'Cq]Z/7UA_pg*T&FORl<J\qo^&?Vp2mE]dEaLVNdr*bjd"^O6:8R59@acZd$&:KfT:XC3%?eH?=cq1=W8SZ/7i&sD=(B4E%hOp=*tX'P1i1.p:.\@,kP4EbHH\1/FB>B!s)#&+adi3N<bY6o$11&r*X!VqJVHIl7+J@`[E4!Jn)ON!rfYm9'B0a_0t=S-JQ4D)"j%aO6:5nj(jkmI!-EcDk-9X5UX,Tl.1r^,71\gf"9&7Wr5J8^3UbiRG>2G-WF/.b;_Io(5Wm/&4+1SV,Ge_hF!J-\!g@IgBhZ\Vg/g(Nom!k-W/WDYlm?a]WIVQ:leB&[pJ5i!$WUUcX]B+KA2JbXm3a,L5_mE?e:mr9tNm[1/m^nUKP]:C/1%fLF.DVh-YieIRt$[5e$Z:>;`*2N2b*Ft`sP!0gB$`#S5s&.-__6;VtD^gamLuPT"geAi%T8g.3Oj11GK;ifo5(^P!=du6?<nuMCd<<!%>(iE:].'22#X7[RA:kk#F[VZol\:Pk3,Z08K64[_?o:qQ)oAediK4.cZ3?e7\77!=Iki+N\U:/Nm!77=%78I#?iA9YS;@k0K5r2Fj`8*7Y5fH-A35iZ4jT9mcW/^gq!?Dpe[.\,3*ZCGO0_=WBi\K78,nNl*XpRWAOF@7"t!(IIe;q*A;,H]~>endstream
|
||||
endobj
|
||||
70 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3796
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3277
|
||||
>>
|
||||
stream
|
||||
GauGdCNJ5gnp>i)cHY1)h8V9YU-rX7*QM2Zk@2Jogtp:U4V(4Q&o3A4!QpJh[(lPTi'S,GMPQcNC19O1Fr.cKI3JmZpbC:Uh?)Wk%30k5J76=>'F\3PiT;?nDdND5b/dW;4j=l:F;t(/J_%/4)u&;JDTl2?AlJ$3blS;Zrqr][%O=GJIJ=3\-:Y`\LN)i@:7CG._)YdT8D$(b:9p:(gB!*QRY<TUJB69m$"&RCqJZ&tEWlT/3D%"2&[3[2##5=0+"5L65U6UF7(A`n#U8c+-][F)=i;Hu0JUhdg_DR!bUH+39FbmpRN-&Lc-9=Q+eS:'`>$@qAr7(NN$j7B,:9qkMfkUnRL/"^(/`oi;:!V]QZ7LKA&@?t65Ih+_Vg"A+=J9kJLTVjiR!ZMi*sIFC)0_N'!Op6@?7P*<+e\mQY!speAjS,\?$65\?-1'"!hkP+rVc#ILCel^7@)4rM<3e!O;H`Da7n[LdY,f=X\jYhU?+7-6,h&[r`ZKo<pX)>GJid6p=/djn&TBJD]LN\l4$uFt.:DGYYbH*?e5gOPQm.0J4]-c0-2"I&T_s;5>@?Is2@??f6?mac+(lngT>?&!+Z!nUr*Mb::d3(AAppGL@a]S;90D!tY'nL!g$Yj_RD?<:n9U`1/.'P>])@?5\uhc%;kta.7dl`prs\eRpOkbF+G5q:&>EmNf8<G8+W(?Y<h$L*9G!;Vd&<deVMbP0]pIN9*KC6ZCq-WJnP]o`.8n'LqOdc[[fcC5IJgnFG&QnFlM@CcEKn?<gfd7.DQ0j\h45Wir4&'%uUArQ(8-['%r-GO5<%X>`15l&]9kZ:C]S@X(NZ1oma]JRpe(KO1hpQR)*s[ecLf;;U[0#`U\N;aMOXA.IYci>Hk`iP@A?;KI979N82[.#@`S25aAq,#nGTF<!/+g29Y3*\-96in8l>giR--SB]`DflIKlDTlWpMg(0g1jS!>!.(-XU?^PHl\s0@%Cj%fO"[ZmhnC&$NeX=!;[8E_f,82Af_mQpV9#h_)Q&d''QEf"4qA;$4$6&8"#p!LB)nfhi?(?+nrZ=8([.io5sokmV2<ETc9;5Eh3FnM*WGs4@Pg2s\PO&m&::Hf(46#ul=`Iq*m]UC(DR24oCse;lFnhZ=Ff6-3Cb/u]Y>AFDF_UjhcEEucbk*G&MMOOas>n&H@/#(,2Hn;7*gM;@Db'*R`:rMmi-[h)J^+URVV;Xa&"ab0=`"=OS7-[F&+%$l]0!9@#S%e$"o3lEF6(,jG$TcXP'f1RK;U$$Y44#!or`EO-$D?r?JMe#Bh?Dd5C(-)a'Tmnn_r[-Lu7t-PG2$j[e*O.\k!\8X4h80W.^1"$A3-2E0C"BOAN/^J#tM`q1qZS+?&Wn3?3q.XO?>r)#[5bb(>ga*'&ZE*THF*0,-M7Ls<V:sAt19%+$Be[%NI>Y"5n5jS/<f/D]8,2D>=qOXaUL?ZL9@A+1KoIC%n5M;3k=g^Xri+shAbViUA,@$c'%N!aaJu^@4AfAl2k#V;o_Mba!PB&fa!8LP1n<Qn2l<C;Y7LsR555LUP<U?Vk](lNoDdJJ8jFNP*coEE`B?[8B^6*l()A>M08P$sU9IWrN[Ndc=FB:87Zn^Bt]QHp\SYto((;=pa1:4.G4R-0-)9)mD=VrX++fd8`Mic#TbsLWSkF,h&1HG6d1>siVG3,7u:V.kIh&\!.Bgdq#643f8-GQ8r)jl8\B[/',#UVT`W&O&HX1Er`nAF@MLs_ei".?kU'6p>6^6r?a0o]&c52e]fW6]J#Fta4s?:WWmb\susmXd,`St"E_*PiIXI@;nQ\'_$:#X%PAX?1XLfo3:L95"$l@Y.2,RMBV32kAJGOEFYrA?P\m4]t:T_"%O+r;9/+R!lSZ5l'U,r@@O(O1BaFX?6uQ65Za0IJnM@j(j(NDJ_g"(j)or'0+,^d"/>oi$b55dFna&T22+=>arN+3aqZ^<*k`@@Si.okt]B93F*'!l-Ha<PM+Dih/I*2<(qq&"a^B3-EN/Ubeh/rf>drh2&L"M(!7#/VC4tme48QC[L0r.[OY@4>1A8-I_V<dmHOH]J\R.2=aZoG\o@csNbRR@Bfmj]FXO'C/$G@Y=1R_J)8Une9b*Y.SX^bC3$n60-1E9;`214pCaj<!Dd-dN75qf=KHW5k>EQ-!)kHt$`VYeB0QkS3$IP25KM+O#DF7G?16AWTqnGlr=63G^Ct@_o[T.a=G'CiUF&f3_H;:b5+cBQ0G$njO<[O_t#D-e_CK8<?DV[`uk%[N0b+NZej#fnBEH6GsBHA\1lg(Y"<b1*a9(a\4/lsSSY`R^I9Z?YB5.6KR`7I]/@\es&%nnH<=.5/>`OHa`rkR9'X4WGHh:\)m^/o095p+VH+&2M7qop_d1Y&U)/oMmP<$g/-I_fT&nt*img<N+B(N];+LC.WZ6pe9p!N9nf;(@og/?"A](IYUOTa"T!+Tqk&2\2jOpd;9N_%c]_R>N+b]I_2Z5nksueKU]_9e/O+-f&dt>.9+o]NEOc0[eG.o_Ln^^f9FMA";#T;,U%hSoPdQZ\Gn3jmLl_WNft"OW%_]d0/($bk<"6Rd9c6%_AOmNn$#ebfi[GlZ3ol1,VRGp47Zn#^5ZA[\pT"C9Jk15J2R&(^b,[5<W_>cb<QQn?&S<COU9I*+Ni"_'kWc^)(!clBoN+nUkhOoe_T]R2$QJK"bJDi/DOK]Am70nFKk0$RXu]!]@h*,YO2oD:t&6<7VV)*b'dL#;>$/gPmI0P<oCM_pLM&1UEdF=HQY^PL;Dm09+V>nY[o!CX\lCo!h8W:VMrE6C*<cSl%,t7BjkjRHQS0NpJN6`9O>B)A=g+5tu.WJD$eH<(c$.NBp?k!A]-/q=nIi#1t+j@*7.(`7"7U&9,\fBA)dOhNB*BG%R\-d8_:&,sdomT\c29;=/X4SA3W@e7$)5C11$<4P*2IUXOa'Wp*nJ;^,d)mOlF&T,2J/09u3m*ImS`VTUYmVo][Sn;bXiX,&A:UcS<$5F3iZ3KPiG9&@!PD:&lrjbl*5Q.d#>W`.Y00^-I+F'bW/5Y&4?JYOFPh+4uV<L.H=ABAGT-(>a`.WJ&nMEs]uD=2/KQI^7cZSmUn#*rk5$^sEAXdEqCQKe:Nil/shF0l3apk2*;9gY\1rW6N/I*R>q16T'p8iYrqPeSXlqsWumr$+4jl::8<^H/P-kI83T!S"Y9^dp-L&T*H1c5>c6mF_*^"N)8p$Ta#bNX"Yl+_\M+Y:hlsJK.9'nau\FH7+tTg.&lc&X*s7;cCJ3fbiCmqr0M)RfLI`[f?##6)1UmOG/$H^?2NR2/WR_?/iL;Oh52JC4^6i!V^sEET!+?hX,s9]GBA?q4)1RQEQo50s;tfmo7:P]-4@$U5t#C&Dip0[ZW?R0lMt?CsDP:*ZJZ:<u-_G(k5Al,MrASrZe/Am&f1[K7G7_][,Y;P@bE96F7oq&I*'079ZO60YV5hiLRE'3h)&V7g!m(`/`t\/tG/pK`pEL:AeKK0Q1SIfm/Vdl#asfM$=_rYO$FiUc\4,.9q@S7hR*L4U_!gS7R`sa;IV5o1."eAL.4lfIW-0)#cl_.g3TmB"Xs&3[7O.c"W8'a*otk+%A03V@BEND>>(JrQEnGFg9ro2N+iPc-dfsm+b;ilr<JSS!"9h9[s_h0l>Teb%&t<aTpL@D881d1rI:>CVup]XuZ<0c8FAhQ'FS%O*FpDd4+fP4<DFt3**53D`=2C(=2%.7`$A-I.\!ME\Qa$:)>IT[m['M<SKt5*7Dr;>-@L3LpRnXr]#6=QtE<A4o@\74E0t:09ESm@qGa+]_XisE<Q^~>endstream
|
||||
Gb!;g>Ar7W&q9;QR$S!)dpq2e<r8,Q,i'HI8Xd.p/.`qsA_L1c>:%upYh8ui6es<8OsN0Vmb%_;,*SH=LVoPK)mUqApoS-mh#QC3%-.d2<"3G4:^tNsfge#o^&%7k/UA>4A5,e;!8Fq.7<]/f&"E)X[?@Ad0FL.ppri5^Q9?n-<X"X$SCeIEdFaMO!u`p;i<$Z2R?6#SqZaCa\A$;ah5/TK,dYp%$>_34*aCe!`\a0=_E[f$-T<l5bH$QU;^kfKMrMg=<mP\S-oHuVl/-@k\r;f&0Lcj;,U#=':s2-A@.?IJHn773bE1*sU^T#dnqGV1^=Q&ZBPG-c([#aeP"JC/kt-cZLpN.dpTMQT`(BUnr",&KL%jd"G,g@VfHgGA>t53r+^-^/a-1'S1sFTd6qu*Ge`K?&GHdt.7&gQZDH-!f?:i:=dnLi.h6@Z@$51)@(b.IcR/,>J,s.9eC)0KB*>/_&hbY["0)I&/=!&k)BL)H=nWos#?:"nb&8Wjea>NA$!?4Lpl2eHLiULO7=T^b?#MS$@f$R+`_7c'pE?W0?f)LcX\9HE#VBm\"iZ'3<q@W\*=0etgP%pYB*$P,-@PhpnY.r4k7DFgC6X6M.aTGf<nh.YI?/7fSH*Xm4c7KrlQVM`$Y;Y=mmSiGD@h]b<rBPTYK4@XBbr*QE+h0<-TJa)>CIB=_:\t(Od:;K)M"U(eW@BqD%$N(R>ahm*98SQCZ';B`VFD_-Bpr<Wg\I%,R4J0!V)3:XkEsB*\#&Z@bN&b+2'#PL7]V7o07;LFC78sQndpt76Hd7W)SR3-Gf-/EIiYu-\CbUudZR@KUR0EUMdtK04usOHW#j0jgNA`95gNSQe2(ncE@%Ar,VD!ad@<rMM-h0kM%7*LWp>;X0S]fKYD3Q40)apYfKNJ'TG?:jmG5)=fNVL]FsuA,,k>3'ZA1EcH[K?Od5U>G\RFe+-<>gffLO8a@Chd9]5kEclqnh&*Kljq\g@&lZ%100i-Y'K,gV;&3Hk)eH!iJcU)-;oq;[ouV>:iYLj_f38QaS<s29EE?:e)?2G=k>^Mc?L6H&b'@Ei0bZM:1*G?L,-Dbq>o/%(DF/j4eG<in=>A(cNc[+9h)AV8g#B(+4oe>tOc;qZ[$ZdsY&AV8R\Tp7Z<;pYDmCT8G!j44qq?VoTc4d>?+qrj9@CQa:fZ-<Dp*Ah;&7>H&Lb%XjIl1eST2YZ2O=]/@4jRR/q-`?d3bYqU][ic%VkB@J,'c.!s9u7W>\Uu3U#+:obi%5GbRUd$CRbj9925+s.KWQQq8pkPC(kiCa[":S-QjIO=EmFJ,`?=A7A0DDg;bL+@Esc+ZJM@^#?B`LdO5021\Cr`B'R2`U76u8%gL>=:F8E[l!,fhV9%WJ)2^.d?=F(9#^O0>,9M1^FWo`HX5%<5HeNpG70U6l6EMLL(&6Q59_jT**%'WXa)!#q-H3AFKL<6T9*l/joe02ATgsI%(IiCN:N4N?\7:ECU22i!1@N?hc&^N\1jI(m=Y5>RtfjmgcrCEcRNO\J-@MHC<=X7P"%MC%8$l<doUo\l"4Q]Q4G`m#eo`;KBBu^OJ`1FVAjWB?WYLMI2r[l)t5=NpL!%*;210cLq-f!)OfZn/+MImuJJYSk,OKm,A5@)S&?T6o7<g'6&$BkcHrI+Fk4$X]Ui])e'\BG,:WIP@Z/3J)hPN[c6<0r:k6f/83<.[@'Y-3Qhe\tc(Y5NLeLJ7X>ir;R'(Ai.L&[MN2H-I-4KF@%a`U&_ER1V,M_H)rO(Z@HfJVn8R*4i3IFb@;p(_$5J#(3H/=9DVC4#Elp^nAEZJf(9K-rDW91sO-DN=V_/.#-(V_[OSM*(@8];lnq#ij5_8S7Yl<eNkko3tg=GGE[:<)$8SomC9j%M07RP.3$FJ_\poaVE/O._jT.;67uXFTlTj"PI5AWFLFs.Qp`)Mq%LcW($UNo!pNlJ8^*pt(he:h^5p@e_U<Ae(?Hcc-OEN(+a[T:pSZjtbT?S4midiX<)aKBgNRkN(Kna0_W^L-`-&`U]E$s0gYs46!'qB0IKGip.1c[e#8kN_;rNQV9E5uK!h()E^.VSF3fN;BR!UAQ4Y2HLkP?[emTOiAFVtEm]DQ^]M3Z_&r!9H8FN@>nOSL4D!@<e'K/=Acf,g^$QSQ-#S2:D9mr(DMn9[A53Wa-Q@4"K[@?uB]]6^2$Y2n%O/"GI$JsZ$h%o*Z.^'k?*19s'Kcsn0#o@1]\NPo`%'"cgF^mM_X%q_"d'QA4A)lliAZ&Za."/QnV=gm]W=t^$*/PFNL%YNs7>,tCR99;I$koTq6&0QWJE>l$K7\t.tBtRpKSB"";<rk,%B$YGrX7L_/6[/X24_O,3_#`R.!o3[:7loOuoT+=u-]N\e%rO_^og?m,q6(dS$Z17O"9U;fEft#%ML?KgT)C;nO@+pLBmhM$Vgo#l0i@tn*Ys@sh$4h?dU1ITpF#1>!=:KkU@8*3(7t';K:+F>JH'h/s.['qY:ScWnb+W*=5U,'c.$e1f9_"E_i[p]!(k^?]BUM0;DD#L^TY&f6"jTDcO]CYr7#VGZ`;$PVL*j"Fq`:.#OJ=["5L2OO>c0Ce'DB+4W_SI)RT$q-qlWI(id5S=SA)G!j66%!8lTe&=39Uoc>t0:NVY*D!/bDqLmou[4djk/fTV1:X1s\#hL<HA'u@hj0MU9(LEYj$5@Q3?W?b4`:)\R.@XkG=$Mst?I)A$XXt`@`!Q5Oe<Z6-:NON^(s34H^CGNUqKtBapfpqa-prh)bL8Qfnk/V3]*-"1YG.,q<m>n2Eb"nACj'ld+%<p4^BV0Z-Rc(dN%SgrK`#JGiBK;P`XNgW$I+CR2,nkY]6nW6[EIPdR%l0CAj]lE/r7h*=l?Y'?I.hA.*fW@c@`@kjL^`u+!f`D^M`W@?ffqrpEcg_FC1@_RX6KnMLRXTU\4a/<Au5!kV.,XYO:54fZ]J-DgYjpib),0RX,@q5/a-j,`$l;auLClSQVNt(\ts8DBJ\d;<ZGqD2@XF_gK@F-TZO.0\X/3i.[S.O,^XhT^"Kka63b^WhNH56nt;`_0O0cFQ`hY""I#DgpN/N*56UKp\tiNq%XH51%_XLo4/bnP6H6W8riZYY0#AmfAC".!mgU3P/C'hm^T1Nn+X$_9-r-M"hQt.!VlIlKo)S1?1Zj'Ua&M0ic<@aD2s?jilUC"G8[2/=Y:qK!H33K.-/q(2fSI3!j<^mrBC(0MQnY!5IDP;*:i6e-Q@0f2_`,b5?`@#0;o@r01nXGq&n!CeHanJVq&O,EW)EUD4r?')t<,WbkNp=~>endstream
|
||||
endobj
|
||||
71 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3237
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3387
|
||||
>>
|
||||
stream
|
||||
Gb"/)D/\/g')nJ00jbD][qf-r]=OW_9sU*SR\Yep_Z9c>>,#kNoi=Y-@iXpOhb\7"AA(%GmN$7$g4Ue51E;Q6cU3kGL`_fZDg;=)B/%"E5U;^KJ1-!NZYR(<SU<XFGtUR@1d_umcuiV*AQ-Eo=H+=m.>nb)Gp#\koCPpQbDW`.KP1[i\cCnEFG$^9quis:KB"U/q@7+e_!EGOmk]E]FD?u3Q9#D)<TVkbCZiShdSYhuMeb;c@hDu%>i)(ZSde7&#&^[#IMe_W<D'*;]8P;cLch+ObeBhaD)$VV7OXr"58W)j[,K/'=QHdk;ROtHX]kZOWENV,lNignn9>iZ$h=$q#geF7l\EN)j2H[Kn@X/VBcP%2$i"+cj$g$oG7q*2-t,;c1gG`u7Hdb,f]Y^pOE@4<-giq?$sZ1g"\mOiqX5e`BLoEYK-6YPW#HjeG>f[?bs$;,2&'j6&s5#<&/cYrMk<fks5Zl_\Z(FIMGp2I47Au']lI,$Y6hB$6#pPEWDc5<Bsb?cP3tsLoQ3Al#FeTq6g`YBfj`//R-?^s,V3b;quiobe4&s7\[OeB=gSO%78k<9cLZ:s2aP=?Rc+/$I)i]X8=(4r<N='__GoB;(T#Dq*h_9iC#.YFb:E-YVn66ABCOb!,5^9X?LE#b@;i&n.Uqja@G2Ac9CMV$6`PLn2Iq8bd#X?c6d-DHU$+mY<su#gf)$<Qr2&F<+%u]n2Cs1FWQ1Yi*M*0\//[g$o8BgNNZ:9f:JMT-;12P'%,2R7`d.o9b)-$++"Q&I;_S='bc&I'_$^*/^LmqfYO#CpDabFYj1/f2!,LJ(#OZ0Le-fOt:[>1&R>BI90<j%\.r<p^ZW!)D9c)fr_t?nd,&)#46_P3<XHW9<H+\kt:*s_JPEi_C@k2T:,bB%g-csMflq'aCA327=Qj%3,pf*&NFcW^nRjP5[R:Aa5m9%Sn%rt%$(Z3/fUSXR82LN4Df9o,cg*.<o=No#ZJa6`sW&TUA%>oYUIt*soL86=LJbnj4hbF`]r?reO[mLj3EoA1D&GNpU.pn4HG'bg0`?;nKX2%V1TiZR(3t7"9p+!:G<$46UX2%V15q4odTnB:a2OdrM=X\-N74juE?<n?;lHa;i?UKo.,+Y^ndp3&E(=]u_4iV)A^E=FWGoG3ro0=*#Z=*6sg^cl_+0mGQ=aQRBTtkl]^ORDj$jE^Iop75lb9RGGQis9HIc,1?8oYD^aAr%I's95a+Y*T-;V0kh&:QU\WZEND@jXe'a>mlr$rNuC:g</H9U[N!mMtUG"F<>hE()-q2mC"Vrpmj=J`e<BZbWUP@$?Z>C!N;0<5;3Cmg#Q!s4U6g(D]a[-i(C`)O)W]c'2GaLh[i>K9;DN&9pUI!kT\9'jO=q`'#t@>Y/"C3K6Lgi(AmS/%:r?oZ2G0&^oaF]],Ga:@&,Ncq9HI5ngZdA1,lHO!ZHY3&\0l>0"`q75sT?[N*P:iW$hEoQY+@FHJ]"lc@ufF;lk.1-JS#\%*(bG%07=S)7W6d!D4Lda4D"aRjg9rE&?gQi@gf^R[e5KCH%Mm+st(,;9u+m3lpi[!okZ`W7_SrH'oDI$aB0]M^6Sds?km,Uq=AY1G=W";5E>'Pq`WF#6csInFS48\-h%&\.5NG9*:X*r,]mp86_EUD`uHaA&OLIIb-CFcUs]^W(**>^d:l3<;HU?t&bba12d9;8S%nj@/PIU\6m/;MN#sZ<]86gCo2_J$/oH70SG=]a?;2Mp`lmb[uj(:_n'b>%*djFMSZJet-?-.YsPENme\0/fTbn_572CbZ[M3Z3=boX<+h]1U/-e4_9&0\3FJ<l4KFdQ23;AH%]G%s-32qaa-LPW$KmG.UkaX`H]Ls0YT,Q6];tHY"'jr=muk&NQ^Op!Vq&KoR"#4q$>hk`1gV#4X;$Aa3N+/MnIt/?H;R<:+mK5ZLMm`R:b5:N:mcu]T/&C(I/ft)]ZcF6]d"hT>K,a$oEO*"8$+SA+[PJ-33Yh*fIU`mh42b*K'A.k"ZPaSg4Z[mJ\Zqm]rC>=U>=A]DU-7`5n$=p50%OS@?uNFM<b?5fk8#+O,T^.jnc.'.;#L(MO9nhqrh"rjR%tF9L6@^eBdF_CY^LFS<_S\=&q"=Q/W7$ChrB^>3&Dq_BQraiM%J&.091:gbY?X!Dk*Qe4$rllXkN4"+K;TR^0G8<lOi8NRP0(u6#p7[C0GVUPqRAA\tS]Ku!<YuEe4R752iZLj1Xd.7gc&%EjMFKJM&pl8HU>Af:ki?sDKC:0mfpsXJ'b9?chW@^'DJAD9H&H^b.diWD?]71mOs-7DnerpirGkDblD#T_9][4,X%a]:pA/_;4]4>8=Len!W%qO%]:KlMsAguXeiL$QlB"Na>I!9!+`R/&CK9)q?IQct+ElGH`h_t!2O$&d9ZOHUn2tnsD49%lNrXlj$Cg:gq=YN?YoWKhI8NQElZ\,&GZ<9(&8Q%9?!ImPFbWoibMGLSM+H+8,=ME^p6l5T>pMe\q6<\dLdmu_#?GnZ5dYcglqYA./a+H?PKf8oKpbAZL"(!+/QMi+AJ90Fa=^"!V(bPV,Wrm)pSEM$1fIh+q]HCVrRN8DV\JjtC?p+8GS<JSE3T*"Hc9OU[Pru_Ke%$Sk0cg1dnEY<,mXdEdUpjF/8j70+B:.9:^`%7:4eC@SFRHGnZ0.-fI*SpDSrc.n&%D]`X`KT!`Y6P%//7Z=m!_`i(Om+n$oTBkH,u!(n$C^'6Zs4?Z2IhW_1R[))UI)g77bL,P77K6!An]8OIsl.#[O34MqnO/@r^YUE@GHP`Y-KseE*:GES;AEZ+*@CR+$9l2Oo0(P2f=.?++Mqhg[,rDLO07RaCt9,-Pm\i'c#t;_gop^`f^1.!^HZqgWYU>,$B`jZ<;lC<g;/B!"k?1,`5ck38C>a<0d)9<\99h[4ahKuodpmM=sNA9Xf42=Q6N<tC=`.X$sUNroZ;-#P4"TTD]BfjHAn,6D,gM1Z2Ij*AF8PDE&=eC8R=;1Bs6_4Q63L7s)'Qm^q0T@e7T*]`4]3%*l*?[me6oc2SW;$K6>\`99i^-02G5:S+c9Or%1npgH13q.2[j4Ck'W'4J%3WBcO@JY"#[ch04\2M"_#>IBH7=>^0+2N#=ZI?P]?Z;>s"SHo@$1cj2b^@"ArUCq@=Q9TYa*NY:"6iede9u?1^VVPhZ3[R.:JEf"6oJMVhW-knl+6e+Gk:_P0EZt/_H4+Yp6=MN&,aDdV=R=C@LS3/5pLm0$%<%A^r_'+706CT~>endstream
|
||||
Gb!#^qet61&cUU9`PBG-p>n^49e,BBn2ifZYp.:Y!P:&:j@\-n09_W;oo[#&Z_U,h'I@bL"R,[LD!p?Dlo28WZSPQG`ZHN(^Z,EdNhC`uJ>0no%#Q\%0_tngUP%_3AMMW?-!=.TYZ(f+kik&YlfCA$j<26(Q4:FQP>jt.Tqc94;],O\+SAF]Z?<,G?;*,6VF`;JL:RVmf%Z%>4lWt2Y$mK`Z%PI[6s:Ihl5GR!Qr_L;FbWe/")%C%J0(>41nZIZWKY2`"Kk7)GR"h?IH%Ni#oqqukqS.2_<=u"Wiu3(I%@::Osumt]N*VjWe$k%U4"$^%GW@B6&OZKbb7>N6>Z0.ac`ntE*X'p4)oZa5T2i6!,f"!rWjS`EdrSO>C,hK.9iWMD,IrR_La_V]]bqn^c3YST*B"]$?0_?Kl_3#BD3mohn%'Sd";Uuofr.g"3/S4nPKaW3&-?>h/\FgBq*mm$S\sq2@<CB[:!&MpU`!pi0&B6JGf`Pp[(5O<D,7bW;doD*T5H!b_sU$k767!+Z>Q+NOP5bA[f>+/sjgBU3SkIoh#HQ'clM].inCaFJ-COFPp*FJPVO@r3tlTk?I2dVn>AsHTAK=k42q(gXhl8F@.g#6e9(OCrruIbY9u+ODRQp%!\qS$#)gs.5Lr%.8uVY'il^tNe[1[`[m[qc]lGo/fSa4T@(-oI(36X$\AqG(JP3(,b=KXMB7rcc<T(:7AXs8cRPb-(2cCTfYq>HNS.i/irkoXs5s<*:"Cb_E3XdQKjYn?OA&5>aeMA2nSpGfINBdW!+!iPrtbTs9g:Do?U!Bcl%^_T&BCJ9![4.A,Xm7<^I(8cRikTGVf4`mPdFVp0(lTrMD@o6kc[jW.%CTD/U64"<?`,WJe:SG.bqoe-IK2S:qA7CNA"St?`EYsM,*PWmpX',69bir<8mlO9ER+C+c9FDbm@]Z3p"E2PU/#\,b;o]"bXC_(;g(!O"'AB-YZ3/5)IAc:SaAkHl_$9>V,nrbf)nu2"ndf#;%*Qd<Y9I,J\dub2&a8_/T,3L[NCHNgl!JU$&-t7hZ/!`2#E`]u,?$:/gTk;%K9jbfKT/:7@ori=qoX.T.#d8UZ26GGn)P9$nR;DSd_$g+o)T(@oP:`q@aUh4]j,EJq^ZrM4q6RJUsQ]t,':+4j"%GDCnUAH^T_=5qIOs$:WoUJLQfk1u^[!Cf-K03;_l;]fQ+*Ej)W72:I(PI'qkgNSF]"P#m;*LqTs66_EN[l5ap-hS@j]>G[.0cEV]*ggNO<FN&)-0TIMMQGEoOLJs^VXmj%`b=4D1q&j4#ZcrH][^mfkg`dQCpb0cm94;6,oS^q/>7c5Fe;ReGr0s&s*Ps2[]12`86U0m!6I"GSusUt#kH91LOu[TO/iL%FU)q_f`Sb[ijOHnHqi@HgO+!F_/6o`mD*SQ\?.OAGYK]DACiY\b;E!kHD6PTT/M"%<4?D5-1-?-	uWXuPpM(HP>KhAl.PQDD]KdGG'',g#t'rJ&r'QE80iO,Mk]oS]IsO0<bHK;TJ+(bN*<rZ3*][SVZ;nG1&\[TmSTT@P&Zh+b48kV,*[G7uKe]]DmiO=CaOSPr`.`RB!O.LpcV+jb*r`GmgU5forak]TG7ZWI!@7`@YD60$;4\8A[+P#u_NmDOnFf/Dfi8n,b*Mtm-],Qp&16HQ5ek]U"Go7#h><lIA>%Xpm)Z3?l[T\K8VcTlA38kV@e61[b(D2Z(\Nnn15Mh>n[<BNK\[tq8A6*Go\9GRs!T97V\IY7V/^GWKVY(XWR@>kTk2udCIGQkG*_KJ@&Z\1TQ8-AdWXRrMo_"cGr&\n_U2qr<K6oVl?Y@NLO>rh:7281'_S/\X5n_8H!$QmPE]WtVNn?M2oRsLn9TDkIHlAD>!VT27V+-n0/-f(-fR]bfX_#)<1U46ZR?ILI)-S+?!A?VjJP&-T#bl_LY*$C[[ep-n/1;UZAduIS&&A%)*?GL-/'3!c#V%-VMT\?hb1s<*b4+*Ss562O-i5skH4E"QP'F/&McP;N$n=LPsid!EJ?_$6N"cTZPhrfi5(ER3<KM`6S^;UFQCXWX;7(+a6Om;Ldr-WMh=b=GCX,Bh\p.X+-URq@7UHdql"J#*GTA:B64AcRZrb*'os%ZM]2gEQp^CLY4H<DYmJsh?)`Uj<oK]a54kE$<@U+m$&&-dD+_^u34aV0T<!lp3#C^eBE3$.+Fdk\Np9.9;*EJnA>C06r6E4>C<$,1nmZ$1r2(j\"pM+(%L[bC3-=#_`XSqd>8,>KHJ1f\a3O7`h4I4&[(52%0bMc^AIdOeJ55AiiCDXP7QZo(2hcm1q9.#]&:gq(`ma,QD(!lpe@'Xn0ak8g2QT3hi9pr%ALZFJom0td>1Aj)Tn^N0"TopjtIr<*8tj?.#!)X2tN1$*QUqJu2mg4L'aJi.``#3[r4O,0,S3a69`EOe=5JGs@Yj1N[&n9o<lP;.sAc-$T'3,)<U;cR=W`>\&1b`XgTJJVMn]E@[@8Ub#fKt*>)OsBD_N'Dnk&3-BHYlqO3QTXgJ*OFfULQB:tmCXiaeu]ed)h>K-mNIPq$B!-jA&!*<s,<+o?F(N.d=<$5W>%3JAe)$jWt9a$rE2#pQci:H%uiK*OnJ[<BWWlKncH,)Gg'f9(>5M'Cu@ZST@_>s5.!s,epUE,Mu?hO5gm;[emd$!:Z#N3p=c7e;&:[bP)"=.YArC?'Mk+MMWc"N801L:GbfHtbG'!C,<\$=-7.,%(9d`.Dg5mL*T6b42g6Y(l?Qs'>Q3;u?3P/_KWXXFrn\P,rUW[TD\4UtOb7neVUT:N:;]?W91lc+OZS#:S2&@WqX-]hnn0D?2jae6K\i71i,som`XqO&n;j+1pnAF^a10MA7b`/B`S).[mUcI2l4fb]'>o7?__-ZfXda;qhjW4aIg(mAMY$B5V77n#L2gEKV/PUFi9,?FR>jl8-OXqh$KNphTpaKZ_9IPO4)rthfs694^U<XqEe%bg"%7cTSX7ZNJprNr=qM9;GspCR.TM\6k*PL:`dg8!coEG7L$UA60sDe;W;$:)b%$dY]_[n(FOekV`M)%.Jeh3^PLr='(o'5.]#`Fg-l&5`l^1/LNepi?G4j6th%_#"Mk<J.7*&!:n+qDV1X!G83%A*(Mk%"*m`fOoVXQ#E4A8=-X4qf?qY$qe/t<unBi4P&oqj;dF0o8YIB:udF+pbCs(JJ$YpM#MhsD2OT6*YR^h&iV2\)6CP4SeLcSpeUb*/p>2J#B^Mkm^6%GNXWAQE"0;bMRJg6Ou=:35=".%[FXSa7\7nLoLN@Ge<Sb6iYL58>Y2RT4U>;D4@QD8%\8=%_FtgO*N#K9XhK1MEqe^eD)#!%](Xo7+1<%=(?O-'MqSbM:iE[SBi3VV'&c1hYI`mcFZ,U-$])_81U%`g9Vd~>endstream
|
||||
endobj
|
||||
72 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3539
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1434
|
||||
>>
|
||||
stream
|
||||
Gb!#^D0+IA&cV3*Z/a,PSBI>[42n#I)8@N/8RfZ)4.WW<*_:r0`"YdqP\p*\[s(,q'LbkEU#nC!hjk2XG_gckYup?j!u6<mo`*r3_!)DVQPsNu$n%^9M@%2HE%sJ"3m^nPmCo;5RK\`9i#f+Ye'_Rm_l!_?%^L11/Q^=Wh1fFa!)?tno7>oTWm`o#qKk*AE9eifi*qa0/rm!#Uo)SuOHmUV.^-Q4/PakP$-P-3Ji0&Q?N[fIrm?Q]B)s::,7WT)'AO[<PKer6s5jb!^VfPRnVV8[Z[RmOk_cLrqn,X%XIZR"k^?UH@*4(&\@h$r?GM5Xl'qrL$u`tWOWQ3l$chX4aM1_jO9(>8&oI,XE#Z"a<uoUa%1nR\Mj!dVbJ1#jh0K;[]aQe-'B44D<u1PfIDl8K/E7Z8hseDL#>/?I9M:$'n*:Jh3;"TR81Mii^$W]H4t&=SG[<4aDKYQ]>!0e:p#FF#PWH%6G@7K$JcFjQ\=6,3fZH6sh9C`g.ju=:2gqa2C0HMN[o=%>RAi0+jp6"n#8j>4Y6I*h84Si)G"i^d5H"/J"oYuhi95nZ;pLQf]2SsNLsc;on:c1)0o(*]G9@0BpsG$c7$<tjE&@&t0O?4jD.:1<h'c;W]sqhrEfY6331EYlO3qMJY3t1`X`_X\@TdabGVBFa`Z)>OsgNYYR_=n!9C#BUquK3S+L3rR,tIsR/NG9/+'R#K'BNZj?0-OBk0rY5K,]blkuT"sadkI?_WWo=r/'kR.:H%1MT9bU4aHHq.VQ\j(2"bn:O/9)2!:81ngU21&FbM&;#nZPsgs%K?c[Wet8H_m@"D^k5VCT7CR-P185$?Le8QH[9U1Li.5-qP2EG$r[=qtX]N)K:SFS<G4lhLKRN_lma^S&s'i6t+','<s+\/e^Hs)5AK'0KdZgI0B>k:qJg='Y%;)k+T9RKc;A&8a(NbQdGp;&i!rhk5O>s2Q,e`LT#t]KJRXtMN_XcEB%OT:_a9EK=EtY\2uM]32L;J]GIngJ@8,e\:o=9UqAbB]K7ri<PmbbJ3Fiu9$R<Hf_]VB]RNj#D;?49$=)UDj`I"XmiSgLR/RJ[1E:kHNj\<cD$@XZ_r0hc5`J5V$^0ctkO-\o?n4^V5!:p\IXD+_Ycg=f8:Cs0?Z.&f-L0ot'(TaZL3n..U(O/_`5V9@(3eo."u.\a=4.^$+9*3]Y:(Q@C/gSGSsgB`Z_pjk;nEg]WN_mUmFNPl'p`X-3jhc\Q)El4W8/#nJei6'I7bRI)YUcBks/,C\mZJL(hooTMIYnRWN@C?[5F3!crKNHbDN.)+M6>K^aMSiY&3QW>CR==^o`[p>B&nH!h0VM`r3l<2"&s7idOUCA`KjVm.@rhDP`D[Zk'/rO?/&to"_/P3.@ZNG6Eg_4B'3<hB(;sEU&<n"ha`?92k4"(Q5K]QUb='?Z4m1:G"[_3bUn[4X'soTF,u&o8C@?>Z,U7ef@P)Vcb)5-9^JFM3USK\=r#[b(DTng/hkUN-7tX5u00;C1gKeGIISeN66c21MT"WG\0%4nt;hPZ(5!Bpt\tI&1\:F9WVgJipG#L'u\7Ik4*RUX7FoT/YQQP*jh>8q(/,ncDj"j\*MoriRi]WH-g.ejn">@O4&VUH-kp+G2$Hob@>bKqspE)XNG0;q]-k3C!]YlKTfD^q=dG->/.l29&,js6s%gpa=tVfK<,#-%D78VG-G7TbVUKibL6GU-HEd`'ek*E3s;e9_"BV@4`)cgiu;-1[4Ob:-+_\1lSI@.+E<l(G@@iA_CKuD$_)DXhUG1]fZH;F2I>[a<o/COn59M"rc^qV9f"TS'-n9O2$rqIpN=5ZR[F24rh>PLn'&on[\:42B(&Fe)RcNA[dEK(J8<73aJOS!OhI8[EUS^jA""cu*kJ@an5qg8<'5&slE/ZgHs-,XB[70<9'AAA(1?&LhFDsC=j7Wc@8b>b:O)YYN)]>[\f"bCAb?4cYep3@,doiQ/J8>a%.IQ7"M/C8OoS4P=TD0qY4ptCP;>`C"<Ms#(fo7[/p?p7b^@7S+1#\`:ARu75/-i;U0I?id=V8q9G7@A(o?KSLR8F^XHZW"9L=OpI7=_*BgMP-&i,LrB>G;!+KK$tGl].=A5QOgGh.C>!#^QscU8e\a=])S$6j3>+ka$mNElb@Y'bYU]/-h4d&3j/X:jO#r"76gIi.F@-'Jb,)!DV##rZCR&Hq/4!rA@Ap2sQ5JQ7P]"`Zkc#N5ep)A.?-G,=..OqVr"g<oXRH"0M4CDo\k3/%[6^/m1P-XKFH$c`1_UM0D?>9;)srqYqb<11\5Lf\f2heoU2G*0hrpXc.MX[P@0++`A4>:+/+mohoQUAS=42q-0l3*ZSjq`YG84kq+k58?3o1ek+-^Nkm#CI3;Id#*P"5B&Bo-1nM>Jfdb"<8VdjgL%5:2A(j,$0NG2.M?WLpl*/+DYZEMZ?^:![rKP4_/KY!U$o<)G=mpT`6RHqIa$`F0M[Y#[4ZKhgAV:aDomEkn#F4E_=?XF$a(cIlcigh#.uEM-)e'T)Zu#I;W.GrEM[_R>a@'`3cktR;"n%cZR*iW"f/I!CsKI?Z;-DD^^!W,[`u9BZpu=kHe*MDrE>aWP,pds7;,u_?\A;/U!HRPM(".7=WO\HmWaIV8OXj"MFW_'iuXdta"+DCmg5eF0g8Oq=VXSoH,Z[?$fMTbTG!ak38Nk&#uOh(fr(q,f7aO]h-^-K())>l9;&I#$<#%J?Yh/K=sgR00SDu:mih6K�="^#%Ok84(^)U1K<uLf!7$q),h/:hG[*?ASA7.17D]_oW$?HGjJ50;c9AUV_0YYcCC4#s'frQQj.Q\>3st(<:5C46WkU'IGd]cY/2_!Y8FpE[?!*hB<A7@A`&tnSJ=<?\"*PB:<QU*S_8q@)J1'@bV7Hn[@_QlN+Fs%$6I79i3:1'D+X9W/="8.72VrX"mu"WIJWo19Tlj!hEg0Bl))CA-*,_$ubTqAg5eDAS&#(V5p?!Lkf<m$(?AA;Rc#*-7lkI1A![XdoI,_CWiWFQ.p>a'RB+I\S\N->NJa=?J>Bc.]dNSXQr>Un^I;/X_=$&W/g02K8N^@4)ohS;D[i009:JQ&o:QLbHmZGTRH&El;^1P1hXkVGOB9+hdFal#!9`?#1)ulqOm12Y,Z9TSp.kSr]s/;"<J(V3[VNiH".I7&%L*&@g',`k-_NJcU)+ocK\<KhB]M&gmO@@eK,r0S;M60hI>@ON6uX34]>,@q?rq45<6\CG^7]^S@ke9#MN/2OKLfT2&%uj#'2H/$)TVLAJe)XT8Tl^0oFmtR&$?K(,tm_UM:qI9R-$fje\k'$3lbmgl$MZDP&YP=H'mhS72Yb^i%6a'TC46dij&hT9?p'."16*bG1Xs\:^F&$ae5LSFC+h;45K^YTaP(aNtu8ErXM1qGfoQZ7n^McqDC-0/>n50buUI1/Y*nSAk#M"ClFA6b[^[3!t\Ahd9$=7"/CK2A=S@a8C0:E(>Ai"QXHrVqlKAg=_kQPeIdf8>ob<rcr;&aRkq`Xn0PYEJA4@]Vg&>]TMr$H"f85&#d[LOo~>endstream
|
||||
endobj
|
||||
73 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 771
|
||||
>>
|
||||
stream
|
||||
Gat=(D,8n?&H88.E?@83NR(@iA:,;[9q.MpBs^Z,a@k?dO<tON^sAXDUhpkc&<kX6kBlVWh^\c9#ODD3"`TX?d5M2=ON[`Ri^7_rB8QBH@>ja[,,0Va&B9<T+bnRn]@mXK"CWn?dBh',FiHrPaU4-@ms4:UEZSqCWWe?YjkRYD]M.coV;[06&12&)+dE3n<+W)Z%*AW86#pV?XY4<M.b'AjY?JdT4>0D5Q:L*,93+\G3<<:,+=jkIj7tH3@$ERm@SnAn[=J^mm_f8R2-"\TikHB=OV=A%Ob*QlqHa@;>lkjY_Ip:3N?86(VjT(O.PDTj%hTDI*!6J/mJIM60ck9V4;Kc4J:mr]IC-@f@BFc^h\Qr\9Y_K*<!qamQI26=@\:&\=J5u!RtNXZ8+rrM3&&*maX3NanQk3[K%Sb;-ISj/-nu9dL,Al?hJ;d@8BY^@d'ruLES@9F4m&oXCV\p,fODVa&A&DiAR\?P)"IPUI@P_QFI/c331FOJO\RB?8%9R0dFI$V5]"KJEt?aCZW$W-PNu`5Ek9Jem$)-\B87V]-9L"qEhq/XXlLXQ^&.mAdU`1kN7@U+W8p<X$/@eLCe*_QEW*8Z4-)c\oE0dGp\ML7=46\P:fb1gYYkt[>!]dpoUfp1_fZOfC$]5M'NSr_)"=D_c>G.Km5PhT7@\ZS[-F^.7:fOPMO4ol.M9]h[".n:21*$<f2\gn?P`BVTt^/#n>o=VdEK"N5%53T'o9?sG$X4=3\)_U$<7\eY3oT'_#"M.$[hU~>endstream
|
||||
Gau0CgN&cS&:N/3oV6Hs0JhMEV`;+Dg"J%8[/8o6f*Fit(]c]@?iGMDWt>BSBPU8+i21kHd!^X4%0MJP<rVQ)!6u@Q>r#e-(+Wbs0jsMV>V'LebZGm"3J?\A"Ih.D__lC9kq.@!4c;&9EPO86_ATi@KQBs&<Zbtm[A`I0d(e.i/8JqH%^'4[JW"LMMeJLfL=?OaA\S)/CiuuL.`:Z]elE5]Cu,0I@f?3srr@tLYkV<ch;I`2N\R"_=?`fqKt7B+=FjM)[#iP@0L*/L5Oh^9jA=iOQUV]Ff:IZDStDX_..K\>,['@b*akRT6&r!$9r)L#A_Q@3ELdc$>0#]NIdo@EK'TI7Cu)=P61LlncC4L65*me)NH,;7\@]KM<bGb-5<f<)M-$D)5S=0*Zb1R>H1i/'j%ffT3LNq.0Wg);&%0Qe#Q$AQ<UqEojqa\1WJ#T:X!cq$[]'Pi&+_K3&!Jq8X7sta7'0?)_u4s3=,AD*$TDdAs'ZE[\itBMo.V9AR*<T^EJa`Vn[Dh%FBD//Uk1^SPV!"/0[$mKp*?F?ZLrO2RHaO\LRBBeQHJ`=U_b>F$>@,*L<1uOJ%p^h85q3O9h@QKd`WdFYocQ&_5ETS@(V*(+q@tKpb@E9IN54oHB-Y:%WcVXl)M3<o>GC/6pC=Kk]QA@q&TM6S.UP2L<6*<^&;e;9R&2?Nl%Y+i!Ac?7]UpUrRPZ<FS@t9De$_)4K<MDJQCerD=0C1C)eY4*=#c5KAgcHSrM_9>,0o1F13?oE48=&ed\B(HJrb$g3qF[a=rJ4Qk\)63lJI0.<'n?QKo)g#P:uQ@u6=67Z2&Ycd&[kh'K*AQ70S1`=_d;U2B[U%1l@Hj)l3RTM#24<%-&<TN#[qjV*466M\m;1;)g6O=NF-U%bD2H<tI?]Pd-9F#&%s4)(,$d.a>Ql&C0hRlPE*\Zi\+1R#U5HnEr*9%KaJdYs-^gY%?YL[1fI6nd^\+L]BtK+3in9HP/XEUi[@YRp&B&K3gfEZF.e`kck5+l?uT,+%=Ad^0:fWI"d9XaD%*9%502^k4`i[\C*`r;L]hf\>_I\fdp+3hb+2@u%*A*ISp7XjMS0*L*ICHop(;h!04R\S:F@WR^rfHGp)-IX?rb/k_odC^u$;K$PRJH1:WHDY4(A&YJ%JoaaS^*b;11MsM&,8u)Iha=Ii\GbhW..aI;Y8\u)'LIpDk4dYU6*kH,tZhH>a'\Gue?e_UEU`L\TdeY$qD7pSs@?H<*<G\DY\kcsYR&2XZdX-cOq!E`biQKuM/#HTlr#CW7!5u&-(WYK!l1V'YNX0a'o539ec?E[#=*>Qs2%FGR*=#cU4I^XcFt(asd/rU_Wb<pU[kVXlW;`5<,Kt3$;'@\88ut)3OT+fXolmHU+>;kBZ'JaC1(!&DE(O$+EQT];(jjUOOPbieP`Yg>:F"*_"`)<8`W~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 74
|
||||
0 73
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000146 00000 n
|
||||
@@ -451,53 +446,52 @@ xref
|
||||
0000004894 00000 n
|
||||
0000004972 00000 n
|
||||
0000005121 00000 n
|
||||
0000005270 00000 n
|
||||
0000005530 00000 n
|
||||
0000005736 00000 n
|
||||
0000005942 00000 n
|
||||
0000006148 00000 n
|
||||
0000006354 00000 n
|
||||
0000006441 00000 n
|
||||
0000006763 00000 n
|
||||
0000006838 00000 n
|
||||
0000006940 00000 n
|
||||
0000007061 00000 n
|
||||
0000007222 00000 n
|
||||
0000007320 00000 n
|
||||
0000007425 00000 n
|
||||
0000007552 00000 n
|
||||
0000007662 00000 n
|
||||
0000007813 00000 n
|
||||
0000007926 00000 n
|
||||
0000008041 00000 n
|
||||
0000008169 00000 n
|
||||
0000008291 00000 n
|
||||
0000008399 00000 n
|
||||
0000008517 00000 n
|
||||
0000008623 00000 n
|
||||
0000008735 00000 n
|
||||
0000008862 00000 n
|
||||
0000008970 00000 n
|
||||
0000009090 00000 n
|
||||
0000009224 00000 n
|
||||
0000009343 00000 n
|
||||
0000009438 00000 n
|
||||
0000009534 00000 n
|
||||
0000010671 00000 n
|
||||
0000014579 00000 n
|
||||
0000018467 00000 n
|
||||
0000021796 00000 n
|
||||
0000025427 00000 n
|
||||
0000005374 00000 n
|
||||
0000005580 00000 n
|
||||
0000005786 00000 n
|
||||
0000005992 00000 n
|
||||
0000006198 00000 n
|
||||
0000006285 00000 n
|
||||
0000006607 00000 n
|
||||
0000006682 00000 n
|
||||
0000006784 00000 n
|
||||
0000006905 00000 n
|
||||
0000007066 00000 n
|
||||
0000007164 00000 n
|
||||
0000007269 00000 n
|
||||
0000007396 00000 n
|
||||
0000007506 00000 n
|
||||
0000007657 00000 n
|
||||
0000007770 00000 n
|
||||
0000007885 00000 n
|
||||
0000008013 00000 n
|
||||
0000008135 00000 n
|
||||
0000008243 00000 n
|
||||
0000008361 00000 n
|
||||
0000008467 00000 n
|
||||
0000008579 00000 n
|
||||
0000008706 00000 n
|
||||
0000008814 00000 n
|
||||
0000008934 00000 n
|
||||
0000009068 00000 n
|
||||
0000009187 00000 n
|
||||
0000009282 00000 n
|
||||
0000009378 00000 n
|
||||
0000010515 00000 n
|
||||
0000014412 00000 n
|
||||
0000018406 00000 n
|
||||
0000021775 00000 n
|
||||
0000025254 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<84821a2348f034264701e135e5d978bf><84821a2348f034264701e135e5d978bf>]
|
||||
[<8557445e7e830ad30d1d409ce95f518e><8557445e7e830ad30d1d409ce95f518e>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 43 0 R
|
||||
/Root 42 0 R
|
||||
/Size 74
|
||||
/Info 42 0 R
|
||||
/Root 41 0 R
|
||||
/Size 73
|
||||
>>
|
||||
startxref
|
||||
26289
|
||||
26780
|
||||
%%EOF
|
||||
|
||||
Reference in New Issue
Block a user