From 5fe4a0c332f6358a6dca89380292ebf90b7aeb4f Mon Sep 17 00:00:00 2001 From: alberto lalama Date: Fri, 31 Mar 2017 12:06:06 -0400 Subject: [PATCH 1/5] Resolve DNS through SOCKS UDP relay --- .../org/uproxy/tun2socks/Tun2SocksJni.java | 2 +- android/java/org/uproxy/tun2socks/Tunnel.java | 6 +- android/jni/misc/socks_proto.h | 21 ++-- android/jni/tun2socks/tun2socks.c | 96 ++++++++++++------ android/libs/armeabi-v7a/libtun2socks.so | Bin 141984 -> 121432 bytes 5 files changed, 86 insertions(+), 39 deletions(-) diff --git a/android/java/org/uproxy/tun2socks/Tun2SocksJni.java b/android/java/org/uproxy/tun2socks/Tun2SocksJni.java index 75f9eae..9f5e999 100644 --- a/android/java/org/uproxy/tun2socks/Tun2SocksJni.java +++ b/android/java/org/uproxy/tun2socks/Tun2SocksJni.java @@ -29,7 +29,7 @@ public static native int runTun2Socks( String vpnIpAddress, String vpnNetMask, String socksServerAddress, - String dnsServerAddress, + String dnsResolverAddress, int transparentDNS); public static native int terminateTun2Socks(); diff --git a/android/java/org/uproxy/tun2socks/Tunnel.java b/android/java/org/uproxy/tun2socks/Tunnel.java index 7995632..014b5ba 100644 --- a/android/java/org/uproxy/tun2socks/Tunnel.java +++ b/android/java/org/uproxy/tun2socks/Tunnel.java @@ -126,6 +126,8 @@ public synchronized void stop() { private static final String VPN_INTERFACE_NETMASK = "255.255.255.0"; private static final int VPN_INTERFACE_MTU = 1500; + private static final String DNS_RESOLVER_IP = "8.8.8.8"; + private static final int DNS_RESOLVER_PORT = 53; // Note: Atomic variables used for getting/setting local proxy port, routing flag, and // tun fd, as these functions may be called via callbacks. Do not use @@ -152,7 +154,7 @@ private boolean startVpn() throws Exception { .setMtu(VPN_INTERFACE_MTU) .addAddress(mPrivateAddress.mIpAddress, mPrivateAddress.mPrefixLength) .addRoute("0.0.0.0", 0) - .addDnsServer(mPrivateAddress.mRouter) + .addDnsServer(DNS_RESOLVER_IP) .addDisallowedApplication(mHostService.getContext().getPackageName()) .establish(); } catch (NameNotFoundException e) { @@ -198,7 +200,7 @@ private boolean routeThroughTunnel(String socksServerAddress, String dnsServerAd mPrivateAddress.mRouter, VPN_INTERFACE_NETMASK, socksServerAddress, - dnsServerAddress, + String.format("%s:%d", DNS_RESOLVER_IP, DNS_RESOLVER_PORT), true /* transparent DNS */); mHostService.onTunnelConnected(); diff --git a/android/jni/misc/socks_proto.h b/android/jni/misc/socks_proto.h index 41f5a1f..ec2c353 100644 --- a/android/jni/misc/socks_proto.h +++ b/android/jni/misc/socks_proto.h @@ -1,9 +1,9 @@ /** * @file socks_proto.h * @author Ambroz Bizjak - * + * * @section LICENSE - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright @@ -14,7 +14,7 @@ * 3. Neither the name of the author nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE @@ -25,9 +25,9 @@ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * * @section DESCRIPTION - * + * * Definitions for the SOCKS protocol. */ @@ -112,7 +112,16 @@ B_START_PACKED struct socks_addr_ipv6 { uint8_t addr[16]; uint16_t port; -} B_PACKED; +} B_PACKED; +B_END_PACKED + +B_START_PACKED +struct socks_udp_header { + uint16_t rsv; + uint8_t frag; + uint8_t atyp; + struct socks_addr_ipv4 address; +} B_PACKED; B_END_PACKED #endif diff --git a/android/jni/tun2socks/tun2socks.c b/android/jni/tun2socks/tun2socks.c index e34c300..32b04e2 100644 --- a/android/jni/tun2socks/tun2socks.c +++ b/android/jni/tun2socks/tun2socks.c @@ -49,6 +49,7 @@ #include #include #include +#include #include #include #include @@ -128,7 +129,8 @@ struct { int set_signal; // ==== PSIPHON ==== // ==== UPROXY ==== - char *dns_server_address; + char *dns_resolver_address; + char *udp_relay_address; // ==== UPROXY ==== } options; @@ -226,7 +228,8 @@ static void init_arguments (const char* program_name); // ==== PSIPHON ==== //==== UPROXY ==== -BAddr dns_server_address; // IP address of local DNS resolver +BAddr dns_resolver_address; // IP address of a DNS resolver +BAddr udp_relay_address; // IP address the UDP relay //==== UPROXY ==== @@ -294,8 +297,13 @@ static void udp_fd_handler(UdpPcb* udp_pcb, int event) { return; } + struct socks_udp_header* header = (struct socks_udp_header*)udp_pcb->udp_recv_buffer; + size_t socks_udp_header_len = sizeof(struct socks_udp_header); + size_t udp_data_len = recv_bytes - socks_udp_header_len; + uint8_t* udp_data = udp_pcb->udp_recv_buffer + socks_udp_header_len; + char dns_id_str[DNS_ID_STRLEN]; - dns_get_header_id_str(dns_id_str, udp_pcb->udp_recv_buffer); + dns_get_header_id_str(dns_id_str, udp_data); const char* local_addr_str = BStringMap_Get(&udp_pcb->map, dns_id_str); if (!local_addr_str) { BLog(BLOG_ERROR, "udp_fd_handler: no address for DNS request id %s", @@ -310,13 +318,13 @@ static void udp_fd_handler(UdpPcb* udp_pcb, int event) { BStringMap_Unset(&udp_pcb->map, dns_id_str); return; } + // Remove entry from map BStringMap_Unset(&udp_pcb->map, dns_id_str); // Send data to device udp_send_packet_to_device( - NULL, local_addr, udp_pcb->netif_addr, - udp_pcb->udp_recv_buffer, recv_bytes); + NULL, local_addr, dns_resolver_address, udp_data, udp_data_len); } // Initializes a UDP socket, binds it locally and connects it to a local @@ -345,14 +353,17 @@ static int udp_init(UdpPcb* udp_pcb) { close(sockfd); return 0; } + char udp_relay_address_str[BADDR_MAX_PRINT_LEN]; + BAddr_Print(&udp_relay_address, udp_relay_address_str); + BLog(BLOG_INFO, "UDP relay address: %s", udp_relay_address_str); - // Connect to UDP server on specified address + // 'Connect' to UDP server on specified address struct sockaddr_in remote_addr; memset(&remote_addr, 0, sizeof(remote_addr)); remote_addr.sin_family = AF_INET; // BAddr is already in network order, use htonl/htons for ip/port otherwise - remote_addr.sin_addr.s_addr = dns_server_address.ipv4.ip; - remote_addr.sin_port = dns_server_address.ipv4.port; + remote_addr.sin_addr.s_addr = udp_relay_address.ipv4.ip; + remote_addr.sin_port = udp_relay_address.ipv4.port; if (connect(sockfd, (struct sockaddr *)&remote_addr, sizeof(remote_addr)) < 0) { BLog(BLOG_ERROR, "udp_init: failed to connect to remote"); close(sockfd); @@ -388,7 +399,7 @@ static int udp_send(int sockfd, uint8_t* data, int data_len) { static int udp_recv(int sockfd, uint8_t* buffer, int buffer_len) { int recv_bytes = recv(sockfd, buffer, buffer_len, 0); - BLog(BLOG_INFO, "udp_recv: received %d bytes", recv_bytes); + BLog(BLOG_DEBUG, "udp_recv: received %d bytes", recv_bytes); return recv_bytes; } @@ -441,7 +452,7 @@ JNIEXPORT jint JNICALL Java_org_uproxy_tun2socks_Tun2SocksJni_runTun2Socks( jstring vpnIpAddress, jstring vpnNetMask, jstring socksServerAddress, - jstring dnsServerAddress, + jstring dnsResolverAddress, jint transparentDNS) { g_env = env; @@ -449,14 +460,14 @@ JNIEXPORT jint JNICALL Java_org_uproxy_tun2socks_Tun2SocksJni_runTun2Socks( const char* vpnIpAddressStr = (*env)->GetStringUTFChars(env, vpnIpAddress, 0); const char* vpnNetMaskStr = (*env)->GetStringUTFChars(env, vpnNetMask, 0); const char* socksServerAddressStr = (*env)->GetStringUTFChars(env, socksServerAddress, 0); - const char* dnsServerAddressStr = (*env)->GetStringUTFChars(env, dnsServerAddress, 0); + const char* dnsResolverAddressStr = (*env)->GetStringUTFChars(env, dnsResolverAddress, 0); init_arguments("uProxy tun2socks"); options.netif_ipaddr = (char*)vpnIpAddressStr; options.netif_netmask = (char*)vpnNetMaskStr; options.socks_server_addr = (char*)socksServerAddressStr; - options.dns_server_address = (char*)dnsServerAddressStr; + options.dns_resolver_address = (char*)dnsResolverAddressStr; options.transparent_dns = transparentDNS; options.tun_fd = vpnInterfaceFileDescriptor; options.tun_mtu = vpnInterfaceMTU; @@ -472,7 +483,7 @@ JNIEXPORT jint JNICALL Java_org_uproxy_tun2socks_Tun2SocksJni_runTun2Socks( (*env)->ReleaseStringUTFChars(env, vpnIpAddress, vpnIpAddressStr); (*env)->ReleaseStringUTFChars(env, vpnNetMask, vpnNetMaskStr); (*env)->ReleaseStringUTFChars(env, socksServerAddress, socksServerAddressStr); - (*env)->ReleaseStringUTFChars(env, dnsServerAddress, dnsServerAddressStr); + (*env)->ReleaseStringUTFChars(env, dnsResolverAddress, dnsResolverAddressStr); g_env = 0; @@ -850,7 +861,7 @@ void init_arguments (const char* program_name) options.udpgw_max_connections = DEFAULT_UDPGW_MAX_CONNECTIONS; options.udpgw_connection_buffer_size = DEFAULT_UDPGW_CONNECTION_BUFFER_SIZE; options.transparent_dns = 0; - options.dns_server_address = NULL; + options.dns_resolver_address = NULL; options.tun_fd = 0; options.set_signal = 1; @@ -1153,10 +1164,23 @@ int process_arguments (void) return 0; } } - // resolve local DNS server address - if (options.dns_server_address) { - if (!BAddr_Parse2(&dns_server_address, options.dns_server_address, NULL, 0, 0)) { - BLog(BLOG_ERROR, "local dns server addr: BAddr_Parse2 failed"); + + if (options.transparent_dns) { + if (!options.dns_resolver_address) { + BLog(BLOG_ERROR, + "transparentDNS requires a DNS resolver address"); + return 0; + } + BLog(BLOG_INFO, "DNS resolver address: %s", options.dns_resolver_address); + // Resolve DNS server address + if (!BAddr_Parse2(&dns_resolver_address, options.dns_resolver_address, NULL, 0, 0)) { + BLog(BLOG_ERROR, "DNS resolver address: BAddr_Parse2 failed"); + return 0; + } + // Resolve UDP relay address. Note that Shadowsocks sets up a UDP relay + // on the same address and port as its SOCKS server. + if (!BAddr_Parse2(&udp_relay_address, options.socks_server_addr, NULL, 0, 0)) { + BLog(BLOG_ERROR, "UDP relay address: BAddr_Parse2 failed"); return 0; } } @@ -1366,7 +1390,7 @@ int process_device_udp_packet (uint8_t *data, int data_len) { ASSERT(data_len >= 0) // do nothing if we don't have udpgw or dns resolver - if (!options.udpgw_remote_server_addr && !options.dns_server_address) { + if (!options.udpgw_remote_server_addr && !options.dns_resolver_address) { goto fail; } @@ -1407,17 +1431,16 @@ int process_device_udp_packet (uint8_t *data, int data_len) if (checksum_in_packet != checksum_computed) { goto fail; } - - BLog(BLOG_INFO, "UDP: from device %d bytes", data_len); + BLog(BLOG_DEBUG, "UDP: from device %d bytes", data_len); // construct addresses BAddr_InitIPv4(&local_addr, ipv4_header.source_address, udp_header.source_port); BAddr_InitIPv4(&remote_addr, ipv4_header.destination_address, udp_header.dest_port); - // if transparent DNS is enabled, any packet arriving at out netif - // address to port 53 is considered a DNS packet + // if transparent DNS is enabled, any packet to the DNS resolver on + // port 53 is considered a DNS packet is_dns = (options.transparent_dns && - ipv4_header.destination_address == netif_ipaddr.ipv4 && + remote_addr.ipv4.ip == dns_resolver_address.ipv4.ip && udp_header.dest_port == hton16(UDP_DNS_PORT)); } break; @@ -1477,14 +1500,27 @@ int process_device_udp_packet (uint8_t *data, int data_len) BAddr_Print(&local_addr, local_addr_str); char remote_addr_str[BADDR_MAX_PRINT_LEN]; BAddr_Print(&remote_addr, remote_addr_str); - BLog(BLOG_INFO, "UDP: %s -> %s. DNS: %d", local_addr_str, remote_addr_str, is_dns); - - if (options.dns_server_address && is_dns) { - int sent_bytes = udp_send(udp_pcb.sockfd, data, data_len); + BLog(BLOG_DEBUG, "UDP: %s -> %s. DNS: %d", local_addr_str, remote_addr_str, is_dns); + + if (options.transparent_dns && is_dns) { + // Wrap the payload in a UDP SOCKS header. + static size_t socks_udp_header_len = sizeof(struct socks_udp_header); + struct socks_udp_header header; + memset(&header, 0, socks_udp_header_len); + header.atyp = SOCKS_ATYP_IPV4; + header.address.addr = remote_addr.ipv4.ip; + header.address.port = remote_addr.ipv4.port; + + size_t socks_udp_request_len = socks_udp_header_len + data_len; + char socks_udp_request[socks_udp_request_len]; + memcpy(socks_udp_request, &header, socks_udp_header_len); + memcpy(socks_udp_request + socks_udp_header_len, data, data_len); + + int sent_bytes = udp_send(udp_pcb.sockfd, socks_udp_request, socks_udp_request_len); if (sent_bytes < data_len) { BLog(BLOG_ERROR, "udp_send: sent %d bytes, expected %d", sent_bytes, data_len); - return 1; + goto fail; } char dns_id_str[DNS_ID_STRLEN]; @@ -1492,7 +1528,7 @@ int process_device_udp_packet (uint8_t *data, int data_len) if (!BStringMap_Set(&udp_pcb.map, dns_id_str, local_addr_str)) { BLog(BLOG_ERROR, "failed to associate dns request id to local address"); - return 1; + goto fail; } } else if (options.udpgw_remote_server_addr) { // submit packet to udpgw diff --git a/android/libs/armeabi-v7a/libtun2socks.so b/android/libs/armeabi-v7a/libtun2socks.so index 9c911084f13629ca24c03fa0fc7fddfbbcf8e8b6..213b93f78bce17c6933d090db9746f688c90560b 100755 GIT binary patch literal 121432 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

x>kQ;uJ8@B*e|rO@<%>4}=bthCMf1ST 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 +=f-mGnwtP@B7TyDkV%3PZhh6LJf^3 zyRV0dHI!K<8baFs{7#KFrX=9kqt6z0*aqjvbL=blpPd@k!!^pK95b~Z|DmOD zIB=3io@|$sV#AWNa)sL{XZM|Jmo-YB3*Xy(w)qk4kFUF^d}SN#Trb8@TPH-5C2p)~ zSaZ4Byf;7O3$jvX38r_(uOX(r(HgXr>T@qP~Ii5m3UWj z>^+JXnbXa5){;CcJyo9UN=9jdR(LM7%hzH6pHn;BYfoIm^Do$#n#h(YgUXqQ-)O^Z zXCCDOHs?8TqOmSq>o>a`Qyd?-+vU%mh-`Vm7HRmvb)V7cj;$pvOs6?7YV(u|wK2Za zT+}W%#vH(xTPtm!%h@7)`Z2QgNVm&7l(s@AQcvX@rI7D!i~%K~(BCe6l~Z$cU0KZ5 zKb1vn)s`E!=9lZXt}EAWZ7bK*KEV6=Q?PM~!noMhQJ&%cbyU(Ze_gZ8lUm?_W@t(4 ztkeA4fa$WDDw|FrIz6@5IE6@xmi#;Xr{r-YW@n={4ObkAz}4-z(hvi#l5vGEvEV8Z zSNL{3u3~Y;63xyC(cT=cOFL2?@wuxIjacc02NK0xLl}>etogp!I!jA5tdLDg-a4gM z>&s$a|F|sXbzg`6bp!rK)koFZVVP_RUaR&Dwcn$(|4zTYa&nWS$zDd=UQ=et&-5QH zi$#0V{Q7c8sl+e%5BZp#y^wB=6C16!`R&41k3B!pUn9_-Xj+d7#rX!mzAOqUz5fsA z%+0heHOkrZN$_nK)i$-E&7Z|kD-*0LU=LVGJKN>=Zl`lWGM=@?3h%&jJ+OlFm?}NO zyr$wqQ!#tjFsl}pK4YnIS+o3GsRf3q+)v9)Y0@_d!j$qFYcyc1pl_5t0q8O2IIiOqV=?M&K)LRT_A7W(Y+~=dRwMeYpT7w5Rc+~QUo}r#n zougfL(pj&hwA^7owV(VM{;T5t=zCqxB@%dhNChT8i)Sm8)d6gPn5K*|tAdmZj$a^u zk&>TRzQ^Gz?{Iujo>jt>m6ha`?J04Ub(FM~nM%vij|C{j2=?dcdtU5wzY9Bf1K=LI zpKYJf?}l0y5qveYUA|}KFY)crM!AB+4hNp9;Bbm?GvOsrk6%!!q_75iwe1ZdvPOx$ znE{%{Xz0>0s;%Skrv1@?v9#X(lb)sjSG3D}KYh*?4UD118(3kg@MO(4VKUAfV0)!E zs9~9Ev!P4HsCzgSJ57=f24({1)J4;^b5oy?jl2pakCX`|?XnQvv!c@0u>|&4cN4^C z&8v9}>+N;eDg8I>l-A+*Eo!fXT%J`M%a)803dc=c_Rg|4_gjz`yamn2TcDHese#Ag zT`(zF9w>dzW?o@h@;Xe@pj``Ygv=$K=!J&T7>5KMK5%mMu>Ap*($xNQQYC0#2Ko~+ z@pf=WfwypF;uC;tcLyldr17B~Qcni{a^A#0BSzPSXW-~QI?E4Zu9>*Sn8lUUTLC-k z=+gfXfhX7k?7ZMhKLh^t>Gzb$LNaKI<}8ImD=if9QfIhA#_NI1u zjUI2S;fAj;`olZqp1yTAtvoP2q3g*?_&v(x)*t zpU86w;oQ(D+cEaXuF)q{xe@Rz|7}$}M!ST30%gqKiH5;<)R@N@T8jB6aINxoHpoGW zvq7nu+7Y?&h6qFto=#r;TB!+9I&t1aoRTXQj8$W`1XoujU`4OF?UY;$tH?+JennYr zy+Tzptf$;5OqR2^w2I=wxtNKi5!hjsc|kqHRM6Iw;C1C4#a~17rXSfUQxQ#IYb3lH z;zOHya6YT(`K+%SknZh1{Ev3I4YiO;#0X~+pzDcuodP$B{d31B(9qv6#0x1c%+$?j znFc3)V??vOiNjl`?!j-ny!#GA{U!Kkr$eo+)v~RHeQJA(WpLg?*WInN8Z3j zV!eJMuO&2!@^pf;&)kePJ0S7hubxG(+#E^S;SN=VW-^>ARel+vRT*eI+B%-PY-Bmrp9`D8(`u+9BuW@`8K` zXSj*fmWm>6*{Q3*;OPYxXMs=S(_kF7YR8@g~H-RI9cO zNS|FgD$@Bg0q0d~ZuX4xe|LTwFJZ(KzpU{5yowQAsHBJI=hxpF!I#BbYtSoe;Z^iS zkGGhVzAz5z=>>o$_gUL&F}wp#$!175N$>^iwQN!V33nZ=ljvGbaSh=Aht4li%U<=Z zwbZNI<@!WgOR-3?A6@aMpR@<3u;8_;Beh-341< zz}tY%AK`mVx$r%=SK-O3!m5!cubqF|z6yD(3RjKf^`8H}zA|wBF}nlh9EFaNa(_EN z*Zu(V9w>ZZB=5xe>Y0$+KsH>7_a4FThePl>e%Am#Mmzcd4U^%2@D22gJ%k8=_mD0? zdIGNJ1GXS-MEYuw5H->tPJ^xz^1OQiRIZl>xC}X09pDAr%K`iaGNZYZpuapvh`*bV z(}45H`wVbwD(rS4w^#ru1^gM{1w@${G8!-|2lWFo0ka@a5syF3GU z4&!?i=@Wog(N5adDnKsoO+|Zl;#WkO7JzVP_;)X^cViyX(LN8_w+C(O06d4XPojPE z0cmKD59L$vn+!+*%tU@VAQ#X53C|tIGZz4{7~fzv$^-s}@pRz+CEWj?%ka9z{WRo_ z11!S*Uch2p&j;KKSc9_6*BBp^U5~Q+kiHw~QMld;Sc|@BG4|~k`~4XESs1&^7~h3x z|8l@+%<)>ty?0n3hnj)@7 zOOdA5;`P{N+q_TbpE=ILXQCGE4C@YE_?|fRmr$E5y&cu<@)1gL51rzF#p!u);>nKj z=I3lDK_`tCwvUCz=XAT=@Mx3uAY$zQ()L&2O0~Zp_9J9c^l5v34yeVAvwr1u@y~-_ zI_>_wRn2Fd0w$dpZJ=N2Jmzk|bFW!J2h7TCZICy>Ph~CQbCZc<;XmOt*U5(+8sCE+ zl39Z*t(e+e1e?7E`8~wZ+Qt)6jn-Ba@9EO&NKWk8Jv|tA(A(P6C*?|lI8mUsrk*8; zIk}OX!O4(Y4j$BiRND)-nKh#i!ICHFPj*3KaS~?};{~5}dQbjnc2 zK@dg#Noc?XHp+WUuj-1=Yk(aGTH!bd`@1Q&2K+}I?~l+^8quwv`MDRyJzUFVQY`ad^Ey`Vf+kPb5EgA@O(l`it?qUHxUH`G|N;nkvXg5 z=c4E7+jRV(&5SXvBNf6yxwd`)Uka_tZwn?>AH?Y7db035mD&QA=hE@25C)`B2TH<6 zwgHr^8SPlpf%l?)unF|UHm8UK9vacr5C1a`%HO_BA4XK^UV%R=~1aGgVHZUYdPj!ao2FyT>TwtLdOlEL&HF|owu{g7%I`ITf z%cZ^DbtD=8w>WZ|l^&seB>3n{%6N>Y zT7jE$Ql+#Fx?4IYv%Jt~Hk~;M4Xgv)qwltpkOWh%2|nhylXeE&0P+MSkNSVdd+WRW zSes0!>WWU&0GTz(IoN8q#wXQxZ6;&9q$|zRAeY1Mz>n1iuWRfe2Z6+d@<=s7v~fDC z%SwUtwBnAF;3mK!r6vf!fe(xJbQ|`I-sZ&kOgLMdLchQH^clL2DF;ATFqMg{O~zA% zwlFG%Ow^rbrW^!cr%!RFFxY3emJUZ#16_2eyKn;g8=}rQ)Z`QTM%K zz2mF(LKF5@8}d9@<%YAXQ>Gh8rrH%bcC-_g;k4Xid#u@f|Cs`7q<27iFHnyaaT2`F zN$@)Op9z>bOxH1g50`2PP%7(073HS@kiv!gs}@GPf11KLrr8o*J|T+Fa}=Y;y3@tu z&=ZFxg>vZHvzD-)rYJi2%=;U_Yi)M|`{6xDWIICeFWuaCa<-5yqPWscGNooQNS7= z4VYQwe%6-Ze%>}*Ym9S@K*t)bG9&WYK(cK;+TpA^3BLtOX$vm;zS({qV&JUne^@r$ zH&fQkeN^~EO7__Om^;grQF!z8w*jw*Y=gE(l>HnJ9^$>x&)PmwETGAYk^ZpNGq5&t zBN5YR4&`;mBF2yvKu9Ahk?@YT$J=}J% z{jk*!w{XBe`W)TkssPdox9}Rq@E$GIsKHWsoHaEEkw3bi*{_2&%CDTfr%zZaB#kB6 z`qR{>N_*x%#g7z?zvarSu1U}=pNFioP@pUA#(-}hmCG@Z%YC{J{1kW`V1|InL9O3D zM9w#w4x!RE(Om!;NR%xhg_#(6Ixi*5B?xYBzjV19GpX=JSQ$weW$Z6H&apMylBXtb zu)a7@zi*;&T-fOz9iG#4P3P$J%)Ye`r?>E()A^mQ$dq_ju~OI3ZWHFv3Esjv{R7An z2UnH>>$QUp&zXO3Et-q-hIl=USBLHkd2 zTkvI4m2EyoLVG$gWs0jpX?=P3bm$~I#g}+y@;$(m2F<(_aLTSW;O?-D3G!SuR`05K z8_ma9&vtv)+8jc^G`E|s-ft4q+)k`ryn7lO?)B6t=kqvS#=z1mK2+61*aWR1xi!?p9BAo^;k?M&-Hydw_M5%6yB0CoWO;r(~x{chT4yq`zjgMf6DHvm+C%ixht0Q$x=b~|7=`+Of@jlF&xd$#5%S)^d*4HTC(^$_ z`cFs~A)SC{ev9-aq!%JRfOcEau51AK6UDzQh8Kr+*LZ&nD5ynF+14RUa8nDjLP2fI zasMV|=U9?++v)ImF}_t4TyEG5KJ9Xu_#9v{_Tmiao4!GGCAtUS>mnH$4(PO8%%sri z_!Jm4D0uRVi&ri@dWT|Hf^WW&2~3vmG_@s2ZDnO<5_4CgN|lvxy5hjb)bt>uotUiZ zQN@xpv#eU7x{Jx0Y8yOLGPZ(09H_7mk)$zMds`u~R=%`l=~NTeR@BMnQ5#6o#afCw zB!)I#QFo1-ThuuY>5W&4Iujo> zbd8&x8hYspwTU8#jS{v=)8M3~kv4+IZdbGL1azlE% zm3lN*(TM$j!57AcdOQx#ZR|@5ZNjsuw8u)is56Q7*p>>v1+s+%RWgk&9p+tMYCK$~ z_^+`hAy1O=;6@u=<#E%w!w$ zFUKXZQ;!juDUh6#w~P+H@t2@)nb-2KMn|zv`t=Xl*7Zw|2KuGNh?UTrjF@i!OUTrA ztbYLd5w>6I&>-3^MpeHUVFMP)>9x%CPZs;Hr>LT_%-4Xuh~tcsLYa|_DY8~LX?^+cI}m(pg~K+5TYLF&+t zm?L3pxu5x(5qDDGqi1TYzc_A(k50d|SMl(E&VRIrFm_m0XzKf=MR@voSRnSpqh&6y z6FJ1xn!)r-#mIlwzX(w&N`#_;fz@Hf260sHbnmTa&k!h^W?z{o} z(habuDCXahqa6K^Wj|PeD}^`nfPSEMy>=3AaayOZ8J-PB)mD-QI%xBa3FLK1xMAr+ z+p)fL%?0{v>&X4iSQTBEWxpGz?cKLTpE4t=R5;Sq&8SkDVun2v|;4Wy+A3k2HOTN4?jP zZvlLc{5{C~`B_3PBYhF~^munF;Ll#QaR{ekU#^4i!DKtds_=J#r7y-)(9|*b6Jt63N^aK(8YS+sQEOv=Li+@|zINz3a&OZ3-zAdZZ(^cZ`ms&b* zFHpZz;k*G_mfC?1&tgCzMm6e&ZpcYzYCb#;uu}txw|u)^)2hV#d8tpzy!=Bke`tQ6 zG!cFR&rl#s7aW1IlF$lHm$KYOF$7rv>rnom&H0udar3tI{cd?rrz;VaV< za00ROEMu%a{&+F$6HWvZEi+=#rd6K&;Ma(c`!azI+t$XK#Q`|kl4?bJEk>#e$zEwYLboIsp=opmfc5Bk8ry`a1!5AVo( zISPBI4?6iLhE}gl*}pdS1JwM%did2Tw%;CaF~%&a!;amK)z!U3Db1h;=H(8o|15mJ zvS0c-u-MLk&#!bnfY!-MRQa#4_dbO+6YSOTOZ`KZLbgX`W3Zjcihw@?2ODD6N3rKS z0Y@{n@CW@-Ofn}658ykWkpF<+_&eeN=kRuWfzoSI)-P=d#eaqx(fCN$Qxm9Z^OHE6gA3dEbgwl zK;F31eh>CL5!yP)c8o5o>U1$KR~anT`laLmt&uV5d^%|HIauKUBL%YYG`-psxI^TI z+gjcae}|gp+rw=w54SZEZ_h$&`w%gJMzo-~trD>Z=!#BKN;bl-gkpZn&`iV)>3z_e zc$bSQVM@&x=3`B$04EYblLA@*D*=lE*Aw8w3-AIe0TqB;DT<4aHg23!0WlU{>D8Q!h=cn+U zA7fE4KS~g&MN+%WoztzlZp&LWK~R@CVNYkR!0uILxg&A%#m}vmRc#+S5x2-$7pm#i z!y~V#Gr?NrM8qPN(qheJg`JFPu#E3yChqi(qw4^25XKK53v(3W6o2HHVtd+FVvD!M zhh73*m6#W0NPssf1DWtAv-4auIvZ?Qu!@=WhYqlzQ=p{2soaN3m|w#Xdv>Agy)r*sm-@BL0Vv_>+W;1AK!# z*tL)=9~1IV@EA$R%K^jG{$%f<0QmMa?x>;2A4sz z4B#?Ejh8saL8AuH%#9iajpH|)nQqPG8qrKAGZTSk=|;55mG9@R24XU~-{<)~&+m`7 zs?Mo8r_TDG_q^v_G)dXep=C)EoP0Uyx_8U2PMx28MKCFhEp9?8Rb8D+e#%Zkw|p{y zS_eKF$gzh}hPP3MC4gD@w>^K<-4<=v`pU9D&MvcaK9a~K zjKmJ3AMMf3Id##kutnNBhgW=ppTo%|z0J|HG$s74YTLWCmb`%&z(3(C3Q_8qPUxSc z>2p{We1xdnYHka?U6&v<@bDzn4eQ%eQO0CI7~id_T?*Oe7%4^)Dz(LLhphaWdIPKv z)_U5Uwyu!|Q^;h5@LLqv)-8T$Bh-@oe7E|Ioz`ipNPXI*+~!`q=OUYq{O zSC9GM4jF`@8NxaJb)h@9)i5y8cd>5#IE^>Y|84#F^Z~vvXSmMHR)l*g2P#vzmd5ly zoW0*aAbsjNPRzc_Eh@K(_DnDAA~9&l2dcpZnSPE^{Jj~+dC8igCPtwnfkDrv_*hkT zD|>RVzh~^Qb8j}!UlmV)zh>76dDv2!1>l^S3d)PX}oH~e3-P}IZWa==txd~v(_IO;v$XM zXKhuOo28C&cGvH`VS2Jj56h-j4gB6x{LVnOrma3ZXw^gkUo1^z<6C{@cGO45LO4H$ zf9hCJ;RC(2gNyeC>e=XWJH?JrG&as^RJfVkeQa!}?}n>}?Hh#t6 zw;L<1pCv`O_$@U1pzWE!LkFf0V+gH!)bj~b*w$DiW+*4Et7EBp=kb^CIh5qoN-P)! z&suEURiD<+-E;guIe1KBX&vzV#2W68Q`DYPnbwlzgZ$%@F6VpL z@xJ7EPtjF_wrl${dRd1(pbiq;L$OXwKwEryZEBqltx=12^d{0`Jc|smO#=ut+2ijo_u^EX;0ZJ^&9N> zcqf1c>HuxSMjv)*Hd1M8LD$;QC;M9j=jub?2vl2~b5N3sYxy%YP4uQ3Z+0Fa4krCc zgy*_$xxRU?OOy1?f6|^XHu)st;RgnEb2oHuQxEKNrJxkyT8#7mms;)Kd)TVf!gKR45i6Wm0|z6gZLjHk*p#ZwO3%OJg3&9%;-LUipaF6QuB&+$M^ z*82Dpo^#OGpwoQOD^zkRWM#qR|5_1jb@c}op|M~_{8@|lUuC=Pqs}JOohe&5Bd*~g z=(90@vXfG^_|Q`2uaWe2O0=I#neBwl#_~k+zwX~tC%mz)zF>y_oUiQ9^{?B7v(T9< zzu2N#XoBP%*0I1tSl5hY<^;WG`6Ws>+bL|p$@16-x?g-3^(2a(d!W1M-7oR(5N0S# zd%0VBmvDhgs;Dn5tFXV^?S2=w7h!KYM`|ovUsi6{J7w?uOKki@-jW&jc^k{#R}#%- zcDpauN_%5!8yEV8XkyT1I6qBfu}Q?|+D%kGXA|TP7T`iO0L!b-i$iKkY`Y(kj&zjaT{WXfc^zVDpn4j2d>isdULBI%ua=*9A zUt_&2zutLSuIwC-x#@*%ft}b3dI0kPaR}!FzQdl$3pfnO1xTPvAB%tuqoa(;;Nzrv z87o5g7Q&Huo&nel`gJwpqK`2)65&~ZX6WF5iTp0yp^FbWZO=OAD&o!<6`Wi$>%9j^ z2bhgQ|G=t8qVvhZ4R!-)NwalV;dac(BUmMNt=n#gSIWtjx({Fe?&a<9!vI^Rpy*R@ zdiGD)zUq-D-YRwQ~Fx4y&j=-C~N-Ij!p;yRwW0c-2-+Vk=3s zdOgd)=TKgXs>Do-$_vIC&X(0FkBGw#>o&wr(^i6lcKL=rd-<1B`M{j#J~BU@v$|d= zU+&OsWT~LG)(xz9TBXYP3V0K^4sUo5pLJHw_@Y7EI%q~zYhxrY#$s2FeIcyK(Rt}x zuzUhdnd(81W!d2w37!_^Z781s?$rQiM7e}jDC!OKrpu71Es_dRww@Qv;CU9gi`MD! zk98qiLQ%;AXx&=iXKae3cUtTdywAfUg6GB`VPQvbX4pr22UcB{Gdsf;QWkkf!XiwO z1e({Nfm9uzoQ*Lmw3e!tN#;U}w;Mc{dtGyY*FI_ybmppV_{DrDfMFn}+5hVO>=I^{ z^W#eqs`SD|Mf9LXhc7CYa*|rnF-Rq2Urf(DPQ_{zBh~=2U|?jXs*8%vGhoZArCHb) z@Nei};jH>qgn8#SYpR5I3~x}&Q@e8krjLAs{BXSGd@I0A13pb`)#6n3;dfOE%NXIe zIWNoSJE&}vnjx8C%ma@&Y{?{|*Rt@PRyi-rUG10UtL;H8&JP60dL3pg2|SfCfEbJu z62c+=E?JOs7wYS};p;SPan2B&bL^-1qnG7RkmKj=tl^9XcEgdM;WXwBAiUr3IOnSv zok?+ZBwhip@O)IqAG3ql3C4=@cXeeVC7S9|HJ{hx{VoOFX0Pv!QwDM>`AD&QYy`zGj92 zBmVW9wyvJ!jWZGU*#C|t>#I2(x2@A0i1_?#GqU9@57~X0hnc)|6S2NdFodgE&npw}7&V_#ir=<~C@#!TWF5DyW1=`A1$zC8-rWckLXeyT!o+wxY$>Wde`N|&4J-(T( zI_-gw=VjdnfkuexS1AQMi5I-Os#?UWu_Ad}qSz%~mV&Pke#)n-I-u%AwOoGSNEk_(Ser*n&N5HFOhxUxKkUSu?id?1MB)8Hb&|ZUdK6?X2qM-=)y* z&}b9aI^&cmHHR3lK43Im0FST4Zt`7#ZsS_$`dxr-<0|y&1<)$GH`myQdvT`4j3Kje zf9L_NX580jF$3VyVvzTki;YE|Xv??;P`04$n5P;e74({FE9y8-8MCn>vlLi&63y9~ zE#_<<&tMvW?aOnjK~8$S*U`gpDo%mT|%ySe=)0&{=q&Zd8hM8f4Zl%X`}H zSIfJr&8nu&^xv)CJ?m`ta62r9ZGt3x>2FW--}R$+3wqzhb_`QTBI*;>n))4;?lJKF!ZoT_YgCU}yA8{Kt32=WMz~i|U_Y;6bfFEf~ z@g3F#oc*l@|IZDcY$b42m?x_(hbKCW+!mjM zji>=3!B|qrRU9wmE4U?^3LCVOf9`j$8w2WXl?OId%rripk~*HNdG0*83giV|V9mJd znPnky>ZOHw!A9_kxct1U=bmGSEpD76I>7mBHQQ=DNzh+lOguuP`Xgu_>*0ZbbdswM z*|1jywrmTJz^UqY9=xNKm%cNr-?{I#|^|37NeUpwAJv6LAv|*8`qbB;u#tK*<5m0KUb$FirI; z`Y_#9PL*nzNY0VFsFUyV1HkAAQ zYp822cq*vZBjBaXMcn6zLw!`g9&53FD*9J?d*g)KvM0>gXVa+@te>uhjC<6%zc)jM zVAz<6$FPzPw7AX{VI;iY3JFR>vE#dM__Vux^yV&TPww;3yFGZfR}ab3ZxC-D3d^6T z)cEa)w;;`D6mJ`v!Md)h@s)^oAih!kehj|9rN*yC{A%QL5E6Wpj}`pto_|U^u|mF7%2`blG?wom_ZN%5lYBJ`&c8`Ao$&k~{N*iX0Y@4# zf67qkIqIOnHm1)qM`WR0nPTMwr}&wL54m3{{J3y~n@c&-q8Y}LdpF_W-ibM`4P{<&Z($spxG4j z$n)^cmE}GUowO2MGt9@`ELeYw%4xg&C8SDI=|4E16U1Fk;?#42M#e9E;U9m8-1EpZ ztjKEZVEN!fZ;Ot2sNf}=xUvRgC{CZ09i44U9^@RRXjIxx=f#C66SUtqR!3z!uf&PZV`Scy#w67CuJcNwXh%Iou@u)-@r0X7 zYSF_suv+KGpigKU60Wgct+A>rAFeeppvjzttJz$FYpnTr0SksotAL?+;NUjML+f?a zy81g>7b);3q`(y^(7F%Z2)FK3^!|mx_!r;TvL`s$(14b!EqDrfouqecD?F~f(AV;U zKE!jd(8Idq`c6UI?_7-)IIFA7>R!0_ThaN>w-{}@7w#y5i2nWe62#n~T{QKu1!ZW~ z>H}pwq)nl#Ns^-miF~aYpcQSd&04qxn3p(oCU8Yh(w8cI1PwT5R>YB1)-v?Kug_U9 zXT8u!->Yhs)+(QytY ze1)%KCf3tFXp&}Z8)jmh`WF#1vEurEa4s6VVoFgz@Zv}(*Mv5|8Qa(9&-b-CsL=#2 z*4ias@7U$Mh8c8HpjM!Mp>c?o5a^3=uQYc+kCj39IhIf6i}oWAy+mJAdo>o)F8Hew zoAY^a)n2^5%X#J-vX(NxB-Cs5mE_qo)O`eDiwCY#30EV|LZ#xvv+slu+uQE{g*UNk zd3)!jmPQBJzWNJ#j>^|1S9b`aSVSX4TDbNb7EHOZORe|jlJnRPd$d$b^3_Hu4S~Pt zbVz-wKeeaB=h~&>b*?Z+nQYD~e9m1`*jQNS4!Q+#ZSUACTKLR2kpT^u5oBw|;*`G0 zgI!wc;g@C4zE4~@RmXhbB|{*G@uDf)alzJoK9Lv_7n03?ne0(?|H> z#T2xQnEV39>%3+!_BoJ`vD|xsvpC>G@LpflH4UR#z3>8uyv!J@=P=vn;2MV!YH2(N zTPGN)etrudGQ$kuJjFbH6~^m4#WejD+K)+(&N%4hGUFy`(}PX)l?h)x3Etv=dH;y( zHuW8NLtC<0 zw?A-o*}KbeHfU4N-N1tKnRX8g_P0$tuE@9pT5Dd=0P&;N^bSgDQg zyO^zxU1;4(Dn9(TahuwHuZ!j;SLpbEjM^zKH%V-%xFt&w2cp!>h0$ncWw^$&kK7AT z%5Rm=okhK#zx2VuN2zp=b3j%Sb%RILz?LT z&wJ51puii|nHbV*Skgm^K4T;7U_GP=ZFcZw3_g;ZEya_7C&7P$p1j-y%S2;Zb5l=} z3wE$rg9YUZ)4s>+4QUh3#Z&L8oH)=D+J}|IJm{q~5H%Vbp2eUrz!%a-qm6ZvC}lb= z?gGgrtpZ&nKJX!EBF&NwZrc*C8$1A}`Bl|}ZmCPIgeSi)c~V;jWNZIPeq2k=bVBwS zupJQIKdr7E0+}+8lM_Youe;#44{~O8(z=nB0a(Afocp=z=lst_s{5E~b&uj#_b8&eN8$a|ZogYBa2N2R_#&57h1pl0 zXbwg|{?n_0&O^Yf5kd)&YkZu0^2ILr`J?k@y>AGtQVjN`s3k!==o0)RXA=+OC5P1w z848@hdx~oD9}~34dRWkH^vA338RTm`%U*Jvf<@g^Equ(9br$C|*s^4s^McciUGf+0 z=A2BYyI%sXQNkr)f7g4uV2Q%gE61r1zKL^q+5=QWpEm*bDRf7B5}!E- zI`Gt51@#=Pk70#VsTW$&R(lE(XF&=g)RdKj)i#wz5MQiG7aHuvEd4of1T9u$#+4=x zYvr_@zW3VR_XR(AKe7M4(EFY^yx*tqf%IDa#K|kA8g@SR zj#Q#mQ>>=w{m&0mg#W{z?@8tTNE=*#&0X(3YC@ZR*N%A&*aesm5CQ*x&99SfeS5K0 zwf_Z96`V2zHNeqY+U<;DqcMkTBLiAtqareHDpoCZFQzdijI=QK5{)JG31+%e9P9 zt9tb68x@DB(Z4A^68^{Efz{Mnq!;RKR! z)09A%OA=&&RkcSa|`HDaQi@Mk>$q^R1}Oi>+B|ul^Y4 zzaafiq`jX-#rIN?a)hBK;hrHy$>HK`mjo9)}acZNM)){GxD~riq&Le>7Qg(`J%JZ;Z4GISm@llK;1y zbp1JT$jNdfoWrH2#M}he3J2r|U@-;P;>*ob?Ww^dTB13zeyhU{g!p*snx&9mI0 zEjCEnz#2A3v6{)w+jFf+UO^^>X@`Jp8azTp4gVmg;x(bc7yFJ05z|)tCzWM~qMhY6C=2HURQ*K=74 zy)$Q;r3EvLzI@46H&-#6$SUnz#bkP3T5X^1H5lG_H1P{L zDZU^}`b9yB^hQCWbgm%Mztlxv5VgPpA2V2TeH9j1_j3yi(Tat+ud`x@gdFEX8whqZ zier&0?b9i@c}k{jSm7V-lY9j;3ugZY+ONZ;DUv2|LZBAX1wPa*l3py_Wl!}zI{VRC zFF95^rbwxhE^tC81U?l0EbS~jh~3lt+4Jvw$K##mjMN0_6us}~Dy>|ndWk9+J#y*|W|`1L`l2fw_8bSwHMn@WBLSAO^hIb7 z4dl(hi=_S=RG0-GBo{cvJybZ;y`k_-;Va-le&U9|1tm#54h}&H_>j2^r{uKOSAv$G zdwoq8&43deOU_-${A2?+tQ!yyPjd0$5sZ05lz*0D6^V=3*uo{BaNiVLAm4Wsb8!gf z9s_iI$JhnH4nQ>^gni6x+^qls@GW#BzXaR@e#^&w9-ss?>DT{&To9h~kXJ3f+l%)` zgc;zwe`2l!P5~MLdjLBDF9Mp8HU!AUvlAd7T@mg)0C+%^wJd?%dB}JM4HoXJE^(Rv z@j6IS{)S77^kHnk(kJa6OwF$ySp;dSE?L*?_NS>jOf)k>a(<`I`T3#oE<<2lfB&#h zq97veOfOllhD@1<1?MT@R3TWM*Fom819B{B&X7E%lWdf62xa;wJHxsHYq27PYVdJG^QC>(at+80-84`s5w-Ex?NKQH0OzLAL@N2>THJ4$qwc z+LxGsN9SPV>zg1)j`7xuo3YSY4zY~bhJ)a5`%dy3DQI}^4C2!nmb&&3`g!Iz!;N`FixVxoNya*lp{_S0*v=#4$_)>CH{_R~K{uuGoi5-mq!h!F+<6hffgg~xq?!{#mJcSYWelH7khW1scD0A&PFzY_$6;p^l4rp$ z=6;;>CE@L?cAC`**mH#BN$oU8t?i?F>$y|??@sd`XitUY)b_CN=UP|+A?cKD=Ixgf zT_wrSNx(0#8wH9m61F&s-ctB#w1y#b9q~_yVhnq-2+3cz6SWwoQ}R7_XB}+oaL{5T zYeVYp{~dl)NG|Q5QgpPvdTIOLK@$RI0Xn`0Ee|LLOb3(#J^{qwT`AyW_)LOyZIFAv zuRmXdOwD}PV0Z*Cc1*>7yGlLhG?jB=Nd5#;=WWp7yBnv?uXq+q*5qCdJ`Xhbs$U>3 zia8`Z0%3^(tu(Iga0pzHhWA67f$6Fw#Q@ZB0P0r){_k-~i&Ih^PDvwhN~*^xsR5^? z#)>SbZAm1&BZOo#csv&mQ7e|VO+)M659jG>*)A3uN3wGT$EFdxfP~ zL}(Q9)zgxa*Y)`YnHCw6GulVx*qz_&6ZW+y>3D&gqPFLG@T5Yp|7V1pXh^oV#r6Jq zyV{G}&2cW%8|r#3*`VJtK-HxS$=xkKr8`0KAz5jGYtoCL)h{r1pc1mMZ$oBp7uHF{ zO#*y?_-4R#JWl~k!!zttCh;jf@`MKJDGi=7@Fd`FX$ZcjPu4(chMPE|c-r^@-WThj z!J=)iH;%h?`Bb%Oaav9=u5#y(x(>ez$T;8;d7~hV%{6ylCX?*c@_{L8q=ceiK-DTfu zSndKZC{ycasRy04mtdg^cZ>6#OY78sL^X&4a%Upt4%7uXKr!YpIKLui72pw%Yz9PN zq;VoVJOKC{3wRL`!R*7Vf#?y!RV?M%pe73PtIKH@mKVGmycTPu+8(1c{@7qpcfapJ ze^l!XVK7Q5{37+Rz9H2_Iz2w8P>8vn1uU%))zMUHTE8^yd7&^qaU5O&7|+e%Oq;P)cDEMSJ+rT3tLk_z2);D6W! zA`KJ^N&~NKGqhg#l&Pa9@`**9QgDLJoZE(PGh0O0ZjwSOE3*$eJ0iz64AiejOV#Hv4$w9O{)jaU;6?ax zgzv-igtx$N2d()8fap>O;2_>-;e8U`XX1T$y<3O%4(H5*zE`JXkBSfWm_;YFOlw2% z>>5#ylXn3CD@I2Y9=tLp;he6z0Bi`7^3j!h%5uD?TQoSg6$EVsc8e1Emx5he!yC;} z{NGyiOZP5mU&2G8o7?oTv)Y;A{FhW?9}ADSdgwst^LOL)>1&+3@3AN0q|2O75)5A} zvH80p9s0Erm%m>PC+6>+5$yxlq48@)%qL43duLokC<5Q4=KtBrZQpNy5j5uJl2OnY z_|&KIQ<>nIr2;4Ls@&r#l}?@C9LA`eSGRqTKLQ@VSnwa$XtiC3dPaCt*RUHWY_YI^V7B4UkjLsNVo8E3he4QZe;Iiy z$5Rq%PIIFtWb3od&}?AlLTHt2sDHiefc;Tlq%^VaQR(Bd?PYcLc<7kS^)pMpkByt> zwLnLmqzE0L@%Oi+NhF6Af+qJU%>N)(W3!D~K{RFgfBU2MjPdKYS3pB%@K z=Vqy=H{i`O!9N4miW&C%oZICL%2A#9_)A8M4U}?NlZWKb@DJE&2mx(t%#$GrEr zreV}h%bnJbC&v0QR;t52c(Fxya@Zvb>)a9BE@FhlUK;FrOFdPuRgS5xaLoMHcSBu6 zk;~8@SZ^5a8jiT(xg+{>uCWH?V0%#RhRpt6;Fc|bmDr~~k9++W;9va@_O^iXe}wHO z&BuK@AQSHz)&nPP2Tccf|8Lj_16~E30?@v0{g?Rm8^|N#+jsD-72i#JlQA>mctA1Y zwXfhi#Mc6>_>UiH`}WB2x9l+iuer*#PQ^hMA(>h4G&KnXj5rXVO+Tw=gX!@n(ga)Cu_Gl24-auDL%0TqQK5{WmFcf1ktCKde?bC$6i#q<4m-iPO7c&-7U{Z!v};MKuP zDCygS76oVEK`$?zQMM(QKj?AN8mE)2@VekbOq#R&!4hX*C<&obgofqt;4xMfmOm&U z6rUSElS5g51Nn}VbCR4j5Aul3c2W+L<|Yx1x~1kp%Hxw?Q4Zm!tp2B*{--(4um?Ny zgX;ZvAEC_kfW~duhXXDG!s}X{$}gQ11*yIfB;Po4!*Yj6)=*&S8}y=NEst_rr9*{Y zWoM=pa+)5L=vpD^<*oMg#ZkTPS;CV0!mAKoen+?zBkbIOyzZFidT@@X179C!0FGKW zB;w#fC5Zb;+^q#9$pUJiS$Abe^bW{W zrH<2xnxqvD7W`|^-<8AxEQ$WZxr4GFHV9epmY2kt9w zquh&2!)L1_DnNUpS9d0|Q6np{#;n9VfIg)`8jf|oDiJ(Hg}05zNt>p0TE=j%b@~*@ zp#70}tSjwf+n#iXn zJ4)@_&r+_#ycb(WK%3-QZ64-+o!3o7`#EG_6JL57V=S4e5Y$gAi8lN8Wa;HmJ3i*mLIlqBDNM1S)eOf+{ zt>wX`&V^=eP+r=05^-6~g6D6cLE?Z7MaS5_9$l*T=odGshe|!^`{=7L@m0n!z*tz; zh$MN?V$6HykHL6hjhmVuWsjcV#IKd2x$uU?9)>kHLG@eXRi3xAjD_Gq1VN3D+z8*A zsqjb;S&$eWg_QTQKkm}U{j(RtI6J)`XR}d3XrZD9 z(t)>see#BeBd%P^i4}hMWXV|JNI@@5G6K-5gr~hqF%Rky9zv=27q0S%9^_!|^#cF% zRV-<}bI%O34`bX)t==5qEsa6fs$VhU>jY&%oddR2f>Q_>+1mjl&%wWOP|oaN0jQK( z{_e9PWQ9#goNccPKf`Xf0T2&Jqf(6ANORUe)+yXRw0^9V2g$~RX)7F`q126OxgxL5 zec!EAbv?_3r7BzS>D3ooQh&6jrK9H6X|%3!>X}L835+=dwRTXx-p(vpu*6wrV9B_~ z_njB<_-7UGMo$#0Z=UacgSsLG3w{ELM@h}YtCS~`e&7F~j~+A77+8RBaV;e4qw{{D zp)&&Mw+@^TjD{cWOspRB`Hey74^nwaPIwaPbo5(D1*flYJf&(~FYt|gBmU5cH^|!Z zTDf7lDE|oG$g0BcMXYn8WOrV} zs@E6Fb>6e&`_LoK<^3U?HX8a?0O|>AKYxe^H9tY6bb%AFCapv{_h2kFMsV=1(m0fQ z>x2KG-umEfUhS>lsJ(SYc`O;d^%O>lI-Xlf$g2=eMzPZl%2(U8SWnAUiRzK%L3vRN zt*@&i0LYP~;7QIK{BW#F6P;LT^L3#(2I->c2?cYIel8@g7e&l*PQ+@@!xq;h7L;9x zn|DW?3vu_ifD(I({&)g^99b2V$G2$kCu>BSGgGB_;2u{kUj@pSsFo)v?`nh0?ikGO zp({|97%5V!4kdDD6p4>_S7B7M-tQ{$oifBal{ozdoCs>qV+ACe%kXH(Im13~fw6So zx9mAxFP`E_R)Y%-W-OVcK5fB*5-t?O%orV>;G-x@tqw4nTDNxo3S9S|VweYmRNrJf z7xU7{%9k8=X?SI+lvsH}8dk{{j*}89?S-B~aPu4E%Flw!4f&y>0SG1Q<>7)#Q_hF#VEdx;}%^6;vgqgRuR<4iOFgBI5jmVMR}EQ+T_= zjQ>K*Qegvm@O4l;3^X)GS!_6;Zvz;GTCz4lbA>_&;S1>CV8AG~B`4E3t$m89Q}WzM z_>s;>1vl+qP3~CthoI>uxr6ZhO+JLe|8=<;Y=!f{m@JtGzUY)M;FOF!V%sin@w_ai z?{4g3=F=@1C`r1*oV-t|$sb#8b?#I4*gEBNo#FG~lPEbXWhafPFr(b3TSi5vRv<@d zAMEdENuw%Kce8c-;NzO`d1`Yw&3i~=(oR5|nNWU`jnITrwH9Zmd>A^LH-&IbJLUIP zifsqJZWB0Q;%0DfmSd*rB_Wi`b;|qk^*Ld*o94Vkhgnzld2)yG?*rTHIus{=Jq~HA)sKHTvUmU!CFH#7j`ta1=>p2LEsVkuE z2I>y?DBK%+!vgMMd{%Wm9`QT-!{yhpzNoV2o$@x6vr2u&O3qs_)5_IQQ0CE>Wp_NU z#s%vYS0@=B%WO)Fna}Kz^N;W$y@?;St=VW^U;pgo zfgJCLycyP%3$voLS2|LqlP!Ecq`#O4U!aZit5+R`-v#$-Av7J%El$E3N06);kAI;1 zx9^_GC9Hm0Sy@Z%uf6_Pl?OqT$7%Hm^pwi=ndbcj*6g^{u+-Oi#liN3^xDQl=OO7u zJJZdreNRAPI7ajElxgo zP65Y8{p%;b{c0(gq^}FYTIM@adIG5X?zMGEyu)VdyRhiRAc?4x! zYuGv{lR9Oo19W=r=ig0sJ)SZd-%Re`EqBUg?Va+g?QS2=5CJ;?H(q8e1$)Y=cs2o^ z@Pa?Fm9Z~yKL|Jm*aet?xV5-%1gr%73gO3apAIl z9f0+K8o(lYKF!#lx8Ps6^MC}vLd4qui#OnW6ZcfW(Km1whIe{A{|Wi&@N7c5Ss#K& z@@vLkejeX`2KhI@VL%yR8=xr?G7A+b8=f72Wq^f%ONe(OpUt13e1L<1dyGhf`)a^S zz$YIwHW6_i)EC%EQG67CNF5qtiP-fi!`4QwM09Zp< z56ZI*&pQEs9087`zK%ro;L#40;U6=0L%ugK|cQioC8ck zxvTIG2VezYG2kZtF(3C#z~Awlfcs#y=@|4&9>zl~VC-h}3&K-B#sBdvp$$&~5&#Al zmvqP8{;uRh*xARhbl9j+`B#h)6ZrW)OSBfv^ z0)JsPsoFlODbW=XGHJLC#GlYzsg%A{$`kbgjvc?k3OeQ60SZIv@7D+~EVoZ>h>Sa> zlux&SGh8+)$!Q10$iSm0H?0NUHM;nI8jx#HPn)y2+M)+LWq*J*ywr&C1egyP0w7ri zlZwGsIAHI&$JqZ|-4m9tAp0_UiA#!hb4f>G$yyt1`hYd?uVX9&s*%SQfGS6Uv|JL0 z6{1Hjxg)3FASb;#)5AH%!lt(u`TRHXX?hL1%K$1*J|N5&x&;3NlZ3%oKPRP_8?Vo1@H)tiYwQ|V zA{OhC>H_AGEV$Lf3<7o{!%LoA5j(CiXex;wYYQ4mX4fRaB2uTE*!HF}m4h`0SU@Fj zm0=sGvEv(qw>{7?ynMrRRDm0(lfL#;$CJfntP!3q*VlJ}np+=Z(x*2DeV+B;@_+8x z5z-sxY-O<4WUgVOFDkA&*oW!br#RhF8?d*o9aw?7+^P*EfD-+0&;QBIYmI}RHT5F= zx8pRwNB-dUhdFc-c-#dq$5;umQXQx9=dRqRtS&j-vf$GkwAHKpD>G=Pv`>-VQn~*Y zaQ{WUZRGX!p}H&ceo0&volWvv&{nHFdsHkA9uTPE-*~H+M_Y=0v-c-CEy=VhzZB?g zJ6OV4>N~1T=iUxk&{oV;W?ytpZ&`Tu3nioc3wV=;9rF3ux@Rh&1N?)s1dB7*xov=xQ|zG{H)js8U?zgT_;8}WlEsYr_mCVSyxJn(z zG>S*uHu;}Jh{j)!JoL8K|67D;2i_x_Z_{}r-{b*>HOjxgUL#I$YA|w^VZU+_(q2i} zr*wiFLoyq-;7-r4(PkW|=G>*_4^rGf@3Z}RwcaAyFt<(Xe;T>bA9`f}ttGC-{WDo; z_z!h2*D2p@vF`n4&1q$NBjmn=f4dd4Z$V8Op1ikaB0m8#zblBcp5G%k+!}r0!QP(Q z#s}*jbj?$(m7=C8RM$?qszc)>K9lZ37Sa+0*(2|~#ZvxgAAdd^!@!T|k+|I(D+ zoIL3BI`4ohjW0pRIsanIFE(Cmd35mOuyRz6(G>agX=PIN=@xzdSXTs28Be!pHx2~t zB~*~E2+H+&r@W}6;?n4x*?W&D4CjAiHhd^O|yBbg={VlBQcbp*6)UFL$qe zcX)r<=HGh$(g>HWYt}>Ia}L6##9hajYXLn8SqE1G)&<~`DBzOAcwTS}Yuc;uYw!xr zDG*UjiXm)6HmD85MrtRU_^8aax7DO+X z=J5SKcMEJXhUaREvlgTGUpMov{-X#S&2#J2_U@FYwrPvUFq@~+BiUeEUCHKg5&yq2E-RexUlZa$572JlO3 z{e}IpJ8se$9E_+D)eK3K!M$VeSn~`~2qo%XgYQl2VbY9Yrq`4-^FAe=*~ER&2H&TQ zH@~J>S+w|?GJzRu_9>arVZaGpEyhJ{#G6r@Sg`#jVll7v=%Rg!=-HzmOhcR%W$SJR9@B;8c{nM~6$?yEBg2#Ma`!{;4swNg8frV|X@i-E zUO&v(X^gE8aK8Z9cnCfk5pKr)kGP+~{qMM2FecFx>~lO%!hI>?rva9|A3h5!t9{y~ zO?o;v%nN2xgt~&(-@x9pZ87w*7Gqsr4C?wnX3|U|Ke)n1o1`muNegqdu<&M<_zK-_ z%-d}39^oBO@NLxx9(O&VuI5ZKfi6IEV+L=Bd9?wt=RHAA>k=Fm)89(M}%fEg$OsAyt%-G1pL9kSRr69o=*U#0Lpvs zZi-<3 z2S@&h#^usS(D@apT-leXwhhs^)IP6YkMD1*vg=`g0zak~h2Vz`rd&Gp3a_J-wnu*M zdLKBUaIMocm&I$NhazM13*1@GYy59u+Z$o#yhDL2;ed$@Oi`M^z@9cYB*H^w-N z(aT$+d|Z_tp2{IrIH97sm=&LZHd|FmVU8--1i7=SPI+2@OO0@i?H@ZlY(i!bZv9<{ zZ0<;Z59`puzIEhX)bHW``i)oXcd{dE#K-!TY3_4r#gC>9^nnkRikg^t%g>wA;&Y21 zPtWxhB<@HowVRw*n||i!lGtc^zt;ZX`Q49mQ>LX|^F2R;^gdbS%NY-x8xWdmOmkER zbcSSSKI&iHVT2^hp^$dqgmZriZ5DRN=R)49L*CdCxtr36PGhp57;3>uYZaVBmCdH+ zx+8(uJiZ~a3O;l!LwwYJ9dbGR&QZGzL%R$^+r{~*OxpA7il?RVzV8yTlOV~!$Pupb zceKR<=UwVL(*a3bYU`-pwx%yT$qKaPJD+%%GllaWfV>BV+uT%IsL!lKo4*REfgZgc ztzB9;ms(z|fkauj^;fo{=Oa&E%0(M5IiR+4R%xw%JMuRH!#&CEXDL&ZLHXQ7er#Ur z;MAus4@}+ZxZ-1@I^c!*er2!?rvc;O=VtVx%L7MG#2fIDbZpe5!+G5=J9VwGiLU43hzez;9U*g!D3WYxNVS+Vaj1{Gg{9b zZoMHXi!TpMc>}GN7c6@SewjDmEQeaR?|mxXr>5ZjXQYjq%FrfeWw4*xL>T96jT$`( ze=tF-hgy>b1k>Q3YDWR>h#VK89UZMY^j7y-4J@4}e&3Q>YRQMul23o%k}RCcR{XZz z)~XXVNLBV2(s5jX{V#240Dh;|{NCO_r}~OgciyWySHvK=k{L109l!3)n?HkM?*{`zftszaROd$u(SG$S*ad;LnStK}s= zeSnus&+@YLpZU^r_1OJHqXktNuRJ06<_Egvt5%*^so(5e4mFi*N~TohQKdJ%IQ& z_H{ez?2;}eruaZ0W~9~|V-V6KeVuY_v*)M|^aXr4D^hX{_^xKebjS(qOeFgXf8O7> z#_YQi@!N~8SDY6?<6P|Ju@Y}!ZTVK41-hqQh~}Q{_!j{x5o|sN3={Z*$)eXJqsB&DV*8F|;DCJavERZg>2U z@=Rx>GwGA056xw9;KaNR3cn0HiUf8MeyWoyjmallgpYPAan&8ri;k-zI}FvUkK&u8 zH{5F?A?b5c8EqCq8Qc-YnIBhS^7fS|&eH^myAC-qu<81yYrH7rnAa#3Yj#tB5BFsih?Dv z6>lvWRN+;MV!o;KDl7Sq>QeWSwpWjQ_STE8vCbEJX?*&E1skpnc>@|v?)l#5Kywa| zY6?2!U9HUp&$ymNU*mk|_;SayKVvwRjKb+8PAR{^uA~C~Riv1T64EPbjIQvuXfnO9 z?nk_a0iih4fK7wmG;NA~bBYwXY4DrIO+()#pKyjvucE9`8?g)h?sN-p&g!xhVcchm zj<`22wnS%k$mcqwx`(0F2U|LH@+W0s2cTy-V~KgA&gC8qDnHD7xGgWfl~B_G4eKFQ zG^Q5Ax;RErYmYe7??f%=baqA#8#MzXHLStxawj<<+hjGnPqxIow-r8`Y(X1)1@{F= zxuauxPW4j4rOoZrdY@X`@5#;UK9oNyKkMoOGdMT6KV}w^M&;u~Be>;yrYnAT{HBC` zq$yP3#vTvlSPlCY9ddeWd=)#i*d0}8b>j(h$qd?F7zC*UO z7+glQwK3OthcqU|cR)t;pZh@5VjdEd?_q3s0ci7;@H+rliMR^jhwi=L(*qvG^Jlmp z1k?j|06qW=AUuG(6EF=h9WVxQ_W^$XTkz`N0nZ)xMZg<1_y^$(((f~X@8UVy7vj|r zXlktgzk{54wktbVi+PRl2uz^Ee(|=v<>mvuyCY^P^oi2@2c|>MSUt%qC(AiBOI^;z z>pJA`+HAwt+B4xr8)p{l3M30!|HT&fx>QN)U>R*bvdu}71Rb!g$lZZ4oGpYgTrFv? z^xkpI!9HC&;+}v`OqzeR>#21#b~@l~VvXH!aTM?y=NHvo6rXfk&bc`pzR*ajo%$;7 z2YJV-c_*|CbuC051*jEv3hm^Pp+nvbJ*p0QdP|H;*H4KG4G~0#V(oS|f3cgfr+$O| z5!$Z|PzA^ZxB%k;U#)=5Chi^hj=udn!u}e@RuS(XyOdS6>EH&%>TeWaZ=fx9{GS$W z3`>1B$QjVOqv;gjG%z5yX?H*{K8!QI4*5)T{){o_xG91|n5-EeYH}xb$e;JhybpuX zCN_#v=pn5xSh?~Aicp=88ob}Ea~c9#HU~QytkBKEq{$9b1{{xz21UzMJq?5Y2PXrr zuqN7rnp!<V=NBF_4)3bZ&M2az|qeA4_qqpkA`BE*k8f6OPNiDw#hs_fCFT2Jv~>Q%I1#W)pSBpPq5IC- zspv-%+dV-tEuzh z_wDkrj@n%~Bf}V(gZ7vRIP-SzITx@8d^0(db1Iz4z|Z# z2|e=jJ++{<(*HBO&(z@07$pnlK_dVoR~zLl9kx5(f?jyNlj1zX9Jqe7^d6L`u3oru zXhDa372euu7aiGzzMZpZ!O0ebDwWVKAMD^o_ac+uzcjy2*Z;?Rd#D`2tR8v2Y8{LI z9j-HKdIWVDoPBkv8T1-zmwmO!oTRRKQP-Fyw#gk24M)^-AjaGx$ULw)qZa&d2DQs8 z@K5y z^eou>n;rA92y-(R|2L~`k`J6p=Un;dyEuj9axwmYM|W_& zfb%G%&4q6jwRZ2^YP~ccb$S)>a{%G{zWzJc9PYpKz4r^aw?jfH+@d}5;|<}tbPVfa zv}@%5ZSP&cqpYsI@%_$B!jJ@*5YR|b-$0nhl^o|O&#nkoqf4|{y zY}=UnSVK0g=XZj}BXE-#V^wfO2Xp9+xaAtTyD)9>d92IK&EIm}Q+RtUD{`)oJyaSq zo9$NB<+qlZPxTtQbojzHJ4DZCjd@Hwr*$W6RlMiwqC6FS4NnZTbdsk(_VxAsBRuT` zPp_U7JRJZ(p+|A&2=LF+wz`mv@WG|8l#vhl{ct3s8{tAP8zCPRZ@@TLNbizd70WW; zj`u2MLYsyx`kv?T{=uoh|NLiM4$zLig^&lHj-vYvzJ+*t$)&UX-gX35jtTL;h0V6+ zPBziE@J+mBDYYflwK;!S%SP9`wr1oZ%XlLwq`(1dv~S^CNKb7^0d7i53!ZL$AK#sM z3r|D71wS;iONorLrrO@L>6#jBM&u%@M1|-kak_81MmO!S;p>sMW}eQnHsOn5N|w>e z%b3{QsaJdp-+<0bYtgwgI6s?QN8Htzh0xfplb0pLtVE3Mq@qSDRTsV*KXD_zNT+KVg&Av)ePprWbY0TO zC1m*Uii_Z>^E?YTxU;mCE*cZFO~u%|(`&zUPfsspn#)=?T4}sA^@TMvu32=MUW`dyj$YUmR$&-O#;d*zf5+)jRhy>;p8V6&>r$#EgM7 zgW;^tcM8uAsMf==o>JDcB&JNtv5FN0I|MVF-3o`T39h4tEmGua3(t#V7Jn>es|JNT zMO*yol{a8-iMeSzWMCfoTJ_@{Y~is^)7vebqm$Bhratoe9k03Z9Wc~tD&&!kXR5O! zAH>w~2eI)Dm@N+A+ry~sc-%?RzrDS~RJd=UcyC7H`$u+RM4(@!gwdy`rj2QcxH1}4 z_vi+j+tffiaW+?a!=oKG(^1ScM>~gi9qlxkMm1cH`2siYO}c%!bB`xnjMX1>Cciv# zX9ygcb}J2|ce4h=*?;n-V;?MI=BeJYQ+Nk~3aRKB{%0qPTNNY$S|{EvYcB2p=zCVa z@^b~cGj1CmMLrYO9IPi*VxGeD4%9M2Rx4${JqpU1O%#6$?^mMoVYzoxi9Pxjxo`d; zm*tlv%cUh|+(&tP#I7_*@=GqusgPj~WSEUR8)|sO=`krJ*R36@Udpmj%ChKG@1j$q z_&m9>ku=MuMiplpDrUUj#P2yO4M$=}b>aN%fBzPCLX3K*-Ewr&twtBOW4e2{{q@3k z9B)&_9mnqsy5l%x)n}nqUw5zPuk6qxKgPNb&IdOWjyT)ch^H{Ec&p_UoJmf({K)0f z;{ACaBvec5ut&O+@$QdPy}P@0=nExm2K5f(;1`g=f2T1@B~XF{j@=bS+2lX z`gyi}>E|nLkB>iBc)svoKkvH}&Ud&oWzONww5u|+4tI{kKCCH?v|l&Y^A>A2-NQe- zw@!!sFj_TL^SuFI_qUfQR@i-b<8XNRlkR^m+}=^luxGRr8Xs@V!aP~iZNtjPkv2TFk zoJL#nX$#v+`z1ZzbIGU8@T>5<&+R??A;xi}i>RFF+I#k6UpMX+u0-qo;WH|aO??+D zsA`?5iPl1+V<~4(0RO`-;^+@uDW}8G2G4Y*oZai={dB3Wr|6KJ!4P+<_w6pj+3}!R zkG^m%!iNzqL%8uX!`Y>P`vHr5q-k_LH@>d*>xWVA5Apug@vsLjvtC=Bf_DMYiUIxn zm1CW0-J=^0xQ{_+Vy?Isy3rDI8yn`{F}$Jf4rt6&yg#}#?QuN0^cL=bW*MGlJ&V3P z7AtHZTP=LH$493&ndt3?;m0~hPsB}A)X;$UDXcWmlpW|2>ZW{Z3>G*{%SrhIsI<0p87{JG*D9iuvz!@flbdGP%B*Fvva5BGGHW3qc9f?y12>JZN^Y{@ z4TPsB*;o(ydC};E6=(+6+1>c&)6z3KwC>}lHe2Z{HLNEbI^a$@ZAp5slkI!2Q|EXO z?`w^@-^1JO=ic#NER)sY|9Ex)|5X;l|7W@8XTPz*AXI z9>-!i-AA5{6`4K;2i?8jIW==p>gmM>1vdm~Kf1ejGIl;FKJ{#PJ;tFz+G8@FqQP_0 z4fs+GQ~1tl_Q?>wbV3x2r|4YLk&HJyj4r@A9CXb|%ZmidPQDkjvDC9Ycj|YOMo2vy zyOX%h1RrH4roPu1GNqzLXuLwkc>n*qu`=qDOfkQU|BF5yA?NeYzbO1v%oMmq{snPl zJV{(8pQ2G4>%QjGy$|Eris4w_craJNv4{A$!rmG^F_2R<(yBaNS2*6DG5xNoEE9zJ=>_B-xq#$HW0Hq4X}xlHo3 z|BK5b%Hv6Rw#+o)W!QW@vTnl9n;Wdbsnjp#XMbroIF+DeV4E5wy+SQ~1uX&P8&X*F70=WoxxK zGvdtM%A~_FM=8xd+1+~URYk>k27+6k7NNa1bslI6yK&1r)ZII}8=7sc?k9TSP;Q13 zpYC46DaDFe51P*3c{o;U?b{!3{6!J z7=-%)&JZ4~*6RN=)W5puGQ9g!?1_$p{YTm}8$6IUJ>G>o1i9c{KkT?$mKTlDUE8IR zmt#t}=c*}n>3G|?;Yd=>u;aI52kiPtdXDM%O8Bmgd=%50o;p3;m~?vh@Rwu5n1bhY zGqRpT{~Lw7ATP%9z^hWn3psu;!Can#iWS-D${3JES^`Y$oVop;M3I3n%84=?$cD zVY4=po;I&EAuRNZ41JHD{t)15!U86Vp4`*7ce zTL@PVcNq7@Lx7b?r@1l-EhbKejIpDg!xXXBV~6Ifp)-)LvVY(ITKhNcZafw@KeSgVrt{T z)h?F{Ur&E^YkuaDoF8WW@M^jX#@>PLv;(`kuv`wR{Kio?EI`;VEl5?6nzg5^#n*U{ zaLLZvil>waci+}MTXnA*UsckW+SE0Asb+)mQ-r)5UE8dGY+4mFPX9yGIP1gsZq471 zjB$-{ZOb3ql40G2uXv`}*wp-%3>W+M&*&|whm>y{y6)58YP%LYKgOq)YmfSSUc9rWg z+mfcMU2M`J*KdgSq~xwGNq1o9iD3tk@J zoFsvh+c@?L*Nv_vpgF^aZ;dpKLkZZiHRH`0Jnms0mukKG?#u4JDsXuKdrxhtuMh^k zL*()nyj{)4zRf25h*KTeb>A@d-Mei{%P7~?HXb+OPSmMy7M<;|p5y~>*;29J#3Bf9 z)a=hItt0WBlCju1|L2w&cjs9D@B+Qf+mg?|v!{!(;up+;%tOWb+w+g(4c~0azC$(R z-grTW7Pq`$!u{5)BX~l33M4QA<;+g*+QeXAH2&<1G={irTLGO6jc$48MV!7K+0>)x zESRHN&rR6BHwPYwrQt1dee9Y@j`c;nZy4#rZ?&d&{g7ycEx@}rM)-^1n;rWpXxj5_ z1uW+PdRtL}IY2Q*GHfd#YE0cKY5vigLiA*LV`H}b*}S|QE6$V9c1?Iw(1I5pSU{Z9 zz3~laHa^eo+Xq9qhsM5xc-*PnJQ81KYEJ9ggm)bqZul^UrzM)Mu%+8lTxcP6S(DMl zCWc)1lk_L*x;C?BU@MX4SX%QNxCawDDAte3(CTMgNf8CsDQ<;zg;=4hu<1{oEThr2 zI&%uGPjh;Xun5bhlkpyzE6JK>?R4e62;DSsq;;QbPv*=*dQd{axO zX<}ZFPU-9YcWjm!it#2kyt|6lRamcd>Sp;Cj=R&f?VC|QO zZ^z&k4V@?+D#82a*#s3W-`%?w>u9p;x_jTm`)pZm=MhEKP261Har}3Rx!??SQPsysK--R56F+PQ>Fc zQYkqdin$wi1n6D)*Vrbv(CV`X8(0O_d2fs7A3Z34TWpgHv#xa!-jeqB zBj}&58BJSV4f#gv7cFR+G!`MwhSEL$*<8@n!HM}nA2D7_yGzDc#HGe%edbfXXM{7r zH0+8PN4B~C*0k5U3bX#{rYo!uaE(2}g?nJ;+69>{Db@$_FKhWQ#!A?<1=uBLlOMv@ z3^1-HCw1LR-vx-wkLo}K^{{%cFQr(9P(RtL37`Uy@MsLr};SC46O|voVz@h z)35?sd#3G2u1BCvXWA}vjkK+38teK9w+GpzWiePoU>2HoE06VC zGwvR7_t-#c0B5rqLW4iu^dnGY6V`H?3g!>?-8D8HbUG`!(#B&+r_N$MdtG{d)|9e_S^#6@mFEm&`bN$fz2-h^Tp=pNW{W%k)uK8YE z*FbM6OYjYrF6f%c&^6FK*y$o|180Ed!!1m_p}CXU=#7y-gdP@phxHW3=<6n#EjU@V zjX0Bk5Rr z>$mVIQTh$uR?~EEt4=M5DCTfm`si?L#>{XlQ^Re9tKeBcy}BuD5Bz)J|2h0wN=a*$ zVo@h%As+rc@c$fs+LA z!|;KarA>V&aTBTSzx(=9^p)=j0lp{$HiUgXPtAYu1bcb%KI;`1ip7B>cFk-8NxDf8Fp#2k>pn7kts1Gc|vB*88Kvio!zr#QGBc zEY!IlucS?Mbza*U3%m#$nY%% zbc`)GMVW0{C;VN8$YbrsmhI6roGK76I>^8tbEfK^!Zg{=v{6 zSG4|DU*9~Up9VShJb17JW1@}n>i~xVQvWrgO|sb&?TkI~Db-_qf`3ecpZXo8-?IVx z4RFm}P5KnPbf0Cma{bw=iZjz2@nIHp&WwenD&=$}g8Er)@6h%9v{4ZXA zcJg+D=AG>Zq#=G>3#*T=l5s{EH+E!w^fno1LYygdF!M^pnJfo8ZfQi@O1|-ylFRjY zgpk^UWJ!>m4}75gTNTbnxYc6X*}jYFWh+5HVJTNU*VknM4`a+*AVX@4UF}IG$QiPp zh5Sa;zXx(22KYDVz+@(9dp?#^L^ej#LJjSi4Ui+s(%DFcuXp_IKW~br zHE)lOV*5KNJPv_W2)?xH*hdjcqMQGdNCQf%Rj;Wo%0ZEmvN zn_)3OHWn+faYYyhW6*Y~;Pw~sUuti(J#^A?4pTuV1vo@s0c|6@r7g)8ZvBYMQ^ReWp--q!rP&%Fdm1x%D|3nHUsM;+Oi_Th9`sD8 zzX>?hpLC#Yko-_zg4|N5Z(+Q}c_`(4iTj=%ACMINj2R zp&v3xhY(LXB?LS2v37%rXl{bO74tjMq_U_!1h1xXj(Vk;w?|PnbP)QLIox^=_)cT! zpU@9@((A^il85GSt4Z=;P$#yhfhUcZRp3SAW4`&Jc0==~Xiwg> zPK$XH9}`N5#_DSwKSJMI6`}t1D~!|E;1c1Z9V2Xn_oI%L7St8}ZzbwV{b@J&44oIc zlJwi~64)k?D~;nc$b|YK#tYgL^B&sgdypHAvop{qCNt)A$Wj}Jq;rzYmZ-t}N8Yb6 ze~qJjPlG=7^&e6H+z5*uI!EWjct$_SCL6&b>ctvLqe=06LwW)UjKs55Ai{H{5z9;`+?`sG$h`RSmc4-`Ex*{PF4sm?L(f zZ?9~d+q^4DF=s>@K{KqN-!m1wQk%1=5s+CPML#WTdj@hK+J^9>NiT#yNiRZvrSV;q z1sOsnM%y-BqvexygKgVred7a>YRCsW_N}ZrycuI-t71OfM)9ezQxP{&X%5d)!YNV3 zVu)_F)T7+8Hk#is-sb7xFM@v`>Vvn6v;kkQG^dRw8_f{DH;R7F$NkYS`?}_aw}3~Q zlfte4_AAk5KSjF6mq87;;^^mON^`jNJ+d7@?@H8_XiWp2!Td-&3qJx`1lpc?KHT~M z;#R6#Fs}vLOe)zaWUt&CU5WN0-7EVfFRz)(vy?>1PN(ulKn}U6H}P-6SW7a86`eVp zuCgudQ`Mg*-3>l8Jk_$ReIl1pSu5%@E(h`?8wlm`Iq5OfjpWKuCgr&nxCCiTejjv< z&G$xsO!cvVf7D5rcew2eS+DPbA0zr9wVPtz3>8t@Hk0DQ;ntPSTcRe+PX=~d>oUYC z;jPgW<=%)1{R;D1`&HEM(N|J2=1~@}=e?+BS~JlTbLZ8G^$723Kh4L=ZLL(kR*%cz z#~jqg!r?YE=3=r_b1aYp+G{q#402C_T@QWri~_yLz=Lg2ozHre#CWHP9zrKNjv4xQ%eQ zr-%Mr+V(Q)qRYhC1&z6wSF+$I-KsPfL{0CfM_BViWA$%rxg32VYEU&vFS`z9LvLimku5sRRv&>~Jz_7lKXlDZzHus zV?+n~=wAE%5rfSdz34a)|3mmmj`#QVZS}%mKy&Wq zgB`O?q3B$;qhl_c*4a0zp@T&p>&QxN=q5WTD>cNSD#L0#+#=(fIn*gV-MVzREVvnP zd2lzw+2QVl+X%MO+f?SX4*JV$jkD&1bhx>>-GKgW zP&dPddl-Ez1V3y`)DKz~`n3RdOf%ve+V$BOzeuC?Fx9gWeTpF2yqN3SxXp{X1-2&U z&2Z}>veOf6Uf6dh`)~`5uMd2nWkVi}p}xn(ym1tBbR*_SvPZ<4Yem};@SJABIKUj1 z44TYB_FK4hB+B?D=xbq0AB8x=*^BtMz_wWto&}Ev7HZWEFCo1$j^?hXfy=%F z`j7$3hYraR^FEcik9d@}t#0_3HU(?fw;+cG(4{(#Kp7+8hb~Rw`6Z8|R6~^Vdyt>% ztECa|6u$=XO`sD-Ub1 zL-kolHk4WteIMobm_|q6g$|)Sylmuo0l1k&A9d5p*5tSlJP?ga(7;^VM)D?kV%sB1 zy2LblGxQ)|3$+ikU@rrBXTkHv8#YHNjp(4yv{QNSApS*^Me`Hoxf!^m>qe<8O6{Pi zn?MtLx8Ug;Eb}`1Zg0e85Vm%2xhVgAsVY5RQ7yQANERsvk{Q?Kxr>j-wb;&LgO;L z2jgN7^M!wowazoR4T80EYZURVh{yhD1iFa!?U1JWp{LrS!+a5*muMujRp|4#D@F_a zCD09wuQQ>m!keL|H_xFt9P5>&D*TO;5H}M3Pn1 z-?qK|b<|T~%UfYnC@c&f8o`4ao&{R7Ap3dDvNEDzznJiW0Q)N3)`UF35qbu89BlcN zXB!(^??C>PP+26k;kOZEXm@0I!_yHZv^&Zgp2iwtXC%q=3#{pu!;UXgU>{@+H-)nl z+X}2-K?`-kp5{1Rs3Bs&dPv`}C-PI2L;hX7Jn&)ueFT@sqlyoE6}ELz=vK0wAd?A* zZ;uW$O^g^=1IpPG>EGimMctMuG1`x|p&TF9M_fjwZKIcZm5im3k)<9oy1C7CHDqMk zs7t@vn{Ke!BRU4#*hKvVdql(wcvRReptk~|fWHy4Vvv<7JPTuEUJCZek-%j{c~X79 zi&PTtSX;#&JZS8f(F(}ucSB^9tUeMMX8t8)bPHs(LeYi7GxQDN8H%MW3LB<%ICv)+ zvGDGQ()e^F31yI-1v$1ZML85+#LK%aqL|)`pv(>$2h?WdSIx_!YBN8t$(x}M-<+Nn z%A0{RBAVB>HSW@u2XzLFI*?8i=1W2;V#?+=y`A zk6}SJj;M#t#PYeHKQ_b?Dh)o+Z{R(VxJ>H^Gte{A!*r zLcj51@d-TqAJP8?bYvZew$V`Dz8YsJ{#VQ78}K%u?uqm-=1-)Vh?5wf=>JD?{-^O1 zc}w&smYe8L#7XoE9NAv`X}k|@i=lJ`zV26p@g<$-`r{MxCi)Y3xR^fyUw1K_e>6UU z=72u)kJ1^6|9{fwhvrSB|J6L}nn+hOu6yxTihsyI_ZR0k?9cykDCd{wH>CY{-v-P@ z8yXuMLnVL;8nH-*?+1Jqcs+nUU-WIL-*77W-(al&acF9jz$Zv_4+Fjfytyx&-|#-*Ykh`%K+50nhR8qv&GQ@XL3|w`l~1q^;r9Wl zzVqJ_@m9cU#NQ>ub%2!KA;bR#xDx4;4-5Qkz%qoxfD~{3t*B=XAl2`l-<{vE81ZTE zoZnCa=mI3U><1*e^}j#Ap%C%!0Fr!~0VzJ`-SZpfBEA`r_EP(rv?*~|04ZM)Am;~=_}&Ld?X~lW zNN)tBd_{i{@zFn`{g8j|Q4!zrk-+;Hun_Sh|0KdDK%%z_km$X34DqOc%5hPi0g%#N zfSJe_0vr$c5TFXU7m)Z10}_9`0STY|n}{C=Na4eP=Xx>TJ{EXofRt|;L1TT$21w-;OsvO{1QNluLmUjMcj?FSeEECYP!GeQ3oK&qGRuje-uA-)=r@MD0a zH%tB|;_CpZ9$N{bJwE}Y^vpBoH_Qh9B0%CRACU0o0}|a;fP{ArkoY?Kg-AaEXhgo| zzeCRhW}Xx2*9Qs-5<9M$Eb|d@=AeFyT z*SDbq;WL2LZkb5}Zz|v?h_3{U0DcTe^cN+I_)UNm{|F$Jzf;CH0}@`gQN&LGq;jUp zaE=TgmEjf{HVzl~CP0!Cg(=^BKu#~UkIToG-pBiaVYCQ00#bTW26QL*ISfd0oO*d5 zumAW=K{uZu`u#q@#lVXJQoh|+hj>|e&`!XHvzVU%iT<|h1;2j)B)NSINcEe1gP^YhQvNe}q8x%$zjyLQm>}`nEW@S( z$+uO|S-DW8mjDufp-qj2AEST_L2q;O=t2%iBYKD&AN*$}&1#2Yz$KJ*zNrFQ_Pfxht`!T;2M5_Do41s{ty z3A{qUp1<{NP&bQkCLp!%Q9vrUey5*9>j7I3J`6~B#>dcy5T5;nNN)io zI{U&h{YlW-uY}TmF3NZ972}}r7es$wXfGhqu|0+U2s%3fsb9PgNbv`rkzqh;|1tYv z%K`5lKpIa6p6lD-L%0Qy@FTy1jzu{1yom1sv+U-ple*a%Y_%I;V@16s&36Sq`!1;hJfEK{d01E*PuYh;J96+Ks50L212ITGY zD%yt90V%u|knn;sZ2ArQ0MgBX*?@}y3GY!Y{x!kJUO=MzC?KVuIf#A+eADZK-grPG z!euf{ke7c5eg40|J0OL(y(#2B|1A+7^ESp5(x(D;12zNp0KN-&2GIIDqQ5^>|Bk@l z`Fn&RzvF-;pSACb^8Xo-_^XrQ`vIvRJqk$eKlMF_$2F15&&H zy$tYKV^iobAj$VA!RK`$-ycQz0Kunq zp_h(QcwZ>hPk1lVJIRa`ujQs{Ye34uMN6jTx^DpnhC`dMvlg^x`N%u`Y9 zGN-*F==G~^k2~nLSG(_Wd#aez=dG?TukbtVL8n>?8cs(XQ3TbXw?B)sKhf`W5&;mO zpo-Dih zcfe;4R=6lS=&k|t9+9P5GYbNihRQGS3G*sH5KK`x|qc6U&cATNZ1O89Gi z;42|I!K?b6!CJou^dO-@%mxzisJaf-TN`8=Bk>q@or`K2^sgsI>{WKRXMkwSkTuuE z@=M)S9(#3vLjijLo=Au2^Ot+vbs|(=jGmx1dZPFPoEWn^9DZjYpn4#oK&{W`^;1;? z-ikHOcs9|bNba;DKv{aH2qN{5R6h5^h64GTE?W#@NRtkux+^QzGbd49iry%yzj`{I%Uzi7~* zE#&UbWip zuX3_{SzE7vKo8WSNeGEOQ%V9|&+St2*2c&$lu3MQhqU>n}`OE zgX1;!Nb`E^HO}dA#A>IfD(LEG%kT76uLpB>2h^Mhh(QKs0)fifY8mOW2h>{68jp9K zN7edqaJ|pjPbppmr_#@wEFmGkR{eoFR5!-AvkKx{n?P0M#^4W9Hw#KJaUD0PidrSiX0?7N&7UbWv6ho!CPkg#pU0;QM5E?n#6fFbc&jCN}jLQ*z3w`XUr)N4xrCz z-`P(O!`SEaqa$KaRbiSMfJ}qegQ^Bp-r@RLb~?%{Y6C%UO#*s6Zb&6~K4^yi%E|!r zf+jCPC>|fMdz@5LUT&4&yKZQO;<$GXq#;LCKV`QErcDjHaCwcr3bS1;41xLANjb8( z!27FM3A0A!V%qgW9Oaauyt39K)TrzWf)>;h!|SGH z+!S^4WHl$=U8blxXo)Jny#_{)y4LNjhAkFQ^Gb@RFcO0|$XoR~jcqjtim%!p2&%k6 z-5#~V1+xIi)U6y&9=dSO@2Y5iN$`Rgl3lM)cG3#?(7#D-)3gy(SG!@fdAzk%F0u<< z-fD*$@Yeb3$??Cfp zrSzkg`|L0}?bSnL=D`vYa|LAbRml!J6h_c5P=fX~vhm4x0U86Nhve&d<+tP& zmzB@x_s$d)cs%zOFImVI=arU~=M~(@NY{v@V1=*TzS{0_V9JBTRENbywJM^a_NFHw zsFg4)gaJ0qSFt+4D2xMv=6dsMFn+JYNx=yic0tr=u>vy#PIw&zr9nV}> zi619P))KVcAfbrZ3ra#H%~MIauJhKS&#&{_eJYiR(o#54$y1^~q1rN4<-=fz;AASt zr$MG+Q=M0PYhmYMp!7=>%e!^K8b2>e`scxpp(&iiH0^p(0JM#09KqmMV~XzhO)#m4 zO`}dZ2)V}XaL`Jnf@@!D7{O9`yhFt~sC4^Dd!cqvYF~*NFD$WQ$P|wsD1@Or1lN6& z@)NPBvE!DeTnGq((jcK!K9H!7io!9wTpXXM~_?TEPj*i5E)M@2;ade(a0)#Bf zG10*uV6`4zX24lR^Iia*)=o<@#FHHkbv-!2i*?kUL!*f-Ut^UAT(v<5Oi;!93;pC5z}QW;o2yUQd9p{jdb)Mk-9nwSin3ZL%`u z@%S2dpoTUHK#)4RtSbyFDrHJy>B4#ny6jk~iS9<06)7=3X<^xbVOHa-#?AuOoeGPW z00Brm2270Ot&%Eb+dA;m!1aQpJ262hXLgaQe` zWT^1D9DY8TX}0182x?QV>|qzJVgEEaL=v!~eXyq;Z~qLsw1K`mDHR2fu|XXQ;?&V?i9LD}Xsr3Wwrs)Fh3u2<2uFu0(}U?|I2 ztgNREX?3h1hh|>w4Z1`oZB;-_a1#zaj|`s*Ok-$v7?fn*!N-jX!V>ZjD~NJw^YZC| zHapl7v0tagP0=b$3?5!Lw}+%lB)IP@XN|8#8>oZ7ilDT063XSH*W;|?Mlb?u&T1#r zE5@W9k{1J6QXGnEuf)dN1u)|bU39YGv|zeph3+UPYfMv6yt1^df#r8%#d(H7)2UE{ z0gt1c_XG?Qxe|avlDi3-@lQ3zj6r)5oT~KCgZ)4|5}fdb$iaX{Z-e@EdU8lgShES4 z#0gwLlenSyt8x?9K78>a?D8yb;lhsassR_QKM|IlM_Z>Su#1(Cm?!uM3;NwyoH(E{ z{oo)7BM=730P`o#*wSWMUCwE3Ep`sW=-0Oz*0+FXrpr21rP&E$|mKTY7)#V#RWH&Xq!9z zWkTU%9Y7^YMg@#qak|0i+8l(c|c2K?kI*!y|Dp$drQ)o^saY%Pi zxma;H%K2D?4Ztwo+`;uKpF5Zq8^@ieWx@j5k#$`>1aA5Za?ti#tuvl!08K2>JY>Sr znh04)a6%qJTgY9R3V+;War@?IlLZ>_YbN}7!_AQ`r{!fH#~e}4oveSug*KAn1^E*L z)Q#rAboxho-kkofH%GL#WSJ@|j9FnAkfBy>_dx^_@1lcvjy5c`Q4`N1Dm1hs4Mh0n zguVW%>9v?a>ekaP=S*5S1g4k4S4zG`_!I+HwDB;@S$v0mt$lj6-BUHa6zbJe_5E)W zGi3#WtiLue~;R#>}}ae~B}QZR<7V3#+}W?bV4} z>{fmRLyAexfn>bba*_9+#3W{r=S>6l>1o%MN8AEK)mo@cD)DG7q7;>_c9!r{f&ALa zO6S010J%MjtzOzNjh`BD>u-5s3FGoy?(i*KS5WPyoxK5k<&oi}m4wtG$Bc9!2nJwV zVUt1?N@<>&UtE$$+G&|H;H`#672RbJQVj-}y4tB?4N+XOcDA-7FR?(7&P2Y3RvhcA ziJ=#gwj@hg&bj>DEr3~>A6|&We9m);-5+qy)L0gr^ZA+1W3(N5e*Q>1#9pjbY8}3+ zbze^klEl>G@O*<({j?KRaAWyROP4GyTe_sUfS)VS$?95kE&J+fXRb;|mHvRb&W&9t zND+%CZilI>p)pa^8t6@o24^6bq19?I?eQZWdES7jBIvY>lL16*PMCbX6>eJUQjd_$qGF2^T0`^{>Xc+Z z=RgFo;pa`N#Z-*SUpJ|Cs=E@qiO#y~COM|MXgmEnoYYOlSqOZHqMX-FGS94=cd>tL zQf;pGhmSqYyU-u&uTekSG!2Q3SFqDBY%v71I*Wu0NOW)`49Z5$Nlm0}QSElg0912mBMkNnZKR165Y|^WOo>yFhq0J+`TAGm726zi04Mq{vkXPg=X1gZrUStd z1YZi}R4UH-q`%fDJ$#SL!RSf{8Rszn+|W;aUIMFpk%%VbLj*m&g3mcz_=y(~#DVt! z8ec(#bHkM}UwO#&ET^olqp`?$+o&CRdq_EmGALHt4-vCAKWoRp$7(=qO%TshQ3bl! zA`TtYbvOtnh3odyGA`?etih!V0reLy>M0~93YIZaT<8KqM!Ye(l!)pi^ED2j2hdzo z=BcczTvO#vnhU+>{ar1-1q{i1u>U>BKMv}LcppI}6<$@Ueh~g{K zAqsw@0}U#s#0yg4Dgo_@E!;^CPB0M<0+afYOAJaF zMWel7Qb31J3Jl56FBF_|;iik0TcT2#2{T??lL-TX$$pCCc-(!$#+GK1GEW7LM=EI1 zf(urFd@Vs9hZ9HgBCV#jI_ORaJJ#bmgS#RTMQnX?3RqcCek>ng_j9k`S>>$5i7Pg0 zMH${I+|a=FG(xL(It3Q4z+vZ{;`kXpxFo+HR|F))?y8gf^g>HuyBd5wKHf4{)C}YQd2QD_c>H7t;~KqQbQGgpDVTT;ZaP2JVIG<7ZK{lA*CJ zl;j1IXk|7eL0pa+61~o6FQ@xd)ewr5Kw?S$$~7>N;<=!xsD6Zji8t=Yl{cDG5+l~m z=9irkP!QvXvgogk+lMHJ3zq^lnmoqt$JV3YySg879W@@Ub#bKwnqCw`mmahP+DIfC z{c*K{)$thTTF5FM5_ufBT1OWU*E1}5oc5X$r_*1&loiUQv3Q7vN z@-09&NDQ+j1%<_xAdFini5KUnaIsZbvP{$kYnnAI9uNoOC47a$i$}qH7#5Z+bK-Ib z%P(`0QF;qjV~pa&4q<*VZO>|?QTB2O@g^@+qSw!jd_OUi5UB+VXwy^++$1}BKH1wW ze*tbltoM;A%}PrKFtZpNXJY*Yez2M*^Mi z87U`L0uzz$Ma9LBoW)uXlJy{J%XkOZBDlH4miI5{hOF@7D_53qMGTEtx;UZD^R<4& zs3R5N+=u1o`F*G{dNm5Y$?K@Cb{3Nn+8<1iHLA4G=^>4Ro21mS$(AFf#utkSW7j7k zgx#H5F{3IsJvJsp60)M<=}n9W!T$YQomdP}M}jfYu>xM_Uy` zDI_L3ytpxngB~euEocu0Y2=Akr2AU3JyF|ox^~8i(s69ikAFNQO$CycnD)v8*sK*o z2-L1dy9+evKkV82gQP6^Q2{ENPghORk@z+wQJ|X(5|-BlgkRW7JQ^+K^sLoXfVhdv z@)yIHStc%M%glC1c@6KgY*GLg70fBRgSKGVvZc$|EqTk9(6tXNwu=iEu;L|F=+OoF z%NNRdAEt%4*(O9I4c|nyH(=K!Vepm9Ayq2&8H5pnkxix+DjD=jRW>018cgY!ZE?sk z&~Q)4X2qR_0eR5&bb(U}2Isl~vcBbEmKLOrqZvLdA+mq(h4zPPYH=V;CMfom#a+n? zC{393{E$WNc}VjK3mvYCrAV4t5yJ=dSSJ1(*%@Yo?0S+V?-Vw?0jvlE5ViT#~>g30#uEB?(-Tz$FP>lE5Vi z{9hx1daq#h^a+K<;QHWc1i^rLlu z_IGuB4eF1zg!MhiJ+AG+GB54nR z_8@5g;8A>Bgx2NjRk5d#X~8!x5grRi@CT}Z6%zUYY2N_fbiqr$@!hr@9UBiw`ww`B zF>65>-z(tz6ZrNZkH>cxyhID%0rNKB$k;i+dhq$Bj6V+;Mi_ez91p0Me*Z%f=sB*i z``@M381%Cve92vs!KFTMsSo_W&wJQE-_$rTc2$@sZ4Tp+_`68dn8m0 zg1=!BW=NPV;WP=am9R*{WfJ~CLZ^g53AaeNOTu4B_@aadCH$>~pGf$rgvm*QugfKz zDB(N_3nW}B;q4N-BwQz9NWyIr?w0UL37?bjfP{x7{7Ax2B>YT5C0X!wm4x4yaFK*R zkkBb%K*Eg@ZjsIzkC=FYrk&dizDs(8c= zh&;--Y8DJYJYN#}x8HVR`^^lF6}xie-UoQDq=GP~2h+Rc<{@FwLgyGdR9 zJ(ip@EYGM6*QFTJb)yYql(EX?`b=ey=AR@x!s}8c< zARby{xnMIF9x7gV-HtjSdHGpwE^Y+7%kA`@A{33&TTaIBC05<}6Tt7rJxE+%`o=$6b187Nk}HFU9Iel^AEnWc;^;h= z@LY%_mkq!6qjsd4POru z9<2e%?Lz@_+T`?z_Ix;6rx6~l<;cAWBn^+^$rZ!V`i}gx)+0yj#6*x$(<2sR??7w?X3ZdK|_VY~VU*fh~U;J$zV*==nAQ(mITs3+2+8 zJpDBOcEL}j5ItJ6k!v<1Ab-@h^usqP`58XdkJjSBOdXd4rO{6-_i6Zv9^u^synBFG z2EX>x@P3U55(DAUTD}E%S{mVMHGdO+k{#h41>RBMWg=0-B}nb@9-LNg_Y@uLzCy>w zaG@gsKMlVHehrVAQEOGl!dfEIh!*|+1V?@boCH;R{_YvCw From 14568c0beb3a5b577749aa7f9fb7722c92d8d25f Mon Sep 17 00:00:00 2001 From: alberto lalama Date: Fri, 31 Mar 2017 12:41:38 -0400 Subject: [PATCH 2/5] Deprecate DNS (SOCKS/TCP) resolver --- android/java/build-extras.gradle | 1 - .../uproxy/tun2socks/DnsResolverService.java | 288 ------------------ android/java/org/uproxy/tun2socks/Tunnel.java | 10 +- .../org/uproxy/tun2socks/TunnelManager.java | 55 +--- plugin.xml | 3 - 5 files changed, 10 insertions(+), 347 deletions(-) delete mode 100644 android/java/org/uproxy/tun2socks/DnsResolverService.java diff --git a/android/java/build-extras.gradle b/android/java/build-extras.gradle index 44de0d1..1e86e07 100644 --- a/android/java/build-extras.gradle +++ b/android/java/build-extras.gradle @@ -1,4 +1,3 @@ dependencies { compile 'com.android.support:appcompat-v7:23.4.0' - compile 'org.uproxy.jsocks:jsocks:1.0.1' } diff --git a/android/java/org/uproxy/tun2socks/DnsResolverService.java b/android/java/org/uproxy/tun2socks/DnsResolverService.java deleted file mode 100644 index a476bb4..0000000 --- a/android/java/org/uproxy/tun2socks/DnsResolverService.java +++ /dev/null @@ -1,288 +0,0 @@ -package org.uproxy.tun2socks; - -import android.app.Service; -import android.content.Intent; -import android.os.Binder; -import android.os.IBinder; -import android.support.v4.content.LocalBroadcastManager; -import android.util.Log; - -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.EOFException; -import java.io.IOException; -import java.net.DatagramPacket; -import java.net.DatagramSocket; -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.net.SocketAddress; -import java.net.SocketException; -import java.net.SocketTimeoutException; -import java.nio.ByteBuffer; - -import socks.Socks5Proxy; -import socks.SocksSocket; - -// This class listens on a UDP socket for incoming DNS traffic, which is proxy'd -// through SOCKS over TCP to Google's Public DNS. -public class DnsResolverService extends Service { - - private static final String LOG_TAG = "DnsResolverService"; - public static final String DNS_ADDRESS_BROADCAST = "dnsResolverAddressBroadcast"; - public static final String DNS_ADDRESS_EXTRA = "dnsResolverAddress"; - public static final String SOCKS_SERVER_ADDRESS_EXTRA = "socksServerAddress"; - - private final IBinder binder = new LocalBinder(); - private String m_socksServerAddress; - private DnsUdpToSocksResolver m_dnsResolver = null; - - public class LocalBinder extends Binder { - public DnsResolverService getService() { - return DnsResolverService.this; - } - } - - @Override - public IBinder onBind(Intent intent) { - return binder; - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - Log.i(LOG_TAG, "start command"); - m_socksServerAddress = intent.getStringExtra(SOCKS_SERVER_ADDRESS_EXTRA); - if (m_socksServerAddress == null) { - Log.e(LOG_TAG, "Failed to receive socks server address."); - return START_NOT_STICKY; - } - - if (m_dnsResolver != null) { - m_dnsResolver.interrupt(); // Stop resolver to handle reconnect. - } - m_dnsResolver = new DnsUdpToSocksResolver(DnsResolverService.this); - m_dnsResolver.start(); - - return START_NOT_STICKY; - } - - @Override - public void onDestroy() { - Log.i(LOG_TAG, "destroy"); - if (m_dnsResolver != null) { - m_dnsResolver.interrupt(); - } - } - - // Parses the socks server address received on start and returns it as - // a InetSocketAddress. - public InetSocketAddress getSocksServerAddress() { - if (m_socksServerAddress == null) { - return null; - } - int separatorIndex = m_socksServerAddress.indexOf(':'); - String ip = m_socksServerAddress.substring(0, separatorIndex); - int port = Integer.parseInt(m_socksServerAddress.substring(separatorIndex + 1)); - return new InetSocketAddress(ip, port); - } - - private class DnsUdpToSocksResolver extends Thread { - private static final String LOG_TAG = "DnsUdpToSocksResolver"; - private static final String DNS_RESOLVER_IP = "8.8.8.8"; - // UDP and DNS over TCP theoretical max packet length is 64K. - private static final int MAX_BUFFER_SIZE = 65535; - private static final int DEFAULT_DNS_PORT = 53; - - // DNS bit masks - private static final byte DNS_QR = (byte) 0x80; - private static final byte DNS_TC = (byte) 0x02; - private static final byte DNS_Z = (byte) 0x70; - // DNS header constants - private static final int DNS_HEADER_SIZE = 12; - private static final int QR_OPCODE_AA_TC_OFFSET = 2; - private static final int RA_Z_R_CODE_OFFSET = 3; - private static final int QDCOUNT_OFFSET = 4; - private static final int ANCOUNT_OFFSET = 6; - private static final int NSCOUNT_OFFSET = 8; - private static final int ARCOUNT_OFFSET = 10; - - private volatile DatagramSocket udpSocket = null; - private DnsResolverService m_parentService; - - public DnsUdpToSocksResolver(DnsResolverService parentService) { - m_parentService = parentService; - } - - public void run() { - byte[] udpBuffer = new byte[MAX_BUFFER_SIZE]; - DatagramPacket udpPacket = new DatagramPacket(udpBuffer, udpBuffer.length); - InetSocketAddress socksServerAddress = - m_parentService.getSocksServerAddress(); - if (socksServerAddress == null) { - return; - } - Log.d(LOG_TAG, "SOCKS server address: " + socksServerAddress.toString()); - - Socks5Proxy socksProxy = null; - InetAddress dnsServerAddress = null; - try { - socksProxy = new Socks5Proxy(socksServerAddress.getAddress(), - socksServerAddress.getPort()); - dnsServerAddress = InetAddress.getByName(DNS_RESOLVER_IP); - udpSocket = new DatagramSocket(); - } catch (Throwable e) { - e.printStackTrace(); - return; - } - broadcastUdpSocketAddress(); - - try { - while (!isInterrupted()) { - Log.i(LOG_TAG, "listening on " + udpSocket.getLocalSocketAddress().toString()); - try { - udpSocket.receive(udpPacket); - } catch (SocketTimeoutException e) { - continue; - } catch (IOException e) { - Log.e(LOG_TAG, "Receive operation failed on udp socket: ", e); - continue; - } - Log.d( - LOG_TAG, - String.format( - "UDP: got %d bytes from %s:%d\n%s", - udpPacket.getLength(), - udpPacket.getAddress().toString(), - udpPacket.getPort(), - new String(udpBuffer, 0, udpPacket.getLength()))); - - if (!isValidDnsRequest(udpPacket)) { - Log.i(LOG_TAG, "Not a DNS request."); - continue; - } - - Socket dnsSocket = null; - DataOutputStream dnsOutputStream = null; - DataInputStream dnsInputStream = null; - try { - dnsSocket = new SocksSocket(socksProxy, dnsServerAddress, DEFAULT_DNS_PORT); - dnsSocket.setKeepAlive(true); - dnsOutputStream = new DataOutputStream(dnsSocket.getOutputStream()); - dnsInputStream = new DataInputStream(dnsSocket.getInputStream()); - } catch (IOException e) { - e.printStackTrace(); - continue; - } - - if (!writeUdpPacketToStream(dnsOutputStream, udpPacket)) { - continue; - } - - byte dnsResponse[] = readStreamPayload(dnsInputStream); - if (dnsResponse == null) { - closeSocket(dnsSocket); - continue; - } - Log.d(LOG_TAG, "Got DNS response " + dnsResponse.length); - - if (!sendUdpPayload(dnsResponse, udpSocket, - udpPacket.getSocketAddress())) { - continue; - } - closeSocket(dnsSocket); - } - } finally { - if (udpSocket != null) { - udpSocket.close(); - } - } - } - - private boolean isValidDnsRequest(DatagramPacket packet) { - if (packet.getLength() < DNS_HEADER_SIZE) { - return false; - } - ByteBuffer buffer = ByteBuffer.wrap(packet.getData()); - byte qrOpcodeAaTcRd = buffer.get(QR_OPCODE_AA_TC_OFFSET); - byte raZRcode = buffer.get(RA_Z_R_CODE_OFFSET); - short qdcount = buffer.getShort(QDCOUNT_OFFSET); - short ancount = buffer.getShort(ANCOUNT_OFFSET); - short nscount = buffer.getShort(NSCOUNT_OFFSET); - - // verify DNS header is request - return (qrOpcodeAaTcRd & DNS_QR) == 0 /* query */ - && (raZRcode & DNS_Z) == 0 /* Z is Zero */ - && qdcount > 0 /* some questions */ - && nscount == 0 - && ancount == 0; /* no answers */ - } - - // Sends a UDP packet over TCP. - private boolean writeUdpPacketToStream(DataOutputStream outputStream, - DatagramPacket udpPacket) { - try { - outputStream.writeShort(udpPacket.getLength()); - outputStream.write(udpPacket.getData()); - outputStream.flush(); - } catch (IOException e) { - Log.e(LOG_TAG, "Failed to send UDP packet: ", e); - return false; - } - return true; - } - - // Reads the payload from a TCP stream. - private byte[] readStreamPayload(DataInputStream inputStream) { - final String errorMessage = "Failed to read TCP response: "; - byte buffer[] = null; - try { - short responseBytes = inputStream.readShort(); - buffer = new byte[responseBytes]; - inputStream.readFully(buffer); - } catch (SocketException e) { - Log.e(LOG_TAG, errorMessage, e); - } catch (IOException e) { - Log.e(LOG_TAG, errorMessage, e); - } - return buffer; - } - - // Sends a UDP packet containing |payload| to |destAddress| via |udpSocket|. - private boolean sendUdpPayload(byte[] payload, DatagramSocket udpSocket, - SocketAddress destAddress) { - try { - DatagramPacket outPacket = - new DatagramPacket(payload, payload.length, destAddress); - udpSocket.send(outPacket); - return true; - } catch (IOException e) { - Log.d(LOG_TAG, "Failed to send UDP payload ", e); - } - return false; - } - - // Utility method to close a socket. - private void closeSocket(Socket socket) { - try { - if (socket != null && !socket.isClosed()) { - socket.close(); - } - } catch (IOException e) { - Log.w("Failed to close socket ", e); - } finally { - socket = null; - } - } - - private void broadcastUdpSocketAddress() { - Log.d(LOG_TAG, "Broadcasting address"); - if (udpSocket == null) { - return; - } - String dnsResolverAddress = String.format("127.0.0.1:%d", udpSocket.getLocalPort()); - Intent addressBroadcast = new Intent(DnsResolverService.DNS_ADDRESS_BROADCAST); - addressBroadcast.putExtra(DnsResolverService.DNS_ADDRESS_EXTRA, dnsResolverAddress); - LocalBroadcastManager.getInstance(m_parentService).sendBroadcast(addressBroadcast); - } - } -} diff --git a/android/java/org/uproxy/tun2socks/Tunnel.java b/android/java/org/uproxy/tun2socks/Tunnel.java index 014b5ba..b4e4a54 100644 --- a/android/java/org/uproxy/tun2socks/Tunnel.java +++ b/android/java/org/uproxy/tun2socks/Tunnel.java @@ -103,9 +103,9 @@ public synchronized boolean startRouting() throws Exception { } // Starts tun2socks. Returns true on success. - public synchronized boolean startTunneling(String socksServerAddress, String dnsServerAddress) + public synchronized boolean startTunneling(String socksServerAddress) throws Exception { - return routeThroughTunnel(socksServerAddress, dnsServerAddress); + return routeThroughTunnel(socksServerAddress); } // Stops routing traffic through the tunnel by stopping tun2socks. @@ -185,7 +185,7 @@ private boolean startVpn() throws Exception { return true; } - private boolean routeThroughTunnel(String socksServerAddress, String dnsServerAddress) { + private boolean routeThroughTunnel(String socksServerAddress) { if (!mRoutingThroughTunnel.compareAndSet(false, true)) { return false; } @@ -245,7 +245,7 @@ private void startTun2Socks( final String vpnIpAddress, final String vpnNetMask, final String socksServerAddress, - final String dnsServerAddress, + final String dnsResolverAddress, final boolean transparentDns) { if (mTun2SocksThread != null) { return; @@ -261,7 +261,7 @@ public void run() { vpnIpAddress, vpnNetMask, socksServerAddress, - dnsServerAddress, + dnsResolverAddress, transparentDns ? 1 : 0); } }); diff --git a/android/java/org/uproxy/tun2socks/TunnelManager.java b/android/java/org/uproxy/tun2socks/TunnelManager.java index 883a002..0d8990f 100644 --- a/android/java/org/uproxy/tun2socks/TunnelManager.java +++ b/android/java/org/uproxy/tun2socks/TunnelManager.java @@ -21,15 +21,11 @@ import android.annotation.TargetApi; import android.app.Service; -import android.content.BroadcastReceiver; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.net.VpnService; import android.os.Build; import android.os.IBinder; -import android.support.v4.content.LocalBroadcastManager; import android.util.Log; import java.util.concurrent.CountDownLatch; @@ -58,10 +54,6 @@ public TunnelManager(TunnelVpnService parentService) { // Implementation of android.app.Service.onStartCommand public int onStartCommand(Intent intent, int flags, int startId) { Log.i(LOG_TAG, "onStartCommand"); - LocalBroadcastManager.getInstance(m_parentService) - .registerReceiver( - m_broadcastReceiver, new IntentFilter(DnsResolverService.DNS_ADDRESS_BROADCAST)); - m_socksServerAddress = intent.getStringExtra(SOCKS_SERVER_ADDRESS_EXTRA); if (m_socksServerAddress == null) { Log.e(LOG_TAG, "Failed to receive the socks server address."); @@ -86,12 +78,6 @@ public void onDestroy() { if (m_tunnelThread == null) { return; } - - LocalBroadcastManager.getInstance(m_parentService).unregisterReceiver(m_broadcastReceiver); - - // Stop DNS resolver service - m_parentService.stopService(new Intent(m_parentService, DnsResolverService.class)); - // signalStopService should have been called, but in case is was not, call here. // If signalStopService was not already called, the join may block the calling // thread for some time. @@ -135,24 +121,24 @@ public void restartTunnel(final String socksServerAddress) { signalStopService(); } - private void startTunnel(final String dnsResolverAddress) { + private void startTunnel() { m_tunnelThreadStopSignal = new CountDownLatch(1); m_tunnelThread = new Thread( new Runnable() { @Override public void run() { - runTunnel(m_socksServerAddress, dnsResolverAddress); + runTunnel(m_socksServerAddress); } }); m_tunnelThread.start(); } - private void runTunnel(String socksServerAddress, String dnsResolverAddress) { + private void runTunnel(String socksServerAddress) { m_isStopping.set(false); try { - if (!m_tunnel.startTunneling(socksServerAddress, dnsResolverAddress)) { + if (!m_tunnel.startTunneling(socksServerAddress)) { throw new Tunnel.Exception("application is not prepared or revoked"); } Log.i(LOG_TAG, "VPN service running"); @@ -174,8 +160,6 @@ private void runTunnel(String socksServerAddress, String dnsResolverAddress) { // Stop tunneling only, not VPN, if reconnecting. Log.i(LOG_TAG, "Stopping tunnel."); m_tunnel.stopTunneling(); - // Start the DNS resolver service with the new SOCKS server address. - startDnsResolverService(); } else { // Stop VPN tunnel and service only if not reconnecting. Log.i(LOG_TAG, "Stopping VPN and tunnel."); @@ -225,35 +209,6 @@ public void onTunnelConnected() { @TargetApi(Build.VERSION_CODES.M) public void onVpnEstablished() { Log.i(LOG_TAG, "VPN established."); - startDnsResolverService(); + startTunnel(); } - - private void startDnsResolverService() { - Intent dnsResolverStart = new Intent(m_parentService, DnsResolverService.class); - dnsResolverStart.putExtra(SOCKS_SERVER_ADDRESS_EXTRA, m_socksServerAddress); - m_parentService.startService(dnsResolverStart); - } - - private DnsResolverAddressBroadcastReceiver m_broadcastReceiver = - new DnsResolverAddressBroadcastReceiver(TunnelManager.this); - - private class DnsResolverAddressBroadcastReceiver extends BroadcastReceiver { - private TunnelManager m_tunnelManager; - - public DnsResolverAddressBroadcastReceiver(TunnelManager tunnelManager) { - m_tunnelManager = tunnelManager; - } - - @Override - public void onReceive(Context context, Intent intent) { - String dnsResolverAddress = intent.getStringExtra(DnsResolverService.DNS_ADDRESS_EXTRA); - if (dnsResolverAddress == null || dnsResolverAddress.isEmpty()) { - Log.e(LOG_TAG, "Failed to receive DNS resolver address"); - return; - } - Log.d(LOG_TAG, "DNS resolver address: " + dnsResolverAddress); - // Callback into tunnel manager to start tunneling. - m_tunnelManager.startTunnel(dnsResolverAddress); - } - }; } diff --git a/plugin.xml b/plugin.xml index 888bed2..3b94257 100644 --- a/plugin.xml +++ b/plugin.xml @@ -33,9 +33,6 @@ android:exported="false" android:label="@string/app_name" android:permission="android.permission.BIND_VPN_SERVICE" /> - Date: Mon, 3 Apr 2017 15:40:36 -0400 Subject: [PATCH 3/5] Address review comments --- android/jni/tun2socks/tun2socks.c | 43 ++++++++++++----------- android/libs/armeabi-v7a/libtun2socks.so | Bin 121432 -> 121432 bytes 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/android/jni/tun2socks/tun2socks.c b/android/jni/tun2socks/tun2socks.c index 32b04e2..26fa7f2 100644 --- a/android/jni/tun2socks/tun2socks.c +++ b/android/jni/tun2socks/tun2socks.c @@ -272,12 +272,12 @@ static void udp_send_packet_to_device (void *unused, BAddr local_addr, BAddr rem //==== UPROXY ==== +// UDP process control block, used for UDP communications housekeeping. typedef struct { - int sockfd; - uint8_t *udp_recv_buffer; - BAddr netif_addr; - BFileDescriptor bfd; - BStringMap map; + int sockfd; // UDP socket file descriptor + uint8_t *buffer; // Data buffer + BFileDescriptor bfd; // File descriptor object for BReactor + BStringMap map; // Maps DNS id request to source IP address } UdpPcb; UdpPcb udp_pcb; @@ -290,17 +290,20 @@ static void udp_free(UdpPcb* udp_pcb); // File descriptor handler for UDP socket. static void udp_fd_handler(UdpPcb* udp_pcb, int event) { - int recv_bytes = udp_recv(udp_pcb->sockfd, udp_pcb->udp_recv_buffer, - UDP_MAX_DATAGRAM_BYTES); - if (recv_bytes <= 0) { - BLog(BLOG_ERROR, "udp_fd_handler: udp_recv failed, err %d", recv_bytes); + size_t socks_udp_header_len = sizeof(struct socks_udp_header); + int datagram_len = udp_recv(udp_pcb->sockfd, udp_pcb->buffer, + UDP_MAX_DATAGRAM_BYTES); + if (datagram_len <= 0) { + BLog(BLOG_ERROR, "udp_fd_handler: udp_recv failed, err %d", datagram_len); + return; + } else if (datagram_len <= socks_udp_header_len) { + BLog(BLOG_ERROR, + "udp_fd_handler: received less bytes than the length of the UDP SOCKS header"); return; } - - struct socks_udp_header* header = (struct socks_udp_header*)udp_pcb->udp_recv_buffer; - size_t socks_udp_header_len = sizeof(struct socks_udp_header); - size_t udp_data_len = recv_bytes - socks_udp_header_len; - uint8_t* udp_data = udp_pcb->udp_recv_buffer + socks_udp_header_len; + struct socks_udp_header* header = (struct socks_udp_header*)udp_pcb->buffer; + size_t udp_data_len = datagram_len - socks_udp_header_len; + uint8_t* udp_data = udp_pcb->buffer + socks_udp_header_len; char dns_id_str[DNS_ID_STRLEN]; dns_get_header_id_str(dns_id_str, udp_data); @@ -331,8 +334,8 @@ static void udp_fd_handler(UdpPcb* udp_pcb, int event) { // address. Returns the socket file descriptor on success, and 0 otherwise. static int udp_init(UdpPcb* udp_pcb) { // Init receive buffer - udp_pcb->udp_recv_buffer = (uint8_t *)malloc(UDP_MAX_DATAGRAM_BYTES); - if (!udp_pcb->udp_recv_buffer) { + udp_pcb->buffer = (uint8_t *)malloc(UDP_MAX_DATAGRAM_BYTES); + if (!udp_pcb->buffer) { BLog(BLOG_ERROR, "udp_init: failed to init recv buffer"); return 0; } @@ -380,8 +383,6 @@ static int udp_init(UdpPcb* udp_pcb) { BReactor_SetFileDescriptorEvents(&ss, &udp_pcb->bfd, BREACTOR_READ); udp_pcb->sockfd = sockfd; - udp_pcb->netif_addr = - BAddr_MakeFromIpaddrAndPort(netif_ipaddr, hton16(UDP_DNS_PORT)); BStringMap_Init(&udp_pcb->map); return sockfd; @@ -404,8 +405,8 @@ static int udp_recv(int sockfd, uint8_t* buffer, int buffer_len) { } static void udp_free(UdpPcb* udp_pcb) { - if (udp_pcb->udp_recv_buffer) - free(udp_pcb->udp_recv_buffer); + if (udp_pcb->buffer) + free(udp_pcb->buffer); if (udp_pcb->sockfd) close(udp_pcb->sockfd); @@ -1671,7 +1672,7 @@ err_t listener_accept_func (void *arg, struct tcp_pcb *newpcb, err_t err) BAddr_Print(&client->local_addr, local_addr_str); char remote_addr_str[BADDR_MAX_PRINT_LEN]; BAddr_Print(&client->remote_addr, remote_addr_str); - BLog(BLOG_NOTICE, "TCP: %s -> %s", local_addr_str, remote_addr_str); + BLog(BLOG_INFO, "TCP: %s -> %s", local_addr_str, remote_addr_str); // get destination address BAddr addr = client->local_addr; diff --git a/android/libs/armeabi-v7a/libtun2socks.so b/android/libs/armeabi-v7a/libtun2socks.so index 213b93f78bce17c6933d090db9746f688c90560b..fd3a09bb94aab129d525596928480d0879b8dc9b 100755 GIT binary patch delta 19710 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 G+y4QHZhZv+ delta 19621 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 From 00d69aa1e8c0ef24645cff3fb07faada3d0b410b Mon Sep 17 00:00:00 2001 From: alberto lalama Date: Tue, 4 Apr 2017 13:14:48 -0400 Subject: [PATCH 4/5] Address review comments from trevj@ --- .../org/uproxy/tun2socks/Tun2SocksJni.java | 1 + android/java/org/uproxy/tun2socks/Tunnel.java | 3 ++ android/jni/tun2socks/tun2socks.c | 46 ++++++++++-------- android/libs/armeabi-v7a/libtun2socks.so | Bin 121432 -> 121432 bytes 4 files changed, 30 insertions(+), 20 deletions(-) diff --git a/android/java/org/uproxy/tun2socks/Tun2SocksJni.java b/android/java/org/uproxy/tun2socks/Tun2SocksJni.java index 9f5e999..5001b3a 100644 --- a/android/java/org/uproxy/tun2socks/Tun2SocksJni.java +++ b/android/java/org/uproxy/tun2socks/Tun2SocksJni.java @@ -29,6 +29,7 @@ public static native int runTun2Socks( String vpnIpAddress, String vpnNetMask, String socksServerAddress, + String udpRelayAddress, String dnsResolverAddress, int transparentDNS); diff --git a/android/java/org/uproxy/tun2socks/Tunnel.java b/android/java/org/uproxy/tun2socks/Tunnel.java index b4e4a54..99557bb 100644 --- a/android/java/org/uproxy/tun2socks/Tunnel.java +++ b/android/java/org/uproxy/tun2socks/Tunnel.java @@ -200,6 +200,7 @@ private boolean routeThroughTunnel(String socksServerAddress) { mPrivateAddress.mRouter, VPN_INTERFACE_NETMASK, socksServerAddress, + socksServerAddress, // The UDP relay has the same address and port as the SOCKS server. String.format("%s:%d", DNS_RESOLVER_IP, DNS_RESOLVER_PORT), true /* transparent DNS */); @@ -245,6 +246,7 @@ private void startTun2Socks( final String vpnIpAddress, final String vpnNetMask, final String socksServerAddress, + final String udpRelayAddress, final String dnsResolverAddress, final boolean transparentDns) { if (mTun2SocksThread != null) { @@ -261,6 +263,7 @@ public void run() { vpnIpAddress, vpnNetMask, socksServerAddress, + udpRelayAddress, dnsResolverAddress, transparentDns ? 1 : 0); } diff --git a/android/jni/tun2socks/tun2socks.c b/android/jni/tun2socks/tun2socks.c index 26fa7f2..45fa952 100644 --- a/android/jni/tun2socks/tun2socks.c +++ b/android/jni/tun2socks/tun2socks.c @@ -129,8 +129,8 @@ struct { int set_signal; // ==== PSIPHON ==== // ==== UPROXY ==== - char *dns_resolver_address; - char *udp_relay_address; + char *dns_resolver_addr; + char *udp_relay_addr; // ==== UPROXY ==== } options; @@ -228,11 +228,13 @@ static void init_arguments (const char* program_name); // ==== PSIPHON ==== //==== UPROXY ==== -BAddr dns_resolver_address; // IP address of a DNS resolver -BAddr udp_relay_address; // IP address the UDP relay +// IP address of the DNS server to which all DNS requests will be forwarded +BAddr dns_resolver_addr; +// IP address the UDP relay to which all SOCKS UDP requests will be sent +// NOTE: this implementation does not make UDP ASSOCIATE requests and only supports DNS/UDP. +BAddr udp_relay_addr; //==== UPROXY ==== - static void terminate (void); static void print_help (const char *name); static void print_version (void); @@ -327,7 +329,7 @@ static void udp_fd_handler(UdpPcb* udp_pcb, int event) { // Send data to device udp_send_packet_to_device( - NULL, local_addr, dns_resolver_address, udp_data, udp_data_len); + NULL, local_addr, dns_resolver_addr, udp_data, udp_data_len); } // Initializes a UDP socket, binds it locally and connects it to a local @@ -356,17 +358,17 @@ static int udp_init(UdpPcb* udp_pcb) { close(sockfd); return 0; } - char udp_relay_address_str[BADDR_MAX_PRINT_LEN]; - BAddr_Print(&udp_relay_address, udp_relay_address_str); - BLog(BLOG_INFO, "UDP relay address: %s", udp_relay_address_str); + char udp_relay_addr_str[BADDR_MAX_PRINT_LEN]; + BAddr_Print(&udp_relay_addr, udp_relay_addr_str); + BLog(BLOG_INFO, "UDP relay address: %s", udp_relay_addr_str); // 'Connect' to UDP server on specified address struct sockaddr_in remote_addr; memset(&remote_addr, 0, sizeof(remote_addr)); remote_addr.sin_family = AF_INET; // BAddr is already in network order, use htonl/htons for ip/port otherwise - remote_addr.sin_addr.s_addr = udp_relay_address.ipv4.ip; - remote_addr.sin_port = udp_relay_address.ipv4.port; + remote_addr.sin_addr.s_addr = udp_relay_addr.ipv4.ip; + remote_addr.sin_port = udp_relay_addr.ipv4.port; if (connect(sockfd, (struct sockaddr *)&remote_addr, sizeof(remote_addr)) < 0) { BLog(BLOG_ERROR, "udp_init: failed to connect to remote"); close(sockfd); @@ -453,6 +455,7 @@ JNIEXPORT jint JNICALL Java_org_uproxy_tun2socks_Tun2SocksJni_runTun2Socks( jstring vpnIpAddress, jstring vpnNetMask, jstring socksServerAddress, + jstring udpRelayAddress, jstring dnsResolverAddress, jint transparentDNS) { @@ -461,6 +464,7 @@ JNIEXPORT jint JNICALL Java_org_uproxy_tun2socks_Tun2SocksJni_runTun2Socks( const char* vpnIpAddressStr = (*env)->GetStringUTFChars(env, vpnIpAddress, 0); const char* vpnNetMaskStr = (*env)->GetStringUTFChars(env, vpnNetMask, 0); const char* socksServerAddressStr = (*env)->GetStringUTFChars(env, socksServerAddress, 0); + const char* udpRelayAddressStr = (*env)->GetStringUTFChars(env, udpRelayAddress, 0); const char* dnsResolverAddressStr = (*env)->GetStringUTFChars(env, dnsResolverAddress, 0); init_arguments("uProxy tun2socks"); @@ -468,7 +472,8 @@ JNIEXPORT jint JNICALL Java_org_uproxy_tun2socks_Tun2SocksJni_runTun2Socks( options.netif_ipaddr = (char*)vpnIpAddressStr; options.netif_netmask = (char*)vpnNetMaskStr; options.socks_server_addr = (char*)socksServerAddressStr; - options.dns_resolver_address = (char*)dnsResolverAddressStr; + options.udp_relay_addr = (char*)udpRelayAddressStr; + options.dns_resolver_addr = (char*)dnsResolverAddressStr; options.transparent_dns = transparentDNS; options.tun_fd = vpnInterfaceFileDescriptor; options.tun_mtu = vpnInterfaceMTU; @@ -484,6 +489,7 @@ JNIEXPORT jint JNICALL Java_org_uproxy_tun2socks_Tun2SocksJni_runTun2Socks( (*env)->ReleaseStringUTFChars(env, vpnIpAddress, vpnIpAddressStr); (*env)->ReleaseStringUTFChars(env, vpnNetMask, vpnNetMaskStr); (*env)->ReleaseStringUTFChars(env, socksServerAddress, socksServerAddressStr); + (*env)->ReleaseStringUTFChars(env, udpRelayAddress, udpRelayAddressStr); (*env)->ReleaseStringUTFChars(env, dnsResolverAddress, dnsResolverAddressStr); g_env = 0; @@ -862,7 +868,7 @@ void init_arguments (const char* program_name) options.udpgw_max_connections = DEFAULT_UDPGW_MAX_CONNECTIONS; options.udpgw_connection_buffer_size = DEFAULT_UDPGW_CONNECTION_BUFFER_SIZE; options.transparent_dns = 0; - options.dns_resolver_address = NULL; + options.dns_resolver_addr = NULL; options.tun_fd = 0; options.set_signal = 1; @@ -1167,20 +1173,20 @@ int process_arguments (void) } if (options.transparent_dns) { - if (!options.dns_resolver_address) { + if (!options.dns_resolver_addr || !options.udp_relay_addr) { BLog(BLOG_ERROR, - "transparentDNS requires a DNS resolver address"); + "transparentDNS requires a DNS resolver address and a UDP relay address"); return 0; } - BLog(BLOG_INFO, "DNS resolver address: %s", options.dns_resolver_address); + BLog(BLOG_INFO, "DNS resolver address: %s", options.dns_resolver_addr); // Resolve DNS server address - if (!BAddr_Parse2(&dns_resolver_address, options.dns_resolver_address, NULL, 0, 0)) { + if (!BAddr_Parse2(&dns_resolver_addr, options.dns_resolver_addr, NULL, 0, 0)) { BLog(BLOG_ERROR, "DNS resolver address: BAddr_Parse2 failed"); return 0; } // Resolve UDP relay address. Note that Shadowsocks sets up a UDP relay // on the same address and port as its SOCKS server. - if (!BAddr_Parse2(&udp_relay_address, options.socks_server_addr, NULL, 0, 0)) { + if (!BAddr_Parse2(&udp_relay_addr, options.udp_relay_addr, NULL, 0, 0)) { BLog(BLOG_ERROR, "UDP relay address: BAddr_Parse2 failed"); return 0; } @@ -1391,7 +1397,7 @@ int process_device_udp_packet (uint8_t *data, int data_len) { ASSERT(data_len >= 0) // do nothing if we don't have udpgw or dns resolver - if (!options.udpgw_remote_server_addr && !options.dns_resolver_address) { + if (!options.udpgw_remote_server_addr && !options.dns_resolver_addr) { goto fail; } @@ -1441,7 +1447,7 @@ int process_device_udp_packet (uint8_t *data, int data_len) // if transparent DNS is enabled, any packet to the DNS resolver on // port 53 is considered a DNS packet is_dns = (options.transparent_dns && - remote_addr.ipv4.ip == dns_resolver_address.ipv4.ip && + remote_addr.ipv4.ip == dns_resolver_addr.ipv4.ip && udp_header.dest_port == hton16(UDP_DNS_PORT)); } break; diff --git a/android/libs/armeabi-v7a/libtun2socks.so b/android/libs/armeabi-v7a/libtun2socks.so index fd3a09bb94aab129d525596928480d0879b8dc9b..d7152e632692b8def83e8a70c975aa99a8adfe58 100755 GIT binary patch delta 22640 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 Date: Tue, 4 Apr 2017 13:17:32 -0400 Subject: [PATCH 5/5] remove unnecessary comment --- android/jni/tun2socks/tun2socks.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/android/jni/tun2socks/tun2socks.c b/android/jni/tun2socks/tun2socks.c index 45fa952..86d258b 100644 --- a/android/jni/tun2socks/tun2socks.c +++ b/android/jni/tun2socks/tun2socks.c @@ -1184,8 +1184,7 @@ int process_arguments (void) BLog(BLOG_ERROR, "DNS resolver address: BAddr_Parse2 failed"); return 0; } - // Resolve UDP relay address. Note that Shadowsocks sets up a UDP relay - // on the same address and port as its SOCKS server. + // Resolve UDP relay address. if (!BAddr_Parse2(&udp_relay_addr, options.udp_relay_addr, NULL, 0, 0)) { BLog(BLOG_ERROR, "UDP relay address: BAddr_Parse2 failed"); return 0;