diff --git a/trustchain-api/src/api.rs b/trustchain-api/src/api.rs index 2a1304b5..4a0297cd 100644 --- a/trustchain-api/src/api.rs +++ b/trustchain-api/src/api.rs @@ -20,7 +20,7 @@ use trustchain_core::{ vp::PresentationError, }; use trustchain_ion::{ - attest::attest_operation, attestor::IONAttestor, create::create_operation, get_ion_resolver, + attest::attest_operation, attestor::IONAttestor, create::create_operation, trustchain_resolver, }; /// API for Trustchain CLI DID functionality. @@ -146,7 +146,7 @@ pub trait TrustchainVPAPI { linked_data_proof_options: Option, context_loader: &mut ContextLoader, ) -> Result { - let resolver = get_ion_resolver(endpoint); + let resolver = trustchain_resolver(endpoint); let attestor = IONAttestor::new(did); Ok(attestor .sign_presentation( @@ -258,8 +258,8 @@ mod tests { use trustchain_core::vp::PresentationError; use trustchain_core::{holder::Holder, issuer::Issuer}; use trustchain_ion::attestor::IONAttestor; - use trustchain_ion::get_ion_resolver; - use trustchain_ion::verifier::IONVerifier; + use trustchain_ion::trustchain_resolver; + use trustchain_ion::verifier::TrustchainVerifier; // The root event time of DID documents in `trustchain-ion/src/data.rs` used for unit tests and the test below. const ROOT_EVENT_TIME_1: u64 = 1666265405; @@ -318,13 +318,13 @@ mod tests { let issuer_did = "did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A"; // root+1 let issuer = IONAttestor::new(issuer_did); let mut vc_with_proof = signed_credential(issuer).await; - let resolver = get_ion_resolver("http://localhost:3000/"); + let resolver = trustchain_resolver("http://localhost:3000/"); let mut context_loader = ContextLoader::default(); let res = TrustchainAPI::verify_credential( &vc_with_proof, None, ROOT_EVENT_TIME_1, - &IONVerifier::new(resolver), + &TrustchainVerifier::new(resolver), &mut context_loader, ) .await; @@ -334,12 +334,12 @@ mod tests { vc_with_proof.expiration_date = Some(VCDateTime::try_from(now_ns()).unwrap()); // Verify: expect no warnings and a signature error as VC has changed - let resolver = get_ion_resolver("http://localhost:3000/"); + let resolver = trustchain_resolver("http://localhost:3000/"); let res = TrustchainAPI::verify_credential( &vc_with_proof, None, ROOT_EVENT_TIME_1, - &IONVerifier::new(resolver), + &TrustchainVerifier::new(resolver), &mut context_loader, ) .await; @@ -359,7 +359,7 @@ mod tests { // DID with RSS verification method let issuer_did_suffix = "EiDSE2lEM65nYrEqVvQO5C3scYhkv1KmZzq0S0iZmNKf1Q"; - let resolver = get_ion_resolver("http://localhost:3000/"); + 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); @@ -407,7 +407,7 @@ mod tests { &signed_vc, None, 1697213008, - &IONVerifier::new(resolver), + &TrustchainVerifier::new(resolver), &mut context_loader, ) .await; @@ -425,7 +425,7 @@ mod tests { let holder = IONAttestor::new(holder_did); let vc_with_proof = signed_credential(issuer).await; - let resolver = get_ion_resolver("http://localhost:3000/"); + let resolver = trustchain_resolver("http://localhost:3000/"); let mut context_loader = ContextLoader::default(); // let vc: Credential = serde_json::from_str(TEST_UNSIGNED_VC).unwrap(); @@ -482,7 +482,7 @@ mod tests { &presentation, None, ROOT_EVENT_TIME_1, - &IONVerifier::new(resolver), + &TrustchainVerifier::new(resolver), &mut context_loader, ) .await; @@ -499,7 +499,7 @@ mod tests { let issuer = IONAttestor::new(issuer_did); let vc_with_proof = signed_credential(issuer).await; - let resolver = get_ion_resolver("http://localhost:3000/"); + let resolver = trustchain_resolver("http://localhost:3000/"); let presentation = Presentation { verifiable_credential: Some(OneOrMany::Many(vec![CredentialOrJWT::Credential( vc_with_proof, @@ -513,7 +513,7 @@ mod tests { &presentation, None, ROOT_EVENT_TIME_1, - &IONVerifier::new(resolver), + &TrustchainVerifier::new(resolver), &mut ContextLoader::default() ) .await, @@ -523,7 +523,7 @@ mod tests { // Helper function to create a signed credential given an attesor. async fn signed_credential(attestor: IONAttestor) -> Credential { - let resolver = get_ion_resolver("http://localhost:3000/"); + let resolver = trustchain_resolver("http://localhost:3000/"); let vc: Credential = serde_json::from_str(TEST_UNSIGNED_VC).unwrap(); attestor .sign(&vc, None, None, &resolver, &mut ContextLoader::default()) diff --git a/trustchain-cli/src/bin/main.rs b/trustchain-cli/src/bin/main.rs index 6dd22e0c..4f788a95 100644 --- a/trustchain-cli/src/bin/main.rs +++ b/trustchain-cli/src/bin/main.rs @@ -15,8 +15,8 @@ use trustchain_core::{vc::CredentialError, verifier::Verifier}; use trustchain_ion::{ attest::attest_operation, create::{create_operation, create_operation_mnemonic}, - get_ion_resolver, - verifier::IONVerifier, + trustchain_resolver, + verifier::TrustchainVerifier, }; fn cli() -> Command { @@ -89,7 +89,7 @@ fn cli() -> Command { async fn main() -> Result<(), Box> { let matches = cli().get_matches(); let endpoint = cli_config().ion_endpoint.to_address(); - let verifier = IONVerifier::new(get_ion_resolver(&endpoint)); + let verifier = TrustchainVerifier::new(trustchain_resolver(&endpoint)); let resolver = verifier.resolver(); let mut context_loader = ContextLoader::default(); match matches.subcommand() { @@ -170,7 +170,7 @@ async fn main() -> Result<(), Box> { } } Some(("vc", sub_matches)) => { - let verifier = IONVerifier::new(get_ion_resolver(&endpoint)); + let verifier = TrustchainVerifier::new(trustchain_resolver(&endpoint)); let resolver = verifier.resolver(); match sub_matches.subcommand() { Some(("sign", sub_matches)) => { diff --git a/trustchain-core/src/key_manager.rs b/trustchain-core/src/key_manager.rs index acf5a7c3..3eec73a4 100644 --- a/trustchain-core/src/key_manager.rs +++ b/trustchain-core/src/key_manager.rs @@ -9,7 +9,6 @@ use std::path::{Path, PathBuf}; use thiserror::Error; /// An error relating to Trustchain key management. -// #[derive(Error, Debug, PartialEq, Eq, PartialOrd, Ord)] #[derive(Error, Debug)] pub enum KeyManagerError { /// Key does not exist. diff --git a/trustchain-core/src/resolver.rs b/trustchain-core/src/resolver.rs index 350178ef..97a8c6e8 100644 --- a/trustchain-core/src/resolver.rs +++ b/trustchain-core/src/resolver.rs @@ -110,8 +110,6 @@ fn get_from_proof_service<'a>(proof_service: &'a Service, key: &str) -> Option<& /// Adds a proof from a DID Document to DocumentMetadata. fn add_proof(doc: &Document, mut doc_meta: DocumentMetadata) -> DocumentMetadata { - // Check if the Trustchain proof service exists in document - // Get proof service let proof_service = get_proof_service(doc); @@ -165,10 +163,6 @@ fn transform_doc(doc: &Document, controller_did: &str) -> Document { // Clone the passed DID document. let doc_clone = doc.clone(); - // Duplication? - // // Check if the Trustchain proof service alreday exists in the document. - // let doc_clone = self.remove_proof_service(doc_clone); - // Add controller let doc_clone = add_controller(doc_clone, controller_did).expect("Controller already present in document."); @@ -212,7 +206,7 @@ fn transform_as_result( // Return tuple Ok((res_meta, doc, doc_meta)) } else { - // TODO: If proof service is not present or multiple, just return Ok for now. + // If proof service is not present, return Ok. Ok((sidetree_res_meta, sidetree_doc, sidetree_doc_meta)) } } @@ -299,7 +293,7 @@ pub trait TrustchainResolver: DIDResolver + AsDIDResolver { Err(ResolverError::FailedToConvertToTrustchain( did_res_meta_error .to_owned() - .rsplit(":") + .rsplit(':') .next() .unwrap_or("") .to_owned(), @@ -338,8 +332,6 @@ pub trait TrustchainResolver: DIDResolver + AsDIDResolver { .resolve(did, &ResolutionInputMetadata::default()) .await; } - // let ion_resolver = self.wrapped_resolver; - // let resolved = ion_resolver.resolve(did, input_metadata).await; let resolved = self.wrapped_resolver().resolve(did, input_metadata).await; @@ -436,7 +428,6 @@ mod tests { assert!(did_doc.controller.is_some()); // Construct a Resolver instance. - // let resolver = Resolver::new(get_http_resolver()); // Attempt to add the controller. let result = add_controller(did_doc, controller_did); diff --git a/trustchain-ffi/src/mobile.rs b/trustchain-ffi/src/mobile.rs index 1ca52b00..a86b178b 100644 --- a/trustchain-ffi/src/mobile.rs +++ b/trustchain-ffi/src/mobile.rs @@ -22,8 +22,8 @@ use trustchain_core::{ }; use trustchain_ion::{ create::{mnemonic_to_create_and_keys, OperationDID}, - get_ion_resolver, - verifier::IONVerifier, + trustchain_resolver_light_client, + verifier::TrustchainVerifier, }; /// A speicfic error for FFI mobile making handling easier. @@ -81,7 +81,8 @@ pub fn greet() -> String { pub fn did_resolve(did: String, opts: String) -> Result { let mobile_opts: FFIConfig = opts.parse()?; let endpoint_opts = mobile_opts.endpoint()?; - let resolver = get_ion_resolver(&endpoint_opts.trustchain_endpoint().to_address()); + let resolver = + trustchain_resolver_light_client(&endpoint_opts.trustchain_endpoint().to_address()); let rt = Runtime::new().unwrap(); rt.block_on(async { Ok(TrustchainAPI::resolve(&did, &resolver) @@ -101,8 +102,8 @@ pub fn did_verify(did: String, opts: String) -> Result { let root_event_time = trustchain_opts.root_event_time; let rt = Runtime::new().unwrap(); rt.block_on(async { - let verifier = IONVerifier::with_endpoint( - get_ion_resolver(&endpoint_opts.trustchain_endpoint().to_address()), + let verifier = TrustchainVerifier::with_endpoint( + trustchain_resolver_light_client(&endpoint_opts.trustchain_endpoint().to_address()), endpoint_opts.trustchain_endpoint().to_address(), ); Ok(TrustchainAPI::verify(&did, root_event_time, &verifier) @@ -123,8 +124,8 @@ pub fn vc_verify_credential(credential: String, opts: String) -> Result let credential: Credential = serde_json::from_str(&credential)?; let rt = Runtime::new().unwrap(); rt.block_on(async { - let verifier = IONVerifier::with_endpoint( - get_ion_resolver(&endpoint_opts.trustchain_endpoint().to_address()), + let verifier = TrustchainVerifier::with_endpoint( + trustchain_resolver_light_client(&endpoint_opts.trustchain_endpoint().to_address()), endpoint_opts.trustchain_endpoint().to_address(), ); let root_event_time = trustchain_opts.root_event_time; @@ -172,7 +173,8 @@ pub fn vp_issue_presentation( let mut presentation: Presentation = serde_json::from_str(&presentation).map_err(FFIMobileError::FailedToDeserialize)?; let jwk: JWK = serde_json::from_str(&jwk_json)?; - let resolver = get_ion_resolver(&endpoint_opts.trustchain_endpoint().to_address()); + let resolver = + trustchain_resolver_light_client(&endpoint_opts.trustchain_endpoint().to_address()); let rt = Runtime::new().unwrap(); let proof = rt .block_on(async { @@ -205,8 +207,8 @@ pub fn vp_verify_presentation(presentation: String, opts: String) -> Result<()> // Verify presentation let rt = Runtime::new().unwrap(); rt.block_on(async { - let verifier = IONVerifier::with_endpoint( - get_ion_resolver(&endpoint_opts.trustchain_endpoint().to_address()), + let verifier = TrustchainVerifier::with_endpoint( + trustchain_resolver_light_client(&endpoint_opts.trustchain_endpoint().to_address()), endpoint_opts.trustchain_endpoint().to_address(), ); let root_event_time = trustchain_opts.root_event_time; diff --git a/trustchain-http/src/issuer.rs b/trustchain-http/src/issuer.rs index f9a42a6e..2cbdacea 100644 --- a/trustchain-http/src/issuer.rs +++ b/trustchain-http/src/issuer.rs @@ -248,7 +248,7 @@ mod tests { }; use std::{collections::HashMap, sync::Arc}; use trustchain_core::{utils::canonicalize, verifier::Verifier}; - use trustchain_ion::{get_ion_resolver, verifier::IONVerifier}; + use trustchain_ion::{trustchain_resolver, verifier::TrustchainVerifier}; lazy_static! { /// Lazy static reference to core configuration loaded from `trustchain_config.toml`. @@ -361,7 +361,7 @@ mod tests { } // Test signature - let verifier = IONVerifier::new(get_ion_resolver("http://localhost:3000/")); + let verifier = TrustchainVerifier::new(trustchain_resolver("http://localhost:3000/")); let verify_credential_result = credential .verify( None, diff --git a/trustchain-http/src/resolver.rs b/trustchain-http/src/resolver.rs index cc92c313..65d8d9dc 100644 --- a/trustchain-http/src/resolver.rs +++ b/trustchain-http/src/resolver.rs @@ -16,7 +16,7 @@ use std::sync::Arc; use trustchain_core::chain::{Chain, DIDChain}; use trustchain_core::resolver::TrustchainResolver; use trustchain_core::verifier::{Timestamp, Verifier, VerifierError}; -use trustchain_ion::verifier::{IONVerifier, VerificationBundle}; +use trustchain_ion::verifier::{TrustchainVerifier, VerificationBundle}; /// A HTTP API for resolving DID documents, chains, and verification bundles. #[async_trait] @@ -30,14 +30,14 @@ pub trait TrustchainHTTP { /// Resolves a DID chain. async fn resolve_chain( did: &str, - verifier: &IONVerifier, + verifier: &TrustchainVerifier, root_event_time: Timestamp, ) -> Result; /// Resolves a DID verification bundle. async fn resolve_bundle( did: &str, - verifier: &IONVerifier, + verifier: &TrustchainVerifier, ) -> Result; } @@ -63,7 +63,7 @@ impl TrustchainHTTP for TrustchainHTTPHandler { async fn resolve_chain( did: &str, - verifier: &IONVerifier, + verifier: &TrustchainVerifier, root_event_time: Timestamp, ) -> Result { debug!("Verifying..."); @@ -81,7 +81,7 @@ impl TrustchainHTTP for TrustchainHTTPHandler { async fn resolve_bundle( did: &str, - verifier: &IONVerifier, + verifier: &TrustchainVerifier, ) -> Result { let bundle = verifier.verification_bundle(did).await?; Ok((*bundle).clone()) @@ -175,10 +175,10 @@ mod tests { use std::net::TcpListener; use tower::make::Shared; use trustchain_core::utils::canonicalize_str; - use trustchain_ion::get_ion_resolver; - 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"}],"assertionMethod":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI"],"authentication":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI"],"capabilityDelegation":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI"],"capabilityInvocation":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI"],"controller":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A","id":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","keyAgreement":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI"],"service":[{"id":"#TrustchainID","serviceEndpoint":"https://identity.foundation/ion/trustchain-root-plus-2","type":"Identity"}],"verificationMethod":[{"controller":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","id":"#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI","publicKeyJwk":{"crv":"secp256k1","kty":"EC","x":"0nnR-pz2EZGfb7E1qfuHhnDR824HhBioxz4E-EBMnM4","y":"rWqDVJ3h16RT1N-Us7H7xRxvbC0UlMMQQgxmXOXd4bY"},"type":"JsonWebSignature2020"}]},"didDocumentMetadata":{"canonicalId":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","method":{"published":true,"recoveryCommitment":"EiCy4pW16uB7H-ijA6V6jO6ddWfGCwqNcDSJpdv_USzoRA","updateCommitment":"EiAsmJrz7BysD9na9SMGyZ9RjpKIVweh_AFG_2Bs-2Okkg"},"proof":{"id":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A","proofValue":"eyJhbGciOiJFUzI1NksifQ.IkVpQTNtT25QRklDbTdyc2ljVjRIaFMtNjhrT21xMndqa2tlMEtkRnkzQWlWZlEi.Fxlbm8osH2O5KOQ9sS21bypT_WoWxVD8toCU4baBnLk_gOxiOy_n3cMFMVANJ8usPrKAfRFeC27ATTkWBYZzuw","type":"JsonWebSignature2020"}}}"##; - 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,"recoveryCommitment":"EiCymv17OGBAs7eLmm4BIXDCQBVhdOUAX5QdpIrN4SDE5w","updateCommitment":"EiDVRETvZD9iSUnou-HUAz5Ymk_F3tpyzg7FG1jdRG-ZRg"},"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"}]},"didDocumentMetadata":{"method":{"updateCommitment":"EiA0-GpdeoAa4v0-K4YCHoNTjAPsoroDy7pleDIc4a3_QQ","recoveryCommitment":"EiClOaWycGv1m-QejUjB0L18G6DVFVeTQCZCuTRrmzCBQg","published":true},"canonicalId":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A","proof":{"id":"did:ion:test:EiCClfEdkTv_aM3UnBBhlOV89LlGhpQAbfeZLFdFxVFkEg","type":"JsonWebSignature2020","proofValue":"eyJhbGciOiJFUzI1NksifQ.IkVpQXM5dkx2SmdaNkFHMk5XbUFmTnBrbl9EMlNSSUFSa2tCWE9kajZpMk84Umci.awNd-_O1N1ycZ6i_BxeLGV14ok51Ii2x9f1FBBCflyAWw773sqiHvQRGHIMBebKMnzbxVybFu2qUEPWUuRAC9g"}}},{"@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"}}],"authentication":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI"],"assertionMethod":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI"],"keyAgreement":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI"],"capabilityInvocation":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI"],"capabilityDelegation":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI"],"service":[{"id":"#TrustchainID","type":"Identity","serviceEndpoint":"https://identity.foundation/ion/trustchain-root-plus-2"}]},"didDocumentMetadata":{"proof":{"proofValue":"eyJhbGciOiJFUzI1NksifQ.IkVpQTNtT25QRklDbTdyc2ljVjRIaFMtNjhrT21xMndqa2tlMEtkRnkzQWlWZlEi.Fxlbm8osH2O5KOQ9sS21bypT_WoWxVD8toCU4baBnLk_gOxiOy_n3cMFMVANJ8usPrKAfRFeC27ATTkWBYZzuw","type":"JsonWebSignature2020","id":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A"},"method":{"updateCommitment":"EiAsmJrz7BysD9na9SMGyZ9RjpKIVweh_AFG_2Bs-2Okkg","recoveryCommitment":"EiCy4pW16uB7H-ijA6V6jO6ddWfGCwqNcDSJpdv_USzoRA","published":true},"canonicalId":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q"}}]}"##; - 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"}}],"authentication":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI"],"assertionMethod":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI"],"keyAgreement":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI"],"capabilityInvocation":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI"],"capabilityDelegation":["#ePyXsaNza8buW6gNXaoGZ07LMTxgLC9K7cbaIjIizTI"],"service":[{"id":"#TrustchainID","type":"Identity","serviceEndpoint":"https://identity.foundation/ion/trustchain-root-plus-2"}]},"did_doc_meta":{"method":{"published":true,"updateCommitment":"EiAsmJrz7BysD9na9SMGyZ9RjpKIVweh_AFG_2Bs-2Okkg","recoveryCommitment":"EiCy4pW16uB7H-ijA6V6jO6ddWfGCwqNcDSJpdv_USzoRA"},"canonicalId":"did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q","proof":{"proofValue":"eyJhbGciOiJFUzI1NksifQ.IkVpQTNtT25QRklDbTdyc2ljVjRIaFMtNjhrT21xMndqa2tlMEtkRnkzQWlWZlEi.Fxlbm8osH2O5KOQ9sS21bypT_WoWxVD8toCU4baBnLk_gOxiOy_n3cMFMVANJ8usPrKAfRFeC27ATTkWBYZzuw","id":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A","type":"JsonWebSignature2020"}},"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]}"##; + use trustchain_ion::trustchain_resolver_light_client; + 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"}}}"##; + 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":{"updateCommitment":"EiDVRETvZD9iSUnou-HUAz5Ymk_F3tpyzg7FG1jdRG-ZRg","published":true,"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"}]},"didDocumentMetadata":{"proof":{"type":"JsonWebSignature2020","id":"did:ion:test:EiCClfEdkTv_aM3UnBBhlOV89LlGhpQAbfeZLFdFxVFkEg","proofValue":"eyJhbGciOiJFUzI1NksifQ.IkVpQXM5dkx2SmdaNkFHMk5XbUFmTnBrbl9EMlNSSUFSa2tCWE9kajZpMk84Umci.awNd-_O1N1ycZ6i_BxeLGV14ok51Ii2x9f1FBBCflyAWw773sqiHvQRGHIMBebKMnzbxVybFu2qUEPWUuRAC9g"},"method":{"published":true,"recoveryCommitment":"EiClOaWycGv1m-QejUjB0L18G6DVFVeTQCZCuTRrmzCBQg","updateCommitment":"EiA0-GpdeoAa4v0-K4YCHoNTjAPsoroDy7pleDIc4a3_QQ"},"canonicalId":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A"}},{"@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","proof":{"type":"JsonWebSignature2020","proofValue":"eyJhbGciOiJFUzI1NksifQ.IkVpQV91YUV2QjctR0FyRTlkeERuMk1rclRUa0t0VXN4eGJPc1NESzhwQjl0ZWci.X94wTgzsovLEAXU1CG5M0Gqs6Gu9oHklr4Zn7aEbrdtOI_WCSCrWJuYomkcdeF8X5dV_ApZ6Gh08pPcV2VSClQ","id":"did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A"},"method":{"published":true,"recoveryCommitment":"EiCy4pW16uB7H-ijA6V6jO6ddWfGCwqNcDSJpdv_USzoRA","updateCommitment":"EiB8B_LS_O3NWo2P8fSuRwS32GODaXoLREZHdqpg6x86yA"}}}]}"##; + 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]}"##; #[tokio::test] #[ignore = "requires TRUSTCHAIN_DATA and TRUSTCHAIN_CONFIG environment variables"] @@ -293,9 +293,10 @@ mod tests { }); // Make a verifier instance and fetch bundle from server bundle endpoint - let verifier = IONVerifier::with_endpoint( - get_ion_resolver("http://localhost:3000/"), - format!("http://127.0.0.1:{}/", port), + let trustchain_endpoint = format!("http://127.0.0.1:{}/", port); + let verifier = TrustchainVerifier::with_endpoint( + trustchain_resolver_light_client(&trustchain_endpoint), + trustchain_endpoint, ); let did = "did:ion:test:EiBcLZcELCKKtmun_CUImSlb2wcxK5eM8YXSq3MrqNe5wA"; // Check verification diff --git a/trustchain-http/src/state.rs b/trustchain-http/src/state.rs index a3ff59d5..a25b7c24 100644 --- a/trustchain-http/src/state.rs +++ b/trustchain-http/src/state.rs @@ -1,19 +1,25 @@ use crate::root::RootCandidatesResult; use crate::{config::HTTPConfig, verifier::PresentationRequest}; use chrono::NaiveDate; +use did_ion::sidetree::HTTPSidetreeDIDResolver; +use ssi::did_resolve::DIDResolver; use ssi::vc::Credential; use std::collections::HashMap; use std::sync::RwLock; use trustchain_core::TRUSTCHAIN_DATA; -use trustchain_ion::resolver::Resolver; -use trustchain_ion::{get_ion_resolver, verifier::IONVerifier, IONResolver}; +use trustchain_ion::ion::IONTest as ION; +use trustchain_ion::trustchain_resolver; +use trustchain_ion::verifier::TrustchainVerifier; const DEFAULT_VERIFIER_ENDPOINT: &str = "http://localhost:3000/"; /// A shared app state for handlers. -pub struct AppState { +pub struct AppState> +where + T: DIDResolver + Send + Sync, +{ pub config: HTTPConfig, - pub verifier: IONVerifier, + pub verifier: TrustchainVerifier, pub credentials: HashMap, pub root_candidates: RwLock>, pub presentation_requests: HashMap, @@ -21,7 +27,7 @@ pub struct AppState { impl AppState { pub fn new(config: HTTPConfig) -> Self { - let verifier = IONVerifier::new(Resolver::new(get_ion_resolver(DEFAULT_VERIFIER_ENDPOINT))); + let verifier = TrustchainVerifier::new(trustchain_resolver(DEFAULT_VERIFIER_ENDPOINT)); let path = std::env::var(TRUSTCHAIN_DATA).expect("TRUSTCHAIN_DATA env not set."); let credentials: HashMap = serde_json::from_reader( std::fs::read(std::path::Path::new(&path).join("credentials/offers/cache.json")) @@ -51,7 +57,7 @@ impl AppState { credentials: HashMap, presentation_requests: HashMap, ) -> Self { - let verifier = IONVerifier::new(Resolver::new(get_ion_resolver(DEFAULT_VERIFIER_ENDPOINT))); + let verifier = TrustchainVerifier::new(trustchain_resolver(DEFAULT_VERIFIER_ENDPOINT)); let root_candidates = RwLock::new(HashMap::new()); Self { config, diff --git a/trustchain-http/src/verifier.rs b/trustchain-http/src/verifier.rs index e9e0991e..f369963c 100644 --- a/trustchain-http/src/verifier.rs +++ b/trustchain-http/src/verifier.rs @@ -18,7 +18,7 @@ use std::sync::Arc; use trustchain_api::api::TrustchainVPAPI; use trustchain_api::TrustchainAPI; use trustchain_core::verifier::{Timestamp, Verifier}; -use trustchain_ion::verifier::IONVerifier; +use trustchain_ion::verifier::TrustchainVerifier; /// A type for presentation requests. See [VP request spec](https://w3c-ccg.github.io/vp-request-spec/) /// for further details. @@ -32,7 +32,7 @@ pub trait TrustchainVerifierHTTP { async fn verify_presentation( presentation: &Presentation, root_event_time: Timestamp, - verifier: &IONVerifier, + verifier: &TrustchainVerifier, ) -> Result<(), TrustchainHTTPError> { Ok(TrustchainAPI::verify_presentation( presentation, @@ -48,7 +48,7 @@ pub trait TrustchainVerifierHTTP { async fn verify_credential( credential: &Credential, root_event_time: Timestamp, - verifier: &IONVerifier, + verifier: &TrustchainVerifier, ) -> Result<(), TrustchainHTTPError> { let verify_credential_result = credential .verify( diff --git a/trustchain-ion/src/attest.rs b/trustchain-ion/src/attest.rs index 1d9e312a..ddeda4e6 100644 --- a/trustchain-ion/src/attest.rs +++ b/trustchain-ion/src/attest.rs @@ -13,7 +13,7 @@ use trustchain_core::utils::get_operations_path; use trustchain_core::TRUSTCHAIN_PROOF_SERVICE_ID_VALUE; use crate::controller::IONController; -use crate::get_ion_resolver; +use crate::trustchain_resolver; // Function to resolve a controlled DID, attest to its contents and perform an update // operation on the controlled DID to add the attestation proof within a service endpoint. @@ -32,7 +32,7 @@ pub async fn attest_operation( // 1.2. Resolve controlled_did document with Trustchain resolver // Construct a Trustchain Resolver from a Sidetree (ION) DIDMethod. - let resolver = get_ion_resolver("http://localhost:3000/"); + let resolver = trustchain_resolver("http://localhost:3000/"); // Extract resolution items let (_, doc, doc_meta) = match resolver.resolve_as_result(controlled_did).await { diff --git a/trustchain-ion/src/attestor.rs b/trustchain-ion/src/attestor.rs index ab97f61e..74f82004 100644 --- a/trustchain-ion/src/attestor.rs +++ b/trustchain-ion/src/attestor.rs @@ -163,7 +163,7 @@ impl Issuer for IONAttestor { let proof = credential .generate_proof( &signing_key, - &linked_data_proof_options.unwrap_or(LinkedDataProofOptions::default()), + &linked_data_proof_options.unwrap_or_default(), resolver.as_did_resolver(), context_loader, ) @@ -227,7 +227,7 @@ impl Holder for IONAttestor { #[cfg(test)] mod tests { use super::*; - use crate::get_ion_resolver; + use crate::trustchain_resolver; use ssi::did::Document; use ssi::vc::CredentialOrJWT; use trustchain_core::data::{TEST_CREDENTIAL, TEST_SIGNING_KEYS, TEST_TRUSTCHAIN_DOCUMENT}; @@ -304,7 +304,7 @@ mod tests { init(); // Resolver - let resolver = get_ion_resolver("http://localhost:3000/"); + let resolver = trustchain_resolver("http://localhost:3000/"); // Set-up keys and attestor let did = "did:example:test_attest_credential"; @@ -337,7 +337,7 @@ mod tests { let did = "did:ion:test:EiDMe2SFfJ_7eXVW7RF1ZHOkeu2M-Bre0ak2cXNBH0P-TQ"; // Make resolver - let resolver = get_ion_resolver("http://localhost:3000/"); + let resolver = trustchain_resolver("http://localhost:3000/"); // 2. Load Attestor // Attestor @@ -373,7 +373,7 @@ mod tests { #[tokio::test] async fn test_attest_presentation() { init(); - let resolver = get_ion_resolver("http://localhost:3000/"); + let resolver = trustchain_resolver("http://localhost:3000/"); let issuer_did = "did:ion:test:EiBVpjUxXeSRJpvj2TewlX9zNF3GKMCKWwGmKBZqF6pk_A"; // root+1 let holder_did = "did:ion:test:EiAtHHKFJWAk5AsM3tgCut3OiBY4ekHTf66AAjoysXL65Q"; // root+2 let issuer = IONAttestor::new(issuer_did); diff --git a/trustchain-ion/src/data.rs b/trustchain-ion/src/data.rs index b13728f0..ce3f29c9 100644 --- a/trustchain-ion/src/data.rs +++ b/trustchain-ion/src/data.rs @@ -109,3 +109,62 @@ pub(crate) const TEST_TRANSACTION_HEX: &str = "020000000171dd04bd101ae70230e01c5 pub(crate) const TEST_MERKLE_BLOCK_HEX: &str = "00e0e42c325b885a35b8655986db88288f0264d4f67f5cc90e6d0d11270000000000000069ad9c5211416544200698706877c62e7cc93a29f5f5a31d05b5d4095279ce7d3d315163c0ff3f1971ea2df61d0000000603d3ca69a3614acb45a14966c812cd9ee034c705f20fac3daf8f796c99f4d805a5fd8e761ae2eb9e0b0e4d62d19599586fb98e8a7be6fc7113441e556fb31ff82c9cea8457c7c57e41f2eaf32ea66177c50be3c24053444234920d95ca3cc49d00a31f6e6d1864017f9cf9d48b51274871c4700e7091dfef14af9c92c5340215b7d88cc8202188e3837b171dba14ffede8f145b2c87c1dbc3642669930517958fb75429c45acaa51c416b283604d515f80f95ddb4f610e8ddb7876985713877602af00"; pub(crate) const TEST_BLOCK_HEADER_HEX: &str = "00e0e42c325b885a35b8655986db88288f0264d4f67f5cc90e6d0d11270000000000000069ad9c5211416544200698706877c62e7cc93a29f5f5a31d05b5d4095279ce7d3d315163c0ff3f1971ea2df6"; + +pub(crate) const TEST_DOCUMENT_IPFS_KEY: &str = r##" +{ +"@context" : [ + "https://www.w3.org/ns/did/v1", + { + "@base" : "did:ion:test:EiCBr7qGDecjkR2yUBhn3aNJPUR3TSEOlkpNcL0Q5Au9ZQ" + } +], +"assertionMethod" : [ + "#V8jt_0c-aFlq40Uti2R_WiquxuzxyB8kn1cfWmXIU84" +], +"authentication" : [ + "#V8jt_0c-aFlq40Uti2R_WiquxuzxyB8kn1cfWmXIU84" +], +"capabilityDelegation" : [ + "#V8jt_0c-aFlq40Uti2R_WiquxuzxyB8kn1cfWmXIU84" +], +"capabilityInvocation" : [ + "#V8jt_0c-aFlq40Uti2R_WiquxuzxyB8kn1cfWmXIU84" +], +"id" : "did:ion:test:EiCBr7qGDecjkR2yUBhn3aNJPUR3TSEOlkpNcL0Q5Au9ZQ", +"keyAgreement" : [ + "#V8jt_0c-aFlq40Uti2R_WiquxuzxyB8kn1cfWmXIU84" +], +"service" : [ + { + "id" : "#trustchain-controller-proof", + "type" : "TrustchainProofService", + "serviceEndpoint" : { + "proofValue" : "eyJhbGciOiJFUzI1NksifQ.IkVpQmNiTkRRcjZZNHNzZGc5QXo4eC1qNy1yS1FuNWk5T2Q2S3BjZ2c0RU1KOXci.Nii8p38DtzyurmPHO9sV2JLSH7-Pv-dCKQ0Y-H34rplwhhwca2nSra4ZofcUsHCG6u1oKJ0x4AmMUD2_3UIhRA", + "controller" : "did:ion:test:EiCBr7qGDecjkR2yUBhn3aNJPUR3TSEOlkpNcL0Q5Au9ZQ" + } + }, + { + "id": "RSSPublicKey", + "type": "IPFSKey", + "serviceEndpoint": "QmNqvEP6qmRLQ6aGz5G8fKTV7BcaBoq8gdCD5xY8PZ33aD" + } +], +"verificationMethod" : [ + { + "controller" : "did:ion:test:EiCBr7qGDecjkR2yUBhn3aNJPUR3TSEOlkpNcL0Q5Au9ZQ", + "id" : "#V8jt_0c-aFlq40Uti2R_WiquxuzxyB8kn1cfWmXIU84", + "publicKeyJwk" : { + "crv" : "secp256k1", + "kty" : "EC", + "x" : "RbIj1Y4jeqkn0cizEfxHZidD-GQouFmAtE6YCpxFjpg", + "y" : "ZcbgNp3hrfp3cujZFKqgFS0uFGOn2Rk16Y9nOv0h15s" + }, + "type" : "JsonWebSignature2020" + } +] +} +"##; + +pub(crate) const TEST_RSS_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/lib.rs b/trustchain-ion/src/lib.rs index 8958aafb..65ea8fa2 100644 --- a/trustchain-ion/src/lib.rs +++ b/trustchain-ion/src/lib.rs @@ -15,22 +15,23 @@ pub mod utils; pub mod verifier; use crate::ion::IONTest as ION; -use crate::resolver::{DIDMethodWrapper, Resolver}; -use did_ion::sidetree::SidetreeClient; +use crate::resolver::HTTPTrustchainResolver; +use did_ion::sidetree::HTTPSidetreeDIDResolver; use serde::{Deserialize, Serialize}; use std::string::FromUtf8Error; use std::{io, num::ParseIntError}; use thiserror::Error; -// TODO: remove this type alias -/// Type alias -pub type IONResolver = Resolver>>; - /// Type alias for URL // TODO [#126]: remove in favour of new type pattern (e.g. URL(String)) or use https://crates.io/crates/url // for better handling of URLs. pub type URL = String; +/// Full client zero sized type for marker in `IONVerifier`. +pub struct FullClient; +/// Light client zero sized type for marker in `IONVerifier`. +pub struct LightClient; + /// Type for representing an endpoint as a base URL and port. #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -52,9 +53,23 @@ impl Endpoint { } } -/// Test resolver -pub fn get_ion_resolver(endpoint: &str) -> IONResolver { - IONResolver::from(SidetreeClient::::new(Some(String::from(endpoint)))) +/// ION DID resolver. +pub fn http_resolver(endpoint: &str) -> HTTPSidetreeDIDResolver { + HTTPSidetreeDIDResolver::new(endpoint) +} + +/// Trustchain ION DID resolver for full client. +pub fn trustchain_resolver( + ion_endpoint: &str, +) -> HTTPTrustchainResolver> { + HTTPTrustchainResolver::<_, FullClient>::new(http_resolver(ion_endpoint)) +} + +/// Trustchain ION DID resolver for light client. +pub fn trustchain_resolver_light_client( + trustchain_endpoint: &str, +) -> HTTPTrustchainResolver, LightClient> { + HTTPTrustchainResolver::<_, LightClient>::new(http_resolver(trustchain_endpoint)) } /// An error relating for Trustchain-ion crate. diff --git a/trustchain-ion/src/mnemonic.rs b/trustchain-ion/src/mnemonic.rs index 3e1b4550..484df978 100644 --- a/trustchain-ion/src/mnemonic.rs +++ b/trustchain-ion/src/mnemonic.rs @@ -1,8 +1,8 @@ +use crate::ion::IONTest as ION; use bip39::Mnemonic; use bitcoin::secp256k1::Secp256k1; use bitcoin::util::bip32::{DerivationPath, ExtendedPrivKey}; use did_ion::sidetree::Sidetree; -use did_ion::ION; use ed25519_dalek_bip32::derivation_path::DerivationPath as Ed25519DerivationPath; use ed25519_dalek_bip32::derivation_path::DerivationPathParseError; use ed25519_dalek_bip32::ExtendedSigningKey; diff --git a/trustchain-ion/src/resolver.rs b/trustchain-ion/src/resolver.rs index 6115aaf0..c2d1cff3 100644 --- a/trustchain-ion/src/resolver.rs +++ b/trustchain-ion/src/resolver.rs @@ -6,23 +6,56 @@ use ssi::did::{RelativeDIDURL, ServiceEndpoint, VerificationMethod, Verification use ssi::did_resolve::DocumentMetadata; use ssi::one_or_many::OneOrMany; use ssi::{ - did::{DIDMethod, Document}, + did::Document, did_resolve::{DIDResolver, ResolutionInputMetadata, ResolutionMetadata}, }; +use std::collections::HashSet; +use std::marker::PhantomData; use std::str::FromStr; use trustchain_core::resolver::{ResolverError, TrustchainResolver}; use crate::utils::{decode_ipfs_content, query_ipfs}; +use crate::{FullClient, LightClient}; use crate::{CONTROLLER_KEY, SERVICE_TYPE_IPFS_KEY}; -// Newtype pattern (workaround for lack of trait upcasting coercion). -// Specifically, the DIDMethod method to_resolver() returns a reference but we want ownership. -// The workaround is to define a wrapper for DIDMethod that implements DIDResolver. -// See https://doc.rust-lang.org/book/ch19-03-advanced-traits.html#using-the-newtype-pattern-to-implement-external-traits-on-external-types. -pub struct DIDMethodWrapper(pub S); +/// Struct for performing resolution from a sidetree server to generate +/// Trustchain DID document and DID document metadata. +pub struct HTTPTrustchainResolver { + pub wrapped_resolver: T, + pub ipfs_client: Option, + _marker: PhantomData, +} + +impl HTTPTrustchainResolver { + /// Constructs a full client Trustchain resolver. + pub fn new(resolver: T) -> Self { + Self { + wrapped_resolver: resolver, + ipfs_client: Some(IpfsClient::default()), + _marker: PhantomData, + } + } + fn ipfs_client(&self) -> &IpfsClient { + self.ipfs_client.as_ref().unwrap() + } +} + +impl HTTPTrustchainResolver { + /// Constructs a light client Trustchain resolver. + pub fn new(resolver: T) -> Self { + Self { + wrapped_resolver: resolver, + ipfs_client: None, + _marker: PhantomData, + } + } +} #[async_trait] -impl DIDResolver for DIDMethodWrapper { +impl DIDResolver for HTTPTrustchainResolver +where + T: DIDResolver + Sync + Send, +{ async fn resolve( &self, did: &str, @@ -32,34 +65,12 @@ impl DIDResolver for DIDMethodWrapper { Option, Option, ) { - self.0.to_resolver().resolve(did, input_metadata).await - } -} - -/// Struct for performing resolution from a sidetree server to generate -/// Trustchain DID document and DID document metadata. -pub struct Resolver { - pub wrapped_resolver: T, - pub ipfs_client: IpfsClient, -} - -impl Resolver { - /// Constructs a Trustchain resolver. - pub fn new(resolver: T) -> Self { - Self { - wrapped_resolver: resolver, - ipfs_client: IpfsClient::default(), - } - } - /// Constructs a Trustchain resolver from a DIDMethod. - pub fn from(method: S) -> Resolver> { - // Wrap the DIDMethod. - Resolver::>::new(DIDMethodWrapper::(method)) + self.trustchain_resolve(did, input_metadata).await } } #[async_trait] -impl DIDResolver for Resolver +impl DIDResolver for HTTPTrustchainResolver where T: DIDResolver + Sync + Send, { @@ -77,7 +88,7 @@ where } #[async_trait] -impl TrustchainResolver for Resolver +impl TrustchainResolver for HTTPTrustchainResolver where T: DIDResolver + Sync + Send, { @@ -101,7 +112,7 @@ where if let (Some(did_doc), Some(did_doc_meta)) = (doc, doc_meta) { // Convert to trustchain-ion version. let tc_result = - transform_as_result(res_meta, did_doc, did_doc_meta, &self.ipfs_client).await; + transform_as_result(res_meta, did_doc, did_doc_meta, self.ipfs_client()).await; match tc_result { // Map the tuple of non-option types to have tuple with optional document metadata. Ok((tc_res_meta, tc_doc, tc_doc_meta)) => { @@ -124,6 +135,16 @@ where } } +#[async_trait] +impl TrustchainResolver for HTTPTrustchainResolver +where + T: DIDResolver + Sync + Send, +{ + fn wrapped_resolver(&self) -> &dyn DIDResolver { + &self.wrapped_resolver + } +} + /// Converts DID Document + Metadata to the Trustchain resolved format. async fn transform_as_result( res_meta: ResolutionMetadata, @@ -152,6 +173,12 @@ async fn transform_doc( None => vec![], }; + // Create set of verification method ids to check if candidates are already present + let verification_methods_ids: HashSet = verification_methods + .iter() + .map(|vm| vm.get_id(&doc.id)) + .collect(); + // Add any public keys found on IPFS. for endpoint in endpoints { // Download the content of the corresponding CID @@ -178,8 +205,8 @@ async fn transform_doc( .map_err(|err| ResolverError::FailedToConvertToTrustchain(err.to_string()))?; // Transform public key id into RelativeDIDURL format. - if !new_vm_map.id.starts_with("#") { - new_vm_map.id.insert_str(0, "#"); + if !new_vm_map.id.starts_with('#') { + new_vm_map.id.insert(0, '#'); } // Create RelativeDIDURL verification method let relative_did_url: &str = new_vm_map.id.as_ref(); @@ -188,6 +215,11 @@ async fn transform_doc( .map_err(|err| ResolverError::FailedToConvertToTrustchain(err.to_string()))?, ); + // Continue if verification method is already present + if verification_methods_ids.contains(&relative_did_url_vm.get_id(&doc.id)) { + continue; + } + // Extract the verification method purposes if let Some(extra_properties) = new_vm_map.property_set.as_mut() { if let Some(purposes) = extra_properties.remove("purposes") { @@ -198,6 +230,7 @@ async fn transform_doc( )))? .to_vec(); + // TODO: consider separate function to avoid repetition here. // Propagate public key purposes to associated DID fields. if purposes_vec.contains(&Value::String("authentication".to_string())) { if let Some(authentication) = &doc.authentication { @@ -265,13 +298,8 @@ fn ipfs_key_endpoints(doc: &Document) -> Vec { .unwrap() .iter() .filter(|s| s.type_.to_single().is_some()) - .filter_map(|ref s| { - if s.type_ - .to_single() - .as_deref() - .unwrap() - .eq(SERVICE_TYPE_IPFS_KEY) - { + .filter_map(|s| { + if s.type_.to_single().unwrap().eq(SERVICE_TYPE_IPFS_KEY) { match s.service_endpoint { Some(OneOrMany::One(ServiceEndpoint::URI(ref uri))) => Some(uri.to_owned()), _ => None, @@ -285,6 +313,8 @@ fn ipfs_key_endpoints(doc: &Document) -> Vec { #[cfg(test)] mod tests { + use crate::data::{TEST_DOCUMENT_IPFS_KEY, TEST_RSS_VM_JSON}; + use super::*; #[test] @@ -318,7 +348,7 @@ mod tests { #[test] fn test_verification_method_deserialisation() { - let mut json: serde_json::Value = serde_json::from_str(&RSS_VM_JSON.to_string()).unwrap(); + let mut json: serde_json::Value = serde_json::from_str(TEST_RSS_VM_JSON).unwrap(); json.as_object_mut() .ok_or(ResolverError::FailedToConvertToTrustchain(String::from( @@ -333,63 +363,4 @@ mod tests { let _new_verification_method: ssi::did::VerificationMethod = serde_json::from_str(&json.to_string()).unwrap(); } - - const RSS_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"]} - "##; - - const TEST_DOCUMENT_IPFS_KEY: &str = r##" - { - "@context" : [ - "https://www.w3.org/ns/did/v1", - { - "@base" : "did:ion:test:EiCBr7qGDecjkR2yUBhn3aNJPUR3TSEOlkpNcL0Q5Au9ZQ" - } - ], - "assertionMethod" : [ - "#V8jt_0c-aFlq40Uti2R_WiquxuzxyB8kn1cfWmXIU84" - ], - "authentication" : [ - "#V8jt_0c-aFlq40Uti2R_WiquxuzxyB8kn1cfWmXIU84" - ], - "capabilityDelegation" : [ - "#V8jt_0c-aFlq40Uti2R_WiquxuzxyB8kn1cfWmXIU84" - ], - "capabilityInvocation" : [ - "#V8jt_0c-aFlq40Uti2R_WiquxuzxyB8kn1cfWmXIU84" - ], - "id" : "did:ion:test:EiCBr7qGDecjkR2yUBhn3aNJPUR3TSEOlkpNcL0Q5Au9ZQ", - "keyAgreement" : [ - "#V8jt_0c-aFlq40Uti2R_WiquxuzxyB8kn1cfWmXIU84" - ], - "service" : [ - { - "id" : "#trustchain-controller-proof", - "type" : "TrustchainProofService", - "serviceEndpoint" : { - "proofValue" : "eyJhbGciOiJFUzI1NksifQ.IkVpQmNiTkRRcjZZNHNzZGc5QXo4eC1qNy1yS1FuNWk5T2Q2S3BjZ2c0RU1KOXci.Nii8p38DtzyurmPHO9sV2JLSH7-Pv-dCKQ0Y-H34rplwhhwca2nSra4ZofcUsHCG6u1oKJ0x4AmMUD2_3UIhRA", - "controller" : "did:ion:test:EiCBr7qGDecjkR2yUBhn3aNJPUR3TSEOlkpNcL0Q5Au9ZQ" - } - }, - { - "id": "RSSPublicKey", - "type": "IPFSKey", - "serviceEndpoint": "QmNqvEP6qmRLQ6aGz5G8fKTV7BcaBoq8gdCD5xY8PZ33aD" - } - ], - "verificationMethod" : [ - { - "controller" : "did:ion:test:EiCBr7qGDecjkR2yUBhn3aNJPUR3TSEOlkpNcL0Q5Au9ZQ", - "id" : "#V8jt_0c-aFlq40Uti2R_WiquxuzxyB8kn1cfWmXIU84", - "publicKeyJwk" : { - "crv" : "secp256k1", - "kty" : "EC", - "x" : "RbIj1Y4jeqkn0cizEfxHZidD-GQouFmAtE6YCpxFjpg", - "y" : "ZcbgNp3hrfp3cujZFKqgFS0uFGOn2Rk16Y9nOv0h15s" - }, - "type" : "JsonWebSignature2020" - } - ] - } - "##; } diff --git a/trustchain-ion/src/utils.rs b/trustchain-ion/src/utils.rs index 035af198..ead01dfd 100644 --- a/trustchain-ion/src/utils.rs +++ b/trustchain-ion/src/utils.rs @@ -10,8 +10,8 @@ use futures::TryStreamExt; use ipfs_api_backend_hyper::{IpfsApi, IpfsClient}; use mongodb::{bson::doc, options::ClientOptions, Cursor}; use serde_json::{json, Value}; -use std::collections::HashMap; use std::io::Read; +use std::{cmp::Ordering, collections::HashMap}; use trustchain_core::{utils::get_did_suffix, verifier::VerifierError}; use crate::{ @@ -92,7 +92,7 @@ pub fn decode_ipfs_content(ipfs_file: &[u8], gunzip: bool) -> Result target_unixtime { - end_height = current_height; // TODO CHECK: original script has: current_height - 1; - } else if (current_unixtime as i64) < target_unixtime { - start_height = current_height; // TODO CHECK: original script has: current_height + 1; + match (current_unixtime as i64).cmp(&target_unixtime) { + // TODO CHECK: original script has: current_height - 1 + Ordering::Greater => end_height = current_height, + // TODO CHECK: original script has: current_height + 1; + Ordering::Less => start_height = current_height, + // TODO: WHAT IF current_unixtime == target_unixtime? + // (does the loop exit and is start_height the right result in that case?) + Ordering::Equal => unimplemented!(), } - // TODO: WHAT IF current_unixtime == target_unixtime? - // (does the loop exit and is start_height the right result in that case?) } Ok(start_height) } diff --git a/trustchain-ion/src/verifier.rs b/trustchain-ion/src/verifier.rs index 710f3d25..a1e2bfe4 100644 --- a/trustchain-ion/src/verifier.rs +++ b/trustchain-ion/src/verifier.rs @@ -1,12 +1,13 @@ //! Implementation of `Verifier` API for ION DID method. use crate::commitment::{BlockTimestampCommitment, IONCommitment}; use crate::config::ion_config; +use crate::resolver::HTTPTrustchainResolver; use crate::sidetree::{ChunkFile, ChunkFileUri, CoreIndexFile, ProvisionalIndexFile}; use crate::utils::{ block_header, decode_ipfs_content, locate_transaction, query_ipfs, transaction, tx_to_op_return_cid, }; -use crate::URL; +use crate::{FullClient, LightClient, URL}; use async_trait::async_trait; use bitcoin::blockdata::transaction::Transaction; use bitcoin::hash_types::BlockHash; @@ -20,8 +21,6 @@ use serde_json::Value; use ssi::did::Document; use ssi::did_resolve::{DIDResolver, DocumentMetadata}; use std::collections::HashMap; - -use crate::resolver::Resolver; use std::marker::PhantomData; use std::str::FromStr; use std::sync::{Arc, Mutex}; @@ -76,17 +75,13 @@ impl VerificationBundle { } } -/// Full client zero sized type for marker in `IONVerifier`. -pub struct FullClient; -/// Light client zero sized type for marker in `IONVerifier`. -pub struct LightClient; - /// Trustchain Verifier implementation via the ION DID method. -pub struct IONVerifier +pub struct TrustchainVerifier where T: Sync + Send + DIDResolver, { - resolver: Resolver, + // TODO: consider replacing resolver with single generic over TrustchainResolver + resolver: HTTPTrustchainResolver, rpc_client: Option, ipfs_client: Option, bundles: Mutex>>, @@ -94,13 +89,13 @@ where _marker: PhantomData, } -impl IONVerifier +impl TrustchainVerifier where T: Send + Sync + DIDResolver, { /// Constructs a new IONVerifier. // TODO: refactor to use config struct over direct config file lookup - pub fn new(resolver: Resolver) -> Self { + pub fn new(resolver: HTTPTrustchainResolver) -> Self { // Construct a Bitcoin RPC client to communicate with the ION Bitcoin node. let rpc_client = bitcoincore_rpc::Client::new( &ion_config().bitcoin_connection_string, @@ -309,12 +304,13 @@ where } } } -impl IONVerifier +impl TrustchainVerifier where T: Send + Sync + DIDResolver, { /// Constructs a new IONVerifier. - pub fn with_endpoint(resolver: Resolver, endpoint: URL) -> Self { + // TODO: consider refactor to remove resolver from API + pub fn with_endpoint(resolver: HTTPTrustchainResolver, endpoint: URL) -> Self { Self { resolver, rpc_client: None, @@ -376,7 +372,7 @@ where } } -impl IONVerifier +impl TrustchainVerifier where T: Send + Sync + DIDResolver, { @@ -415,7 +411,7 @@ pub fn content_deltas(chunk_file_json: &Value) -> Result, VerifierErr // TODO: consider whether duplication can be avoided in the LightClient impl #[async_trait] -impl Verifier for IONVerifier +impl Verifier for TrustchainVerifier where T: Sync + Send + DIDResolver, { @@ -465,7 +461,7 @@ where } #[async_trait] -impl Verifier for IONVerifier +impl Verifier for TrustchainVerifier where T: Sync + Send + DIDResolver, { @@ -570,65 +566,20 @@ mod tests { TEST_BLOCK_HEADER_HEX, TEST_CHUNK_FILE_HEX, TEST_CORE_INDEX_FILE_HEX, TEST_MERKLE_BLOCK_HEX, TEST_PROVISIONAL_INDEX_FILE_HEX, TEST_TRANSACTION_HEX, }, - get_ion_resolver, + trustchain_resolver, }; use bitcoin::{BlockHeader, MerkleBlock}; use flate2::read::GzDecoder; - use ssi::did_resolve::HTTPDIDResolver; use std::{io::Read, str::FromStr}; use trustchain_core::commitment::TrivialCommitment; - // Helper function for generating a placeholder HTTP resolver for tests only. - // Note that this resolver will *not* succeed at resolving DIDs. For that, a - // SidetreeClient is needed. - fn get_http_resolver() -> HTTPDIDResolver { - HTTPDIDResolver::new("http://localhost:3000/") - } - - // #[tokio::test] - // #[ignore = "Integration test requires MongoDB"] - // async fn test_locate_transaction() { - // let resolver = Resolver::new(get_http_resolver()); - // let target = IONVerifier::new(resolver); - - // let did = "did:ion:test:EiDYpQWYf_vkSm60EeNqWys6XTZYvg6UcWrRI9Mh12DuLQ"; - // let (block_hash, transaction_index) = target.locate_transaction(did).await.unwrap(); - // // Block 1902377 - // let expected_block_hash = - // BlockHash::from_str("00000000e89bddeae5ad5589dfa4a7ea76ad9c83b0d711b5e6d4ee515ace6447") - // .unwrap(); - // assert_eq!(block_hash, expected_block_hash); - // assert_eq!(transaction_index, 118); - - // let did = "did:ion:test:EiCClfEdkTv_aM3UnBBhlOV89LlGhpQAbfeZLFdFxVFkEg"; - // let (block_hash, transaction_index) = target.locate_transaction(did).await.unwrap(); - // // Block 2377445 - // let expected_block_hash = - // BlockHash::from_str("000000000000000eaa9e43748768cd8bf34f43aaa03abd9036c463010a0c6e7f") - // .unwrap(); - // assert_eq!(block_hash, expected_block_hash); - // assert_eq!(transaction_index, 3); - - // let did = "did:ion:test:EiBP_RYTKG2trW1_SN-e26Uo94I70a8wB4ETdHy48mFfMQ"; - // let (block_hash, transaction_index) = target.locate_transaction(did).await.unwrap(); - // // Block 2377339 - // let expected_block_hash = - // BlockHash::from_str("000000000000003fadd15bdd2b55994371b832c6251781aa733a2a9e8865162b") - // .unwrap(); - // assert_eq!(block_hash, expected_block_hash); - // assert_eq!(transaction_index, 10); - - // // Invalid DID - // let invalid_did = "did:ion:test:EiCClfEdkTv_aM3UnBBh10V89L1GhpQAbfeZLFdFxVFkEg"; - // let result = target.locate_transaction(invalid_did).await; - // assert!(result.is_err()); - // } + const ENDPOINT: &str = "http://localhost:3000/"; #[test] #[ignore = "Integration test requires Bitcoin RPC"] fn test_op_return_cid() { - let resolver = Resolver::new(get_http_resolver()); - let target = IONVerifier::new(resolver); + let resolver = trustchain_resolver(ENDPOINT); + let target = TrustchainVerifier::new(resolver); // The transaction, including OP_RETURN data, can be found on-chain: // https://blockstream.info/testnet/tx/9dc43cca950d923442445340c2e30bc57761a62ef3eaf2417ec5c75784ea9c2c @@ -649,8 +600,8 @@ mod tests { #[ignore = "Integration test requires ION"] async fn test_resolve_did() { // Use a SidetreeClient for the resolver in this case, as we need to resolve a DID. - let resolver = get_ion_resolver("http://localhost:3000/"); - let target = IONVerifier::new(resolver); + let resolver = trustchain_resolver(ENDPOINT); + let target = TrustchainVerifier::new(resolver); let did = "did:ion:test:EiCClfEdkTv_aM3UnBBhlOV89LlGhpQAbfeZLFdFxVFkEg"; let result = target.resolve_did(did).await; assert!(result.is_ok()); @@ -659,8 +610,8 @@ mod tests { #[tokio::test] #[ignore = "Integration test requires IPFS"] async fn test_fetch_chunk_file() { - let resolver = Resolver::new(get_http_resolver()); - let target = IONVerifier::new(resolver); + let resolver = trustchain_resolver(ENDPOINT); + let target = TrustchainVerifier::new(resolver); let prov_index_file = hex::decode(TEST_PROVISIONAL_INDEX_FILE_HEX).unwrap(); @@ -681,8 +632,8 @@ mod tests { #[tokio::test] #[ignore = "Integration test requires IPFS"] async fn test_fetch_core_index_file() { - let resolver = Resolver::new(get_http_resolver()); - let target = IONVerifier::new(resolver); + let resolver = trustchain_resolver(ENDPOINT); + let target = TrustchainVerifier::new(resolver); let cid = "QmRvgZm4J3JSxfk4wRjE2u2Hi2U7VmobYnpqhqH5QP6J97"; let result = target.fetch_core_index_file(cid).await; @@ -706,8 +657,8 @@ mod tests { #[ignore = "Integration test requires ION, MongoDB, IPFS and Bitcoin RPC"] async fn test_fetch_bundle() { // Use a SidetreeClient for the resolver in this case, as we need to resolve a DID. - let resolver = get_ion_resolver("http://localhost:3000/"); - let target = IONVerifier::new(resolver); + let resolver = trustchain_resolver(ENDPOINT); + let target = TrustchainVerifier::new(resolver); assert!(target.bundles.lock().unwrap().is_empty()); let did = "did:ion:test:EiCClfEdkTv_aM3UnBBhlOV89LlGhpQAbfeZLFdFxVFkEg"; @@ -722,8 +673,8 @@ mod tests { #[ignore = "Integration test requires ION, MongoDB, IPFS and Bitcoin RPC"] async fn test_commitment() { // Use a SidetreeClient for the resolver in this case, as we need to resolve a DID. - let resolver = get_ion_resolver("http://localhost:3000/"); - let target = IONVerifier::new(resolver); + let resolver = trustchain_resolver(ENDPOINT); + let target = TrustchainVerifier::new(resolver); let did = "did:ion:test:EiCClfEdkTv_aM3UnBBhlOV89LlGhpQAbfeZLFdFxVFkEg"; diff --git a/trustchain-ion/tests/display.rs b/trustchain-ion/tests/display.rs index 8e4b71c3..0cd800e8 100644 --- a/trustchain-ion/tests/display.rs +++ b/trustchain-ion/tests/display.rs @@ -1,12 +1,12 @@ use trustchain_core::chain::{Chain, DIDChain}; use trustchain_core::graph::TrustchainGraph; -use trustchain_ion::get_ion_resolver; +use trustchain_ion::trustchain_resolver; #[tokio::test] #[ignore] // Requires a running Sidetree node listening on http://localhost:3000. async fn trustchain_graph() { // Example DIDs for ROOT_EVENT_TIME_2378493 - let resolver = get_ion_resolver("http://localhost:3000/"); + let resolver = trustchain_resolver("http://localhost:3000/"); let new_dids = vec![ "did:ion:test:EiC9KEQyCzGFs_dJ2Iy1lgah3nTuy0ns8ZxXa9ZPZILBpQ", "did:ion:test:EiBwr2eTfupemVBq28VyIb8po0r_jpuHMUMFzw25Flnmrg", diff --git a/trustchain-ion/tests/resolver.rs b/trustchain-ion/tests/resolver.rs index 74e94ec6..4f001a2d 100644 --- a/trustchain-ion/tests/resolver.rs +++ b/trustchain-ion/tests/resolver.rs @@ -3,7 +3,7 @@ use core::panic; use ssi::did_resolve::Metadata; use ssi::one_or_many::OneOrMany; use trustchain_core::resolver::TrustchainResolver; -use trustchain_ion::get_ion_resolver; +use trustchain_ion::trustchain_resolver; #[tokio::test] #[ignore] // Requires a running Sidetree node listening on http://localhost:3000. @@ -13,7 +13,7 @@ async fn trustchain_resolution() { let did = "did:ion:test:EiA8yZGuDKbcnmPRs9ywaCsoE2FT9HMuyD9WmOiQasxBBg"; // Construct a Trustchain Resolver from a Sidetree (ION) DIDMethod. - let resolver = get_ion_resolver("http://localhost:3000/"); + let resolver = trustchain_resolver("http://localhost:3000/"); // Resolve DID Document & Metadata. let result = resolver.resolve_as_result(did).await; diff --git a/trustchain-ion/tests/verifier.rs b/trustchain-ion/tests/verifier.rs index bb0bc7ba..8c8ddcb1 100644 --- a/trustchain-ion/tests/verifier.rs +++ b/trustchain-ion/tests/verifier.rs @@ -1,7 +1,7 @@ use trustchain_core::utils::type_of; use trustchain_core::verifier::{Timestamp, Verifier}; -use trustchain_ion::get_ion_resolver; -use trustchain_ion::verifier::IONVerifier; +use trustchain_ion::trustchain_resolver; +use trustchain_ion::verifier::TrustchainVerifier; // The root event time of DID documents in `data.rs` used for unit tests and the test below. const ROOT_EVENT_TIME_1: u64 = 1666265405; @@ -18,8 +18,8 @@ async fn trustchain_verification() { ]; // Construct a Trustchain Resolver from a Sidetree (ION) DIDMethod. - let resolver = get_ion_resolver("http://localhost:3000/"); - let verifier = IONVerifier::new(resolver); + let resolver = trustchain_resolver("http://localhost:3000/"); + let verifier = TrustchainVerifier::new(resolver); for did in dids { let result = verifier.verify(did, ROOT_EVENT_TIME_1).await; assert!(result.is_ok()); @@ -29,8 +29,8 @@ async fn trustchain_verification() { #[tokio::test] #[ignore = "Integration test requires ION, Bitcoin RPC & IPFS"] async fn test_verifiable_timestamp() { - let resolver = get_ion_resolver("http://localhost:3000/"); - let target = IONVerifier::new(resolver); + let resolver = trustchain_resolver("http://localhost:3000/"); + let target = TrustchainVerifier::new(resolver); let timestamp: Timestamp = 1666265405; let did = "did:ion:test:EiCClfEdkTv_aM3UnBBhlOV89LlGhpQAbfeZLFdFxVFkEg";