From 0003dde367a2d725dc18f84371e564473b17c94b Mon Sep 17 00:00:00 2001 From: Tim Hobson Date: Wed, 24 Apr 2024 16:59:20 +0100 Subject: [PATCH 1/5] Add [package] section in Cargo.toml for workspace --- Cargo.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 6c747ed0..9e366836 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,3 +1,13 @@ +[package] +name = "trustchain" +version = "0.2.0" +authors = ["Trustchain Devs"] +license = "MIT OR Apache-2.0" +description = "Trustchain decentralised PKI reference implementation." +homepage = "https://alan-turing-institute.github.io/trustchain/" +repository = "https://github.com/alan-turing-institute/trustchain/" +keywords = ["pki", "did", "vc", "vp"] + [workspace] members = [ "trustchain-core", From 1a20856fd25ca04c1f966d044c256312f579df16 Mon Sep 17 00:00:00 2001 From: Sam Greenbury Date: Fri, 26 Apr 2024 14:30:41 +0100 Subject: [PATCH 2/5] Add trustchain workspace lib with re-exports, add and revise doc comments --- Cargo.toml | 8 ++++++++ src/lib.rs | 7 +++++++ trustchain-api/src/api.rs | 5 +++-- trustchain-api/src/lib.rs | 1 + trustchain-core/Cargo.toml | 3 +-- trustchain-core/src/lib.rs | 2 +- trustchain-ffi/Cargo.toml | 2 +- trustchain-ffi/src/lib.rs | 1 + trustchain-http/src/lib.rs | 1 + trustchain-ion/Cargo.toml | 2 +- trustchain-ion/src/lib.rs | 2 +- 11 files changed, 26 insertions(+), 8 deletions(-) create mode 100644 src/lib.rs diff --git a/Cargo.toml b/Cargo.toml index 9e366836..dbb5db5d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,7 @@ description = "Trustchain decentralised PKI reference implementation." homepage = "https://alan-turing-institute.github.io/trustchain/" repository = "https://github.com/alan-turing-institute/trustchain/" keywords = ["pki", "did", "vc", "vp"] +edition = "2021" [workspace] members = [ @@ -18,3 +19,10 @@ members = [ "trustchain-ffi" ] resolver = "2" + +[dependencies] +trustchain-api = { path = "./trustchain-api", version = "0.1.0"} +trustchain-core = { path = "./trustchain-core", version = "0.2.0"} +trustchain-ffi = { path = "./trustchain-ffi", version = "0.1.0"} +trustchain-http = { path = "./trustchain-http", version = "0.1.0"} +trustchain-ion = { path = "./trustchain-ion", version = "0.2.0"} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 00000000..d2f4749f --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,7 @@ +//! Trustchain reference implementation. + +pub use trustchain_api as api; +pub use trustchain_core as core; +pub use trustchain_ffi as ffi; +pub use trustchain_http as http; +pub use trustchain_ion as ion; diff --git a/trustchain-api/src/api.rs b/trustchain-api/src/api.rs index 31e87b9d..caabaed0 100644 --- a/trustchain-api/src/api.rs +++ b/trustchain-api/src/api.rs @@ -23,7 +23,7 @@ use trustchain_ion::{ attest::attest_operation, attestor::IONAttestor, create::create_operation, trustchain_resolver, }; -/// API for Trustchain CLI DID functionality. +/// API for Trustchain DID functionality. #[async_trait] pub trait TrustchainDIDAPI { /// Creates a controlled DID from a passed document state, writing the associated create @@ -79,7 +79,7 @@ pub trait TrustchainDIDAPI { // } } -/// API for Trustchain CLI VC functionality. +/// API for Trustchain VC functionality. #[async_trait] pub trait TrustchainVCAPI { /// Signs a credential. @@ -135,6 +135,7 @@ pub trait TrustchainVCAPI { } } +/// API for Trustchain VP functionality. #[async_trait] pub trait TrustchainVPAPI { /// Signs a presentation constructing a verifiable presentation. diff --git a/trustchain-api/src/lib.rs b/trustchain-api/src/lib.rs index 9c144be2..3c5ae76d 100644 --- a/trustchain-api/src/lib.rs +++ b/trustchain-api/src/lib.rs @@ -1,3 +1,4 @@ +//! API for DID, VC and VP functionality. pub mod api; use crate::api::{TrustchainDIDAPI, TrustchainVCAPI, TrustchainVPAPI}; diff --git a/trustchain-core/Cargo.toml b/trustchain-core/Cargo.toml index caa60d76..806c6df4 100644 --- a/trustchain-core/Cargo.toml +++ b/trustchain-core/Cargo.toml @@ -1,10 +1,9 @@ [package] name = "trustchain-core" -version = "0.1.0" +version = "0.2.0" authors = ["Trustchain Devs"] edition = "2021" - [dependencies] ps_sig = { git = "https://github.com/alan-turing-institute/RSS.git", rev = "ec9386e125d87c5f54898b34fbe0883b3b36ffd4" } diff --git a/trustchain-core/src/lib.rs b/trustchain-core/src/lib.rs index 7fa44522..e0069bc1 100644 --- a/trustchain-core/src/lib.rs +++ b/trustchain-core/src/lib.rs @@ -1,4 +1,4 @@ -//! Trustchain library. +//! Core traits and logic (data layer independent). pub mod attestor; pub mod chain; pub mod commitment; diff --git a/trustchain-ffi/Cargo.toml b/trustchain-ffi/Cargo.toml index 6e886cb0..42a0e667 100644 --- a/trustchain-ffi/Cargo.toml +++ b/trustchain-ffi/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Trustchain Devs"] edition = "2021" [lib] -crate-type = ["cdylib", "staticlib"] +crate-type = ["cdylib", "staticlib", "lib"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/trustchain-ffi/src/lib.rs b/trustchain-ffi/src/lib.rs index 183a549f..b027b22d 100644 --- a/trustchain-ffi/src/lib.rs +++ b/trustchain-ffi/src/lib.rs @@ -1,3 +1,4 @@ +//! FFI bindings for flutter/dart. pub mod config; // pub mod gui; pub mod mobile; diff --git a/trustchain-http/src/lib.rs b/trustchain-http/src/lib.rs index 4ee02c65..1bd435d5 100644 --- a/trustchain-http/src/lib.rs +++ b/trustchain-http/src/lib.rs @@ -1,3 +1,4 @@ +//! HTTP server functionality. pub mod config; #[cfg(test)] pub(crate) mod data; diff --git a/trustchain-ion/Cargo.toml b/trustchain-ion/Cargo.toml index 26ef8d7d..7b1597b5 100644 --- a/trustchain-ion/Cargo.toml +++ b/trustchain-ion/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "trustchain-ion" -version = "0.1.0" +version = "0.2.0" authors = ["Trustchain Devs"] edition = "2021" diff --git a/trustchain-ion/src/lib.rs b/trustchain-ion/src/lib.rs index 65ea8fa2..948e55cd 100644 --- a/trustchain-ion/src/lib.rs +++ b/trustchain-ion/src/lib.rs @@ -1,4 +1,4 @@ -//! Trustchain library for ION DID method. +//! Trustchain implementation for [ION](https://identity.foundation/ion/) DID method. pub mod attest; pub mod attestor; pub mod commitment; From 2d9758f7a26329e0ee737716358a742a56e1f305 Mon Sep 17 00:00:00 2001 From: Sam Greenbury Date: Sat, 4 May 2024 17:22:26 +0100 Subject: [PATCH 3/5] Add module doc comments for trustchain-http crate --- trustchain-http/src/config.rs | 1 + trustchain-http/src/data.rs | 1 + trustchain-http/src/errors.rs | 2 ++ trustchain-http/src/ion.rs | 1 + trustchain-http/src/issuer.rs | 1 + trustchain-http/src/lib.rs | 2 +- trustchain-http/src/qrcode.rs | 1 + trustchain-http/src/resolver.rs | 1 + trustchain-http/src/root.rs | 1 + trustchain-http/src/server.rs | 5 ++++- trustchain-http/src/state.rs | 4 +++- trustchain-http/src/static_handlers.rs | 1 + trustchain-http/src/store.rs | 2 ++ trustchain-http/src/verifier.rs | 1 + 14 files changed, 21 insertions(+), 3 deletions(-) diff --git a/trustchain-http/src/config.rs b/trustchain-http/src/config.rs index 3d3a5d55..c13379ca 100644 --- a/trustchain-http/src/config.rs +++ b/trustchain-http/src/config.rs @@ -1,3 +1,4 @@ +//! Trustchain HTTP configuration types and utilities. use lazy_static::lazy_static; use serde::{Deserialize, Serialize}; use std::fs; diff --git a/trustchain-http/src/data.rs b/trustchain-http/src/data.rs index c59f4f3d..f2a11a7b 100644 --- a/trustchain-http/src/data.rs +++ b/trustchain-http/src/data.rs @@ -1,3 +1,4 @@ +//! Test fixtures. pub(crate) const TEST_ROOT_PLUS_2_RESOLVED: &str = r##"{"@context":"https://w3id.org/did-resolution/v1","didDocument":{"@context":["https://www.w3.org/ns/did/v1",{"@base":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q"}],"id":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","controller":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A","verificationMethod":[{"id":"#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","type":"JsonWebSignature2020","controller":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","publicKeyJwk":{"kty":"EC","crv":"secp256k1","x":"0nnR-pz2EZGfb7E1qfuHhnDR824HhBioxz4E-EBMnM4","y":"rWqDVJ3h16RT1N-Us7H7xRxvbC0UlMMQQgxmXOXd4bY"}},{"id":"#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA","type":"JsonWebSignature2020","controller":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","publicKeyJwk":{"kty":"OKP","crv":"RSSKey2023","x":"EyGvw3AkcUf2TZToBh6pddeaaocmvTuLCSLun_yYJpL7x0W3gVEzeKlj06J5Sej9Duk0W_yGhbOKCahOx16LszwTHVgnH9FjRk0nwOer4yKaKnjTZ2FlZsYI0OI__jhCGP9cbcOEd-1rfvUFu-ghsj6oHfSXDBm0Ekplkgs1IktoicuMsF-bD7I6tZRpP9tqFGqARUqvR2daQN-scwYUNsv5ap3XakBCDvOCBc_rPAwzapY_nuC3L6x60UGBAPtUBANdaMhAU0gxd-3JMjcSjFgwzAhw5Eorr7bIp1_od6OfBRYu3sIkij5Es6RDBLghUAx2Z3dznniJRh5Xlx_8zn4SYw_xhV1X04vY5U4O7-7veKMqKxzzoGOR7O137gSTtBk66ISXfE0k6LLsZK0Qkzi0B6YQ0Xo86d-COFNhRWQ_Lq3SCSiOaJ4lFP5_RVlHzgUXm6XY1X0jrkVPWdT42VxGjFvy_KX9f50dOkdPJTax8bGv1nEpDm-55UN8nrIzsRODaxMBooRL1y4OxyW1tpHaEdsoHvsZrLzM5g7FB2ah-62TCGkPcG3Yx84MPp50eRPIlj2omMFxMpnAZKBSRMGtk35A6xAZUI6KTYGfNI-IuWKdk0UOn6xL8W3EwMTxRgx1v7iklbgxKuCBoOeAK7FhoOVzL5YnUCHb1NUwAxDs9I5pNmrvaXsDDLKLIoz50hRAdnK92whifFoWoJOOJbQTb9sx43zmB1J7G_T28MG6UetI4dZljoNfWpXePl3vNwW979nNg7GU3N_V8ZE_slRmUv-rAw9jD0w9KXVCuZuwGIKoJ2Co8qjZxnhZUtmi3wFJin73V5BC684ebh40fnA9z-H1Kwa3ItX_mQSVYeMV-_1fydNULsdhlEnpwI5XNQ25LGqMNb4v-YRBXLSmN5CituV9rPXg5ZzQvy8VVE9qxWnicCxz2TzFrxFOOIhNTxf-YQT5Re5HJAvdy7Y9szo-i_PgskFdVm4UxMgH9ddrFUhDPNmVtVY8PoXlMzuU6gKR-1np9J6FBttHOIPu7LFFdO0Vd_Y3-Dl5mdBXFcP1Do1GN7ojcuRUB4rmB__upRAQQsqCApGurtGP1zgtMQm6ozF0gt_JpoXgvZEFK5kkm92vpedrSfDPBBn5NPIgmQgKSYfvmWRmADyr2J9bc6EjJr1-YD7QR1r2g_eGRBE1S6dexWceWTq-RktXQYOSJBnKLSkbqJniuoA70BMkjU4Jsj1EJB7oxE41RRMchA4BRlClSi31ga0T_bk31rNTLQNLGSrBrh0x2nlG8IZUZLB4fIKKweFD9pL1qhLMM-SQl3YR4-v2wxjlMXTrEDjz2xdwJsQhhzM5trtqhVdxfgBwB_ZBtU9KJqYvkB_3BhY3kYQSGDLhyCHbjyIVYl7saQGkTz_owGfj8tD3gU9oJlZHDyjf4p9AObfF4YXKjVBpPrPgwgNd-G4LAgUOn4DAVwGmGBjQaNWiLet4g4lRsLS3LkM1az1w_KyYCX_k9bptp4qLgwV6HqbLx1V5WkmubxLMpHlbV0tZFLzwThEaKpqNyz7M5qIyDvaSbTFtQ9feXhRHU7VN1MgH2AQmQzHiygXHs5qafdGSsKoMm6c_6R2-NXl3asM1TSUmD82yKonGYhSHHy60KvB4M2rVTKRENxR93u7gaYr_4cqFY9LlcqGUMzxmm6TadfSHz3rSj53C8c3Z3U9x9ftbKGOZeybdWhYbRGyES_HzmlXV5MFY5qHiE6INi_ao7Xxm8VRi5rdaHlVDWfBb8gJENbUHDDcsKQfae-4j_vXmvq4s_9L5It5kVLCT9f5NEf7jsxSP3mg9hqgwdY96ob73GsHO3HRoQARhPUt-2o7i1JzScqRH38AeDr9XnxC2Qu4LT6ffOmMKzA3qngyxKmkvyKmIl3_eEhDxpdTSf2ba6EGOD2GuzvGv2a_P9QHw52mvtEoCLNJAslzsxwxbLSnLIOkbJca1Ew26womAjSgnNwUvPCkz4lmSNTbyF63wvmNJJeD0UgkBTb2MxDw_39ukWvH0mOSJegpmENWzMhvKvxxMgB5Y1VY6Hq06V9mcg4iD0AdI-dM646yU8iLfMAAkB-EvwUUMXRE3KGU9Kx6dqhsSCrow4QDpzk0B4FCATLwawfGc1_rxQyumhF9nagl8jP1ITcLi-hlUyrOsKfSK_s3WKTw4j9iBoBWCzHrX1YC_2UTnq5XIdbY9tT4NajRzqwKLV3aYWRnqXLg_-l5k0H2GmwmRnm4ZqU-9YuAy8MQR5CM93H1gxE7oL_IWIyH_tCXrVH4hRhjd7GrWcA90s1AFpCHhBZs72ORxG_Rh8VcJpB5cTpbQfk1ESme0-UTXoSnuLPfNIQb6I6fwFkIvBx9YL7gxaVmjHMgk9BLR89iwuo3VsEsAs4ktbFfZ70l821y6q_xmOBPF-BxJzlVuHMq9hfyYVA-1ka8tBBeEy8NJ1PlYBMiVjHoKWMfqDKo0ONNv1Il_ThirUq-MM4pc0ENOqwCYkomNBFfFHdbS8L1Y5yIruufFxRbRPt6xC1TnDtq3K7JCpRjsTqv_1_u81WA4UIlW49NaruM-2lPlL6P7rWtBqG4axy6U9WYqom7aXBW0cbg31hY39xZb49G_SfSYewGr_pelurFdTag1R3ZL5VuDTggqErrppxKIBYHQP7M_reJ8fQf4JcXOmMkUOap1K7QJvvENxlQ_RQRj10d-t9spgDv5gki7uMDSA3fp4q4gf3HxZhYwPaImQ9J44zCCLUdo5dyhHsyd9neEeBniNZk5LDZRfX66ERlj49CO2dHmHLe-YQACZnMQDDug7LF0il3QHinPD-nedAAxpjfUus9Ay9vRx6nB3fHr-_9C76qx_NjCehMZHlsAOgZGU-yjdwY2uu8lvnb8dvmCbkIBYn4S_aWJ0qIOEjfWuADwWO9BXI5uzQZ0EhKuhALABMhOIi4pmnHqCE0Durvn9RaPiFz6ZKFhW2d85ZAkks_-ARI0phaKzggmB4E6k5EV3cLqkI63Oiiq21QY0VCvc0LuNoAVYzG8s4bx3udSSORrRJm2fOdURg3wtPlFq21m_7y8D09xKpHkXgEbuDJV3hWk52u0Rxv1MTY2V2_LkHIDF6my-MZLQQh0dQYnUjDfvQ3bTqj6UE4MZ07R6UZzl3Vjw53lM2x4gI17Trma17Ag6Yg6XiQA7QqgXKWy3jG6AuBLjuYRPeYo18lJm00D1D_Z_C--D6zMJKr5ohYrTi4ea_dh3CI82xBNwjeTAd95r6X0wzC3xodd7FSWJMCgt0MF6pz-MEL_jNi6sK9mIn05U4icLZLjBwl2lObaoiYxpyWEpnuMGy8J7dM1Z_aRpYt3J-Zw7i3Yf4JI2JV9u1Mo-ywQyXgRcRBhK3emrFT2fxH8SqkKwJCWn7frvbukOzSQiKD8RFuXA-SWK60mJ3erCRnka-xkGg3AiBxxeE8Prk8EGzLcB1UDRGQ_x1PXmMNtdBK65dtv1b0jGTM_uSHFndWXOrFALwi66JGyIca2WnCfQRQDR5EPyD2d2Naecbj_jMwFUsbYCxGTc76n46c1pI_QH1rxDBQ7j1Tj_rcQz6Bk7DMTNnlTFhJn2h7yVnoRPenlNCWZWZPRpr4vnvS6Ii30os5W2QaGHI_TqhhaXRFU8Z7K4PUUUVEv6u3KIZpvcuVxAbcx-ppLVkj-r2vM061Nx9aXEBFd2whV1Tw2rjf-6fm10N7U3ssLGC6sfHRpSVcsENk-ZjuYH7sY-zmN7Hf8zOYHIAZDUr1rjCgG2yCujbdOPFtPs4QKC_cFSzbpOjRmJ-urzi7duH_vH3_TBhMzM4jowgM70l1LoB9sjQ68wzlaAs74T04IroWMULoZOdaeIS54ugR79EhgqvukrIDLEoCekAY7jAs-iNW14YRPrtdul8zVUjLd4I_X3efx-IX7HvR4RUp-6lqMSN46IfvlScl0qBY_SBgCpdEw66SRo1OAIAuTy7VWX_mbvLtgZPPMkaVheFwYwBZnBLKQKyJHrNrKRQ5GdrSnJP89jdh-o6VEqG_whEec3cB1LwXipXb6v1vi-7jxU4kpU_BTMtEChb21tRhmfKGiQxHbOTRJbHVoQJ4NFlS14bTYAEuJm6yXnIW-GOVCLvlHShp5jeWc_9vvvBZnk4C7bDxY80GxadNmsKy_-AcEFN_QI9pt6lckDeTOQxgVz6Anz58RIkvJ1oPL8A5FZOl4iYuQGDAqTP6Yo-SdHbuVOuV3aM9K3L6RMgj5Z9z517O3oqsmthQdy5xtxhalD2bjV4fNsQrsXIGuNa4nAnFtfsi0uN4ahR1_YYVuQgfEQLOGSzJnw-bQ7m8tOxlDOP4MsXg6BFSBvo0LPwieTdNbZR_N4FueA59bt73HfANTd-xz6ycnZNRNO9DbxBRwXJnQogguwZQdLLLuZjqoglKwi3gmMHvCR-3QngZYQw46vAkTUuYfdG0OgaYuAAqtsEvJRaBVSud7q6pgMqM5UbG9eWv20h-bMQeBEpIuVG08HOEc9TeUzDOoE87PzBkfBqVu_s1tyItQQ-DqSvfCQBobT1pYeVsuyJSGXuaF5MXooxYfRpsAuysjWDKDNxAarmMCpioPCo5ebD0elYa6S1KV52RN15vaAZLPqNRiFkek3oy_M8C9Fi2nLzXG1Bjn_JlKzni0I3pofwFNE2ZJnoLSVpLwVLQUzzCB5GoS5P5C1DcPDxpjAr7e8pWb0QAyyIuz1EvSssczBargovo8iNxthV_MgoN4UGY3RtkDRyw2DPcFdji7AYXw_q3xlxXsWEZMfjTlkG0FfwSTHbhrL-BIXXw1u88y-w5SvjBBwk2wW0SjPVgm-qq8yonWXhnVfu4xRLMY7qNRltkzyB5pQ44rJ0iFr6tXtKus3rUTx2PbQOPNCYJynCWQnA8anAlOiTmIJV8G-MYkP3hH3g-VZSnWE8gQhbvXy9OY4YtyqX96TXRGuHNuZBDEHiPmNAvKkfgVdGE1xrxPnfZ5eN2RQWXAf5a8xgISY1bXxlt1prbFSiHTMLnikDpYNy95JBQnPEqdIYRhgzh29L_RQpIM2ItE6rPrJCl-NL0Mo3YZNdFepgL-5uOjFilpmO_EfAc06pm5sP-g6S3vOx8I9j4JrOnhygXvZx4Mr2D8-R_7s2F5QOYKCpcYmhKSqaPbdAX-q6oNQQ3fesRtmDJIVbBmioMmu5k3C8hh_L2RNAe6ItXT7XVCo-QFQ8fiUIOMWASrYHiy8qsbX4kKQJ98v070GnqCMpKVtB9522SHxJWv4h6Kpsmadh9WjAmzItl4tRV763mNcLeidWzlJFUcfZIVm9OrWbHinBUjKFnoeexpecTm2ncrzpUkMmJghWKv9hUzk6wGkQhsps-94GvQJT2ou4T5xLpeATQ3oenwez9tEwxQ07tB7FHEiIBpA4PFExNwdv8sxaEe2Zaoakh1iEjIbd4uBcEAd_E8eE3VSEPvB2_zT8nek2I9pcHEIHA52Q2_j979f-vAyJci99RN1Va8nvk3TyMz_g6OCknUZcqkhXK3lqigvhkUBl-IxjWqagdTwPfwGPtwV3JT71CZDfBWujVMLPGB_gT_dhsWlIN-sC_yiWL_thQrkgKFPqXPwQKCyz8r_iv4f8NnJIh3W6_hUURFsnu0NpVAlhi7iOU-B0cqk1NHN9BgNbT_zU2aVBEFBrlQetG5pyxxgyDSvrz-igEzZ9oqa7-EIgNv8P-0T0IUrlCIQSfPsiAUsbExwg5JwdgdQ_gD9HUt4U2Npk03XtaAySY1IXJCXeJLp0OIcc8hFeaiPMMv7Caif9RsIxjwnikwLFGtpNy70Ed6CkTMtxBR4uShDzbSz7Hk90gu5-jV5WGysOA9AbW24iqgfgCKjrjgfrod_MNG939PdD9KOV0x3MqbZJmBLB7jKCINC2ilgH3Ez4crHFZJEkuJ_Qq-KDXW7l7hjHUG_debtAu6qI1edYP09UkgmQtnZgLcGAWUhDxWhdf4XYOHfqXxfhiVu8tF-ly7iqWkmRCqhRGV5NmzUWuwvQ8-Jlh4kRa7nhpwb7ivyXiDubq85_tKuha0qKFzzz8gFuiefICHX_Uy3xM8m6Gy3KfYirumMAkuB5-IY7Dgr6IZK8YXGLZb3QEXmOjuwp8Rmm-bMnCXehgCJZplNtcWi7eQxsP4y0IoEUsmmC5Y1as1sAs8-R9XlxBfP3hdGWbOupZfS6FmMRiGD9HoWesUSVtRs_tgOUPPVav2HRIK2CLYBRwgI1NaeRcpnO8cOye4UgRm_UF36pi3hJPfIdCnhxGeOH5J0r9zYEnTDs18YsIQedQOJ9jvGBLvDi8dJ3NRzof0hk9riVtSPV7H2EKhkEL67E5pccehsmZnha0ewYbZdgEstjzjwQ6qkZRmFLOBdP11yCDzgs3eDmnk0Ztewl22-WhhpumCfNgux5OEtcSu6hcC_gtsXQgTm4QV09fFZJAH8tyfFildcaycx0w6zG_tT47jBYIwVyEI-Mvv08qYw3ZN6558VgacYehFWake3ahdjDxZ8bO_tBtLMrFXmjRpibEIYbWZW2OPgBv-4-Z_EPXtLrDpJxYjD8bUxNgxwyqxAlyqZe0FUQVo1RTWV9hzvj4GcOG7wC-_t9aEEv5h9hg3sQXBxwKwIulPSsJlAeW3dygypohfIMKiUdjDERwhgvPsvB_vsJIaVpN3SJVfNWvMEFAIRxl0o0b4upYbISICcxav7YjxARlPcV_nqG6Lnj9-6MtHOzvmwMWpcM0Y_FFro9TqKAj8TkAiGaEMYyJ8Z5EMAsGd32HwMhmdeJbA9TxNpC8CIpeNlU0H9JeSDR3bl76oGAPDIc7bDmfKjcCL_8rZamAaZucmCI4Fkkjaqyl_k0TOHrxrc8EcYzbICfu2Xp9j5Bl_w7GErvNIbMsbJejezsJxt6CR71oex_OaL_DyxGJE6bOaWZFwF3WqhVWMoMEuRwy4Z11DIsqZ2pbxyArURVFG3mIHnBJ7ffjxYbofuuuw9Ce3S0W9AwEvXRlquPr3-wLesE-Y09JL2x63dPrsfx88itwaKSyGuJyvqpTu8NwpAR8d0bU6nXG38O2ysH6-xwvDGoeApjhGaTD71tv5hYcJj1X2M-GeWFi74NjG-PYBkamWVPk8v2uimVuB402YMgUAe5RtZcKVUfHczIcj7IWreTJr8JCLl4N_X48ji2KDuBuuaBRBUYdjkl8ltWE-AQzatqUi3DF2ZDEjEarQrk8K6QDaHNbMAEQwqxIcKVB7rX6pwR4EA2xN2VYmCskYAReAbKYyzbFKgx-_kbylwjO1CMcDTdhKYHnfEznxeaxzjwopfWQR5JQ_y_4OExcY6gh_FHXXyMOQdyzdcNMPFOZDvKAf4PiXg6BV6VVbvlssgImhEbhyfKlwhmbHkrD90BVSZOfwp0m_zd_xOfwSYckSwo8ef1K6DILkCmiUSc9wiCBBGHF8ex_0u3nepPICWg30NqJPii7moRYlXNi2hKgTB2Cy1njuP9pNFSD-8cOxrrAoAz6SaxdS4QqxjykSaRko3FibccYcSE_fkx7_WWBSW_1GOKTqQltkzHWMqTbu3wEjBAbnQjYGEWn8aTNzsAh1pezmZurCOdi9uL-cjIVavKPn23HhHGfS88f3pRdohcdlszyc74acnD6VgT0VnArfeYPNBWcliVDnCE3qYSvter4l5Fe4rH1qDISEq2ni1-uxNRJx6Ck3-5bWSZxHAgvc_2gC2O5qc9TU-akXvNSqLmNtKmO2FGFtBltwgyLc8bVWAJrNxuWQVCUxXlfSkxaGXtN18lGJX-SvmRn5IsqfhUitHzJjEASiI_YOVY9OoGEkK1a532FFGdO00mS07BQCPV0w_gldLncCOgt8VPaB5d5SjOF0_whIcVAIY95y5MrZEJWcbES4zg_jdGb5SRLlr9PENPbne9VYK4_ju-MCFNo0uWibQJzJcpaKU2rZ9sAsT2goR_lu-aLGCdeimhRmual5ISX_tyMRikPCDidsweqUeRzPcriSIRDKLcQfzA3P9Lt_Mo0ql-l1EX7TcwLgCsISBJ39jyhHyPvNPbBAFAlrlF9uRhz_ATonpUwgZrQHSlpsy6Mzh-O8f57HKQTRT0VigvfIeC3J1TR4EzLkHUdC7QF4JNlprKFQl-HUh9VIOpwXfQ7VwhbxUw-MThAn8fnFAKqd8S-4S76Yn4Ns3B0FA0wlDWp9AvfCSlm50bQHUgj8FEtwz8279OoIhBEIMnA_rHNwA1gPMSAl8aU4RO4L9wTbhwVEs32i77O1pQS93ZeNwOwXXoquAAVFZwusOXz2C3jxzKzB6IdrA9LE7-ALHDvmxB-y9KUe-RgCfFgjh9EE7rdwftpCOMj30we1IOtQ1XyFSwpbIK-y6e6itkyx73nB8UicYQEQHDnl2UPtxm3TLUe5bx_E0sisng5ZV2ISypN4_CiyoAbUPCapdHnGLh5VJtaPPq0NGIVA88MkPxnJC_dTfsZKzNVDywA36U6dGzcSH16QoTfJ-ZcUJhHAKJHizKtLpdxpNKlSugnNW0P0XwgrRYAehBBqJAWrmDc2vll-f5KYy6AFEWfIub9SODwuu3j3yfdoVAjpi6Tvm_e_w18ZBYKjtRrAAg38eTrwQwdDDovzBO6t7xmJkqOxsCFl0tz0WB7YxhVMfhC6qv0ojnXM4XrhX482Ew0yMUB9Ql2_2d7u9-aM7VztBqRf9dtPj0Fc1WdfiMD1d72U2D5NukpfdO0k74QL4xFcEWgq0qAPT1Xd35HaQhe9KfUYx0d7KtbBb1BrpQ3zZWS_ThLtfTHOvGZRQH9bQQyFkx7r9Lnal_GmnKw_w-Y5ecOTXwxvtB_XQNOo2i02MTPLpYHXMCWCFB6kHee4fhJVL4yQnaac8WOYkNDZeHf7y15M6Ezs0ieyusNjY-nfeAuXS1kJ_lf-qI-1xCpx4wmOy-W4Y4Xbr5YWS8Pe17115uh3ZGN9n88HuWj_fzZ0BcrgsT4p5LvSm9lntyD3oQ8pX17phhk3xqItrnJYAq8MfnLgifMDl6XucGJj1rhsvVGfr_ccjSHxohBb0HWL6g16xEvKsXnQe-PHn8Djtpc9doxqWWC1QeFnjIFJ38TnZd2v6S9irKu2D-YTw_9TvgRZTHMLgHH7pdFo2P_-mrKP74-OvYkn0O4aUVAZ6-bCXKIZ4ZzFgt-aO6l6vyUUfhcVrQKcnRdrZ4_GYfiRdxlBL1rvcZAkVpH-iitAdQ4N0xFHFL3MO3MH_EepQXLXSgciWBbbc9lzJnd4GkCRT-uH1SKKtquXZIO28ERVLB5yD9xkl6-ch9qTYNnNcBDNSAJQeFBwCHB5xZoyuYfN9p5v40vfSDAoJU9A_3_kaYMyUBVaxQWnKjZrrA5hWy2fjRUnVpeX7PDyAyb6eZDt7dKlkWGQxvhDXRFeN9yjohquhDj9OSS0JlHsPLobIYEPThAwpAYAEH9aspydpQDzH5LdB8aSUzTmFvdt87KW_OjCX2bAvPUj7a8bhfrITHuCUwOl_hNSIaxUX9EuHEifvRKi_KnQRZvkTyN6Ji93jcr1wYk2FOjZEVdUfC_lI-xzuQDSVWUUl6URvL2tfzx5FxqScbNiq3xnIqLrNONk-p4hi1QvPbgiYvXevv6-KgoCOBN5b7E0KUoVcBh8GBPzCeP2EZwA6C9k8u55Ul0Y6dohgm5HS8NQfXCSTt7QQgchGBOyOP96JR_uRbyLPJ18KaFr9QTxkQrxpuks_tWBdd9QD7GN2MU26S9veV2mrWHNXBiKY7NNZjYSkfNyzvjsg3VCwvxU9kzvkozJ_hQnkOnEmlI8bu34cFvYy1Ms4X5fLwaFLMmG3SnAIwBsCz3HxzKU05NBHikuB3B79BGskfQK_Fe-rkahNqJgG2ya6xgeIBivC2iuCuVjM1xcVN3jM0VuwQOCIVwjPpyDgWwjm5rpjX7LfEzwjyXynX5OR8PVugx7bAFwv0UNcbkBNLadJmL5hZfeXHzgPM5u8M1_PEpwxRddCDLbmbY-Y1naQwfaKRQp_c6KwJtT3IzkOJlaYsUlEeoLQKfQI-OFr7Jy6N9-tP3x_0OpecilN6J7UQLOTQEIeygISrIiIkSQgL8m7YCl7cRejrq3kF9UutkU2OIJFseVIFtIKZL92vc3WSxj6A8NkX-yqQ9LCFljVw_acJ9tUT7tNyOF7mFKBQJPa92WpaOGgzq4OCV2nJs4GFYjXgw7uE2NjQ2i9_auhXryGm3uD3G29NjUQ6Lkingi5trDZLCzoFKtQ_-2tWnf6sC4HBlShllmYDfCCorSX3Qc9WvEwxLbRvNX0CgPCEoxIKHAE9UzN9sfWZLD6BCXAtERDgNqc458B3xIrpXpk-hmIe-Res9HtuS43LqebcFiHjjKKiBuUEBCSxSEYQPYdEII9QMsBsp9IoCOKL7y6m5EgCfQzA7hiWLlE_Xrppv625MGLzebKWzu8CP1mOPWTp4FYwaXl6sm0rgbAoR5XtNLcBazT83ji0Qhc39dVR0nFyvdSe9L-EFw6dbYUPPbQDh0hQVzwnXZYFi4wgX8iFfyvfj1cAGrQNfx2yekQfLm-vhGK_sIlCRVZf2bjS6rwAbVIhhPFuTsQ5EaYCc3QbvJg-slvxMGfr3gpUkMV24EE0dCemwKRyRyf9zH-oswETPMyAFTQmlx715Ao-RESnFuc1Ebl13oTofrWpye9ZaqqsGko3Cimdifa716i5Gkq2FJNQRRRrp979uFgzdwm2AL3Wa_5I1t4aHY0hFNXzKU5u7gNmtiTDyLSOIWLGfd44msxBYFSE9YqSdU-7KpEtOLQRppx3FR1TQooT35XW13oPp37k91Uv2j8wLJPAid7msh1AUWmpGiq9vhair7EUlZhnjNIEvhlTr6sIwFzsJPRl9Dy838w_UqVXhKcA2wJpTCjgRWXL8R8b6L7Qs2v0H554fmrK3qcTm1BgmPf6d0aeO9wsgj_cSO2gI6HgI4zL6PUQTsMTzhIY8pN8MW1jPWVa89yWjGjaanxKT6WyzdkCGj6NcG3Yh5UoKGeehwa_5FQwggBfzXYMIAK3swXYvK1bVz_68c3eLtW96nYc1mnOw0QmcuQ7ajBPpwPVqQwH1iLRS3nEWbxznVbgvcdHS1Sv8LcVU8htWp9JheVP2OCiGQPFFScImnsLDC5WZxJNohrxFO6HHJ_6T3py6zz491E_zWqb0B89YapQO7LKc_D3pU7_3-ug2A-BmtjReN5-I0QAaNX86gN5o-LNW8yl7DmVU8rDBHQBV7vZ4uijVQhDvpifKk5mqhztr7B82gamJD6gUucjs6nA9V8i9496A3dTMHdtEjeEIE5zkvtbLe44WyaDxa5KiwZikk137DL-hp9w5b2-ZjwrGqcNJrYwpTQAjHigL12EWMHKEnPEsSXqmYujeWGfB2M9_VDmSgf3J-XAZroxarSzyVuead1XNLHtLqQgT0Prh-PS1lDJ8jH5y4_JzNS6lN78BaEi-rBl-hyhXqi7ZEzGEyZVB-H9rkmCE1jnuQsHj_iWUkZFeE5wJRemTSNTxF_GqZrFTkTD68qxdtMg7nWns8pXHaqDxpWAFaONRj8JdfPCeJhQ3W9qIdugEHXFlYYtZLEuXAlBGkHQQlnL2XeZ5aYE7xDC2JYQRJBj8c5fYfusrnqBgsz4EIO5ewfwmX-OAJg2d9Pm0UVxGrXtTW1H277sVslv-2FcU32cZwwls4YthQ6fyoIVLzJTyMOYJUrpFW32r5tG425wn_Q8ezmTs90EKuVrvVo8w92JL6MDKA-orDvhvQ3beb9l7Sgc5yy9cb90rjD-lyQBgcDfJ0xHFnhjnz4S8t0yga42xeRI3r_mXd0NvRzTUHkedNMtRAdU-W382jaFGRBxXL_4YziKyewh_nGh6BlW9EQ83Qf0oSwb43IN4k6GmK6KKvwr_KiERaBougue7YpwtYyqCrEoMiEEMn-Sog4CeLzg6IuYx4awivB7VYGGGwU6Bwc2IkZkKUFxVhJK63cAwQX5Gcve_j_-WcRRGlUhI9W4RvFhQFpl0YfC3cLUzRQZfV_fWH2MIwrJm6y4VCHhnvx8O87qetR0kM7el6lY4Nrk5bNtCdBeoyy_C1sz--DjsmM-z9i9IR8PqMCZcX3gBry0Sn_js4Ka0cXPsKpM-GpR6L0CLxge1FdKNDSFUOacsiEzh3-LTu-rUUYglWzQShuc8_dtZrIEvVocirTKZ3gaImQ1M1EylwXITBxzCUW19Io1X1mxKiFpXKHtzK7AvEs0kdicMBNl1HsKSn8OH3jxwLSHI4DwFIGYBxCQ0vvG3NN5ZZ_c4OnSfQ-nojlgmeCjMGykcA9E__NgeddsOdWxnG3fVQFIiMzoJ1AtYnxHoPRbtVZdyWB3dX1L9AKxlFep77w6KS48z70KzKseRnKLa6OCPZwfXgP5kEKA7FcKwpwIaMPNxCOedtULYeDhclbLeDtjK8LA2q7a8elVyK6YRvseXaZ4-nnd7iLYLZNOv807ZLaYGm51X7aFt0YRTimfsQIGztdkY9aakmyH_XQkqPmlNa75aE4xf8FqLjwa3AZ9PcIS8EpwX_Vw_pFA0NJcvJxCBgY4Iz98FxssnBRC9dJ1aAn4Kd8lgWvHIXS974MFCCGhfI8RRVDl4S0QO7W6vrGTIZB1ngY6VHZQ1JG9NJOGtomR_8RNH98FwcPzVNUzy9AhGeKBS3WECJCxk_gKjcGB-rBogS4EU0BVCfxzCoTMJF51ufpG1k4eWlEiEpOqUYgUWAN_3XYWNhphToFLg-h1xmQWWUBiVS6tV-XVvEOgKCKp_b8dMJ_99civ11moW0s3XQpzbxo02gCBR9LQYl2OPBcoRr1bVQfmS3sljBMCgtj5NodsMpz-rIZtgbzdchFe-RE6QK4qaMwAUY0oldGd7nIW9V1C3hnGg0kekWG3JKlxMhIB3IbDAVQ4jRJ90_JbLVaj8v0cNmhAwT0QwIwuTJJYFDGM1fYrocL0UKFsHEdPGZQFnfGAeFoMQwUt3I6zpmXbIqWA0VpRYwiUwTTRNTSsH1_eX-LWUnbXBsOmr6X38Sf9SQD2giVwmji2KBw4GSfRjUsbae5gpgZZbTcXH2ZF4FK79B7kM3RW1yKHcMrT3jXyZKjfEee008n6CJraHTc2sBDtV85wr-TQgic1VgACOfee02nwbPgPGhlUsN1e1cBwTGCJiIthec58AQtsEGIsqpTwh0axbKUmUaOj7zuUjDTg0imRCdYb_iMh8ya-YUncdYTabPkBJYlnbHzCB7aXmq42akqBQTTTgVgUsrRy22Q9gn7CkGltOZRbiPZ4Oa6Uzu-CYOsK-0JcD1xUgtTd9icWNNbAg5DCHh8FhryzVmRa5VUkC81OQryM3CgKdyzyw4xSH3qw2HcCMu7VHbHYhvVEXOQQtSaedW6w1shQMbPRKt0Bf_n3DTiyvSsfAgZmA3lrhQhRzd710dzxxljzkbfYEl3Q3SKg2CNM4Pu8SzAcJj9M4WubFMqDirRgVIMgL4xthq9u4qvIGxTERgAu1h7xhUcA9f0IvKiPzBkfExW_QIYR8c9kewkGILCplgqOHbvNBtqK5uXJrnscBUm-Su8yfc3gTiWWlsb1KBm2qwj6uXOBWQ-u4xyatyltsx8AJlshq-YB-K5oJuvlwCXkeXkU3hqRM4SRwLng3VyhdL0Jr5HUv_M1ENVemAJCR1W_6IXWxbChAYiRUFVnGQMCf2Jx46eQo1sNMaO-1r1LdtVSJo4ZELftKu2X0BMQC-l9iQ5EfDT2VEPZvl5JszWbqWIlkr_RY4jwbY_OeQCkPaMxE0eywBeG5zjdTYzmPLm0YjmK5J-_7tjM_678RIQ8qyuFPuNRGFUClznKIZ-T7SYMtFie6XAQ6j3q12Mh4-zEomU1jIOcy2EzZzTVgrpmqVtZUB9wzPIsNtq27VtLz231dh2i2fAfAZHdvIy_7XQsY7-JWltkQ-fY41Dw9QOIhDb_KJHhFNH2xa3g3NGh1WxZIiJNfPXXH2pMA0xU_FnJF0uPEr2u0rEcTWqTsDgHk4krHglASUYsJYneG_YgBCHWWrGXWzbQNGYsZryPJeXNcY3hw0wO49CxV7gb56BbUNBvNIfgS6SogajoeoPTkPQAICjtAVhnrgXyIFnQ38zu9Cwjwqxy10jt04Gwm1Q6xAh_CNQwcLgtJ7elaM7zi9uEGFskPfZHF35EOhpMwR6wBoPSv0ESs8PX1_WKhYSakFyW7SewR86-W3aCDR6xznTr57lJB7BnDb9_fF6rjfysDLSjofLGwjD8qC43OlMNZB9m868hgZoCUKvSnTpVW0B2NcAoM8lgXDox6cxZPtDsW65C2fMFUmt8yqLg9MOB9QRvr8jQVvgQ75GPADaHTVbcDukGOlpWsE8qHc0y8sbWnBRwGu4lUVpyOe3R-q2Y9DVCPonQoeUt3r6EfyIPeid7GaY1S-jCTuj5GlZA4Ridz6yYYZmGXzju_OqZL9TpH14-DvywWaBu8ZUqvz9kVamnK9P_M-jTDn6iz2zy37xyEGtzWT5Mv82avznCG1l0kSoG7HPg2kdA2ngIutv3-sn-D4_H3_Wzni52iLO-5CdMjEHyo8IRF2gsHDwR0mkF5uGdXv8RD_b5KZtgMy91QfiU-h1B1OTDWxxhfSPDO00EtPBW3UPQhkMJY2_MdHzKiG6i28PRjUTIYDcQjc1RrUZFuBmD6S679gKEzKw25fKmSbk6MBIhBfV1Q0h9uX9RauUq8yFRB7mV2EQgMRzrSZd0LVqNtBcOCU7TdrpzJzk0pZkfmjIVGOAJ37T234ICX4_M28IgaNiluXWNYvW8j7k_nTy6-8uRVw30AJnkQRswmxllkn8sE8pfxq2ACMG6LhiwkUeRJU7QYz8GMhtn1HcppGw27GGLZDbd1fHQ-X8EyC_pEx6wcSKdLWOZJ-TOqBWCDHZAJJ44G9MQ_eYCZKj78LA5pooQ1OQJeno7YefrhaY7gsJEY9LqHaDBBrDYPefTlMYgHPkHKxgkT6QtpbAHN81lB5uiiN-o2HPIgI45ODYY8pmvk7SY5BVsu-lJ0K3KZJOhOsfQsoK9CWB37yZj73eFNgWO9Wd5qmmiRVbUyBrjWSXc_dLnbEAKxB08xoITcG4hDIO1TSbTIF1QsBKXbyH11lwKM9Gr3bGckU_ni5H49T8MeAx2Cce-oeZ26dj5jDGQwwwgRbDf_9eKjzVzH0MtA32QPr-ZDqwIPJlpSAIswVKI7W6-TVHeKdYjBufEUoVhjsJ2kZLNnwsgUPySarkA7PjTLxcS7L5eXTIzBWpcSqQfY6eII492F_RPgaAzRnqRW7FA0lvNcCblQJoRK80DLGM_oZajzqytR-ZgfJvWQXY5UAcW0ywx1hVklrP5H9hxJBM6LujBC-bfK2gatWTUNoo7ciIWk8WPKZf9jCnGd2s9YQhwqJfIoYWLYZj2obHw-WfedxSpLOl72ucoXM_UvtvSjnnX18plcNrQ5lkO4f23N0gh_oZhdwYeyeb1N-KADIKIdY3_6tj1AFOqN_vXTuFtEAilg5YpHC5akZeMvfOGunAVza3qucicsRDEYutxcXggArT_nUZa_j9X5lp9EItKRVyGjBvRa8VKDwoHe0Qq9JYaDk2zA0Gqz2BsXKjxS5eArOJ4t-el3UdlFrsrGz0IIM53LsVDnYFGo7G8sQWzxQHD3LqVKhumuL4q0I6gBmOZBhAzzAb-j3dE8MFDXLKOzpMXj4yY_f1BqaSVhA2LxC9FXh8xlYclwHgweVkA98obGvKfW4iMNKJza4tQ5A1QDFPDwcsF1biEPK0svQmSnHNvjhOBM_hRoZK1YD_RXmIYPWzJnULt_2Nq4Fus7QlP0m4I7qSxDSUe3Ly_RtLefBaV3G7dUa62RQJfXVKgbGQTy_64COJ89TVWD5LIEPW_LRrYvSjVlsMD7LPexlQnh6J4g3zq0uRHxcWa1bDQDUQYrQp4Ud_6qc7d7FoQqYbQgib1M_MIbRyJezKZJFNXN8aZWzAkSjR6Luk43uWgogzv_PLON19AnvbC-eLg3fE4aUvJAueCiTQGGFkBb1O2IW1kc4i8wN_II3s1TkjQ6KSvre1kN4YMOTk73lEcC6L3NcgOd-o0tPDO2O9E6I8FG4yCWmnFPjPO1FFmEnjAUSgwhEs4KdKbQwRphNPnZQ6dWsjKPVM5AfmEiLx8drX7C2NFidylmW1dpC6T9L7Qcvd2YbocFGnNv3j4ztPjt-9Z2Y4fZq-02HVNkkuOO5AB4TdPTftjgiGipnbMaBmgBNMwbxkzHuWZ-avaQfSifAvfuePdugEVjmjhcS0NQuh0_hZ-K8m0-41A-EqQ6kzgfYTwKuQ8JdIWawuYoM1Q0G1bJGpwQxG9DPDB8c6y-WupSOZ8c5l2pWsRVw7UJ47hHhFIsoDHFHVDBT9N85Y2SIRbttX2pcnKj3nw7aj6ZcTRwpNPN-Qvu8YMMjMUVV0QoIn1CEyhim0x7jqidBvcSHLamlTSqYvzDfI4l9fSA8m4Yar_VZSMYMxls278D2sxVIEjXt-fqUbXc397qGzvNniARzqZcqrataPpzQoOM-bNj5LEJJdYPqSsHioJGOkhFzWXu49UuMFYUvyNxOhrbUy8h1N6GKiGDMSwe9k9wN-5WhvfEf3wPAztWl5R4PFRf306CPhL-FW83zhBr4c1UxU56taoVNnJtsblxuTTDJr8HgIiS0bqCLpL1s-ZYOgARzAgymuZCRdaxTmK4fdFhlTs6coahCbrSXO9Iehq58t6uw55hGhAqMjVvaRn2TpgwtHS2jvGMCsLFBYnkVXeeCDwA8uIEvujo_WcIUiT7STSP1IHMyllhlhU9tb0sD8wadR8caAgHBe2CuuE6YeO4qet9JIzOLTd3kJRE9Ev7aChlmuuAElJ0o-ktfVIvUbwVAwiWV3X6AcMlmVR_6HzhwZvc64Phapf84hPMYXvnIxBSI5UbvA0X5nHU2lnqPeRlhQI0mKXvLk4Z60WTgGrJoz6mjUQNep_zG1WTSkLwk4zlLwupc492MMc-M3x-vYQBmA0J2OfXEZjnuqAQ6az1hF9SaaF87c_W-Dkd5wgzUEkoUA2kjAfLtSItyltjCzxTnH5gGs7KaeoN_9V3bj_EAquWTrF9Vdr0DyN3fVdwrjU7oZhp_CVfondyy_VQO2wtxzBICKDcgraDmcBS1Pw_VPEIXvNm0ia52zwDDo6h53kRiKECACeOLLwif-WO5IBh4DZ_DFsiuaX1dJyUUO_7vk56KjmN0QEHxaNwpvKMuPtRGOMWkRAwIKezgkGJ-GRLXbeAA_1qqT0hLDsqJUal65fXdZ_J-qEnJH9xThlPem3WrWpAYKXeVOLOCxuA-7wxyxO2DxHqJdxsvzd16aErXTcIq7OgGXL14QQXLcpQIKermnxygZf06I83xy3pkfwEY07BVX6MnouU0ybMlqeFQgsWFnP_yjPuYGA0RQGOqsL_Cz_aq94VrHtzL1M8NTQt3Jhpr_L908QQMXN7kK6CKJnDkh9Rzykak8Lig_xmz8E42bPY-RWpAgAvpju1nggo6H4oH41IfQYW2gVzTviJq9EC1rP3FtJouq9gmSH5xDo5IW09XFskxJatkvOUIjgtZhCNG_VxtML1VdSDLZSrYjMT46SO8JjWJcn__4tR6gEmTrzRE2OSjbLuZpOksXgFrOgRDsZuPSeBAE8VKVpLtHvRQKWimJumFONfHJ7JxCOaUSBzpvk88Wg9em4x7YAd_SAChQoT7XRtjlwkRszQ-TwYfGsyOOGiTyG9dzCGGy_fsTugpowfedGCGBHJpuApn7cf5NNyLsafquuDtEyUly0NDpCwF2i4Dhma5jQsDEbKOlHnq8uzAkJXRe96IQBj0FWieRJyLU-pNsgXz2PqRxNXs__iId_f1X7avOZHN7FyBa-vE-u8RuYGXuLsUtQnnA0eYesQ0hCvGHa71I5E3-w1DCu9dLeY725SC1yVZ_vJ2WJmwEPXJIXKhVgTfvw8GIEml1VGxRFvb5kMQtGbXChL1tz7Y35ux-SRoX4A23pTZVEVquaXb2QjNFOprmA0tuFeYlsUdqD82ls4R1WzgzLVRRF4Z1Jh9AFgfYHqV-7UHwJAY0OpYK9iu6PPknBPAxWsxnLxyIxQ_rRnrbD-AyW-uFhBZ5d38zkvKw68Fr24Czq84U_OlBAvHtTWSzQa_6pc6tu5KT43QDCeWwiyWt1gdahuyoqGpJNgqyD6gh5xjSr1U-ahTJpXgVjnbNBkfOWecj9GK6CMLgvcI21qVrX2IHwG9kMyQgNmu--z0VHXt0WUtEuUcHMM4PzFM5AOZ_oxSVtIbvoYGDXjUgEI-xM7BOr4e1B4n8X0aoorefQhCLe1-Lv2pKRSeUlX60RlVuRN9GkoD_UoFqz59zJwL3h2uakwjt7iehx7DeI2pHUthZL03BqsYtJth9Emw5gsDKfBIR9BAjIzbSFRnnC_pthG2E1WMRMeeKThVkL_JYkmFj4Cr1xjqXXCTAI9QFwcTqRI4ZkRgem_jqVB7H9-BzVDrqgbQoxuWhNRn3_w-xfyzv_JtRcP150_7bEN2-gbBJCexcaF-0PbkopUuQqUjE3-WYKc9X9vLWcdkEehB0F7eqzdIWqRPTsnEat4SQhSvbaOp7EgY6Ypkvjkheer3fkPelAHN86SGviWWtaxDTWMBwHQjM866tuDKWOEnLQhMb_IjQDFKHrUKUnz42saPlPWfvbas8_Ymk7bX-E263Wzb5_MWXqPHMt6UTMSOtw86MTE46YEW9Ww-WW10cmatGb4jfoQHXa_JxCRry14AjwF7CmmQLP6dnm8r4_jm8AylHV8iKCG6r6csAhY1jQ3I-24iLu01EDB6H-_bIX3uiZDXpf4T1aGBJh7I7INB-Ad7d_IV7At-qaorPyE1xvTWeFVQLymsE87ZHY0J157ggITtT95e_Q8_SEiFYg0vxg89qBpuXygL2M_Pbrb5eYTCA6K6N86CxlOvFAb2AJnhAmxe8c_KHIsFZPL6lReDGQmMPBuvdCjjLPV7seEZX30ZMTuHYXNuD7IytEJ7X1o0_04eCmcqbivHBCoQGOzDhQ86DSoX2Omx-hmQl3hI2KgKnGcnfym2Ukd-3CmHAyCDAv2kDHm38H-JdcsO2DNk9QsYtAln6XRVl5kFDnWEhm9bRh-fg9Lmt_mNkwHSwZ0YrdYhAOCMkNlukUp0EYKKhBSY8lsY7a_TPbt8vkTMSCmi2sPr7NnuyaxMvw6Jblb9OD885lSOUp3oPpoH8QPkkhYUJ4-HVmmMGD8orSe0L3k7lLbyHzz5l1EmMahHWCCbnoMGGfO2QnxV4v9YcsMmIA_NX_1CjMUh_LYKrVWE2tfmhj7Zdprbop3nTylHV6YNet5h2MVUtpfj3CFTz-7V0AxKhqmTkSE9fMv5_XY9-QxFKf9B785SPTdj1xBiOsQ0uz3TJ2CPFHOtikiqYkNu9w2cUgYejqlM0crBDpQCuFmFJCFNKrfMa7eue_4H3RSh8Yu9Yw1LXbkAuGoFMGYhegcBEvcxcDSHfZ9f1HFT7IgimpuFuoGHwaNhPnlNc1uI1ILsFeRrrXide0q3L78aMAdu7eFfSSXHm-RcZypE9LHU8caoGqd0cr8hMAFvmAacrXiUE6RtzQUZjswSOziVVwlqyszgPXIuDsA4m0AcaLyEYQ8fEsRZAg7RyRbTgMGrlo-_L1Me2JMPPbiuNi2EtBXz_85Ylbaz45KQ45mdka24ouxzs3YK5aPi-Bv-fYL7FhoIWM6AiJH5ETjucj9KrhL5u-mnEi7sYh6ttj6I-MtSpCzOLrIB5HZ-tJktRhN78f2m8h6N4FBL9ooQXR4Y-QC1MG4eRlAiugn97K-r3MDGQZR5fVwC8SPW4Pt6UDvfaxXZek0HmjYPEk63MIxeMBOLaipBGR2ziR6YsoTUZ3NOopXjZr-UsGukdLw0OIJsxA-nGjmOZCr6iDgY-EfaCAVwAOxAv47u05VBTOP1xoUhMrxNefZ1lt8hEziCDaHInMkDdc4lQVeYv6H4rR2KugX0IXGsFc-C8sfQVnALLdQNjEg8_AfTsEmY3NqE_ECIUhFwxaW8s8aWBgX97Pi8SxkCwX6DyksH9fjA76rP4P5kpWl7ynaOaCfytRliE4j5uDXXywFfwN64DWKIQt4u2gDGo9d12CWUMGrWZZdn3qn8IgEDmUdr_CGXIGcPNuS-wxWoh4G8eGNhvMk1V9zhyhcxgbjoIJLl1T9MOZZ8JQVpiy-cPgClLI2jgIbKSVZTTZ8B6T93aQj5oEbOw87RZxArjYP2XeIHMNh6JUUOND97h1D-tXlI6hlFtFTouMxLzyOpVJLfdrUcr2p0bkbNPAyk3qzxwdRWegSWH2nojJVRP5dopYDUvX3a6sXVGUefUr6llKEtyQ9W84oVESDWyhWRv6GiBkpimAlkoolaGYFYCD72gUISM-ptvaWmVvNmXdZhR2JCSn3Ec5K9TZMg0ArIgFvnJeksow6nIwDSYZ_EXqtEgn9hjLaOcKZSrixLgvGqWY5phJcyYWP7kBsJTxc9U7xCIDh_RCU8fjZzAOAl4r3DtGTEntqzqhScZ_-Fx4ygPgpi4Ko84FM0RvNQGw5VSrOWADroETQVP-La2KyDOjYo4dTauA5ArmYnXyLatcyfbnvgE5KofVhMHwPq-QSV7QAaN9aM3KdDRxBXV7YtnjPx5DzLQE_61NLQkdC0iWFjHwLwM58comkNfrKAUw3vtLzWDiLHT1nPG0pxYBn0zAid0cdOFJ3JRJl2F6-GuMSeUK6kCqbX4mtShWXp1gn0YErlKR2PFjCDNj1o56a5ejMOYAB_SNIjRLO_O7uGofXv_Om9Uevp9XKu3ca86Qt6uOpwQsifkwS6j78cGRTJeU0SlIAGBjzi6b4aJN--CpFIqF6JpuZAxhiLzsHAXRAKik3Lu6Pmb_24KBL5_ktbQRcQX6GQjGi0A4gccSOF3hdJ9j1any3RaFOA1_0HRAv-ExWoiQEyUnWALcqaC1FmXgDTxYx_VUMjeb-MqxAV4eHjJsR7e1q9cJS8qhubSQbHMH72GccTJKlZYdLBHmc0Oqejf-JKgaBMxgkGX30uCXhT9B8dag8jVrDBemQV-wak7QHgbAveaWX74ZsZZF6ZuZ6YU1llAllJlLWPVNr4aaPj_wMfurz6YyOJDnCcVxcKFjBCJRuTBF1ACh9Ye1aj5wDUVwjeKXnjEy-quQNoB5c4clujc-G-ep6-EHj6WgHZefu1HYolZNprU9zHY3T_OrisT2jDBUByHv2RajGe3K7nDZprR-e1SPApINTcKQ42Fh8SfDQsXg0qOfvMdKbfKJqQizEQiCtvkQu1oXhlO8fC4J5UkN3qsPcdG_h1TQ-_zlAPDJ97B_92zV5NkIF3XFM2iQht1oWwZdN6xwKeDRqKmpER-qz7bxiy9Hh1IxU5T_Ac5c8B5xIxbQzgTJal2t1M-_cRvGT0CjpEBjRxqts-KliiGxFl48wNePKySRiGEfnn4Xfqmy4enbmmZgyHCmo-h--qxLIxBEykrcQurpumcrK29z2_jGUNichMpAaaT3UlzgVTbOVb3gVN3Qsu8ltR1RtlO5DM_Sc6q3GQ2QpdHafa2S8Z5D_A90PuohDCpyqvS7tA24KNQEKYM2W_ONMBNNEoyU2p7hZezbbj5T_HLHVRPUiVLgugGFQkNwZ5cRgrgYqstoKu9VJWFE-odBF8G9GwHGFFqyCdBL2CADSx9AnfEssP0TSarXyn-ALo1n5f6vpUFmkcuY-4gFSang5orkODd3k7hSmsCxs5NVMLfQxPtjJcTTrKR04H7xAVNnt79YJYVW73UaXEUammc_qu0GAuNwgeaX3wIQv8ieBeqJvGbfOoXd-U6c8b2xS7b_9BCWtTKZ1A8azUrXAqOr5rXlKkq6I31ht1XzyQAWq3_YWEc8MJahqr7bR5GQqOxRg_adTocY65i1qhxebStP6XWRRurHWyHzDhi9duKfGK_eC1bbuUIevXsNDHdQBDNE8_w1BBBlg4eFuM8vSDZWJEKPxvB4Vl7ciLOs6-diW3bj_JDo1BZlpdDQFKCwDuk5RtRJmr9hGUaIbF6nrjbFduzQFh6laU7VkD_3XyqJ2C3dCD1vOOhslfiVG1fBWHpTJvKsgfLa0u94IUipo6YWCz8K-LCeOymEufdrfaI1A5qutL6tF0CaPl48rmLRMayxqTf4ZGCCDe49C74wOS_kGmxchhr8DKGUgKwiWJWQjIQLIk2PzaHSQ4cE8uBQebBsCMzlrzNr1YhYzvzhje-qorpNcwCluQeaXkqp1WST9LbExS1jN8gmJhLgS8yAOd_yGdJchugXdbfPXWD_R4oVf40bCAv3HBB3MxQKq8dZeXg_9xqr_bhwqY1oUraAHLEol6kUS--0eDJ9PzaLed1ZQ_6j-pHR-mu-OkQUvtM-THVLuNMKWGSYKcBnOFYw_1NpEkwoWtcYCzk-nq-aHJ5XnijDKutRPJQ5W6RLMmhB8qFoZpRp_aDS5LJiqp-Q4g2QhtSCckgUwHN5GSDTLaYvjkR5jeIDI0Df_tQZQv7BiusW4M-iXMunM3qpOcdAdfnBTmODqjdeBAk4dRnayZtb2Ib-JKl5ywa6WUDhpA_UQA_sIlBBbTjetvlH2sChS0D17boDPANxqPYQLorzUflL42ay1DQFsRRdnxTiNvzN3nMOxzFdIUYqWEiY29KQmAFyuERLmtWNxvUB7KB9WqxV21mbJ-yIhTsuUTHve3HdcJuWPzEtbZemmvTyJr1wckTGBWVfeT20e24dPMpBbRN24Mpx_tMxfsioxNsXFYqKHzqWqZ8Tp-gj0TUMr-dATGUJHHQ2Un1nVUYhOfB-G-cycBf8zmgcnA9EsKkTOlZY1LRmvBIknw6thweHCggBJ8Ke5N7lgYjdTTPs9HXMZk-YcGJ8Q-TkB4_Dw35xq9_hnncS-Dl-_aTs3FD-V3fAbAd9eYbttpwk9kwVnc3GzF_d-eoCntwtxNH_iYmdeBZIqLZAoDwzvFnGfVunFP4RiUtLYepxu1m7HLhPSCAQn6SNcLwGg1U0jQpfYIYGZTL3Ntq91XYv3J9vy5O1apgQZic9XEMxzOuoYf0zDEU41PaVOmGv-H-mdrmH-MI0AquibmsDkD1GoUssNDqsqGVBgMMp1kc3N6irmLeIpdrSjOLUsW8eq0YGWoMXXxp32wIfDr1fad4KV22Slqlrfv4RC2v15WxVI6j8Cn2l6ymNxCj95fk55ibBk8IgObZEwbu-O4F6focQnbqXcLMSHipxWVOo0PNAnxeG8ER8AuVaimP1nXVWhNo77VuX_Yat85m9l4Avt0Q8tR6Rpqruw0cxZRH-3GRk97-svz5QsXMJgNZsDquzmeRT7ydwFrr8NK2Ei9NmlZ4pziY4xgIjVIJgIhgkY2wEH9EBDPLuqmYrA9z2RC4KUg5aMAvhRRZ1Jrxd4uv6C7iq9o9x6AOVwA3AzuM-A42325s1cNlnURin7VjQvoDg03eXsB-G-iSEUw_WoiFatKsO1U8bW4GP1-XwaZMD2w9-NXF9JCCGp2PaYNl79WZXpoNqtOv7CS-USx0vOF6DLllVZebsUhgMTBHg6I7dmJShzC1VLrCV_XjFCVlxfSdC-HkHceCUwQwQvkH7CzkW3Xxqn9onVcL1vMKgt-D7ov_952u8jsS6gkzEkUZgSFKNUMJGZv8J1rhg-ZNUi_50EsohJTlxy8H3xw8RFN9JsTZ7T7_O2yJ-yB5bCdSHldOwfQWtPvCw0df7yzUQtkMqMY384QRdKraWO3CwhrqD5_j-iqM1nw3AKDnqvUZ_pL_MrJT5OwqvaQLlIJpSymmfw642aXt7P1TzzFnwOYb0Myjc0geBp6JKLB4MetCiKUxmYP8M3hiH8FSZLv00jUmVJj-CPVj2IVml-IiAPyPU45_2W_Sek_l6JDqxgviPNU2QfLqXLOgs7-30-8ZhrtlZLC1AYco0hIEyVvFBQC5CjorAuillJuZ02YU5_kNwGG-Avbqb2zLhjw3gO7ZB1Lz68cv8F5YVsUvCvMgRhgpr5Wj_5uFtw23HGXHKY2Ejm3Kjya_Tw1EbrPl7t-UYyUxZkF6lUh-ZnndeOB7RWVO9lDvW-kuu5XuYFbAM6ouYOPd0Am1Te__qnJe0cYwKBaqopwTCE_7cu9EH37OBm3YWyGrthggmOrcK9jSI-xA40URX30vYvyuvNzZ-0f8PrZIfTtss2f0w9om6vDpwxsWhXRlTyz9qc0ntEgVwX6t6xWklLasPIwXZpahtO8PAA9Vqy2D3t-nMSyeBaPMhkZi_k5x3ckiLR9RHH1OmiAyYkGafn1_aB381MKMv_8AS4YGzeAvaHBwwfNDBlPpBhdupAGXoGPKFCM6d5W1QoDhwQyIZ9uFKuvoPtxntY8MwG5x-Vwmg3GhIDiSmoybRNIpfIqXUVzg5_a9p9b0-Go59h9B1ntMB0K1Q0X1EtZq-tVRlv1MRpSjOl8LFyGFQ8rYS0aY54cZgE_tdOaozg5NuXDJPQR515WrBf6NyJ2E66D3u1Fde7hd-zUMSiASQXMKwCLOAMNn4f3MWoj6UR3vKPjtBNwF1umNrE8P1tErywv40kYGz8-Zy5Jub9dMgKEfXbz1s6XIqZJEDSXngwVYNQx2fhaO-uGxt-eahjkVAkt1KoTe3sDxtkX7CFQNAaVBlsy4JEqRM1-Mxg0GfAP6M5l6MMhbqkJoN4oC4TVUlASghOUHqkCorULtgKctw01Ea9UnPzXz-KKpA4RllrWdUryiRH2A5RPs3KH6mTKVjJmzXvs-tHHeQphSLLm3QV1smoj9Z-oAJrz0C-f_Y0LE4Rsaw8Ag_7G9OOrBOD1odrNT2PbpvyeMCv2179maxKeUB3WRIU_Mz8b4_vi76gODzX6t-K5zDm1ukMlpNLfRtD2FZOEu2S9dGFFy-Ut3gB8Vnu_b1wnzETDDqWZJ-6bo9qRxrRAkH6q3TF5VTKv_hnYKY6QzcmotJrdTNPQvwCztcqj4c45FtJyax2tdOQo4lhoqDapMA9TawQMxunVToG8YmNP1YKJljFq-ZFttAxcnIpaTYq9scd3cfS0S63cnjaMT_H_LEBW9FedIR53Ko12fyQn9cLgErigUWMWwgdTmE2rPo3ygRky06cEcrh6zUtNb5E0Xt8FnmR0n53wZbJHsX9N6ficGSVwanB9ZBGJz5TmRHdF2aE6NrALFCVLZ_9mUP0XVz9HSUH9YbauXqYM8afLJ_R8XNm1WtqX6gWkCG4HulNtWURyTWgVuQT4jiB392QSDulnwnUnaFiroMxbHD6UENVgg78icspfeRQ3I_wEKLpCmngQSDvgNlV-vzVct_920i-n6DSDav6Ez6MgxCa0cgrF5Fbzak-koA7olgU2xqiyoAFv02H76alrTcE6Ooi0zNIBABz8McKSqmJDhJ3RTpCYQCmJ71Xq3xdeT-9-WBX9QgNEGQ9BAcZNT8IHY7yUocfYNOQS3XbCogSc0HR260BC8-8ijyyx1RfZB2kErTGpUCo3FQJLg8QNYU4cThUe1rmgzC1aJSHdYD8OLKHflJCHZiGGaYW_MA-tBWfHiEISIUcIghjbVjF2dBoMZBW5hlzvYWOV5y1QXW0zvTJ1Tw4R6kJGWNTK4wePkrh9W3t4wMu2QvyJQLGGwb4ltSDWefD44MtkWdfquG7OTbXqEiPr2KreJ2j3DASXuBDBD25RvlZc4bhLHFj9BUJ-lulsAvDWKCb2Bou0i6akOancevmmSZUwphs-hQM2b3ugNTsgsUEoF82dXWCJ70gyr1RFBfBsZCYDMDWbiqMYC221y5Pw2zoHRdQ40xDVCmTzDZZxzBr3ywIcE0Y_6c9tlm4e6EgOkdHg5KaAV9sV_uMLbBeSxyihQgJuxA4dzQnCo3Q_owAGtnkvhQp4UgYlx2AeclHenpTuFb_t-BsO1-DV6LgRplzfXH7ocQedgUXsd-gZtA61tnwNR2qRk9dbmtOikjI7qf7tFv8r0pRbe_d_mNadmgformlLzAtUn87xkZLmcMx_iH0g7gW7gbEXnkKmX9syage0xeQ12qnGvGF-p6mBKFUM7d_8ZBFt3pSd0M2Wl1zLnK9HQJVPXjWWBf8r9UecYdpyhtZAnxREWSqG1APYDP8cPpQcewy_QaCnVqyYZRFkf6X6ch-O9sJAwzR4MLElaZ31KyCxHTj8565hGC5bJUdg_I91UgH2yJArG54y_Yc5Dl6ALUn9QgPzbqDFFUOJjwU5o9uD2XyEBYzEErekT-GqxtSGOgCFSStNay_o8OmjolNWZVRc1_aFeMUOgh_GJCAnBMs8AVNU8rG-2bL8Yn_08Lfn-QpqpZIZIVsTZinG9cCIy-nuGGUtwHtPdG8xntWD7d5rNUtro9BCoxdrnbFOkSAwCQ365HHDHG-D0bnxTd70UQLYZcAb6rkxFrENHGBQFl5f1sOWZnGhofb6snJCirTWsgJcst54Dzu14XaX-57i-J3gi6pI0alrVQhxukhTtV3oj42A2TUGD6Qb2P_PjwhVbwpyfkd9tNTRT4YKbB6v7FviTl7JKRh_lMFAeLiNc10auLFBnXOdq28pbt64ilr05QoEABo-2qj0w1qRgK1RfdC_x2WRHcrI7zWIyDONsyqumIklidGqrEh8EXCSg3a1PBLMIrUfkfyV8C7LvTL_lifHl18bZO1BJtoksrMcCmPiwEJhCCMn1olm_DSh1YHahgEFrP9PhmLrFpJrymDuzXlWENX0QfqD8_bsiaIC7sqi4ZCnGI-KCnePmdiATIkO1ROI0ty_1kRce2LFztuwYFLY_z1yJlFflviLtyjU2z3F8Dl5JjO2dWm4n7bBCRT8wAqp5eztDZdaiuQUZKi9vhIuEnqFpL5zQVTUlDpMWodeYlcEZT0pQQamulicCkRslA7Z-CThZgOW3QWCv3eYTvOlZ0merHzQFxYq-8S_0rfwK9BEA1xck28GdMIXUd5cqBN1kUPd06qbwbCAgVBABucXvWbmkCeokCXOyfxb2BHl7381ZWy3_U6M0AnKzxhtYBSmBjY8sQAeJg1WTQ0ZpbMT651_b8ipPHAUl57j9rwVzxrdtmtai0VoUVNv4UEF6gDR_byb09xWMXgCWHrBMbbs7KNNC307cI7lmSHDwFDiWjxXcZtGMCix71kfh6uZsRBursMcnUoIaGvd_Pqv7SKeo3c1DXs8d4yraU5VqtmvHuodSmfcmOCEkzLb4lmVfBZPrsJQcLb9xFH8wunqxWYhr2ERzOJDZoLIKNwQnPDcxoK7UX_tLfbHKAO_CcfHWRgB_NkcPVvf8jViQRTrskD_19WqQFq241yN8yW4a61C6v-9og8yJyy8BWPQdiKESA180YGsfujYRx40jXR1u0g-WgRF35S97vOzm963EAkAmfCPBpRckAFxeDcb9DfBvhihOeaQEobt9UNhiDTNaiSN_Hl66wA5DIPIptw0_HQQLoVQ6HUevZymcwe9A5p7_AdCf86KBN-Z6cu7-5OTmctbwROcfjMYjlJLXI4vSE1fY_BdaYPBvPWsGaPKTNr9kwy0RyDrYd4a3hzDBzEOAGUJm14pdaOSbjtwoIJ0m5TeQRm-e-EBqxv4dcABhod1agzhWgyKZarIrtkDhGW7dkDqSdxHzPCxphtD1a7SD2MdKfz0IK_IkPRSr5N690e9kBMO8r0MmuMg85Jf4vA3w3-ywnIbaW865qXxkW-3CYgJ8RloGuBcJewQH13Ozoz1FAlt1Gt5Q-uHiMokLpmbCmvGVk7xPXqDu_sqRhQSjlEXRBjmGzeotBxxhTwmzqZfJxRXEdmGAtrfqva6gzYGgSdXFWo-_wfN2-DjBa1Z8FAxpmT-dRPNvaKwOmknS-tI5xi2i7kzmh-oIn8n-AJ6WanEBaFc5vTC9SnQNxnjnnbTu-bRMj_KlXXpw-ryvlGEGhdMOqfcgSWzQLPBSVMJpDU9rSZMfGl77Q-S3q9mRfjPnd6TqlNfOskpiQijqlKNvhC_D2S8SerwBOrWTSZ2i0W2NKgtAvkgn1v7wHkNIp6iJ9CU0mXIobg1uDrdvReirxIxuznqXyf9xma99oqKmQvh4dWfhlQH-a8AB1Hl624CTjEs4CcoZfCm2pMpcDie4gVvQiGkHQosnTdOA12IX3REq8peIyawJpoyI50ConQxCFuWqKfZkxvaLMfVAHcpvRNrNEF-jD1lf6R1emRB8jW6iQLCKYVueF6qfUsmb6Ql-gmKcakkB71QGMSGTa91eBg--S11MB79NFQdZhQDpYYc5GAAKTR3PF9Cj-xk_33qn0Xz3Xw5jRTZqm-qVcqPMwcdxcB9p8JhtWuhGcfyGmON9hM83JHg8xKGUn-1qPOnvF1yWoRcI6wv7Xe3jfo-_RHLEwbPTbihfw2H6ycYxEl_iz9zlG40_WNJwwWDdHn-jsau08fNxdR4WC9FEvC7lRAUeQPVxUWE3ziJjlDMeZGz2jy4daSi-LY-QZCzarHtQ4_olBcW11Q8gtV0lOBrkATxbd7YRAL7_dh54Xw9T6X0O7TlpofzzAVMZzIn0iTai8k0eAzuj3DT2FiCHAh4-RbKHr7mzyrPQ0MUmJp2PomCnzG25BUbYSlClBcjtotLGm6YuDPzB5X7Lu_vH9eRjxMEh7ZqIYO6m81D0dwZO9aVZSSwa_LBb1iBFrHijTsL8rHXXcBSnp_jIaZrGLyKkxMaJDegmLd8HdgACP3rOqVCDg1n_CVE3_jRaqwwHJVpani_j77aSGBmItjp7HqbcgZr_CVMCBHX3XfzlhuXZkvBoc8ZaYYifhvgGFGEg0jHEaxIIU0QDqm2L6dHqCH6yAlkkT8zRgWeLH4Pey8nR2KTAZP55YtaaU38cUPOqVlvTmPihzfNHH18h0vLfaPPjA712C9V3hvVACSpU5SsXQU7NfnnIO7_5ZcX-iCaEuDsSFlJcAJFaSyKJh5kcXsGdRCAM5nVfyH6_NFHzGiNWaIqc-E3Yl4a4pS07bpe74bsEUrxUfdgmY9XULfNwuGPVg4qBsSoS8coVBn5SxwVR6OITKjr8Iq6b8EZZxxc6qJJe2Xd5mExe6NxAW3sClorNhS_wwcBYwj6HUH8SmXpZ0xqADYVqky8bn-pa5j6RFNSH5zz9deI4_1ioLhkVtvpbRFHOxCPzm56wjqQnEci9QQd8axmpiKgHP8HnpTzLHO2MgqjjunSox4sXOz_BEEPWghInV_VpmFb0KN0B4UH_M0f9Yar4O1unjCGwlLF_ZfLfNfwmi8JoDRMYIyFn6D1PxQgdBBPKN0oC_Z11E28WQqTORvTJqusVY4qoZ4d1FOkd5E9srOWuvs0gBGweaIzUAZHdRGr4NygezGmf27uWSos68ZHaB2qOc79z_TpsXiVeik5uT-pSbt2R-GEIeg8cwCH1J2u7UHsWLmJFyUmBW3K372QeHxoW8UKinTNg4Zy6uF5acVZmom5E8s957-83Qcs_unrHFoUTPy_KWoiqRefrQcpmCHra-JYSYwNxfwgzoCp-EHgl2ypCIZ5BpRQHgKweWJWeRhioSBwGejT7evYEl3-L_FazZFY5W6tKyXFktO2jIySP0NMGxFL8S-PWQERH9cdm7l1KN849iSIqeMI8cROEUCWjUIhdh9pXJnY8vYhQBfbEjJ2fJFjOEtT8ARZe1jBPNUFdoRph8YXVXRkHn0uw826uIzZGnacbNgRwgNdilq-j1Rj5iirOQwXSQ1s_L2Y2Gl8O7YZ_tuEek0ovZnebzesmYKtoY_XhunbD_U-4afK57BtBTsmm1Ed_AwfhZNV_vqKC5DraEE6c6J_7d1f3NJEMVK-QDm-iMLGdLHjOr3bf8TjpeXNjITXiBZ0kJBb_qf7Y6Sze1UueGWd_23NVi5Ufe8w--C9fE3YT0Hl0wnSRJ1WvOGlLQf2Hgk8KaazMuCVbkNFzjojCQ_IrmsEz2sbWOSMDB_E2y-6JJyET54mCpfMYhdHXVhtbAH0sdBNtp2KGfh9206nOJU-lKwjo71lgNm4XoWV5Ux1LXYSeN9r7BSrpirkFIqxyQkJez9Ulcbiz5ES5t8oaTwCOnIDE28Vy324HhGPSi5W2QPkCOV_PjOWCeM8yjS_6w_FnGuO_26ecaOEkCNBZung5p0pHSmD9D0SeQ55YvwYvwMhT3smiwDo9dRcFa6sigkWHHKtBLW29sYLB4r5pNWtHd6CihJCcG9DTTbaE5qP0-eOF1l4GKEhtIUKDPGJGwEzYHjq9emeIy1uacdIcWTCJylvCVOHdWmLaD1HefI1tjSyga1LuX-uZPAYEu4H3BHd_8RhEhTIIR2W1Zi4pcy___Mg6UnxiELbieUU9M-kBKnEG8wm1_VCAJVg6GulXQG20z5Zq0Zr8HsRUEpcO6ULm-_3zF1WYWSPU-JDi_ZiKxGdLOidzU4gb-zzrrLYtA2USFwdncVimCESLHhKPSvv6r2xX5Hz0eTuLmhshN4wL2du7QNz_mLVnI0aIGrHWQgs_DEy06L1P4ANm_Y-0xdzookmfICUGKChRsnNFH5Ardfg5JWwzC_jQrW1XM_t8g-3Hnv_A-UzUyJWBl3ezae1NPikowsbMsIwLuHHteDmQmqb9-93yiUdXB9FxycWFgaPksF17KxTvI8FS2PPwZKsSOTXMQNCQyFd4fJDR60nQhm19DhQImTl_QPvqibTAg_p5zlhxlEFdMKoMEdSrqovWF0mKoOLbIHlGum-tDlq2Ll96PE2-CrnW8NyHVDdew8iZSZ5dahyl3prZnh_EiRB8nNBESy8uH9ppuSH6XlQ0TJXdhwI1ZdOJvFonZ-7IBR1TVb4ynvpzRt-oWE-tNx1-6qwSJGzrsKnn1EYkDQaRj7nfztiOa9af0LGUR5ejBaZVx-bQ-75PO-xBTxd0UpI5kyaEf9T3rUM19GzASEzvIwPCPRplhpopMmPORqBqg1oFxqI9vzahfzntnYmWEBLGc2ks1NZWq1gLcSZLw947_EEGgyqw51cFGXLaB1DeA85qa6WT1jRmS4Fjj747XLPynyNH73NU8RWsx03F0y_fvUpPGS_vaXWR8AhEy-gdBW5CCYbsPv7WB1Ls0_DJMBSHylHgNQvC_5knHobolZyERyyye0rwmLca0TnAJS0QhgywEwaoateT_H3_aqypXAFQdqP9aXzDLINETQH-jPND97CG-mhA5bh_mmulEvQMxHyt1e4d2IWPOJjYUvSj1gaxoNl8C_v-h8719rmYl7e5jedHHzYQuDgq-i4B8HlQxgLycD2vQqtt9F8fadudBvjaa4qaHQNw_AZc_8aWNUQ23FdSfC2ZSwJvYASGSz5iwwZotTwF92WMyzfnNvdjFyluEZR4D2RXnYP9GUuwGcg6LvtzjZDq4GoOG8cZEqgSQpSUFWN4-NUVBrb8GLY-SDo08tW7Q42PvN8h6h6cPCpFgrKFrqEuNupBiw_GvD-Ihj6S81070U74EpW3yin5jY5dVGJO_Q-8GBVsyfe9VyPGlDCt9p2-FwvgP6aMZnWAQys5HjDo7QxHaLXAUAJEB4HJatbd3sDYsC3S3Py-_NDzA9_JuOI4iqvOjwf96mS8xfOkoDY0CyKso6cn7BWBDbtgGL5yjjAOrsgyRzALWaUehhq0p48D45hMtJh40lBfgA2QkEqXaqlFdooXKlfyn0nePdsQPYJWxg4O42Up_ha9yeggy_bdTtWJQlR1bpgphhsDFFhPq3rrrD54e-AmMPvLS_KnhRHR22d8t80bo2yhrXzT612iv6Z_2_wxWbm8AnUB1L4t1pnI0BW9MLhU0EC55f52wZCJQ8wJdRcH4lbuUsZ4ioBA8J6X-UtP7YjjBTeXITfvyCaLvkwGseuU4DCiTHh6mkqIq6ynzsg9kXqjCB7oDfO8yZm82JEuzLWaReeZSub0J4FAyCUQImgs3Ui1shcwK6IVbk57-Gjywva17R7qQhkYxqeDCbrd64y3QLFBnhiYSN4TrR5AaPiNz3eCYFYPTdMjNCWa7HMb8wgI8Bix513uKuS7HenMc_h1QwCzrD146GKiiEZ0LT2IIDDO8h_gKx3Y-7N5B9Og7wjsDps624fXnr889NYznFOBwuVhNmT4aULq_L32VNXYO7bvGEm8T__RrBnigqlftf0nHzP2U7gN3kKnuCg0VryDRRs30No9mmIxpCzEkGfEDb3g8SxDiiyOjZEuFTG-doTdRDPfe8DqiPTfJdFWRfDkBKFbpnV46-Dy1PKe1HdpoF82ggBjtwT6N3GZ4MPq1UVYQ6aiwlk-vUpetZHohzn1AD15XlDE_NfnZHhvGrHGApPPUFCMmZRmqQTkNH4IEpUDQM4_SacoAIdkrgHO7PoUAFoHYMpumQ2pow4VTR3mj0tpvG-iIBbcxvqc5XLQQZhXuhDVAEl3p8HPTDKqFgxTxiKT_Ns2pfkp7zHS9-Qp6VzlZgoa1Kt-ipc-BOpwBzzeDqg5bOYvDF4mySuTfNy7RnMfX2F0WZKN0j0Rbo99iNUgkvxQNTAsicaZGuGWaUbgiQI5OT_kltLhbL0Lwk4AQpgKHQ0OBgIYC7ONSWNWlHqRTR0CGRYRPPB5tOfzJ9iVeKQKgTnH-PTukqdsxJyrwalRgF9I_b3qBXCFeY7Ea1JyqYhi2c1OLLoI8UJ1kNsH9Jsuww0WjthK7U5KQEHkQTZSjdEyoD3M-daQhocYGcPqRLqt_kfDWpA9fQYJVlMCUL9aQuMdYVz0ZzZwV4PhAoqep2MwxErhdjEUPhqyt4mVopZW-Zyigqpw7ef5K8lrBvtfLV3rt0hFTzuxACp1wQOWVsYvY36I0Yff9iHGHaOArfsR0KgDgbNK7E7D5CtFrHyOn5XGjWcdjLaYKvCJ8wKrIItOXpWEMxBCcKsKsj3bo_jJKiKYS5hVeaznfwc7pi0J21-4BAkb9Vs4XqIcooEFbUlqFSxWMuBokQAsxBEdeZ4ZEWbD_jZdx8NxELKLxPuKiYYmaljKyW4NqhyeGPgFxeHV7PC8fZ5O1Zg2sTMkW7J_BkZte3oGa9zeENRYMYmVp90gURGZ9vex7-GM362BBH-Uq9w9XYGL_yVfylRVU2PGoCEmMoxqgxsYTt6t--noIEO67jMxWhOdX-i2bLo4xdZnTBBDiiCwDLBM4SS5FWv9Q1b5NO8GL9ePjw0PEowJy6Lhq1MEBrQSR_AiNr7tAQPoJc-ltUMtBCn0FrDKT8UZchBVaMPazNXHJyJB__MZfJLc36Pr3xI3YG7C7plb4MOzJ2UU7knbHbcGM8WqKykYOBlde91ywezS-WEo8EUTO9rVUTDPwSPH2NjnuFnu9cEAmXYicqip9J5WLcnWxKuo51O53VaSXa3KOwkRsh86PPoxbN_6boEBx2b78eQOgVrE8T52OD8SryaCcj7GmHsA-nLWXhAZ98WTCCR_O3N3JZSMDB8NNKaTdyjILTThzcZBAMHpCZteh3JxXO2kiw9Q53cCVt-PNAVFwgANiyFFW00sGKI1VxK2SqsCXupmVQqzwJ_VN_KyQfh56xgMWxEucdcbneMoOWUzDZduKIBBhM3BiiaidHeflnpuDid8poBugQVdxNZdxxi27cdV7h0ieu0WAJj5G4DjNY5XI-S3cilYnTXUNg3nE4kQb6jVsjVPKwS7sur3AvwPld2qHJD5Zo5_63axnH-FQuiA2oF7pZxoYiz4IYY94ydG8gOOYteoiwEDD4tDi9_p-Vh19qsJ8NyAaC3sO1mKZUhLpGX4W5vXI9bONL6KfiZtpGsNOS0al73DiqdLiFtAcp68geOr3ym7Miq2xtthT-mCiNOn4HugT-rogZbzPlRK3aHEY3MsLL2BBcPue8ffnazWOosLQuThIGdGwHxSHwk9crZito6H3rfhy5FQYRZELbjkp6XwSzWqwGNh5PvS3a4WxLOImjdS_SdeFFztTbz643sos675Aodwntlo8e97352Zl54dJVBWQQQXZe92VNcHdywcaHzSA2NyLRWz9kJA4R4jHUBq0Kd_y-f_4LZMgcnSJyB_kxotskTdJvy8K4VSB7NSgMxkfzv-DWokMaWuZ6i9lhG6laXjt8SzVmZnBXx2fcGgveBZ0cEEy_ZAjwSaqkircbn6rIcmwjOLxsSvcyHHaB4371u2OZzhoM1eRQ6I_wXHJP2FW4zESJYPOhSWtJ6Apz4rHoUnlDCcg1MnT3Q6PvRNDq0jB26NCCl4ixvXlWtuWTa6_bXBARoDauSXsf9YAX-vnSTK2lOz0pOWgz_QjQw0Lx7nEi4sMXdnGvQNxkSiGAmExZzqAPZwMGbdAJUnjc0jW7Fi28MG3G8cHvO6fcGMo-IHUlH1hr7vMVCViYqjcZQOJ6YgAQNQNe6mXCcsSJij3_AeMXOJvC55N2l9GkRBkByX7-NO0zWRMGZdtYxe-25RMM46v4AZi3A2mH-31HphZ34kIlBH9yb-8Vw4cdUHpY42kEhnXusSk0gx_bGxqJRVVpVgo0EAAAkhSRkWSqJiccp5iZ1yZ2EpHOgEM1vthLyCualal7K-fTHBm5jSjNqNNiZ85xJF3tbnHSjLNdQ-sYcUnhDFedPfS1bzfVZrJBfzjp9_itNRPeJnHhYGe-K9d5TQqjrBAtwrGnMkGhpegfK6Ac2Nklvcl-yCdX0Fx_OYe6peI4slr4S9XmZBj3ZpG7PX4NdyAKDu0GwufKIcSATJlFk-1L17vj-b54H5iFj5472wPjh-E9NJ2UWS5GbEC8TPpqw5wQH_Q4KnOIE03lgzCcImIKW4jK52uCSsBljKI5CXQzgTj2lR2lf7OqqEwyuFP6KEm4Gbd98fASaqrgFmR3CBqJfFkaIeuluglEt6hbkIQU4KlhVJ1kwkOq23gcjyxC4TXYEBNake_62MYh17xz5yxky34x6cl8B-e14KXqOG5qG5ug3gsoD334ICr72xkt-m3mICgkUYOSBE83pb2AA7YuW5IqwTLStyt03wQhYmDXd_q4FBM7ZO-uwue_cT49vvpDHBAL7zwG9if6P_wwVVqO85qFfri0-S37JXpakkJ6_9SUpM18Yo4g2SbEoFLE_psEgmhRAVyGZjGMCU2Yb2Nh6eQaVhuiciWgij3Hf69IJYKZ7dgNmCuuTMp_VlJ0_bDWGlAQZUvZoXemSxVUvOEMjNj0JxhAnuo6Pi9eWLcpy018a71RUAcCrdI6NLvPBNr6qYJgZL2YE6lLe5kN2xxuxtNIm0PdkyvAo9N0OGwXOkQcY8KxwwhBPI01FGQ1ULM51ICIEBERqQD5-RkIAICNR6o8zZD-6Iqah6mvg2OOhpEWzyTuIV6y3d_hOKpYtdPZ0tYpmGdXjl0CM6UZmUyAxk43Frunx0UQg3pA_Awwu5YhXCPek64_gbjQve8bn5Dxl6ZAvBAk85VngWQNtjH4JNk2GABmghnZr2ZHWhO_GX-q3KKTyOqbUjACY1il-tUhIs0TkcQqrYLRMXRrSACeDKw1VWm6iTI_6IYfcUGs_H1Y0fgyCSI3lq3495MNy-dbp-G5WiAQCZI_mqzoxTcr0EifYsDKQuzpSs4e6e4beFerRgJmLVr9Jgo9heM988Va39i0Vo0AEIPlaZqLXrAz--eT1xxSdBi6JlxKS2uzYsl800ySl66rIKPUoXdkVni_F_20mmkwEGCAQ4ZJS1g52aDOSjCYPuP4nUfCCL1868DyocogHBIwr7PCQ4-_0e7rKflnzCoPtETbNRKJj55oRaiAlFdqaTWWSMp_LjH7w0GFXxzTtnuur3GA3QaeaCO9bIPf-kiFhBArunZ4iY6SdxqV2bu3ANgoc35zfPy7r4wZDnS2BfHFn6KXRHhns5yN5U-OVjT2pIBWbLxQj8J8TOrSGYkpcTwJ526XWPKA03qIn2pOEe4wUDkW0tkxyyIgt5cCjSPWhhQQLsYYKJ8rk2ojWvIHSdHSgIof0eVI51RGCW4jcg2pJ3I25sFIfpgqI5QipxB75eTIB32XCBtzWmK2E6dPAQfnHNPYITbjLmOrH2f6zbW1_LJ3LVtMMijseSomNhA0v4KUEBy5aOriMgwBRc2doCITBcWz0OD6TCXbcrNvW7g6BDK67Ym4Vpn6bl3B4tIH19TNQB4YhX4z2kAyhlOOlvwqMcfhtdiNxuSZ7BAqQYixn5dDpswpCqiI_MjH51TMikt-YBBCHTr-RGRIXaWxk2sTl01agDUdyWGJ8wsP1f0ndpLm3fHdejNab0MOn6osZGpP3ZgZIYoX0o7CoF_5lVDdc08Dt7L_yEmzk4ccF-JQ0JtbfYdzvc4OrUBm3zQfNVsdw_AQHE0H8y3wolZFgsPzAOF39j-_9SDKkZQAHkO42MKEBuDYNRANGd41ztyybua00Dn8XEYC7OiWofp6CNgeFts0oXhYM7YU-0A8h4n_xVYrk-0Rb-zpprX3pmPsLySXIDR0EBHRdi54BjFeutO1ODlZUI0JXKinpc3TEq1Q8Umhk5Yid-CmzYfaVtt65hsdKIybzDgZkBSqOZHNlU-qgtHZsZjB7HhlsQH_hsJMfO_GDYmvUyL61zZ_6i-kzVl9kQzarBALNWbFaReiu2SG9cY4n8raKYyXQxQXE31wFUrKaibEAXJlq26xQzmZmf12t4-3ZVxMi15PRbREWLYGzqNRARqU3mHd3_FPTeaLxcWy-KfufvSTVOIYkKoAXAbHfGckSZgQMlCPqKvao0Lss7N3bdcI04kJRmOcExYhAXvepyznGreKpfwWLm2YpoPgFuWq2cbkOg_KNOxeI-SCe8WL5geA7u7S-PPZZ89jarsvO7kPAIQXxHg7a46y9wzDLclZD7UcECTva6MEKRlMP5zsg4EfRkmZ8AQcykymQikio50dvSITkyqtD5XLkLYv2eypab6-1CHu3z-YUQSHYLOw4fsU6dR8lToK4I4pl9auL2j4z2FqwZTt-wnGkTXTevikprpz7BBaY78BYmJHquSGjIEoy59aBoFNWsKLhyB7r-JFAVRXgZAspE59-JmzJVSIfyNWXThYFzabEXW2VmUNRAcb2pRUP7KYWY8xqgZTvQZ2mtXQBY4GpAoXR6jgH-fmWg988kAQBxRnDoZgb0VqOUNQK29C5BIEt8CsHE97YSouTsqqGtATh9YQUinkIpjyHMAYRfnkMiywoFYeaJdEd4DFPIvJ_MmDWtg43nh4dbJahewqSfAzmFH1B-js9WAG7bivifCkEFdHfWcyDybAKICp2iZ4clqNYH9EoSgYJuDnUoyHrBvhWbaG4CZFi6bALdp68fj_7D6MCId76bo2D47SRj-q6bzrQFHvrbfK86EdM5KbJftG9ieNvuE7PjAEAheezl1fxBBKKZDCnxPzovqnmBX3mnEy_giFlxpBfUm7g0ot-FrszjXCMAcw4PNQchogsmtV8zQ8XZOo2Rlay3YmS9-nK2Z1jEBXckY8C8y2IavccKdbWAOUidl9LsHe0wLA0tC0YcAQH5HF1yfqhXeaUXmVA1tF7vJW6tBMsm443zWLqD3MvCjC6DoUb1O6IMaeSwvS7spYGuleZPr4OvXuWcylIBgHS8TlIwoo4P1zBFAlYOYCGsulS8TBKmLxOWskPS-grktYEBBK-uDxU9pVaKCMWy_l_LV8-r3z2HRajh54V3cEsSiG5CF5_EVeFJzAzQTGd79k-AjLERnGw7kNMs4LWMhPS-00_R3nRt_OPxiVnSY_vNyT3HHpf8Lf7NQnZQQ7jM6d3BBSmIUlvlECPBpaVgP6oc1FKSkSPs-6DGL-DkJW3Xo0WlcJKwl7rIXjCrM0t6n3ioRNkxBOg3grZKqF12fnWOn-jtqr0V0Iw4Lf-3Gh007OcyCIy1-RENp6DXM8JKsg1XwQTo7OfDfyf3ZSDWOLan4L6hrHPXKBKtk0m1fJvJQ9dwEM3jzPWJBilBQDI_09Nr2MCbLzNTGi2wzGMlMt4B8u7g6B5wmRWKDZchS0pSFgP8B6maEEZ8JH-c6p7wk6YfeMEC2Ih-KN9IEUvnsh-b6jj0FwcqtpWKlHBJFWJtGnXMT8rDuYX5Mm_-lAWornFLriTA8I9uu1ZOGiej0pWVgoQVWFawXYkYuoZRW5q4OGBwpiPtZIYAyDoZeAUOu7FAqrTBA2NfYfJr9vsXJOaDiYPDHRgf9IPb4xQHM0YSgpvkCDTERAkFVgQ0lLemlf2qcUXjgmQg2MNuI1NcMCu9A9o8-g15M6Sswsu2uLf8PD13MAUsf2bSudfdKaViZvkMCJ-VgQKsy2y-9J6nybC5tzJ9S3yfnlqMyHkbrxFAUf7NnocSzZcRtuRUpuGZsx20gb8xHIA7aUuwd41zsDvsOUpovILruvtFXnA2_18wbHXFKUGmKPHYYGLsz3rhJNtjs0dZF8EDD2XVmxsow3EHn4CXSQkJ8x3D5sDdyQE74fx_9l-BybhGK0-Ww_qLjHwwArVN6GcDacya-onH823CihgmmZKN3bg_XP0Q1c37IUApEO-R6ywQpAOWGv_re4uecj_1jmbBAxwRcvCNpNSwoGTm8_KSozpV6-vadvp_RC3TDHkH7f97yLxJ7ROIt5J8cQl-9eNJBHtVvWv0H0oe8V42gg4FsXB7_Fv8Ou9YUFWaJYb7FVU3IyWGVNYJyPoT662ImG2kQQHTzoNdHPdqTT_kh421XyfaJINAHA3KzKTcOq_4uNp3hq158xepsHM8HLizQKPI_oM3qvpSMxj-BuMVfkDGTnsX-JLAe3NA8yuFiZXyziuYw6hC4rMLuV5UTNJZnGS-3EEGSXXHCfghBQslnMt4jDj1X9FYwL8cJCmPPC9sEgpCfBdPYZCJUjoxwd2i4Nd2vweECi1KOOoFCdmTcDcp6WmlQxv06XLgfCiyC50yBmqw034Ukq2IsrYFPDsITQIQG_HBAe6k-2dxanLxJGlZK6CPCx2MKGElRlIESSqa99pCuUgzdvs-_ZbG-fjr42LTHtP0hHJy_ngCjrt8IgDmUKI3xEvlXZRnxnp4jkH-7FwZoKkh01DjFYkAscw5BjAlcWFqgQFnqle20OyaUTMaYIvjf-0ZUOpGi_wab0RYW1i5s61xvKyIk_2evZ87LyS57WccbcLy88MJ26kRxPMf9rOcEetd1aZxykk73d7A_pj7zxIrvjeExHyxUrM0XFgLN79kvoEAhyhFdZ_FZItdc98yLjaToxZPORBhTn1w0nj4spz5FjshbItFfVLfGCsAxgxRI88AO2oB8389PNPMe8tA4uMPMC2PFTqK795Hek8Vos_khmzeiXwo1BQaVfwLglOeKhUBAuoVvCyh93vTjhapy14oMAt24rP1eeHnQjee5Lfb_8p3gXOMQ39yxQ0Ts32B-CfxQzbPQrRQtJls8Y6lVDr0oOFz1gMHDWRrzA5z3tqHpj0Cxe3R1luIIQ06DHrv73dswQFCY6mYUsMfumIz3WAO0sa7s8fzbGRpG4zcA5_zxQpkwOEmTbBf8n_7vCRaS3weOMVJBuNSJCiQGBHR2eESoSSbV_ESxcoPGf-Wz_Fam4chWBty66ZX9gMqaAE1zWKAGMEF9zlemaUpKjF_NQJkTSbvh94a6Rtr-WR9QhWFzNxPBPIxItxGb5yNTiGZ6Ie-tQJE2Kyd1SmcfUY5fJnCdItfpnyXL4WSAbSsob9XVg4Op0uBGG4yXL__kme-X8WI0wABAACDV6iueeDk3PptXUV0BSR3PCdB9sa2FWGoPt81rhXS1voD5ApICH0CYlLLFnsnBNNi0fB0f7ZKC8y4286yDEl0NhkKDvq2n9HkwBGA_oiFOcGotvk5QXufiP82pBzLwQOow95Fx6OM7HK_uPVjzxxdawXQgSdHoQiMJwbUK2UYbfr0iYvGr8ERELWRTOOiBcZYsSsNhYHMvwVW5ahDFqpCiW8JJOq6gjlJmZ3cvwVWD7kgLmJXMnnRqtqaYl9Uk0EBEw6CZI8R0Fprd4sn-AM5SIgL6PkVm0AsR9FkBxFO5F6x3-DMWIZnbpEFcOjgpkwAtbmPtesiKe7w_XeKXSYKPfzCM5wyVZ7sq4BZaQSMzOEOgpFp7_W4kjVZuWL4HvPBA0eaJkqCCnO9CvTPynRPisSgqY5zcysrcKLAAHSQ247c1yi8smlgYsFznlptT_2rAD8h2xfxUSv9KDaokZ9LROVtS1pGJumZfwAKuHqEis6B5GAG1uZw8SgmRDB5-_dcAQWOP6jgn5PBB08RKA4xGMxzHTTF0iQgF1HMX4ScdvPmR2tC1g2_z9NYw5VvHewjIQTVUgKhl6WkLiggz4qCItjEQ-sQaFctZo2QgTphAAhAPbVVKGmXydWSPn9-MLyRxMEFd_MFPx0xEKWUtWopZnXoAnB6cuRUlaR7Ex1bd9kSJeRT-zS9vg6SmVVeqqF10HbBydZAp2CPsaAXMzrohNXkjT1tHa5DFsGCWN8Pl96gZ4XU0hcy0-v_g66wmMXmP7XBBUEh8wlJ2tg5_32LC9uz3mUecfSbUnNnM7jzPEBx0MWh0T5W4oXWkjl0JtkiRFaawUveTNuckzEnkGqxWKC3Pfi-4_c19f14CGUzZTVXhAWYKQD15Ldl65r6xU7U87dFAQUOHcEY6KUiQ-xEZztcLU_KDfunv1hTy9IE73SiYpIvhvSeus46KY7z9D_G1Hw7nQFhHgxspVLEjejdXY5Pms0wE_YhQ-bkrCOPXpnJxE194xSi57ykPsPH5TBygVP_fwEFAdqOPwiKKQ4MV-d2G2-omn1DCyqoL0Vc-bvCee7FYytR_RFO2_xikbrBZwnj_buFvANP_K1TtKf04nY7mjKJiSbrTdpywo8PvxNB2JpBD9gkVPuA2oMFvUFHHownN0jBA9yWmiKpQTY_ZqT2TR2bmCTmwL3sZEdPVl0oaBlPiFZbDTLGgF-4fBlm_xZl1OiAhj4KxXwB7w_DqvCS0V34A0o-Su4VjZzaEqO3cTuPCBuJRfnExkN0QMMtx-OMPaumAQSyZ7-x27l3q_-q2ABDt7hOImYxGar-1FLvfxxmv_aAUPWCKHHyEk-TpdjgaLYs3EWC2FD-DNMegViiW_kEhe5hNwBo_JVCn82HCUH14yb3mZwFNe2vAp5WvSVoSdkBCgEELEZw33U_IZSQ5fm0BtguhMiFPbE86oWsZYU3cs3LiC3hW-hEBIIiqIh3zxWg7Z8AcaoK_0hQeGI2DANl22GKyVTRdHgB6Vv2Ggz-KqB3NYkLJ3AirxooP_x_mqVVoIj"}}],"authentication":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"],"assertionMethod":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"],"keyAgreement":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"],"capabilityInvocation":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"],"capabilityDelegation":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"],"service":[{"id":"#TrustchainID","type":"Identity","serviceEndpoint":"https://identity.foundation/ion/trustchain-root-plus-2"},{"id":"#RSSPublicKey","type":"IPFSKey","serviceEndpoint":"QmdPZgcyqHJTiPeGMcAu2AAkZZ1U4KtdQXid1gdJQtpvyU"}]},"didDocumentMetadata":{"method":{"updateCommitment":"EiB8B_LS_O3NWo2P8fSuRwS32GODaXoLREZHdqpg6x86yA","published":true,"recoveryCommitment":"EiCy4pW16uB7H-ijA6V6jO6ddWfGCwqNcDSJpdv_USzoRA"},"canonicalId":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","proof":{"type":"JsonWebSignature2020","proofValue":"eyJhbGciOiJFUzI1NksifQ.IkVpQV91YUV2QjctR0FyRTlkeERuMk1rclRUa0t0VXN4eGJPc1NESzhwQjl0ZWci.X94wTgzsovLEAXU1CG5M0Gqs6Gu9oHklr4Zn7aEbrdtOI_WCSCrWJuYomkcdeF8X5dV_ApZ6Gh08pPcV2VSClQ","id":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A"}}}"##; pub(crate) const TEST_ROOT_PLUS_2_CHAIN: &str = r##"{"didChain":[{"@context":"https://w3id.org/did-resolution/v1","didDocument":{"@context":["https://www.w3.org/ns/did/v1",{"@base":"did:ion:test:EiCClfEdkTv_aM3UnBBhlOV89LlGhpQAbfeZLFdFxVFkEg"}],"id":"did:ion:test:EiCClfEdkTv_aM3UnBBhlOV89LlGhpQAbfeZLFdFxVFkEg","verificationMethod":[{"id":"#9CMTR3dvGvwm6KOyaXEEIOK8EOTtek-n7BV9SVBr2Es","type":"JsonWebSignature2020","controller":"did:ion:test:EiCClfEdkTv_aM3UnBBhlOV89LlGhpQAbfeZLFdFxVFkEg","publicKeyJwk":{"kty":"EC","crv":"secp256k1","x":"7ReQHHysGxbyuKEQmspQOjL7oQUqDTldTHuc9V3-yso","y":"kWvmS7ZOvDUhF8syO08PBzEpEk3BZMuukkvEJOKSjqE"}}],"authentication":["#9CMTR3dvGvwm6KOyaXEEIOK8EOTtek-n7BV9SVBr2Es"],"assertionMethod":["#9CMTR3dvGvwm6KOyaXEEIOK8EOTtek-n7BV9SVBr2Es"],"keyAgreement":["#9CMTR3dvGvwm6KOyaXEEIOK8EOTtek-n7BV9SVBr2Es"],"capabilityInvocation":["#9CMTR3dvGvwm6KOyaXEEIOK8EOTtek-n7BV9SVBr2Es"],"capabilityDelegation":["#9CMTR3dvGvwm6KOyaXEEIOK8EOTtek-n7BV9SVBr2Es"],"service":[{"id":"#TrustchainID","type":"Identity","serviceEndpoint":"https://identity.foundation/ion/trustchain-root"}]},"didDocumentMetadata":{"method":{"published":true,"updateCommitment":"EiDVRETvZD9iSUnou-HUAz5Ymk_F3tpyzg7FG1jdRG-ZRg","recoveryCommitment":"EiCymv17OGBAs7eLmm4BIXDCQBVhdOUAX5QdpIrN4SDE5w"},"canonicalId":"did:ion:test:EiCClfEdkTv_aM3UnBBhlOV89LlGhpQAbfeZLFdFxVFkEg"}},{"@context":"https://w3id.org/did-resolution/v1","didDocument":{"@context":["https://www.w3.org/ns/did/v1",{"@base":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A"}],"id":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A","controller":"did:ion:test:EiCClfEdkTv_aM3UnBBhlOV89LlGhpQAbfeZLFdFxVFkEg","verificationMethod":[{"id":"#kjqrr3CTkmlzJZVo0uukxNs8vrK5OEsk_OcoBO4SeMQ","type":"JsonWebSignature2020","controller":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A","publicKeyJwk":{"kty":"EC","crv":"secp256k1","x":"aApKobPO8H8wOv-oGT8K3Na-8l-B1AE3uBZrWGT6FJU","y":"dspEqltAtlTKJ7cVRP_gMMknyDPqUw-JHlpwS2mFuh0"}}],"authentication":["#kjqrr3CTkmlzJZVo0uukxNs8vrK5OEsk_OcoBO4SeMQ"],"assertionMethod":["#kjqrr3CTkmlzJZVo0uukxNs8vrK5OEsk_OcoBO4SeMQ"],"keyAgreement":["#kjqrr3CTkmlzJZVo0uukxNs8vrK5OEsk_OcoBO4SeMQ"],"capabilityInvocation":["#kjqrr3CTkmlzJZVo0uukxNs8vrK5OEsk_OcoBO4SeMQ"],"capabilityDelegation":["#kjqrr3CTkmlzJZVo0uukxNs8vrK5OEsk_OcoBO4SeMQ"],"service":[{"id":"#TrustchainID","type":"Identity","serviceEndpoint":"https://identity.foundation/ion/trustchain-root-plus-1"},{"id":"#TrustchainAttestation","type":"AttestationEndpoint","serviceEndpoint":"http://localhost:8081"}]},"didDocumentMetadata":{"proof":{"proofValue":"eyJhbGciOiJFUzI1NksifQ.IkVpRC1tZHk5UWhoR3Nzd1lNbG9FeHR0cXFNVHlEajhUbjdRT3RpTVItalc2MWci.LutefXAigkrHZSfNkz7JQadsyTAmLGU9KeT1LDtUfs4jslp_5xfz_Y153fUTs3WiQgPLUdvuXHFjQ3INP-OfbQ","id":"did:ion:test:EiCClfEdkTv_aM3UnBBhlOV89LlGhpQAbfeZLFdFxVFkEg","type":"JsonWebSignature2020"},"canonicalId":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A","method":{"published":true,"updateCommitment":"EiBCBZ5TkPXA7i0X_bgcY2AR3Q1mOYOdpG7AREos6GxZqA","recoveryCommitment":"EiClOaWycGv1m-QejUjB0L18G6DVFVeTQCZCuTRrmzCBQg"}}},{"@context":"https://w3id.org/did-resolution/v1","didDocument":{"@context":["https://www.w3.org/ns/did/v1",{"@base":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q"}],"id":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","controller":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A","verificationMethod":[{"id":"#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","type":"JsonWebSignature2020","controller":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","publicKeyJwk":{"kty":"EC","crv":"secp256k1","x":"0nnR-pz2EZGfb7E1qfuHhnDR824HhBioxz4E-EBMnM4","y":"rWqDVJ3h16RT1N-Us7H7xRxvbC0UlMMQQgxmXOXd4bY"}},{"id":"#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA","type":"JsonWebSignature2020","controller":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","publicKeyJwk":{"kty":"OKP","crv":"RSSKey2023","x":"EyGvw3AkcUf2TZToBh6pddeaaocmvTuLCSLun_yYJpL7x0W3gVEzeKlj06J5Sej9Duk0W_yGhbOKCahOx16LszwTHVgnH9FjRk0nwOer4yKaKnjTZ2FlZsYI0OI__jhCGP9cbcOEd-1rfvUFu-ghsj6oHfSXDBm0Ekplkgs1IktoicuMsF-bD7I6tZRpP9tqFGqARUqvR2daQN-scwYUNsv5ap3XakBCDvOCBc_rPAwzapY_nuC3L6x60UGBAPtUBANdaMhAU0gxd-3JMjcSjFgwzAhw5Eorr7bIp1_od6OfBRYu3sIkij5Es6RDBLghUAx2Z3dznniJRh5Xlx_8zn4SYw_xhV1X04vY5U4O7-7veKMqKxzzoGOR7O137gSTtBk66ISXfE0k6LLsZK0Qkzi0B6YQ0Xo86d-COFNhRWQ_Lq3SCSiOaJ4lFP5_RVlHzgUXm6XY1X0jrkVPWdT42VxGjFvy_KX9f50dOkdPJTax8bGv1nEpDm-55UN8nrIzsRODaxMBooRL1y4OxyW1tpHaEdsoHvsZrLzM5g7FB2ah-62TCGkPcG3Yx84MPp50eRPIlj2omMFxMpnAZKBSRMGtk35A6xAZUI6KTYGfNI-IuWKdk0UOn6xL8W3EwMTxRgx1v7iklbgxKuCBoOeAK7FhoOVzL5YnUCHb1NUwAxDs9I5pNmrvaXsDDLKLIoz50hRAdnK92whifFoWoJOOJbQTb9sx43zmB1J7G_T28MG6UetI4dZljoNfWpXePl3vNwW979nNg7GU3N_V8ZE_slRmUv-rAw9jD0w9KXVCuZuwGIKoJ2Co8qjZxnhZUtmi3wFJin73V5BC684ebh40fnA9z-H1Kwa3ItX_mQSVYeMV-_1fydNULsdhlEnpwI5XNQ25LGqMNb4v-YRBXLSmN5CituV9rPXg5ZzQvy8VVE9qxWnicCxz2TzFrxFOOIhNTxf-YQT5Re5HJAvdy7Y9szo-i_PgskFdVm4UxMgH9ddrFUhDPNmVtVY8PoXlMzuU6gKR-1np9J6FBttHOIPu7LFFdO0Vd_Y3-Dl5mdBXFcP1Do1GN7ojcuRUB4rmB__upRAQQsqCApGurtGP1zgtMQm6ozF0gt_JpoXgvZEFK5kkm92vpedrSfDPBBn5NPIgmQgKSYfvmWRmADyr2J9bc6EjJr1-YD7QR1r2g_eGRBE1S6dexWceWTq-RktXQYOSJBnKLSkbqJniuoA70BMkjU4Jsj1EJB7oxE41RRMchA4BRlClSi31ga0T_bk31rNTLQNLGSrBrh0x2nlG8IZUZLB4fIKKweFD9pL1qhLMM-SQl3YR4-v2wxjlMXTrEDjz2xdwJsQhhzM5trtqhVdxfgBwB_ZBtU9KJqYvkB_3BhY3kYQSGDLhyCHbjyIVYl7saQGkTz_owGfj8tD3gU9oJlZHDyjf4p9AObfF4YXKjVBpPrPgwgNd-G4LAgUOn4DAVwGmGBjQaNWiLet4g4lRsLS3LkM1az1w_KyYCX_k9bptp4qLgwV6HqbLx1V5WkmubxLMpHlbV0tZFLzwThEaKpqNyz7M5qIyDvaSbTFtQ9feXhRHU7VN1MgH2AQmQzHiygXHs5qafdGSsKoMm6c_6R2-NXl3asM1TSUmD82yKonGYhSHHy60KvB4M2rVTKRENxR93u7gaYr_4cqFY9LlcqGUMzxmm6TadfSHz3rSj53C8c3Z3U9x9ftbKGOZeybdWhYbRGyES_HzmlXV5MFY5qHiE6INi_ao7Xxm8VRi5rdaHlVDWfBb8gJENbUHDDcsKQfae-4j_vXmvq4s_9L5It5kVLCT9f5NEf7jsxSP3mg9hqgwdY96ob73GsHO3HRoQARhPUt-2o7i1JzScqRH38AeDr9XnxC2Qu4LT6ffOmMKzA3qngyxKmkvyKmIl3_eEhDxpdTSf2ba6EGOD2GuzvGv2a_P9QHw52mvtEoCLNJAslzsxwxbLSnLIOkbJca1Ew26womAjSgnNwUvPCkz4lmSNTbyF63wvmNJJeD0UgkBTb2MxDw_39ukWvH0mOSJegpmENWzMhvKvxxMgB5Y1VY6Hq06V9mcg4iD0AdI-dM646yU8iLfMAAkB-EvwUUMXRE3KGU9Kx6dqhsSCrow4QDpzk0B4FCATLwawfGc1_rxQyumhF9nagl8jP1ITcLi-hlUyrOsKfSK_s3WKTw4j9iBoBWCzHrX1YC_2UTnq5XIdbY9tT4NajRzqwKLV3aYWRnqXLg_-l5k0H2GmwmRnm4ZqU-9YuAy8MQR5CM93H1gxE7oL_IWIyH_tCXrVH4hRhjd7GrWcA90s1AFpCHhBZs72ORxG_Rh8VcJpB5cTpbQfk1ESme0-UTXoSnuLPfNIQb6I6fwFkIvBx9YL7gxaVmjHMgk9BLR89iwuo3VsEsAs4ktbFfZ70l821y6q_xmOBPF-BxJzlVuHMq9hfyYVA-1ka8tBBeEy8NJ1PlYBMiVjHoKWMfqDKo0ONNv1Il_ThirUq-MM4pc0ENOqwCYkomNBFfFHdbS8L1Y5yIruufFxRbRPt6xC1TnDtq3K7JCpRjsTqv_1_u81WA4UIlW49NaruM-2lPlL6P7rWtBqG4axy6U9WYqom7aXBW0cbg31hY39xZb49G_SfSYewGr_pelurFdTag1R3ZL5VuDTggqErrppxKIBYHQP7M_reJ8fQf4JcXOmMkUOap1K7QJvvENxlQ_RQRj10d-t9spgDv5gki7uMDSA3fp4q4gf3HxZhYwPaImQ9J44zCCLUdo5dyhHsyd9neEeBniNZk5LDZRfX66ERlj49CO2dHmHLe-YQACZnMQDDug7LF0il3QHinPD-nedAAxpjfUus9Ay9vRx6nB3fHr-_9C76qx_NjCehMZHlsAOgZGU-yjdwY2uu8lvnb8dvmCbkIBYn4S_aWJ0qIOEjfWuADwWO9BXI5uzQZ0EhKuhALABMhOIi4pmnHqCE0Durvn9RaPiFz6ZKFhW2d85ZAkks_-ARI0phaKzggmB4E6k5EV3cLqkI63Oiiq21QY0VCvc0LuNoAVYzG8s4bx3udSSORrRJm2fOdURg3wtPlFq21m_7y8D09xKpHkXgEbuDJV3hWk52u0Rxv1MTY2V2_LkHIDF6my-MZLQQh0dQYnUjDfvQ3bTqj6UE4MZ07R6UZzl3Vjw53lM2x4gI17Trma17Ag6Yg6XiQA7QqgXKWy3jG6AuBLjuYRPeYo18lJm00D1D_Z_C--D6zMJKr5ohYrTi4ea_dh3CI82xBNwjeTAd95r6X0wzC3xodd7FSWJMCgt0MF6pz-MEL_jNi6sK9mIn05U4icLZLjBwl2lObaoiYxpyWEpnuMGy8J7dM1Z_aRpYt3J-Zw7i3Yf4JI2JV9u1Mo-ywQyXgRcRBhK3emrFT2fxH8SqkKwJCWn7frvbukOzSQiKD8RFuXA-SWK60mJ3erCRnka-xkGg3AiBxxeE8Prk8EGzLcB1UDRGQ_x1PXmMNtdBK65dtv1b0jGTM_uSHFndWXOrFALwi66JGyIca2WnCfQRQDR5EPyD2d2Naecbj_jMwFUsbYCxGTc76n46c1pI_QH1rxDBQ7j1Tj_rcQz6Bk7DMTNnlTFhJn2h7yVnoRPenlNCWZWZPRpr4vnvS6Ii30os5W2QaGHI_TqhhaXRFU8Z7K4PUUUVEv6u3KIZpvcuVxAbcx-ppLVkj-r2vM061Nx9aXEBFd2whV1Tw2rjf-6fm10N7U3ssLGC6sfHRpSVcsENk-ZjuYH7sY-zmN7Hf8zOYHIAZDUr1rjCgG2yCujbdOPFtPs4QKC_cFSzbpOjRmJ-urzi7duH_vH3_TBhMzM4jowgM70l1LoB9sjQ68wzlaAs74T04IroWMULoZOdaeIS54ugR79EhgqvukrIDLEoCekAY7jAs-iNW14YRPrtdul8zVUjLd4I_X3efx-IX7HvR4RUp-6lqMSN46IfvlScl0qBY_SBgCpdEw66SRo1OAIAuTy7VWX_mbvLtgZPPMkaVheFwYwBZnBLKQKyJHrNrKRQ5GdrSnJP89jdh-o6VEqG_whEec3cB1LwXipXb6v1vi-7jxU4kpU_BTMtEChb21tRhmfKGiQxHbOTRJbHVoQJ4NFlS14bTYAEuJm6yXnIW-GOVCLvlHShp5jeWc_9vvvBZnk4C7bDxY80GxadNmsKy_-AcEFN_QI9pt6lckDeTOQxgVz6Anz58RIkvJ1oPL8A5FZOl4iYuQGDAqTP6Yo-SdHbuVOuV3aM9K3L6RMgj5Z9z517O3oqsmthQdy5xtxhalD2bjV4fNsQrsXIGuNa4nAnFtfsi0uN4ahR1_YYVuQgfEQLOGSzJnw-bQ7m8tOxlDOP4MsXg6BFSBvo0LPwieTdNbZR_N4FueA59bt73HfANTd-xz6ycnZNRNO9DbxBRwXJnQogguwZQdLLLuZjqoglKwi3gmMHvCR-3QngZYQw46vAkTUuYfdG0OgaYuAAqtsEvJRaBVSud7q6pgMqM5UbG9eWv20h-bMQeBEpIuVG08HOEc9TeUzDOoE87PzBkfBqVu_s1tyItQQ-DqSvfCQBobT1pYeVsuyJSGXuaF5MXooxYfRpsAuysjWDKDNxAarmMCpioPCo5ebD0elYa6S1KV52RN15vaAZLPqNRiFkek3oy_M8C9Fi2nLzXG1Bjn_JlKzni0I3pofwFNE2ZJnoLSVpLwVLQUzzCB5GoS5P5C1DcPDxpjAr7e8pWb0QAyyIuz1EvSssczBargovo8iNxthV_MgoN4UGY3RtkDRyw2DPcFdji7AYXw_q3xlxXsWEZMfjTlkG0FfwSTHbhrL-BIXXw1u88y-w5SvjBBwk2wW0SjPVgm-qq8yonWXhnVfu4xRLMY7qNRltkzyB5pQ44rJ0iFr6tXtKus3rUTx2PbQOPNCYJynCWQnA8anAlOiTmIJV8G-MYkP3hH3g-VZSnWE8gQhbvXy9OY4YtyqX96TXRGuHNuZBDEHiPmNAvKkfgVdGE1xrxPnfZ5eN2RQWXAf5a8xgISY1bXxlt1prbFSiHTMLnikDpYNy95JBQnPEqdIYRhgzh29L_RQpIM2ItE6rPrJCl-NL0Mo3YZNdFepgL-5uOjFilpmO_EfAc06pm5sP-g6S3vOx8I9j4JrOnhygXvZx4Mr2D8-R_7s2F5QOYKCpcYmhKSqaPbdAX-q6oNQQ3fesRtmDJIVbBmioMmu5k3C8hh_L2RNAe6ItXT7XVCo-QFQ8fiUIOMWASrYHiy8qsbX4kKQJ98v070GnqCMpKVtB9522SHxJWv4h6Kpsmadh9WjAmzItl4tRV763mNcLeidWzlJFUcfZIVm9OrWbHinBUjKFnoeexpecTm2ncrzpUkMmJghWKv9hUzk6wGkQhsps-94GvQJT2ou4T5xLpeATQ3oenwez9tEwxQ07tB7FHEiIBpA4PFExNwdv8sxaEe2Zaoakh1iEjIbd4uBcEAd_E8eE3VSEPvB2_zT8nek2I9pcHEIHA52Q2_j979f-vAyJci99RN1Va8nvk3TyMz_g6OCknUZcqkhXK3lqigvhkUBl-IxjWqagdTwPfwGPtwV3JT71CZDfBWujVMLPGB_gT_dhsWlIN-sC_yiWL_thQrkgKFPqXPwQKCyz8r_iv4f8NnJIh3W6_hUURFsnu0NpVAlhi7iOU-B0cqk1NHN9BgNbT_zU2aVBEFBrlQetG5pyxxgyDSvrz-igEzZ9oqa7-EIgNv8P-0T0IUrlCIQSfPsiAUsbExwg5JwdgdQ_gD9HUt4U2Npk03XtaAySY1IXJCXeJLp0OIcc8hFeaiPMMv7Caif9RsIxjwnikwLFGtpNy70Ed6CkTMtxBR4uShDzbSz7Hk90gu5-jV5WGysOA9AbW24iqgfgCKjrjgfrod_MNG939PdD9KOV0x3MqbZJmBLB7jKCINC2ilgH3Ez4crHFZJEkuJ_Qq-KDXW7l7hjHUG_debtAu6qI1edYP09UkgmQtnZgLcGAWUhDxWhdf4XYOHfqXxfhiVu8tF-ly7iqWkmRCqhRGV5NmzUWuwvQ8-Jlh4kRa7nhpwb7ivyXiDubq85_tKuha0qKFzzz8gFuiefICHX_Uy3xM8m6Gy3KfYirumMAkuB5-IY7Dgr6IZK8YXGLZb3QEXmOjuwp8Rmm-bMnCXehgCJZplNtcWi7eQxsP4y0IoEUsmmC5Y1as1sAs8-R9XlxBfP3hdGWbOupZfS6FmMRiGD9HoWesUSVtRs_tgOUPPVav2HRIK2CLYBRwgI1NaeRcpnO8cOye4UgRm_UF36pi3hJPfIdCnhxGeOH5J0r9zYEnTDs18YsIQedQOJ9jvGBLvDi8dJ3NRzof0hk9riVtSPV7H2EKhkEL67E5pccehsmZnha0ewYbZdgEstjzjwQ6qkZRmFLOBdP11yCDzgs3eDmnk0Ztewl22-WhhpumCfNgux5OEtcSu6hcC_gtsXQgTm4QV09fFZJAH8tyfFildcaycx0w6zG_tT47jBYIwVyEI-Mvv08qYw3ZN6558VgacYehFWake3ahdjDxZ8bO_tBtLMrFXmjRpibEIYbWZW2OPgBv-4-Z_EPXtLrDpJxYjD8bUxNgxwyqxAlyqZe0FUQVo1RTWV9hzvj4GcOG7wC-_t9aEEv5h9hg3sQXBxwKwIulPSsJlAeW3dygypohfIMKiUdjDERwhgvPsvB_vsJIaVpN3SJVfNWvMEFAIRxl0o0b4upYbISICcxav7YjxARlPcV_nqG6Lnj9-6MtHOzvmwMWpcM0Y_FFro9TqKAj8TkAiGaEMYyJ8Z5EMAsGd32HwMhmdeJbA9TxNpC8CIpeNlU0H9JeSDR3bl76oGAPDIc7bDmfKjcCL_8rZamAaZucmCI4Fkkjaqyl_k0TOHrxrc8EcYzbICfu2Xp9j5Bl_w7GErvNIbMsbJejezsJxt6CR71oex_OaL_DyxGJE6bOaWZFwF3WqhVWMoMEuRwy4Z11DIsqZ2pbxyArURVFG3mIHnBJ7ffjxYbofuuuw9Ce3S0W9AwEvXRlquPr3-wLesE-Y09JL2x63dPrsfx88itwaKSyGuJyvqpTu8NwpAR8d0bU6nXG38O2ysH6-xwvDGoeApjhGaTD71tv5hYcJj1X2M-GeWFi74NjG-PYBkamWVPk8v2uimVuB402YMgUAe5RtZcKVUfHczIcj7IWreTJr8JCLl4N_X48ji2KDuBuuaBRBUYdjkl8ltWE-AQzatqUi3DF2ZDEjEarQrk8K6QDaHNbMAEQwqxIcKVB7rX6pwR4EA2xN2VYmCskYAReAbKYyzbFKgx-_kbylwjO1CMcDTdhKYHnfEznxeaxzjwopfWQR5JQ_y_4OExcY6gh_FHXXyMOQdyzdcNMPFOZDvKAf4PiXg6BV6VVbvlssgImhEbhyfKlwhmbHkrD90BVSZOfwp0m_zd_xOfwSYckSwo8ef1K6DILkCmiUSc9wiCBBGHF8ex_0u3nepPICWg30NqJPii7moRYlXNi2hKgTB2Cy1njuP9pNFSD-8cOxrrAoAz6SaxdS4QqxjykSaRko3FibccYcSE_fkx7_WWBSW_1GOKTqQltkzHWMqTbu3wEjBAbnQjYGEWn8aTNzsAh1pezmZurCOdi9uL-cjIVavKPn23HhHGfS88f3pRdohcdlszyc74acnD6VgT0VnArfeYPNBWcliVDnCE3qYSvter4l5Fe4rH1qDISEq2ni1-uxNRJx6Ck3-5bWSZxHAgvc_2gC2O5qc9TU-akXvNSqLmNtKmO2FGFtBltwgyLc8bVWAJrNxuWQVCUxXlfSkxaGXtN18lGJX-SvmRn5IsqfhUitHzJjEASiI_YOVY9OoGEkK1a532FFGdO00mS07BQCPV0w_gldLncCOgt8VPaB5d5SjOF0_whIcVAIY95y5MrZEJWcbES4zg_jdGb5SRLlr9PENPbne9VYK4_ju-MCFNo0uWibQJzJcpaKU2rZ9sAsT2goR_lu-aLGCdeimhRmual5ISX_tyMRikPCDidsweqUeRzPcriSIRDKLcQfzA3P9Lt_Mo0ql-l1EX7TcwLgCsISBJ39jyhHyPvNPbBAFAlrlF9uRhz_ATonpUwgZrQHSlpsy6Mzh-O8f57HKQTRT0VigvfIeC3J1TR4EzLkHUdC7QF4JNlprKFQl-HUh9VIOpwXfQ7VwhbxUw-MThAn8fnFAKqd8S-4S76Yn4Ns3B0FA0wlDWp9AvfCSlm50bQHUgj8FEtwz8279OoIhBEIMnA_rHNwA1gPMSAl8aU4RO4L9wTbhwVEs32i77O1pQS93ZeNwOwXXoquAAVFZwusOXz2C3jxzKzB6IdrA9LE7-ALHDvmxB-y9KUe-RgCfFgjh9EE7rdwftpCOMj30we1IOtQ1XyFSwpbIK-y6e6itkyx73nB8UicYQEQHDnl2UPtxm3TLUe5bx_E0sisng5ZV2ISypN4_CiyoAbUPCapdHnGLh5VJtaPPq0NGIVA88MkPxnJC_dTfsZKzNVDywA36U6dGzcSH16QoTfJ-ZcUJhHAKJHizKtLpdxpNKlSugnNW0P0XwgrRYAehBBqJAWrmDc2vll-f5KYy6AFEWfIub9SODwuu3j3yfdoVAjpi6Tvm_e_w18ZBYKjtRrAAg38eTrwQwdDDovzBO6t7xmJkqOxsCFl0tz0WB7YxhVMfhC6qv0ojnXM4XrhX482Ew0yMUB9Ql2_2d7u9-aM7VztBqRf9dtPj0Fc1WdfiMD1d72U2D5NukpfdO0k74QL4xFcEWgq0qAPT1Xd35HaQhe9KfUYx0d7KtbBb1BrpQ3zZWS_ThLtfTHOvGZRQH9bQQyFkx7r9Lnal_GmnKw_w-Y5ecOTXwxvtB_XQNOo2i02MTPLpYHXMCWCFB6kHee4fhJVL4yQnaac8WOYkNDZeHf7y15M6Ezs0ieyusNjY-nfeAuXS1kJ_lf-qI-1xCpx4wmOy-W4Y4Xbr5YWS8Pe17115uh3ZGN9n88HuWj_fzZ0BcrgsT4p5LvSm9lntyD3oQ8pX17phhk3xqItrnJYAq8MfnLgifMDl6XucGJj1rhsvVGfr_ccjSHxohBb0HWL6g16xEvKsXnQe-PHn8Djtpc9doxqWWC1QeFnjIFJ38TnZd2v6S9irKu2D-YTw_9TvgRZTHMLgHH7pdFo2P_-mrKP74-OvYkn0O4aUVAZ6-bCXKIZ4ZzFgt-aO6l6vyUUfhcVrQKcnRdrZ4_GYfiRdxlBL1rvcZAkVpH-iitAdQ4N0xFHFL3MO3MH_EepQXLXSgciWBbbc9lzJnd4GkCRT-uH1SKKtquXZIO28ERVLB5yD9xkl6-ch9qTYNnNcBDNSAJQeFBwCHB5xZoyuYfN9p5v40vfSDAoJU9A_3_kaYMyUBVaxQWnKjZrrA5hWy2fjRUnVpeX7PDyAyb6eZDt7dKlkWGQxvhDXRFeN9yjohquhDj9OSS0JlHsPLobIYEPThAwpAYAEH9aspydpQDzH5LdB8aSUzTmFvdt87KW_OjCX2bAvPUj7a8bhfrITHuCUwOl_hNSIaxUX9EuHEifvRKi_KnQRZvkTyN6Ji93jcr1wYk2FOjZEVdUfC_lI-xzuQDSVWUUl6URvL2tfzx5FxqScbNiq3xnIqLrNONk-p4hi1QvPbgiYvXevv6-KgoCOBN5b7E0KUoVcBh8GBPzCeP2EZwA6C9k8u55Ul0Y6dohgm5HS8NQfXCSTt7QQgchGBOyOP96JR_uRbyLPJ18KaFr9QTxkQrxpuks_tWBdd9QD7GN2MU26S9veV2mrWHNXBiKY7NNZjYSkfNyzvjsg3VCwvxU9kzvkozJ_hQnkOnEmlI8bu34cFvYy1Ms4X5fLwaFLMmG3SnAIwBsCz3HxzKU05NBHikuB3B79BGskfQK_Fe-rkahNqJgG2ya6xgeIBivC2iuCuVjM1xcVN3jM0VuwQOCIVwjPpyDgWwjm5rpjX7LfEzwjyXynX5OR8PVugx7bAFwv0UNcbkBNLadJmL5hZfeXHzgPM5u8M1_PEpwxRddCDLbmbY-Y1naQwfaKRQp_c6KwJtT3IzkOJlaYsUlEeoLQKfQI-OFr7Jy6N9-tP3x_0OpecilN6J7UQLOTQEIeygISrIiIkSQgL8m7YCl7cRejrq3kF9UutkU2OIJFseVIFtIKZL92vc3WSxj6A8NkX-yqQ9LCFljVw_acJ9tUT7tNyOF7mFKBQJPa92WpaOGgzq4OCV2nJs4GFYjXgw7uE2NjQ2i9_auhXryGm3uD3G29NjUQ6Lkingi5trDZLCzoFKtQ_-2tWnf6sC4HBlShllmYDfCCorSX3Qc9WvEwxLbRvNX0CgPCEoxIKHAE9UzN9sfWZLD6BCXAtERDgNqc458B3xIrpXpk-hmIe-Res9HtuS43LqebcFiHjjKKiBuUEBCSxSEYQPYdEII9QMsBsp9IoCOKL7y6m5EgCfQzA7hiWLlE_Xrppv625MGLzebKWzu8CP1mOPWTp4FYwaXl6sm0rgbAoR5XtNLcBazT83ji0Qhc39dVR0nFyvdSe9L-EFw6dbYUPPbQDh0hQVzwnXZYFi4wgX8iFfyvfj1cAGrQNfx2yekQfLm-vhGK_sIlCRVZf2bjS6rwAbVIhhPFuTsQ5EaYCc3QbvJg-slvxMGfr3gpUkMV24EE0dCemwKRyRyf9zH-oswETPMyAFTQmlx715Ao-RESnFuc1Ebl13oTofrWpye9ZaqqsGko3Cimdifa716i5Gkq2FJNQRRRrp979uFgzdwm2AL3Wa_5I1t4aHY0hFNXzKU5u7gNmtiTDyLSOIWLGfd44msxBYFSE9YqSdU-7KpEtOLQRppx3FR1TQooT35XW13oPp37k91Uv2j8wLJPAid7msh1AUWmpGiq9vhair7EUlZhnjNIEvhlTr6sIwFzsJPRl9Dy838w_UqVXhKcA2wJpTCjgRWXL8R8b6L7Qs2v0H554fmrK3qcTm1BgmPf6d0aeO9wsgj_cSO2gI6HgI4zL6PUQTsMTzhIY8pN8MW1jPWVa89yWjGjaanxKT6WyzdkCGj6NcG3Yh5UoKGeehwa_5FQwggBfzXYMIAK3swXYvK1bVz_68c3eLtW96nYc1mnOw0QmcuQ7ajBPpwPVqQwH1iLRS3nEWbxznVbgvcdHS1Sv8LcVU8htWp9JheVP2OCiGQPFFScImnsLDC5WZxJNohrxFO6HHJ_6T3py6zz491E_zWqb0B89YapQO7LKc_D3pU7_3-ug2A-BmtjReN5-I0QAaNX86gN5o-LNW8yl7DmVU8rDBHQBV7vZ4uijVQhDvpifKk5mqhztr7B82gamJD6gUucjs6nA9V8i9496A3dTMHdtEjeEIE5zkvtbLe44WyaDxa5KiwZikk137DL-hp9w5b2-ZjwrGqcNJrYwpTQAjHigL12EWMHKEnPEsSXqmYujeWGfB2M9_VDmSgf3J-XAZroxarSzyVuead1XNLHtLqQgT0Prh-PS1lDJ8jH5y4_JzNS6lN78BaEi-rBl-hyhXqi7ZEzGEyZVB-H9rkmCE1jnuQsHj_iWUkZFeE5wJRemTSNTxF_GqZrFTkTD68qxdtMg7nWns8pXHaqDxpWAFaONRj8JdfPCeJhQ3W9qIdugEHXFlYYtZLEuXAlBGkHQQlnL2XeZ5aYE7xDC2JYQRJBj8c5fYfusrnqBgsz4EIO5ewfwmX-OAJg2d9Pm0UVxGrXtTW1H277sVslv-2FcU32cZwwls4YthQ6fyoIVLzJTyMOYJUrpFW32r5tG425wn_Q8ezmTs90EKuVrvVo8w92JL6MDKA-orDvhvQ3beb9l7Sgc5yy9cb90rjD-lyQBgcDfJ0xHFnhjnz4S8t0yga42xeRI3r_mXd0NvRzTUHkedNMtRAdU-W382jaFGRBxXL_4YziKyewh_nGh6BlW9EQ83Qf0oSwb43IN4k6GmK6KKvwr_KiERaBougue7YpwtYyqCrEoMiEEMn-Sog4CeLzg6IuYx4awivB7VYGGGwU6Bwc2IkZkKUFxVhJK63cAwQX5Gcve_j_-WcRRGlUhI9W4RvFhQFpl0YfC3cLUzRQZfV_fWH2MIwrJm6y4VCHhnvx8O87qetR0kM7el6lY4Nrk5bNtCdBeoyy_C1sz--DjsmM-z9i9IR8PqMCZcX3gBry0Sn_js4Ka0cXPsKpM-GpR6L0CLxge1FdKNDSFUOacsiEzh3-LTu-rUUYglWzQShuc8_dtZrIEvVocirTKZ3gaImQ1M1EylwXITBxzCUW19Io1X1mxKiFpXKHtzK7AvEs0kdicMBNl1HsKSn8OH3jxwLSHI4DwFIGYBxCQ0vvG3NN5ZZ_c4OnSfQ-nojlgmeCjMGykcA9E__NgeddsOdWxnG3fVQFIiMzoJ1AtYnxHoPRbtVZdyWB3dX1L9AKxlFep77w6KS48z70KzKseRnKLa6OCPZwfXgP5kEKA7FcKwpwIaMPNxCOedtULYeDhclbLeDtjK8LA2q7a8elVyK6YRvseXaZ4-nnd7iLYLZNOv807ZLaYGm51X7aFt0YRTimfsQIGztdkY9aakmyH_XQkqPmlNa75aE4xf8FqLjwa3AZ9PcIS8EpwX_Vw_pFA0NJcvJxCBgY4Iz98FxssnBRC9dJ1aAn4Kd8lgWvHIXS974MFCCGhfI8RRVDl4S0QO7W6vrGTIZB1ngY6VHZQ1JG9NJOGtomR_8RNH98FwcPzVNUzy9AhGeKBS3WECJCxk_gKjcGB-rBogS4EU0BVCfxzCoTMJF51ufpG1k4eWlEiEpOqUYgUWAN_3XYWNhphToFLg-h1xmQWWUBiVS6tV-XVvEOgKCKp_b8dMJ_99civ11moW0s3XQpzbxo02gCBR9LQYl2OPBcoRr1bVQfmS3sljBMCgtj5NodsMpz-rIZtgbzdchFe-RE6QK4qaMwAUY0oldGd7nIW9V1C3hnGg0kekWG3JKlxMhIB3IbDAVQ4jRJ90_JbLVaj8v0cNmhAwT0QwIwuTJJYFDGM1fYrocL0UKFsHEdPGZQFnfGAeFoMQwUt3I6zpmXbIqWA0VpRYwiUwTTRNTSsH1_eX-LWUnbXBsOmr6X38Sf9SQD2giVwmji2KBw4GSfRjUsbae5gpgZZbTcXH2ZF4FK79B7kM3RW1yKHcMrT3jXyZKjfEee008n6CJraHTc2sBDtV85wr-TQgic1VgACOfee02nwbPgPGhlUsN1e1cBwTGCJiIthec58AQtsEGIsqpTwh0axbKUmUaOj7zuUjDTg0imRCdYb_iMh8ya-YUncdYTabPkBJYlnbHzCB7aXmq42akqBQTTTgVgUsrRy22Q9gn7CkGltOZRbiPZ4Oa6Uzu-CYOsK-0JcD1xUgtTd9icWNNbAg5DCHh8FhryzVmRa5VUkC81OQryM3CgKdyzyw4xSH3qw2HcCMu7VHbHYhvVEXOQQtSaedW6w1shQMbPRKt0Bf_n3DTiyvSsfAgZmA3lrhQhRzd710dzxxljzkbfYEl3Q3SKg2CNM4Pu8SzAcJj9M4WubFMqDirRgVIMgL4xthq9u4qvIGxTERgAu1h7xhUcA9f0IvKiPzBkfExW_QIYR8c9kewkGILCplgqOHbvNBtqK5uXJrnscBUm-Su8yfc3gTiWWlsb1KBm2qwj6uXOBWQ-u4xyatyltsx8AJlshq-YB-K5oJuvlwCXkeXkU3hqRM4SRwLng3VyhdL0Jr5HUv_M1ENVemAJCR1W_6IXWxbChAYiRUFVnGQMCf2Jx46eQo1sNMaO-1r1LdtVSJo4ZELftKu2X0BMQC-l9iQ5EfDT2VEPZvl5JszWbqWIlkr_RY4jwbY_OeQCkPaMxE0eywBeG5zjdTYzmPLm0YjmK5J-_7tjM_678RIQ8qyuFPuNRGFUClznKIZ-T7SYMtFie6XAQ6j3q12Mh4-zEomU1jIOcy2EzZzTVgrpmqVtZUB9wzPIsNtq27VtLz231dh2i2fAfAZHdvIy_7XQsY7-JWltkQ-fY41Dw9QOIhDb_KJHhFNH2xa3g3NGh1WxZIiJNfPXXH2pMA0xU_FnJF0uPEr2u0rEcTWqTsDgHk4krHglASUYsJYneG_YgBCHWWrGXWzbQNGYsZryPJeXNcY3hw0wO49CxV7gb56BbUNBvNIfgS6SogajoeoPTkPQAICjtAVhnrgXyIFnQ38zu9Cwjwqxy10jt04Gwm1Q6xAh_CNQwcLgtJ7elaM7zi9uEGFskPfZHF35EOhpMwR6wBoPSv0ESs8PX1_WKhYSakFyW7SewR86-W3aCDR6xznTr57lJB7BnDb9_fF6rjfysDLSjofLGwjD8qC43OlMNZB9m868hgZoCUKvSnTpVW0B2NcAoM8lgXDox6cxZPtDsW65C2fMFUmt8yqLg9MOB9QRvr8jQVvgQ75GPADaHTVbcDukGOlpWsE8qHc0y8sbWnBRwGu4lUVpyOe3R-q2Y9DVCPonQoeUt3r6EfyIPeid7GaY1S-jCTuj5GlZA4Ridz6yYYZmGXzju_OqZL9TpH14-DvywWaBu8ZUqvz9kVamnK9P_M-jTDn6iz2zy37xyEGtzWT5Mv82avznCG1l0kSoG7HPg2kdA2ngIutv3-sn-D4_H3_Wzni52iLO-5CdMjEHyo8IRF2gsHDwR0mkF5uGdXv8RD_b5KZtgMy91QfiU-h1B1OTDWxxhfSPDO00EtPBW3UPQhkMJY2_MdHzKiG6i28PRjUTIYDcQjc1RrUZFuBmD6S679gKEzKw25fKmSbk6MBIhBfV1Q0h9uX9RauUq8yFRB7mV2EQgMRzrSZd0LVqNtBcOCU7TdrpzJzk0pZkfmjIVGOAJ37T234ICX4_M28IgaNiluXWNYvW8j7k_nTy6-8uRVw30AJnkQRswmxllkn8sE8pfxq2ACMG6LhiwkUeRJU7QYz8GMhtn1HcppGw27GGLZDbd1fHQ-X8EyC_pEx6wcSKdLWOZJ-TOqBWCDHZAJJ44G9MQ_eYCZKj78LA5pooQ1OQJeno7YefrhaY7gsJEY9LqHaDBBrDYPefTlMYgHPkHKxgkT6QtpbAHN81lB5uiiN-o2HPIgI45ODYY8pmvk7SY5BVsu-lJ0K3KZJOhOsfQsoK9CWB37yZj73eFNgWO9Wd5qmmiRVbUyBrjWSXc_dLnbEAKxB08xoITcG4hDIO1TSbTIF1QsBKXbyH11lwKM9Gr3bGckU_ni5H49T8MeAx2Cce-oeZ26dj5jDGQwwwgRbDf_9eKjzVzH0MtA32QPr-ZDqwIPJlpSAIswVKI7W6-TVHeKdYjBufEUoVhjsJ2kZLNnwsgUPySarkA7PjTLxcS7L5eXTIzBWpcSqQfY6eII492F_RPgaAzRnqRW7FA0lvNcCblQJoRK80DLGM_oZajzqytR-ZgfJvWQXY5UAcW0ywx1hVklrP5H9hxJBM6LujBC-bfK2gatWTUNoo7ciIWk8WPKZf9jCnGd2s9YQhwqJfIoYWLYZj2obHw-WfedxSpLOl72ucoXM_UvtvSjnnX18plcNrQ5lkO4f23N0gh_oZhdwYeyeb1N-KADIKIdY3_6tj1AFOqN_vXTuFtEAilg5YpHC5akZeMvfOGunAVza3qucicsRDEYutxcXggArT_nUZa_j9X5lp9EItKRVyGjBvRa8VKDwoHe0Qq9JYaDk2zA0Gqz2BsXKjxS5eArOJ4t-el3UdlFrsrGz0IIM53LsVDnYFGo7G8sQWzxQHD3LqVKhumuL4q0I6gBmOZBhAzzAb-j3dE8MFDXLKOzpMXj4yY_f1BqaSVhA2LxC9FXh8xlYclwHgweVkA98obGvKfW4iMNKJza4tQ5A1QDFPDwcsF1biEPK0svQmSnHNvjhOBM_hRoZK1YD_RXmIYPWzJnULt_2Nq4Fus7QlP0m4I7qSxDSUe3Ly_RtLefBaV3G7dUa62RQJfXVKgbGQTy_64COJ89TVWD5LIEPW_LRrYvSjVlsMD7LPexlQnh6J4g3zq0uRHxcWa1bDQDUQYrQp4Ud_6qc7d7FoQqYbQgib1M_MIbRyJezKZJFNXN8aZWzAkSjR6Luk43uWgogzv_PLON19AnvbC-eLg3fE4aUvJAueCiTQGGFkBb1O2IW1kc4i8wN_II3s1TkjQ6KSvre1kN4YMOTk73lEcC6L3NcgOd-o0tPDO2O9E6I8FG4yCWmnFPjPO1FFmEnjAUSgwhEs4KdKbQwRphNPnZQ6dWsjKPVM5AfmEiLx8drX7C2NFidylmW1dpC6T9L7Qcvd2YbocFGnNv3j4ztPjt-9Z2Y4fZq-02HVNkkuOO5AB4TdPTftjgiGipnbMaBmgBNMwbxkzHuWZ-avaQfSifAvfuePdugEVjmjhcS0NQuh0_hZ-K8m0-41A-EqQ6kzgfYTwKuQ8JdIWawuYoM1Q0G1bJGpwQxG9DPDB8c6y-WupSOZ8c5l2pWsRVw7UJ47hHhFIsoDHFHVDBT9N85Y2SIRbttX2pcnKj3nw7aj6ZcTRwpNPN-Qvu8YMMjMUVV0QoIn1CEyhim0x7jqidBvcSHLamlTSqYvzDfI4l9fSA8m4Yar_VZSMYMxls278D2sxVIEjXt-fqUbXc397qGzvNniARzqZcqrataPpzQoOM-bNj5LEJJdYPqSsHioJGOkhFzWXu49UuMFYUvyNxOhrbUy8h1N6GKiGDMSwe9k9wN-5WhvfEf3wPAztWl5R4PFRf306CPhL-FW83zhBr4c1UxU56taoVNnJtsblxuTTDJr8HgIiS0bqCLpL1s-ZYOgARzAgymuZCRdaxTmK4fdFhlTs6coahCbrSXO9Iehq58t6uw55hGhAqMjVvaRn2TpgwtHS2jvGMCsLFBYnkVXeeCDwA8uIEvujo_WcIUiT7STSP1IHMyllhlhU9tb0sD8wadR8caAgHBe2CuuE6YeO4qet9JIzOLTd3kJRE9Ev7aChlmuuAElJ0o-ktfVIvUbwVAwiWV3X6AcMlmVR_6HzhwZvc64Phapf84hPMYXvnIxBSI5UbvA0X5nHU2lnqPeRlhQI0mKXvLk4Z60WTgGrJoz6mjUQNep_zG1WTSkLwk4zlLwupc492MMc-M3x-vYQBmA0J2OfXEZjnuqAQ6az1hF9SaaF87c_W-Dkd5wgzUEkoUA2kjAfLtSItyltjCzxTnH5gGs7KaeoN_9V3bj_EAquWTrF9Vdr0DyN3fVdwrjU7oZhp_CVfondyy_VQO2wtxzBICKDcgraDmcBS1Pw_VPEIXvNm0ia52zwDDo6h53kRiKECACeOLLwif-WO5IBh4DZ_DFsiuaX1dJyUUO_7vk56KjmN0QEHxaNwpvKMuPtRGOMWkRAwIKezgkGJ-GRLXbeAA_1qqT0hLDsqJUal65fXdZ_J-qEnJH9xThlPem3WrWpAYKXeVOLOCxuA-7wxyxO2DxHqJdxsvzd16aErXTcIq7OgGXL14QQXLcpQIKermnxygZf06I83xy3pkfwEY07BVX6MnouU0ybMlqeFQgsWFnP_yjPuYGA0RQGOqsL_Cz_aq94VrHtzL1M8NTQt3Jhpr_L908QQMXN7kK6CKJnDkh9Rzykak8Lig_xmz8E42bPY-RWpAgAvpju1nggo6H4oH41IfQYW2gVzTviJq9EC1rP3FtJouq9gmSH5xDo5IW09XFskxJatkvOUIjgtZhCNG_VxtML1VdSDLZSrYjMT46SO8JjWJcn__4tR6gEmTrzRE2OSjbLuZpOksXgFrOgRDsZuPSeBAE8VKVpLtHvRQKWimJumFONfHJ7JxCOaUSBzpvk88Wg9em4x7YAd_SAChQoT7XRtjlwkRszQ-TwYfGsyOOGiTyG9dzCGGy_fsTugpowfedGCGBHJpuApn7cf5NNyLsafquuDtEyUly0NDpCwF2i4Dhma5jQsDEbKOlHnq8uzAkJXRe96IQBj0FWieRJyLU-pNsgXz2PqRxNXs__iId_f1X7avOZHN7FyBa-vE-u8RuYGXuLsUtQnnA0eYesQ0hCvGHa71I5E3-w1DCu9dLeY725SC1yVZ_vJ2WJmwEPXJIXKhVgTfvw8GIEml1VGxRFvb5kMQtGbXChL1tz7Y35ux-SRoX4A23pTZVEVquaXb2QjNFOprmA0tuFeYlsUdqD82ls4R1WzgzLVRRF4Z1Jh9AFgfYHqV-7UHwJAY0OpYK9iu6PPknBPAxWsxnLxyIxQ_rRnrbD-AyW-uFhBZ5d38zkvKw68Fr24Czq84U_OlBAvHtTWSzQa_6pc6tu5KT43QDCeWwiyWt1gdahuyoqGpJNgqyD6gh5xjSr1U-ahTJpXgVjnbNBkfOWecj9GK6CMLgvcI21qVrX2IHwG9kMyQgNmu--z0VHXt0WUtEuUcHMM4PzFM5AOZ_oxSVtIbvoYGDXjUgEI-xM7BOr4e1B4n8X0aoorefQhCLe1-Lv2pKRSeUlX60RlVuRN9GkoD_UoFqz59zJwL3h2uakwjt7iehx7DeI2pHUthZL03BqsYtJth9Emw5gsDKfBIR9BAjIzbSFRnnC_pthG2E1WMRMeeKThVkL_JYkmFj4Cr1xjqXXCTAI9QFwcTqRI4ZkRgem_jqVB7H9-BzVDrqgbQoxuWhNRn3_w-xfyzv_JtRcP150_7bEN2-gbBJCexcaF-0PbkopUuQqUjE3-WYKc9X9vLWcdkEehB0F7eqzdIWqRPTsnEat4SQhSvbaOp7EgY6Ypkvjkheer3fkPelAHN86SGviWWtaxDTWMBwHQjM866tuDKWOEnLQhMb_IjQDFKHrUKUnz42saPlPWfvbas8_Ymk7bX-E263Wzb5_MWXqPHMt6UTMSOtw86MTE46YEW9Ww-WW10cmatGb4jfoQHXa_JxCRry14AjwF7CmmQLP6dnm8r4_jm8AylHV8iKCG6r6csAhY1jQ3I-24iLu01EDB6H-_bIX3uiZDXpf4T1aGBJh7I7INB-Ad7d_IV7At-qaorPyE1xvTWeFVQLymsE87ZHY0J157ggITtT95e_Q8_SEiFYg0vxg89qBpuXygL2M_Pbrb5eYTCA6K6N86CxlOvFAb2AJnhAmxe8c_KHIsFZPL6lReDGQmMPBuvdCjjLPV7seEZX30ZMTuHYXNuD7IytEJ7X1o0_04eCmcqbivHBCoQGOzDhQ86DSoX2Omx-hmQl3hI2KgKnGcnfym2Ukd-3CmHAyCDAv2kDHm38H-JdcsO2DNk9QsYtAln6XRVl5kFDnWEhm9bRh-fg9Lmt_mNkwHSwZ0YrdYhAOCMkNlukUp0EYKKhBSY8lsY7a_TPbt8vkTMSCmi2sPr7NnuyaxMvw6Jblb9OD885lSOUp3oPpoH8QPkkhYUJ4-HVmmMGD8orSe0L3k7lLbyHzz5l1EmMahHWCCbnoMGGfO2QnxV4v9YcsMmIA_NX_1CjMUh_LYKrVWE2tfmhj7Zdprbop3nTylHV6YNet5h2MVUtpfj3CFTz-7V0AxKhqmTkSE9fMv5_XY9-QxFKf9B785SPTdj1xBiOsQ0uz3TJ2CPFHOtikiqYkNu9w2cUgYejqlM0crBDpQCuFmFJCFNKrfMa7eue_4H3RSh8Yu9Yw1LXbkAuGoFMGYhegcBEvcxcDSHfZ9f1HFT7IgimpuFuoGHwaNhPnlNc1uI1ILsFeRrrXide0q3L78aMAdu7eFfSSXHm-RcZypE9LHU8caoGqd0cr8hMAFvmAacrXiUE6RtzQUZjswSOziVVwlqyszgPXIuDsA4m0AcaLyEYQ8fEsRZAg7RyRbTgMGrlo-_L1Me2JMPPbiuNi2EtBXz_85Ylbaz45KQ45mdka24ouxzs3YK5aPi-Bv-fYL7FhoIWM6AiJH5ETjucj9KrhL5u-mnEi7sYh6ttj6I-MtSpCzOLrIB5HZ-tJktRhN78f2m8h6N4FBL9ooQXR4Y-QC1MG4eRlAiugn97K-r3MDGQZR5fVwC8SPW4Pt6UDvfaxXZek0HmjYPEk63MIxeMBOLaipBGR2ziR6YsoTUZ3NOopXjZr-UsGukdLw0OIJsxA-nGjmOZCr6iDgY-EfaCAVwAOxAv47u05VBTOP1xoUhMrxNefZ1lt8hEziCDaHInMkDdc4lQVeYv6H4rR2KugX0IXGsFc-C8sfQVnALLdQNjEg8_AfTsEmY3NqE_ECIUhFwxaW8s8aWBgX97Pi8SxkCwX6DyksH9fjA76rP4P5kpWl7ynaOaCfytRliE4j5uDXXywFfwN64DWKIQt4u2gDGo9d12CWUMGrWZZdn3qn8IgEDmUdr_CGXIGcPNuS-wxWoh4G8eGNhvMk1V9zhyhcxgbjoIJLl1T9MOZZ8JQVpiy-cPgClLI2jgIbKSVZTTZ8B6T93aQj5oEbOw87RZxArjYP2XeIHMNh6JUUOND97h1D-tXlI6hlFtFTouMxLzyOpVJLfdrUcr2p0bkbNPAyk3qzxwdRWegSWH2nojJVRP5dopYDUvX3a6sXVGUefUr6llKEtyQ9W84oVESDWyhWRv6GiBkpimAlkoolaGYFYCD72gUISM-ptvaWmVvNmXdZhR2JCSn3Ec5K9TZMg0ArIgFvnJeksow6nIwDSYZ_EXqtEgn9hjLaOcKZSrixLgvGqWY5phJcyYWP7kBsJTxc9U7xCIDh_RCU8fjZzAOAl4r3DtGTEntqzqhScZ_-Fx4ygPgpi4Ko84FM0RvNQGw5VSrOWADroETQVP-La2KyDOjYo4dTauA5ArmYnXyLatcyfbnvgE5KofVhMHwPq-QSV7QAaN9aM3KdDRxBXV7YtnjPx5DzLQE_61NLQkdC0iWFjHwLwM58comkNfrKAUw3vtLzWDiLHT1nPG0pxYBn0zAid0cdOFJ3JRJl2F6-GuMSeUK6kCqbX4mtShWXp1gn0YErlKR2PFjCDNj1o56a5ejMOYAB_SNIjRLO_O7uGofXv_Om9Uevp9XKu3ca86Qt6uOpwQsifkwS6j78cGRTJeU0SlIAGBjzi6b4aJN--CpFIqF6JpuZAxhiLzsHAXRAKik3Lu6Pmb_24KBL5_ktbQRcQX6GQjGi0A4gccSOF3hdJ9j1any3RaFOA1_0HRAv-ExWoiQEyUnWALcqaC1FmXgDTxYx_VUMjeb-MqxAV4eHjJsR7e1q9cJS8qhubSQbHMH72GccTJKlZYdLBHmc0Oqejf-JKgaBMxgkGX30uCXhT9B8dag8jVrDBemQV-wak7QHgbAveaWX74ZsZZF6ZuZ6YU1llAllJlLWPVNr4aaPj_wMfurz6YyOJDnCcVxcKFjBCJRuTBF1ACh9Ye1aj5wDUVwjeKXnjEy-quQNoB5c4clujc-G-ep6-EHj6WgHZefu1HYolZNprU9zHY3T_OrisT2jDBUByHv2RajGe3K7nDZprR-e1SPApINTcKQ42Fh8SfDQsXg0qOfvMdKbfKJqQizEQiCtvkQu1oXhlO8fC4J5UkN3qsPcdG_h1TQ-_zlAPDJ97B_92zV5NkIF3XFM2iQht1oWwZdN6xwKeDRqKmpER-qz7bxiy9Hh1IxU5T_Ac5c8B5xIxbQzgTJal2t1M-_cRvGT0CjpEBjRxqts-KliiGxFl48wNePKySRiGEfnn4Xfqmy4enbmmZgyHCmo-h--qxLIxBEykrcQurpumcrK29z2_jGUNichMpAaaT3UlzgVTbOVb3gVN3Qsu8ltR1RtlO5DM_Sc6q3GQ2QpdHafa2S8Z5D_A90PuohDCpyqvS7tA24KNQEKYM2W_ONMBNNEoyU2p7hZezbbj5T_HLHVRPUiVLgugGFQkNwZ5cRgrgYqstoKu9VJWFE-odBF8G9GwHGFFqyCdBL2CADSx9AnfEssP0TSarXyn-ALo1n5f6vpUFmkcuY-4gFSang5orkODd3k7hSmsCxs5NVMLfQxPtjJcTTrKR04H7xAVNnt79YJYVW73UaXEUammc_qu0GAuNwgeaX3wIQv8ieBeqJvGbfOoXd-U6c8b2xS7b_9BCWtTKZ1A8azUrXAqOr5rXlKkq6I31ht1XzyQAWq3_YWEc8MJahqr7bR5GQqOxRg_adTocY65i1qhxebStP6XWRRurHWyHzDhi9duKfGK_eC1bbuUIevXsNDHdQBDNE8_w1BBBlg4eFuM8vSDZWJEKPxvB4Vl7ciLOs6-diW3bj_JDo1BZlpdDQFKCwDuk5RtRJmr9hGUaIbF6nrjbFduzQFh6laU7VkD_3XyqJ2C3dCD1vOOhslfiVG1fBWHpTJvKsgfLa0u94IUipo6YWCz8K-LCeOymEufdrfaI1A5qutL6tF0CaPl48rmLRMayxqTf4ZGCCDe49C74wOS_kGmxchhr8DKGUgKwiWJWQjIQLIk2PzaHSQ4cE8uBQebBsCMzlrzNr1YhYzvzhje-qorpNcwCluQeaXkqp1WST9LbExS1jN8gmJhLgS8yAOd_yGdJchugXdbfPXWD_R4oVf40bCAv3HBB3MxQKq8dZeXg_9xqr_bhwqY1oUraAHLEol6kUS--0eDJ9PzaLed1ZQ_6j-pHR-mu-OkQUvtM-THVLuNMKWGSYKcBnOFYw_1NpEkwoWtcYCzk-nq-aHJ5XnijDKutRPJQ5W6RLMmhB8qFoZpRp_aDS5LJiqp-Q4g2QhtSCckgUwHN5GSDTLaYvjkR5jeIDI0Df_tQZQv7BiusW4M-iXMunM3qpOcdAdfnBTmODqjdeBAk4dRnayZtb2Ib-JKl5ywa6WUDhpA_UQA_sIlBBbTjetvlH2sChS0D17boDPANxqPYQLorzUflL42ay1DQFsRRdnxTiNvzN3nMOxzFdIUYqWEiY29KQmAFyuERLmtWNxvUB7KB9WqxV21mbJ-yIhTsuUTHve3HdcJuWPzEtbZemmvTyJr1wckTGBWVfeT20e24dPMpBbRN24Mpx_tMxfsioxNsXFYqKHzqWqZ8Tp-gj0TUMr-dATGUJHHQ2Un1nVUYhOfB-G-cycBf8zmgcnA9EsKkTOlZY1LRmvBIknw6thweHCggBJ8Ke5N7lgYjdTTPs9HXMZk-YcGJ8Q-TkB4_Dw35xq9_hnncS-Dl-_aTs3FD-V3fAbAd9eYbttpwk9kwVnc3GzF_d-eoCntwtxNH_iYmdeBZIqLZAoDwzvFnGfVunFP4RiUtLYepxu1m7HLhPSCAQn6SNcLwGg1U0jQpfYIYGZTL3Ntq91XYv3J9vy5O1apgQZic9XEMxzOuoYf0zDEU41PaVOmGv-H-mdrmH-MI0AquibmsDkD1GoUssNDqsqGVBgMMp1kc3N6irmLeIpdrSjOLUsW8eq0YGWoMXXxp32wIfDr1fad4KV22Slqlrfv4RC2v15WxVI6j8Cn2l6ymNxCj95fk55ibBk8IgObZEwbu-O4F6focQnbqXcLMSHipxWVOo0PNAnxeG8ER8AuVaimP1nXVWhNo77VuX_Yat85m9l4Avt0Q8tR6Rpqruw0cxZRH-3GRk97-svz5QsXMJgNZsDquzmeRT7ydwFrr8NK2Ei9NmlZ4pziY4xgIjVIJgIhgkY2wEH9EBDPLuqmYrA9z2RC4KUg5aMAvhRRZ1Jrxd4uv6C7iq9o9x6AOVwA3AzuM-A42325s1cNlnURin7VjQvoDg03eXsB-G-iSEUw_WoiFatKsO1U8bW4GP1-XwaZMD2w9-NXF9JCCGp2PaYNl79WZXpoNqtOv7CS-USx0vOF6DLllVZebsUhgMTBHg6I7dmJShzC1VLrCV_XjFCVlxfSdC-HkHceCUwQwQvkH7CzkW3Xxqn9onVcL1vMKgt-D7ov_952u8jsS6gkzEkUZgSFKNUMJGZv8J1rhg-ZNUi_50EsohJTlxy8H3xw8RFN9JsTZ7T7_O2yJ-yB5bCdSHldOwfQWtPvCw0df7yzUQtkMqMY384QRdKraWO3CwhrqD5_j-iqM1nw3AKDnqvUZ_pL_MrJT5OwqvaQLlIJpSymmfw642aXt7P1TzzFnwOYb0Myjc0geBp6JKLB4MetCiKUxmYP8M3hiH8FSZLv00jUmVJj-CPVj2IVml-IiAPyPU45_2W_Sek_l6JDqxgviPNU2QfLqXLOgs7-30-8ZhrtlZLC1AYco0hIEyVvFBQC5CjorAuillJuZ02YU5_kNwGG-Avbqb2zLhjw3gO7ZB1Lz68cv8F5YVsUvCvMgRhgpr5Wj_5uFtw23HGXHKY2Ejm3Kjya_Tw1EbrPl7t-UYyUxZkF6lUh-ZnndeOB7RWVO9lDvW-kuu5XuYFbAM6ouYOPd0Am1Te__qnJe0cYwKBaqopwTCE_7cu9EH37OBm3YWyGrthggmOrcK9jSI-xA40URX30vYvyuvNzZ-0f8PrZIfTtss2f0w9om6vDpwxsWhXRlTyz9qc0ntEgVwX6t6xWklLasPIwXZpahtO8PAA9Vqy2D3t-nMSyeBaPMhkZi_k5x3ckiLR9RHH1OmiAyYkGafn1_aB381MKMv_8AS4YGzeAvaHBwwfNDBlPpBhdupAGXoGPKFCM6d5W1QoDhwQyIZ9uFKuvoPtxntY8MwG5x-Vwmg3GhIDiSmoybRNIpfIqXUVzg5_a9p9b0-Go59h9B1ntMB0K1Q0X1EtZq-tVRlv1MRpSjOl8LFyGFQ8rYS0aY54cZgE_tdOaozg5NuXDJPQR515WrBf6NyJ2E66D3u1Fde7hd-zUMSiASQXMKwCLOAMNn4f3MWoj6UR3vKPjtBNwF1umNrE8P1tErywv40kYGz8-Zy5Jub9dMgKEfXbz1s6XIqZJEDSXngwVYNQx2fhaO-uGxt-eahjkVAkt1KoTe3sDxtkX7CFQNAaVBlsy4JEqRM1-Mxg0GfAP6M5l6MMhbqkJoN4oC4TVUlASghOUHqkCorULtgKctw01Ea9UnPzXz-KKpA4RllrWdUryiRH2A5RPs3KH6mTKVjJmzXvs-tHHeQphSLLm3QV1smoj9Z-oAJrz0C-f_Y0LE4Rsaw8Ag_7G9OOrBOD1odrNT2PbpvyeMCv2179maxKeUB3WRIU_Mz8b4_vi76gODzX6t-K5zDm1ukMlpNLfRtD2FZOEu2S9dGFFy-Ut3gB8Vnu_b1wnzETDDqWZJ-6bo9qRxrRAkH6q3TF5VTKv_hnYKY6QzcmotJrdTNPQvwCztcqj4c45FtJyax2tdOQo4lhoqDapMA9TawQMxunVToG8YmNP1YKJljFq-ZFttAxcnIpaTYq9scd3cfS0S63cnjaMT_H_LEBW9FedIR53Ko12fyQn9cLgErigUWMWwgdTmE2rPo3ygRky06cEcrh6zUtNb5E0Xt8FnmR0n53wZbJHsX9N6ficGSVwanB9ZBGJz5TmRHdF2aE6NrALFCVLZ_9mUP0XVz9HSUH9YbauXqYM8afLJ_R8XNm1WtqX6gWkCG4HulNtWURyTWgVuQT4jiB392QSDulnwnUnaFiroMxbHD6UENVgg78icspfeRQ3I_wEKLpCmngQSDvgNlV-vzVct_920i-n6DSDav6Ez6MgxCa0cgrF5Fbzak-koA7olgU2xqiyoAFv02H76alrTcE6Ooi0zNIBABz8McKSqmJDhJ3RTpCYQCmJ71Xq3xdeT-9-WBX9QgNEGQ9BAcZNT8IHY7yUocfYNOQS3XbCogSc0HR260BC8-8ijyyx1RfZB2kErTGpUCo3FQJLg8QNYU4cThUe1rmgzC1aJSHdYD8OLKHflJCHZiGGaYW_MA-tBWfHiEISIUcIghjbVjF2dBoMZBW5hlzvYWOV5y1QXW0zvTJ1Tw4R6kJGWNTK4wePkrh9W3t4wMu2QvyJQLGGwb4ltSDWefD44MtkWdfquG7OTbXqEiPr2KreJ2j3DASXuBDBD25RvlZc4bhLHFj9BUJ-lulsAvDWKCb2Bou0i6akOancevmmSZUwphs-hQM2b3ugNTsgsUEoF82dXWCJ70gyr1RFBfBsZCYDMDWbiqMYC221y5Pw2zoHRdQ40xDVCmTzDZZxzBr3ywIcE0Y_6c9tlm4e6EgOkdHg5KaAV9sV_uMLbBeSxyihQgJuxA4dzQnCo3Q_owAGtnkvhQp4UgYlx2AeclHenpTuFb_t-BsO1-DV6LgRplzfXH7ocQedgUXsd-gZtA61tnwNR2qRk9dbmtOikjI7qf7tFv8r0pRbe_d_mNadmgformlLzAtUn87xkZLmcMx_iH0g7gW7gbEXnkKmX9syage0xeQ12qnGvGF-p6mBKFUM7d_8ZBFt3pSd0M2Wl1zLnK9HQJVPXjWWBf8r9UecYdpyhtZAnxREWSqG1APYDP8cPpQcewy_QaCnVqyYZRFkf6X6ch-O9sJAwzR4MLElaZ31KyCxHTj8565hGC5bJUdg_I91UgH2yJArG54y_Yc5Dl6ALUn9QgPzbqDFFUOJjwU5o9uD2XyEBYzEErekT-GqxtSGOgCFSStNay_o8OmjolNWZVRc1_aFeMUOgh_GJCAnBMs8AVNU8rG-2bL8Yn_08Lfn-QpqpZIZIVsTZinG9cCIy-nuGGUtwHtPdG8xntWD7d5rNUtro9BCoxdrnbFOkSAwCQ365HHDHG-D0bnxTd70UQLYZcAb6rkxFrENHGBQFl5f1sOWZnGhofb6snJCirTWsgJcst54Dzu14XaX-57i-J3gi6pI0alrVQhxukhTtV3oj42A2TUGD6Qb2P_PjwhVbwpyfkd9tNTRT4YKbB6v7FviTl7JKRh_lMFAeLiNc10auLFBnXOdq28pbt64ilr05QoEABo-2qj0w1qRgK1RfdC_x2WRHcrI7zWIyDONsyqumIklidGqrEh8EXCSg3a1PBLMIrUfkfyV8C7LvTL_lifHl18bZO1BJtoksrMcCmPiwEJhCCMn1olm_DSh1YHahgEFrP9PhmLrFpJrymDuzXlWENX0QfqD8_bsiaIC7sqi4ZCnGI-KCnePmdiATIkO1ROI0ty_1kRce2LFztuwYFLY_z1yJlFflviLtyjU2z3F8Dl5JjO2dWm4n7bBCRT8wAqp5eztDZdaiuQUZKi9vhIuEnqFpL5zQVTUlDpMWodeYlcEZT0pQQamulicCkRslA7Z-CThZgOW3QWCv3eYTvOlZ0merHzQFxYq-8S_0rfwK9BEA1xck28GdMIXUd5cqBN1kUPd06qbwbCAgVBABucXvWbmkCeokCXOyfxb2BHl7381ZWy3_U6M0AnKzxhtYBSmBjY8sQAeJg1WTQ0ZpbMT651_b8ipPHAUl57j9rwVzxrdtmtai0VoUVNv4UEF6gDR_byb09xWMXgCWHrBMbbs7KNNC307cI7lmSHDwFDiWjxXcZtGMCix71kfh6uZsRBursMcnUoIaGvd_Pqv7SKeo3c1DXs8d4yraU5VqtmvHuodSmfcmOCEkzLb4lmVfBZPrsJQcLb9xFH8wunqxWYhr2ERzOJDZoLIKNwQnPDcxoK7UX_tLfbHKAO_CcfHWRgB_NkcPVvf8jViQRTrskD_19WqQFq241yN8yW4a61C6v-9og8yJyy8BWPQdiKESA180YGsfujYRx40jXR1u0g-WgRF35S97vOzm963EAkAmfCPBpRckAFxeDcb9DfBvhihOeaQEobt9UNhiDTNaiSN_Hl66wA5DIPIptw0_HQQLoVQ6HUevZymcwe9A5p7_AdCf86KBN-Z6cu7-5OTmctbwROcfjMYjlJLXI4vSE1fY_BdaYPBvPWsGaPKTNr9kwy0RyDrYd4a3hzDBzEOAGUJm14pdaOSbjtwoIJ0m5TeQRm-e-EBqxv4dcABhod1agzhWgyKZarIrtkDhGW7dkDqSdxHzPCxphtD1a7SD2MdKfz0IK_IkPRSr5N690e9kBMO8r0MmuMg85Jf4vA3w3-ywnIbaW865qXxkW-3CYgJ8RloGuBcJewQH13Ozoz1FAlt1Gt5Q-uHiMokLpmbCmvGVk7xPXqDu_sqRhQSjlEXRBjmGzeotBxxhTwmzqZfJxRXEdmGAtrfqva6gzYGgSdXFWo-_wfN2-DjBa1Z8FAxpmT-dRPNvaKwOmknS-tI5xi2i7kzmh-oIn8n-AJ6WanEBaFc5vTC9SnQNxnjnnbTu-bRMj_KlXXpw-ryvlGEGhdMOqfcgSWzQLPBSVMJpDU9rSZMfGl77Q-S3q9mRfjPnd6TqlNfOskpiQijqlKNvhC_D2S8SerwBOrWTSZ2i0W2NKgtAvkgn1v7wHkNIp6iJ9CU0mXIobg1uDrdvReirxIxuznqXyf9xma99oqKmQvh4dWfhlQH-a8AB1Hl624CTjEs4CcoZfCm2pMpcDie4gVvQiGkHQosnTdOA12IX3REq8peIyawJpoyI50ConQxCFuWqKfZkxvaLMfVAHcpvRNrNEF-jD1lf6R1emRB8jW6iQLCKYVueF6qfUsmb6Ql-gmKcakkB71QGMSGTa91eBg--S11MB79NFQdZhQDpYYc5GAAKTR3PF9Cj-xk_33qn0Xz3Xw5jRTZqm-qVcqPMwcdxcB9p8JhtWuhGcfyGmON9hM83JHg8xKGUn-1qPOnvF1yWoRcI6wv7Xe3jfo-_RHLEwbPTbihfw2H6ycYxEl_iz9zlG40_WNJwwWDdHn-jsau08fNxdR4WC9FEvC7lRAUeQPVxUWE3ziJjlDMeZGz2jy4daSi-LY-QZCzarHtQ4_olBcW11Q8gtV0lOBrkATxbd7YRAL7_dh54Xw9T6X0O7TlpofzzAVMZzIn0iTai8k0eAzuj3DT2FiCHAh4-RbKHr7mzyrPQ0MUmJp2PomCnzG25BUbYSlClBcjtotLGm6YuDPzB5X7Lu_vH9eRjxMEh7ZqIYO6m81D0dwZO9aVZSSwa_LBb1iBFrHijTsL8rHXXcBSnp_jIaZrGLyKkxMaJDegmLd8HdgACP3rOqVCDg1n_CVE3_jRaqwwHJVpani_j77aSGBmItjp7HqbcgZr_CVMCBHX3XfzlhuXZkvBoc8ZaYYifhvgGFGEg0jHEaxIIU0QDqm2L6dHqCH6yAlkkT8zRgWeLH4Pey8nR2KTAZP55YtaaU38cUPOqVlvTmPihzfNHH18h0vLfaPPjA712C9V3hvVACSpU5SsXQU7NfnnIO7_5ZcX-iCaEuDsSFlJcAJFaSyKJh5kcXsGdRCAM5nVfyH6_NFHzGiNWaIqc-E3Yl4a4pS07bpe74bsEUrxUfdgmY9XULfNwuGPVg4qBsSoS8coVBn5SxwVR6OITKjr8Iq6b8EZZxxc6qJJe2Xd5mExe6NxAW3sClorNhS_wwcBYwj6HUH8SmXpZ0xqADYVqky8bn-pa5j6RFNSH5zz9deI4_1ioLhkVtvpbRFHOxCPzm56wjqQnEci9QQd8axmpiKgHP8HnpTzLHO2MgqjjunSox4sXOz_BEEPWghInV_VpmFb0KN0B4UH_M0f9Yar4O1unjCGwlLF_ZfLfNfwmi8JoDRMYIyFn6D1PxQgdBBPKN0oC_Z11E28WQqTORvTJqusVY4qoZ4d1FOkd5E9srOWuvs0gBGweaIzUAZHdRGr4NygezGmf27uWSos68ZHaB2qOc79z_TpsXiVeik5uT-pSbt2R-GEIeg8cwCH1J2u7UHsWLmJFyUmBW3K372QeHxoW8UKinTNg4Zy6uF5acVZmom5E8s957-83Qcs_unrHFoUTPy_KWoiqRefrQcpmCHra-JYSYwNxfwgzoCp-EHgl2ypCIZ5BpRQHgKweWJWeRhioSBwGejT7evYEl3-L_FazZFY5W6tKyXFktO2jIySP0NMGxFL8S-PWQERH9cdm7l1KN849iSIqeMI8cROEUCWjUIhdh9pXJnY8vYhQBfbEjJ2fJFjOEtT8ARZe1jBPNUFdoRph8YXVXRkHn0uw826uIzZGnacbNgRwgNdilq-j1Rj5iirOQwXSQ1s_L2Y2Gl8O7YZ_tuEek0ovZnebzesmYKtoY_XhunbD_U-4afK57BtBTsmm1Ed_AwfhZNV_vqKC5DraEE6c6J_7d1f3NJEMVK-QDm-iMLGdLHjOr3bf8TjpeXNjITXiBZ0kJBb_qf7Y6Sze1UueGWd_23NVi5Ufe8w--C9fE3YT0Hl0wnSRJ1WvOGlLQf2Hgk8KaazMuCVbkNFzjojCQ_IrmsEz2sbWOSMDB_E2y-6JJyET54mCpfMYhdHXVhtbAH0sdBNtp2KGfh9206nOJU-lKwjo71lgNm4XoWV5Ux1LXYSeN9r7BSrpirkFIqxyQkJez9Ulcbiz5ES5t8oaTwCOnIDE28Vy324HhGPSi5W2QPkCOV_PjOWCeM8yjS_6w_FnGuO_26ecaOEkCNBZung5p0pHSmD9D0SeQ55YvwYvwMhT3smiwDo9dRcFa6sigkWHHKtBLW29sYLB4r5pNWtHd6CihJCcG9DTTbaE5qP0-eOF1l4GKEhtIUKDPGJGwEzYHjq9emeIy1uacdIcWTCJylvCVOHdWmLaD1HefI1tjSyga1LuX-uZPAYEu4H3BHd_8RhEhTIIR2W1Zi4pcy___Mg6UnxiELbieUU9M-kBKnEG8wm1_VCAJVg6GulXQG20z5Zq0Zr8HsRUEpcO6ULm-_3zF1WYWSPU-JDi_ZiKxGdLOidzU4gb-zzrrLYtA2USFwdncVimCESLHhKPSvv6r2xX5Hz0eTuLmhshN4wL2du7QNz_mLVnI0aIGrHWQgs_DEy06L1P4ANm_Y-0xdzookmfICUGKChRsnNFH5Ardfg5JWwzC_jQrW1XM_t8g-3Hnv_A-UzUyJWBl3ezae1NPikowsbMsIwLuHHteDmQmqb9-93yiUdXB9FxycWFgaPksF17KxTvI8FS2PPwZKsSOTXMQNCQyFd4fJDR60nQhm19DhQImTl_QPvqibTAg_p5zlhxlEFdMKoMEdSrqovWF0mKoOLbIHlGum-tDlq2Ll96PE2-CrnW8NyHVDdew8iZSZ5dahyl3prZnh_EiRB8nNBESy8uH9ppuSH6XlQ0TJXdhwI1ZdOJvFonZ-7IBR1TVb4ynvpzRt-oWE-tNx1-6qwSJGzrsKnn1EYkDQaRj7nfztiOa9af0LGUR5ejBaZVx-bQ-75PO-xBTxd0UpI5kyaEf9T3rUM19GzASEzvIwPCPRplhpopMmPORqBqg1oFxqI9vzahfzntnYmWEBLGc2ks1NZWq1gLcSZLw947_EEGgyqw51cFGXLaB1DeA85qa6WT1jRmS4Fjj747XLPynyNH73NU8RWsx03F0y_fvUpPGS_vaXWR8AhEy-gdBW5CCYbsPv7WB1Ls0_DJMBSHylHgNQvC_5knHobolZyERyyye0rwmLca0TnAJS0QhgywEwaoateT_H3_aqypXAFQdqP9aXzDLINETQH-jPND97CG-mhA5bh_mmulEvQMxHyt1e4d2IWPOJjYUvSj1gaxoNl8C_v-h8719rmYl7e5jedHHzYQuDgq-i4B8HlQxgLycD2vQqtt9F8fadudBvjaa4qaHQNw_AZc_8aWNUQ23FdSfC2ZSwJvYASGSz5iwwZotTwF92WMyzfnNvdjFyluEZR4D2RXnYP9GUuwGcg6LvtzjZDq4GoOG8cZEqgSQpSUFWN4-NUVBrb8GLY-SDo08tW7Q42PvN8h6h6cPCpFgrKFrqEuNupBiw_GvD-Ihj6S81070U74EpW3yin5jY5dVGJO_Q-8GBVsyfe9VyPGlDCt9p2-FwvgP6aMZnWAQys5HjDo7QxHaLXAUAJEB4HJatbd3sDYsC3S3Py-_NDzA9_JuOI4iqvOjwf96mS8xfOkoDY0CyKso6cn7BWBDbtgGL5yjjAOrsgyRzALWaUehhq0p48D45hMtJh40lBfgA2QkEqXaqlFdooXKlfyn0nePdsQPYJWxg4O42Up_ha9yeggy_bdTtWJQlR1bpgphhsDFFhPq3rrrD54e-AmMPvLS_KnhRHR22d8t80bo2yhrXzT612iv6Z_2_wxWbm8AnUB1L4t1pnI0BW9MLhU0EC55f52wZCJQ8wJdRcH4lbuUsZ4ioBA8J6X-UtP7YjjBTeXITfvyCaLvkwGseuU4DCiTHh6mkqIq6ynzsg9kXqjCB7oDfO8yZm82JEuzLWaReeZSub0J4FAyCUQImgs3Ui1shcwK6IVbk57-Gjywva17R7qQhkYxqeDCbrd64y3QLFBnhiYSN4TrR5AaPiNz3eCYFYPTdMjNCWa7HMb8wgI8Bix513uKuS7HenMc_h1QwCzrD146GKiiEZ0LT2IIDDO8h_gKx3Y-7N5B9Og7wjsDps624fXnr889NYznFOBwuVhNmT4aULq_L32VNXYO7bvGEm8T__RrBnigqlftf0nHzP2U7gN3kKnuCg0VryDRRs30No9mmIxpCzEkGfEDb3g8SxDiiyOjZEuFTG-doTdRDPfe8DqiPTfJdFWRfDkBKFbpnV46-Dy1PKe1HdpoF82ggBjtwT6N3GZ4MPq1UVYQ6aiwlk-vUpetZHohzn1AD15XlDE_NfnZHhvGrHGApPPUFCMmZRmqQTkNH4IEpUDQM4_SacoAIdkrgHO7PoUAFoHYMpumQ2pow4VTR3mj0tpvG-iIBbcxvqc5XLQQZhXuhDVAEl3p8HPTDKqFgxTxiKT_Ns2pfkp7zHS9-Qp6VzlZgoa1Kt-ipc-BOpwBzzeDqg5bOYvDF4mySuTfNy7RnMfX2F0WZKN0j0Rbo99iNUgkvxQNTAsicaZGuGWaUbgiQI5OT_kltLhbL0Lwk4AQpgKHQ0OBgIYC7ONSWNWlHqRTR0CGRYRPPB5tOfzJ9iVeKQKgTnH-PTukqdsxJyrwalRgF9I_b3qBXCFeY7Ea1JyqYhi2c1OLLoI8UJ1kNsH9Jsuww0WjthK7U5KQEHkQTZSjdEyoD3M-daQhocYGcPqRLqt_kfDWpA9fQYJVlMCUL9aQuMdYVz0ZzZwV4PhAoqep2MwxErhdjEUPhqyt4mVopZW-Zyigqpw7ef5K8lrBvtfLV3rt0hFTzuxACp1wQOWVsYvY36I0Yff9iHGHaOArfsR0KgDgbNK7E7D5CtFrHyOn5XGjWcdjLaYKvCJ8wKrIItOXpWEMxBCcKsKsj3bo_jJKiKYS5hVeaznfwc7pi0J21-4BAkb9Vs4XqIcooEFbUlqFSxWMuBokQAsxBEdeZ4ZEWbD_jZdx8NxELKLxPuKiYYmaljKyW4NqhyeGPgFxeHV7PC8fZ5O1Zg2sTMkW7J_BkZte3oGa9zeENRYMYmVp90gURGZ9vex7-GM362BBH-Uq9w9XYGL_yVfylRVU2PGoCEmMoxqgxsYTt6t--noIEO67jMxWhOdX-i2bLo4xdZnTBBDiiCwDLBM4SS5FWv9Q1b5NO8GL9ePjw0PEowJy6Lhq1MEBrQSR_AiNr7tAQPoJc-ltUMtBCn0FrDKT8UZchBVaMPazNXHJyJB__MZfJLc36Pr3xI3YG7C7plb4MOzJ2UU7knbHbcGM8WqKykYOBlde91ywezS-WEo8EUTO9rVUTDPwSPH2NjnuFnu9cEAmXYicqip9J5WLcnWxKuo51O53VaSXa3KOwkRsh86PPoxbN_6boEBx2b78eQOgVrE8T52OD8SryaCcj7GmHsA-nLWXhAZ98WTCCR_O3N3JZSMDB8NNKaTdyjILTThzcZBAMHpCZteh3JxXO2kiw9Q53cCVt-PNAVFwgANiyFFW00sGKI1VxK2SqsCXupmVQqzwJ_VN_KyQfh56xgMWxEucdcbneMoOWUzDZduKIBBhM3BiiaidHeflnpuDid8poBugQVdxNZdxxi27cdV7h0ieu0WAJj5G4DjNY5XI-S3cilYnTXUNg3nE4kQb6jVsjVPKwS7sur3AvwPld2qHJD5Zo5_63axnH-FQuiA2oF7pZxoYiz4IYY94ydG8gOOYteoiwEDD4tDi9_p-Vh19qsJ8NyAaC3sO1mKZUhLpGX4W5vXI9bONL6KfiZtpGsNOS0al73DiqdLiFtAcp68geOr3ym7Miq2xtthT-mCiNOn4HugT-rogZbzPlRK3aHEY3MsLL2BBcPue8ffnazWOosLQuThIGdGwHxSHwk9crZito6H3rfhy5FQYRZELbjkp6XwSzWqwGNh5PvS3a4WxLOImjdS_SdeFFztTbz643sos675Aodwntlo8e97352Zl54dJVBWQQQXZe92VNcHdywcaHzSA2NyLRWz9kJA4R4jHUBq0Kd_y-f_4LZMgcnSJyB_kxotskTdJvy8K4VSB7NSgMxkfzv-DWokMaWuZ6i9lhG6laXjt8SzVmZnBXx2fcGgveBZ0cEEy_ZAjwSaqkircbn6rIcmwjOLxsSvcyHHaB4371u2OZzhoM1eRQ6I_wXHJP2FW4zESJYPOhSWtJ6Apz4rHoUnlDCcg1MnT3Q6PvRNDq0jB26NCCl4ixvXlWtuWTa6_bXBARoDauSXsf9YAX-vnSTK2lOz0pOWgz_QjQw0Lx7nEi4sMXdnGvQNxkSiGAmExZzqAPZwMGbdAJUnjc0jW7Fi28MG3G8cHvO6fcGMo-IHUlH1hr7vMVCViYqjcZQOJ6YgAQNQNe6mXCcsSJij3_AeMXOJvC55N2l9GkRBkByX7-NO0zWRMGZdtYxe-25RMM46v4AZi3A2mH-31HphZ34kIlBH9yb-8Vw4cdUHpY42kEhnXusSk0gx_bGxqJRVVpVgo0EAAAkhSRkWSqJiccp5iZ1yZ2EpHOgEM1vthLyCualal7K-fTHBm5jSjNqNNiZ85xJF3tbnHSjLNdQ-sYcUnhDFedPfS1bzfVZrJBfzjp9_itNRPeJnHhYGe-K9d5TQqjrBAtwrGnMkGhpegfK6Ac2Nklvcl-yCdX0Fx_OYe6peI4slr4S9XmZBj3ZpG7PX4NdyAKDu0GwufKIcSATJlFk-1L17vj-b54H5iFj5472wPjh-E9NJ2UWS5GbEC8TPpqw5wQH_Q4KnOIE03lgzCcImIKW4jK52uCSsBljKI5CXQzgTj2lR2lf7OqqEwyuFP6KEm4Gbd98fASaqrgFmR3CBqJfFkaIeuluglEt6hbkIQU4KlhVJ1kwkOq23gcjyxC4TXYEBNake_62MYh17xz5yxky34x6cl8B-e14KXqOG5qG5ug3gsoD334ICr72xkt-m3mICgkUYOSBE83pb2AA7YuW5IqwTLStyt03wQhYmDXd_q4FBM7ZO-uwue_cT49vvpDHBAL7zwG9if6P_wwVVqO85qFfri0-S37JXpakkJ6_9SUpM18Yo4g2SbEoFLE_psEgmhRAVyGZjGMCU2Yb2Nh6eQaVhuiciWgij3Hf69IJYKZ7dgNmCuuTMp_VlJ0_bDWGlAQZUvZoXemSxVUvOEMjNj0JxhAnuo6Pi9eWLcpy018a71RUAcCrdI6NLvPBNr6qYJgZL2YE6lLe5kN2xxuxtNIm0PdkyvAo9N0OGwXOkQcY8KxwwhBPI01FGQ1ULM51ICIEBERqQD5-RkIAICNR6o8zZD-6Iqah6mvg2OOhpEWzyTuIV6y3d_hOKpYtdPZ0tYpmGdXjl0CM6UZmUyAxk43Frunx0UQg3pA_Awwu5YhXCPek64_gbjQve8bn5Dxl6ZAvBAk85VngWQNtjH4JNk2GABmghnZr2ZHWhO_GX-q3KKTyOqbUjACY1il-tUhIs0TkcQqrYLRMXRrSACeDKw1VWm6iTI_6IYfcUGs_H1Y0fgyCSI3lq3495MNy-dbp-G5WiAQCZI_mqzoxTcr0EifYsDKQuzpSs4e6e4beFerRgJmLVr9Jgo9heM988Va39i0Vo0AEIPlaZqLXrAz--eT1xxSdBi6JlxKS2uzYsl800ySl66rIKPUoXdkVni_F_20mmkwEGCAQ4ZJS1g52aDOSjCYPuP4nUfCCL1868DyocogHBIwr7PCQ4-_0e7rKflnzCoPtETbNRKJj55oRaiAlFdqaTWWSMp_LjH7w0GFXxzTtnuur3GA3QaeaCO9bIPf-kiFhBArunZ4iY6SdxqV2bu3ANgoc35zfPy7r4wZDnS2BfHFn6KXRHhns5yN5U-OVjT2pIBWbLxQj8J8TOrSGYkpcTwJ526XWPKA03qIn2pOEe4wUDkW0tkxyyIgt5cCjSPWhhQQLsYYKJ8rk2ojWvIHSdHSgIof0eVI51RGCW4jcg2pJ3I25sFIfpgqI5QipxB75eTIB32XCBtzWmK2E6dPAQfnHNPYITbjLmOrH2f6zbW1_LJ3LVtMMijseSomNhA0v4KUEBy5aOriMgwBRc2doCITBcWz0OD6TCXbcrNvW7g6BDK67Ym4Vpn6bl3B4tIH19TNQB4YhX4z2kAyhlOOlvwqMcfhtdiNxuSZ7BAqQYixn5dDpswpCqiI_MjH51TMikt-YBBCHTr-RGRIXaWxk2sTl01agDUdyWGJ8wsP1f0ndpLm3fHdejNab0MOn6osZGpP3ZgZIYoX0o7CoF_5lVDdc08Dt7L_yEmzk4ccF-JQ0JtbfYdzvc4OrUBm3zQfNVsdw_AQHE0H8y3wolZFgsPzAOF39j-_9SDKkZQAHkO42MKEBuDYNRANGd41ztyybua00Dn8XEYC7OiWofp6CNgeFts0oXhYM7YU-0A8h4n_xVYrk-0Rb-zpprX3pmPsLySXIDR0EBHRdi54BjFeutO1ODlZUI0JXKinpc3TEq1Q8Umhk5Yid-CmzYfaVtt65hsdKIybzDgZkBSqOZHNlU-qgtHZsZjB7HhlsQH_hsJMfO_GDYmvUyL61zZ_6i-kzVl9kQzarBALNWbFaReiu2SG9cY4n8raKYyXQxQXE31wFUrKaibEAXJlq26xQzmZmf12t4-3ZVxMi15PRbREWLYGzqNRARqU3mHd3_FPTeaLxcWy-KfufvSTVOIYkKoAXAbHfGckSZgQMlCPqKvao0Lss7N3bdcI04kJRmOcExYhAXvepyznGreKpfwWLm2YpoPgFuWq2cbkOg_KNOxeI-SCe8WL5geA7u7S-PPZZ89jarsvO7kPAIQXxHg7a46y9wzDLclZD7UcECTva6MEKRlMP5zsg4EfRkmZ8AQcykymQikio50dvSITkyqtD5XLkLYv2eypab6-1CHu3z-YUQSHYLOw4fsU6dR8lToK4I4pl9auL2j4z2FqwZTt-wnGkTXTevikprpz7BBaY78BYmJHquSGjIEoy59aBoFNWsKLhyB7r-JFAVRXgZAspE59-JmzJVSIfyNWXThYFzabEXW2VmUNRAcb2pRUP7KYWY8xqgZTvQZ2mtXQBY4GpAoXR6jgH-fmWg988kAQBxRnDoZgb0VqOUNQK29C5BIEt8CsHE97YSouTsqqGtATh9YQUinkIpjyHMAYRfnkMiywoFYeaJdEd4DFPIvJ_MmDWtg43nh4dbJahewqSfAzmFH1B-js9WAG7bivifCkEFdHfWcyDybAKICp2iZ4clqNYH9EoSgYJuDnUoyHrBvhWbaG4CZFi6bALdp68fj_7D6MCId76bo2D47SRj-q6bzrQFHvrbfK86EdM5KbJftG9ieNvuE7PjAEAheezl1fxBBKKZDCnxPzovqnmBX3mnEy_giFlxpBfUm7g0ot-FrszjXCMAcw4PNQchogsmtV8zQ8XZOo2Rlay3YmS9-nK2Z1jEBXckY8C8y2IavccKdbWAOUidl9LsHe0wLA0tC0YcAQH5HF1yfqhXeaUXmVA1tF7vJW6tBMsm443zWLqD3MvCjC6DoUb1O6IMaeSwvS7spYGuleZPr4OvXuWcylIBgHS8TlIwoo4P1zBFAlYOYCGsulS8TBKmLxOWskPS-grktYEBBK-uDxU9pVaKCMWy_l_LV8-r3z2HRajh54V3cEsSiG5CF5_EVeFJzAzQTGd79k-AjLERnGw7kNMs4LWMhPS-00_R3nRt_OPxiVnSY_vNyT3HHpf8Lf7NQnZQQ7jM6d3BBSmIUlvlECPBpaVgP6oc1FKSkSPs-6DGL-DkJW3Xo0WlcJKwl7rIXjCrM0t6n3ioRNkxBOg3grZKqF12fnWOn-jtqr0V0Iw4Lf-3Gh007OcyCIy1-RENp6DXM8JKsg1XwQTo7OfDfyf3ZSDWOLan4L6hrHPXKBKtk0m1fJvJQ9dwEM3jzPWJBilBQDI_09Nr2MCbLzNTGi2wzGMlMt4B8u7g6B5wmRWKDZchS0pSFgP8B6maEEZ8JH-c6p7wk6YfeMEC2Ih-KN9IEUvnsh-b6jj0FwcqtpWKlHBJFWJtGnXMT8rDuYX5Mm_-lAWornFLriTA8I9uu1ZOGiej0pWVgoQVWFawXYkYuoZRW5q4OGBwpiPtZIYAyDoZeAUOu7FAqrTBA2NfYfJr9vsXJOaDiYPDHRgf9IPb4xQHM0YSgpvkCDTERAkFVgQ0lLemlf2qcUXjgmQg2MNuI1NcMCu9A9o8-g15M6Sswsu2uLf8PD13MAUsf2bSudfdKaViZvkMCJ-VgQKsy2y-9J6nybC5tzJ9S3yfnlqMyHkbrxFAUf7NnocSzZcRtuRUpuGZsx20gb8xHIA7aUuwd41zsDvsOUpovILruvtFXnA2_18wbHXFKUGmKPHYYGLsz3rhJNtjs0dZF8EDD2XVmxsow3EHn4CXSQkJ8x3D5sDdyQE74fx_9l-BybhGK0-Ww_qLjHwwArVN6GcDacya-onH823CihgmmZKN3bg_XP0Q1c37IUApEO-R6ywQpAOWGv_re4uecj_1jmbBAxwRcvCNpNSwoGTm8_KSozpV6-vadvp_RC3TDHkH7f97yLxJ7ROIt5J8cQl-9eNJBHtVvWv0H0oe8V42gg4FsXB7_Fv8Ou9YUFWaJYb7FVU3IyWGVNYJyPoT662ImG2kQQHTzoNdHPdqTT_kh421XyfaJINAHA3KzKTcOq_4uNp3hq158xepsHM8HLizQKPI_oM3qvpSMxj-BuMVfkDGTnsX-JLAe3NA8yuFiZXyziuYw6hC4rMLuV5UTNJZnGS-3EEGSXXHCfghBQslnMt4jDj1X9FYwL8cJCmPPC9sEgpCfBdPYZCJUjoxwd2i4Nd2vweECi1KOOoFCdmTcDcp6WmlQxv06XLgfCiyC50yBmqw034Ukq2IsrYFPDsITQIQG_HBAe6k-2dxanLxJGlZK6CPCx2MKGElRlIESSqa99pCuUgzdvs-_ZbG-fjr42LTHtP0hHJy_ngCjrt8IgDmUKI3xEvlXZRnxnp4jkH-7FwZoKkh01DjFYkAscw5BjAlcWFqgQFnqle20OyaUTMaYIvjf-0ZUOpGi_wab0RYW1i5s61xvKyIk_2evZ87LyS57WccbcLy88MJ26kRxPMf9rOcEetd1aZxykk73d7A_pj7zxIrvjeExHyxUrM0XFgLN79kvoEAhyhFdZ_FZItdc98yLjaToxZPORBhTn1w0nj4spz5FjshbItFfVLfGCsAxgxRI88AO2oB8389PNPMe8tA4uMPMC2PFTqK795Hek8Vos_khmzeiXwo1BQaVfwLglOeKhUBAuoVvCyh93vTjhapy14oMAt24rP1eeHnQjee5Lfb_8p3gXOMQ39yxQ0Ts32B-CfxQzbPQrRQtJls8Y6lVDr0oOFz1gMHDWRrzA5z3tqHpj0Cxe3R1luIIQ06DHrv73dswQFCY6mYUsMfumIz3WAO0sa7s8fzbGRpG4zcA5_zxQpkwOEmTbBf8n_7vCRaS3weOMVJBuNSJCiQGBHR2eESoSSbV_ESxcoPGf-Wz_Fam4chWBty66ZX9gMqaAE1zWKAGMEF9zlemaUpKjF_NQJkTSbvh94a6Rtr-WR9QhWFzNxPBPIxItxGb5yNTiGZ6Ie-tQJE2Kyd1SmcfUY5fJnCdItfpnyXL4WSAbSsob9XVg4Op0uBGG4yXL__kme-X8WI0wABAACDV6iueeDk3PptXUV0BSR3PCdB9sa2FWGoPt81rhXS1voD5ApICH0CYlLLFnsnBNNi0fB0f7ZKC8y4286yDEl0NhkKDvq2n9HkwBGA_oiFOcGotvk5QXufiP82pBzLwQOow95Fx6OM7HK_uPVjzxxdawXQgSdHoQiMJwbUK2UYbfr0iYvGr8ERELWRTOOiBcZYsSsNhYHMvwVW5ahDFqpCiW8JJOq6gjlJmZ3cvwVWD7kgLmJXMnnRqtqaYl9Uk0EBEw6CZI8R0Fprd4sn-AM5SIgL6PkVm0AsR9FkBxFO5F6x3-DMWIZnbpEFcOjgpkwAtbmPtesiKe7w_XeKXSYKPfzCM5wyVZ7sq4BZaQSMzOEOgpFp7_W4kjVZuWL4HvPBA0eaJkqCCnO9CvTPynRPisSgqY5zcysrcKLAAHSQ247c1yi8smlgYsFznlptT_2rAD8h2xfxUSv9KDaokZ9LROVtS1pGJumZfwAKuHqEis6B5GAG1uZw8SgmRDB5-_dcAQWOP6jgn5PBB08RKA4xGMxzHTTF0iQgF1HMX4ScdvPmR2tC1g2_z9NYw5VvHewjIQTVUgKhl6WkLiggz4qCItjEQ-sQaFctZo2QgTphAAhAPbVVKGmXydWSPn9-MLyRxMEFd_MFPx0xEKWUtWopZnXoAnB6cuRUlaR7Ex1bd9kSJeRT-zS9vg6SmVVeqqF10HbBydZAp2CPsaAXMzrohNXkjT1tHa5DFsGCWN8Pl96gZ4XU0hcy0-v_g66wmMXmP7XBBUEh8wlJ2tg5_32LC9uz3mUecfSbUnNnM7jzPEBx0MWh0T5W4oXWkjl0JtkiRFaawUveTNuckzEnkGqxWKC3Pfi-4_c19f14CGUzZTVXhAWYKQD15Ldl65r6xU7U87dFAQUOHcEY6KUiQ-xEZztcLU_KDfunv1hTy9IE73SiYpIvhvSeus46KY7z9D_G1Hw7nQFhHgxspVLEjejdXY5Pms0wE_YhQ-bkrCOPXpnJxE194xSi57ykPsPH5TBygVP_fwEFAdqOPwiKKQ4MV-d2G2-omn1DCyqoL0Vc-bvCee7FYytR_RFO2_xikbrBZwnj_buFvANP_K1TtKf04nY7mjKJiSbrTdpywo8PvxNB2JpBD9gkVPuA2oMFvUFHHownN0jBA9yWmiKpQTY_ZqT2TR2bmCTmwL3sZEdPVl0oaBlPiFZbDTLGgF-4fBlm_xZl1OiAhj4KxXwB7w_DqvCS0V34A0o-Su4VjZzaEqO3cTuPCBuJRfnExkN0QMMtx-OMPaumAQSyZ7-x27l3q_-q2ABDt7hOImYxGar-1FLvfxxmv_aAUPWCKHHyEk-TpdjgaLYs3EWC2FD-DNMegViiW_kEhe5hNwBo_JVCn82HCUH14yb3mZwFNe2vAp5WvSVoSdkBCgEELEZw33U_IZSQ5fm0BtguhMiFPbE86oWsZYU3cs3LiC3hW-hEBIIiqIh3zxWg7Z8AcaoK_0hQeGI2DANl22GKyVTRdHgB6Vv2Ggz-KqB3NYkLJ3AirxooP_x_mqVVoIj"}}],"authentication":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"],"assertionMethod":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"],"keyAgreement":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"],"capabilityInvocation":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"],"capabilityDelegation":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"],"service":[{"id":"#TrustchainID","type":"Identity","serviceEndpoint":"https://identity.foundation/ion/trustchain-root-plus-2"},{"id":"#RSSPublicKey","type":"IPFSKey","serviceEndpoint":"QmdPZgcyqHJTiPeGMcAu2AAkZZ1U4KtdQXid1gdJQtpvyU"}]},"didDocumentMetadata":{"canonicalId":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","method":{"updateCommitment":"EiB8B_LS_O3NWo2P8fSuRwS32GODaXoLREZHdqpg6x86yA","published":true,"recoveryCommitment":"EiCy4pW16uB7H-ijA6V6jO6ddWfGCwqNcDSJpdv_USzoRA"},"proof":{"id":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A","type":"JsonWebSignature2020","proofValue":"eyJhbGciOiJFUzI1NksifQ.IkVpQV91YUV2QjctR0FyRTlkeERuMk1rclRUa0t0VXN4eGJPc1NESzhwQjl0ZWci.X94wTgzsovLEAXU1CG5M0Gqs6Gu9oHklr4Zn7aEbrdtOI_WCSCrWJuYomkcdeF8X5dV_ApZ6Gh08pPcV2VSClQ"}}}]}"##; pub(crate) const TEST_ROOT_PLUS_2_BUNDLE: &str = r##"{"did_doc":{"@context":["https://www.w3.org/ns/did/v1",{"@base":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q"}],"id":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","controller":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A","verificationMethod":[{"id":"#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","type":"JsonWebSignature2020","controller":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","publicKeyJwk":{"kty":"EC","crv":"secp256k1","x":"0nnR-pz2EZGfb7E1qfuHhnDR824HhBioxz4E-EBMnM4","y":"rWqDVJ3h16RT1N-Us7H7xRxvbC0UlMMQQgxmXOXd4bY"}},{"id":"#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA","type":"JsonWebSignature2020","controller":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","publicKeyJwk":{"kty":"OKP","crv":"RSSKey2023","x":"EyGvw3AkcUf2TZToBh6pddeaaocmvTuLCSLun_yYJpL7x0W3gVEzeKlj06J5Sej9Duk0W_yGhbOKCahOx16LszwTHVgnH9FjRk0nwOer4yKaKnjTZ2FlZsYI0OI__jhCGP9cbcOEd-1rfvUFu-ghsj6oHfSXDBm0Ekplkgs1IktoicuMsF-bD7I6tZRpP9tqFGqARUqvR2daQN-scwYUNsv5ap3XakBCDvOCBc_rPAwzapY_nuC3L6x60UGBAPtUBANdaMhAU0gxd-3JMjcSjFgwzAhw5Eorr7bIp1_od6OfBRYu3sIkij5Es6RDBLghUAx2Z3dznniJRh5Xlx_8zn4SYw_xhV1X04vY5U4O7-7veKMqKxzzoGOR7O137gSTtBk66ISXfE0k6LLsZK0Qkzi0B6YQ0Xo86d-COFNhRWQ_Lq3SCSiOaJ4lFP5_RVlHzgUXm6XY1X0jrkVPWdT42VxGjFvy_KX9f50dOkdPJTax8bGv1nEpDm-55UN8nrIzsRODaxMBooRL1y4OxyW1tpHaEdsoHvsZrLzM5g7FB2ah-62TCGkPcG3Yx84MPp50eRPIlj2omMFxMpnAZKBSRMGtk35A6xAZUI6KTYGfNI-IuWKdk0UOn6xL8W3EwMTxRgx1v7iklbgxKuCBoOeAK7FhoOVzL5YnUCHb1NUwAxDs9I5pNmrvaXsDDLKLIoz50hRAdnK92whifFoWoJOOJbQTb9sx43zmB1J7G_T28MG6UetI4dZljoNfWpXePl3vNwW979nNg7GU3N_V8ZE_slRmUv-rAw9jD0w9KXVCuZuwGIKoJ2Co8qjZxnhZUtmi3wFJin73V5BC684ebh40fnA9z-H1Kwa3ItX_mQSVYeMV-_1fydNULsdhlEnpwI5XNQ25LGqMNb4v-YRBXLSmN5CituV9rPXg5ZzQvy8VVE9qxWnicCxz2TzFrxFOOIhNTxf-YQT5Re5HJAvdy7Y9szo-i_PgskFdVm4UxMgH9ddrFUhDPNmVtVY8PoXlMzuU6gKR-1np9J6FBttHOIPu7LFFdO0Vd_Y3-Dl5mdBXFcP1Do1GN7ojcuRUB4rmB__upRAQQsqCApGurtGP1zgtMQm6ozF0gt_JpoXgvZEFK5kkm92vpedrSfDPBBn5NPIgmQgKSYfvmWRmADyr2J9bc6EjJr1-YD7QR1r2g_eGRBE1S6dexWceWTq-RktXQYOSJBnKLSkbqJniuoA70BMkjU4Jsj1EJB7oxE41RRMchA4BRlClSi31ga0T_bk31rNTLQNLGSrBrh0x2nlG8IZUZLB4fIKKweFD9pL1qhLMM-SQl3YR4-v2wxjlMXTrEDjz2xdwJsQhhzM5trtqhVdxfgBwB_ZBtU9KJqYvkB_3BhY3kYQSGDLhyCHbjyIVYl7saQGkTz_owGfj8tD3gU9oJlZHDyjf4p9AObfF4YXKjVBpPrPgwgNd-G4LAgUOn4DAVwGmGBjQaNWiLet4g4lRsLS3LkM1az1w_KyYCX_k9bptp4qLgwV6HqbLx1V5WkmubxLMpHlbV0tZFLzwThEaKpqNyz7M5qIyDvaSbTFtQ9feXhRHU7VN1MgH2AQmQzHiygXHs5qafdGSsKoMm6c_6R2-NXl3asM1TSUmD82yKonGYhSHHy60KvB4M2rVTKRENxR93u7gaYr_4cqFY9LlcqGUMzxmm6TadfSHz3rSj53C8c3Z3U9x9ftbKGOZeybdWhYbRGyES_HzmlXV5MFY5qHiE6INi_ao7Xxm8VRi5rdaHlVDWfBb8gJENbUHDDcsKQfae-4j_vXmvq4s_9L5It5kVLCT9f5NEf7jsxSP3mg9hqgwdY96ob73GsHO3HRoQARhPUt-2o7i1JzScqRH38AeDr9XnxC2Qu4LT6ffOmMKzA3qngyxKmkvyKmIl3_eEhDxpdTSf2ba6EGOD2GuzvGv2a_P9QHw52mvtEoCLNJAslzsxwxbLSnLIOkbJca1Ew26womAjSgnNwUvPCkz4lmSNTbyF63wvmNJJeD0UgkBTb2MxDw_39ukWvH0mOSJegpmENWzMhvKvxxMgB5Y1VY6Hq06V9mcg4iD0AdI-dM646yU8iLfMAAkB-EvwUUMXRE3KGU9Kx6dqhsSCrow4QDpzk0B4FCATLwawfGc1_rxQyumhF9nagl8jP1ITcLi-hlUyrOsKfSK_s3WKTw4j9iBoBWCzHrX1YC_2UTnq5XIdbY9tT4NajRzqwKLV3aYWRnqXLg_-l5k0H2GmwmRnm4ZqU-9YuAy8MQR5CM93H1gxE7oL_IWIyH_tCXrVH4hRhjd7GrWcA90s1AFpCHhBZs72ORxG_Rh8VcJpB5cTpbQfk1ESme0-UTXoSnuLPfNIQb6I6fwFkIvBx9YL7gxaVmjHMgk9BLR89iwuo3VsEsAs4ktbFfZ70l821y6q_xmOBPF-BxJzlVuHMq9hfyYVA-1ka8tBBeEy8NJ1PlYBMiVjHoKWMfqDKo0ONNv1Il_ThirUq-MM4pc0ENOqwCYkomNBFfFHdbS8L1Y5yIruufFxRbRPt6xC1TnDtq3K7JCpRjsTqv_1_u81WA4UIlW49NaruM-2lPlL6P7rWtBqG4axy6U9WYqom7aXBW0cbg31hY39xZb49G_SfSYewGr_pelurFdTag1R3ZL5VuDTggqErrppxKIBYHQP7M_reJ8fQf4JcXOmMkUOap1K7QJvvENxlQ_RQRj10d-t9spgDv5gki7uMDSA3fp4q4gf3HxZhYwPaImQ9J44zCCLUdo5dyhHsyd9neEeBniNZk5LDZRfX66ERlj49CO2dHmHLe-YQACZnMQDDug7LF0il3QHinPD-nedAAxpjfUus9Ay9vRx6nB3fHr-_9C76qx_NjCehMZHlsAOgZGU-yjdwY2uu8lvnb8dvmCbkIBYn4S_aWJ0qIOEjfWuADwWO9BXI5uzQZ0EhKuhALABMhOIi4pmnHqCE0Durvn9RaPiFz6ZKFhW2d85ZAkks_-ARI0phaKzggmB4E6k5EV3cLqkI63Oiiq21QY0VCvc0LuNoAVYzG8s4bx3udSSORrRJm2fOdURg3wtPlFq21m_7y8D09xKpHkXgEbuDJV3hWk52u0Rxv1MTY2V2_LkHIDF6my-MZLQQh0dQYnUjDfvQ3bTqj6UE4MZ07R6UZzl3Vjw53lM2x4gI17Trma17Ag6Yg6XiQA7QqgXKWy3jG6AuBLjuYRPeYo18lJm00D1D_Z_C--D6zMJKr5ohYrTi4ea_dh3CI82xBNwjeTAd95r6X0wzC3xodd7FSWJMCgt0MF6pz-MEL_jNi6sK9mIn05U4icLZLjBwl2lObaoiYxpyWEpnuMGy8J7dM1Z_aRpYt3J-Zw7i3Yf4JI2JV9u1Mo-ywQyXgRcRBhK3emrFT2fxH8SqkKwJCWn7frvbukOzSQiKD8RFuXA-SWK60mJ3erCRnka-xkGg3AiBxxeE8Prk8EGzLcB1UDRGQ_x1PXmMNtdBK65dtv1b0jGTM_uSHFndWXOrFALwi66JGyIca2WnCfQRQDR5EPyD2d2Naecbj_jMwFUsbYCxGTc76n46c1pI_QH1rxDBQ7j1Tj_rcQz6Bk7DMTNnlTFhJn2h7yVnoRPenlNCWZWZPRpr4vnvS6Ii30os5W2QaGHI_TqhhaXRFU8Z7K4PUUUVEv6u3KIZpvcuVxAbcx-ppLVkj-r2vM061Nx9aXEBFd2whV1Tw2rjf-6fm10N7U3ssLGC6sfHRpSVcsENk-ZjuYH7sY-zmN7Hf8zOYHIAZDUr1rjCgG2yCujbdOPFtPs4QKC_cFSzbpOjRmJ-urzi7duH_vH3_TBhMzM4jowgM70l1LoB9sjQ68wzlaAs74T04IroWMULoZOdaeIS54ugR79EhgqvukrIDLEoCekAY7jAs-iNW14YRPrtdul8zVUjLd4I_X3efx-IX7HvR4RUp-6lqMSN46IfvlScl0qBY_SBgCpdEw66SRo1OAIAuTy7VWX_mbvLtgZPPMkaVheFwYwBZnBLKQKyJHrNrKRQ5GdrSnJP89jdh-o6VEqG_whEec3cB1LwXipXb6v1vi-7jxU4kpU_BTMtEChb21tRhmfKGiQxHbOTRJbHVoQJ4NFlS14bTYAEuJm6yXnIW-GOVCLvlHShp5jeWc_9vvvBZnk4C7bDxY80GxadNmsKy_-AcEFN_QI9pt6lckDeTOQxgVz6Anz58RIkvJ1oPL8A5FZOl4iYuQGDAqTP6Yo-SdHbuVOuV3aM9K3L6RMgj5Z9z517O3oqsmthQdy5xtxhalD2bjV4fNsQrsXIGuNa4nAnFtfsi0uN4ahR1_YYVuQgfEQLOGSzJnw-bQ7m8tOxlDOP4MsXg6BFSBvo0LPwieTdNbZR_N4FueA59bt73HfANTd-xz6ycnZNRNO9DbxBRwXJnQogguwZQdLLLuZjqoglKwi3gmMHvCR-3QngZYQw46vAkTUuYfdG0OgaYuAAqtsEvJRaBVSud7q6pgMqM5UbG9eWv20h-bMQeBEpIuVG08HOEc9TeUzDOoE87PzBkfBqVu_s1tyItQQ-DqSvfCQBobT1pYeVsuyJSGXuaF5MXooxYfRpsAuysjWDKDNxAarmMCpioPCo5ebD0elYa6S1KV52RN15vaAZLPqNRiFkek3oy_M8C9Fi2nLzXG1Bjn_JlKzni0I3pofwFNE2ZJnoLSVpLwVLQUzzCB5GoS5P5C1DcPDxpjAr7e8pWb0QAyyIuz1EvSssczBargovo8iNxthV_MgoN4UGY3RtkDRyw2DPcFdji7AYXw_q3xlxXsWEZMfjTlkG0FfwSTHbhrL-BIXXw1u88y-w5SvjBBwk2wW0SjPVgm-qq8yonWXhnVfu4xRLMY7qNRltkzyB5pQ44rJ0iFr6tXtKus3rUTx2PbQOPNCYJynCWQnA8anAlOiTmIJV8G-MYkP3hH3g-VZSnWE8gQhbvXy9OY4YtyqX96TXRGuHNuZBDEHiPmNAvKkfgVdGE1xrxPnfZ5eN2RQWXAf5a8xgISY1bXxlt1prbFSiHTMLnikDpYNy95JBQnPEqdIYRhgzh29L_RQpIM2ItE6rPrJCl-NL0Mo3YZNdFepgL-5uOjFilpmO_EfAc06pm5sP-g6S3vOx8I9j4JrOnhygXvZx4Mr2D8-R_7s2F5QOYKCpcYmhKSqaPbdAX-q6oNQQ3fesRtmDJIVbBmioMmu5k3C8hh_L2RNAe6ItXT7XVCo-QFQ8fiUIOMWASrYHiy8qsbX4kKQJ98v070GnqCMpKVtB9522SHxJWv4h6Kpsmadh9WjAmzItl4tRV763mNcLeidWzlJFUcfZIVm9OrWbHinBUjKFnoeexpecTm2ncrzpUkMmJghWKv9hUzk6wGkQhsps-94GvQJT2ou4T5xLpeATQ3oenwez9tEwxQ07tB7FHEiIBpA4PFExNwdv8sxaEe2Zaoakh1iEjIbd4uBcEAd_E8eE3VSEPvB2_zT8nek2I9pcHEIHA52Q2_j979f-vAyJci99RN1Va8nvk3TyMz_g6OCknUZcqkhXK3lqigvhkUBl-IxjWqagdTwPfwGPtwV3JT71CZDfBWujVMLPGB_gT_dhsWlIN-sC_yiWL_thQrkgKFPqXPwQKCyz8r_iv4f8NnJIh3W6_hUURFsnu0NpVAlhi7iOU-B0cqk1NHN9BgNbT_zU2aVBEFBrlQetG5pyxxgyDSvrz-igEzZ9oqa7-EIgNv8P-0T0IUrlCIQSfPsiAUsbExwg5JwdgdQ_gD9HUt4U2Npk03XtaAySY1IXJCXeJLp0OIcc8hFeaiPMMv7Caif9RsIxjwnikwLFGtpNy70Ed6CkTMtxBR4uShDzbSz7Hk90gu5-jV5WGysOA9AbW24iqgfgCKjrjgfrod_MNG939PdD9KOV0x3MqbZJmBLB7jKCINC2ilgH3Ez4crHFZJEkuJ_Qq-KDXW7l7hjHUG_debtAu6qI1edYP09UkgmQtnZgLcGAWUhDxWhdf4XYOHfqXxfhiVu8tF-ly7iqWkmRCqhRGV5NmzUWuwvQ8-Jlh4kRa7nhpwb7ivyXiDubq85_tKuha0qKFzzz8gFuiefICHX_Uy3xM8m6Gy3KfYirumMAkuB5-IY7Dgr6IZK8YXGLZb3QEXmOjuwp8Rmm-bMnCXehgCJZplNtcWi7eQxsP4y0IoEUsmmC5Y1as1sAs8-R9XlxBfP3hdGWbOupZfS6FmMRiGD9HoWesUSVtRs_tgOUPPVav2HRIK2CLYBRwgI1NaeRcpnO8cOye4UgRm_UF36pi3hJPfIdCnhxGeOH5J0r9zYEnTDs18YsIQedQOJ9jvGBLvDi8dJ3NRzof0hk9riVtSPV7H2EKhkEL67E5pccehsmZnha0ewYbZdgEstjzjwQ6qkZRmFLOBdP11yCDzgs3eDmnk0Ztewl22-WhhpumCfNgux5OEtcSu6hcC_gtsXQgTm4QV09fFZJAH8tyfFildcaycx0w6zG_tT47jBYIwVyEI-Mvv08qYw3ZN6558VgacYehFWake3ahdjDxZ8bO_tBtLMrFXmjRpibEIYbWZW2OPgBv-4-Z_EPXtLrDpJxYjD8bUxNgxwyqxAlyqZe0FUQVo1RTWV9hzvj4GcOG7wC-_t9aEEv5h9hg3sQXBxwKwIulPSsJlAeW3dygypohfIMKiUdjDERwhgvPsvB_vsJIaVpN3SJVfNWvMEFAIRxl0o0b4upYbISICcxav7YjxARlPcV_nqG6Lnj9-6MtHOzvmwMWpcM0Y_FFro9TqKAj8TkAiGaEMYyJ8Z5EMAsGd32HwMhmdeJbA9TxNpC8CIpeNlU0H9JeSDR3bl76oGAPDIc7bDmfKjcCL_8rZamAaZucmCI4Fkkjaqyl_k0TOHrxrc8EcYzbICfu2Xp9j5Bl_w7GErvNIbMsbJejezsJxt6CR71oex_OaL_DyxGJE6bOaWZFwF3WqhVWMoMEuRwy4Z11DIsqZ2pbxyArURVFG3mIHnBJ7ffjxYbofuuuw9Ce3S0W9AwEvXRlquPr3-wLesE-Y09JL2x63dPrsfx88itwaKSyGuJyvqpTu8NwpAR8d0bU6nXG38O2ysH6-xwvDGoeApjhGaTD71tv5hYcJj1X2M-GeWFi74NjG-PYBkamWVPk8v2uimVuB402YMgUAe5RtZcKVUfHczIcj7IWreTJr8JCLl4N_X48ji2KDuBuuaBRBUYdjkl8ltWE-AQzatqUi3DF2ZDEjEarQrk8K6QDaHNbMAEQwqxIcKVB7rX6pwR4EA2xN2VYmCskYAReAbKYyzbFKgx-_kbylwjO1CMcDTdhKYHnfEznxeaxzjwopfWQR5JQ_y_4OExcY6gh_FHXXyMOQdyzdcNMPFOZDvKAf4PiXg6BV6VVbvlssgImhEbhyfKlwhmbHkrD90BVSZOfwp0m_zd_xOfwSYckSwo8ef1K6DILkCmiUSc9wiCBBGHF8ex_0u3nepPICWg30NqJPii7moRYlXNi2hKgTB2Cy1njuP9pNFSD-8cOxrrAoAz6SaxdS4QqxjykSaRko3FibccYcSE_fkx7_WWBSW_1GOKTqQltkzHWMqTbu3wEjBAbnQjYGEWn8aTNzsAh1pezmZurCOdi9uL-cjIVavKPn23HhHGfS88f3pRdohcdlszyc74acnD6VgT0VnArfeYPNBWcliVDnCE3qYSvter4l5Fe4rH1qDISEq2ni1-uxNRJx6Ck3-5bWSZxHAgvc_2gC2O5qc9TU-akXvNSqLmNtKmO2FGFtBltwgyLc8bVWAJrNxuWQVCUxXlfSkxaGXtN18lGJX-SvmRn5IsqfhUitHzJjEASiI_YOVY9OoGEkK1a532FFGdO00mS07BQCPV0w_gldLncCOgt8VPaB5d5SjOF0_whIcVAIY95y5MrZEJWcbES4zg_jdGb5SRLlr9PENPbne9VYK4_ju-MCFNo0uWibQJzJcpaKU2rZ9sAsT2goR_lu-aLGCdeimhRmual5ISX_tyMRikPCDidsweqUeRzPcriSIRDKLcQfzA3P9Lt_Mo0ql-l1EX7TcwLgCsISBJ39jyhHyPvNPbBAFAlrlF9uRhz_ATonpUwgZrQHSlpsy6Mzh-O8f57HKQTRT0VigvfIeC3J1TR4EzLkHUdC7QF4JNlprKFQl-HUh9VIOpwXfQ7VwhbxUw-MThAn8fnFAKqd8S-4S76Yn4Ns3B0FA0wlDWp9AvfCSlm50bQHUgj8FEtwz8279OoIhBEIMnA_rHNwA1gPMSAl8aU4RO4L9wTbhwVEs32i77O1pQS93ZeNwOwXXoquAAVFZwusOXz2C3jxzKzB6IdrA9LE7-ALHDvmxB-y9KUe-RgCfFgjh9EE7rdwftpCOMj30we1IOtQ1XyFSwpbIK-y6e6itkyx73nB8UicYQEQHDnl2UPtxm3TLUe5bx_E0sisng5ZV2ISypN4_CiyoAbUPCapdHnGLh5VJtaPPq0NGIVA88MkPxnJC_dTfsZKzNVDywA36U6dGzcSH16QoTfJ-ZcUJhHAKJHizKtLpdxpNKlSugnNW0P0XwgrRYAehBBqJAWrmDc2vll-f5KYy6AFEWfIub9SODwuu3j3yfdoVAjpi6Tvm_e_w18ZBYKjtRrAAg38eTrwQwdDDovzBO6t7xmJkqOxsCFl0tz0WB7YxhVMfhC6qv0ojnXM4XrhX482Ew0yMUB9Ql2_2d7u9-aM7VztBqRf9dtPj0Fc1WdfiMD1d72U2D5NukpfdO0k74QL4xFcEWgq0qAPT1Xd35HaQhe9KfUYx0d7KtbBb1BrpQ3zZWS_ThLtfTHOvGZRQH9bQQyFkx7r9Lnal_GmnKw_w-Y5ecOTXwxvtB_XQNOo2i02MTPLpYHXMCWCFB6kHee4fhJVL4yQnaac8WOYkNDZeHf7y15M6Ezs0ieyusNjY-nfeAuXS1kJ_lf-qI-1xCpx4wmOy-W4Y4Xbr5YWS8Pe17115uh3ZGN9n88HuWj_fzZ0BcrgsT4p5LvSm9lntyD3oQ8pX17phhk3xqItrnJYAq8MfnLgifMDl6XucGJj1rhsvVGfr_ccjSHxohBb0HWL6g16xEvKsXnQe-PHn8Djtpc9doxqWWC1QeFnjIFJ38TnZd2v6S9irKu2D-YTw_9TvgRZTHMLgHH7pdFo2P_-mrKP74-OvYkn0O4aUVAZ6-bCXKIZ4ZzFgt-aO6l6vyUUfhcVrQKcnRdrZ4_GYfiRdxlBL1rvcZAkVpH-iitAdQ4N0xFHFL3MO3MH_EepQXLXSgciWBbbc9lzJnd4GkCRT-uH1SKKtquXZIO28ERVLB5yD9xkl6-ch9qTYNnNcBDNSAJQeFBwCHB5xZoyuYfN9p5v40vfSDAoJU9A_3_kaYMyUBVaxQWnKjZrrA5hWy2fjRUnVpeX7PDyAyb6eZDt7dKlkWGQxvhDXRFeN9yjohquhDj9OSS0JlHsPLobIYEPThAwpAYAEH9aspydpQDzH5LdB8aSUzTmFvdt87KW_OjCX2bAvPUj7a8bhfrITHuCUwOl_hNSIaxUX9EuHEifvRKi_KnQRZvkTyN6Ji93jcr1wYk2FOjZEVdUfC_lI-xzuQDSVWUUl6URvL2tfzx5FxqScbNiq3xnIqLrNONk-p4hi1QvPbgiYvXevv6-KgoCOBN5b7E0KUoVcBh8GBPzCeP2EZwA6C9k8u55Ul0Y6dohgm5HS8NQfXCSTt7QQgchGBOyOP96JR_uRbyLPJ18KaFr9QTxkQrxpuks_tWBdd9QD7GN2MU26S9veV2mrWHNXBiKY7NNZjYSkfNyzvjsg3VCwvxU9kzvkozJ_hQnkOnEmlI8bu34cFvYy1Ms4X5fLwaFLMmG3SnAIwBsCz3HxzKU05NBHikuB3B79BGskfQK_Fe-rkahNqJgG2ya6xgeIBivC2iuCuVjM1xcVN3jM0VuwQOCIVwjPpyDgWwjm5rpjX7LfEzwjyXynX5OR8PVugx7bAFwv0UNcbkBNLadJmL5hZfeXHzgPM5u8M1_PEpwxRddCDLbmbY-Y1naQwfaKRQp_c6KwJtT3IzkOJlaYsUlEeoLQKfQI-OFr7Jy6N9-tP3x_0OpecilN6J7UQLOTQEIeygISrIiIkSQgL8m7YCl7cRejrq3kF9UutkU2OIJFseVIFtIKZL92vc3WSxj6A8NkX-yqQ9LCFljVw_acJ9tUT7tNyOF7mFKBQJPa92WpaOGgzq4OCV2nJs4GFYjXgw7uE2NjQ2i9_auhXryGm3uD3G29NjUQ6Lkingi5trDZLCzoFKtQ_-2tWnf6sC4HBlShllmYDfCCorSX3Qc9WvEwxLbRvNX0CgPCEoxIKHAE9UzN9sfWZLD6BCXAtERDgNqc458B3xIrpXpk-hmIe-Res9HtuS43LqebcFiHjjKKiBuUEBCSxSEYQPYdEII9QMsBsp9IoCOKL7y6m5EgCfQzA7hiWLlE_Xrppv625MGLzebKWzu8CP1mOPWTp4FYwaXl6sm0rgbAoR5XtNLcBazT83ji0Qhc39dVR0nFyvdSe9L-EFw6dbYUPPbQDh0hQVzwnXZYFi4wgX8iFfyvfj1cAGrQNfx2yekQfLm-vhGK_sIlCRVZf2bjS6rwAbVIhhPFuTsQ5EaYCc3QbvJg-slvxMGfr3gpUkMV24EE0dCemwKRyRyf9zH-oswETPMyAFTQmlx715Ao-RESnFuc1Ebl13oTofrWpye9ZaqqsGko3Cimdifa716i5Gkq2FJNQRRRrp979uFgzdwm2AL3Wa_5I1t4aHY0hFNXzKU5u7gNmtiTDyLSOIWLGfd44msxBYFSE9YqSdU-7KpEtOLQRppx3FR1TQooT35XW13oPp37k91Uv2j8wLJPAid7msh1AUWmpGiq9vhair7EUlZhnjNIEvhlTr6sIwFzsJPRl9Dy838w_UqVXhKcA2wJpTCjgRWXL8R8b6L7Qs2v0H554fmrK3qcTm1BgmPf6d0aeO9wsgj_cSO2gI6HgI4zL6PUQTsMTzhIY8pN8MW1jPWVa89yWjGjaanxKT6WyzdkCGj6NcG3Yh5UoKGeehwa_5FQwggBfzXYMIAK3swXYvK1bVz_68c3eLtW96nYc1mnOw0QmcuQ7ajBPpwPVqQwH1iLRS3nEWbxznVbgvcdHS1Sv8LcVU8htWp9JheVP2OCiGQPFFScImnsLDC5WZxJNohrxFO6HHJ_6T3py6zz491E_zWqb0B89YapQO7LKc_D3pU7_3-ug2A-BmtjReN5-I0QAaNX86gN5o-LNW8yl7DmVU8rDBHQBV7vZ4uijVQhDvpifKk5mqhztr7B82gamJD6gUucjs6nA9V8i9496A3dTMHdtEjeEIE5zkvtbLe44WyaDxa5KiwZikk137DL-hp9w5b2-ZjwrGqcNJrYwpTQAjHigL12EWMHKEnPEsSXqmYujeWGfB2M9_VDmSgf3J-XAZroxarSzyVuead1XNLHtLqQgT0Prh-PS1lDJ8jH5y4_JzNS6lN78BaEi-rBl-hyhXqi7ZEzGEyZVB-H9rkmCE1jnuQsHj_iWUkZFeE5wJRemTSNTxF_GqZrFTkTD68qxdtMg7nWns8pXHaqDxpWAFaONRj8JdfPCeJhQ3W9qIdugEHXFlYYtZLEuXAlBGkHQQlnL2XeZ5aYE7xDC2JYQRJBj8c5fYfusrnqBgsz4EIO5ewfwmX-OAJg2d9Pm0UVxGrXtTW1H277sVslv-2FcU32cZwwls4YthQ6fyoIVLzJTyMOYJUrpFW32r5tG425wn_Q8ezmTs90EKuVrvVo8w92JL6MDKA-orDvhvQ3beb9l7Sgc5yy9cb90rjD-lyQBgcDfJ0xHFnhjnz4S8t0yga42xeRI3r_mXd0NvRzTUHkedNMtRAdU-W382jaFGRBxXL_4YziKyewh_nGh6BlW9EQ83Qf0oSwb43IN4k6GmK6KKvwr_KiERaBougue7YpwtYyqCrEoMiEEMn-Sog4CeLzg6IuYx4awivB7VYGGGwU6Bwc2IkZkKUFxVhJK63cAwQX5Gcve_j_-WcRRGlUhI9W4RvFhQFpl0YfC3cLUzRQZfV_fWH2MIwrJm6y4VCHhnvx8O87qetR0kM7el6lY4Nrk5bNtCdBeoyy_C1sz--DjsmM-z9i9IR8PqMCZcX3gBry0Sn_js4Ka0cXPsKpM-GpR6L0CLxge1FdKNDSFUOacsiEzh3-LTu-rUUYglWzQShuc8_dtZrIEvVocirTKZ3gaImQ1M1EylwXITBxzCUW19Io1X1mxKiFpXKHtzK7AvEs0kdicMBNl1HsKSn8OH3jxwLSHI4DwFIGYBxCQ0vvG3NN5ZZ_c4OnSfQ-nojlgmeCjMGykcA9E__NgeddsOdWxnG3fVQFIiMzoJ1AtYnxHoPRbtVZdyWB3dX1L9AKxlFep77w6KS48z70KzKseRnKLa6OCPZwfXgP5kEKA7FcKwpwIaMPNxCOedtULYeDhclbLeDtjK8LA2q7a8elVyK6YRvseXaZ4-nnd7iLYLZNOv807ZLaYGm51X7aFt0YRTimfsQIGztdkY9aakmyH_XQkqPmlNa75aE4xf8FqLjwa3AZ9PcIS8EpwX_Vw_pFA0NJcvJxCBgY4Iz98FxssnBRC9dJ1aAn4Kd8lgWvHIXS974MFCCGhfI8RRVDl4S0QO7W6vrGTIZB1ngY6VHZQ1JG9NJOGtomR_8RNH98FwcPzVNUzy9AhGeKBS3WECJCxk_gKjcGB-rBogS4EU0BVCfxzCoTMJF51ufpG1k4eWlEiEpOqUYgUWAN_3XYWNhphToFLg-h1xmQWWUBiVS6tV-XVvEOgKCKp_b8dMJ_99civ11moW0s3XQpzbxo02gCBR9LQYl2OPBcoRr1bVQfmS3sljBMCgtj5NodsMpz-rIZtgbzdchFe-RE6QK4qaMwAUY0oldGd7nIW9V1C3hnGg0kekWG3JKlxMhIB3IbDAVQ4jRJ90_JbLVaj8v0cNmhAwT0QwIwuTJJYFDGM1fYrocL0UKFsHEdPGZQFnfGAeFoMQwUt3I6zpmXbIqWA0VpRYwiUwTTRNTSsH1_eX-LWUnbXBsOmr6X38Sf9SQD2giVwmji2KBw4GSfRjUsbae5gpgZZbTcXH2ZF4FK79B7kM3RW1yKHcMrT3jXyZKjfEee008n6CJraHTc2sBDtV85wr-TQgic1VgACOfee02nwbPgPGhlUsN1e1cBwTGCJiIthec58AQtsEGIsqpTwh0axbKUmUaOj7zuUjDTg0imRCdYb_iMh8ya-YUncdYTabPkBJYlnbHzCB7aXmq42akqBQTTTgVgUsrRy22Q9gn7CkGltOZRbiPZ4Oa6Uzu-CYOsK-0JcD1xUgtTd9icWNNbAg5DCHh8FhryzVmRa5VUkC81OQryM3CgKdyzyw4xSH3qw2HcCMu7VHbHYhvVEXOQQtSaedW6w1shQMbPRKt0Bf_n3DTiyvSsfAgZmA3lrhQhRzd710dzxxljzkbfYEl3Q3SKg2CNM4Pu8SzAcJj9M4WubFMqDirRgVIMgL4xthq9u4qvIGxTERgAu1h7xhUcA9f0IvKiPzBkfExW_QIYR8c9kewkGILCplgqOHbvNBtqK5uXJrnscBUm-Su8yfc3gTiWWlsb1KBm2qwj6uXOBWQ-u4xyatyltsx8AJlshq-YB-K5oJuvlwCXkeXkU3hqRM4SRwLng3VyhdL0Jr5HUv_M1ENVemAJCR1W_6IXWxbChAYiRUFVnGQMCf2Jx46eQo1sNMaO-1r1LdtVSJo4ZELftKu2X0BMQC-l9iQ5EfDT2VEPZvl5JszWbqWIlkr_RY4jwbY_OeQCkPaMxE0eywBeG5zjdTYzmPLm0YjmK5J-_7tjM_678RIQ8qyuFPuNRGFUClznKIZ-T7SYMtFie6XAQ6j3q12Mh4-zEomU1jIOcy2EzZzTVgrpmqVtZUB9wzPIsNtq27VtLz231dh2i2fAfAZHdvIy_7XQsY7-JWltkQ-fY41Dw9QOIhDb_KJHhFNH2xa3g3NGh1WxZIiJNfPXXH2pMA0xU_FnJF0uPEr2u0rEcTWqTsDgHk4krHglASUYsJYneG_YgBCHWWrGXWzbQNGYsZryPJeXNcY3hw0wO49CxV7gb56BbUNBvNIfgS6SogajoeoPTkPQAICjtAVhnrgXyIFnQ38zu9Cwjwqxy10jt04Gwm1Q6xAh_CNQwcLgtJ7elaM7zi9uEGFskPfZHF35EOhpMwR6wBoPSv0ESs8PX1_WKhYSakFyW7SewR86-W3aCDR6xznTr57lJB7BnDb9_fF6rjfysDLSjofLGwjD8qC43OlMNZB9m868hgZoCUKvSnTpVW0B2NcAoM8lgXDox6cxZPtDsW65C2fMFUmt8yqLg9MOB9QRvr8jQVvgQ75GPADaHTVbcDukGOlpWsE8qHc0y8sbWnBRwGu4lUVpyOe3R-q2Y9DVCPonQoeUt3r6EfyIPeid7GaY1S-jCTuj5GlZA4Ridz6yYYZmGXzju_OqZL9TpH14-DvywWaBu8ZUqvz9kVamnK9P_M-jTDn6iz2zy37xyEGtzWT5Mv82avznCG1l0kSoG7HPg2kdA2ngIutv3-sn-D4_H3_Wzni52iLO-5CdMjEHyo8IRF2gsHDwR0mkF5uGdXv8RD_b5KZtgMy91QfiU-h1B1OTDWxxhfSPDO00EtPBW3UPQhkMJY2_MdHzKiG6i28PRjUTIYDcQjc1RrUZFuBmD6S679gKEzKw25fKmSbk6MBIhBfV1Q0h9uX9RauUq8yFRB7mV2EQgMRzrSZd0LVqNtBcOCU7TdrpzJzk0pZkfmjIVGOAJ37T234ICX4_M28IgaNiluXWNYvW8j7k_nTy6-8uRVw30AJnkQRswmxllkn8sE8pfxq2ACMG6LhiwkUeRJU7QYz8GMhtn1HcppGw27GGLZDbd1fHQ-X8EyC_pEx6wcSKdLWOZJ-TOqBWCDHZAJJ44G9MQ_eYCZKj78LA5pooQ1OQJeno7YefrhaY7gsJEY9LqHaDBBrDYPefTlMYgHPkHKxgkT6QtpbAHN81lB5uiiN-o2HPIgI45ODYY8pmvk7SY5BVsu-lJ0K3KZJOhOsfQsoK9CWB37yZj73eFNgWO9Wd5qmmiRVbUyBrjWSXc_dLnbEAKxB08xoITcG4hDIO1TSbTIF1QsBKXbyH11lwKM9Gr3bGckU_ni5H49T8MeAx2Cce-oeZ26dj5jDGQwwwgRbDf_9eKjzVzH0MtA32QPr-ZDqwIPJlpSAIswVKI7W6-TVHeKdYjBufEUoVhjsJ2kZLNnwsgUPySarkA7PjTLxcS7L5eXTIzBWpcSqQfY6eII492F_RPgaAzRnqRW7FA0lvNcCblQJoRK80DLGM_oZajzqytR-ZgfJvWQXY5UAcW0ywx1hVklrP5H9hxJBM6LujBC-bfK2gatWTUNoo7ciIWk8WPKZf9jCnGd2s9YQhwqJfIoYWLYZj2obHw-WfedxSpLOl72ucoXM_UvtvSjnnX18plcNrQ5lkO4f23N0gh_oZhdwYeyeb1N-KADIKIdY3_6tj1AFOqN_vXTuFtEAilg5YpHC5akZeMvfOGunAVza3qucicsRDEYutxcXggArT_nUZa_j9X5lp9EItKRVyGjBvRa8VKDwoHe0Qq9JYaDk2zA0Gqz2BsXKjxS5eArOJ4t-el3UdlFrsrGz0IIM53LsVDnYFGo7G8sQWzxQHD3LqVKhumuL4q0I6gBmOZBhAzzAb-j3dE8MFDXLKOzpMXj4yY_f1BqaSVhA2LxC9FXh8xlYclwHgweVkA98obGvKfW4iMNKJza4tQ5A1QDFPDwcsF1biEPK0svQmSnHNvjhOBM_hRoZK1YD_RXmIYPWzJnULt_2Nq4Fus7QlP0m4I7qSxDSUe3Ly_RtLefBaV3G7dUa62RQJfXVKgbGQTy_64COJ89TVWD5LIEPW_LRrYvSjVlsMD7LPexlQnh6J4g3zq0uRHxcWa1bDQDUQYrQp4Ud_6qc7d7FoQqYbQgib1M_MIbRyJezKZJFNXN8aZWzAkSjR6Luk43uWgogzv_PLON19AnvbC-eLg3fE4aUvJAueCiTQGGFkBb1O2IW1kc4i8wN_II3s1TkjQ6KSvre1kN4YMOTk73lEcC6L3NcgOd-o0tPDO2O9E6I8FG4yCWmnFPjPO1FFmEnjAUSgwhEs4KdKbQwRphNPnZQ6dWsjKPVM5AfmEiLx8drX7C2NFidylmW1dpC6T9L7Qcvd2YbocFGnNv3j4ztPjt-9Z2Y4fZq-02HVNkkuOO5AB4TdPTftjgiGipnbMaBmgBNMwbxkzHuWZ-avaQfSifAvfuePdugEVjmjhcS0NQuh0_hZ-K8m0-41A-EqQ6kzgfYTwKuQ8JdIWawuYoM1Q0G1bJGpwQxG9DPDB8c6y-WupSOZ8c5l2pWsRVw7UJ47hHhFIsoDHFHVDBT9N85Y2SIRbttX2pcnKj3nw7aj6ZcTRwpNPN-Qvu8YMMjMUVV0QoIn1CEyhim0x7jqidBvcSHLamlTSqYvzDfI4l9fSA8m4Yar_VZSMYMxls278D2sxVIEjXt-fqUbXc397qGzvNniARzqZcqrataPpzQoOM-bNj5LEJJdYPqSsHioJGOkhFzWXu49UuMFYUvyNxOhrbUy8h1N6GKiGDMSwe9k9wN-5WhvfEf3wPAztWl5R4PFRf306CPhL-FW83zhBr4c1UxU56taoVNnJtsblxuTTDJr8HgIiS0bqCLpL1s-ZYOgARzAgymuZCRdaxTmK4fdFhlTs6coahCbrSXO9Iehq58t6uw55hGhAqMjVvaRn2TpgwtHS2jvGMCsLFBYnkVXeeCDwA8uIEvujo_WcIUiT7STSP1IHMyllhlhU9tb0sD8wadR8caAgHBe2CuuE6YeO4qet9JIzOLTd3kJRE9Ev7aChlmuuAElJ0o-ktfVIvUbwVAwiWV3X6AcMlmVR_6HzhwZvc64Phapf84hPMYXvnIxBSI5UbvA0X5nHU2lnqPeRlhQI0mKXvLk4Z60WTgGrJoz6mjUQNep_zG1WTSkLwk4zlLwupc492MMc-M3x-vYQBmA0J2OfXEZjnuqAQ6az1hF9SaaF87c_W-Dkd5wgzUEkoUA2kjAfLtSItyltjCzxTnH5gGs7KaeoN_9V3bj_EAquWTrF9Vdr0DyN3fVdwrjU7oZhp_CVfondyy_VQO2wtxzBICKDcgraDmcBS1Pw_VPEIXvNm0ia52zwDDo6h53kRiKECACeOLLwif-WO5IBh4DZ_DFsiuaX1dJyUUO_7vk56KjmN0QEHxaNwpvKMuPtRGOMWkRAwIKezgkGJ-GRLXbeAA_1qqT0hLDsqJUal65fXdZ_J-qEnJH9xThlPem3WrWpAYKXeVOLOCxuA-7wxyxO2DxHqJdxsvzd16aErXTcIq7OgGXL14QQXLcpQIKermnxygZf06I83xy3pkfwEY07BVX6MnouU0ybMlqeFQgsWFnP_yjPuYGA0RQGOqsL_Cz_aq94VrHtzL1M8NTQt3Jhpr_L908QQMXN7kK6CKJnDkh9Rzykak8Lig_xmz8E42bPY-RWpAgAvpju1nggo6H4oH41IfQYW2gVzTviJq9EC1rP3FtJouq9gmSH5xDo5IW09XFskxJatkvOUIjgtZhCNG_VxtML1VdSDLZSrYjMT46SO8JjWJcn__4tR6gEmTrzRE2OSjbLuZpOksXgFrOgRDsZuPSeBAE8VKVpLtHvRQKWimJumFONfHJ7JxCOaUSBzpvk88Wg9em4x7YAd_SAChQoT7XRtjlwkRszQ-TwYfGsyOOGiTyG9dzCGGy_fsTugpowfedGCGBHJpuApn7cf5NNyLsafquuDtEyUly0NDpCwF2i4Dhma5jQsDEbKOlHnq8uzAkJXRe96IQBj0FWieRJyLU-pNsgXz2PqRxNXs__iId_f1X7avOZHN7FyBa-vE-u8RuYGXuLsUtQnnA0eYesQ0hCvGHa71I5E3-w1DCu9dLeY725SC1yVZ_vJ2WJmwEPXJIXKhVgTfvw8GIEml1VGxRFvb5kMQtGbXChL1tz7Y35ux-SRoX4A23pTZVEVquaXb2QjNFOprmA0tuFeYlsUdqD82ls4R1WzgzLVRRF4Z1Jh9AFgfYHqV-7UHwJAY0OpYK9iu6PPknBPAxWsxnLxyIxQ_rRnrbD-AyW-uFhBZ5d38zkvKw68Fr24Czq84U_OlBAvHtTWSzQa_6pc6tu5KT43QDCeWwiyWt1gdahuyoqGpJNgqyD6gh5xjSr1U-ahTJpXgVjnbNBkfOWecj9GK6CMLgvcI21qVrX2IHwG9kMyQgNmu--z0VHXt0WUtEuUcHMM4PzFM5AOZ_oxSVtIbvoYGDXjUgEI-xM7BOr4e1B4n8X0aoorefQhCLe1-Lv2pKRSeUlX60RlVuRN9GkoD_UoFqz59zJwL3h2uakwjt7iehx7DeI2pHUthZL03BqsYtJth9Emw5gsDKfBIR9BAjIzbSFRnnC_pthG2E1WMRMeeKThVkL_JYkmFj4Cr1xjqXXCTAI9QFwcTqRI4ZkRgem_jqVB7H9-BzVDrqgbQoxuWhNRn3_w-xfyzv_JtRcP150_7bEN2-gbBJCexcaF-0PbkopUuQqUjE3-WYKc9X9vLWcdkEehB0F7eqzdIWqRPTsnEat4SQhSvbaOp7EgY6Ypkvjkheer3fkPelAHN86SGviWWtaxDTWMBwHQjM866tuDKWOEnLQhMb_IjQDFKHrUKUnz42saPlPWfvbas8_Ymk7bX-E263Wzb5_MWXqPHMt6UTMSOtw86MTE46YEW9Ww-WW10cmatGb4jfoQHXa_JxCRry14AjwF7CmmQLP6dnm8r4_jm8AylHV8iKCG6r6csAhY1jQ3I-24iLu01EDB6H-_bIX3uiZDXpf4T1aGBJh7I7INB-Ad7d_IV7At-qaorPyE1xvTWeFVQLymsE87ZHY0J157ggITtT95e_Q8_SEiFYg0vxg89qBpuXygL2M_Pbrb5eYTCA6K6N86CxlOvFAb2AJnhAmxe8c_KHIsFZPL6lReDGQmMPBuvdCjjLPV7seEZX30ZMTuHYXNuD7IytEJ7X1o0_04eCmcqbivHBCoQGOzDhQ86DSoX2Omx-hmQl3hI2KgKnGcnfym2Ukd-3CmHAyCDAv2kDHm38H-JdcsO2DNk9QsYtAln6XRVl5kFDnWEhm9bRh-fg9Lmt_mNkwHSwZ0YrdYhAOCMkNlukUp0EYKKhBSY8lsY7a_TPbt8vkTMSCmi2sPr7NnuyaxMvw6Jblb9OD885lSOUp3oPpoH8QPkkhYUJ4-HVmmMGD8orSe0L3k7lLbyHzz5l1EmMahHWCCbnoMGGfO2QnxV4v9YcsMmIA_NX_1CjMUh_LYKrVWE2tfmhj7Zdprbop3nTylHV6YNet5h2MVUtpfj3CFTz-7V0AxKhqmTkSE9fMv5_XY9-QxFKf9B785SPTdj1xBiOsQ0uz3TJ2CPFHOtikiqYkNu9w2cUgYejqlM0crBDpQCuFmFJCFNKrfMa7eue_4H3RSh8Yu9Yw1LXbkAuGoFMGYhegcBEvcxcDSHfZ9f1HFT7IgimpuFuoGHwaNhPnlNc1uI1ILsFeRrrXide0q3L78aMAdu7eFfSSXHm-RcZypE9LHU8caoGqd0cr8hMAFvmAacrXiUE6RtzQUZjswSOziVVwlqyszgPXIuDsA4m0AcaLyEYQ8fEsRZAg7RyRbTgMGrlo-_L1Me2JMPPbiuNi2EtBXz_85Ylbaz45KQ45mdka24ouxzs3YK5aPi-Bv-fYL7FhoIWM6AiJH5ETjucj9KrhL5u-mnEi7sYh6ttj6I-MtSpCzOLrIB5HZ-tJktRhN78f2m8h6N4FBL9ooQXR4Y-QC1MG4eRlAiugn97K-r3MDGQZR5fVwC8SPW4Pt6UDvfaxXZek0HmjYPEk63MIxeMBOLaipBGR2ziR6YsoTUZ3NOopXjZr-UsGukdLw0OIJsxA-nGjmOZCr6iDgY-EfaCAVwAOxAv47u05VBTOP1xoUhMrxNefZ1lt8hEziCDaHInMkDdc4lQVeYv6H4rR2KugX0IXGsFc-C8sfQVnALLdQNjEg8_AfTsEmY3NqE_ECIUhFwxaW8s8aWBgX97Pi8SxkCwX6DyksH9fjA76rP4P5kpWl7ynaOaCfytRliE4j5uDXXywFfwN64DWKIQt4u2gDGo9d12CWUMGrWZZdn3qn8IgEDmUdr_CGXIGcPNuS-wxWoh4G8eGNhvMk1V9zhyhcxgbjoIJLl1T9MOZZ8JQVpiy-cPgClLI2jgIbKSVZTTZ8B6T93aQj5oEbOw87RZxArjYP2XeIHMNh6JUUOND97h1D-tXlI6hlFtFTouMxLzyOpVJLfdrUcr2p0bkbNPAyk3qzxwdRWegSWH2nojJVRP5dopYDUvX3a6sXVGUefUr6llKEtyQ9W84oVESDWyhWRv6GiBkpimAlkoolaGYFYCD72gUISM-ptvaWmVvNmXdZhR2JCSn3Ec5K9TZMg0ArIgFvnJeksow6nIwDSYZ_EXqtEgn9hjLaOcKZSrixLgvGqWY5phJcyYWP7kBsJTxc9U7xCIDh_RCU8fjZzAOAl4r3DtGTEntqzqhScZ_-Fx4ygPgpi4Ko84FM0RvNQGw5VSrOWADroETQVP-La2KyDOjYo4dTauA5ArmYnXyLatcyfbnvgE5KofVhMHwPq-QSV7QAaN9aM3KdDRxBXV7YtnjPx5DzLQE_61NLQkdC0iWFjHwLwM58comkNfrKAUw3vtLzWDiLHT1nPG0pxYBn0zAid0cdOFJ3JRJl2F6-GuMSeUK6kCqbX4mtShWXp1gn0YErlKR2PFjCDNj1o56a5ejMOYAB_SNIjRLO_O7uGofXv_Om9Uevp9XKu3ca86Qt6uOpwQsifkwS6j78cGRTJeU0SlIAGBjzi6b4aJN--CpFIqF6JpuZAxhiLzsHAXRAKik3Lu6Pmb_24KBL5_ktbQRcQX6GQjGi0A4gccSOF3hdJ9j1any3RaFOA1_0HRAv-ExWoiQEyUnWALcqaC1FmXgDTxYx_VUMjeb-MqxAV4eHjJsR7e1q9cJS8qhubSQbHMH72GccTJKlZYdLBHmc0Oqejf-JKgaBMxgkGX30uCXhT9B8dag8jVrDBemQV-wak7QHgbAveaWX74ZsZZF6ZuZ6YU1llAllJlLWPVNr4aaPj_wMfurz6YyOJDnCcVxcKFjBCJRuTBF1ACh9Ye1aj5wDUVwjeKXnjEy-quQNoB5c4clujc-G-ep6-EHj6WgHZefu1HYolZNprU9zHY3T_OrisT2jDBUByHv2RajGe3K7nDZprR-e1SPApINTcKQ42Fh8SfDQsXg0qOfvMdKbfKJqQizEQiCtvkQu1oXhlO8fC4J5UkN3qsPcdG_h1TQ-_zlAPDJ97B_92zV5NkIF3XFM2iQht1oWwZdN6xwKeDRqKmpER-qz7bxiy9Hh1IxU5T_Ac5c8B5xIxbQzgTJal2t1M-_cRvGT0CjpEBjRxqts-KliiGxFl48wNePKySRiGEfnn4Xfqmy4enbmmZgyHCmo-h--qxLIxBEykrcQurpumcrK29z2_jGUNichMpAaaT3UlzgVTbOVb3gVN3Qsu8ltR1RtlO5DM_Sc6q3GQ2QpdHafa2S8Z5D_A90PuohDCpyqvS7tA24KNQEKYM2W_ONMBNNEoyU2p7hZezbbj5T_HLHVRPUiVLgugGFQkNwZ5cRgrgYqstoKu9VJWFE-odBF8G9GwHGFFqyCdBL2CADSx9AnfEssP0TSarXyn-ALo1n5f6vpUFmkcuY-4gFSang5orkODd3k7hSmsCxs5NVMLfQxPtjJcTTrKR04H7xAVNnt79YJYVW73UaXEUammc_qu0GAuNwgeaX3wIQv8ieBeqJvGbfOoXd-U6c8b2xS7b_9BCWtTKZ1A8azUrXAqOr5rXlKkq6I31ht1XzyQAWq3_YWEc8MJahqr7bR5GQqOxRg_adTocY65i1qhxebStP6XWRRurHWyHzDhi9duKfGK_eC1bbuUIevXsNDHdQBDNE8_w1BBBlg4eFuM8vSDZWJEKPxvB4Vl7ciLOs6-diW3bj_JDo1BZlpdDQFKCwDuk5RtRJmr9hGUaIbF6nrjbFduzQFh6laU7VkD_3XyqJ2C3dCD1vOOhslfiVG1fBWHpTJvKsgfLa0u94IUipo6YWCz8K-LCeOymEufdrfaI1A5qutL6tF0CaPl48rmLRMayxqTf4ZGCCDe49C74wOS_kGmxchhr8DKGUgKwiWJWQjIQLIk2PzaHSQ4cE8uBQebBsCMzlrzNr1YhYzvzhje-qorpNcwCluQeaXkqp1WST9LbExS1jN8gmJhLgS8yAOd_yGdJchugXdbfPXWD_R4oVf40bCAv3HBB3MxQKq8dZeXg_9xqr_bhwqY1oUraAHLEol6kUS--0eDJ9PzaLed1ZQ_6j-pHR-mu-OkQUvtM-THVLuNMKWGSYKcBnOFYw_1NpEkwoWtcYCzk-nq-aHJ5XnijDKutRPJQ5W6RLMmhB8qFoZpRp_aDS5LJiqp-Q4g2QhtSCckgUwHN5GSDTLaYvjkR5jeIDI0Df_tQZQv7BiusW4M-iXMunM3qpOcdAdfnBTmODqjdeBAk4dRnayZtb2Ib-JKl5ywa6WUDhpA_UQA_sIlBBbTjetvlH2sChS0D17boDPANxqPYQLorzUflL42ay1DQFsRRdnxTiNvzN3nMOxzFdIUYqWEiY29KQmAFyuERLmtWNxvUB7KB9WqxV21mbJ-yIhTsuUTHve3HdcJuWPzEtbZemmvTyJr1wckTGBWVfeT20e24dPMpBbRN24Mpx_tMxfsioxNsXFYqKHzqWqZ8Tp-gj0TUMr-dATGUJHHQ2Un1nVUYhOfB-G-cycBf8zmgcnA9EsKkTOlZY1LRmvBIknw6thweHCggBJ8Ke5N7lgYjdTTPs9HXMZk-YcGJ8Q-TkB4_Dw35xq9_hnncS-Dl-_aTs3FD-V3fAbAd9eYbttpwk9kwVnc3GzF_d-eoCntwtxNH_iYmdeBZIqLZAoDwzvFnGfVunFP4RiUtLYepxu1m7HLhPSCAQn6SNcLwGg1U0jQpfYIYGZTL3Ntq91XYv3J9vy5O1apgQZic9XEMxzOuoYf0zDEU41PaVOmGv-H-mdrmH-MI0AquibmsDkD1GoUssNDqsqGVBgMMp1kc3N6irmLeIpdrSjOLUsW8eq0YGWoMXXxp32wIfDr1fad4KV22Slqlrfv4RC2v15WxVI6j8Cn2l6ymNxCj95fk55ibBk8IgObZEwbu-O4F6focQnbqXcLMSHipxWVOo0PNAnxeG8ER8AuVaimP1nXVWhNo77VuX_Yat85m9l4Avt0Q8tR6Rpqruw0cxZRH-3GRk97-svz5QsXMJgNZsDquzmeRT7ydwFrr8NK2Ei9NmlZ4pziY4xgIjVIJgIhgkY2wEH9EBDPLuqmYrA9z2RC4KUg5aMAvhRRZ1Jrxd4uv6C7iq9o9x6AOVwA3AzuM-A42325s1cNlnURin7VjQvoDg03eXsB-G-iSEUw_WoiFatKsO1U8bW4GP1-XwaZMD2w9-NXF9JCCGp2PaYNl79WZXpoNqtOv7CS-USx0vOF6DLllVZebsUhgMTBHg6I7dmJShzC1VLrCV_XjFCVlxfSdC-HkHceCUwQwQvkH7CzkW3Xxqn9onVcL1vMKgt-D7ov_952u8jsS6gkzEkUZgSFKNUMJGZv8J1rhg-ZNUi_50EsohJTlxy8H3xw8RFN9JsTZ7T7_O2yJ-yB5bCdSHldOwfQWtPvCw0df7yzUQtkMqMY384QRdKraWO3CwhrqD5_j-iqM1nw3AKDnqvUZ_pL_MrJT5OwqvaQLlIJpSymmfw642aXt7P1TzzFnwOYb0Myjc0geBp6JKLB4MetCiKUxmYP8M3hiH8FSZLv00jUmVJj-CPVj2IVml-IiAPyPU45_2W_Sek_l6JDqxgviPNU2QfLqXLOgs7-30-8ZhrtlZLC1AYco0hIEyVvFBQC5CjorAuillJuZ02YU5_kNwGG-Avbqb2zLhjw3gO7ZB1Lz68cv8F5YVsUvCvMgRhgpr5Wj_5uFtw23HGXHKY2Ejm3Kjya_Tw1EbrPl7t-UYyUxZkF6lUh-ZnndeOB7RWVO9lDvW-kuu5XuYFbAM6ouYOPd0Am1Te__qnJe0cYwKBaqopwTCE_7cu9EH37OBm3YWyGrthggmOrcK9jSI-xA40URX30vYvyuvNzZ-0f8PrZIfTtss2f0w9om6vDpwxsWhXRlTyz9qc0ntEgVwX6t6xWklLasPIwXZpahtO8PAA9Vqy2D3t-nMSyeBaPMhkZi_k5x3ckiLR9RHH1OmiAyYkGafn1_aB381MKMv_8AS4YGzeAvaHBwwfNDBlPpBhdupAGXoGPKFCM6d5W1QoDhwQyIZ9uFKuvoPtxntY8MwG5x-Vwmg3GhIDiSmoybRNIpfIqXUVzg5_a9p9b0-Go59h9B1ntMB0K1Q0X1EtZq-tVRlv1MRpSjOl8LFyGFQ8rYS0aY54cZgE_tdOaozg5NuXDJPQR515WrBf6NyJ2E66D3u1Fde7hd-zUMSiASQXMKwCLOAMNn4f3MWoj6UR3vKPjtBNwF1umNrE8P1tErywv40kYGz8-Zy5Jub9dMgKEfXbz1s6XIqZJEDSXngwVYNQx2fhaO-uGxt-eahjkVAkt1KoTe3sDxtkX7CFQNAaVBlsy4JEqRM1-Mxg0GfAP6M5l6MMhbqkJoN4oC4TVUlASghOUHqkCorULtgKctw01Ea9UnPzXz-KKpA4RllrWdUryiRH2A5RPs3KH6mTKVjJmzXvs-tHHeQphSLLm3QV1smoj9Z-oAJrz0C-f_Y0LE4Rsaw8Ag_7G9OOrBOD1odrNT2PbpvyeMCv2179maxKeUB3WRIU_Mz8b4_vi76gODzX6t-K5zDm1ukMlpNLfRtD2FZOEu2S9dGFFy-Ut3gB8Vnu_b1wnzETDDqWZJ-6bo9qRxrRAkH6q3TF5VTKv_hnYKY6QzcmotJrdTNPQvwCztcqj4c45FtJyax2tdOQo4lhoqDapMA9TawQMxunVToG8YmNP1YKJljFq-ZFttAxcnIpaTYq9scd3cfS0S63cnjaMT_H_LEBW9FedIR53Ko12fyQn9cLgErigUWMWwgdTmE2rPo3ygRky06cEcrh6zUtNb5E0Xt8FnmR0n53wZbJHsX9N6ficGSVwanB9ZBGJz5TmRHdF2aE6NrALFCVLZ_9mUP0XVz9HSUH9YbauXqYM8afLJ_R8XNm1WtqX6gWkCG4HulNtWURyTWgVuQT4jiB392QSDulnwnUnaFiroMxbHD6UENVgg78icspfeRQ3I_wEKLpCmngQSDvgNlV-vzVct_920i-n6DSDav6Ez6MgxCa0cgrF5Fbzak-koA7olgU2xqiyoAFv02H76alrTcE6Ooi0zNIBABz8McKSqmJDhJ3RTpCYQCmJ71Xq3xdeT-9-WBX9QgNEGQ9BAcZNT8IHY7yUocfYNOQS3XbCogSc0HR260BC8-8ijyyx1RfZB2kErTGpUCo3FQJLg8QNYU4cThUe1rmgzC1aJSHdYD8OLKHflJCHZiGGaYW_MA-tBWfHiEISIUcIghjbVjF2dBoMZBW5hlzvYWOV5y1QXW0zvTJ1Tw4R6kJGWNTK4wePkrh9W3t4wMu2QvyJQLGGwb4ltSDWefD44MtkWdfquG7OTbXqEiPr2KreJ2j3DASXuBDBD25RvlZc4bhLHFj9BUJ-lulsAvDWKCb2Bou0i6akOancevmmSZUwphs-hQM2b3ugNTsgsUEoF82dXWCJ70gyr1RFBfBsZCYDMDWbiqMYC221y5Pw2zoHRdQ40xDVCmTzDZZxzBr3ywIcE0Y_6c9tlm4e6EgOkdHg5KaAV9sV_uMLbBeSxyihQgJuxA4dzQnCo3Q_owAGtnkvhQp4UgYlx2AeclHenpTuFb_t-BsO1-DV6LgRplzfXH7ocQedgUXsd-gZtA61tnwNR2qRk9dbmtOikjI7qf7tFv8r0pRbe_d_mNadmgformlLzAtUn87xkZLmcMx_iH0g7gW7gbEXnkKmX9syage0xeQ12qnGvGF-p6mBKFUM7d_8ZBFt3pSd0M2Wl1zLnK9HQJVPXjWWBf8r9UecYdpyhtZAnxREWSqG1APYDP8cPpQcewy_QaCnVqyYZRFkf6X6ch-O9sJAwzR4MLElaZ31KyCxHTj8565hGC5bJUdg_I91UgH2yJArG54y_Yc5Dl6ALUn9QgPzbqDFFUOJjwU5o9uD2XyEBYzEErekT-GqxtSGOgCFSStNay_o8OmjolNWZVRc1_aFeMUOgh_GJCAnBMs8AVNU8rG-2bL8Yn_08Lfn-QpqpZIZIVsTZinG9cCIy-nuGGUtwHtPdG8xntWD7d5rNUtro9BCoxdrnbFOkSAwCQ365HHDHG-D0bnxTd70UQLYZcAb6rkxFrENHGBQFl5f1sOWZnGhofb6snJCirTWsgJcst54Dzu14XaX-57i-J3gi6pI0alrVQhxukhTtV3oj42A2TUGD6Qb2P_PjwhVbwpyfkd9tNTRT4YKbB6v7FviTl7JKRh_lMFAeLiNc10auLFBnXOdq28pbt64ilr05QoEABo-2qj0w1qRgK1RfdC_x2WRHcrI7zWIyDONsyqumIklidGqrEh8EXCSg3a1PBLMIrUfkfyV8C7LvTL_lifHl18bZO1BJtoksrMcCmPiwEJhCCMn1olm_DSh1YHahgEFrP9PhmLrFpJrymDuzXlWENX0QfqD8_bsiaIC7sqi4ZCnGI-KCnePmdiATIkO1ROI0ty_1kRce2LFztuwYFLY_z1yJlFflviLtyjU2z3F8Dl5JjO2dWm4n7bBCRT8wAqp5eztDZdaiuQUZKi9vhIuEnqFpL5zQVTUlDpMWodeYlcEZT0pQQamulicCkRslA7Z-CThZgOW3QWCv3eYTvOlZ0merHzQFxYq-8S_0rfwK9BEA1xck28GdMIXUd5cqBN1kUPd06qbwbCAgVBABucXvWbmkCeokCXOyfxb2BHl7381ZWy3_U6M0AnKzxhtYBSmBjY8sQAeJg1WTQ0ZpbMT651_b8ipPHAUl57j9rwVzxrdtmtai0VoUVNv4UEF6gDR_byb09xWMXgCWHrBMbbs7KNNC307cI7lmSHDwFDiWjxXcZtGMCix71kfh6uZsRBursMcnUoIaGvd_Pqv7SKeo3c1DXs8d4yraU5VqtmvHuodSmfcmOCEkzLb4lmVfBZPrsJQcLb9xFH8wunqxWYhr2ERzOJDZoLIKNwQnPDcxoK7UX_tLfbHKAO_CcfHWRgB_NkcPVvf8jViQRTrskD_19WqQFq241yN8yW4a61C6v-9og8yJyy8BWPQdiKESA180YGsfujYRx40jXR1u0g-WgRF35S97vOzm963EAkAmfCPBpRckAFxeDcb9DfBvhihOeaQEobt9UNhiDTNaiSN_Hl66wA5DIPIptw0_HQQLoVQ6HUevZymcwe9A5p7_AdCf86KBN-Z6cu7-5OTmctbwROcfjMYjlJLXI4vSE1fY_BdaYPBvPWsGaPKTNr9kwy0RyDrYd4a3hzDBzEOAGUJm14pdaOSbjtwoIJ0m5TeQRm-e-EBqxv4dcABhod1agzhWgyKZarIrtkDhGW7dkDqSdxHzPCxphtD1a7SD2MdKfz0IK_IkPRSr5N690e9kBMO8r0MmuMg85Jf4vA3w3-ywnIbaW865qXxkW-3CYgJ8RloGuBcJewQH13Ozoz1FAlt1Gt5Q-uHiMokLpmbCmvGVk7xPXqDu_sqRhQSjlEXRBjmGzeotBxxhTwmzqZfJxRXEdmGAtrfqva6gzYGgSdXFWo-_wfN2-DjBa1Z8FAxpmT-dRPNvaKwOmknS-tI5xi2i7kzmh-oIn8n-AJ6WanEBaFc5vTC9SnQNxnjnnbTu-bRMj_KlXXpw-ryvlGEGhdMOqfcgSWzQLPBSVMJpDU9rSZMfGl77Q-S3q9mRfjPnd6TqlNfOskpiQijqlKNvhC_D2S8SerwBOrWTSZ2i0W2NKgtAvkgn1v7wHkNIp6iJ9CU0mXIobg1uDrdvReirxIxuznqXyf9xma99oqKmQvh4dWfhlQH-a8AB1Hl624CTjEs4CcoZfCm2pMpcDie4gVvQiGkHQosnTdOA12IX3REq8peIyawJpoyI50ConQxCFuWqKfZkxvaLMfVAHcpvRNrNEF-jD1lf6R1emRB8jW6iQLCKYVueF6qfUsmb6Ql-gmKcakkB71QGMSGTa91eBg--S11MB79NFQdZhQDpYYc5GAAKTR3PF9Cj-xk_33qn0Xz3Xw5jRTZqm-qVcqPMwcdxcB9p8JhtWuhGcfyGmON9hM83JHg8xKGUn-1qPOnvF1yWoRcI6wv7Xe3jfo-_RHLEwbPTbihfw2H6ycYxEl_iz9zlG40_WNJwwWDdHn-jsau08fNxdR4WC9FEvC7lRAUeQPVxUWE3ziJjlDMeZGz2jy4daSi-LY-QZCzarHtQ4_olBcW11Q8gtV0lOBrkATxbd7YRAL7_dh54Xw9T6X0O7TlpofzzAVMZzIn0iTai8k0eAzuj3DT2FiCHAh4-RbKHr7mzyrPQ0MUmJp2PomCnzG25BUbYSlClBcjtotLGm6YuDPzB5X7Lu_vH9eRjxMEh7ZqIYO6m81D0dwZO9aVZSSwa_LBb1iBFrHijTsL8rHXXcBSnp_jIaZrGLyKkxMaJDegmLd8HdgACP3rOqVCDg1n_CVE3_jRaqwwHJVpani_j77aSGBmItjp7HqbcgZr_CVMCBHX3XfzlhuXZkvBoc8ZaYYifhvgGFGEg0jHEaxIIU0QDqm2L6dHqCH6yAlkkT8zRgWeLH4Pey8nR2KTAZP55YtaaU38cUPOqVlvTmPihzfNHH18h0vLfaPPjA712C9V3hvVACSpU5SsXQU7NfnnIO7_5ZcX-iCaEuDsSFlJcAJFaSyKJh5kcXsGdRCAM5nVfyH6_NFHzGiNWaIqc-E3Yl4a4pS07bpe74bsEUrxUfdgmY9XULfNwuGPVg4qBsSoS8coVBn5SxwVR6OITKjr8Iq6b8EZZxxc6qJJe2Xd5mExe6NxAW3sClorNhS_wwcBYwj6HUH8SmXpZ0xqADYVqky8bn-pa5j6RFNSH5zz9deI4_1ioLhkVtvpbRFHOxCPzm56wjqQnEci9QQd8axmpiKgHP8HnpTzLHO2MgqjjunSox4sXOz_BEEPWghInV_VpmFb0KN0B4UH_M0f9Yar4O1unjCGwlLF_ZfLfNfwmi8JoDRMYIyFn6D1PxQgdBBPKN0oC_Z11E28WQqTORvTJqusVY4qoZ4d1FOkd5E9srOWuvs0gBGweaIzUAZHdRGr4NygezGmf27uWSos68ZHaB2qOc79z_TpsXiVeik5uT-pSbt2R-GEIeg8cwCH1J2u7UHsWLmJFyUmBW3K372QeHxoW8UKinTNg4Zy6uF5acVZmom5E8s957-83Qcs_unrHFoUTPy_KWoiqRefrQcpmCHra-JYSYwNxfwgzoCp-EHgl2ypCIZ5BpRQHgKweWJWeRhioSBwGejT7evYEl3-L_FazZFY5W6tKyXFktO2jIySP0NMGxFL8S-PWQERH9cdm7l1KN849iSIqeMI8cROEUCWjUIhdh9pXJnY8vYhQBfbEjJ2fJFjOEtT8ARZe1jBPNUFdoRph8YXVXRkHn0uw826uIzZGnacbNgRwgNdilq-j1Rj5iirOQwXSQ1s_L2Y2Gl8O7YZ_tuEek0ovZnebzesmYKtoY_XhunbD_U-4afK57BtBTsmm1Ed_AwfhZNV_vqKC5DraEE6c6J_7d1f3NJEMVK-QDm-iMLGdLHjOr3bf8TjpeXNjITXiBZ0kJBb_qf7Y6Sze1UueGWd_23NVi5Ufe8w--C9fE3YT0Hl0wnSRJ1WvOGlLQf2Hgk8KaazMuCVbkNFzjojCQ_IrmsEz2sbWOSMDB_E2y-6JJyET54mCpfMYhdHXVhtbAH0sdBNtp2KGfh9206nOJU-lKwjo71lgNm4XoWV5Ux1LXYSeN9r7BSrpirkFIqxyQkJez9Ulcbiz5ES5t8oaTwCOnIDE28Vy324HhGPSi5W2QPkCOV_PjOWCeM8yjS_6w_FnGuO_26ecaOEkCNBZung5p0pHSmD9D0SeQ55YvwYvwMhT3smiwDo9dRcFa6sigkWHHKtBLW29sYLB4r5pNWtHd6CihJCcG9DTTbaE5qP0-eOF1l4GKEhtIUKDPGJGwEzYHjq9emeIy1uacdIcWTCJylvCVOHdWmLaD1HefI1tjSyga1LuX-uZPAYEu4H3BHd_8RhEhTIIR2W1Zi4pcy___Mg6UnxiELbieUU9M-kBKnEG8wm1_VCAJVg6GulXQG20z5Zq0Zr8HsRUEpcO6ULm-_3zF1WYWSPU-JDi_ZiKxGdLOidzU4gb-zzrrLYtA2USFwdncVimCESLHhKPSvv6r2xX5Hz0eTuLmhshN4wL2du7QNz_mLVnI0aIGrHWQgs_DEy06L1P4ANm_Y-0xdzookmfICUGKChRsnNFH5Ardfg5JWwzC_jQrW1XM_t8g-3Hnv_A-UzUyJWBl3ezae1NPikowsbMsIwLuHHteDmQmqb9-93yiUdXB9FxycWFgaPksF17KxTvI8FS2PPwZKsSOTXMQNCQyFd4fJDR60nQhm19DhQImTl_QPvqibTAg_p5zlhxlEFdMKoMEdSrqovWF0mKoOLbIHlGum-tDlq2Ll96PE2-CrnW8NyHVDdew8iZSZ5dahyl3prZnh_EiRB8nNBESy8uH9ppuSH6XlQ0TJXdhwI1ZdOJvFonZ-7IBR1TVb4ynvpzRt-oWE-tNx1-6qwSJGzrsKnn1EYkDQaRj7nfztiOa9af0LGUR5ejBaZVx-bQ-75PO-xBTxd0UpI5kyaEf9T3rUM19GzASEzvIwPCPRplhpopMmPORqBqg1oFxqI9vzahfzntnYmWEBLGc2ks1NZWq1gLcSZLw947_EEGgyqw51cFGXLaB1DeA85qa6WT1jRmS4Fjj747XLPynyNH73NU8RWsx03F0y_fvUpPGS_vaXWR8AhEy-gdBW5CCYbsPv7WB1Ls0_DJMBSHylHgNQvC_5knHobolZyERyyye0rwmLca0TnAJS0QhgywEwaoateT_H3_aqypXAFQdqP9aXzDLINETQH-jPND97CG-mhA5bh_mmulEvQMxHyt1e4d2IWPOJjYUvSj1gaxoNl8C_v-h8719rmYl7e5jedHHzYQuDgq-i4B8HlQxgLycD2vQqtt9F8fadudBvjaa4qaHQNw_AZc_8aWNUQ23FdSfC2ZSwJvYASGSz5iwwZotTwF92WMyzfnNvdjFyluEZR4D2RXnYP9GUuwGcg6LvtzjZDq4GoOG8cZEqgSQpSUFWN4-NUVBrb8GLY-SDo08tW7Q42PvN8h6h6cPCpFgrKFrqEuNupBiw_GvD-Ihj6S81070U74EpW3yin5jY5dVGJO_Q-8GBVsyfe9VyPGlDCt9p2-FwvgP6aMZnWAQys5HjDo7QxHaLXAUAJEB4HJatbd3sDYsC3S3Py-_NDzA9_JuOI4iqvOjwf96mS8xfOkoDY0CyKso6cn7BWBDbtgGL5yjjAOrsgyRzALWaUehhq0p48D45hMtJh40lBfgA2QkEqXaqlFdooXKlfyn0nePdsQPYJWxg4O42Up_ha9yeggy_bdTtWJQlR1bpgphhsDFFhPq3rrrD54e-AmMPvLS_KnhRHR22d8t80bo2yhrXzT612iv6Z_2_wxWbm8AnUB1L4t1pnI0BW9MLhU0EC55f52wZCJQ8wJdRcH4lbuUsZ4ioBA8J6X-UtP7YjjBTeXITfvyCaLvkwGseuU4DCiTHh6mkqIq6ynzsg9kXqjCB7oDfO8yZm82JEuzLWaReeZSub0J4FAyCUQImgs3Ui1shcwK6IVbk57-Gjywva17R7qQhkYxqeDCbrd64y3QLFBnhiYSN4TrR5AaPiNz3eCYFYPTdMjNCWa7HMb8wgI8Bix513uKuS7HenMc_h1QwCzrD146GKiiEZ0LT2IIDDO8h_gKx3Y-7N5B9Og7wjsDps624fXnr889NYznFOBwuVhNmT4aULq_L32VNXYO7bvGEm8T__RrBnigqlftf0nHzP2U7gN3kKnuCg0VryDRRs30No9mmIxpCzEkGfEDb3g8SxDiiyOjZEuFTG-doTdRDPfe8DqiPTfJdFWRfDkBKFbpnV46-Dy1PKe1HdpoF82ggBjtwT6N3GZ4MPq1UVYQ6aiwlk-vUpetZHohzn1AD15XlDE_NfnZHhvGrHGApPPUFCMmZRmqQTkNH4IEpUDQM4_SacoAIdkrgHO7PoUAFoHYMpumQ2pow4VTR3mj0tpvG-iIBbcxvqc5XLQQZhXuhDVAEl3p8HPTDKqFgxTxiKT_Ns2pfkp7zHS9-Qp6VzlZgoa1Kt-ipc-BOpwBzzeDqg5bOYvDF4mySuTfNy7RnMfX2F0WZKN0j0Rbo99iNUgkvxQNTAsicaZGuGWaUbgiQI5OT_kltLhbL0Lwk4AQpgKHQ0OBgIYC7ONSWNWlHqRTR0CGRYRPPB5tOfzJ9iVeKQKgTnH-PTukqdsxJyrwalRgF9I_b3qBXCFeY7Ea1JyqYhi2c1OLLoI8UJ1kNsH9Jsuww0WjthK7U5KQEHkQTZSjdEyoD3M-daQhocYGcPqRLqt_kfDWpA9fQYJVlMCUL9aQuMdYVz0ZzZwV4PhAoqep2MwxErhdjEUPhqyt4mVopZW-Zyigqpw7ef5K8lrBvtfLV3rt0hFTzuxACp1wQOWVsYvY36I0Yff9iHGHaOArfsR0KgDgbNK7E7D5CtFrHyOn5XGjWcdjLaYKvCJ8wKrIItOXpWEMxBCcKsKsj3bo_jJKiKYS5hVeaznfwc7pi0J21-4BAkb9Vs4XqIcooEFbUlqFSxWMuBokQAsxBEdeZ4ZEWbD_jZdx8NxELKLxPuKiYYmaljKyW4NqhyeGPgFxeHV7PC8fZ5O1Zg2sTMkW7J_BkZte3oGa9zeENRYMYmVp90gURGZ9vex7-GM362BBH-Uq9w9XYGL_yVfylRVU2PGoCEmMoxqgxsYTt6t--noIEO67jMxWhOdX-i2bLo4xdZnTBBDiiCwDLBM4SS5FWv9Q1b5NO8GL9ePjw0PEowJy6Lhq1MEBrQSR_AiNr7tAQPoJc-ltUMtBCn0FrDKT8UZchBVaMPazNXHJyJB__MZfJLc36Pr3xI3YG7C7plb4MOzJ2UU7knbHbcGM8WqKykYOBlde91ywezS-WEo8EUTO9rVUTDPwSPH2NjnuFnu9cEAmXYicqip9J5WLcnWxKuo51O53VaSXa3KOwkRsh86PPoxbN_6boEBx2b78eQOgVrE8T52OD8SryaCcj7GmHsA-nLWXhAZ98WTCCR_O3N3JZSMDB8NNKaTdyjILTThzcZBAMHpCZteh3JxXO2kiw9Q53cCVt-PNAVFwgANiyFFW00sGKI1VxK2SqsCXupmVQqzwJ_VN_KyQfh56xgMWxEucdcbneMoOWUzDZduKIBBhM3BiiaidHeflnpuDid8poBugQVdxNZdxxi27cdV7h0ieu0WAJj5G4DjNY5XI-S3cilYnTXUNg3nE4kQb6jVsjVPKwS7sur3AvwPld2qHJD5Zo5_63axnH-FQuiA2oF7pZxoYiz4IYY94ydG8gOOYteoiwEDD4tDi9_p-Vh19qsJ8NyAaC3sO1mKZUhLpGX4W5vXI9bONL6KfiZtpGsNOS0al73DiqdLiFtAcp68geOr3ym7Miq2xtthT-mCiNOn4HugT-rogZbzPlRK3aHEY3MsLL2BBcPue8ffnazWOosLQuThIGdGwHxSHwk9crZito6H3rfhy5FQYRZELbjkp6XwSzWqwGNh5PvS3a4WxLOImjdS_SdeFFztTbz643sos675Aodwntlo8e97352Zl54dJVBWQQQXZe92VNcHdywcaHzSA2NyLRWz9kJA4R4jHUBq0Kd_y-f_4LZMgcnSJyB_kxotskTdJvy8K4VSB7NSgMxkfzv-DWokMaWuZ6i9lhG6laXjt8SzVmZnBXx2fcGgveBZ0cEEy_ZAjwSaqkircbn6rIcmwjOLxsSvcyHHaB4371u2OZzhoM1eRQ6I_wXHJP2FW4zESJYPOhSWtJ6Apz4rHoUnlDCcg1MnT3Q6PvRNDq0jB26NCCl4ixvXlWtuWTa6_bXBARoDauSXsf9YAX-vnSTK2lOz0pOWgz_QjQw0Lx7nEi4sMXdnGvQNxkSiGAmExZzqAPZwMGbdAJUnjc0jW7Fi28MG3G8cHvO6fcGMo-IHUlH1hr7vMVCViYqjcZQOJ6YgAQNQNe6mXCcsSJij3_AeMXOJvC55N2l9GkRBkByX7-NO0zWRMGZdtYxe-25RMM46v4AZi3A2mH-31HphZ34kIlBH9yb-8Vw4cdUHpY42kEhnXusSk0gx_bGxqJRVVpVgo0EAAAkhSRkWSqJiccp5iZ1yZ2EpHOgEM1vthLyCualal7K-fTHBm5jSjNqNNiZ85xJF3tbnHSjLNdQ-sYcUnhDFedPfS1bzfVZrJBfzjp9_itNRPeJnHhYGe-K9d5TQqjrBAtwrGnMkGhpegfK6Ac2Nklvcl-yCdX0Fx_OYe6peI4slr4S9XmZBj3ZpG7PX4NdyAKDu0GwufKIcSATJlFk-1L17vj-b54H5iFj5472wPjh-E9NJ2UWS5GbEC8TPpqw5wQH_Q4KnOIE03lgzCcImIKW4jK52uCSsBljKI5CXQzgTj2lR2lf7OqqEwyuFP6KEm4Gbd98fASaqrgFmR3CBqJfFkaIeuluglEt6hbkIQU4KlhVJ1kwkOq23gcjyxC4TXYEBNake_62MYh17xz5yxky34x6cl8B-e14KXqOG5qG5ug3gsoD334ICr72xkt-m3mICgkUYOSBE83pb2AA7YuW5IqwTLStyt03wQhYmDXd_q4FBM7ZO-uwue_cT49vvpDHBAL7zwG9if6P_wwVVqO85qFfri0-S37JXpakkJ6_9SUpM18Yo4g2SbEoFLE_psEgmhRAVyGZjGMCU2Yb2Nh6eQaVhuiciWgij3Hf69IJYKZ7dgNmCuuTMp_VlJ0_bDWGlAQZUvZoXemSxVUvOEMjNj0JxhAnuo6Pi9eWLcpy018a71RUAcCrdI6NLvPBNr6qYJgZL2YE6lLe5kN2xxuxtNIm0PdkyvAo9N0OGwXOkQcY8KxwwhBPI01FGQ1ULM51ICIEBERqQD5-RkIAICNR6o8zZD-6Iqah6mvg2OOhpEWzyTuIV6y3d_hOKpYtdPZ0tYpmGdXjl0CM6UZmUyAxk43Frunx0UQg3pA_Awwu5YhXCPek64_gbjQve8bn5Dxl6ZAvBAk85VngWQNtjH4JNk2GABmghnZr2ZHWhO_GX-q3KKTyOqbUjACY1il-tUhIs0TkcQqrYLRMXRrSACeDKw1VWm6iTI_6IYfcUGs_H1Y0fgyCSI3lq3495MNy-dbp-G5WiAQCZI_mqzoxTcr0EifYsDKQuzpSs4e6e4beFerRgJmLVr9Jgo9heM988Va39i0Vo0AEIPlaZqLXrAz--eT1xxSdBi6JlxKS2uzYsl800ySl66rIKPUoXdkVni_F_20mmkwEGCAQ4ZJS1g52aDOSjCYPuP4nUfCCL1868DyocogHBIwr7PCQ4-_0e7rKflnzCoPtETbNRKJj55oRaiAlFdqaTWWSMp_LjH7w0GFXxzTtnuur3GA3QaeaCO9bIPf-kiFhBArunZ4iY6SdxqV2bu3ANgoc35zfPy7r4wZDnS2BfHFn6KXRHhns5yN5U-OVjT2pIBWbLxQj8J8TOrSGYkpcTwJ526XWPKA03qIn2pOEe4wUDkW0tkxyyIgt5cCjSPWhhQQLsYYKJ8rk2ojWvIHSdHSgIof0eVI51RGCW4jcg2pJ3I25sFIfpgqI5QipxB75eTIB32XCBtzWmK2E6dPAQfnHNPYITbjLmOrH2f6zbW1_LJ3LVtMMijseSomNhA0v4KUEBy5aOriMgwBRc2doCITBcWz0OD6TCXbcrNvW7g6BDK67Ym4Vpn6bl3B4tIH19TNQB4YhX4z2kAyhlOOlvwqMcfhtdiNxuSZ7BAqQYixn5dDpswpCqiI_MjH51TMikt-YBBCHTr-RGRIXaWxk2sTl01agDUdyWGJ8wsP1f0ndpLm3fHdejNab0MOn6osZGpP3ZgZIYoX0o7CoF_5lVDdc08Dt7L_yEmzk4ccF-JQ0JtbfYdzvc4OrUBm3zQfNVsdw_AQHE0H8y3wolZFgsPzAOF39j-_9SDKkZQAHkO42MKEBuDYNRANGd41ztyybua00Dn8XEYC7OiWofp6CNgeFts0oXhYM7YU-0A8h4n_xVYrk-0Rb-zpprX3pmPsLySXIDR0EBHRdi54BjFeutO1ODlZUI0JXKinpc3TEq1Q8Umhk5Yid-CmzYfaVtt65hsdKIybzDgZkBSqOZHNlU-qgtHZsZjB7HhlsQH_hsJMfO_GDYmvUyL61zZ_6i-kzVl9kQzarBALNWbFaReiu2SG9cY4n8raKYyXQxQXE31wFUrKaibEAXJlq26xQzmZmf12t4-3ZVxMi15PRbREWLYGzqNRARqU3mHd3_FPTeaLxcWy-KfufvSTVOIYkKoAXAbHfGckSZgQMlCPqKvao0Lss7N3bdcI04kJRmOcExYhAXvepyznGreKpfwWLm2YpoPgFuWq2cbkOg_KNOxeI-SCe8WL5geA7u7S-PPZZ89jarsvO7kPAIQXxHg7a46y9wzDLclZD7UcECTva6MEKRlMP5zsg4EfRkmZ8AQcykymQikio50dvSITkyqtD5XLkLYv2eypab6-1CHu3z-YUQSHYLOw4fsU6dR8lToK4I4pl9auL2j4z2FqwZTt-wnGkTXTevikprpz7BBaY78BYmJHquSGjIEoy59aBoFNWsKLhyB7r-JFAVRXgZAspE59-JmzJVSIfyNWXThYFzabEXW2VmUNRAcb2pRUP7KYWY8xqgZTvQZ2mtXQBY4GpAoXR6jgH-fmWg988kAQBxRnDoZgb0VqOUNQK29C5BIEt8CsHE97YSouTsqqGtATh9YQUinkIpjyHMAYRfnkMiywoFYeaJdEd4DFPIvJ_MmDWtg43nh4dbJahewqSfAzmFH1B-js9WAG7bivifCkEFdHfWcyDybAKICp2iZ4clqNYH9EoSgYJuDnUoyHrBvhWbaG4CZFi6bALdp68fj_7D6MCId76bo2D47SRj-q6bzrQFHvrbfK86EdM5KbJftG9ieNvuE7PjAEAheezl1fxBBKKZDCnxPzovqnmBX3mnEy_giFlxpBfUm7g0ot-FrszjXCMAcw4PNQchogsmtV8zQ8XZOo2Rlay3YmS9-nK2Z1jEBXckY8C8y2IavccKdbWAOUidl9LsHe0wLA0tC0YcAQH5HF1yfqhXeaUXmVA1tF7vJW6tBMsm443zWLqD3MvCjC6DoUb1O6IMaeSwvS7spYGuleZPr4OvXuWcylIBgHS8TlIwoo4P1zBFAlYOYCGsulS8TBKmLxOWskPS-grktYEBBK-uDxU9pVaKCMWy_l_LV8-r3z2HRajh54V3cEsSiG5CF5_EVeFJzAzQTGd79k-AjLERnGw7kNMs4LWMhPS-00_R3nRt_OPxiVnSY_vNyT3HHpf8Lf7NQnZQQ7jM6d3BBSmIUlvlECPBpaVgP6oc1FKSkSPs-6DGL-DkJW3Xo0WlcJKwl7rIXjCrM0t6n3ioRNkxBOg3grZKqF12fnWOn-jtqr0V0Iw4Lf-3Gh007OcyCIy1-RENp6DXM8JKsg1XwQTo7OfDfyf3ZSDWOLan4L6hrHPXKBKtk0m1fJvJQ9dwEM3jzPWJBilBQDI_09Nr2MCbLzNTGi2wzGMlMt4B8u7g6B5wmRWKDZchS0pSFgP8B6maEEZ8JH-c6p7wk6YfeMEC2Ih-KN9IEUvnsh-b6jj0FwcqtpWKlHBJFWJtGnXMT8rDuYX5Mm_-lAWornFLriTA8I9uu1ZOGiej0pWVgoQVWFawXYkYuoZRW5q4OGBwpiPtZIYAyDoZeAUOu7FAqrTBA2NfYfJr9vsXJOaDiYPDHRgf9IPb4xQHM0YSgpvkCDTERAkFVgQ0lLemlf2qcUXjgmQg2MNuI1NcMCu9A9o8-g15M6Sswsu2uLf8PD13MAUsf2bSudfdKaViZvkMCJ-VgQKsy2y-9J6nybC5tzJ9S3yfnlqMyHkbrxFAUf7NnocSzZcRtuRUpuGZsx20gb8xHIA7aUuwd41zsDvsOUpovILruvtFXnA2_18wbHXFKUGmKPHYYGLsz3rhJNtjs0dZF8EDD2XVmxsow3EHn4CXSQkJ8x3D5sDdyQE74fx_9l-BybhGK0-Ww_qLjHwwArVN6GcDacya-onH823CihgmmZKN3bg_XP0Q1c37IUApEO-R6ywQpAOWGv_re4uecj_1jmbBAxwRcvCNpNSwoGTm8_KSozpV6-vadvp_RC3TDHkH7f97yLxJ7ROIt5J8cQl-9eNJBHtVvWv0H0oe8V42gg4FsXB7_Fv8Ou9YUFWaJYb7FVU3IyWGVNYJyPoT662ImG2kQQHTzoNdHPdqTT_kh421XyfaJINAHA3KzKTcOq_4uNp3hq158xepsHM8HLizQKPI_oM3qvpSMxj-BuMVfkDGTnsX-JLAe3NA8yuFiZXyziuYw6hC4rMLuV5UTNJZnGS-3EEGSXXHCfghBQslnMt4jDj1X9FYwL8cJCmPPC9sEgpCfBdPYZCJUjoxwd2i4Nd2vweECi1KOOoFCdmTcDcp6WmlQxv06XLgfCiyC50yBmqw034Ukq2IsrYFPDsITQIQG_HBAe6k-2dxanLxJGlZK6CPCx2MKGElRlIESSqa99pCuUgzdvs-_ZbG-fjr42LTHtP0hHJy_ngCjrt8IgDmUKI3xEvlXZRnxnp4jkH-7FwZoKkh01DjFYkAscw5BjAlcWFqgQFnqle20OyaUTMaYIvjf-0ZUOpGi_wab0RYW1i5s61xvKyIk_2evZ87LyS57WccbcLy88MJ26kRxPMf9rOcEetd1aZxykk73d7A_pj7zxIrvjeExHyxUrM0XFgLN79kvoEAhyhFdZ_FZItdc98yLjaToxZPORBhTn1w0nj4spz5FjshbItFfVLfGCsAxgxRI88AO2oB8389PNPMe8tA4uMPMC2PFTqK795Hek8Vos_khmzeiXwo1BQaVfwLglOeKhUBAuoVvCyh93vTjhapy14oMAt24rP1eeHnQjee5Lfb_8p3gXOMQ39yxQ0Ts32B-CfxQzbPQrRQtJls8Y6lVDr0oOFz1gMHDWRrzA5z3tqHpj0Cxe3R1luIIQ06DHrv73dswQFCY6mYUsMfumIz3WAO0sa7s8fzbGRpG4zcA5_zxQpkwOEmTbBf8n_7vCRaS3weOMVJBuNSJCiQGBHR2eESoSSbV_ESxcoPGf-Wz_Fam4chWBty66ZX9gMqaAE1zWKAGMEF9zlemaUpKjF_NQJkTSbvh94a6Rtr-WR9QhWFzNxPBPIxItxGb5yNTiGZ6Ie-tQJE2Kyd1SmcfUY5fJnCdItfpnyXL4WSAbSsob9XVg4Op0uBGG4yXL__kme-X8WI0wABAACDV6iueeDk3PptXUV0BSR3PCdB9sa2FWGoPt81rhXS1voD5ApICH0CYlLLFnsnBNNi0fB0f7ZKC8y4286yDEl0NhkKDvq2n9HkwBGA_oiFOcGotvk5QXufiP82pBzLwQOow95Fx6OM7HK_uPVjzxxdawXQgSdHoQiMJwbUK2UYbfr0iYvGr8ERELWRTOOiBcZYsSsNhYHMvwVW5ahDFqpCiW8JJOq6gjlJmZ3cvwVWD7kgLmJXMnnRqtqaYl9Uk0EBEw6CZI8R0Fprd4sn-AM5SIgL6PkVm0AsR9FkBxFO5F6x3-DMWIZnbpEFcOjgpkwAtbmPtesiKe7w_XeKXSYKPfzCM5wyVZ7sq4BZaQSMzOEOgpFp7_W4kjVZuWL4HvPBA0eaJkqCCnO9CvTPynRPisSgqY5zcysrcKLAAHSQ247c1yi8smlgYsFznlptT_2rAD8h2xfxUSv9KDaokZ9LROVtS1pGJumZfwAKuHqEis6B5GAG1uZw8SgmRDB5-_dcAQWOP6jgn5PBB08RKA4xGMxzHTTF0iQgF1HMX4ScdvPmR2tC1g2_z9NYw5VvHewjIQTVUgKhl6WkLiggz4qCItjEQ-sQaFctZo2QgTphAAhAPbVVKGmXydWSPn9-MLyRxMEFd_MFPx0xEKWUtWopZnXoAnB6cuRUlaR7Ex1bd9kSJeRT-zS9vg6SmVVeqqF10HbBydZAp2CPsaAXMzrohNXkjT1tHa5DFsGCWN8Pl96gZ4XU0hcy0-v_g66wmMXmP7XBBUEh8wlJ2tg5_32LC9uz3mUecfSbUnNnM7jzPEBx0MWh0T5W4oXWkjl0JtkiRFaawUveTNuckzEnkGqxWKC3Pfi-4_c19f14CGUzZTVXhAWYKQD15Ldl65r6xU7U87dFAQUOHcEY6KUiQ-xEZztcLU_KDfunv1hTy9IE73SiYpIvhvSeus46KY7z9D_G1Hw7nQFhHgxspVLEjejdXY5Pms0wE_YhQ-bkrCOPXpnJxE194xSi57ykPsPH5TBygVP_fwEFAdqOPwiKKQ4MV-d2G2-omn1DCyqoL0Vc-bvCee7FYytR_RFO2_xikbrBZwnj_buFvANP_K1TtKf04nY7mjKJiSbrTdpywo8PvxNB2JpBD9gkVPuA2oMFvUFHHownN0jBA9yWmiKpQTY_ZqT2TR2bmCTmwL3sZEdPVl0oaBlPiFZbDTLGgF-4fBlm_xZl1OiAhj4KxXwB7w_DqvCS0V34A0o-Su4VjZzaEqO3cTuPCBuJRfnExkN0QMMtx-OMPaumAQSyZ7-x27l3q_-q2ABDt7hOImYxGar-1FLvfxxmv_aAUPWCKHHyEk-TpdjgaLYs3EWC2FD-DNMegViiW_kEhe5hNwBo_JVCn82HCUH14yb3mZwFNe2vAp5WvSVoSdkBCgEELEZw33U_IZSQ5fm0BtguhMiFPbE86oWsZYU3cs3LiC3hW-hEBIIiqIh3zxWg7Z8AcaoK_0hQeGI2DANl22GKyVTRdHgB6Vv2Ggz-KqB3NYkLJ3AirxooP_x_mqVVoIj"}}],"authentication":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"],"assertionMethod":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"],"keyAgreement":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"],"capabilityInvocation":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"],"capabilityDelegation":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","#QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"],"service":[{"id":"#TrustchainID","type":"Identity","serviceEndpoint":"https://identity.foundation/ion/trustchain-root-plus-2"},{"id":"#RSSPublicKey","type":"IPFSKey","serviceEndpoint":"QmdPZgcyqHJTiPeGMcAu2AAkZZ1U4KtdQXid1gdJQtpvyU"}]},"did_doc_meta":{"method":{"recoveryCommitment":"EiCy4pW16uB7H-ijA6V6jO6ddWfGCwqNcDSJpdv_USzoRA","updateCommitment":"EiB8B_LS_O3NWo2P8fSuRwS32GODaXoLREZHdqpg6x86yA","published":true},"canonicalId":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","proof":{"type":"JsonWebSignature2020","id":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A","proofValue":"eyJhbGciOiJFUzI1NksifQ.IkVpQV91YUV2QjctR0FyRTlkeERuMk1rclRUa0t0VXN4eGJPc1NESzhwQjl0ZWci.X94wTgzsovLEAXU1CG5M0Gqs6Gu9oHklr4Zn7aEbrdtOI_WCSCrWJuYomkcdeF8X5dV_ApZ6Gh08pPcV2VSClQ"}},"chunk_file":[31,139,8,0,0,0,0,0,0,3,229,147,79,115,162,76,16,198,191,11,231,240,70,197,8,230,38,50,138,18,64,16,212,184,149,178,6,152,0,242,103,6,102,64,97,43,223,125,199,36,149,125,79,123,217,220,246,48,85,93,205,211,221,195,211,191,249,41,68,40,103,144,10,143,63,126,10,4,178,48,65,31,49,12,89,138,75,225,81,168,17,201,97,136,132,59,33,194,97,83,160,146,9,143,92,218,4,121,26,26,168,251,80,167,17,87,78,231,166,231,74,81,187,108,47,197,196,176,59,120,0,96,101,27,10,176,61,134,50,177,148,213,221,116,187,83,235,17,160,188,27,235,8,226,69,107,138,203,61,10,182,105,92,66,214,212,104,52,24,13,248,215,175,254,235,75,118,155,23,214,45,23,83,20,146,209,195,36,27,114,69,198,58,158,1,115,30,94,121,32,187,200,209,245,142,46,175,65,215,24,192,41,40,113,236,243,147,140,29,191,210,188,60,242,244,38,156,238,36,177,163,152,87,220,74,179,125,91,108,229,163,221,106,126,178,80,104,103,15,148,141,218,3,2,50,73,61,154,77,147,101,45,88,219,198,246,92,1,225,237,118,163,154,96,250,238,142,0,41,69,245,205,31,19,177,4,71,188,33,108,88,194,173,73,67,248,110,27,191,30,234,102,113,141,208,187,97,119,66,8,9,12,210,60,101,221,170,108,241,151,234,119,90,67,57,138,63,210,47,111,47,119,252,87,235,54,13,209,255,236,245,234,134,242,253,192,180,92,105,191,253,91,69,183,177,220,139,175,18,80,70,4,167,183,53,9,9,99,132,62,222,223,167,159,162,255,94,113,83,70,239,83,238,111,135,125,181,20,107,140,153,240,246,242,118,155,221,16,174,65,115,92,20,41,251,88,184,0,82,109,231,2,175,61,106,211,116,235,151,184,17,117,127,214,63,60,23,217,105,33,49,210,245,177,188,88,14,207,145,187,20,143,110,204,253,250,107,154,178,115,85,215,210,220,203,138,188,95,31,119,120,192,55,114,181,168,210,214,198,131,13,104,118,178,67,172,218,227,45,50,157,239,167,9,206,136,129,131,141,173,232,202,197,110,69,188,244,20,67,178,160,168,228,162,58,156,1,169,81,143,245,126,233,77,22,107,255,147,166,136,18,80,229,108,198,114,207,88,203,225,206,221,156,98,211,204,202,78,219,84,254,69,92,235,57,185,108,71,197,162,73,6,255,8,77,34,201,27,42,14,255,8,213,124,0,162,75,239,132,149,249,108,29,78,18,172,240,209,242,97,51,158,25,246,147,20,31,156,135,77,47,205,188,116,88,157,210,217,119,64,133,54,221,129,66,171,135,74,208,236,39,177,117,128,120,121,28,200,79,166,119,141,159,230,83,67,14,3,184,58,175,210,222,91,125,63,84,131,178,116,69,210,143,192,113,249,26,200,96,88,189,54,122,82,106,174,50,26,235,137,154,226,107,63,6,34,80,205,210,28,127,66,85,239,43,109,183,150,146,225,196,245,134,150,232,83,89,151,175,238,181,13,230,3,63,55,77,199,137,175,197,193,62,68,227,224,249,159,130,106,244,71,168,84,237,149,26,173,10,183,179,103,254,128,137,44,163,205,212,210,109,226,239,93,51,9,125,203,92,91,186,167,237,29,235,50,186,220,26,253,2,202,202,18,61,4,7,0,0],"provisional_index_file":[31,139,8,0,0,0,0,0,0,3,171,86,74,206,40,205,203,46,86,178,138,174,134,48,221,50,115,82,67,139,50,149,172,148,2,115,195,83,189,77,3,146,188,29,131,43,253,178,92,35,189,189,204,140,44,243,204,42,74,203,115,19,139,162,66,34,205,10,138,82,12,45,29,253,10,74,204,10,43,253,148,106,99,107,1,80,57,150,45,78,0,0,0],"core_index_file":[31,139,8,0,0,0,0,0,0,3,133,144,221,142,162,48,0,70,223,165,215,67,34,136,69,189,107,65,20,196,65,228,71,119,55,27,211,129,162,229,183,219,34,35,24,223,125,221,125,128,153,235,47,57,231,228,123,0,46,218,158,73,214,54,164,114,154,140,222,109,86,209,88,48,176,4,65,157,159,16,209,118,114,35,121,26,133,131,184,233,173,250,81,236,131,149,231,49,168,73,161,113,180,101,163,45,59,114,15,37,120,3,45,167,130,116,47,148,4,203,7,72,5,37,29,5,203,95,15,32,111,121,206,238,22,233,200,191,33,163,85,71,54,68,94,95,142,21,195,37,58,45,6,37,146,103,201,118,99,52,150,57,26,247,219,189,227,124,224,201,116,186,175,236,201,161,234,237,133,49,100,238,229,229,16,52,109,123,42,6,179,173,107,214,213,180,233,254,83,204,161,238,85,195,95,99,36,13,234,213,181,142,157,147,101,6,56,185,102,126,140,78,179,32,227,142,120,215,67,107,53,251,4,207,231,219,55,77,184,236,39,197,108,110,96,43,140,10,183,115,122,205,114,109,223,223,148,16,106,205,34,110,175,106,223,97,242,99,234,110,209,23,77,149,79,142,67,186,238,213,90,9,104,17,23,120,226,169,243,53,180,18,59,161,81,96,254,52,111,209,65,212,163,137,131,203,247,77,86,68,108,228,159,9,133,83,87,247,118,136,163,157,178,72,80,59,111,46,179,121,20,113,109,171,104,66,109,104,9,171,224,171,159,116,126,84,225,13,27,27,133,21,8,38,176,240,97,150,29,243,181,249,249,231,61,181,66,151,103,253,57,14,199,246,128,94,77,191,159,207,191,142,167,192,117,34,2,0,0],"transaction":[2,0,0,0,1,113,221,4,189,16,26,231,2,48,224,28,93,57,7,140,195,149,161,45,117,110,230,205,103,61,52,184,254,125,243,83,89,1,0,0,0,106,71,48,68,2,32,33,204,63,234,205,220,221,165,43,15,131,19,214,231,83,195,252,217,246,170,251,83,229,47,78,58,174,92,91,222,243,186,2,32,71,116,233,174,111,54,233,197,138,99,93,100,175,153,165,194,166,101,203,26,217,146,169,131,208,230,247,254,171,12,5,2,1,33,3,210,138,101,166,212,146,135,234,245,80,56,11,62,159,113,207,113,16,105,102,75,44,32,130,109,119,241,154,12,3,85,7,255,255,255,255,2,0,0,0,0,0,0,0,0,54,106,52,105,111,110,58,51,46,81,109,82,118,103,90,109,52,74,51,74,83,120,102,107,52,119,82,106,69,50,117,50,72,105,50,85,55,86,109,111,98,89,110,112,113,104,113,72,53,81,80,54,74,57,55,109,76,238,0,0,0,0,0,25,118,169,20,199,246,99,10,196,245,226,169,38,84,22,59,206,40,9,49,99,20,24,221,136,172,0,0,0,0],"merkle_block":[0,224,228,44,50,91,136,90,53,184,101,89,134,219,136,40,143,2,100,212,246,127,92,201,14,109,13,17,39,0,0,0,0,0,0,0,105,173,156,82,17,65,101,68,32,6,152,112,104,119,198,46,124,201,58,41,245,245,163,29,5,181,212,9,82,121,206,125,61,49,81,99,192,255,63,25,113,234,45,246,29,0,0,0,6,3,211,202,105,163,97,74,203,69,161,73,102,200,18,205,158,224,52,199,5,242,15,172,61,175,143,121,108,153,244,216,5,165,253,142,118,26,226,235,158,11,14,77,98,209,149,153,88,111,185,142,138,123,230,252,113,19,68,30,85,111,179,31,248,44,156,234,132,87,199,197,126,65,242,234,243,46,166,97,119,197,11,227,194,64,83,68,66,52,146,13,149,202,60,196,157,0,163,31,110,109,24,100,1,127,156,249,212,139,81,39,72,113,196,112,14,112,145,223,239,20,175,156,146,197,52,2,21,183,216,140,200,32,33,136,227,131,123,23,29,186,20,255,237,232,241,69,178,200,124,29,188,54,66,102,153,48,81,121,88,251,117,66,156,69,172,170,81,196,22,178,131,96,77,81,95,128,249,93,219,79,97,14,141,219,120,118,152,87,19,135,118,2,175,0],"block_header":[0,224,228,44,50,91,136,90,53,184,101,89,134,219,136,40,143,2,100,212,246,127,92,201,14,109,13,17,39,0,0,0,0,0,0,0,105,173,156,82,17,65,101,68,32,6,152,112,104,119,198,46,124,201,58,41,245,245,163,29,5,181,212,9,82,121,206,125,61,49,81,99,192,255,63,25,113,234,45,246]}"##; diff --git a/trustchain-http/src/errors.rs b/trustchain-http/src/errors.rs index 28cee10d..1e05bfaa 100644 --- a/trustchain-http/src/errors.rs +++ b/trustchain-http/src/errors.rs @@ -1,3 +1,4 @@ +//! Error type and conversions. use axum::{response::IntoResponse, Json}; use hyper::StatusCode; use serde_json::json; @@ -8,6 +9,7 @@ use trustchain_core::{ }; use trustchain_ion::root::TrustchainRootError; +/// Trustchain HTTP error type. // TODO: refine and add doc comments for error variants #[derive(Error, Debug)] pub enum TrustchainHTTPError { diff --git a/trustchain-http/src/ion.rs b/trustchain-http/src/ion.rs index 3646293f..58632f5d 100644 --- a/trustchain-http/src/ion.rs +++ b/trustchain-http/src/ion.rs @@ -1,3 +1,4 @@ +//! Handlers for communicating with an ION node. use crate::{errors::TrustchainHTTPError, state::AppState}; use axum::{ response::{IntoResponse, Response}, diff --git a/trustchain-http/src/issuer.rs b/trustchain-http/src/issuer.rs index 38ea44e0..a6c03b79 100644 --- a/trustchain-http/src/issuer.rs +++ b/trustchain-http/src/issuer.rs @@ -1,3 +1,4 @@ +//! Handlers and trait for issuing VCs and providing credential offers. use crate::config::http_config; use crate::errors::TrustchainHTTPError; use crate::qrcode::{str_to_qr_code_html, DIDQRCode}; diff --git a/trustchain-http/src/lib.rs b/trustchain-http/src/lib.rs index 1bd435d5..83edc97d 100644 --- a/trustchain-http/src/lib.rs +++ b/trustchain-http/src/lib.rs @@ -1,4 +1,4 @@ -//! HTTP server functionality. +//! Trustchain HTTP server functionality. pub mod config; #[cfg(test)] pub(crate) mod data; diff --git a/trustchain-http/src/qrcode.rs b/trustchain-http/src/qrcode.rs index 1b6908df..7b121d1d 100644 --- a/trustchain-http/src/qrcode.rs +++ b/trustchain-http/src/qrcode.rs @@ -1,3 +1,4 @@ +//! QR code functionality for encoding credential offers and presentation requests. use base64::engine::general_purpose; use base64::write::EncoderWriter; use image::Luma; diff --git a/trustchain-http/src/resolver.rs b/trustchain-http/src/resolver.rs index 6bfc79a4..92b6a84d 100644 --- a/trustchain-http/src/resolver.rs +++ b/trustchain-http/src/resolver.rs @@ -1,3 +1,4 @@ +//! Handlers and trait for resolving Trustchain DIDs, chains and bundles. use crate::errors::TrustchainHTTPError; use crate::state::AppState; use async_trait::async_trait; diff --git a/trustchain-http/src/root.rs b/trustchain-http/src/root.rs index fdcb7026..45eebef2 100644 --- a/trustchain-http/src/root.rs +++ b/trustchain-http/src/root.rs @@ -1,3 +1,4 @@ +//! Handler and trait for identifying root DID candidates from a naive date. use crate::state::AppState; use async_trait::async_trait; use axum::extract::{Path, Query, State}; diff --git a/trustchain-http/src/server.rs b/trustchain-http/src/server.rs index 1d5ae843..1bcbee8f 100644 --- a/trustchain-http/src/server.rs +++ b/trustchain-http/src/server.rs @@ -1,3 +1,4 @@ +//! Trustchain HTTP router type and functionality for spawning HTTP and HTTPS servers. use crate::config::http_config; use crate::middleware::validate_did; use crate::{ @@ -11,7 +12,9 @@ use std::path::PathBuf; use std::sync::Arc; use tower::ServiceBuilder; -/// A wrapped axum router. +/// A wrapped axum router combining Trustchain HTTP handlers for resolution (DIDs, chains, bundles), +/// verification (VCs and VPs), issuance (VCs), root candidate retrieval and communication with an +/// ION node. pub struct TrustchainRouter { router: Router, } diff --git a/trustchain-http/src/state.rs b/trustchain-http/src/state.rs index c2328dc7..11d9ef4d 100644 --- a/trustchain-http/src/state.rs +++ b/trustchain-http/src/state.rs @@ -1,3 +1,4 @@ +//! Trustchain HTTP router shared state. use crate::root::RootCandidatesResult; use crate::store::CredentialStoreItem; use crate::{config::HTTPConfig, verifier::PresentationRequest}; @@ -13,7 +14,8 @@ use trustchain_ion::verifier::TrustchainVerifier; const DEFAULT_VERIFIER_ENDPOINT: &str = "http://localhost:3000/"; -/// A shared app state for handlers. +/// A shared app state for the router providing configuration, verifier, credential offer store, +/// presentation request store and root candidates cache for handlers. pub struct AppState> where T: DIDResolver + Send + Sync, diff --git a/trustchain-http/src/static_handlers.rs b/trustchain-http/src/static_handlers.rs index c8e9cd21..dba3debc 100644 --- a/trustchain-http/src/static_handlers.rs +++ b/trustchain-http/src/static_handlers.rs @@ -1,3 +1,4 @@ +//! Static handlers for front-end. use axum::response::Html; pub async fn index() -> Html { diff --git a/trustchain-http/src/store.rs b/trustchain-http/src/store.rs index 74f95387..abbe4f77 100644 --- a/trustchain-http/src/store.rs +++ b/trustchain-http/src/store.rs @@ -1,6 +1,8 @@ +//! Types for store items. use serde::{Deserialize, Serialize}; use ssi::vc::Credential; +/// Credential store item. #[derive(Debug, Clone, Serialize, Deserialize)] pub struct CredentialStoreItem { #[serde(rename = "did")] diff --git a/trustchain-http/src/verifier.rs b/trustchain-http/src/verifier.rs index f369963c..3d09a5ab 100644 --- a/trustchain-http/src/verifier.rs +++ b/trustchain-http/src/verifier.rs @@ -1,3 +1,4 @@ +//! Handlers and trait for verifying VCs and VPs and providing presentation requests. use crate::config::http_config; use crate::errors::TrustchainHTTPError; use crate::qrcode::{str_to_qr_code_html, DIDQRCode}; From 219eddc55e9ce40c3c0f1ad31ce4871fde7c38a6 Mon Sep 17 00:00:00 2001 From: Sam Greenbury Date: Mon, 13 May 2024 17:11:47 +0100 Subject: [PATCH 4/5] Restore deps to crates.io versions, remove RSS from API and tests for publish branch --- trustchain-api/Cargo.toml | 10 +- trustchain-api/src/api.rs | 155 ++----------------------- trustchain-cli/Cargo.toml | 8 +- trustchain-core/Cargo.toml | 10 +- trustchain-ffi/Cargo.toml | 8 +- trustchain-ffi/src/mobile.rs | 88 +++++--------- trustchain-ffi/src/mobile_bridge.io.rs | 10 -- trustchain-ffi/src/mobile_bridge.rs | 26 ----- trustchain-http/Cargo.toml | 8 +- trustchain-http/src/ion.rs | 2 +- trustchain-http/src/issuer.rs | 103 +--------------- trustchain-http/src/server.rs | 23 +--- trustchain-ion/Cargo.toml | 8 +- trustchain-ion/src/data.rs | 2 +- trustchain-ion/src/resolver.rs | 4 +- trustchain-ion/src/utils.rs | 2 +- 16 files changed, 58 insertions(+), 409 deletions(-) diff --git a/trustchain-api/Cargo.toml b/trustchain-api/Cargo.toml index 4673a4ae..73be0501 100644 --- a/trustchain-api/Cargo.toml +++ b/trustchain-api/Cargo.toml @@ -8,16 +8,10 @@ edition = "2021" [dependencies] trustchain-core = { path = "../trustchain-core" } trustchain-ion = { path = "../trustchain-ion" } -ps_sig = { git = "https://github.com/alan-turing-institute/RSS.git", rev = "ec9386e125d87c5f54898b34fbe0883b3b36ffd4" } - async-trait = "0.1" serde_json = "1.0" -ssi = { git = "https://github.com/alan-turing-institute/ssi.git", rev = "1aa3223a384ee71df1333bbce04af445e852eab5", features = [ - "http-did", - "secp256k1", - "rss", -] } -did-ion = { git = "https://github.com/alan-turing-institute/ssi.git", rev = "1aa3223a384ee71df1333bbce04af445e852eab5" } +ssi = { version = "0.7", features = ["http-did", "secp256k1"]} +did-ion = { version = "0.2"} futures = "0.3.28" [dev-dependencies] diff --git a/trustchain-api/src/api.rs b/trustchain-api/src/api.rs index caabaed0..8be65c01 100644 --- a/trustchain-api/src/api.rs +++ b/trustchain-api/src/api.rs @@ -249,11 +249,11 @@ pub trait TrustchainVPAPI { mod tests { use crate::api::{TrustchainVCAPI, TrustchainVPAPI}; use crate::TrustchainAPI; - use did_ion::sidetree::PublicKeyEntry; + use ssi::jsonld::ContextLoader; use ssi::ldp::now_ns; use ssi::one_or_many::OneOrMany; - use ssi::vc::{Credential, CredentialOrJWT, CredentialSubject, Presentation, VCDateTime}; + use ssi::vc::{Credential, CredentialOrJWT, Presentation, VCDateTime}; use trustchain_core::utils::init; use trustchain_core::vc::CredentialError; use trustchain_core::vp::PresentationError; @@ -285,33 +285,6 @@ mod tests { } "#; - const UNSIGNED_DRIVERS_LICENCE_VC: &str = r###"{ - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/vdl/v1" - ], - "type": [ - "VerifiableCredential", - "Iso18013DriversLicense" - ], - "issuer": "did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q", - "issuanceDate": "2023-11-23T11:43:26.806224Z", - "credentialSubject": { - "id": "did:example:12347abcd", - "Iso18013DriversLicense": { - "height": 1.8, - "weight": 70, - "nationality": "France", - "given_name": "Test", - "family_name": "A", - "issuing_country": "US", - "birth_date": "1958-07-17", - "age_in_years": 30, - "age_birth_year": 1958 - } - } - }"###; - #[ignore = "requires a running Sidetree node listening on http://localhost:3000"] #[tokio::test] async fn test_verify_credential() { @@ -351,110 +324,6 @@ mod tests { } } - #[ignore = "requires a running Sidetree node listening on http://localhost:3000"] - #[tokio::test] - async fn test_verify_rss_credential() { - init(); - - // DID with RSS verification method - let issuer_did_suffix = "EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q"; - let resolver = trustchain_resolver("http://localhost:3000/"); - let vc: Credential = serde_json::from_str(UNSIGNED_DRIVERS_LICENCE_VC).unwrap(); - let attestor = IONAttestor::new(issuer_did_suffix); - - let signed_vc = attestor - .sign( - &vc, - None, - Some("QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"), - &resolver, - &mut ContextLoader::default(), - ) - .await - .unwrap(); - println!("{}", serde_json::to_string_pretty(&signed_vc).unwrap()); - let mut context_loader = ContextLoader::default(); - let verifier = TrustchainVerifier::new(resolver); - let res = TrustchainAPI::verify_credential( - &signed_vc, - None, - ROOT_EVENT_TIME_1, - &verifier, - &mut context_loader, - ) - .await; - // println!("{:?}", &res); - assert!(res.is_ok()); - } - - #[ignore = "requires a running Sidetree node listening on http://localhost:3000"] - #[tokio::test] - async fn test_redact_verify_rss_credential() { - init(); - - // DID with RSS verification method - let issuer_did_suffix = "did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q"; - let resolver = trustchain_resolver("http://localhost:3000/"); - let vc: Credential = serde_json::from_str(UNSIGNED_DRIVERS_LICENCE_VC).unwrap(); - let attestor = IONAttestor::new(issuer_did_suffix); - - let mut signed_vc = attestor - .sign( - &vc, - None, - Some("QDsGIX_7NfNEaXdEeV7PJ5e_CwoH5LlF3srsCp5dcHA"), - &resolver, - &mut ContextLoader::default(), - ) - .await - .unwrap(); - // println!("{}", serde_json::to_string_pretty(&signed_vc).unwrap()); - // derive redacted RSignature - let masked_cred_sub: CredentialSubject = serde_json::from_str( - r###"{ - "id": "did:example:12347abcd", - "Iso18013DriversLicense": { - "height": null, - "weight": null, - "nationality": null, - "given_name": null, - "family_name": null, - "issuing_country": "US", - "birth_date": null, - "age_in_years": 30, - "age_birth_year": null - } - }"###, - ) - .unwrap(); - let mut masked_copy = signed_vc.clone(); - masked_copy.credential_subject = OneOrMany::One(masked_cred_sub); - - // produce redacted vc from redacted json - let mut context_loader = ContextLoader::default(); - let verifier = TrustchainVerifier::new(resolver); - signed_vc - .rss_redact( - masked_copy, - &trustchain_resolver("http://localhost:3000/"), - &mut context_loader, - ) - .await - .unwrap(); - // println!("{}", serde_json::to_string_pretty(&signed_vc).unwrap()); - - let res = TrustchainAPI::verify_credential( - &signed_vc, - None, - ROOT_EVENT_TIME_1, - &verifier, - &mut context_loader, - ) - .await; - - assert!(res.is_ok()); - } - #[ignore = "requires a running Sidetree node listening on http://localhost:3000"] #[tokio::test] async fn test_verify_presentation() { @@ -572,15 +441,15 @@ mod tests { .unwrap() } - #[test] - fn get_key_entry() { - use ps_sig::keys::Params; - use ssi::jwk::rss::generate_keys_jwk; - use ssi::jwk::JWK; + // #[test] + // fn get_key_entry() { + // use ps_sig::keys::Params; + // use ssi::jwk::rss::generate_keys_jwk; + // use ssi::jwk::JWK; - let key: JWK = generate_keys_jwk(64, &Params::new("test".to_string().as_bytes())).unwrap(); - println!("{}", serde_json::to_string_pretty(&key).unwrap()); - let entry: PublicKeyEntry = key.try_into().unwrap(); - println!("{}", serde_json::to_string_pretty(&entry).unwrap()); - } + // let key: JWK = generate_keys_jwk(64, &Params::new("test".to_string().as_bytes())).unwrap(); + // println!("{}", serde_json::to_string_pretty(&key).unwrap()); + // let entry: PublicKeyEntry = key.try_into().unwrap(); + // println!("{}", serde_json::to_string_pretty(&entry).unwrap()); + // } } diff --git a/trustchain-cli/Cargo.toml b/trustchain-cli/Cargo.toml index a8dbd622..12c469a4 100644 --- a/trustchain-cli/Cargo.toml +++ b/trustchain-cli/Cargo.toml @@ -14,14 +14,10 @@ trustchain-ion = { path = "../trustchain-ion" } trustchain-api = { path = "../trustchain-api" } clap = { version = "4.0.32", features = ["derive", "cargo"] } -did-ion = { git = "https://github.com/alan-turing-institute/ssi.git", rev = "1aa3223a384ee71df1333bbce04af445e852eab5" } +did-ion = { version = "0.2"} lazy_static = "1.4.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -ssi = { git = "https://github.com/alan-turing-institute/ssi.git", rev = "1aa3223a384ee71df1333bbce04af445e852eab5", features = [ - "http-did", - "secp256k1", - "rss", -] } +ssi = { version = "0.7", features = ["http-did", "secp256k1"]} tokio = { version = "1.20.1", features = ["full"] } toml = "0.7.2" diff --git a/trustchain-core/Cargo.toml b/trustchain-core/Cargo.toml index 806c6df4..70eaa175 100644 --- a/trustchain-core/Cargo.toml +++ b/trustchain-core/Cargo.toml @@ -5,24 +5,18 @@ authors = ["Trustchain Devs"] edition = "2021" [dependencies] -ps_sig = { git = "https://github.com/alan-turing-institute/RSS.git", rev = "ec9386e125d87c5f54898b34fbe0883b3b36ffd4" } - async-trait = "0.1" base64 = "0.13" canonical_json = "0.4.0" chrono = "0.4" -did-method-key = { git = "https://github.com/alan-turing-institute/ssi.git", rev = "1aa3223a384ee71df1333bbce04af445e852eab5" } +did-method-key = { version = "0.2.2"} futures = "0.3.21" petgraph = { version = "0.6" } serde = { version = "1.0", features = ["derive"] } serde_jcs = "0.1.0" serde_json = "1.0" sha2 = "0.10.7" -ssi = { git = "https://github.com/alan-turing-institute/ssi.git", rev = "1aa3223a384ee71df1333bbce04af445e852eab5", features = [ - "http-did", - "secp256k1", - "rss", -] } +ssi = { version = "0.7", features = ["http-did", "secp256k1"]} tempfile = { version = "3.3" } thiserror = "1.0" tokio = { version = "1.20.1", features = ["full"] } diff --git a/trustchain-ffi/Cargo.toml b/trustchain-ffi/Cargo.toml index 42a0e667..38d75777 100644 --- a/trustchain-ffi/Cargo.toml +++ b/trustchain-ffi/Cargo.toml @@ -16,17 +16,13 @@ trustchain-api = { path = "../trustchain-api" } anyhow = "1.0" chrono = "0.4.26" -did-ion = { git = "https://github.com/alan-turing-institute/ssi.git", rev = "1aa3223a384ee71df1333bbce04af445e852eab5" } +did-ion = { version = "0.2"} # Fixed to same version used to generate bridge: `flutter_rust_bridge_codegen@1.64.0` flutter_rust_bridge = "=1.64.0" lazy_static = "1.4.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -ssi = { git = "https://github.com/alan-turing-institute/ssi.git", rev = "1aa3223a384ee71df1333bbce04af445e852eab5", features = [ - "http-did", - "secp256k1", - "rss", -] } +ssi = { version = "0.7", features = ["http-did", "secp256k1"]} thiserror = "1.0" tokio = { version = "1.14.0", features = ["rt-multi-thread"] } toml = "0.7.2" diff --git a/trustchain-ffi/src/mobile.rs b/trustchain-ffi/src/mobile.rs index fca1180e..9b8b0a67 100644 --- a/trustchain-ffi/src/mobile.rs +++ b/trustchain-ffi/src/mobile.rs @@ -9,7 +9,7 @@ use ssi::{ jwk::JWK, ldp::{now_ns, Proof}, one_or_many::OneOrMany, - vc::{Credential, CredentialSubject, LinkedDataProofOptions, Presentation}, + vc::{Credential, LinkedDataProofOptions, Presentation}, }; use thiserror::Error; use tokio::runtime::Runtime; @@ -155,31 +155,31 @@ pub fn vc_verify_credential(credential: String, opts: String) -> Result }) } -/// Generate a selectivley disclosed Credential with a new RSS proof derived from the original -/// credential and a masked copy of the credential subject. -pub fn vc_redact( - original_credential: String, - credential_subject_mask: String, - opts: String, -) -> Result { - let mobile_opts: FFIConfig = opts.parse()?; - let endpoint_opts = mobile_opts.endpoint()?; - let mut o_cred: Credential = serde_json::from_str(&original_credential)?; - let cred_sub: CredentialSubject = serde_json::from_str(&credential_subject_mask)?; - let mut masked_copy = o_cred.clone(); - masked_copy.credential_subject = OneOrMany::One(cred_sub); - let resolver = - trustchain_resolver_light_client(&endpoint_opts.trustchain_endpoint().to_address()); - - let rt = Runtime::new().unwrap(); - rt.block_on(async { - o_cred - .rss_redact(masked_copy, &resolver, &mut ContextLoader::default()) - .await - }) - .map_err(FFIMobileError::FailedToRedactCredential)?; - Ok(serde_json::to_string_pretty(&o_cred).map_err(FFIMobileError::FailedToSerialize)?) -} +// /// Generate a selectivley disclosed Credential with a new RSS proof derived from the original +// /// credential and a masked copy of the credential subject. +// pub fn vc_redact( +// original_credential: String, +// credential_subject_mask: String, +// opts: String, +// ) -> Result { +// let mobile_opts: FFIConfig = opts.parse()?; +// let endpoint_opts = mobile_opts.endpoint()?; +// let mut o_cred: Credential = serde_json::from_str(&original_credential)?; +// let cred_sub: CredentialSubject = serde_json::from_str(&credential_subject_mask)?; +// let mut masked_copy = o_cred.clone(); +// masked_copy.credential_subject = OneOrMany::One(cred_sub); +// let resolver = +// trustchain_resolver_light_client(&endpoint_opts.trustchain_endpoint().to_address()); + +// let rt = Runtime::new().unwrap(); +// rt.block_on(async { +// o_cred +// .rss_redact(masked_copy, &resolver, &mut ContextLoader::default()) +// .await +// }) +// .map_err(FFIMobileError::FailedToRedactCredential)?; +// Ok(serde_json::to_string_pretty(&o_cred).map_err(FFIMobileError::FailedToSerialize)?) +// } /// Issues a verifiable presentation. Analogous with [didkit](https://docs.rs/didkit/latest/didkit/c/fn.didkit_vc_issue_presentation.html). pub fn vp_issue_presentation( @@ -291,16 +291,6 @@ mod tests { trustchainEndpoint.port = 8081 "#; - const TEST_FFI_CONFIG_RSS: &str = r#" - [ffi.trustchainOptions] - rootEventTime = 1697213008 - signatureOnly = false - - [ffi.endpointOptions] - trustchainEndpoint.host = "127.0.0.1" - trustchainEndpoint.port = 8081 - "#; - const TEST_CREDENTIAL: &str = r#" { "@context": [ @@ -330,8 +320,6 @@ mod tests { } "#; - const TEST_CREDENTIAL_RSS: &str = r#"{"@context":["https://www.w3.org/2018/credentials/v1","https://w3id.org/vdl/v1"],"type":["VerifiableCredential","Iso18013DriversLicense"],"credentialSubject":{"id":"did:key:z6Mkt68mqTgiLQdeZhnyai61yvSkG5SbzUR768n9cPMxyq9i","Iso18013DriversLicense":{"nationality":"British","given_name":"Jane","family_name":"Bloggs","issuing_country":"UK","birth_date":"1958-07-17","age_in_years":65,"age_birth_year":1958,"birth_place":"London","document_number":123456789,"resident_city":"London","resident_address":"London, UK"}},"issuer":"did:ion:test:EiDSE2lEM65nYrEqVvQO5C3scYhkv1KmZzq0S0iZmNKf1Q","issuanceDate":"2023-11-23T14:37:04.349867Z","proof":{"type":"RSSSignature2023","proofPurpose":"assertionMethod","proofValue":"1 0FCABC8DA586913D57CA7C3D5A9083E2C63999F2B07ABE7A091468A8290137232D21178A3093B41A182EBD0CB0314D96 1 0192B26C65C48F88E21E29D5985DD7B41D8E052382E557DD0EAEF2E60C77251632217A1A1B4B3CB4C61399B7B22832F8 1 0BBC5C12C26C3BCD90AA0B95BF83C147E43A47F49E5BDAB5EF91618ED017829829D1BB3F7E8B48A9E67B6D2A007A9D2C 1 10F41FE24A63CB21342250325C5FAD5213599EFA0EBEA69C55E66DC56FB544850DE756354390107FD484B703BF52EA16 2 13317C30F3A0D636D56A23C34FDD80B891ECBDE7C2B7D6E16B0F4B0B7E6D26CB6147ACDE629C4A23C57400D203A9FB84 1 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:1 0055C44D1473432D778E23A1C141F645BDA5EAB305045E3B2630F82F2AEB6A29F8DC413889F55F30AD7AD7F53984FB22 1 0CCFEEBFE7B5BBB224E64003C1501E69A4141A29D5BDF0EAA011C1A71D533A33C435A61B22D674B9C36F27ED4EA81ED4 1 186888DD113D3570CEAE2305783B9857AAB7A51869CD1C1D0D4A57411DF14DADEF2528BCE2EBC257C7DDD9C6BDE79B62 1 0A8B390C4EE079DD728C093ED8E9D56BB4BB96B3EA7C047E9B19BA7A2F7F970AD6E2ACDC8C26AEF474BE18E4B9996061 2 13317C30F3A0D636D56A23C34FDD80B891ECBDE7C2B7D6E16B0F4B0B7E6D26CB6147ACDE629C4A23C57400D203A9FB84 1 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:1 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 2 13317C30F3A0D636D56A23C34FDD80B891ECBDE7C2B7D6E16B0F4B0B7E6D26CB6147ACDE629C4A23C57400D203A9FB84 1 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:1 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 2 13317C30F3A0D636D56A23C34FDD80B891ECBDE7C2B7D6E16B0F4B0B7E6D26CB6147ACDE629C4A23C57400D203A9FB84 1 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","verificationMethod":"did:ion:test:EiDSE2lEM65nYrEqVvQO5C3scYhkv1KmZzq0S0iZmNKf1Q#Un2E28ffH75_lvA59p7R0wUaGaACzbg8i2H9ksviS34","created":"2023-11-23T14:37:04.356221Z"}}"#; - const TEST_CREDENTIAL_SUBJECT_MASK: &str = r#"{"id":"did:key:z6Mkt68mqTgiLQdeZhnyai61yvSkG5SbzUR768n9cPMxyq9i","Iso18013DriversLicense":{"nationality":null,"given_name":null,"family_name":null,"issuing_country":"UK","birth_date":"1958-07-17","age_in_years":65,"age_birth_year":1958,"birth_place":"London","document_number":123456789,"resident_city":"London","resident_address":"London, UK"}}"#; const TEST_PRESENTATION: &str = r#" { "@context": [ @@ -439,30 +427,6 @@ mod tests { vc_verify_credential(serde_json::to_string(&credential).unwrap(), ffi_opts).unwrap(); } - #[test] - #[ignore = "integration test requires ION, MongoDB, IPFS and Bitcoin RPC"] - fn test_vc_verify_rss_credential() { - let ffi_opts = serde_json::to_string(&parse_toml(TEST_FFI_CONFIG_RSS)).unwrap(); - let credential: Credential = serde_json::from_str(TEST_CREDENTIAL_RSS).unwrap(); - vc_verify_credential(serde_json::to_string(&credential).unwrap(), ffi_opts).unwrap(); - } - - #[test] - #[ignore = "integration test requires ION, MongoDB, IPFS and Bitcoin RPC"] - fn test_vc_redact_rss_credential() { - let ffi_opts = serde_json::to_string(&parse_toml(TEST_FFI_CONFIG_RSS)).unwrap(); - let credential: Credential = serde_json::from_str(TEST_CREDENTIAL_RSS).unwrap(); - let credential_subject_mask: CredentialSubject = - serde_json::from_str(TEST_CREDENTIAL_SUBJECT_MASK).unwrap(); - let derived_vc = vc_redact( - serde_json::to_string(&credential).unwrap(), - serde_json::to_string(&credential_subject_mask).unwrap(), - ffi_opts.clone(), - ) - .unwrap(); - vc_verify_credential(derived_vc, ffi_opts).unwrap(); - } - #[test] #[ignore = "integration test requires ION, MongoDB, IPFS and Bitcoin RPC"] fn test_vp_issue_presentation() { diff --git a/trustchain-ffi/src/mobile_bridge.io.rs b/trustchain-ffi/src/mobile_bridge.io.rs index e930b173..fd1d85b2 100644 --- a/trustchain-ffi/src/mobile_bridge.io.rs +++ b/trustchain-ffi/src/mobile_bridge.io.rs @@ -33,16 +33,6 @@ pub extern "C" fn wire_vc_verify_credential( wire_vc_verify_credential_impl(port_, credential, opts) } -#[no_mangle] -pub extern "C" fn wire_vc_redact( - port_: i64, - original_credential: *mut wire_uint_8_list, - credential_subject_mask: *mut wire_uint_8_list, - opts: *mut wire_uint_8_list, -) { - wire_vc_redact_impl(port_, original_credential, credential_subject_mask, opts) -} - #[no_mangle] pub extern "C" fn wire_vp_issue_presentation( port_: i64, diff --git a/trustchain-ffi/src/mobile_bridge.rs b/trustchain-ffi/src/mobile_bridge.rs index 788afe98..039deff8 100644 --- a/trustchain-ffi/src/mobile_bridge.rs +++ b/trustchain-ffi/src/mobile_bridge.rs @@ -85,32 +85,6 @@ fn wire_vc_verify_credential_impl( }, ) } -fn wire_vc_redact_impl( - port_: MessagePort, - original_credential: impl Wire2Api + UnwindSafe, - credential_subject_mask: impl Wire2Api + UnwindSafe, - opts: impl Wire2Api + UnwindSafe, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap( - WrapInfo { - debug_name: "vc_redact", - port: Some(port_), - mode: FfiCallMode::Normal, - }, - move || { - let api_original_credential = original_credential.wire2api(); - let api_credential_subject_mask = credential_subject_mask.wire2api(); - let api_opts = opts.wire2api(); - move |task_callback| { - vc_redact( - api_original_credential, - api_credential_subject_mask, - api_opts, - ) - } - }, - ) -} fn wire_vp_issue_presentation_impl( port_: MessagePort, presentation: impl Wire2Api + UnwindSafe, diff --git a/trustchain-http/Cargo.toml b/trustchain-http/Cargo.toml index d013025c..bf01129a 100644 --- a/trustchain-http/Cargo.toml +++ b/trustchain-http/Cargo.toml @@ -20,7 +20,7 @@ axum-server = { version = "0.5.1", features = ["tls-rustls"] } base64 = "0.21.0" chrono = "^0.4" clap = { version = "^4", features = ["derive", "env", "cargo"] } -did-ion = { git = "https://github.com/alan-turing-institute/ssi.git", rev = "1aa3223a384ee71df1333bbce04af445e852eab5" } +did-ion = { version = "0.2"} execute = "0.2.11" gloo-console = "0.2.3" hyper = "0.14.26" @@ -33,11 +33,7 @@ serde = { version = "1.0", features = ["derive"] } serde_jcs = "0.1.0" serde_json = "1.0" shellexpand = "3.1.0" -ssi = { git = "https://github.com/alan-turing-institute/ssi.git", rev = "1aa3223a384ee71df1333bbce04af445e852eab5", features = [ - "http-did", - "secp256k1", - "rss", -] } +ssi = { version = "0.7", features = ["http-did", "secp256k1"]} thiserror = "1.0" tokio = { version = "1.20.1", features = ["full"] } tower = "0.4" diff --git a/trustchain-http/src/ion.rs b/trustchain-http/src/ion.rs index 58632f5d..cf8c0f2c 100644 --- a/trustchain-http/src/ion.rs +++ b/trustchain-http/src/ion.rs @@ -1,4 +1,4 @@ -//! Handlers for communicating with an ION node. +//! Handlers for HTTP communication with an ION node. use crate::{errors::TrustchainHTTPError, state::AppState}; use axum::{ response::{IntoResponse, Response}, diff --git a/trustchain-http/src/issuer.rs b/trustchain-http/src/issuer.rs index a6c03b79..20f8b21b 100644 --- a/trustchain-http/src/issuer.rs +++ b/trustchain-http/src/issuer.rs @@ -13,7 +13,7 @@ use chrono::Utc; use log::info; use serde::{Deserialize, Serialize}; use ssi::jsonld::ContextLoader; -use ssi::jwk::Algorithm; + use ssi::one_or_many::OneOrMany; use ssi::vc::Credential; use ssi::vc::VCDateTime; @@ -68,7 +68,6 @@ pub trait TrustchainIssuerHTTP { credential_store_item: &CredentialStoreItem, subject_id: Option<&str>, resolver: &dyn TrustchainResolver, - rss: bool, ) -> Result; } @@ -89,7 +88,6 @@ impl TrustchainIssuerHTTP for TrustchainIssuerHTTPHandler { credential_store_item: &CredentialStoreItem, subject_id: Option<&str>, resolver: &dyn TrustchainResolver, - rss: bool, ) -> Result { let mut credential = credential_store_item.credential.to_owned(); credential.issuer = Some(ssi::vc::Issuer::URI(ssi::vc::URI::String( @@ -104,25 +102,12 @@ impl TrustchainIssuerHTTP for TrustchainIssuerHTTPHandler { } let issuer = IONAttestor::new(&credential_store_item.issuer_did); - let key_id = if rss { - // TODO: move key management filtering logic into AttestorKeyManager. - let signing_keys = issuer.signing_keys()?; - signing_keys - .into_iter() - .filter(|key| matches!(key.get_algorithm(), Some(Algorithm::RSS2023))) - .map(|jwk| jwk.thumbprint()) - .take(1) - .collect::>() - .ok() - } else { - None - }; Ok(issuer .sign( &credential, None, - key_id.as_deref(), + None, resolver, // TODO: add context loader to app_state &mut ContextLoader::default(), @@ -162,35 +147,6 @@ impl TrustchainIssuerHTTPHandler { Ok(Html(str_to_qr_code_html(&qr_code_str, "Issuer"))) } - pub async fn get_issuer_qrcode_rss( - State(app_state): State>, - Path(id): Path, - ) -> Result, TrustchainHTTPError> { - let did = app_state - .credentials - .get(&id) - .ok_or(TrustchainHTTPError::CredentialDoesNotExist)? - .issuer_did - .to_owned(); - let qr_code_str = if http_config().verifiable_endpoints.unwrap_or(true) { - serde_json::to_string(&DIDQRCode { - did, - route: "/vc_rss/issuer/".to_string(), - id, - }) - .unwrap() - } else { - format!( - "{}://{}:{}/vc_rss/issuer/{id}", - http_config().http_scheme(), - app_state.config.host_display, - app_state.config.port - ) - }; - // Respond with the QR code as a png embedded in html - Ok(Html(str_to_qr_code_html(&qr_code_str, "Issuer"))) - } - /// API endpoint taking the UUID of a VC. Response is the VC JSON. pub async fn get_issuer( Path(credential_id): Path, @@ -214,7 +170,6 @@ impl TrustchainIssuerHTTPHandler { pub async fn post_issuer( (Path(credential_id), Json(vc_info)): (Path, Json), app_state: Arc, - rss: bool, ) -> impl IntoResponse { info!("Received VC info: {:?}", vc_info); match app_state.credentials.get(&credential_id) { @@ -223,7 +178,6 @@ impl TrustchainIssuerHTTPHandler { credential_store_item, Some(&vc_info.subject_id), app_state.verifier.resolver(), - rss, ) .await?; Ok((StatusCode::OK, Json(credential_signed))) @@ -386,57 +340,4 @@ mod tests { _ => panic!("No issuer present."), } } - - #[tokio::test] - #[ignore = "integration test requires ION, MongoDB, IPFS and Bitcoin RPC"] - async fn test_post_issuer_rss_credential() { - let app = TrustchainRouter::from(Arc::new(AppState::new_with_cache( - TEST_HTTP_CONFIG.to_owned(), - serde_json::from_str(CREDENTIALS).unwrap(), - HashMap::new(), - ))) - .into_router(); - let id = "46cb84e2-fa10-11ed-a0d4-bbb4e61d1556".to_string(); - let expected_subject_id = "did:example:284b3f34fad911ed9aea439566dd422a".to_string(); - let path = format!("/vc_rss/issuer/{id}"); - let client = TestClient::new(app); - let response = client - .post(&path) - .json(&VcInfo { - subject_id: expected_subject_id.to_string(), - }) - .send() - .await; - // Test response - assert_eq!(response.status(), StatusCode::OK); - let credential = response.json::().await; - - // Test credential subject ID - match credential.credential_subject { - OneOrMany::One(CredentialSubject { - id: Some(URI::String(ref actual_subject_id)), - property_set: _, - }) => assert_eq!(actual_subject_id.to_string(), expected_subject_id), - _ => panic!(), - } - - // Test signature - let verifier = TrustchainVerifier::new(trustchain_resolver("http://localhost:3000/")); - let verify_credential_result = credential - .verify( - None, - verifier.resolver().as_did_resolver(), - &mut ContextLoader::default(), - ) - .await; - assert!(verify_credential_result.errors.is_empty()); - - // Test valid Trustchain issuer DID - match credential.issuer { - Some(Issuer::URI(URI::String(issuer))) => { - assert!(verifier.verify(&issuer, 1666265405).await.is_ok()) - } - _ => panic!("No issuer present."), - } - } } diff --git a/trustchain-http/src/server.rs b/trustchain-http/src/server.rs index 1bcbee8f..01d9bda6 100644 --- a/trustchain-http/src/server.rs +++ b/trustchain-http/src/server.rs @@ -42,10 +42,6 @@ impl TrustchainRouter { "/issuer/:id", get(issuer::TrustchainIssuerHTTPHandler::get_issuer_qrcode), ) - .route( - "/issuer_rss/:id", - get(issuer::TrustchainIssuerHTTPHandler::get_issuer_qrcode_rss), - ) .route( "/verifier", get(verifier::TrustchainVerifierHTTPHandler::get_verifier_qrcode), @@ -55,24 +51,7 @@ impl TrustchainRouter { get(issuer::TrustchainIssuerHTTPHandler::get_issuer).post({ let state = shared_state.clone(); move |(id, vc_info)| { - issuer::TrustchainIssuerHTTPHandler::post_issuer( - (id, vc_info), - state, - false, - ) - } - }), - ) - .route( - "/vc_rss/issuer/:id", - get(issuer::TrustchainIssuerHTTPHandler::get_issuer).post({ - let state = shared_state.clone(); - move |(id, vc_info)| { - issuer::TrustchainIssuerHTTPHandler::post_issuer( - (id, vc_info), - state, - true, - ) + issuer::TrustchainIssuerHTTPHandler::post_issuer((id, vc_info), state) } }), ) diff --git a/trustchain-ion/Cargo.toml b/trustchain-ion/Cargo.toml index 7b1597b5..cf14284b 100644 --- a/trustchain-ion/Cargo.toml +++ b/trustchain-ion/Cargo.toml @@ -16,7 +16,7 @@ bitcoincore-rpc = "0.16.0" canonical_json = "0.4.0" chrono = "0.4" clap = { version = "^4.1", features = ["derive", "cargo"] } -did-ion = { git = "https://github.com/alan-turing-institute/ssi.git", rev = "1aa3223a384ee71df1333bbce04af445e852eab5" } +did-ion = { version = "0.2"} ed25519-dalek-bip32 = "0.3.0" flate2 = "1.0.24" futures = "0.3.21" @@ -32,11 +32,7 @@ serde = { version = "1.0", features = ["derive"] } serde_jcs = "0.1.0" serde_json = "1.0" sha2 = "0.10.7" -ssi = { git = "https://github.com/alan-turing-institute/ssi.git", rev = "1aa3223a384ee71df1333bbce04af445e852eab5", features = [ - "http-did", - "secp256k1", - "rss", -] } +ssi = { version = "0.7", features = ["http-did", "secp256k1"]} thiserror = "1.0" toml = "0.7.2" tokio = { version = "1.20.1", features = ["full"] } diff --git a/trustchain-ion/src/data.rs b/trustchain-ion/src/data.rs index ce3f29c9..ef76d63d 100644 --- a/trustchain-ion/src/data.rs +++ b/trustchain-ion/src/data.rs @@ -165,6 +165,6 @@ pub(crate) const TEST_DOCUMENT_IPFS_KEY: &str = r##" } "##; -pub(crate) const TEST_RSS_VM_JSON: &str = r#" +pub(crate) const TEST_IPFS_KEY_VM_JSON: &str = r#" {"id":"YGmbDaADvTGg3wopszo23Uqcgr3rNQY6njibaO9_QF4","type":"JsonWebSignature2020","publicKeyJwk":{"kty":"OKP","crv":"RSSKey2023","x":"EyGvw3AkcUf2TZToBh6pddeaaocmvTuLCSLun_yYJpL7x0W3gVEzeKlj06J5Sej9Duk0W_yGhbOKCahOx16LszwTHVgnH9FjRk0nwOer4yKaKnjTZ2FlZsYI0OI__jhCGP9cbcOEd-1rfvUFu-ghsj6oHfSXDBm0Ekplkgs1IktoicuMsF-bD7I6tZRpP9tqFGqARUqvR2daQN-scwYUNsv5ap3XakBCDvOCBc_rPAwzapY_nuC3L6x60UGBAPtUBANdaMhAU0gxd-3JMjcSjFgwzAhw5Eorr7bIp1_od6OfBRYu3sIkij5Es6RDBLghUAx2Z3dznniJRh5Xlx_8zn4SYw_xhV1X04vY5U4O7-7veKMqKxzzoGOR7O137gSTtAjdkWm_q35_KBo-SuO9RrHI8J91pJ4cJktXxMm2yhO1UnmzrQ6hu9YiKeI1kOsq2QJfLlCebKkvOI_KHmx3hUIu1wfEPCp8R7TWeP0LV3hjo0fpTg4fK9hizfCy5agdog6piegS_MB9Myka0DAInA-_YyRXUF1YhXW-Olza-Bk7-33xpfWiQK-78IN8VgcQ8AZ0eVn0L9s2hOpUXCmMmlZT4OQ9uryBJ17HMpR-EbxaqYlmMj7H2toZWjeNOprsexP9S2ZP0fqJbno2oLdhLLW3KyP4UzJltdR0IpsMDpT7nf05HxpJxNKCwMCASuVYMhAK0mZiL-3IjYO2Xa8N0oQxMwq3UuAgcQqSoqrk-CukR3JzS4lQk6LUUrH9Sej47RndsdAqjitadwznsTvxCHSNrWEjjh7aKxHW03jtGwfIZCwROF7mglHdhuzHYTE9Pw7S_fOcXfTglQbs6iz5OEVqyvUMcz8LPfK1SC-H3160XkL_8_4hxMo4ftKRkRRMmBZ-xDTbhCMtpJ5hEy85hD3LP2hPwuCPS2mOOGuaLXDm8CkNe_g52568yQM978Bv6BULHgYtl__wxn83Yvks1wNyTozFZJAV3mWXxS6vg8aiqcWBS5-bvEBsNu0PIzrHVQfAPz19e2kDSM2D59naZzg5Cyl7AuUYpYX_Ad9pt_Ro-wuXsiw7TTolCoyhgj7n6QEnESZ2zflXCDCYK09HDUnD9nFkBli8-DNqBRuzY2FGH3MknjdUCaREEziBuVhHQxfb-beH_VOxRSEHguz6JkMM8nB7myCz2dEQzr2KhdDvfsjtbso_mniq9_Ag4RxBZwkGxUWReivSLqI6AuufQXoK2FBRMoIuiadv1qYlzVM6lqWN0RXAFRtV9B3Z5bCLDwLW2ZcDobmXkk62STpkPaVUNVq8BwrRxGyuvmCPrX5e2Se5AxYIegOwd-Nbo3Xa8gy3jod3B9NCTiiqrgwl4RtYxcmh7RAydl7YV200RK1QRnRCdZwGYOHoTQrtEZTO0gswCgVCEyvg1RdhQlILYgRs_A3woHeUOaXeEdfUK_DvXM9TW8vegoZCZXDjYjmwcRBwrfZs1nDuUajev02fJPioJhoSaZH387XO93J3O4KmfvLOE4mgryrIAAyVJU0eohdBMbmLblvTAH1_Hdv_usK6XkOpEttkxII_nHGL0SHNHeJrMpltGaAFIfZaHX15OgbWsF53fe7Ds20NvuKSQCbUv62bYE6aiHWtsZX1L4n1b0UIN2QOr6VE3MdYSCD_twoIceEiWDH9-JxzDwJkHR4QwYbnzlVNggEKmjoS8gjrlr4se2gQvpn736EnDC7S5hnEoy09VqQ2H_xkEAVmNbExw4E0Fk56hByZQSSMDpDo0vcqSCYGSESlK0KkQUg31Qkf3TbUSjXF-rn73o9IgfMhzAKA3GAWHoi-ruQlgNMxN0UhSgelL3Qj5E1sv_EuIwgTap0SRBni2n9tCcCXVy3cnGeGgOQjdIhlta-o5g0smoY4t06sw566Mv3LjMxy1gD4QivJxPuyeifnIZqBkDm2SyAGeg3I_sVB2PaIAPyIx5154cE92ESLfKIBuiJ_9whJYCjSwfWq4sU89GiiAbbUdaWmQKrVy3GIGZ8sWMeAdg5CNWOqZb6TazY7KggXgwpbm0oyXSljjyLqcgxDk2CiNvWhQhrYC9NdWo1ZipuUsx7uEuQxaVpFLG-2gG1I7xZAL5n9mTIoLopK9BA_VM7et4QSmSrUbeA_adabCOY_4V9dxo1hH7aRQr43O0q2OBJhz9cBqaDNwmDzkjHbx73ja2QR90A1QGo1f98RMJ58nxb0lZfr4Kox3QVSKnrIvxhiNy8VwNBI8_P4AE_N6BX6uB_dAgNjBL5nzgu5m-PivAHAn8jSAK2Esbkf5UafTwPOUuO2dZtFYfq_lMDPomqqoF4idKpaD3qH1s_lRM1p0sHRdjjt1oG15CAUcaJTFBHwSOIsa8tzVYn-MrBOseZl6HtDVYp0CLhwsEUSiokH4mtfpbCaCm-ZAz4yGBRyUBHhAFeZFS2iNrkOo-wtmlWoryUPI5tFuOKZkm2oCsGdOARRYp0WVBKajVunZdgnmQJzww8kVbAvK0mpMcmeYyRBfevFkjGLWbye8XeN-jwnZ5ljuk8Ix9Jonr4PIrQJnwVQtU2DLjm5A8w1NdynibZHmNMd6gRd2dIzAWrlBmVotw3GXqsKM40azVPkZ4qxIQnKXQEVNJ0zgMRZrcBgfGp4ZFH2zXf1AqUV0noDSfPdkb3NK2rWy6h2VxbhgOGKkRJDR221ixdrSWuHYtrjt2vFSF5Z52sFusDer0YkVeq8mB9DW9rmrRNK4E1LSskpLQT1w8b78vXdo3V69oSxHgo1hGIphFIf9E7Ab5e99mY9KX6ixqLS8P8OO1zpm9ofzxSouDzHMraMIc6Gx7EtExRzWFyzmT6JdKMzTJVAobQHMvIuFGv-s3JjORXvaXbixAl-EVopmiCTu5-HBsDJhXSi1rnM4DuwihrXOu6cD9mAi97oDSWCvFQYSOp9gKnNxAJO8sEy8ibgJ5BNj6KTt-H6aa5x2TFTXdjPEuwKMVJ9YPLQPofx07rcRXLMr7_BHATwPmuIkBCAfoOeNmW-VsFve1Ev8PW9P-C5wEZ0lMnKjws9fLUbDkXF3kfPGbY3Sw6icPfAuZVeMffzon2tRBzbf62vTd6qfwnE8Oh0__xRXqmXkjNcqwQlw6PwA6Azlg1OwSww6EGXRTkmfGdP5WE8ghfZvWe3rkY0Z2QGH_Rk647pOhK0YJ9TAcqcPzkL2g64e-9VQdnRUfpo-E8RLDpjrdp4mtOPeE39Yzjv27uJcHghI6dzffGAB-SeYcHmtwJpx9rykn2-14JHYPBeFf4okRdHZeOmgV1qvk_wrkRvnYeB8oS9y_P7K5Nl2izkxBncB-UOO16zvqeplUxDe2AD-iXEaMUVrPKDPmBXUW8cJdFEd7pFu00UddZoER0XyAIP3XCw3wZuhtlXvwJBz5DIMXhmL2u-zI-uL13VTW043jlqPrQptQCzZdZgK9DOeAutUfsq_lA_wtFXcfjr4H7GwbnTL92WcB4ulzWboEFeh1hVDgp1cAcdqPztpCMCXBOM_gb4zNtMi21I4vLd_RpTcwCBQRD2YBHEPlCNiUhIx59xmO6U1rJ5J_ym1vQEbgwAOnAnLWJfmTqJAzACrR3OYiG0Lx7_wcqVONiU6ReWPjHkZW-iDLZXoomBbTxhfg0zD6TnKRhv33PTmc8ZWZF57tCG4jNR-Y7MNyTErtFGScKgW1oAZvQbF7UzDMm3GAV7EYOkF_AB0jNVNZ_UtoFDpSHkNc_rVIKz12hp_xZl0_TC1ujk7v9GU7SFWxRLTBbMVyCN_nvLPbFMlbSDb_xpBIm5w0U-k511pNPno3SvPLe0vViAXSTDmvdok5FbQQ7jIEl8tOTVEI1cTnj0WAAo-GfuUWrRiL8UzrNXX13I7Iy5CryhUTq75csDs_m_oQua7vQdTdihdSqxoXuPykB7d-oh-LKvezLmeI-2BKpkgA47IoD01_HUa6RojeULFAT-vt1eD_-BT6_K4H56iNRYrxq3huHpzG5hxseoG_-CNKdaTF9nTZ0rtu8J8z4jWQqpseCnfFNgojgjU7qxzobD4046t0IjrU3l2Oe1xoTk0oTt_K_6ppY1wpXOeSUrHAWi5tD3QMjuK7CVvZ-6qsaZjIorqsZlWP14difoQujNtJ-0dWxs0lB88F13o3T3kReZ5wheIuLH_s24sgr2KKn8zAUAf6FYasQJXo0ZIqrvLqfMs8Q2nq-zoz6HFsiJxgNsEYIiUtz0X4RSRCQxpen6LSpamF1a8uKGrgXeVZKops0YyCDor_3IIR8eTRbnlAFE-CdarlA4KW-7xdlDp4zOfyGs5NZFMCX1CVUt38STXcvqAkOzjoTN1TQmO2AFzAKonHLo8DF_ZgdDE83i-1pQjfJ3rCgF6FLz74t5IRozJMIL_olUwoOwzFd24R7xxRMfAPT9kMFwB0EmqR_CmIuHNIuH0V7BgkVCV5AaaTOXm5XRK_Gs-14_AkO-kK9jugzqtWsZc7A6XoG3X6Wca3BKNYY_PZZfsJKL2Ttb-qzGRC5P4dBlexvyf9VlxiZqfgWe2i-gfd0Zdb0trUcklxrAZ84HVaXgxifHJ6A2XYb_4SiBtbR5AowOpfBd4dBsWgeY1VbJNk_1rdONv2et7NSTGsPnnL7b1s0Rwwcn4BG3k-YmPPOpiRluKSVGVOeYuRYi57JEBYgkT4Ndq1EzCJsy43AEmpfQW3rPw_7NxFDYOP-_gsISPCma1rvN6M4kkhaBY-TO748qd0gQnYPPnOVhab07thWR6ENQaF0ZTfd9chNlweVqYyj1hM5rKxaXIhahCpz0XHJsmtOiKrqkHSuyxfm8zjD3ZX7ov1wsoo9cRE88vedbNHEsb9JJfOay7gT0Su2sIwWeTep_3LjmMDKNzWtfV3dCH0QuBqSU_hHilryRg3XNsT8SeSP6YBPjehHf8MDNR-_cCaayEWW5hlkiSaWrOqNjvDXwHtyTSlh6dD4MGbJQw-WFcLfdVZ4qBRFUFJdblau-B4JWioWFM0DC6zNrVMXrKzMCfQVT_s6O5KF5cp7rH9mez-sqbW1W-QqPUTs0LcbD3rnDDch6EuamnVHDPzOgsT04VnOzuvMBhkXWIS96hzHcsyZMUDewTxef2QJoNl4TJs3tjJskxTbYIhwNbD5zvYgrGTarnI1EvuBZqXvgvrWYfIXYDUsiMxWiPMeFeMLFPO1eOdha5pVuRmQbhH2UdFcwHKgzwtUbD1YkVf1yxzb1SRkWs2G4pAIFDsQ0Ag88h_aMchsJ6Kz2bgtUTwwklyzbnR-jp5RINaiKCfh2zoDrKNC9elKUSBLOpk4Z8l4-lwfm1dYlM_I5h9nwwZAZXcn6LNE4ee6XNY3A8JJy2y180iGyHyXhPgkSUmQzFvPQH8Tf6N0oEHPfOgoCpMdx7gH4MX91rT3axkZBdQCvOl1cD5iKF05lHgbMX30bwMwI5mipnu-EvuBnlE67O7O_O-xJNw7HpuGbXKRXu8eipzkLK0B81jwuVAJYeMnHNprXMUw3zk_DPZ3hZ-ieg7GyPwdbM3AuKgcJwAtRPYS8YGE86OH-EHVAZQwp-8SNcNKFPqsIV6WGzd7Rri0_KRA0yDUNPq5vwuaAelefzeqJa-ax-MPzH5mBiQWSGTRjT8OUU-KkP3nyRi4wLEeqbPfTwxPgECJeiPx25JHngqWtpa5RBrRk5FEkGxcsXWPNHG6pZvRZGJh1Jl8C80LiOS-JeXZzCNp9WYRkuNrLTeC1YPJzYFdxMMRZHgqRfUxiwHv2eBfM88n8MapLuRt-p_1_Dgbg4x5SRJEjo1ePLwQ_liGwXKUaOKgMswYvQlVPs6CSpmGzC8ZLix1w281LhSAjYBTBG0TLmzlyaFDiNDH_X9KVW4AdNVLodAOa4TbvXT1OQzH5BmsNPCEdOczYCIdKjEyQcRsV2F6U4A-3asdTTvCbxckRBoeP2w2CFop470c01mUT6Dnx3d3CIu3B5PeDbEl37tBrLx46mw5M_TTCZeNOSfPd5bDodg9B6B3mQdzRNzW-w0ZqIWIHs4XCsfzJ-m1HajS_Eo9mgBG_PcykUNfrAJ67hI_KPBHGq1F8Ef6-wdDnyNm0frIXFds79ileVsV_BHaItzFTf2LcG-Ye6-TqsCcr7UI6ShVwOviVaF_phaA-5qqumhWfNB5eWeoN2SxX_IZDtqDT42_YeJeR2P1cvj1iSIBk5A6W_Fi_7t_YiCPnvlFSCIDpW9WX4nxPtIqT-G1GTRPFBC35Deila5ARY6MdT2THwxnwL_HNNZvTEcPgSLcKjenpnxuyWffYNhtUDjE58bc_NwziOdFJPQJjXe3GyicinxQYJjnx1nB9O-_M2Y4Nj0u2kz6lnnyGqJTlX0aA72q4YNXXGxKeWI-rtX0lSV7cZw7PYByJicLeWXi_LEePFr3wlaLpJplHTf62pyXXn3XFJVB17tIEDoMYMcHeFIdJ8wjt0RWHiNkBMusSzpptoTD2duxjE9jC71FlBPNIjtxmcsquPHaNaVMVlsH8aIXXgxiLS94GA2j7P-7Q7Af9gXIXwTETGngv4_n3W3K0wVzuh9O-wItAc4KsCR4kP8dt-g0kOmUpt7gr_JiAwjd3arImJc9xFlhOB3tOoVULj-yaTa0fwT63zqPRJ288sHFL_AdQlSUj8KtcDBbyVyopXgSNTMxczcxpyB8fU6z0SgWnxXPiGEgeyYdOt5MKGLNxBAf0c1sCaW4Fa-UK_BBjmrupMvXBVYvXMzW8i-gx31D3ziA15GZOAdXeNEQdmxBGoRX9mgh5d0IjGA0iuFX0mnZfR8z0LSkH9pF5-F96CENxmXU3j_AcPM2ZlxhtdOAKuQ18knQWgxTBtR-RAqX9AOzHHnltlgn998tVl9qII9GY6VuudYe_J0jiNLSuRImS_wkNp1a6s6ZfQ0jOuJgv2M6Ip1Kj_MfLTD0YL4S8hvgfFR2UdMt9ddN5tTqV4NBdlREJftBii86VflrQ5Ec7KG6_EGfPRmD7J5MfZuS461yrNShIB6YiISTpef9gbvkXagIzSlZn8dc8QKN2Ltcih8bb9JfYUDAr4ndWJrUc58Y--S6YPl9R6xv62n-XE0FVShPkJI-LAAKFqT-UtdIwPcVb2qfqWytLPUGrrqMrOZZL-AN4zM4tWgObxuld78Ql7BaMnEZ-f1NYHzKExys6XdIX0bqTuyeNXruzTvnbis1fnzV41j9rqAxAcP3kvLhmkA7QmH28-Tdhaog3fk83eA--S2ef1MFq1P8-xrb3t73YaUWxYaDrRuJ_kntaNDafTRmsqWI7ptDssFOqzvmPgWgQM6PY_cDOnoJdedIZ3NMfrePJIDQxWF94nzJJAnaGbRCSJ0AJpfhYyZF8fTT8OB-kgh_mmNf46Mem1V_unkkUL-hRWL0HYXxWmD-ztDEZThiEBq5JmT22fOK8OrF7HtfQNBJxRkmzV1ZJCN9oZntgKRh_N1N6-PmDUXH-qiKmGQ82hNNq7K9_-ooG4TTOgLnrKrlpPARI7MAOeCnBUkrpL61IDN4Ktaet6LpZwlktRgF5WEhAS6WjJx8jk0xL6OBLeggTvJieB8YlOqO4r6it3CsEwj0IqbniaooJosTd1wRknHq5cFKG4IAwjMsSv8f1UTIFhwCa2wID_pcRpWA6ujjPg97AZk2QwxAO8zQJ3wkSukzsbgOWC_jIWM2Lf8P9YXkgCAh9-tlpP3yRnpDG1t4efBQE4LK9Fxy3sa_FXxnHFagTENdQ6fG05Ao89lNJG3fvNUwCDjeNmWCy-IYfyblVQnYAZgCi-6hB7FlDfAC9PbkgX9RqA3q8dGfnn5h52VQ-Ts90X-B2Rqh_lOQAy8haZrzBCY-Spvvw1NMg_hBe49MTATla_OPh4rsRtSkIj2JR3D7OOYQALwIshjCquOJOxk4_S4X9rcVuQjbApwmk15wlibnWLIwrLuFJw_q7hKywfcznPJqsolADHqMcDWi0vR9Fd_1cQxgWicacfQlwaLw4y74NYaIo7-rePg6M16uz_Aa1NfrCb9ftxb7f2IDcoEIMQOglFR6FigIe-xgctCIq_vaTmr3fbAafXIefNL2HEv8_lfByaaGmUlgOz0eTg2RNHiAY5G56YdpEqAXfO3wepFPjfzgdOvwZXn3t6_FrUwMgCtLMKjElfSKGt9ZcrV3bWH2BaS9q8031sg7CFHQWet2dgZJZcIF6FGhkabOKrPLTiKeyoygKdAQCKKBX5KF4EYImL99mvhXkNgACP5YTkjiP93zj4Ibf13xPbI5z18WnevAhIUMCuDiZ-pbn0rCCEFROV0PPsq2s4xBDDuqs2p6s6yICabaO3QNq3CbikaUNZLg1e9YnNtCi1xfr4z7gcnHu2C2XBNaMGwk9_31pGCtOrKfRgR2eKaq7UD6Tkki6eM-dc2q7Jw-LHWMn5t_XloH5ZPsipT9FvhfdNWn0qYBN9sVe9XfvZkdsfxbC2Sm7-tg9JgD3TplSQK8YgkHgXjEP2gZ77Le50wZHwmDtNT20rHvzs7cCyDFU-G77suehlsFBGOTCrc3yjckOlTZRpmVijpFRtHPYkA1ZvtBBRpGQsaxTZvN84nWwXP4sVC2urXVCvbTTBbrPK4M5AH-bfTI_LhSDyh4Avg_eIBFJMonXUjgkRI4rUyK1xXnhoc-Du3JrtbGAB9i4Ed-3ymWD5buZXUYIg6EUVAdITzsAeJqrP6NEH42DUP4SB6flNPIyAjTg3lfikkcHvt5V9UCkxBYBdwrdC5ZnXgPR7OECsUsPcZtKM3qM8J2RICjXHqTzx8gJYMQ3c7L0kZbkSVA-guf9LlQrfz9GdgKSe6sNRGBbvLH2CemyjXO78p-F2SiD5kwfdAYkhIe0ULz8S4prsbiXl-qQvd90gAKVHlDQtjdDEOgTvtYbyE--6Hqvd9mKpuG3bzGnwTLZ02x4syrQ6NS0ekrEynx9PBdFxipZj-dz5-Ydjc-FWe74kj_G9VsHztfWg_hc1lLztKgJuwNNum_pseEJlqgpLRCLhJxTFchrws68j3M36CfzOFq4U7ptTkLEj0ZuHKt8wUqEqEj_iP4JkL2q-C6-8QUBYjSWGZZItIxvx8PpMUVgitYGvyx7p4SuEXoccrSa1FhbpFlKyyBZn8BbCbJPIgzuK_Fcltn5n2l_xDxJzR5GneV-SC0RKT_5vdd2Db2GFGaXjBTTg1wq1bP5bJIZoRCSU8R2Tc20ktYvgi3THLBtuV0fxriQNhzp3kLi0gNZr-4Xzd9Qz5x3JyBS_k1SRQeMvrUQghv2BGZOKHN35UMhTv9J5cpZGPASdts0tFKmyvhhPe0RPjpDUhbU_oeUVANY8kYtlwD7VN-HmnPXEaoAbVyX89EMqFQHNff6WR1sW1DlcPZlfgGh1QbrTt8kIA0aJEYO8pWbwXAKTxoF6MWdkUxxbMdc0m9IlNkGugq71eEXeCbFMDX1YRmYOJ7iIghkp3F3lPJNqxNNMXDKqkfHIPbo8eYB2vgB0yXfwGQGJyr_zYtAIXNIQJNp1M14MxhE_Cq0TwZtVIf8_KuWnkM_D1gGZT6NUibgcebd8j-_UnKn26pT-axRX8yVxwXDbRmczSuuH-_dXCijOFXsiPwc7cFgJK4UnPlITAXfKGE3ueDB-SHjCC8u8rCVi5Iy7wVAkeMTju2cDIqs-MVkqP4j2WyP9k4OAC_nXEMjEina-aFeW2VtZSx97b0Bbdfdkgj5qUCBi1bT7rFDGe_tL8vor4K9lywqD5rxqvztcsV3XDvoqdUgSSCX9jyHTSVTCg_ro_XiJj1XvuxL2tW6Yw_9ApAZNI3lOJlXWDy9dt7KKq3rbKQExXhpcubSUHTRGg6KqDjdjWxbCFzcciuOJHqS3sKDeZ3KEzFRUJP4xwg-yFnBs3D16p4V1rQ4kKeqyAU2tiznpxT-ez1hmLkZdvGrmCOtQnuNz9xstCkqPegAIuXCcTOz_fHHvqpmCud0chb4co1CvJc8i5LFUTGApkqsTJKst9fPzkENpUqP_esLhiCwGTCJkphz73EcPcUhdACZ-BfW6yy8aPVvjNIzdEQuAqGykOqYhZSzIEUdmeSwvc3-vmfwh0YiWzo8CWotaRLcM7iSrePowP2rhu7T1prvyWh2nPwJeHY2xtI0CVswOl2MVXNBBGFJVaVnaygOiQfUQw--ZYZnXP3YWji4xXlAGQzZNMOdETHi0L2DgBhr5AT_OM1X3qP-VLGB9ClylQIHQByUgsSzsL7LNf2Qj1gsFyigynan01U-2Ipr-fHlsmuQgHL84FmHL_8FQsXL2gukAxPDHEFVNEyZl-LZ8mJWynoJGrm09xjD99J8Boh_AuO6vEYrlq6x_aVagctMXAVtYaliPTY_apio9gr3Vpj0OrEe4W-_he3tt5Wu2OlcTMIQ6O3b-Q1MFHIzxCZphRZj6wwOGg15m3EfIICR1172hW_5zq5LRY0hWhppbC6JOqJ0kS1tQYXu-Yj8ulqcIQarKnPucYmkqUfbkA9x1Jcbrd6vbhy-FTZFmF5S1bTQAKKp0wdi_GmzhWSX7NryzBN4D5leqpbXq5JgKfcKdGroW_-LeKCd3mTTi-i7MgfRXbULW5-2Vi-Mhe6t05DXHRSdmlaO4TZkIfQ9jC7wFREwT-MoVTU-BTzHgHD1JLIWs4jFuTcjb67RU78Mz3a0ABFOjzWLfQ78iJ8xCZkxzd1OHgIYlkfin628SAN1dBoXI462v6YbLrKyT9ADFrbUow14gP0HDw6bk6eVO-9iFj-vdW7T9vIGTmr05_lJGU9_Fua9pSG0QEWXFIJDGtwdSAqsqOIx-fGIYcHQkEifXdpqY9Y7Z5JtE-0ufhXj180s1DxnXLqG6v5-s2036LogHAmPFPLlMDGN6niA06I-C0HOvkD51hl9QSUmGODpG6Pos6wKgvHdcbJ8eYIEViFV7RDc-RcdPXedRSi8TKVu6AA7-vq4N_wctAdPKEjPTsg7ryVo0qM0dXqKXQlDjsQP3xZ7p4CVUY9TBXUc2ofs19ce944GVSgfSBfJv06RdAaFUf3gMse9I-HZFh8W_1C8zxdVprHXpXRNPXvT-f2blhsHVljWyF5oT8YdJRfg5Be_AgZKEqy8inDM26qLUbxdWhAZN5-VWI39_OhxW1LWYyxRid8qGhhCEcRMcIzvjFUgvVrLZGLZ66DUAElTYW_U-Big6nS0KuRUYfgKyDOaeNUE7QCpvdbQQpoZ74vPJHonvLVJga6f1xNIPgWcDgCn9BaUkSObPO3HPT3QmRQFP6fNRD6ClsD2VlfXO9IIeigNxshI2PIIkUTmT5DyBTZ19gpL26PLr9VmgMZQ_1Q2ZnYpZ2QRSnarD_CzCqAMlItznvFWIUJYaUo_Sv1GwbRKkxL5g3-il178X6vnnkucd5SHuuZFhdVmYmEiyGQSvPH-3oY8Cq-8_oK_K8K8xJk0LBCWOOclN6ofJ9GUpX4xpXlV3fzP7-nb1oZ0kliikNYIO05z3wICGYxWAH1w2bhh9wJ5EBTn-UJ8sT7hCru7kKtKmoKdQSpmhg3layUbdwB61Nn3w8ygZ3m0-g0d1oArPRahdiI0q7SwgVermuEShR8gXGKItzfkTmnRQlsBfu-r6gjyVvTbRpZ3cOKLkqcPZhcpsBKDg5A_arKWi7lb_NR6ON5xpQgqBV8fjdbrqSXv4n-kQ6Iy2rs6Fe-ZD38y2g_YtxTtdDjogDLlShlPpkMUbXdFynYlftaeHM-2BnE6jTT9cCGvSSmT30DWJiEJUQZ7rEUstp5aNZb1YSmkz3vX-p66t8_DBBrhLp31eVx1MtIWg7aVTJRhEFdkdnCTsRVyZ0TvcSCNzDl0n7XId2-bqm6RgpizuKPuS6KDb-vD0Cx5X6qXPpxGXiqYIHXp-woAnZwCROUYGbJLzJzNNTetEQiLYskFvqRIIXyn9L-352LtH3ZrcfOuAcvyml4wvA7FLfPCDpoIA_6dyutPzaDwa_xOxuygA8Eb1QZuWRQTk-D2W2ncvZRV7c4Pw45ZYQC16ta09u6OY2yk_fyc-0cICHvDv5J5ZN5IvxmOD1HMdv-deqeu5Gs0C5uIre5EYg6kPZiomOwr7L6p16fOUOq0gdI0bOLg4XXKcjRm5ctcc4NMPuDiy-ddXonnSoEOrQBuOcZO5hKDOTUWd2vn0e236a6rLFZvj9p4glldxbJCQ5i4l_fkBTzpkdBxUpf6gQoaunjB-14zN5JzbBeOTmFLSgFFppWKKZ3EBDgxguopksbVMkymMsMC7hCQ4VLGURbK02efR0AYCYstQVS0OluXE-NNLIai_WnjIXQ8GXGiqpj4D-HzmKaNprHPGemymAxoLfadELdnHbcLJJH-J8WZEqbk37EXZHhzHeuOFMFoFi5qBpFW9emunCdJr06dzhT26egqgWucPF_rM2Yft-GH3Afe2gklgRkvki65oX_4tywnl9Bfo4H4Ufy1JmvjggGATU_hdfvlkR5D6c-0h9ywMavg6BwZkTHhu9ZDzW4EcICb6RvL0K9-jweDlyKv4wEVSd4lMDv5cIID_TyV9DveMNBZtNSm77w1dXtw5JYq2EpDXNTE7MdXb_Gr8AeOdhK3ibCwVUZjOcIlbxxNQHbqvsF2_iJfArfnihOvmQoDT9z2deMTijGkEO-_QqKdUgUfjF73bCuii1hAXiYgqf3YlBk13SHTlmymrp0UG_Nw10dXYGa4FTn9Rt7CGm7DOAhlzOqKnQdRndL_xLX6wVe7nn2qHHetdkvoSuvJ8_ts6dfs4GEwzrX0g9tCLsD1_wViq-k3fVB9tcUmiMOh_4NgXcKN42PS_mwkSiSD6hRJcHt219BPu7lalU2zk2iqRgeEjF1GtHmXRkbGPdi76CbBOqwcmBMvJY7OVz657PLgMhc_g5XEvty3DoAqUwbM0AYdop8iTd0ui6wQBLGD6N5v7w2qCH4Eq0sJdXGc-zw8KCnv6qhDkBKYR2pWcShsgBOJq0UZmttQy3hoNcqFLk0Dhr0Ay8j1Fir8LMQSW8hAuh9SXrEpun_NVdruE-FWZAJNo2Oi10ToAEm2UZedlojdn9jYlSPUbW8kM8zX616hktr6bjdyiKBsW4bok__9XgO83WnPbfmkaaTBG1uOFkbi0-tG5lWMIi0_DKMomoMGjoK5AMxu5PV1Ai7_A64LdQzk6haqtemyj_38cDlpfZWpf3ZxEuzq2bd651idZEqJjZES60V-KQot6U4rZh8M4BguOP65Vvi3x4QE6YJUx7Gfh6o0cpcXF4oifXzDctBEijjrOTU-nk12pl-eyN6RnRjNMHwpDycqd1-28J5sZU247dJn6QsxYN-NRS3_9vA4xWcBzTE7SMmQUA8UQR1e1QUky1o3RJONtv5pbJ_AMCVxuM5qrELufX7oftBNYmel6Bwxx5bMIA_k-O2nDReLYBFA-uSJhxLUCgzoHP7lx6pGr7Pe0mAUdOpSWkVYL_aCsHL4xbHkL5cp8KjwrxY4jA3l_fpMpTMCRB0btqGtsQOS40rjc2XDx9tj3RnVTq2JboVPLbuu6GTiCkm52ab-mhnFxsCW645q4Zgn-vMVtuJuJc4fTgKD_5J6-zo56VuuPKhrZ8reYmPP8HLzaw8YLA-TZFR_KW7_u1jDcFFjrQZV1sBQpEVSmeuD78VuIdxmjZiwSzt8M3EV48Y1hQaSYAIHg_KbGIVcTyjR7lmh-c5wQAhWDivnGSbeXdqz4Ebu8M7PVKn8k5iR-EMsZwfvLQ7sUNmGKebvoPF6-bTpJPpna-hvwnkTV0V5IghzUH-dwBU7XlFZvH3HfoDI89d8KxHSSJa9IVpZXOpKi5MRMN-LHQv1uGewkimhkix7Yofe5Ce7bN_Fm4NwkPGmkhs2sQfYOcVSPWeoBuLb1q0xGPi3-YNW4PrCdMnHchq-Jg7ClVnZueEvftRt-p5Ya0fVeBktw-ga1dHXPLynYB6ROYAI0-oGBmEImeEVmiE6ihbNVw5PnCFUbKvsOdgBwcC2PhWZj6wVINf2CNwkgrBomh4Yuc6oajWygxA9AvLLcvK8ZNrweJalpoc-y05mLzcJKAoveOSXF02Ix-6oLXYV1TfNHZf3bJjHX08TEQzPGI8mEhi1_WJzvZxakiFoEnkU_gcp9a-mGXQjIbcTBWUwxEwkQcTMH7h3NeulcmeY7Y80buAKZgauM_wU5e93F-olJBXChu99mCLv--plEtN5RVMhm1VERikE8Gp3SvdrFm5w5xdt-Ud0LuSAfld1xyeeOwezCznEXQ4HdAM-0GBdt6ofwBHazloKWdyQ6y1fnSmZkGoFtiZktUbxPd5tRRnUSg7aeDfsEAuQuGWUnbDAoNs3EWyS2-vODRzvEma-8bwg7uedG4UQ4-0k-jG08rex6hYohh01YrnjutCGsri6yqe6q6s9GsYvwblMXQyaF_-KgRbDyDW6QfJVakdsVxBHOwq3hYdXuAGqd_GNM3NQRB1Tk2PXcGYILgN0RbdLp3PRIDEjdYglpjQT8mWXZW7DBxV8E4uhJLJFPFY-4IohhuzG4rsHMi1s1y9GiDbS1q_RB-1h7I58Sy8Ci_cyO_EDzhkVF8-FO5JSEPX20O0BpSR7Vhg2xp3b9sBO3trQmqfWSCkrZ-6arnJoJGrb3rAD6QPYQQw_vmbPnyDRkC0eSyAeiXCNpv4dT_85KsEDqcok69fa8InMJ3wNqtSHnOkfCQqdPLciQ7A_DGtJefxLhIraty0HBLwtGRBa3xgUgSu_af7xgoVfaAo-k1wp2_Q9QgGsbVx5yodvlNVtxbPh_RwJvsqY2SzrahbGssdoSro-URDI__PzmyoKcYSLNlK_FQ_7GcjrXhPA2SP99mphw_7QbPvPby2qj7IdxRui48tRdwoWU9zC-jRHs-Wh_kL8MQlEQQD9h7nOryLweaxx42zshy8waog0zqLqmqqeotwxTQXQrYcAH3tq7_GrAe2orRJrfEu2D9cPTlJQoA08Yq6necpnyqjHY0mOC5sHEDeMwKzbpSj0EqL8iJhddCdIQgRRH7cIf0qNXflKQ5E6E0_Spc8U6qJ95nFNE3wEJlYGi2mBl2v00jYfglB8v3yujBn8Hnrg_vYR9btbMChA0aUg0CHZedukLNzqhPoSpnvTc8EAM1Wt5vn02szrweOvYRloew2zQUU5BXbMtilgaD1Xo-xPeLC5aXyS90p8qqH5bWCeyv10R1cRt9-gwg5XgRHK-xsCrZA0wHZlCPItbrK7d9p3vGG7vhNDeEzEEIdBub2asejfuvCSm1AwkX45IQFZKlCRNu4avdPMcNkFtH1WhJZmyOzlsCoGARs2gyrIFre6_l3nfbysK9KpU4ACGAo5F9WzdGclBZbtcueCYvxez1qRh7Vmuhq5akw8S-w4oVcQd0RySTad6UaB3v-3DAmlknJLygU0_zWm1GvKkJC5PuW1289FJvIdNXzT8I9A8nDRO54JdkavAxJoZemrEA0dPAoZIBtjHC1w9C68KmS-w8gR2KVZTUvpbqFa5fBuDUVOIAmp0_mOnFSxHJutpRnPZdySYURRIEdiTOgxotaXXsVDMN9zP9nbUU_0bBJb7m8JRI5bMKFtiv5lu_he1QlBDpJRiadIeYgJvoHAj6pCfb696XOWZvotgla9zeuMlIa2o9CWELksccsko9oRlReX03Rl_Lf3S6YL1SWWy4QpKFhulFb45d0CE7oTZbRr82eUOJxGmlsbEH5DpOAfTg9A6H94HhBfgVIlor_SV8AHzu0aW7U5JJIIETQei271aENKCwhVxIFeeNqmDJtNwBDXdHWCLpwUxMu0f108YEm0qnlM2N6-OJ0iMeaDUv2Dg5u_hRT4Uc6nxy7EAf1dhhaHl2lazpshKJKZx3zWLeMQV-uHnQVYZ6-FHa_lDFsr6mkQ3yK3T5efnWa89Rn2YxEnrT67w6zZDR38f3cGOIY9sOgj4-jJfkSaZKEUoTh_IiX1liNafRDCa1i739gFvwjDLnGBSaZXyt-4Yt3251Z3yqUZ-xSMwVsm2OWHyq91f4rDfg3tlwRvDy_79lKd7Q2135A9M0wEYyacpW6bbYVLKP1IJkqg913_fEYqmbgeLlVicEQaMNBfBpea5vQynBlak5reEvJvknl1sESgBTf5IRgr5Ww3MpIt_fYxrFM0EOXFMK4EBgBTBGl2ReVdOAsMHs362OC0CWq1C0Fp-6h_ditV2zU1xUxsEcpBQ8nQVXHhPZDk0cELMf63r-I5PRI6zL5aZHJ1yOrJ8MtgRaG1Xj-N2lnhQDQtOuk7AKhyik2kky08szAjrRhg2-EdwgW8QwGnRAjgAR_zm2fkiU1OokO1ZJW3UyVPnaarHMV6BvHJqZiFTKYTpVUhMHvIrw3J_zCGhgkgT92528BavyMwMpVPfd-3tyUG8z14ebwWaJ-J1U7SHcryECn-58IrXwFBOxiyJdwbNYzDrX9pkwuLVVrWMDEZvmGLVQg3dsqmpn0D18SpuY3w7u6AUJlGZxXnnrxnt4euyNInYy6JEVjnvRxvL0BGbgxMGUfMMDthUFuxcgIM8fLVAJSTijx3Thl5U4XTfy0a-LLVe1qbIeCxp_amuoedUTIoT4hoS7OO4LDyxxtkKxC0CBDSOzF1ZQfiOfPjYc3bs-TiKs35filIQBqEGvkoJVEqtQuN5qAHqTdVJ1rM8rs3Xr9-zc9UJgeekquRLy4WDLVmlyGo4Bz19lIUxyWJkjrllWmAoJldnZ-2wxaicfgxCX7cUSxv4gEoIOce5-qu0JyNs-ZLpQO2dP0RIx6djq6GVczvKNSLPcKTMHVyBIlV3qtEoz3FtQpXy7_DrSDrVvahWvLpbKFWRIKWVHNqYfp64d3Lu9bEF6zyKBwQE-GxB0c7aVtsDgWSEOY6yo2SuRENKZXVl1x1ZSvITI2c0ryCO1aKThaunIhbw1vCXSYZJWaA7QxRDQAbD3wFQGNE5z0cisqeMQkVXD758593rrozWsaH5-WkwyjUitIOeMLbEi_HlIeO0hHsA5nQ_64dCHacG1I7nSoRKEkVDbkqabrGAmyu1vwiZj5429GqB-KOTY_ok7KJxxl0rNJ3XDBtxOamEbhAbvEc9GfMNMOjbjrrFTfVxKMx6-sTZcK0wcHZsm8ElDsxdhm5XXcCWqFIUFn6aw9UcFmS0RQFOyZrL036dOsfhjHa1g1K94xaJ2DRjNBU4nYNDRV0ghzLoT1S7rIru3RlLsdZr7p9ytM0i8D5VNNfI3YvGn_N42Cr2Qz-HEw8epBldQScAnb67egTH1-aT4kXUcVnoKXbnnAS3hvaXAy1NCFNh6B2dllyD6hYmP-4NIXJhABl8GCVyoie7UjenE3AcOBOrAxTeJyRvrtJ3sGKSLvEWOHZn-efGxUV9R5AfeoPHACc972-9SHwVEc8luPQaaw3PG4Uas_dj5MMypaRGGHm91QoFo6iw0EIDMG4pRPwXQ3HKXufcXFU7dopeceoCT63T_Y4mS7Pi-p-jTDJltnzHI0h0Vbc9RfRA-MzWZH4gBUMg-uuY1LlUu5ebej6zZysuRhnKsTwmfn08_5HR6TVKpSp37l5szlJggsPMQXDMRck2osTgIpxt5iKW4SIg-yunJWv0T5Jx7dn5h6ky03KhOiJTc_ysf9N3CfastCW6AXxjIdLVpREOZrFPnRxXkw3wxiEL9uCjLA9YDJfJHX0BTY-rtqKJ7X_ZIUdq4z5vwYfWsFQlS8bPBgCziQCpGgIqHfnTWCVQuq-5N5B_mtP06ol3dkOd8AS_sJaVgDYchl53WDlzKC2rgweJFJUni9wK13eybkDkOFCzwCHO3P6i7kwNELKDRHNQJjbWQbWtAXSVdbZtuxn0Ek-gQ0t-EHVsx43mXjGGU8J-gDmIGIWdZ0xy_oH8PtmX-OH9HFpywEme7mboAXuN5UjhInMk_vo2Q2GNjCXR02gKqoaW-j9eNuekK74nJlnXcSvXrIkXQJ0qqhhbfChuLoEetDWumP1Aa6sIDmTJXncR2Hp7C4m8w6ZSTUleFW71mwS2-0JWgBlBNzS1DDwHpC9gPjEqNHTKAeN0WYIW5UnxHXMhcuq1ZbNyqE9DA_d6jAoXaRvaQTsLQuvJ8DMuzkVxjcaEyQfnWZrlXNE9r5wspILrt5_HzcaMA-kwjciZ2QrPx-7eRXDNDICkyLpuKtN6VOd3R5RHmXUpKsFeCYbTqT5Nf30lshmCn8ipGwy8VjCTQz66wpsA6LGxK_Byx6E8uC3_nr8CAWH2dEja1BDUECaKGpzDpwckaqggXezuvcVAtUGAg1IULq_qeUVEz5hj_RWF8cyAM2GMkbQ5jkLuuY2dtjQFW7VMhGm5scx0IVhLLsGDhISRYcOTSbLEvIwO0TozdcICZ2n0JfBzcppsvkJgRJxIEm84OM0FRv4nJ8masEp7BiT0A1rVWwDIVzz-pLcZ1Q2fetabPA_cUNoTUg4kjA6X8Xc44Hl--FPD66Qmsvu7g6oHW_v7CI2N51H4cJeiGM-xMEyaFPuu4RZwX0K4yMjNKJFMQddwUcQSv2uttnPbgpNTO30n6Tqzlo7oPweKA80hzuIQMChOf1H4UvJuSp5Of-wS4V0liIHuFhxrAiWBwWmqaJdTMZZIqC7taJQ6maUQlbIHy1S8WZ3jSq2AELTE9r6RCtwWCCqZzyZWLi8RQJB45Dv-c_dx4B_HyixYx0lKjukJCHr7UGW_75Lvu4j4CQo3fAkP_7fE_3w73-8ngbSWTTvktONQ1ukdcikh6uM7hsi4Lm0wD2drv490WRY4ohrRH9BWZLteOYF1tAAShapD0lscYi7rwLqxyq0PgRTsUpDj_7OvGKQ94oiMO9MAYe7-_wqmISvreTJ2PWtcwZ05EYubwKegzYNyYta1WZAPc73gGHW6WbbuLubWKolwYXVk0tTG8IpDIz2M9lxvBG5XLdxhC73S4Gnf0KZz7mbCzvgj334jdDnH3XgJKJd4rfpnEu2cFjPlRy4prclBwlCyvLK-DRhBN75denaRwlGXwl8mNak6BD2ipuOUdsRqLpIgZBFjOsb1DV_ZJasAwSRyYGNH--DZsBmzvPzdE9q-jVyrJPKyEgEeH7TGif7_yG_umQCfCF6KVGp5ZiwtQNYN4o3YrdyyRCyA_TXCIL_5M7cIKnc3VOxxFiQZRP1bLajKCACZAvMkmi3ecOHsRC2JHrUzIrsdbArapnTvNKYW1lyT4Z-nR75SbVYuBIrgQsCqBsR-GiBWAVImlLh6whfKqy9MJLE1C_eDGIcWH20HPx2ruTtSCS_SW7EdPLrcrSLD4jVXn-VVCVLevQCWAoEvYkSwcCs2RvjVfleSKrGogOJvYXZr4lc8ajw7vm9Vmhb5Y6C21Zw5Q464sGO5xIJ3U4SDYwEuuUTNUVM9Mb2bk9LJGlfPc2p-M0ODCJzhyQkwqhh9g44bk4hcmql8AvS2eMjGPX4dl47NcFP-xVh62hnOZgBfLtMXDM2eDe_wrX1FCSaq4WJFsV7jyPGWhgX-VjRrIKmL9UdfC6Tt1EzMcwyV7La9jfuo-l9yJ2oEVPHb_5b3UXO4_IYeo47vxkSfvIlPE0L2P7fP_n4nmtvaThjONDHfKiLFUIWoy0jRNJ-c_txqzvXAzBCDrrpDBd3WakAyrjhVESjACYsKf_efA9VyOPOrmnwhuBLf1hiaAmz04dL5ZTD0WhTk62VkAtGeyuckFtyvDdcUvNqpOGIKtlQTsCa0xWQyWtqTGXzl1m6Q4L82be8hlYsWVoX7A71Mrp-2aev28HMo1GhRTP7potnffUmez8z1c2uhoItm0PnSVwNS2dcwYtAEM7UvxBxxAljNATdRPh9zpuoDC72t_RD2T2isv_wRII8dMRXIS4LOao2ahwMH9IsPzElngYq_pntpdpegpnJF84YAsQUXR4BttPs8zX-BW6a86MhrYwc2TsWY-PBk0E17y-dPBiki2kHlgkBEvTxUEIN26KjAR1RucpJRKE6brfVpra2aHbFpCnBw6ccTlJPsYg1hwuiaZtoe8zEDvfKxzbWr1j2k1AuZY2o0xGBwXC8yjBZhsnK9aTdlfCzXTEnrkW4egKXVj2sylKpFAksAaib6puwCYBL2QFYrbA21-nhPgCB-ODojfysA_oDSG7LoDh68hiTKyfCu7Z0GImqsVM9vi9kpX7cggV3oGvTCMOAgIt1u5ZVwVuI2bP55IegqbJGRQ10DYrwEAhpz5RXdE4ILjPm6ZUeBoAT4e63DrTU8ShUfZzr5Vf2JRVNNemZ9SClqA7daJH3YGNzCXF8AVteYH_HdoeYXlDYeIT2cRiNsUwgCkJo8_EwveC3wnc_iQaa4g5cvCkDgvVA9ek3d0-LQKGOQKS5IpWKuOuYjazfVmP03B3TQqiwwJQB9AJpfYIaYRDO4UFdYSE2sW5GU61SprgZpmy4RzBlIZdwO85TpelR24voShZw-tWYrW9S9nK-SgVDjAe-xgqyNJeWHw5-_9aIzklqoFwVIPgtWahQDVfBsXNDLuk8hJRP77GORkzbkAAap58OcI0cwYvNziHJ1SgjPiTrcaK36OUX2E_sWHchV7yCY_tbp088Hh4XXOKGTxFugIutCn2ajtYd_iRlJurhEEi9DuEsQ2X1FVUOH36aIgUnmop7N43rkDWhNLwRzgTsgoCh3kaI67L7nGyVHc8Ob-Vj0sS8_bx_2quiBG6MuJH7rnrmjRvFxy_vreXjmRLCn3M8-2W5-0JoQjapUhKo574qR1D42N68xUD9zCRs0z2kAfwvNpWJ3E55z2JBBQ1w93K5zt_xBB8EG14aE3-32GK6M3CbEM3d6VqicmAy-4Gmmns-3ozoKHallXDibxEg4qJ8qMBBLQwNibA1naQ1rEc8lieGyIfmN4mbs1QeiZ7RvRU0juO5HSzWDhQItBN7wa8U8TE9U_FDLZFRievjI1wbDzWwZ3PRDzV-KQZf7necTmiqjJg1xuynz01cqQ8exaBs4ajpurABZyF-TGvAa96exVNn0NhQsfBWQP3pOgfQ2FJQNOG0XRdYwAIyeAbBDaBl0yn8v9OqzTccZdih8OOxxkAd7wRMkRsgXBjhT_AI9nCvegnbBdtYPbMdDwv76wlLdyD3oTHp8w4OsxjOw9gSVJLR1HFToBSbqwc8COcSly1s9IC-OsIiLh1DKg4qFxCYv4HbqjgJ3DpHF-XT-hvOqEoe9Whpd_0GJjO6MIUvoVpEl4_u2dHgMybOHg-UYXpAog0dkkfktuBEwLp_JtOF28JwACwLewfJmaQmuft1PknMs3BaMAFvJh4LTxgm1QdE0dkg017ASrfhbQOqjvLidJGcbNWSOrf9ppe12HOY2lVkUY1OXKgos5XCkgAmHhe_1nGGLY8qX5hEgID7qhhg1TU2R_VptvDjNIXWyyU-GWIqGaUnuhmLUDrvDBTdLU663KWSOPIpxKSZ41b3xyYVzXKN41t5UlGKnr-Z6pHriFmhN-J3nIZpXYCv-BMl_6nkNqCXnV91xCLb2F93ogV3GSn_hLZ88rgCyBD8hT2FskUdcTYDdPImpHJjvQG1KS5Yh_c9n75JS3jrKT6rI-siYIeeW-sFHHJ4PXkVoWU6bsQ_8axVKMTrzNHWHQxq4Ot72Nepx1audwUR9m_07uaO957bFzAj6WQSAjXYwnELrEjuu8JgYiiALUnI-gEERzsNFfB2-Gn5Wjd_xQUmlTIrsi1uDnH49PrE-Xbg-GFSOnH2Jn2J_NmXNVA1Owh3cPoNer_Uh3MBw6KOOoLpUhS1l0VdHDghJXQKKX7LCZJTtxpkkJnGRun1WbZgvQSx5kO1in-rmBi8Hb_NXUylVcKVk-CxCGgVpR4okx7XyasvWJwQChpGzYLlO-YODxlFSnWu3ZosGg0Ekhqusgy7UOntRnISffv-Iqo8yivNYeOHdM49LVMawI1g6ko78RETxuIOMY0rhmpPW3DVRbl85-nq_pl6SH0To0FBFvKFr9YEK47uy2rLEnJzr8HNCAN2q5J8SXJJeZJetUpvpmqrcTmJtJ-olvY4xlpqLyrQSCb-sFxPuPJcmT2HYSVP2xS_WxclxyZEE4cNL7mXp2EckDcMI2xXRGqjgwgxgsgTxeHaOaaes07OkQw3ctXTtRSEsU8gXyuclunfd4AJKvyQ6gs2Sv7BR2WDErsPTw9bdHoeuNqaag1AYaa4snLfjRkhqipOiWkPx8IvrZ3QCblPM8KKBvngEkRWelk-Olf9cnbAwHeNPIJN8W9Eb9O2_wgFdOzQZZ_vrsbqdH2mcC0jH9hNAgIDxxng0dJwQBHvBPDPgibef84R_RaFl1KfrQLaXwVMmfSFVyWkBGEjGqwGtcOKsf1-JZ4BEe8jnm14LrCgOUBVbIYclVscdUrb4RL5fLWrDwm5MN5x1pIJ4nrXcLSwLLn2IiXDjxloi223cT15Y0-E83z5c6WHo6pFQAeT2fy5OiFeSzW7GcgyrQpbrf-i0ydkA8mDb11J2xJs5h-WoeNwHV1rVaCW_n56ownlwq12v6pW8RFHrUVFLwuElph47dKxLT97lp8hgop8sH49QlSxY1hVbIN8JAH85RQVc_1lDy8rcfjsdQtAIu-5X82fRvSohtwYSLPmIWHZnqEb9yAvDQroHKHRI5qBOBDaryzXY84gloil-oX1XKhrb2lR7kNjPsLtdu1Dkbd9vTbULZ2jeaR2g4HV7ljmzxYWW8fBxmRTtOIQR9CwLKFFfl2LBu9S10MCpRJa_sWpjSmVotyL1BfiP2e1SRMQOwfyFERUP7LGna-r52m-c4s6U7eksY-o5RODDu2eckOO1e7f9HlsigXvMLQM3it8lgzKQzrH4jPOt47G2Olil033mgoIVi2MXOEVn4j9X80_evaMzeDhczIBkM8Zu1m5pAH8fMUfIAmNvmrOupfDC-khkT4_ZvYZyO67MlBk6ooy4w_conrNASj0IOA93-Mi3QhzG-sW-LUqGkntkBVV3Gezsu37jyn8zBoksBiVjLa1TI_iqHPO9KIwoVp4S_YxuQ22RTxuzTLXHjodRSfeopObALmk0sAKtJSMo76Z0-rn4VRha5CkCjqhBOplLSX_igWIG5sBrfxLpXL_MAnqFy-VIuLyfsjQVH2yxG8nW2L271C2oomjc2GVLDupFGUQdhOHaHTErV34K_sIMW_cEVCpQvGkS51t0rIzmYe0onqy43tTygOjWMEZH75FFa8fAQ9ohtH57v3rWIXAIS0dVLFad_IcystDJAka4zh-7jXA0ZiPJrjSm_rYV3kjCzYtjwSTPez7l4c8R7VK8_NZEhiczu5t9j7VFYk26w8CirsmcIoRJmgSWwiuRwkJcV_TmwlEQBPjow-b0lfHKt7zxCURrr-XpPHznzkje_AQmsBnsh98hsYKY8lvfN4VmIbVLAINdpslg-qTsWGY57nZS6xg0KeSmVBOLSH0d_i3nqiVm1gV8Poz9uDCZECXK3-2ORe3wG6MXUd3uBfTHFvJ6fH0vhCl2RzZOATHmuolEScNdgljUVz-kBHtXFjcVlXo0gIBpPuSBzRouX5Gp399_rWgp_vuEMqJQmqBV7kEAsUdVtfSRlY3TNR7KA93gGolrxd0LxCgJoJOOFi86YXYNtmvBGeRWOH41SMM-sql0oxQDc-iRX95GGszuvudOxcu7gf1qahp7Y-Hnz3qzhoVhYs4yPsWNTA-SXEsiUKEfobCFNJ-ssr8e85HbjZuj7Qp7hCQt6rh4266D3Z39fzGeX5ImBz1HBQRk6kkl3vzvan9mIV3Tw2YgjgJFMr8kL9dwAc4gMZCZQpYuAqg2rSovui8n1yu314H9l3RCnjTAY3le19kdFJPA9YEyfGnSZv8Tgwhpid_qNiHhY0VysBQW2ENqRwYz2rJTAvOEGRH9LmtfyAhsOkQ5pXaSzOCT34BBBTmswLIGmL2oRj7kqUANKAAJlsrUOVfVEMQ5rawZLUpJ5WxX4oBDPbxUIBCTFXAMRD01rJ5H4EjN3181ILKDp3CjC5ggXz0-2_GSqJQo8GB4J8ucYlkt2lM-VpzDGGGjQRWbyr7SQjh365_MNsHSSGbxaDSR4zMmimR68DwLcbAG46SF-p83wNrODfmMAtUvxnLiJqpalymTzicqVhRHGh4KN2KsGw3G5hbS2uAL4guL7hKpYd8LGZ0Or_gL1Qpig9W1NjoKvfZVV7q5obp__CuQM5IqTqplQDJ8XZ4Y-Ot_TBoVc4010qt0Liv8eYQwgAbZXQVP2fd6h0NOQHbtLzyHR5qtn1jH8ImVZqbosmXmnQKE4GHM2SBlZU_4xa66QPEWUKaZzDQ513rnH5ka6TYWZPbHuspulf_WuReK_RpahbHB-iuuC5GxmCBpTGivQ0bidt39Kde_WEoBwM510MyFftwhgk_d4etTdH0TVffZcAH1PsaeaKzl43NQVZ95hEW3QCwppLY3vRhg3odrQiLV1fSysh8KJluDV6rfuJJskS-bU6UpFMQZ0I2LIecQBYR6cpHdU9QAx8OEi_0zMhtpbD8GSlOio4wYZh9u0iA1NU_HtE-I6h6fhxwG3FqPgZ8P4c06bEcOs7KYZjPUtyqhwd3iOGzUyokict11P-udV04Nzv-LhTT3KaUNYF1RRLtqBOsa_K9u2JxTd_ZEy5VBvA6Jq7_T0-ZBsrlnNW9tZCo6cWsVXw9a22Q6TeAlgMyu8mcfXilIZW8AjuyBy8ko55xWdScIQOsWZWVScYuz09ePxY9pyOrhoL5GiAaegcy4mAtY76fvzmbk6EgXD1lV7fX1vLgJxYcUTuv2zLsFZ851U8dOvoda_nCz6PX4wcoKXxTsGDjp55T3bI8btWrepqgObN57NKxABcLFkt70qZRVDUpUcqP88jCh7fgSAFEnp3JkGnlbXa6NHv6xzrLc_NwCtXHabEHPwvbJvpgljPNp_xZpd-VpQc1e9kH1QSswLEjV17W9HdEv37VW1OHDTd3gbHZRaZEWX9Vd0hpsE6OZChtgZu8OKUbwNswexaWSeovjdA0q7nhiNJQAVZIeFNIxulMgobHILvHmtc5UwEZcZam8x1xDV-oH_eAXhaPBX0cK63Bj2rJ-8DwmDGDcQJAFvtV6fUiqvL-JIT6XQRGl1jlgXRdAap5dfqZ3A726nA0AHC-j__b8K4iuMBDyiKTc8Vg06etaPIxKZJWth6ehUa5uffzNW1SYHt8BgwAg0rfG_mcicam9vw0R6BQ01W_NfHYmPfA5XOs-QF_7LM9be3hEQpqlYMi8-mCcRE4qS3WNzN0hrCr8Ef3cqJ9DfOP1bImC4UQ3u3jj9Krsrf37mF2pbK-sgNS2fEFYRPQKRabpT9XAuZooqgmyccZ2ga8oLPgMsY9C_u0UFRGdBaiWjzqwaGIxTn0BpICtAcVDqOMhYneXYJr86eeu8xzrmANsNeagZLjqEikN4hlqThvkqNSoN3Nn3N5yZoW9Ai3Ts71l54tJts-moqRbrk8tq3lxcjMQXulYNliFooH-DFGSP8AT9Iy13pa_GzpWgNyaKvYopj7a9QsRB0seu4sml4y4Kc1xXOIGB-hiGlNz8YBHKyQcbi19-ktJzX4ig9OlToUkIyYAdy9sqT-LwfDbWbnyesEHm_4bSE2ygeJl02kHLhVTRU8JeLchHO_0gbgIDd73PcP6xwjwzFS5NumXKriQoHkc7He2taehEld2gKotoacerPjhwEJEbk4xRSa1wU5qpIEJD4pIwt5FjHRgnh6fmKudKcCVn8UOvlq8K7s3BCsmpgwISFNDoatwwGdNt1kizw_RZBpZsCmiRDPtknGZZXMSE4qBt1SEyq_Fykv8eqplvWtbfGyOYGItxk_prMNBLL-td-u-_UsLuec0F82uL4O66pZ5PBVXoIu2nP0jR_wFIJMZgXI4NGNqA3OqAU6HKWtXH3OwQxLL-5cSrJNoar875P5Hko7o6sIcx_vaqo3izMKC2IH7xH4uRRhAGs2VPnqOll-vzaay9VsIsQ1ndYd1TsUEqahr6yNm06yq3nr_nzI-UV0Ma3LEQiXwt1hFTnh8Q2EUfpkufvXAzC-O1tccwb7nOZ3E7XRcQi5-Vjdc2vFZllBRDWqbwpqLrveWWSb_T-rMLidnop1VIRHeYN-0oosjLAB70Ft-2Gm62lQz6p6g2UuD40VKxOTzrbK6dCrSDkA0F8ORPOrkGNpTBLVDP8-Genmf_kIt_Q2tOCMIcyaOOFVlpiJmBfKNvNul8KDIv28-PnPvkDghVeLA2Rmvn1dFroGtenc3Y3tGcLu461L1VkBa4sBSBUueJYMrYyiTA5MqVho_sLN8aLZVw0oI4cKaPMac4UdT-wbZd5zVB3eyJJ_UZ-2sArFnSqqCh-PDvF5oVMmjh6pksIhuntReGNm8kpM72PREXEUw4pVkh3T7xa0oqNlhRF0inL2xZCFyS53SqCZsEXlwDR7k-xqqV8KmyJkD8mXH4fkHVAXnlkHm2Y-46HzNw5NiJPZamhIO1vHIIMSHpb3sA2rp4k--KLod1VDhivN5wtWgS6XqGOnamJOsHa5rhRr1NRjd_bWZUnO9x1NUs2414zfBqhDkrkFVbp4Zl88sgmEGNrV5Utsjrt2EMk6WAAjNywRjtp6k5axHzvKlOXQc64V_JcBhSYa2-wF8gi66Lu5h8u-j_taZefZ2jexiAYOxbJdHfPodcmu9UuVjlxeOzY9zHBCoUryR4vHACP6IppKaWkPrVDc8Aa6UqcPRg4yHdZjDZE8WOQ6ooFoj7TMxfk9l6Jp7d4wlj9OlOo3jivlvgoRKQ4kQHz4u_fGuRW1k0E5xbtfbTIiwIgmvQ9WuLOAogpk3iEs2H0AFcsDQ2Jtv-kOZE-_N_BF2XaSoQsbu9o0XNn9RJNI3MLRJkgHLydikBU6u4QUD8ja7fhineiryBJiyqYVxW202uds5g3R1SL5_xuQXC1mOsdgEtXsDz08hBOXpkYi7l3tagMDtogzF13t83BaoR_YIVnLggnu79esID5kqJ0B_86wtO8Qtc-spWZ2U7gZ65PbtGa2czbBl2xI4fsNoYScx8Yw7wAWalNjh8oauLtKEdnHtrKGkY2gvWrShtEs2AQWBIPZm4wt3f3whnfiHDQkWPxM9gYDm5Ne6x18uj8sSREzeEyauBZUWALbhvojMiuf6DvfQsH-kEjQ8tLP9CCeFDnP-BHiDDJMC2rgtJOelJCI0wiDbDgzPW3RfA7KLJiluXnV4-H9eJfcAHnqDKPuiOrckwmTASn_ai9Vw5lPsU28aosUhJo5f3nzj4hxIn48hpYvgL_WpjdHlPWdwhMP2mTksA7gK4QREuIkpeqjir01DmACHov8crNAs_2kL9jq8iAzUk_ZawBXbJCsl0l2_vhMJRSaEi73WBKWeT6Eoufs3K3RiuBwBZCB7gdFOYswfzO6cwzac6kXWi_LL4bEjva3JRHxlc4xhzmSTi7BMF8KdEPc1e2FYv926an6tiaG1fLPoBbpZ8z_VZZbnb4iSx7qaAOR8x4E1JWznMHSjGkgj4tC5_m2piCYmLCW6hD0qd9IZXq1d_OzW-GtfOZVMiEVIAimvrRovhFHy95OiPDUpoebInpfhGn8e7Q3ggLJ3vxtUAMRRGpXpCNvaES_VgfDWBLwn_CrxWdun_Yhtv9PhyQva_Jy1lEBTOYQahvBQP9c1LVekKXBIAof0abnMwXINwDgWQe7eyzN3kngvuO9ps3JDA6OOhUh5h_0RDDwQ_BS9xV6YclozrviZRhTLNmXxwtAtOgEV0B029SPNbbJyAOU-tuqibgjTcx1Bjo8kDicsZG5cf1DSNC7AyIZdXV10gCKH4Q3VWIjaFJiXTBsq_EaKUnfN2Q28jxBQn4Rh01AuVj3bnHRc90JAs9vD6VgkgGMweyMWzO02_5o4Cy10oY9is6VpMQhyN_o8ggzizYog2i1BcTOUBA6NSiK5k0SJQKud3BLBSw7iE5ND_b_-V24KS5eKjGgYmUgr3XSddUK0rG4OYYJ7oaMo5AJ3JnSghFif4JBrM9XZEHH-l0SuiRNkfDb4TcCREx65YNnDVwXc4kyRt4huXHhni7wBRHyuhhuoQ3fZKoHJTJ3bS-_G1IXxr7pwQqSNWCYsb0fMxalgezVcSaibLYjbhAAc7rB-Q7XXWygHuMYyuzSTRP7971luW3Idn-Ac9Rrx-Adda0VCYBLwR0DkmlEvoulje1hnhmOKuFQsBhhyFtlc_yoj7s8sCstf5tmnsfqeXS0fNtwBouzT6ivcDn09cpjOCz53BEm2wsyFl_ZxzkxtqgMTGJ2-xLwDK8AqRrfAnqI-91A9h4xp1bVZPlpN81QlbLQoQ6uDy9uLmvNgLniIVyEsxvpryTh9bd_VAjfByxufslFc6sU88r_zBSb_dUoSQpoSwaN9WNliCOGMaJ_Q4TT2FP57vTYyMxHVgJS3zDWLwrYhWdIByBget1HVWAxausPrwZd7y8aBFbut4BFQqqbi8U-7VBkQAFJt5GDOEq___42UQo98cW7j-CNge-LKN46aBKiERbcGozfeem9q3HfRNiTumSDY3vvDUA1UGy76Z_0dF_PUxKUDFWuCsV6dLSLzwHlHg2xa6p_qzYr77YO63LLXTsFiWCX-rV51Idy_HT1FVjVb9sSVOnOMH8YHoyZTAxZZdU-wbbjssW2QdMmeUqczBkEmI2vFZkK_-fvyjwvTOv_SV8IokG1I6rh94j-8wCPOHyizgme9ZrSqFT6vG2-Aj4na8IRIAneczFrvq3I1dAO36VyofzVHp5KbB4YGxbWp9Ael1TvA5XvrnhE7RDjiOAJSjwYP73HWp1R0Ps8fl1CBNviYafiSvDoy_lJ-AmShw1PDz5ruPRBfbFKWCXJyBIPl0KuiZvYW9F-tvzn62mF-CiU4jupulGNvK29-AIHSVr9i6M4JdIbX-ESLdffWT0_bFI37bxSmbm3tVr1EywzvAbjydkKgbrtNFmnyRCocYjNzTOvWKwPfCWHFeO92Vn65rVyf1NL7c45UlF3y__iUlWcU6ZOjTQd5lMa6RAcOBl_Nyc_5LDtHEvYPpBanuuuFLxoSM-RGZ_RfasOgGVgo06qkOQmAxz54S0JGhLWW2HKlBDByQJX9l1zjg_BdTYW4xPJTTSiKUhGSiBu3l5KcArp2lCyJn-3D_U1UQ7qpzokTo3lTXCyekWd1vW7dD7AzE8ppunDSQOCR1_onsC3lBG5fZfQ2kcun5S86hnjd4vlmeHW-6cskf4EkMVPk6gmd5baOz-Wjf3776wWhNSvxzYY-uwmSXXdbED7axklzSMOm77LWe9n2X7HDfkLSlL2qbjEzWgH0Y0lE5TJT6Vyqb0PfMw_x_UY9AJI5QdQplcSOJFxo45fMGGT16WMcYYh3bKo7vc7_sTzX5irFQj5AorIqy24M-yLl4iNyQX4I0AJQloobw0dBLuj2Vn0hhomk2FZ0oXY2gbKgPnpqjgD2nUmYUPrMPnmzMJ0-AxCerAbZn_IbecmQE6zHwj0Y8Drxk7nCUpi6_egqo3lID2qkcNXIFttC17LVb0qIhDyuLjexb_lfoPfPB8fR3R52_fxpGFeeDYXScNC_qLWt92Dqvey79jdJmstP7Pv9RXvi5ENDYmBWZjDFQBc5-MH8PIc5Oh61gzePoh302xB__mgQ6bfLIy9MvAJ8L15OxHbRix3itZ7ZHm3tAdzPxQR8u2IIzAyB96oVPZytixEB3li8qO-IdPg_1AOZULvPQs1sPxLLJfwMjDgDeZSQoYUqAIwyoNjUrrB8zQX0JoZFKurI5tlIkRYTOq3lxRNfwZL1I7x-Df8JJgOYnxmxNYmpxLo9obiLERSluisGrSevOA12OBulAYfWIZP9TxOAxODepmhfQKnTwwuZaYILkg6Mezqe25vpkO2gUVX_xuCYA7v70UNcszDlhYVnsD59AQ2k1ryiQx2QOm9K6Yx222_X5uG7RQhz7lXvhjBW5McXgF4OCSq2CtowA0nPYlq4wupbfABWXpuvBA9lVrsGZ2SDNEzII9rkz1QgOENgA-Q2mcgczv2X8zkxqBwRdEPtwadleBDU5OGRpzIM5EODbJdrA7miA5wc7_GrPnA3ldg1ZhCIrtz2XvOqWEIStBWKgceYjvrU1xUM6MNOrr7vG8LzzIV-el7f3CC9JGiS5rlXKyspjjzaXLQyrxyuQTKrBXKdIK1QnrAQ3f346TVwiGGAWlAL6_PzO70EPQIV06mcLpqhNd-F-rYkWtWPyw0PwglJefcybs6BMLz1lRp_HrfTw4IPMrnP_LwcV-oFIVIy9a5xEzojef7V-H2bqotBQcYfR_dBAMM5g7ymFBOBYWws6YRTCeRyv3oUwNpQ2ekbecvx4nM3isf8IuUGjwvuw2jtRy0UhiIsD2MTXHJWWtFRNcuNuWd2LH5vrgjjmXvZJOWBC7myYrp23jtuNh0ww2PZ4NlpQVCGUCVfEQm_w_aDmprQObA-FmhPD1ujNi-EkuJJi_aXudQaOn3an3VLwT67WLmiBkXs2zpjd2MyZELuu-RsblQk_Iz_wqQrNWHl_dPhtEDaGcEmn6KmQ6w-AdQ3cJODaZi4ya9entFekCDtl2nszJQGk_9IFKIJJqLk_X0f-M0yV3MYBMdfQZnJBThrRWTPQBuQzR3HUJNSoDK8D32komHdDPmTrikXT3fFrd1slKqZiEqia3lqso96BZxQMDUpQT7DC3UXMs0OwPPLnZYfZyS747Y51xVVq_vJi9mMNkKJl5DI9TW2Bn6_xL4M4TijuCSmg_IIyPGbjMhz7nengGOCpJ0M18NwUNCCX-wKgJITmOEFDaljLCuUBmfBnDPE6n1IuD_85CfzpnDuwVySAVEiVCHZfApo0K5k3rKCCC-jGq3sn9u8JVkhgGIYz37n9asOBqsP-ea4ILc0422gc_xtBt4jLG1Y-5rH5gMhNCvqWcosI5FEJGBtgj20Xkp39hcZipd31ES_CXiGu7Tompj7Ro8eML-JuXu88qgoMmieAuAmRKrX7D1Fw25t02cKT9ZXjl8Jjb04Ynu6pv83-3KCoOfsLjZtuj3LOX-mRaibcUse9-ZNm0axA0u6dJf-pegBxaLXpub9ebyt73JqLEOZ5wNL_w8djkw03RNzXOcYAUuzHAYxpbGZROn8WUE1CWcZgKoEWtg8Lah5WhUH6F4KwDtOAnZgDLphwEH6qRrIjVJV62Gx_UUbgqKitI7kpJDByTCu-2naKed9byVCj1WdZiNLMqQbB-qxM74ywHwSoe2ZFMgdwQfNRl__idkHJlBNxd3VAi62_yeP2z8f92exB8kX1nD7lbh4TlvUpQm3K5HzGS6ECJXVwbFICOH_rKlMkSRqpXpmET1hLCHLWW6sFVOj8ndro0SCGq-XJD2Ka4sIJKD4UR4MQXiMZU7oIpnAEDi1MnHZ6bZzA5PJG5UqfgsqHfvnBOZeB-xZLP4KEABseN_AY0wLAo_mE06UkPZ8IL1o7bcFTwhFNLqVgl4UZ-lWHukZz9lNEcXTMEMb7tgdw4H4Lv-1QjLEzo1IgMrTDf8QA5VrSY66kbndBhX4O2n293D88tCwYC85M030raR8i48tEJiRQqdX3F4QRPWfm5XoW49yDOSdd3CCiEhWiPbGzZFtqNCAeq14zDeWcZbxsAHx5ZHwwIEaBleIwKh3sSw9DfUErb8pwtYl8t4n8PF1RpHDqMqLoI_IlY6-Ae9LQEVifgFkguiVwo_5n14qlKICTEpo5MjO9tjkRgdKhaErILLm5oPRLpVNZzLGW42OFtN58uhFRjuln0mdy_vNe8fyXDTE9H8tn14XdElpdfkegq8TFJQUpqfnFVWSydRpUZcKFTRSgAUU8hg5cufdUTstIOA28ZNb5j5MBlCaZjm8N4HHbYRbcx7gTe8yH0vale_on0c4BOedK61YHS_yovVzrqPmWDC8u-MG3UwNEaosfiQzgoXDSrJz3hJvXBLh90K_O32BBl6BCUl15EeMrjS4JuMgFJA6tn19aI78w7YHPsGqrOxvCe_4dIqAo6CYJgFt88GHAZBu9uybi1aKgkFFgsXlboNSxjDZeAtRZ7bLcMczI28eOy0k0iNhAp-LgzP4kuFUQOX3pKAk3FHKmtk4bsENawMgx3eewXE5Votk3mdJaCHi1trsCpMqhRyBp8oyc3W0w-RbBgOJyM-q7JSAINBUNM3KYcrCrs773PNt1nS7ZiGTo2DQWNvUlBztSHlNMqx0go7KFANMR0UbLqCCx71gMkWyTR9pWITcJqoWVpCpHzSMShAVQs7T7zZ89oaFrcVfAoo2_iVwdzzXQYnVxLMRJHXCug_JTKcU5CRC_K1yBAMgeaou8rT5MqFBx6NO3J4JgBgvVySi9c_vJNH8YViPqPFLDHtoWSMAZlUvCnG32aj-4RR32RyPf_fxBZX-kQhYBcYKiin5ugTn4x5cQ19AiTEehwqtTKf71mvoXYxq54CZYQh1Rje3QxF1lDUpTZjMgd_lJ3okAAy7i8q2z2iUdvHdKXkMLyXOywbhtHZYjI8KKVJaFW5EH2SJOAj-QdYFAtPoXp73bMowWkFnmSYE1tmLKUq2-YPiHQ6H3_pCagemYOT3gmQZdOriYn8lXhn6wc380S-ICerpVxfmncqxkil8jjaW_1Tzc0puVjvyrDbq6qiHeHw6zOPamQqy4BNrAclwMqne12SH6Iiyq_VRaqVjGSYAAlqq1ZFoTRfUfNQn07I0_7tJrBt1llZhBuCUAPNknrZXfQ28x6T0lydzQCgv0roaRM_8anRTBh3zGE9tCiyjoIhZEcgkOO66VX0PRkrsvSSg6AJ3u-HiQDcEliAJEHXBDlaKnxZeq76U-feb96l6RMqkaqHeQIrzScMJQQZhV_kBHSLHq_wKfnevzslGowHUKt8-GP7txCACVZFZ07yOF8WJwpQnsE5z4VUy-YDEwMo3xl03YI6mlaaz9RsfS8cObUKNz2ZeMAmdB1BKSOyJifGdDlBN6D5zFglSF0EESuPUtFJBhGWTwjnmXT5aR9Hk4Shd5SzLuiZsV8jxzGT2iMEfe-r47kJQynNwja9AjuBwbR_SYyPIkVpR0rht01qEDS2qM6e1CYcilenp84W5GclCzO0L5E92Jbuu5HQBAKNxrW5nhBWt7EH8SC7dLMuzCfcGdY9WPIAWaBw7WKsaKU_I9bq67OlIzBBhSbV1QqcsQNf15ABxvpxLbtvL9mFDQFHWEfBNLLkkADKt-c6TFbSF_7iVj3gfO5k7F9uiAQRolzABT13wmKfXJMbSks1O3szT2ohWlbns-fv6rdk2RwIFlBhOkWmjFAq-C3GFiUKTrKSOvSvw-DbWJn8pddRgjqh0jvzy1y-jW2QUkCVDPfQhwD_ApwQBWe072rfmBkEFS04xUI9Oco_Yq43LvE-b5wPFXqdYRUOZ9Z8GgxRSTpQV4APjUOoC93I2bo56GuJEXRlK_I2WC9rx3HaI5k1O0qdth2MfB9jJiZJywjffAwZEvgOeGo236BlT3Ai6P5BBAlTkdXUPLh_wOEBSBusWMgpr5tfy3TmBXFckHGNyCC09vRkz0ASFdYMZboq4_qXqw0booTgAhjXa_4BkzygUrbtmg2N3Yj95NoIUmjGWfBrFWl6TSub4RifRyZIRK0ANAQHRlVvLMB2S-rzyK0PsdSzcPZk1VJAx03b-L8W4UOghKJ-j9Fo6q31aemNiNHj6y0Gl4w5v_7hNadClcvC76q6ZepzNxSjE8ajap7uf1RV9OF7jpFQzJ8ZgRnVUzxq4mQEDEY6LlrzKylUpI1-U9iBOPDlw873zNlBErkttDbiFpHrD_gaH9Y17ymScLPSTGpJBBG0xoAab7jPExKHPUXrVFZOLiYZIy8xgDvBe_FiVfzNWM8B8HCPhg3G_76ex89LBAlfmU7xkJVgN-n2E7vZpaK-MkXWnfj80rEuwOCJy_76hugvYr5tk-PZvW2XJ6-kqQdBPydmWbdU1xSRosI1HwuRhbh_iAoKEtVt_wh-AALe0rItBfXAFlD_LIvDLZ4QkQQFluoIQAtwQoPrm5KuPcnLOjUpQzLEbnrBIWJWOe-qHxbHDiOu4GsiWnHzmIP5-q4RAeIhyNbm_zADGbZfEplaIKQcxycSKb8nxOhdYT4AvzkYcfffIqQkQCChhhe-fhQEAgkotdPofD-Buei45ZuH_9Da-g6jF8LXiHAE1NnILOkZG_ZBn2OSfUVZ8I00g6mRAsfu-yStTSl9ZG_iuO5kegPNB0YHZXV4Qy6XnFw3GrSnTxA1tKDZRDfOy23KVAv7BAxiG60u_OhKP29nxaDSnFysxlZ0EgH1Z1dKp_9Zo9GnsROJ_qRSFvGBMGUKLZqm1g4HusVBRop0Ds0PTe6OK-rs09ruXBAahmJkiKt4XPzRJm4qPpnatyfg5HEgztY3SAQHp6iSx9lHIVEuXL7pNAjwWaraZIJSmY4FF-7fdO5a0Jj64zs9AmZuJaCjE-mxxRgDi5Myv_8MRg7CidjPYZ7BxYT61qFpV1AIYDrsng43CSi4ZVhrl-9lZZkWipX_qQgEB5mMCOoeEUczBcqSBWGZvqYQGhEmTUsyvn5lakWVMAlpYTnxLzNC10OwExmdW_TdClSW22qZgIPOR1hb1JNmVPwKYWXSBt_U_pdbPYwpwpsBq2JdTJmdQI1_IF_UYCWWBAEVNn_Rt0XrWzgsxEH1CUXnRrR4coC64A0lfYmi7OBMHmaK-Qm6mgbOpxGy1KRQ_wRZM2bwtwGWwcadAinL0TQcRzipNKICt8IkUuRfZILEcfzi_yVxn_B6OwAwna0-sAQENRPgwQcuF17iR9mgoZMPU2aHoXSLEvqshH6afBK5fuYzJrD6OiR8iY4J7eJ8OJkL_a6zxpt0zhj3BYFUNr8fqYN8RaqYawgfLTlQlLTgd-GqGwPeonzTU5QB0ygmsD0EGDeChwjSAg_rbbpiO_9U6s75uG5b-BDr2ucturQl7XFOpoXwa839Cf1kPBzlgx1xAfhXOevlieSRyI9zVza5Up-a7d2K6VEuSSK4OhuDZ7lGDebIMXPg4VlSPv_cIF7wBBII0sBlmmoIW3AeVSGGTKMHDPE1XPqXHwtIbwKF1hD9qS7iK-GyJoaw20sHgLdLvxhb0RHgby3uF0iZDG0vuXF48g1zGAcfPqigFx2ZUIjhEzopIC2ZdF1ZBvrrdTlu4QQKx4LF-XKMbse1f9HL_UOXm4voC-2i7AH7JiU6IiFjgicobOORDJhADyN7kk5L598Lc67irJ2X-RiJ6XNFHMi1BetmrHsn2yv5oNV6xLcsMqS7GIDZtBhba3gcPFidNCgEGACpaGEga7_ykSxc1RhxFzhxC_dSDhOFu8BXb-5vJCV8KScQwKoLWEmm236AO8cFBEVn5hpE2m1b1IiHHOFkQUiYNT66AUTa7ldPiIJiJjDiSxVX9AxUDrp5bAHML47qBBJeEMQDFDWl4HKWlyXV_5CERlt1sxjlXq5beQzRckI7dIUbf3P1JehPO6-nJSCqrhlHftERyDgz3mK3FceNdte_5u_EgbZZOo7Dqun2wU7ysUE_zsx84sifIxsjVK2cegQN6FsumFW2fZIJV6ttlCd9DN6DWPiyQHEJ4d6aXLosBXgJ_WjYo6HO2BeWvxii_voQ2K47nE-6v3hcieR5umDbb9GhSZEchgk8zNOFsQRGOtWHvV27qJYojX5OJWQjnyEEAUbfeJ1f1jY0Vqsg0v66pzmvOWMvsw_bs6wE1xldY46hBva20GRIR8ZA7RZeBVnLB9Sexfc3ZVvl7RypOrtXexseZWHfplBs6KsPev4-BkLoHreI6N1n4pi0ltSaDXJkBAgIOnozhl4s1ux44BpY0sPpuPtnT-2f8KqUSfnBlgwIoBWrNMaPzBBWZn4k1IZ4JRSbGpMtOlb8FTaiK778bU-5YdCYTL8xQM3w_4eecIpCVGqEUStLQ1PN_AWSNOwuZwQTYu59TJXfY20N5tPLQ1oiKEq0gwqyvnLQPa-4BUViHTMIewSm5O55rZ-FHfHjN-AZv3aOrV_ivwMuEfa9shVrSJHnA8t42-hLotH3RTlCoQcey7r2bAtMbLqlqKy7Y-kECVXCrbi1AGDHRrASqAL9uqHtiGmkpoZKwJtAjknSfeUkZIAuxmQ53disAyn56ojqDbYO3t8AF-i176odpqBb4rtHYw6E-vobB57Rn-3J0fcMYW2-hFeqPcDEbYsJJCYtBA1y8vlOkUjbRdweR3OzobLsjZNvzzX3u-7cSOJh21jUv_I2imnEVrqJ73sQzS5yCQciKyhZ4fvS2FcNU2UHClDSgsrCg8kzp_ZLuAXmycw-KrYCaZe5LlC-4YkmVj5HbAQVfFbG8Owcleu4FKcfP84VT04p8yyqK9EyfnndL1DsYOATCWTNcFIpY-DZS2oZS_4FEVPVtBc_kavxq0GVK6T4y1IRZDnCyLAhXk-HvWapk4uCrK8Zx7c_AH6mmEdft0YECghFSgdkIGc7IbdpzxNjErR3334JaxuxSVCR8ciHJ71uPWEAJDaQauyPTJBMef8mCeF5oJ65BOw4cDW907f7x1qecx_zTvxTRvhNEoY5glkqYsPPcKa-peSNAp4wLXyYBBTF3VtTIEWB6X7moNOa_np_wDX4cW6bZdaQKVuBpzlZ8P-L-hHS63H3MSibafkqkgIMHR7T_EkCBACLIFqbcvjBf4ZfQm0ytgM0iSW-kQs02IstztE4l1lWagSfqpwWXgQLlv0z0_M_azQiGBrk3aQOeMjJlFEk76zjk4sPS0s8qP6vBnfCIOMHEM7J9ZX17BkRvcHcfkB57S97fdIvJ6Po-b6IP5upXasIFOaxZUlwDfrrcV1xiH-Egijk_PWY3yAEFTYNrnmnx2XC8Wu5VSYMHafE47CvaDIbX2mRjZpECPV5KKh9CH5haRa6q_jShM31COo1e8Zwnw-SpCxouQdqps1AmmnxyOqR3pwlrWldNhTbLo1gGR0t6VajxQgqYkbVBAWnOkk9Ga0b6tHgZy-SysFORQlBQYpqldaVLqoAKJ4s3JG5GqRlIV2EROuuRDcF5hlCAmDouXixNeRV8cAXyRvm_COUOCEUEAlz_f2isffManR2t5vZpui3iKrSbi1dvwQDISGhoD24ws8_JeVmGT4tHlrUAcSoIcVRDeicuV88filJWFaWqHZQx0kRjG4hYx0Z7wO5y8ifwBYu5SCZIpVptwPH5kZaErk3w5p9obRUiUVt4Nd0hERZOuyqEP2VCaAEA2sqRhrAYnPO6CBYweIw1XuZDzznh9LnVJxF_JSibt5K8LcR1DN9Av1Vyd1VvREwDZ1VlRwQSqfkgE9u5tlbPLyh0oGfKjnBIAkgEr78sZwT7tG5grn7INPqAxZ_s8eaBArf6h-pgNE7u_8v6KtmPkEYvu6N1fRYaZRQbDKkoyjrnA39O9AEqqAn7N9d5fPj6AmKKGkIG9VBOZpUmZ_HwlFL43KU_OvH8Ih20C6Rzuqs4tfvaQNIei33IWOgvVVNAwQVdS76TgK1epNca7ojRDLjTm9apjNEGM-9HUxI6X02WyflxBcJC-U-XIV292yZQlUOKsz_-p1roX6qJ88ZSzdNVBkXyeqWWEBxS_sV1G24waGmfu4p7vrq6LGAgBVYJ_YEFUYCuqctS7IkNEoPS6zoBXAAWoS7CPtgnM0wcG4obl1Nw7z3fE34SsuTEdqcwaaSAR8bjkiTg7l-T-my9QX9iEKhKs42CFc7oMmNQgqmk7p7QjC5hE_NP56ygXTxHVoTBAS2aqL-7vyDnIWNzyGB4x3l_na9B5Nrt6HvdVLI6IkfnhH-xeIc8FofRmAboc0FOxN8UoFSg4ZMCGNsCDJsvY02crol-RRSZWTzi5pGXJAvqqBYtY5lS0MlJyzHKRWaHgQZ37VEqz6vhc41otZ1P9T1xQtp9ktg_0mGtytHIcjvdTfzGC-gOX_7ssuSeXx30aMFE0zLDmENrwQH57W7IVQ6D9V6Z0bbhd1biSjbeBups0ZncczeEUOqLhOosOPytDAEAD6lrEIjl0S0ehopDbp8tXPKtH49jDRLoTon4CMhJn3vKXevlW2Ei8Hpz84CmUBpCnGzXq_6oN1PTrbCKPlzu7Q0dojK81cxNWPkBtbeVEP7ZKVzYA0YjduC29_hb3aRBBVLwHcHpV6_YxIJm_r7mKsI-OAH_Df8wJ1tIQ6Ik5EkjFk7DBUPqaSLdo6agd80jAcWlEP2JwhChzIzgE29jNzTN59MpjTZ3y-YKF2bQuNhgnKT4Ut0aiRVSAdrq5izrwQGAIEO58d0NqNCRix3twBPQWJwgL0-ti38dmZTGkrv3-9HRnudVlBmuR1Gd671mLUUSTfdrEHWg77-sfE3mtHs0XKkhL40qha5rZEbTt_gGsGJBtJzcreOXpflB37fivwEGUjoeoQGpIffFQWboZJ8ckC6GBhVFJzTzG-kUErhHY3D6yLDtcx3FN93ExpQ2azzD79Tbm4e-M4taKYGvTUGOW58exVvFnGShqCQ-mq3RdvnGT5GdcEhgSZW0lFuop9rBAPVAwg-UrY3H60kt_CyblfrcNLaquWHVW_siKpZd4MpVhpiT10MY-l-3k3i2pBqwgYnnNrHceFyZHmMsP7tyJuRRqEYJqeilMqoSEX05srt0cPRG7eaBFAWXK7G18E4iAQJsyVd-gd6HaXX-iMcjJ174FXOwaN4fs6g0_Eilj5mmuZFHieo1-9vVozXFiVxD7oPEQOjRN9cDnIPYht0n51Aofc9g0e0pecWX5B-4M4it2NU1ISY9pE7v7TVF5SVxIIEEOjpGRBvvyK0VexUg8IlmqbIEh0TlKcR_2ft5eCRuQeqDZVWyEhI9F2Ls1zHYayoF1WVbQYuThlA-4VuvkmeQZi2rAmgYAglSA78cON4eF57zgiKbCxK34YpTp3pTdUaBBm0xtO0si7HcS6n8RyDk7NfqAz-YDVPI0C3vXR5RIoD-Udf8HdVNFeqnArpIJcAsxmjpFNTZYoKhvznVKKrNbnkgxsWdgL1AY9LWymzprhEI8yWfaoq2I1R4YfrpTNKQAQBfMp_qSu1APjHtkcSmSkL_974eBnRguSMTxCPqxjUqkjU5nEECgYPZUrsao_ZGVIXuC38Zd9jCMgKSUGFY2OTVdgXmgjwg-jOgUSGHKKbB1HG8qj3TwE3hMVg4_LwLzcEGDDZ1Nz0q4m60FR-ZnJ5LjuIqirQMtcWti_kUdAtYyg5n3ysBYuYJQVb-jucR3kGAsVxobMqWrdAU0GVkzovJP2nRBuDPEBUDxKXZO-iHWbMkvaTYTruz329Aj6dr7GwBAmqbBghhnKBwQpRDHyId-fXfsQCVrgshT0CoOU-JrvdE05QSyr3L2HXp9tS17MlIhFzL0uLQ0XsdaKbrSwJ1IyL6izKv734ivfSlzLiKilkgZ-3IBr_RLz4Mr4e1alxSAQWVQTM-l9oegft7X09QqSAZ1ztFmLzKboSTu6_O0zOPdXQ2sGoqQqJNWg_4kfWm6sU1bz1oklYBaLEV6lGph9GSxwf0DG_j3rzAtBqxhZkCeBtk6pur53xb8J4VE-q4lAEGD-SWIjZZPMJtRrtcarK5efjYC5tOIrogQmmqHWzPvz0D_yKRnVSWA6Rh1QeOX8wBrq4jDk6eDJJwMM28HVu5oLpi6s6hJsU-EWOxXiA_j-ygxhEtrgJkAZx8EMopjFwBAqjRlNs1IvCbpznbOgEk1ofh4XpoMTIZqQmf-VPsXirWyJ_qOvDzI1x-967N_tvrRlbL-oC1FaOlQXlnOxc18arrQQ8aJ4RaVr06l4zwkQGsOyz8QfenD5TfDCV2_qhxgQEqsknmhc-psCwkg5pjreAbvB0PouH9TY4n5jj1qvhnC-P68hZZO6lIAsADTzrVLEQRD_3I5arUAqxAzm6Gm3ghES-QUyiPzifIp-jOLAKi4a-m4iTLo2Ob154gjthAngEA58zYmlt2a9vd8-_FrgaQAvLNv2i5Uhm8_4hQlN-2av582RelN-B6AUuIh_SMk4yDb1MVXOsdOOm2akMayZT035kldKtXcYasur8jOUkE7W5hL2esSDhB6eYOz1o99aCBA67QQmnbvpmvKCDiS97rfaCZqr4U0DCy9e0ylMcBqDlX-K0IxhDNhiiqRFMYbatqBGCGcwNAc7B6c1YYar6fVkqCA7jYFZZyYt3yCND6JkM2BTfpAiakknT03vY2P6-WgQOGRCN4mQttSdsajcySvOyW2ohNP_nwEHD2lEjzsgOI8jjh7WaJf8-8Oh-X_zNgnMJUfvMgwVfHFNOIAPX_zj1y2tVJMpAnD9eSUBsSG90ghPI0hS-IKPnxppjsWrMD28EGPCKVlP22usiIj8Y2sZeGKCyX7xm4GCI3TBDqI_tZ0MNZdLVzIv3CbQND9H7xyoCB_CIE6G9nQMfirWanfFwhgOKxWDUL5YjAPnn_FeT4J601JO3Bf3gNCbMSzAPwdkMBAkeNIIko2D1zcVyxiluQEsv88fDOxLgV3MjuXVG6mmc34E8bZUJwz3UrUBl91CMEAzfEPwxc_AEH9oaPJN_hANs5rwQMi8TIHPwETYV_VYIJKKon9CO3xKTZym0GJlrxgQVr2UhK2y7r_jnJgPromEPEYZTwqWC2kcXNJ41WLgrW9WQKa8VBSDTd7SQmj3r35oRVTI6U_3_d0OOqMHR8gitL93r9-xmIx9WljoJwuyPoS7BMjQssv_hK7MFXR8tXeIEBBxHxkVMUNPn5q_TWsjtcVYbQ8iGJCFZHBXkDljFQXnvvktOr9xx28qN-6fgNDmmA6KU9lKSXqypZ10DUL0Y-BWyubg0h3xLirUdxXHiZQnkxp5_NdWwRc_0GO1ioJNHBBjGRtlYTJlAMKux4uXiI1gSDuJ-bBUO43BAg012ryQxUsaYowT7Db_j0skDXMfO_hJu6tgnJF-oGjdH0OdHkoOdWsOZ3vINMY7U0EfYxqyT5fjT4BV54DKY0axWEpB8ywQMTD8k5Arj-DQCo-RziCOE3ISGh8ocX5AB8CX9zK15cZ1VjvLa1H_pS_X-pNpWqdQZB7mdFK6ZTWwC2EOXwnaghzLTaFWr39TLB7fSEETalvxPelrwtW6RzwUeXDSGboYEDBopTOJ4gGFGy3kj03mOE6eqZ8vKCwGE44S63NIgJWy6M5m3fgYJC-k1rH5CvWDFAlMtqrarDZbZi_R3ENGATY222Tun66K4cVEi1ytWm_566aJD8G_yvO5v_K829cE4"},"purposes":["assertionMethod","authentication","keyAgreement","capabilityInvocation","capabilityDelegation"]} "#; diff --git a/trustchain-ion/src/resolver.rs b/trustchain-ion/src/resolver.rs index c2d1cff3..3ff9dd59 100644 --- a/trustchain-ion/src/resolver.rs +++ b/trustchain-ion/src/resolver.rs @@ -313,7 +313,7 @@ fn ipfs_key_endpoints(doc: &Document) -> Vec { #[cfg(test)] mod tests { - use crate::data::{TEST_DOCUMENT_IPFS_KEY, TEST_RSS_VM_JSON}; + use crate::data::{TEST_DOCUMENT_IPFS_KEY, TEST_IPFS_KEY_VM_JSON}; use super::*; @@ -348,7 +348,7 @@ mod tests { #[test] fn test_verification_method_deserialisation() { - let mut json: serde_json::Value = serde_json::from_str(TEST_RSS_VM_JSON).unwrap(); + let mut json: serde_json::Value = serde_json::from_str(TEST_IPFS_KEY_VM_JSON).unwrap(); json.as_object_mut() .ok_or(ResolverError::FailedToConvertToTrustchain(String::from( diff --git a/trustchain-ion/src/utils.rs b/trustchain-ion/src/utils.rs index ead01dfd..4676864c 100644 --- a/trustchain-ion/src/utils.rs +++ b/trustchain-ion/src/utils.rs @@ -331,7 +331,7 @@ pub fn time_at_block_height( /// Returns the unix timestamp at 00h:00m:00s UTC on the given date. fn first_unixtime_on(date: NaiveDate) -> i64 { let datetime = date.and_hms_opt(0, 0, 0).unwrap(); - datetime.timestamp() + datetime.and_utc().timestamp() } /// Returns the height of the last block mined before the given date. From 46048582a91893f21b1f5e734fe99523ba50551e Mon Sep 17 00:00:00 2001 From: Sam Greenbury Date: Mon, 13 May 2024 17:21:45 +0100 Subject: [PATCH 5/5] Remove commented out code and obsolete variant --- trustchain-api/src/api.rs | 12 ------------ trustchain-ffi/src/mobile.rs | 28 ---------------------------- 2 files changed, 40 deletions(-) diff --git a/trustchain-api/src/api.rs b/trustchain-api/src/api.rs index 8be65c01..1c659621 100644 --- a/trustchain-api/src/api.rs +++ b/trustchain-api/src/api.rs @@ -440,16 +440,4 @@ mod tests { .await .unwrap() } - - // #[test] - // fn get_key_entry() { - // use ps_sig::keys::Params; - // use ssi::jwk::rss::generate_keys_jwk; - // use ssi::jwk::JWK; - - // let key: JWK = generate_keys_jwk(64, &Params::new("test".to_string().as_bytes())).unwrap(); - // println!("{}", serde_json::to_string_pretty(&key).unwrap()); - // let entry: PublicKeyEntry = key.try_into().unwrap(); - // println!("{}", serde_json::to_string_pretty(&entry).unwrap()); - // } } diff --git a/trustchain-ffi/src/mobile.rs b/trustchain-ffi/src/mobile.rs index 9b8b0a67..a86b178b 100644 --- a/trustchain-ffi/src/mobile.rs +++ b/trustchain-ffi/src/mobile.rs @@ -51,8 +51,6 @@ pub enum FFIMobileError { FailedToVerifyPresentation(PresentationError), #[error("Failed to make create operation from mnemonic: {0}.")] FailedCreateOperation(String), - #[error("Failed to redact credential fields with RSS selective disclosure: {0}.")] - FailedToRedactCredential(ssi::ldp::Error), } /// Checks time on proof is valid. @@ -155,32 +153,6 @@ pub fn vc_verify_credential(credential: String, opts: String) -> Result }) } -// /// Generate a selectivley disclosed Credential with a new RSS proof derived from the original -// /// credential and a masked copy of the credential subject. -// pub fn vc_redact( -// original_credential: String, -// credential_subject_mask: String, -// opts: String, -// ) -> Result { -// let mobile_opts: FFIConfig = opts.parse()?; -// let endpoint_opts = mobile_opts.endpoint()?; -// let mut o_cred: Credential = serde_json::from_str(&original_credential)?; -// let cred_sub: CredentialSubject = serde_json::from_str(&credential_subject_mask)?; -// let mut masked_copy = o_cred.clone(); -// masked_copy.credential_subject = OneOrMany::One(cred_sub); -// let resolver = -// trustchain_resolver_light_client(&endpoint_opts.trustchain_endpoint().to_address()); - -// let rt = Runtime::new().unwrap(); -// rt.block_on(async { -// o_cred -// .rss_redact(masked_copy, &resolver, &mut ContextLoader::default()) -// .await -// }) -// .map_err(FFIMobileError::FailedToRedactCredential)?; -// Ok(serde_json::to_string_pretty(&o_cred).map_err(FFIMobileError::FailedToSerialize)?) -// } - /// Issues a verifiable presentation. Analogous with [didkit](https://docs.rs/didkit/latest/didkit/c/fn.didkit_vc_issue_presentation.html). pub fn vp_issue_presentation( presentation: String,