From 8736b6fc53b364c73a806b86dd6dfa58c92f1be2 Mon Sep 17 00:00:00 2001 From: zhangjunhao Date: Fri, 20 Apr 2018 18:30:26 +0800 Subject: [PATCH] feat(wolfssl): Change wolfssl library to commercial V3.14.0 --- include/wolfssl/ssl.h | 413 ++++++++++++---- include/wolfssl/version.h | 21 +- include/wolfssl/wolfcrypt/logging.h | 117 +++++ include/wolfssl/wolfcrypt/settings.h | 141 ++++-- include/wolfssl/wolfcrypt/types.h | 625 +++++++++++++++++++++++++ include/wolfssl/wolfcrypt/visibility.h | 17 +- include/wolfssl/wolfcrypt/wc_port.h | 473 +++++++++++++++++++ include/wolfssl/wolfio.h | 54 +-- lib/libwolfssl.a | Bin 899644 -> 937674 bytes 9 files changed, 1677 insertions(+), 184 deletions(-) create mode 100644 include/wolfssl/wolfcrypt/logging.h create mode 100755 include/wolfssl/wolfcrypt/types.h create mode 100644 include/wolfssl/wolfcrypt/wc_port.h diff --git a/include/wolfssl/ssl.h b/include/wolfssl/ssl.h index e69b127a..8f0dfe41 100644 --- a/include/wolfssl/ssl.h +++ b/include/wolfssl/ssl.h @@ -1,26 +1,17 @@ /* ssl.h * - * Copyright (C) 2006-2017 wolfSSL Inc. + * Copyright (C) 2006-2017 wolfSSL Inc. All rights reserved. * * This file is part of wolfSSL. * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * Contact licensing@wolfssl.com with any questions or comments. * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + * http://www.wolfssl.com */ + /* wolfSSL API */ #ifndef WOLFSSL_SSL_H @@ -30,6 +21,7 @@ /* for users not using preprocessor flags*/ #include #include +#include #ifdef HAVE_WOLF_EVENT #include @@ -83,7 +75,7 @@ #define NO_OLD_WC_NAMES #endif -#elif defined(OPENSSL_EXTRA) +#elif (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) #include #include @@ -122,6 +114,8 @@ typedef struct WOLFSSL_CERT_MANAGER WOLFSSL_CERT_MANAGER; typedef struct WOLFSSL_SOCKADDR WOLFSSL_SOCKADDR; typedef struct WOLFSSL_CRL WOLFSSL_CRL; +typedef void *WOLFSSL_X509_STORE_CTX_verify_cb; /* verify callback */ + /* redeclare guard */ #define WOLFSSL_TYPES_DEFINED @@ -160,6 +154,7 @@ typedef struct WOLFSSL_X509_LOOKUP WOLFSSL_X509_LOOKUP; typedef struct WOLFSSL_X509_LOOKUP_METHOD WOLFSSL_X509_LOOKUP_METHOD; typedef struct WOLFSSL_X509_CRL WOLFSSL_X509_CRL; typedef struct WOLFSSL_X509_STORE WOLFSSL_X509_STORE; +typedef struct WOLFSSL_X509_VERIFY_PARAM WOLFSSL_X509_VERIFY_PARAM; typedef struct WOLFSSL_BIO WOLFSSL_BIO; typedef struct WOLFSSL_BIO_METHOD WOLFSSL_BIO_METHOD; typedef struct WOLFSSL_X509_EXTENSION WOLFSSL_X509_EXTENSION; @@ -171,7 +166,6 @@ typedef struct WOLFSSL_ASN1_STRING WOLFSSL_ASN1_STRING; typedef struct WOLFSSL_dynlock_value WOLFSSL_dynlock_value; typedef struct WOLFSSL_DH WOLFSSL_DH; typedef struct WOLFSSL_ASN1_BIT_STRING WOLFSSL_ASN1_BIT_STRING; -typedef unsigned char* WOLFSSL_BUF_MEM; #define WOLFSSL_ASN1_UTCTIME WOLFSSL_ASN1_TIME #define WOLFSSL_ASN1_GENERALIZEDTIME WOLFSSL_ASN1_TIME @@ -189,16 +183,87 @@ struct WOLFSSL_ASN1_TIME { /* ASN_TIME | LENGTH | date bytes */ }; -#ifndef WOLFSSL_EVP_PKEY_TYPE_DEFINED /* guard on redeclaration */ +struct WOLFSSL_ASN1_STRING { + int length; + int type; /* type of string i.e. CTC_UTF8 */ + char* data; + long flags; +}; + +#define WOLFSSL_MAX_SNAME 40 +struct WOLFSSL_ASN1_OBJECT { + void* heap; + unsigned char* obj; + /* sName is short name i.e sha256 rather than oid (null terminated) */ + char sName[WOLFSSL_MAX_SNAME]; + int type; /* oid */ + int grp; /* type of OID, i.e. oidCertPolicyType */ + unsigned int objSz; + unsigned char dynamic; /* if 1 then obj was dynamiclly created, 0 otherwise */ + struct d { /* derefrenced */ + WOLFSSL_ASN1_STRING ia5_internal; + WOLFSSL_ASN1_STRING* ia5; /* points to ia5_internal */ + } d; +}; + +struct WOLFSSL_EVP_PKEY { + void* heap; + int type; /* openssh dereference */ + int save_type; /* openssh dereference */ + int pkey_sz; + union { + char* ptr; /* der format of key / or raw for NTRU */ + } pkey; + #if (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) + #ifndef NO_RSA + WOLFSSL_RSA* rsa; + byte ownRsa; /* if struct owns RSA and should free it */ + #endif + #ifdef HAVE_ECC + WOLFSSL_EC_KEY* ecc; + byte ownEcc; /* if struct owns ECC and should free it */ + #endif + WC_RNG rng; + #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ + #ifdef HAVE_ECC + int pkey_curve; + #endif +}; +typedef struct WOLFSSL_EVP_PKEY WOLFSSL_PKCS8_PRIV_KEY_INFO; + +#ifndef WOLFSSL_EVP_TYPE_DEFINED /* guard on redeclaration */ typedef struct WOLFSSL_EVP_PKEY WOLFSSL_EVP_PKEY; -#define WOLFSSL_EVP_PKEY_TYPE_DEFINED +typedef char WOLFSSL_EVP_MD; +#define WOLFSSL_EVP_TYPE_DEFINED #endif -typedef struct WOLFSSL_MD4_CTX { - int buffer[32]; /* big enough to hold, check size in Init */ -} WOLFSSL_MD4_CTX; +#define WOLFSSL_EVP_PKEY_DEFAULT EVP_PKEY_RSA /* default key type */ +enum BIO_TYPE { + WOLFSSL_BIO_BUFFER = 1, + WOLFSSL_BIO_SOCKET = 2, + WOLFSSL_BIO_SSL = 3, + WOLFSSL_BIO_MEMORY = 4, + WOLFSSL_BIO_BIO = 5, + WOLFSSL_BIO_FILE = 6, + WOLFSSL_BIO_BASE64 = 7 +}; + +enum BIO_FLAGS { + WOLFSSL_BIO_FLAG_BASE64_NO_NL = 0x01, + WOLFSSL_BIO_FLAG_READ = 0x02, + WOLFSSL_BIO_FLAG_WRITE = 0x04, + WOLFSSL_BIO_FLAG_IO_SPECIAL = 0x08, + WOLFSSL_BIO_FLAG_RETRY = 0x10 +}; + +typedef struct WOLFSSL_BUF_MEM { + char* data; /* dereferenced */ + size_t length; /* current length */ + size_t max; /* maximum length */ +} WOLFSSL_BUF_MEM; + typedef struct WOLFSSL_COMP_METHOD { int type; /* stunnel dereference */ } WOLFSSL_COMP_METHOD; @@ -220,6 +285,15 @@ struct WOLFSSL_X509_STORE { #endif }; +#ifdef OPENSSL_EXTRA +#define WOLFSSL_USE_CHECK_TIME 0x2 +#define WOLFSSL_NO_CHECK_TIME 0x200000 +struct WOLFSSL_X509_VERIFY_PARAM { + time_t check_time; + unsigned long flags; +}; +#endif + typedef struct WOLFSSL_ALERT { int code; int level; @@ -251,20 +325,27 @@ typedef struct WOLFSSL_BUFFER_INFO { typedef struct WOLFSSL_X509_STORE_CTX { WOLFSSL_X509_STORE* store; /* Store full of a CA cert chain */ WOLFSSL_X509* current_cert; /* stunnel dereference */ + WOLFSSL_X509_CHAIN* sesChain; /* pointer to WOLFSSL_SESSION peer chain */ WOLFSSL_STACK* chain; +#ifdef OPENSSL_EXTRA + WOLFSSL_X509_VERIFY_PARAM* param; /* certificate validation parameter */ +#endif char* domain; /* subject CN domain name */ void* ex_data; /* external data, for fortress build */ void* userCtx; /* user ctx */ int error; /* current error */ - int error_depth; /* cert depth for this error */ + int error_depth; /* index of cert depth for this error */ int discardSessionCerts; /* so verify callback can flag for discard */ int totalCerts; /* number of peer cert buffers */ WOLFSSL_BUFFER_INFO* certs; /* peer certs */ + WOLFSSL_X509_STORE_CTX_verify_cb verify_cb; /* verify callback */ } WOLFSSL_X509_STORE_CTX; typedef char* WOLFSSL_STRING; -/* Valid Alert types from page 16/17 */ +/* Valid Alert types from page 16/17 + * Add alert string to the function wolfSSL_alert_type_string_long in src/ssl.c + */ enum AlertDescription { close_notify = 0, unexpected_message = 10, @@ -288,6 +369,7 @@ enum AlertDescription { protocol_version = 70, #endif no_renegotiation = 100, + unsupported_extension = 110, /**< RFC 5246, section 7.2.2 */ unrecognized_name = 112, /**< RFC 6066, section 3 */ bad_certificate_status_response = 113, /**< RFC 6066, section 8 */ no_application_protocol = 120 @@ -327,6 +409,7 @@ WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_client_method_ex(void* heap); WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_method(void); WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_server_method(void); WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_client_method(void); +WOLFSSL_API WOLFSSL_METHOD* wolfTLSv1_method(void); WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_server_method(void); WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_client_method(void); WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_server_method(void); @@ -351,8 +434,13 @@ WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_client_method(void); #ifdef WOLFSSL_SESSION_EXPORT #ifdef WOLFSSL_DTLS + +#ifndef WOLFSSL_DTLS_EXPORT_TYPES typedef int (*wc_dtls_export)(WOLFSSL* ssl, unsigned char* exportBuffer, unsigned int sz, void* userCtx); +#define WOLFSSL_DTLS_EXPORT_TYPES +#endif /* WOLFSSL_DTLS_EXPORT_TYPES */ + WOLFSSL_API int wolfSSL_dtls_import(WOLFSSL* ssl, unsigned char* buf, unsigned int sz); WOLFSSL_API int wolfSSL_CTX_dtls_set_export(WOLFSSL_CTX* ctx, @@ -394,6 +482,7 @@ WOLFSSL_API int wolfSSL_CTX_use_RSAPrivateKey_file(WOLFSSL_CTX*, const char*, in WOLFSSL_API long wolfSSL_get_verify_depth(WOLFSSL* ssl); WOLFSSL_API long wolfSSL_CTX_get_verify_depth(WOLFSSL_CTX* ctx); +WOLFSSL_API void wolfSSL_CTX_set_verify_depth(WOLFSSL_CTX *ctx,int depth); WOLFSSL_API int wolfSSL_use_certificate_file(WOLFSSL*, const char*, int); WOLFSSL_API int wolfSSL_use_PrivateKey_file(WOLFSSL*, const char*, int); WOLFSSL_API int wolfSSL_use_certificate_chain_file(WOLFSSL*, const char *file); @@ -493,6 +582,24 @@ WOLFSSL_API typedef int (*VerifyCallback)(int, WOLFSSL_X509_STORE_CTX*); typedef int (pem_password_cb)(char*, int, int, void*); +#ifdef OPENSSL_EXTRA +typedef void (CallbackInfoState)(const WOLFSSL*, int, int); + +typedef struct WOLFSSL_CRYPTO_EX_DATA { + WOLFSSL_STACK* data; +} WOLFSSL_CRYPTO_EX_DATA; + +typedef int (WOLFSSL_CRYPTO_EX_new)(void* p, void* ptr, + WOLFSSL_CRYPTO_EX_DATA* a, int idx, long argValue, void* arg); +typedef int (WOLFSSL_CRYPTO_EX_dup)(WOLFSSL_CRYPTO_EX_DATA* out, + WOLFSSL_CRYPTO_EX_DATA* in, void* inPtr, int idx, long argV, void* arg); +typedef void (WOLFSSL_CRYPTO_EX_free)(void* p, void* ptr, + WOLFSSL_CRYPTO_EX_DATA* a, int idx, long argValue, void* arg); + +WOLFSSL_API int wolfSSL_get_ex_new_index(long argValue, void* arg, + WOLFSSL_CRYPTO_EX_new* a, WOLFSSL_CRYPTO_EX_dup* b, + WOLFSSL_CRYPTO_EX_free* c); +#endif WOLFSSL_API void wolfSSL_CTX_set_verify(WOLFSSL_CTX*, int, VerifyCallback verify_callback); @@ -584,6 +691,11 @@ WOLFSSL_API int wolfSSL_sk_X509_push(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk, WOLFSSL_X509* x509); WOLFSSL_API WOLFSSL_X509* wolfSSL_sk_X509_pop(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk); WOLFSSL_API void wolfSSL_sk_X509_free(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk); +WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_sk_GENERAL_NAME_value( + WOLFSSL_STACK* sk, int i); +WOLFSSL_API int wolfSSL_sk_GENERAL_NAME_num(WOLFSSL_STACK* sk); +WOLFSSL_API void wolfSSL_sk_GENERAL_NAME_pop_free(WOLFSSL_STACK* sk, + void f (WOLFSSL_ASN1_OBJECT*)); WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_ASN1_OBJECT_new(void); WOLFSSL_API void wolfSSL_ASN1_OBJECT_free(WOLFSSL_ASN1_OBJECT* obj); WOLFSSL_API int wolfSSL_sk_ASN1_OBJECT_push(WOLF_STACK_OF(WOLFSSL_ASN1_OBJEXT)* sk, @@ -616,8 +728,12 @@ WOLFSSL_API const char* wolfSSL_get_cipher(WOLFSSL*); WOLFSSL_API WOLFSSL_SESSION* wolfSSL_get1_session(WOLFSSL* ssl); /* what's ref count */ -WOLFSSL_API void wolfSSL_X509_free(WOLFSSL_X509*); +WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_new(void); + +#ifdef OPENSSL_EXTRA WOLFSSL_API void wolfSSL_OPENSSL_free(void*); +WOLFSSL_API void *wolfSSL_OPENSSL_malloc(size_t a); +#endif WOLFSSL_API int wolfSSL_OCSP_parse_url(char* url, char** host, char** port, char** path, int* ssl); @@ -626,14 +742,12 @@ WOLFSSL_API WOLFSSL_METHOD* wolfSSLv23_client_method(void); WOLFSSL_API WOLFSSL_METHOD* wolfSSLv2_client_method(void); WOLFSSL_API WOLFSSL_METHOD* wolfSSLv2_server_method(void); -WOLFSSL_API void wolfSSL_MD4_Init(WOLFSSL_MD4_CTX*); -WOLFSSL_API void wolfSSL_MD4_Update(WOLFSSL_MD4_CTX*, const void*, unsigned long); -WOLFSSL_API void wolfSSL_MD4_Final(unsigned char*, WOLFSSL_MD4_CTX*); - - WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new(WOLFSSL_BIO_METHOD*); WOLFSSL_API int wolfSSL_BIO_free(WOLFSSL_BIO*); WOLFSSL_API int wolfSSL_BIO_free_all(WOLFSSL_BIO*); +WOLFSSL_API int wolfSSL_BIO_gets(WOLFSSL_BIO* bio, char* buf, int sz); +WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_next(WOLFSSL_BIO* bio); +WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_find_type(WOLFSSL_BIO* bio, int type); WOLFSSL_API int wolfSSL_BIO_read(WOLFSSL_BIO*, void*, int); WOLFSSL_API int wolfSSL_BIO_write(WOLFSSL_BIO*, const void*, int); WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_push(WOLFSSL_BIO*, WOLFSSL_BIO* append); @@ -689,14 +803,14 @@ WOLFSSL_API int wolfSSL_RAND_write_file(const char*); WOLFSSL_API int wolfSSL_RAND_load_file(const char*, long); WOLFSSL_API int wolfSSL_RAND_egd(const char*); WOLFSSL_API int wolfSSL_RAND_seed(const void*, int); +WOLFSSL_API void wolfSSL_RAND_Cleanup(void); WOLFSSL_API void wolfSSL_RAND_add(const void*, int, double); WOLFSSL_API WOLFSSL_COMP_METHOD* wolfSSL_COMP_zlib(void); WOLFSSL_API WOLFSSL_COMP_METHOD* wolfSSL_COMP_rle(void); WOLFSSL_API int wolfSSL_COMP_add_compression_method(int, void*); -WOLFSSL_API int wolfSSL_get_ex_new_index(long, void*, void*, void*, void*); - +WOLFSSL_API unsigned long wolfSSL_thread_id(void); WOLFSSL_API void wolfSSL_set_id_callback(unsigned long (*f)(void)); WOLFSSL_API void wolfSSL_set_locking_callback(void (*f)(int, int, const char*, int)); @@ -713,6 +827,11 @@ WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_STORE_CTX_get_current_cert( WOLFSSL_API int wolfSSL_X509_STORE_CTX_get_error(WOLFSSL_X509_STORE_CTX*); WOLFSSL_API int wolfSSL_X509_STORE_CTX_get_error_depth(WOLFSSL_X509_STORE_CTX*); +WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_verify_cb(WOLFSSL_X509_STORE_CTX *ctx, + WOLFSSL_X509_STORE_CTX_verify_cb verify_cb); +WOLFSSL_API int wolfSSL_i2d_X509_NAME(WOLFSSL_X509_NAME* n, + unsigned char** out); +WOLFSSL_API int wolfSSL_X509_print(WOLFSSL_BIO* bio, WOLFSSL_X509* x509); WOLFSSL_API char* wolfSSL_X509_NAME_oneline(WOLFSSL_X509_NAME*, char*, int); WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_issuer_name(WOLFSSL_X509*); WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_subject_name(WOLFSSL_X509*); @@ -732,7 +851,12 @@ WOLFSSL_API int wolfSSL_X509_NAME_get_text_by_NID( WOLFSSL_API int wolfSSL_X509_NAME_get_index_by_NID( WOLFSSL_X509_NAME*, int, int); WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_X509_NAME_ENTRY_get_data(WOLFSSL_X509_NAME_ENTRY*); -WOLFSSL_API char* wolfSSL_ASN1_STRING_data(WOLFSSL_ASN1_STRING*); +WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_ASN1_STRING_new(void); +WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_ASN1_STRING_type_new(int type); +WOLFSSL_API void wolfSSL_ASN1_STRING_free(WOLFSSL_ASN1_STRING* asn1); +WOLFSSL_API int wolfSSL_ASN1_STRING_set(WOLFSSL_ASN1_STRING* asn1, + const void* data, int dataSz); +WOLFSSL_API unsigned char* wolfSSL_ASN1_STRING_data(WOLFSSL_ASN1_STRING*); WOLFSSL_API int wolfSSL_ASN1_STRING_length(WOLFSSL_ASN1_STRING*); WOLFSSL_API int wolfSSL_X509_verify_cert(WOLFSSL_X509_STORE_CTX*); WOLFSSL_API const char* wolfSSL_X509_verify_cert_error_string(long); @@ -769,16 +893,25 @@ WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_nextUpdate(WOLFSSL_X509_CRL* WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_X509_get_pubkey(WOLFSSL_X509*); WOLFSSL_API int wolfSSL_X509_CRL_verify(WOLFSSL_X509_CRL*, WOLFSSL_EVP_PKEY*); -WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_error(WOLFSSL_X509_STORE_CTX*, - int); WOLFSSL_API void wolfSSL_X509_OBJECT_free_contents(WOLFSSL_X509_OBJECT*); +WOLFSSL_API WOLFSSL_PKCS8_PRIV_KEY_INFO* wolfSSL_d2i_PKCS8_PKEY_bio( + WOLFSSL_BIO* bio, WOLFSSL_PKCS8_PRIV_KEY_INFO** pkey); +WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PUBKEY_bio(WOLFSSL_BIO* bio, + WOLFSSL_EVP_PKEY** out); +WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PUBKEY(WOLFSSL_EVP_PKEY** key, + unsigned char** in, long inSz); WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PrivateKey(int type, WOLFSSL_EVP_PKEY** out, const unsigned char **in, long inSz); +WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_PKEY_new_ex(void* heap); WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_PKEY_new(void); WOLFSSL_API void wolfSSL_EVP_PKEY_free(WOLFSSL_EVP_PKEY*); WOLFSSL_API int wolfSSL_X509_cmp_current_time(const WOLFSSL_ASN1_TIME*); WOLFSSL_API int wolfSSL_sk_X509_REVOKED_num(WOLFSSL_X509_REVOKED*); - +#ifdef OPENSSL_EXTRA +WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_time(WOLFSSL_X509_STORE_CTX*, + unsigned long flags, + time_t t); +#endif WOLFSSL_API WOLFSSL_X509_REVOKED* wolfSSL_X509_CRL_get_REVOKED(WOLFSSL_X509_CRL*); WOLFSSL_API WOLFSSL_X509_REVOKED* wolfSSL_sk_X509_REVOKED_value( WOLFSSL_X509_REVOKED*,int); @@ -786,6 +919,8 @@ WOLFSSL_API WOLFSSL_ASN1_INTEGER* wolfSSL_X509_get_serialNumber(WOLFSSL_X509*); WOLFSSL_API int wolfSSL_ASN1_TIME_print(WOLFSSL_BIO*, const WOLFSSL_ASN1_TIME*); +WOLFSSL_API char* wolfSSL_ASN1_TIME_to_string(WOLFSSL_ASN1_TIME* t, + char* buf, int len); WOLFSSL_API int wolfSSL_ASN1_INTEGER_cmp(const WOLFSSL_ASN1_INTEGER*, const WOLFSSL_ASN1_INTEGER*); WOLFSSL_API long wolfSSL_ASN1_INTEGER_get(const WOLFSSL_ASN1_INTEGER*); @@ -794,6 +929,8 @@ WOLFSSL_API long wolfSSL_ASN1_INTEGER_get(const WOLFSSL_ASN1_INTEGER*); WOLFSSL_API WOLFSSL_BIGNUM *wolfSSL_ASN1_INTEGER_to_BN(const WOLFSSL_ASN1_INTEGER *ai, WOLFSSL_BIGNUM *bn); WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_load_client_CA_file(const char*); +WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_ASN1_TIME_adj(WOLFSSL_ASN1_TIME*, time_t, + int, long); #endif WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_SSL_CTX_get_client_CA_list( @@ -802,6 +939,8 @@ WOLFSSL_API void wolfSSL_CTX_set_client_CA_list(WOLFSSL_CTX*, WOLF_STACK_OF(WOLFSSL_X509_NAME)*); WOLFSSL_API void* wolfSSL_X509_STORE_CTX_get_ex_data(WOLFSSL_X509_STORE_CTX*, int); WOLFSSL_API int wolfSSL_get_ex_data_X509_STORE_CTX_idx(void); +WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_error( + WOLFSSL_X509_STORE_CTX* ctx, int er); WOLFSSL_API void* wolfSSL_get_ex_data(const WOLFSSL*, int); WOLFSSL_API void wolfSSL_CTX_set_default_passwd_cb_userdata(WOLFSSL_CTX*, @@ -816,9 +955,9 @@ WOLFSSL_API void wolfSSL_CTX_set_info_callback(WOLFSSL_CTX*, WOLFSSL_API unsigned long wolfSSL_ERR_peek_error(void); WOLFSSL_API int wolfSSL_GET_REASON(int); -WOLFSSL_API char* wolfSSL_alert_type_string_long(int); -WOLFSSL_API char* wolfSSL_alert_desc_string_long(int); -WOLFSSL_API char* wolfSSL_state_string_long(const WOLFSSL*); +WOLFSSL_API const char* wolfSSL_alert_type_string_long(int); +WOLFSSL_API const char* wolfSSL_alert_desc_string_long(int); +WOLFSSL_API const char* wolfSSL_state_string_long(const WOLFSSL*); WOLFSSL_API WOLFSSL_RSA* wolfSSL_RSA_generate_key(int, unsigned long, void(*)(int, int, void*), void*); @@ -850,9 +989,13 @@ WOLFSSL_API int wolfSSL_CTX_set_read_ahead(WOLFSSL_CTX*, int v); WOLFSSL_API long wolfSSL_CTX_set_tlsext_status_arg(WOLFSSL_CTX*, void* arg); WOLFSSL_API long wolfSSL_CTX_set_tlsext_opaque_prf_input_callback_arg( WOLFSSL_CTX*, void* arg); +WOLFSSL_API int wolfSSL_CTX_add_client_CA(WOLFSSL_CTX*, WOLFSSL_X509*); +WOLFSSL_API int wolfSSL_CTX_set_srp_password(WOLFSSL_CTX*, char*); +WOLFSSL_API int wolfSSL_CTX_set_srp_username(WOLFSSL_CTX*, char*); -WOLFSSL_API unsigned long wolfSSL_set_options(WOLFSSL *s, unsigned long op); -WOLFSSL_API unsigned long wolfSSL_get_options(const WOLFSSL *s); +WOLFSSL_API long wolfSSL_set_options(WOLFSSL *s, long op); +WOLFSSL_API long wolfSSL_get_options(const WOLFSSL *s); +WOLFSSL_API long wolfSSL_clear_options(WOLFSSL *s, long op); WOLFSSL_API long wolfSSL_clear_num_renegotiations(WOLFSSL *s); WOLFSSL_API long wolfSSL_total_renegotiations(WOLFSSL *s); WOLFSSL_API long wolfSSL_set_tmp_dh(WOLFSSL *s, WOLFSSL_DH *dh); @@ -945,6 +1088,7 @@ enum { SSL_ST_CONNECT = 0x1000, SSL_ST_ACCEPT = 0x2000, + SSL_ST_MASK = 0x0FFF, SSL_CB_LOOP = 0x01, SSL_CB_EXIT = 0x02, @@ -959,6 +1103,8 @@ enum { SSL_CB_ACCEPT_EXIT = (SSL_ST_ACCEPT | SSL_CB_EXIT), SSL_CB_CONNECT_LOOP = (SSL_ST_CONNECT | SSL_CB_LOOP), SSL_CB_CONNECT_EXIT = (SSL_ST_CONNECT | SSL_CB_EXIT), + SSL_CB_MODE_READ = 1, + SSL_CB_MODE_WRITE = 2, SSL_MODE_ENABLE_PARTIAL_WRITE = 2, @@ -1019,6 +1165,8 @@ enum { X509_V_ERR_NO_EXPLICIT_POLICY, X509_V_ERR_UNNESTED_RESOURCE, + X509_R_CERT_ALREADY_IN_HASH_TABLE, + XN_FLAG_SPC_EQ = (1 << 23), XN_FLAG_ONELINE = 0, XN_FLAG_RFC2253 = 1, @@ -1204,6 +1352,9 @@ enum { #endif +WOLFSSL_API void wolfSSL_ERR_put_error(int lib, int fun, int err, + const char* file, int line); +WOLFSSL_API unsigned long wolfSSL_ERR_get_error_line(const char**, int*); WOLFSSL_API unsigned long wolfSSL_ERR_get_error_line_data(const char**, int*, const char**, int *); @@ -1212,11 +1363,15 @@ WOLFSSL_API void wolfSSL_ERR_clear_error(void); WOLFSSL_API int wolfSSL_RAND_status(void); +WOLFSSL_API int wolfSSL_RAND_pseudo_bytes(unsigned char* buf, int num); WOLFSSL_API int wolfSSL_RAND_bytes(unsigned char* buf, int num); WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_server_method(void); WOLFSSL_API long wolfSSL_CTX_set_options(WOLFSSL_CTX*, long); +WOLFSSL_API long wolfSSL_CTX_get_options(WOLFSSL_CTX* ctx); +WOLFSSL_API long wolfSSL_CTX_clear_options(WOLFSSL_CTX*, long); + #ifndef NO_CERTS - WOLFSSL_API int wolfSSL_CTX_check_private_key(WOLFSSL_CTX*); + WOLFSSL_API int wolfSSL_CTX_check_private_key(const WOLFSSL_CTX*); #endif /* !NO_CERTS */ WOLFSSL_API void wolfSSL_ERR_free_strings(void); @@ -1236,6 +1391,7 @@ WOLFSSL_API int wolfSSL_CTX_set_default_verify_paths(WOLFSSL_CTX*); WOLFSSL_API int wolfSSL_CTX_set_session_id_context(WOLFSSL_CTX*, const unsigned char*, unsigned int); WOLFSSL_API WOLFSSL_X509* wolfSSL_get_peer_certificate(WOLFSSL* ssl); +WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_get_peer_cert_chain(const WOLFSSL*); WOLFSSL_API int wolfSSL_want_read(WOLFSSL*); WOLFSSL_API int wolfSSL_want_write(WOLFSSL*); @@ -1285,11 +1441,6 @@ WOLFSSL_API const char* wolfSSL_lib_version(void); /* which library version do we have in hex */ WOLFSSL_API unsigned int wolfSSL_lib_version_hex(void); -/* turn logging on, only if compiled in */ -WOLFSSL_API int wolfSSL_Debugging_ON(void); -/* turn logging off */ -WOLFSSL_API void wolfSSL_Debugging_OFF(void); - /* do accept or connect depedning on side */ WOLFSSL_API int wolfSSL_negotiate(WOLFSSL* ssl); /* turn on wolfSSL data compression */ @@ -1314,7 +1465,8 @@ WOLFSSL_API unsigned char* wolfSSL_get_chain_cert(WOLFSSL_X509_CHAIN*, int idx); /* index cert in X509 */ WOLFSSL_API WOLFSSL_X509* wolfSSL_get_chain_X509(WOLFSSL_X509_CHAIN*, int idx); /* free X509 */ -WOLFSSL_API void wolfSSL_FreeX509(WOLFSSL_X509*); +#define wolfSSL_FreeX509(x509) wolfSSL_X509_free((x509)) +WOLFSSL_API void wolfSSL_X509_free(WOLFSSL_X509*); /* get index cert in PEM */ WOLFSSL_API int wolfSSL_get_chain_cert_pem(WOLFSSL_X509_CHAIN*, int idx, unsigned char* buf, int inLen, int* outLen); @@ -1330,8 +1482,11 @@ WOLFSSL_API int wolfSSL_cmp_peer_cert_to_file(WOLFSSL*, const char*); WOLFSSL_API char* wolfSSL_X509_get_next_altname(WOLFSSL_X509*); +WOLFSSL_API WOLFSSL_X509* wolfSSL_d2i_X509(WOLFSSL_X509** x509, + const unsigned char** in, int len); WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_d2i(WOLFSSL_X509** x509, const unsigned char* in, int len); +WOLFSSL_API int wolfSSL_i2d_X509(WOLFSSL_X509* x509, unsigned char** out); #ifndef NO_FILESYSTEM #ifndef NO_STDIO_FILESYSTEM WOLFSSL_API WOLFSSL_X509* @@ -1362,7 +1517,12 @@ typedef struct WC_PKCS12 WC_PKCS12; WOLFSSL_API WC_PKCS12* wolfSSL_d2i_PKCS12_bio(WOLFSSL_BIO* bio, WC_PKCS12** pkcs12); WOLFSSL_API int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw, - WOLFSSL_EVP_PKEY** pkey, WOLFSSL_X509** cert, WOLF_STACK_OF(WOLFSSL_X509)** ca); + WOLFSSL_EVP_PKEY** pkey, WOLFSSL_X509** cert, + WOLF_STACK_OF(WOLFSSL_X509)** ca); +WOLFSSL_API WC_PKCS12* wolfSSL_PKCS12_create(char* pass, char* name, + WOLFSSL_EVP_PKEY* pkey, WOLFSSL_X509* cert, + WOLF_STACK_OF(WOLFSSL_X509)* ca, + int keyNID, int certNID, int itt, int macItt, int keytype); WOLFSSL_API void wolfSSL_PKCS12_PBE_add(void); @@ -1425,7 +1585,8 @@ WOLFSSL_API int wolfSSL_make_eap_keys(WOLFSSL*, void* key, unsigned int len, #include #elif !defined(WOLFSSL_MDK_ARM) && !defined(WOLFSSL_IAR_ARM) && \ !defined(WOLFSSL_PICOTCP) && !defined(WOLFSSL_ROWLEY_ARM) && \ - !defined(WOLFSSL_EMBOS) && !defined(WOLFSSL_FROSTED) + !defined(WOLFSSL_EMBOS) && !defined(WOLFSSL_FROSTED) && \ + !defined(WOLFSSL_CHIBIOS) #include #endif /* allow writev style writing */ @@ -1513,6 +1674,7 @@ enum { WOLFSSL_TLSV1 = 1, WOLFSSL_TLSV1_1 = 2, WOLFSSL_TLSV1_2 = 3, + WOLFSSL_TLSV1_3 = 4, WOLFSSL_USER_CA = 1, /* user added as trusted */ WOLFSSL_CHAIN_CA = 2 /* added to cache from trusted chain */ }; @@ -1526,6 +1688,7 @@ WOLFSSL_API int wolfSSL_CTX_GetObjectSize(void); WOLFSSL_API int wolfSSL_METHOD_GetObjectSize(void); WOLFSSL_API int wolfSSL_GetOutputSize(WOLFSSL*, int); WOLFSSL_API int wolfSSL_GetMaxOutputSize(WOLFSSL*); +WOLFSSL_API int wolfSSL_GetVersion(WOLFSSL* ssl); WOLFSSL_API int wolfSSL_SetVersion(WOLFSSL* ssl, int version); WOLFSSL_API int wolfSSL_KeyPemToDer(const unsigned char*, int, unsigned char*, int, const char*); @@ -1608,7 +1771,9 @@ enum BulkCipherAlgorithm { wolfssl_des, wolfssl_triple_des, /* leading 3 (3des) not valid identifier */ wolfssl_des40, +#ifdef HAVE_IDEA wolfssl_idea, +#endif wolfssl_aes, wolfssl_aes_gcm, wolfssl_aes_ccm, @@ -1655,6 +1820,19 @@ WOLFSSL_API void wolfSSL_CTX_SetEccSharedSecretCb(WOLFSSL_CTX*, CallbackEccShar WOLFSSL_API void wolfSSL_SetEccSharedSecretCtx(WOLFSSL* ssl, void *ctx); WOLFSSL_API void* wolfSSL_GetEccSharedSecretCtx(WOLFSSL* ssl); +#ifndef NO_DH +/* Public DH Key Callback support */ +struct DhKey; +typedef int (*CallbackDhAgree)(WOLFSSL* ssl, struct DhKey* key, + const unsigned char* priv, unsigned int privSz, + const unsigned char* otherPubKeyDer, unsigned int otherPubKeySz, + unsigned char* out, unsigned int* outlen, + void* ctx); +WOLFSSL_API void wolfSSL_CTX_SetDhAgreeCb(WOLFSSL_CTX*, CallbackDhAgree); +WOLFSSL_API void wolfSSL_SetDhAgreeCtx(WOLFSSL* ssl, void *ctx); +WOLFSSL_API void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl); +#endif /* !NO_DH */ + struct ed25519_key; typedef int (*CallbackEd25519Sign)(WOLFSSL* ssl, const unsigned char* in, unsigned int inSz, @@ -1854,8 +2032,10 @@ WOLFSSL_API int wolfSSL_CTX_UseClientSuites(WOLFSSL_CTX* ctx); WOLFSSL_API int wolfSSL_UseClientSuites(WOLFSSL* ssl); /* async additions */ -WOLFSSL_API int wolfSSL_UseAsync(WOLFSSL*, int devId); -WOLFSSL_API int wolfSSL_CTX_UseAsync(WOLFSSL_CTX*, int devId); +#define wolfSSL_UseAsync wolfSSL_SetDevId +#define wolfSSL_CTX_UseAsync wolfSSL_CTX_SetDevId +WOLFSSL_API int wolfSSL_SetDevId(WOLFSSL*, int devId); +WOLFSSL_API int wolfSSL_CTX_SetDevId(WOLFSSL_CTX*, int devId); /* helpers to get device id and heap */ WOLFSSL_API int wolfSSL_CTX_GetDevId(WOLFSSL_CTX* ctx, WOLFSSL* ssl); @@ -1895,6 +2075,11 @@ WOLFSSL_API void wolfSSL_SNI_SetOptions(WOLFSSL* ssl, unsigned char type, unsigned char options); WOLFSSL_API void wolfSSL_CTX_SNI_SetOptions(WOLFSSL_CTX* ctx, unsigned char type, unsigned char options); +WOLFSSL_API int wolfSSL_SNI_GetFromBuffer( + const unsigned char* clientHello, unsigned int helloSz, + unsigned char type, unsigned char* sni, unsigned int* inOutSz); + +#endif /* NO_WOLFSSL_SERVER */ /* SNI status */ enum { @@ -1908,12 +2093,8 @@ WOLFSSL_API unsigned char wolfSSL_SNI_Status(WOLFSSL* ssl, unsigned char type); WOLFSSL_API unsigned short wolfSSL_SNI_GetRequest(WOLFSSL *ssl, unsigned char type, void** data); -WOLFSSL_API int wolfSSL_SNI_GetFromBuffer( - const unsigned char* clientHello, unsigned int helloSz, - unsigned char type, unsigned char* sni, unsigned int* inOutSz); -#endif -#endif +#endif /* HAVE_SNI */ /* Application-Layer Protocol Negotiation */ #ifdef HAVE_ALPN @@ -2231,13 +2412,56 @@ WOLFSSL_API int wolfSSL_accept_ex(WOLFSSL*, HandShakeCallBack, TimeoutCallBack, WOLFSSL_API void wolfSSL_cert_service(void); #endif -#if defined(WOLFSSL_MYSQL_COMPATIBLE) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) -WOLFSSL_API char* wolfSSL_ASN1_TIME_to_string(WOLFSSL_ASN1_TIME* time, - char* buf, int len); -#endif /* WOLFSSL_MYSQL_COMPATIBLE */ +#if (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) +/* Smaller subset of X509 compatibility functions. Avoid increasing the size of + * this subset and its memory usage */ + +#include +struct WOLFSSL_X509_NAME_ENTRY { + WOLFSSL_ASN1_OBJECT* object; /* not defined yet */ + WOLFSSL_ASN1_STRING data; + WOLFSSL_ASN1_STRING* value; /* points to data, for lighttpd port */ + int nid; /* i.e. ASN_COMMON_NAME */ + int set; + int size; +}; +#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ #ifdef OPENSSL_EXTRA +enum { + WOLFSSL_SYS_ACCEPT = 0, + WOLFSSL_SYS_BIND, + WOLFSSL_SYS_CONNECT, + WOLFSSL_SYS_FOPEN, + WOLFSSL_SYS_FREAD, + WOLFSSL_SYS_GETADDRINFO, + WOLFSSL_SYS_GETSOCKOPT, + WOLFSSL_SYS_GETSOCKNAME, + WOLFSSL_SYS_GETHOSTBYNAME, + WOLFSSL_SYS_GETNAMEINFO, + WOLFSSL_SYS_GETSERVBYNAME, + WOLFSSL_SYS_IOCTLSOCKET, + WOLFSSL_SYS_LISTEN, + WOLFSSL_SYS_OPENDIR, + WOLFSSL_SYS_SETSOCKOPT, + WOLFSSL_SYS_SOCKET +}; + +/* Object functions */ +WOLFSSL_API const char * wolfSSL_OBJ_nid2sn(int n); +WOLFSSL_API int wolfSSL_OBJ_obj2nid(const WOLFSSL_ASN1_OBJECT *o); +WOLFSSL_API int wolfSSL_OBJ_sn2nid(const char *sn); + +WOLFSSL_API char* wolfSSL_OBJ_nid2ln(int n); +WOLFSSL_API int wolfSSL_OBJ_txt2nid(const char *sn); + +WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_OBJ_nid2obj(int n); +WOLFSSL_API int wolfSSL_OBJ_obj2txt(char *buf, int buf_len, WOLFSSL_ASN1_OBJECT *a, int no_name); + +WOLFSSL_API void wolfSSL_OBJ_cleanup(void); +/* end of object functions */ + #ifndef NO_FILESYSTEM WOLFSSL_API long wolfSSL_BIO_set_fp(WOLFSSL_BIO *bio, XFILE fp, int c); WOLFSSL_API long wolfSSL_BIO_get_fp(WOLFSSL_BIO *bio, XFILE* fp); @@ -2248,6 +2472,14 @@ WOLFSSL_API long wolfSSL_ctrl(WOLFSSL* ssl, int cmd, long opt, void* pt); WOLFSSL_API long wolfSSL_CTX_ctrl(WOLFSSL_CTX* ctx, int cmd, long opt,void* pt); #ifndef NO_CERTS +WOLFSSL_API WOLFSSL_X509_NAME_ENTRY* wolfSSL_X509_NAME_ENTRY_create_by_NID( + WOLFSSL_X509_NAME_ENTRY** out, int nid, int type, + unsigned char* data, int dataSz); +WOLFSSL_API int wolfSSL_X509_NAME_add_entry(WOLFSSL_X509_NAME* name, + WOLFSSL_X509_NAME_ENTRY* entry, int idx, int set); +WOLFSSL_API int wolfSSL_X509_NAME_cmp(const WOLFSSL_X509_NAME* x, + const WOLFSSL_X509_NAME* y); +WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_NAME_new(void); WOLFSSL_API int wolfSSL_check_private_key(const WOLFSSL* ssl); WOLFSSL_API void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, int nid, int* c, int* idx); @@ -2274,7 +2506,9 @@ WOLFSSL_API int wolfSSL_SESSION_get_master_key_length(const WOLFSSL_SESSION* ses WOLFSSL_API void wolfSSL_CTX_set_cert_store(WOLFSSL_CTX* ctx, WOLFSSL_X509_STORE* str); -WOLFSSL_X509* wolfSSL_d2i_X509_bio(WOLFSSL_BIO* bio, WOLFSSL_X509** x509); +WOLFSSL_API int wolfSSL_i2d_X509_bio(WOLFSSL_BIO* bio, WOLFSSL_X509* x509); +WOLFSSL_API WOLFSSL_X509* wolfSSL_d2i_X509_bio(WOLFSSL_BIO* bio, + WOLFSSL_X509** x509); WOLFSSL_API WOLFSSL_X509_STORE* wolfSSL_CTX_get_cert_store(WOLFSSL_CTX* ctx); WOLFSSL_API size_t wolfSSL_BIO_ctrl_pending(WOLFSSL_BIO *b); @@ -2291,28 +2525,25 @@ WOLFSSL_API WOLFSSL_X509 *wolfSSL_PEM_read_bio_X509_AUX /*lighttp compatibility */ -#include -struct WOLFSSL_X509_NAME_ENTRY { - WOLFSSL_ASN1_OBJECT* object; /* not defined yet */ - WOLFSSL_ASN1_STRING data; - WOLFSSL_ASN1_STRING* value; /* points to data, for lighttpd port */ - int set; - int size; +struct WOLFSSL_ASN1_BIT_STRING { + int length; + int type; + char* data; + long flags; }; + #if defined(HAVE_LIGHTY) || defined(WOLFSSL_MYSQL_COMPATIBLE) \ || defined(HAVE_STUNNEL) \ || defined(WOLFSSL_NGINX) \ || defined(WOLFSSL_HAPROXY) \ || defined(OPENSSL_EXTRA) -WOLFSSL_API void wolfSSL_X509_NAME_free(WOLFSSL_X509_NAME *name); +WOLFSSL_API void wolfSSL_X509_NAME_ENTRY_free(WOLFSSL_X509_NAME_ENTRY* ne); +WOLFSSL_API WOLFSSL_X509_NAME_ENTRY* wolfSSL_X509_NAME_ENTRY_new(void); +WOLFSSL_API void wolfSSL_X509_NAME_free(WOLFSSL_X509_NAME* name); WOLFSSL_API char wolfSSL_CTX_use_certificate(WOLFSSL_CTX *ctx, WOLFSSL_X509 *x); WOLFSSL_API int wolfSSL_BIO_read_filename(WOLFSSL_BIO *b, const char *name); /* These are to be merged shortly */ -WOLFSSL_API const char * wolfSSL_OBJ_nid2sn(int n); -WOLFSSL_API int wolfSSL_OBJ_obj2nid(const WOLFSSL_ASN1_OBJECT *o); -WOLFSSL_API int wolfSSL_OBJ_sn2nid(const char *sn); -WOLFSSL_API void wolfSSL_CTX_set_verify_depth(WOLFSSL_CTX *ctx,int depth); WOLFSSL_API void wolfSSL_set_verify_depth(WOLFSSL *ssl,int depth); WOLFSSL_API void* wolfSSL_get_app_data( const WOLFSSL *ssl); WOLFSSL_API int wolfSSL_set_app_data(WOLFSSL *ssl, void *arg); @@ -2320,6 +2551,7 @@ WOLFSSL_API WOLFSSL_ASN1_OBJECT * wolfSSL_X509_NAME_ENTRY_get_object(WOLFSSL_X50 WOLFSSL_API WOLFSSL_X509_NAME_ENTRY *wolfSSL_X509_NAME_get_entry(WOLFSSL_X509_NAME *name, int loc); WOLFSSL_API void wolfSSL_sk_X509_NAME_pop_free(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk, void f (WOLFSSL_X509_NAME*)); WOLFSSL_API unsigned char *wolfSSL_SHA1(const unsigned char *d, size_t n, unsigned char *md); +WOLFSSL_API unsigned char *wolfSSL_SHA256(const unsigned char *d, size_t n, unsigned char *md); WOLFSSL_API int wolfSSL_X509_check_private_key(WOLFSSL_X509*, WOLFSSL_EVP_PKEY*); WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME) *wolfSSL_dup_CA_list( WOLF_STACK_OF(WOLFSSL_X509_NAME) *sk ); @@ -2332,23 +2564,21 @@ WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME) *wolfSSL_dup_CA_list( WOLF_STACK_OF || defined(WOLFSSL_HAPROXY) \ || defined(OPENSSL_EXTRA) -WOLFSSL_API char* wolfSSL_OBJ_nid2ln(int n); -WOLFSSL_API int wolfSSL_OBJ_txt2nid(const char *sn); WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new_file(const char *filename, const char *mode); WOLFSSL_API long wolfSSL_CTX_set_tmp_dh(WOLFSSL_CTX*, WOLFSSL_DH*); WOLFSSL_API WOLFSSL_DH *wolfSSL_PEM_read_bio_DHparams(WOLFSSL_BIO *bp, WOLFSSL_DH **x, pem_password_cb *cb, void *u); WOLFSSL_API WOLFSSL_DSA *wolfSSL_PEM_read_bio_DSAparams(WOLFSSL_BIO *bp, WOLFSSL_DSA **x, pem_password_cb *cb, void *u); +WOLFSSL_API int wolfSSL_PEM_write_bio_X509_REQ(WOLFSSL_BIO *bp,WOLFSSL_X509 *x); +WOLFSSL_API int wolfSSL_PEM_write_bio_X509_AUX(WOLFSSL_BIO *bp,WOLFSSL_X509 *x); WOLFSSL_API int wolfSSL_PEM_write_bio_X509(WOLFSSL_BIO *bp, WOLFSSL_X509 *x); -WOLFSSL_API long wolfSSL_CTX_get_options(WOLFSSL_CTX* ctx); - - #endif /* HAVE_STUNNEL || HAVE_LIGHTY */ -#if defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) +#if defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || \ + defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) #include @@ -2358,6 +2588,9 @@ typedef int (*CallbackSniRecv)(WOLFSSL *ssl, int *ret, void* exArg); WOLFSSL_API int wolfSSL_CRYPTO_set_mem_ex_functions(void *(*m) (size_t, const char *, int), void *(*r) (void *, size_t, const char *, int), void (*f) (void *)); +WOLFSSL_API void wolfSSL_CRYPTO_cleanup_all_ex_data(void); + +WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_DH_1536_prime(WOLFSSL_BIGNUM* bn); WOLFSSL_API WOLFSSL_DH *wolfSSL_DH_generate_parameters(int prime_len, int generator, void (*callback) (int, int, void *), void *cb_arg); @@ -2398,8 +2631,6 @@ WOLFSSL_API void* wolfSSL_sk_X509_NAME_value(const WOLF_STACK_OF(WOLFSSL_X509_NA WOLFSSL_API void* wolfSSL_sk_X509_value(WOLF_STACK_OF(WOLFSSL_X509)*, int); -WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_get_peer_cert_chain(const WOLFSSL*); - WOLFSSL_API void* wolfSSL_SESSION_get_ex_data(const WOLFSSL_SESSION*, int); WOLFSSL_API int wolfSSL_SESSION_set_ex_data(WOLFSSL_SESSION*, int, void*); @@ -2434,8 +2665,6 @@ WOLFSSL_API void WOLFSSL_ERR_remove_thread_state(void*); WOLFSSL_API void wolfSSL_print_all_errors_fp(XFILE *fp); #endif -WOLFSSL_API long wolfSSL_CTX_clear_options(WOLFSSL_CTX*, long); - WOLFSSL_API void wolfSSL_THREADID_set_callback(void (*threadid_func)(void*)); WOLFSSL_API void wolfSSL_THREADID_set_numeric(void* id, unsigned long val); @@ -2475,14 +2704,21 @@ WOLFSSL_API int wolfSSL_CTX_set_msg_callback(WOLFSSL_CTX *ctx, SSL_Msg_Cb cb); WOLFSSL_API int wolfSSL_set_msg_callback(WOLFSSL *ssl, SSL_Msg_Cb cb); WOLFSSL_API int wolfSSL_CTX_set_msg_callback_arg(WOLFSSL_CTX *ctx, void* arg); WOLFSSL_API int wolfSSL_set_msg_callback_arg(WOLFSSL *ssl, void* arg); -#endif - -#ifdef OPENSSL_EXTRA WOLFSSL_API unsigned long wolfSSL_ERR_peek_error_line_data(const char **file, int *line, const char **data, int *flags); +WOLFSSL_API int wolfSSL_CTX_set_alpn_protos(WOLFSSL_CTX *ctx, + const unsigned char *protos, unsigned int protos_len); +WOLFSSL_API void *wolfSSL_OPENSSL_memdup(const void *data, + size_t siz, const char* file, int line); +WOLFSSL_API void wolfSSL_ERR_load_BIO_strings(void); #endif -#if defined WOLFSSL_NGINX || defined WOLFSSL_HAPROXY +#if defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) || \ + defined(OPENSSL_EXTRA) +WOLFSSL_API void wolfSSL_OPENSSL_config(char *config_name); +#endif + +#if defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) /* Not an OpenSSL API. */ WOLFSSL_LOCAL int wolfSSL_get_ocsp_response(WOLFSSL* ssl, byte** response); /* Not an OpenSSL API. */ @@ -2491,7 +2727,6 @@ WOLFSSL_LOCAL char* wolfSSL_get_ocsp_url(WOLFSSL* ssl); WOLFSSL_API int wolfSSL_set_ocsp_url(WOLFSSL* ssl, char* url); WOLFSSL_API WOLF_STACK_OF(WOLFSSL_CIPHER) *wolfSSL_get_ciphers_compat(const WOLFSSL *ssl); -WOLFSSL_API void wolfSSL_OPENSSL_config(char *config_name); WOLFSSL_API int wolfSSL_X509_get_ex_new_index(int idx, void *arg, void *a, void *b, void *c); WOLFSSL_API void *wolfSSL_X509_get_ex_data(WOLFSSL_X509 *x509, int idx); @@ -2596,8 +2831,6 @@ WOLFSSL_API void *X509_get0_tbs_sigalg(const WOLFSSL_X509 *x); WOLFSSL_API void X509_ALGOR_get0(WOLFSSL_ASN1_OBJECT **paobj, int *pptype, const void **ppval, const void *algor); WOLFSSL_API void *X509_get_X509_PUBKEY(void * x); WOLFSSL_API int X509_PUBKEY_get0_param(WOLFSSL_ASN1_OBJECT **ppkalg, const unsigned char **pk, int *ppklen, void **pa, WOLFSSL_EVP_PKEY *pub); -WOLFSSL_API int EVP_PKEY_bits(WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API int i2d_X509(WOLFSSL_X509 *x, unsigned char **out); WOLFSSL_API int i2t_ASN1_OBJECT(char *buf, int buf_len, WOLFSSL_ASN1_OBJECT *a); WOLFSSL_API void SSL_CTX_set_tmp_dh_callback(WOLFSSL_CTX *ctx, WOLFSSL_DH *(*dh) (WOLFSSL *ssl, int is_export, int keylength)); WOLFSSL_API WOLF_STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); @@ -2606,6 +2839,8 @@ WOLFSSL_API int wolfSSL_sk_SSL_CIPHER_num(const void * p); WOLFSSL_API int wolfSSL_sk_SSL_COMP_zero(WOLFSSL_STACK* st); WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_sk_SSL_CIPHER_value(void *ciphers, int idx); WOLFSSL_API void ERR_load_SSL_strings(void); +WOLFSSL_API void wolfSSL_EC_POINT_dump(const char *msg, const WOLFSSL_EC_POINT *p); + #endif /* OPENSSL_EXTRA */ #ifdef __cplusplus diff --git a/include/wolfssl/version.h b/include/wolfssl/version.h index 075f9e4c..66cc4388 100644 --- a/include/wolfssl/version.h +++ b/include/wolfssl/version.h @@ -1,25 +1,16 @@ /* wolfssl_version.h.in * - * Copyright (C) 2006-2017 wolfSSL Inc. + * Copyright (C) 2006-2017 wolfSSL Inc. All rights reserved. * * This file is part of wolfSSL. * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * Contact licensing@wolfssl.com with any questions or comments. * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + * http://www.wolfssl.com */ + #ifndef WOLFSSL_VERSION_H #define WOLFSSL_VERSION_H @@ -28,8 +19,8 @@ extern "C" { #endif -#define LIBWOLFSSL_VERSION_STRING "3.12.2" -#define LIBWOLFSSL_VERSION_HEX 0x03012002 +#define LIBWOLFSSL_VERSION_STRING "3.14.0" +#define LIBWOLFSSL_VERSION_HEX 0x03014000 #ifdef __cplusplus } diff --git a/include/wolfssl/wolfcrypt/logging.h b/include/wolfssl/wolfcrypt/logging.h new file mode 100644 index 00000000..8be8f141 --- /dev/null +++ b/include/wolfssl/wolfcrypt/logging.h @@ -0,0 +1,117 @@ +/* logging.h + * + * Copyright (C) 2006-2017 wolfSSL Inc. All rights reserved. + * + * This file is part of wolfSSL. + * + * Contact licensing@wolfssl.com with any questions or comments. + * + * http://www.wolfssl.com + */ + + + +/* submitted by eof */ + + +#ifndef WOLFSSL_LOGGING_H +#define WOLFSSL_LOGGING_H + +#include + +#ifdef __cplusplus + extern "C" { +#endif + + +enum wc_LogLevels { + ERROR_LOG = 0, + INFO_LOG, + ENTER_LOG, + LEAVE_LOG, + OTHER_LOG +}; + +typedef void (*wolfSSL_Logging_cb)(const int logLevel, + const char *const logMessage); + +WOLFSSL_API int wolfSSL_SetLoggingCb(wolfSSL_Logging_cb log_function); + +/* turn logging on, only if compiled in */ +WOLFSSL_API int wolfSSL_Debugging_ON(void); +/* turn logging off */ +WOLFSSL_API void wolfSSL_Debugging_OFF(void); + + +#if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE) + WOLFSSL_LOCAL int wc_LoggingInit(void); + WOLFSSL_LOCAL int wc_LoggingCleanup(void); + WOLFSSL_LOCAL int wc_AddErrorNode(int error, int line, char* buf, + char* file); + WOLFSSL_LOCAL int wc_PeekErrorNode(int index, const char **file, + const char **reason, int *line); + WOLFSSL_LOCAL void wc_RemoveErrorNode(int index); + WOLFSSL_LOCAL void wc_ClearErrorNodes(void); + WOLFSSL_LOCAL int wc_PullErrorNode(const char **file, const char **reason, + int *line); + WOLFSSL_API int wc_SetLoggingHeap(void* h); + WOLFSSL_API int wc_ERR_remove_state(void); + #if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) + WOLFSSL_API void wc_ERR_print_errors_fp(FILE* fp); + #endif +#endif /* OPENSSL_EXTRA || DEBUG_WOLFSSL_VERBOSE */ + + +#if defined(DEBUG_WOLFSSL) && !defined(WOLFSSL_DEBUG_ERRORS_ONLY) + #if defined(_WIN32) + #if defined(INTIME_RTOS) + #define __func__ NULL + #else + #define __func__ __FUNCTION__ + #endif + #endif + + /* a is prepended to m and b is appended, creating a log msg a + m + b */ + #define WOLFSSL_LOG_CAT(a, m, b) #a " " m " " #b + + WOLFSSL_API void WOLFSSL_ENTER(const char* msg); + WOLFSSL_API void WOLFSSL_LEAVE(const char* msg, int ret); + #define WOLFSSL_STUB(m) \ + WOLFSSL_MSG(WOLFSSL_LOG_CAT(wolfSSL Stub, m, not implemented)) + + WOLFSSL_API void WOLFSSL_MSG(const char* msg); + WOLFSSL_API void WOLFSSL_BUFFER(const byte* buffer, word32 length); + +#else + + #define WOLFSSL_ENTER(m) + #define WOLFSSL_LEAVE(m, r) + #define WOLFSSL_STUB(m) + + #define WOLFSSL_MSG(m) + #define WOLFSSL_BUFFER(b, l) + +#endif /* DEBUG_WOLFSSL && !WOLFSSL_DEBUG_ERRORS_ONLY */ + +#if defined(DEBUG_WOLFSSL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) + + #if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE) + WOLFSSL_API void WOLFSSL_ERROR_LINE(int err, const char* func, unsigned int line, + const char* file, void* ctx); + #define WOLFSSL_ERROR(x) \ + WOLFSSL_ERROR_LINE((x), __func__, __LINE__, __FILE__, NULL) + #else + WOLFSSL_API void WOLFSSL_ERROR(int err); + #endif + WOLFSSL_API void WOLFSSL_ERROR_MSG(const char* msg); + +#else + #define WOLFSSL_ERROR(e) + #define WOLFSSL_ERROR_MSG(m) +#endif + +#ifdef __cplusplus +} +#endif +#endif /* WOLFSSL_LOGGING_H */ + diff --git a/include/wolfssl/wolfcrypt/settings.h b/include/wolfssl/wolfcrypt/settings.h index b23b838d..5a22416b 100644 --- a/include/wolfssl/wolfcrypt/settings.h +++ b/include/wolfssl/wolfcrypt/settings.h @@ -1,25 +1,16 @@ /* settings.h * - * Copyright (C) 2006-2017 wolfSSL Inc. + * Copyright (C) 2006-2017 wolfSSL Inc. All rights reserved. * * This file is part of wolfSSL. * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * Contact licensing@wolfssl.com with any questions or comments. * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + * http://www.wolfssl.com */ + /* Place OS specific preprocessor flags, defines, includes here, will be included into every file because types.h includes it */ @@ -442,6 +433,11 @@ #define USE_CERT_BUFFERS_2048 #endif +#ifdef WOLFSSL_CHIBIOS + /* ChibiOS definitions. This file is distributed with chibiOS. */ + #include "wolfssl_chibios.h" +#endif + #ifdef WOLFSSL_NRF5x #define SIZEOF_LONG 4 #define SIZEOF_LONG_LONG 8 @@ -538,7 +534,8 @@ extern void uITRON4_free(void *p) ; #include "FreeRTOS.h" /* FreeRTOS pvPortRealloc() only in AVR32_UC3 port */ - #if !defined(XMALLOC_USER) && !defined(NO_WOLFSSL_MEMORY) + #if !defined(XMALLOC_USER) && !defined(NO_WOLFSSL_MEMORY) && \ + !defined(WOLFSSL_STATIC_MEMORY) #define XMALLOC(s, h, type) pvPortMalloc((s)) #define XFREE(p, h, type) vPortFree((p)) #endif @@ -569,20 +566,19 @@ extern void uITRON4_free(void *p) ; #endif #ifdef FREERTOS_TCP + #if !defined(NO_WOLFSSL_MEMORY) && !defined(XMALLOC_USER) && \ + !defined(WOLFSSL_STATIC_MEMORY) + #define XMALLOC(s, h, type) pvPortMalloc((s)) + #define XFREE(p, h, type) vPortFree((p)) + #endif -#if !defined(NO_WOLFSSL_MEMORY) && !defined(XMALLOC_USER) -#define XMALLOC(s, h, type) pvPortMalloc((s)) -#define XFREE(p, h, type) vPortFree((p)) -#endif - -#define WOLFSSL_GENSEED_FORTEST - -#define NO_WOLFSSL_DIR -#define NO_WRITEV -#define USE_FAST_MATH -#define TFM_TIMING_RESISTANT -#define NO_MAIN_DRIVER + #define WOLFSSL_GENSEED_FORTEST + #define NO_WOLFSSL_DIR + #define NO_WRITEV + #define USE_FAST_MATH + #define TFM_TIMING_RESISTANT + #define NO_MAIN_DRIVER #endif #ifdef WOLFSSL_TIRTOS @@ -591,6 +587,8 @@ extern void uITRON4_free(void *p) ; #define NO_WOLFSSL_DIR #define USE_FAST_MATH #define TFM_TIMING_RESISTANT + #define ECC_TIMING_RESISTANT + #define WC_RSA_BLINDING #define NO_DEV_RANDOM #define NO_FILESYSTEM #define USE_CERT_BUFFERS_2048 @@ -598,6 +596,7 @@ extern void uITRON4_free(void *p) ; #define USER_TIME #define HAVE_ECC #define HAVE_ALPN + #define USE_WOLF_STRTOK /* use with HAVE_ALPN */ #define HAVE_TLS_EXTENSIONS #define HAVE_AESGCM #define HAVE_SUPPORTED_CURVES @@ -985,8 +984,6 @@ extern void uITRON4_free(void *p) ; #define NO_WOLFSSL_DIR #undef NO_RABBIT #define NO_RABBIT - #undef NO_64BIT - #define NO_64BIT #ifndef NO_STM32_RNG #undef STM32_RNG #define STM32_RNG @@ -1175,6 +1172,27 @@ extern void uITRON4_free(void *p) ; #endif #endif /*(WOLFSSL_XILINX_CRYPT)*/ +#ifdef WOLFSSL_IMX6 + #ifndef SIZEOF_LONG_LONG + #define SIZEOF_LONG_LONG 8 + #endif +#endif + +/* if defined turn on all CAAM support */ +#ifdef WOLFSSL_IMX6_CAAM + #undef WOLFSSL_IMX6_CAAM_RNG + #define WOLFSSL_IMX6_CAAM_RNG + + #undef WOLFSSL_IMX6_CAAM_BLOB + #define WOLFSSL_IMX6_CAAM_BLOB + +#if defined(HAVE_AESGCM) || defined(WOLFSSL_AES_XTS) + /* large performance gain with HAVE_AES_ECB defined */ + #undef HAVE_AES_ECB + #define HAVE_AES_ECB +#endif +#endif + #if !defined(XMALLOC_USER) && !defined(MICRIUM_MALLOC) && \ !defined(WOLFSSL_LEANPSK) && !defined(NO_WOLFSSL_MEMORY) && \ !defined(XMALLOC_OVERRIDE) @@ -1205,11 +1223,21 @@ extern void uITRON4_free(void *p) ; #ifdef WOLFSSL_SGX #ifdef _MSC_VER - #define WOLFCRYPT_ONLY #define NO_RC4 - #define NO_DES3 - #define NO_SHA - #define NO_MD5 + #ifndef HAVE_FIPS + #define WOLFCRYPT_ONLY + #define NO_DES3 + #define NO_SHA + #define NO_MD5 + #else + #define TFM_TIMING_RESISTANT + #define NO_WOLFSSL_DIR + #define NO_FILESYSTEM + #define NO_WRITEV + #define NO_MAIN_DRIVER + #define WOLFSSL_LOG_PRINTF + #define WOLFSSL_DH_CONST + #endif #else #define HAVE_ECC #define ECC_TIMING_RESISTANT @@ -1221,7 +1249,7 @@ extern void uITRON4_free(void *p) ; #define WOLFSSL_LOG_PRINTF #define WOLFSSL_DH_CONST #endif /* _MSC_VER */ - #ifndef NO_RSA + #if !defined(HAVE_FIPS) && !defined(NO_RSA) #define WC_RSA_BLINDING #endif #define SINGLE_THREADED @@ -1283,7 +1311,7 @@ extern void uITRON4_free(void *p) ; /* user can specify what curves they want with ECC_USER_CURVES otherwise * all curves are on by default for now */ #ifndef ECC_USER_CURVES - #ifndef HAVE_ALL_CURVES + #if !defined(WOLFSSL_SP_MATH) && !defined(HAVE_ALL_CURVES) #define HAVE_ALL_CURVES #endif #endif @@ -1299,6 +1327,10 @@ extern void uITRON4_free(void *p) ; #undef HAVE_ECC_VERIFY #define HAVE_ECC_VERIFY #endif + #ifndef NO_ECC_CHECK_KEY + #undef HAVE_ECC_CHECK_KEY + #define HAVE_ECC_CHECK_KEY + #endif #ifndef NO_ECC_DHE #undef HAVE_ECC_DHE #define HAVE_ECC_DHE @@ -1358,6 +1390,23 @@ extern void uITRON4_free(void *p) ; #undef AES_MAX_KEY_SIZE #define AES_MAX_KEY_SIZE 256 #endif + + #ifndef NO_AES_128 + #undef WOLFSSL_AES_128 + #define WOLFSSL_AES_128 + #endif + #if !defined(NO_AES_192) && AES_MAX_KEY_SIZE >= 192 + #undef WOLFSSL_AES_192 + #define WOLFSSL_AES_192 + #endif + #if !defined(NO_AES_256) && AES_MAX_KEY_SIZE >= 256 + #undef WOLFSSL_AES_256 + #define WOLFSSL_AES_256 + #endif + #if !defined(WOLFSSL_AES_128) && defined(HAVE_ECC_ENCRYPT) + #warning HAVE_ECC_ENCRYPT uses AES 128 bit keys + #endif + #ifndef NO_AES_DECRYPT #undef HAVE_AES_DECRYPT #define HAVE_AES_DECRYPT @@ -1376,6 +1425,12 @@ extern void uITRON4_free(void *p) ; #define WOLFSSL_AES_DIRECT #endif #endif + #ifdef WOLFSSL_AES_CFB + /* AES-CFB makes calls to AES direct functions */ + #ifndef WOLFSSL_AES_DIRECT + #define WOLFSSL_AES_DIRECT + #endif + #endif #endif /* if desktop type system and fastmath increase default max bits */ @@ -1490,6 +1545,9 @@ extern void uITRON4_free(void *p) ; #endif #ifdef HAVE_PKCS7 + #if defined(NO_AES) && defined(NO_DES3) + #error PKCS7 needs either AES or 3DES enabled, please enable one + #endif #ifndef HAVE_AES_KEYWRAP #error PKCS7 requires AES key wrap please define HAVE_AES_KEYWRAP #endif @@ -1566,6 +1624,21 @@ extern void uITRON4_free(void *p) ; #endif #endif +#if defined(NO_OLD_WC_NAMES) || defined(OPENSSL_EXTRA) + /* added to have compatibility with SHA256() */ + #if !defined(NO_OLD_SHA256_NAMES) && !defined(HAVE_FIPS) + #define NO_OLD_SHA256_NAMES + #endif +#endif + +/* switch for compatibility layer functionality. Has subparts i.e. BIO/X509 + * When opensslextra is enabled all subparts should be turned on. */ +#ifdef OPENSSL_EXTRA + #undef OPENSSL_EXTRA_X509_SMALL + #define OPENSSL_EXTRA_X509_SMALL +#endif /* OPENSSL_EXTRA */ + + #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/include/wolfssl/wolfcrypt/types.h b/include/wolfssl/wolfcrypt/types.h new file mode 100755 index 00000000..e9584f8e --- /dev/null +++ b/include/wolfssl/wolfcrypt/types.h @@ -0,0 +1,625 @@ +/* types.h + * + * Copyright (C) 2006-2017 wolfSSL Inc. All rights reserved. + * + * This file is part of wolfSSL. + * + * Contact licensing@wolfssl.com with any questions or comments. + * + * http://www.wolfssl.com + */ + + + + +#ifndef WOLF_CRYPT_TYPES_H +#define WOLF_CRYPT_TYPES_H + + #include + #include + + #ifdef __cplusplus + extern "C" { + #endif + + + #if defined(WORDS_BIGENDIAN) + #define BIG_ENDIAN_ORDER + #endif + + #ifndef BIG_ENDIAN_ORDER + #define LITTLE_ENDIAN_ORDER + #endif + + #ifndef WOLFSSL_TYPES + #ifndef byte + typedef unsigned char byte; + #endif + typedef unsigned short word16; + typedef unsigned int word32; + typedef byte word24[3]; + #endif + + + /* try to set SIZEOF_LONG or LONG_LONG if user didn't */ + #if !defined(_MSC_VER) && !defined(__BCPLUSPLUS__) && !defined(__EMSCRIPTEN__) + #if !defined(SIZEOF_LONG_LONG) && !defined(SIZEOF_LONG) + #if (defined(__alpha__) || defined(__ia64__) || \ + defined(_ARCH_PPC64) || defined(__mips64) || \ + defined(__x86_64__) || \ + ((defined(sun) || defined(__sun)) && \ + (defined(LP64) || defined(_LP64)))) + /* long should be 64bit */ + #define SIZEOF_LONG 8 + #elif defined(__i386__) || defined(__CORTEX_M3__) + /* long long should be 64bit */ + #define SIZEOF_LONG_LONG 8 + #endif + #endif + #endif + + #if defined(_MSC_VER) || defined(__BCPLUSPLUS__) + #define WORD64_AVAILABLE + #define W64LIT(x) x##ui64 + typedef unsigned __int64 word64; + #elif defined(__EMSCRIPTEN__) + #define WORD64_AVAILABLE + #define W64LIT(x) x##ull + typedef unsigned long long word64; + #elif defined(SIZEOF_LONG) && SIZEOF_LONG == 8 + #define WORD64_AVAILABLE + #define W64LIT(x) x##LL + typedef unsigned long word64; + #elif defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG == 8 + #define WORD64_AVAILABLE + #define W64LIT(x) x##LL + typedef unsigned long long word64; + #elif defined(__SIZEOF_LONG_LONG__) && __SIZEOF_LONG_LONG__ == 8 + #define WORD64_AVAILABLE + #define W64LIT(x) x##LL + typedef unsigned long long word64; + #endif + +#if !defined(NO_64BIT) && defined(WORD64_AVAILABLE) + /* These platforms have 64-bit CPU registers. */ + #if (defined(__alpha__) || defined(__ia64__) || defined(_ARCH_PPC64) || \ + defined(__mips64) || defined(__x86_64__) || defined(_M_X64)) || \ + defined(__aarch64__) || defined(__sparc64__) + typedef word64 wolfssl_word; + #define WC_64BIT_CPU + #elif (defined(sun) || defined(__sun)) && \ + (defined(LP64) || defined(_LP64)) + /* LP64 with GNU GCC compiler is reserved for when long int is 64 bits + * and int uses 32 bits. When using Solaris Studio sparc and __sparc are + * avialable for 32 bit detection but __sparc64__ could be missed. This + * uses LP64 for checking 64 bit CPU arch. */ + typedef word64 wolfssl_word; + #define WC_64BIT_CPU + #else + typedef word32 wolfssl_word; + #ifdef WORD64_AVAILABLE + #define WOLFCRYPT_SLOW_WORD64 + #endif + #endif +#else + #undef WORD64_AVAILABLE + typedef word32 wolfssl_word; + #define MP_16BIT /* for mp_int, mp_word needs to be twice as big as + mp_digit, no 64 bit type so make mp_digit 16 bit */ +#endif + + enum { + WOLFSSL_WORD_SIZE = sizeof(wolfssl_word), + WOLFSSL_BIT_SIZE = 8, + WOLFSSL_WORD_BITS = WOLFSSL_WORD_SIZE * WOLFSSL_BIT_SIZE + }; + + #define WOLFSSL_MAX_16BIT 0xffffU + + /* use inlining if compiler allows */ + #ifndef INLINE + #ifndef NO_INLINE + #ifdef _MSC_VER + #define INLINE __inline + #elif defined(__GNUC__) + #ifdef WOLFSSL_VXWORKS + #define INLINE __inline__ + #else + #define INLINE inline + #endif + #elif defined(__IAR_SYSTEMS_ICC__) + #define INLINE inline + #elif defined(THREADX) + #define INLINE _Inline + #else + #define INLINE + #endif + #else + #define INLINE + #endif + #endif + + + /* set up rotate style */ + #if (defined(_MSC_VER) || defined(__BCPLUSPLUS__)) && \ + !defined(WOLFSSL_SGX) && !defined(INTIME_RTOS) + #define INTEL_INTRINSICS + #define FAST_ROTATE + #elif defined(__MWERKS__) && TARGET_CPU_PPC + #define PPC_INTRINSICS + #define FAST_ROTATE + #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) + /* GCC does peephole optimizations which should result in using rotate + instructions */ + #define FAST_ROTATE + #endif + + + /* set up thread local storage if available */ + #ifdef HAVE_THREAD_LS + #if defined(_MSC_VER) + #define THREAD_LS_T __declspec(thread) + /* Thread local storage only in FreeRTOS v8.2.1 and higher */ + #elif defined(FREERTOS) + #define THREAD_LS_T + #else + #define THREAD_LS_T __thread + #endif + #else + #define THREAD_LS_T + #endif + + /* GCC 7 has new switch() fall-through detection */ + #if defined(__GNUC__) + #if ((__GNUC__ > 7) || ((__GNUC__ == 7) && (__GNUC_MINOR__ >= 1))) + #define FALL_THROUGH __attribute__ ((fallthrough)); + #endif + #endif + #ifndef FALL_THROUGH + #define FALL_THROUGH + #endif + + /* Micrium will use Visual Studio for compilation but not the Win32 API */ + #if defined(_WIN32) && !defined(MICRIUM) && !defined(FREERTOS) && \ + !defined(FREERTOS_TCP) && !defined(EBSNET) && \ + !defined(WOLFSSL_UTASKER) && !defined(INTIME_RTOS) + #define USE_WINDOWS_API + #endif + + + /* idea to add global alloc override by Moises Guimaraes */ + /* default to libc stuff */ + /* XREALLOC is used once in normal math lib, not in fast math lib */ + /* XFREE on some embeded systems doesn't like free(0) so test */ + #if defined(HAVE_IO_POOL) + WOLFSSL_API void* XMALLOC(size_t n, void* heap, int type); + WOLFSSL_API void* XREALLOC(void *p, size_t n, void* heap, int type); + WOLFSSL_API void XFREE(void *p, void* heap, int type); + #elif defined(WOLFSSL_ASYNC_CRYPT) && defined(HAVE_INTEL_QA) + #include + #undef USE_WOLFSSL_MEMORY + #ifdef WOLFSSL_DEBUG_MEMORY + #define XMALLOC(s, h, t) IntelQaMalloc((s), (h), (t), __func__, __LINE__) + #define XFREE(p, h, t) IntelQaFree((p), (h), (t), __func__, __LINE__) + #define XREALLOC(p, n, h, t) IntelQaRealloc((p), (n), (h), (t), __func__, __LINE__) + #else + #define XMALLOC(s, h, t) IntelQaMalloc((s), (h), (t)) + #define XFREE(p, h, t) IntelQaFree((p), (h), (t)) + #define XREALLOC(p, n, h, t) IntelQaRealloc((p), (n), (h), (t)) + #endif /* WOLFSSL_DEBUG_MEMORY */ + #elif defined(XMALLOC_USER) + /* prototypes for user heap override functions */ + #include /* for size_t */ + extern void *XMALLOC(size_t n, void* heap, int type); + extern void *XREALLOC(void *p, size_t n, void* heap, int type); + extern void XFREE(void *p, void* heap, int type); + #elif defined(XMALLOC_OVERRIDE) + /* override the XMALLOC, XFREE and XREALLOC macros */ + #elif defined(NO_WOLFSSL_MEMORY) + /* just use plain C stdlib stuff if desired */ + #include + #define XMALLOC(s, h, t) ((void)h, (void)t, malloc((s))) + #define XFREE(p, h, t) {void* xp = (p); if((xp)) free((xp));} + #define XREALLOC(p, n, h, t) realloc((p), (n)) + #elif !defined(MICRIUM_MALLOC) && !defined(EBSNET) \ + && !defined(WOLFSSL_SAFERTOS) && !defined(FREESCALE_MQX) \ + && !defined(FREESCALE_KSDK_MQX) && !defined(FREESCALE_FREE_RTOS) \ + && !defined(WOLFSSL_LEANPSK) && !defined(WOLFSSL_uITRON4) + /* default C runtime, can install different routines at runtime via cbs */ + #include + #ifdef WOLFSSL_STATIC_MEMORY + #ifdef WOLFSSL_DEBUG_MEMORY + #define XMALLOC(s, h, t) wolfSSL_Malloc((s), (h), (t), __func__, __LINE__) + #define XFREE(p, h, t) {void* xp = (p); if((xp)) wolfSSL_Free((xp), (h), (t), __func__, __LINE__);} + #define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n), (h), (t), __func__, __LINE__) + #else + #define XMALLOC(s, h, t) wolfSSL_Malloc((s), (h), (t)) + #define XFREE(p, h, t) {void* xp = (p); if((xp)) wolfSSL_Free((xp), (h), (t));} + #define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n), (h), (t)) + #endif /* WOLFSSL_DEBUG_MEMORY */ + #elif !defined(FREERTOS) && !defined(FREERTOS_TCP) + #ifdef WOLFSSL_DEBUG_MEMORY + #define XMALLOC(s, h, t) ((void)h, (void)t, wolfSSL_Malloc((s), __func__, __LINE__)) + #define XFREE(p, h, t) {void* xp = (p); if((xp)) wolfSSL_Free((xp), __func__, __LINE__);} + #define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n), __func__, __LINE__) + #else + #define XMALLOC(s, h, t) ((void)h, (void)t, wolfSSL_Malloc((s))) + #define XFREE(p, h, t) {void* xp = (p); if((xp)) wolfSSL_Free((xp));} + #define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n)) + #endif /* WOLFSSL_DEBUG_MEMORY */ + #endif /* WOLFSSL_STATIC_MEMORY */ + #endif + + /* declare/free variable handling for async */ + #ifdef WOLFSSL_ASYNC_CRYPT + #define DECLARE_VAR(VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP) \ + VAR_TYPE* VAR_NAME = (VAR_TYPE*)XMALLOC(sizeof(VAR_TYPE) * VAR_SIZE, HEAP, DYNAMIC_TYPE_WOLF_BIGINT); + #define DECLARE_VAR_INIT(VAR_NAME, VAR_TYPE, VAR_SIZE, INIT_VALUE, HEAP) \ + VAR_TYPE* VAR_NAME = ({ \ + VAR_TYPE* ptr = (VAR_TYPE*)XMALLOC(sizeof(VAR_TYPE) * VAR_SIZE, HEAP, DYNAMIC_TYPE_WOLF_BIGINT); \ + if (ptr && INIT_VALUE) { \ + XMEMCPY(ptr, INIT_VALUE, sizeof(VAR_TYPE) * VAR_SIZE); \ + } \ + ptr; \ + }) + #define DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ + VAR_TYPE* VAR_NAME[VAR_ITEMS]; \ + int idx##VAR_NAME; \ + for (idx##VAR_NAME=0; idx##VAR_NAME + #define XMEMCPY(d,s,l) memcpy((d),(s),(l)) + #define XMEMSET(b,c,l) memset((b),(c),(l)) + #define XMEMCMP(s1,s2,n) memcmp((s1),(s2),(n)) + #define XMEMMOVE(d,s,l) memmove((d),(s),(l)) + + #define XSTRLEN(s1) strlen((s1)) + #define XSTRNCPY(s1,s2,n) strncpy((s1),(s2),(n)) + /* strstr, strncmp, and strncat only used by wolfSSL proper, + * not required for wolfCrypt only */ + #define XSTRSTR(s1,s2) strstr((s1),(s2)) + #define XSTRNSTR(s1,s2,n) mystrnstr((s1),(s2),(n)) + #define XSTRNCMP(s1,s2,n) strncmp((s1),(s2),(n)) + #define XSTRNCAT(s1,s2,n) strncat((s1),(s2),(n)) + + #if defined(MICROCHIP_PIC32) || defined(WOLFSSL_TIRTOS) + /* XC32 does not support strncasecmp, so use case sensitive one */ + #define XSTRNCASECMP(s1,s2,n) strncmp((s1),(s2),(n)) + #elif defined(USE_WINDOWS_API) + #define XSTRNCASECMP(s1,s2,n) _strnicmp((s1),(s2),(n)) + #else + #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n)) + #endif + + /* snprintf is used in asn.c for GetTimeString, PKCS7 test, and when + debugging is turned on */ + #ifndef USE_WINDOWS_API + #if defined(NO_FILESYSTEM) && defined(OPENSSL_EXTRA) && \ + !defined(NO_STDIO_FILESYSTEM) + /* case where stdio is not included else where but is needed for + * snprintf */ + #include + #endif + #define XSNPRINTF snprintf + #else + #define XSNPRINTF _snprintf + #endif + + #if defined(WOLFSSL_CERT_EXT) || defined(HAVE_ALPN) + /* use only Thread Safe version of strtok */ + #if defined(__MINGW32__) || defined(WOLFSSL_TIRTOS) || \ + defined(USE_WOLF_STRTOK) + #ifndef USE_WOLF_STRTOK + #define USE_WOLF_STRTOK + #endif + #define XSTRTOK wc_strtok + #elif defined(USE_WINDOWS_API) || defined(INTIME_RTOS) + #define XSTRTOK strtok_s + #else + #define XSTRTOK strtok_r + #endif + #endif + #endif + + #if !defined(NO_FILESYSTEM) && defined(OPENSSL_EXTRA) && \ + !defined(NO_STDIO_FILESYSTEM) + #ifndef XGETENV + #include + #define XGETENV getenv + #endif + #endif /* OPENSSL_EXTRA */ + + #ifndef CTYPE_USER + #include + #if defined(HAVE_ECC) || defined(HAVE_OCSP) || \ + defined(WOLFSSL_KEY_GEN) || !defined(NO_DSA) + #define XTOUPPER(c) toupper((c)) + #define XISALPHA(c) isalpha((c)) + #endif + /* needed by wolfSSL_check_domain_name() */ + #define XTOLOWER(c) tolower((c)) + #endif + + + /* memory allocation types for user hints */ + enum { + DYNAMIC_TYPE_CA = 1, + DYNAMIC_TYPE_CERT = 2, + DYNAMIC_TYPE_KEY = 3, + DYNAMIC_TYPE_FILE = 4, + DYNAMIC_TYPE_SUBJECT_CN = 5, + DYNAMIC_TYPE_PUBLIC_KEY = 6, + DYNAMIC_TYPE_SIGNER = 7, + DYNAMIC_TYPE_NONE = 8, + DYNAMIC_TYPE_BIGINT = 9, + DYNAMIC_TYPE_RSA = 10, + DYNAMIC_TYPE_METHOD = 11, + DYNAMIC_TYPE_OUT_BUFFER = 12, + DYNAMIC_TYPE_IN_BUFFER = 13, + DYNAMIC_TYPE_INFO = 14, + DYNAMIC_TYPE_DH = 15, + DYNAMIC_TYPE_DOMAIN = 16, + DYNAMIC_TYPE_SSL = 17, + DYNAMIC_TYPE_CTX = 18, + DYNAMIC_TYPE_WRITEV = 19, + DYNAMIC_TYPE_OPENSSL = 20, + DYNAMIC_TYPE_DSA = 21, + DYNAMIC_TYPE_CRL = 22, + DYNAMIC_TYPE_REVOKED = 23, + DYNAMIC_TYPE_CRL_ENTRY = 24, + DYNAMIC_TYPE_CERT_MANAGER = 25, + DYNAMIC_TYPE_CRL_MONITOR = 26, + DYNAMIC_TYPE_OCSP_STATUS = 27, + DYNAMIC_TYPE_OCSP_ENTRY = 28, + DYNAMIC_TYPE_ALTNAME = 29, + DYNAMIC_TYPE_SUITES = 30, + DYNAMIC_TYPE_CIPHER = 31, + DYNAMIC_TYPE_RNG = 32, + DYNAMIC_TYPE_ARRAYS = 33, + DYNAMIC_TYPE_DTLS_POOL = 34, + DYNAMIC_TYPE_SOCKADDR = 35, + DYNAMIC_TYPE_LIBZ = 36, + DYNAMIC_TYPE_ECC = 37, + DYNAMIC_TYPE_TMP_BUFFER = 38, + DYNAMIC_TYPE_DTLS_MSG = 39, + DYNAMIC_TYPE_X509 = 40, + DYNAMIC_TYPE_TLSX = 41, + DYNAMIC_TYPE_OCSP = 42, + DYNAMIC_TYPE_SIGNATURE = 43, + DYNAMIC_TYPE_HASHES = 44, + DYNAMIC_TYPE_SRP = 45, + DYNAMIC_TYPE_COOKIE_PWD = 46, + DYNAMIC_TYPE_USER_CRYPTO = 47, + DYNAMIC_TYPE_OCSP_REQUEST = 48, + DYNAMIC_TYPE_X509_EXT = 49, + DYNAMIC_TYPE_X509_STORE = 50, + DYNAMIC_TYPE_X509_CTX = 51, + DYNAMIC_TYPE_URL = 52, + DYNAMIC_TYPE_DTLS_FRAG = 53, + DYNAMIC_TYPE_DTLS_BUFFER = 54, + DYNAMIC_TYPE_SESSION_TICK = 55, + DYNAMIC_TYPE_PKCS = 56, + DYNAMIC_TYPE_MUTEX = 57, + DYNAMIC_TYPE_PKCS7 = 58, + DYNAMIC_TYPE_AES_BUFFER = 59, + DYNAMIC_TYPE_WOLF_BIGINT = 60, + DYNAMIC_TYPE_ASN1 = 61, + DYNAMIC_TYPE_LOG = 62, + DYNAMIC_TYPE_WRITEDUP = 63, + DYNAMIC_TYPE_PRIVATE_KEY = 64, + DYNAMIC_TYPE_HMAC = 65, + DYNAMIC_TYPE_ASYNC = 66, + DYNAMIC_TYPE_ASYNC_NUMA = 67, + DYNAMIC_TYPE_ASYNC_NUMA64 = 68, + DYNAMIC_TYPE_CURVE25519 = 69, + DYNAMIC_TYPE_ED25519 = 70, + DYNAMIC_TYPE_SECRET = 71, + DYNAMIC_TYPE_DIGEST = 72, + DYNAMIC_TYPE_RSA_BUFFER = 73, + DYNAMIC_TYPE_DCERT = 74, + DYNAMIC_TYPE_STRING = 75, + DYNAMIC_TYPE_PEM = 76, + DYNAMIC_TYPE_DER = 77, + DYNAMIC_TYPE_CERT_EXT = 78, + DYNAMIC_TYPE_ALPN = 79, + DYNAMIC_TYPE_ENCRYPTEDINFO= 80, + DYNAMIC_TYPE_DIRCTX = 81, + DYNAMIC_TYPE_HASHCTX = 82, + DYNAMIC_TYPE_SEED = 83, + DYNAMIC_TYPE_SYMETRIC_KEY = 84, + DYNAMIC_TYPE_ECC_BUFFER = 85, + DYNAMIC_TYPE_QSH = 86, + DYNAMIC_TYPE_SALT = 87, + DYNAMIC_TYPE_HASH_TMP = 88, + DYNAMIC_TYPE_BLOB = 89, + DYNAMIC_TYPE_NAME_ENTRY = 90, + }; + + /* max error buffer string size */ + #ifndef WOLFSSL_MAX_ERROR_SZ + #define WOLFSSL_MAX_ERROR_SZ 80 + #endif + + /* stack protection */ + enum { + MIN_STACK_BUFFER = 8 + }; + + + + /* settings detection for compile vs runtime math incompatibilities */ + enum { + #if !defined(USE_FAST_MATH) && !defined(SIZEOF_LONG) && !defined(SIZEOF_LONG_LONG) + CTC_SETTINGS = 0x0 + #elif !defined(USE_FAST_MATH) && defined(SIZEOF_LONG) && (SIZEOF_LONG == 8) + CTC_SETTINGS = 0x1 + #elif !defined(USE_FAST_MATH) && defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 8) + CTC_SETTINGS = 0x2 + #elif !defined(USE_FAST_MATH) && defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 4) + CTC_SETTINGS = 0x4 + #elif defined(USE_FAST_MATH) && !defined(SIZEOF_LONG) && !defined(SIZEOF_LONG_LONG) + CTC_SETTINGS = 0x8 + #elif defined(USE_FAST_MATH) && defined(SIZEOF_LONG) && (SIZEOF_LONG == 8) + CTC_SETTINGS = 0x10 + #elif defined(USE_FAST_MATH) && defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 8) + CTC_SETTINGS = 0x20 + #elif defined(USE_FAST_MATH) && defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 4) + CTC_SETTINGS = 0x40 + #else + #error "bad math long / long long settings" + #endif + }; + + + WOLFSSL_API word32 CheckRunTimeSettings(void); + + /* If user uses RSA, DH, DSA, or ECC math lib directly then fast math and long + types need to match at compile time and run time, CheckCtcSettings will + return 1 if a match otherwise 0 */ + #define CheckCtcSettings() (CTC_SETTINGS == CheckRunTimeSettings()) + + /* invalid device id */ + #define INVALID_DEVID -2 + + + /* AESNI requires alignment and ARMASM gains some performance from it */ + #if defined(WOLFSSL_AESNI) || defined(WOLFSSL_ARMASM) || defined(USE_INTEL_SPEEDUP) + #if !defined(ALIGN16) + #if defined(__GNUC__) + #define ALIGN16 __attribute__ ( (aligned (16))) + #elif defined(_MSC_VER) + /* disable align warning, we want alignment ! */ + #pragma warning(disable: 4324) + #define ALIGN16 __declspec (align (16)) + #else + #define ALIGN16 + #endif + #endif /* !ALIGN16 */ + + #if !defined (ALIGN32) + #if defined (__GNUC__) + #define ALIGN32 __attribute__ ( (aligned (32))) + #elif defined(_MSC_VER) + /* disable align warning, we want alignment ! */ + #pragma warning(disable: 4324) + #define ALIGN32 __declspec (align (32)) + #else + #define ALIGN32 + #endif + #endif + + #if !defined(ALIGN32) + #if defined(__GNUC__) + #define ALIGN32 __attribute__ ( (aligned (32))) + #elif defined(_MSC_VER) + /* disable align warning, we want alignment ! */ + #pragma warning(disable: 4324) + #define ALIGN32 __declspec (align (32)) + #else + #define ALIGN32 + #endif + #endif /* !ALIGN32 */ + + #if defined(__GNUC__) + #define ALIGN128 __attribute__ ( (aligned (128))) + #elif defined(_MSC_VER) + /* disable align warning, we want alignment ! */ + #pragma warning(disable: 4324) + #define ALIGN128 __declspec (align (128)) + #else + #define ALIGN128 + #endif + + #if defined(__GNUC__) + #define ALIGN256 __attribute__ ( (aligned (256))) + #elif defined(_MSC_VER) + /* disable align warning, we want alignment ! */ + #pragma warning(disable: 4324) + #define ALIGN256 __declspec (align (256)) + #else + #define ALIGN256 + #endif + + #else + #ifndef ALIGN16 + #define ALIGN16 + #endif + #ifndef ALIGN32 + #define ALIGN32 + #endif + #ifndef ALIGN128 + #define ALIGN128 + #endif + #ifndef ALIGN256 + #define ALIGN256 + #endif + #endif /* WOLFSSL_AESNI || WOLFSSL_ARMASM */ + + + #ifndef TRUE + #define TRUE 1 + #endif + #ifndef FALSE + #define FALSE 0 + #endif + + + #ifdef WOLFSSL_RIOT_OS + #define EXIT_TEST(ret) exit(ret) + #elif defined(HAVE_STACK_SIZE) + #define EXIT_TEST(ret) return (void*)((size_t)(ret)) + #else + #define EXIT_TEST(ret) return ret + #endif + + + #if defined(__GNUC__) + #define WOLFSSL_PACK __attribute__ ((packed)) + #else + #define WOLFSSL_PACK + #endif + + #ifndef __GNUC_PREREQ + #if defined(__GNUC__) && defined(__GNUC_MINOR__) + #define __GNUC_PREREQ(maj, min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) + #else + #define __GNUC_PREREQ(maj, min) (0) /* not GNUC */ + #endif + #endif + + #if defined(__GNUC__) + #define WC_NORETURN __attribute__((noreturn)) + #else + #define WC_NORETURN + #endif + + + #ifdef __cplusplus + } /* extern "C" */ + #endif + +#endif /* WOLF_CRYPT_TYPES_H */ diff --git a/include/wolfssl/wolfcrypt/visibility.h b/include/wolfssl/wolfcrypt/visibility.h index 78191aa4..9fa91c25 100644 --- a/include/wolfssl/wolfcrypt/visibility.h +++ b/include/wolfssl/wolfcrypt/visibility.h @@ -1,25 +1,16 @@ /* visibility.h * - * Copyright (C) 2006-2017 wolfSSL Inc. + * Copyright (C) 2006-2017 wolfSSL Inc. All rights reserved. * * This file is part of wolfSSL. * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * Contact licensing@wolfssl.com with any questions or comments. * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + * http://www.wolfssl.com */ + /* Visibility control macros */ #ifndef WOLF_CRYPT_VISIBILITY_H diff --git a/include/wolfssl/wolfcrypt/wc_port.h b/include/wolfssl/wolfcrypt/wc_port.h new file mode 100644 index 00000000..7e1b71de --- /dev/null +++ b/include/wolfssl/wolfcrypt/wc_port.h @@ -0,0 +1,473 @@ +/* wc_port.h + * + * Copyright (C) 2006-2017 wolfSSL Inc. All rights reserved. + * + * This file is part of wolfSSL. + * + * Contact licensing@wolfssl.com with any questions or comments. + * + * http://www.wolfssl.com + */ + + + + +#ifndef WOLF_CRYPT_PORT_H +#define WOLF_CRYPT_PORT_H + +#include +#include + +#ifdef __cplusplus + extern "C" { +#endif + + +#ifdef USE_WINDOWS_API + #ifdef WOLFSSL_GAME_BUILD + #include "system/xtl.h" + #else + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif + #ifndef WOLFSSL_SGX + #if defined(_WIN32_WCE) || defined(WIN32_LEAN_AND_MEAN) + /* On WinCE winsock2.h must be included before windows.h */ + #include + #endif + #include + #endif /* WOLFSSL_SGX */ + #endif +#elif defined(THREADX) + #ifndef SINGLE_THREADED + #ifdef NEED_THREADX_TYPES + #include + #endif + #include + #endif +#elif defined(MICRIUM) + /* do nothing, just don't pick Unix */ +#elif defined(FREERTOS) || defined(FREERTOS_TCP) || defined(WOLFSSL_SAFERTOS) + /* do nothing */ +#elif defined(EBSNET) + /* do nothing */ +#elif defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) + /* do nothing */ +#elif defined(FREESCALE_FREE_RTOS) + #include "fsl_os_abstraction.h" +#elif defined(WOLFSSL_uITRON4) + #include "stddef.h" + #include "kernel.h" +#elif defined(WOLFSSL_uTKERNEL2) + #include "tk/tkernel.h" +#elif defined(WOLFSSL_CMSIS_RTOS) + #include "cmsis_os.h" +#elif defined(WOLFSSL_MDK_ARM) + #if defined(WOLFSSL_MDK5) + #include "cmsis_os.h" + #else + #include + #endif +#elif defined(WOLFSSL_CMSIS_RTOS) + #include "cmsis_os.h" +#elif defined(WOLFSSL_TIRTOS) + #include + #include +#elif defined(WOLFSSL_FROSTED) + #include +#elif defined(INTIME_RTOS) + #include + #include +#else + #ifndef SINGLE_THREADED + #define WOLFSSL_PTHREADS + #include + #endif + #if defined(OPENSSL_EXTRA) || defined(GOAHEAD_WS) + #include /* for close of BIO */ + #endif +#endif + +/* For FIPS keep the function names the same */ +#ifdef HAVE_FIPS +#define wc_InitMutex InitMutex +#define wc_FreeMutex FreeMutex +#define wc_LockMutex LockMutex +#define wc_UnLockMutex UnLockMutex +#endif /* HAVE_FIPS */ + +#ifdef SINGLE_THREADED + typedef int wolfSSL_Mutex; +#else /* MULTI_THREADED */ + /* FREERTOS comes first to enable use of FreeRTOS Windows simulator only */ + #if defined(FREERTOS) + typedef xSemaphoreHandle wolfSSL_Mutex; + #elif defined(FREERTOS_TCP) + #include "FreeRTOS.h" + #include "semphr.h" + typedef SemaphoreHandle_t wolfSSL_Mutex; + #elif defined(WOLFSSL_SAFERTOS) + typedef struct wolfSSL_Mutex { + signed char mutexBuffer[portQUEUE_OVERHEAD_BYTES]; + xSemaphoreHandle mutex; + } wolfSSL_Mutex; + #elif defined(USE_WINDOWS_API) + typedef CRITICAL_SECTION wolfSSL_Mutex; + #elif defined(WOLFSSL_PTHREADS) + typedef pthread_mutex_t wolfSSL_Mutex; + #elif defined(THREADX) + typedef TX_MUTEX wolfSSL_Mutex; + #elif defined(MICRIUM) + typedef OS_MUTEX wolfSSL_Mutex; + #elif defined(EBSNET) + typedef RTP_MUTEX wolfSSL_Mutex; + #elif defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) + typedef MUTEX_STRUCT wolfSSL_Mutex; + #elif defined(FREESCALE_FREE_RTOS) + typedef mutex_t wolfSSL_Mutex; + #elif defined(WOLFSSL_uITRON4) + typedef struct wolfSSL_Mutex { + T_CSEM sem ; + ID id ; + } wolfSSL_Mutex; + #elif defined(WOLFSSL_uTKERNEL2) + typedef struct wolfSSL_Mutex { + T_CSEM sem ; + ID id ; + } wolfSSL_Mutex; + #elif defined(WOLFSSL_MDK_ARM) + #if defined(WOLFSSL_CMSIS_RTOS) + typedef osMutexId wolfSSL_Mutex; + #else + typedef OS_MUT wolfSSL_Mutex; + #endif + #elif defined(WOLFSSL_CMSIS_RTOS) + typedef osMutexId wolfSSL_Mutex; + #elif defined(WOLFSSL_TIRTOS) + typedef ti_sysbios_knl_Semaphore_Handle wolfSSL_Mutex; + #elif defined(WOLFSSL_FROSTED) + typedef mutex_t * wolfSSL_Mutex; + #elif defined(INTIME_RTOS) + typedef RTHANDLE wolfSSL_Mutex; + #else + #error Need a mutex type in multithreaded mode + #endif /* USE_WINDOWS_API */ +#endif /* SINGLE_THREADED */ + +/* Enable crypt HW mutex for Freescale MMCAU or PIC32MZ */ +#if defined(FREESCALE_MMCAU) || defined(WOLFSSL_MICROCHIP_PIC32MZ) + #ifndef WOLFSSL_CRYPT_HW_MUTEX + #define WOLFSSL_CRYPT_HW_MUTEX 1 + #endif +#endif /* FREESCALE_MMCAU */ + +#ifndef WOLFSSL_CRYPT_HW_MUTEX + #define WOLFSSL_CRYPT_HW_MUTEX 0 +#endif + +#if WOLFSSL_CRYPT_HW_MUTEX + /* wolfSSL_CryptHwMutexInit is called on first wolfSSL_CryptHwMutexLock, + however it's recommended to call this directly on Hw init to avoid possible + race condition where two calls to wolfSSL_CryptHwMutexLock are made at + the same time. */ + int wolfSSL_CryptHwMutexInit(void); + int wolfSSL_CryptHwMutexLock(void); + int wolfSSL_CryptHwMutexUnLock(void); +#else + /* Define stubs, since HW mutex is disabled */ + #define wolfSSL_CryptHwMutexInit() 0 /* Success */ + #define wolfSSL_CryptHwMutexLock() 0 /* Success */ + #define wolfSSL_CryptHwMutexUnLock() (void)0 /* Success */ +#endif /* WOLFSSL_CRYPT_HW_MUTEX */ + +/* Mutex functions */ +WOLFSSL_API int wc_InitMutex(wolfSSL_Mutex*); +WOLFSSL_API wolfSSL_Mutex* wc_InitAndAllocMutex(void); +WOLFSSL_API int wc_FreeMutex(wolfSSL_Mutex*); +WOLFSSL_API int wc_LockMutex(wolfSSL_Mutex*); +WOLFSSL_API int wc_UnLockMutex(wolfSSL_Mutex*); +#if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) +/* dynamiclly set which mutex to use. unlock / lock is controlled by flag */ +typedef void (mutex_cb)(int flag, int type, const char* file, int line); + +WOLFSSL_API int wc_LockMutex_ex(int flag, int type, const char* file, int line); +WOLFSSL_API int wc_SetMutexCb(mutex_cb* cb); +#endif + +/* main crypto initialization function */ +WOLFSSL_API int wolfCrypt_Init(void); +WOLFSSL_API int wolfCrypt_Cleanup(void); + +/* filesystem abstraction layer, used by ssl.c */ +#ifndef NO_FILESYSTEM + +#if defined(EBSNET) + #include "vfapi.h" + #include "vfile.h" + + #define XFILE int + #define XFOPEN(NAME, MODE) vf_open((const char *)NAME, VO_RDONLY, 0); + #define XFSEEK vf_lseek + #define XFTELL vf_tell + #define XREWIND vf_rewind + #define XFREAD(BUF, SZ, AMT, FD) vf_read(FD, BUF, SZ*AMT) + #define XFWRITE(BUF, SZ, AMT, FD) vf_write(FD, BUF, SZ*AMT) + #define XFCLOSE vf_close + #define XSEEK_END VSEEK_END + #define XBADFILE -1 + #define XFGETS(b,s,f) -2 /* Not ported yet */ +#elif defined(LSR_FS) + #include + #define XFILE struct fs_file* + #define XFOPEN(NAME, MODE) fs_open((char*)NAME); + #define XFSEEK(F, O, W) (void)F + #define XFTELL(F) (F)->len + #define XREWIND(F) (void)F + #define XFREAD(BUF, SZ, AMT, F) fs_read(F, (char*)BUF, SZ*AMT) + #define XFWRITE(BUF, SZ, AMT, F) fs_write(F, (char*)BUF, SZ*AMT) + #define XFCLOSE fs_close + #define XSEEK_END 0 + #define XBADFILE NULL + #define XFGETS(b,s,f) -2 /* Not ported yet */ +#elif defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) + #define XFILE MQX_FILE_PTR + #define XFOPEN fopen + #define XFSEEK fseek + #define XFTELL ftell + #define XREWIND(F) fseek(F, 0, IO_SEEK_SET) + #define XFREAD fread + #define XFWRITE fwrite + #define XFCLOSE fclose + #define XSEEK_END IO_SEEK_END + #define XBADFILE NULL + #define XFGETS fgets +#elif defined(MICRIUM) + #include + #define XFILE FS_FILE* + #define XFOPEN fs_fopen + #define XFSEEK fs_fseek + #define XFTELL fs_ftell + #define XREWIND fs_rewind + #define XFREAD fs_fread + #define XFWRITE fs_fwrite + #define XFCLOSE fs_fclose + #define XSEEK_END FS_SEEK_END + #define XBADFILE NULL + #define XFGETS(b,s,f) -2 /* Not ported yet */ +#else + /* stdio, default case */ + #include + #define XFILE FILE* + #if defined(WOLFSSL_MDK_ARM) + extern FILE * wolfSSL_fopen(const char *name, const char *mode) ; + #define XFOPEN wolfSSL_fopen + #else + #define XFOPEN fopen + #endif + #define XFSEEK fseek + #define XFTELL ftell + #define XREWIND rewind + #define XFREAD fread + #define XFWRITE fwrite + #define XFCLOSE fclose + #define XSEEK_END SEEK_END + #define XBADFILE NULL + #define XFGETS fgets + + #if !defined(USE_WINDOWS_API) && !defined(NO_WOLFSSL_DIR) + #include + #include + #include + #endif +#endif + + #ifndef MAX_FILENAME_SZ + #define MAX_FILENAME_SZ 256 /* max file name length */ + #endif + #ifndef MAX_PATH + #define MAX_PATH 256 + #endif + +#if !defined(NO_WOLFSSL_DIR) + typedef struct ReadDirCtx { + #ifdef USE_WINDOWS_API + WIN32_FIND_DATAA FindFileData; + HANDLE hFind; + #else + struct dirent* entry; + DIR* dir; + struct stat s; + #endif + char name[MAX_FILENAME_SZ]; + } ReadDirCtx; + + WOLFSSL_API int wc_ReadDirFirst(ReadDirCtx* ctx, const char* path, char** name); + WOLFSSL_API int wc_ReadDirNext(ReadDirCtx* ctx, const char* path, char** name); + WOLFSSL_API void wc_ReadDirClose(ReadDirCtx* ctx); +#endif /* !NO_WOLFSSL_DIR */ + +#endif /* !NO_FILESYSTEM */ + +#ifdef USE_WOLF_STRTOK + WOLFSSL_LOCAL char* wc_strtok(char *str, const char *delim, char **nextp); +#endif + +/* Windows API defines its own min() macro. */ +#if defined(USE_WINDOWS_API) + #if defined(min) || defined(WOLFSSL_MYSQL_COMPATIBLE) + #define WOLFSSL_HAVE_MIN + #endif /* min */ + #if defined(max) || defined(WOLFSSL_MYSQL_COMPATIBLE) + #define WOLFSSL_HAVE_MAX + #endif /* max */ +#endif /* USE_WINDOWS_API */ + +/* Time functions */ +#ifndef NO_ASN_TIME +#if defined(USER_TIME) + /* Use our gmtime and time_t/struct tm types. + Only needs seconds since EPOCH using XTIME function. + time_t XTIME(time_t * timer) {} + */ + #define WOLFSSL_GMTIME + #define USE_WOLF_TM + #define USE_WOLF_TIME_T + +#elif defined(TIME_OVERRIDES) + /* Override XTIME() and XGMTIME() functionality. + Requires user to provide these functions: + time_t XTIME(time_t * timer) {} + struct tm* XGMTIME(const time_t* timer, struct tm* tmp) {} + */ + #ifndef HAVE_TIME_T_TYPE + #define USE_WOLF_TIME_T + #endif + #ifndef HAVE_TM_TYPE + #define USE_WOLF_TM + #endif + #define NEED_TMP_TIME + +#elif defined(HAVE_RTP_SYS) + #include "os.h" /* dc_rtc_api needs */ + #include "dc_rtc_api.h" /* to get current time */ + + /* uses parital structures */ + #define XTIME(tl) (0) + #define XGMTIME(c, t) rtpsys_gmtime((c)) + +#elif defined(MICRIUM) + #include + #include + #define XTIME(t1) micrium_time((t1)) + #define WOLFSSL_GMTIME + +#elif defined(MICROCHIP_TCPIP_V5) || defined(MICROCHIP_TCPIP) + #include + #define XTIME(t1) pic32_time((t1)) + #define XGMTIME(c, t) gmtime((c)) + +#elif defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) + #define XTIME(t1) mqx_time((t1)) + #define HAVE_GMTIME_R + +#elif defined(FREESCALE_KSDK_BM) || defined(FREESCALE_FREE_RTOS) || defined(FREESCALE_KSDK_FREERTOS) + #include + #ifndef XTIME + /*extern time_t ksdk_time(time_t* timer);*/ + #define XTIME(t1) ksdk_time((t1)) + #endif + #define XGMTIME(c, t) gmtime((c)) + +#elif defined(WOLFSSL_ATMEL) + #define XTIME(t1) atmel_get_curr_time_and_date((t1)) + #define WOLFSSL_GMTIME + #define USE_WOLF_TM + #define USE_WOLF_TIME_T + +#elif defined(IDIRECT_DEV_TIME) + /*Gets the timestamp from cloak software owned by VT iDirect + in place of time() from */ + #include + #define XTIME(t1) idirect_time((t1)) + #define XGMTIME(c, t) gmtime((c)) + +#elif defined(_WIN32_WCE) + #include + #define XTIME(t1) windows_time((t1)) + #define WOLFSSL_GMTIME + +#else + /* default */ + /* uses complete facility */ + #include + + /* PowerPC time_t is int */ + #ifdef __PPC__ + #define TIME_T_NOT_LONG + #endif +#endif + + +/* Map default time functions */ +#if !defined(XTIME) && !defined(TIME_OVERRIDES) && !defined(USER_TIME) + #define XTIME(tl) time((tl)) +#endif +#if !defined(XGMTIME) && !defined(TIME_OVERRIDES) + #if defined(WOLFSSL_GMTIME) || !defined(HAVE_GMTIME_R) + #define XGMTIME(c, t) gmtime((c)) + #else + #define XGMTIME(c, t) gmtime_r((c), (t)) + #define NEED_TMP_TIME + #endif +#endif +#if !defined(XVALIDATE_DATE) && !defined(HAVE_VALIDATE_DATE) + #define USE_WOLF_VALIDDATE + #define XVALIDATE_DATE(d, f, t) ValidateDate((d), (f), (t)) +#endif + +/* wolf struct tm and time_t */ +#if defined(USE_WOLF_TM) + struct tm { + int tm_sec; /* seconds after the minute [0-60] */ + int tm_min; /* minutes after the hour [0-59] */ + int tm_hour; /* hours since midnight [0-23] */ + int tm_mday; /* day of the month [1-31] */ + int tm_mon; /* months since January [0-11] */ + int tm_year; /* years since 1900 */ + int tm_wday; /* days since Sunday [0-6] */ + int tm_yday; /* days since January 1 [0-365] */ + int tm_isdst; /* Daylight Savings Time flag */ + long tm_gmtoff; /* offset from CUT in seconds */ + char *tm_zone; /* timezone abbreviation */ + }; +#endif /* USE_WOLF_TM */ +#if defined(USE_WOLF_TIME_T) + typedef long time_t; +#endif + +/* forward declarations */ +#if defined(USER_TIME) + struct tm* gmtime(const time_t* timer); + extern time_t XTIME(time_t * timer); + + #ifdef STACK_TRAP + /* for stack trap tracking, don't call os gmtime on OS X/linux, + uses a lot of stack spce */ + extern time_t time(time_t * timer); + #define XTIME(tl) time((tl)) + #endif /* STACK_TRAP */ + +#elif defined(TIME_OVERRIDES) + extern time_t XTIME(time_t * timer); + extern struct tm* XGMTIME(const time_t* timer, struct tm* tmp); +#elif defined(WOLFSSL_GMTIME) + struct tm* gmtime(const time_t* timer); +#endif +#endif /* NO_ASN_TIME */ + +#ifdef __cplusplus + } /* extern "C" */ +#endif + +#endif /* WOLF_CRYPT_PORT_H */ + diff --git a/include/wolfssl/wolfio.h b/include/wolfssl/wolfio.h index 9055a51c..a224483d 100644 --- a/include/wolfssl/wolfio.h +++ b/include/wolfssl/wolfio.h @@ -1,25 +1,16 @@ /* io.h * - * Copyright (C) 2006-2017 wolfSSL Inc. + * Copyright (C) 2006-2017 wolfSSL Inc. All rights reserved. * * This file is part of wolfSSL. * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * Contact licensing@wolfssl.com with any questions or comments. * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + * http://www.wolfssl.com */ + #ifndef WOLFSSL_IO_H #define WOLFSSL_IO_H @@ -53,8 +44,8 @@ /* lwIP needs to be configured to use sockets API in this mode */ /* LWIP_SOCKET 1 in lwip/opt.h or in build */ #include "lwip/sockets.h" - #include #ifndef LWIP_PROVIDE_ERRNO + #include #define LWIP_PROVIDE_ERRNO 1 #endif #elif defined(FREESCALE_MQX) @@ -62,15 +53,12 @@ #include #elif defined(FREESCALE_KSDK_MQX) #include - #elif defined(WOLFSSL_MDK_ARM) || defined(WOLFSSL_KEIL_TCP_NET) - #if !defined(WOLFSSL_MDK_ARM) - #include "cmsis_os.h" - #include "rl_net.h" - #else - #include - #endif + #elif (defined(WOLFSSL_MDK_ARM) || defined(WOLFSSL_KEIL_TCP_NET)) + #include "cmsis_os.h" + #include "rl_net.h" #include "errno.h" - #define SOCKET_T int + #elif defined(WOLFSSL_CMSIS_RTOS) + #include "cmsis_os.h" #elif defined(WOLFSSL_TIRTOS) #include #elif defined(FREERTOS_TCP) @@ -176,7 +164,6 @@ #define SOCKET_ECONNABORTED NIO_ECONNABORTED #endif #elif defined(WOLFSSL_MDK_ARM)|| defined(WOLFSSL_KEIL_TCP_NET) - #if !defined(WOLFSSL_MDK_ARM) #define SOCKET_EWOULDBLOCK BSD_ERROR_WOULDBLOCK #define SOCKET_EAGAIN BSD_ERROR_LOCKED #define SOCKET_ECONNRESET BSD_ERROR_CLOSED @@ -184,15 +171,6 @@ #define SOCKET_EPIPE BSD_ERROR #define SOCKET_ECONNREFUSED BSD_ERROR #define SOCKET_ECONNABORTED BSD_ERROR - #else - #define SOCKET_EWOULDBLOCK SCK_EWOULDBLOCK - #define SOCKET_EAGAIN SCK_ELOCKED - #define SOCKET_ECONNRESET SCK_ECLOSED - #define SOCKET_EINTR SCK_ERROR - #define SOCKET_EPIPE SCK_ERROR - #define SOCKET_ECONNREFUSED SCK_ERROR - #define SOCKET_ECONNABORTED SCK_ERROR - #endif #elif defined(WOLFSSL_PICOTCP) #define SOCKET_EWOULDBLOCK PICO_ERR_EAGAIN #define SOCKET_EAGAIN PICO_ERR_EAGAIN @@ -292,6 +270,8 @@ WOLFSSL_API int wolfIO_Recv(SOCKET_T sd, char *buf, int sz, int rdFlags); #endif /* USE_WOLFSSL_IO || HAVE_HTTP_CLIENT */ +WOLFSSL_API int BioSend(WOLFSSL* ssl, char *buf, int sz, void *ctx); +WOLFSSL_API int BioReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx); #if defined(USE_WOLFSSL_IO) /* default IO callbacks */ WOLFSSL_API int EmbedReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx); @@ -345,7 +325,7 @@ WOLFSSL_API int wolfIO_Recv(SOCKET_T sd, char *buf, int sz, int rdFlags); WOLFSSL_API int wolfIO_HttpBuildRequest(const char* reqType, const char* domainName, const char* path, int pathLen, int reqSz, const char* contentType, unsigned char* buf, int bufSize); - WOLFSSL_API int wolfIO_HttpProcessResponse(int sfd, const char* appStr, + WOLFSSL_API int wolfIO_HttpProcessResponse(int sfd, const char** appStrList, unsigned char** respBuf, unsigned char* httpBuf, int httpBufSz, int dynType, void* heap); #endif /* HAVE_HTTP_CLIENT */ @@ -406,9 +386,17 @@ WOLFSSL_API void wolfSSL_SetIOWriteFlags(WOLFSSL* ssl, int flags); #ifndef XINET_NTOP #define XINET_NTOP(a,b,c,d) inet_ntop((a),(b),(c),(d)) + #ifdef USE_WINDOWS_API /* Windows-friendly definition */ + #undef XINET_NTOP + #define XINET_NTOP(a,b,c,d) InetNtop((a),(b),(c),(d)) + #endif #endif #ifndef XINET_PTON #define XINET_PTON(a,b,c) inet_pton((a),(b),(c)) + #ifdef USE_WINDOWS_API /* Windows-friendly definition */ + #undef XINET_PTON + #define XINET_PTON(a,b,c) InetPton((a),(b),(c)) + #endif #endif #ifndef XHTONS #define XHTONS(a) htons((a)) diff --git a/lib/libwolfssl.a b/lib/libwolfssl.a index 885d3b504fedc9cafb6aac41da54512a8b1d85c8..e025f84531c0c01034b0c1f3fe7ad569ab27c143 100644 GIT binary patch delta 329924 zcmc${3tUuX{y%=6Gceo^7Y76c#5o6q0YPC*xx0W_!!WHfszv?esi0*&!0T=QMAAS5E`wDm(^7-tCJtOpH25igs=908~$?CjmxIidgm{yTeN(ccL@aj+au!qkA^47 zt?Su9|2q-3K9eSlno_`xt*#^UW!_sC`hz2jmHzu8#mG@(JX1N>n6cv~&LOz_eB^X%$eeM@7S)w4_0E$&yg58m9`M_M zA-h{*Zw-zfwS4J{CDnD+Q>trkudXetUb1BQZrgxye73u`x_VS~ZC&}ITkE(x=FOoT ziN42s#|pG=RFpMG2zv-?E)RNjJ0*`1j=Hati>FUUCoA#uAO%^yC#m+}!GySsb! z^3ZE2duHw9kFx~tt;+^4AEF#3l#kqDPJ^ZRfZ+wsp>o?rJ}r9Z%N)m9IBqBcj&pD~ zp$XSMy44@`*iirRrWvud)m%+%R9Z@4S{`2$J!C|H(9yti{%NxPIw>Qd;fEe+M@{&7 zMVWh;k9|f6OS7lh?Lz`9FN6tkIq7RFYs13oR@B*7_yQ~636(5d*6HUOdAGy=Yk8i< zEpYyXExA#l_W5lmV&4^PFeUKe=l!#`6v)>d3lRL1-bwN`Zg1Jxr>)CdeZf1A_b%x0 z)^vO4U*;dS{4U_-z^&G!L6W%mM81$DoQUfyM0^!zv);^Q32FJk!r-*Aft@osPDrk) zN|Lr`y~j@V$rOttD}rZ-Ee*Xlgni!A#&Omlj;rzX|5yA&;HPny`G!m`t(A9|afy!e zQXl7bEn{mwGMFG`h?02AsXk;gc;`*_mc{msciPzw(#Y(o{4gl3 ze_&cgx;2TD+M}G?lPZKlCwrc_PH~|}Tm))`#mAl@N@p}jQpJ(?9A~XWIJ2f}dlD!f z@s`8R3PFfvTZw$cX3%B7B+>@wW!@T~Xos^VqBL+Q-`%{p0L_pc*&)_+iPhcW{0ri| z$NPkzUu6+Oei@LsV8O5vchyS%)-8L7Tgt*u!~_a_0}incA@e$?g{%C>m9&^MiBg8( z2oIAo!k@K$4$e7O1SjpNs~^ouQl66A+?H7X8^3&o+5L+iPhuVZhR4N#wC~mx_+NZH zA^GhQkzrEv{)}*ew^~uU9ZTH-9EHo=I3xQ%e|%nFZpf60+>lY+kaD1@+>jgacccI2 zCk6%#89l1lZ{HRdlueEc^^e|`<{!N^*`K=A?(fsw&;Q*MiT+d_teCWS(DvN=`8IxzRa~WzP4f^rVs9m^*w1fWPb6Bp0wqu z^yy3fqM;}4(Rh6N(w?*luYGZU&)5N>rR#cxhzlS7c>eg>y;stoD$b6Wv57rMNiHm{ z;EN;PPh;yTmL0)DxO;_`sF>qgNb|AZv zV(vVo!%#|;amJ>?p%p=Bf=R?#wOX*;wZ>V-IbNQ=DI;*k%SS#}#TJ$p4t+nZBB<6I z%-pKvUHdRQAnAqPSZk2dW)rB*(w~}F8EHjR1SK`5C--+JpptXbDaTVi-Vjzm$~Wzs zz6q7Yak*m8!cv!odq1t#!dx!SW#OF`ORWo-ce*SS_Fa>DAet?M^r;z;cL&Q%k(O@7 zWFYNWYsHL%3B^rjF{$?_es211zH=Os5cu~yrE)AUo#0A4?vc08wf2{v{98cS&|+R{ z71E>a`BJcWvB%XK++g8ctq+Lb_Kb~=7QX@I(Xr8?R>q0{=m|fsd~i=4Xk~IkoaK3+ zt^Jq~7_xE(n-Ng6mT$P56YkF+mR6I;cMj*i8x@=uz4G;xa(5^AzuH;)Krp;ZZeyzVlX2cs74H?_S0=Jje+r7Wnywhqwj1`3A^*hnTgQ zYuLukTAObRc5dI6Z;P-#;p4>Dd$53b+;J$F_*#!U2BEW6$hYOD=Y=|3gY#|nhD{3X z0n%%I6rUJl;tM?uA)NTD9xLh#fjflspYLh7AKKP@Ta2^y{(KwXxrP&;q68W<0y>e{ zcEYvROFdjMqnQGCYVNy`;Pzelw!Y5oo%yynC2M?V9Vf~?)~|agaR0pr#+!QFXAwGE zHs&|-4QX6@UW&72b-wLhWVC!rzU{`e?kej7@KL}K&K4v;$UTqbAIrCursqXCTQ=p} z9L|=;e4EQU8+19}=BseFJP)>e1`_b~SZP`o@9VKfQFw2Um8NR(o}Pv*3h(ZrKEjE2 zDTU_5J9}s~;lx!vSoFj@da$>_Ct4b`+o_;VcZZVUx_n!Rv*osYTbTQL@K*FR6p_sG zo(5kbfRZJ?vw#zC>FJE*xblCX=B&dwaZyi$lPiBJ-&UTU7g>&C4NcD*QGRQ_O=`$i zq)L=RgqD9vRqf#1p`19I5_Y+t?h$Vyw5D@=k2tfZ!A=Rz=xIo%aC%Qe5+_dUvHsK7 zgP@@wWukR+eq)t5wWo7)PmOJcIEA!Z8yb6@+kc&J!>;AMe4EX=eS3amu~^a5@KBFf z-eY|b%~RgvUf<(v`5j8<+0H}`PZ+3jub~=feK^0-DvkzaMnLdN2eY-? zY2O#XG0yLMI@W*csmvRf1(u25_jxvkoedDI7qhJvZZR!o(}l#E!eJwXu}y!!SaZ*X zMSU{FMZsx%(j7u^Pz7UO(r_;3o2wk`t485s_OXd}bzio@CGA+^mN)(-Aj!Y}>5QBA zTiHKIc2#Lpl_fj8m{mlsm}YNVVrS=w+_Z*wuy=MvXC8Hib2U@K21)5f$q7(m``bcxd!AXwE9-e% zXMm4ZdEL=&pt0q=vN0WTlo$AJZvpQe+2Jj`;LUe=hj_eMl6R2g&5*nUC2#6kOVhA4 zXUj{jmZ!7B6Y>&9AG_J!(H_N)QqB*0xQ1pjtOz`>3M2&{TV`hmm6CY|O5z}ouVrIq zwyWbx7*(niz`0u1k1wAztDb$J7GIJ?M_N_#g_h=vms~BIQA3gA%aIOyhxjLKV;a`# zX=s_49l_ew1O^zB7Jj`nLS6EkI{G`sOsREqdNgnK)p72V)EC4-l9=IX+2HhMOWwi4 zsO<2H$eFXCvr{qFk>C;2%lT=oe8U2+N*q)XxVTtqpXBl8RC#mNJ*!8|sSX}l+tLFlO;-O7jS+V<}~11}IZ;Te+RhCMv2!U^fx6VpAmTn1YGKn4;1=Q;C1D z>l?S)^=sTT&(V@+ zYY}*tcd*)RJl-M3&YqBmEd~`t{6N)KX|oYNtJ<GTdt>*lR?HF-1#jXE^PGLmm6@l5|ImPwkJs9UVYYAhEr}l2OoyM1A>?*t5+5ExUZ)k_-(R+0^ zhD&e1rZX$&U;TNsf9Feme5cy?Th8)Aw7?%rS^L>XKfD_9wcTEKIpAnur6+u;rLD?e zc~FRbTF8!QE3!wG+833w)0BgSrI@mvSW0ras^yYHNOb1^&eAXlC-uR~1QnefSsYOz z%nsLje3i9R!qK8ws9*gf8>r;x(gAtl~@(II@g>z2&xuoXml@02z4w)KjFtOe-04cE8DZ8_`Hhb`+S@wXr1qTm+SS8l zF(1o+pUpO0pOa!QX8xF0D}BuuvbJ7y?yGPv`CS9dF8M>^_0A<*&pYe8EvWqk&JRxI z+>9eQ`1Nl5da1*s;5h5eCj3<5yck$Tc#>OXHI^q;l6Z2l5 z!n+r6f{lyzm0%k!c+%HKCp|6gxO?nc-dcs}`Fs1hsO}Gfr4LFDpF1$vFLh*R1WP-H zTW{hV!Abt~yg;00I;UZ7NG%qGK;byDp-zBH`CBgBBxPbF;_!$LELdYW>gxwm)}ogq zU;Cg^^WS|1*ceeF$+!e66qf9xme^9iv&p;MJwefR^qr#8pW5`bEQ$15{D>_ z3UG}ItP->4_OvDTEH289WKZ_^sF}npr|4K*RS~&3i;OE1AZibEOb56mYmdsvUED(p zv^WUauM&%D#Z-@%!(AJO!bZKyZGkrpE(pFT(eZCjPvYm&j{1w24i`x`&=Frb>L2cM ziW!HqDzsJqbhg`$i$K(OjXO{Y>$G)pioQiCezV6CU&8)L=?NWD z`9kTbs0&M)yO(V1TJoena_{`aNLTCqWBvWq%_)sMc9w)4vo^T=kL(>;9g@4Bm!uDa zszRl#_zf=hjl#{Uv4uDUM8Bq}l=b0)D#6jbq1Ku8q^AFp8u^0e*Kj1K z3^L@$o>lK3^1ImGIc>MIbax3?wmNomWMx%kY+j_pvf&TTec7k;@^?jA>E_D$fg^tx z?;h&k-(GWl*o=0j%pcR+6KiKqo0*L(Q(;E?o!eOlCA9F>>FukwzhCqIjd#_|q^p$n zMX##+MdB>(@Yi-^2GJcCI;MYXX~yn%J4#redyon_I+&5a$G`o#6#vH0127c_;1u2V z*+-|^yISkc@`t-TgSSai^AE39u*;U>aNZl);f+ua3fMikAA+_tcq@c5u9F5g7l&6c zbtB#66rF={Cjd^Nlrb@J6u4u5jh!o3=&GU(bIaJK1m|14bJw|cquOO(C>O0u`tx#rn_2P`; zOOU^20_^vP}$0Hr3WP@?N|iP zxKf(Vs21xoN=Zx|T1~FLD5PqC#N>xci^JJ-N+~>?dyFElW!?2bk}!~MCtg!Wq~kv2 zR9~f?>aV++Lstt|)#77p3kg=XMyQriImr5j!CRSMH4ugxFJtGWw(%}2#<=7{sc>jU1gO?Q-1lNJ!-#Gm%?z)aTU_^9xFSpb=9n^X;*jwd!1pQqh)b>3 zSRXE2&TAF!X|bp~jHWdK(%`-94kZIFV6{pgD#bFWY_2bLxzF^JO?D1$9-mhc$(EC# zV9OZnnEXTX#S0gfZKbQAjvZ@pwb6mqnud4Bj;WnAygPO*>9lbB`KDH`pfu+#|D&D# z2D?DN8GbH2t~9vE;eP}FG5i_$Ff@k)z65>(lfST8DzPi3Wde%?76;7ynE$a5IK7y= zvd{AS11<-SZ4B(jl8c)iUMlrTrO#C^;B!CfakbnRC2CuNk3Q_dvKG!hqx?%P^$Ak$ zAA7Kis)=*tzE6_bjD1YJkKXQq($#(oQ6FSGdfd2&u6fRp+pY;K8-kC1s|zdVKh^GU zdvGw|(iZUU!#%lsG;!s=_oG+TO#EKUMDD9S2~yU4wevzbN~))Xf1|L)?7dy=bwD4N z`+Uz)o{FM$;M`|mh3z7tB2Pv5r@L4M?-a9%uWXNVw-H}iA`revaz}Ys&lK6OD6*6n z0t8!Isvj%VSlf`XPhvI5^0Yjk9Wirqm3N5Co5@;8?ktZLuu2@_OW$?})`G=HGtasc zIgX2+c&gHN3Ob8t7Y}|3IH?F;K z>T8I?PF^Z45o}T^Zak$@7YvNdVlR;1NRLa5dH=sI^Y5hc?xQ{K&v5L)MsO_}$B7hL z{qG)Hmnz{#^~Pz}$J2olOQW*N&{YW?DV1{5oUUG#2)j3aHjU?#0(YPKb0WiTD#}0U zH&$PlcSg5&`q2O(SqQLCT-)KDdBHo4_uf=eQg@l(Z>bE3Juq=?<3fy15id~Tom&MJq&^gk`p4zQxK;(DcjOH8k;5@ zxVFp|vLkV`;v3CAB>nyTrEbYv4xS@?djEvH3a0Lp_w#3}6f?NKR0c-Jj`fu;=4{y# zl~*sl6@>?I>MCddfNDm27}Bx@JyaPQ)^yZbc7UtZiZ<>X$d#uc6{QL*l!Ky=YjWap zHixoPn2S`E7TS*udmz$qZ6BJ=a7ZmxhXcq}RKjZp1ajy^4xM5}8RcAB%G8G=`}uvl zAp5jZx(IuRUll^elpz7ulVF8#*#h?CXfMD0xAF3cd&B8UD+&|U0p+qPx7(Ye9^Zv% z++bic*x_|v@DAamIQDm#MarmWo{S^HxSw-yJ%{8yAR3W0MS3Wjst zaU$$oY96u2j<^*Xz~8Qoq-w|8K-H?*)$W zEOCmZ*wd>Q5ntgVYa91fGw;3*cV9ys7H7+%^gO=d32eF3W=GsqBpmm#{Zy#gykI-f zz4q9#x_!%BqN`-Ezqv~i$6#wMtn+w>vHv0=k2tKdHl>R8)Ky;Bo8QjN65Lg;(2GSh z(1%rdhpJmC+EBYN&3PRa;TN;idDkV5rj0d*_$co5S!}7R#G!YelSc8rTYA*3H8$1Q zT_3xl?ZVqXR*hoVW@krSEP_#&H&4BKbBTHPlGV&1h4zDau!^mlbSaYvVft%xwS!<*ysW_43#t@E_hSG8GoGmRbF&ndOm6%bB>nwD9fmffpId=@tw_yjgwqXKysa%MeEgYD-cG9Fe^oD(p zc|_NwazEya4Ry}9N}OH?X57OccX=J)VuE(Ql|91RP)wI0Y!&7FGVhCZ{`jvG#5Q9E z$zb}BuqSb%v`Z=O6!Wqzcqo9Hpj(J^>>M*hw3$TrH=}XyHaq+Wb}E<6BjKa`!7h$Y z(KxNpT^sJ;yF}zB%Owt(kX*3nVau1l+OI%30arGmBUy5paP6;ll?rkGe!h zAx>n)k!-SJDpGyuRxD(Pvx!7G%il!J63)sgb~@WiPqymtTmt73W#Pg6%Zt~ezjuh& zb&18@V$lV0WRP;Nfd}E+w?+F)-U-&X)5<`%36=xSweNjF*BdyJUk=zGSeX)b%(=Gm zt%*eh!T1&btd6&Cg>Dc#FANdY8>I}M?#h22@o zx`@82^h{SlL`7syc0F$PbBfy3VddO$qdmpnKs7N%U5oC~*P^NVwY_}aW^wrIf0yIy zN~SJ}Hn^dWawcLK6KAbaUkAy!`K2l{%{Hq_O&&qBg!Pn8-#&G;&}|qJTicL< zkgMzn6`V?4p&0$B7|lhL*2B|perO_FOQsr>L$|mA#Ioe++g9CN^+6Q7Pfg??k0a6M z^!|LOh(55nGX>3qTLr3n*c-0cn^2Hkwr%<&Q88GvSCZPNjq#4b#q2Hw{^ypw0rjnE96UEX-fo6vbPe~pN8mTPLf2x66J>uTW?dk#;F^|S5jY3@^BEAO7pJK9}h zRAwsOliFgjk5W=*wMvWOIUeL`2{G|vNM{*euw81|nC|D@pR#=C zV5wy_u=Rf6sB#aHAL44hzo$V6U`;q^Q~X9BLXd0fNfmiFXGQ5$U5L44N{i>rTf&QQB^cCtr|I@$jH ztEc~(F*&2u*&dUP88qtr96Kvfs%+OON9jJB+s0={INN z5mnwK_K}io#~*z-C1T-;bhXD||GHnH*1nJFw3MV#a^be6czmSLFTCsULN3uc!kd|0 z#d9Q~T5BhMm6+7j(dlYwDDXNak8QF|FLkxljeRV%@Tj!p<*p?!Sy$uTlnk%K`;~Kp z^*%;@XzLXpI#J~=uc-?av}bq=vDxZV@G5H28!d@_JYux7Js!!k=akIs>W_vl*Bg2T zhpdTx61z`%m7#>|7;m7bWzDq4xlqgwP*kJXFBMfj!7=%eH}l+qb8UjJbDy)HYdeLP z`<}&<^@s5u2bAlq7E;doP#8@ee9iTS!AoOT>D?deW0!g>`fv`JZ(6g>F&Q0ovho;? zp22;IZmx~x2<9LedVOz&?@C!|k_#{PrEkWgzyv&3V-hjlpK^uS#h8r~*Z_)K@j@_V zBqiO#TaRF>vAAr>C3$wICwaqC*N(aF&p3`d*^VK%@YT;Ie^z?>_=#A)bNUrbAT0st zwK!0*2r_h(Z|d4iX?j}Q3MQxfHiys5D!h&b6A#Bbu5fU1z|3+MsLCF^H@kD}m8z@{ zap^L5UR34nLyRe7vOUy}LLL6o^jDR^x@a={{xS@maZ>XuFMiOZ=(!D3ru8Y#70&8M z_fc|voBK(+=S`pQ&bgwL%(Y#aL~1kCI>wZtP9nY4?A2xj)bTM&q^Wj&!$8_DD6@y~ z4CaYHEA$Huj>+_j&s6OdpFICVAEfxs2+^HUG)KGmGeQbpL(^-j{P|6XuEUS0DZa@8sqv-7U%09zQ#h zZGs}ML2APsE7ke4)Sg|B2^3c=cxp5|lE&2oWE|rP_8U^Txs!&54fJ?parc1zPR*F5 z(@sPr@oY5-&E}8Pb|xtHqhJp9?;-NRuFJUgbWHYO?{p^-JYr%-U*!$Q+Y!af9~hVm zvHVn63yUE{iLTV-Brz6A`->06`>gwW3N|@bW2WBZKs7{TbKLNHPeU+Oa&E@u{5552 z52Qx$B;y?B660~mclll3_=0xFt59rrv}6A?4UhGz& zcNDs@wQ%iNfo&YO;S*`c-1HdSz+y}1i^8E!usFR@j&fDOA<>WWM?ADSEX8(k#H`HGnJKO%aj=KYILHP&P#RiVa>-SJ~Xy5 zZQ8t8Cq}2`WO`mWy#YccO^L#`_Go~TsE9;sJlM|Ra8BuBQ?`by&3enf|DypZ%^BkO zyoEs}W7_awYkK~wxXdi}!zHEYlx_P3$VGM~_!`2w_06dN0>>I}f84sFcl?dSoMPhi z?uezDFPMpdr|KV%ecx9C0+_66Z6NNjUEBSaW0N#akOvLz?=+Zl0y*O;zCEzV*HOY-dbi3oO*%4P6b{$K}(s~p@W_%H=WxKpu~t}4x7wB^LxXV{jtTG=PGF~wPU z$ME$2f!UD_xD$7*-bYWGl$RzPlQRV6_0R&rF*$vAIOy+@25wZ`QJOu+YFO0my`|d2 zPU7HJPQ3`W@(CQr{y>b+aA%|3%S^$jB`a&ySBihU5)kHZKDKH+JvRCcya((R@bvhI z9wTi;_!|6S_;27J2kkESD9jP*@N%2>4}fMH zg@{nj{gj_2&s`NBCf7d_5G?QP8yF==RfGq~XWj}E;-#0K=-UtK!qT?&%x|=Lf{@0G@$nSQ9MK#3*2Kxj4 z8sBdc3QBIB8YthgAebtD5d#x;nDEd4YgC^yjc?b&NphdKz&JjO$=6r$vGReKz+jdo zZ+|2p(ZBPruld{l5$`{KHdWpk!UX@&zo)WzIs9x`91albmpI5wlq{|aiDSVs+ZPty zzW@{(&=UN0@Z{)dPdG^a;vmLA{nt7E)bp!ybt7BA8VOG-)Yv-x6W{=Nv?X^4p7ZZN ze~0X2K|(IJRSJ0)k>Mx>!q{^vW)>mT%`65M<*&cwiT?HUVL2f=N!I3?}sR$|g^}xEl2LMKB^bTNUyMg#SBmhUcgz1fGD$<_}bi&xJ zsYL>gS7j{Rc_vTJ3`+1%`udPO{ev)p<@;CvGg>~D78u}Pap98u_A*Pn{9-VA%|oF< z0)1abN#|LFxLZ=v+2eopAJb%Cevoh@B}>`friGNH7I+b!c;=i2~CCf-2q$q}0{-A@tyOJHIV{Ww6bM(@jW+$arC2UezG#ODF)^7DcF zfrbEgoA`huJB0E0gzWpc#|;d^)bqjMP8;Zi^@I~qI6Z+R;IWV;(Rl{?d|X{Mgk@FcVIme=MD7lfQe7?-vi@MN$f`g za6~7p*Gfzh283>?FR-o<4;=0HeitpjF*-bo#mFmfvBa^y@~iKJMa%DQ42bd{`Mc1U zq$#;ET1e#@>u+D2DDQnFpv-^%yM6NC#svw14&uwXV*&@UB)RyjuoVBHOTs|CL({W+ za+Ep3^i=?|>?4+d83G4Dh4Dva^dOE{_@u%3K z->uQ<*BR&~y>uT(TVnhv3T3?vZlZxc$w03(&}ks*3EXU;&o$6%4D^Kt`Z8dpZmC8n zV)f@y7tXKVC40OV=kdffOG0+L?*}Y<*6V~WHF4!;{3G4Zd045!(fhYq#)gFDUBw@X7XeQK)x*k|h@iAcf!jlBQ%_4u%7i-wN|BRQHBm@Tcxe>(c zHRfi7R{!?zqeEz)My7cAv8O`^C|iquOEubU2+2_m5w^-7oe7JRZzv8D=vG;wuOm7< z#UIo{lBbo)CV#Zd5-s1&f}(c6{rwguhg9>zjT1E~TIG>n#mX-cdf_SK7vXj5mw@#= zk3?_N>BYb+H2If-L*&vsL*jh&76X|$3KBWW2w`d|qMtI*3DYu0Cav@VNAiS+AtcgB ze2@y!i-7gbMJX}ih)$S7iI&501_t3qmBIZPST}S8SnpHa26@6skS7v#cnZldRgx}m z1=i~Jtf?ZA3PE8R?^6V@u4 z%ceYPbixjfyFn?}jfhZJmEhku2oX*OjYuc)p(l0hLbGRr_68R%Sa%7xv5IiN`1#gwT!vf<5 zdNtArWa0}AC%_JwBDEv{t6Y+W{f1R8x@b+2^wJCiN3UvHOJgl@7U?b%-dBEYaJt!!yufDw0L#wZ*`Iz5(A#u-&AhwXnVaY*)Qi&3nRmdDt zP%=aZ2YT&{;&;od(*hIs*h5$_lRq31B=`nvocpwpick+v(=l11lIsQd6YwT@vQz`B zI(-pvHfSW@WT5{Nc%DYT1Wb{!|B4o6JKHx}*@Cbwu;u;Ke!UHt= zGr(k*)Cz za8dBl){|`gsD+e^%kYEXC3xCC57F>6V7+dq1L$>lGZEoPmv9zBviTseo}Y(-Gd232 zUU~VU6MP@}d<-jN7J20b+%rVVZDLTIyfZUU*i+Y+)u}6F;40FUbK_a`z~z9HwIMJ= z$xyO%RQDsK_}jqY^6HaeamsOmL_YyZA6uv8$v9vK(&31gSDp`xE~K_0sd{+*uyz1g zFW*66a+DC^f$${%BPX{H2}-!}H^7u|Fj9Fz>QjBP1OQ1a-S1qy$GYglVNC z8Jg8Y{9k_+=hG*lQiCMn(VFD_20CG-al!kYflgST=FMyF1jv$TIyDm<<%F=7!|SvLK39gJWYYi07wB%@_SE4%Qp=T68aHKf}aYY zFXJ&oOR}6H*QJ_iizXv83$+rRMx$Fc+Miu%yz?3A( z?V}Gkk|(Um`;-Zbc*OXmm%$wd*6I2djpF7l8r3<`zo!p4vO_KlxnK@8yb*C?ucn;A zkqqG*=*B`q;jd zzyrxpEHx4w86vzGAthX|)8#(*h79oPd)UJ|86t#dYT`qw2I0sIVLL)HGu1#RTm~8? z+YGGdXDhHnUSSW4Q>IvA4@G%&_Ap?5YcP-K^1^{ZBL~trB+(62bT~?xus)eRPjtB? zEhxoz2M~#-lMEaMg!TTM53HwF0Ic6BO$Mg?OYqZx$p!*$20mOG{Rv=Qw;5R9Bkm+Y zI0Qb9BGV8dLqQl_xk(BtS_Y>0n^m(qXdo_gb3@?^>+q3VLBa= zd^D;-FJ%nyM9?ThRa8B2lo(;X8{TE06Q(H1-%s_g_sQ)BA;Nm+dJb4m?0H}sWTgDE zL7uSQS9TlZU(@K6={F4YH-Y;ob}-NFLxddVnlNo1N#QdCov>bY8FYArBYDEK6Qc}G z2hKrAy6b`U-rfv6P@}g4>xJn64n_Kk!ahXq(Qp~%0FDwMte3dLKqsuvW%mK=MtuhP zbq0CDlu^puZeV@h^u3OVzEtc3ro>3-BVclr3Bvl(jJjBq!A-p{T8 zlMS-TMWX)oj%LMp&>6wNIz0lI94Qdi6N?7ct3Adbp8%}eNixtS13guzQ;9MW(c2?i z!<6eBU>ZV%%Od5Sqr(&A?`EPP+tn-&;1n{r9H7z7<%jrI}L{-j2SY;vSV zSg*S4fr(G_QeY}2*%=M2&&ku&v+mw_7RY4#d~UA%`(*Z<>>I#-yQjv^g4j=fBUAppo%NIN5m}U6J%A<11$LGzKPs}Jaw2F! zQN%|O*Wl#b^s4?9?he5V7C zUBAd+1@iAQSdfh02MP;Rvl*VrlKI-@GQP4G*S~i8d~cn1u=<;wlWug)nJ{JsH@LQX ziFYtWHf6GS-!&q5LaqGV=T#X+eaytsbHaQZ-~~4ES>LAQnma z%^t+!lds7P{qE>Bs`8wl$l$5@wfT}aL1ySRcBT)@88K&+r~IddqF*t+N|l#qv4pVd zDGR;1o>4<{odtXD%VNLeqFZ7$37Z zR^}~V>L0%JM!C(&R>|W};m4Vl%I!{;&g#`bmfMA}8`wTI_PH8-s|0e95b9uddHYa^ z4_5-&Iw#N}A9>W`fWAWCq|%SSglXs44Pn9Z^FtZF(5*6$slh+gAXr{K9F`K*V5AyM zSA*qh@R%CxP=j~W;Di#$0XsvZz#+3guFVKO9o!dvi)F-=;%FYoio)s$u=23$Ma%myEfiZczmbQ?Yf zdEH?KX7m}L5)WG$t}Iw~maw$KQ6~A#kbez)lE29yKM!&sDJus8ZXYMN)CR^D-)zz^ z!%MnF;FJDrgnD{+n)EM$SBc*^h%T%%Sy%@PWtxRK1`8WZ7N)W$%D^v7>ieL+N>le5 z)VG_|TadwHl!5+q@-bG~Xk4qz0+)&~PoA(WFp;n4<&sr_vGRS(0;9590(*;CZAjse zDTSR_SF>l2Y$jE0 zagNEtYX%F;4Hj-NSrD*6$(6r;AvC7QWWgTFlKa-SxCYuK1I%bJv?T<$-;Dl1v=pC zrP!replfb&*TX^yZO}AF?M%MYlu|w7gXGf3Ez$kkO-bE@q>iH~RAG0?A8oTF@-N|0 z$X)2o0Z&?@GUwv{uMH-NPX`=5D}Og7@lCj#^H@M^;c1h7dvtGQ(8CX1KM3bh$|{mp zoFhU$aA#0#ArCsq=x#Lh%MhXT>k;bu$tL|(5%P+=f?|vNne;b6f1jqm#-N{L(*Fj> zifyv@IZJf$Ad`vd_;$i*&?pP*3?{~yOl-yt*^5e#C^1=RPG-uxY-FLqU}2WYLJ2n2 z+vL*PuoyXLRZwJh-GJW8UvJP`Y0^6ey-Z~)DPCeqdZ?Xo0ottcpuvRSWP;u?Rod$N-RJ%5egP{Fx?%)CHH8} z#AXnQN2_Co$wWO4r=@EBr)g}v*@GMB5+M5j)T1^%L2GE(4 z*0kcSCKG#MVvAM`x?GPlm6ZmJT+FTZl=k?7DEnRF<7|WWZ?)bydZCS8a-&G z$;4im&`0A=g9*RM#QHQn6OWiIa7Dejw3MCUq_ycRf^(^6m9#zEy@)e`8QPYf^Kht3CguDcNS| z>$CYA27MkEK*nAdO586XZUW6!NGVO$-O zqr(5*U?SgSV#Oeids;PtA0xiT#5cHwqBlRtM4Q3H9FvKdY&^eG`=QA~6zYL)%*aBA z!NR>J3va_hj4}XMnJk=y1yqh=;cbJ3$4wRvWve@)$4vU)Kws|zod$in$wj8FP65JT zWh@rHYSK>~(>n>hYtW}#UZei}!Rn5PZiS7_unPLv(J1+U-=Kfiq0knW6) z7B;vUw@|aN&tM@KdnjWLRt@2}Jf#jT;214@Gq$%5J}_8FHd%OSh+JP67+cuSq@P;W zyGcJ_&>w2jkIGTDCvxoSKum(;dMmEWpmc*tX>N{kn(IH_l;|wz$3u_0&L{HLsd(XG zBO3B(R&HduJWWMOn3-r84&djDUWOgJhSN6%5I5JzP8q9rlVF`VNz zE7J1N7jY`MG?{VJaf~C8zZgscc8LrHY^>nC!j%l=? zD7<7cu?i;2wW{tmm`F64*jOk}x&u`m3%aojzKy)6LXV1Y+@L?wr2kSOnpo+?!%Y@W zLUp5N;e^4$O(qMDk#b7|I&q~*f7MK;Jk6&ZoHXd)VbVW7Qa-i@l~`-ifBGh-y!u4? zrw#g>P5SeT=oMLINqy90qI?!A0k`^O;*7z>>n0Pcu0s-PKR>ZPC@Oo!9P9@)y>kY= zPfU9AOYlaI(oa7$rF^7{aT|~-rA$4ZnudD%8Iy&%rL-i`xvcOjlZl1%8CL*3GI7CR zA~@>WPPB8hyn^m4ETB^|x@*B4wpYu-Hz4X+$S~=@JqB-KDD~${HJO;Tm~rd1aqykN z#2Ax_y=C+WNKd#o8zm-t$Csl^VUD39eQ&T=rP_s9WDVy92pFcU)XD=x;LV?^E@QH<sr*n)E-> z^oN=BzcJ|JGV5ybD^2=`RDF5lY^+=yUMAGbEEtrQo0N`di7qxJDj4)54Ehh6^p9!! z_nY+N4f;_A{pU^k$2I+@O!}z?eR^e0?=$b3^iOK~Z<+LS4EnS?()GJd`e!u#qbB_# zgMO?*|B6Zfyr%zyNx#gXA8*i)w_V%kzR~ofK{s}~sRsQ7gZ@yH{`Z>x5R?8~gMN}h zf1*kMlBzH7oQqDg#Gr&LuB(-{*rdeWqz<%dQ=+R3`gVhUy-7bn)i1u=q`%Ifj|;1- z>HAIk!FW^=D!=+6AKmv?CYBAX5S8_&iIoUeu*y1WVx=gol@A8Q#Ng@;DPNrv2K6eX znOJ$ftO+L8$X?cR6Km8}md$TsO}I%uzcDDb?@kl_hF+EZCe}1f<&=qj(^Zwe!7$poHLI_1>Snb=jrW~uQeD~0T54j|^|IEPSa&F_FK`PQW8&P^tF+t1 zy0@40o{3ctme!8POsw_2THl#i5B0LbaW`sg<41Z~DJIq?u&ipIDL1iXu(Y0btBKXp z%X+}X`c*IMNfT>VFYDJP)|QDQ9scQ7J(I}YB@}-u~*ZwU8k{f zv~1ikORhh}$J)k%j^{g9-O5>wwXuC?Xwo|QS1>eJ7SDx5FPjRMaY@*S*>R(`NuO$% z9cxS`Lhu;1AYV7A7J*`3lRf(;?6)CD+oDP)PddvdSWBBYZh4%4(j!v%$uBvs1S&Yy za9_)-5Acar$B+1?age{|ksNu$X8a1mOZ2giJ_^1)<_;}P2MRgh;9 zQVrr38}ZweSFU>FcW}Q2U3b_sa&PMqgcSdyDc)s@e}*`w87>dr#@*vn4xS|AR0#KR zUsD9G0^Y{eE8iL+!&C?xw?^5G0xFK^v{Ta^#YIy*6Y=Lk{|;ML8y;Q_MVxkdPr}1bX?F&X6EeYCs4o7?CUvkpU*@o|0;*_Lh`Za~Wfx8EBlE%Z9JeT|%6SLLJM-y}{vonm(nm(!j8BdpYIXIbf2b z4A7T}NkN9U;li_6o13T?+R%S*K)koHI=Q)sQ{CR6@ZaTDAWpK?O8k9pwWg1#V*gQ# zkD%%(!6zUs;ceU}++Pq+ z1;%X;;s-hU9R=#aYHvM+H&9`na{PdzaF~lid=juWxrw)5O5)(J5q=?#Rr(; zBTVt}h})s}XLuVfXQr9>HHc3FkG?!?<9rvmJ3yck{Zmo+hI`ng@RTY3swv)KihpK` zpFunerA@*WpbhsTSB!k>f9j7(0l-m->HQGhQ9K@T>czi=x8a*k65>>8>L|Fx(Qj4s z#;@Vfn3eA^5c=SM9Nd3RJeW0J6AxwEuZaun zPy#&N#*^k%6<5{q_lb{^;;SyNfHSr{tdQBX! z++Gv6v!WpR{WUB(uBvYNB5ux{d3ATLsGhT;u6E8Gt_J@IUjAwgbIBD+A@Op=!+eOm zcU^dJhSf&0>ZS8m+{rEV;y=mHqyJ!!cYx`gNB@K{ zQI^-Tv=F>?>8@SAblm(sd)Km$S>%{y^XL`gQOlRrRWGaKNHSv( z4%BcCLh?i}KuC)lVcaPzj{QRoCm@JHznz5eW(_Y!IA6s+<+q-0(-^A}KCEE`+-42G zhma;NGDI>66#NN7T)AAu{R}wOfT`4^OPdW^vj~&!P%N}c1dju_e2wuJghd*5A-vu| zry9^RK{Z2o7DC!Y5cVRRq2Y-LDXz;e*YF{PwHjVX6Wv-ZLM89iFy(HahPNOjB{H-M zq0%%M%6Pd%aqJs4q{S;n8{&k+H2MIIPBo=u4lC=Q7`}#%xGzSFtS2Gh=Mlc3VfyOw ze`)wALfQ$F%puUd@Vf5(8YcSN2Ha)9<(e+l)?^K%ANbU&gV7}*DjfuvI>CgjgSFlzF98;p$;C1@Rbc@194v!GQe+{Dc8NWx)M4OlfCpcq2k`dLETp zhJA9%*WdL_mViJBw;-hcLD-IvGOgn|8lI1^O2bkae<4L^&J9GVmz z2`(0%zIH~Au->E;*V|o@p)m_*lyM-=XpV+Uh1ap&fRhZEMyoCpL+R@gvaMsZ%2iAw zMyCfDFyK|X(i}E*3HTiJ7+^Y`(Q2+^+CUSgU$fhz;qyL3-qRvv@R)|_#{!RQm=Zm$ z;s1}e_m7XFxc~TXHz5S>0s&G1LAeV-0tQH8z^FkJj2JO!fQYClxsV8GkO)yx(FLRw zH7y9}QcK&QsHmu@h-lG5q=*VOASzl=q-fEiMa7DW-uLyIeNTAT_VfMc`}mG-<~gr< z&+pmU*}Y?rl{qZTO8#4zl|LrTMJpNUSr}W}UYNa5CCp0j6&@aqngDzwndRNWQ6%_> z@FDnolNW9HUO(O(ldpzUn9H@KCeO4`A)!>g+GR$gTqPS58OLAXhV%0P6YEWv_~TT4L=u$gHw_2 zGaO7njU0xK{LQEI)Hi{-dO8mJ9tY5T!1Wcd#MqbrmMo}c8f z=v;7Y3r2_yHF8*5X0DFNbS$(nV#DDmW?D`ZxGK?$g~QOz6C3kX3yIm~GsNg-_&2JI z<_kB%=M|MLsKK0In9L_#3x)58UW!8Og0ot5YGk|KtTh)hB<9u4?0~?W_1h!?&w_s_ z{#^0bioa8wP|Q~nvU1Fa2YDR)uC0vzFJn#lfDi6uiJ(Rfi(ZbflN8wGhz&JzSo8|o zh<$^$72A}VaV6EAuzf?Sq8U2JmaC{+!X_>I?UcN1m zI_JS=;n(1A6XvPw?T`Rp7|K_3FadcyGP5oIP;_c!ThS`oBnQ3nFR`IU4vYS+=v*^u zlzlS7D9bY<12zF)DacCngg==Hj^GbmXVIyV?KZs*VO!B0v7tt`6+Kt<8u<0fek`BZ zu`r5bRf5TqU=REo6wg$AtMGjIvxT|JHK+m>i%yMfD>T#E@ciE?Mij}`h${^%mjXXY zcp!Q^orxFW4_pL?!zB?e6^FCfpjo6GZWzQlO9SWyj~~<0whs=Efztt}N(8)++5bUD znIYcd(PkL@p~5VbVd|_*cVWi&6wZb}P?&oOmO*=5nZ?fIo2L zFt&fR&BsB#4nD(9yI{@@5uF-2EIJoQ+E0ORI;DMJUnV*=a#(clB8j*PJ{#xY9|F;h z#=(rJk;9@lft_FD58QGb4u=tL84hPQDYyxD<^;^aa^?oyNWLTB1>{Mx37W^im^!d2mLt|#$KN9~>I zLBOmlGXk!J=dcvG3LMT22F-TRxiMgNqjOWhrDRTGxMCd6&7@$%?A#J?Aw1{SfD6cM z9eXdAf!pv0E(eEmyFv3n-(lClW#MpsX)qKeb3+N&6NmFFgJ#3yuwUUaa5#4w3{IN6 z0_Jc!cL$sb&vQ5^aLG8F-xxH1oP_~zhnLY6J0?tv{lfR+OyvShooh{3#F44@QJgKz zoCXQ=Zjm29(H>=bq0=S6tLcTp%xJvg3Bs&#wJ_~#h1n`|B}b;z>qJk7K23NT{03q6 z&P|5V|M#FUb6H2?ZiwLJ+_vUkVRrL!VYXnEve_gYg^jtAOC`37&Y^oln3Zc0&W8S$ zx!aZm-$(>oZ#J>e$tStTD`c*~qUVavIdhsYFPeqIoL79MC>uk)SeTRVT&pvJA9T@( zGxS1X2L)FM7eVKTUp6D|BgnOvBIvJk{bj_72r!cT4*a)-`CyG<>U-e7C%ga!GfaIy z{11g!!=4qP{!jP^h50__&xLtkbXeFtP5fE{Taf8dVJ@#f2(O3EjW#poWj;l?5ScPe zy(9dHFkk81N!TpS!n{B2Da@rg6NksdT#wI@2riMsge%~e3D?0lcUQ3Ia?EdkFfEth z+l0AV-XY8t)!aD2hG)u3G{*T7f8ZVv8)%*hgeBrBiQv-toNx>LKM8ZGeOZ{9{!REJ z_#X&!jbNCSO9h*oC@>eH&qO~8|6hhN{$+^xN+P(j{UBTjc5pBwF17r=0hy~}2jM7v z;bQnF3Rl7JE!+T~FD_(Stazcjg}G4O!{wI|P4FKV=7RL3FkAVe@J9GADSfLj*M&EP zKY-sN%mwBxVXi5=g}ET@6ZW`Bd?Ep^VE+{6%JzjYD=`QMD@x|Xvs@<3wcsLQp8u7? zw4W->(|m@~@8&}gn~~XYb_<@Y`IsabV6F#r_BMV9m^vMqxADpFhvBgH=Gi7}xUsDk z{Sx@x3ex6&_)LS}gu!2o|4fOXNXGAP;BP228;4CWPnauODh`L=ZH8;aK^to1u;`0L zXJOo4X5c=78!A(lFp9?dF9B}htP!yFp~q>WQzP4l9%qTpeW_^;AG5%Xz`=Z|k;9@_ zh&~HGdxJK-AbD4+faxwou(gv#XR9tIpBOy8F|`)XK$%uIH%QRC1@&lcz`2qZo_SVo z8(@a%MD#z$-L!zq8rj#sgZ4hF$ib$2rjwH z6hAJ^Nw!w$gM`<^AFLQ?=Z9y0l7*SlosYv#kda{OW8rfyI5H0=h)#`c=SQvRtb~~# zyd=Vz(+~MjBZozw3C`$&{%3-@CJ-z*X0o)00LOEdm7qqpPv`Fy{Ym)gIP61HGgn|w z&CHdwpz>y}K<8vU14jnNt{8rIjz0rDedrusxZ$EWsMAGpghkH=+r*|mww zhehv0{iNU-M;Bq{(M{N6faTDLOlK?63rwAkY%8$@oN+QXA6U!3Ra}U=P~QvfS>aFN zzb{PtPlQukY--H@Uozt5mWj`Wf41V`!u#QyD;R7d$mm1S$!5DPdJ@9ShdNhB@*ddI z*+c!;hXN2$?}-!)W~)ctr49qO9eY^@CWWq94vquIV}1v(L=C* zpX|Zt7{E-r1OV;}9Hs@rwsJ>A$3MXiCY{*xQ4Z}n>B!bTU36BCi;*LZ=`A`nj{)17 zeky_aEE<_|Ob08S6UTlo#V778m>Suh9p=^@I)|V}Y_5SnNthMloWrwA4_@$aff-Tc zg9iH;Fp4l<@`u0j(K2kJ!ePyi`j`~34*nY9z3|Qc5jIbNvyk5A`6kO}!4%&_ zq|NkQNz4TMggJBnE_^*E6wemhrQeHAjcj`~B$Jet$WiuupFPXXVfz`d33^HdThm9l z1pcYQMew;9W#S?5&3!+Z_7{m>34fF@^;{O5gc`tAi%yN~*{&{tV8`_iF``Dc<9es) z9M?kHb9%$^MgOc2HF6j_dt$w^FGARnMagVjVGqpPZl2}rf3!)Sy*OEV%GXM!uP{pD$JYFKMLOiKiZlp&H~Y? zk?p!-79x~Id-JT&Lx7X)RY`CO3d>?fvR0eBTG&t{+b%sI_N)X?HEVAcBG^;=uZ0LY z8`BO4hk)yg*HHpd`og@6?JCR!`NF(J4_3Na(WI-*Wg3}MBipVv3l8+j&}voMTvqxg z?!Vz~ln9Ds`!U`umB1`eoVsu;MW;r#3(jiMIX}z-B@52WqEjQ=^`?mB+r{L4F)D%) z*-pCsqVtD;Y7v(a#gd9{HycZE7TD|)!6$>i7Mp7N2-BW=4`HT_S?2TKzBT~=97)X6 zgS%lSCXY}IY(1wh6`dN{o}v>(pA3JR@Qv_q6TISidG{168lz-~8dOacPjXE-vVULZ1HTX5J!ghIE&H;akfI5M3X4)|o- zLyWcsn1w|?DdVF6>eR^g6EuFdl@SZR#W4@%o4|AM9~E8?|0%_139p7kH-T0jf#%VESZ{SA#!JG!Mfn3%m{#!oU`COS2;&9ocXeu&uw zW?E`wYh&(&GPzj!`7bzKyd#K%<49#drX$S)YJeR!^RU3|ONm*c!3&G@?ef zHjr9vege~m8rj-hPQ6d?Nr2guft#VxIlLsm@#OYsM8`l_B9g%luNiO`VQ*?YDzW-p9T$OK5aTa6NoTcs2Yj!Yqgd z(}qlEXZ}Dibvm-0`9)yrrSPxd_}j#$+c}7E*WjQ|jcm6i^`gH9{}$mL@J(0CeuzsL z(^50bndnWTbFpU+JJ@uy{9xuI0Yx+Oxf_Rj5r?hZ$>hGl)0`~Dc*un-N>bcitUEHM0Gh+$Pc40y8I03GCkzofZc2mtQyIGBHg=N|+1 zT7Fa__&FuJ8t-z)-{2)eOhCG`5x3_r>Ol+46Drz@1bxo3t>jco1bD*H;>OC{!; zhww;15rNi9AQ-ZfC>@-^wHS_UClSN{VZ#dtoVMY_&d9|*u!%Wt&v`_h*B>*f{#T}E z>CFpL>ZO-bMt-pSEfB7NKTPom#Uq8eQ=%Qyj)#9a*^`XGq2OcT;A?_3qN~DTKNY?P zOr1L#o*}mNGexIHwv9=pjZD}^v7tt`6Pf=Krgd`NFGkeJcKp(n%_^~>Mz%H?%I0OU zp+>egTSR{w{#Np7=zl)hp@4v4^Yll!7blJ|pLbdwq!>wCA5oeff;}DCe)cf~%(Q%V zdb2Rkyjf=bM??-H=12rDDD#A~pqmSf*xV)h8}RQD_TeuT<|C>V!t3EbD*P1u)xvD> zUxjzG7G^ASaKghKz`>eQBZo!j9VvA_)!}+h=H-;*=?nzGWr|LX92T7(?OAZK@J`rp zm_0j*xOUTsBH2zNJ@!|L4K=bIS2Ol9(afcs6@?AiPBfm1_96V^k`FX5#DIM$W-d0Y zKHU3aM2&18wEbOlw#F>0D2%J+zeH!tqBv~BLa<}QsF7{MvS^dUhhT8#Q6!8gl5NWv zXD>o#lUYDT?u6vxWbTBZAAvp&M+W#K_#8sJ0jUz58rg0@%s;7Rg6kk&i-XLJ%(%+f z-zqvavYitgD!GgXA2lE?wYzE4Kd68iJ{g)nKxh8c$Q&BZzhL7a7no-lhEWE5vh4{o zeqys(Y^af~jTt_%*)2BI$krwbwimNQ9Df!@5rI~t4j7e;!NGT9X9+jLzeDk8*wbb< zv?~-}C0qkPu5@6?!ET$*^fc0%^`C(-BG@fA;9#aKjALaJ+#xzOvb8rGPO&#bCSCnI zv8P71XTjs5KMns$vWLWXqA)X-GTzN%M2&36+l(c~mCihJL|SU*k)w<^ht00}UxC>e zYGhl9Fv_Fe3BIStl@po~)W~+s^thfaHq^-0CW^2f*D+#4jcjeQl+DDz#xtiJ1J)>8 z8QmxuQ6pO$1X~L`2b?j4O7IBV+L+;!9yO;fY^afKkEU||+wQ7C1T*58k!^RGp-DpN za5Hewh8o!xW`;&=W{V9qvb8ZoBQ|Eup+&9CbEoD97IhRJQ~l#=wXgXShvVCibko*;vAc%vL+ygI1cA5jr(;SoF)m zEUOm2=@sZK-#mC{1jPwBY=TK(>eJzyUg6C=TpbST)W~7c8$_Q?ABQ9QEuvE+Tl;QY ze;wXQ!kOnb$P}XCu;`4lcdTJ>24@f)+1{{r0#na{pG6)TFtBwv@O;bY)W|`PqWxz4 zkN~Hno|(b;LFW+s*Z4u_Sz@|fTFH8`U}|LB%2LreDcQreSIVe+NI;PRo4|CnOuz~n z!G;>y&V%mMaf+bBf`7#h=GjB%6b3z-4W)91hx0pP<-GQs|s?W*HW)L>Ts-dC7;FXo#pm!fS#E!&4P= z60(3f@NX7wgg;OCF8F4vUL5=b9t1&W*|s0ei)Z(x?jrxC(f*i3;1TI<^U+ zj1v4?3Ha9w-wvNcLVXE*?zXJWAjM_^!lsDlKmHh_Quxpe7s6+li7$XZR=5HFWx`j% zr?W#=1*Sb+6%IROdRT9SP8(|Ea7@;JGp;fO^Tdc6*>>F&>Nx3V!=I-3CdH=3u&IM) z))nDgv7tUhn2q85!$*cBd4PZfmhC^pEQeqV9xZ$ue73@l_Z6a3Bil;fO8s2ie7bVe zDLl~$bniOA5(&`gJ7IoIVs6EefL|vXfrA-64Bvc73(Q-v2SlgMqr&{o)KiL|SNvzi z+syMHWW)q?_7nc;U=~J4wx5sB1XG_4-?TmffLn-zIyJJjzgKiN>`~#T;ID4g(f`j& z;BEM39;BcP;J79*Q)*=UZQpI8zXv~p!x848p zie%fGnWD4x*@(0A<1W#uk!=GOiT+#oIkaaN!aXcHHL~sL)#gi>s1e6ztr+nuNG}R+ zg#VK82IxGGoes=0_|hi3m)e`KvETaGCHBp*FF>5F^e3WIBb!RI{f8uil}N$COpih1 zDri@?sOZ$lc6Bq~iGuw|Xk1C{PN`VzsgdnYsZ4Y}Z7oKe=kOB*xXUG?SlIsSjVjSu zxl+XOU-!{nEjl$a{}o{}xK8x7@XHXky>+YT)X36XUTBU)u)E5cK$hW!qEjQ=6>YQV zTrM>nQaqC6sIa?ORWvCl^+LZpiB7l z`vqafZxv>`_l23?UY5@Uag4&>g<0sA!c5SH^8+@l821F$o|Bu*HNbrS1ExLi+^DmK zya}@Q=GGlLd!bx(^Z6h5Z#0S`;tt^~@IAup+NXut<@}_a_H1Q?;)f7N{Ym)ig!jQW zXH79OfNRD<8){%L6qX2cs+0sqe-$HYimy zMid#a1(efB3K%1asgZ2~6)K~NVndB=^Qlz%m=zXfQ8O#7#{@0_?l#e> zk?p%w#v^PicemJ3BiqVVDVzJmh8o%0GzGdBdI(U%1l)nb@p&-2jv6^E`ecM{!Ry3^ z8rf!AM;mFt%VI-~Y#UIoY~C>IKMJGxhBDeKiPK&A5ppk7Q%)gn3ehaiK zC7+4#&2laknvFD`EzEqThX{&fTNr{NhZlM{UidQj*aD6m7TuhF!-LNRjzZ4>^IBiY z9s;j`e}&>-2_NS9f4)j!ZWbl+7}2@kAFFJtg*oZW)*JR*c-R9hj67HI0>!^kywotx zenSEI)L< zMDRYc8xu&u<|2Uv)X28rp0trC-DY8d4K=f{h(1U1qsb zgR~66ki$DnxQ;k7&NpZ{3_S-yj(}DH;EP9+r1>vq1aF(+lguBicHc=#fBQ$+L$LPsNAE_%)F6d@){%oMY4SckO8){ zcb?c#Bim0u8bx0X-^`nS05~59dx9F-+W%g3+T)p4C}RZr|2hDj-6jtLBf>bc-P@lo zdNF)X2ilwopFL*3Nj_S1YGnI8>2add-t;K9QE(GE{>+FXCy`As1#Ao8Q;iJtH}8x` z;2^&a{{`WF@c%5#ZTqW=w<|uPxKi@m;6c3H2EbK{uT~6f?V;(SQzP3RGWYtZ+#G18 zS5lB6+(I0zG&QolkzEG%Y|A(%e}N_^hR|+#9 zvwBLUuVeYlh$3%`ZLJ$bzXkqH!mM?amEg4(j!P@kMuqJSC@((LS=etCXTi=6!6Tx3 z6dAA=jCUkr5B&FpN5ao$;tK(AUx-eP92Wg0gfq%9?$B~*1KtLocgI#Y3la1k&}MM_ z8Nq;=z2G^>#GG>AJm_=|YXE0vGIYyf(U(E61(=yH`X5E7Mz;2kh`y2MznS3$K>^Q5 z1U2%1e2A1D*t{t=5%}b==dK%yv|o8aXWb7vKyJ5lmoa<3&M&Zy5od z8aXU_h<0LcCZp))K9D+W$=2RXG-+55NlT4v8|FnJ*pJY7im(7`WNS1;^dk7?jDQWt z*i5L40dQvKL#IX#i_Vd-Lu2L;mryvfA1p`zQ)D145fdc=7mXamIjjks*=V2uYG$J$ zI?oUmK>J+8Ir3SbIkTWsBZoyVpp8`SS7!eYBZ|MGkwh$%OxM9LWP%C++#f}!Mh=V4 zGl-R-eG%fEQ2@BdMW;p%i(ZVdd4DwKU+}L!k(i>nQ{g@dt`vuD%@)as8rimH9Kspc zskFd6-qa|XV{E~MrY3^?xZ~?renaK9?4)wW;M=HQvfxxo$WV^J{!J1gUr?& zc~T?WIdm78WqklYg2NeuR`C444}Td!ksJ;pf>TK5#452#hflV1k>hcY`d4Iiyea9VndB=ZT5-IA$W?zbW!m9FvSg+udFfu zh8jBm&GgwypUe9{CZN%aigybShR*loSR4MDj^$j%cd`=5hbv^Ga9_mJ*?++MFqk%U zWPUr2^DlTDjtH)JPvM}^03{bCi*Yo=db{d3EWMhQzP3Cr*jc@ICgL=#fBQ$evOaMlhG5Nd973d zB5kJ6NCIkPo9Q;u_rNby_IwU(x)d7O+85DA=E2{^h8o#EJul|`w-e-;7!|{aYsF7`9WwepGVqT>S8){^GM^#RnF2T_7HM`8GoaY|{b`niQIOAeu4!bWD zvwW*_cWn7AVLmS|QEcvzkPmgP@U$n>**mRE!5$;%7_c`ISAwZu4L=!&O)yP#YGiAF zgXmT8Iqdcy-m-DbhZ@MW;r#+w(_7XK$Hv zU7Gl;=+ww|{r{8b4(v0)P6t*C?hPEQDMhl~O1~vK3ovWISODC9(W#NcqOYc25qx6$ zvSPEPgWeg*JF;*vpSJWdyA%YtwR%w^k}>(d7Jdl)gW@cNnV1)mi-q^YZxp8e62<1@ zS=c`f?Qzk`e-ieX_!S9|UlXR$UlqTr_(Ne9X66J6*a$ZBK-g^Oh3805(8dh6=u0>) z*cwLsRvG<4cqRN5!h8(OFzwgCH+y(+GuX@n@IEl(XtNH!nFnC5oa;sBu$XxO{W4d^ z-!7SEAAkrtvk&0F!|lewOt}bgdqw709u(#W3jY-5Gk?xQ+Hl;>sSD=9WiDWnmiN3F z9s-;Q<}+U~Cr5-4lE9pPoUY7JbZTV#n){xjb2!ZDcWGeXUvz5Zu;}^9-ZT4l6vmCG z*{g%O1LMY)m3R`Fnp07F!rawDr$)9Hm2`w{FHVxQ)X3Imn&?O2PY>8L|6t6Vi+o}X zcdHmtBZo!5Lv*%sq42%%7c1SIqFo`tnXNi1O3iH5MK@b@=**|5UjLtwjCjo^+x0(+ zux**yh9faGvkjMCc~jD|Wm&YBO)T${*o)N2c5`d?0jvb~f7wiM31Z<6N&;%+u;_m?{Y9BisZ29#iCcj zA1+)D{{rD%@W%_^2ftdFl`BAA&Y&QF^Z5eur)EB12y`#_01*+3kf4wWIs^%BmyD>9 z?fVT^iOx!xYy4?}{j;J|Biru}nlqvkM7Y~wnlUPPApMqMoc}L{ah+yjMEn}OTKE?5 z%Zkma2OH}DR=U|YK&Sg7F6GSUm$11O=P9`!ev5EwJA4j=ZMUfe{M$SUFu|RQ7YZX? z=w0F8x5X2Ylpt|G@F?LI;QvK=M}#uyaWC_!XLmt1*NbOIq+W=?%5GvFis0}5B><@ znecBF-Ui>BBY`L2uTc?i3ZDl5d*PuS@Rm0mEbMgnX9_<9e}wQX_@2@qQ~ZN)E-IIV z1NnF%2EswWaJu5IihC*UtGHawX+Bxu12I;P9~4yzbFt&@jCwPACmqoauhDQ5%<~^a zP@DiQED_gAf;sSK3Ul!=7bn=W()?!|%#;_SM&b7`9QO$O@Rtgw!hXH*OYmP5Ucnz> z*eHR&z;Ct@(6=+wyenejhG=NV+Kgb5hHeJ?sSvfZ|au!wnV0Tb}5 zXZQK$(`o3`$TmT5S@mcirF|Lz?o836!ghOZt{upS*Nt<te$o3sd<~o8r=RupJ(%xwp=l?=LqeOg; zwSZyv$|m^t3jYrNGT}8?!5F5^Q}COFABO*+@Gh*|4AX|!lShRMk@gwk_3)oF&wpUl zh&A5q$-&fIB~NtDl_A1>$-8-hvs5S- z^RIR6&0F6Q0nxkx-j2O_%QJLl6qk%9!LJc!%cclVgI_01`x}M%_Gk0fcge@R=pB3~ ze~E^_B*QLZf+vNag}+9aEjBwDIi21Wof_G;c(3Tp$82Q8{xi|3k*)n<>RkVs;72jK z0TajUYJP$>TnB_%Icj8kuJb2UZKY$v*TFA_on0sRyVA6wMz(1SMQ6F*c@kjaQk8hD z=+wwI@p#dh_$J|p;m=iErt(=LIyJJ*=eL3GnbxloqbK1%F3fRVC%ggv3ra6n1-vdg zHL@*Wujm}U3fjwXw3po!wf1c={&qalC4w!hR0;TF)$B%UWNY6?*^i^WtcItHPK|6= z!=cK4JncEeDBt|LH4C74DHF)pSE&To2+xK;UGaS36X4$~%obN6FWcf*M5ji!4R{S~ z)_?Br4vSGGHjFh)ES2CdU9)o3$hLCHvaw{^$+VX{A^z?w?WvLNyMo0g%1v8mIS};oz zP$Sz4%@dt1n5FC&icXDe?S0XI4}Ui8r2!9%PVHfj2_#~xM7#MUSO&p%(b-}|jcj{pIc=mTW{V9qvh9iaqBp|-qcCq? z9uR&XlX$)G+AzkyiJ2zw2krxjXcD%k$^p^2Hhd*~6#h5DT&z|ijjf!U8uS)5vaMXI z=pCq$?fU-p0kXBaNpxytyS4I^{oTUL;jd*{X~1I9sgZ31*3-t}{u}NAF``JeE#M6! zCmp-@1!1;e1MKX#ApRygHL`tl`;q9p8U0H5DEx1PnP+M{ly3{@F86^fU?U5VIdP8Y z)W~*DoF_VaYcuU-{l8RnYGk|qU#aYCgg1DANfNjPex2}x@TUo{f!`p!4E`+PUGV1$ z{~G?Ugn8F|K$thT{}3*Re^~h6@V~}k*8eBa;vXb}t>4PlNbCE{-7YnHI z9@NJSr78JYkg2 zTJv$pMv2%0{}o~0W*=frJ7VDB4vS8WZ2uk4QDuJ^advG;jRd_yjcnJ3bkY0q{agJc z&;f%B6{oe+NO9Xj};s)Ub z@Q<@Q)$Rxhk+vk0!k@tZd%#|Z2|ksGEEMpi@VD@f2-7BnhBy`Q;d;meDQe^} z^kV3JL}&L7RLqB1?5!Q}&k!zyUzCRNXT&-L&XEW{HXA0)M`S$n>^~~FRCH=&`;Q7z zX@l(*-8EuEjU0xa41I>^15i0WhGV%S`D~7#_t*k{BN5cdwt#e1z#qki8rc@GN^};$ z$9XJZ9{fKEvoRUWN1m|1g0NZtDKcOmvA-q>n9*Cp9D;ue{|NsJ;Un2oCZItGQC`MYGj*dmdf*5 zv7tr|r(pa!HhgNyOh>~1mGBermk6^3+000~?suY7Bio)^EBZmSe3S4l_&bC-G2a#5 z5C22^sFV?(E2FO!pNk4+j8;EMbp=X=>n*zFu;@9WFNdEmd_84B%gAI5Nf<4BiU?eOwUyPn*i0+n}0HG4UmM`hj}v63ztkYDm2R zoKQ9#bE^*#X4)dfNM>xVfX|B1{tU!lC0qkPPWB`M-1_acX^dbFaAf=Kg&V-sS(qM6 z)9uiyk!_Efu7+L$doz?gmEi8i!F;HB4A>XKm~oOWy?J=+wxzfGhu_{U31amiaV^phmV^=CedEg`bSWZXl6|$%q=+?jOgC&eNIWY&Rx#qEjP# zc4q<({jYz~`v0>&ocaHMFW7GzZx{8y%}B{|+WY-e-7)^OU!-*N?@e{LIeq==cJA-e z2Ah)1Z}mDu{PykLG0xfkRqfr+`WItc>d5NBe;@5s2B!R&!ofh&jU$is*F2iK(7$bP za_*9Ay@;O{af|$K1}A6vk0c`9{2$Ku7b#w@c$H%R;48^l z7wuNc0mXbWZA&?(I2E(Z>U;ogIcnJd;-mK0@_vSH871MBiq|OSQ(bGbRWUz2vHCv6 zhsa#&;f^X!#uFW@dwhy(13eXID=r{&VS_7HT&{SW;u^*Eif1Wa5HQbEJn&KxP2@Bq zhgK_IuXwXzfAJRgEN%$sBG@(B+n8>OvlQnlE>c{kn9p-{|*+4fHk)=3Sagkzvv%{vX zR9vN)&%hk+5#VMjo@bfuUt|N|<%(A+UaNQ``4`L*H{6PME9OHpYr_X+mX9e;#iHif zhztZQM-}IgPY4PtR9vdKLh*RTlNC28o_(D0%he2Y4GLJMc%|YsiZ>|cGcB8TmtsE4 zvic##M-?Yy`E|Mm^Do3Nzt{vl6=y3hP+Y8-kCbfMaf)jc*DIc-cmcmOVG}P^+@yH5 z;`NF*D{fJ|NAW?$M-=l*k1W@;KOzARLN~=(iupLnRy$!5Jl@m9sV6z@}fNU?WR1(I=DwV9?X?x{Fiae?Au#pQ~}DXvjmA8>G% z@X3NLc!A=jiklR#R=i&EX2mUv_b5K7_z1t+ZVTr3p)5xfcT>z~Z`OuSBPm2o zxJq%Iinl7>rFb9t#30W@ijOKz?sVM7OILxOinA3LC@xl9u6Uf{8gh@I z67`B_DP9n8FyWS}h$h9W6|YykS#gWvJ&F%1KB72;O`*dZY`92gPB;m4QxRE;a}^gU zE+d~5WK^lRN^zaynTqF;PexjQ&iTm={8d}JRP0=g3eHd*Rh*-^P;sf^3dQ3UPgdNZ z*qf~ajf$5kUa5GE;th(oD&D1dpW;J`j|Ln}f@Ex;Z0pm>y-cTsdMeIVT%fpEak=7g zifa_tE1ty{8r#AasEDPCn-s5Byk7BU#Vv~WC_bq8h-K4$?DK3TB8s~y&QhGKxJYrC z;!4F;it7~51ba?2=<0cl5MHEsx#Crd*DBtqc$?zgiVrA0e4M?|vEzYIDmJ0E5*do4 zigOefDlS!Ap?JLF$%-4uG1LFJ=$k;uxJJdx6t7ggM)3y4TNUq8yif5V#Ya6ANX8Dt z$qXuyuDGY-Y{dnNi^;u%wB?G&DXvjmFKpUBi-D{l@dCw56*nnft$4lS&5B#deS$pq zC_bq8NLTI+#fVQ&Ek_i0Q=FwZS8vguT*XC-%M@2Cu2NhF9$^cc$%uhL>*pz6qoLv6{c>J9p zx+peSj&P3RLdB(uD-@3>pBCgZS#g8n*@_z#d&^W{rQ$V;Hz?k!c$eaRiVrD1syG=t zL0i%EfX%WR>Zu~K6&ENjCKm*)ELS{EagE}7#k0tRgR~12FFlFVS|XZM#A?Os6>nDD zqIi$ugNl!khXe)leeRYcmi;$gO)c~a1B*(k!c~gv6wf4|5!laDyh!nK#jD6?2KH+e zZ&d7UQ-R%z4=6sY_?Y6pH zrFenjrHY#ruU5QX@#cWN5M4_UFuX_cLB&TDhj3SKD;H7Rja*`~31unHRa~UFj2lIp zpi)ItDXvpIQ}H~-ixe+cyh`y}^01(C8!fZ_+iU>5Tk!$KhZP@FoQjR5&6K~&Y&ohp zhkR~OaG~N-uxBGGRK$42lNC28o~^i1@iN6L6|Yge;W%F$+IlDu)puDl=JyIbGjN8U9WhS;suJADsED|np_&>xnA*R#Vv}xJt}Ze@e#%R^xkF~ zQQS>&mf~E+MT*N5R|XucP*p0TPVr2|^T_7~EnB2`xnaLW41}+E+II1`qcLP>WSKL!^w&DWvh#;S0#pQ~}DXs}P zSfT1w#4PfKK}HJ{FIC*6c(vm7iZ?56QM^a-!Be8*Oj%xN^6@~ZLGf(Gjf$5kUa5GE;th(oD&D1dpW$Hsg$}8R zql%OJwbnG0uDGY-Y{dnNixrnE9;dj5zYQ&25vo@_OYs85OBFYfFAj!mwc_=PH!E&Y zyhqry|DcLEqBw**N?SlgaW}4Al_{=NT*X^iYgDHqW-6Yic#-1eidQLK zt9Ya0ZHjldGTMKjHGnUiD?X+;75CG&qWtx2%TdKSiVGE&Dy~pGp3HZ{&`nkm4T@(g zZdANX@k+&O6mL+xRq-yx-aZvLr1+@fWIPeDElyY5Q*pN90>#CO%N36c*zb2<$_e~} zJl!m6!V45HRotX_wc_=PH!E&Yyhrgt#g`vZ0sh#$twcm|H^o_sa}^gUE;HtOD$Z71 zptv~TV393X5#tosD6UsLOYs85OBFXMUafe&;?09lzHLE^irAz0pyDHn`A^kt+KA$A zinA2wDlW3j_LtcJxKeSI;yT4M70*+=Nbz#Ts}!$QybZ$d|2@@#i@D6 zdm=+|RB?{t!sG0PN{Kb}8Pc_>khG zij(m?&h}!u;+~4L6&ENj=7T+(xLol##WjlS70*(#oH9` zR(wG5Va3N3r{Y;68XU|M{#dbXeN=Id;zGrxiYpY4S3Fs9gW}nW8w=DrwM<2rFfs>LyC_oPR2t|^WA8+KivkvJr!q@D}zcDC@xl9PQE0t8K<~LalPVM ziWh)An|P^;Xi~gd@p{FZ6}KqfqxhiWBZ~Q3eNwI$iX0Dwx+%^gj}2OutGGyUnc_;t zRf_8r&m>2~31I12Fz)^B-z&Yfr1CGzQ`MQY%rwxjV%Nv|uke^?0dfpj+ z?hf~a=f`hzKX$s;UN>>_)cEvk#qeiFZ3@m9l3(b@x4C`2rt^_+Qt&30P$)YzJ9Jy9 zz0KVCp=h5Op=z6B`_O=Mjz^c(*45`k>!(k-t|8hmdCH9F4Kw1CYGG3ypHZ8aYYa=L z%&4!6-yE&JxuJGOG(IC*KkcU4>CtIdM`7S)*G`J&MXwze9g1LXZgd!}`XPs!Ni!NI zTzx}bT{JqJe`}^ps-4jgomO8vJ>D>7+I3OD)zhX=t*sdd>*+J%6J|`AbR9|@SsR~m z!}Qwd=rJWxN`r2!oj&F2o1;^%o6%4kuVKMx%=DY<8wSLyK_ zKBZyu)M&%BXlu&{MoVstPpOMn*VRU08(7RhwiD}asHw%j(+v{K-%$Hd(RDXWl^mmE zrrc7?lB?^cO}rLqg5GE!N*_5aWI85v;jqxuVWDgNpNieL+6R+TlJ=-s?s@ z*{>LqlE6ukf$4yV^H!_brq&Gq`d?OWv|7E;YW3=WS#7pfo7S{iZ8TP>T%VxG*y9Oj z1GU(r3Fl9Q)a$p#caQ44DT;0m`KK4VFUcB)S7&b8_gZ|rJ0Pju_4)CT^F7TAogTwb z@1sG|k#3|*#4YZ9$JV&yz+cI%!@)P1-hhMeiTe*%ys(&Ie^IHMb>i%K151L~!{_iV za*yL!jpHfD|EP1)Rer{KZkD%?WesbZz1_`yE1J0}H@_+5?4joT?fBo4R}!N(C!F`F zjO=iDLezPeI5##ZGoCX$JDMLK;OsJy?v+Uxpq8OgX9vTdyRqjJKPF|nC+uuf@?2un zbBTQeqmJqEhdXyKc{bsVdNwhj!_bb7>G99qACopckVxqhDtR(7>PZ?OJ}2sIVpb1# zo>lUAV$|a>r}k2iJ?xhyQo4umZ(koy?0A?dMn+n$j5_OrG~Jl_$jFsx&arv0k$V;0VTI5MtKS6fgnMzVX>Uiu>r9KiM#~~ z=MNM|cDS;mvz#;^-5r~e$eWP}tm1PM7nEE!s>Dl-jt%S=KjV7;g5hq*!HZ~%&UY3P zMsLdP-zV~5{;*K&hD62SsB@QzjupPMKNPz@kslj4ELP~u_wy><9w}Q$cskj*Yo*r_#Vx$3{9YGyQ$Xl19fWMy4Upp&cS8I4@G%>+ae4Ulm=;n9tKTJ(3ung06iqF*MCt zLk&rtrwA!0gd!dC{*cH{>igu$C4Wd1Mo`=HJ2HM%knMf@ogQCo`8O&mHT`TqYPuga zT|tAfU;XeNYB^fhG8oKH5=){lbWQmQUEbT}+QS@#W4dLHs)p zI3+J6K6Ua3m6s(~4;nFj(1lo5%qfHM%^Wl$BY)6^K`)PWzr&aFaM)++jZ~E z3WczajBtY$W1+jGF)n}gxfU(wT``=$a_0c@^)g>I~dcQamQaj!mUc- ztDCpF{>c}*m%C1qf6Ik#{t21bLIut=*5KeI|K;KC3Fx}FFLVcZpK=)g#kvp2oXy;n zoxdsS95Vfpj_&z;BGU1o%U6ShVjm^;-5&kN18#JBwB*ACMzt_`WZUmgyLprI5$*T7 zGdJDW?ACv=@s`9VC%5$2#xpk*iJ-FR(VSGgE4*coWY1voClF$D+T?sq4S3KU=te{Z=vvCVHG zt@UGHT}Ze_C(_-5dGn{RE~}>>V?!FhH17 zA0R(3G`uTHkECUH==(%g-p)kH&cvvl$Is%RAGW(ZE%v6!X;GFRJOBNinX%zJQ7h92 zW1D{{`3uH6wizo>8KzZi`1IKM&TF=#wi4Xf#b{-7?4q5qk^5ui_jkf|&;R(gv`$NM zA8O~lgRY^=2t4yon%OydM-nBNgH0RJJ^8&u7zEQPgPP+5cjC(OHFM@l(6lUAvYHlQ z$uiR=64~)tA|;i1e4HrxI5FyD)vkXqU5{Cfyb|?Bd`LX`hvFz!we(1omN}I-p`Gnx<8K6vt*OBKe5|=_4n?UDBBF9r+x}{ zMtd>t-A$us_wSwm%FLj$AHA2@f|Ud30fsj%SX7WMxKg#)o~ zvm-FTquce^JN#Q*#j^4@HDGi%rSC*N-V9>jscx5YQfL^vd3OJ-{LM3iq5Wt>VoOK# zVA8AuEa)#Z&Rd_r@=}VB0y}0Ww6WQXB4dWlQWM=4Jye7eW$q356AO;@=CsOW z!Ot--bpLj@v}@$9g+YGCpN%0;_Z;(m9VC`{pm_f1Pk+r=okC zWBqr=`t6Tp+p+mY2(Kvm+4%HG{y)d3#f(pW>-f~~jOV%W)Aq-6zlvk>^_T6d3{gt& z<3nWjtQ?}u|C*OP&;baC&!ALCyx=%ZdwdKQ^x9~yzPk+tUb7>GSXZH zFjfx)V}-W&AKFpIs(-L^+U~ydK)c~5%PA48+q0^`-+ zj2F)v=P^d7yvp&)#%bm}V$A1$xrO6(+Tx~`X1~+FQo8sDZ^OT0?~P#@>7HN~N4p+` z#L3x%8WV^?22|YC+4S_5jTtE*k_XSHY7?mB(THlwazm z`0AsYIDg7VOO4pE1^$MWaEY7cJmi0XkZ0}z#=6I1jfuR*M9Hr)YhWEDbC$6-C@=F}*SU|pjy*Bniab#as5q+VQ)J@-R`8NT(XCM6YON4$d5hFQ+42D=t*ZTEygbX zVaK(JylWFBQ+2fmq&c@T`t!8=R)6EKxWw&xN&~}@w6AQR49Y~gs8@b$b>`bn^)8n^ zQfJyXq}F8Z9(&Ch&>?R`qGV)Z_)9p$pT~eV$JXtPJ-0u$_N&;lc2N#Jh$$1yu@UXC zHuTJo_2`l5|9-4{rt^%yd#qd7`4Lz=f#X>m!349r>(t|u?0HPGW$pcrCHj-54!cULAWi5zR?| zXD)vEc2-huX0%6Ublb+}ZRyx5n^pLujftUdzYYT;ygxTr$sI5GpIz>rzRpB zRvD#j#C6O)j?o^3=2ufQ_c+;+v2#PQKP0@&%+T{lY;IYN;r%e|YYfdjj?wOgcB#=; z28A&3q6E^uinL9w1vj>)HFr5C?XOzXn)zz9JD{~S`At~bn)r5zU5&V?Rl6D5t43>V z)f%9^YqSMM>(DsNnQtf!^h**3Y#x2*4u9hnZl%9weK>VV@rJhNzt`zgXS@4w=WZW; zm)P-LqOe1DTD13EoY~*fykCdc(*E;#R_I@tB45cg`Cj}sZI%>Ycfyi2e@I@^^lG}_ zlF=r$UB@=TDmiaS-cwzc6hD=$55L{Ilyq-ih)-%--n-}1IqjZ)ZN+!j?{z;<;xyWN za^CI)W{P>#HPUTd99()L?)+&X?6C(#F6b0&JSJ-?=H5p^Q-8Ys~F^wy1F~W@eOn^cv^_rVy2nt8A&SZ zG|oA_b9!N~?Br^xis$2Zc}J7X%l-4b&B-5yR`ACNG~sVfJ^TU#O;;}8?+oH{!{CV0&o%Wu@sC&Hso!Bg#KTmv{B;Ml% zRqgWQmQ>W#F_X}_n{^HEz3_{N2e?}nC2&faiMR#RBQ}$l2{Q+Szmd+VPj6kZ`<{by z+8({W^QPRi!~U4@?iuEdkik7{dI(eJ`Gw=%N0Yt&zyw?#{Ns1Hcm=)aMWUC&$L(?G z0{DDq)hPN=9OA|z%zUnZ|8Hn<_?*1g!jFm#y_sS+JBTk2{St5(5qFE>68Pq&ShR-w z9m34`LHMj7UkSsSJVRf02_VM#dGEU8{qC11g`Ii+rr~avlNe!bHZuUnyIs0Me_h<| zl~)jiLOJ4>ik~aKHMf4TzvCBey87vx!>M`mewKE!gjb7iw}zO2#x3ykE^O1~7XuJr zUzXtDqw7o@6a4a1+xF;Q31rl69CWNaxxXJjrA^lhP65)IuT-OBG}-F>Jr6qSWUDtQ zot(F1#}8fn$hmFO{VCOWC)1jCPQ>4x(mt{z`=^N6)jHY1E5}|$POQ-FDhD#Vhc$T; z%y^c#28^$J82v*q{x|wQrFVp})ziWF1kBifJq^s~3bfAxb9Bk<9Q7uQZK%%%a}>#qG=O9NWa(u8)v(iPpv`m}BD%wX3HX~MbWA{Ib6gxhI7^IWsZSf*-HV)dX z$6;+aIqU@HEX60m#wN`#NpgDlw_S}_cwJM5@~@UekHM#70pt|_!zYrv4(|YD-hakn z^WFr;*C&ns8GPOtGuh`jY$qq9Ew;=v9RI0W_e5vdl9Hocos;}d?VT=d?t$_7etdA7 zF8&*X+NO8shrcX>+d#bVYk`5Ome8JH|VcD7Ca0=TQc zv47j+^*o}YzXA8~pPri3wG9h*{T*#Edy4#zZcOUZ=^A7bh05yP1wP4d>Cm=ormYQs zU5AdfA=?Ss;`sNZwmmU#76nC9}#i?y0o(F+ONy@kl*iM};VEk_~;fo3R zFol`)qX@^$$#zPO2HU1w0=9Ln1DC*-X`cYoA?~qrc;@WgGza zr0%b{A*qXJn~=|VIOan>5k8ZagXvS}h3HK9nK%}JQ-ps5wkyp2VA|5=0j2ZuV)b=k z8E((~db!Q$b(P>9mEZ%Vf2Q=Wz;@oSmNuUhu&q#Mur2sRrJrJS%*IUAbfAjhZ#vlo z!<2rJ(mCL^0RHZuwZBH`H-h_1Pc(sXr)bLJFDKD4P00UKXkoLYkuKG(m3fD zKNv@vpLaOi)!#6)U8FlVAk>%RK%-6K-^1_efBw&KS1i%3SI;Fg6OlAK8O<7N);#le zy-cL&%;az^o_q>?>V;riMgBA<&1h2w;PS%KFQ*7coy>GRW`S+myTLT0O(Q@qyeEf# zzJl7sT&FtvzyDjfYae@&=4naCJjmAc-^R4%yOgfiSW|92=x9o|rukr7r4nUBwo~R} zuw7niz$}&d)PghN!wdb&U2@g6gZ$r2b#wp6pE2FcH)|%~+a{rbbyFH@r^o9CUcztK z_?@nEyZT>Dbq92q(SUE?Oqwt?-Y{`;?TqIUah~fht#`Yfs1i@Ft&0zAsGZp$$?NOg z?o6KIPp@|~ySB#uEVHJ1cb8jPJ!8f|`~8{;@6OgJlJ~b3*{N_)- zWqxZ2-^;nBRs?(_W*EN#GsC}Q20oWJ)tWxddkV zde|wEY^NmPwF{H7oofOv9_(a0OAR}Z1XAUqq-=lQymsmSngXYrpWhcLQ~WtYoW4%4 zz{@wDfA!?H+0KN3hs4`tJHHO19}B#V^m_Sg&T&$mEq!%-cPw@|>w@)3M zk7-U|hP=&iB{V@YFWY$cAi^`p16IbmoDbX|oF(}Eo@ z)A#v*7<(7^D60Eyd}nsEB<$w42_Zm$%_M{kZb-5O2$yIGF-8p-1IDPJY#$SWRd^R77r~f^Dh4fELjP#ngIx!D6IpTT798trz~!bLJcv^XmKmolm}V zp7WgV`JVgCnKP3eTlzqc^u?Iyi_F9}XL4E(3&oArha_lWs2O{kJ|OB@D33Kid%&5@ zpRKiLmw7YJkWi#D&)urVGkaur8WvtO@89A~D!RUhi3XV9y)aE&U^CIu!vw!A@vUgI zqPu&TNL_*}12~$!vud|?ncW5e-qbUk!NqSe(IMda&0DF>|ugmLKt9m-3vWT zc<*pHiqV}kk#95cuO21}6U^c}dZiS7(jz^868a?4F+J~dR9p4}uy;LwA5Y`wHvV zuUUvOHVcz`SeS*Y>KLmKm-aBxxf0h@SqT1E0HVb_n$^QZJ6725h(g@Z!$SFL{2Ck@ zjfE((SyVVH2(6u zi3v6nPxdeoor;?TVPfo-9wr?3A)PG6M4Jim6Uqpqm4sW?&zx~fREpXE0&jx;d_VJa zQ&h^>mwFmohkYxkvr1(UM2jkY*rPnI{vv(R`#sVxwWa5*SLwM8XCI-JSUvZ(n&jIa zCQie|3E451*-Q-RVWJ+lWPQ!>6F6b;3wO*(xuXv_9PRRiQ2|nwBCm&u=0W%_pcow& z^svzQ@cGd(*=9lf3^c;(BwH~U>o4o9bx98s(O8K#BWE^crOgDl3++weH}IyPFfn#o z4-;$J@e!R~mWe8xiQ9XaIGSlzvNvz(k^bZp=TG%hZRxr3XfJ|yh*`NLDrLyMJ<`{2 z#ce9mu?p2Hy}9W@XHrz<5Ul*HQt#-I>M&A$0*0b<w561lE0+~pJwrWR)e?a>knXQ&KmULM*{72W(*cPiM^A2J9HLK90cVp94{Y|J5GpPXw{G$xO%ov4@4jurMAeX<@F-!bd$UB;>5$eRE3D z2R)Lzc3FF-Opdk6xdLby$@aPx;zDc{fIkp!uR;MVr~=HhS>Q(m?H1}q0mk+RZBO24 zE5HIQUs02%XI)U%rpWz<^Zy!&}&U2E_LmqSw z~tm#e5Z$r)4LIcRRB%gZXVd_9N_*PE^;6BT3>mu5!;UcC+X;of4xEM zwdV4pSOU(NjYlS8sG5~4@t)OpYoq*T@P6#OSMbolLkkbvdFbTfQy#qQa0v2H!9xQN zEj(=Jp_7MuSLwy(wDmyCcxdHeKM%)v_>PC+cj29e@ecsaC%Tu1`FG=%w3A%$9vli+ zc-NXO_e52i^((!VX63rrcJuVgSigDV{@4UF;S^GwCh`MqSO<_tDuJk&$WK&xO80O0 zx1P6QJrd4e3A*)Rm*4#E9#r<7mAJCr?l4FFrkCH`eK+D(CHGE9&q5n1hXxfN0JeuG zm^t^v3|@cX;)KNMiic0t+2&Jsdk1Ta&3VvByr)O(2D5I7XE2`4$4rkMocMZ=*yHB+ z_rzpG{Gf{=KCBpfaS%#J^C<{(!7>!$!+LN?kND9D7a;Ck5kJ~7p-21`J;JkkgcoRz z;o@o2wZgy{u?@u(pZAE@)g=Wwv>*H9aKyoFFy*MgtuPvF76vCcM)Zg;?Gdi(5#|n?-8HhBYbg>@U=a{d@)x!+P@89T#y_aA^3*F zWXCUiD40FMkM{`gMYtY`8$)b6jyxgi8ixtaV2nwpVMCjoGgdKLlUzMHc8BSZ_sIE2n)o@@|;Y}M-JR+ zCT4?NE^!U~`4Y3vH%rVX*L(y)eRlHw5*GrG=P5>Y1a7y4(s=m9sw0YlmChr;G(?VA z>68L1oh`uBAxErq%56G3q)s{8p8=&*VN=>GmB%#2)bM%fCzh9r)8As+MOYPmWj_odK+Dx@A+7BUU!~;Es9e{I=mN zCXi!3RYs5_Rz~ZoBMTaoI^>9z(J_(_z;CeGyioGwh?UJoVUz6-S0$B55-X!ONS@EL z79ma*loxo`fE=+hx|BMypi89=Ibvn=E|nJkGUl(0@_7i2E(1rbj5gbJ9*{cZh?Ne{ z1UwPbiPI4^-t0Tz%)dT*dv!~ z7m~+KDcuAJF$*zOVrG1`#I%p}`28YTx{!>ZQDT;kE*YWZo#OjK`T5Dml zvf1U0ooIH+&qADL{^v_QX$Z4YC+!*=&Lrld6z>0d=H|OC{E8GSnIN$rSez)q(~ubB z!0c5%{-%BqSd3-hJm5K!XRnI!3!aYujY<6^9XCQ2j))#uE+fW6X}!e7z#Akk1>Pz# zyZ-5IJVkKOr$I`JwnKA(Z?G#K0I6aOij?W(Iu9N8Sa# zpTrzGX%cgY@OdtEDuMGQo(jyBEO|c5<-1A5OnbS+shl}eWq|#6oy6=vu3DL32Jl9S zX93qkv|1eCK88?-9I;384Z!Nh0=|_xPKpKP*jR%&^%DyGY%6(k#GYAff4H!W;HYdtSY;rV0!ToPSY@!5I_wKLz7|8H z$fM^*4T5I`C3rCaZb2~T}L}ULe$7x4* z2$BpJ2@Gk)uNuJGEfUv4@h2+T*s~S(0JiD%t`m(~a5sokek_@OCkEfDcOmiSn zha9mQ?Zwo=<9E81Qm0sAkL1Or9BH3Jd@15I?q9=gmipi#BH)n`+hjy1{BkI&rh8HH zLdL4DbB;(8CB9ITsu!{5$Z)y(utT_=M!EVM|Ou@XY6w=(dDF}IT#2(3uJ9hA_ ztskNW)InhClOtB+DHB+Yr}u!VLk<|{e>u?pDI*e5!vGV^#{upK2osPa_DDX)))GPR z+5#Nl21%YAu}AV*k}rkN8D))?%dzPvBS;df!6K%XoV%Av9dg8K09H!=BzS9YB*Gq3 zL#7FsU#?`gFP7K~f2+h#!xxPV9lD(m>T~!oPNjWTVx~PNG4l~;c<8g&zqI&>=w8u_ z*MotZ4WS`&#A;>d2UaV)24L!tBUURr(R1bxwYRvu_U&qRnbrS;i7co2Eq?^O*T{u@_ zc3XqQ>=8e^N23+E%ON!Cm)HZo5?D07)VV?GkRw()0bpf^6NPrj5i1=rE;JBuEQocU z!DMF%)l6W?e{`Rc4FWFO9E^Q_(O8V&x8&J6g}`dUeJgo##A?Fvd`CM6 zz>SBf3D;Nh_OsjTbfaqRD4a`)4O) zL^Mq@Ex?U{5VM8FtO9063nafD{vwHKoF@Y6bC9xoiSg&SS7Pe#vhjbAm=#HbXyRXo z04B=_lEfY{FRTHk`g@kt@xv!p{hbM{HRAxc8p1-5Bla}o0QVq-JPXh9rMmBN=EDe* zk3&@dZI}H0@HxO#{~eS(Ibzj)qB~^Qumyg$J7kx+sKfq;FPxTT`MmrjCt7%m#B6GD z4gh}$Sj>B18aW_!cwZ;xH+Xi3nBTxG%-^IA(~5x!p8p8fhmUob88hHx9OCQXi(4OH z8VX9DhIo6VbZCH>Jhxbg*$U#p2k`U2Pe`7+V(`lIgcwiINoD;RQ1?<|5Fw%&90xs( za>|LpvH}F$8VGrE#2(47l{{O=4^iVrTwI|~PF!5kY%FLdbt2c{2)749qa=ydi6Q{3 zag`1CdkA&N5ql(mSn{917h`1=0Ngte>XRe(NdAQ6*(#Ad1hl(wfcp}{1muW4lK(;S z4WOmpnOQHOm%>hXY7_4ajmts%gfpEY^%1v6^NT)R9IvN*!{< z%IFr!zXYEBtd^b}sQ=fr`GlL5xZh${tVj8+gVj2<;gP>0xre|96 z_esoF5Um29t+G$@(6z4rYKx-@kxZNlpIA*xF%`jcz&Arg1~4L~<=r6QehDE@j@To4 zUIWOpb^H)DczL!>=4ZA^GN49pCa}7GzW~g{4$<22QFn=IfHQ8 z#`zx+BzX>3Q%F4d27e>Cawh171Du$0;K_+82mU4C3Wzeg6KQCZ9I>+btmKb^=is!a zCEDN1fSi8O!~q=OTo5f&Kygr0aUw$e2s+&|2r+H2D~TV4&vO!?UN-;gyt_HLigWbIx-*YArax zMXtwz5hRH{GGdP8SqM%?HMnk(JUL=DxH#>!U*Q0^4nmvch&_^jNbGz6T-xPi9M3vD|senuc-chS@PtFRey^!Ana@c7l5cS^bs)allzFBrq1m_DzQD` zzJpMS9I>ip9T0TxVuT71r^g$)?Q3Y@aLu_c@7$Jx|InEnSrb^ABoZs zIbzikV(v=)2~vmKQRA6bPAzd&gbq3Jo(g!jP>s~*0|wSLqOMNB4vm8Vt`8)c2ROC> zF_k&Mw6!?EWkJZ3Blbw%3#`T905=vw9dg7T@T?4N$$aMn_Q*IzP*%pkKbbN3|KE(E z(=%i1)d;bFqdwwn&z?P#+}Fx}mBj7v#lj0biz2QFz|8&)2=$rGn-V9`hp0=Mm`Bhd zM~q7v`~1g~>Q01dC>1`j8g6O8sz)D^I^>AeINvCF7RC?J*5d%jQw(kTCH6?(dLZ@y zSh(E~DrHLSk^J+Lr_lgJdk_b>LlEkdBlbxCHOceB5rk;Hae(^>LVa??9`NO}06vuw zU&B9R!(T`|4}Km*)#h8tlOtBO5jq&lbRuJk17_Hx_l<}KlvFBIRIiI3l6(SriM_-_ zaDZbEtIvDi4V+8^aGbWp91U+vOkGh8@U-E8J?KQluRDnIHX@i&f)(NT6ux*|0saEu z(UNDu#5o*1{v20Go;qA!F=JM0fy92`CW+aJ+a%rv{|&LaMFIwxp-TL3iJAC}#OzU@ zZs}-FhhwP3LHLCdvvA`iX5psTbQ&dQ;ly)$DEK+j`I`mIn7y+{;(hSnwc)QN_Cx1e ziP^J1Nc)F)omfbn2XKJn@QhH2q!_C*LX1`LZ-N&y7?`ay9%0SI z0q$c6(~=|hNdDiFXP162aWZf*uv#;UWf{_fi#Qlii^ftaan!&K0M87_5vv)`ekOkv z{Bp!;4^i9UD3LrlVvpo6lRU>p1>)4%LM*@d>Jdo>)ahcbOu$?0N+ysqwOR7yh{a3= zUM+dH&{XQn3j9X$`L^K!nXT3!+XV;-xQ?jvTQ%jnq>|)=a$g1s!t4s%D%CtQmie zrGfen;{aDCd2+-a$>W7EtZtEjQ=<`)s%CR!0&>KvX7eOJ4E`eO%bKm0JUL?3HTO!M zEw_~VvI2Z#h50T;{?_X&h)9M4ryV2sn=s3m;1L|)Iwenz*dzHjCI316X2huq{8RGe zh*bsnKM}Og-=c}8zL{~0D~W^P+==%};N*VRzqzfJnDLt>W);NJ5IQvBg{WD7k<=ka ztY&=zb!6QympbH#(Rt_uk`Pt?nG7QXa>T0qb0yD_iE21BF4y6>NTEJCVvpq0fHhu! z;ckaeha9m-^48;0M9`=oqWuO3xO*W?;Fs7V`3;i43VtR;je?z$Cr7MCL4Z24K>MT) zIbu;zHif7?h6&wIzaKixiWGYb{VhBa36g=`@WoSbU^cUOK>?Wk^SIR64*#z<{GG(? ztFscbAp9j9+Pnz981MbjKMbsq5iF@_`#JzPaa)fBY zKaT@bha9o$pY5C^jM#(%i1wEK@H?4+9I@)34#`trw7u-;*CbDlSY`00O+N^%`u~LF zgUH{(fXd(#8F32!KP6^ndBAFz{~&pC#OfRsBb#~*`~vE4!U0a)VxW@bh&__$ZAFB& zXa5!=QcaOd5GGHKSWS^hl6S!$Pknignk9L1#AKbFoCR@SQH^+a>S};{Es&^ZYrs7)yBcIw`fst#HunSlIMT2T_SM>{Hg4J?NJ=y zX2^)C5_=?HFL}SlSo`2z9f-s^T3Cn@C#bo7kB=F?KX;t!XB24|0 z@HsWr>ia#(lOtA(?@uMqi`nNAJAf;hzs4m89CuM@v{GV^Pm}Tk;|J zITBBX&oFKBuC9i5c=dtfSRgMJ$qaa8#56>z+Dw#6807{iaGCa>VNDH_N6o zQ|gc-RyubAM_7tA0C!2Hd*RnJ@gf}H7)Kp)#2(47mHfl-O^G+dZ-Ab*lqvCGT=L|I zJ(Axd`JLPXeo6-R!sj^AZe>#JPDq{{u}AXHOa3MJ2PA$KKFg)u$&~VT1BE6>J&)u& zrT$y+|12>2|9t=!Ok2*Rcv>bRERNVC`4f`=2mFsEJ_COl(rBwiQtL(=8I$A6+#~tV zrM?3L{CkPrz|9>08kaV7a@sUY?2&x535{u=0M_w)P<7myJoi9Lv*%ai)4eNKph+V+Z5cMxVxYP?B za>VMzP%m|+;Q$x$VJ1pqWf7paupz^Vb*)mkIgN|3}Nk2y3Is6-z4d5FFr=A*yhqwb&ym&4DK*bn6kC1y)akeJO`Dlso8OhY>X@Rv)>7Q9+w+E^^H zpXZ+yGQeIC7a=5O_lOG*@P5QUAa$twjKoOn=#ZHG{-VSj4~HcF8vYv+Q}^EzGcE58 zk_VyvixCiasmP3jOh*f_1_ki>Qy0WkzCdC>bS{**4t`i-b`!(Y=fJIiXl@+fwm`^} zBldu2_ibnYGlKnF3E}Q5-A)L3a>V?(!d396LX^=CVCs+~Rz_cy{G0G=AWEMrBI=VP zroMO_azaLMa7=@!1ZN~qj#y>zwd7rB6>-xEqZ~6{(WDp~XoVTjQFc-#PmWmG$rO)( zk+={fmq?<<@T(;D!JlO_G(+;_h?OC6qX|39z;O`LP7D0|CB7DZz0J->$=7rKGoTD@ zl@Y&#&w)onufP{eX5fc_8*GN&lRD&xm7SB4{}TS!5=Ws`#Ht#0-UQc3I}tfRQslrP zNvsU{CC_Cy2P6x`DJpj2ffIli(a=*kz)h4oEnIo2W?FK@YT>$yI&y$FS~_uJR5Kt(xOrep zOtPk#&8uVkMx%}B62zOnZa?5p#+a*D$0q)-mGwJZsb)flE7P2|AU507I`pai5}A!v zT+L_UHSqBHfcYKzwSx{5r&;__VtHwMhj@^ge241>^O4apN#^cVy{|Ekr}y@neeUX= zY5q??clnTBRyv*{)kEk?8=fYxX^iz;^56xrspdDkW4-46wVu=m=OA>T)-&GpJnCvN z=bh+X-Y>?o^*LHgJ!N&EIkgybP-gEbX8H%c%gwnj>E)MtEXC7|l=wRvj&_~r`5*d9 z$4~6F(gp=K|ND}jVGbVX&Wyxbd^358`SXklKV-vOYU(qj#q*~N?oS`&{%WZh74bQOQ1{+>#!>ep~tqr%@@Kzfh^{g$>VZ)s^{EiKu z6xiJJs{V*7dkc0$RoNf1;Vs0xbAj7!!~1RcunoUy!zYM&>jn3z4S#LJ5f{$TN-4pH z(`-0k!v!{6Y{L~cTw}wtY`D>ems!|4v8}O1JYd7^HoV=2pSR(cZ1|`RA0x*7E!`(J z{J9M~ygacZ$3a8p|rVZ!W@OT?8x8bQaJi~??Yac{GAhh}c~aPK!$BJ^wBb@4uC(E4He7GRi_YVSqxpQm z(PG075zBSY78~ZTek*=Iv0M)ww&6Ez_=F9AN{po;-PZzJxy09tw!k7p z6~b%7sWzNx!+AD5-iFI?z?P4g+#ir?w${Q(dTb_<~%&aQP!c1))&E z==?Ee-Wz(#zGMZa#F{i)|!b=OQ_ta z`7>GzX5kAU=k(VSEekoncKI%>4PT^*Pv735SEXNAn|_hG zdbD$FWKXY>^wCCoVJLlUc|lcrk@Y3UJM?P9ZKRJrTI4qjmv;Br4*V;TUft~i7dny< zsM1zi)OUM~BmPjkrZrpPPxly|sYP+x9aiwzL8CJedM!b_%?fuSTo`)IuPw2{-pF9D zZiGh-?W>pNIs(&b(?@4(_^xeD7QQB5pE4}7D0Wh;HqTP7-V-A=LYBrFXk<)^Lw2*J z#=2f8AkqhXq4vZ0WN%pVJ~u2krH`t~s!!p^i(&LS5j6^*ly-%XCVf<45f8Mv`wU4Og9Wlmx zEM#<+7sXGC)4ECV!Jxy~H6{A9!yl|)v?XERn`O?^$?K<`1iH@I+DG%4VSiNLeQR!Z zy7agQsSM%X#-AMf?p^47%e@X?NxBjoC`T9)W#;tJ`VQm?lhiMzk2SM+hm^Y@hPk}0 zcanMXk=}V`<20vt-{-eE*ACPx_nNC8a!%GO_L*s2Beq^Gnjl%!^w|pENhLl0IpE z1Yi5w9N9+tV{>&If-jkWL6F&Qg!inu7@j`$pXQ;Bh+J#-`3=~UW*t1e@KbZ|Z@{*g zQSAs8|I4gyN3h*|j6ugK^GgO#m=|wCns>|x>3wbfjovYHR% zm_r@~>;1~SM^JknmO>I_WyvzyLruH&J1n4c?TH1!EHYNm@^B7J3_ri^9y=k zn*$$5TH|H_f;59ce_^kN{1YzNC^xiaMpMdv?Ig(zDIUSzv@R_ThfNF!e zgTYyS&9@NLpB*KBecnvoilQ}}L$)GCr#Xq<7IQH?y?(UWxC(`TmKqP3eE4Fom6|!*SiFH|HG)xrvG_+4Vf2A*&ICPru=zN(ip?X`3Jx~EL{R^H ztl3c&lVTP;1)Vg%S@slkzBA`N1)YH3+<>5-HqP9Ad#@C8!^)@xy~b~TM4iQE>~<6; z`ciCqi;p0f728FPrjt&%oU=t+jjtQEZFj~;^$}tIP`mjO)S~($94&sh-TV|`-MHNR zVLJ*v%+gEfoop8EaK>x7=A<1kH~M_?mK{hw{(SgZh9{g4A46C#yIlN=yy@DBK>g+T z>3A~;h(TPm6BSF%G-vNbZfhpt*1)`fr!yn!^DGVUw}5);0`q;u#-41)J|z}Wf5EiA z-~8Y?R~moT|GItoyPOxqYGe0J-|xI!6F(huA2fXUzvNxm-BAwf67jhQ>~M*vNWjD`2 zKA7cB5DoC&%jfumqhjC47n}#8);|`PvR?0#VtQY4-np;kCFiH*{rO0>3cATy!SS4T zt;7xbzICy#3w3;R>Wz3;ZiI1M*r``bxjD@=a}9AJI(~={Ry&M<8Ap=$#mq1RX*2Bp5-dG>GLr(>p_lK>GN$a z@=M?^l6WM}?4?Y*69>3^#WQXwkwn1Zkr5kg3CaDN&I2^`?! zBu|dm6D=cB_KoqmzDkMAL_{)9V@u$#k$5e9K4T^SEBNDV_(F+i!>7|euza=<_34N` zl4r%p^D>N)>d-#M0q!~o_-h5pfJa6|1FLuK7g$Q-=^U|o*Zx+?v!GsxdZ~PcGHZNuZ)D+e|*P*)%aK1|3zVe-qf_9$+q0@aYx`96Dr6vXLRZT-QU-I_Bz+l_$3P(X3uQ8 zwQ-TZ?9$39els%7HFThW7f&pmGQnRNp4+r!?!r3%ggH%hb@S@xFEa0)=1PqSm8vNd zaw?}x`3WWe)VhT*8J^p)xT(%Dac*OMT@$~U=wGzJKda8laPC6?g2jvc3ugP9!t>|U zIj))?u5GB38VhFC`NQ-5bLY>hn>}|vzSii+FVfFhRPV=E1`!vT<)2r#kRNZfC4=HD zf7p*NHO{N^&tA~vNBR6W)!ph~8FTy-C3&vTTAn`SKuH`V!)53 z6T;I#KX@s;vUVwB% z&O*{~u?s;ihuj2t5b_-4IKj8;kc%NRA-{rfW9Bu;XONUc zWD1!8xe9VSO|C5cu+J=B zibeIEO)jiz)6BIXqrQf6qqPiu4ZOQD4cEtB=E)|Pq1X4Z7K4KpBEc{En0X74;2?&2 zg0%phPrg0FY$o3Yeul*-O!BzmFb>bT=QGTs)Cr|v=ij{YsGgy(?Qi-QfodOscf-w_ zf8okEJMeiN)4wd%XLh_C6K6J_(kp-bc^#j5;bK>`mSSGA*mYAnI!V0T$6S&nW~OLI z!Kdx}^I}(SFLT=kG2W{xF{d=lIl8GfTw}wWhe~IL4fB0E#n;<#gZb4m*UJ90>uzXR zu;hk$b@TpTJ3r7`(1;J%E}FYw{z54BIM2&1w%KzV7v2&&e>wPRtvUaz9HI5U$dM<} z^ZD8Ln)d$Eb${xQuUOV5R{hWK%5hK0nTIVUUa^u|F_pP4;);~-KxH{H%oiVbO{q@| z9sF)@h9`9J%e@n$LI=P3G9xK%VwNv4v}=lS@Q0wwU$F8JQXrV)j6E$<a<$h-G{ zb92noe_wuF|K4>3Uv`VD&U92i7rS>vvhm_~dyP2b#V_}kL>n)Dv)9lMCA9&fO1Z1uNm7MZ$woBH5<0b8*LUE4D5qY5!2fzTM7;v&0PGz^fm^ zKV^(R^Rl^et7~{!iK{xv@!iR;W111$r)9Gdo1EnvkY!|)c^x_4G1{ex+GotCP%BSN z(SIoG1=iYATJ0kIl#z$Decx_%y@+q2U+auE{e7aM%|qKFK{Kq;+>I>Fo12eA;~>sOi3Oc&n_jQRzp zNurs4Dkf@3n23C&o^Hcyn!;8#Kufz<#;unCN z5py6u44a4GvvMDba9{Diy=;Jx2=@~|8wn_8whtRoe_#NPIzC65x$=2e{`qNb9(dk0 zus7%Xl)6Qi*WGHq_q=P7S@~Pn$Ot-uZYU&Kwmh*%^0cR(rej|~=#V4!pcCkLhs(5O z@Y&qSXm*}!>4-TAIKvfYJrx$O1u>8fl4G5iiD{eP>S2YmBpwMr*M@1BI)3<=G6K^M zoq8nf2c{04AL6mL@QEf6Ia3)`#BPq+W57%9N0B1s| zPmVa^krBU<5p0&nCEgF8&CLXCUJe}1zyWR#ggiN7kK{S0)POxGb;uE`0ee{TD4g|A z?&_ia>oNk@3+rciGXUWJ0%2yX4F{T*Nml;IICyd&LOha>gC6z224_h8ci?;ozj!no z{v`sV{p$g$WCZba8=h&y%!G+&z!$Rv*bmGBt#~n0z!!kKK=K?L!zI27KApNl8O#1> zV!E*q4@%3vDTR;^z(+;S^>>Bj$q}pmW*XJ(S4$mo#H!h^A@8=n$;tB^afD5@Lk2#D z|Cz+(FOv8R_!ryoWQnK2=lPa~cwViR_-Xibs+QLSQ-_XNRdN=`KO;D`L@m>)B1b-W za-0QfkaAW~pM?`OmS@RdN}e3CYL)vXPkjzl^{(2(lJ|1{F`yE(%LpbABUu*c3CWWq zRt4ffRfG5UQimL|M-JWtlBdm7i0YpAnFg#9yeD~b#7h5!eVyNextC<`lQi&t2ytW%WL*K7BeGO4)^Uka)>fNI_SE@ zJaR0i)x4+BHNGFa5bhl(A|*a4u({`h-oyIOomKav7b$-Fo*SRlteaDJey6sF*4@6B zUHg15N8P^q{2j9^rf<~f!opCY+3{aJYg7gQ*#r4+r;qTs8_JKaedY+P^HAWZioj!M@r* zC4~0ujG(6Q+vCP&O z?N4~v7}ukM=%tiBu2680v8ml3Y}P&(Mccd`41?l!+X$wfuXX1l>y8^$K|#bFH)`F| zgap>R9Oo*tFY#LUr<%6e{NXxxq4t@fX6U=Fo|)Ow6$)%iS?My~(G7ji zYTXeEJh^|p2yNQ$3rsw=`A~01OI6_~$C6g}b_l+GyDt=Y!rV5^eRZ7P?W;M2;ad8M zZUi4Ud#6|TCY{Jw*%eOI!$}9jKEHp_aaZ-3;iofJ zR<9c#7}V)Y$s8VvZw$n>EDR0Tt1}!aIXR*DS!0%?YNEp~f4w82UyF-fyGs-EMkW-G@Q3ENmB&{-b+*LitQ?Vm zm>H#s79EP85Gq+-6+gCQcw7GO&sJ8tny=FGN)swe{U!6;YU9V{?>#$XhO2RQM9V8k zm?2En#*e>p582AuTIH048CUtMs5)lCPLgY9YsD8Q%n<3T;*0XP(P%M@79>=Px|kC(fAZubtmk5}zO1^*_+do1M^(s+F)5rG?w`J)31jQIsd ze3~)&&A@%x_Z#y^wH6t3PVTO`aYl!~!Hw*2E_~74G{gOXw!<71cF&4ze$(rWdHR)2@7{kz zw@zV!{|U9P%5F6}>y3sqZW>*-SmW3KJh6R`XCwp3` z;rdX+4PL$Lm~KqE!S{X{9kKVobWtn6%26beB;v)u@=2-gWk1LxRzeSdyDi zHE?|T>t~D0FOMoNP4o{*C^r1Y^zosFYcR<|4cCSmt_w9x(_R&|+|)iSs2wJ3y*|f# z`Xc{{$$ssR3}^Yc3wkKYVQl(TJ7~_Rb*DuBz=*=2vDq<3(|#`kT6R*(=I@K*N;W&R zePoPHQ?JiL*7dOCMY6bry$K=HnjP2a z{mc$eOrlvb)9oAdb!gMWV+)1_gD&el8wg^Ag!JDT$FxvM>b|C#Ze4>F@%o$Szrxm% z;12VyS?=n*U`&2WmqYu88Djgl0VntzBRIU}pmj|pHQZ>(E&MLWThdvmeYQUT4_ELt z$r^J{ojZL1UY{%p-)B^;N?Vl^=XF+vTeR0`s`js%d8*ER6z9(WneFc9ezJPFt7NnJ z{%rRM?Mc%&$8BKDjGW{CXVjC&k`OVZ-kk-eqTU@se1zUcb5Ff{@6cdX`nt}N(5{tb zzjBo4hBjS0wxD}KPD#7JD!fkn?+?hUJlDt#n)l6h_ras{$L6}nOw9e4u6@iXW5Mw0 zdP?_Kq1<2zPOw$;@WvncB0Z(++tu|BBlpo1Uq8dUmKS#Ko@!&@>KP8e+>K`XjqXcQ zA1xUe-4xp=TQhRUPLIt_G;+sfryIF@%;p>2{n82%%cwDo*p;0g%F(KFhu7xjHsx+J zpS#hWk2-vOqkD{Ncu8)qnR%0Y9G>RSxXGQO{d(V$n@~kfH@7vo7iy21gXXzsyN9Qh zpsCGY%ySO}wRN6*P{PYrsH za=a**RaPTd$hLZ!wAX0_$A%gTk2^>EqF8F&xJBcs(b!KkuAAjT5qA`D;?dI)J+LPx z|J}rtJ-wD4S)Jmj3TA|YL+baB9a%Fi$J^n?EP6|KzU`Z^?BHl4dfA?#Nl9+pxh?A& zn$&w)ch}C}4o#YTDBckYwx$2$tTpWTG};Jejy6Ii!6Adkmga>zN*acQ8Zt|Qnbjx1 zF}$q^9(T2}L*6$hFLGa^wV4|hVS$&1g`w!9J-sYAw_R(a$-0Qly5VgL1vBLA7AsFL zTCWw|(^b(n?9`ctjP8c4ec#;T4r(~BW-WDJioR%E>Q2>uZQirgJ#c7SQ1@phgpTP~ z{^M**mv@CR@s7&OgqA&c_!i^vzEwN%&Z}K#yeG{gOWkEintZE!N#snpuO1%I9ZtRU zvuobC^#eTFbbjydti{6O(0!;`cNZ=w#^k%a&frTqnpIful&bWBWAevLxb6zC@7P^M zQAc@6T~xjPyTUi}hOEcpyS3K+@3S1>M?>ow^Pm6LyipliU%l|ZsL|xRa2d=#VCXxt zwPBf=O{m zG@rf#7pp|=F{xVkf!Db91{Ca?eB;G`bcT%dw9d^a7YgO;$5Bu|p(Y&3@fO8ic7^t9 zk?9I=*;i+44tPVXPSlgLjZv$6IRg3hT4DOI*?E0P%+Y1A;y2QQu4AU9j zt5T|>rW@@VR$7GzE}LXHw`SG$$=Ynp_6^6KYLQD@%tE1)Ihm6XZeqC1EyBqNFA!mz zN{pR{aAn29!s`rGOyxy(=OMt!=KHt1FT&Mt&@%T>S7vQ6!@P8vyWErMjr~VAPLJIU znP%%UcP&QE*=4vaW`+(V8sP+^J=vI$fOB_uZic+s&22L;y~BOQ@U~#wzU~B!Z*dwo za@&U9n~3Z_);-2waT6OCDv5NJG#j~@uO2+OAk#c_hr4xL+m#=jJ+4;i)nSkw(r;^V>V!SrI*?*Bh^w z<(*kyra8Pf{43t;&56YdRC}7umA$F@Ohzat!^p`j$(f1K6As~${rK7Hmtu#m93Kd$ z&ANR2^jK@5SRcNwthKXCF!ob%x0v`GdeoP`?Xr8!FEf|XmB+XXt8oc$3L?2 z3YsT*t$$;Iy;o1YYT4^BI`Y)CvdP+%5eRxt_=unh4 znWj0ckHmR>*;--Pt7j)>r%#H{iJk797ne3iyM!9w>n$5wmT@T}?yoldCJJ5q-!n$e z#xwIW=itg8t6fCB>`j49ouR@jt26q(8`u=u`PN?(RP>vn!ZUN*pl4o%eqTm zYADWFUp5*`=}d3j$G%Ze5!-1<`0?hH(9X`$K7DnrBb3|L_dj}B4r_)dqDF513jC|w zC(XDZe7r+<8;-X(>Z^x1@?SUGSGouHTiq8bZQ+;CR^?{QFcLz!nJu-(&W^Ia=DUb4 zUiUqiVHw7POk^kS-QMcb4lc;=UXaHe*F`hCh5Dhl&!QN(pM}Fx|J75YyYCrFG(A}>>1q5g{FvC_KbtzH*{Zoy@A*zuI<(cKdg&P+%=({NpP!?fAMJ-n88%WHWz?s4Plw>KGa z&D#x(A&sM`C>EAhO{qGN;LS?AT6>Qpm=tAbiN++i z7aL`)c|&Gs(0FeNS6kPQM}a%3=+<$^zRb+M%Z*pb?sD&otZU!BHnBqwUvMxytSg+| z9S)oc55=|j2(G@Na9T-turYZRuffKFg32%a^42+h@H=|Nimq@1Homk&q6FcA*>9wj zT+dy?_HykYxi2qrmBpj1q4c!(GC~JtXfKc*mxJ?nZF*|@GiT?7B7?`x{%S-2GCcOd zNHp|yLwC*nDlpqfPZ(EqbY#cqy}i12K3_HqYoC(zw1j-WKeM?iY}AG`R)o{73v5-o z5zuPWGlq?<3MU+0*s&r#eaWa-O40|0!U>`D)Z)l)qzt|I{k2oG`wqAQYn*F(8R68D zun!BWuAPy!Ws@}T8YrGg_fXvaA0MojO~S=K$!mbG3a35ZM|V$lxGPxOfgZyM4>H1i@{HX^IL$~;{?tGrYFZ0j zC7IfcEI-Px-6>iv65N5Z8?#@9{cv(qu&u`1xWrZSpf@?kjU9ta@~A4VvEO48vMto! z?9V{sWqf+D@RpLz?n{zVN;cnh$@;;ejinoAURItm`dNMTP;Ir-5!!h1h8Hg_$)hF^)EjAGH*= zP-?v1!8H#SU*cj*oh}tE6|xGAtWwtfciFDGA<`?>>tOKYK)62zSp(i$gn?qaek9UU_$II_5QQsjr^dJEVV_mzRvE8WU6G za0QRTiSQJIp`9=I|GY8~32kAFXdXH7;ZKBZo$XBoECkq`BrG7@( zJYVYF45QVmChw{4PB~ZVJ*w1CGTvw?M4>xNx^})%cA*0$e~c_kKIYgTjJQ3mwJdix zHel_x{}GWvfzfUb%L)EA=P%t!j`F51ZAGsqXQ#$C8ExLEkLUEM@^xW3;EkFc=)I!X zR`1;_4u92r_4+2`*Ok|FG+x!Qp-yYL>&6kG+F@0-7u;BP+w8e6tXDM0zJ9;@|A>1N z=qQTyeYm@m^dw|LR+0cAOgbT%?98x*Kp+{y5D*jshPa?4LRe&tC{fV?#9S3rBxvCk zlmK2_Fbbl$UxGNI7X^X~A}AtPQ1PnhMXqAgrm0)FaBS?yJ??!jrEUF>$~7eDuwTQThsC?9)B_eP&eBNO$*{9vab-e!81@-h-kSIpR>jmj z2{sRQ1nkwYcfdXl`x5NCVc6O~0`L=TxQdN&*aFy6*lS?<Q z33r|77zIV^W!JHetSyT7uLPbJn~G0Ods^(Ss~PNHE4$`(jM}6$u901b5IoV#Q(Eqp zYUpbG3v?xUTB=+Jbl!Vq*S?Od3`M<5_BYC&maAQ@I{hx$^%m)kx61ydvb$xPkHT{x zJjC5Hm3VGI(RHrvy1-)Db+axoOZG2@o z!|NXa{X^X?3yB8;Cwp4vyB1SgyFy4W?N>JyR|#viv5)K;3OS$m707v7?soM@xKHu-mR&AA@?Rx? z3R1WdO4PHGUZ3~6vUDYhvMWR9IgRZrq~(5BFP$DEyHfN7b_MYPR}zVhk+Lfu5k2UA zTuS<$F<&=$bbspBJ zwT5rpU0r>V+QST+CHZGaneH3wY8A9B|1`;!)2>d#dBVJQZ!I1)k}J2}I~5fPx|b*1 zT-ohjo{ppcYQtYmpTA0{@f;w9d3w&3-|n42x1im7h2bA(_%Ad3qYXc*Mdu$$x3Jwi zf>J(zndEY{drL`lw_|Dt7yhA!TTHiqySIq$pmy&-x<&0?o^7JvZTL|wy1zhj6}Mxi z>KfXPnJQ>Q+P&Fy;m?s^Q0vG-Rbiu>9j=B z%Gw_I!dk)?Or@ubw3`_x<6EMRkZsRD6MGs;(-CG zw>{jI9}?IO5-+r zkiJlI-0t|I$@N1=ah_8tk_W9RaeWVbL3v|%e)QQXu5UX6TYzUh`Oy&3SCEb^cb)3M zRQWVthxYHliG`A=z*6u2<(KUrx+iOW3+7$<(O%2}@#UVhkMwllo)m9MVe-AFRQ{c! zSfFv+ml!vtIyx>L9x6uiD`9VeeFSzF?5D7Q!1hMrmBLPey$P1*@1KVK0QPIx5FGAH zfgKEc73?jrO|dxk_aeZ@u>XPWiJB;dodr7&wh8uC*e_wjyINkI*4Tl$a9RWYrmZHFbSLe>0KSj(WdR(I1Mjdj z`EXgi{ou072g1?}g1-c|EM9yS7vkOZ$qsd{EZ2+jo$6?ty%!dQ8YQuIr-~mG6$vk4 zoAx77@{&42epW1dNgdifOdDCLMo4w#Jv<{P6s5Qi%i4%a9z_wKyrkZe+&Dz)Sw6z3OzVa1ajm7S7Kf;LM|Cxge>VlaX*a)g#P!zyY(I_-6HVJNc*3q) zn|55*l;rFQ`+6l_>u^r+q)7IzrJkh+^Bw2*W(BsvPshb*De~#KE;pV$apKoi1-S(| z9ghtkT;@5hxI<@-uBj-~4qVaK)5Hb+(PeVr*4^?HtVi$3PcMni*`IIs*%Pol{~;55 z4iQGLFRIbTMrhF+w6R^Z-j{3FU!jF8KU@F$9Ov8;H7~Tb#ug}|nG36w-1nOsop>E?68=8)KMMmVWM(eRkIJo^ zwJ@;xF>|5l@v3@tXi-gNh-i3KbzD|amW?}&`m(BhO4qs3DKpHiitIAHk?LRHswn#; zRK_8kiZWb6w98AFn6sO(sJ}@YaVH8cKVuBG2r|Uiuc`y4%e7$}`W7w1ynoQZarV#| zFJ4xwZP;4psc%#2ZOaz-8$7D1o9ovO96}5Ht*zbQ8My(iU#g3@FZ{7%L0t?;e!SJy zrH5i5gWE6MJ#s@MXFIRuhw7uQ_~5YG9S12Rd}so@YDd0XdmWA-HUBjy9p%_}=u#AO z;QVM+WhibiGVFDPHFqx_Iy5w}295V*{Rkz7LHiBvv3E3LwZ<;%Th)I3cB8&qjuS;% zi=FF+c+EbJRcV~3+MxdX(r6it78)=Z{W?0n6o(FDlL!r!ALU{*{XmKM`Kq!!4V$>3 zXF?~t!_-Xje|H0J+iR-qE|at}xd>a|vnB+F_bN|nMPBYOt@*Z`jN%fUSJIEHI_>oz zYEH$ipfm<*id^UJt9{tRb+jWV-@d56MhzV9m^q=L=2)%fQ`3&cVU-H4tx*1ywWYPZ z=Dk63=G}IO+a~ekljk*OUY?B~F9><9_QUj1ySiYRal~sH7L~7(ww` zn$l*M)YgOrRZC^_ElRZ|Dvcvq~#lr|0N-E@=f7o&vlgci@`Ck>ay(U6YkxU`zd(xdydJ= zL)T{(DSj6|XRx7aiyeC)Fgf`*x@JwdwI;Afti^`RoN%IY_cdN;*_bOEYV2Jn@2K)0 z=s53DydU~H#^hh-LaBI=?#Gz_iV3-{+>D%jd7WMwv2w)(cWlUz%FD_dY6kUD{H-0e zu}aF#lM_R8%JJN^r@G(1h$V4tLI}q*L{?S#yJx;sm5QT8k8iDwbSDkfp4D5!Z#EoyN?_t+>z+3pDIIiM8o9QV#U#Vus*}dhmlv!Jnx%^gt8B(!1 zQMufcX4gVjC)STEYPH9m+$3ouaKh}{g@H3R*%L~XDo+=@&mjYOk5#St)6auYk0r*9 z(ej>7)W%e_x$tFe0$MZPu|m* zK?T^(UC^SQU)6Rl@0r8{Ba2$KkR9x<=b-h=a&FQ$Csvj_uSitNJGDK*(tt8$WYJli zDa7KHUN4}W9D!={L_K>UFSC5q`AK1!39o9yg;vbo2myvM}4zpLrK##1=?;P$L@ z=PBpjPR7z=;4^{al`8$@`7uoWQN-g^ak`odQYYGyh+S%ReN;7Yf@%y zSmyFYjpBh;HFt=O!4-KIGPHy)xgGz>_`SU(S`G;iQG4I@ub7luC`%-uIw~u)F(Y!z zS)TZ&+OMtZgxP1f&I$dsaX6)e-Ncm8ob;lFQ|!gVwVKejjS=!!WLWiOQJEIo^=Lo& z3wrHuI?IYCR4hEI$)D3-(dt}?8Nm9lwLO0vZOf1PtU0hapIwu9BqDd{*!L zWF&XF-(;ZUq{GuZYRu)_KgL!uc8>RZa8y3=TnNNpB1c85{Y7{AosN@DcqpC3domu5 zCtLRVxLPQk#P$6!-Mz~jBK;7JolBGfo{lG5?kmc(M>*q*(v2neyw5Z(E$q{{aCsBe zw$+3=YZ8%kebpTg{Tek^!qA~%+`vdvhoN&$$GW`pmEm=9O5>Og|92gD6;&%c>Xs|& zRUK;9=?z^%GoOOm(_rY$axmA8vah@Gq7C4oA zTq!DhWRDGxYi)gbR{o5(>!sr%{vHyK-9nZAeTBey1D}4>@whUkYEP)4S?eQJ_ED%? z|G>g=Z=-;@=sp9led6L?bz34{sPwG| zt<{mYLOw!i>=uZ(-cfTy*#gB6@2Kduqgy>S37;Jb?CWZC@;qq?`zx^_puUQxJXG6L zffK`dI5u49yjZs;)E?I;OL`21yWInQ^}&;uO`j7h$QA!W;JDNdHumqq*UhR4VIl6_}Q;pYB%m| zIGdd|dk$(%Ka_G@VLHkyQk<pEf0<@QmPLPPIGFxS7y7kyzTX} z*UbdwizV->=}{MP;HMd}t!ds+NZ}mZ6}X4_!DblJ}{DLi1`NF>#;zTx5pxXMM|_=Q$$ZQ?<~7lQ{nC zdQV;9d;ABbZ*l0@J!9wNxR6$`VNk8oc)64p^;jVeoXD8F>Tk*GzIp>u`dp<}DyiZk~>+0-kOuVx6iB}p_ zf84QK^nV|NZ~^CO>3N}iaOejK+Q#PMMgnJ|2AEADU?JU-*=1O&)WQ!&Sja|cdf zYx#MxY-mUyG5a0W$>ZuPh*HGw|4_SN0ur`g&AJMg%bxYrbgNsQpoKoaDo$;}*%Z}UDNXV!*iE)UD}TsF%|w94%g-uOAE!oJcsXB<}gs ze~;|W+bZtfuTD~axmtX_Uv&q1PV5IN=6uECvJccAJv`_v-pi@f(^@Xy#B{I1hT`Mi z(PG&LYVVQi;f|xjbJMfGdc9x1-CYwG_)afIl0BEB7vgD9(aM8p`O&5QmdaE02G?4# ztSB#6`>tPht0QCSxM=wr@y!RSGs5w&rHIB|gWsh2P|XQZpO!?~hiY%T9`i7YR_zgU zK2$SujEPY{(h!xW6hlj3$a1%il?x1V+c4)@@!E%~X5I%#Hv*OqG59eKQ6SZzE5**U z*!+}x(w}_@(g_FDvQXwiTy;RriP#!=25RF(uMgE;;^_nGD^dA)ipU2! z-t3c86g1A=0dhWu2pqV6i@uX!I&e^RUv0}AG}zx=!k`y20d+Z8E;>7Nncl}+*~ig8 z^-c~|*=1K(ac(eF-a-xBFv3{Zzq++ZfdqyVj0YS|0)s)rS#ixFwNySU)*n*)1v>EI zL+S(e4D7F7>cMl{)Z|EvtBtB;kHS+-tZq|RyZVKn%X{4QOGn?1m{q<%mD-j_tm8>= z@Z954!?@@vU1!OGx3!t_j5U+R_`_;aTByCN|34jAR8XS=Y+a{BgY8QeBiVY3dk?F< z;{GvADO%7yj&DDtI z=tl^uTK+4_VwS>XGrV-Y;?>_8-Dy)#9ADaYgJj>d=Sy6nxRa&s(BE3;W8vT?UYB{D z!!g#+oQ!S%Npf`8-|gma;Nr0-EH0n7U6y{Tj>ve?J@!tF;w)%PykjV#Vyxr)btqr; z{795I{i#~QA2Y)@hx!~*kK=Pwp+fl#OLdKDA)YT4yG_H2Q|qliFOCb<3Lnk>x$a4> zVA}UgcIVdhQLx&5en6MRm%=i;&GaT=22wW?CzYi0BYD=(z9Z{l`qbDEsqQ7E@fzHW zn(R)npVA8JMm?-x^?h=G#ou4z8h=VHdDEq#^>n95DLxMl@%ohz?<# zLZHM7>+I9ALKQUWC2LEy7<&e(2uW|)pe++@G?_2y@Qc{rv%ct^<TS>0B`NA*r7l5f zJfzeuQq+UWsyP3LN@K26HkPq?51FylD*k;uY01=&(i8W-kvRJ_bzg^0_vrM!27OSy zqP~I6LS;>1-NK1j{5m^3ky0X*V-2^$F-@t(n|c8Haqt7*P}N7(Aa>ToRY9i(`Q_WatcwKuW_ zKBl+8EVRJJa+gTHE${kAE2PPujnm{) z)Tj1Wq}u0~_(v#C`}q={NX!{l8zNPP$nK3%?YW*oiMG-9+LqV+L&S^6)SUQ62NaZa z#aHp80_UvMp5mutYBGNO*)!@*1!H1g_tL?3{Y+A9;Q8uKi+!UFcPP?#=W1DRa^b4D zz}@PUUt|15_J%{b{XDS=3(|KFwvW-WN_@<;yfYA}#U}8Ph&T1>L%D98xgJzZnxuAydeRyf~1HAzHTGS$3J0 zwZYDI>e;wZUdWI&7@bebc$ciz%J0BfxN5l(WuS_8VH9YQT~+OYC!GITL>Y+DZj)=F zz$f{iyp*zoQylVjdO|kJ)vb6x8@U3jG+Jv+$_n|aKsu1o?3(O_lW$NOeR4yq{b7&o z&QSvrFSVobWUFmi*|-c^B~No{>BN{(4~KpFi^3xtn*!eOvVQHO?ozzV<$B+jvfK9T ztzTu1$UHyMmKh)8uZLjf4as!~Un6_x%bvpii3wL%gjVgm!CQwgPa!_`dqXW=*%I;%vU{@gM>#j(d8D?gsFjECo655? zXFChI*o8jvX>DI;P0_+!4=!4uF${WBX}m(tL37NLQz_`IamOa+YB=vUp|)jDR=naL zB^OO_)_|7_CU~5p1^cmjR+x9HD9$-Qx1Stq#9n(vc3I=G8WaKt>^X|T!Xc%+Lo6vfod$2s}~k$jMr6rw_)B>JdA5xfBp$}G}NM+ zw&os~qSq7^jt$F6=jvSYOk4_GFYY{nF{-=lPK%PylDXkfMPcq_EWU;D?rf}lhD2u} z1`MpgU0D)_6*!W=Cb@#-qg*%YBcBNH6;9_n76lt6-1{!vYFBPO)bLfU?fI<4 z$)3W$xtr$>N*J3rkrk33&H6a}=Wgt2qe9|_{a1y2NQHBivvCbSV&KZR-FirVUyrmE zBbR$E&M=18w$%B*6IXww_VcwRHGHMnp5I@~UbQi?en4B{)5q@Mb;W30mApdU9?({G zzQ0}NYay3S*Pp}Q%QglSVMh8KJkQWm-8z@+4kMfWzjQPla@JIj@)SN@-OZgAhQ7uz zw3%E;MAe!?t^{i%nj1$Bm(HV>h8nf>S6%7ZGLemoy*jheKu(lZW*@C^Yte*ikF!QkTuy;pucxYIV^wXs+69@=!kQD8 z|A|b^)e~dn@J4zX0y!Mjtp3n}-9dZ2+tZAZ4eir=r{t@u>&;cFwlA?OYAjSWW=rQQ z!*G+rf3wt3m{~h3b9sq+6P^$KD<%{vwXF`mpcK{M1*LFj@v!W)h9A+{aA80mA4spZ z@wuGL#FJs4yc{;`Aumq~U`5+qxOJ6M^yA8`z>b(!_(F9}cACdm_;h~s)z{UwCNw1J z+nBA6hNS;ufgm!SA3grMrQoW6SCNYtjic64<&VcO=f;v*V1Z3t97uPhT7k9D$(hSX zW71xPe(8yNocEdRO3_2v4>=2+aULvd7kap??elo#p~|t%Ma#095{t^#$2$vi`#IzC zPUUKHZ^on6O4-Z&Q*}L5qFx8lqMC-dBg>o<4j%lKv=Uo>R6V*$0tL<#t|?qUv%vjf za&Fzxx>*J2ibpSJn~tvBSc+c<%)Smo%dgH#G^t2;{f%j{*je}PXrFx=M-alO06nsR z-Aq>Ka~4);MU}<S`ZQNsCo+f@Dq0`}zTrH7&Q` z0Lcbb?ZLDscq&J(s2hQkhVADkhSy=RoZs&Kw4?3@#hcuL0bV`S-gp>u&;~Arj#_~P zwi=1p@k`@t9cx-XzzGs(t4F{0lc1>A{^`H+PjTd*Y6TB;;(sYxhW^p1rIK)cqfUvi z^Qi-47vdY$Ax{yne1jn{LeZL=?BO{D%WL`^57%n4_I!c+sJGR*6~7y=XyNNOWoo&N zU&~TmrQ%ME;W$XE}vowMh6wNDJ}K|fM|2S}cR6x+EhcR{L_mQ~!} zKFL_1EJ$6RmUWHhZeFd;OD!HY#EDI4-){7YFJzCh7E5G<)`okOhuzACK?%87gqr+y zn8$wC%l&(Mwm1ThN{@Z{%jGdP?Cf-u)Qrq&wO8YxJHQALlIkJ8|&y$v2nU+(vX-3cEqu!K{hjQKQ zcD~V#DRCTbQbVOWEvhZ`usiyxmHF+-)Qn_BN6(qy2U&uSI;GxsjvJay- zRJ0t(+K|l5qD|h51xj30Di7=yHQp^tpG=Ybcd;da<8*C|51Fis>%zK9ZNqGFUMdJk zah+zfui+znzKm`*_BIxcJL4RR=F4=Xy{#YxMU!(JRadJt?NOe?y?T7Lqj7FPt#U54 z?Wce5jvQV*4xftm)MS(mkVK{Z>sKJ!^Nz?llE?F<&q) zDj(}B_9P4sTI+(JN|x>(>yTY6gGPQ@6*8L&VwV=~j>Nk;E*)l8re*3<_M|m6+1L~K z`?u;S-xDg*r76#3dcrd6`{TZRzKqboYxJ75Y>WW-XvoG=((F_XTF*!G<=?VT%MtYB zITDc2w~i31PiWU3$2ddRUwHs8?YLOQ=zX!F+bQ$?OxZ5y#){sj*qcy5E37Sfb5iN^u|DrNQWk}`rvAZsN5ekoxu=FK$lIA`#Jk7i^C2Jj`gHg>T+W;+V-06!|Go!ySG^oz$_~G?l7iYE8GVex zn<+d~PWwwcN)6I8+_l>Ni!*kN&{w)EJ>MTG(EOp=+z>K9O6Ke+uqA5fi>c%6*j+C! zlGl>%EO^i3L&L?g4htuh$0Gu1xg%P>pB%>(uLGUvLv=O&&OzRJwZgv&-=E4^vUuQi z6`{pNIT_>Z?ETBhUr~TGIm_SIvdf`YSK3hS?4KouUxnLRl^@BKVc+L>y{unMnWOgI zi}Ee)yKw>#TObAc_q}csZD+A#Tvv8kJBE!>VT!*&N*jTh{dU;yqq@WiPW= zF2GksJRdg5Lr6)iJ%{xb4;~?* zjcW>0P?OkqtS#uJl{dazsdz`BHKn@uD1%-O!!<~6xlig@Uq3I^k-ZcZzu?xTNSEL88rpAA+_$(%i3E+f&4Y9lq>kD#c6nMKl*Q7@-MkbAY;r+G%) z<_?*exVh0?@aQ1-D_r@Tm+DW%ofxg3HZ$R5sSsSkLU@!FuR*fpPmYcxgkHt}=+{BwM;u|C_^6{?j zyqx^#aZ!N-X->InxPo1g+=D2GIk{S1&QZK_=Rn|CKYX_(@ub9E=J)hb8Bre(3E!R{ z6}0x9`V-EkWt_z3!sS1y8C~^p=MHR|JO)kp;^I$g58p_fWaQz@>2U9beGc{?2JI}| zSgeXNe4yb@f_saB*BS0ExJM04-v5R5>CAsZxKB4p8V9=w_A%I2*we6f%-H`I3UywW zMP{-E|4%)>|Go16spS8K4t_29|5JtkOMSloKO?^-5nrf%$WlMsfZu`r0`?EsWOVa> zux27JH}HJ8Ys3}5s1paj1o$TGKG?&sU%>tX8=j04%&-GtD`2mMoekRnyBhYHU7!D= zCM&V8u;0RPCxIqGq$&95z2lmYP!TgODpd47uMXueQihV2AZ|Rb_KmF$@Ji-v{wc9+ z54MG>D^u0PJJTf)V}4N(bVe0Er9)4|zx;W!*=7Y91ji%~quuE91_jj+er z(gQzvX_IZGintikB_@o)cG3KEkyn);>JnK&EfJ@Sw_!HN(@Y|&B1L4zPIU+KIoZ-MjMak5V zq+-6akvzr{JQkRAid97j-1zR}Dhs z_?l=!SO+GTrqWDc8m5JK2wd{iSm?yOM!>|~2TWe_U}~=$`iYCg!bCZ#8@*(01Idi? zD$z)jgzcg#GO}@&Wm|+CBODD8cCk6ec1oP;6_y-@d5W%h1YG=(h1#We*d)Mc z@pE2Sl8c*9jJAoPu#9IdtXXb<1xB&x^bK%hgsT^R=3)K5$P_Uu&bGTdpB+?iFKoVn zUxtgH;yn_XE)EyilKYqm{+x7JMsggMis?TA+e2I^L0g)W8D=jrBM-Nf1+iJa{Gc@r z^$_!gn|k7b<)+q)N%>|hDTWmN{PZ;qrHGj-(p{qLUy(g`U6x=wsEjkK>Omur%n!lh zX`*Ly3*0^ieh+SzfqA@^`pN$@tiB5^!iU*e4%DLoSx!rB!Wgjn$G57_}NhnPv-}h!(^#rzn$`ObW?iJe`LVAj=J#9PtxZp?pdOT)= zs^B*>yaZShOH*uxC3uGF;;+Ls^ZHK)!>~w+&HSAQW+E8fMOa0gO|dP`t}#f@!$pF0 zu^n(z4El#~^<0XDL&D<2bPeLr{E&G4=M$LDP?io1Bc$PjN_Ga^T43_@01sXAu$yMU z)nH43DNcGBfIij&R|A`gy$;xvoeInW4YI1V6CSB)?&+ktaCH^@)w*%OWVhiD8K|1S z?NJODVv+~=G6UZaOhX=GbL?6VJQFkxHWa18=1SZZI7f{CLrwCTHB-VugP{syb6Dh! zZ#QTZTMuj|WdpFypl<=D9C`SID*X+70@$qDbHHY@WIX$grd}r{!lOWd3X*}%u9*pJ zDlGtpyzX}amjW}gg}@xChz^1y@z&$`?G|yQ0iB0_<0h{_i0d{~F{@K!bivY1%e`RPRW?n}Fo855+ zuo>}8;8G}J#7_a6UG6Pl8p;#v0$qpVnD$|@MWwT;o zsFE0LdVUIlO+9@LI`t0(Rt)~4PW~~{FiSwGML<7mYX}fCVk)=+*oV2QdEY{5t_M4E`e|!a&bJi5^ULbwxjQ21vwx4Z4F(8HN!PC+j`Y zW$L@u5=_iirNMIDff^}x5AblY?+>-mXNrZQozpOw*c4;mF~#^(f-Glpgcxd0Y<&224YB#AbRw0XEZn1lUY(I2tq!`H3%$fW0gM#AbsV0&FH|Xs3WQ!NO0> zJGM;d6bqf0=_6h5Rbplz+k+e*_4wCVg4bEZh)ps65~(7bnYK?aiG5=UK5G#pHpR~A zVtunLV#Ua^8C=Tj8>t{R>DbpnY(-9s*aMc}wH7gAQ|zz0SZTIxt5|u3&CcKA(DTgi zc$k%N%));Xn1&9q$$!Q|CpPK)l~wjf2LEhemg%p+IH{(`^(O;i;E3;{ZLtDB51K4? z{}S0(tWLsPq))clU728Dg4jDsVX5Q+SQ^R`cY!5+9dXk`za-_eB~xlEEDbq{Nuzxl z)_khIA|ARiBulJ+tV?(p=i?Dg%|FIBo#+S^*W}tNF8zWYe}E@T)O@2PiFb2tE26-u ztJR<{Oq348&-gJ`4OV|6F@lLrx*Hh(b+P^y`d|_bIdE3mwLtm=jrTn1XdFc z6x!^4#?ueG5%x}44K@{gX$Bq+Jo1sgwjZNRE!QF>LQLovmL%d`whaCKKdb;mMLd)m z7T-O~kemybhA|UIiV5B1_>u-drk(2eYDq&DVzZW5w=|>^vk{TMS!|yl(z66Rr@HqF zxMsWK^kfk%)9;6+p*S&Vv}a&du`wnhX|y?8b0B-{xeT5F%zP00fKAoQf!Q)ie+rm} zs)g{#4`G0>1sY!<*M z3!Rt^6HX6lk|ltcB}vi^TsZ0}>|44di}ZfBpRP0q+E9xCv0i}?V6&xR%*5t6J093f zU6qB0c!o&BoWu1nL>R)A7aFP{PJl~#9k5xZvj8&1As60tH3ZS_U>FR=h|NddKY`5` z6d8|B8uAdcTqxVcLML7b8l&VVl~`lsUjiIs&{uWx`y_hI0_OLZ%vQ(;IF&GhzX3BJ z#IFGlHSl@hK?dePWIiYPY&IjF3(Rgu*+(t-9bk-xx7`uZMIVwG*FP+B`+?0OZv$pH zGs2lO>GU79(2rT@CxL0mPfRcQPXn0gI%Ci^G^Y@X1;Px1D3@2V%uUd zUX|@(djD;D=uG@2ZMDcuE10NFUlkCcLu`*-8U)XxSo(==AoT%*u73ue>C6lz<^t0& zUg9vZs*kOocw(q+Q7oe-y&RVOifH{lGCs;2k(PiYHBG;eF1tl)os!he%=a$P&C>LX z?y}r7%oz~BH6*@-vC?jWHFNwV@Gyh^HC!|1Q^00Da-~2Kci$Y6?rJtzo5=^mL=rED zOV#O0r-}^VuHvh#uy`Lw2^Je!E(11WzZ|&6pg#{xLzTqlNNrhf(U)7&5U#49wJ#UJZ=*J8WIUGY=ld!GHz8dcgwU0*wDU{Z;_8pDzbC=c0TYHw*T4U^9X@ zfXxPT*h2pZ*sSQIxN5E&Mtl?jW;NO|Fqn#>fZ4*Bz@8R*3b2__4VZ>{h)uc^7;1HT zu7%Dwe46lb{GrFJf-z=*9*jp2QXxA7?$w|%5p|%Mr8N^cNyOfYSARZNHCXfaUzwJT z2sS7AuTvFhq`v`RKK0%QHr4G1Hu+Bj-2Ecsx_>)9~PK>_9c(0ZeYJp({#AXCB z7CLbz!Zp}|zziZkAD?Lk{VEb+NGI;rls_x!(zN#$P{_d01^}}iYyutvng)BE3^3#& z=5R&Qzb$lPvtim$M@BYqp}I5M9JN>+VD(8(RwN9S5}Qj2|4%L4e8Sa$-)y98;AYX> zY0*i{^wBN_Hs5(x0jpBex$hEvW-EElB1X&yqXzq?1%F`SAvV>025ctlB(TGfRnYPn zHM7T;YjcL$t+Pe?Bznv_ML%FR1q$>BHWN3_Lcbi?fp8{n9GQ{ zP$#jOh!=tRGn{(BPI$~7%%?dG1&HY~l06nWu~|ZG1`iW-)WSnd8tp}3^F4(JglMQ& z(G79L`*^pNK_U{mJ>U^A2LzzV{BOa-ZZ z;E>P<*c8YFHjA+o*qrZ70wynItALpS`nm8%LprfZ=O-s=NGIlE3i(@9mOl&w;JLIq zw-?wP8$PoL6Pw#JT%I!%@h@Pr$bR0$?hn0Kc|s(g#}TMFyRG!z}bt3%?hbhI)vND)ULB;o;z; z!OjCVBU=D$Ms^D@4TXu#G2mWcbAI(Yuvs;40GqOVfK8oy4Lber1GD|FfN_fl%Nv0)$*c8aK(232Q zxq;0QZ2+*@=q~Rnj*qrI-W_vcy;QkJYPOfJfX6p|^=p#PeCl|RCbL;`wr-XocS`#j z8kSh-cK|a%8th77{MWO1KY*E&4I~w(S01?hf$6Dw!E&Rl0Z8ccv#C$1Wg1E#$LtVsoz-7EwaN=w>6TZ5e-SGxiCkzFM z>7}As7CNy>pATT_Szw{xLIxP>A)XGG5r1y*>ywsah5!Rj0;9@xfqxp9^fSQB1QWq6 zJQ^w`=3JXRUGNxYm60dK@_6Q+g4xcvoo9CUA{&10+w1_`hNB?uOyE%lejeD&*$cp& zQ!uij56Rny@=OeG91v(<*(|;1fiGpqLVpR^xwGE?A;hI z$$$Bzz-w;i>`kC;Dq!JO%frcaz+f6Mgxis^Ia%-{7ywQY7pxEUgvYi&v5 z{wcO_v9;C~yGyIJO_95~q=NeS(`pvg6pWZSdD4iA47YoLB(~pRi{G{N2HWH){M=&m zFgZ(pDc~FoI6vx+5)t0CdTyrT3^-*0XKHv;DSnA0T$ElBktIg-wPz_?10iqfj`*V9 z=4jgO4;QKP!(v3souSFfzr&jj&dXH(2p2IIl}sfpLR8;m%go`E#2ChqZ`300ma>iK zptx({GK@9bBSJg{{_Ji+{C#;B)!?6I;V%%s-DJzk&JJQ93igZOr}{bzdxaRa$d)C- zN6InXi*AwiX90O;T6nG#0zAc61*v=i>|Dzw`)mvQt>6PmZ;NoGr^3Ye#bJphi-P3O zLVgm$DL)6Und1k8kX#IbLQF ze<4VG0mf{*p0j6zG;F)0vnAeT(XcN_!xCt4P($(CK^k6xh6+fsZ0@#bI1!{_eWY;Q zhTimfki2wfXJh`0MgG?y`BO;2?V{`noP1t9DGR1rCvN$9Jm#Y zEd*q1V=2OJpPB5H7V(}z;xE|6PiQQI6NBWJLf#xi?zhPI4U#`2=HF&Z>XjQL{szSN zLyV>Np!i{o+*6qrC6?Y9mM9#T$uT+ipjyr3J!DaTO_2I+QR3jONM2Qt{(~0zCX4*s zAo+{p`rFYiX9kHUFYC-5xA@FL3}F2m^)z+e>g~dt>~cm>LBr* z5H|;cM=jzn1c~<*S1duVcs59U3pQ_`GGc$sBJK|o--7wxY*Di{Bwn0v2#d+a@5D(9 z@K9%}H(2D%6#>pgXkx^Vh<5O&LD9Z}>y%RwOz|h+nq~G!P_z|d_#H^~`5^I>Mp@cv zh&Nlrd*I;*jhEWC4PQ1Bz|x=1X^5?{MYmR3NF;?G*d?+y}g5WRg6Um7Hye7`JJqe>|LoJD*~koXH?KE#Wk z2ohhg4s9+ZApX2X{Ous|b!lSh!=Z`2-U^aWUf(&3+Ae;$LhdQQAflIIa_AT@$7Byh z@Ejv^FIv?95~TiDaXn?!JHle3o`Q@yO~Fj@Zy`OE3Qa6nfFb6izlFr)U$p4lWzm_6 z1rBS2TZ=jFFb@5Lc|E||-ezv-9J*h%Xc!u#;UjUyGNkI|Www~?b&xTu>2-_DRY5Y< z;t9wUPYQ}M<#Aa$V>IzME#fx^iEqmg1j#!x(Tv2QZCw($a%N4z8=E_O+1nNkT*R^#`$6&Latsr128nOm z(kcFqMf`Y>_=+svh2Stzd?ZN4`X^=SETUplf7hbo-$5!~aRxf-PeJnc;M0JoAV>N4 zEb{Sqm$K$ykvMP{dRkYItpzaWsm=%YKP=(}LE_hn-YX!^H#DpGqNinPwGsOV7V%L* z;^?RlFZKk9hdv`qyAAOJ7V#-T;*)Yk-}zyQy{d!c_dV2?1fycg^P!_ z;5kzMOh`=jR9x^d$AZI_C{_nWQ7x{&8&iXoK{13s-&w;Si~Fy{P=EkLGnWfhy^!>B|b7)4%JUUm=Dm>0a!57+h$2Jp261Ib-vo!zrL`jc7e~@ zwzgq|DO6YC<1b=ZRm{YeHP3=DcPA_=_~WNm6)z0JPqx{>U>H+JS&+V0-hdRwS?W6p zUh=^!)duuMUV1Y3AKp~@mqg!`V0qM**PjJohm>8sCBQ%WB`*X?VK`M4r z1uB9n&RJ9}3sP}*8V)fAR4fTn;lSOkvxu51ezmChYmkZ+Gq5YCzq36Yq{046X9MTj zlbMf~f;G&<5_zDTy%410+FvmO7>}_F78M@`skk@`SD^KL6u%dw;?#Le_lz0O?-mu` z2B}y#N9^W%->D$^7k=-Y?_RXX%UDW7(Ol|P;d5~!NiT{TBW^((kzYxW3Lti0dW zGwjG>?3jo$#`4zvwwS0zc12oYwAXO)Ia&H+0pnR+q3HU6Eyi~tPLZmOrqIQbkOM&p zIf1=_w*Sj;`F>EU#$#Qy!Wb^?7JWYj>D!6L0zXc@ZQdGN@_mqwb!m!}09h7JSBnlc z?!T*LNh5nIv+I))WUbk4nj-NK169OWRP+u~vF|<{J;!s)G^UOoLHZnv6Hrz$$Y6%)w3nhoH}pak~ag!^QHUOYZX#Zx$- zyA+~Sk!VpdCrCxnW-gt`%OVnn25E3sDwkfBlPwxn8XC|pbh8s0aEu;PoLYR{;=c;| zAXGT74F#7{7P3|RwAz*!mu%4c8cD~M zils-C#JDujEgeG2-nynfu^WG+i&{)mvsIFoinM=4#Lp{0kl7po zyeldt>^fQM)un0U1AWEJ<@OkH5C1&HKl}LS4F81Rg+EUIsoo?iYrQjZjb-(-&|JKR}JKq1n{L4Hn|J57i_|F!x* z7f(K7>n(=fA2vSibY}oih{Q=yrwNh17XyT?_pUeY4|B+3;6iz-_-LKYA)dM!DN1<4 z=GfJ8x3XIn^X^h&wjNs@7Ao>sWJSyEedToV>dp4vv8?q@6N39E1D>!Iy5{M}q!{3Y zjl&{;mcf;#`|G75!;k45!WW5$pRi@yxM&q8-7MaD!Zuu9EW$S0hKJlL9Tyv3>(X1) zZM3Dv-!5_NqEd|J;9Vl6ia#0p@7V2hOvJJ25;MgqsY=){Q#Yj3^#q`a#LiuU&Fr8<`JDY9u@u~CyTM+i5xDrm; zOVUJS0VA4Jrl)$BGzEU_4Pjyr40X%k#B`DmNSA@k zw~s4y@*(l?lPC+`zK@d*i;thQT@m}SbOt<5gmWBt}kNUPzR zhWzUSe(}TKZ1?*5*vz0n)?M&3VoY)%d`cPte*!Y|t*-2}enZcc&?84U3#E_F|E>Q1 zMtNiy^508MhW{5%UEhxvOxQ)3t=a6piMDEuUGo{kQ6UK$(3a1H$95y*2nankS7jfTJsUEreB z06&ZSUftiW9|8c>4I|_xe_yz~E5^s#Q}8qQg|Km$k-i2$*DJn55ykn?77v188Y=iY z$j=LW4$wK+#YuR6L;x6u{QLoM)6m~9$Ug#pOfm5pD9VS++&qY01;2}*< zmO*EQ$e-X3%m`TOAx)(x@)HsBwk^HHc$Tg-!dXVdkp{iVpf|&1hfRQj0=P8tXJWzI zwxsS{euC)>%itoodMSJ+HX_((1nVh2O2)uxeX^1^1UAy3Gj+0o%Yn&58nMa46q-Ea z3?9;mO&->~{5k%>h=F@;vE2=it`rmYnSn4#J}##2wI#u6*lSDgb0k0>1}6br%ms0z zLD#eJh1d;=?q390s|?l!aP`z55kDc=XGrLY{W8E>Yp{|=9BI(?#2SS(+u$LMIMSd4 zO7cnm4IIl(i0;IZ2A!!jc|_wo$g~kqfdC3jfU9TWGx5SZo%J@!2)-7so`uiE2?UQe zqSmwUHNs%7hovUch$9WUo&^K5Xvsqwapc#c)ZZD~O-67sT;fPHB1^E(2u^`ZjNpxy zV7-|_xdTCZGyO~)v;;o_GULvGOC0&x%kSD|$ld=543nfF7z3<{BmXIu?z3g;A6DS_ zk$^OJhl{Gegz;8;2?L_h^KalV9r;ac)>JnT67Z)u5Ok@NrW$mTi6f0pn$CPCBnA#~ zFi<|jzsBGJx``tVx?ar&X5*ynrG{$IM;Y|-aKmBEM2|7(q!9-ajdIrO-RO7|4JOiv z%}&Mk!N{h;)f;L)^Uq@ZKfwI6mNPh?6>{c z{SQ4{zu=z0YK3_KHu4X#`UBgLK7Z;I{U$|1?@kB7n~5(m=& zOLe3XM;i2GVEH)yz}y8(9@2;-4f?$XeJu2|_T(?{2WBlS`AGxzNs&fCqmgeOfZk}} zH{pU;lDQfP!>f-J#(y108g!nGCjB7X41~!c0e-(hCyhALpgYO)G5&CDqY#BjBsNEc z9}Idpa*&5G`5XL!VP%k?G~!5u&byeTXT!}jFxQ21E!bsXR^kBSS_sg?H!unl4>K@@ z;}J`DlXKYASd*~%BOUw?@ur-q@9C}H0T$AN#~YaGO&z)G;EiolSUkA(3yYI znK!;P5;Ki@4>1bdrw=6vAd%RtiC%_4CR_)?%$ndD6cv$1Z00G0JciODgNHO?Q>VwE zJK(a`p;NCM{ks=bO5zv_7$wM7Zz|QtGw_f`Y%1kS2W5W;{T>6afs0cmmvYQzW$IaL z&`Db>BYsoSdLw|T>rVkA5t|J1A&ofFpzk&4_rV>CFj)nF*>BK? zat1{ z>7)^xk8f3PzfmIQV@%%k53B^ss!aILB2TLSq>BQ{exg7nP5VIwi{6WhJAP3-;zNwSF}pV$h0 zae?S=G}ss&ail@lqlgdi+-~rYMjUC-?>6Y$;Ob?_PvBG{o0&< zN8?gS_cQ|F=y!|FJmeX4whFzBjENOz9aKabvB|F|x~n+xsVynWh!dfbT(c|mh;5}T ze=Jsih7$N#JoOnSO5FmfYEZ8(;);tRjw#6)~UV^oudqIcWs5c!Y5(su6nAmJI8Su+SZKWDKq!CBPi@i``7Q+}L7$qSQM|OMUSZ68BF+y1* z#AYe5-u0U*vu0f zgPEs+hAe5s$kX`aoh5s@5nPI3VzXq+slq5(e(8|aPZ}{wcFS?w5cz;O0Zni&9Pex^ zJwgM_W5G;}wzA+0j7Y|q?lpqPBbeA6H7gDJ)o>>2ERGvziaT2MjUAqtG~nm*FB)(OCxwD zf{7!$i``$^CXP08?g$GM%p3$0n>pt?FH4t~&lWH?Bj;{|P8u;1eC-L$hW;g%ozJt*s#|TcaeEtV&WVsV1paDZkh2+}GiJe}5j2-+lOaKhNvD&!2nmx#ymH?w>i> z^!aui6kuu7G{|d-IEv3wf6{bnC!Hi`LQd}*bX#P5l8k`a-aZN1+b3t*8%Kpq!On-w z_I3!DT5tMwhm7;4LrpKYTkB79&VVyH`jwyaDK6ViAdKa(qBF(O6aF+tYb!S8(Tk$u zh$dqzZuk^6(N^S#DHzQTfQ+q}_Zc=*8^7YSrfoZEWAfPczQKQ3aOcvbphk{<+J%S6qwMDa`KFd7RPpLNdsFEV`7FZnMr)Outg zCjI=N+d!iWdFT1l5&f(4f=r-bTl4>5wjrG>B#uh&j4<^Q*dU7_ZIN_pRSoP7o)R-=r0ug9V{{od09)pz{+L?vF4~zMyKRSjU1I;#8hIQ&{;2P zWb0#&ANh2a4>hv&DUjYDHc`S%wL=OOL5*y;+Cb?S!InAxgQZg=TYuBQdpQk!KOC@_ z>tpDaqx;Q4tajYdj~~Sb>4=Q5nAWCx@qkZ9I%;HF4$Dn12)^PA#1;?Ij+9P~9F;ys z`mbS=@w4k~W@V5MwQda90!$^;)Fwb@VbsXcWdFcX^usxR+LvdV{Jrv80-J^(ntTbP zwI*v6{Q@ncWBznRCv=FJCa=9`S{}-yW?G(fHfh@m-exxNp+>fQI1aWxpMmK^jck2# zz}Cl4`KoElgbK)Igqk@|)l5u{Y@0vpOP%9q)7G_qyqKX*jchk$2kE)6rt!<4JBI$$ z5)9Y`rm6G}PWdH>Ob2tDUgogbZP2+?;b(moiR)l}htC!>9~MaeiLlH9oG{}H9#D)Z zgB>Uy13T2=OT=}s*Na!cnu{c)Jr~SAkNMQWvR!#P(C?8>jU1Jp6Y`gQ-E?p}4WJ7kRdjh z(NDr&;BY_jVAx_uXPEhnfGrh|gXMPdIOB`O>@E02s4@`k>M#EWgNAN?{Wm!Fx&>}# zhrx~O_7J?7?E%=8;=5rV6K{fjN=*Ot;s#j8F)c?d{}6A1{Xk6rPsH3t%|26r(@@9# z3CEgN+D0&jG1v^;^kg)GJ;$(@)d;34nk!32BS`xeH|lh3%~doT0ofi}z>t@>vGUud zeLb(IzvwuwlzXCVEG)?D?pJM$wS{Ro-t^CQj5Y)@>DUV_i;R)ntnV=H+Gb`I9lQO#2?2zITwCdylD^IXNo*QtAWnheg7erV@{Y<-HK< z?3qo|19M)MCp7Apz+Noo*maF~H|)#eI@rXU3VZ|mg?KA$5;9{({6h~N#q_Cg^eXZ1 zV5d8bKhkZ|QlBek<;+SVPwq%ArziEsBf!GAknJVGtzhc+!6w99`+LNzVIOexl@9+? z%q_HC{0*$x!G#d9yvtl!0L6Fliz?y=F!g`KayppI&fIkRU^4|Sod+tfBIYkT>!vRst9W2sPuB_EI18um^r6==nCo7$aY2|9btQw zdA)q7k?k-#1L1^qnky%YWb5>RbT*cU#A{(66>o*jWMS;Xu>4IrHF8usA7bVja|Ig2 zDPe5?!wP&1`-_-=zJ!lxGC?2MxR{Ca#QaMm#o}MV^6@qLUk8iFZVk_ZjUy|sFEYkr zW_REd7f1VYyJE?~&*M(PVy@WWM9o~WNzX;t>lgS;Q32G*(SH8nA8>9uKZqU#IlUPF zVIfEHqS24&D*6P`3n4L@t%4lw<1haay>YHz|08;g+`xZ+irxcj zcJe@cCjysg1O42S=!6FaRrpX|aaeM6kUx>pT8|WXv4-596i_lj5!Yxab8;1cQ7$WiI5q_coH;ym7@!SbZ^xHu}EJI6kj z^kU$XFnf#vo9PZEeit^E36yx3bZTUq=|1U4Ve^~aZN4s1Ph?ZfbEW%8TIdApK-XHiB&+obZTT< zz(}Wn59LFRZ1ev~I_~!-P@ABzI@n}!4r~Q8(kPvGp;;knWIN@VCY>)yj&TY$cd6k| z&D^Ed8duUs-A=Jdi|tR5fv6(Nl<8%#oG53(=KK{dUv2< z`rx3mBjdzS7mi%(y}2|ga(bw^RZd4?+39!86MLPC7jqZ1 z#(&h~u>90GnfWL9ZDt0z+4qXi!4~*doDJsR!lTc}&~6cDBQd{PO#Kbm$Hni$z9s$( zthptn!X_dO{ineGBj7}+9>CWC7{MBKZW{1J*gSD^5*m@i{KG)>XC=(51mY{Cb01fU zABB(Et?xj@@?ZRzmfC+gz_1sZX20r;_M@Drk?k4H^o2;wuMV1{QJHe~hnZ3%pUzWy zCagIchXSzVSRLh?KvWStikT4`PJf4oi8sKGaQIi^D%d#k@|4dE>D0(J|9hn~e_pmF zSlESt946Md zr1R(~LYzJEe2q7;#J1D!t9$WiI{N@vfw zRJ;O~f3K7N><=DfvsR-4V5QJr$)B>{VJv(soZhQza<~2!@}?GGciT7eIUj>Y5|>piKhy2-l(8LN90e99F^WEy#$BxMEY~S z4$Cjnsgdo|W|P_fd#wVe<~nOlh7;L7|HZQ*E5}TyAv{YNN*o2bI!vEp&CS33GER^pPN($`9-MvhA7M}b-Cn_#Dkng8u#{uR&J zNRz-mfWZh@5fsUG7c7>}KkqpQaUQ2OuskH48aXO`wRCQ+8pPR$`JR(bjjU&w66RqP z`w-JsIn9R?**;$PhID4SkeTWbIw+kQ+3td`q<;@vOMe|T{Idz%D%8l)B+k8JNy4UK z1UFH{;bsmmf}d9r__vl$jU1Jp>G&_9zk10W>D0)!_gu#PZ?9S}kkc|~WP8U zP%(S4hlgW z%uM-O=qnDtDdxAGkBRx`R_j=4U8W!BAB|vQiU^!u;}8m`&cDgJ+DQjaea_S7r#TI-Hn2EWNZNYh9>X=_OGhk%qIaoTG7tz$G z!(J)A4mLH0bG3I7XyZ?B|SX z1+Pg!=Q+bnSb;fCG_Og>{}t;GYX(0<(H@S%=^a~G1YZglAAo*HydP{{fj~xlk2RVU zRC*Wmbn#&ne6E;29mU(=V+JiqTMsr@Qp#r-#{*n@4znwiU_F>$r?*?hOdP>yHT22S z*MMh<>%hMgF9**Pa|=BuUId+gj*5BKg13o}^Lyy8D^P=oJ>ogw53Cb>%)kSQr$av> zeHz#dLZEYvnSn21bv)kXCP+$oH{2PMIhy|ESYVbDb`y8F$o~F+x z=--Li>F|#N*|fPH6CF2iH#eYA{cH^iM28AXfp_Zmf7dbaOI+Qw`XhOu%OC zAhK^YO(Kp_}sxe5$}tNM}Cl%=rKjBN4Gl5o5sH#O2_f;xh2tR!0Hf zii@D16c>Vp><+gHwSx2IhFqW>hLphHlOW@aJF0 zy-GTne}S0(z+f^0%(XNpDR4S;{#`+v=QMHx5gCZM*@>7X&V>FON9SKMV&XXTgrmc8jR=0Z!ET}*;yKV?cl2H2h0x!2^u6L*=>Ku_1LEb-KXLTWnyUY= zL&WD!#8L5j=wCbfaq(v8|8sPHPJ)%LhknY@ld=D)?||M^%r+4d???He7EVOExDk3= zN6!?WgwAhO*e#SJ4x!iU;^=we81$ZwUMNn3-WP28f7YnKB61KhP)xld zpFE5R27P8j zzr)dM#PgxgbM%FVvHce!;$A0$e}aP^hUtF*_A&A4SyAZh{TMd={|>+la^h9WCNbCGB{8p9 zwusq7ni*1L#0!?Uq|^UBF)v>BiP;64SycG*Ce>%sCr7aVDX^x=SQ}2Ul6i&motT;a zB<9u5FJhht%(N@~d9}ko%*(X&H+R3l?Vz=B^bTTP1!Wt?@y`Uk710m&0&zKXhM8#% z>|pUlu%%+2)flGFWLW-%Q!=lhE)z5VE5y8-;;V4BqBkWJ;3X92d~L*U#Jrp`bG*ou zr`CDW?}l9<=Bb-urd=KUKtMNWd`luVB9rFT)ki zH{$=n9v7#hq72i&2tGfHlfWTe73IK(Vfw^jW8zj#u>V^qz%@Qw%nQg2F^5u}EyH#d z)4!*f7n6LMj|F5xA0WOEc91v*oniV+gEiB@?Eg6jJW3JF)XW1zKRpi&raoRiyb!%k z%v0_RF)u`K71RF?@m;WYI{F{Pyg==7j}!4%@k&_E@v^2I*)mN2pot&Pi?r#)3z4U# z?STE8cr)zZ#mD_i^YHu%N8YbX;x(#4ytifGra5O+oV-qyT4idCQ4TybxlTybyMTxB_;RnAbiG(`Op&m116$j}x<^ zJ>pWh?W#*7#r zk;bd}$Hctqdrr)Y`4_}2)7A_FnNS*oVcB!>$%T0h{0?4l`wd^CVtnP~Rca zsga}7%{x%=Uk0sOKIH4fe}c`x&*n2lIyJJ*XL_I~Oh%aq*aWu)5#}KdvQ02YItz>A zXZ`0%r$)B^cT1;#4t~~uk#uT{&_+%tSgHtauH|BG@?7%8!7C>%9R`LxK6!_w4Sw|D zLXJx3uJZU;GL~%o=tGShrJf3?!OyGOxV9j2%lOM}To4(6$KMxU5ZO4qoATu>18+{V z3}(PExdOIG%=!!v^J0%rv(SfiEAtokja-jcP=D$h;j{G}iXwmZ`uXdMA~oK4KfhmO zm^Z`8xBIyJKOe^WaBi@@GB zLH-A&QzJ*EC%#g|kFeZ=Ue6%GG3nIEQRyXM`^@i2Fe^=sY@a#gjDLUzGrpDnvVoBS?LI{`7IWte>&3=S##aQ7 z4vbvYZ7;&{a3J~#by4(gHi1=f8$^rb~pIn4#u%?gFm3en0X~e zd^s>b1*Y$Xk)BtMM1GxA4mlV3dDjB4^p{SJ9F@*B@~Q$K-gIIesga}7C;Bg67`Z$# z3358x(k-wv#dEL$x#sp`1q-B8BioM^)Jm^|z2D&n9gcwQ6Q?gqr$)vTr~ZAVk%8Ig zpG#sF9-=_>HA#hDkwmhN9CEOSaGAbdf$7HiIeU-&;C0vh~lTPXqqL zQZ65AWc$E&9ATS}zhFqDrI+L{8xrZ*N$Kuax*YhCZ921?@L`Q1=5h2BP73q1DOQd< zgltpfv!n*Uq%6|bW^Q^s6|_$UQ6u9!w{yyHI5hR^kix#Y*%rHwTaI&E#mq3t--YPm z+7cy{^x$%Txl$vae%_xxdSIYTK4s9zc%e7{B9ztv6~I!d=yGwigI~qy+#q_UqDLZ{ zj7OjsT@)GA@>+z=00K{)lgIlXT@<-G!A^(2bjXuo&DaBn&up+6KY*8kZ>5jeG)-}> zbePaz#5cln*U+EbMa*FVo3s65NPmohj1xr!@S-XH!%~7D6EgwZt!)eJU#U|g+cp)W z&%|K;&C0-s8aXPR&DtKGH-ni^8pj|E*yA(Zar&*CsFAHtjr5_gT)c^aHx>@z<~?#3y0;jK-5s^kx5M7= zu-UrW#j64x`yar7-S=yq1kXCme#AZ_@}hKVWc!TB0qGoH@W+*jW8JusmOpxjUwd zZ%Y8o-~tic-?uAb7&y+Fo(%!ZJ<{XisPt9R*$&o-pMiZ!%oWJN&*rm9IyG{_W|ZqV zZI=@@vh^{&Au4(R+6VGs0iTM$ggqr@Wtw0mxW?zeMjbYTXXqH~CQOg)O@KF+o^r|) zN2QxP8c4ua%sU*+bZ(FY`_d#0zBe-F4D)FjE_?Ay$C%(t%#9p$xCJZvEA0RMh&aat zf`<{V6h8(#OFR$Oyu5&njw6$;(wXU74tuN|d^)CRWx#yE;d1GXU~{uVK9_PP+$NYH z9s*k{=1lfFF(;PIJTMZoVDsdQcs4o_=EJ!YGb<{-0e;ly!17r`GAqFeEOLT@H=PJG zB_*ei9Q}~PM;wl$KxV{=7&GYuX64L;j+lRhfj(T!WDU3$6~;fj8S_pM@d^x`Aet`I zKHK-E^mJ_I-QxYQOh*4tVHqZ$3!jg~9CopBQg1+o*zZ`5fP<$ivHyA8GlC-7K3*A< zz5&+s)$rlIXNN+6?$^#@7SO|CGx$-#=BiC;V=TBO9I=?OYXT7z8L$tdUaE|^YpTU8 z*mNN9pABuAbQXMv!)&N_Ef+d$x@{G_L^`zu1GeDhieSO%i1be4KP)^Fm?<@KR608v z>h%A+I2kQ{v-n@IFN^oUGED#1VRryFoK8D8{*Mu?WWJy@N~a)YGnJpfJ4$* zi98)<1+ba$v)7d+(y5W{b>*lq`+pQX7Gj(Ul8_sgtCb)ww&#T$gzeyUvV5qK?T|8; zKJVZ^EaomK@~1|&jhY>t$p__|w_aHZinUHg`E*i+{;I;Lk!^(v>C-Hz^fU6IMz-I$ z;#(8U|8v;S#B97p@JrZDWbS0bi6Yr#?@VcK%0J&ymdERYX1a#Z?A zguNf>q1$xq|0%L-jVj`xQ-FB@5e4wJoViWMwMSv*HXYbY)`N*)cFpFNoqQO_72xeU z-sU6Ef#q#GGH(QAm^)zzoCmSJ6H$Rm+09!Zof_G0-Z75PF!@j;Tc1k$s0~%hhZ>o? zfbB1MOF@ljnw-W#C)-A3Zk?f`yw$c+K99kgyJgV%HbfQD*vrnBHo1gx$rg_Hw(nzgOkuBU~`8I`uB*RjIiA*yh}!ZYGk{{)99l${zX32$o8n=OO8z2 zop-{fGeOg!(X~+oHL^VyoF|=Qg;`DkU8GYZ+XDJZzY%se{dM_wsdQ@OXhIR@%?H$o zce~~=fvyF|DFHRIeN=m*biNNzLw{Wy&Xi7#Y+r9SZ$u#f!_dslFYp84#C#^s4c2~< z5>q4F_dM4~Ul04VnEP)b({kzs%X8AHk)zUU5w;zaxlM(FsgcpPO#2Hp!M^7HXbHQB z3AFYR>D0(}?aeJK_;b*)#PM$0`0|DKcQ+Zh6~8ppS>m#Lv4iC}6L2YUHSN z9z5xoSz*6kA|3%dO3dqto#HQH&9g!9PlEqQGyX^5Yn)QeQ}E!!XhhsO%(OXdikJmN z9Udee0?Wk?IvxfyEf=yKbUY2F{ygk@apFQGHk%F+TOl$p+lOzL6E(8!!{3n33Yj+1 z3#*02G+5+AjU1J38ZUJEn|8pcoys}hW)fF zF~f&wHXmM{NAcsb*hB}PhcV5E7cf{>NvB4(#jG*9KONa6kX;p+>gn;FqNHdA$<)YmIkFr$)AUmT@p-Gd(1yGB}ZKrbnf7SZp5n!y5BSC5#`} zCKtAxg{j5Hq*Ei?7HgjCgMTM%@safB%KRFTtppUww%`gnHR3-kW@wDW)XdOW`f#OX zr!fX`9?mjct~I)U;Od}>Ekm#pvaMr{l2IeuI+~~QRL61j*9N~|{?y2}ignUCn69F~ z#x^fXr{F&Ou?9Uq%844;4tmUJ9F^+~|LOEs<<3Kxdzu>ARxVe1A?z&2zngSw-ICG7 zY=YTz(%8T}eTPh`k?osw2%er_-T_YMKEl$BM=iJr)=U?Gk<9c})R#klKt5MP$9$Rb zzY^sKZ^^-F2^=B_+wOjXoT!m)cYlL)W*P(AX2rZ%7&USf&5davke&wrG_bwF^awb? z1QZ#tm+()3ZLN87B7X?`cZbu#_STsB91VP^k!@FM&R0sCL4P$^b4G^_EfIV=R}q~8DnuNe=wl`>mC=8tk46JC zPpCoXsCyQE^k+WX#b3gjcaM~I3gYO){PDUG#v2NlcZ|g5y&^HT(&>>@iq?`E*^Z<* z`ObX0!LfWZr;Ga+E63gGvrXEI){^R8{4c5Gy03A>G zCxSV~mcf3SEvGVMM7D=hjdX6hauz%_@c*-PYGiwn%=Z(xmh>M<|4Rb@<Q2Wcycy7Scy+HcV-$ zk?o3&md+KcrGL91&%`x~ph%7?Vv_Vuu#1>LyJos{YGk`>Zj=5j>=OE`LU%}~Mz$3) z@2Fpi?avx5V**$%W;PUSNsVkTyq6O1v6QWZMnDE1jdAkHtq}%^g@|ngx9g(%1`ZGwBJPnwj)G3c#`!KYP(` z<|^T{md76h_Nx6-uzNVKaN*Zh=wC0kS3KJgwnOzE@}WkyL-h-cj_uFdT`H$>usfKT zqeU!Zq*Ei?q53`2m%=t6&NehY_|FPaBin|?cQdH3hTY}(KWIm~6d!aFJf;NC!R~Pq ztdUNQYzx>+A6>j|kPkJoy?D(=IQ^=igX%42`wNvQ!0WzY;+tV_7f*zxBNK0gHID&- zdHBVpcY@6o&w=eOX1nPpE`v?R&$|@=VHtz#6O$=L1n@bh;Ie2O*cNuZcm(V$F$;*` zXEUlbx*xw06Dq3XO1aL3<&kGs{C8wrf=|cE^I`E&?Ckf%Fu`AofDfy606+SF32QD% zrGG1(hsjS4C(N^uaAN%)LL?KfhK=LEB3}S&o~r>Df_cDE&qitHu@rC&Y0an*%!-<; zHEjc{TRaTm)t+f|DPA6sI9mGqyqEbTCF=CL_MGxXWSl?j(H9 zht8QD7RG!s9PZ$7Cx?4*Ld7QdEeavmz%CU(3d?3gy&l#yB`}-S2I<@#FN*77|LN!q zGwpWRSH%3X3=cT!yV*{8s$zf<<`EU}A!z(jKLN`hIfTOaBlD6ngTc@6AC~^osgdp9 zHO@rX_K)TY5NWBAPY6n0K+H<#BaMA9Z?SZ0WV;m~lg`7FufQ{(N~B#UPP_nkP61|G z=wxc9z>$C&*=Abg_`I#O)X3K7GwDZR`Q!)-X8zxb*&h^h|JyYPL!c8xGaYU-I$Jsu zo6AA?_5twmJ?w-Ppno1MRL?c;9Uyon_>SY-Us`- znD^T_^~_4Ig*Erzz$~Dg1>C{{@HB#asF9=6Kc${Pf?h~45|MVI^SBaFBinh-AEmQ* ztDrw;)v%a{`j8JbvVCNE48pb&t&oNlrAD@uNK8N;>Em#T*i5rJVonKC{{WkAleif& ze^vY;>>+WR=K71X@TY!CdNR^B!;kq;?=7xHKIX_8$L)`0tP{b*hzU^1&{Q#}2&ao9 z&}WL9!t%`#`p2NJ5;N^SF$?2L&?gQ0F-JdPCR7lSj)+t^(uuE7rHR>o-a-?@r?@n0G{FS?;Jkia2$Tjh?VH%@c9n+c6flpLmZyk4EvuM zEr2*v5o{ov#N6L6JN&A{4Gw=Q=E@v*xEazj|DRC#)?((_QG6#qWzyA&=;^Y0G2VtW zH(Zd>W@LV$^x?4lv4BfqM~bgR|8beP26l}2Dp+%a2L6Y^45#x28cs{{jtw)~3|l4U z2#9gi`2+!H5y@c`z%Y3hEYBz8pJ8tkbAsO7-GQD4e^!J(3t;Dozk{Aws6ZX;BJon# z#bS1^3^Os$2@igv^?pYC1yTt#F?<|9KDn6|9OJRRYX(Nl;;3u#4}dD zm}j{`;xgC^#VlZixB_;RnEgM)%!enq%f-yc+}nbF9mjv1&9`fOhxjg7GX{hc3;2U{ zp5c}{yxif3#VmM@_-WWD#Vq)FaXl<2=1u?qZ@_j%(1~GI=uOxLM`xJ&>CYa4>CZ5A zo^s!F{11pZ7W_oamEo9>{x}sU%%e*TFr%Lo!6$`(aT2sfm_F@b+lZM_2Qg34*<$9? zLtF^kOH6-rM*#WobX{(A9RC~+Uo0mMGB0zOaV(hU@oU7~yw{8AKgHo2#eGm1}yF26u~h(*}j%!K2d~>o`&|QeEtdhxWkNNVbq^<_(d_t4UD7D zPS}5m6AZknz%E#Z=`J!@lkCyJ8MN%;*+Am%#s^^uw^9ipRp|i1=*yd@24G zw$Xgr9*I*hIH177lHtT#1-24Dh&k#xDNe&?q#u3Gf^911Q^YYbN4YJ;*P{|`#plAF zBfhN}wm$`C#9=kB+sJ$x!%P%_Gf=s1(mBNHE`A1?ng=i7Qw*)2^!K5gXX~JsLAy{o zKOw>}^XKr4&sm%PpKHTQEH93(49it=qDGENpDdl5nY)J>ahPRZ-T^O!Hdp!v*n7pR zV9g~PZwq5tDxF$_0o%}uA=t+Fq@1Xct=^M? zuvhQ_Zo3)FnNct+5q!cH1yD0zjF)b{6r_Sj(*N3^qH~lfHL`uF`!CX2QFF)cs z!Q-C+d$qek5ganVB4%PPXnP6)W|lineA8Ql8~M&_9Eg_#hqcBIot|t`hP~4 z+W<&Fu4G|v;6E(6No3G7AUyD>UK7MPA^O7xi0sga}5mw~JB^DZ)5E)lv} zP87+}AR_qU4pOdxHjxQ9&xU28{Hc-cA8lDCo&J*%XB+Y=>D0)!A@gfH=^X!W1H39H zUR=B;=GshSM)^U(pGc=hj!K_SpBaJA|KvlB9F;zcKJVZ^EG=|RL9GQR)a_#-=Jo*A zn70tJ}({mYi4cx#`>tF; z)O^qt74o4iu{ttc!b~*<_mFgIWIF}-f%H#c4~Us3`vKfwWB-TO$`nD7Y;UkFN7x=V zKgow0*&a1@^l89zIo2ZA~w-iD54hKLopmiPbR2NvB4( z4RfM&uGw1pPYZV0OzG6f_MwV9q}L??>zSY;NU%T=)X4UMi6u4x>=WW=VKeR?~E4GlH;2NK! z!1u^x4-;!&c92euZ1?3}`e9_!$1f@}P8T>9KY zXTr79i~qM z{=>3NKGevz*Ly?y9@w|U58*_16n-{sVy_}7l5OHfI;pjPCLd~KTZ!h_0(J`>r+=^D z(9Muejci}!IYFOhfzO!0Ct>bvGGN~nJxM1$8ZcfNQ6t+&1478d>k1Leo${eZjzTYi z&N)R^j`N92#1F#yV$K8B@%oQWk3oFIiAZJvx?EZ(of_E=v)+}yANGCmH4!vY@nP7H z#GIf!D1H>XfN?DMs|4T+1=yQ?CFU&VH{yQib|b8i-iZvO=1feDY~PhUOF9qfbH$wL zjEgzpkc=(kO~QX#65e$IorFop8zlTpaVunOd4(9eJ=Bp?GVnS7(*hw+u&{=3y%rp*e zC+2t8&EM&Oo&$ZLbf*22IDxGYx=#UMXs!4q*ezB^1N_3_mdKce<-$KMW~PJ1{50YS zhwm02hL0IbA}xI|o<#qzz{5_0#~tSP(5=sN4*yfkS?pIF{dI@m66c{jGZ0l-9E>v0 zZ}};E^D%xC2!(!d5^qH!I=v6O(_!;Ei1c@*b8Ws7v)40U3xQ8Pjvj{13V{D7=Gf#1 zasp1d2!!yX6QAi|uS@>z)X28~FQSizS(nR)8rcrB#!Eka0|S+N5ZWz)o(TOG z@EbWXqDFi-EbmruZKyL${xfW?xE{M}iI_gVqt}TagMCE21ODs8FTg%$KH!8*c}%~e zh<9O&xn|mQuS=&!wwvy4={$}PiP;#cIBb%1f+3$P?g$&V zCmwW@oyB>ugT?niA0{3JJ578g?9Ji_V8?L9ZVR@M`3nW81hqdU5E)ejXSlg$JhSn^ zcydcvK9^1&0$a(9c(`C`Bb^#KDt#Qn-g$vfH~CN_N2T|bp2!ANF+r0cL4QS1BS)oA zq|fZYr(8bN$WiH&>2rJFbB%nck)zUiO6JP^3U(T=|LkVDO%V`7WV==7NN4+)>+lls za@grCSX=QG>D0(Jp9bm7hm+K-#6I@_oV{k?5bP``qoz8qQzP4qnn`CyY2y7zYbL9a zPcAew$qWuAnS=bd;S9)CE1eqIp0sM|!@~hfrTKsd3Zqy_Cq(en%4gMCq5ZIn5N9(rlh4qp znaO7r_Ne?h?ps2C6|h-4HL}frhxA<>|1Dzzjxw;A$!8Qmjcgy7=DuZxc(VCk%<%`pbb%^!`2KhWDofgz0|{EPrIq@A6Mzko&>*79WN`!_-S*OA`u=f;IEFh$seENnZ~;O*{kE%-zE0 zFe?39>Es$Q)4nGji8I`{Vh(J-7jrkUQ%k=F`+qH9g#s|a$K(-l9NZ|KpJ*@-#X}zo z9wPl>*vrLN!j2Wwzgo=vlkxM01e<-5bZTI{P^E~Q6v3L^B4$RYbjX_(B)(HRHF8w? z-O^duePXVFFJ?Y<4zCmc7Uc)eabwN?4l#zGJ=W{xM2&1akR8(Z!+s=Y0f!t;1AEy) zrH@FbMvh7cqQRaYICVfE{aQ-s-SD&Tu5|%Zp9X6-V+sIEfBe#~_3M}8Dhu4!Y4)WaW@D7LfIGl381U4@JFmk;&d}NSt%mv6qT;=dIhi5xH-{D1u{gDSE z?+qUnWH+lXvJ=-hTMhgUni-mpLI~OimV+{LgpG5vVoW}~5MoQw74o7g+mLrw>iAa z;r$L@a@YwRcbJ#Uwn8z7GaSxwINz{;^wUVsYOTjKCwjKS^BrE~@N$ROIK08(dc*#l z&mukfom4I-DTyNk&v3fKafkC9E^@fc;R=VxIXv0n#4IOJ<8ZCR%N$4Q+d-RyImh=mR>ak$Rm zwGMA`c$>q!9NzEnVar_q<2Jx;G5Ab{Vh(3Goa1o5!^IAlJ3PkWDu<_m6L#%qI}!68 zUgYp{hu1i~!Qpy`8yw#2@S!u@H`I705IX5_q~y$&NOw4Hc;o)hBj)|(;S&xgV+>~V zPjfht=>&2eE_ArW;gJqkIy}+g=?>3vc%j2f0#2CKuX7^SI=so@Z4U2pc)!Dk9X{@G z=%O=gA9Fb4B9w18OO6wf?{KlhpdKxXi)u*%L2x zc!|Sx4zG21lf&B_-sSLqhYvfPIPL^^Sz{{^b2!7{9EbBAE_S%w;V}+ZIXo@kpvlg5 zBIY~1$l>J4Lk>5Vb1<*Xe$t7E;3CB8=?=#Y`}>bYp6Am9Tn@q{9(hBic&yFTz=lJDlfmk;7#USAY{X@i-@9vct0+u5q~5 z;bji5c6hzRn;qV9h7+MZX9A%E4j*;+gu}_Wq_ve!b2!uCT!#xCE^&CI;h_D6DxHXl z4o`P@j>8KbUgB__!)qPhOW>@;KjD^3USgs8)l9iHWIjl;DLFLQXc!|NU1?C=h^U5eFPT>hKANlQGv} z*Er4LOowwFE_ArW;lxNMQ0eeQho?I{$KizzFLAie;k6ELa(G+7!ST1tiP-P(VTX@9 z9KzI$UHh2B84l+-obPb4!{wKue4Ei2C!)&XX%5eJc)r7n9A5758izMHTyL4{-(Ukg z7dU*#;YNo~Ivg2&W(D{M&g{y>9nN#O$l)^Z>HfdMi5TbbWQS)tT;p)9!^<3A?eKbs zH=p6FLp#m{LVFxO;P6q0PdJ>6xhT8FX%1%^_V=EQyw2OTT#i!`^G3eqn8O(k=Qy12 zaIwSX4v%rT%HhN`CotRL`3^5~c)7!C9Nyq?y~7O-?{)Z4z`+65=tP`!ID(lqyCwLi z4J^kU&U3iP;WCFS93JQJWd6Mso9QekqQ>D`hnG3L+TryMZ+3Wx!+RV)V43TG)CRyO z98Mm4rgCWxXF8ngaG}E`4v%!W(&35VgkAgTPQ)CC7dpJe;W~%cI=so@Z4U2pc>ftr zgbtqxgpNDRKMrXt7jrnn;T(ta9WHjb+~F|}R~Zi4Uuc>WG27w!4li9taE-&Y4li?f zwZrQj-t6!Whxa&qpppYD^?FC0h!YMcV~)%Eq&b}FaIV9J4wpDQ(&5U}>}MpUKGIB8 zh+!H7e};KSQfkMztCf+~F|}S2;Y*;n@z)cX*M*%N<_h@T3h+pq_kfP@x8g z_d0yY;YM;*;D3@_9dHDb0N(h3`RyM374Ed;)OJk^3knMR_Uh;7BM>eq@~a!dUA*P~ z%;eO*i4|8IY*D&DoSl3}L0v=N`&$p)jTe?<-uI{K@c>(^Lkr$OcBAX+GkagrDx9(t z?>o=wdw+O)=TMj4onniDDdoV_Ni)LRdxnO-f?M?Whlh>`Wwu7t(45frmqK~H`?l)W zrT1BxLm(~a6-s$AlsB_)tFww{GTeD+DCKXV?EPMBLaeNybWLgLld;yZ`30pC>^KJk)<}Y3VZsrRy@o1$iq_?d);8 zv&X%aHTP7!V?2A>iUpT)OBP>_O|boZY{0WRkM5NBZQoYET5x5k_-$^Of>1%-&xF3A z;#c~%3J<+JlyZ(L*xKKflA4vy%@Mt zFKNNCQ^BUa0x1$qks028B+$44{vQdp2MKbxzF2dt>e|>VnPp}#Xr-~!f|XXycE{$j zdi%YC@bb>RleR~(fx|1-&MnPb(d+zE`GxTd&p%Z#ZAIy{9xeZtoql20QzgCQ2>-1# zlGWu@+;A+sJt>s^Ol)WvPi3_VFIawR!563e3tJ?0^c!0x75fV!scj3(W3kSyTQ1lb z+Pbwe){GAU@7`Jt&hD||*oR)cQ*zg=+=se)*&Qmnw#;s^rgJN7b^onM>ZHWV#@uG* zE%OJ}c=c@YYuDz+3Rb11q=ag}gtc)mGOqS0;#M{W-W!cFFxD!2RI}P*n32tx@v88G z9--yu=5`-DH=bQr>perauH6^h8CqVPn>Y5k4iuj>V&2d@@cddRH)~R>feizX)-Gro zDqXpL#3iHaYO=eB3$~S1l+}23bZryA!PUYBz7?(rD^A2(*u; z#$k%1spDhEK1x}C3ROLLAmthVuHvLzziQ!GO&0I0PemKq?R}8+b8IuohfZ^PS0Ms>$QQ5yP>7`-$0+zkn4>< zZ`bmI?3InD<36@=vF!M%wB>`dSEZef`;UpsYdNK%90}iAUYNZq|8(R#Heu~Y*{e#r z^N!x@?b^#=MFq)sT=>waM-;ETpP$w6_Qs*~UxKJmb3rlIUqmz3<%f|0ZM<>%C z`r@WXT6QXx&&VWH4a_|GP;pP`bHGjf{L-dv`H}Y0L(_3)&95VrA|$-Ge}Vd zW3Z`W9;FPkg6F`t5VIFZ7xT!^6lcSB5c5dxBtHEqDdck&>eO92w;Vntb%`l}n{ucs z&O^LH%&jre;pqJifhj{D)8QhW|G!;Q2PAmRvE6yBJC;fKF`61VD*aaJ?9SLWt^Zu<)X3KVKIv;< z*?z76L(-{%uQ{FIX+>;O+4cDvB{~xdGZoGNM?PnbSKk~X^ z=7cjo@%S09jqxF=U9?&vK!o4zX5UJ!Fv8wO4jl``fE$WS!IX!hV-M(6W28fsrF4M{mjV-k|RX;p}x6 zbXgI}efH|?t}Rlcp`|OrZI*v`@Qt4aHajvh7WTH&>*w&1>~48i7msS@y~6Omo+&uo z(CIZ>+~L_y9MbnqwA!+0YxOw?t22&Ox9#^UKAL{B!coCSNu!$con%>;VlQWNXjm26OWOXQi3*-E(%<)<0&d55iYs-EY4!`W`K|f^u(Chu` z?kz^O7`-L#y~lzJ)?L7>syU(ZSkYbm3;V?u+>RITW1n>CooJf9ZqCr#P^s*7b=jAq zkAG_LsId1sQ$3a4bqlu#N&TG5vN2it#mq-ShGL1}2;;Mo1%D#~lV z>Gr{W51bl!*1kk+$%B{U-J$+hjK3(NL+!Fa@Rn zmeP*SN;~jDed*4hu6kp{wF8@UkHMuBHCV*R@^8KjkI3FPcvLLjv&O5X^x7M{cm8kR z;QG9{cem1i8Qz!Ot>?fdqhj9gDYfsB(ms^E>fSDkZ+)sq!=Jmx&~Bih^06+@hZodM zJf-bkntf@Lse`*W_ikshsk@6l9@TtjcwbNNwji4$D_+}L|9O4s8z)B$?j9Tdjdu(6 z@^3x}cgyM4^9ZWt-Do_!zm}bXqdI%tyrHJC;n4BFzBTo1|K-#sQNM>DjrrTAq!#;M zf14a-6YONJc@pp6_rona!>P}He%H^*A2iASS3yH<*CbRHm*S{w5-OWg5sHn^9@%7S zaqPL^>ZaSsyFNJ;OZs*4_`2vlGiNl#Hl9(I(!T8a#f{^)W)`fg`_IAH_=1aCW?$5P zN^xuzua@?)j+0y7_3o)D<6}uxBWv!tduE3yl9R%7T?4Hl+(f1uJv= zXAMkVkQ5s6m-|ygI4JHf_1c%6pMCw3FGp`lYbf0*1JvWp&GIp+MGkLLC_v|fc2UlerIT$PWxA%TaOesW=Mb};hD>Eh!>))rc z?d&VMH$T5@ZuLXnzqzJ!vmRPnno<-&veI?Gc>kg{wxG#@OX5&)rCdKQ?rov?Wq52j zT#&WAG;2lns4Z#UKLfF0EBqP<$2~Lq@MRdGU}to1ejsn&f-u_iWv25)a}H-cjt#dp z>#^Ngj~>igeJtyd2U|943~lT^HTCb_*`wPHY>`S>n`QpaZ4q>RVn^KDqyy&LX;&xbb9y8-ZOUGvv-BNznu-@U6Ytbb{{0DDJt$_E& zqc^3Ncz(@*q~yhGpNaa>sj1!lLw%B_@hHmoH{~Uz`*lmtN=al_x15{Ra%**VtW_-b z?=3Z3=Y^{~?yk-{SRFrB-Jzhmb!m0l=<4+G)oo@}XVllvYADX%Ib9PqiVC%p+yZY>ZN8rN$a%v<0jwDd{j@*W|Fu56H zTO|+u{1h?;7qu!cZPU9Vw|I12yvqyWltJF;tk&bR&aTOgr`;0w9_5}``W$+u^5X7Z z(3iHE`_s@uFBaJwo?G2&ZgtxQ`1TFYuSKI`t#&jkUA3s|%3-ZJ(OD1+W!Kg543(7d zDhGCt6>P~Z-I5bb%lsT(T2SJMe_}}x4-S%u5yU;xRt>Bihz?cBO&*)SP&$4et4L%DMt;`)*P~9#+J5k^DzMvQV5)G|go2|W0+}9rmvv(^Km1eab zoptuW7C1y_sL0&|Vv)O7?rc7^bqJ?QyCNyOLr#?^2fm--Ec!+$cV+v6ek;4>;UcGV zX?XjquH&_*5@zLM&Hpdj-aS5wB5fO9)>C@boNN)QpNP=`^EY13E zO;N~qYFx0eWQo;@oKrWm-KEJatSl$Yv`~k)pKuk#S?%eL!yQTPnx0z+6)2fha*${( zDu|1#aFxbEU6g?X;xWZt5LXq+w!Cy#g|cVIB6r`f$xUcoItwRE`u7R@EGl=?KX=0q zr@!B@53d3KviRKlww^Ux<##_r7`a)RWn}RiA&a7!=i6$hSnDg{_q1nYeV}L4c-?$- z?YKwY1NG-lnU9?SteOFBnp)glXR8Wg&YvFdiEekwcc_M9t5+Xf38MR!pA9z$theYn z#k~a`eqb-l;0+Qe|AVwq7J0F)rwd}O19YC=x@=!>7tG8xKa`ANk+BqC7D<$FZp*Cp ztEMdtWlqY)cyvoo?+mnp|r!D zJFZ0U5$8c9je(?*?J>$usy^#k(Z%VOAd*|u^J(|Uf3l~`O<2EnNpTPzR(UABDwHuT zl+}>y3bzzm4>|gBa$8o7&Py1XM&+r+3DySkE0W+s;EX-40oI=!$rSWd36hxm94a-p z1tIRCqac~H?CA3^Kz;&l`{)>$I@a(sf$3KBf5E{b#sx0ID8E&6y*q}QQHo;z~E=}6D2 zNT(0t8X}=Uz`0nxjAu?)S=N8CCH~}od2P(T5H|-2hYCMUi|xDpY*D1JJk+~Kdizgv z;(BLXkc2X(?Sck1Q?|kBp0=msp0hE z#8+;!HZg*iH^vt=zdEGo<)--kw_%vKr?tJ@BwS!!oo}tD%mMe2a6z(lA2HHz-Ak~d zuXT0Rxwxt#9jiixh%4Z6Vw>c|7RA_oapEPnS-)kNw;S+$2a#1bB?YE2Y=!T?Fo?W1 zKF?Y~{~K;O+p7Yt^e;D0pB9H<;It9`jw7yYI#skMwJ6e+3;p2+evy)F_@5=q_oS9b zy8bmBjs$aWv*xKj_@q0dJP9S#5b7KbbtzKGoMbJ;SY~kF#feU#@ZQBzeftOQw>P?Q zQMi`T>`Ot>b}bKeEKSP0?W!EyzePyHyM}f{C|DHgc=HDZiPjXl;W+6Ylh~`UEms-+or}xE?W?`?j;k?Q>}3>K-}19{uC@agGJ9s!)DIsNncZMXO#eh%Zjd z4HvywG~~Jkq1DGGJI>dUGq ziY|n^@qj1K8k{<*FHQg!URBG4vKgx6&aw+|T6|opD;#QXogovBWVe>@3%Fo#8a0Ia zIH%Mleal1HP6Izz2NPxo7AHBqdpMHC#uKnkQpd>2F2tXOUb-sM-ui-6r*i9a+9Tg|A z9_qk~=w!V^IvmQj-gZDo>u&^sa9*?oQNBsX2kzGJ$YLi(>vb|!p-!0Az_@8rV&0f{ z0}D$b`YJu9xLc>8j3VK<0+m1(?n_RHFd|3czT19M;EULW1CZOIjdu>d7}rjiFouB_ zmxua(n(iKnuDUtPdOFHrh`M}VHYJeV<<<^IRo{2}gg5*ta93Wzq$yvF!6~(sd|u~L z<~WHR&6p(X&*WC6jr6&SJB_Zu=`bzSr69QhC#$*&9B{Ky#klfHtp_L>p6xnPeyUH< zYF4h6vZ!@G5pIQCMJ++x8?UDm9eyCN4;(HGeb}R^3&DY8cj$t(&D#nBheCOKLcNZM za!-eP@|I#%`Cxazop=f(bKGAbLGE0*daW3};@d-a{0H#pFo1xiw%WesH zugy+}5*mHgPz??4;-=Yu&$OFw^rqO0PWltPJCqdGF=(>BY-b0i#02c+H+d)6&BJ2@ ziGAV8D;GX%amCr8ezBRgT>-;5euaZo!s*sJ97A!C|1%B-Akef1fScSL95f71Jl;+{;m_pi8Ysrd_iFmj~eiS=U6dnRvWc;_8NjffwUo0TKTN$CrX1U?M$s??u`ZV_z)S)8$8jvhLHR;xO%*)Mh>cihc@(hQF1^Xy z$4(g%8`wE{f%hJ(I|37)$_Gc8R}2|qF8ZP(cmoa{@ge2m1bEK~K#XZ|B_BY&vp=EIEMOfr z8#qb$p1?Fr5HW`0O1=bGKis~Gi|)8ZXfiN^W!{9dS8qQhZQLL!KD6J$*q;`zT*OpkIiZ zVJJY{4|W*G1YkZSBj)o;rjs&!(5D+EpI2(0`={uH{Q;P|DgQ^{6xh_mh8}eAK(!?a zuo5}|k6d5|`Zq8Q0~700nY)Dau>W{7PPEzZqP{if8^6N3584QxTBzbd;1ZGN;-EC- ziP>}*IJoM`l*LtZp-jWhxfGxa=X0_%j%0@f$gO@=%%;#MWF$dF$Q z%o=6MtOC}}aT8`9FYguK;qF)b>GrP0-a5PdR&TcLk9vK+c{3a4&Yv;$SG5amE9y;8 zs+}{vVPSpa)ai5QG}g|sD{uAYD8Y>B4YiTR+NslP8ycrhi(Hp8YhFVnr=JR>{bom| z=OEm?#`=c2^*MMD1BLbdFY$KN$)ejvvU)@t=FW&T zMtWa4d}`%o!^ih6nmS&UTJ4O>Y8RGAuA4gUk`b=n|4r!s=*iOf--Bx32@C6M`%dlh zKkFYcY{D=`-PCvXWP5j!m22GbCTaCR=zMoB-rAw3^*hIUlvY=J+fXaPE==(!*rPWk2Hj6t zcFGxd4{JAl+gY!ww|kC`^Lqx$S&L?fZy#~N&qs?M0?dI7{n+Kc4~`8T?bI=rz3tcW z8KrN7G{dK0XxS*?IjYs+e{2&z7p;Dmy=GHPyVC!(QL(%XT`bOKCLzO65kwG(o=XB( z9;{$4O1b2xnTY%m&SGfPz_Usxg2PBtLm^Jfzt~^ji$w4mV5-;;75%|cMF&I0b!}8| zxwC1GifL_BoEeEx0ivS{_VhXxO>I0lhfnTcPL zVDG*;Hly_6Hqp9pZ9OC5gGTs$ZNhU2x^ecf`(oM+ZfT?93{-gF%_M{k6(6-xQD#rQ zB|fwCy*9yJRnF>(44z{I|DjFrMHnmIY_CBIO1b1HGpfx3sNklJRM7*6E`;`I7iJ-R zhpG8Zj*1j`nJV^9!Hx!^BG*vSw~dPR9kA}7YDQe5)YPzYmecl`2;KqdM2u~tVGA_G zDGhu*%ha&W(7=J6)^M$8K(3W}0vi14CA#+dnyKdhJc1L*O zcg{2;->cyof`d0b^kXl=O~4qTHqB6RiXLLLUv3+Hh1WZB)Hld(c|4|L>}u5MKzl=~ zuif3t+$o8<7_isibiNQ0dG>7w-5q1Ou+t)_F=!uMgO?9e)Jus(=iW!mUmIH(GstDx9d8eGwF_Ut zJ$dCT-UPdTa$-U%PW5w!gNe)R)Rpe8cKXwv6zdjy`zzkA!+v*8z!`7+sg3*3ZQM_^ zaX)WcuX?+NUT;GmZ{z;bzHlYdx8s?ZlxU_dPslJ;-QdP)t%gl$=v+AZ)`tGYaI@3C z8b_Kd=;A%)O5m5#gwoIxT+v28(#Fk~#_ck!I*uJN^v7cZ!Bq_qic5U?Adc~taX9skZ!md(KS+J%);v0 zhIt6&njNXDo2!D2uf1VD27k5muc)1KUE@qDm|pK*=(4|VL6blA8}G10BteEib82t0 z@4gdLMPJ|P&F*Cm@R&{!s*g0xt98w5Y^bY6Tu?W=-tN50J2>c!{3v^5ls9 z!m|Nb1^9zmkApJgi2cH+18Y4GiwwCa9a<3!f`LcC9!-qqL-$OqM(s=|c&rQOJ|qh{G?unyj!2DS}1TaWHU#V88J13jYag9+Y8@KNrkgvP!JJ_=EWd z2W7|+`-NB4R0IOXgYc9|VLPP5FCO%?Fj%1Z6%M`wS`Yhq!MvyctAW>35oBn3z>oND z*y_DzV9MVkJTc$wrVR0Q2ot4a4!}Gd#0z2bbvoia2+>X40$UX+`#c!ch`^ImZAkcS za8v#%*iQ;(WG@Lm2%9Br^~WFk-Xr*D0FuOh$HOU7QL5g7hYX99*e`s0$$bcRM+0*i zbn0Zp1%me@tf~TD=wUcnna&-eNz%cU|7q0K1%cH&?{HfZ*>$2Q9UQSv#9ZMS8AtIJ zF7Y(C2v3gKFMKDstwEGPcM}yMl4~g>9@~Z2b3|6Ll6ST-K;nXMzDRlDbKur}0Jkw< z?#U7BJ|LGel8DbmCQ6bHow|GqNn_;A5EYRl){V4~GLld~a!na>#5x14MXiUESd<}0 zto7upPYmF}xo@=x0x;*zhf08pVV4VL{V}sT;t9f&Bi0d@P)16H-%l`Na>Tl{$|$2U zfcjq~LL`Z`q7f95lDJD`$Pw!tU|i_p^ejs#Q}8g@G`c!^08@sBSXT$bq*ud(cTemi zC^Q&0Wp!Y-J@Vv;b>IX;hGR*}kRyhS{n5XyjA$wxFsiGK#ah{@!g+9~1JiIMM@-$# ztZI=ND?G1XlLb$MJykFt9;o=G38;PwVaXBe0*u}v0T#m!;Lug~fbisqb$}M({{mZ` zsuIBw;mHwed7g>7s!xjyIbu{b`&Kz6MNyLEG7CJhR@4b@UDaWcAxEsMI!GBgd&)$H z9I-xmawsEBW`f#%1jRyff}tpvLXx1FqKF)^P7vFMR&=Y#kR#R!QfHwgNPR(pxX2N! z1Tp{SX~@SLtYdP-TG4E{)8p6|%aszC-;O*Y{1dP*Vp#AMutyk}`5;gE5(8HNN3}d$iYVtxyK z_ZS0D7tH&qMF#&T!F=xcq~Phm#|)Vhf;mr?hJ*SkpX1=DD<7pXRy-btT_>0`WRD1D zfUSZ{Am25{Q4|0!5llVf4gLqgl+VJ!h$*A?O9Lj~(}NR=9(42(A!4;P40t#2Ru&g< zCt&uu8Uwnl;rz!S0|$8;V!!aO0F!?mcB^3O$In?Yo+tEs;z5$wKLUR+M{zJP1AHR* zpRhj{oC9996^ZOW!jmJ`i8v!X^{BQY=Yk(q6J-P>>Cj`lc2Z}o0@ZNJAOO=rcyh%4 zGO|b{4(nnCosTb}liUTA5uURXjH?*-rGhKj`|v7bjdTJ}6c2L5e&K6`zZUkd1aE-7 zQ1BAioeVuIg(pX>^{f`2VS|)s{nOkn9zntS6wZNL?}7EO$dDt}rKJX;$k|iiaw#vv zs^>+X9I+l&}@r&MPQO|Q%F2Ml)xXuE;It15uO~emiNfn(H?ex%A>Ane8Q6> z))~tdKFYfnCRhhhqfpipI5i5DMpHr=smnnUm>jXLV>KW}*eY;kl$S){jT}|?>YK)Q%^@zw}m4|}ws^jhJ`5o@Kk@PCATpWss{DfS`yY*HWRBB3w1QUALP zj|xU0Rq(3tg^vmzNgG&@WlR6O2ifIBpzYdoJ^-s8SEPP z>x%|Pp$SKM{01#JwZ@H+=hL5d*Lp!+a(lue$!x;lGUDc)%kbd@t-G!5s8oESUFAd~(3RtOE5p zJTS+I>M|`n3d?1|pGM97fG0=n2cHEzpVxmXS`IP+gvGuV=2nS-9I;<`%2B=ywz?bx zKL-4$@QtW%DQV zk+9^5{bK-N)Fm5Xc}Cpq$V6RB02WICraB*jx}JU`JUL=rO>2ecobB%gvxFWH%=?Ci z1XCyb6Rq<};mP4Mn)6DZ6A$(Q{TV>2=5^u85$mdXM|kFjg`?$pooC6BBi8cY8uBHS zzZic!|B_Wtgzi?buFFi}83A85qtc$Ra|AyIyO-cX*ad=b#Cg_F@L<^L@{O?UxGol+ zPrb_+zb=-E;z5#F7j=#Be8@drFiYrHf_c>(fiSv3sU1HN898Fzp44R;{8DhEDettW zsOvYPh$OLYP(0-=PO`z+B14YYFZ?q)EbL17>CEr}I!lWjvChnE!m~stP=0{w|6Hy& z#e*cVPW8LO^DLOi08Xl%%QPY&r!LdNPo~T`{K5PnVaXBuh39j6CXSPlHH=?hI(_0% z1CCf<71iY!0l1_049d&Eq>IRtBi4!TDSU6(Gbt~L8z?+EVwSYZe;tKna$uwgkt5cL zm?%77p{+OMuN9sgv6f#d{7Trr7R+&BBg2lwA54=6@v|sM!f~#i{vZKZPYd9uPp!?u zlOxur);2?a5#@Pm!Mq?mIbwZgy?jm{`F~v;Jy6F-1%C?r?}C}?B~YMKeM)$8#JX{P zC;ZQ_e-z9!#fyWPOokm0Or6WAQ*Zy)Q9MWzYo*$L`RDUNn(E)Y3H%3R$3`CtHBd%rB@5jx1ra;Pq!hpt1EI$j##&e zdnkiOM{~0iHmY{{q(h(gzi~X&tJHieltssJ+@pfG!G28er|44YrVJnYuZLot2yVr` zo8@&8o*c3N5&)Qd;Y&FF+YCadx{r8}Bi5-d5q>o6Erxu#@Z^ZK{5Hx+WaC7J9I;MB z0^Ct68UHXI99D{g&K~FiX9zWfBNkv9jsuCuL&+oqbLkXyILOP=;9D69V%^+?B#JLH8K=Rl%H^IW72Yq(aU8 zAuRD-IMM^Ce>(104hMfIm`cwGrXuzaI+twm8vjXfHRN9w%)!X#hD-+hw0sW(4_D)V zq==E#iU)JnDEKzm3k9=CA$o2bJ-!e`rR0eHmjl3b7QP$opkRh&?OH>Xhb?N-NBsvuSe#FX z*#!^gJ}B5Pd=A_?2VaQ{IbxlGe+%zIhJF(K58wbZ2%Y>GA(wjOsa7)iC_G5gp&x7Y zk^r23%Qpg00Tq!W*7E8ZFZj{m3Mntw0`*)MJUR7TSNJ;7!?P*cp8-J7s9`k%kR#SP zyH5h}**&{&-C3#EBp^?YSa&`plpzW8l!PTmth@O#xSC~CcY*z zB14W?Kf7ap!jj|6S_S;H&Tl#Xrw2)n&$ZG@3W?G<=|IR4Yo!w? zBSqRyWXKWg#;9i3pr6C{iIj&;qb4Q5Ph|e-@Z(^rFNe(p@xzhHaO>8~=`-@=h@IAp z0VHLlkxmsEa>Tmv&Y+A8@2(RWa>P+x)H4mC8%2m5v6kUv6%)a)R5*?&UIqKtf}3Hl zHSq5Z{D@!<*`E@O84tNm@Z^YfyIDjTX*Xj< zh8(eOH%ll3eKbp>BD91K3c-Wz;7;NB(av(XbwgVxJUL=rLVpzgLD(xPFA=;dJUL>m z|4ree#{gC_fHaW9;z5pB*Zpck<{u(Mj#$gAql{GLX^|mEtP}c!@T|gnc>TA^AORB( zf<+BdVLcFC54Tp@L1f4gYo$5D=fQ5Kd@=rD`Uu}FSa&{~;C5ti{*4qNlEhkQGlis7 z#)%9$Vx8kHhRj5fAxErbwoyh(WroO*Blhe0|2pw#fW3nO%J2tsqwwU2b*VfJw^sT) zks(K{OT`wRqv&0fFT)?qX5q<2>Cj4F5D$KI^*6!q!#*sS-#G0?ARY0C!jmJ`5q~QD zm$3Izz6^gbr-dg+jCh^?e?JJV)Q3pe4#*K}rF?6EJcrn=lpl{j7&XKOPfiW7h0hWB zJlF@}rzazeg(p`WhxqkuWSMyIi?FvCKgW))k^5lqh zSA7KTb6vH_9GL}@bG^E+K1!it{K3o-p`(Iz!~7U-t!TN(kR#T5;B=)YI_O+D^O0iUP6p03aDM}r z8JOR+X+0Ai?3~9l43ByPFEa2-1Fti1vw^o5_-O<4OE?|zK?5K0^E{R+_}uXL#=x8} z&@ur7XBjxhz=Z}bG4N;uPte$YFw>nM!G(urHCe&y4ZPXFI}E&=ILQgyYT&~L{#apq z&K7eMnDZ+$*Uzn6*tcKdx#gMLtc)zHJlEeeV_IZh?F_wwvMJ^9X6>wc!aF$smkTd% z{?Plcj^`;z#S|C!w~r0+=ce%uVqEt6tCZ(rwTXWAw?B9bt@NF_KYE|FqV3i;A3fEr zX-{b2q0oTiq5h{s{nT2P&aJtVUk9hPYx%2p*NZRa}#hwH1K)V8KOj61GLy=T> zq@DH6+1*@mXH`)kZDgXWq_Nb((mJO|7Fb2igRCzJ!>vP06B%fB;^IW>A7{IRt3Grl z&~9)buT!|1DMQ0nneN?J>$TJ)x@+`jyzC!330_KmLHkfIhgD=Uf=pY#;F zhkbE&Po&%(8Ga}->~v%(QWeHZge&H`0-cYZToxz_B!`C`EQ<6iNIqIPqOhQ;)P1!3 zuwLE5ks(E`SSz%?ym?SjWU#Eij8RpAWxefW#R{xZ8B$792x;*9dxaC6tso+tq>YJRvw zzw+jwrS>!_3KbuJ?P$@9L1YJ!gX8Th;ZbW(?(?`%b}I0g zB*d@Qb`2zTJR1%T>ABUtV*lAd*FaJf`9Vn^{Hn=WJF~irmnpeuWEi25);}@TC*3Db z7d0O&u!i)-ij-<;wUh26dx}DX3oPW-c4S(gP?@*ZIZgy_B06(dI5ZgP%=b7;64TW> z6v5OgYsKMEKWAOyaHJphH-c|r-zDYE9&057=LR~4!*y6+35g6^%Si>$h>mt^vcDc4 zlVzneMIO#fsD8;64!f=I?4z@=DnaF0Z+5#U0x^Tr28WBv0|ha%7LvW>tarbfAgpjX zlekzvNi7=Q3k%yFi2o@r5Ff}Wym6Vc*c}$atFLeTZOk9BvT*fI|Lz-?RbS~p86W(# zDdQSf<#kQfH~PY%{2s^Mae1h@^5z8v*3w9DZ6sv0&$Du?hFNnFBu(N zJt>Iwyrb}1?5=Kz54Q|0jlXjkT6MhjE(25-#i2=K^}Fz}8;^`Fuy&UO%bS3HI79GNcF1jYv;)D|EW6_7m@K<6&R4>}EY-VHJ0BxpW0r5@GVN_%D`1bk1WQma zkMpgzxAlq*WS7Ak3f24--&tl1PvOXDdhW~2JSLsYhd5}ckhlj9hT@y$Gzs?hPw_S6 zcUiH4A-V{YwIBS6HJ@(q#98pCu6zsi=unr9E&l-Sd~&{^4`Y3vON z_GYZgYiA|;((SSVmZv*AC~XdQajqD==&%LS50^&QL-rMkzMgq}!_^dbb#>k^pg2og zi@#<+2=O7Wv=J|XIA6G=c)B6Z_gC<9;pRt~Vz*s$Lu`g!IMDJ8Hsjk8a^^9pfUQW! zmjb1xg57XmrB;p@!r5k1MNJqt^>SHdNV-h+T z;VasN=M&BL>VyALZ8S7O1Iv^eIvE;j+h~{x4e8V{q^6CAC58r6*ttC1(niCg*t;8I zGltyQCip4@uag7>jo^Bvv^a1y`(y1TC;~e;$ns>HW$+yoN(inejlgf2au^+Njf%wj;_*_)LQl#&-lUFFIhbT!+xH~G7Uw!=v^j#$|B5-`OoaPY(bgLcbGce|^33h~`Ue*6C! zFwGJisdxhR6&*0Fq*N?v@SSpL|6b>+B&hr^P(3|G9Ql0v$@aeKZTsh@Zs9)munga# z4pw){Ivu6HF0j+YHe2sy_?B5c>}xVH2gSwm|66;w|f(xuYsLHUJW08D-Y^24lJ zxsLpD;mHyEg2|e4^kdwPSXhqrp};X{i%Lf zc)k~Er)T?8^*8#x#Ulp+i2WA;z%U+5@KBKI^wtR)0Ze&v#5zFixPPRIg%Ul4M7jTd#N30q-^Z&AVFaXal zOB&`u;mHx}hN+seG_?0bh8(eOXh(%-Nw_5Ue5*Ouz)@h*#!JOlSI zaK2!Un|ZeA(o%1`K%N}2F0C3P>ousY1C2Ijp9L)SO>;y4k{6Mz{b6z!doB{ z#GxD4-NKV2){TpAKrjQW?;OfYmHkV|gEPojFngarGSkLOx=l$~%fE=;znDz-z z`FunEb>YboYx#E!`9jJ|6@M5N50W1;fOzz$kks+#B14W?*YTIa^Ua51%EPAlPIz*} z93s+`;LtL0;8;RYl5}XHG73qTuHLnP5IOa#h43RNBT92b5jkS5XEbHH;}2$#$dDt} z)r4y3slIDvTTq`##5u*!hQudVEOr{pW1nh?&*WoYo(wd6VsH*8ICoOaFu%YU3cIUd z<`3~WUuM9ju~^zLR8M&tV!bK{qH*aJH;RBMLoP~(UUCD_WwDop@#Ek$FAcF?17sL5 zUz8gKo1+8b5wO|TiHE?Z(J#uWL{k9_G0#v&%xEAVRn@Fg$F=~YQilNKRN{nx1#Uh~ z7)|ZgY!c%^S;8xhs zeeS8;^TLxO<~t1)u=feiuxx8li^+jGgoCLgNzAY4hz|>|E&;&$vEOIHr^6=J5wM-> zy8n;JkR#T052$7A*Mq(;_9b%@v+R!T<8pA9yX}#L3wMqQ`DR*n?H>1N`>+MTk zbQfa%%$r|yKWP^n!-#e8UU!Z?wNqS)<+s;&iW`;9jKTzwY(1yV&*Px*hrRBG4h^&F zYiFOE<~29hQyb;&oZQ_PQ*(Y+SM8lw)OTQiXYafjY^|t9rzz&5c~sl~^=sc0yTgn) z-((La*3x(9Ec4#*#js$o@kDuH&axw?*MCqD7;HHcwWAYHx{Iyw*2SOo?>G{AzDQi* z!B!OG>J@)F$_0- zEh(kenD{C2m^C}XS+Eb>XHMtd7VH};dT~9sUs9Xmec(Q^u^<^6rdihC9HAo{3#^pB zLFQtGUV)XD00fx4$&tEEau8~Rj1yJGSFAw@q)YADb!1wB z6=-KY#i&~M6a)gxu!_9exeHtMA!+bsKT(NDvOeB<;&xxNg`Gtb?CW2OOXntl z*#0l?jh|w$WmHUk(Xu^}4u>My*bNXH177m=q!vs^e-L*dzB;Dc=r_uWmQ^ncpTd8) z@aV70x;0gA3}ws@<;G@&L)XT+ zr@K`be-JzJx2&OH)Y-$Ux~gOG8*pM;bRUI|Z(UPeo_+VptWOKv`$oGS8slD3qbgKw z^>=*h+UjYUh(Yb(6+9ixIHWwEWl*)f{L+(U$ zlqO^M7f4LodKV;ubC*F!;k7A@uzrgB=%+zv50ld5hEN*Bs@WZJsCs+tYCVo zUyIv^E|tYu)S5CTFvV@%M*jHL)zxX(O3+fLOK}UDV>ghC-zh4AsC6@CqQzeaVhh8& zIpRXy49D|_A?5G%|M%z?h`j4@HmV9Fm2drB@Z+X93LW2iD?`s_=ns-spoiYNHhiEi zV{P2qv*QBpa9y|E*p%>EdUL;>LtDqMXy+<^15b>St!ZTQj#Z&{Pk)GWDkU^9XkA0H z)LpeTrU$m6x$*26%V{lY$12W@TUSy7?WXux$8d1`vbfo2?bbVe{hnIo^IGnaQQQAp z-}U~uT32aO+!V~>@3WWu*7vrx&%W|5UxhW(-gK9*{E~eM*aK+MNDONNF{jbn#Ue`V zJcM4aH2L(_p(<;qw+<=~rF@%{bE;3@Q{mljKVfCWcqV?``j^~eNW9v`WMu5lKELz* zJI58Uxh)x| z<8t4~*cg|4ETbweqjy~OTu)r43#K4YIUrawGH89yOjbYPLCLoUv2C4m%AVO+{Kn{G z;nqUyIQ>sN5pKn9K1j_+aCUUXAwS{Plt~sg3sgPnMC?bHvGIpEtEulpVQVyYRc#l2 z&i$A=xzk#jw-w>JNPFybiVaY)oyGz8s z98=lQRDE4uIFvQ)&9g;^en#wrcDUmnbM4yzjYXjj@qc%(cm!u*Sy4-2c}oy|&uq)- z-tesG5GD9XNA+)u-Pl{DY;UN#XA<_yX^3=ou021wv13s66FDnZ3IbE__um97@la z_QQ(BC^%8R8Gcb}uk!pKv=>7A{f?F+d!XFOp`%?rMqG^DR;aw;2VSq4o8MEsAld2U zm?t|me4w!CKpFO{DT-w8IgoPtK+viADE7AvVDB_%8$P7vbW-?0effc!aHLatq+_Y) z_<_oDY`KHM!clDPwN$dR77eCMU6zB^t-@9Lu~}E3T{&8d>fE3#>_a0`&D7b=l=>4; z6X+G^IiaG}r{i($WcO4rdXC3Q789*Hp`M84{zpMv*=Gr})`QKFNTyh|4s~W4(uoul zVSAT|L!BrpQsw1za*N$Z;LhfbVplu%qD4d~)NKkGly5J~^X@wi`| zg}rad*^K1RM*jXRrn5sm*G8M0_k?;J3Uxmo$~hhC#&-bz;`vvDTL;`)_%#%M1V6@chtM!|mcfY@Rmk+edHP({kpy z4>x{$q+iyu-}K)4?|(gUXxybY4&Czf(w~0LOn!6ww@bd?^4hS4(cIWQBNtqgzV`R^ z-KM_&yIWqp=z$BzEUJ0%(|&(H#yxYcX{w)@V7FcslVFXuzs|r@&x3pX33q4WNowo8 zz7%VQ{lUGy>%6?_pb6Tg_xUb!o-^L_DxNdGP>9`5h9>ya^Dcom`?@fWaX8#Kcq4T= z4&IK^%{#rsrrW-4XCLhm>rs2%#15yQ{l=)+cF}4;20xBtwcrL^jv17EBXEXbehp8a zQLF;iQFD<(8uG-vqoy3Eb7;sD^H!QVx1Z;2|M1wX z#Jq`M*i|@EfB##no4xx}cb1*L-nZQTXLfubdM!K{@Kqc-qK|+X7nK~vaU~AQ@KYb! z>;~3_w-1{TP6yP=+In!^WXgbq_Fy4&=Au&=K%~2g8!zfg@S)i*_j8>e#muPKws! zP@_fIti_9QFbHS!b=1!R54juLBiXCx$Kc%yIGG~eOY1tzU~*u{6Z15n`d)VZp!km2 zmx^-N0bM}0c@cgiphT4c_ z*B;()Gw!PlZ(`OR`5J>K)(!u9gD2MV^#)H&o=M?nC)CI27XZr%7vs7s#(8|d=s{nH zcr4Fc9jTjd7ly3%Npq(~rq$I}Hq4q`iv^ACJ0A4yZ>KiOC^k06=v!z{e#mz;-q}K9 zuwC-7Z)u=vUIYs_&u!pZ&vxICmF_om+1nrXRpv`fwb*K+wl31Uv35aYZ!DQSd}i(R zUsX03;*9$A!@k3DPSp0n?pC(_(`H|a{q<(wp>y#b$+5DUKIj&2S3lxwXMdGr#lq#c z2R-6TwKE>|4K6U#^nZ=iE_>A1F-QVOwK;%bLFYb*_DcyHm_^ zcAywLCAQLf!oer*ipjNCCgLril)GZmtsfmW_>$LSubc0#u&!}lR>12Ax%O)QO;{b1 zYkjO(yz+h9K3l0gC@{W_+%__i^p{jN^IOzG09huRQ$QPF>*c z>Hg8JHnXsI53=4Ie`T%IjflF~P5TS&7=D z-~!K&Zm6OU4*Icyqym@)mg42Jc&Zq}vNKi8#D%|ERP;4ejA)}`M?k%AGGu6*@Cg`K z=v?$O!q>D3|9QYZwJ1Jg$klDak3jewgku&47~%O@n3;uOq6%NSxJ~$(M)*NSczzOQ zhM$;-Cp~uGrxMfo#twex%ql~}U_--8Z8R)TY$}|a(Rp{9;MLBzcG_|2EjV0-Aqc8;bo@rJE-87)hwlYnVXn3QIhIEWK zdO2_Yw6;-kq81U$sgLgMTq5{!mzjt%3}x}KG2G}RHNcYqN#?-p zLgxjaiV^s9`P@DyW9|Gku_<;1|LXX+iho=9*UG;W{0pqbA2u|B9RKS0w~BvT_}9w6 zyOz6G|L-pbo!b=!o2p>9l(pC>rHm*@RQaVlh}Vn??{30&DrcHv3#|#~ULnd46`wB! z_1tJ=8}~T-l3T2<))c$zA3R+{v)lMCZR5Vver0lE*I|EXLqFEWy{C=)l{W5!cIvC% zc8MG(-+?0y&t|`{kKq-hF|1M2X}G5S47&sewWZ<8#V3c_qyX?G1InYa;a{LuGo1na zGMZ!>E;2*x4cNjZ%7t>ZVX!OPxUXsBu5II<)5g81jhnZXOh#`UX;|I-kK*PfCe4Kf zjCTBj7^Ft`43Mh?2CLP0>1JNju=M#^k?*hErE2*wKxLSLKFA;Cd*VoQ4RZ|_H!rJc zuHmk$e&HXz*fk3T1G3uE&>1a(n}xhpxi4|8hC2w%r>ALn`1%msi|7|a_ZZg>xV51k z-WO^^x4s`FM>k(h)P@W9x!$p7@A7rE$L)^E?LWJI>MZPPGIjR+y2e>9xQc2Q)MG!E z`l<8gPoou?Hjfr|Ls3>;ZKT2e(=rUw-+$hhom8)GA7;&)s(}6TWAPdGhF!kg*xK3i zY8#ur4tKVHL|je5ZprpV&-wiE)INLe47=_*U#E7F88fENP--#y##Vi^8t3iY@|-Wh z3jbm_|3BV1*xR1>b+*5G9?wP7U+@ix^4%sFj;Pqr(-8ZGXYG+^t+EU(0+@j~$de=X z3tvVa1&48xizg}ZWY`r34hiPfK)nn{Av)NUGzN6(#ktug$?-E{Zc|wQ&dU&sRFaS?3s~mqYf5kyXjj+l4JKud2+czWy83FR)r*l>$JUL>WvtmQOkn(bk8ZJCJV!hyCn4Ho>0JBcQt^&Rq2VYd22K#NnU%~!RaFlOt#4rGa z)afHQ2)l!UA@8y{2L;2Tq&y9=UwD=P`7DIviA2n5W?Ln`1~v9y@If!85_)s$e2QlSSz*{9vyBB4u_tM~MM@bBRdE#{uoCDh{I0JT);1FyY{gw{H zFf0u*-_l8ky#fc{E?Wh=yWl%u)97UgqpFjJ5RK}j$2k}}&Yhg9j3GmgSf8A#j3ok9 z#;iS<>v1q*a>QD`L3k!emG=l$ub9sh50b>X*{X6H0RrY$98^kUVCo@9tYvb5wainDpF$*`GK6vsq33}qLylN0$~R>8i3~Yn zEmLU7ye2Z_h?NZU-yerg(L2D5j2y96RBXt6Br@cPwM;5`oPC+F)k%my7B!6?;P`>{ zdzHjdJ;FIc51;cKqCXlI@j5pK%{Yk5VP7Y>0ro1vl(}EWgrQt;%6b+I27`J=E=bLS%XyYS?Qwf--J-w6F&u1^mT)LWg5 zH~{Wn3~(|2V9wwm&!Rpnm`|eIQcdip)yw0M;Ug{8Z3FYYabENomhwC`b?()hq~O)p zuyp9usVgBo7#SOn4$xH;kt5dfxx(`q8&6qXTD^rQN32UroyP2iVJ=n6Wg{|@aJc;9 z5ro?k{3}sJj#$g6^LQ9Y7&S_U9&*HbjLB2hx{?w&y+sc>V!z^1{^~rQsAOF4i4Zwr zzwqij=Aa%%ZI6b?$f@nogzpcx&V4(U9%RT7>)aO`GF%NWoy)|Kq(cj-_qM^a3Q8D2 zN@5@bfG0<+OJb<-lrN+Fc>KYP5WY;XU-$`zd~^gnb?3kvVMaiXSoaN$!t=T4Xv$xN zKbTvECr7OBek$PBC1HyUIbxkjF1?4iqUyotpGAlrMI{5H=xLr3o*Xe-a{}-L9C}II zR*@k`tk0Tvgnt!0Yf%qkj|xxjs2laKN3s7DkFQ~WX#}3kz*pf9hM)Pdgvb&5g|C5I z58K_+(~%?A!}j08%{R-Jf?KaKSD-sAj$^R9BZm~?6W=1iLtxJmyb$&p!FiCmTW}Ka z9|SY3YFyC6$J(__H1G=8?7E2=mOXBi4$eQQVgzPiu5utk2@uo)QVq-pQkoAL_!7a> zU{@NrLGWtWeE!L>z)_c4gAWcqbXDu_0WRb&y9gg;|IM3G3N^#d7d!y=Ai=!NV)slL-X~TI=KbAd!EBh<3MQxS{UA^N zM&ZfPO+CMcy-aVHa4#Gy#e?`x1OHj@GqBljGjJ?&nSvbY+q7N6lOxu*X?ukaK>jts zZ^3@!9FOu(r=rX72lKXgkR#T0`Jv{aC<}i2UgUG($r0-%(K}Hl7Jo24IpxR^^9uvk zJvSvwk0LkRzL^Je7KR;!rw%+;cyh!#@KoVv!p@<53I1SszEcl5Vm(`ShwwMT&V`?r zkMjK%1|UhS1FRQ*FYJ5<7=u5UZNify);F4ZvjKK2uZYY&unQq)O=d`3QH3W*?4Qi> zH_Z3q!PQ0caWFv>U=J{GvEW6pO9k^?nEnW_Pp#p?lOxt=78ehtPIf-Ult)$3Tpz>w zhX+Z%#i1`S-Qng}Bp1Mjx56wT8jA!>R~(d~A@+lpS~w@u3p`h?qaprpGR(gcN}|aB zA_QJVmaIhn*U0+8JDsNh4Do-93>-6*&Km_7;;0sS8;EgTF;Em9`2#4EvCQPYU+nocou7e^eOdPmg7i%TpllF!1jT{Cfifo*QQUNqBO^ zdYJW?@Vstp6Ko-_rv>v~^1oRB%-MH{xJ58;K=uk|fL8?{gndBp9gwG+Vc&)Qrr_hS z=_b!=JR-OS@=$f|x^O~xez&J48uW$X-{QejVBQmS63pue zFI>8pRQCc%5IJ=(Fb)8wMD_phU;v&;)^x?It@4-ya-59x3$I2&;MpeBydm%+__GmG zz7aN00No$h!jmJ`{ek+X6!QDIS?dcTw4XKuUy45%b-{oTIbwZLc~|5)qEXic$b12g z*8ts1{va~sh;=U+YczIsj}S#*zUG%99t)sUjsL;-0;g`jfywt5nHDJQ#KP29^MzjmTWv@KJu`rVkketKcZm>5VjVb#LeudFqpk%AOpaJr$0iBO>R|7vucAAI zCr7NWqAv)43>nC${5a|VUlk9M#QHK?NFlk5ek3yFi1n55gz!JZR@VaQgHH=jj#yvV zIwG-bDBRL zv&0zhUXFgtsB{AUU^a_KnP5Hcds6skV5`-p5tu#Q^TM+Sd_^!jv=IoeuX4wQCr7L= za&Tfc9g1kW;7D($pu&FeqaCM9%k-cOPX`#{|4ByaX|F_np=SoD^bF_DNA;u*jyfOE z!ogwp01+a-(7?kC%v?|rWoY!xYb7vw8e)C(dJQo7nXo-L^v!FX;!*!3>CkttjmpDG zX#%jmoxWLka>TlyUoLzEb^wQt;7;Mm5o`TxgkKN)a>VaS$AsN>*y{xEfW5`QYJ4Cv z1;SIFXMzsP>%GPU4LsPu7a4fC;3yTbo^{~M3_MowJ+NskoJKTLaZsLym>-t2RBCaM zX9iSJi+sKCDj5$gcI2G$X%q89nPgeOO=R}d zv_B#qSHj*&j86M+u)h(Uf!^vz1Gj@)%czor{CDtIr6qWR$dkXyz%>S*NgPE07RhYG zgKkDJA9jPm1G=oC{Kqq59F(CU*3T8{LJUKQzJxdbZ2#3ziCcz%$ zP*sNneq4BR#5yqRnPJ({sOmuHLi1M~)fba1`+Z(c&MCZ1Hin9BORDK zjH!_iFmJQf2pE|64XV!v=4JXa$_c*Gz*7WUu+?<|GMQ1NX0~{6^fFIyEAT@S@n~?W z3J`#p31kE>!rm>I5vyVc{|30%44!qa+s#M9lOvAmhVz+td#Y{ z-xnEj#CjmZYGb@nrlgPohT;z<4qYle$Pw%Ikt96j`@>Jm=L=7cSj(%yD)dmknDQg> z2U8~UQExYD2z^@^$!wxmNfx!G7WA81f_FXQ_sa`sb7g zb4-$0w{SJPEjeJ7SnQ)=ZWnoS#D3w`Op3@?z|WdUY1y+GJh}TQFFc?Bq(>z{B|NP; z6n9poXM)IWVF2OPuv+9Nz)#DoVKsPi#9IDkMj-NxQ)l3i@Z_R&=p3l|83{0%0p{Wl z=C}kPN9-5=AHuVaYv8Bl)zBMy$f=>X$p2u-&!D{S|Kp*6DJ4m)`|X*I5dP6WhzvPm zEyL>7*N7~UAxErb>J6EY$dC)gp#HT`qaoBwgvb$V88sn=gtEI`K>5q@2Qx(E$r0_-v(f4CuqY7PIF{V1F!qc)@nD0$bCcodFcwIPLIwIPLIwIPLIwIM~K6IN|VA$ULa z2v+-1Bsnri$qPOapL^b+Hl#>)gggo01#|UKE7|_=6Vz6!`A4 zDg>)dD$<=&%%zOr{st~1ZtuvbO)3OWRQp4SV+Ms}21spEAy{ovA$X-Bv(CWH23DI? zh`idQLhxQgMr~5TDG=uW2tDY4`P{(Y7??LiT1IVBA@XXI3c)#sjM}6^c(qA|V6{m_ zmJ`?QVC!9c3ysdMK+H&(^EL8xL7U7=59=F z+BK+y{g1Smrm(QDXO)~j-5MP9gnPwcY|MORySfTbVgKC)iIXhr)3dvAm+KDa zXN`#~P3qNWTEucz1)7;!o}YF7mzRz#ugj|WVE07p+P4N^C6;9CeT0Z|QMdOPbP9HR z2^xwL>ur#GtKP6P6g+^kRf}{#hK{8ev z+D~napu*!UXM-4CB6s|?vO@=UPjSyoT~$63cc&%)d1v6@{aZRiHfc;^Rm9~iXEV_{ zgb3Yg6*NfUg@mn(61Eq_?%!~D&F8m$cSBlBA(x!ndEIdT%Q05a?la2&qFtD7Wu-2H za2Usa9Jmp2Vb$!;@m;g~3e5*uRETSodL7(tPu=3_lZZjPqK3gQ-JboKH*@Fpqy1M{ z@l(goj1&zRXuoiY|KK?X7SM0EbK|9ck7Xb9`z!7Dass*ddc36wACWI{EZg}a{ZIU6 z{UiJG1MZ&ICw9v+PfzQg_6EBCZAZrVd*&e%YPJrRGW^Vsql<2E;cQZVv{UWv5YG-E zeHag)GlxUYL|->M@kvitJ7p}=bcNmbNl#7yh2TK}P!T@jZ}hiI#0XFsz8U(U`ZCha zneR`@TabgPO(>=)dvr#?IH!TbkHb!7cG=s<`ZGIE0cWP6zK1ih!Qkn(^`*C+SBE%k zTjTthX?$7FRCL704{?Y5rj4R?P&67!sEGZbPRHgp!8`fwgA3y`O8F4lOvn+0Um)SL zjqoo>cs2)`I&|1BC;x%RdD5^K^|3b&fH}WtMq54axw+Kb7r5SOFsf< zreZ=*=N_H8;A0Y0 zUGDD@y9#-`*S4PWtg#E%CI<0=BffTAo7ilhS_YIt=bUBkl%`#c8TOGXe_>(}so;w~ zX_$TMXJ37Lpxe%p@%|Cs=u7b6mmaOKKM~vkf}9H{-xW3k5|4m=p@I8}d@;CU!4Cj2N(c9H@pR*KgH8mX%j(R3=SdEEh3%7*u@DH)ZBi^!Vn53lrU{2u z!4uo+N>*MphCI3Z>|s;#zD%FUVQboCliWMuORa8{O8*N2?&olE*GHn0f&*wj%Z032NdEa-gJ3D(h zyTGnw$^Dl4&$CK@pP^B^&d^~ zZutLpKfTE{j;sH3U={cLd1T`u`v26LdAhUH3y~>b(Yoc9si$RWYvH(^QdrWvu*7fp zPpDhl$RE&}XzXG{yej*n`(1sH8t-n`UE^=M-y1b%Rk&^RtmMKNk4AX4mU<29%6akX zYvR@8%U92iuby*pdB6BY<$XtlGni;}YPM5n_3VD}zU54@`SJ19{?&`UKX6&lViVsU z_(l@n9~j*ib${Y9v_~8FM-{u7H>G;xD#t}D$ES?`bBY)HD&=HKkL*;O8J4suJg2TC zRFKrSNWZW3{!r&w-l>wJzdhZ*AZ=Lldx~83^3O#@x!L#L-+9Uhsogg;8?Yu;!OQvh zKvjj)IsA35+x?tp!x_A7?hifR%kro9O>0wIwk^f4|DD&$4f#8M=bhL28dd99?4fA) zWYi?KDjH2mI~Hyi+ZXb?Eb;QuRzsI~(N>{&C=ou~z4q(u|C~xY=HIczTM8Fx4|ta# zy5a%vj{Fhv>Zh#MsDWH+%jL0HDKe`$Ki2gr|HB8o0qIo*;Sp1-+#lE+`=(ay@XyOl z%Jc^<^h&M+P`K@dhbLrzf2urxRdjHA?CDdZlS5dWd`AbdsaG!_ zaWbC2D*LNb(XP?h)K%fGeP-gDWkp|5-~W86cjn|(rJ+8vQo|#l9B$iuMnTffstkGm zZ4JtIHOgl?b66-G`m}9c_ekeh&eib^f9aFaA->_cJ{g(i8y+t!ZwOB;>pI_beK>|D zi>Do1IdA2}*gn^vQR{VXcXe#_`FVr+4qc^*Ay^)}+FxDk4NodQr_led)_Va>_w+Ka zqqi@M`HUu64?9*KC%oazF6 z-VFy?)E|1WrGEd&HAgb?e&x$6hV)vb(ltVyL=Kw_cgy^6qWhVD;Ge zNieirY{T=a0DuhYy__vJ?W<}L-5$-1Cr|EG=KlLsiw4|_&0iH8_om-^o7b^pxLs~m zJpa1#{BtX>OP@YF#r=xoB%HCs@4v!(y*Jt_HO<+#s}l8BBWU#YUmAAT?F{o1UajK0 zin9jmPuta$Z_m#dz5W;Ied!PUgLg79U45zUz>%bVRquTeI$rf|ylQWG)t-|nC9NvX z8ByRBxS^`|w^#kc{hT@C^}&}9YkhT^-e=zkt>2wHBfcgTLn*%Iw|$m&iLE+k`QdgY zZSVr+g`=E>Nlt84&*kOq;@K`=sXW3NU6T>Z-hJU=FP6OruTb4_e!@W!mEgtphGH4F zc0U|ic%BnqgY$@fMf%HinQPh%8Q|p3=+PxNyJlXl+hbrX+l@_w+3sf5_$FG%9>ejb z%h)hbPcO%~-M-$FV2 za#wP?KVYTT#og|YTj>?Fb{e8iZd&IUq8@1l;rbOTy-b&{S-#@3ek1hDmGQ#mzW8z? z->`iB%U5KFYw_yX3d;UuiN16-9~m8J+j5ZWGDPgpJkziF{e+?+1=I_ zhrjEyEK&5%sUt~6Z=XuVN*59E{!^)#4-f&rbqepcbr1pXJC%w(7JNb_ZPD$0I^(F55pGFqMe7e<>>ae8qi zRP^Gh9bcXrJL8DU%*NhzWDpM{V;?wDgniT*yXna4iZ-RKFh^IV|6wm)4x9K^4~}&o zt=L-{Dri~QqZV&f#VdWcetU4=#vZi?=Z&ozbLP`y-7#lw9y@5vnSUNzH0I2$Wj{-J3jYD`RX|lifzLs6;U##=?h9Z4J$LpL}oxA7w{A0&vWe#_CWu?|X z@`%^Y?RMU|@jvBs>V;$KzH|8!R(A>=j#%4JzV=Y3QJn^lP3e(5I>rCzTCa0x;b;DT z*Lq!XwD0mK??HEn|NNi43GQ;g^P^rCMt;eo-kQY9A4*cn*Y3&d+9RdY;BdPulJRoh z>a}}1O%AvJRciIqb1)WTYxjiPc8c{4jad7A`ODExqhf0p<>g$T;(qW8vPNpB*vz%x z=Y~4nKBZaBh}h~`dEK@he`k3pzV=9`UL{E@A1PnEv(sQ0=O%X=Rei1F?x7t_VBlZ< znAah3=c#b3&mIo#D0e^0s)&XE{#i!LSlz+Ad>4~9PI^(Z$&kmU=H-{RF0XUkzmWba zG3THlb$>BF5_^|0Sjef?a7PM0D=zUsz z%)BV~+^dz3l4iLf_;`W|c(=0?hhsFf`xuFL&P!F@b@=J|v9(*G*>lmVdF#BcRSz;X zwFSDeIxQYdXFl#-=w9Vd zejH=ua{u1Pz3j@NOkcS^elQfT9o%P4=He+hRfjN!%ht4do}uRYdja^KY0%Tc$l|KG>GVz5rQvvNSQgef)i>wRra8TgKqI`3M#vexJ+kmx|MMrj-1Gl)5(zWc zHgvkZ1g~7i5}xu;Yw#lCsQUvkj?XI(qRKdx_#wIQRAEUto;0B5t)iDs>N+lT{E<(3 zU2j-bv_*=uBjjwm3G1j~18_`QxiX&pYJBRGTn{YG#yYj=Nl`;T)SP7EO&wHXGEMrb zbwhz#H(XW2d~ZM8Ja#Y?TRIqSGk={NON;v-J?XW}XiT_ZNXS`vl6>>^UaUhs3tiA^ z^fk?zO}jLFM&`<7ESa!MQcI>wu~y2>+H+m{)oENWty8*b3)7rAn{j;*?X2EE?9AD| zqd9gR%#1PYw=oRW^7@4z{t|8-ZoA|1Q*pFbuOmsRKm6i9zTTTO>W4Sbb?KAajl%yC z`;w|J*gE2oJy&M;aI34nude#8y6W44q%~ixp6Go+vs9x26 zqDOMI0}^7NiET#2R>e1*D(sy;VvSSTD;lp}b6df?R8j>*kT2`{DdBxbdY9=in`|{9ZMib3-*V zWBJ8380fo3#5TOLWI&8V60vkkEVHN^Dp@NG8R$0 zYCb7BSP*U;15k%?_>5-9BWe`1VnJrmJ&p;^oRiIq{BB#kuI*Okr@axHbG*;}94052 zjtdO_HCw#SN!u^l=g-;VT@YE=0Vd8z-=4za;W$-BA5Qk)-r^0-fv-5vqj8x5XVOPp zbuP{Mr)GQk>hBAS=f|t7{fqwW-Qe}EDaP4o93RMD<-ho6@5-r}&X1*6#Ze=4uE ztXEyEZA!dta{1~>WxeJ_=N*gY))mgHD|+)(#h`vCN-m4-o_yao?q23ya~NOAiS6lH z>+Sj=v?Cb>(;rr-IJ2Z@zv4cd4`F5UY1W!>D=hcr-cGC9>1#Xqbp`Bx)cA{SCE#Uls+h`zh&`8DAyf*{O4~EpTe1#+7Cu& z{H(4js83n2u*c_RA3PQA^`GszS^Db{W5YLvyiwuUUGJQ#9P!Ai)=!0obVO#)_D&9m z7j~HDRNi{5^7gtVx7XcqBDNb}lgLlLV$k)M-Bb048EdMV>l54ic8?u2<+4RpD`u>_ z>uAV*jkT`GDhac8&#(LiXYRX;1|;h_EENslomH7P-MJt^ zVSn|6)QOGYFXl(VR ze&%!D<%#$9w)pn%AASDvzc=9nEU{JLr0{~iZdrMHpGauOD5o^}Z-+xWE_X@_Vyhp_ z>pINMPtsQfO5Eu7=;(=U(SFBz%GW?@$}wIRR$#BewV98Yb&o+6gW{_vW&Z=$cjomg z-cd-;;ZsA9xZJZ z+kK7xWK#T$M+;gFbM-fqj<`SHjOwT_CJlQ0R5VtH?>bCL>OA^}>fAwBB$W-Ri;Yaq zZM%JBO6ORQwv&6e{5**R4tFibpOgK^Q~CC#|m&*y$fGQZ;o}t&W{e% z&U`Pcwrqcjzv+Ch{lw$R_+ZuOrOC1U+{_V<`z@=3;dzX4Y-*3Ma2-`&)QL^a{UEe* z&9Q;eLzhO~FI0MdkGv0%?J%ruQjt|`!(PlG;gI=K)`_AFUMuwPdBKZ@SA{bt+#a1- zy((V)M?Y)jW?}z5v)?y# zC(dWE+EJ%7s>CSF(7$6XA3kGcHCFRH2l$ezJ>Gbkv89?t zR=?!6@3<;@HZJPsI%orI=VD{P^*4X-OWv^aoH92l`xGwcf~?^+$XL>y@uWF(V{Pyi z60oJA^6h2#=2lLvQo&`nV=anSX5e^8Wq(|Q7jw(}M1wcFqZ^A|r>`cCp6A5Up6pf~ znmq5rc>bgQ*9|zBZGeNCj95&^@#=v}j#ob|ypH45Wx{V1UdQq3LBekmUdQq3a^W`% zuj6?2`NBV=`A#tn;?;vCVT%}S@n3q``@3KEikI#ew!^0%>b83a+;M)JSG@N1OJ4D6 zlKtqMq#U=@ce~=P_HF#4FTD2t(N99*b{vejDx+TM#2c?MY|qv|u+#h4b<_QU&!p*( z(%0i-5&PZRx*G;?^AEk@b*Nvk%UkQ#hHuQlml?mkKB;YsLfERoT|4N;wzUUNb?~qF zON(%Q-J4!>*I#!}S{S!|KKRD#>ep4Y=um%bw^tYP58^uw{@OEB@D}xEEtCB{JH0}G z$w%G*Kl+xpu6EB2VZY+8(f!T&TfEnnMI2AGSI#>M=fN4y41AxXf*aO@VF$=^W zi84@!IMtu=s}}A1i4WXDQmHDLn0eBS(**;~i1{=UsjQGcD63hgp-b)L;MUjW=!u}uo?a(i*K-awy@FPMcz;E z)U18ca6lHeJJL*YE&$zXTnYfw%#sRNAM&A9mCACj914}Lbo`Z_issI=!{O?I3 zkSFejnEEdOGl@KZJz*-i+v3>+rc(R`L`d{M0Oslne$I7%fRL>P^;29x<&;0mjS7D* zEfJU*ak{^$Fs1!9xSyiRQVEJH*BG`@mMSsNe#l<~Y=+niz-EZO2#i0a(*VFOj$wNT z9oMc|r}{nr@GALJC7t;zSa}$ayMXgWo6kdYE~e#KY7wpVi6h{c1K%pn>zULU1zaNd zeoLSDJmFslM%%E`35RdXHck8?FdecrJ_6?6Mfp2mQ>`C?*{bB*W0)KLj=-J3#jy3V zc)r=%bX6HJ3r(Go3ZwoMra)j|#>B?aJYbW-0$@|iI$+~y3$WD2`7^NDGv5Sepig46 z>-`hhROX`ugx^Aeg_w*HYZ9&p=0hpWoR16hXkfu$%tg#?`RDW#uig}{h7ikQajF+z<#pXuc@nk-ZSM=k>O zi5XMBH?XO|5KD(x?_%ixN-Kew4}{S8CW|LFgLJN?v&zyTW|z^H&-5~|AjGB+f3-lc%!o}N_X9RQ2LKzN<-n#D6X%No z6)S)l=!n=j8fNjt>|^R*Y4OAuMvAYpcw&mwzY)M>JQWywP&1VEn{Z^&KE46-8kg!&ZZhfu$ohN9;e6L?BPx$$JP}aZQG%=X6}drqtO-LgS9}QKCx*izK4PwY*U?cDfrp9Bykm1^=YVm zmFa-dO={|ux5m{q;LS*x28=)DZn~vE+ro3HAUect{6i;F+gF(yt_5W#{pT%JVl$uc z{S;;n*$>P;iZu@|E6h}X5;`fhFMrlP+f=3{8xDc>CN>r5>}Q9t;JUE|Rua=c^%^*6 zl+u3@r}(Q<-1Z&KRLRFAO{w#NQ~hs0!K!uLYJALi>seSeE}D|m0Uy$-IxnTEV{e2a z{*=$DGy-PPX97znICoG1fikfv+%XUZaU_*PrC|wtZY4P{C|Jx_3S%>5F39=PS149$GW(mknd{oIlx?J z(?xlG)lu(q*Bw|}da8Y5qOj}+26`bLkC@uQmgCT;_XnV3T6YaFIofg%n%(9pU9Rbs+v`G&iR**8F_w1PEm28|8CdtGyaQlH_y+X>E+h*>Dv@H&0pQu?e5~+ zDU2@C(PS0*Z%#_db(d;<=C#1D=;VLu$n}f*!zN2dB|5s&-`n3E?mnm_fBIda=6*?k zH|qXV6K~$!EEk!zDTU!s9o?WJf7x<;Y3hDWZPL*`9pST4Q1^dxeM+u>&2-q0^jDt; z`#CzQ(-F!>^01D6QBkN<^V%ghbqf{gs7yzrbTmmvcQp5>PixlQ)zZ_={le=Tr4Kdv zvyR%fP|o`5Xo8OJ(a}a79nev;mP)gaj>hQd79BmHqYXORr=w#!%JP)mARSff=uXd% zUW+1m%dg{qziz6E4h?SsN$H2ee)@EfVI>Vzk$>n?oN_L`DJOJ?rWfnz$uPX7h_3&9 zZ`}9(w@yh*gL!wC|GR}QOY@^QKut@J>1e->PNw;FGmu>?r8z`LGjy~({=7j@+Vw{ll9oODQCGl^#dK9)KRB4%A}8u z#_DKZ8^3TF9vVk2%GL~Q6$Su~~Q##tKqvJYi+g6#C>S$71 zzlonQAG6un*To}0Uc z+P72RN(*JT^LL#W?v|H@;~Gw68pD8W*I5ARd(1rR5i^a4!SZ%~*1&ML9;E^O2Iv=x z{sv3`3jfA|;qE;~2Goy1JxA0xTI$pM7pQ(iKs|zYC9V_o&6fHC-z$T9BA~tv>ZUMT zEcH77Dysi6pneqUE5-Y>mU_MaB-J+u)ED76VZ3j()OY*;rTS|D^{r56%dsV&x73gN zmkbJb&-*N({;H+E%~DUz^j8i-N4Z$A*d4XU(tpv?KP%HeO8sa+|DdJcVCi3w=?^GJ z$Cd^3k3fGa^jQ4umi`p~zVdMQ(uo1}kvMRgar3IBz8HEuh;bdka14j8XVv$l?g@A} z01rPygBk8X%*wL;o(gzahtvreSnXmi0X@U86|;~vSfeyjVYO-k?sAg!QpNhw+7NHlKsVhPHW#6 zG^=UC^lnWu%fq37hjl6HyNmta57;-yWkAz#A6xb( z0`?7J|6Ra7-?IOgWuJ~S61(dUq|{EIp4ra>&Au_A66R*o`wXP%xBP(l5oKQ5Jzzf0 zGXLB%9~v+}f%c22S>(cihbi!YDyjDS((*7h;DNu}PxsxsT0{l}Jj}H`d}VpKFW?~y z9)_qgEDU&90S~4Rzp*?#67Vpo(ZfRl4@WHz-&!7C2zXcz4}VZ)csAgn3}@e;z>?$W zJIlkn0S^_pG?At}>pmI2Q0Q79NU~hc5#j3gN*VFn_WJ(l=O z|0q55YmO9qI8A^D)0_XcJQM^xtZ(K|AA_0uf&ky3`F7U`ABPVHUe}xMyL&=y+szD^ z48}Q_{^;UONU;ku8-=NWF`M)k#Aa+S4|w2@|F2|q&Uhf;p#dJ2hzG~tJrw6$yP(`w zwO)Ndx$^9$_75RTlifc8*&Tw1BIV)jfQNDLFhH_Pwmh5&c;N34&-B0LY!vXY0v=5J z^F-W~A=dfy9xQI5r{Oce+fBC7DnWD0erUjcEJ~26n(V@Whoe?2wDh086iqf=6_=mA z%?c==u!VU`oKlHh5Sm9{4*v(_u>j9#*0RT--ew;MaO;is<)f!0*_e zO)bmc^clZz2kf`vtQk{GzdZr_NtQiMZW`_X8?fK6^Dq4|U_Tx9W*5VfyU{+1tL+dQ z7tVasK|8igX=kL^eY42&zz-Uj8Vm|};B4N{Z{xL$3A3OS^fiS@e%3g0)^<% z3v&w2PFM((r_sgkfQ#AbcnsTL&9z6s!vtI!p9M>LfU`yqp9MUmH$&%uiyXM%yPQ}A zz(yCv0T+uRcsqa^(LDnm=A7rM-$K&^f9q^U)5w5_N}NOgg&q>a10E^{HZ6ZjEf2Q@ zJf!0kkgsbo!8FCq0e|^ru5%P)hb4mR#uDAF{k3Xr*CkP`r~JK7Bt_Z;vZ{;f3FwJ{ z>kgMTO+e+A>jMG%Em42tZ*i*gR=_?7_B^(-XoD^LUjp_EvRSg1SEFQIP9F=)vQ^1S zW8h5#utD;NHg@v^{}!;HW$gVY$A-J4RK_sq{cqPLMFs>EH(J#LY|N-7x)5SxmyU%8 zPwi|eNUm6>o!mnW%qIhM^B!1h_?s4EpFxVFBDPW&p)ilaxSoY@y>>JL;ZB*3`eFGlG!Nbqe#kW`BA@3=0|Fiv!Gl?K-EMhU8u0KvJiMs;;{Je(*%Mu7Ye@IS zuPhhq0xq_kgAd-Y8vPy#cqqgG-6aiir{!U1z{B94YGL2*(*QrTCvLCPbGvq!OyHog z|HmR_sA{@&q}bj6GxE%lJQG%){R1A>Hu}CHkh0PE?ssj#cl5d@-}5ZrzYlo$xu?2< zwj^La80O}fvcNKbF<>4pqZ(D%4+0*hz=JvdF0wqd zMuS0YY~9L2>>5~)v;=Rr?ONDRkP_T$*_Qz_|%ALg(m_YCeedl4F)`nvplS{ zJbV=Jut>K;zk>n$xt9GymVKLUr?+BVT#coEVeobh*23Og_^7k&iv#vqz4R5Zo&o!@ zIL4X1X^mw+DqvsM%dF%o10I&agW03kS{{BC@G!EMzL_&CU|(n1KWf=83)oNZrS5+D zuT2i8hi3Qk_xuJ6i%kJ%>)~u2Mi>_sk6X^(4mjHd`$e$d6R;mSwP|*H(z5?PV1Gc{ zmwpqlp9*`^7*ARD?Yp1eou8mN^<~uzq}Uxg+w$9=5hZFD+R)>{Ift2K8bI)je z!1n_9Hl4lM@;xu$A-`DN9&GnifG>n+y({v~V|J+<;5kRy{m+)?*8?6Z;h{ZC-ET+0 z!zY%9ddtJt0S{A({f1jpGW`dy$6~rUmRDvbea}f7$Y|GT`C+Mh||#L%QYR70bg*0S`YndU!tIAK1U%$g z9{y%|XodAP#KtZRH+pD+6uS$HEf0UUJoE{8h|q&N9U2huP-b~}-SRLY;33PDA@8by zhoP2-H!Keedicdt!rlCqH-*zXjkT0^TS|ZG;V*zvUR}WHBujs{xVDdJxhO7 zo*%gZ`jr9wI!ph3OaIn9e-ibl2lUrl`X5;Ozt8ixP=854f2*bcp{2hy&riM)`p*RP zU$yiyrGEl?5Y>~Fh@3eXMiF&CYe2xmL3l6|^uH_*9!}G2 z4@=-7>~GqQ`-5j9sX3e`(KEtIBpu{LmC^HmQq-*8ul#>_oQAa4*8Fd}eB}S=Df^6T z{}29l@GK0(5n}i=x?mG3F%bV{bt1#lLR+H-!HV z+#asH42yd!B&lz;HxWtd6FatyF1A9F!;2P8A<4PL|JCep7x#Am@!8>l?r;3}W`}zw zc>3BDk{q6oHiaaICzwqkNqtnngTwa!WBSMNOE{QZwg5ckIqdY$>FiKDI}?% zO4{=7KspbCO(98r=BP;}-*<+)__=eigH`a~k%i&( z5uXLLjs)b-1M(LE`OAQO)UB`kZRkx`y?*zxgG*A9{rr1U((6m+h3k_2MKh4^%KNaN zuK+6gDq#F|K<0$l6q1~8{T6qJhr65oEA9^Wbhr5T+>PDlS^x37!vind>f9%)?GR_+ zvCmZ^XDfM|dZd<=PJhv9pn#y|2KBTZk2bxrWjNdYzKg;=lU{Z5{7tXnr?}~0A5|$k zobi6uJ)yS#LyN*K-JSm9&`Z45IO6Cc179e6M+&dyT@H_$47fFf^f#PeMCQ>T179(V zgqW(24jImF^-WaDsn{~`1>C-po}%P^&Tw0floWDq>vx)fUmmJ4@@LR%$=++~nS6(~8`eN56Js-IzQmUKJ^ z1p8EXugH49Gvp20r@LOJq;o9c_Pzq2EMs>smQvIySO)rjECot zp6xC=ExoI|Mr1ujoaJs6xu4SS?!FG0EtaTOL=Trgqcwpw_#z7PYIbb<0XW+qx&X7%@-Pu}Z{k5as0fn-F%+CUuKnGVrjv~Gt zTLzwcm=Z|89Wp17X)3+9dv73pIpkyqi%{K1ecVR_3Y!A*^M3!um@wW6(Ekd^#{;rz zW|V<}%tRU1s1}i~9oUe+bBr zL1xcx!-j_L?`{LZl0T)0Qg;vJJ-{1VP+_3^&wzt3{AQ0g>yk)9vI#Wr6p-@+a=(Cl zQ9zy$kof^26X>5G5i$XC!r_;M81%e4$XzY6-lxjlmmqV*)MLxQozM?Yci?<`n*9*B zbxV3P^X`T2IU;NS7r7%(lM@%acM5SXj56?;!cvikDS4RtCy}}9WjMp#=SB9Ee3|>E z$mlqvU+#VmnX`cz9DT86;5WSd_zowJ%hV8^ z;C5y$B+%^afIKK5j|s>(2jqE>IY|3p%W$d_?lMu(Lt&E359~ydSfdmsyIUn4q8j?I ziL85Kiu;ksdb+*d{oyqEMmG&(A|JN@R{m~s&*T`9kj{fZ9*A5Je9SS!ndbI}%ofp0 zpc(E(kcnqu%W!USM@l-L*o1tm%kSy1Wo9e+c6SbBwjfWYGMrzzcS}0w+YEdrbv0xL zb$m%UzjmJ!fU|z9~c(rSPD8^fY;;+X1<<#@fL{ZYgAT^G!;>&K)J` zdeyVWy^*Cv(E4lL1(L42^ilT@lFqj_paARKjUdRCW6Qvel2^q*uK}KP51b}H%WEMDE$(!B5l1?te+2T%;^ejCn{_Nf^gmzf({thzpxI!5` z=RPV9AS%8-Anyps?}*GJVg^n#zBx_)i<^SQCWCsnOa{(uI}4!=UUtttO@76_^fdXe z?&QFR!!z;i~W{zxd(sd9`n*we|n?a5&=6d^lWI z|L=#xqdb4uli_lAg1_X+aQllUV4^_a9_UtS%yAe2BuDHC59qjf2!sLqNaOh*u~+RM zgS(Csb#fk)<#dJEo9IW^;|%y(zjA%JJ)$Y=!(BV#xeA6dY!M7jj!$B5vcGnHxPNGh z>$mwal!oRxPmb6Vo(KI1`kzxfgDZT7syYV-f~xvd|JA3$7oNrEauC>Y5jhMHd%~+S&hiU4 zp#HP`iVfil-P`;nly39aZ3uTw%+&VXX)lv7u_t^5dCY}N5HA$G7_l$-F~kpB7|?Mg z@0jr9h)*w*&Nrd@3>mPXs?TQWgg9hoyb^J#g;gV7t98Z*Pmb6Vo|8Cj*CJ+{xU;qX z&BBu-_GY`6Bhv3Fpus)BOR*6TMa;=Lg4V7?%;4Uk9jQXI7Z6mTg;%Y8tzWh=+UZlP7#4Cbh6}5@IMgGW5;n&^8esnXG7yBif!=n?j!gL}z`ZW(wbRuWz z^0AD>GV42$Zu$}n#;n3DUokO8OMk>XH6$)U%wv+lQ40e)?)|!iXLF5AB?btNCke`F zuH_WC(W&4l^do`+9apZ((hqqCrY%DR!;uwW!6Rq_?ncc7qX(6L^7+6C3@4>jh?pS)HVbjc!sOka{I5?vBBIQ7 z25}TIGjku-{mS(Qd2+;_@TjX3Dbl-@8XrYyf0ly5KS7@GnR!s zIbxF;TfmhaXQ1eiBW~KE(Eky%50?oosMJgMubN5)gLd3Ubm4MDha9mde3(2(EdmQd z%)LSR!9`Lo8I^xvwg`jEr(BS~dO;CyN;7!em>?l?t}dL)fCmx;l>sm_Xo)RSq7Mfd zf=veGd7_pgJf?OvF39uPLOEdsV8?xu|MhMY;m}674jb|9h^JXNTkurGxq@lJ!ntyw zEEAp_u_ye+!p~y;RX;tcYka9BkR$elXK5pt!#Itx)&{HH5+vte23PKofvhi+e?+AKITJ1y2$Hod~8g@+xCY(@bY@H)&(`XN1!?0Xhi{- zQzR!NV%Ano&%oGa^&wSoSJ5FqmKe=2969F?C%kGp9LDYdH;OvIHz2-A@Jz&K3+8}R)ANP?gy+NU6HsN~j_D<7*D6ct zQ6|$JIbze(!-S_h)r+!vXML$pj@T3aTH&W7X3?m_HcGJfTF%l6)_WDu`usT8~#(le7EjVi~r8TNl2sq8{ky! zcK{$ljA@+n<0~5xq&7Gq2d&GAMCV#hJ-f^xG%vSiF#jg;2 z3_9%c$i--X8n3nzD4QBTA^17O8wImDpApPTY!l4p{i}s{S~?tf?sh06?88R?;yn~UJS?) z<5P)>&&7XNo|M=pI^>8w;q$4pUhBUvI^>8w;R~tr8gSiJJeBK!g6+=%@^_>Tg+(s{R8{j@T?mX=5@D1DoaO z<-(IAHp@}f-{N0&$D1e|>#v#%2_#i>F#+L5Y|LObV{Gnqnx8H_Ibu(EK*#00i{N34 zaI_&1d%_O@cKLuOLJ78n`%f(tLvZ<|C_*9eL5=f?x$hw468}Tv9AbH9C`x=l^QvFp z)mV**cQjTNkY|usQFp)M6M7`SrIl2(b7w|S{bxPZQ_(Oj4%8u#19H4Pnka1 zb#;OdaR2+02vjNqb|(QKT!n}RWr987X9@p%#J{reuLTz(o+r2j@!f*U5Z4H!w8(Hh@$kfkm=jW|h06@){*THkrE!R_5WEpFgL_D4dRC+7;VYFFPOFy=@>j8ow`pj-(_Jr>*JP#h12_A!Zq+os~VWME3x=pt56u}&4Tsyc=f{4joHPlGt2c zzE^mjRYj3zCZZRGCr51dX)YJ(hmRrWQ2$d92tNr=j@T1Es`s*l+U0VQXy)@W+5N~7 zoB5p2D>DP`qWRRnQ)f^uJUL>s-%k_%*NC~%mb>WPg83fGLXLmaH;W~q5RQmF=^Aw` zfbowo*d{vL5x*q33Qf9G@b`#|S-2Z?;ocFR9I-hU_*nRl5^#EnOfm})m(W<|_F2M{ zBQ{MvNB9Eli;D%nhj;*OrFmZvo*c1hc0Se2mf(a|hO~rf_U|QuB(Z7spDlyINHfje z1rF$l9ITjIS-xr=7 zu{mgcBRs$J^P^yX&xbM#&F}n#uthFI|3?8v(y5&9wN(k4BR1!Iy@aQua|P$3b@-Sx zoen~Lo?y=Zl*#iWK^F?SsqhOBt2v!50epe*BN5MqjVUM}6lWpG5u1Y2hCC113#gxvn%yi3 zB#Di|eZs$qc(LF=Bd!%(hj7%`tzM}ZQ~et>1n?1=7yZlXkv*b~0D@cj{&2<8%M z1#NlJ7vW;z$q{?Pj}e|9pjwGE_Y18*wHf-K%|dc24J2Wv81QRUcL<(~c#&W(pO{8l zF0Gae<`=8#n8BAigBOG+N9+l|Q~14n=#Fo+rK2CQDp^b8quThG@Z^X+;ZF#^3QfI^ z`d?}Nwvg$E9I+>Sw(t)i&JoP7V6BHGPfS4PNxv<=7W#$V{j@V@OsPJsLX9e@Q_~$Hs8~yCi zmE31^z!7^pWc}YjrDIy@uqcru_Jlto{7;BqrM_Hn{#tl)#O6XY^;j8x)2oFnIJxT0 z7Tgxe3ivhHadL#-r)Iy`R%TI1Shym zt`UJB`+C5_lxa+zM=Z=`HhF&2YlDU9m^?oM_MC+&8$YjE7|U|K{^v))_DcfsPOEvp z6rLQhY2NRI=dzvs&kXo|um4(j7yY~}0~~48A(scNZ{A}6=MMx_0uCY!5nQwlBUY!} zBeBi{zMDMoy@-n}4A{6_nDmvtdO)DlMRFZ?o7EvNcYzhSEL~ya68Ke>8 zDn%Aa1mXh}mkbh_BR-4+0V=)Sdk{l5iGcZd58p%#HXW#0(K!LuYF- zM8@gIhbS9N-hExS3VPLv@J=HFvAO0?IWk_isCw3c0-NOwCQQ&*IRG2i@G;@Z5t}u9 zzVJg4vk>N#s+aKOh|L+5>Q)yEe}sY9m{;?J2%aQB#I;|oq?)vfjBZ||GZ=EDT7Q`A z9t-oRXZXz)e#OG?2}Xn;Nn-w|K|8cqH*CZw5%(8diFl}Beg*9+!P5~>wRm;q6Sfb4 zTWs<5f_Eb3d5J09DZyc0|7`}xOn{(o!2l-%50a8rAihNKRK%*Oser%>Vzebk>N#NFpk!FM74jo>JBC{w2f@dCj+5HA$Wrezv+mLmS0 z;2yB0OrBlD3)#fyfd3==pTcUy4+&n2ghvGb8L`@Tp|c+NapBnolxfSpep)cQpkDA_ z5I--NT|k-o91jhG6Z?^%MrKL~l%9I2L~bWGPx!sS4P)rJ&9&_W z;mHwuibwljFA1X&-zs=6;tn+CWpIRf!jmKRguhSt*@!voxojQ;Ua?_~$q{?PuN0nQ z6lrdP*VYjpm4v8ZPxz-TgB+xpX6HQsW{TR4}Qu~Z1^8V+>GscSgGt78EUb#bKyeLnnwa3;10cm`rm_=|xflWu2xi|W1Djnm1i#cFM{IUcPk4@xHa!2Jl7qN8qgG%MItx#Z*b_cS zcpCQ<+z)XWdalfd1B53>Y-Y&|gpVU0E;w-|Kst?E>x{=q0y$z&_-ln9fq0r=UN2Tt zY`V6cBRn}`Px#*oKNIoq1g}Dj4eNi@ekp_wEQI;xB;=6 zdNXt(whK>=*b`pOhVWSrjt4#Z|Camz!A3#mWI2Kz7Cs6`#HRng6rK-1IpmO&T6d5C)ojv>ycBPnRH@Z^Y1K}!vf_(H)~ zAg;7&I?hUyEL_M8WS+l4cyh$%Vf;>zBiHIBJD}sHArYYqHu4O_p75+F`C`P$ z*l@f+`y-r#jR_=)%>e_@iA>g`n|s3luSc-1qm}+uaRiu?Rw*`O`kyYC{(Ou-l|Uu6 zZif<;)$YWRf>4f)#^i|2({2^QbA}uzn3d+9W1f72nX)BEY#wa7N%-EZzuJX1>&$MG z1aidY0eQ7|h|WCGAxCU<)LxJo0wd3kB1dxfVe^D%TI70NNa9wJ8?>OBcf<0}!e=Jb zVHyXPOcZGb^?8s%xCa|CTTxBzz^TyLWbtnbraLuZicS*rXv@iuoAEhB^mz=d)HtE; z8>k+b08IpSAcQeFV)Oej)zZ4YdOZOha+9b7o&~)b8#7bA1#BLgQwCSz5^M%b3&;`7UhSxa;Bu9O&>9TWCrI8Mx=ix0iI)MHj|A~o+uR~R{brboicUE5u27M6TSd(7@O(u z3gO8SoBqC3_&JDGcdOPy@vf8vlEkLD*tcePsumq`#HNL&2v4VJ#M5*i13K=Ry0tQd zCr9iFUr9bOU0;J3LqYJ_f=41Qv~b+Qy#=$t3@#tZLg7;Z+xar@op4q!8*S zDKsF-Ilz=|7%+Jnu<6anzead+#Af8HE|39ui|CLeHZ7|BtOtRh3b8?tKSh{cXA?jIpXfN8ix@NUHIIjV*4A$Tp~D#6Tjk>CdqbE7`P!|Ie!GI&A~cs?>5 ziBuYec!XdULUj}PtHH5ls6$@WUiX0h*(`W+Q?Qu{O0|mUr-N4mmb(WB4;_&tHY0YP z@b@yt=E?-MSa@>8W`f!#{NE9)$w#_lpYY^}O?PAgC(NXARFp^(8>J|)nUq4(Lga|e zt{4`cO{?a1REAxk&RKxjqB-;<1u7SPaG3ugn9OpiB+aN!T3}3$*fir9F=l4@)R$Jd zN_cX_rd8%!`i0cTtjDlS@o0aN6wE&TpcpIw|Cr!>#IqnrW;)JX#A+7>{ta-E@Wg!t zmmy{_H^2J<)0TnQJZ6y0{x^?;mIG5M88NYW!jdD{JY%8;CUnRVo9okRFoMUFst4n2 zlo+8J8-0caaP;!=-W7Bkq`mKxN{~5#<54O&dL84I9qsBP6hX0x+PTiL5D$gpYS6f z({>zU&L_m2Iq5f&fY1YgO=ldjPpCwW*b_%;(EVEfq^~=5fX_k9;GPpwF$Xhw24YWm z<$t#>sA@&%DE|~ZNjMLf#w?H;bQ`t7VByITo1eR~&)s~TF%MR>B}eQDpH7|Yw4Z9x zAxDfSK3P8kyyjNV+Bye1s`6GZ1^cEGNMoq{omN zuuC%k*qDga*J2>`&se5UXY%qBA~Qcyh#^ z@ahN&{Zer12r0N9-(^Wh9K~hW48BM(r%BbvyrPAm1|amw5qrY3KivwgGZvVB$Ps(w z{X731{%~~UG5szGuuf#1g&%Lic8?jXiXd&GvJ#vQKQ6v@wJ_~Wzc8LW$p7*`;i-x4 zbT1ETJ^1kNP+VTLJ9Gu8kZ3d*SLbXQsYYE%QPNKJW}Hc#2f|)Q-~)h=u9WB z(wGYcw_4-5JfgT0wXlc@lQdpJ%vls+1@Uzn*Ad^S@jBwE8gC@NN#m`=H*4HLJWb=B z#M3q2L(F9Z@>jo;a%bv(i(L+hL%zEfid!_~#npMiHR-Ct|W%j@oM zH10smj1Z#4a}`uy%1gL+X`zq_^EBp5P_h~$xxJKjI#ClFU+nGyYiB4EVEOXHkV$3-VD~Ol*8y|0eq3?A}t*G}-g-e>H z<>*vCG3Vy^m8oex&*CJ5klY-U;B*UTDeSL>YFam~I+j#7|4?e${Ipz6@o_E}-*9XO zE!huqT7c@|uWy!iVO5^i;`39k-~|?5V&Rn*UPsJ{4uOwD8QfsuT?+dno2T_mh-!08 zzD6}-;V5ywc9(DA5(^Kua3yhp)*okK{vN^bvxv{pIvH~}RG3Zk`4#^BG^rW^mNP`3n16=&8T|iI>*Z9pE<)r#+J<^IBOe7!Iu88BXis z7G0o=IJGr6!Lu#Az`{!u_B*sn8}APBXSYi0KT2lAl5|)L9&F)C3y-t#6bsL?@LYxc z=B?AZCMtBn_##R(*>1D&P7Ck1@F5EyweSfGC%1vmi?n}!h}z&R3ny|dq1eJ@79MKh zu@>grERECY7M^3_MHXI0e6cQ2oyK|+TW=+7weYJJ-eci|7CvI(?=8%e2a{RY!W}G} zgO|ZKDivA@11wx&;gJ@eVBx72o^9a;7G7fEl?HRbuQLMh77I66c$b9_DC|#Ylh!`% z65X0Vle)xT&?aquVyLESu=K;>ScMf9UTfiv7T#vzofh72;X@WaN<2*aKVjiSa-=CC zomdY2Sr*Qcv=UBMV!UHT^Vd0S$o?zjr7M^V|>%YJVz)LK=(!%R3yv4!| z7T#sy0~Y?o!pAK9GjPJxxH(Rk4CYH44USqk-@+xt!}Wj~Y~e}^kF)R;3(so831@DT z;M7=n1#zX$V6BBWT6mj#FD^q&LiW42vP(kUI+K5rn zWlL;P(VAGi+O0B#0{q~-A!frd_S4>$oH z01t!5z$x%Fcn-X{fwr$7fc!>@ZVR{s>;${P)!gMsc>jAj~+zpO{`@w_Y zQSbzK3Ooy5AV>8PFGE8vy$h%33&D2w9{Kd?0#|`+*!Rd9Ke!RxnsrnOX9Fe1u9uy= zz`fu;a1uNM9tTgd@0IJE0neu`k3VIJgYU~CBfY<++X}XUE5Kg%eX_3)TnBDoH^`c1 za3~5vgnhp(>ICqQoD3D^mCgR9v;kQ=B4 z*MkG#;3j_lZZr*$>K^3Gftnmi-Xd(D)Zt0(va~=Wf=E z=>12qogI)HaDl79HDEuuk=-Qwwz8v{APfyL_Fh@k1?~m+fs^17@Hlu9JOhr-L$Cxk z+Os=h1>3+CU@zDQt^+rKo28=)Pazqk9RYWOd%y|s0C*TY22O#e!E<)nzJ60LLIZzn zsOK%<60j5O23Lb?!S&#PZXSP756JD{4sbU(4(-hGll< zo!DGQ)`eg@*afZv*MR-t#;oZi6WKrsgJa+>a4)zIoCJ@6$H9}}nY88cr_4jc64-cE zcJx-T4O{{Cf_>mRa09qG3PA`Q0e6CXzzOgGco;kePJyR0PLF>M8WzF)VY_}DSimJ< zC)f?H2G@e?!2u^f|2NZNPg4*Y+QA**Zg3pj4;}=Mf+xUJE2iu#5eO>{|t{0sFy?>}aM#D+iCt&S7v2+y(9h_kok(5%4&8lHDq|6`g@# z9=ycfCyR{qR=sX3*aofud)YsdeSP3MaD%jb{53;Ei2Y;PIRfqk_ka`N0q`(*44eW_ zm(lk1jm<&BB3LQU)>yzL?4aCHC)f?H2G@e?b@TWGdO!|>+rb^+Zg3pj4;}=Mf+xUJ z9>yG;%zm2rCf)6g&nUIg=bwDryw_7ieNC15Am%?`^NzFxfUT5$a}{QUo< zEDCT##zAm9`zcw|0qzFJ*-y)we()f8l-(|CCRR-2pIQm%wE(=penxg!2ItZTgL;xWbKphxbFzj{eXrXBE@2;(HBPV_T+KctYif1#4%X`dIl%6aML}>oxP$$?tmy{F z!TszPWX&LW6g)wW>P1t~FbiG)FN1UGV`}|72Zdle*afZv*RVU&I~P^_*+6Low}Qj$ zm*i+-;4W}4`(;_v2Tp=V*guyw<7sCOkV$Bm0ndY%z{cxnMO|`5Rn! zU6g}YWl;mT85{yf*ssa@PH+!6!S0qd1K?rsSjOq`r#Lt)J4}P;z>DnHWetB)A%PiI4V0#foH)B z;AOUu^|_T<^HrVnydCUf_saSza1A?}Y4AfsBl}I+p%okk$G~0ew`6@UxDT8JkFbx) z`sg?Wli(TfJUcEsEP;)lY~BjCvEP>U6<{yeCoLa;bsYRcc4z=MgG1m5`yE-|3GM+W zzys`rtRDuCd1(83Lkb$E*~evvIq)Kwf0e4&SlGXm^(9~@*bS~`zf1Kz{#rdC*MkG# zAiGa)pdH)+?gq!%CuDs;cn~~Fj_O4d+;CEMm;%p&7r@KxQ?fqSn>AlbOwZfFE_T1H zugW^A)MNw24{l_?Cp)x)!{8XWi+x(w_p%41``BlslkBt7BkcF-wVkJN4wBO0NA_QP z;5z%tRC&F}>+yKMTe(fR&l`${8Yc|1>V|OeiT_(=G#3x8yFn|?QB|>ZoA#%*s>5)) z_S}}rin!(DEjt{pGehfc)HKz9vFW}qK2v{hxOn9mM}BI`bOb)2(rUvtOqp?7c6)~IInpy70Td@pVHchy?1TEP3Ww{!#V(81F6={*t`wre-g z{%SXCkKXn6Zqrs%tGeo&Z^w7-biLtl^=$Ndf^XdZ;l_;~Pq60`qq5T_9Im6B6}NwA z@_eLvf=9P&-&57U@DA0gcW&QmRR7HWXj&B?->e;0&xm_((JEAR=x4WR+pk~sKW@_} zpJ-`&sIBR-<^%E`z+0Yg)Ayg&%1oDcycp5$T77xy!56h#t(T|dUB=gf-FF~+ui@(H zj?KBgYMaE8JVCnr3SzwTP2 zPwRue_j$yB4e~yR|s-f#>6y$fDbMTNm z+a&&Tm8n>`KhG-^BVU?r!uOidqMF3#7xIc}(PTFjh}2hkMzfiU>FrVF9&vmz?>i#7 znCBF!@jSN}{fyN8DJiy?XAz0>r1T%Xb={Er9W889UlxadqZNwZ_GxQOb@}v(yQn;5 zE)X+)n$<9>2z$q>B9VJSvzqD)=-V*jIc{`QOqUMbaY8FM%~IMa&T~4(X_q)mY0-K@ zvxtfgvqhvhTO&T_?92(RMA%PKqFz*<)XLQcUKEQEry9j`oN|fxXdz-JsdSF=hN?pG z;Pd7pVLhc;Me3wx6wXtcQ`k>YL4b1VGve`6TDjqv`g&WDNOIJ7m?WYZd#Wr5ND4KX-7cbGmiyx!fL+N^Wrd7O=`8DQZI2yL zZri`NrFl=w!!7%sYEgnu?+ZQD*7EREV$GYDBB2dvU-8SgUG}V?1^+Iar<-YJ^Q)^L zydTVOHRv^b1M21>sC*t$zPqxhj;_@KgQ{zdRp?$tkOH^Jb7v6&YWZC zW%4|5&hMb5g=W=Be`vauX3letotMe;N6Vb&2kHYE^FN{kG~dPz{E+8KwbLJ((tFL% z1vGIRpR}ZomOH_>gN>r{tX8m#2U$dOUK#zN$wsr@l~ZgVEnOMkM$7crDSroldKMODaTJz=p7Y=vISpWb4 delta 296556 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 z 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

8){@- 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 NSwk;e7rHj}{{Y|Q*VzC7